タグ

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

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

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

    clavier
    clavier 2021/02/19
  • Google Driveを使う

    howmメモ、orgファイル、skkの個人辞書などをいままではDropboxにいれてsyncしていたが、Google Driveに変更した。 syncツールには grive2 というのを採用。Arch Linuxだとaurにあるので、 yay -S grive-git でokだった。[1] 全部syncしてほしくはないので ~/drive/.griveignore として以下のようなファイルを作る: * !howm !org !skk それを作ったあとで、 cd ~/drive grive -a とすると、OAuth認証のプロセスになって、それが通ると初回同期が走る。認証だけじゃなくて、ファイルもおとしてきてしまうので、ignoreファイルを最初に作っておかないと悲しいことになる(なった…w) あとはこれを自動で動かすために、 systemctl --user enable grive-t

  • 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

  • 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

    clavier
    clavier 2015/06/17
    Dockerを使ったGolang開発環境 - unknownplace.org
  • GoでCocoa APIを使う、もしくは他のイベントループをGoに混ぜる方法 - unknownplace.org

    Gocgo という機能を使うと、GoからCの世界のコードを呼んだり、呼ばれたりすることができる。 Perlで言うところのXSというやつだ。 このcgoを使ったGoプログラムは、昔はMakefileを利用してビルドしていたそうだが、 1.0からは go get や go build と言った、go toolがcgoに対応したのでそういうことも必要なくなっている。 cgoの基的な使い方 まずは import "C" として、Cという疑似パッケージをimportする。 このパッケージを使うと、 C.fprintf(...) というような感じでCの世界にアクセスできるようになる。 また、このimport文の直前のコメントはCのコードとして解釈される。 なので、 package main /* #include <stdio.h> void hello() { fprintf(stderr,

  • 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-

  • 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を再起動する

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

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

  • Cocoa::BatteryInfo has been released! - unknownplace.org

    日二回ほどバッテリー切れで黒い画面をみて、「システムのバッテリー残量警告でるのはやすぎなんだよなーもっとぎりぎりの残量通知が欲しいよなー」、とか思いつつバッテリー周りのAPIドキュメントを眺めていたら気がついたらCPANモジュールができていた…。 Cocoa::BatteryInfo - Getting battery informations on your Mac - metacpan.org 単純なバッテリー情報の取得の他にも、 Cocoa::EventLoop との合わせ技で OS からのバッテリー関連通知を受け取るという機能もあるので残量監視スクリプトなど作るのに最適です。 というとネタモジュールな感じだけど、ノートブックのインターナルバッテリー以外にも OS X Server に接続している UPS の情報などもとれたりしますのでわりとそっち系では実用モジュールなのではないか

  • Objective-C スレッドと libuv スレッドとのやりとり - unknownplace.org

    libuv 専用スレッドと通常の Objective-C スレッドとのやりとりの仕方、ついでに書いておく。 tl;dr - libuv スレッドから Objective-C スレッドに対して何か送るときは Objective-C の作法がそのまま使える。逆は uv_async を使う libuv スレッドから Objective-C スレッド これは Objective-C の世界の作法がそのまま使える。 iOS4+ と OSX 10.6+ であれば GCD で、 dispatch_async(dispatch_get_main_queue(), ^{ // ここはメインスレッド }); のようなのを書くだけでメインスレッドの動作を定義できるから、そこでメソッド呼ぶなり Notification を発行するなりすれば良いので楽ちん。 それ以下の環境だったら performSelector:

  • libuv (libev) と Objective-C autorelease のはまりポイント - unknownplace.org

    iOS や Mac アプリで HTTP 以外のネットワーク機能をつけたいといった場合に、libuv や libev を組み込んで使うというのを割とよくする。方法としては以下のような感じでその機能用のスレッドをつくる: -(void)run { NSThread* thread = [[NSThread alloc] initWithTarget:self selector:@selector(loop) object:nil]; self.thread = thread; [thread release]; [thread start]; } スレッドの中身は大体こんな感じ: -(void)loop { NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; uv_loop_t* loop = uv_loop_new(); /

  • libuv を iOS 対応した件 - unknownplace.org

    だいぶ前から iPhone アプリ作成でネットワーク系の機能を作るときには libev を愛用してるのだが、今日 node をいじっていたら libuv がなかなかよさそうに感じた。 libuv は libev が Windows で動かないからっていう理由で始まったプロジェクトだとおもうけど、Linux などの環境においても libev をラップしつつ、より便利な機能が追加されていていわば C でネットワークプログラミングするためのフレームワークといえるくらいになってる、みたい。(まだ詳しく見たわけじゃないけど) libev は基的に io 監視と timer のみで、socket の生成などは基的に自分で syscall 呼んでつくる必要があるけど、libuv は uv_tcp_* とか uv_udp_* といったAPI郡をもってて便利そう。 あと、非同期 DNS ルックアップがサ

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

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

  • 2006/04/02 - memo - unknownplace.org

    miyagawa さんの emacs さばきをみていてなんかバッファの切り替えが違うぞと思って聞いたところ、iswitchb とかいうのを使ってると教えてもらった。 emacs21なら (iswitchb-default-keybindings) 22 なら (iswitchb-mode 1) で C-x b がインクリメンタルに。やべぇぇえぇ。ありえないほど便利。 perldoc ブラウザをつくっていたけどめんどくて飽きたので、YAPC 終わったら使い方まとめるとかいってた Plagger::Plugin::Store::DBIC に取り組む。 そのうち Plagger 体もDB対応するということらしいのでそれまでの野良プラギン。とりあえず僕のレポジトリにUP。 使い方は sql ディレクトリにはいってる plagger.sqlite.sql から $ sqlite3 plagger.

  • 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ファイルを上書きしてあ

    clavier
    clavier 2006/03/02
  • 1