タグ

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

  • #/usr/binとその同種の周辺を探る | POSTD

    (注:2017/04/10、いただいたフィードバックを元に翻訳を修正いたしました。) はじめに 私はLinuxが大好きです。コンピュータとのやりとりが楽しくなるし学ぶことも多くなります。OSとハードウェアの基盤となる基原則を学びたい人にとって、Linuxはとてもいい出発点と言えるでしょう。 ご存じのとおりLinuxとは大抵の場合プログラム(コマンド)を通してやりとりします。Linuxと他のUNIX系システムが持っている特徴は、コマンドラインと、パイプのコンセプトです。プログラムの提供する入力と出力を統合すれば、データを操作するのに非常にパワフルなプラットフォームになります。 Linuxのコマンド、プログラム、バイナリ(何と呼んでもいいのですが)の大部分は、/usr/bin、/usr/sbin/、/binそして/usr/local/binに存在しています。これらのディレクトリを見れば、プロ

    #/usr/binとその同種の周辺を探る | POSTD
    edajima
    edajima 2017/04/04
  • H.264の秘密 | POSTD

    (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) (2016/12/11、いただきましたフィードバックをもとに翻訳を修正いたしました。) H.264は、動画圧縮コーデックの標準規格です。ネット上の動画、Blu-ray、スマホ、セキュリティカメラ、ドローンなどなど、今やあらゆるところでH.264が使われています。 H.264は注目すべき技術のひとつです。たったひとつの目標、つまりフルモーションビデオの送信に要するネットワーク帯域を削減することを目指した30年以上の努力の結晶なのです。 技術的な面でも、H.264はとても興味深い規格です。この記事では、その一部について概要レベルでの知識を得られることでしょう。あまり複雑だと感じさせないようにするつもりです。今回おはなしする概念の多くは動画圧縮全般にあてはまるものであり、H.264に限ったものではありません

    H.264の秘密 | POSTD
    edajima
    edajima 2016/12/02
  • MITライセンスを1行1行読んでいく | POSTD

    全てのプログラマが理解すべき171語の文章 MITライセンス は、最も有名なオープンソースソフトウェアのライセンスです。この記事では、その内容を一行一行読んでいきます。 ライセンスを読む オープンソースソフトウェアを利用しているものの、これまでライセンス全文(原文:171語)を読む機会がなかった方は、大した量ではないので、今すぐ読んでください。あなたにとってライセンスが身近なものでないなら尚更です。理解できない箇所などがあれば、その部分は心に留めておき、明確にするようにしてください。これから背景や解説とともに、全文を分割して順番に紹介していきますが、大事なことは全容を頭に入れておくことです。 MITライセンス(MIT) Copyright (c) <年> <著作権保持者> ソフトウェアおよび関連文書ファイル(以下「ソフトウェア」)のコピーを入手する全ての人に対し、それらに関する無償のライ

    MITライセンスを1行1行読んでいく | POSTD
    edajima
    edajima 2016/11/25
  • 畳み込みニューラルネットワークの仕組み | POSTD

    (編注:2016/11/17、記事を修正いたしました。) ディープラーニングの分野でテクノロジの進化が続いているということが話題になる場合、十中八九畳み込みニューラルネットワークが関係しています。畳み込みニューラルネットワークはCNN(Convolutional Neural Network)またはConvNetとも呼ばれ、ディープニューラルネットワークの分野の主力となっています。CNNは画像を複数のカテゴリに分類するよう学習しており、その分類能力は人間を上回ることもあります。大言壮語のうたい文句を実現している方法が当にあるとすれば、それはCNNでしょう。 CNNの非常に大きな長所として、理解しやすいことが挙げられます。少なくとも幾つかの基的な部分にブレークダウンして学べば、それを実感できるでしょう。というわけで、これから一通り説明します。また、画像処理についてこの記事よりも詳細に説明

    畳み込みニューラルネットワークの仕組み | POSTD
    edajima
    edajima 2016/11/17
  • 『茹でたニンジン』 : ソフトウェア開発の失敗と技術について | POSTD

    子供の頃、私はニンジンが嫌いでした。においや感がイヤだったのです。しかし実家を出て、自炊をするようになってからニンジンが好きになってきました。ニンジンそのものが変わったわけでもないですし、私の味覚が変わったわけでもありません。違いは調理法です。私の母や彼女と同年代の多くの英国人は、料理が得意ではなく、特に野菜の料理はイマイチでした。母はニンジンを20分以上茹でていたのです。適切な方法でニンジンを調理すれば、全く違った味になるということを私は学びました。 ここは調理のことを話すサイトではなく、ソフトウェア開発のことを話すサイトです。しかし、技術やツールはおいしくないニンジンと同じだなと思うことがよくあります。それは、「その技術が適切に用いられなかったことが当の問題であるにも関わらず、技術自体が良くないものとして非難される」という点においてです。 いつか例を挙げてみましょう。私の複数の友人

    『茹でたニンジン』 : ソフトウェア開発の失敗と技術について | POSTD
    edajima
    edajima 2016/11/14
  • 何でもSSHでやってしまいませんか? | POSTD

    私はかつて、 ssh-chat というプログラムを書きました。 ssh http://t.co/E7Ilc0B0BC pic.twitter.com/CqYBR1WYO4 — Andrey ???? Petrov (@shazow) December 13, 2014 アイデアは単純なもので、ターミナルを開いてこのようにタイプするだけのことです。 $ ssh chat.shazow.net たいていの人はこの後に続けてlsコマンドをタイプするのでしょうが、ちょっと待って。よく見てください。そこにあるのはシェルではなく、なんとチャットルームですよ! 詳しいことはわからないけど、何かすごいことが起こっているようですね。 SSHはユーザー名を認識する sshでサーバーに接続するときに、sshクライアントはいくつかの環境変数をサーバーへの入力として渡します。その中のひとつが環境変数$USERです。

    何でもSSHでやってしまいませんか? | POSTD
    edajima
    edajima 2016/11/11
  • 私たちが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
    edajima
    edajima 2016/09/09
  • Androidの10ms問題?解決しました! : Superpowered Media Serverの紹介 | POSTD

    Androidの10ms問題?解決しました! : Superpowered Media Serverの紹介 私たちはとても人気のあるシリーズ記事の中で、 Androidのオーディオアーキテクチャ問題を説明しました 。どんなカテゴリのアプリも、粗悪で評判の悪いプラットフォームで作ってほしくないからです。そして、 Android M(Marshmallow)の最近の進歩 の記事では、新たな発見を更新し、最近では AndroidのUSBオーディオとMIDI解決法 の記事も発表しました。これにより、オーディオアプリのプロのクリエーターにデバイス11億台規模の市場を開放したこととなりました。 私たちが行ってきた、4238種類以上のAndroidモデル/ビルドの、テストと技術分析と オーディオレイテンシ測定データベース により、「Androidの往復オーディオレイテンシ問題の解決のため、Google

    Androidの10ms問題?解決しました! : Superpowered Media Serverの紹介 | POSTD
    edajima
    edajima 2016/09/02
  • OSを書く:初歩から一歩ずつ | POSTD

    (注:2017/9/27、いただいたフィードバックを元に翻訳を修正いたしました。) (傑作映画 『おつむて・ん・て・ん・クリニック』 に登場する著書です) このチュートリアルは、アセンブリで とても 簡単なオペレーティング・システムを皆さんが自分自身で書けるようになるために書きました。元々は、 OSDev wiki でこのチュートリアルのベースとなるものを見つけたのがきっかけです。しかし、そこには何がどのように、どうして行われているのかという説明が一切ありませんでしたので、このチュートリアルを書くことを決めました。ということで、起動プロセスの基礎と、実行するのに必要なツールについて紹介していきます。 OSXLinuxWindowsなどのよく使われているオペレーティング・システムはドライバを持っており、ハードウェアとの間のインタフェースを提供し、一定レベルの安全性とセキュリティを保証しま

    OSを書く:初歩から一歩ずつ | POSTD
    edajima
    edajima 2016/07/18
  • Node.jsのマイクロサービスの構築を通してDockerを学ぶ – 前編 | POSTD

    あなたが真剣に Docker に取り組んで、その全てを学びたいと思っているのでしたら、もう探し回らなくても大丈夫です。 稿では、Dockerがどのように機能するのか、どんな部分が話題になっているのか、そしてマイクロサービスを構築する際の基的な開発作業にどのように役立つのかについて紹介したいと思います。 稿では例として、ローカルで実行するコードからマイクロサービスやデータベースを実行するコンテナまで、バックエンドにMySQLを用いたシンプルなNode.jsのサービスの例を使います。 Dockerとは何か Dockerとは要するに、(仮想マシン用のテンプレートに非常によく似ている) イメージ を作成して、 コンテナ でイメージのインスタンスを実行できるソフトウェアです。 Dockerには、 Docker Hub と呼ばれる大量のイメージのリポジトリがあり、これを利用して作業を始めたり、無

    Node.jsのマイクロサービスの構築を通してDockerを学ぶ – 前編 | POSTD
    edajima
    edajima 2016/06/29
  • Web Storage: セッショントークンのマシな手段 ― cookieとセキュリティ面を比較してみる | POSTD

    最近、私は「セッショントークンを、cookieの代わりに Web Storage (sessionStorage/localStorage)に保存するのは安全ですか?」ということを尋ねられました。このことについてGoogleで検索したところ、検索結果の上位のほとんどが「Web storageはcookieに比べてかなりセキュリティが弱く、セッショントークンには不向きである」と断言していました。透明性のため、私はこの逆の結論に至った理論的根拠を公に書くことにしました。 Web Storageに関する議論の中核として言われるのは、「Web StorageはsecureフラグやHttpOnlyフラグといったcookie特有の機能をサポートしていないため、攻撃者が容易に盗み取ることが可能」というものです。path属性についても言及されます。私は、これらの機能それぞれについて調べてみました。そして、

    Web Storage: セッショントークンのマシな手段 ― cookieとセキュリティ面を比較してみる | POSTD
    edajima
    edajima 2016/06/15
  • 私のURLはあなたのURLとは違う : curl作者の語る、URLの仕様にまつわる苦言 | POSTD

    1996年にcurlプロジェクトの先駆けとなるhttpgetを始めたとき、私は初めてURLパーサを書きました。当時はまだ、ユニバーサルアドレスは URL : Uniform Resource Locators と呼ばれていました。その仕様は1994年にIETFによって発行されたものでした。この”URL”という用語からインスピレーションを得てツールとプロジェクトに命名したのが curl でした。 URLという用語は後に事実上、 URI : Uniform Resource Identifiers (2005年発行)に変わりましたが、「オンラインでリソースを指定する文字列のための構文と、そのリソースを得るためのプロトコル」という、基的な点は変わりませんでした。curlでは、この構文仕様RFC 3986の定義に従う”URL”を許容するとうたっていますが、それは厳密には正しくありません。その理由

    私のURLはあなたのURLとは違う : curl作者の語る、URLの仕様にまつわる苦言 | POSTD
    edajima
    edajima 2016/06/03
  • 構造化テキストデータを操作するためのコマンドラインツールリスト | POSTD

    テキストベースのファイル形式と、それぞれを(主にLinux上で)操作するためのコマンドラインツールのリストを掲載しています。 目次 DSV XML,HTML JSON YAML,TOML INI 設定ファイル おまけ:単一ファイルデータベース用コマンドラインインタフェース(CLI) ライセンス 情報開示 DSV CSV や TSV などを含む DSV(Delimiter-separated values、区切り文字で区切られた値) です。 Awk AwkはPOSIXで標準化されているコマンドラインツールで、DSVデータ処理用プログラミング言語です。Awkに関するリンクは以下のとおりです。 Awk.info — Awkに関する情報が豊富です。 AWK Vs NAWK Vs GAWK —プラットフォーム別実装の比較です。 すでにプログラミング言語を使用してプログラミングをしている場合は、naw

    構造化テキストデータを操作するためのコマンドラインツールリスト | POSTD
    edajima
    edajima 2016/06/03
  • Pingの発展版 : httping, dnsping, smtpping | POSTD

    私はpingが大好きです!簡単に使えて、ネットワークが稼働しているかを直接明らかにできます。 「 Pingはセキュリティの欠陥ではない!(むしろ友達である) 」、「 Traceroute上級 」の記事をご参照ください。少なくとも、外行きのping(trust(=信頼されるゾーン)からunstrust(=そうでないゾーン)へ)はセキュリティ上の心配なしに用いられるべきです。しかし、これらのuntrustからDMZへのICMPエコー・リクエストは多くの会社で拒否されているため、すべてのサーバが起動・稼働しているかをテストするのが困難になっています。 私は、顧客のサイトのDMZファイアウォールの置き換えに取り組んでいました。当然ながら私は「すべてのサーバが適切に接続されているか(NAT)」「ファイアウォールが接続を許可しているか(ポリシー)」を(外部から)知ろうとしました。 そこで私は、さまざま

    Pingの発展版 : httping, dnsping, smtpping | POSTD
    edajima
    edajima 2016/06/01
  • 週末の思索:私がローカルISPをハッキングした手順、そしてインターネットで身を守るための一般的なアドバイス、学び | POSTD

    週末の思索:私がローカルISPをハッキングした手順、そしてインターネットで身を守るための一般的なアドバイス、学び 長文を読む時間のない読者へ: 時間差SQLインジェクションについて最低限の知識がある読者を想定しています。技術用語を読みたくない場合は、結末の重要なアドバイス、学びまでスクロールダウンしてください。 先週、長い週末を過ごすため、故郷であるNagpurを訪れました。私はNagpurのあらゆるものを深く愛していますが、インターネットだけは別です。十分なFUPの光通信やブロードバンドを提供するまともなインターネットサービスプロバイダ(ISP)がないからです。家族は某ローカルISPの1か月2Mbps 50GBのプランで手を打っています。 FUPとは? 多くのISPは、通信量が制限に達すると速度を落とすFair Usage Policyという制度を採用しています。例えばデータ通信量が50

    週末の思索:私がローカルISPをハッキングした手順、そしてインターネットで身を守るための一般的なアドバイス、学び | POSTD
    edajima
    edajima 2016/05/10
  • React、Redux、D3を用いたアニメーション | POSTD

    これは小さな粒を生成するものです。あなたがクリックした場所から、小さな円が生まれて飛び出していくのです。マウスを持って、動かしてみましょう。粒はカーソルから生み出され続けます。 モバイル機器や、マウスではなく指で動かすタイプのコンピュータだったらどうでしょうか。同じように動きます。 私はオタクなので、これが楽しいと思います。皆さんの見解は様々かもしれません。埋め込み画像をクリックして、円が飛ぶのを見てください。クールじゃないですか? 仕組み これは全てReact、Redux、D3を使って作られています。アニメーションのトリックはありません。少しの賢さが必要なだけです。 一般的な方法を、以下で説明してみます。 私たちは、ページ、SVGエレメント、内部の粒といった 全てをレンダリングするためにReact を使います。この全ては、propを使ってDOMを返す、Reactコンポーネントを使って作ら

    React、Redux、D3を用いたアニメーション | POSTD
    edajima
    edajima 2016/04/15
  • 私がどのようにして180日で180個のウェブサイトを作り、YC フェローシップ・ファウンダーになったか | POSTD

    私がどのようにして180日で180個のウェブサイトを作り、YC フェローシップ・ファウンダーになったか 私はY Combinatorの2016冬季フェローシップに選ばれたスタートアップのテクニカル・ファウンダーです。たった3年前にはコーディングのことを全く知らなかったことを思うと、すこしシュールにも感じられます。この記事は、私はどのようにして現状に至ったのか、そこから何を学んだかのストーリーです。 180日で180個のウェブサイト – 背景となる話 私は、180日で180個のウェブサイトを作ることでコーディングを独習しました。1日1サイトの設立で、私の6か月は完全に費やされました。「このプロジェクトに挑むために私が仕事をやめた」という事を聞くと人はよく驚きましたが、私が仕事をしながらコーディングを学ぶ方法はないという事を私は分かっていたのです。 私はかつてある種の…ファインアーティストでし

    私がどのようにして180日で180個のウェブサイトを作り、YC フェローシップ・ファウンダーになったか | POSTD
    edajima
    edajima 2016/04/01
  • なぜタイポグラフィにおいてVertical Rhythm(バーティカルリズム)は重要な手法なのか? | POSTD

    Webのタイポグラフィについて少しでも調べたことがあるなら、 Vertical Rhythm という言葉を耳にしたことがあるのではないでしょうか。タイポグラフィを用いて仕事をする場合、最も重要な手法の1つです。このことについて知って以来、私は自分のサイト全てにVertical Rhythmを使っています。 ある日、Vertical Rhythmの重要性について自分が全く理解していないことに突然気付き、愕然としました。そしてその後すぐに2つの疑問が湧き上がってきました。「なぜVertical Rhythmを使うとサイトのデザインが向上するのか? 」「自分のデザインを良くするために、Vertical Rhythmから何を学べばいいのだろうか? 」。 私はこの疑問を解明しようと決めました。その考察を綴ります。 記事の最初にあたって認識を共通にするため、まずはコンテキストについて説明します。 Ve

    なぜタイポグラフィにおいてVertical Rhythm(バーティカルリズム)は重要な手法なのか? | POSTD
    edajima
    edajima 2016/03/25
  • 依存関係をなくそう : Rubyアプリ・Gemの開発者への提言 | POSTD

    記事はRubyについて書かれたものではありますが、PythonJavaScriptJavaなど、全ての言語コミュニティに当てはまる事実を述べたものです。依存関係が引き起こす負の連鎖は誰のためにもなりません。 上の図は、私がこれまでに使用した全てのRailsアプリの依存関係を可視化したものです。以下の例はいずれも、どこかで聞いたことのあるものではないでしょうか。 何百ものエントリを含むGemfile 番環境で読み込まれるテスト用Gem 数百メガバイトもRAMをRailsのプロセス Rubygemsシステムは、それを再利用する誰もが容易にRubyのパッケージを作ることができるという点で、賞賛に値するものです。しかし、その便利さが意味するところは、そうしたGemと他のGemを非常に安易に結び付け、さらにそれが、「インターネットでダウンロード」され、数百もの依存関係を持つRailsアプ

    依存関係をなくそう : Rubyアプリ・Gemの開発者への提言 | POSTD
    edajima
    edajima 2016/03/07
  • Railsの基本理念 : Railsの生みの親が掲げる8つの原則 | POSTD

    (訳注: 2016/3/2、頂いたフィードバックをもとに記事を修正いたしました。) Ruby on Railsは最近、急激に注目を集めていますが、その原因はほとんど、この言語が斬新なテクノロジーとしてもてはやされたことと、タイミングにあります。技術的な優位性は時間の経過とともに失われますから、タイミングがよかっただけでは、一過性のブームに終わり、このムーブメントの隆盛は長続きしません。従って、「Railsがいかにして、適切な技術としての位置を維持し続けるるだけでなく、影響力とコミュニティを拡大し続けてきたのか」をより多くの人に説明していく必要があります。そして、その維持・拡大を可能にした/していく要因は、物議を醸すことさえあるRailsの基原則にあると考えています。 この基原則はここ10年ほどの間に進化を続けてきましたが、最も強固な柱となっているルールはやはり、公開当初から制定されてい

    Railsの基本理念 : Railsの生みの親が掲げる8つの原則 | POSTD
    edajima
    edajima 2016/02/16