犬ターネット

Archive : 2014年08月

マレフィセント(吹替版)を観た

アンジェリーナジョリーやる気ないだろって思った。あとオーロラ役の子役も。

吹替はハズレだと思った。

アニメにしときゃいいのにって思った。

途中で30分くらい寝た。

塩とキャラメルのハーフ&ハーフポップコーンを買ったら美味かった。


うしおととら再読中

近所のTSUTAYAで「うしおととら」を4冊借りてきた。

連載中は結構読んでたけど高校進学したあたりで読むの辞めてしまったから実に20年ぶりくらいに再読。表現が少し幼稚だなと感じる部分はあるんだけどやっぱり面白い。一気に4冊読んでしまった。早く続き読みたい。


MongoDB を使ってユーザの訪問数をカウントする

$inc 構文と upsert 併用すれば簡単。

// 1回目は insert visit_count++
> db.user.update( {user_id: "mgng"}, { $set: { user_id: "mgng", updated: new Date() }, $inc: {visit_count: 1} }, { upsert: true } );
> db.user.find( { user_id: "mgng" }, { visit_count: true } );
{ "_id" : ObjectId("53ffd435c7d54aab343e385a"), "visit_count" : 1 }

// 2回目は update で visit_count++
> db.user.update( {user_id: "mgng"}, { $set: { user_id: "mgng", updated: new Date() }, $inc: {visit_count: 1} }, { upsert: true } );
> db.user.find( { user_id: "mgng" }, { visit_count: true } );
{ "_id" : ObjectId("53ffd435c7d54aab343e385a"), "visit_count" : 2 }

最初は $setOnInsert 使って律儀に初期値をいれようとしてたんだけど、エラーが発生してダメだった。

> db.user.update( {user_id: "mgng"}, { $setOnInsert: { user_id: "mgng", visit_count: 1 }, $set: { updated: new Date() }, $inc: {visit_count: 1} }, { upsert: true } );
WriteResult({
  "nMatched" : 0,
  "nUpserted" : 0,
  "nModified" : 0,
  "writeError" : {
    "code" : 16836,
    "errmsg" : "Cannot update 'visit_count' and 'visit_count' at the same time"
  }
})

超映画批評で10点未満がついた作品一覧


銀のエンゼル出た

毎日1チョコボールを買い続けて1ヵ月くらい経って、やっと、やっと、銀のエンゼルが出た!

年末くらいにはおもちゃのカンヅメをゲットしている予定。


NetBeans のいいところについて

ここ1,2年、PHP + javascript な開発には NetBeans を使っているんだけど、結構使いやすいからいいところをメモっておく。

標準でGit使える

Git使わずとも、保存する度にローカルに全部履歴を残してくれるからすぐ前のバージョンに戻せる。何日分残すかは設定変更できる。

ヒントのおかげでいい感じのコーディングができる

ヒント機能は他のIDEにもあると思うけどやっぱりこれがないと始まらない。

例えば、未使用メソッドがあるよ、行数長いよ、スーパーグローバル変数触るなよ、比較が曖昧だよ、など教えてくれるからいい感じのコードを書かざるを得ない。

HTML の id や class も補完してくれるから、css や javascript 書くときも楽。

jQuery のメソッドも補完してくれてうれしい。

他には Sass/LESS 対応してたり、PHPUnit/PHPDoc を一発で実行できたり、フツーに日本語対応してたりとか。

Eclipse も使ってるけど、PHP + javascript な開発に限って言えば NetBeans のほうがクセが少ないし軽量で使いやすい。と思う。


真夜中のギター

通勤時間中にGarageBandでシコシコ打ち込んでたネタをギターで拾ってたんだけど、自分で打ち込んだくせに全然弾けないし、なんとかギター起こししたはいいけど全然かっこよくない。かと思えば手癖にまかせて30秒くらいでピロピロ弾いたリフのほうが断然かっこよかったりする。あーあと夜中にカッティングするとチャカチャカ音うるさいって言われるからなかなかすすまない。ぬーん。

今日も一個リフ作ってから寝よう。


IE で XMLHttpRequest なリクエスト送ると location.hash も含んだリファラが送信される

ブラウザってハッシュ部を除去したリファラを送信すると思っていたんだけど、IE の場合、XMLHttpRequest なリクエスト送るとハッシュ部も含んだリファラが送信される。

適当なhtml 作って、Firefox / Chrome / IE 使ってアクセスしてサーバログ確認した(一部割愛)。IE のリファラに #test1 が記録されている。

【Firefox 31.0】
[27/Aug/2014:01:57:42 -0400] "GET /misc/1.html HTTP/1.1" 200 418 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0"
[27/Aug/2014:01:57:47 -0400] "GET /misc/2.html?1409119069542 HTTP/1.1" 200 28 "http://app-mgng.rhcloud.com/misc/1.html" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0"
[27/Aug/2014:01:57:50 -0400] "POST /misc/2.html?1409119072054 HTTP/1.1" 200 28 "http://app-mgng.rhcloud.com/misc/1.html" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0"
【Chrome 37.0】
[27/Aug/2014:01:58:28 -0400] "GET /misc/1.html HTTP/1.1" 200 418 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36"
[27/Aug/2014:01:58:35 -0400] "GET /misc/2.html?1409119117129 HTTP/1.1" 200 28 "http://app-mgng.rhcloud.com/misc/1.html" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36"
[27/Aug/2014:01:58:37 -0400] "POST /misc/2.html?1409119119512 HTTP/1.1" 200 28 "http://app-mgng.rhcloud.com/misc/1.html" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36"
【IE 10】
[27/Aug/2014:01:59:05 -0400] "GET /misc/1.html HTTP/1.1" 200 418 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"
[27/Aug/2014:01:59:11 -0400] "GET /misc/2.html?1409119152972 HTTP/1.1" 200 28 "http://app-mgng.rhcloud.com/misc/1.html#test1" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"
[27/Aug/2014:01:59:13 -0400] "POST /misc/2.html?1409119154924 HTTP/1.1" 200 28 "http://app-mgng.rhcloud.com/misc/1.html#test1" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"

IE10の開発者ツールでネットワークキャプチャしてみた。ハッシュ以降がそのまま送信されている。

「IE XMLHttpRequest location.hash referer」なんかで検索しても特にヒットしなかったからメモがてら残しておく。

セキュリティ的に問題あるかどうかは...不明。


Ameba芸能ブログニュースタイトルていうどうでもいいのを作った

作った。

どうでもいいタイトルばっかりならんで凄い。

技術的には単なるスクレイピングで特に面白みはないんだけど、xpathを初めて使ってみたら凄く楽にできた。


MongoDB の $setOnInsert 最高

MongoDBで、データがなければ insert、あれば update っつうのは、upsert を使えばいいんだけど、upsert の際に(ここの値は上書きしてほしくないなあ...)って場合は $setOnInsert を使うと簡単に実現できる。

PHP 大好きだから PHP MongoDB 拡張使って書いてみる。

初回 upsert 時は $set 及び $setOnInsert のどちらも insert されるけど、2回目 upsert 時は $set だけが上書きされる。ディフォルト値を入れておいたりログイン時間だけ更新するときみたいな処理に便利かも。


夏休み3回目

3回目の夏休みは新潟へ。

その辺で買ったお寿司と唐揚げと茶豆とのっぺ。ニーガタは何食ってもサイコーにうまい。

改装してピッカピカになったマリンピア日本海へ。すごくしゃくれたエイがいた。イルカショーも楽しいね。

うすい牧場っていうステーキ屋にも行った。ナイスホームページ

んでさっき関東に戻ってきたら最高気温が30度を割っていた。涼しい。夏が終わった感じがする。バイバイ夏。また来年。


クリック広告をつけた

モノは試しでこの日記にクリック広告をつけてみた。

使っているのは 忍者Admaxnend のふたつ。

忍者AdmaxはPC/スマホ対応で無審査。nendはスマホ専用で簡単な審査があるけど数時間で通った。

google adsense にも申し込んでみたんだけど、このドメイン( *.rhcloud.com)はgoogle adsense 側でブロックされてるぽい。残念...

rhcloud domain blocked by google adsense? | OpenShift by Red Hat

------

ちなみに昨日の広告収入は 0.04 円だった。この調子でいけば1ヵ月後には1.2円の収入になるぞーい...


javascriptだけで画像をリサイズしてダウンロードさせる

以下サンプル。「100x100でダウンロード」ボタンを押すと、100x100にリサイズされた画像がダウンロードされる。IEだと動かない...

以下ソース。


飲んだ

ボンニーONQ生だし野郎 と 俺の4人で飲んだ。

どんなドラッグよりも酒が一番効くって話を聞いたことがあるんだけど、酒飲めない人はドラッグに手を出して気持ちよくなんのかなって今思った。

今日は生中を5杯くらいと焼酎ロック1杯とウイスキーを炭酸で割ったのを2杯のんだ。酔って気持ちがいいしずっと寝ていたいけど明日も仕事。

洗濯終わったら寝る。


apple-touch-icon を zip で一括ダウンロードできるやつを作った

画像をアップロードして apple-touch-icon を zip ダウンロードできるのを作った。強制リサイズするから縦横比が違うと変な感じになる。

apple-touch-icon generator

今はサーバ側で処理してるけど、zipアーカイブ作れるjavascriptライブラリがあるから、そのうちクライアントだけで処理するかもしんない。

----- [追記] -----

javascriptだけで動くやつも作った。こっちの方が軽い。

apple-touch-icon generator (js version)


録音手順が簡単になった

ここ10年くらいはギターリフを録音しようかなって思った時は、KORG D16 を箱から出して(重い)、電源入れて(時間かかる)、リズムマシンを接続して、ギターをLINE6に接続して、録音レベルと使うエフェクト選んで、リズムをいったん打ち込んで(クソめんどくさい)、それを再生しながらギターを弾いていたんだけど、

先日 APOGEE JAM 96k 買ってからは、iPhone の GarageBand 起動して、ギターと APOGEE JAM と iPhone 繋いで、ドラムをランダムに鳴らして(GarageBandにランダムにドラム鳴らせる機能がある)、それを再生しながらギター弾くことができるようになった。

昔と比べると録音に至るまでの時間が40倍くらい短くなって、ちょっとなんか思いついたらすぐ録音できてどんどんネタがたまってゆく。楽しい。

ネタはたくさんあっても曲にするのは時間がかかる...


夏休み2回目

今年は長期休暇にせず細かく休みを取った。2回目の夏休みは実家に帰省。

実家の裏庭にある秘密基地。これを見ると安心する。

阿見のアウトレットから見える牛久大仏。写真だと伝わらないけど近くで見ると気持ち悪い。

20年以上付き合いのある串焼き屋に行った。何くってもうまい。手羽先もうまい。

両親が家を建て替えたいと言っている。いつになるかは未定だけどこの天井が見られなくなるのは寂しい。ちなみに小さい頃この部屋でお化けを見た。

それと、今年は親友ノブの新盆だった。ノブの実家に行きお線香をあげてきた。ノブのお母さんとたくさん話をした。未だに気持ちの整理がつかないこと、面倒が起きていてつらいということ、でもこうして友達が来てくれて本当にうれしいこと。時折目に涙を浮かべながら話してくれた。また必ず遊びにきますと約束してノブの実家を後にした。

友達は死ぬな。


MongoDB 2.6 で db.createUser ( or db.addUser) 実行したら User and role management commands require auth data to have schema version 3 but found 1 のエラー

MongoDB 2.4 → 2.6 にアップデートして cli から db.createUser ( or db.addUser ) したら以下のエラーが出た。

> db.createUser({ user:"mgng", pwd:"password", customData:{}, roles:["readWrite"], writeConcern:{}});
Error: couldn't add user: User and role management commands require auth data to have schema version 3 but found 1 ...

どうやら db.system.users のスキーマ定義が 2.4 と 2.6 で違うぽい。

How to add authentication to mongodb 2.6? - Stack Overflow

で、アップグレードするコマンドが用意されていた。

Upgrade User Authorization Data to 2.6 Format — MongoDB Manual

db.getSiblingDB("admin").runCommand({authSchemaUpgrade: 1 });

これを実行したあとで db.createUser したらユーザ追加できた。

> db.createUser({ user:"mgng", pwd:"password", customData:{}, roles:["readWrite"], writeConcern:{}});
Successfully added user: {
  "user" : "mgng",
  "customData" : {
  },
  "roles" : [
    "readWrite"
  ],
  "writeConcern" : {
  }
}

stackoverflow は大変役にたつ。


右足の甲の感覚が戻らない件

高校時代に右足首を脱臼骨折したんだけど(※右足首が脱臼して右に90度ひんまがり転んでくるぶしあたりを骨折してそこに腱が挟まった)、手術したら右足の甲のあたりの感覚がなくなってうわーと思って医者に聞いたら「メスで切ったから仕方がない。1,2年くらいで元に戻るから安心しろ」と言ってたんだけど、あれから20年経った今も感覚が戻らないし、そのせいで怪我しても気づくのが遅れて結構大変な事になったりする。去年ビーサン履いて右足の甲を靴ずれしたんだけど全然気づかずグジュグジュのゲジョゲジョになった。最近は右足首から下になんか変なシビレが出てくるし、足首曲げると痛みを伴うし、正座が完全にムリになったし、体の不具合がだんだん増えてきた。いやだなあ。


夏休み1回目

日曜はカニを食べた。

月曜は冷麺を食べた。


APOGEE JAM 96k

iPhoneアプリのGarageBandを使ってギター録音したくなったから買った。

使ってみた感想は、ノイズはないけど少しレイテンシが気になる(実際の音よりもモニターしてる音のほうが0.05秒くらい遅れて聴こえる気がする)。それとiPhone本体にlightningケーブルを刺して電源供給&LINE入力する仕組みだから、これを使っている間は充電ができない。1時間くらい使ったら電池が60%くらいまで減ってたから、長時間の録音作業には適さないかも。

【追記】iPhone6にしたらレイテンシも気にならないし充電も問題ないレベル。【追記ここまで】

とはいえ、iPhoneとこれとギターとケーブルとGarageBandがあれば、どこでも作曲作業ができるっつうのは本当に素晴らしい。

しばらくこれで頑張ってみよう...


jQuery でなんか書くときのちょっとした規約

規約ってほどでもないけど、jQuery でコード書くときは以下みたいな感じで書くことが多くなった。

どう書こうが好みだろうけど、jQuery オブジェクトに $ を付けるくらいはしといたほうがよい。


jQuery で input:radio の checked を設定する場合は .prop を使うこと

input:radioとjQueryでもう4000回くらいハマった気がするからそろそろ覚えるためにまとめておく。

まず .attr を使った実装。ボタンを押すと最初はcheckが付いたり外れたりするけどそのうちうんともすんとも言わなくなる。

次に .prop を使った実装。こっちは問題なく動く。

ちなみに .attr と .prop の挙動の違いについては以下にまとまっている。

jQueryにおけるattrとpropの違いと使いドコロまとめ - Qiita

もう絶対忘れない...


実家について

電車もバスもない田舎から抜け出して初めて1人暮らしを始めたときの解放感を思い出す。俺だけのテレビ、夜中に貪り食う菓子、エロ本エロビデオ見放題、ギター弾き放題、ゲームし放題、とにかくなんでも自由だった。

そういう生活をしていたら実家に帰るのがめんどくさくなった。帰省したとしても何かしら理由をつけて日帰りしたり、終電近くで帰省して次の日の午前中にはもう実家を出たりしていた。

親は好きだけど実家はただただ暇だった。近くにあるものと言えば歩いて10分くらいのところにあるセブンイレブンだけ。多少都会っぽいところに行くには車で30分ほど飛ばさなきゃならない。でも自由に使える車はないから引きこもるしかない。することと言えばスラムダンクを読むか散歩くらいだった。

この話は続かない。


gdipp を殺した

Google Noto Fonts を Window7 にインストールして CSSに font-family: "Noto Sans Japanese Regular"; が設定されているサイトを Firefox で開いたらクラッシュした。何度再起動してもクラッシュ。

原因調べてたんだけど、gdipp をオフにしたらクラッシュしなくなった。

gdipp、設定も簡単だから愛用していたんだけどメンテされなくなってしばらく経つしメインブラウザ変えたくないから泣く泣く無効にした。

なめらかフォントに慣れちゃうと、カクカクフォントが見づらくて仕方ない...


KAWAI LS-1

デジタルピアノを買った。

集合住宅で防音設備がないからアコースティック的なピアノはNG、でもそれなりにピアノの音がするものが欲しいっつうことで楽器屋にいって10台くらい試した。

5万前後の価格帯のものはいろんな音色が入っていて遊び用にはよかったけれど、鍵盤のタッチがスカスカしておもちゃっぽいし強弱の表現もイマイチ。

10万を超えてくると鍵盤のタッチも音の出かたも本物に近づいてくるんだけど、逆に20万前後のものとの違いがよくわからなかった。

ということで、店員さんと相談して、値引き交渉して、KAWAIのLS-1っていうのにした。

スリムで場所を取らないし、ヘッドフォン端子が2個ついてて2人でモニターできるから便利。鍵盤のタッチや音の出かたも悪くない。

弾くとすぐに音が出るってのはいい。娘も楽しんでいるようでよかった。