サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
おみそ汁
monmon.hateblo.jp
Mackerelサーバ監視入門 を読みまして、そしたらその中に Google Analytics のデータを Mackerel に送るやつがありまして、そういえばそれ欲しいやつだってなりました。 blog.a-know.me ただ、 heroku の管理あんまりしたくなくて AWS にしようかと思ったけども軽くやりたいからそこまででもなくて、じゃあ Google Apps Script でやれるんじゃないかと思い上記の記事を参考にしながらちょこちょこやりました。丁寧に書かれてたので特にハマりどころもなく。ありがたい。 で、はじめは google-api-nodejs-client の google.auth.JWT 使って書いたのだけども、 Browserify 使ってまとめてみたらファイルサイズでかすぎちゃって gapps upload でエラーになってしまったのでもういいやってなってサ
https かどうかをサーバ側で判断したいんだけど、ELB 経由で nginx に繋いでいるか、直接 nginx に繋いでいるかで値が変わってくるのでどうしようかなと思って調べた。 ELB 経由の場合は ELB で https を受け取って、後ろに http で投げてくる。 $scheme = http, $http_x_forwarded_proto = https な状態。 直接 nginx に繋いでいる場合は $scheme = https, $http_x_forwarded_proto = '' な状態。 ということで、 server ブロックの外で map $http_x_forwarded_proto $my_forwarded_proto { default $http_x_forwarded_proto; '' $scheme; }と書いて、「default で $htt
#yapcasia みなさま長い時間大変おつかれさまでした!!!事故のないよう気をつけて帰ってそして家に着いたらブログ書いてください!!!よろしくお願いします!!!— monmon (@lesamoureuses) 2015, 8月 22 ということでブログ書いて一旦区切りを付けようと思います。 思い返すと2009年に初めてYAPCを知り一般参加者として参加、2010年からボランティアスタッフ、2013年からはコアスタッフ、今年はまたボランティアスタッフ、ということで僕の YAPC::Asia Tokyo はほぼ全てスタッフでの参加となりました。 今回の参加のきっかけ (内容見えないように荒い画像になってますがKPTの様子) 2014年9月終わりに2014年コアスタッフ + 次回あるならやりたいとを手を挙げていたメンバーでKPTのために集まり、そこで yusukebe さんは次回できない、
奥さんが使ってるiPhone 5がバッテリー50%とかでもクルクルしだして電源切れる時があり、外出中にそういうのになるのも辛いだろうなぁと思ってどうしようか考えてました。 バッテリー交換対象でもなく、僕のお古なのでもう2年経ってるからAppleには持って行けず、iPhone 5持ってるけどあんまり使ってない人に「交換 + いくらか払う」でどうにかならないかと思っていたところ、自分でバッテリー交換が4,000円程度なので試してみることにしました。 基本、購入ページに動画があるのでその通りにやれば良い(が、他の動画を見とけば良かったと思う所があった)。 手順自体は簡単。 1. こんなセットが到着する 2. 星形ドライバーでホームボタンの下にあるネジを取る 3. 吸盤を使って引っこ抜く(ここの力加減が結構むずくて、位置が悪いと吸盤取れるし、がんばったらガラスだけちょっと出てきてガラスだけ取れそう
ログファイルに欠損があって「新しいファイルにだけある行を表示したいなぁ」というよくある要望がでまして。 今までは diff old new | perl -nle 's/> // and print $_' みたいなことして表示してたんだけど「きっともっと楽な方法あるよね」と思いman diffしてみることに。 (comm使えばできるけどsortしなくちゃなのでやめました) んで、new-line-formatというのを見つけたのだけど、これをやっても「新しい行全て」が表示されてしまい「あれれー!」となる。 --new-line-format=FORMAT if-then-else 形式で、 2 番目のファイルだけにある行の出力に FORMAT を用いる。 最後の方まで読むと例が書いてあって"unchanged-line-formatも一緒に使えば良い"ということがわかりました。 --un
まとめ Jekyll で GitHub Pages 作ったままほったらかしてたので久しぶりに触ろうと思った 「今更 Jekyll でやるのも何かなぁ」 Middleman なら Travis CI 使って更新作業できることを知る Middleman の config.rb 書いてたら面倒になった Gotanda.pm が開催されるとのこと 「せっかくだから Riji と Travis CI で GitHub Pages 作って LT で発表しよう」 スピーカー枠埋まってたのでブログに書いた やりたいこと 「 markdown で記事を書く」「 commit する」「 GitHub に push する」で blog が更新できるようになること 具体的な手順 GitHub Pages を作る 今回は monmon.github.io に作ることにした(ユーザページと呼ばれるやつで [https
この記事はVOYAGE GROUP エンジニアブログ : Advent Calendar 2013の14日目の記事になります。 ちょっとハマってて気が付いたら日付が変わってました。 さて、去年のAdvent Calendarは社内図書館のOASISの本の整理の話を書いたので、「今年も会社の話で何かないかなぁ」とネタを探してました。 会議室の名前と場所が覚えられない はじめに会議室の地図の写真を載せましたが弊社、会議室の名前がオシャレ過ぎて覚えられません。 どのくらい覚えにくいのかを理解できるようにいくつか紹介します。 まず、いつも #ajiting で飲んでるAJITOは大丈夫。デカいし入口だし覚えやすいです。 畳があるジパング。ふむ、これはまだ覚えやすい。 段ボール素材のアトランティス。こっからもうキツいですね。これはもう「段ボール部屋」と呼んじゃってます。 レムリア。「糸がたくさんの部
anyenvを使っているんですが、 /usr/local/heroku/bin /Users/monmon/.anyenv/envs/rbenv/bin /Users/monmon/.anyenv/envs/plenv/bin /Users/monmon/.anyenv/envs/rbenv/shims /Users/monmon/.anyenv/envs/plenv/shims /Users/monmon/.anyenv/bin /Users/monmon/local/bin /Users/monmon/bin /usr/local/sbin /usr/local/bin /usr/bin /usr/bin /bin /usr/sbin /sbin /usr/local/bin のようなPATHがtmuxを起動すると /usr/local/heroku/bin /Users/monmon
こんにちはmonmonです。 みんなが大好きグループチャットのIdobata。 JenkinsのHookが使えたりして便利ですが、cronとかでも失敗した時の や成功した時の を出したいなって思ったりしますよね。 ということでGeneric Hookを使って出しましょう。 まず失敗。 <span class="label label-important">FAILURE</span> こんな感じでlabelとlabel-importantのclassを指定したHTMLをidobataさんに飛ばすだけです。 次に成功。 <span class="label label-success">SUCCESS</span> こんな感じで今度はlabel-successのclassを指定すれば良いです。 ということで、 って感じや って感じの通知をidobataさんに出すことができます。 簡単ですね!
今年のYAPC::Asia Tokyoにはコアスタッフとして参加しました。 開催期間中はメインホール担当だったのだけど、前夜祭の準備からバタバタしてしまったのと色んな不安やら心配やらで、YAPC全体把握する余裕が全くなかったです。これはスタッフ4回目で初めてのことだったので「もっとやりようあったんだろうなぁ、力不足だったなぁ」と感じてます。 メインホール担当になった鈴木さん、松本さん、やこさん、加藤さんには色々と助けられました。そしてフォローがあまりできず申し訳なかったです。また、ねこかくさん、じごろうさんには上手く仕切ってもらえてJPA理事の安心感みたいなものを感じました。ありがとうございます。 なのでYAPC開催期間中の話はほぼできず、代わりにコアスタッフになってからYAPC始まるまでの流れを書いて今年のYAPCを終わりたいと思います。 1月。コアスタッフとして参加。 1/30の午後に
WWDCのアプリが設定画面にライセンスを置いていて「じゃあそうしよう」みたいな話になったので調べた。 Settings.bundleとRoot.plistを用意 まずはSettings.bundleってファイルを作れば良くって、その作り方はググるとすぐ出てくる。 具体的には「New File > Resource > Settings Bundle」でOK。 で、そのBundleのディレクトリの下に以下のような内容のRoot.plistを用意する <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <ke
追記 「文字列でsort済みの」って入れ忘れてた。 manに The comm utility reads file1 and file2, which should be sorted lexically,って書いてある通り、「sorted lexically」でないとダメ(「sort -n」ではなく「sort」でsortする) なので、 comm <(sort id_num.txt) <(sort id_even.txt) ってやるのが確実 追記終わり commコマンドの名前をすぐに忘れてしまい、ググっても「catしてuniq」とかそういうのしか出てこなくて「あのコマンド名なんだっけなー」ってなるのでメモ残す やりたいこと 2つのファイルがあり、どちらかのファイルにのみ存在する行と、その行がどちらのファイルに存在するかを出力したい 2つのファイルがあり、両方に存在する行を出力したい 実
GmailをPOPする時にメールのリストを上手く取得できずハマったのでメモメモ。 現象 Gmailからメールを取得するテストをしていたら、「一度取得したメールが取得できない」かつ「一度に250件ずつくらいしか取得できない」という状態が起こった 調査 ググったりしてみたところ、いくつか同じような話が出て来た。 どうやらGmail側で一度POPしたものを既読扱いにするため再度取得できないようにしている様子。 PROGRAMMMMMMMING: php => pop + gmailPROGRAMMMMMMMING: php => pop + gmail (続) gmailの既読フラグについて。 popでbodyをfetchすると、内部的にフラグが立つ。 headerをfetchしただけでは既読にならない。 で、disconnect したタイミングでサーバー側にフラグの設定が反映されるようだ。 い
MTを使ってて、「あるフォルダ配下のページ一覧を取得」って場面があり、 そのためにMTPagesのfolderモディファイアを使うのだけど、 このfolderモディファイア、値に指定できるのはMTFolderLabel。 はじめMTFolderBasenameで指定できるのかと思ってハマった。 英語ドキュメントの方にはちゃんと書いてあるんですよね。 Use folder label (not folder basename) as the value. そもそもフォルダのpathが変わることはあまりない(URLとして使われるから)けど、 folderlabel(フォルダ編集の名前の部分)って適当にいじりやすいから、 それをfolderモディファイアに指定してしまうと、 「フォルダの名前を編集」→「一緒にMTPagesのfolderモディファイアの部分も修正」みたいな作業が毎回発生してしまい
Rubyで書かれたコードにbugがあって調べることになり、初めて知りました。 Ruby % ruby -e 'h = {1 => true, "1" => false}; p h' {1=>true, "1"=>false} Perl % perl -MData::Dumper -e '$h = {1 => true, "1" => false}; warn Dumper $h' $VAR1 = { '1' => 'false' }; PHP % php -r '$h = array(1 => true, "1" => false); var_dump($h);' array(1) { [1]=> bool(false) } 追記 @lesamoureuses @chisei :-)メンション消してしもたので リファレンスへのポインタを再度かいときますURLの要約部分"キーには任意の種類の
こんにちはこんにちは、VOYAGE GROUPエンジニアblog Advent Calendar 17日めを担当するmonmonといいます! どんなネタにしようか土曜日まで迷ったあげく、せっかくの会社のAdvent Calendarなので会社に関係する話にしました! どんな話をするの? 会社の1FにOASISという図書室がありまして、その本の整理をしたいなぁと思いました(あくまで今回のネタ用なので実際はやらないです)。 なので、今回はその話をしようと思います。 ちなみに上の展開写真がOASISね。 何でこの話にしたの? 理由は3つありまして、 前職の先輩からバーコードリーダーをもらったが使う機会なくて物置に眠らせてた PerlのジョブキューシステムであるQudoを使ってみたかった うちの会社の@TonnyXuが昔SQLiteのFTS(全文検索)について話してくれたことを思い出した という感
こんにちは!こんにちは!monmonといいます! 2009年に初めて参加して、一昨年、去年に引き続き今年もスタッフとして参加させてもらいました。 3年続けてスタッフ参加だったためメインホールのリーダー担当を任されたんですが、今回は初めての場所ということもあって失敗しないか心配で仕方なかったです。 と、失敗してない風なこと言いましたが、2日目におもいきりやらかしました。 「一番長いのが40分と思い込んでた」+「東大の学食に行ったら長蛇の列で帰って来たのが始まる5分前だった」の結果、 Perl 今昔物語のときに勘違いして10分前カンペ出してしまい、馮さんが941さんに「あれ?60分でしたよね?」と聞かなくてはいけないはめに。 モデレータが何分枠しらないとかまじひどいわw #yapcasia 2012-09-29 13:33:44 via Echofon すみません、僕のカンペのせいですみません
何か変なqueryをMySQLに投げてしまって 2012-05-26 18:23:21 Error: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`test`.`user_logs`, CONSTRAINT `user_logs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)) みたいな感じでPDOExceptionが発生した場合に、どんなSQLを実行したのかがわからなくて困ったので調べた。 debugモードであればqueriesLogに保存されてそれを覗けばわかるのだけど、本番だとqueriesLogには保存されないのでそれだと
これ、できないもんだと思って調べてもいなかった。 ORDER BY FIELD(カラム名, INのリスト...)でいけるのね。便利だー。 http://lists.mysql.com/mysql/209784 SELECT id, start_date FROM iddt WHERE id IN ('109k7','s3x6','sxmns','wt57') ORDER BY FIELD(id,'109k7','s3x6','sxmns','wt57')
where句のINの並び順で結果をsortしたいときはORDER BY FIELDを使うの続き findのorderの所で <?php array('order' => array('FIELD(Country.id, 4, 1, 5, 3, 6, 2)')) と書けばいい。 参照 http://cakebaker.42dh.com/2008/06/10/order-by-field/ Ok, let’s do some examples to learn more about it. We will use the following countries table: [1] => USA [2] => Germany [3] => Russia [4] => Austria [5] => China [6] => Switzerland Now, we don’t want to so
やろうやろうと思いつつ、1年くらいずっとやってなかったので会社のサーバの設定をするタイミングで試しに手を付けた。 # 設定ファイルとかはコピペが多いので管理するほどでもなかったのだけども 流れ 1. まずはdotfilesディレクトリを作ってそこにdotfilesなファイルたちを放り込む [9:16]% cd ~ [~] [9:16]% mkdir dotfiles [~] [9:16]% mv .zshrc dotfiles/. [~] [9:16]% mv .vimrc dotfiles/. [~] 2. そのあとにそれらにシンボリックリンクを張るようなシェルスクリプトを書く # .gitが入らないようしたいのでgrep -v 'dotfiles/.git$'を忘れない [9:39]% cat ./dotfiles/setup.sh [~] #!/bin/bash for file i
CakePHP DocumentのBehaviorsの項にも書いてありますが、「ある時はこういう処理をして欲しいけど、違う時は別の処理をして欲しい」みたいな話。 やりたいこと あるModelがあって、今はAという処理だけあれば良いのだけど、今後BやCという処理も増やしたい 例えば「自動販売機」というModelがあって、今は「缶を売る」という処理だけだけど、今後「ビンを売る」「ペットボトルを売る」という処理も増やしたい こんな時はデザインパターンのStrategy パターンが使えそうなのだけど、CakePHPでやる時にはBehaviorを使えば似たようなことできるのかな?と思って調べて試してみた。 CakePHPのドキュメントを確認 Behaviorsのドキュメントを読むと、 However, we may need to “detach” behaviors from our models
DBの負荷分散用に「更新はMaster」、「参照は複数のSlaveたちへ」的なことをCakePHP2.0でやろうと思ったのですが、 ハマってしまったのでメモを残します。 やりたいこと 更新はMasterへ、参照は複数のSlaveへ ただし、ざっくりでいい。参照のいくつかがSlaveへ行けばいい。 それを踏まえての実装(失敗) まず、 Slaveに向けておいて、saveのタイミングでMasterへ向ける というのは切り替わりに問題があった時にSlaveDBを更新してしまい不整合起きてしまって困る。 なので、 普段はMaster、findのタイミングでSlaveに向ける という方針を立てました。 そうすればもし問題があったとしてもMasterに参照しに行くだけなのでいいだろうと。 ということで考えた案はAppModelに public function beforeFind($queryDat
たまたまCakePHPのFilelLogエンジンのソースを見ていたら $options += array('path' => LOGS); という書き方があって「あれ、この書き方知らない」となったので確認した。 結果はタイトル通り、「keyがあれば何もしない、keyがないなら値を追加する」だった。 <?php $options = array(); $options += array('path' => 'LOGS'); var_dump($options); // array(1) { // ["path"]=> // string(4) "LOGS" // } $options = array('path' => null); $options += array('path' => 'LOGS'); var_dump($options); // array(1) { // ["path
CakePHP2.0でGmailを利用してメールを送ろうとして 「SwiftMailerってのが使えるのかぁ。それならそれ使おう」 とか思ったのですが、どうやらCakeEmailというのがあるようなのでそれを使うことにした # たぶんCakePHP1.3まではなかったんだよね?よく調べてないけど。 ついでにMac OS Xでメールを送る時の設定をしたことなかったのでそれもついでにした。 CakeEmailを使う CakeEmailはEmailComponentに代わって作られたライブラリのようです。 「EmailComponentはdeprecatedだからCakeEmail使ってね」って書いておる。 やることは2つ。 CakeEmailの設定(gmailを使うので) メール送信のコードを書く だけ。簡単ですね。 CakeEmailの設定(gmailを使うので) まず、Emailのconf
2011-11-09追記 app/webroot/test.phpのCAKE_CORE_INCLUDE_PATHを修正することを書いてなかったので追加 bakeのときにはappディレクトリを指定する必要があることを追加 ここから元記事 CakePHP as a Git submodule | Bravo Kernelの通りやればできる。 重要なのはapp/webroot/index.phpを修正してCAKE_CORE_INCLUDE_PATHのディレクトリを指定することくらい 前提 CakePHP2.0 Webサーバのdocrootは以下の通り ~/Sites/docroot/ ここに「git clone https://github.com/cakephp/cakephp.git」でcakephpを落としてきたイメージ。 なので、このディレクトリ配下にREADMEやappやlibやven
Objective-CでTDDってどうやるんだっけ?ってなったのでTwitterからPublic Timelineを取得するって流れを簡単にやってみた。 TwitterのAPI利用はTweetingを参考にした。 # ということでiOS5で。 前提 public timelineを取得するだけ 簡単なテストをしたいので Xcode4.2を使う TwitterやARCなどiOS5の機能を使うので public timelineを取得するためのインタフェースを考える TTTwitterというクラスにする sendPublicTimelineToDelegate:withSelector:というメソッドを使うとパラメータで渡したdelegateのselectorに結果のtimelineを渡してくれる 結果の形式はstatusとbodyというkeyをもつdictionary statusにはHTT
MacBookのドライブをスーパードライブに交換するでDVDドライブの交換が終わったので、元々の目的だったWindows7をVMware Fusionにインストールしました。 すごいね。サクサク動く。ビックリした。こんなにサクサク動くのね。 今までXP動かしてたのが8年前くらいのWindowsPCだったし、会社のPCもダメダメだったから感動してしまった。 Windows7自体が軽いとか、インストールしたてで何も入ってない状態だから軽いとかもあるかもしれないけどとにかく感動。 MacBook内で完結するとはいえ、IEの確認するために「どっこらっしょ」ってVM+Windows操作をするイメージでいたから嬉しいです。 で、それはいいとして、またDVDドライブが壊れた時でもWindows7を入れ直せるようにisoファイルを作っておきないなと思いまして。 どうやったらisoファイル作れるのかなぁとグ
追記 ajiyoshiさんの昔の記事がとてもわかりやすかったので参考に。 VOYAGE GROUP エンジニアブログ : あなたにも今日こそPerlの文字化けが理解できるたった一つの原則 元記事 記事タイトルはperlunifaqの「UTF8 フラグ」って何?からそのまま引用したもの。 昔は「UTF8フラグってよくわからない」ってなってたけど、この1文読むだけで「内部表現がたまたまUTF-8だったからUTF8フラグって言葉になったのか」とか、「そもそも内部表現が何かってことは気にする必要ないのか」って思えていい。 で、その辺の話を説明してくれている人がいたので引用。 Perl上級者コーナーPart01 503 :nobodyさん [↓] :2011/08/26(金) 02:37:40.52 ID:??? >>501 難しく考えすぎ。難しいと勘違いしているのなら、その原因はutf8(フラグ)
次のページ
このページを最初にブックマークしてみませんか?
『こんにちはこんにちはmonmonです!』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く