タグ

ブックマーク / unknownplace.org (21)

  • Dockerを使ったGolang開発環境 - unknownplace.org

    しばらくiOSアプリのクライアントサイドばかり開発していてサーバサイドプログラムにご無沙汰だったのだけど、 最近またGoでアプリのサーバサイドを書くようになった。 ちょうど xhyve が話題になっているのもあって、OS X の仮想環境がアツい感じだったので、 ひさしぶりに Docker で開発してみよう、と思いたち、Dockerを使ったアプリ開発をやってみている。 docker-compose を使って依存ミドルウェアも一緒に立ち上げる docker-compose [1] というのを使うと、複数のコンテナを同時に立てられ、それぞれにリンクも良い感じにやってくれる。 開発環境を作るにはもってこいのツールだ。 GoのWebアプリ サンプルとして以下のようなアプリを考える。 // main.go package main import ( "fmt" "log" "net/http" "gi

  • OSX で tmpfs 的なことをする方法 - unknownplace.org

    MacBook Air 上で Test::mysqld なテストを走らせていると SSD の寿命縮めそうだなーとおもって tmpfs 的なものが OS X にもないものかと検索したら hdid(8) でできるとのこと。 man の一番下のほうに例が載っている。 $ hdid -nomount ram://128000 /dev/disk1 これでメモリから128000セクタ(1セクタ512バイトなので62.5MB)分とって仮想ディスクをつくり、 $ newfs_hfs /dev/disk1 Initialized /dev/rdisk1 as a 63 MB HFS Plus volume HFSで初期化して、あとは普通に $ mkdir /tmp/mnt $ mount -t hfs /dev/disk1 /tmp/mnt でマウントすればOK。 作ったディスクの破棄には $ hdidu

    tknzk
    tknzk 2014/09/04
  • Google認証なリバースプロクシ&静的コンテンツ配信サーバー「gate」 - unknownplace.org

    Kibana や Grafana を使う時に、これらはjsのツールなので、 Erasticsearch や InfluxDB といったバックエンドサービスにjsからアクセスできるようにする必要がある。 そのためには、 普通にバックエンドサービスのportを開放 nginxとかでリバースプロクシ とかする必要があり、めんどくさい。 さらにセキュリティのことを考えると、2の方法のうえに、nginxでSSL+Basic認証なんかにする必要があってよりめんどくさい。 さらに、僕はBasic認証が嫌いだ。 昔は Firefox + 1Password で良い感じにBasic認証の入力が行えたが、いまはだめになってしまったし、 Basic認証だとアカウントの管理もめんどくさい。 なので、Google認証なhttpdでリバースプロクシもできる、gateというツールを作った。 https://github

  • GitHubのレポジトリURLを開くgh-openコマンド - unknownplace.org

    進行中のGitHubプロジェクトが増えてくると、そのプロジェクトページをブラウザ上で即座に開くことができず、手間取ることが増えてきた。 hub とか、 gh というようなコマンドラインツールを使うと、手元のチェックアウトしたパスで、 $ gh browse とかすれば対応するGitHubのページを開くことができる。 最初はこれを使ってがんばろうと思ったのだけど、やっぱりカレントディレクトリの情報をベースに開くものだから、他の場所にいるといちいちcdしないといけないのが面倒。 また、シェル履歴との相性も悪い。 $ gh-open ~/path/to/repo みたいにしてcloneしたディレクトリを指定してあげるだけで動くものがあれば、どこにいても動くし、履歴も上手に使える。 というわけで作った: typester/gh-open ちょろっと作ったものだけど、やはりこちらのほうが使いやすい。

  • Go言語のOS X上でのGDBデバッグ環境構築 - unknownplace.org

    Go言語は gdbでのデバッグがサポートされている のだが、OS X でそれを使おうとしたらいろいろ罠にはまったのでここに記しておく。 (このエントリ執筆時の手元の環境は OS X 10.9(.0) Mavericks + Xcode 5.0.1) 罠一覧 OS X 付属のgdbが古い Xcode 5.0.1のclangだとgdbのビルドがこける ビルドするgdbpython2にリンクさせないとGo付属のruntime-gdb.pyが動かない[1] ビルドしたgdbにコード署名をしないと他プロセスをアタッチできない OS X 付属のgdbが古い Goのコードをgdbでデバッグするには、gdb 7.1以上が必要ということだが、OS X (Xcode?) 付属のgdbは古くて使えない。 手元のバージョンは GNU gdb 6.3.50-20050815 (Apple version gdb-

  • USB HDDをソフトウェアRAIDでミラーリングして家庭内ストレージを作った - unknownplace.org

    MacBook Air をメインにしてから以降、体のストレージ領域が小さいことから、音楽データや写真データなどは、 外付けの USB HDD に保存するようにしているのだが、1つの HDD にしか保存していなかったので、 こいつが死んだら困るなぁ、と思っていた。 しかし、なんとかしないと、と思いつつもそのままの状態ですでに3年近くたってしまっていた。(笑) それでも最近夏の暑さのためか、周りで HDD の故障の話をよく聞くようになってきたし、そろそろやらねばさすがにヤバイと、 ようやく重い腰をあげた次第だ。 方法としては、とりあえず、RAID1でミラーリングし、HDD自体の耐障害性のみを高めるということにした。[1] 今までの環境 今までは Mac mini に USB HDD を接続して、それを共有することで NAS 代わりにしていた。 これはだいぶお手軽で、OS X はソフトウェアR

  • TwilioのRedisによる決済サービスの障害、2つの原因 - unknownplace.org

    Twilio というサービスで決済サービスの障害があったらしいが、恐しいことにこのサービス、 決済情報をRedisで管理していたらしい、というのをRedis作者、antirez氏のblogで知った。 Twilio incident and Redis - Antirez weblog この件に関しては、Twilio自体も 調査報告 を出している。簡単にまとめるとこういう感じだ: TwilioではRedisを single-master, multi-slave なレプリケーション環境で使用している ネットワーク障害で一時的に master-slave 間の接続が切れたことにより、master-slave間のデータの再同期が発生 この再同期がすべてのslaveに対して同時に発生したため、masterの負荷が高くなり、結果決済サービスの障害が発生 この負荷を解決するためmasterを再起動する

    tknzk
    tknzk 2013/07/25
  • plenv が良い感じ - unknownplace.org

    perlbrew 使ってたんだけど、tokuhirom がつくってる plenv にスイッチした。 perlbrew よりシンプルでなにやってるかわかるのがなにより。 というか perlbrew がよく分からなすぎるという話もある。 plenv だとさらに .perl-version というファイルに perl のバージョンをいれておくと、そのディレクトリ以下では自動的にそのバージョンの perl が使われるという機能があって、これがだいぶはかどる。 perlbrew で入れた各種 perl は -g つけわすれて SEGV したときこまってて別途 --as=5.14.2-debug みたいのをつくってたけど、 その経験を生かして今度は最初から $ plenv install 5.14.2 -D=DEBUGGING=-g な感じで全部入れるようにした。ちなみにこの install オプショ

  • Redis布教活動報告 ISUCON 編 - unknownplace.org

    最近 Test::RedisServer とかもろもろつくっててばれてるかもしれませんが、だいぶ Redis 期にありまして、最近の趣味は?っていう問いにはだいたいRedisのソースを読むことですってなくらいなのですが、 memcached とかシンプルな KVS と比べるとだいぶ機能が豊富なので使い方を迷ったりとかそういう事例もあり、周りにもう少し使える人を増やさなければ僕の書いたコードが属人化しててつらい感じになるなーっていうわけで、 布教活動をおこなっておりまして、その一環として ISUCON2 に参加してきましたのでその報告です。 livedoor Techブログ : #isucon2 リアルタイムフォトレポート 更新終了 前回の優勝チームに混ぜてもらった感じでだいぶついてる感じもしますが、見事連覇を果たせ、懇親会でも redis redis と連呼してきたのでだいぶ興味持った方も

  • unknownplace.org

    VLCってたしかYouTube動画の再生に対応してたよなーと思いだして試してみたけど、 現在の最新バージョンの2.0.5でも今のYouTubeの仕様に対応できてないのか、YouTube動画の URL を開こうとしてもエラーになってしまう。 ためしにナイトリービルドでためしてみたらOKだった。 けど、ナイトリービルドを常用するのも嫌だ。しかし、このYouTubeのハンドリングはどうもluaの拡張でやっているだけみたいなので、 その拡張ファイルだけバックポートするだけでいけそうだということで、やってみたらちゃんと動いた。 具体的には、 VLC.app/Contents/MacOS/share/lua/playlist/youtube.luacVLC.app/Contents/MacOS/share/lua/playlist/youtube_homepage.luac の2ファイルを上書きしてあ

  • Githubの各種イベント通知をPubSubHubbubで受け取るの巻 - unknownplace.org

    tl;dr - 通常のHookではなくPubSubHubbubのほうのHookを使えばGithubのすべてのイベントをひとつのWebHookで受け取ることができる。 Github の WebHook ではレポジトリの更新しか受け取れず、issue とかも受け取れたら便利なのになーと思いつつ API ドキュメントを見てみると Hook を API から登録したりすることができるようになっていた。 だがこれは所詮は Web から登録できる Hook をいじるもので、このリストにあるものしか登録できない。 また、それぞれの Hook について登録できるイベントはリストで定義されている物に制限されているようで、たとえば WebHook だと push イベントしか設定することはできないみたい。(API 経由でも設定できなかった) 一方、それとは別に用意されている PubSubHubbub の Ho

    tknzk
    tknzk 2012/08/08
  • local::lib を切り替える - unknownplace.org

    レガシーなアプリをメンテするのにレガシーな Perl モジュールが必要になることがあり、そのために古いアプリ用には専用の local::lib ディレクトリを切っているわけですが、普段から日常的に local::lib を使用しているため shell が上がったタイミングではデフォルトの local::lib 環境変数がセットされていて切り替えが非常に面倒だった。 これまではそれほど頻繁に使用しなかったので放置していたのだが、ここのところ頻繁に必要になるためいい加減うざくなってきて簡単に local::lib を切り替えられるよう設定をしてみた。 zsh に次のような関数をつくり、それで local::lib を切り替えるようにする。 function locallib () { INSTALL_BASE=$1 if [ -d $INSTALL_BASE ]; then eval $(~/

    tknzk
    tknzk 2012/01/12
  • nginx で lighttpd のようにユーザーをトラッキングする方法 - unknownplace.org

    lighttpd では mod_fastcgi や mod_proxy 経由でアプリケーションが、 X-Lighttpd-Hogehoge: foobar のような X-Lighttpd- ではじまるヘッダーを返してもそれをクライアントに送り返さないという仕組みがあり、 たとえばそれを利用してアプリからユーザーIDを返してあげたりすると、それをクライアントに送ることなく lighttpd のアクセスログにだけ記録する、といったようなことが出来て便利なのですが、 同じようなことを nginx でやりたかったのでしらべてみた。 アプリから X-MyApp-User: foobar みたいなのを返してそれをクライアントに送ることなくアクセスログに記録したい場合、まずクライアントに送らないように、 proxy_hide_header X-MyApp-User; とし、さらに accesslog

    tknzk
    tknzk 2011/11/08
  • Lion インストール雑感 - unknownplace.org

    DVD 作ってクリーンインストールし、数日間使用しております。 クリーンインストールしてもリカバリ領域はできる罠: /dev/disk0 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *121.3 GB disk0 1: EFI 209.7 MB disk0s1 2: Apple_HFS Macintosh HD 120.5 GB disk0s2 3: Apple_Boot Recovery HD 650.0 MB disk0s3 ソフトウェアは必要なものだけTime Machineから復元インストールって感じでやっていて、全部試せてませんが、 いまのところ使用ソフトウェアでそのまま動かなかったものは MacFUSE のみ。これは Macbook Air も 64bit カーネルで起動するようになったため。 64bit対応の情報

  • GrowlのON/OFFをホットキーでできるようにする - unknownplace.org

    人に画面見せてるときなどに、恥ずかしい通知がくるとこまるのでホットキーで Growl 通知の ON/OFF を切り替えたいと思ったのだが、なぜかググっても見つからないので、ごにょごにょしてみた。 tell application "System Events" set isRunning to (count of (every process whose name is "GrowlHelperApp")) > 0 end tell if isRunning then tell application "GrowlHelperApp" to quit else tell application "GrowlHelperApp" to launch tell application "GrowlHelperApp" set the allNotificationsList to {"Grow

    tknzk
    tknzk 2011/03/21
  • iPhoneバックグラウンドでのソケット監視のサンプル - unknownplace.org

    iOS4 からアプリケーションのバックグラウンド動作がサポートされているが、それらはだいぶ制限されたものとなっていて、通常のアプリケーションはバックグラウンドでは最大10分程度しか生存することが出来ない。 それを回避するために Info.plist に特殊なフラグをたてることで例外的に制限を解除することができるようになっている。そのフラグの種類は audiolocationvoip であり、それぞれバックグラウンド音声再生、バックグラウンド位置情報取得、バックグラウンドでのソケット監視(voipの着信監視用)に対応している。 そのうち voip だけ今まで扱ったことがなかったので挙動確認のためやってみた、というのが今回のお話。 まず書いてみたコード: https://github.com/typester/voip-socket-test ソケットのハンドリングに libev を使っている

    tknzk
    tknzk 2011/01/28
  • MacBook Air セットアップメモ - unknownplace.org

    11インチのやつ、買いましたよ。よくあるセットアップメモを残す。 SSDの容量が心許ないので、バックアップからの復元はしないで新規で設定した。 OS 再インストール まずやっぱ最初はこれ。目的は大文字小文字を区別するファイルシステムでパーティションを切りなおすということのみ。 デフォルトのファイルシステムではWindowsなどとおなじように大文字小文字を区別しない。そういう環境ではたとえば #include <STDIO.h> とか言うコードも通ってしまう。そういう気がつかないうちに仕込まれる各種トラブルの種は気持ち悪いよね。 注意点としてはAdobe製のソフトはそういうトラブルの種を抱えたコーディングをされているらしいものが多いようで、このファイルシステムにすると動作しないものが結構あるらしい。たとえばPhotoshopは最新版でもうごかないみたい。 (Lightroomは大丈夫) ソフ

    tknzk
    tknzk 2011/01/13
  • VAIO P に ubuntu 10.4 入れたときのメモ - unknownplace.org

    だいぶん前の話になりますが、重たい Macbook を常に持ち歩くのに嫌気がさし、外出用PCとして VAIO P を購入しました。 ただ Windows をつかうつもりは全くなかったので、とどいてすぐ ubuntu をインストールしました。 リカバリディスクの作成 最近の PC はリカバリディスクがないかわりに、HDD 内にリカバリ領域をもつ。 この領域もフルで使いたかったのでまずリカバリディスクを作成しリカバリ領域が消えても問題ないようにする。 手順はマニュアルを参照してやるとすぐできた。 なんとこれにDVD-Rが二枚必要だった。 ubuntu インストール 10.4 の NetBook エディションを選択。(当時は 10.10 がまだ出ていなかった) インストールはイメージを DVD に焼いて DVD ブートし、通常インストール。 まず DVD ブートの方法がわからず苦労する。 起動時

  • GNU screen の裏にいる Window で完了したコマンドを Growl 通知したい - unknownplace.org

    というようなことをつぶやいていたら、 Twitter / hchbaw: @typester 最近になって screen -Q windows とできるようになってますね。 と教えていただいた。 -Q コマンドというのは -X と同じようなものだけど、コマンド結果を screen 内のステータス領域ではなく標準出力で得ることができる。また、-X はつねに実行時にそれ自体がアクティブな screen セッションになるのに対し -Q はアクティブなセッションにクエリを投げる感じで、セッションが切り替わらない。(この辺は理解が怪しいので突っ込み歓迎) それでそれを使うと screen -Q windows と実行することで :windows で echo されるのとおなじ文字列を標準出力で得ることができる。その出力をパースすれば、自分が screen の裏にいるかどうか判断することができるという

  • Snow Leopard の Perl とアーキテクチャ - unknownplace.org

    Snow Leopard には二つの Perl がインストールされている /usr/bin/perl5.10.0/usr/bin/perl5.8.9 デフォルトの /usr/bin/perl は 5.10.0 のほう。それぞれユニバーサルバイナリになっていて、 $ file /usr/bin/perl5.10.0 /usr/bin/perl5.10.0: Mach-O universal binary with 3 architectures /usr/bin/perl5.10.0 (for architecture x86_64): Mach-O 64-bit executable x86_64 /usr/bin/perl5.10.0 (for architecture i386): Mach-O executable i386 /usr/bin/perl5.10.0 (for arch

    tknzk
    tknzk 2010/01/10