移転しました

2012/12/05 08:42

はてなブログに移転しました

http://new.takyam.com/

 

日記

移転しました

はてなブログに移転しました

http://new.takyam.com/

2012/12/05 08:42

うつうつー

2012/03/04 18:12

ブログはじめました

ようやくブログのベースができた!

長かった。。。。

ブログはWordpressで作るべきだね。絶対楽。
あえてConcrete5で作ってみたけど、めんどくせぇ。

タグとかカテゴリとかイチから機能作ったよ!めんどくさ!

といった前置きは置いておいて、
去年までで情報収集のスタイルが確立されてきたので、
今は情報の整理とアウトプットを気にしています。 

なんとなくブログは情報収集およびアウトプットの形としては、
いけてないなぁとは思うものの、ベストプラクティスが思いつかないので、
とりあえずブログです。 

さくらVPSにC5(英語版)入れてぐりぐりいじってますので、
運用しながら正解を模索しましょうかね。

2012/01/07 16:12

PHP

PHP向けPaasのPHP Fogとpagoda boxの2つを使ってみた

2012/07/15 09:03

AptanaStudio

AptanaStudioでCtrl+Tabでエディタ移動すると開いた順番で移動してしまう件

Aptana Studioでつい最近、Ctrl+Tabでタブ移動しようとすると、エディタを開いた順番で移動してしまって糞うざかった。
特に設定したわけではないので、おそらくアップデートか何かのタイミングで勝手にそうなったんだと思う。

Ctrl+Tabで次へ、Ctrl+Shift+Tabで前へ移動するようにする手順 Window→Preferences→General→Keys type filter text のところに 「Next Tab」と入力 Next TabのBindingのところが空になってると思うので、ダイアログ下部の「Binding:」のところで、Ctrl+Tabを入力 Whenに「In Window」を選択 同じようにtype filter textに「Previous Tab」を入力し、Ctrl+Shift+TabをBindingする 次に、Ctrl+TabとCtrl+Shift+Tabが、「Next Editor (Aptana)」と「Previous Editor (Aptana)」にもBindingされてる状態だと思うので、それぞれを選択して「Unbind Command」ボタンを押して、Unbindする 最後にOKを押して完了

たぶんこれで元に戻るはず。

ちなみに上記の設定変更を行う前でも、Ctrl+PagedownとCtrl+Pageupで並び順どおりのタブ移動はできます。

2012/06/11 12:04

Cordova(Phonegap)

CordovaからGoogleReaderにアクセスする

今月の頭頃に作ろうと思ったTable用のGoogleReaderのViewerの開発にようやく着手した。

PhonegapあらためCordovaでの開発にチャレンジしてみたんだけど、なかなかに難しいね。
ハマったポイントはこんなところ。

Storage(WEB SQL Database)の使い方 GoogleのOAuthのキーの取得 GoogleのOAuth2の処理

Storageは、「エラー吐いてる><」と思ってハマったんだけど、実際はエラー吐いてなかったっていう何でもないオチだった。
CatLogの見方とかそのへんに慣れてなくて勘違いしてたけど本当に無駄にハマったよ。。。

GoogleのOAuthのキーの取得は、最初OAuth1でやろうかなぁと思ってたので(OAuth1だったらライブラリあるからそれでいっかなぁと思った)ConsumerKeyとConsumerSecretを取得しようとしたんだけど、全然見つからなくて超ハマった。

結果取得の仕方はわかったので、それはこっちの記事を参照してください。

で、今日になっていくつかの記事を見て、やっぱりOAuth2でやろうと思った。
参考にした記事はこちら。

OAuth2.0使ってGoogle APIにアクセスする
http://coffeeyoshida.blogspot.jp/2012/02/oauth20google-api.html

OAuth2.0によるGoogle+ APIのアクセス方法
http:/
/www.eisbahn.jp/yoichiro/2011/10/oauth2-0_google-api.html 

Using OAuth 2.0 to Access Google APIs
https://developers.google.com/accounts/docs/OAuth2#installed 

で、Cordova(Phonegap)はご存知のとおりJavaScriptで書いて、Androidの場合WebViewを使ってアプリを作るんですが、JSのOAuth2の適当なライブラリ見当たらなかったので、自前で実装することにしました。

2012/04/01 20:42

ライフハック

20代向けの保険について調べてみた

先日晴れて27歳になりまして、
今年の4月で生誕1万日目を記録します。

それにあたり、そろそろ健康の事がきになるお年ごろなので、
保険について調べてみました。

職業柄、基本的にデスクワークで体を動かさないので、
ガタが来るのが早そうだなぁという気がしているのです。

保険についてはド素人なので、
ひたすらぐぐってみる事にします。

死亡保障・生命保険はいらん 

とはいえまずは事前知識として、
生命保険と医療保険の二種類がある事は何となく知ってます。

おそらく、生命保険は死んだらいくらあげる、
医療保険は病気になったらいくらあげる、
といったモノだと思います。

で、俺の場合、嫁さんとの二人暮らしで子供いないし、
嫁さん俺より働いてるしで、
別に俺が死んでも生きていけると思うので、
死亡保険はいらんです。死亡保障もいらんなぁという印象。

 というわけで、医療保険に絞って調べてみるお。

俺はなんの病気で死ぬの?

医療保険つっても、なんかその種類によって、
保証してる病気とかが違うっぽい。

保険自体は「もし、何かあった時に金がねぇと治療してもらえんwww」
状況に対するリスクヘッジ的なもんだと思うので、
「この病気にかかると金がかかる」系の病気で、
「割とかかるもんよ。」な病気がいい。

「え!?マジ!?こんなレアな病気にかかるとか天才www」なやつは、
別にいいや。。。そんなに気にしてもしょうがないし。
その時は健康保険で何とかがんばろう。

というわけで、とりあえず日本人の死亡原因のグラフを見てみる。

2012/01/09 17:50

Ruby

MacでRailsのMigrateしようとしたらCan't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) ってエラー出た

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

homebrewでmysqlいれてて、RailsからMySQL@localhostにアクセスしようとしたらエラー出た。

/usr/local/var/mysql/my.cnf を確認したところ、sockが /tmp/mysql.sock に出力されるようになってたらしい。

それを変えるのも面倒くさかったので、しむリンクで対応。

$ sudo mkdir /var/lib/mysql
$ cd /var/lib/mysql
$ sudo ln -s /tmp/mysql.sock

いじょ! 

2012/11/11 12:47

NodeJS

議事録リアルタイム共有アプリ Gijirock'n

その名の通り、議事録をリアルタイムで共有するアプリを作ってみました。
1日で作ったにしては良くできてると自画自賛。

利用シーン

ディスプレイやプロジェクタに議事録を映しながらMTGする事ってよくあるんですけど、リモートだとそういうの難しいですよね。
(GoogleDocsあるとか言わない!Cacooあるとか言わない!)

さらに今現在、リモートで進めてるプロジェクトは、Bitbucketを使うので、Creoleというwiki記法で議事録を書く必要があります。

Bitbucket用に(Creole記法で)議事録を残したい 議事録を取ってる最中も内容を共有したい 議事録に残す内容これでいい?とかすぐに確認できるように

っていう、それ以上の使い道は一切ない感じになってます。

よければ使ってみてね。

2012/07/08 12:36

NodeJSの使い道

知識不足状態での思いつきベースなんでアレなんですが、PHPとかRubyとかでWebsocket接続しちゃうとプロセス数=接続数増えるもんだと思ってるんで(実際どうかは知らない)Websocketの部分だけNodeJSに任せちゃえばいいんじゃね?的な

2012/06/11 14:12

SocketStreamで「Error: watch EMFILE」

Batman.jsが勘所が分からなくて早々に放棄して、
SocketStreamに浮気中です。

$ node app.js

って叩くと、

2012/05/02 23:32

Linux

oh-my-zshとrbenvを同時にインストールすると command not found: rbenv になる

表題のママなんですが、先にoh-my-zshをインストールしている状態でrbenvを動かそうとすると、

rbenv:10: command not found: rbenv

っていうエラーが出て、動かねぇなぁと思ったら、
oh-my-zshが生成する.zshrcがPATHを初期化してるのが問題でした。

 .zshrcを開くと、

# Customize to your needs...
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

みたいになってるので、

# Customize to your needs...
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:$PATH

に直してあげるとOKでした。簡単だね。

2012/06/10 12:10

VMwareでFedora17環境(最低限・非デスクトップ)を構築

表題の通りなのですが、Virtualboxは割とよく破損するので、VMWarePlayerに移行してみました。基本的に難しいことはそんなに無いのですが、いくつか気にしておくべき事があったのでメモメモ。

簡易インストールをやめる

Fedora17のISOイメージをマウントして環境を起動すると、VMWarePlayer側で、親切心モロ出しで簡易インストールなんていう分けわかんないのを実行してくれるわけですが、糞不要なので、簡易インストールを拒否します。

最初の環境作成時のダイアログ内で「後でOSをインストールする」を選べばいいんですが、間違えて既にマウントしちゃった場合は、一度その状態で起動→パワーオフ→環境の設定の編集→IDE1にautoinst.cfみたいなのがあるから、IDE1ごと削除して保存→環境再起動すると、普通のFedoraのインストール画面になります。

Fedoraのインストール時にボタンが見えない

Fedoraの通常のインストール画面が、VMWarePlayerのWindowサイズより少し大きくて、通常右下にある「キャンセル」とか「戻る」とか「決定」とか「次へ」ボタンが見えません。

気合と根性でTabで切り替えて、「たぶん今次へにフォーカスあたってる!」と思い込む事でクリアしました。フィーリングでカバーです。

ネットワークの設定

環境作成時に、NATとホストオンリーアダプタの2つのネットワークアダプタがある状態でFedoraをインストールしたのですが、NATがそのままだと接続されてなくて外部にPingも飛ばせなかったので、以下のファイルを修正。

/etc/sysconfig/network-scripts/ifcfg-eth0

これの ONBOOT="no" のところを、 ONBOOT="yes" にしてあげて、

$ service network restart 

でOK。

まとめ

特にVirtualboxと大きく違うところは、簡易インストールがあるかどうかくらいで、後は普通でした。よかったよかった。

ディスクが壊れないかどうかはまだわかりませんが、少しの間自宅はVMWarePlayerで生活したいと想います。

2012/06/10 11:40

サクラVPSでDropbox使ってたら怒られたので対応した

今日もGW終わりか・・・結局ニコニコ見て終わったな・・・と、
感慨にふけっていたら、サクラVPSからお怒りのメールをちょうだいした。 

2012/05/06 19:30

Google

GoogleのOAuth用にConsumerKeyを取得する方法

GoogleReaderを見るアプリをPhonegap(Cordova)で作ろうとして、
ちょっとまだ試してないんだけど、GoogleReaderもOAuthでAPI使えるようになったとかチラッと見かけたのでGoogleのOAuth用のConsumer keyとConsumer secretを取得しよう!とチャレンジ。

ところがどっこい情報少なすぎワロタ。OAuth=TwitterかFacebookの情報しかねぇでやんの。

一応取得できたので、手順をメモメモ。
流れとしてはこんな感じ。

GoogleアカウントのManage your domains ( https://accounts.google.com/ManageDomains )にアクセス 「Add a New Domain」から、自分が管理してる(ファイルを好きなURLでアップできる)WEBサイトのドメインを入力 「Add domain」を押して追加。 「Manage registration」のところに「Manage (追加したドメイン)」が追加されてるはずなので、クリックして「(追加したドメイン)を管理」のページに移動。 ローカル(WindowsでOK)で.jksファイルを作成 .jksファイルを下に.pemファイルを作成 .pemファイルを2~4で追加したドメインのどこかにアップして、http://example.com/hoge.pem みたいに、pemファイルにアクセスできる状態にする 「4」の管理ページで「Target URL path prefix」の項目に、7でアップした.pemファイルへのフルパスを入力(例:http://example.com/hoge.pem) DomainDescriptionは適当に。 We have a certificate for your domain」のファイル選択で、ローカルの同じ .pem ファイルを選択してアップロード 最後に「Save」を押すと、同じ画面にConsumer keyとConsumer secretが表示されます。

とまぁこんな感じです。

難しいのは、「5」と「6」の.jksと.pemの作成のところだけです。
難しいって言っても、ドキュメントに書いてあるままにやれば別にできちゃうわけなんで、そんなに難しいわけではないですが。

俺も全然意味分からんけどとりあえず作れたからよし。くらいな意気込みです。

Generating a self-signing private key and public certificate for use with secure AuthSub
http://code.google.com/intl/ja/apis/gdata/docs/auth/authsub.html#Registered

このページの一番下にあるように、WindowsのコマンドプロンプトからkeytoolコマンドをたたけばOKぽいです。

2012/04/01 00:05

ゲーム

ロードオブアポカリプス

壁紙::http://www.square-enix.co.jp/apocalypse/download/
2012/01/09 15:04

FuelPHP

FuelPHPでsessionにRedisを使おうとしたらエラーが出た

fuel/core/config/session.php を、 fuel/app/config/session.php にコピーして、'driver'を'redis'に修正したところ、

ErrorException [ Error ]: Call to undefined method Redis::instance()

というエラーが出ました。何ぞ。
結論としては、

PhpRedis
https://github.com/nicolasff/phpredis

上記のPhpRedisライブラリとclass名の名前空間が競合して、
先に上記の Redis クラスが有効になり、
FuelPHP側で用意されている Redis が読み込まれない結果、
instance()メソッドなんかねーよ!とエラーが出たようです。

取り急ぎ現状だとphpredisは検証用にいれただけで実際は利用していなかったので、Apacheからの読み込みを外し、再起動したところ、無事エラーなく表示されるようになりました。

2012/10/15 17:16

FuelPHPのPHPUnitで、ControllerのUnit Test

表題のとおりなんですが、FuelPHPでControllerのUnitTestをやろうとした時に、いくつかハマったのでメモを残したいと思います。

前提&バージョン FuelPHP 1.3.x PHPUnit 3.7.x Behatとか使わずにPHPUnitオンリーで oil test

Behat使わなかったのはセットアップが面倒くさかったのと、
$ oil test コマンドだけでやりたかったからなのですが、
ここまでやってみて、使ったほうが楽だったかなとちょっと後悔。

FuelPHPのテスト(というかPHPのTDD全体・・・)がググってもジャストなのが出てこなくてソース読め状態で苦労しました。

ハマったポイント DBに接続できない(PDO Exception) POSTの値が通らない リダイレクト後のステータスが返ってく DBに接続できない

マニュアル読めって話なんですが、$ oil test を叩くと、PDO Exception Error みたいなのが表示されました。

結論からいうと、$ oil test を叩いたタイミングでは、FUEL_ENVがtestになるので、app/config/db.php しか読まれず、DBの接続設定を app/config/development/db.php で行なっているような場合、それが読まれずにDBに接続できず、上記エラーが表示されてしまいます。

そのため、 app/config/test ディレクトリを新しく作成し、app/config/test/db.php を app/config/development/db.php と同じように作成します。

テスト時にFixtureなど使う場合のための仕組みですね。

POSTの値が通らない

Controller側で「 Input::post('hoge') 」みたいな感じでPOSTの値を取得して処理してる時に、以下のようにリクエストを投げてもPOSTの値が取得できずダメでした。

2012/10/14 13:41

FuelPHPでCoffeeScriptを使うためのライブラリを作った

最近JavaScriptを体が受け付けなくて、CoffeeScriptしか書けません。
(頑張ればJSもかけるけど頑張りたくない)

そんなこんなで、RailsなんかやってるとCoffeeScript書けば適当にコンパイルしてくれたりミニマイズしてくれたりと超ラクチン。うらやまー。
FuelPHPは少なくとも標準では対応してないのでライブラリを入れる必要があります。

https://github.com/tgriesser/fuel-coffeepress https://github.com/canton7/fuelphp-casset

いろいろググったけど、たぶん上の2つあたりが対応してるぽい?
後者の方はEventだけFireしてくれるからCallbackでコンパイル部分は自分で作ってね、的な感じだった。

前者のほうはNodeJSでCoffeeScriptをインストールして、「coffee」コマンドまでのパス(ex: /usr/bin/coffee) を指定する必要があるです。

最初はそれでいいかなぁと思ったんですが、Nodebrewで入れてるせいなのか何なのか、いまいち動いてくれなかったので自作することに。

https://github.com/takyam-git/fuel-coffee

とりあえずザアアーっと作っただけなので大したことないですが、自動でコンパイルしてくれます。

本当にただコンパイルしてるだけなので、Productionで使ったりはできないです。そのうち使えるようにメンテしていきます。プルリク大歓迎だお!

※追記

fuel-coffee から fuel-coffeeless に名前を変えて、CoffeeとLessの両方に対応しました。

https://github.com/takyam-git/fuel-coffeeless

Asset::coffee() / Asset::less() でそれぞれ読み込めるようになっています。
※他のAssetをExtendsしてるパッケージとは相性が悪いとおもいます。

2012/10/08 17:43

Concrete5

Concrete5をキャッシングで高速化してみた(当社比10倍)

このブログはConcrete5で作ってるんですが、
私の肌感として、Concrete5は重めのCMSです。

WP等と違って、ページの構成要素が極めて複雑なので、しょうがないことです。
コンテンツの作りやすさとのトレードオフですね。 

流石にわけわかんないプラグイン入れてるWordpressよりは軽いですが。

というわけで、4つのキャッシングを行なって、
レスポンスタイムが1/5に、rpsが10倍になりました。

正確な数字が手元にないですが、以下のような感じです。

  キャッシング前 キャッシング後 Average response time(jblitz) 1100ms 220ms Requests per second(ab -n 100 -c 100) 6 60

だいたいです。 

やったのは以下の4つです。

mysql のクエリキャッシュ apcの導入 nginx のproxy cache Concrete5のアプリ側での部分フルページキャッシュ

この鯖の環境はだいたいこんな感じです

sakura vps 2GB (cpu 3core / memory 2GB) Fedora 17 x86_64 Nginx + php-fpm (php 5.4.x) mysql 5.5.x Concrete5は本家の英語版の5.5.2.xを使ってます。
2012/06/24 05:05

Concrete5でページ作成時の標準権限を一般非公開にするアドオン

表題のとおり、Concrete5でページ作成時の、
パーミッションをゲスト(一般)非公開にしたくて、
いいアプローチを探したけどなかったので、適当なアドオンを作りました。 

2012/01/29 17:39

Concrete5用短縮URLアドオン作った

Concrete5用の短縮URL生成アドオン作りました。

http://自分のドメイン/s/ページID

でアクセスすると、そのページへリダイレクトするだけの簡単仕様です。

2012/01/08 19:10

開発全般

モダンなWEBサービスの構成

そのうち仕事で使うかもしれないので、WEBアプリケーションのモダンな構成について考えてみます。
合ってる合ってないは、よく分からないので、思いつきベースです。
ツッコミいただけると嬉しいです。 

特に想定している開発内容があるわけではないので、とりあえず、何を使うか決定する必要がある項目を思いつく範囲で箇条書き。

利用言語はPHPを想定しています。

2012/06/02 12:20

CoffeeScript

WindowsでCoffeeScriptを動かす

Androidタブレットを購入したものの、
良いGoogleReaderアプリが無いので、
それなら自分で作るしかありません。

そこで、PhoneGapでAndroidアプリを作ろうと試みています。

とりあえず、ゴリゴリJSを書く事になると思うので、
CoffeeScriptのセットアップ・・・で数時間つまずいたなう。

普段は、Linux上でNodeJSのnpmでCoffee-Scriptをインストールして利用しているのですが、Windowsだと勝手が違うようです。

CoffeeScriptのコンパイル方法とか資料を調べてみた
http://aligach.net/diary/20110813.html 

上記ページとか参考に、いろいろ調べたりした結果、
joinできて、watchできる素敵なWindows用コンパイラが
見つからなかったので、結局以下のような感じに落ち着きました。

ちなみに環境は、Win7 Pro 64bitです。

NodeJSのWindows版をインストール(ちなみにv0.6.12でした) C:\Program Files (x86)\nodejs にNodeJSがインストールされてると思うので、
コマンドプロンプトから「"C:\Program Files (x86)\nodejs\npm.cmd" -g install coffee-script」を実行 「C:\Users\USERNAME\AppData\Roaming\npm\node_modules\coffee-script\bin」に、
CoffeeScriptの実行コマンドがインストールされてるはずなので、PATHを通しておく。
※PATHの通し方はggrks PATHを通したら、コマンドプロンプト立ち上げ直して「coffee -v」とかで、
coffeeコマンドが叩ける事を確認する 

ここまでは割りとすんなりいったのですが、
このあと以下の問題に遭遇しました。

--joinが動かない! --watchが動かない!

「なんで動かないの?」についてまでは詳細に調べてませんが、
おそらくCoffeeScriptのコンパイラ側のJSのソースでエラー出てたので、
CoffeeScriptのコンパイラがWindows版のNodeJSに、
完全には対応してないためだと思われます。

で、まず、--joinについてですが、
これは、以下の場合に動作せず、その下の場合には動作するようでした。

動作しない例:
coffee -j "hoge/fuga.js" -c "hoge/*.coffee" 

動作する例:
coffee -j "hoge/fuga.js" -c "hoge"

このように、*.coffee だとコケましたが、
ディレクトリ指定だとコンパイルが通りました。

複雑な指定はできませんが、私はひとつのJSに対して、
ひとつのディレクトリを作成する形で開発していますので、
これで十分要件を満たしました。 

次に、--watchですが、これはNodeJSで
watchスクリプトを書く事で対応しました。

今回に限らず、最近はCoffeeScript+LESSを使った開発をする事も多く、
LESSは元々--watchオプションのようなものがないので、
結局自前でwatchしてあげる必要があり、
CoffeeScriptと分けて立ち上げるのも面倒なので、
ひとつの watch.js のようなNodeJSスクリプトを書いて、
それを立ち上げておく事をしています。

今回も同じように、watch.jsを書いて、それを立ち上げました。

ただ、これまでLinux上では、「fs.watchFile()」関数を使ってたのですが、
これまたWindowsだとうまく動かないようでしたので、
多少妥協して「fs.watch()」関数を使う事にしました。

「fs.watch()」関数はWindows版でも動作するようです。

watch.jsの中身は以下のようになります。
適宜読み替えて自分用にカスタマイズしてください。 

2012/03/11 16:25

Mac

15年近くWindowsを触ってきた人間が初めてMacを使ってみて思ったこと

先のエントリーにも書きましたが、昨日MacBookairの11インチを買いました。2012 Midモデルです。

Macを買った理由は、

キーボードをKinesisにしてからJIS配列のThinkpadが使いにくく感じるようになった 会社に持ち運びできる軽量なモバイルノートが欲しかった Windowsの軽量モバイルノート糞高い!!!! 勉強会参加時に猫も杓子もMacbookだったので必要な気がした ていうか時代はMacだよねー 今時iPhoneアプリも作れないWindowsとかオワコンだよねwww 別にiPhone持ってないからアプリ作らないけどねwwww ようするにただ欲しかった とはいえスペック的なコスパは最高 んじゃ買っちゃえ!

的な感じで決定しました。コスパ本当にいいですわ。スペック的には。

んで、本題のWindowsユーザー(ドザー)が初めてMac買うとビビるところをいくつかご紹介したいと思います。Mac全般を知ってるわけじゃないので、MacbookAir買ってみておどろいたところ、と解釈していただけるとこれ幸い。 

Deleteキーがない!

正確には「Backspaceの挙動をするDeleteキーがある」なんですが、Windowsで言うところの「Deleteキー」の挙動をするボタンがありません。

ぐぐると、「Fn+(Backspaceの挙動をする)Deleteキー」でWindowsでいうところのDeleteキーの挙動になるんですが、微妙に不便です。

HomeキーEndキーがない!

無いわけじゃないんですが、「Commandキー+←」がHomeで、「Commandキー+→」がEndです。

WindowsでもLet's noteとかも「Fn+←」とかだったりするんでこれはMacbook的なはなしなのかもしれません。

ウィンドウの最大化が無い!

ウィンドウの左上に「×」「−」「+」の3つのボタンがあるので、この「+」が最大化だと思ったのですが、最大化されません。

この「+」は最大化ではなくて「最適化」ボタンとのことで、「良い感じのウィンドウサイズにしてさしあげますわ」ボタンらしいです。

とはいえ最大化したいケースって結構あると思うので「Command押しながらピンチアウト」すると最大化するように設定しました。

この設定みたいに、トラックパッドをかなり多様しています。

なんて言うか「トラックパッド最高!!!」っていうわけじゃなくて「トラックパッドを併用しないと使い物にならんwww」っていうのが正直な感想です。Command・Option・Controlのキー配列とか、それぞれの役割のイメージとか、そういうのがまだ体に染み付いてないから何でしょうけど、キーボードでの操作に違和感感じまくりです。

なので、とりあえず新機軸であるところのトラックパッド頼みな構成にしていってます。

Chromeのキーボード操作がWindowsと微妙に違う!

Windowsだと「Ctrl+Tab」で次のタブに、「Ctrl+Shift+Tab」で前のタブに移動するわけですが、Mac版Chromeは「Command+Shift+]」で次のタブに、「Command+Shift+[」で前のタブに移動します。

どうもなれなかったので「3本指で左スワイプ」で前のタブ、「3本指で右スワイプ」で次のタブに移動するように設定しました。

ついでに、「3本指で下スワイプ」でタブを閉じて、「3本指で上スワイプ」で新規タブを開いて、「Command押しながら3本指で上スワイプ」でひとつ前に閉じたタブを復元するようにしています。

あとは「中クリック」的な動作が無いのでリンクを新しいタブで開くときに、いちいちCommand押しながらクリックするのはとても面倒臭かったので「3本指でタップ or クリック」すると「中クリック」扱いになるように設定しました。

ここまで設定することで、ようやく快適なブラウジングができるようになりました。

homebrewは思ったより良い

インストールが若干面倒でしたが、homebrewは思ったよりよいです。

homebrewのインストールに必要なライブラリをDLするのに、AppleのDeveloperに登録する必要があるのですが、そのサイトがSafari以外対応してないという糞っぷりを除けばあとはすんなりインストールできました。

いいよ!って思った一番の理由は、「brew install rbenv」でrbenvがインストールできることw

オールマイティに良い訳じゃないんでしょうが、こういった最近のツールがpackageで提供されてるのは楽ちんで良いですね。

スピーカーがWindowsのモバイル機の比じゃない

Windowsのモバイル機って、ほぼビジネス用途だから、「スピーカーなんて飾りです!エライ人にはそれがわからんのです!」って言わんばかりに、各メーカーたいていの場合、音割れする小さいスピーカーが積んであることが多いですが、MacbookAirのスピーカーは音割れもなくいい音質です。

スピーカーの音がキーボードの奥から聞こえてくるので、聞き取りやすいです。

アプリケーションのインストールが楽ちん

Windowsと比べて良いなぁと思ったのは、アプリケーションのインストールが楽ちんなことです。

AppStoreでインストールを選べば勝手にやってくれるし、野良もDLしたものを展開すると、アプリアイコンとApplicationディレクトリのアイコンが表示されるので、アプリアイコンをApplicationディレクトリにドラッグするだけ。

Windowsインストーラ的なインストーラが開くようなアプリもたまにあります。

日本語入力はそれほど困らない

日本語入力は困るかなぁ・・・と思ってましたが、思ったより困りませんでした。

Google日本語入力のMac版があるのでそれをインストールして、設定からことえりをオフにして、Google日本語入力の設定で、入力モードを「MS-IME」にしちゃえばWindows機とだいたい同じ感覚で使えます。

熱い!熱い!とにかく熱い!

テンションあがってきたあああ!とかではなくて、発熱がすごいです。

本体もあー、あついねー。って感じなんですが、何よりもACアダプタがやばい。リアルに火事にならないか心配になる熱さです。

赤ちゃんとかが触ったら火傷するんじゃねぇかこれ・・・。

まとめ

初めてMac使ってみたわけですが、半日くらいなれるのに時間はかかるものの、なんとか使えるような状態にはなりました。

初日の感想としては、Macそんなに良くはないw

悪くは無いのですが、ドザー的に「Windowsだったらここあぁなのに」みたいなポイントがいくつかあったりするので、慣れの問題としてしっくりこないところがたくさんあります。

PC触ったこと無い人だったりそんなに使いまくってない人がMac触ると「ワー!キレー!」ってなるかもなぁっていう気がするものの、使いやすいかどうかは別じゃねって気がする。

あと思ったより親切じゃなかったw

4本指スワイプとかも知ってたからやれたけど、事前知識0ベースで使い出すとたぶん分けわかんないと思う。Mac買うなら周りにマカーがいることが必須条件な気がしてならない・・・。

とはいえ、この軽さでこのお値段で、Unixベースの開発環境が整ったので基本的には満足です。

2012/08/05 02:59

Macのターミナルでビープ音(ベル)を消すには

MacbookAirの11インチを買いました。
「Ubuntuと似たようなもんだろwwww」 と高をくくってたのですが、意外と違いが多すぎて若干戸惑っておりますなう。

そんなこんなで、TerminalのBeep音(ベル)がうざかったので消したかったのですが、ぐぐると「.inputrcにset bell-style none」って書けばいいお!って書いてあるけど、これだと消えませんでした。

正解は、上のメニューから「ターミナル」→「環境設定」→「設定」
から、使ってるプロファイルを選んで、右側のエリアの上のタブの「詳細」を選んで、その中にある「ベル」の「オーディオベル」がオンになってるのでそれをオフにすればOKです。 

2012/08/05 02:48

Bitbucket

Bitbucket wiki チートシート

Bitbucket(GitHubみたいなやつ)のwiki記法のチートシートを日本語訳しました。別に訳さなくてもいいレベルなんですけど。

本当は翻訳元に載せてもらおうと思ったらその窓口が見当たらなかったのでブログでアップするだけの簡単なお仕事です。

元ページ:
http://wikicreole.org/wiki/CheatSheet 

2012/06/16 04:54

JavaScript

Re: JavaScriptクイズ「x + 0 == x - 0」

JavaScriptクイズ「x + 0 == x - 0」
http://d.hatena.ne.jp/nishiohirokazu/20120427/1335518839

上の問題がさっぱりわからなかったので調べてみた。

2012/04/28 00:02

Firefoxでnew Dateするときの日付の形式

Firefoxで2012-02-05 15:23:00 のような、
ハイフン区切りの日付文字列を、
new Date('2012-02-05 15:23:00') でDate型に変換しようとしても、
変換に失敗するのが原因だった。

var startDate = '2012-02-05 15:23:00';
new Date(startDate.replace(/-/g, '/'));

っていういけてない方法で解決

2012/02/25 21:25

Google Calendarのclone

2012/01/28 19:06

Git

GitHubにやばいファイルをあげちゃった時にファイル消す方法

表題のとおり、Githubにヤバイのをpushしちゃった時にそれを消す方法。
何回かやらかして、毎回忘れるのでメモメモ。

GitHub からファイルを完全に削除
http://d.hatena.ne.jp/mooz/20090426/p1

上記サイトを参考に以下のコマンドを叩く

2012/02/12 18:15