Pharo 3.0 + Seaside 3.0 + jQuery Mobile for Seaside

ときどき宇宙に自分一人しかいないんじゃないかと思うことがある。
Pharoの話。
「いや、あの人もあの人も使っているはずじゃないか。俺一人じゃない」とあわてて思う。
ほんとかな。
Pharo 3.0にSeaside 3.0を載せるのは簡単だ。

MetacelloConfigurationBrowser open.

をDo itした後で、Seaside3をInstall Stable Versionすればいいのだから。
jQuery Mobile for Seasideを入れるのが問題だ。
http://jquerymobile.seasidehosting.st/には、

Gofer it
  url: 'http://ss3.gemstone.com/ss/jQueryMobile';
  package: 'ConfigurationOfJQueryMobile';
  load.
ConfigurationOfJQueryMobile loadBleedingEdge.

すればいい風に書いてあるがウソっぱちだ。というより、ウソになってしまった。

Gofer it
  url: 'http://ss3.gemstone.com/ss/jQueryMobile';
  package: 'ConfigurationOfJQueryMobile';
  load.

だけして、(ConfigurationOfはしないで)ConfigurationOfJQueryMobileクラスのbaselineを覗いてみればわかる。
なんだConfigurationOfSeaside30は!こんなもんインストールしようとするな!!二重にSeaside3.0を入れそうになるじゃないか。OmniBrowserとかインストールするなよ。
まあ、これはjQuery Mobile for Seasideよりも、Seaside 3.0側の問題か。
回避するにはbaselineからSeasideCoreとSeasideTestsに関する記述を全て除去してから、

ConfigurationOfJQueryMobile loadBleedingEdge.

すれば良い。
途中で2度ほどWarningが出るが、見なかったことにしてProceed。
なんとかインストールできる。
でも、jQueryのサイトを表示させると下の方にエラーが表示されてしまう。
これを回避するには、JQMHtmlRoot>>closeOn:の一部をコメントアウトする。

closeOn: aDocument
  "aDocument scriptGenerator
   close: self on: aDocument pageId: self pageId."
  self writeFootOn: aDocument

本当にこれでいいのだろうか。
SeasideでjQuery Mobileを使っているのは宇宙で俺一人なのだろうか。
(そういやiliad使ってたときも同じこと考えたな)

ConfigurationOf無限地獄

いままで自分のプロジェクト用のConfigurationOfを一生懸命書いて来た。
あっちこっちのリポジトリに散らばったパッケージを自動的にインストールするように。
でも、なかなか思い通りにならないので諦めた。
ConfigurationOf無限地獄に陥ると本業が全然進まなくなる。
Goferで書いたテキストをコピペ&Do itした方がずっとすっきりする。
結局、ConfigurationOfはあくまで自分の管轄下のパッケージだけにした。
なんだかむなしい。
気分転換にサイトのテーマを変更してみた。なぜだか背景が表示されない。まあシンプルでいいか。

特定のTraitを使っているクラスを列挙する

Traitを削除しようとして、どのクラスに影響があるのか調べたかったのだけど、NautilusのAnalyzeにそんな項目がなかったので、Traitを使っているクラスを抽出するコードを書いた。

(Smalltalk allClasses select: [:each | each hasTraitComposition ])
  select: [ :class| class traitComposition includesTrait: 【Trait名】 ]

どうせすぐに忘れるので備忘用。

TurtleBot(CREATE)が動かなくなった

久しぶりにTurtleBotを動かそうと、接続しているマシンのubuntuをアップデートした。
イヤな予感がした通り、アップデート後にTurtleBotが動かなくなってしまった。
他と問題を切り分けるために、turtlebot_bringupではなく、create_nodeだけで起動してみたら、以下のような結果となった。

$ rosrun create_node turtlebot_node.py
[INFO] [WallTime: 1409911201.387855] serial port: /dev/ttyUSB0
[INFO] [WallTime: 1409911201.389007] update_rate: 30.0
[INFO] [WallTime: 1409911201.391291] drive mode: twist
[INFO] [WallTime: 1409911201.392122] has gyro: True
[INFO] [WallTime: 1409911201.559079] self.gyro_measurement_range 150.000000
[INFO] [WallTime: 1409911201.560099] self.gyro_scale_correction 1.350000
[ERROR] [WallTime: 1409911204.652150] Failed to open port /dev/ttyUSB0.  Please make sure the Create cable is plugged into the computer.
Failed to open port /dev/ttyUSB0.  Please make sure the Create cable is plugged into the computer. 

続きを読む →

プロセスのクリア

どかっとプロセスを増やしてしまった時に。洗いざらいterminateしたくなるけど、プロセスブラウザからいちいちAlt tでは面倒くさい。
nshさんの投稿から。
http://forum.world.st/Pharo-dev-why-so-many-processes-are-running-at-startup-time-td4694226.html

(Process allInstances
  reject: [ :p |
    {(InputEventFetcher default fetcherProcess).
     (Processor activeProcess).
     (WeakArray runningFinalizationProcess).
     (Processor backgroundProcess).
     (SmalltalkImage current lowSpaceWatcherProcess).
     (UIManager default uiProcess).
     (Delay schedulingProcess)} includes: p ])
  do: [ :p | p suspend; terminate ]

これはとても助かりますね。

NativeBoostでのライブラリの配置

ここ2、3日、NativeBoostで遊んでみた。
以前にSmalltalk勉強会でもらった資料をもとに、LeapMotionを利用できるようにした。結果的には単純なことだったのだが、最初はうまく外部の動的ライブラリを読み込んでくれなくて苦労した。
特にライブラリをどこに置くかがMacやLinuxで異なるようなので、備忘のために記録しておく。
続きを読む →

ChromeBookへのLinuxインストール(chrubuntu編)

ChromeBook(Asus C720)をamazon.comで買った。
そのまま使うのも何なので、Linuxをインストールすることにした。
現時点で確認できたのは、ChromeBookには3通りの方法でLinuxをインストールできることである。

  1. chrubuntuを使う
  2. BodhiLinuxを使う
  3. Croutonを使う

chrubuntuとBodhiLinuxは、ChromeBookにブート環境からUbuntu Linuxをインストールするもので、Croutonはchroot環境を用いてChromeOSからUbuntuを起動させるものである。どれも一長一短があるようなので、それぞれインストールして使い勝手を確認してみた。
この記事ではchrubuntuのインストールについて説明する。
ちなみにhttp://www.linux.com/learn/tutorials/764181-how-to-install-linux-on-an-acer-c720-chromebookはこちら。
続きを読む →