タグ

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

  • 機械学習アルゴリズムへの招待 | POSTD

    機械学習の問題 については以前に紹介したので、次はどんなデータを収集し、どんな機械学習アルゴリズムを使うことができるのかを見ていきましょう。投稿では、現在よく使用されている代表的なアルゴリズムを紹介します。代表的なアルゴリズムを知ることで、どんな技法が使えるかという全体的なイメージもきっとつかめてくるはずですよ。 アルゴリズムには多くの種類があります。難しいのは、技法にも分類があり拡張性があるため、規範的なアルゴリズムを構成するものが何なのか判別するのが難しいということですね。ここでは、実際の現場でも目にする機会の多いアルゴリズムを例にとって、それらを検討して分類する2つの方法をご紹介したいと思います。 まず1つ目は、学習のスタイルによってアルゴリズムを分ける方法。そして2つ目は、形態や機能の類似性によって(例えば似た動物をまとめるように)分ける方法です。どちらのアプローチも非常に実用的

    機械学習アルゴリズムへの招待 | POSTD
  • 30日間で300回のプログラミング面接をしてわかったこと | POSTD

    プログラマの採用方法を改善するため、1カ月程前にTriplebyteを立ち上げました。昔から変わらず、履歴書、コードをホワイトボードに書かせるプログラミングテスト、そして直感など、これらを判断基準に面接を行う企業が多すぎます。私たちは、より良い採用方法について最初に考えたアイディアを マニフェスト に記しました。それから1カ月と少しが経過し、この30日間で、300回の面接を行いました。私たちはアイディアを実行に移し、どの方法が有効で、どの方法が有効ではないかを確認し、そのプロセスを繰り返すということを始めたのです。この投稿には、300回の面接を通して私たちが学んだことを書いていこうと思います。 投稿では、細かい内容についての説明が多くなりますが、キーとなる発見は以下の通りです。 私たちが作ったオンラインのプログラミングクイズの結果を見れば、高い確率でプログラミング面接の結果を予測できる。

    30日間で300回のプログラミング面接をしてわかったこと | POSTD
  • たった1バイトの書き込みが引き起こすルート権限での実行の脆弱性 | POSTD

    2016年9月22日(木)。こんなメールが私のもとに飛び込んできました。 件名: arescreatequery OOB write c-aresプロジェクト のメンテナのひとりとして、c-aresにセキュリティ問題の恐れがあるというメールを受け取ったのです。実際、そのとおりでした。この問題を知らせてくれたのは、かつてChromeOSの脆弱性をGoogleに報告したこともある人でした。 このc-aresの不具合を悪用すると、 ChromeOS上で、rootユーザーとしてJavaScriptのコードを実行できる ことがわかりました。ChromeOS史上最悪の脆弱性かもしれません。報告者には、相当な額の報奨金が贈られることでしょう。 この動きを実現したり、どうやって実現するのかを説明したりするのはとても面倒な作業だったでしょう。報告者がこれを発見したこと、そしてさらに深く掘り下げて、再現可能な

    たった1バイトの書き込みが引き起こすルート権限での実行の脆弱性 | POSTD
  • Linuxシステムコール徹底ガイド | POSTD

    要約 この記事では、LinuxカーネルにてLinuxプログラムがどのように関数を呼び出すのかについて紹介していきます。 システムコールを行う様々な方法、システムコールを行うための独自のアセンブリの作成方法(例あり)、システムコールへのカーネルエントリポイント、システムコールからのカーネルイグジットポイント、glibcのラッパ関数、バグなど多くの点について説明します。 要約 システムコールとは? 必要条件に関する情報 ハードウェアとソフトウェア ユーザプログラム、カーネル、CPUの特権レベル 割り込み モデル固有レジスタ(MSR) アセンブリコードでシステムコールを呼び出すことの問題点 レガシーシステムコール 独自のアセンブリを用いたレガシーシステムコールの使用 カーネル側での int $0x80 エントリポイント iret を使用したレガシーシステムコールからの復帰 高速システムコール 3

    Linuxシステムコール徹底ガイド | POSTD
  • 生のReactを知ろう – JSX、Flux、ES6、Webpackを使わず… | POSTD

    (編注:2016/07/29、いただいたフィードバックをもとに記事を修正いたしました。) 免責事項: 私はJSX、Flux、 ES6 、そして webpack を非常に気に入っています。これらのツールについては他のシリーズで話します。 React.jsが騒ぎを起こしているのはご存知の通りです。確かに、 XMLHttpRequest 以来の良いツールです。しかし、調査に数時間を費やした挙句、あまりに多くの用語に 圧倒された だけで終わっていないでしょうか。JSX、flux、ES6、webpackreact-routerが使える今、 *他に必要なのは React の使い方を説明してくれる人だけです。* 喜んでください、それがまさに当シリーズでやろうとしていることです。信じられませんか?大丈夫、 2分後、 初めてのReactアプリを作った後には納得いただけるでしょう。何もダウンロードせずに、で

    生のReactを知ろう – JSX、Flux、ES6、Webpackを使わず… | POSTD
  • Vim-Galore : Vimについて知っておくべき全てのこと (5/5) | POSTD

    Vimのディストリビューション Vimのディストリビューションはある作成者の目線によるVim+カスタムセッティング+カスタムプラグインです。そのため、非常に独りよがりなものです。 このディストリビューションの問題は、初心者によって使われる傾向があることです。(より上級のユーザは、結局、自分自身のプラグインとセッティングの選び方を心得ています)。問題が表面化するまでは全て順調です。さて、問題はどこで起こったのでしょう? 初心者はどうしていいかわからず、インターネットでアドバイスを得ようとします。長い堂々巡りのあと、ディストリビューションにより提供された妙なマッピングが問題だと見当が付きます。でも初心者は、Vimのマッピングはデフォルトのままなのにと思います。時間の無駄でした。うんざりです。 ディストリビューションそれ自体に問題があるわけではありません。お願いです、何をしているのかを正確に理解

  • 難しいことを簡単に学ぶ方法 ― 強力なスキルを新たに身に着けるための3つのステップ | POSTD

    ここ数年、私はWeb開発と機械学習の自習に多くの時間を割いてきました。 学習のテーマは、Javascript、Node、ReactからPython、scikit-learn、ニューラルネットワークに至るまで多岐にわたりましたが、全てに対して私は一貫したアプローチで取り組みました。 そのアプローチとは、単純な(陳腐と言ってもいい)3ステップで進める、という手法です。しかし、 Web開発のシロウトだった私が5カ月で、プロだと自覚できるほどになった のはひとえに、このアプローチで臨んだ自習の成果だと思っています。 そこで私は、この自習法がほかの誰かのお役に立てるかもしれないと思い、少し記事を書いてみることにしました。 この記事は、何も分からないままやみくもに挑戦を始めた、2012年当時の自分自身に教えるつもりで書いています。 ステップ1:習うより慣れろ 新しいテクノロジを学ぶためにまず実行する最

    難しいことを簡単に学ぶ方法 ― 強力なスキルを新たに身に着けるための3つのステップ | POSTD
  • Pythonのジェネレータ、コルーチン、ネイティブコルーチン、そしてasync/await | POSTD

    (訳注:2016/3/9、いただいたフィードバックを元に記事を修正いたしました。) 注意: この記事で書かれている機能は、大部分がPython 3.4で導入されたものです。ネイティブコルーチンとasync/await構文はPython 3.5でサポートされました。そのため、記事に記載されているコードを試す場合はPython 3.5の利用をお勧めします。 ジェネレータは値を 生成する 関数です。普通、関数は return で値を返したあと、その下層のスコープは破棄します。関数を再度呼び出す場合、その関数はゼロから起動されることになります。つまり1回限りの実行となります。しかしジェネレータ関数は値を yield で返し、関数の実行を一時停止します。その後、関数を呼び出したスコープにコントロールが移ります。関数を再び呼び出して次の値を(存在すれば)得たい時は、実行を再開することができます。では

    Pythonのジェネレータ、コルーチン、ネイティブコルーチン、そしてasync/await | POSTD
  • マルチモデルデータベースを用いたデータモデリング | POSTD

    同じデータストア内に異なるデータモデルを適合させるためのケーススタディ。 最近になって、”多言語パーシステンス”という考えが新たに登場し、ポピュラーになってきました。参考として、 Martin Fowlerが自身のブログに投稿した素晴らしい記事 をご覧ください。Flowerの基的な考えを解釈すれば、大規模なソフトウェアアーキテクチャにおけるパーシステンス層の異なる部分に対して、適切なデータモデルを色々と使うことは有益である、ということになります。このことから、例えば、永続的に構造化されるリレーショナルデータベースには表形式のデータ、非構造化データ向けのドキュメントストアにはオブジェクトライクなデータ、ハッシュテーブル向けのキー/バリューストアには高度に関連付けられた参照データ向けのグラフデータベースを使うこともできるということです。従来の考え方では、これは同一のプロジェクト内で複数のデー

    マルチモデルデータベースを用いたデータモデリング | POSTD
  • JavaScriptのモナド | POSTD

    恒等モナド Maybeモナド リストモナド 継続モナド Do 記法 連鎖呼び出し モナド とは、一連のステップによって実行する計算を記述する際に使用する、1つのデザインパターンです。 純粋関数型プログラミング言語 では、モナドは 副作用を管理する ために広く利用されていますが、 マルチパラダイム言語では、モナドで複雑性を制御することもできます 。 モナドはデータ型をラップして、空の値を自動的に伝播したり( Maybe モナド)、非同期コードを簡略化したり( 継続 モナド)といった、新たな動作を既存のデータ型に追加します。 一連のコードをモナドと見なすためには、その構造には次に挙げる3つの要素が含まれていなければなりません。 型コンストラクタ — 基的な型に対してモナドの動作を追加した型を作成する機能です。例えば、基的なデータ型 number に対して、 Maybe<number> とい

    JavaScriptのモナド | POSTD
  • プログラマ能力指標表 | POSTD

    2015年05月27日: 表が見にくいというご意見を頂いたため、原文著者に連絡のうえ体裁を修正しました。 上位のレベルには下位のレベルの知識も蓄積されているということに注意してください。つまり、レベル n であれば n より低いレベルの知識も全てあります。 コンピュータサイエンス データ構造

    プログラマ能力指標表 | POSTD
    zia_glass
    zia_glass 2015/05/27
    どれもレベル0or1だったから勉強続けよう
  • 1