Ubuntu 12.04 にアップグレード

少し経ちましたが Ubuntu 12.04 がリリースされましたので 11.10 からアップグレードしてみました。 :)

半年に一回のお楽しみでございます。 まだ数日しかつかっていませんが、5年サポートの LST 版だけあり、さすがにこなれた感じの仕上がりと思いました。

Win(Super)キーで起動するランチャーから。 ちなみに Unity 系の透過描画で背景に表示していないウインドウが亡霊のようにでてくるのはうちだけでしょうか。。いいんですが(笑)

Ubuntu12-01

12.04 からキーボードショートカットが表示できるようになりました。 Super キー押しっぱなしででてまいります。

Ubuntu12-00

ALT + TAB のタスクスイッチャーが少し変更になったようです。 同一アプリケーションは、まずサマって表示されます。 以下、Firefox を2窓あげた様子。

Ubuntu12-02

でもって、複数窓あるアプリの上にカーソル合わせて少し待つと各窓のプレビューがでてきます。

Ubuntu12-03

選択窓を出さないで ALT + TAB したときの挙動は以前と一緒で、同一アプリケーションでも次にフォーカスがくるようです。ハイブリット仕様で結構便利です。

Win + S の仮想デスクトップや、Win + W のアプリケーションプレビューはいっしょ。

Ubuntu12-04

Ubuntu12-05

GNOME 3.4 になっているので Nautilus もバージョンが上がっています。 「元に戻す機能」が使えるようになった模様。 GNOME 3 系の Nautilus さんはめんこくてお気に入り。

Ubuntu12-06

Unity 系ではランチャーのアプリケーションメニュー? が使えるようになっています。 Shutter というスクリーンショットを撮るアプリでは次のようにショートカットメニューがでてきます。

Ubuntu12-10

また、透過の描画が背景色を見てくれるようになったので通知が見やすくなったようです。 先日作った twitter デーモンくんもそのままうまく動きました。

Ubuntu12-11

Ubuntu 11.10 からのアップグレードインストールをしたので、リポジトリの状態などは分かってないのですが、すんなりアップグレードできました。 ThinkPad X61 にはまだ入れていないので日本語 Remix がでたら、こちらは新規インストールしてみたいと思います。

それにしても、昔は Linux で”十分”なんて言われていましたが、今や Linux じゃなきゃ”いやぁ”くらいに育ちましたねぇ。 ぼくは Ubuntu 8.04 か 9.04 にかけてクライアントのメイン OS として移行しましたが、なんでもいじれるソフトウェアのおもしろさや怪しさを残しつつ便利な感じになってきて良いと思いますです。 :)

SaCSS WordPress スペシャルと PHPカンファレンス北海道ビデオ

6/9(土)に開催されます、「SaCSS WordPress スペシャル」でセッションをひとコマ担当させていただくことになりました。:)

今回は Web サイト制作の観点から、WordPress 上での PHP の構文や動きの考え方についてを解説させていただきたいと思います。 個別の実装ではなく、実際にテーマをつくる時に応用できるように説明したいと思っております。

SaCSS Special2! WordPress Special – 札幌のウェブデザイナー・コーダーのためのセミナー・勉強会

6月9日(土)14:00~18:30(開場13:20)
札幌市民ホール 第2会議室(札幌市中央区北1条西1丁目)
60名
山口有由希 @yuki930
高橋朋代 @komomoaichi
田中広将 @hiromasa
長谷川広武 @h2ham
一般:4,000円(早割:5月9日までのお申し込み:3,000円 [1,000円割引])

インターネットのほうは門外漢なぼくでしたが、SaCSS メンバのみなさんのおかげで最近少しづつですが Web 制作のワークフローが分かってきましたので、何とかためになるお話ができればなぁと日々研究しておりますです。

先日のPHPカンファレンス北海道の動画も公開して頂きました!

PHPを活用したWordPressサイト制作 / PHPカンファレンス北海道2012

自分で自分の動画みるのはかなり恥ずかしいのですが、向き合ってトーク部分も精進してみたいと思います。。(笑)

さて次はどんなコスプレでいきましょう。

…。

…方向性間違え。。

onda Vi30 精英版その後

先日買いました中華パッドさんのその後です。 いくつか追加アクセサリを買ってみました。

なかなかよいおもちゃになってくれまして、お気に入っておりますぞ。 :)

さて Android のカーネルは USB のゲームコントローラに対応しているような記憶があったので、ふと刺してみたところやっぱりちゃんと動くではありませんか。 OS の UI もなんとなく操作できたりして凝っています。

せっかくなのでスーファミ風の USB ゲームコントローラと、HDMI もついているのでミニから普通のに変換するコネクタを購入してテレビに接続…。

20120427_220722

いい感じに動きました。 ゲーム動かしたらポータブルなゲーム機になります。 :D

買ったのは次のふたつ。

iBUFFALO USBゲームパッド 8ボタン スーパーファミコン風 グレー BSGP801GY

SANWA SUPPLY HDMI変換アダプタ ミニHDMI 黒 AD-HD07M

次。

ソフトウェア系では、まずフォントを変更。

/sysctrm/fonts/DroidSansFallback.ttf がシステムで使われる日本語フォントのようだったので、こちらを上書きで変更してしまいました。

Android 4.0 は FreeType つかっていると思うのですが、TrueType のヒンティングの扱いのデフォルト設定が日本語を扱うにはいまいちっぽく、入れたフォントでは違和感があったので FontForge をつかってヒントを削除したものを使っています。(ヒント使わない方がぼける気もするのですが)

ファイル->フォントを出力->オプションから「ヒント」をチェック外して書き出してあげれば良いと思います。 ありなしでスクリーンショットとっておけば良かったのですが忘れてました。。

ブラウザのほうは、いろいろ使ってみましたが Opera Mobile が一番相性が良いようです。 読み込みも分かりやすく、飛ぶようにスクロールするので気持ちいいですね。

Firefox Beta も割と速いですが、非同期読み込みと画面描画は Opera Mobile には及ばないようです。 Chrome Mobile も Firefox と似たようなひっかかりを感じます。

device-2012-04-27-223122

Opera のフォント設定は、opera:config を URL に入れて CSS Font から。 指定するフォント名は、/system/fonts 配下の”フォント名”を正しく CSS 指定のように正確に入れてあげることで認識するようです。 認識できないと、せっかく入力した設定が Robote フォントに戻っていらっとします(笑)

あとは、BubbleUPnP や VPlayer などを入れてみました。 VPlayer はバージョンアップしてから音ずれするようになったような…。 きっとそのうち直るでしょう!

最後はスタンド。

iPad / iPad 2 / Xoom / P7100 / TouchPad対応スタンド 180度まで調節可能 ブラック

20120427_220213

なんの変哲もないスタンドですが、この機械でもよい具合に収まりました。 たためば持ち歩きも可能です。

20120427_215942

GyaO でふじこちゃんを堪能しているの図。。 立てばなんでもいいと思いますが、角度も変えれたりして意外と便利でした。

てな感じで、ゲームや Opera Mobile の動きをみていますと、素性はなかなか高速な機械のようで、まだまだ遊べそうです。 :)

PHP カンファレンス北海道2012 WordPressセッション&ハンズオン

2012/4/21 に開催されました、PHP カンファレンス北海道で「PHPを活用したWordPressサイト制作」のセッションとハンズオン「初めて作る WordPress オリジナルテーマ」のお手伝いをさせて頂きました。:)

PHP カンファレンスは北海道では初開催ということでしたが興味深いセッションも多く、Local の方達の運営もしっかりされており良い感じのカンファレンスでした。

WordPress がメインではないイベントでお話しするのは実は初めてだったような気がしますが、興味を持っていただけた方もいらっしゃいまして良かったと思います。

「PHPを活用したWordPressサイト制作」セッション開始前のひろまさ。

20120421_111456

twitter の #phpcondo タイムラインにはのっけから、

「とりあえず蝶ネクタイの説明からしてもらおうか。」

「発表者の蝶ネクタイに二度見した」

「スカート男子かと思ったら、バリスタか何か?」

等々。 すいません、すいません(笑)

コスプレしてみたかったの。。

みつけて声をかけてくださった方、ありがとうございました!

プレゼン資料の方ですが、一応こちらに掲載しておきます。

PHPConDo2012.pdf

内容の方ですが、テーマ作成中のスクリーンキャストの動画がメインになっていますので、.pdf だけだとよく分からないかもしれません。 後日、USTREAM の録画が公開されるそうですので、もし興味がありましたらそちらでどうぞ。

公開していただきました。:)

さて、スクリーンキャストの撮り方のご質問をうけることがありますので、ここで簡単にご紹介します。

まず録画ソフトですが Ubuntu の RecordMyDesktop で撮っています。 他の OS でも同様のものあると思います。

ポイントは、プロジェクタの解像度で撮ることで、大抵 4:3 の 1024×768 なのでそれに合わせると大きく綺麗に出力できます。 ぼくは、モニタをもうひとつつないで、片方の解像度を 1024 にしてそちらで録画するようにしています。

あとは心の中でしゃべりながら録画。。 Ubuntu は Compiz の機能で Super + Ctrl + マウスクリックで画面拡大が効きます。

本番開始前は、自分の操作ながら何をやっているのか意外に忘れてしまっている時があるので、何回か見直して練習しておきます。 今回は先日買いました Android タブレットに .ogv 動画ファイルいれて VPlayer で再生して練習していました。

Ubuntu の RecordMyDesktop で撮ると .ogv ファイルになるのですが、このファイルは再生できる PC が限られるので、万が一の当日マシントラブルに備えて ffmpeg で mpeg4 とかにして USB メモリに入れておくとよいです。

find . –name ‘*.ogv’ –exec ffmpeg –i {} –sameq –vcodec mpeg4 –f mp4 {}.mp4 \;

とかで前の晩にでもバッチエンコードしておくと良いでしょう。

以上、あんまり関係ありませんがスクリーンキャストの撮り方でした。

ハンズオン「初めて作る WordPress オリジナルテーマ」の講師面々。

20120421_161452

写真手前から コモモさん、メイン講師 Nao さん、ハムさん。

来てくださった方、ありがとうございました。 お疲れ様でした!

さて、6/16 はオープンソースカンファレンス北海道 のブース & セミナーを WordPress(WordBench札幌) で申し込ませていただいています。 セミナーはコモモすにお願いしたので面白いと思いますぞ。

興味がありましたらぜひお立ち寄りくださいっ。 :)

VPS にデーモンを常駐させて遊ぶ

さくらインターネットさんが値段を下げてにわかに活気づく VPS。

VPS のよいところは、root 権限があることで、もう Web サーバやら PHP やら MySQL やらの束縛からは解放されて、好きな言語や環境でインターネットのアプリケーションがつくれる環境が整いました。 :)

たぶん VPS で動かして一番面白いのは、デーモンとして常駐してリアルタイムで処理を行うアプリケーション。 じゃーってことで、Groovy でやってみることにしましょう。

まずは UNIX Daemon のつくりかた。 C でやれば fork して tty 切り離してみたいな感じになるとおもいますが、ここは Groovy ってことで、JVM 上のアプリを daemon 扱いにしてシグナルをとばしてくれる Apache Commons の commons-daemon を使うとよいです。

Daemon : Java based daemons or services

Daemon is made of 2 parts. One written in C that makes the interface to the operating system and the other in Java that provides the Daemon API.

commons-daemon には jsvc という UNIX Daemon と Java を取り持つバイナリのソースが入っています。 まずはこれを VPS の環境なりでコンパイルします。 Java のホームディレクトリを指定して configure をかけるのがポイントです。

src/unix$ ./configure --with-java=/usr/lib/jvm/java-6-sun

make すると jsvc のバイナリができます。

次に Java でデーモン用のソースをかきます。 ここでは Groovy で。

org.apache.commons.daemon.Daemon を implements してシグナルハンドラと結びつく規定のインターフェースを実装してあげればOKです。 サービスクラスはスレッドにして、ちゃんと途中でとまるようにつくる感じになるでしょう。

ここではおなじみ twitter4j のストリーミング API をサービスクラスにしています。 VPS とは関係ないですが、ストリーミング API でうけたメッセージを Ubuntu の NotifyOSD で通知するサンプルです。 (画面ならデーモンじゃなくて UI スレッドでやれって感じですが、サンプルということで…)

package net.maple4ever.daemon import java.security.MessageDigest import org.apache.commons.daemon.* import org.apache.log4j.Logger import org.gnome.gtk.Gtk import org.gnome.gdk.Pixbuf import org.gnome.notify.Notify import org.gnome.notify.Notification import twitter4j.Status import twitter4j.TwitterFactory import twitter4j.TwitterStream import twitter4j.TwitterStreamFactory import twitter4j.User import twitter4j.UserStreamAdapter import twitter4j.conf.ConfigurationBuilder class TwitterDaemon implements Daemon { private static TwitterDaemon daemon = new TwitterDaemon() private static Logger logger = Logger.getLogger(TwitterDaemon.class) private TwitterStream stream = null // twitter oAuth 設定(取得して入れます) def consumer = "" def consumerSecret = "" def accessToken = "" def accessTokenSecret = "" @Override public void init(DaemonContext arg0) throws DaemonInitException, Exception { // twitter 認証設定 def builder = new ConfigurationBuilder() builder.setOAuthConsumerKey(consumer) builder.setOAuthConsumerSecret(consumerSecret) builder.setOAuthAccessToken(accessToken) builder.setOAuthAccessTokenSecret(accessTokenSecret) def config = builder.build() // GTK 初期化 Gtk.init([] as String[]) Notify.init("notify.groovy") // Strinming API 取得 def twitter = new TwitterFactory(config).getInstance() stream = new TwitterStreamFactory(config).getInstance( twitter.getOAuthAccessToken()) // Strinming API イベント登録 stream.addListener(new UserStreamAdapter() { @Override public void onStatus(Status status) { User user = status.getUser() def url = user.getProfileImageURL() def screenname = user.getScreenName() def text = status.getText() try { // twitter アイコン取得 MessageDigest md5 = MessageDigest.getInstance("MD5") def md5str md5.with { md5str = new BigInteger( 1, digest(new File(url.file).name.bytes)) .toString(16).padLeft(32, '0') } def filename = "/tmp/" + md5str File file = new File(filename) if(!file.exists()) { file << url.getBytes() } def pixbuf = new Pixbuf( filename, 40, 40, true) // NotifyOSD 通知 def notify = new Notification( "@${screenname}", "${text}", null) notify.setIcon(pixbuf) notify.show() } catch (e) { logger.error(e.message) } } }) } @Override public void start() throws Exception { stream.user() } @Override public void stop() throws Exception { stream.cleanUp() } @Override public void destroy() { } static main(args) { daemon.init(null) daemon.start() } }

# こんなの動かす人いないと思いますが、GTK-Java のライブラリ jar は sudo apt-get install libjava-gnome-java で /usr/share/java かその辺に入ると思います。

デーモンではなく、通常実行でも動作させてデバッグしやすいように static main(args) もいれています。

で、できたら次のように jsvc にクラスを渡してデーモン化してもらいます。

/opt/twitter-daemon/bin/jsvc-ubuntu \ -pidfile /opt/twitter-daemon/bin/TwitterDaemon.pid \ -user hiromasa \ -home /usr/lib/jvm/java-6-sun/ \ -cp /opt/twitter-daemon/lib/*:/opt/twitter-daemon/classes \ -Dlog.home=/opt/twitter-daemon/logs/TwitterDaemon.log \ -Dstream.user.repliesAll=false \ net.maple4ever.daemon.TwitterDaemon

次のように Java のプロセスが 2つ常駐すれば成功です。

hiromasa 6975 1 0 23:09 ? 00:00:00 jsvc.exec -pidfile hiromasa 6976 6975 17 23:09 ? 00:00:01 jsvc.exec -pidfile

NotifyOSD で twitter の投稿がリアルタイムに通知されてきます。 :)

moz-notify

停止は以下のようにします。 start / stop/ restart 用のシェルをつくることになるでしょう。

/opt/twitter-daemon/bin/jsvc-ubuntu \ -stop \ -pidfile /opt/twitter-daemon/bin/TwitterDaemon.pid \ net.maple4ever.daemon.TwitterDaemon

ここではソースのサンプルとして画面通知にしてしまっていますが、たとえば twitter 関係で VPS で動かすようなものなら、 bot 的なものも cron とかの無理な方法をとることなく簡単に扱いやすいアプリケーションが作れると思います。

常時インターネットにつながっている VPS でリアルタイム処理ができるのは、いろいろ夢が広がりますね。

GroovyClassLoader をうまくつかって Java と Groovy のインターフェースをつくってあげれば、スクリプトテキストファイルのまま、コンパイルすることなくデーモンをつくるようなことも可能です。

daemon

え、最後のそれ、らい子ちゃんを載せたかっただけだろって、、、。はい。 orz

中華パッド – onda Vi30 精英版購入

東京にいく用事がありましたので、前からちょっと気になっていた Android のタブレットを見に秋葉原に行ってみました。 このジャンル、iPad ならぬ aPad とか中華パッドとかめんこい名前がついているようです。

通販でももちろん買えるのですが、タッチパネルを触った動きを見たかったので現地にて購入です。

日本初のapad(android pad)専門ショップ[ネット通販・販売]/TOPページ

最初 7インチ ICOO D70W に目星をつけていたのですが、店頭で操作してみるとどうも”もたる”感じがしたので、8インチの onda Vi30 精英版にしてみました。 店員の中国人(かな?)のおねーさんに無線 LAN つないでもらったり、リセットしてもらったりよくしてもらえました。 :)

apad-04

どうやらこの機械、まだ出たばかりなようですが Android 4.0.3 + 1024×600 液晶 + 1G メモリの機械で、ちゃんと操作が指についてきてなかなかいい感じです。

Google Play! が最初から入っているので、アプリも普通に入れることが出来ます。(以下、スクリーンショットは縮小していますので念のため..)

apad-01

Firefox。 スマートフォンで動かすといまいっぽですが、タブレットで動かすと普通の感じですっ。

apad-02

日本語初期設定で入っている FreeWnn フリック対応版はちょっと相性バグがあるようで、入力は出来るのですがフリック時に画面が乱れます。 てなわけで ATOK をインストール。 こちらもうまく動きます。

apad-03

そのほか、BubbleUPnP でローカルサーバの DLNA 経由で動画を再生したり、Seemic で twitter してみたりもきちんと動作。 ちょっと驚いたのが背面のスピーカ。 良いものを使っているようで、うちの ThinkPad とかよりずっと良い音がします。 寝ながら動画向きですね。

apad-05

モノも安っぽくなくちゃんとしています。

I/O は USB と HDMI、それから充電用のコネクタ。 最初、充電はこのアダプタからのみかなぁって思っていましたが、USB からも充電できています。 おそらく電圧の関係で USB だと充電が遅いので外付けもあるのだと思われます(たぶん) なので出先できれても、USB で延命可能でしょう。:)

adb shell するとルートが既にとれていますので、いろいろできそうです。 それから、気になるのが ARM 版の Ubuntu。 まぁぼくの力量では入れれないかもですが、、しばらく遊べそうですぞ。 :)

ThinkPad T420s + Ubuntu 11.10 + xbmc 導入

長年苦楽をともにしてきた(?)愛機の ThinkPad X61 くんですが、そろそろあちこちにガタがきましたので、ここで思い切って ThinkPad T420s を買いました!。

12 インチ系 X シリーズにするか、14/15 インチ系の T シリーズにするかだいぶ迷ったのですが、s 付きの T シリーズは X とそれほど重さも値段も変わらず、大きさもちょうどいいくらいと気がついたので T420s とあいなりました。 このところずいぶん持ち歩いて使っていましたが、うまいこと動いてくれています。 :)

X61 の液晶解像度 1024×768 から 1600×900 の 16:9 液晶にパワーアップ。 Core 2 / 2Gメモリから Core i5 / 4Gメモリなので使っている感じもずいぶん速く感じます。

thinkpad01

キーボードの左右の余白(スピーカ部)が X シリーズとの大きさの違いと思えばだいたい当たっています。

液晶の発色は、、視野角がかなり狭い感じですがまぁ正面にいけばなんとか(笑) 事務所では X220 と T510 使っていますが、液晶はそちらのほうが良いです。 バックライトLEDの関係かと思いますが、ほとんど持ち歩かないのであれば T5x0 シリーズがいいと思います。

左右のスピーカは 600円くらいでついでに買った Lenovo のスピーカです。

…なんてことしているうちに、デスクトップの Windows 機のキーボードまで壊れてしまいました。。 エンターだけきかなくなるという謎の現象。。 というわけで、Microsoft Confort Curve 3000 も買ってみました。

keyboard01

おしゃれな感じですが、山鳴りになっていて特殊な感じのキーボードです。 少しなれるまでに時間かかりますが、慣れてしまえば問題ない感じです。 CTRL が少し遠いので、CapsLock にあててしまっています。

あと、Microsoft InteliType Pro がなぜか動かないようです。 標準ドライバのみで動かす模様。 マルチファンクションキーにミュートがないのがちょっといたい。

話はもどって ThinkPad T420s くんですが、買って Windows のリカバリDVDつくりおわってすぐ Ubuntu 化しました。 Windows7 は削除っ。 ちょっと急いでいて X61 からすぐ環境移行したかったので、まずは X61 と同じ Ubuntu 11.04 を。

11.04 では Intel のグラフィックドライバの関係で、T420s では X がフリーズする不具合があるようです。 とりあえず、intel-edger の PPA を入れてしのいでいましたが、こちらもフリーズまでいかなくても、ドライバ再起動のような動作で画面が乱れることがあるようです。 12.04 では直りそうな雰囲気なので待つこととしましょう。 :)

さて、実は Ubuntu 11.10 はいくつか設定が面倒そうなところがあったので、X61 ではパスしていたのですが、本日時間が合ったので T420s に 11.10 を 11.04 からのアップグレードで入れてみました。 :)

thinkpad02

無事導入できました。 Nautilus がめんこい感じでいいですね!。

T420s の液晶は 16:9 でビデオみるのにちょうど良いので、次のメジャーバージョンの完成が近づいているフル画面型のメディアプレイヤー、 xbmc の unstable も入れてみました。

sudo add-apt-repository ppa:team-xbmc/unstable
apt-get update
apt-get install xbmc xbmc-standalone
apt-get install update

こんな感じでインストールできると思います。

xbmc01

Ubuntu 版はフォントの設定なども対応できるようで、設定を変更するだけで日本語化可能になっていました。

外観->設定->スキン->フォントを Arial based に。

xbmc02

外観->設定->インターナショナルから Japanese / Japan / Japanese(Shfit-JIS)で日本語化されます。

xbmc03

相変わらずかっこいいかんじで、便利です。 :)

xbmc04

xbmc05

てなわけで、早速働かされている T420s くんですが、最強と言われている新キーボードは使いやすく、相変わらずうまく動くトラックポインタとマシンスペックの向上は間違いなく作業速度をあげてくれました。

ありがとう、ありがとう。 今後ともよろしくね。 :)

2011年はバッタの夢を見たか

2011年も残すところあと数時間。 hiromasa.another ブログのエントリから今年興味があったことを振り返ってみます。 はてさてほほう。:)

とりあえず今年の Archive をみると寂しいことにブログの本数が少ない! 週1くらいを目指していたのですが、月1なんて時も2ヶ月ほど。 別に twitter があるわけだからという訳でもないのですが、来年はもうちょっとお気楽に書いていきましょうぞ。

てなわけで、今年の一番の興味の対象であったらしいプログラム言語 Groovy ネタから。 以下、Groovy を使っていろいろ試している感じのエントリーです。

ぐるぐる Groovy。。

Groovy + XLSBeans でエクセルから HTML に流し込み

プログラミング Groovy キタ!

ぐるぐるぐる~び~。

Groovy + SWT + WebKit + jQuery Mobile でデスクトップアプリケーションをつくる

WordPress Live Writer が欲しい

twitter streaming API への接続

Groovy と PS3 Media Server プラグイン

PS3 と PS3 Media Server

Groovy と GUI アプリケーション

WordPress 3.1 の新しい XMLRPC API

Groovy は便利ですなぁ。 仕事でもいくつか活用するシーンがでてきていました。 個人ではたいしたものはつくっていませんが、、PS3 Media Server のプラグインなどは今も現役で動作しています。 :)

Redmine を JRuby + Tomcat で動かすネタ(メモ)もいくつかみつかります。

Redmine 1.0.5 + JRuby + Tomcat6 デプロイ

Apache Tomcat 6.0.32 インストールメモ

さくらの VPS と Apache Tomcat7

Redmine 1.2.2 + Eclipse Mylynでチケット管理

Redmine も現役でローカルサーバ、VPS で動作しています。 Redmine を JRuby で動かすは環境の準備がしやすく、安定していて良いですぞ。

そのほか例年変わらず Ubuntu / Java / Eclipse 系がありまして、、

最後に WordPress。

WordPress を dotCloud にデプロイ

OSC 北海道 2011 WordPress 出展

SaCSS vol.24 コーディング勉強会と OSC 北海道 2011 WordPress セミナー告知

WordPress は 5分でインストールできるか(2011年版)

WordPress 3.1 の新しい XMLRPC API

ありゃ、5本(笑)。

とはいえ、OSC 北海道出展や、札幌の有名な Web 勉強会である SaCSS メンバのみなさんに仲良くしていただいたり、WordCamp 東京に参加したりとオフライン活動が多かったのが今年の特徴だったかもしれません。楽しかったです。 :)

OSC 北海道 WordPress ブース。

DVC00288

札幌にてみんなで遊んでいる図。

2011-09-2221.50.23

WordCamp 東京にて。

20111126_194124

rps20111128_212807_425

札幌コワーキングスペース、ガレージラボさんにて。

20111203_172643

さて、年始めの 2011年の目標として「2011年スタート」エントリでぼくはこう書いていました。

もてるプログラマーに!

…。

2012年は、Groovy と、、OpenGL も少しやりたいし、スマートフォンアプリとか、WordPress もやりたいことがあったり、、というわけで、

カリスマプログラマーに!

…。

てなかんじで、いつまでも成長のないひろましゃくんですが。。

今年もお世話になりました。 来年もよろしくお願いいたします! :)

JSDT jQuery 開発環境

先日さすらいの Web サーフィンをしていたら、JSDT (JavaScript Developer Tool)の jQuery サポートをみつけたのでちょっと試してみました。 たぶん前からあったものだと思うのですがなかなか良さそうな雰囲気であります。

とりあえずインストールより。

最近、Eclipse PDT(PDT Developer Tool)のオールインワン的なリリースがないのですが、とりあえず PDT に入れています。 Eclipse Classic に PDT プラグインを追加すれば PDT になります。

Eclipse 3.7 / Indigo / PDT 3.0

  • Installed and running Eclipse Classic 3.7

これに JSDT jQuery を追加で入れます。 eclipse.org から for JavaScript Developer のパッケージもでていますので、JS しかやらないかたはこちらでもいいかもしれません。 PDT を追加することもできるでしょう。

Market Client が入っていないと JSDT jQuery が入れにくいので追加します。

jQuery10

で、Eclipse Market から JSDT jQuery を追加。

jQuery11

JavaScript プロジェクトをつくって右クリックからプロジェクトの設定。 JS のライブラリを選んであげます。 jQuery が追加されているはずです。

jQuery13

こんな感じに。

jQuery14

ではやってみましょう。 :)

jQuery 補完機能。

jQuery15

うん!よい!

JSDoc(?) もちゃんとみれます。 メソッド名と引数わかればこちらのものです(笑)

jQuery16

ちなみに、jQuery と関係ないですが、JSDT のリファクタリング機能も試してみましょう。

変数名リファクタリング。 下に別スコープの同名変数があることに注目してください。

変数 hoge を moge にリファクタリング。

jQuery30

jQuery31

ちゃんとスコープみて test1 の中だけ変えてくれています。

また初期化警告もでています。 ただのテキストエディタと違ってプログラムを読んでいてくれるからできる実装です。

jQuery32

JavaScript は動的型付言語ですので、IDE サポートも限界がありますがなかなか動くようですね!

また Web Developer 系の Eclipse には HTML のリアルタイムバリデータとか、PDT には PHP のリアルタイム警告サポートもあります。

閉じタグ忘れ。

jQuery33

閉じ括弧忘れ。

jQuery34

Eclipse メインじゃなくても既存のファイルをワークスペースにもってこれますので、使うときだけという運用も可能です。

jQuery20

プロジェクト作成時に form exsisting source にすればOKです。 あと、JS/PHP サポートをプロジェクト右クリックからつけてあげられます。

jQuery35

てな感じなのでつかわにゃそんそん。  :)

ぐるぐる Groovy。。

記事書いていませんでしたが、最近も Groovy くんにはだいぶお世話になっております。

テストデータ作成や小物ツールをつくるのに非常に便利な Groovy。

開発環境も Eclipse にプラグイン入れるだけでフルセットそろいますし、テキストエディタだけでも jar ひとつでいけますし、実行環境も Java が入っていればいいだけなので、人にも渡しやすく非常に重宝しております。

ということで、ちょこちょこいじっている訳なんですが最近気がついたこと。

ふと Groovy 1.8 系で下のコードを。

import org.codehaus.groovy.runtime.NullObject

// Groovy だとどちらも普通(Java だと上だけ通る)
assert(Integer.valueOf(127) == Integer.valueOf(127));
assert(Integer.valueOf(128) == Integer.valueOf(128));

// なるほど
assert(null == null)
assert(null.equals(null))
// なんとなく Groovy が不思議
assert(null != new NullObject())
assert(!null.equals(new NullObject()))

Groovy の == は equals の演算子オーバーロード。

というわけで、上の2つの assert は普通に通ります。 ちなみに Java だと両方通らない感じですが、上は通ります。 結構謎ですね(笑)

で、したの null のほう。 null もオブジェクトっぽいのですが、最後の2つの assert が不思議な感じ。

なんとなく別件ですが、このパッチがそれっぽい…。

[#GROOVY-4985] null and .with{} – jira.codehaus.org

Currently this fails:

null.with { assert it == null }

単純にぼくがなんかぼけてるのか、、、まぁなんだってわけでもないのですがふと(笑)

あ、そうそう、壁紙変えました。 :)

Screenshot20111210

は、張る画像がなかったわけじゃないんだからね!