2012年12月18日火曜日

iPhone5を買ったので、ログとってみた

 ソフトバンクがテザリング対応したぞー!!ということで、宣言通り迅速にiPhone5を買ってきました。

 そして、買ってから一通り快適に使うまでにやったことを、なるべく詳細にログとりしてみました。もしかしたら、iPhone5ご検討されてる方の役に立ったりする…かなぁ。とりあえず始めます。


Softbankショップで手続

 だいたい30分くらい。

SIMが切り替わる

 切り替わるの待ってるってtweetしようと思ったらもう切り替わってた。

実物登場

 なんとなく、最初のアクティベーションとか自分でやるイメージをしてたので、起動状態のものがでてきて少し面食らった。

iCloud同期

 とりあえず連絡先とか入ってないと携帯変えた感がうすいので、iCloudアカウントを手早く入力。待ってる間iPhone4さん眺めてたけど、ほんとにいまもうcloudでなく持ってる情報がないなぁ。

 ちなみに、Photo Streamはこの時点で同期されてなかった。Wifiつながないと駄目なのね。そういやそうだった。

Softbankショップを離脱、タリーズコーヒーに入る

 はにーみるくらて。

bluetooth設定

 iKeyboardがないと生きていけない体質なので接続。先日、友達のiPhone5とMountain Lionで接続失敗したりしてたので不安だったけど、難なくクリアー。

言語系

 システム言語が日本語なことに違和感を覚えたので、英語に戻した。

 またキーボードの日本語ローマ字も邪魔でしょうが何ので撤去。絵文字キーボードはちょっと迷ったけど削除。

siri

 OFF。

「連絡先」の姓名順

 「Last, First」に。

Notifications

 Stock Widgetとかはいらないので撤去。Weather Widgetは一番下へ。この辺は、iCloudにはいってもいい情報じゃないかと思ったり。

パスワード

 かけた。

SoftbankのiPhoneガイドをみる

 なぜ普通の印刷用紙なんだろうねこれは。テザリングの説明もあった。

Softbankの「一括設定」プロファイルを入れる

 iPhoneガイドに、プライベートブラウズがOFFになってるかとかの説明まで書いてあって、丁寧というか何というか…?

 結局3Gじゃやっぱり遅いねーなど当たり前のことを感じたりしつつ、淡々と終了。なんか前よりダイアログとか簡略化された?

テザリングやってみる

 お待ちかねのテザリング。「設定(Settings)」→「一般(General)」→「モバイルデータ通信(Cellular)」→「インターネット共有(Personal Hotspot)」から設定、しようとするも(3Gだから?)なかなかボタンが現れなかった。
(1度セットアップしたあとは、「設定」のトップにも「インターネット共有」が出てた)

 bluetoothでの接続もできるのをきいてたので、それを使ってみた。繋がったときの感動けっこうすごい! (ただし3G程度の速度なのも納得)

電池のパーセント表示

 した。

タリーズ出る

 帰る。

LTEきたー!!

 くっっっそはやい…!! 最寄りから家まではだいたいずっとつながることを確認。やったー!

 appleのアプリまとめてダウンロードとか、Buono!の曲まとめてダウンロードとかやっても、油断したら終わるレベル。

 ただし当然というかなんというか、一応「携帯の電波」という位置づけなので、iTunesとのWifi同期とか、Photo Stream同期とか、Wifiより早いくせにできないこともいろいろある。

 ので、これからは必要に応じて、こまめにWifiを付けたり消したり、テザリングを付けたり消したりすることになりそう。

zaimインストール

 最初に入れるアプリがこれになるとは…。まぁしょうがない。App  Store検索が妙に遅い…と思って、タリーズにいる時一度中止しましたが、LTEになったら速攻で終わった。

 はにーみるくらて390円也。

キーボード設定ふたたび

 auto-capitalizationをoff、Flick-onlyをon。キーボードは実際に何か打たないと設定漏れ気付かない。

メール取得の方法を修正

 pushを全体的にやめた。

帰宅

 帰宅。

lightningを取り出す

 端子が脆そうでこわい…。

iTunesと接続

 直接同期もしてないので、特に何もすることなし。一応認識はさせておいた。あとBackup先もiCloudになってることを確認。

改名

 初期状態で名前が「iPhone」になっているのが気に食わないので改名させました。「blacco」と名付けました。かわいいこです。

参考: きぐるみブラッコ|ユニキャラプロジェクト

アプリもろもろ、再インストール

 iTunes同期してないから、「install」を連打するとかいうハメになるんですが…まぁ気にしない。

 GoogleとかFacebookとか2段階認証のものが増えたので、少々めんどくさいですね。

壁紙を作ろう

 サイズも変わったので、壁紙は新作を作ることに。大きさは640×1136ですよー。

  できたのがこちら


まとめ

 えーと、楽しそうですね。

2012年12月10日月曜日

user-agentとaccept

 立て続けに、今度は自分用メモです。node(express)でとった、user-agentとacceptの一覧。

curl

user-agent
curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
accept
*/*

Wget

user-agent
Wget/1.13.4 (darwin11.4.0)
accept
*/*

Chrome

user-agent
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11
accept
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Safari

user-agent
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17
accept
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Firefox

user-agent
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:15.0) Gecko/20100101 Firefox/15.0.1
accept
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Opera

user-agent
Opera/9.80 (Macintosh; Intel Mac OS X 10.7.5; U; en) Presto/2.10.289 Version/12.02
accept
text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1

 ChromeとSafariって見分けつかないんだね…。

 クライアント側でJSが実行できるかどうかの判定って、結局なにでやるのがいいのかなー。これを見る限りはAcceptで判断した方がいいのかしら。

gradientで罫線 + sassデビューしてみた

 さいきんjsdo.itづいています。罫線付きtextareaっていうのをやってみました。いちおう、ポイントはgradientとbackground-size、それとline-heightを揃えてあるところです。

 ついでにそろそろ、Sassの勉強を始めよう! と思って、一度ふつうのCSSで書いてから、この記事など見ながら書き直しをしてみたんですが、

 えーっと、1度しか登場しないようなスタイルだと、Sassを使う意味あんまりなさそうだということは分かりました。mixinとかがつがつ使うようなの書きたい。

2012年12月8日土曜日

かわいく震えるやつと、webkitAnimationEnd

 昨日、ふと話題に上がったので、jsdo.itに「ちょっとかわいく震えるやつ」を書いてみた。

 なんだかんだ、CSS animationってまともに使った事なかったので、「クリックした直後だけ動かす」というのはどうやるんだっけか? と迷った。

 :hoverをトリガーにしてもちょっと違うし、.animeが付いてるときだけ動かすことにするかーというところは決まったのだけれど、どうやってクリックするたびに.animeが付いたと認識させるか。

ためしに

$('#box').click(function() {
  $(this).removeClass('anime');
  $(this).addClass('anime');
});

 これで行けるかと思ったらだめだった。.animeが消えてからもういちど付くまでの間に、レンダリング発生しないもんね。

$('#box').click(function() {
  var self = this;
  $(this).removeClass('anime');
 
  setTimeout(function () {
    $(self).addClass('anime');
  }, 100);
});

 結局こういう、ちょっと格好わるい形で書いて公開した。

その後

 公開したあと、そういえばCSS transitionの終了を捕まえるeventというのをどこかで見たのを思い出した。

 これと同じように、animationの終わりも捕まえられたら、そのタイミングで.animeをリセットするカタチにすれば、きれいに書けそう! というわけで探したらちゃんとありました。

 これを使って書き換えたのが、下のもの。 (eventの割り当てに $box.on とか $box.bind とか使ったらうまくいきませんでした。これはまた今度勉強します。)

var $box = $('#box');
 
$box.click(function() {
 $box.addClass('anime');
});
$box[0].addEventListener('webkitAnimationEnd', function(event){
 $box.removeClass('anime');
}, false);

完成形

 最終的にはこんな感じで、いちおう関数にして一般化してみました。

 クリック時の挙動をごにょごにょやるのは、よく使いそうなので、ちゃんと勉強してよかった。

2012年11月26日月曜日

.emacs.d晒したので、紹介

 某後輩が見たいって言ってた気もするので、githubにあげてみた。.emacs.dです。

https://github.com/fnobi/emacs.d

 コミットログみると、すごい右往左往してるのが分かると思います。入れたり消したり、elisp書いたり失敗したり…。

 もろもろの末、いまは落ち着いてます。特筆するようなelispは、だいたいauto-completeとmagitくらい?
(multi-termは入れてますがあんまり使ってないです)

 あとinit.elの中で言えば、japaneseの部分大事ね。utf-8もくまなく設定しておかないと、日本語フォントの挙動とかも怪しかったです。これだけ書いておけば、日本語において全く不満ない動作をするのも、emacsのよいところ。

 他にも、backupの保存先を変えるとか、js2-modeのカスタマイズ版使ってるとか、いろいろちまちましたことはあります。そのうち、どこを参考にしたかとかメモしとかないとまずいかなぁ。

 ちなみに。alertについては、前にいちおう書いてましたね。

2012年11月16日金曜日

newを自作してみた件

 ふと、昨日の言語班ミーティングの時に話題に出したので、作ってみた。

 __proto__およびプロトタイプチェーンはおそろしいねという話。

 プロトタイプチェインをちゃんと説明している記事はこちら。↓

JavaScriptのプロトタイプチェインをちゃんと理解する - builder - http://builder.japan.zdnet.com/script/sp_javascript-kickstart-2007/20369792/

nodeの卒論プロジェクトを表に出してみる

 卒論で書いているもの(node製)を、ちゃんとサーバー上で動かしてみたいなーと思ったのでやってみた。

プロキシサーバー

 まずはsugoroku.fnobi.comを作った。ここでnodeアプリを公開したい。

 fnobi.comはいまのところapacheだけで動いてるので、nodeとapacheさんに連携してもらう。

 プロキシサーバーと言えばnginx! というイメージだったけれど、apacheでもぜんぜん簡単なのね。下記の記事読んだらデプロイはすぐ終わりました。

ApacheとNode.jsを連携させる - ZeBeVogue別館 - http://d.hatena.ne.jp/zebevogue/20120822/1345606287

デーモンプロセスとして実行

これもそういえば、やり方を知らなかったので調べました。

デーモンプロセスを作ってみる - みずぴー日記 - http://d.hatena.ne.jp/mzp/20100327/daemon

Linuxコマンド集 - 【 nohup 】 ログアウトした後もコマンドを実行し続ける:ITpro - http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230850/

「ごまかし」らしいですが、とりあえずnohup使っちゃってます。

公開できた

 とりあえず、今作っているビジュアル言語のデモがみれます。よろしければ。

(いまのところ保存機能などなし)

雑なサンプル

じゃんけんサンプル

2012年11月13日火曜日

jQuery.extendわかりづらい

Utilities/jQuery.extend - jQuery Wiki - http://docs.jquery.com/Utilities/jQuery.extend

 jQuery使ってオブジェクトのdeep copyって確かできたよなー何だっけーと思って探してたら、extendでした。っていうそれだけの話なんですが。

 英語版のdocumentをなんとなく読んでいたら、「the JQuery namespace itself is extended」とか書いてあったので、ああそうかjQueryのプラグイン作るとき使ったやつか! となって1回無視してしまいました、と。

jQueryでディープコピー - loiter on the sideroad - http://d.hatena.ne.jp/sideroad/20090812/1250045001

 その後これを見つけて、もういちどdocument読み直したら気付きました。

 target省略するとjQueryの中にコピーしてくれるのねー。おもしろいけど、なんかオブジェクトコピーとは分けてほしいな…。

 アンチjQueryをやめて、けっこう慣れてきたけれど、やっぱりネーミングとかちまちま気に入らない。。

2012年11月6日火曜日

近々つかいそうなnpm

 複数ファイルに分けて書くJavascriptをどうするかってことで悩んでます。

 RequireJSがベストなのかとおもっていたのだけれど、どうもbusterJSでtestする時にうっとおしかったり、そもそもファイル分けたままだと読み込み時間が無駄になりすぎるんじゃ…など気付き始めました。

 そんなわけで、よいライブラリを求めてnpmをうろうろしていたら、(すぐ使うアテがないのも含め)便利そうなものがいろいろ見つかったので、メモしておきます。忘れちゃうからね!

※探したというか、ランキング上位の知らないやつをちゃんと読んだって感じなので、常識なものも多く含まれます。

colors

Marak/colors.js · GitHub - https://github.com/Marak/colors.js

 名前と人気からしてコンソールの文字に色付けるやつなんだろうなぁとは思ってたんですが、Stringへのプロパティ書き足しで実現してたんすね…! これはかっこいい!

var colors = require('./colors');

console.log('hello'.green); // outputs green text
console.log('i like cake and pies'.underline.red) // outputs red underlined text
console.log('inverse the color'.inverse); // inverses the color
console.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces)

 rainbowとか馬鹿なのがあったり、errorとかwarnとかをカスタムで作れたりするあたりも、かんぺきですね。

glob-whatev

glob-whatev - https://npmjs.org/package/glob-whatev

 うん、たしかにglobなかったねnode。mkdirpとかもしかり、nodeのデフォルトってなんでディレクトリ系fsが手薄なんだろう。

prompt

prompt - https://npmjs.org/package/prompt

 標準入力待ち系のライブラリはそのうち探さなきゃ—と思ってましたが、これでだいたい済みそうですね。

 パスワード系を隠しながら入力するとかも付いてるみたい。どうやるのか全然わからんかったので、中身も読みたい。

clipboard

clipboard - https://npmjs.org/package/clipboard

 linkvってやつでクリップボードの読みこみ自前実装してしまったんですが、ちゃんとこれもライブラリありました。

 Mac以外にも対応してるのかな…。(Macだと、pbcopy・pbpasteというコマンドにパイプとかすれば読み書きができる)

iTunes storeを検索するコマンド

とりあえず、急に欲しくなったのでつくった。

fnobi/itunesq · GitHub - https://github.com/fnobi/itunesq

インストールは、

git clone https://github.com/fnobi/itunesq.git
npm install -g ./itunesq
で入るはず。(gitとnode必須)

1時間もかかってない雑実装なので、これから自分の需要に合わせてアップデートしていきます。

また、githubには他にもnodeで書いたちょろっとしたコマンドが結構置いてあるので、ちゃんとドキュメンテーションしたい…!! そのうち。

2012年10月2日火曜日

「libxml2がないよ!」エラー

Try setting LIBS and INC values on the command line
Or get libxml2 from
  http://xmlsoft.org/
If you install via RPMs, make sure you also install the -devel
RPMs, as this is where the headers (.h files) are.

ながーいエラーログの中で読むべきはここだけでしたという話。

yum install libxml2
yum install libxml2-devel
でおしまいでした。

もちろんもっと厄介な場合もあるとは思いますが…!

2012年9月24日月曜日

tab・space混じりのコードにキレてくれるemacs

ぐぐって出たものを見つつ、設定を書きました。
他の方に見てもらうコードは、混じってたら絶対まずいです。tabかspaceだけでインデントしないと怒られます。

ぐぐって出てくる方はtab派じゃなくspace派が多かったので、
tab派向けに、あんまりtabが目立たない、spaceと混じった時だけ怒るような感じにしてみました。

参考にしたもの: http://murakan.cocolog-nifty.com/blog/2009/01/emacs-tips-b314.html

;;======================================;;
;; tab, full-space escape               ;;
;;======================================;;
(defface my-face-r-1 '((t (:background "gray15"))) nil)
(defface my-face-b-1 '((t (:background "red"))) nil)
(defface my-face-b-2 '((t (:foreground "gray20" :underline t))) nil)
(defface my-face-u-1 '((t (:foreground "red" :underline t))) nil)
(defvar my-face-r-1 'my-face-r-1)
(defvar my-face-b-1 'my-face-b-1)
(defvar my-face-b-2 'my-face-b-2)
(defvar my-face-u-1 'my-face-u-1)
(defadvice font-lock-mode (before my-font-lock-mode())
  (font-lock-add-keywords
   major-mode
   '(
     ("\t" 0 my-face-b-2 append)
     (" " 0 my-face-u-1 append)
     ("[ \t]+$" 0 my-face-b-1 append)
     (" [\r]*\n" 0 my-face-r-1 append)
     ("\t+ +" 0 my-face-b-1 append)
     )))
(ad-enable-advice 'font-lock-mode 'before 'my-font-lock-mode)
(ad-activate 'font-lock-mode)

2012年9月23日日曜日

gitのレポジトリ作る手順をわさーっと出す

gitrepo-assist.rb
#!/usr/bin/env ruby

REMOTE_USER = "username"
REMOTE_HOST = "myhost.example.jp"
REMOTE_GIT_PATH = "/home/#{REMOTE_USER}/git" 

project = ARGV.shift || File.basename(Dir.pwd)

puts [
      #remote login
      "ssh #{REMOTE_USER}@#{REMOTE_HOST}",
      "cd #{REMOTE_GIT_PATH}",
      "mkdir #{project}.git",
      "cd #{project}.git",
      "git --bare init",
      "exit",

      #local repository
      "git init",
      "git add .",
      "git commit -m 'first commit'",

      #push
      "git remote add origin ssh://#{REMOTE_USER}@#{REMOTE_HOST}#{REMOTE_GIT_PATH}/#{project}.git",
      "git push origin master"
]

自分の持ってるリモートサーバー情報と、リモートレポジトリを置く場所を書いておくと、

  1. リモートログインして、
  2. リモートレポジトリつくって、
  3. ローカルレポジトリつくって、
  4. 現在あるファイルを全部コミットして、
  5. origin登録して、
  6. 最初のpush
までの手順をざーっと出してくれる。(共有用ではなく個人開発用のレポジトリになる)

ハードコーディングやめなよとか、手順もほぼべた書きっておいおい…とか色々アレですが、
これを書き終わる頃にはもう手順頭に入っちゃったので、これを使う機会はもうない、ってところが何より寂しいですね、うん。

CPANのコードが読みたくなったら

perbrew + cpanm環境を使っている場合、インストールしたCPANモジュールはすべてホームディレクトリ以下にある。

具体的に言うと~/.cpanm/work以下のどこか。ただしよくわかんない数字のディレクトリで分類されている。
また、CPANモジュールのディレクトリ名は、AAA::BB::CというモジュールだったらAAA-BB-CC-<ヴァージョン>となっている。

以上をふまえて。例えばPath::Classモジュールを探し出したい時は、

% ls ~/.cpanm/work/*/Path-Class*
.cpanm/work/1348323865.9574/Path-Class-0.26.tar.gz

.cpanm/work/1348323865.9574/Path-Class-0.26:
Build  Changes  LICENSE  META.yml MYMETA.yml README  _build  dist.ini lib
Build.PL INSTALL  MANIFEST MYMETA.json Makefile.PL SIGNATURE blib  f.pl  t

こんなかんじ。

本当に実際のコードを読みたいだけなんやー! というときは、~/.cpanm/work/*/Path-Class*/libってしたほうが手っ取り早いかも。

追記:
まぁきっと探せばそういうのあるよなぁと思ってましたが、cpanm --look Path::Classで完璧でした。(子shellが立ち上がって、モジュールのディレクトリをうろうろできる。)
この状態でemacs libとか叩けばよい。うぅ。