タグ

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

  • コーヒーを1ヶ月半ほど止めてみた

    若い頃からコーヒーが好きで、おそらく高校生(もしかしたら中学生かも)くらいから習慣的に飲んでいて、20代のころはそれこそ一日中コーヒーを飲んでいた。 僕と一緒に仕事をしたことがある人は、職場にコーヒー道具一式を持ち込んでいたから、どのくらいコーヒー狂いか知っているだろう😅 それでも、効果的な睡眠を模索していると午後のカフェイン摂取は厳禁、みたいな話があったり、そもそもカフェインのとりすぎはよくないという風潮なので、ここ5年ほどは朝一のコーヒー+仕事始めのコーヒーの2回だけ淹れる、という感じになっていた。 ただ、1回につき2杯分淹れ、奥さんが欲しいといったら半分あげる、みたいな感じなので、日によってかなり摂取量にバラつきがあった。全部一人で飲んだ日は4杯分、600ml以上摂取してることになる。[1] 特に健康に影響があるのは感じでいなかったのだけど、最近またいろんなところでカフェイン摂取を

  • 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

  • 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

  • clang-complete-asyncのcflagsを開いているファイルに応じてよしなに設定する - unknownplace.org

    Emacsで、C/C++/Objective-C とかを書く時、clangを使った補完 clang-complete-async を使っている。 いままではiOS用の設定決めうちで使っていたのだが、 たまにMacアプリを書くときにcflags切り替えがめんどくさい 外部ライブラリを使っているプロジェクトで、そのライブラリのヘッダがよまれない と言った不満があった。 ちょっと最近またMacアプリを書いていてよしなにやってくれるやつが欲しいな〜という熱がたかまったので作ってみた。 typester/clang-complete-helper 何をするやつ? 編集しているファイルから、xcodeプロジェクトを探して、その設定を読んでよしなにCFLAGSをセットしてくれるやつ。 なのでこれを使えば、xcodeのプロジェクトのファイルであればなにも考えなくてもclangによる補完が効くようになる。

    sugyan
    sugyan 2014/04/01
    “まだまだEmacsでがんばれる。”
  • 独立しました - unknownplace.org

    2013年8月末で面白法人カヤックを退職し、新しく会社を設立しました。 カヤックには約9年間お世話になり、とても多くのことを学ばせてもらいました。 とくにクリエーターとしての自分の考え方は、ほぼカヤックで養われたと言っても過言ではないでしょう。 そういう意味でカヤックは僕の第二の親のような存在であり、鎌倉方面には足を向けて寝られません。 当にありがとうございました。 カヤックは面白法人とか名乗っていますが、実は非常にまじめな集団です。 たとえば、経営理念についても、とても真摯に向かいあっています。 経営理念とはただの飾りではなく、まさに会社の存在意義であり、社員全員がそれを意識して仕事をしなければ意味がない。 そんなことから半年に一度、全社員で経営理念について考えるための全員社長合宿、というものをやっていたりします。 そんな環境で、自分も個人としての理念を磨いてきました。 昔のカヤックス

    sugyan
    sugyan 2013/10/02
    おくればせながら、おめでとうございます。
  • 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を再起動する

    sugyan
    sugyan 2013/07/25
  • org-modeとblosxomでのサイト構築、あるいはorg-modeのススメ - unknownplace.org

    個人的には文書書くのは markdown-mode + outline-minor-mode で満足していたし、org-mode に手を出す気はあまりしてなかったのだけど、 Emacs界隈の情報を見ているとやっぱり便利そうなので、バージョン8.0が出る頃に試しに使ってみた。 そうしたら思った以上に便利で、結局今では、日々のメモ、原稿執筆、タスク管理など、いろいろなことをorg-modeでやるようになってしまった。 最初、org-modeに手を出しにくかった(出したくなかった)大きな理由は、編集環境がほぼEmacsだけに限られてしまうということがあった。 しかしこれは org-mode を使ってみると、org-mode があまりに高機能なので、他の環境に移植するのがつらいからだ、ということが分かった。 org-modeで文章を書く org-modeにはいろいろな機能・使い方があり、詳しくはi

  • Emacsの設定を見直し、 el-get の distributed セットアップに統一 - unknownplace.org

    いままで秘伝のタレのような設定を使い続けていたのだが、どうもしばらく使っているとEmacsがCPUを非常にうようになってくる。 flymakeの設定かなー?とかほかにもいろいろ怪しげなところを削ってみたりしたがわからず、だましだまし使っていた。 そういう理由もあってEmacs設定をリセットしたいと思っていたので、Emacs実践入門や Advent Calendar を読んでいたら el-get というパッケージマネージャがなかなかよさそうだと思った。 これ、存在自体はまえから知っていたけど秘伝のタレベースな自分は使わないだろうなーとスルーしていた物だが、 ドキュメント(info)を読んでみると思った以上によさげだと言うことが分かった。 Mac 使ってる人にわかりやすくいうなら Emacs 用の homebrew という感じ。 なかでも 6.3 Distributed Setup で紹介さ

  • Any::Moose とか幻想やったんや - unknownplace.org

    Any::Moose は Moose と Mouse のラッパーで、バックエンドがどちらになるかは use Any::Moose した時点で Moose or Mouse がロードされているかによって変わる。 どこかで use Moose していたら use Any::Moose は use Moose としてうごくし、 そうじゃない場合は use Mouse としてうごく。 これはなんのためにあるかというと、MouseとMooseの両方のモジュールを混ぜて使うと壊れるからなんだけど、 そもそも混ぜて使って問題になるのは Mouse のクラスを Moose で extends したりとか、そういう Moose 周りの機能を相互に使おうとした場合だけであって、混ぜて使っていてもそれぞれのクラスを普通に使い合う分にはなんの問題もない。 また、昔はruntimeの速度にそこまで性能差はなかったと

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

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

    sugyan
    sugyan 2012/11/07
    たのしんでいただけてよかったです!
  • 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

  • OSX のコマンドラインから、wi-fi の情報をつかって位置情報を得る - unknownplace.org

    linux のコマンドラインから、wi-fi の情報をつかって位置情報を得る - tokuhirom's blog. を見て、面白そうだと思ったのでそのMac版。MacでコマンドラインからWiFiスポットをスキャンするのは、 /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -s でいけます。ってことで、 use strict; use warnings; use utf8; use 5.012; use JSON; use LWP::UserAgent; my @addresses = do { my @lines = split /\n/, qx{/System/Library/PrivateFrameworks/Apple80211.framework/Version

  • AnyEvent でバックエンドに EV を使う時の注意 - unknownplace.org

    AnyEvent を利用する際に注意する必要があることに、コールバック中で発生した例外の処理方法がバックエンドに任されている(=例外処理の方法がバックエンドによってちがう)、というのが挙げられる。 Impl::Perl では例外は単純に rethrow されるため、プログラム中で例外が発生したり die したりすると普通にプロセスは終了する。 しかし、Impl::EV の場合、デフォルトでは例外はキャッチされ標準エラーに出力されるものの、そのまま処理は続行されてしまう。 以下のような1秒タイマーをまわしてタイマーが発火したらアプリを終了する、というようなコードがあったとき、 use strict; use warnings; use AnyEvent; my $cv = AnyEvent->condvar; my $t; $t = AnyEvent->timer( after => 1,

  • flymakeのタイムアウト設定 - unknownplace.org

    flymakeで読んでいるシンタックスチェックコマンドが無限ループに陥って困り、@fujiwaraに相談したところ。daemontoolsについてくるsoftlimitコマンドでタイムアウトするようにするといいと教えてもらった fujiwara++ $ softlimit -t 1 perl -e 'while(1){}' zsh: cpu limit exceeded softlimit -t 1 perl -e 'while(1){}' 便利ですね。とりあえずperlのflymake設定を (defun flymake-perl-init () (let* ((temp-file (flymake-init-create-temp-buffer-copy 'flymake-create-temp-inplace)) (local-file (file-relative-name tem

    sugyan
    sugyan 2012/04/25
    softlimitを使ってコマンド実行のタイムアウト
  • tmux + irssi + canything で Anything 風チャンネル切り替えする - unknownplace.org

    irssi 環境を prgmr.com からさくら VPS に移行したついでに irssi のプラグインを見直していて、そのときに nicklist.pl というのをいれたわけですが、これがなかなか hackish な実装になっており(笑)、named pipe なファイルつくってそれを cat しておくと irssi がそこに nicklist を書き込むというような感じになってて、基的に GNU screen などの縦分割と一緒に使うように設計されている。 で、僕はリモートサーバー上の GNU screen 上で irssi を動かしているので、それをつかうために縦分割をためしてみたわけですが、window 分割したときにでる caption を GNU screen では消すことができず、ローカルで使っている screen の hardstatus の上に、リモート screen

  • Cocoa::Skype とか - unknownplace.org

    Cocoa:: なんちゃらでほしいものを聞いていたときにも挙がっていた Cocoa::Skype だけど、その昔Skype4COMを使った記憶があって、SkypeAPI のバインディング書くのはめんどそうな印象だったのだが、 今日 Skype.framework のヘッダファイルみたら、 #import <Cocoa/Cocoa.h> @protocol SkypeAPIDelegate; @interface SkypeAPI : NSObject { } + (BOOL)isSkypeRunning; + (BOOL)isSkypeAvailable; // You can only connect and send commands when this method returns YES. // For example, when Skype is running, but use

  • Objective-C で AUTOLOAD (あるいは method_missing ) - unknownplace.org

    forwardInvocation とかを使えば出来るみたい。 #import <Foundation/Foundation.h> @interface Foo : NSObject; -(void)call:(NSString*)sel; @end @implementation Foo -(void)call:(NSString*)sel { NSLog(@"call: %@", sel); } -(void)forwardInvocation:(NSInvocation *)invocation { [self call:NSStringFromSelector([invocation selector])]; } -(NSMethodSignature*)methodSignatureForSelector:(SEL)sel { NSMethodSignature* sig = [

  • libuv の Perl バインディング - unknownplace.org

    気分転換プロジェクトとして、libuvのPerlバインディングを書いている。 typester/p5-UV - GitHub 現状、timerとtcp周りを一通り実装したところ。 実装は愚直にlibuvの関数とperlの関数を1:1に(uv_tcp_init(...)をUV::tcp_init(...)というような形で)マッピングしている。 この実装はlow level APIと位置づけ、その上に使いやすい高レベルなインタフェースをPerl上で用意したいつもり。 このlow level APIをつかったTCP echo serverはこんな感じになる: use strict; use warnings; use UV; my $server = UV::tcp_init(); UV::tcp_bind($server, '0.0.0.0', 3000) && die 'bind error

  • ngx-queue.h - unknownplace.org

    libuv のソースを見ていたら、ngx_queue_* という API が出てきてびっくり。どうやら nginx から ngx-queue.h っていうリンクドリストの実装を持ってきているようだ。 include/uv-private/ngx-queue.h at master from joyent/libuv - GitHub なかなかおもしろい。これ、いろんなところで使えそうなので手元でも試してみた。 #include <stdio.h> #include <assert.h> #include <stdlib.h> #include <string.h> #include <stddef.h> #include "ngx-queue.h" typedef struct { ngx_queue_t queue; char* data; } chunk_t; chunk_t* chu

    sugyan
    sugyan 2011/11/15
  • 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