タグ

ブックマーク / postd.cc (21)

  • 200行のコードへのブロックチェーンの実装 | プログラミング | POSTD

    ブロックチェーン の基的な概念は非常にシンプルです。分散型データベースで、順序付けられたレコードのリストが連続的に増加していきます。しかしシンプルとは言え、ブロックチェーンやそれを使うことで解決しようとしている問題について話をする際に、頭を悩まされることがよくあります。これは、 ビットコイン や イーサリアム といった、一般にもよく知られているブロックチェーンベースのプロジェクトでよく聞かれる話です。「ブロックチェーン」は、 取引 や スマートコントラクト 、または 暗号通貨 といったコンセプトと強い結びつきがあります。 そのため、来シンプルであるべきブロックチェーンの理解がより困難になってしまっています。抜け目のないソースコードであれば尚更です。 そこで、 NaiveChain という、200行のJavascripitに実装した、非常にシンプルなブロックチェーンを紹介したいと思います

    200行のコードへのブロックチェーンの実装 | プログラミング | POSTD
  • GraphQLはWeb APIの次のフロンティアか? | POSTD

    RESTの規約。URLはリソースであり、CRUDはHTTP動詞にマップされる。 RESTの規約に1つ問題があるとすれば、規約が十分でないということでしょう。上記で”通常”、”多くの場合”、”時に”という表現を使ったのは、これらのやり方は仕様で推奨されているものの守られるとは限らないためです。実世界では、大抵のAPIはRESTishがせいぜいです。例えばStripeでは、リソース更新に PUT ではなく PATCH を使うべきですが、歴史的理由でそうはなっておらず、おそらく現時点では変更に値しないでしょう。いずれにしても開発者はドキュメントを読む必要があり、その時、 POST メソッドのユビキタスな使い方があることに気づくのです。 RESTには他の問題もあります。必要なものだけでなく全てが返ってくるため、リソースのペイロードが非常に大きくなることがあるのです。そして多くの場合、クライアントが

    GraphQLはWeb APIの次のフロンティアか? | POSTD
    atsumo
    atsumo 2017/06/28
  • すばらしいビット | POSTD

    unsigned int v; //only works if v is 32 bit v--; v |= v >> 1; v |= v >> 2; v |= v >> 4; v |= v >> 8; v |= v >> 16; v++;

    すばらしいビット | POSTD
  • 技術的負債の返済 – レガシーコードをリファクタリングで救うには | プログラミング | POSTD

    レガシーコードをうまく手なずけて、もう一歩成熟させるにはどうすればいいのでしょう?この投稿では、大規模なレガシーウェブアプリケーションと格闘してきた私が学んだことを紹介します。レガシーコードをうまく手なずけて 、もう一歩成熟させるにはどうすればいいのでしょう?この投稿では、大規模なレガシーウェブアプリケーションと格闘してきた私が学んだことを紹介します。 レガシーコードはリファクタリングで救出可能 耳寄りなお知らせがあります! リスたちは毎年何千もの木を植えてくれています 。まあ自分たちが隠したドングリのありかを忘れてしまった結果ですけどね。そしてもうひとつ。 あなたのプロジェクトも救出できる のです。 ボスから任されたプロジェクトが どんなに醜い泥まみれのレガシーコードだったとしても 、そこには 必ず 道があります。道は曲がりくねっていて、木陰にはモンスターが待ち構えていることでしょう。

    技術的負債の返済 – レガシーコードをリファクタリングで救うには | プログラミング | POSTD
  • プログラミングスタックをEveはどのように統合するのか | POSTD

    この投稿では、エキサイティングで魅力的な新しいプログラミング言語、 Eve について紹介していきたいと思います。今回は6パートのシリーズのうち、パート1です。 1. プログラミングスタックの全体をEveはどのように統合するのか 2. When logic programming meets CQRS(ロジックプログラミングがCQRSに出会う時) 3. Throwing off our scope chains(スコープチェーンを取り除く) 4. Smalltalk and protein programming(Smalltalk言語とプロテインのプログラミング) 5. The rock-solid foundation for Eve’s big vision(Eveの壮大なるビジョンのための強固な基盤) 6. Why Eve will be perfect for realtime a

    プログラミングスタックをEveはどのように統合するのか | POSTD
    atsumo
    atsumo 2016/12/20
  • WebSocket大合戦:Clojure、C++、Elixir、Go、NodeJS、Ruby | POSTD

    Webアプリにリアルタイムの双方向通信が必要な場合、WebSocketを選ぶのは自然なことだと思います。では、どのツールでWebSocketサーバを構築すべきでしょうか。パフォーマンスは重要ですが、開発のプロセスも見過ごしてはなりません。パフォーマンスを基準にするだけでなく、開発のしやすさも考慮に入れるべきでしょう。今回の大合戦では、Clojure、C++、Elixir、Go、NodeJS、Rubyのそれぞれの言語によって慣用的な手法で実装されたシンプルなWebSocketサーバを比較したいと思います。 テスト内容 サーバに実装するのは、 echo と broadcast の2つのメッセージのみを扱う非常に単純なプロトコルです。echoは送信クライアントに返され、ブロードキャストは全ての接続クライアントに送信されます。そしてブロードキャストが完了すると、結果メッセージが送信者に返されます。

    WebSocket大合戦:Clojure、C++、Elixir、Go、NodeJS、Ruby | POSTD
    atsumo
    atsumo 2016/10/12
    比較
  • 6年間におけるGoのベストプラクティス | POSTD

    稿は、QCon London 2016で行った講演の内容に基づいています。スライドとビデオは近日中に掲載予定です) 2014年に開催された最初のGopherConで、私は「 Best Practices in Production Environments(番環境でのベストプラクティス) 」と題した講演を行いました。 SoundCloud の私たちはGoのアーリーアダプターで、その時点までに既に2年近く、番環境向けの様々なGoコードを書き、実行し、メンテナンスしていました。そして私たちはいくつかのことを学んだので、その教訓をまとめ、多くの人に伝えたいと思ったのです。 それ以来、私はフルタイムでGoを使う仕事を続けています。SoundCloudではその後の活動やインフラチームで、そして現在は Weaveworks で Weave Scope や Weave Mesh の開発に使ってい

    6年間におけるGoのベストプラクティス | POSTD
  • Vim-Galore : Vimについて知っておくべき全てのこと(1/5) | プログラミング | POSTD

    (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) (訳注: 2016/2/26、記事タイトルを変更いたしました。) 特定のトピックについての記述をご希望ですか? Issue を立てるか、 Twitter で私までお知らせください!ありがとう! はじめに Vimとは何か? Vimの基原則 最初の一歩 ミニマルなvimrc 自分の実行しているVimの種類を知る チートシート 基礎 バッファ/ウインドウ/タブ アクティブ/読み込み済み/一覧表示/名前付きバッファ 引数リスト マッピング マップリーダー レジスタ 範囲 マーク機能 補完 モーション/オペレータ/テキストオブジェクト autocmd 変更履歴リスト/ジャンプリスト アンドゥツリー クイックフィックスと位置リスト マクロ カラースキーム 折り畳み機能 セッション ローカリティ 使用方法 オフラ

    atsumo
    atsumo 2016/02/23
  • オブジェクト指向UX | POSTD

    (注:2015/11/18、記事およびタイトルを一部修正いたしました。) CNN.com で働いていた2012年6月に、大統領選挙投票日の夜のユーザエクスペリエンス(以後UX)のデザインを任されました。私はそれからの6カ月間を投票日の夜のための仕事に専念しました。しかし、仕事が成功するかしないかは、選挙結果に関係はありませんでした。私が懸念していたのは、情報の見つけやすさやデータの見やすさ、canvasでのオブジェクトの変形、そして一体どのようにしたら、iPhoneでマウスオーバーのフライアウトが動作するのかでした。CNN.com史上初めてWebデザインをレスポンシブにすることにしたのです。さらに史上初めて私が、その デザイン を担当することになったのです。 大きな賭けでした。CNN.comにとって大統領選挙投票日の夜と言えば、スーパーボウル(プロアメリカンフットボールの優勝決定戦)の日曜

    オブジェクト指向UX | POSTD
    atsumo
    atsumo 2015/11/17
    デザインのアプローチをこうしたら楽だろうなとは思う
  • あなたと働くエンジニアの人生を最悪なものにしないために – デザイナーのための3つの提言 | POSTD

    それとも、”私はデザイナーなので、そんなことを知る必要はありません”と言い張るのか 私の職業はデザイナーです。私はエンジニアが好きです。ちょっと度が過ぎるくらい好きかもしれません。以前、Facebookの グループ に参加した時、かなり前からチームのメンバであるiOSのエンジニアと初めて話して、口から泡を吹いたことを思い出します。私はその時、これまでに自分がObjective-Cでコーディングしたものについて、勢い込んで話し始めました。まるで、高校の新入生が、上流階級の生徒に対して、自分が付き合う価値のあるカッコいい人間だと証明しようとしているみたいだと感じました。 デザイナーの多くが、エンジニアとの話し合い方を実はよく分かっていないと思います。もちろん、デザイナーはエンジニアと話しますが、当の意味で関わろうとしていません。この記事を書いた理由はそこにあります。ソフトウェアエンジニアの懸

    あなたと働くエンジニアの人生を最悪なものにしないために – デザイナーのための3つの提言 | POSTD
    atsumo
    atsumo 2015/08/12
    お互い一旦お互いの仕事をやってみるみたいなことやるのもいいんじゃないかな??
  • コードレビューのベストプラクティス | POSTD

    Wiredrive では、私たちはかなりの数のコードレビューを行います。しかし、ここで働き始める前には私はコードレビューなどしたことがありませんでした。今回は、私がコードレビューをする時に何に注目するようにしているかや、私の考え出したベストなコードレビューのやり方をお話したいと思います。 コードレビューとは、簡単に言うと2人以上の開発者で問題を引き起こしそうなコードの修正について話し合うことです。コードレビューをすることのメリットについては多くの記事で語られており、知識を共有できること、コードのクオリティが上がること、開発者が成長できることなどが挙げられています。しかし、レビューを行う上で、どのように進めていくかという具体的なことについてはあまり多く語られてないように私は思いました。 レビューで何に注目するか アーキテクチャ/デザイン 単一責任原則 : 1つのクラスは変更する理由が2つ以上

    コードレビューのベストプラクティス | POSTD
  • ソフトウェア開発で得た教訓22箇条 | POSTD

    1. 小規模なものから徐々に拡張していく。 私は日頃、新たなシステムを作るにせよ既存のシステムに機能を追加するにせよ、必要な機能すら殆ど持たないようなとてもシンプルなバージョンを作るところから始めるようにしています。そこから当初予定していた機能まで、段階的にソリューションを拡張していきます。私は初めから細部にわたって計画をできたことはありませんが、代わりに開発を進めていく中で新しく見つけた情報をソリューションに役立たせます。 私はJohn Gallの、この言葉が好きです。 “複雑なシステムというのは、往々にしてシンプルなシステムから発展したものだ。” 2. 同時に複数のものを変えない。 開発中にテストが失敗したとき、あるいは機能がうまく動作しなかったとき、1つだけ変更すれば、問題発見が格段に容易になるでしょう。言い換えるなら、短いイテレーションを行いなさいということです。1つずつ変更を行い

    ソフトウェア開発で得た教訓22箇条 | POSTD
  • ノンデザイナーのための25のグラフィックデザインのコツ | POSTD

    >このコツを大いに活用してグラフィックデザインに挑戦してみてください! ソーシャルメディア向けのデザインからイベント用の招待状まで、どんなデザインであろうと使えるグラフィックデザインのアプリはたくさんあります。 ペアリングフォントやスケールから行揃えやホワイトスペースまで、デザインの世界は複雑な面を持ちます。この25のグラフィックデザインのコツが、創作過程のあれこれを通してあなたの手助けになるでしょう。 各項目をイメージした画像をクリックして、 独自のデザイン に編集してみましょう。楽しいデザインを! 01. フォント頼みをやめて、書体を制限してみる このデザインを編集してみる シンプルかつ効果的なグラフィックデザインのために読みやすいフォントを使いましょう。いくつもの書体を使用したデザインは読みづらいものです。統一されたフォントを使うようにしましょう。 ここではAileronのフォント

    ノンデザイナーのための25のグラフィックデザインのコツ | POSTD
  • 開発経験ゼロのイラストレーターがゲーム制作 – Alto’s Adventure制作記 | POSTD

    数週間前やっと、大興奮の長い旅にピリオドを打つことができました。 2年間かけて私の全精神と愛情を注いで制作したAlto’s Adventureがついにリリースされました。 簡単な道のりではありませんでしたので、その制作過程で私が感じたことをうまく言葉にできるか分かりませんが、 まずはこのゲームをダウンロードして遊んでくれている全ての方に感謝の意を表したいと思います。 このゲームで遊んでくれている方がいるというだけでもう私の努力は報われています。 今回のゲームの制作に関して経験してきたことや、直面した問題などをシリーズで投稿していきたいとずっと考えていました。 何が皆さんの興味を引き、どこまで詳細にお話するかなどは難しい課題ですが、まず簡単なゲームの紹介から始めたいと思います。 Alto’s Adventureは、移りゆくアルペンの美しい景色を背景に、スノーボードの果てしない冒険ができるゲー

    開発経験ゼロのイラストレーターがゲーム制作 – Alto’s Adventure制作記 | POSTD
  • Node.jsフロー制御 Part 1 – コールバック地獄 vs. Async vs. Highland | POSTD

    (このシリーズのPart 2はこちら: Node.jsフロー制御 Part 2 – FiberとGenerator ) 今回は、JavaScript/node.jsアプリケーションのフロー制御に対するアプローチを、いくつか取り上げて比較してみたいと思います。 通常のコールバックを使う 平坦化されたコールバックを使う Async ( @caolan 作)を使う Highland (こちらも @caolan 作)を使う Bluebird ( @petkaantonov 作)を使う Expressフレームワークを使った以下のルート処理(お粗末ですが)を例に見てみましょう。 ファイルから読み込む いくつかのプロセスを実行する(ステップの数は3つ) プロセスとは、単に拡張データをコールバックする任意の非同期処理を指します ファイルに結果を書き出す リクエストに対して成功またはエラーのメッセージを返す

    Node.jsフロー制御 Part 1 – コールバック地獄 vs. Async vs. Highland | POSTD
    atsumo
    atsumo 2015/04/16
  • 2015年に向けたJavaScriptアプリケーションアーキテクチャ Part 1 | POSTD

    私はかつて自分はアーキテクトだと名乗ったことがあります。これを裏付けるため、今やウソだらけの複雑な話を設計しなくてはならなくなっているので、ある意味これは当のことですね。冗談はさておき、2015年を目前としてJavaScriptコミュニティのアプリケーションアーキテクチャの状況について目を向けてみるのは有益なことだと思います。合成、関数型の境界、モジュラリティ、不変データ構造、CSPのチャネルと、その他に関連するいくつかのトピックについて書いてみたいと思います。 合成 アーキテクチャのレベルでは、JavaScriptで大規模なアプリケーションを作成する方法に関してここ数年で少なくとも一つの根的な変更がありました。機械の細かい違いにより生み出される単一指向性の データバインディング、不変データ構造と、仮想DOM (どれも興味深い問題ですね)などを除けば、多くの開発者が一つのキーコンセプト

    2015年に向けたJavaScriptアプリケーションアーキテクチャ Part 1 | POSTD
  • デベロッパからマネージャへの転向 | POSTD

    デベロッパなら誰しも、自分の将来を決断すべき時が来ます。このままデベロッパ、またはシニアデベロッパのキャリアに留まってコードに専念するか、チームの管理を担うリードデベロッパや開発マネージャといった管理職の世界に飛び込むかの選択です。 ディルバート:プログラマからスーパーバイザへ 私自身も2011年に同じような決断をしました。ある大手インターネット銀行のシニアデベロッパだった私は、直属の部下はいなかったものの、数人をメンタリングしていました。当時私は、大学生に職場を世話して1年間のトレーニングを提供するアカデミーのプログラムに携わっていました。最初はメンターを担っていたのですが、最終的には、通常のシニアデベロッパの職と並行しつつ、そのアカデミーの管理を任されるようになりました。厳密な意味で、私が複数の人たちを直接管理したのは、この時が初めてで、私はその仕事を心から楽しみました。その後、私は消

    デベロッパからマネージャへの転向 | POSTD
  • 視覚化による5つのガベージコレクションアルゴリズム入門 | POSTD

    ほとんどの開発者は、自動のガベージコレクション(GC)を当たり前のように使っています。これは、私たちの仕事を容易にするために言語ランタイムが提供する素晴らしい機能の1つです。 しかし、最新のガベージコレクタの中をのぞいてみれば、実際の仕組みは非常に理解しづらいことが分かります。実装の詳細が無数にあるため、それが何をしようとしているのか、また、それがとんでもなく間違った事態を引き起こしかねないことについて十分理解していない限り、すっかり混乱してしまうでしょう。 そこで、5種類のガベージコレクションアルゴリズムを持つおもちゃを作ってみました。小さいアニメーションはランタイムの動作から作成しました。もっと大きいアニメーションとそれを作成するコードは github.com/kenfox/gc-viz で見ることができます。単純なアニメーションによってこうした重要なアルゴリズムを明らかにできることは

    視覚化による5つのガベージコレクションアルゴリズム入門 | POSTD
  • さあGoを始めよう!環境構築,”Hello World”から簡単なバックエンドサーバーまで | POSTD

    Goは、 信頼できる賢い人たち によって作られた愛すべきささやかなプログラミング言語で、 現在も成長中の大規模なオープンソースコミュニティ によって、継続的に改善が続けられています。 Goの基原則はシンプルであることですが、時折、約束事が分かりにくいこともありますね。以下では、私がどのようにしてGoプロジェクトを始め、どのようにGoのイディオムを使っているかを紹介したいと思います。一緒に、Webアプリケーション用のバックエンドサービスを構築しましょう。 環境の構築 新規プロジェクト Webサーバの作成 ルートの追加 複数APIへのクエリ 並列化 シンプルさ 追加演習 環境の構築 最初のステップは、もちろんGoをインストールすることです。オフィシャルサイトに用意されている、 お使いのオペレーティングシステム用のバイナリディストリビューション を使ってください。MacでHomebrewを使

    さあGoを始めよう!環境構築,”Hello World”から簡単なバックエンドサーバーまで | POSTD
  • Goのガーベジコレクタを視覚化するツール | POSTD

    (環境変数GODEBUGは、 ランタイム パッケージで提供されています) この環境変数を指定してプログラムを起動すると、標準出力に以下の追加出力が出力されます(少し簡略化されています)。 % env GODEBUG=gctrace=1 godoc -http=:6060 ... gc76(1): 2+1+1390+1 us, 1 -> 3 MB, 16397 (1015746-999349) objects, 1436/1/0 sweeps, 0(0) handoff, 0(0) steal, 0/0/0 yields gc77(1): 2+0+1582+1 us, 2 -> 4 MB, 14623 (1016248-1001625) objects, 1436/0/0 sweeps, 0(0) handoff, 0(0) steal, 0/0/0 yields scvg0: inuse:

    Goのガーベジコレクタを視覚化するツール | POSTD
    atsumo
    atsumo 2014/09/06