タグ DSAS開発者
人気順 5 users 10 users 100 users 500 users 1000 usersDSAS開発者の部屋:Go のライトバリアに関するバグを修正した話
Goのランタイムのバグを踏んで解決しました。解決までの過程を記事にします。 同じようなランタイムのバグを踏んで、小さい再現コードを作れない場合の参考にしてください。 自分のプログラムを疑う あるSlackチャンネルで Go で書かれたサーバーのクラッシュが話題になっているのを見つけました。その時に共有してもら... 続きを読む
DSAS開発者の部屋:Pythonアプリの起動を高速化する
pipenv 9.0.2 のリリースでCLIの大幅な高速化をしたというアナウンスを見かけました。 Just released Pipenv v9.0.2, which includes massive CLI speedups! https://t.co/AGD8Hkq1EG — Kenneth Reitz 続きを読む
DSAS開発者の部屋:最近の Python-dev (2017-01)
@methane です。 compact dict が Python 3.6 が9月(ベータになる直前)にマージされ、それのおかげで推薦をもらい 10月ごろから Python の Core Developer になりました 。 「PythonのフルタイムコミッタとしてKLabに雇われている」という訳ではないのですが、 もともと自己裁量で業務時間の大半をOSSへの貢献やコードを読むことに費やし、特に... 続きを読む
DSAS開発者の部屋:ラズパイで作るネットワークエミュレータ(前編)
ネットワークが絡んだ通信プログラムを開発していると、テストのために遅延やパケロスを意図的に発生させたくなることがあります。いまどきは IDE にネットワークエミュレーション機能が組み込まれていたり、仮想環境で容易に再現できたりもしますが、箱物のネットワークエミュレータがあるとネットワークの構成を気にせずカンタンに設置できるのですごく便利だったりします。世の中にはそういった製品が沢山あるので安価なも... 続きを読む
DSAS開発者の部屋:今、ワンボタンの IoT デバイスが面白い
米アマゾンが 2015年3月31日に発表した「Amazon Dash Button」はボタンを押すだけで所定の日用品のオーダーを可能とする小さなデバイスです。電池交換は不可。アイテムごとに専用のデバイスが用意されています。 アマゾンの「ダッシュ・ボタン」、エイプリル・フールではない(2015-04-01) - jp.wsj.com Amazon.com、日用品をボタン1つで注文できる小型機器「Da... 続きを読む
DSAS開発者の部屋:VirtualBoxのファイルシステムを10倍速くする 〜 page cache編 〜
vboxsfを速くするために頑張る記事の2本目です。 前回は、findコマンドが遅いことを調べ、速くすることができました。 今回は、VirtualBoxのファイルシステムvboxsfと、VMWareのファイルシステムvmhgfsの違いをもっと調べていきます。 vboxsfとvmhgfsの速度を比較している記事としては、Comparing Filesystem Performance in Virt... 続きを読む
DSAS開発者の部屋:VirtualBoxのファイルシステムを10倍速くする ~ find編 ~
もう、あって当たり前というところまで浸透してきた仮想環境、みなさまは何をお使いでしょうか? 私の周辺ではVirtualBoxがよく使われています。 典型的な使い方としては、 以下のような感じです。 ホストOSには、mac/windowsをつかう ゲストOSには、Linuxを使う 共有フォルダを使って、ホストとゲストでファイルを共有する その中でも地味に重要なのが共有フォルダ。 共有フォルダとは、ホ... 続きを読む
DSAS開発者の部屋:Go ではエラーを文字列比較する?という話について
Go で関数の戻り値のエラーを判別するときに、エラーメッセージの文字列をチェックするコードが存在します。 (例) これは、 Go が言語設計としてエラー処理が貧弱だったり、標準ライブラリがエラー処理を軽視しているからでしょうか? 言語設計や標準ライブラリのAPIの設計をみて行きましょう。 TL;DR 言語設計としては、Java的例外機構と同等以上の(文字列比較によらない)エラー検査が可能 ただし ... 続きを読む
DSAS開発者の部屋:Goでアロケーションに気をつけたコードを書く方法
GoはPythonのようなLLと比べると実行速度は速いのですが、GCは特別速いわけではないので、相対的にGCがパフォーマンスに与える影響は大きくなります。 また、Java に比べると、一時オブジェクトなどのために頻繁にヒープアロケーションを行うとGCの停止時間が長くなりがちですが、一方でヒープアロケーションを避けたプログラミングがしやすい言語でもあります。 MySQL ドライバのような低レイヤーの... 続きを読む
DSAS開発者の部屋:Goのdatabase/sql.Stmtのスケーラビリティを改善しました
先日、 Goに初めて私のパッチが取り込まれ 、コントリビュータに仲間入りしました。 このパッチは、 database/sql.Stmt をヘビーに使った時に性能がだいたい16コア以上のコア数にスケールしないという問題を解決するものです。 こういった問題をどうやって調査するのかと、Goにパッチが取り込まれるまでの手順を紹介します。 背景 私は TechEmpower の FrameworkBench... 続きを読む
DSAS開発者の部屋:Dropbox アカウントひとつで利用できるプッシュ通知機構
Dropbox 社は広く知られるファイル系のサービスとは別に 2013年より非ファイル形式の構造化データの保存・読み出しに対応するデータストアサービスを公開しており、Dropbox アカウントを持っていれば Dropbox Datastore API 経由でこのサービスを利用できます。同 API は全体的にシンプルで SDK のサポート範囲も広いため自作のソフトウェアへ手軽に組み込むことが可能です... 続きを読む
DSAS開発者の部屋:ISUCON4 予選で workload=5 で 88000点出す方法 (lily white 参戦記)
ISUCON4 予選1日目に、 lily white というチームで参戦してきました。 試合中に 62000 点は出していたのですが、最終的に提出したスコアは 60344 点でした。 以降、予選終了までと、その後に気づいたさらにスコアを上げる方法について書いていきます。 実際の提出時のコードは methane/isucon4q-go リポジトリの "final" タグを見てください。 準備 (~前... 続きを読む
DSAS開発者の部屋:チャットで学ぶ Go ネットワークプログラミング
簡単なチャットプログラムは、ネットワークプログラミング用のフレームワークでは定番のサンプルプログラムです。 echo サーバーが Hello World とするなら、チャットは FizzBuzz といったところでしょう。 とりあえず動くだけのチャットならだれでもすぐに作れるようになりますが、まじめにチャットを作ることで、 ネットワークプログラミングで考えないといけない点やエラー処理の重要な基礎を学... 続きを読む
DSAS開発者の部屋:MySQL 5.6 でのレプリケーション遅延は危険
MySQL 5.6 の検証中に MySQL 5.5 とは違うタイプのレプリケーション遅延を見つけたので紹介します。 MySQL のレプリケーションのおさらい MySQL のレプリケーションは次のような仕組みで動作しています。 マスターの更新トランザクションが binlog を書く スレーブの I/O スレッドがマスターに接続し、 binlog を取得し、 relay log を書く. マスター側は... 続きを読む
DSAS開発者の部屋:TCP高速化プロキシ「AccelTCP」を公開しました
昨年末からずっとこんなことをしてまして、この時期になってようやく今年初のブログ記事です。 進捗的なアレがアレでごめんなさい。そろそろ3年目に突入の @pandax381です。 RTT > 100ms との戦い 経緯はこのへんとか見ていただけるとわかりますが「日本と海外の間を結ぶ長距離ネットワーク(いわゆるLong Fat pipe Network)において、通信時間を削減するにはどうしたらいいか?... 続きを読む
DSAS開発者の部屋:スマホアプリと米国輸出規制に関するメモ
記事の概要 スマートフォンの普及に伴いそれをターゲットとするソフトウェアベンダや開発者が増えています。スマートフォン向けのアプリケーションを公開する際には通常 Google Play や App Store 等のアプリケーションストアを使用しますが、これらのストアの拠点は米国にあるためそこでアプリを配布することは米国からの輸出に該当し 同国の輸出法の適用対象となることに注意が必要です。 米国の輸出... 続きを読む
DSAS開発者の部屋:Android/iOS向けテストアプリ配信ツール 「EMLauncher」を公開しました
先日、TestFlightのAndroidサポート終了、Appleによる買収といったニュースが世間を騒がせましたが、皆さんテストアプリの配信はどうしていますか? KLabでは自社製のテストアプリ配信ツール「EMLauncher」を使用しているのですが、せっかくなのでOSSとして公開することにしました。 https://github.com/KLab/emlauncher 今すぐ試す 今すぐ試したい... 続きを読む
DSAS開発者の部屋:PHPのセッションIDは暗号論的に弱い乱数生成器を使っており、セッションハイジャックの危険性がある
下記の文章は、PHPのセッションIDに対する攻撃についてFull Disclosure MLに2010年に投稿された文章を和訳したものです。訳者の意見としては、攻撃の成立条件は極めて厳しく、そこまで深刻度は高くないと考えています。 とはいえ、疑似乱数列への攻撃がどのように行われるのか、その可能性を示す文章は比較的珍しいもののように思います。暗号論的に安全な疑似乱数とは何か、なぜ必要なのかといった内... 続きを読む
DSAS開発者の部屋:Redis Sentinel で冗長構成を組む際の注意点
KVS界隈ではすっかりおなじみ(?)のRedisですが、当社でも徐々にそのニーズが高まってきました。 標準機能として、レプリケーション、Pub/Sub、ソート等の便利機能が満載のRedisですが、サービスに投入する際に冗長構成をどう組むかといった点が気になっている方もいるのではないでしょうか。 まだまだ検証中ではあるのですが、Redisに実装されているRedisSentinelを用いて冗長構成を組... 続きを読む
DSAS開発者の部屋:MySQL の社内研修資料を公開します
新卒や海外拠点の新しい Web プログラマーに MySQL のインデックスや explain, トランザクションと MVCC について説明するための研修資料を作りました。特に社内情報が含まれていないのでそのまま公開します。 MySQL Bootcamp 他人に講師役を任せたり、ある程度独習もできるようにしたつもりなので、よかったらご活用ください。 @methane 続きを読む
DSAS開発者の部屋:innodb_support_xa と binlog の危ない関係
昨日の記事 で innodb_support_xa = 0にすると RDS が速くなることを紹介したのですが、その後 Twitter で innodb_support_xa = 0 にするとクラッシュ時だけでなく通常時も binlog とトランザクションログの一貫性が無くなる(コミットする順序が前後する)可能性があることを指摘していただきました。 innodb_support_xa=0すると、トラ... 続きを読む
DSAS開発者の部屋:「ZXing QR コードスキャナー」の内部処理を追う
ZXing ("Zebra Crossing") Team による「QR コードスキャナー」 (以下、"ZXing スキャナ"と略記) は操作性が良く人気の高い定番 Android アプリのひとつです。同アプリでは ZXing Team 自らが開発を継続しているオープンソースのバーコード処理用ライブラリが使用されています。 zxing Multi-format 1D/2D barcode imag... 続きを読む
DSAS開発者の部屋:WebSocket アプリの負荷分散
最近 SPDY と WebSocket がアツいですね。 再来週の SPDY & WS 勉強会 も、定員100名に対して 参加者が 247 名とかなりアツいことになっています。 その予習というわけでもないですが、最近 WebSocket を実サービスへの 導入方法を考えながら遊んでいたので、 WebSocket の負荷分散方法について 考えていることを書いておこうと思います。 ステートフルな We... 続きを読む
DSAS開発者の部屋:#isucon2 に向けて、かなり間違った方向に本気出してみた(recaro 誕生秘話)
先日、NHNさん主催の #isucon2 に @methane と参加してきたので、事前準備や当日の状況などを数回に分けてレポートしようと思います。#isucon2 が終わって少し体調を崩していた @pandax381 です。 すべてはここから始まった 社内のIRCチャンネルで #isucon2 の開催が話題になっていて、隣の席の @methane が真っ先に参加を表明し、パートナーを募集していま... 続きを読む
DSAS開発者の部屋:Isucon用Webサーバーrecaro
11/3に開催された #isucon2 に、隣の席の @pandax381 と一緒に、チーム双龍として参加してきました。 結果は惨敗だったのですが、そのレポートを書く前に、 #isucon2 で使う予定だった秘密兵器 recaro について紹介します。 recaro とは recaro はカーネル空間で動く httpd + memcached サーバーです。 httpd サーバーは @pandax... 続きを読む