3/31/2016

どんなものでも90%はクズである

Hacker Newsにスタージョンの法則「どんなものでも90%はクズである (90 percent of everything is crap)」が出ていた。SF作家のセオドア・スタージョンが、あるSF大会で「SFの90%はクズではないか」と批判され、「確かにSFの90%はクズです。しかし、どんなものでも90%はクズなのです」と答えた。

App Storeにあるアプリの90%はクズだ :-)。

オープンソースでDDoS防御

NANOG 66のR&E Trackでは、BGPの解析やDDoS防御のアイデアが発表されている。この中で、DDoSの検知と自動緩和を行うシステムをオープンソースで構築する発表(PDF)が面白かった。GenieATMArborなどのDDoSの検知・緩和システムを購入しようとすると、数百万から数千万円掛かってしまう。そのコストを抑制できるメリットは大きい。

使われているオープンソース

  • FastNetMon: sflow/netflow/ipfix/mirrorを用いてDDoS検知を行う。システムのコア
  • InfluxDB: 時系列データを格納するのに適したデータベース。メトリックス、イベントの保存や解析に便利
  • Grafana: メトリックスのグラフ描画ツール
  • Redis: 永続化機能を持つインメモリデータベース
  • Morgoth: InfluxDB向けのメトリックス異常検知ツール
  • BIRD: ルーティングデーモン
  • NET HEALER: DDoS攻撃のルール

FastNetMonの特徴

  • sFlow(v4/v5)、NetFlow(v5/v9/v10)、IPFIX、SPAN/mirrorで収集
  • 一定の閾値を超えるIPv4ホストを高速検知
  • 時系列DBをGraphiteにフィードする
  • BGPデーモン(ExaBGP、GoBGPなど)をサポート
  • フローをLuaによって処理できる
  • CLIクライアント

検知ロジック

  • /32から・へのpps、mbgp、flowの数
  • /32から・へのフラグメントパケット数
  • /32から・へのtcp syn/udpのパケット数
  • グローバル、プロトコル別、CIDR
  • nDPIのサポート(span/mirror向け)

攻撃中の対処

  • カスタムスクリプト(メール送信、ACL適用、VM停止など)
  • BGP広告(community、blackhole、selective blackhole、cloud mitigation)
  • BGP Flowspec (RFC 5575)
  • DDoS情報をRedis DBに記録

アーキテクチャー

Fastnetmon arch

なぜNet Healerか

  • FastNetMonはあらかじめ設定した閾値によるため、現実的な閾値を予測するのは難しい
  • False positiveを避けるため、攻撃サイクルフェーズをベースに異なるアクションをトリガーにしたい
  • MorgothとFNMとの迅速な統合やPagerDutyへのAPI (アラートの管理サービス)など

なぜInfluxDBか

  • Graphiteプロトコルと会話できる(FastNetMonと互換)
  • バイナリを落とすだけで簡単にインストール
  • クラスタモードのサポート(スケールがやりやすい)

なぜMorgothか

  • 異常検知に非ガウス性アルゴリズムを実装
  • 毎10秒でInfluxDB(bps/pps)のfingerprintを取得
  • 過去に学習したトラフィックと現在のfingerprintを比較
  • 異常発見: タイムスタンプでアラート作成

Apple、Safari Technical Previewをリリース

Appleが開発者向けに最新技術を盛り込んだブラウザ「Safari Technical Preview」をリリースした。開発者向けといっても、開発者登録は不要で誰でもここからダウンロードできる(インストールすると、Mac App Storeで自動アップデートされる)。動作には、OS X 10.11.4が必要。

  • ECMAScript 6のサポート
  • 低レイテンシー、高スループットの「B3 JIT JavaScriptコンパイラ」を搭載
  • 改造したIndexedDBを実装
  • Shadow DOMの最新バージョンを実装
  • プログラム可能なカットアンドペースト
  • コンテンツ・セキュリティ・ポリシー・レベル2

Slashdot

次のジェイムズ・ボンドの掛け率

007の25作目(Bond 25)で分かっている事は、サム・メンデスが監督を降りる、ダニエル・クレイグのボンドが最後になるかもしれない(もう1本契約が残っていると発言)、製作・配給は未定でソニーではないかも知れないというくらい。そこで、次のジェイムズ・ボンド役を誰が演じるのかが昨年あたりから話題だ。ブックメーカーのオッズをチェックすると、オッズが低いのはトム・ヒデルストン、トム・ハーディ、イドリス・エルバ、ダミアン・ルイスあたり(もちろん、4人とも英国出身)。BBCのスパイドラマ『ナイト・マネージャー』で主役の元軍人を演じるトム・ヒデルストンが人気が高いようだ。イドリス・エルバはソニーのメール流出時に会長が一押しをしていたし、当確すれば黒人初のボンドになる。

3/29/2016

ネットワーク自動化の注意事項

NANOG 66のプレゼン資料を眺めていて、コーディングBOFのネットワーク自動化(オートメーション)の注意事項と題する発表が面白かった(BOFの他の発表はPeeringDB関係)。その発表資料(pdf)の超訳。

ネットワーク自動化のすべきこと、すべきでないこと

プロと繰り返し作業

Network automation

すべきこと#1

Unix原則に従え(可能ならいつでも)

一つのことをうまく行う小さいプログラムはパイプラインの不可欠な要素である。そして、手の込んだメールをするのに不愉快な(rancid)ハックをするな。後処理段階でそれを実行しろ

すべきこと#2

近道はない - 全ての不具合の可能性をチェックし、予想される結果を厳密な統一性で飲み許可しろ。さもなければリカバーして終了しろ

例: このコードは誰もデバイスの設定をマニュアルで触らない限り動くだろう

例: RIPE IRRデータベースは、有効なRPSLとしてフォーマットされた正しい結果を常に提示するだろう。

すべきこと#3

デモやテストをしないでひどい装置を買うな。お金や時間の節約にならない。SNMP、CLI、NETCONFをテストしろ

すべきこと#4

ユーザ入力に自由を認めるな。そして、全てのユーザ入力を厳格にチェックしろ。単に構文だけでなく、ビジネスルールを通してデータを吸い出す方が良い

ミドルウェアあるいはIOSでの悪い例

  • ユーザがルータ間のリンクを入力し、誤ってIPv6/30と設定する
  • DFZでの2000::/6 (/64とすべきところを)
  • DFZでの2000::/12 (/126とすべきところを)

すべきこと#5

ユーザ/マネージャにとってカスタマイズする機会を少なくすることは良いことだ

ネットワーク・オートメーションを通じて、健全なネットワーク設計を実践するためのコントロール度合い(degree of control)を訓練できる

すべきではないこと#1

ユーザにトレーニングせずツールを使わせてはならない

ユーザは何をすべきか皆目見当がつかない時、ネットワーク全体を再起動するスクリプトを実行した

すべきではないこと#2

あなたのドメイン(例: デバイス、DNS、IRRなど)のどの部分であろうと制御することを他の企業(グループ)にあなたに従わない限り許可するな。結局はあなたは後悔するだろう

すべきではないこと#3

全ての新しい技術トレンドが有益とは限らない。じっくりと変更点を吟味すること

例: ルータ上のdocker

すべきではないこと#4

テスト環境をロックダウンせずに、テスト環境で実働データベースをロードする

"BGP ACLの変更についてユーザにメールを送るテストを実施するテストボックス"

すべきではないこと#5

管理を変更することに同意するな。管理者がエンジニアであることは滅多にないし、技術的な決定をすべきではない (また、売るべきではない)

革命が起こったら、変更諮問委員会(CAB)は自分から率先して障壁に逆らおう

すべきこと#6

最優先で自動化を作って、考え方を変えると、すべてが自動化される。特に未開発領域のデプロイメント

例: 組織化された買い付けの言い回しとして"オートメーションフライデイ"

すべきこと#7

完了は完璧よりも素晴らしい

最小で実行可能な製品(MVP)を考えてみる。我々のほとんどが筋金入りのプログラマではない。我々は学習する傍ら、小さな成果物を実行し始める。学習しながら、それに基づいて築いていく

新しい機能を1つしか追加しない場合はリファクタリングするな

すべきこと#8

"Decrufting(デクラフト)" - 利用しないコードを削除することはお金を節約する!

例: peer-groupテンプレートの量を減らすことによって、繰り返しの置換が少なくなるため、テスト面は相当に圧縮される。

すべきこと#9

プログラミング言語に何を利用するかに関して、宗教を持ち込み過ぎないこと。仕事が何であろうと、あなたのチームに役立つもの。

何が最高のプログラミング言語かと言う主張はひどいので、これは直感で分かるものではない

すべきこと#10

アイデアを盗もう!

ネットワークエンジニアのチームは通常このオートメーションに慣れていない。他のチームはしばらくの間これを行って、この先教訓を学んでいく。システム管理/SRE/devopsチームに話して欲しい。彼らは過去に同じ問題を解決し、この先経験を学んでいくと思う。始めるために、1、2日彼らの専門知識を借りなさい

すべきこと#11

テストを持ちなさい。シンプルなテストがいい!

デプロイメント前: 長さがゼロではないACLか?

デプロイメント後: RANCIDレポジトリ中の内容をgrepしたり、DENY ALLルールがそこにあるかを確かめるようなシンプルな検証テスト

将来: これは、インタフェースの説明のような内容を検証するデータベースの一貫性チェックスクリプトに進化する

すべきこと#12

ログファイルを決して削除しない

ネットワークに自律的に変更させるソフトウェアを持っている場合、ログを取り、なぜそして何を変更するかの記録をつける。いつかあなたが予期、理解できなかった何かをすることになりそうだ

すべきこと#14

どこでもバージョンコントロールシステム(VCS)!

誰でもRANCIDを持っている - 事件が起きてから

VCSにルータをpushするよう仕組んだ全てのコンフィグスニペットを付けようかと考える。"pushする計画だった"をカバーする

すべきこと#13

スロットル!

BGP経路を入れたりセッションを停止することで遅延を最適化するようなネットワークを変更するソフトウェアがあるなら、一時間あたり許可する操作の最大数を考える。予想外の大量の変更あるいはプログラムの暴走を避けるためのセーフガードとしてこれを使う

すべきではないこと#6

IOS流儀のダメ製品を買うな!

コンフィグのコミット前にコンフィグをロードして検査をサポートするルータ危機を手に入れろ

すべきではないこと#7

反キリストを加えるようなオートメーションを回避する"conf t"を実行することをスタッフに許可するな。オートメーションを無効にする人を罰しなさい

すべきこと#15

テスト、テスト、テスト、テスト、テスト、テスト

  • 豪華なラボに投資しろ (少なくとも現在デプロイされているハードウェアを持つ)
  • 本物のテスト装置/ソフトウェアを手に入れろ

すべきではないこと#8

データとロジックを混ぜ過ぎるな!

テンプレートにハードコードされた値をベースにした条件を避けろ

ホスト名をハードコードしているなら、移行は悪影響を与えるだろう。もしピア先のAS番号をハードコードしているなら、関係の変更は問題を引き起こすだろう

3/28/2016

MRTGオルタナティブ

Nanog MLにトラフィックグラフを作るためにMRTG/RRDを使っている人が他のツールがないかを投稿していた。そこで出されたツールをリストアップしてみた。

3/25/2016

iOSとAndroidのためのUXチェックリスト

UXチェックリスト。ユーザテストの前に一般的な使い勝手の問題を見つけよう、とのこと。

  • ユーザがすぐにアプリを使い始めることができる。例えば、「ようこそ、このアプリへ」のようなスプラッシュスクリーンが出ないこと
  • 直感的かつ簡単に利用できるアプリを作ることで、オンボーディング体験は避ける。万が一、オンボーディングが使われる場合、簡単に却下あるいはスキップのが簡単なこと
  • ユーザがアプリを試すことができるよう、ログインをユーザに要求するのは後ろにずらしている
  • 意見を作る機会をユーザに与えるため、すぐにアプリケーションの評価をユーザに尋ねるのは避けている
  • ユーザがアプリをクローズしてもいいように、ユーザデータはなるべく頻繁に保存するiOSでは、クローズあるいは終了オプションは全くない。後で続けられるように、ユーザが中止した場所で状態が保持されている
  • 階層。重要な情報は最初に見せており、一目で分かりやすい
  • フォントサイズは読みやすい。また、テキストサイズを変更した時は重要なコンテンツは優先させている。例えば、重要コンテンツが拡大しても、データは小さいサイズを保っている
  • アクション要請ボタンははっきりと分かる
  • スクリーン全体がうまく活用されている焦点はコンテンツであって、UIではない
  • 階調や影付きは控えめに使っている。不必要な雑音(clutter)あるいはスパムのようなブランディングがないよう、ユーザインタフェースはシンプルさを保持している
  • 空白。コンテンツの周りや間にスペースがある。重要なアクション、例えば保存と破壊は近づけて置いていない
  • 重要なタスクは色、形、テキスト、動きを使って強調している
  • アプリケーションのテキストのみバージョンでアクセスユーザに向け、コンテンツはラベル付けされている
  • 優れた色のコントラストは視力の弱いユーザに使われる。W3C推奨を確認
  • 単独は情報を伝えるのに使われない。色覚異常のユーザには単なる色より他の設計要素が使われる
  • ナビゲーションは首尾一貫し、ユーザを案内している
  • 視覚の代替は音で提供している。例えば、字幕や写しは音声やビデオを使っている
  • 例えば、バックグラウンド・ミュージックの自動再生のような不必要な音は避けている
  • リンク、ボタン、チェックボックスは簡単にクリックできる。例えば、タッチスクリーンのオブジェクトの推奨される目標のサイズは7-10mmである
  • 関連するアイテムはお互いに近接してグループ化している
  • 点滅、スクロール、コンテンツの移動5秒以上続くなら、一時停止や停止ができる
  • ブランディングブランド資源は、慎重に、控えめに、そして重要なコンテンツから注意や場所を奪い取ってしまわないよう進めている
  • 簡潔なコンテンツ。コンテンツやアクセスしやすいテキストは要領を得たもので、 スクリーンリーダーで案内することがより速くなる。専門用語は理解するのが簡単で、適切に親しみやすいトーンで使う
  • タイプのコントロールはスクリーンリーダーのテキストには含まれない。例えば、"検索フィールド"の代わりに"検索"と書く
  • 要素はそれらの機能をベースに説明していて、どのように見えるかではない。例えば、"鉛筆のアイコン"の代わりに"編集"。また、これらの説明はアプリをまたがって首尾一貫して使われている
  • 破壊的なアクションは確認されている。念のため、それらは取り消すことは難しい
  • アプリケーションはアクセシビリティ設定のオンとオフでテストされている
  • 付則iOSAndroidの開発者ガイドラインは、アプリが必要なガイドライン全てを以ってコンパイルできることを確認するために読まれている

Hacker News

クラスタやチームのためのSSHインフラ「Teleport」

Gravitational Teleportは、SSHやHTTPSを使ってLinuxサーバのクラスタにリモートアクセスするツールで、今までの鍵ベースのアクセスにはない、次の方法を簡単に導入できる。これは面白い。

  • クラスタ認証局によって署名された期限付き鍵を使って、鍵の配布や"Trust on first use (TOFU)"リスクを避ける
  • 2段階認証を強制
  • SSH拠点経由で直接インターネットアクセスせずに、ファイアウォール背後に置かれたクラスタに接続
  • 知識共有や監査のためにSSHセッションの記録と再生
  • セッション共有を通して、協力して問題を解決
  • ダイナミックなノードラベルでクラスタ内のオンラインサーバやDockerコンテナを発見
Teleport diagram

Hacker News

MicrosoftのAIチャットボットが一日足らずで差別主義者、公開停止へ

MicrosoftがTwitter上に、他のツイートから学習し、自動的に内容に応じてティーンの少女のように応答する人工知能チャットボット「Tay.ai」を公開した。ところが、一日足らずで次のようなコメントを返すようになり、公開停止する羽目になったとのこと。ただ、Microsoftは調整中と回答。

  • 9/11はブッシュ前大統領による内部犯行、オバマ大統領に人種差別的な中傷
  • ヒトラーは何も悪くないと主張、大統領候補のテッド・クルーズを「キューバのヒトラー」とも呼んだ
  • 虐殺を支持

この間、Facebookのメッセンジャー向けのボットストアは大革命というニュースがあったが、下手な応答をしたら訴訟になりそうだ。

geektryantThe VergeHacker NewsSlashdotTechCrunch

3/24/2016

DNSCrypt

DNSCryptは、DNSのクライアントとサーバ間の通信を安全にするためのプロトコル。

DNSCryptはDNSのクライアントとサーバ間の通信を認証するプロトコルで、選ばれたDNSリゾルバから発せられた応答を検証するためにデジタル署名を用い、改ざんされないようにする。

実装は、Linux、OSX、Android、iOS、BSD、Windowsとほとんどのオペレーティングシステムで利用可能である。

DNSCryptは如何なる企業や組織と関係を持たず、高い安全性、非NISTの暗号を用いた実証されたプロトコルで、そのリファレンス実装はオープンソースで極めて自由なライセンスの下でリリースされている。

DNSCryptはVPNに置き換えるものではない事に注意してほしい。DNSトラフィックを認証するだけで、DNSリークやアクティビティを記録するサードパーティ製のDNSリゾルバを防げない。

DNSCryptの安全性、プライバシー、匿名性を改善するRandomDNSと言うのもある。

3/22/2016

イーサネットコネクタを小さくするべきか?

Ask Slashdotにイーサネットコネクタ(RJ-45)を小さくする時じゃないのか、という質問が出ていた。

HDMIはmini、そしてmicroと小さくなっている。USBはmini、そしてmicroと小さくなっている。有線イーサネットコネクタは1988年から変わっていない。Raspberry PIでは、標準化されたコネクタで最も大きい。新しい型を考える時では?
どちらかといえば、あなたはすぐに不格好なRJ-45ポートを取り替えたいですか? 私はRJ-45ケーブルは簡単に取り除けないのもあって、あまり嫌ではありません、しかしロックメカニズムはとても壊れやすい点が嫌です。言わせて貰えば、今までのところ私のコンピュータにはフルサイズのUSBポートもフルサイズのイーサネットジャックもあることが良かったと思っています。

3/20/2016

ツタンカーメンの墓で隠された部屋が二つ見付かる

エジプトのダマティ考古相はツタンカーメン王の墓に二つの隠された部屋があることがほぼ確実と発表した。その部屋の中には、金属や有機物があることが分かっているとのこと。ダマティ氏は部屋にあるのはツタンカーメンの義母であるネフェルティティ王妃の遺体とは考えていないとのことだが、イギリス人考古学者ニコラス・リーブス氏は、ネフェルティティの可能性があると考えている。もし、ネフェルティティだとすると謎の王妃の秘密が明らかになるのかも。調査に使われている地中レーダーは日本人技術者が開発したものとのこと。素晴らしい。

Nefertiti tomb

ネフェルティティはマイルス・デイヴィスのアコースティック時代最後のアルバムのタイトルにも使われている。

Boingboing

SMTP Strict Transport Security

SMTP上でTLSを使う方法として、SMTPSとSTARTTLSがある。現行の方式では、メッセージの機密性(STARTTLSが日和見暗号であるため、ダウングレード攻撃を受ける)やサーバの信ぴょう性の提供が機能しなくなる(メールドメインとMTAサーバの関連性を暗号方式的に検証できない)可能性がある。セキュリティ強化のため、SMTPの厳格なトランスポートセキュリティ機構を定義したインターネットドラフト(draft-margolis-smtp-sts)が提出された。Googleが中心となって、Yahoo、Comcast、Microsoftなどが共同執筆者になっているため、標準化の可能性が高そうだ。

このドラフトでは、受信者のためのポリシー規定を公開するメカニズムを定義

  • このドメインへメールを送信するMTAはTLSのサポートが見込まれるかどうか
  • どのようにMTAがメール配信中に提示されるTLSサーバ証明書を検証するか
  • TLSのネゴが失敗した際に送信者がメッセージをどう処置するか

そのメカニズムは4つの論理的なコンポーネントに分けられる。

  • ポシリーセマンティックス: 送信者が受信ドメインのサーバがTLS暗号をサポートすること及びTLS証明書を検証する方法を予期できるかどうか
  • ポリシー認証: DNSで伝えられる提示されるポリシーの信ぴょう性を確定する方法
  • 異常報告形式: 集約異常統計について受信ドメインを報告するためのメカニズム
  • 異常処理: 送信MTAがポリシー異常について何をすべきか

Hacker News

3/18/2016

Googleのロードバランサ「Maglev」

Googleが高速で信頼性の高いソフトウェア型ネットワークロードバランサ「Maglev」をUSENIX NSDIで発表した。論文の概要超訳。

MaglevはGoogleのネットワークロードバランサである。Linuxサーバ上で動作する大規模分散ソフトウェアシステムである。今までのハードウェア型ネットワークロードバランサとは異なり、特殊な物理的ラックの配備を必要としないし、その能力はサーバを追加したり削除したりすることで、簡単に調整できる。ネットワークルータはECMP(Equal Cost Multipath)でMaglevマシンに均等にパケットを分散する。その後、各Maglevマシンはそれらのサービスへのパケットをマッチさせ、サービスのエンドポイントに均等に展開する。高く増え続けるトラフィックを対応するため、Maglevは特にパケットプロセッシングパフォーマンスを最適化している。一台のMaglevマシンは小さいパケットでも10Gbpsリンクを一杯一杯にできる。Maglevはコンシステントハッシュ法やコネクショントラッキング機能も装備しており、予期しない障害やコネクション型プロトコルの失敗への悪影響を最小化できる。Maglevは2008年からGoogleのトラフィックをさばいている。Googleサービスの急速でグローバルな成長を支えており、Googleクラウドプラットフォームのネットワークロードバランス機能も提供している。

Hacker News@IT

3/17/2016

IPv4の歴史的状態宣言

IPv4はIPv6にとって代われるため、IPv4(RFC791)を歴史的状態(Historic)にするというインターネットドラフト(draft-howard-sunset4-v4historic)が出ていた。個人提案のドラフトだが、さすがにまだ早過ぎるかな。

Hacker News

3/16/2016

L root-serverのIPv6アドレスがリナンバリング

ICANNが管理する L root-server (L.ROOT-SERVERS.NET)のIPv6アドレスが3月23日にリナンバリングされる。同日にnamed.root(named.cache)が更新される。

199.7.83.42
2001:500:3::42 2001:500:9f::42

Mozillaの新しいブラウザServoは6月にAlpha版をリリース

Mozillaが、Servo(サーボ)ブラウザのAlpha版を6月にリリースすると発表した。Slashdotによると

プロジェクトはブラウザのUIにbrowser.htmlを、ブラウザのコアにRustを使っている。どうしてMicrosoftがSpartan(Edge)をローンチしたのかと、どうしてMozillaがServoをローンチしたのかとは共通点がある。多くの人はMozillaがこっそりとFirefoxの置き換えに動いていると考えるかもしれないが、Mozillaは最近でもWebExtensionsやe10sのようにFirefoxにかなり多くの投資もしている。そして、ServoはMicrosoftがEdgeをリリースしながらIEがあるように、完全にFirefoxを置き換えるというより、ゆっくりとGeckoを置き換えFirefoxに統合されていくというのがもっともらしい。

Hacker NewsTWN News

3/15/2016

AlphaGoがAIのソリューションではない

Hacker Newsに、AlphaGoはAIのソリューションではないというMicrosoft研究所のJohn Langfordのエッセイが紹介されいた。その超訳。

囲碁を極めたGoogle Deepmindのみなさん、おめでとうございます。

しかし、この前後の議論のいくつかは浅はかで誇張しているように見える。Wiredは機械が最後のゲームに勝ったと言い、Slashdotも真の人工知能を得るための大きく新しいブレークスルーは必要ないということが今分かったと言った。真実とはかけ離れている。

囲碁自身にとって、モンテカルロ木探索(MCTS)が囲碁には非常に有効だということがここ10年ほどでよく知られている。こう考えると、AlphaGoのアルゴリズムはMCTSがうまく働かない他のボードゲームに広がるかどうかは明確ではない。おそらく? わかると興味深い。

既存のコンピュータゲームについての研究で、アタリの結果(図3を見て欲しい)はとても面白いが、ゲームの1/4について明確に平凡である。なぜかという私の仮説はそれらのソリューションはグローバル探索というよりローカル探索(Epsilon-Greedy法)のみで、とても短い信用割り当て問題あるいは greedilyアクセシブルポリシーのいずれかを解決するポリシーを学習するだけだ。グローバル探索戦略は一般的にdeterministic decision process(1993)、マルコフ決定過程(1998)、MDPs without modeling(2006)のためのより効果的な戦略に飛躍をもたらすことが知られている。

これらの戦略が使われない理由は、function fittingよりもむしろtabular learningをベースにしているためである。それが理由で私は2006年の論文の後にContextual Banditの研究に移った。我々はContextual Deterministic Decision Processに取り組み始めるのに十分なほどにそこで相当に研究した。しかし、そのソリューションはまだ実用からは遠い。グローバル探索を効率的に解決することは、今よく知られていることと、真の人工知能を考える上で解決する必要があることとの間で重要な課題のうちの一つにすぎない。

これは一般にこれらの技術を働かせる人々によって理解されているが、 パブリックニュースレポートに転換に迷うことになるように見える。それは失望につながるため危険だ。その分野はoverpromise/bust cycleがない方が良いし、私は成功やそれらの広がりのバランスと取れた見方を維持し、情報を提供することで人々に希望を与えるだろう。囲碁を習得することは偉大な業績だが、全てからはかなり遠い。

編集: ここにさらなる議論、再投稿、そしてここ

Hacker News

追記(2017.3.21): IEEE Spectrumに掲載された記事

3/13/2016

WiFi ResetPlug

Hacker Newsで面白いグッズが紹介されていた。インターネットの接続性をモニターし、接続が失われると、電源をリセットする電源プラグ「WiFi ResetPlug」だ。単純だが面白い。Amazon.comで59ドルで販売されている。

Reset plug2

3/11/2016

curlとwgetの違い

curlとwgetの違いをまとめたチートシート。

私が理解している主な違いです。curlに関して私のバイアスを考えて下さい。curlは私の子供ですが、Wgetにも貢献しています。

あなたが別の考えあるいはこの文書にコメントがあれば、教えて下さい。

問題あるいは改善点を見つけたら、問題を届けるあるいはプルリクエストして下さい

両方ともできること

  • FTP、HTTP、HTTPSでコンテンツをダウンロードできるコマンド行ツールである
  • HTTP POST要求を送ることができる
  • HTTPクッキーをサポートする
  • ユーザのインターアクションが不要で、スクリプトの中で実行できるよう設計されている
  • 完全なオープンソースでフリーソフトウェアである
  • プロジェクトが90年代に開始された
  • metalinkをサポートする

どのような点が異なるか

curl

  • ライブラリ。curlはlibcurl、皆が使うことができる安定的なAPIを持つクロスプラットフォームライブラリ、を原動力としている。この違いは大きい。内部的に物事を行う方法に対する完全に異なる考え方を取っている。また、単なるコマンド行ツールよりもライブラリを作る方が若干難しい
  • パイプ。curlはむしろ古典的なunixのcatコマンドに近い働きをし、標準出力に要素を送り、「すべてがパイプ」というやり方で標準入力から読み取る。wgetは同じアナロジで言えばcpに近い
  • 単発。curlは基本的に単発のデータ転送を実行するのに使われる。ユーザが指定するURLを単に転送し、再帰的なダウンロードロジックやHTMLパーザの分類を含んでいない
  • より多くのプロトコル。curlは、FTP、FTPS、Gopher、HTTP、HTTPS、SCP、SFTP、TFTP、TELNET、DICT、LDAP、LDAPS、FILE、POP3、IMAP、SMB/CIFS、SMTP、RTMP、RTSPをサポートする。一方、wgetはHTTP、HTTPS、FTPのみサポート
  • 高い移植性。curlはwgetよりもより多くのプラットフォームでビルド、実行する。例えば、OS/400、TPFのような素直なunixクローンではない風変わりなプラットフォームでも動く
  • 多くのSSLライブラリやSSLをサポートする。curlは11の異なるSSL/TLSライブラリの一つでビルドでき、プロトコルの詳細を広くサポートし、多くのコントロールを提供する。curlは公開鍵ピニングをサポートする
  • HTTP認証。curlは多くのHTTP認証方式、特にHTTPプロキシー系のBasic、Digest、NTLMやNegotiateをサポートする
  • SOCKS。curlはプロキシーアクセスのために幾つかのSOCKSプロトコルをサポートする
  • 双方向性。curlはアップロードや送信機能を提供する。wgetはプレーンなHTTP POSTをサポートするだけである
  • HTTPアップロードや通常のブラウザをエミュレートし、幅広い範囲でHTTPの自動化を実現するためにHTTP multipart/form-data 送信が可能である
  • curlはgzip、Content-Encodingや自動解凍をサポートする
  • curlはTransfer-Encoded HTTPの解凍を提供し実行する。wgetはできない
  • curlはHTTP/2をサポートし、Happy Eyeballsを使ってデュアルスタック接続ができる
  • さらに多くの開発者のアクティビティ。じっくり考えている間、私はメーリングリストのアクティビティ、ソースコードのコミット頻度、リリース頻度の3つの測定基準を考えた。これらの二つのプロジェクトをフォローする人なら誰でもcurlプロジェクトの方がすべての分野で高い位置にあると分かるだろう。そして、10年以上経っているのだ。openhubで比較してほしい

Wget

  • Wgetはコマンド行のみで、ライブラリはない
  • 再帰的! curlと比較してのWgetの大きな強い側面は、再帰的にダウンロードできることで、HTMLページあるいはFTPディレクトリリストなどリモートのリソースから参照されているすべてをダウンロードできる
  • 古い。Wgetは1995年までさかのぼり、curlは1996年末より前ではない
  • GPLだ。wgetは100パーセントGPL v3で、curlはMITライセンスだ
  • GNUだ。WgetはGNUプロジェクトの一部で、すべての著作権はFSFに譲渡されている。curlプロジェクトは全体的に単独で、組織に属さず独立である。とにかくほとんどすべての著作権はダニエルが所有している
  • Wgetは単純にローカルにURLをダウンロードするのに余計なオプションは必要としない。一方、curlは-oまたは-Oが必要だ
  • WgetはSSL/TLSのサポートにGnuTLSあるいはOpenSSLのみをサポートする
  • WgetはHTTPプロキシ越えの認証タイプのみ、Basic認証のみをサポートする
  • WgetはSOCKSをサポートしない
  • Wgetは早期で転送が失敗した場合に、ダウンロードを継続するリカバリ機能を持っている。curlには同等の機能はない
  • Wgetはデフォルトで多くの機能が利用可能である: クッキー、リダイレクトフォロー、タイムスタンプなど。curlはこれらのほとんどの機能は明示的に有効にする必要がある
  • WgetはQwertyキーボードで左手のみでタイプできる!

追加要素

いく人は私がwputが持つアップロード機能を比較すべきだと主張するが、それは別のツール/プロジェクトで、私はこの比較に含めなかった。

同じような機能を持つ二つの有能なツールにaria2axel(死んだプロジェクト?)がある。試してみてほしい!

より厳格な機能比較には(他の同じようなツールも比較している)、curl比較表を見てほしい。

謝辞

Micah Cowan、Olemis Lang両名のフィードバックと改善に感謝する。

Hacker News

3/10/2016

ウェブページの読み込みを34パーセント高速化できるアルゴリズム

Slashdotによると、MITの研究者がウェブページの読み込みを34パーセント高速化できるアルゴリズムを作成したそうだ。

MITの研究者がウェブページを解析し、読み込む必要のある全てのネットワークリソース(CSS、JS、画像など)の依存性グラフを作成するアルゴリズムを作成した。Polarisと呼ばれるアルゴリズムがUSENIX NSDI国際会議のシンポジウムで今週発表され、平均で34パーセントページの読み込み時間を削減できると語られた。より大きくかつより多くのリソースがウェブページに含まれ、より良いアルゴリズムの効率性が、今日のJavaScriptヘビーなサイトで有益である。

Engadget

3人に1人の開発者が将来AIに置き換わることを恐れている

Slashdotによれば、ソフトウェア開発者は人工知能を脅威と考えているようだ。

エバンスデータ社が550人のソフトウェア開発者に、あなたのキャリアで最も心配なことを尋ねたとのこと。29パーセントの多数の人が、「私や私の開発力が人工知能に置き換わること」と答えた。意外にも、これはAIに関連し、開発者が取り組んでいるプラットフォームが時代遅れになる(23パーセント)、あるいは受け入れられなくなる(14パーセント)という2番目に多い心配事を上回っている。ソフトウェア開発者がAIに置き換わることについての懸念は学問的にも裏付けられている。オックスフォード大学の職業の未来という研究は、ソフトウェアエンジニアの仕事がまもなくコンピュータ化されると警告した。機械学習の進歩はアルゴリズムによって最適されるべく設計上の選択を考慮に入れている。エバンスデータCEOのJanel Garvinによれば、AIが原因の衰退の考えは、古くなることより人が要らなくなる方がより脅威である、まずいマネジメントによって職場が息苦しくなる、あるいはスキルやツールを知ることは意味がなくなる。

3/09/2016

パウル・クレーの造形理論ノートがオンラインで公開

スイスの画家パウル・クレーは1921年から1931年間でバウハウスで教鞭をとっていた。その講義の草稿ノートがスキャンされオンラインで公開されたとのこと。「パウル・クレー手稿 造形理論ノート」として出版されていたが、今は入手が困難なようである。

Boingboing

3/08/2016

クヌース教授の歯の磨き方

Q: あなたは、生活の中でどのように数学を使っているかを示す何か他に知見を持っていますか?

A: 例えば、私は歯を磨く時、カバーするのに8つのエリアに分けています。つまり、左と右、上部と下部、内側と外側です。「ハミルトン路」あるいは「グレイコード」でたどればもっとも効率的です。

  • 左上部外側
  • 右上部外側
  • 右上部内側
  • 左上部内側
  • 左下部内側
  • 右下部内側
  • 右下部外側
  • 左下部外側

Beebo

3/05/2016

RFC 7766: DNS Transport over TCP

DNSはメインのトランスポートプロトコルにUDPを利用しているが、UDPを利用しているが故にセキュリティ上の問題も深刻になっている。DNSは本来TCPを利用できるのだが、今の仕様ではUDPが優先されている。そこで、TCPとUDPを同列に扱うようにRFC7766が発行された。これで全ての汎用のDNS実装はUDPとTCPの二つのトランスポートをサポートし、TCPとUDPを同列に扱わなければならなくなった。TCP接続の再使用、複数クエリの並行処理(Query Pipelining)、同時接続、アイドルタイムアウトなどが規定された。基準ではないが、TCP Fast Open (RFC7413)の実装についても言及されている。また、セキュリティリスクについても注意とアドバイスも書かれている。

JunosでSegment Routingが利用可能に

JunosにSegment Routing (SPRING)が実装されたようだ。PTXシリーズ向けのJunos 15.1F5にIS-IS Segment Routingがサポートされた。

1Passwordはloopback経由でパスワードを平文で送っている

1Passwordは、ブラウザ機能拡張を利用する場合にloopback経由でパスワードを平文で送っているそうだ。慎重に取り扱いたいなら、機能拡張を使わずにコピペということか。

MediumHacker News

DROWN攻撃

今週始めに発覚したSSLの脆弱性についてのシュナイアーのブログ

今週始め、我々はSSL/TLSに対して攻撃者が安全ではないアルゴリズムの利用を強制できるさらなる攻撃を知った。それはDROWNと呼ばれる。攻撃に関して素晴らしいニュース記事、攻撃を説明する技術論文、マシュー・グリーンが投稿したとても素晴らしい技術ブログ

余談として、私は近頃の脆弱性を取り巻くマーケティングには歯がゆくなっている。脆弱性にキャッチーな名前や専用のウェブサイトは必要ない。とは言いながら、とても素晴らしいウェブサイトとロゴだ。

3/02/2016

ディフィー氏とヘルマン氏が2015年チューリング賞

ディフィー・ヘルマン鍵交換を発明したことで知られるホイットフィールド・ディフィーとマーティン・ヘルマンが2015年のチューリング賞を受賞した。

SlashdotThe Verge