キーボードショートカットでカーソル移動(Mac)

Windowsでは、Homeキーで行頭、Endキーで行末に文字の入力箇所を移動できます。これらに相当するMacの操作は何パターンかあるようですが、一番親しみやすいのは「Command + 矢印キー」でしょう。

「Command + →」なら行末に、「Command + ←」なら行頭に入力箇所を動かせます。上下なら当然、上下に移動します。

ただし、これらのキーの挙動は、アプリケーションによって異なります。大抵のエディタであれば、入力箇所移動になっていると思います。

が、Firefoxでは、「Command + 左右キー」はそれぞれ「戻る」「進む」に対応しています。テキストエリアの入力中にうっかり使ってしまうと、悲しいことになるので注意が必要です。

なお、Control + Aで行頭、Control + Eで行末、という操作も可能で、こちらはFirefoxでも使えます。他にも、Control + N (Next)で次の行、Control + P (Previous)で前の行、といった操作が可能です。これらはEmacsのキーバインドと同じです。

Controlキーは、私の使っている英数キーボードだと一番下の列の左端から2番目という、大変押しにくい場所にあります。システム環境設定>キーボード>キーボード>修飾キー で、CapsLockキーにControlキーを割り当てると、使いやすくなるのでオススメです。

なお、Mac OS XのキーボードショートカットというApple公式のドキュメントもあり、ショートカットが網羅されています。

VirtualBox内のUbuntuにSSH接続する

以前紹介した通り、私はMacBook AirにVirtualBoxを入れ、そこにUbuntuを入れてLAMP環境を構築しています。

しかし一方で、開発環境(AptanaStudio等)はMacに入れてます。このため、DB操作の必要な際はMacとUbuntuを行ったり来たりするのですが、これがめんどい! Ubuntuでやる作業の大半は、端末経由でMySQLを操作すること。ならば、SSH接続してしまえばよいではないか! ということで、やってみました。

参考にしたブログ記事:VirtualBox VMに入れたLinuxに、SSHで繋いだよ。

私の環境はMac OS X 10.8(Mountain Lion)とUbuntu 12.04ですが、この記事の通りにやればほぼ問題ないと思います。

一点だけ補足しておくと、MacのターミナルでSSHログインするには、「ssh ユーザー名@IPアドレス」と入力します。例えば、「ssh ryo@192.168.56.101」など。

とりあえず、つなぐところまではOKです。が、現状だと当然ながら、Ubuntuを起動した状態でないと接続できません。若干リソースがもったいないかな、これならMacにMySQL入れちゃえば良くね、という感もあり。

VirtualBoxをバックグラウンドで走らせる方法も試したのですが(参考記事)、上手く接続できず。取り急ぎは、VMに与えるメモリの量を1024MBから512MBに減らすことで対応します。

『Perl言語プログラミングレッスン[入門編]』を読了した

今日、↓を読了しました。

新版Perl言語プログラミングレッスン入門編
新版Perl言語プログラミングレッスン入門編

実は、プログラミング言語の本をcover to coverで読み通したのは本書が初めてだったりします。『たのしいRuby』は、5分の3(全5部中、第3部まで)で止まってます。

仕事で使っているPHPやSQLはつまみ食いで身につけたし、JavaScriptに至っては、見よう見まねの域を出ません(jQueryのドーナツ本は最後まで読みましたが、jQueryは言語とは呼べないでしょう)。

本書が読み通せたのは、ひとえに、著者である結城浩氏のおかげです。配列のようなプログラミング初心者のつまづきがちなポイントや、正規表現のような苦手とする人の多い分野を、類書よりもはるかに丁寧に解説しています。

内容が全部分かったかというとそんなことはなく、Perl独自の部分はやったそばから忘れてたりもするのですが、他の言語でも共通する部分(正規表現の基本文法等)はしっかりと身につきました。

これで、今月末のYAPCに参加するのに最低限の予習はできたかな、と。

次のステップは『初めてのPerl 第6版』といきたいところですが、その前に一度、仕事で使う言語について、知識をしっかりさせておこうかな、とも思ってます。今まで、PHP+SQLは、仕事で必要になる→調べる という学習法がメインで、実際効果も上がっています。

しかし一方で、PHPのオブジェクト指向の部分などは、利用することはあっても自分で書くことはないため、理解が不十分。

SQLに関しては、基本的なCRUD文さえ書ければ仕事にはなりますが、応用的な書き方ができると省力化が出来ます。私の経験だと、SELECT DISTINCTを知らなかったばかりに、PHP側で重複レコードを弾く処理を書く、というムダをやったりしました。「SQLで工夫してPHPはサボる」と「SQLはサボってPHPで頑張る」だと、SQLで工夫したほうが処理の効率も良くなるようです。

ということで、しばらくはPHPやSQLの学習をメインにしようと思ってます(将来性を考えるとJavaScriptなんでしょうが、最近は仕事でJavaScript書く機会がない…)。

MySQL データ型メモ

CREATE TABLEする段になって、自信が持てずリファレンスを見ることがたまにあるので、よく使うものをメモ。

CHAR 固定長文字列(255文字まで)
VARCHAR 可変長文字列。格納するバイト数を指定する(255文字まで)
TEXT テキストデータ。65,535文字まで。容量は指定しない
INT 整数(負の数もOK)
DEC 小数も扱える
DATETIME 日付と時間
DATE 日付のみ
BLOB バイナリデータ(65,535バイトまで)

CHAR(10)と書くと、10文字を格納可能な固定長文字列のデータ型となる。VARCHAR(10)だと10バイトなので、日本語等のマルチバイト文字列を扱う際には注意が必要。MySQL 4.1以降では、VARCHAR(10)は「10文字」となり、半角英数であれ、マルチバイト文字であれ、10文字を格納できる。VARCHAR(10)で10バイトとなるのは、MySQL 4.1よりも前のバージョン。

INT(10)だと10桁の整数。DEC(10, 5)と書くと、全部で10桁で、小数点以下5桁まである数を格納できる。

紙は、使える。

今日、ページング機能の実装で悩んでいました。ページに実際に表示する数列と、ページ遷移のために使う数列とで別のものを生成する必要があり、その上手い作り方が思い浮かばなかったのです。

しばらく悩んだ後、考えを整理するために紙に数式を書いて計算しました。すると、それまで1時間ほどモニターの前で悩んで答えの出なかった問題が、10分ほどで解けてしまいました。

紙を使うことの最大の効能は、「メモリの節約」だと思います。一度計算した結果は書いておけばよいので、「このやり方だと、こうなる」と記憶しておく必要がありません。

外部記憶装置としてはコンピューターも勿論使えますが、コンピューターに入力した情報は、見通しが悪いという欠点があります。紙は、好きなところに好きなことを書けるので、直感的に分かりやすい整理ができます。

紙は、思考を補助するツールとして非常に優秀だなと、再認識しました。