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

  • CDNは5時間で開発できる | POSTD

    「CDN」(content delivery network)という言葉からは、Googleのような大企業がいくつもの巨大なハードウェアを管理し、1秒当たり何百ギガビットものデータを処理する様子が想像されます。しかし、CDNは単なるWebアプリケーションです。私たちのイメージとは違いますが、それが事実です。8年前に買ったノートパソコンを使って、コーヒーショップの席に座りながらでも、きちんと機能するCDNを構築できます。この記事では、これから5時間でCDNを開発しようとするときに、直面するかもしれないことを紹介します。 まずはCDNの機能を明らかにしておきましょう。CDNはセントラルリポジトリ(通称:オリジン)からファイルを吸い上げ、ユーザーに近い場所でコピーを保存します。初期のオリジンはCDNのFTPサーバーでした。現在、オリジンは単なるWebアプリとなり、CDNはプロキシサーバーとして機

    CDNは5時間で開発できる | POSTD
    netcraft3
    netcraft3 2021/10/18
  • Vimの生産性を高める12の方法 | POSTD

    1. LeaderをSpaceキーにする Leader は素晴らしい概念です。キーの 組み合わせ ではなく 並び によって、操作を行えるようにするものです。私はこれを使っているので、操作のために” Ctrl -何らかのキー”の組み合わせを押す必要はめったにありません。 私は長い間、 , を Leader キーとして使っていました。ですがある時、キーボードの中で一番目立つキーにマップすることを思い付いたのです。Space(スペース)キーです。 これで私のVim生活は激変しました。今や、私は Leader をどちらの親指でも押すことができ、他の指は常にホームポジションにあります。 Leader がとても使いやすくなったので、私が様々なキーバインドで用いるようになったことは周知の話です。 2. 自分が特によく行う操作をLeaderにマップする 私は、自分がVimで作業を行っている中で、その時間の

    Vimの生産性を高める12の方法 | POSTD
    netcraft3
    netcraft3 2019/04/05
  • The 2019 DevOps RoadMap | POSTD

    DevOpsエンジニアになるためのイラストガイド(関連コースへのリンク付き) DevOpsは今とてもホットなテーマです。多くの友人、同僚、上級開発者である知人がDevOpsのエンジニアとなり自分のいる組織の中で第一人者になろうと一生懸命になっています。 私は DevOps の恩恵を心から認めています。DevOpsはソフトウェア開発とデプロイの改善に直結しているからです。しかし私の限られた経験から言っても、DevOpsのエンジニアになるのは 簡単ではありません。 非常に多くのツールと事例があり、適切な学び方を選ぶのがとても難しいのです。 Javaのブロガー としてよく質問を受けます。例えば、 DevOpsのエンジニアになるにはどうすれば? どのツールを学べば? どんな事例を参考にすれば? DevOpsエンジニアにはMavenとJenkinsがマストですか? DockerKubernetes

    The 2019 DevOps RoadMap | POSTD
    netcraft3
    netcraft3 2019/01/31
  • 大規模な決済システムを構築する際に学んだ分散型アーキテクチャの考え方 – 後編 | POSTD

    メッセージの耐久性と持続性 分散型システムのノードは演算し、データを保存し、互いにメッセージを送信し合います。メッセージ送信の重要な指標は、これらのメッセージがどれだけ確実に届くかです。基幹システムでは、消失メッセージがゼロでなくてはならない場合がしばしばあります。 分散型システムにおける通信は、RabbitMQ、Kafkaなどの分散型メッセージングサービスを用いることがほとんどです。こういったメッセージングサービスはメッセージ配信において様々なレベルの信頼性をサポートしています(または、サポートするように設定を変えられます)。 メッセージの永続性とは、メッセージを処理しているノードで何らかの問題が起こった時、その問題の解決後に処理されるよう、メッセージはそこに残ることを意味します。メッセージの持続性は多くの場合、 メッセージキュー レベルで用いられます。持続性のあるメッセージキューを実装

    大規模な決済システムを構築する際に学んだ分散型アーキテクチャの考え方 – 後編 | POSTD
    netcraft3
    netcraft3 2018/12/21
  • 機械が私たちの偏見を継承する仕組み | POSTD

    機械は言語の処理を学習する際、人が書いた文章のサンプルから性別や人種的な偏見を継承します。 トルコ語では、”彼(he)”、”彼女(she)”、”それ(it)”を表すための代名詞が、”o”の1つしかありません。”o”の代名詞が含まれるトルコ語の文章をGoogle翻訳で英語に翻訳する場合、翻訳アルゴリズムは英語のどの代名詞が”o”に相当するのかを推測することになります(性別が不明な場合、大抵は”彼”)。そして、アルゴリズムは ジェンダーバイアス(性差に基づく偏見) を反映しながら、”彼は医者です”、”彼女は看護師です”、”彼は勤勉です”、”彼女は怠け者です”のような形で文章を翻訳するのです。言語処理の学習に際して、多くのアルゴリズムは人が書いたニュース記事やWikipediaなどの文章を参考にしており、こうした言語モデルから単語間の関連付けを行っています。しかしそうすることで、例えば” 「彼」

    機械が私たちの偏見を継承する仕組み | POSTD
    netcraft3
    netcraft3 2018/11/16
  • 色:ヘキサコードから眼球まで – Part 3. | POSTD

    これらをプロットすると、MacBookのLCDディスプレイに類似した(ただし、わずかに小さい)色域になります。 注釈: MacBook ProのLCDの色域 sRGBの色域 一部の箇所では、MacBook ProのLCDディスプレイの色域からsRGBの(正式な)色域がはみ出ています。つまりこの部分については、LCDは忠実に色を再現できません。これに対応するため、MacBookでは変更を加えたsRGBの色域を使っているようです。 注釈: 正式なsRGBの色域 MacBook ProのLCDの色域 MacBook ProのsRGBの色域 sRGBはデフォルトの色空間として広く利用されています。また、ブラウザの標準的な色空間( CSS標準で指定 )でもあります。このブログの記事の図で使われているのは全てsRGB空間内の色です。逆に言うと、sRGB空間外の色であれば、正確に再現されないということに

    色:ヘキサコードから眼球まで – Part 3. | POSTD
    netcraft3
    netcraft3 2018/11/08
  • なぜPythonはこんなにも遅いのか? | POSTD

    (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) Pythonは高い人気を誇り、DevOps、データサイエンス、Web開発、セキュリティの分野で使われています。 しかし、速度に関しては高い評価が全くありません。 JavaとC、C++、C#、Pythonの速度を比べるには、どうしたらいいのでしょう? 答えは、実行するアプリケーションのタイプに大きく左右されます。完璧なベンチマークはありませんが、[手始めに比べる手段](https://algs4.cs.princeton.edu/faq/)としてはThe Computer Language Benchmarks Gameが適しています。 私は10年ほどthe Computer Language Benchmarks Gameを参照していますが、Java、C#、GoJavaScriptC++などの他言

    なぜPythonはこんなにも遅いのか? | POSTD
    netcraft3
    netcraft3 2018/10/11
  • 拡張現実(AR)ロボット工学 | POSTD

    火星探査の車両もあなたのスマートフォンも同じ問題を抱えています。GPSなしの位置特定です。 火星探査車スピリットによるボンネビル・クレーターのパノラマ。出典:NASA/ジェット推進研究所/Cornell ショッピングモールや地下駐車場、あるいは高層ビルの谷間のどこであれ、空の見えない場所では携帯電話のGPSが使いものになりません。視覚オドメトリなどの技術を使い時間をかけて動きをたどる他の惑星上のロボットにも同じことが当てはまります。 スピリットのカメラで追跡したフィーチャを重ねた写真。出典:”Two Years of Visual Odometry on the Mars Exploration Rovers(火星探査車ローバーによる視覚オドメトリの2年間)”(NASAジェット推進研究所 Mark Maimone, Yang Cheng, Larry Matthies) 視覚オドメトリは数

    拡張現実(AR)ロボット工学 | POSTD
    netcraft3
    netcraft3 2018/08/30
  • TwilioとAWS IoTボタンを使った子供のトイレ訓練 | POSTD

    2人の幼子の父親として、私は1日のうちの バカにならない 時間をうんちに捧げています。大量の、大量のうんちです。 上の子がトイレのトレーニングを始めた時、夜中でも、もよおしたら起きてトイレを使うようになりました。ただ、そんな時、子供はもよおしたことを大きな声で私に知らせるので、近くで寝ている下の子が起きてしまうのではないかとヒヤヒヤしたものです。そんなわけで、何らかの対策が必要だなと感じていました。 私はいつも、子供の協力を得ることができる、楽しくかつ斬新な方法はないものかと考えています。そしてそれが、自分のエンジニアリングプロジェクトをいじくり回すことで実現できるなら、なお良いでしょう。 うんちボタンを押す 笑顔のうんちキャラクターが貼られた装置は、Amazon Dash Buttonをベースにした Amazon IoTボタン です。子供がこのボタンを押すと、AWS Lambda関数が呼

    TwilioとAWS IoTボタンを使った子供のトイレ訓練 | POSTD
    netcraft3
    netcraft3 2018/07/26
  • iPhone XのFace IDを、Pythonとディープラーニングで再現する方法 | POSTD

    iPhone Xの新しいロック解除メカニズムのリバースエンジニアリング 全Pythonコードはこちら。 新しい iPhone X で議論の的になった機能と言えば、新規ロック解除方式で、Touch IDの後継である Face ID でしょう。 ベゼルレスのスマートフォンを実現してきたAppleは、端末を簡単かつ素早くロック解除できる新たな方式を開発する必要がありました。競合他社が指紋認証を採用し続ける中、Appleは別のポジションのメーカーとしてスマートフォンのロック解除方式を刷新し、変革を起こす決断をしました。それは、単に見るだけで認証されるという機能です。進化した(そして驚くほど小さい) 深度センサ付きカメラ が前面に埋め込まれているおかげで、iPhone Xにはユーザの顔面の3Dマップを生成する能力があります。さらに、ユーザの顔写真を 赤外線カメラ でキャプチャするため、環境の光や色彩

    iPhone XのFace IDを、Pythonとディープラーニングで再現する方法 | POSTD
    netcraft3
    netcraft3 2018/06/28
  • HHVMの今後 | POSTD

    2017年1月、PHPPHP5のアクティブサポート終了を 正式に発表 しました。 私たちHHVMチームはPHPPHP7で打ち出している方向を歓迎しており、この言語とランタイムを今日の位置に推し進める役割を担ったことを光栄に思っています。PHPコミュニティがPHP5に別れを告げようとしている今、HHVMチームも同じ決断を下しました。 HHVMの次のLTSリリースである3.24は、 2018年1月 にテスト公開され、その後1年間サポートされます。また、3.24は PHP5をサポートする最後のHHVMリリース となります。これは、2018年末にPHP5のセキュリティサポートも終了するPHP自体のタイムラインと同調するものです。HHVMチームはPHP5固有の特殊な挙動に対する全てのサポートを即座に中止するわけではありませんが、それらは3.24のテスト公開後はいつでも中止となる可能性があり、ex

    HHVMの今後 | POSTD
    netcraft3
    netcraft3 2018/06/21
  • カオステストでHTTP/2の問題を見つけ出す | POSTD

    (注:2017/04/20、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) 要約 HTTP/2 にはHTTP/1.xに比べて多数の改良点がありますが、 カオステスト を行ったところ、HTTP/2のパフォーマンスがHTTP/1より劣る状況があることが分かりました。 ネットワーク上にパケット損失がある場合、TCP層での輻輳制御によって、少数のTCPコネクションの中に多重化されているHTTP/2ストリームがスロットリングされます。さらに、TCPリトライのロジックにより、リトライが行われている間、1つのTCPコネクションに影響しているパケット損失が、いくつかのHTTP/2ストリームに同時に強い影響を与えます。言い換えれば、ヘッドオブラインブロッキングが事実上、ネットワーク階層の レイヤ7 から レイヤ4 へ移動したということです。 背景とサー

    カオステストでHTTP/2の問題を見つけ出す | POSTD
    netcraft3
    netcraft3 2018/04/19
  • 15年目のVim | POSTD

    (注:2017/04/19、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) Vim使用について述べた先の投稿( 1 、 2 )は好評だったこともあり、そろそろ更新が必要になりました。Vim 8には非常に要望の多かった機能がたくさん追加され、 VimAwesome のような新しいコミュニティサイトができたことでプラグイン探しと評価が容易になりました。最近では私もVim仕事をする機会がとみに増え、 ピーク効率 に向け自分のワークフローの設定に時間を費やしたりもしています。ですから、この記事は私の現在の状況を写し取ったものです。 大まかには次の内容です。 ファイル特定にはfzfとfzf.vim *ファイル検索にはack.vimと ag Vim + tmuxが勝利への鍵 ALEは新Syntastic。理由はその非同期性 …などなど多数。ぜひ

    15年目のVim | POSTD
    netcraft3
    netcraft3 2018/04/13
  • ディープラーニングの限界 | POSTD

    (注:2017/04/08、いただいたフィードバックを元に翻訳を修正いたしました。 @liaoyuanw ) この記事は、私の著書 『Deep Learning with PythonPythonを使ったディープラーニング)』 (Manning Publications刊)の第9章2部を編集したものです。現状のディープラーニングの限界とその将来に関する2つのシリーズ記事の一部です。 既にディープラーニングに深く親しんでいる人を対象にしています(例:著書の1章から8章を読んだ人)。読者に相当の予備知識があるものと想定して書かれたものです。 ディープラーニング: 幾何学的観察 ディープラーニングに関して何より驚かされるのは、そのシンプルさです。10年前は、機械認識の問題において、勾配降下法で訓練したシンプルなパラメトリックモデルを使い、これほど見事な結果に到達するなど誰も想像しませんでした。

    ディープラーニングの限界 | POSTD
    netcraft3
    netcraft3 2018/04/05
  • PythonとKerasを使ってAlphaZero AIを自作する | POSTD

    自己対戦と深層学習でマシンにコネクトフォー(Connect4:四目並べ)の戦略を学習させましょう。 この記事では次の3つの話をします。 AlphaZeroが人工知能AI)への大きなステップである2つの理由 AlphaZeroの方法論のレプリカを 作って コネクト4のゲームをプレイさせる方法 そのレプリカを改良して他のゲームをプラグインする方法 AlphaGoAlphaGo Zero→AlphaZero 2016年3月、DeepmindのAlphaGo(アルファ碁)が、囲碁の18回の世界王者、李世乭(イー・セドル)との五番勝負で、2億人の見守る中、4-1で勝利しました。機械が超人的な囲碁の技を学習したのです。不可能だとか、少なくとも10年間は達成できないと思われていた偉業です。 AlphaGo 対 李世乭の第3局 このことだけでも驚くべき功績ですが、DeepMindは、2017年10月、

    PythonとKerasを使ってAlphaZero AIを自作する | POSTD
    netcraft3
    netcraft3 2018/03/29
  • 紙と鉛筆でビットコインをマイニング:1日に0.67ハッシュ | POSTD

    紙と鉛筆でビットコインをマイニングするのは現実的なのか? それを試してみることにしました。マイニングに使用されるSHA-256アルゴリズムはかなりシンプルなので、実は手計算でもできることが分かりました。当然ながら、この処理はハードウェアマイニングに比べれば極端に遅くて、全く実用的ではありません。しかし、手作業でアルゴリズムを実行してみると、そのアルゴリズムがどのように働くのか正確に理解するための良い方法になります。 紙と鉛筆によるSHA-256の1ラウンド マイニングのプロセス ビットコインのマイニングは、ビットコインシステムのセキュリティの鍵となる部分です。その概念は、ビットコインのマイナーたちが、たくさんのビットコイントランザクションを1つのブロックにグループ化してから、ハッシングと呼ばれる暗号操作を、非常に稀少な特別なハッシュ値を誰かが見つけるまで、膨大な回数だけ繰り返すということで

    紙と鉛筆でビットコインをマイニング:1日に0.67ハッシュ | POSTD
    netcraft3
    netcraft3 2018/03/22
    人力マイニングすごい。
  • RustにおけるfutureとgRPC | POSTD

    (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) 記事は、Tang Liu(tl@pingcap.com)が「Bay Area Rust Meetup August 2017」で行った講演内容をまとめたものです。 動画はこちらからご覧いただけます 。 講演者の自己紹介 非同期プログラミング なぜ同期にしないのか なぜ非同期にするのか コールバック地獄 コルーチンで簡単に書く もう1つの方法、future Rustにおけるfuture Futures コンビネータ 同期 Stream Sink Task gRPC なぜgRPCを使うのか HTTP/2 gRPCのベースはHTTP/2 futureとgRPCを組み合わせる C gRPCのキーワード 疑似フロー 単一通信 クライアントストリーミング サーバストリーミング 双方向ストリーミング 単一通信fu

    RustにおけるfutureとgRPC | POSTD
    netcraft3
    netcraft3 2018/02/08
  • 「フロントエンド開発者」の終焉 | POSTD

    元記事の著者より:この記事は主に北米文化で私が見たことを反映しています。 誰かに職業をきかれたら、私は「フロントエンド開発者です」と答えます(答えは相手によって変わることもあります)。10年か20年前は、自分の仕事に必然的に伴うものが何なのかは、かなり明瞭でした。インタラクション用にHTMLCSSを書き、JavaScriptも多少は書いていました。駆け出しの頃、PHPMySQLの作業に職務の大半を費やしていたとはいえ、フロントエンド開発者として見られる方が好きです(これに関しては、後に詳しく説明します)。この状況は、2010年の初頭に変わり始めました。JavaScriptが、重要で、非常に大きな存在になってきたのです。昨年の初め頃から、たくさんのフロントエンド開発者に会うようになり、あることに気付きました。フロントエンド開発者は、もはや、私が以前から知っているフロントエンド開発者ではな

    「フロントエンド開発者」の終焉 | POSTD
    netcraft3
    netcraft3 2018/01/18
  • 40行以内で正規表現エンジンを構築 | POSTD

    最終目標は、最小限のコードで正規表現ユースケースの大部分をカバーできるくらい十分堅牢な構文を提供することです。 1文字と一致させる まずはじめに、1文字のパターンと1文字で構成される文字列を引数に取り、一致するかしないかを示すブール値を返す関数を作成してみます。1文字のパターンである . はワイルドカードとされ、任意の文字リテラルと一致します。 下記のようなかんじです matchOne('a', 'a') -> true matchOne('.', 'z') -> true matchOne('', 'h') -> true matchOne('a', 'b') -> false matchOne('p', '') -> false function matchOne(pattern, text) { if (!pattern) return true // 任意テキストが空パターンと一致

    40行以内で正規表現エンジンを構築 | POSTD
    netcraft3
    netcraft3 2017/12/21
  • AlphaGo Zeroの動作方法と理由 | POSTD

    2016年の3月、DeepMindのAlphaGoが人類最強の囲碁棋士を破った最初のAIとなり、衝撃が走りました。この時のAlphaGoのバージョンであるAlphaGo Leeは世界中の最高の囲碁棋士の膨大な対局を学習に使っていました。数日前に発表された 新しい論文 によると、新しいニューラルネットワークの AlphaGo Zero は人間が囲碁の打ち方を教える必要がないそうです。今までの囲碁棋士より(人間、機械に関係なく)優れているだけでなく、たった3日間の学習で打ち方を学んでしまうのです。この記事では、これがどのようにして可能なのか、そしてなぜ可能なのかについて説明します。 モンテカルロ木探索 離散的で決定論的な完全情報ゲームをするボットを作成できるアルゴリズムは、モンテカルロ木探索(MCTS)でしょう。囲碁やチェスやチェッカーのようなゲームをするボットは次の一手を決める際に全ての選択

    AlphaGo Zeroの動作方法と理由 | POSTD
    netcraft3
    netcraft3 2017/12/20