タグ

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

  • V8エンジンでのJavaScriptの機能と最適化コードの書き方に関する5つのベストプラクティス | POSTD

    数週間前に、JavaScriptが実際どのように動いているかを掘り下げて紹介する記事の連載を始めました。JavaScriptがどのような機能で構成されていてそれらがどのように組み合わさって機能していくのかを知ることによって、さらに良いコードやアプリケーションを作ることができるのではないかと思ったからです。 連載の1回目では 、エンジンやランタイム、コールスタックについての概要を紹介しました。2回目となる今回は、Google V8 JavaScriptエンジンについて細かく説明していきます。また、より良いJavaScriptコードの書き方、すなわち私たちの開発チーム SessionStack がプロダクトを開発する際に意識しているベストプラクティスについても併せて紹介します。 概要 JavaScriptエンジン とはJavaScriptコードを実行するプログラムまたはインタプリタのことです。

    V8エンジンでのJavaScriptの機能と最適化コードの書き方に関する5つのベストプラクティス | POSTD
    nminoru
    nminoru 2018/12/01
  • 分岐予測の簡単な歴史 – Part 2 | POSTD

    2ビット方式 1ビット方式は TTTTTTTT… や NNNNNNN… といったパターンにはうまく働きますが、 ...TTTNTTT... のような「ほとんど成立するが1回だけ不成立」のような分岐の流れでは予測ミスが起きてしまいます。それを改善するために登場したのが、各アドレスに対してもう1ビット追加した飽和カウンタです。では仮に、分岐が不成立だった時はマイナス1、成立した時はプラス1するとしましょう。バイナリ値で見ると以下のようになります。 飽和カウンタの「飽和」とは、 00 にマイナス1した場合はそれ以上値が小さくならずに 00 のまま、 11 にプラス1した場合も 11 のままという動作を取ることを指しています。この方式は1ビット方式とほぼ同一ですが、唯一違うのは予測テーブルの各エントリが1ビットでなく2ビットであるという点です。 1ビット方式に比べると、2ビット方式は同じサイズ/コ

    分岐予測の簡単な歴史 – Part 2 | POSTD
    nminoru
    nminoru 2018/10/02
  • 分岐予測の簡単な歴史 - Part 1 | POSTD

    ※これは、 RC(The Recurse Center:プログラマ教育施設) によって組織された講演シリーズである”localhost”を始動するために、Two Sigma(ツーシグマ)での2017年8月22日の分岐予測に関する講演の原稿を仮に書き起こしたものです。 コードで分岐を使われている方は、どれくらいいらっしゃいますか? ifステートメントやパターンマッチングを使われているという方、よろしければ手を挙げてください。 ほとんどの聴衆が手を挙げる 次の質問に関しては手を挙げてもらうつもりはありませんが、もしそうお願いした場合、恐らく手を挙げる人の数は少なくなるのではないでしょうか。その質問とは、「分岐を実行する際、CPUが何をして、そのパフォーマンスは何を意味しているのかを十分に理解しているか」、そして「分岐予測に関する最新の論文を理解できるか」というものです。 この講演の目的は、CP

    分岐予測の簡単な歴史 - Part 1 | POSTD
    nminoru
    nminoru 2018/10/02
  • ワイヤーフレーム、モックアップ、プロトタイプの違いとは? | POSTD

    開発者と仕事をしていると、スケッチ、ワイヤーフレーム、モックアップ、プロトタイプといった用語をよく聞くかと思います。しかし、あなたはこうした用語の意味を当に理解しているでしょうか? ワイヤーフレームやプロトタイプは、それぞれどんなときに利用するのか、知っていますか? まず、アプリの構築を始める前に、スケッチ、ワイヤーフレーム、モックアップあるいはプロトタイプからスタートするべきだという理由を見てみましょう。 構築したいものがどんなものか、ブレインストーミングをしたり考え出したりするため。こうした作業により、あなたの期待するものが明確になる。 開発者にかかる費用を節約し、構築に必要なものを明らかにすることができる。 こうした作業の結果は投資家や最初の顧客、共同設立者に提示する目的で使える。 顔を突き合わせることのない開発チーム とコミュニケーションを取るためには、これらの用語を正しく区別し

    ワイヤーフレーム、モックアップ、プロトタイプの違いとは? | POSTD
  • 開発者がビッグデータ分析にPythonを使う時によくやる間違い | POSTD

    システムの構築、新しい技術の習得、PythonやDevOpsなどに情熱を注ぐソフトウェア開発者です。現在はチューリッヒを拠点とするビッグデータのスタートアップで働いており、データ分析およびデータ管理ソリューションのためのPython技術を磨いています。 1 はじめに Python は開発時間を短縮できるという点で一般的に評価の高い言語です。しかし、Pythonを使って効率よくデータ分析をするには、思わぬ落とし穴があります。動的かつオープンソースのシステムであるという特徴は、初めは開発を容易にしてくれますが、大規模システムの破綻の原因になり得ます。ライブラリが複雑で実行時間が遅く、データの完全性を考慮した設計になっていないので、開発時間の短縮どころか、すぐに時間を使い果たしてしまう可能性があるのです。 この記事ではPythonやビッグデータで作業をする時に、最も時間を無駄にしがちな事柄につ

    開発者がビッグデータ分析にPythonを使う時によくやる間違い | POSTD
  • 「フロントエンド開発者」の終焉 | POSTD

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

    「フロントエンド開発者」の終焉 | POSTD
    nminoru
    nminoru 2018/01/19
    「フロントエンド開発を分けなくても、多くの人がフルスタック開発者と名乗っているのを聞きます。実際には、彼らがフルスタック開発者でないことは私の折り紙付きです」
  • ファイルシステムよりも35%高速に | POSTD

    1. 概要 SQLiteを使うと小さなBLOB(例:サムネイル画像など)を読み書きする場合、fread()やfwrite()を使って個別のファイル上に記録されたBLOBを読み書きするよりも35%も速く (*1) 読み書きができます。 さらに、10キロバイトのBLOBを扱うようなSQLiteデータベースを考えた場合、個別のファイルにそれぞれのBLOBを格納する場合に比べてディスク領域を約20%も節約可能です。 このようなパフォーマンスの差が生じる理由は、(私たちの考えでは)SQLiteデータベースの場合、open()やclose()システムコールが呼び出されるのが1回だけなのに対して、個別のファイルに格納されているBLOBを使用する場合は、open()やclose()がBLOBの数だけ呼び出されるためだと思われます。どうやらopen()とclose()を呼び出すオーバーヘッドは、データベース

    ファイルシステムよりも35%高速に | POSTD
  • マイクロサービスはもう十分 | プロダクト・サービス | POSTD

    モノリスとして管理するには複雑すぎるというシステムでない限り、マイクロサービスは検討さえしなくていい。ソフトウェアシステムの大多数は、単一のモノリシックアプリケーションとして構築されるべきである。そのモノリス内のモジュール性が良好になるよう注意を払う必要はあるが、別個のサービスに分けようとしてはいけない。要旨 モノリスとして管理するには複雑すぎるというシステムでない限り、マイクロサービスは検討さえしなくていい。ソフトウェアシステムの大多数は、単一のモノリシックアプリケーションとして構築されるべきである。そのモノリス内のモジュール性が良好になるよう注意を払う必要はあるが、別個のサービスに分けようとしてはいけない。 – Martin Fowler 明確に構造化されたモノリスを構築できない時、なぜマイクロサービスがその答えだと思うのか。 Simon Brown 始めに マイクロサービスの利点と欠

    マイクロサービスはもう十分 | プロダクト・サービス | POSTD
  • 興味深いデータ構造:BK木 | POSTD

    BK木とは、 距離空間 内のデータをインデックス化する目的に特化した、木構造を指します。距離空間は基的に、要素の組 $ (a,b) $ 全てについて距離関数 $ d(a,b) $ を持つオブジェクトの集合です。この距離関数は正しく動作することを保証するために、一連の公理を満たしていなければなりません。これが必要になる理由は、後述の「検索」のセクションできちんと説明します。 BK木のデータ構造は、一連のキーを検索し、与えられた検索キーの値に最も近いキーを見つける問題の解決策として、 1973年にBurkhardとKellerが提案したもの です。この問題を解決する素朴な方法は、要素の組に含まれる各要素と検索キーの値を単純に比較することです。一定の時間内に比較が完了した場合、この検索の解は $ O(n) $ となります。一方、BK木を採用すると、この時実行する比較の回数を減らせる可能性が高く

    興味深いデータ構造:BK木 | POSTD
  • 分散システムについて語るときに我々の語ること ― 分散システムにまつわる重要な概念について | POSTD

    分散システムについては、もう随分と前から学びたいと思っていました。ただ、それは一度首を突っ込んだら最後、ゴールのない迷路に迷い込むようなものなのです。どこまでも続いているウサギの穴のようなものです。分散システムに関する文献は星の数ほど存在します。様々な大学からたくさんの論文が発表されているばかりでなく、膨大な数の書籍もあるのです。私のような全くの初心者には、どの論文を読んだらいいのか、どの書籍を買ったらいいのか、見当もつきません。 そんなとき、一部のブロガーが、 分散システムエンジニア (それがどういう意味であれ)になるなら知っておくべき論文というものを推奨しているのを見つけました。その一部を紹介しましょう。 FLP , Zab , Time, Clocks and the Ordering of Events in a Distributed Systems , Viewstamped

    分散システムについて語るときに我々の語ること ― 分散システムにまつわる重要な概念について | POSTD
  • Amazon AWSでユーザ数1100万以上にスケーリングするためのビギナーズ・ガイド | POSTD

    あるシステムを、1人のユーザから1100万人以上にスケーリングするにはどのようにすれば良いのでしょうか。Amazonのウェブサービスソリューションアーキテクトである Joel Williams が AWS re: Invent 2015 Scaling Up to Your First 10 Million Users でスケーリング方法について素晴らしいプレゼンをしています。 AWS上級者のユーザには適さないプレゼンですが、AWS初心者やクラウド初心者、Amazonが次々と送り出す新機能の流れについていけていない人が始めるには素晴らしい内容だと思います。 おおよその見当は付いていると思いますが、このプレゼンはAmazonによって提供されているため、どの問題についても解決策として提案されているものは全てAmazonのサービスになります。amazonのプラットフォームの役割は、印象深く、分か

    Amazon AWSでユーザ数1100万以上にスケーリングするためのビギナーズ・ガイド | POSTD
    nminoru
    nminoru 2017/02/23
  • 私たちがAmazon Web ServicesからGoogle Cloud Platformに乗り換えた理由 | POSTD

    https://flic.kr/p/os8Taq 要約:AWSは素晴らしいが、Googleはその グーゴル 倍素晴らしい。 AWS re:Invent (参加料は1,600ドル)に参加したり、チーフ・エバンジェリストの Jeff Barr をフォローしたりすれば、あなたはたちまち、Amazon Web Servicesのとりこになるでしょう。 毎年何百もの新機能が登場しており、べ放題・融通が利く・運用担当者不要の、オンデマンドサービスのビュッフェのようです。まあ、実際にべてみるまでは、の話ですが…。 Amazonは素晴らしいです。しかし、Google Cloudは「開発者によって、開発者のために構築された」ものであり、それが一目で分かるのです。 移行した理由 App Engine GAE はきちんと機能し、オートスケーリング機能も持ち、ロードバランサや無料のmemcacheも備えていま

    私たちがAmazon Web ServicesからGoogle Cloud Platformに乗り換えた理由 | POSTD
  • Dropboxが構築したMagic Pocketの中身:エクサバイトのストレージシステムの仕組み | POSTD

    自社で構築した数エクサバイトのストレージシステム、 Magic Pocketを発表 して以来、多くの好意的なフィードバックをいただいています。この発表に続きまして、舞台裏からシステムの興味深い側面を見ていただくことができる技術ブログシリーズを投稿していこうと思います。保護の仕組み、運用ツール、ハードウェアとソフトウェアの境界線上の革新などです。しかし、まず、背景を説明する必要があるでしょう。稿では、Magic Pocketのアーキテクチャ概略と設計で使われた基準についてお話しします。 紹介の投稿 で説明しましたように、Dropboxには、ファイルの内容と、ファイルやユーザについてのメタデータという2種類のデータが保存されます。Magic Pocketは、ファイルの内容を保存するのに使われるシステムです。保存するファイルは、ブロックに分割されて耐久性のためにレプリケーションされ、複数の地域

    Dropboxが構築したMagic Pocketの中身:エクサバイトのストレージシステムの仕組み | POSTD
  • JavaScriptフレームワークの寿命 | POSTD

    (注記:9/13、いただいた翻訳フィードバックを元に記事を修正いたしました。) 半年ごとに”今一番ホットな”フレームワークが新たに登場しては、私たちは興奮に沸き返ります。 誇大広告を信じてはいけません。 フレームワークの寿命 はプロジェクトの成功を左右するほど重要な要素です。フレームワークを選ぶ際、テクノロジにおける多くの意思決定者は納得のいく選択をするために、コミュニティの大きさ、人気、大企業によるサポートの有無などを基準にしています。しかし実際は、こうした要素によって寿命が決まるわけではありません。 最初は勢いがあったのに、徐々に弱まり、最終的には線香花火のごとく儚く消えてしまうようなフレームワークを選んでしまうと、書き直しに無駄な時間を費やしたり、チームの士気を下げたりする原因となります。記事は、そうした残念な結果を回避するヒントをまとめたものです。 記事では以下のことを示したい

    JavaScriptフレームワークの寿命 | POSTD
    nminoru
    nminoru 2015/09/01
    「最終的には線香花火のごとく儚く消えてしまう」が引っかかって元の英語記事を読んでみたが、原文にない言葉がいろいろ足されているなぁ。
  • Return-Oriented Programmingで64ビットLinuxを攻撃する手法 | POSTD

    完璧な人間はいません。プログラマならなおさらです。数日をかけて、自分が犯したミスを直すため、作成にかかったのと同じだけの時間を費やします。ですが、まだそれは運がいい方です。大抵は気づかぬうちにバグがとんでもないところに潜んでいて、我々は大惨事が起きてから初めてその存在を知るのです。 いくつかの惨事は偶発的なものです。例えば不運な一連のイベントが引き金となって、見落としていた論理エラーを引き起こす状況になることもあるでしょう。一方で故意に引き起こされる惨事もあります。会計士が複雑な法律の抜け道をかいくぐって税金を悪用するように、攻撃者がバグを見つけたとしたら、そのバグにつけ込んで多くのコンピュータを乗っ取るでしょう。 それゆえ、現代のシステムは悪意を持った人間にバグを利用されないよう設計されたセキュリティの機能を持っています。このようなセキュリティガードは、例えば、異常な動きが発見されるやい

    Return-Oriented Programmingで64ビットLinuxを攻撃する手法 | POSTD
  • パーリンノイズを理解する | POSTD

    この記事の目的はKen Perlinの改良パーリンノイズを分かりやすく分析し、お伝えすることです。記事内のコードはC#で書かれており、自由にご利用いただけます。最終形のみを見たい方は、こちらから最終的なソースをご確認ください。 パーリンノイズは手続き的なコンテンツ生成によく使われる、非常に強力なアルゴリズムです。ゲームや、映画などの視覚媒体に特に有用です。パーリンノイズの開発者であるKen Perlinは、この最初の実装でアカデミー賞を受賞しました。彼が2002年に発表した改良パーリンノイズについて、私はこの記事で掘り下げていきます。パーリンノイズは、ゲーム開発においては、波形の類や、起伏のある素材、テクスチャなどに有用です。例えば手続き型の地形(Minecraftのような地形はパーリンノイズで生成できます)、炎のエフェクト、水、雲などにも使えます。これらのエフェクトのほとんどが2次元、3

    パーリンノイズを理解する | POSTD
  • Haskellのエンジニアは二流なのか?(答えはノーである) | POSTD

    挑発的なタイトルによって誰かが気分を害してしまう前に、私はこの問いに対する答えも書いてしまうことにしました。答えは“ノー”です。しかしこのテーマには、なかなか興味深い議論があるのです。HaskellやErlangや、特にClojureなどのあら探しをするつもりはないのでしょうが、Piaw NaはQ&AサイトQuoraの あるアンサー で以下のようにコメントしています。 プログラミング言語を固定するのは二流のエンジニア/コンピュータサイエンティストである証です。 [中略] 私がErlangのサーバに携わるポジションの採用をした時も、Erlangのスペシャリストだと言うエンジニアより、優秀なオールラウンダーのエンジニアを雇ってErlang(これに限らず何でも)を学ばせてそのポジションを埋める方が断然いいと感じました。 Na氏の意見は1990年代に設立されたGoogleAmazonなどの技術

    Haskellのエンジニアは二流なのか?(答えはノーである) | POSTD
  • 就職面接でプログラムの解読を求められた! | POSTD

    長文ですが、よかったら読んでください。 就職面接でプログラムの解読を求められました。そして、就職が決まりました。 皆さん、こんにちは。新しいブログを開設したので、私は今とても張り切っています。週に何度か記事を投稿するつもりです。 タイトルを見れば大体の話の内容は分かると思いますが、これから書くのは、トルコのアンカラで受けた就職面接の話です。 私が応募した職は「ソフトウェアセキュリティエンジニア」でした。面接中、面接官たちは非常に専門性が低い質問をしてきましたが、分かることもあれば分からないこともありました。 その後、その企業からメールが届き、保護および暗号化されたバイナリファイルが添付されていました(「解読してみろ」ということでしょう)。 帰宅後にファイルをダウンロードすると、ファイルを開くために聞かれたのはパスワードだけでした。面接官が私に課した課題は、そのパスワードを探すことでした。

    就職面接でプログラムの解読を求められた! | POSTD
    nminoru
    nminoru 2014/11/15
  • JPL(ジェット推進研究所)におけるLispの顛末 | POSTD

    この記事はジェット推進研究所(JPL)におけるLispの盛衰について、私の(しかもかなり偏った)個人的見地から書きました。JPLの所員としての立場で書いているのではなく、JPLの公的な立場を代弁するものでもないことをお断りしておきます(これについては読み進めていただければ分かります)。 1988-1991 ロボット工学の時代 私は1988年にJPLに入所し、自律移動ロボットの人工知能AI)グループに配属されました。当時は今と違って政府の財源から資金が潤沢に流入していました。「AIの冬」が始まりかけていましたが、まだJPLには到達していませんでした。研究所の技術動向は最先端から数年遅れになる傾向があるようです。 当時のJPLはマーズ・ローバー・サンプル・リターン(MRSR)と呼ばれるマーズ・ローバー・ミッションの初期計画段階にありました。あの時代、宇宙ミッションはあらゆる意味で巨大でした。

    JPL(ジェット推進研究所)におけるLispの顛末 | POSTD
    nminoru
    nminoru 2014/08/12
  • 1