タグ

ブックマーク / qiita.com/shibukawa (15)

  • 最小のNode.jsのDockerイメージを目指すスレ - Qiita

    フューチャーアーキテクトアドベントカレンダーに投稿したサーバーサイドレンダリングの代替としてPrerenderを試してみたに引き続き、JS系?ウェブ系?なエントリーです。 ECSとかEKSとか出てきて、コンテナを使うと、一つの物理ホストで、複数のコンテナをさばいて効率を上げる、というのが簡単にできるようになってきました。そのため、Node.jsのアプリもDocker化して配りたいですよね? 次のスライドを見ると、サイズが小さいほうが良いとされています。中には静的リンクが云々みたいなトリッキーな技もありますが、そこまでがんばらない&黒魔術にならない程度でがんばる方向でサイズを小さくしてみたいと思います。 お前のDockerイメージはまだ重い💢💢💢 by stormcat24 STEP1: Alpine + 標準ライブラリのみ 小さいというAlpine Linuxを使ってみます。クールな

    最小のNode.jsのDockerイメージを目指すスレ - Qiita
  • サーバーサイドレンダリング不要論 - Qiita

    サーバーサイドレンダリング、Isomorphic、Universal JavaScriptなどの言葉をよく見かけます。なるほどね、良さそうだね、外部公開するサービスを書くことがあったら挑戦してみたいね、Mithrilにもisomorphic-mithrilってのをがんばっている人がいるし、みたいなことを漠然と思っていたのですが、最近ASCII.jpのシステムコールプログラミングの連載を書いていて、あらためてHTTPの仕様を見返してみて、逆にサーバーサイドレンダリングをしない方がいいのではないか、と思い始めました。 追記(23:30): サーバーサイドレンダリングと書いていますがUniversal JavaScriptみたいな凝ったビューの更新の意味です。 サーバーサイドレンダリングの欠点 サーバーサイドレンダリングのメリットとしてあげられるのは次の2点です。 検索エンジンのクローラー向け

    サーバーサイドレンダリング不要論 - Qiita
    yosuke_furukawa
    yosuke_furukawa 2016/12/25
    解決策が割りと限定されててあまり現実的には不要になってなかった。
  • Node.jsの仮想DOM用のi18nライブラリ作った - Qiita

    Mithril、Vue.jsの仮想DOM用のi18nライブラリ作ったの続きです。というか、クロスポストしようとして楽しようとしたらダメだったので別エントリーで。 前回のエントリーでだいたいの使い方は紹介したので、node.js用の機能を。 CLIでの使い方 CLIツールでは基的な使い方は変わりません。おさらいとして、機能をフルに使ったサンプルを紹介します。主語の性別によるコンテキスト、数値情報のよる複数形、フォーマッティングによる変数への代入です。 const i18n = require('i18n4v'); i18n.translator.add({ { "values": { "Yes": "はい", "No": "いいえ" }, "contexts": [ { "matches": { "gender": "male" }, "values":{ "%{name} uploade

    Node.jsの仮想DOM用のi18nライブラリ作った - Qiita
  • オレの最弱のES6開発環境 - Qiita

    ブラウザのES6サポートが急速に良くなってきています。社内ツールとかElectronとか、ブラウザの普及率を気にしなくていい環境ならそろそろ使えるのではないかと思って調べたり試してみたりしています。 更新 https://caniuse.com/#search=es6 http://kangax.github.io/compat-table/es2016plus/ これを見るともうほぼ実装は完了していますね。Node.jsも対応していますし使えるブラウザが限定できるならもはや変換なんかしなくても大丈夫。注意点としては以下の2つ。 IE11は渋い ES6 modulesはまだまだ ソースをES6で書いて、結果もそのままES6という手抜き開発に使えるツールのメモです。手抜きなので、おそらく経年変化の影響はほとんどないはずです。対象としてはブラウザだったり、ElectronでのSPA開発です。

    オレの最弱のES6開発環境 - Qiita
  • 最速という噂のFlatbuffersの速度のヒミツと、導入方法の紹介(Go) - Qiita

    GoCon 2015 Winterでは、社内での取り組みとしてExcelのパースの時間のロスを避けるために、簡易データ構造を使ってMessagePack + LZ4で圧縮して高速化したことを紹介しました。それでも十分速くはなったのですが、LTで発表のあったシリアライズ系のライブラリのベンチマーク比較でFlatbuffersが最速だったので、ちょっと試してみました。 ↑のグラフは、こちらのベンチマークの結果をExcelでグラフにしてみたものです。Gobがダントツ遅かったのでそちらは振りきっています(Gobに合わせると他のものの比較がしにくくなるので範囲を狭めた)。GoConで発表した通り、今MessagePackを使っているのはデータのキャッシュです。作成に多少がかかっても、後の読み出しが速い方がトータルとしてはうれしい領域なので、Unmarshalが最速のFlatbuffersに俄然興味を

    最速という噂のFlatbuffersの速度のヒミツと、導入方法の紹介(Go) - Qiita
  • GolangのOpenGL事情(WebGLも含むよ) - Qiita

    WebGLアドベントカレンダーでの投稿です。Golangのアドベントカレンダーはまた別に書きます。 最近、GolangでOpenGLを書いているのですが、GolangのOpenGL事情についての情報がまとまっているものがあまりなかったのでまとめてみます。 Golang用の各種OpenGL/WebGLライブラリ 由緒正しいライブラリgo-gl Golangには昔からOpenGLのAPIを提供するgithubのOrganizationがあります。go-glというコミュニティです。 昔からある多くのパッケージがここのライブラリを参照しています。OpenGLを管理する非営利団体のKhronosの提供するファイルを元にバインディングを生成しているため、安全確実な堅実なライブラリです。2.1以降の各OpenGL/OpenGL ESのバージョンに対応しています。また、OpenGLを使ったクロスプラットフ

    GolangのOpenGL事情(WebGLも含むよ) - Qiita
  • Polymer 1.0の挙動変更の影響 - Qiita

    Polymerの1.0がリリースされました。今回は、AndroidAndroid Ware、IoTの比重が大きく、ブラウザ関連の発表が少ないGoogle I/Oでしたが、Polymer 1.0はその中の貴重な発表の1つでした。 Polymerとは何か? Polymerはフレームワークではなく、さまざまな他のフレームワークの「下」で使える拡張可能なHTMLのレイヤーです。コンポーネントという言葉やコンポーネント的なものはMithril.jsやReactAngular.jsさまざまなWebMVCで登場しますが、コンポーネント同士の互換性はありません。WebComponentsはコンテナ船のコンテナ的な、どこでも使えるコンポーネントを提供します(コンテナ船のメタファーはGoogle I/Oの説明から)。 1.0は0.5とくらべて、Chrome上で3倍、Safari上で4倍になっているとのこと

    Polymer 1.0の挙動変更の影響 - Qiita
    yosuke_furukawa
    yosuke_furukawa 2015/06/02
    ShadowDOM, VirtualDOM, ShadyDOM, 生DOM
  • 厨二病な名前のライブラリを集めるスレ - Qiita

    ミスリル。クライアントサイドMVC。 http://mithril.js.org/ 参考: http://qiita.com/shibukawa/items/890d24874655439932ec エリクサー。Erlang VMで動く言語。 http://elixir-lang.org/ 参考: http://qiita.com/HirofumiTamori/items/0dfdbada30c7d8f183fd エスナ。PHPのサーバサイドMVCフレームワーク。 http://ethna.jp/doc/ ゴブリン。物理エンジン。 http://www.goblinphysics.com/ オーディン。ゲームエンジン。 https://odinge.codeplex.com/ タイタン。jQuery上のクライアントサイドMVC。 http://www.firerift.com/suppor

    厨二病な名前のライブラリを集めるスレ - Qiita
    yosuke_furukawa
    yosuke_furukawa 2015/05/14
    仕事早くね?
  • node.jsで子プロセスを起動しまくってエラーにならないようにするモジュール - Qiita

    https://github.com/shibukawa/spawn-limit https://www.npmjs.com/package/spawn-limit spawn-limit というモジュールを作りました。node.jsのchild_process.spawn()の薄いラッパーで、通常のspawnはChildProcessオブジェクトを返して、そいつに色々イベント登録して・・・という使い方をするんですが、プロセスを起動したらthenが呼ばれるPromiseを返すモジュールです。 ブラウザでサーバ間通信のコールバックの管理をPromiseでやるのは問題になることはないと思います。ネイティブのレイヤーで同時通信数を絞ってくれるので、アプリレイヤーで細かいことを考える必要はないでしょう。 今回はnode.jsで外部プロセスを起動しまくるコードを書いたら、プロセス数制限に引っかかって

    node.jsで子プロセスを起動しまくってエラーにならないようにするモジュール - Qiita
    yosuke_furukawa
    yosuke_furukawa 2015/05/12
    最後にdisられてる。。。
  • 最速MVCフレームワークMithril.jsの速度の秘密 - Qiita

    Mithril 0.2が日リリースされました。ちょっとURLが変わったり( http://mithril.js.org/ )、API名が一部(m.moduleがm.mount)変わっていたり、コンポーネント機能がコーディング規約レベルから、専用のサポートAPIが追加されたりしていますが、0.1系と大した差はなさそうです。 某node.js会長とはいろいろ社内で話をしたりしたのですが、各種ベンチマークでもトップクラス、平均的には最速のクライアントサイドMVCフレームワークという称号を持ちながら、国内ではまだまだ知られていないMithril。レンダリング速度は仮想DOMの代名詞となったReact.jsの5倍以上(ベンチマークによります)です。 ↓ホームページから転載 ちなみにこちらのベンチマークで計測すると、MithrilはReact.jsの10倍以上速い結果になるのですが、これはちょっと計

    最速MVCフレームワークMithril.jsの速度の秘密 - Qiita
    yosuke_furukawa
    yosuke_furukawa 2015/05/02
    ミスリルエヴァンジェリストのshibu_jpからの言葉だ!
  • encodeURIComponentが世界基準だと誤解してた話

    URLをいじくるプログラムをいじっていて、仕様がよくわからなくて悩んだのでまとめます。 2/23: 追試部分を追記 2018/7/14: JavaScriptのURLSearchParamsと、GoのPathEscapeについて追記 ことの経緯 HTTPとはなんぞやとか、GETとPOSTがどうの、それぞれでパラメータがどういう経緯でウェブアプリケーション(とかCGI)に渡って来るのかぐらいは知っていました。で、ウェブでXHRでGETリクエストを送る場合にはJavaScriptのencodeURIComponent()で各パラメータをエンコードして、&でくっつけて、URLの末尾に?で付与すればいいんだよね?と思っていました。こんな感じに。 var finalUrl = [url, "?", encodeURIComponent("key"), "=", encodeURIComponent(

    encodeURIComponentが世界基準だと誤解してた話
  • JSXでブラウザでユニットテストを実行する - Qiita

    JSX(altJSのほう)で、たまにブラウザごとに挙動が違ったりして、ブラウザでユニットテストを走らせたくなることがあります。普段はnode.jsで簡単に実行できるのですが、ブラウザで実行するにはちょっといろいろ手を加える必要があります。 まずは.jsファイルを生成します。 $ jsx --test --output test.js --add-search-path ./src test/test-xxhash-arraybuffer.jsx --test オプションと、 --output オプションを使うと、ユニットテストのJSファイルが作れます。ただ、このままでは実行できませんので、生成されたファイルの先頭のshebung行(#!/usr/bin/env node)を削除します。

    JSXでブラウザでユニットテストを実行する - Qiita
    yosuke_furukawa
    yosuke_furukawa 2015/02/09
    AltJSの方。
  • C言語的にJavaScriptを使う - Qiita

    プログラミング言語は世の中にたくさんありますし、用途や好みによって自由に使えることが多いのですが、一部どうしても置き換えができない言語というものがあります。ブラウザやFlashマクロやPhotoshopマクロのJavaScript、Action Script、GPUのシェーダ言語、Visual Basic for Application、SQLなどなどです。それでもaltJSやORMなど、直接書かないという選択肢もあったりもしますが、どうしても直接書くほうが実行効率が良かったりチューニングが効いたりします。 JavaScriptを使ったコーディングを何年かやっていると、C言語で書かれたアルゴリズムをJavaScriptに移植しないといけない事態に遭遇する機会も増えてくると思いますので、それについて説明します。 整数型としてデータを扱う JavaScriptの言語仕様ではJavaScript

    C言語的にJavaScriptを使う - Qiita
    yosuke_furukawa
    yosuke_furukawa 2014/12/04
    JSXいいですよ!!
  • JavaScriptバインディングの書き方 Level 2 - Qiita

    @kazuhoさんのJavaScriptバインディングの書き方に書かれてない、JavaScriptバインディング上級編です。Java/C++的な思想できちんと作られたクラスであれば問題ないのですが、JavaScriptのあふれんばかりのフリーダムを駆使したコードだと、ただnativeを付けたクラスを書くだけではうまく対応できなかったり、キャストしまくらないとダメだったりします。 返り値がオブジェクト型 esprimaというよくできたECMAScriptのパーサのライブラリのJSX版を作った時に遭遇した事象です。返り値が木構造のASTツリーなんですが、JSONというか、オブジェクトそのまま、という感じでした。もちろん、JSXでJSONは扱えますが、プロパティ名の短縮表記(json.member)は使えず、カッコで文字列でキーを指定した上で、asで型を明示しないとダメです。当然、コードも無駄に

    JavaScriptバインディングの書き方 Level 2 - Qiita
    yosuke_furukawa
    yosuke_furukawa 2013/12/08
    ネイティブクラスを作るときのノウハウ。素晴らしす。
  • JSX + npm - Qiita

    JSXそのものにはPyPIやCPANのようなモジュールリポジトリはありません。ですが、npmを使って管理することができます。JSXではJavaScriptのコードのラッパーを定義したりもするので、npmで対象となるJSモジュールも一緒に管理できるようになるので、npmを使うのが一番理にかなっています。このエントリーでは、npmを使ってモジュールを管理する方法について説明します。JSXを対象に説明しますが、npmを使いたいaltJS全般、あるいはスのnode.jsでも役に立つかもしれないお話です。 やり方は簡単です。package.jsonを使って必要なモジュールを書いていくだけです。

    JSX + npm - Qiita
  • 1