Smalltalk総合 Squeak Pharo
たしかに all in one + 解凍レンジだと警告が出る ためしたいけど、SqueakとPharoの違いが分からないです >>85
分からないうちは、日本語化されたSqueakを使っとけ 入門書でお勧めってある?
「Smalltalkで学ぶオブジェクト指向プログラミングの本質」は、
若干宗教臭いのと、このコード入力して実行してみてで説明が終わってる部分が多くて、
今一だった >>87
サクサクSmalltalk―オブジェクト指向のアートとサイエンス
実際の所、smalltalkはコードからしか学べない。 「Smalltalkベストプラクティス・パターン - シンプル・デザインへの宝石集」が良かったが
入門書ではないかもしれん >>88
これは読み易そう
無理してVisualWorksやPharo使うより、素直にSqueakからはじめたほうが、楽かもしれませんね
>>89
考え方が身につきそうな内容っぽいですね
中古価格も手頃だし…
>>90
長く使えそうだったので以前、購入しました
斜め読みした後、積読中ですが… ExterenalStream系にbinary送って
StreamEncoderにbigEndian:false
とかおくってもほぼ全部のEncoderがこれ無視しててBigEndianしか考慮してないのな。
結局ちまちまとバイト単位で読んでbig<->littleの変換を手動でしなければいけないという
もうちょっとこの辺直してくれよ・・ パソコン初心者向けの本か、専門家向けだけど古くてタイプライターで文字打ったような本のどちらかしかない印象 Pharo1.4ではダイアログって標準的にはどうやって作るものなのでしょう?
まずはOKボタンだけがあるダイアログを出そうとして、workspaceで以下をdo itしてみました。
| theme dialog |
theme := UIManager default theme.
dialog := theme builder newPluggableDialogWindow: 'OK?'.
dialog useDefaultOKButton.
dialog open
でもOKボタンのない空のpaneのダイアログが出てしまいます。
OKボタンつきのmodalなダイアログを出すにはどうしたらいいのでしょうか? >>97
Pharoは使っていないので、はずしていたらごめんなさい。
(ふだん使っているSqueakも、かなりあやしいんで言い訳にはならないんですが^^;)
#useDefaultOKButton の senders から #exampleBasicControls というメソッドを見つけて
この中身を削りながらためしてみたんですが、
どうやら何かしらコンテントを追加した状態で改めていったん #model: をコールしとかないと
OK ボタンは出てこないみたいですね。
| dialog builder |
builder := UIManager default theme builder.
dialog := (builder newPluggableDialogWindow: 'OK?') useDefaultOKButton.
dialog contentMorph: dialog newRow.
dialog model: nil.
dialog open なんだそうでしたか。>98
コンテントはあるのが普通なので、それなら問題ないですね。
ありがと。 aTextMorph中で、改行部位は単語の区切りの空白に限るようにすることはできますか?
transcriptやworkspaceがやってるように、行末で英単語が分断されないようにしたいんです。
例えば下のようにダイアログの中に英語を書くと、単語の区切りとは関係なく改行されます。
つまり、行末でaaaaaaaaという単語が、aとかaaとか、途中で分断されてしまいます。
| string |
string := ''.
100 timesRepeat: [string := string, ' aaaaaaaa'].
LongMessageDialogWindow new
textFont: UIManager default theme textFont;
title: 'example';
text: string asText;
open
これを、workspaceやtranscriptみたいに、空白部分だけで改行するようにしたいんです。
どうすればいいのでしょうか?
Pharo1.4を使っています。'UIManager default theme textFont'はMS UI Gothicの10pointです。 >>100
例によってPharoは使っていないのでハズしていたらごめんなさい。
ちょっと調べてみたのですが、どうもPharo 1.4ではSqueakと違い、Workspaceや
Transcriptであっても単語の区切りで行を改めるようにはなっていないように見受けられます。
これは Paragraph>>#composeAll が常にマルチバイト文字列用の改行位置決めの機構を
使っているせいのようです。したがって、この部分をシングルバイト文字列用の当該機構を
使うように書き換えてやれば、ご呈示のスクリプトは変更無しに単語の区切りで改行される
ようになるはずです。
具体的には Paragraph の composeAll メソッドを探し、multiComposeLinesFrom: という
キーワード部分を composeLinesFrom: に書き換えて、黄ボタンメニューから Accespt (s) します。 ありがとうございます。>>101
TranscriptやWorkspaceを実際に開くと、単語区切りで行を改めてくれているんです。
英単語だけのダイアログの例を出しましたが、
もちろん日本語のダイアログを出したいこともあるので、
Paragraph>>composeAllを書き換えるべきかも、もう少し考えてみます。 お役に立てずすみません。Pharo 1.4 ですよね?
http://www.pharo-project.org/pharo-download/release-1-4
を念のため落として調べてみたのですが、
やっぱり手元の環境ではWorkspaceは単語で折り返さないようです。
いずれにせよ、単語区切りで折り返すか否かは Paragraph が
何か挙動を代えている可能性が高いので、そこを意識して
折り返さない LongMessageDialogWindow と折り返す StringHolder など
とでコードや設定の違いを調べてみると、答えが見つかるかもしれません。 Paragraphは単語区切り作業をScannerに委譲しているはずですが、
委譲先を選ぶ際にどうも筋の悪いことをやっているように見えて、あきらめました。
実のところ、Pharo2.0を試したら、>>100のダイアログは簡単に単語区切りになったので、
移行しようと思ってます。
ありがとうございました。
なお、再度Pharo1.4を取り直して試しましたのですが、
私のところだとWorkspaceやTranscriptは何もせず単語で区切ってくれます。
MacでもWindowsでも。
Settings等を何もいじらない、取ってきたそのままの状態で試しました。 Smalltalkで書かれたnative用のCompilerと
Smalltalkで書かれたvmのSourceて無いの?
Pharo当たりで、Nativeで動くVMを生成して、
そのVMでPharoを動かしたい。 >>79
本番稼働前にimageのバックアップとっとけばいいだろう。 >>105
自分で何を言ってんのかわかってんのか? >>108
VMMakerで作れるcog vmみたいなもんはないかって話です Pharoってデフォだとwindowsで、FileStreamのstdoutなんかから
取得した標準入出力がまともに動かんね。
そろそろなおらねぇかなぁ。 7.10pulのOSX版、各種描画や日本語表示入力関連がやっと直ってきたね
今までストレスマッハだっただけにこれはとてもありがたい
しかしVMが64bitじゃないのは今後に期待か・・
roadmap見ると一応いつかはやるらしいが linux版は未だInput Methodがマトモに動かねえ MatriXが面白すぎてブロック投げまくってる
Polycephaly1がpipe動作だったのに対してMatrix(Polycephaly2)がsocket動作になったようだ
異なるマシン間でVisualWorks専用のプロトコル流すって話題があったと思って
store見たらPolycephaly-Networkなんてのがあるんだね 全画面表示のソフト作るのはこんだけ。
| os layout |
layout :=
'<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id = "@+id/BackGround"
android:orientation = "vertical"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background= "#ff000000">
<Button
android:id = "@+id/Hello"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "Hello"
>
</Button>
</LinearLayout>
'.
PackageLoader fileInPackage: 'Android'.
os := Android new.
os fullShow: layout. >>117
でしょ。
電車の中の暇つぶしにゲームやらずにこれでプログラム書いてるわ。 VisualWorksいいっちゃいいけど、
Linux Unix 環境じゃ
全角文字の表示がダメダメ。
あと、OSのapi呼び出すときに使うthapiが遅すぎ。
job queue 方式にするなり何とかしてほしい。 Smalltalkって、html5+javascriptと比べて、どの辺りにアドバンテージあるの? >>121
殆どドラッグ&ドロップでWebサイト作れたりする。
しかも、サーバーと区別がいらない。率直にいって比較にならん。
具体例:
Seaside
難点は、OOが解らない人には使えないとこか。
多態やセレクターの指定で切り替えれば済む事を、
bool値とifで凌ごうとするヤツや、引数や戻り値は
色んなオブジェクトを使えばいいのに、数値や文字、
日付ぐらいしかつかわないみたいなヤツは使えないだろ。
オブジェクトの入れ替えで動作を切り替えていくからな。 どうでもいいけどHTML5なんて規格は存在しないから
正確にはDOM4規格だよね。 ほとんどリクエストの無いしょぼいサイトなら
Seasideが向いてる つまり、ほとんどのサイトならSeasideが向いている。 小規模社内システムとかSeasideで十分だよな。
あんなんにJavaとPHPとかオーバースペックで効率悪すぎるわ。 そういやPharo 3.0が出たな。
そろそろVisualWorksやGSTみたいに名前空間搭載すればいいのに。 ラルフ先生はVWが名前空間導入した時大喜びしてたなー そらやっぱ接頭辞と違って空間名の変更が楽だもの。
それにSmalltalk環境がClass名とちゃんと別扱いしてくれるし。 GNU SmalltalkでImageに保存したClassの削除方法がわかんねー
removeFromSystemとか無いんかい Seasideの新しいバージョンでてるな
パフォーマンスも向上したとかなんとか
あれの使い方分かってないんでまだ手出してないが どうにも詰まって進みようがなくなったので質問です
やりたいことはHTMLをparseしてタグ単位にnode化しtree状にばらして
rootから各nodeを辿れるようにしてelementを適当に参照したいわけです
XML.XMLParserに読ませるとまず通らないというか
HTML ≠ XML なので当然なのかも知れないですが
XMLMarshaler(これと連動しているXPath) , SIXX これらも見てみましたが
HTMLを読ませることはできないような気がします。
いい加減に書かれているHTMLをこれまた適当にparseしてくれるようなクラスはないんでしょうか。
自力で書くことも出来ないわけじゃないと思いますが、WebServiceのドキュメントを見る限りはHTMLを読めるようにも見えるので情報不足過ぎて困ってます。
これを使えとか何かヒントがあったらお願いします! >>132
古いWebBrowserの実装がコントリビュートかPublic Repositoryにあったはず。
それとは別に、埋め込みのWebBrowserコンポーネントが使えるから、パースはそちらに任せることができるかもしれない。 うまくいかないのと追加したい機能があるんで
イチから作ることにしました
助言ありがとうでした >>132
本当にしたい事は何なの?
昔Web巡回ソフトつくったけど、その時は必要な情報以外は正規表現で消したよ。
この方法だと汎用性は無いけど結果はすぐ出せる。 >>137
特定キーワードの後に来ているtableを特定して要素抜き出したりとか
iframe分割するとかそんなとこです
csv入出力に加えてタグの値をセルから拾って再加工してhtmlに吐いたりとかそのへんも必要です
parseして再帰構造作るところまでは終わったので
/html/body/table/3@4
とかのString pathからelementを取得できるところを書いてます VistaScript(VistaSmalltalk)使ったことあるヤツ居る? VistaScriptには思い出もなにもあったもんじゃないらしい
やっぱりSmalltalkは言語だけを切り離せないんじゃないの そりゃね
フレームワークなしじゃ何の役にも立たないし Frameworkって嫌な響き。
Class Libraryでええやん。 Frameworkの場合は、あらかじめ必要なクラスがあるわけじゃないし… 青木導師の「Smalltalkイディオム」買いましたが、やっぱこれ、逝ちゃって
ませんか?
さまざまな文献からの綺羅星のごとき引用も、変化自在な例え話も、「ために
する」感じがして読み手のこと考えているのかなと。
例えば城砦都市の話とかでセキュリティの話をしているかとおもうと、それが
Smalltalkのオブジェクト間の通信の自由さと比較されたり。
それってぜんぜん別の話じゃあ・・・?
引用も多すぎて、なんか引用が多すぎる文章をからかった、パロディみたいだ
と思いました。本気ならコワイ。
でも内容は高度で、Smalltalk関連情報に飢えている心の隙間を埋めてくれる
良書であるとは思います。
結論:自意識過剰 あの人の本は読んでも役に立たないから
MLでもそうだったけどわざわざ理解が遠くなるような投稿ばかりしてたり
本質そらすような誘導してたり 読み物として買うならいいけどあの人の本は入門させる気がないって内容が多すぎる
どうでもいいことばかり書いてあるだけで何かできるようになるわけじゃないからね・・
一応それなりのポジション扱いされてるから表立って批判されることはないけど
MLでも登場すると他の人がいちいちフォローしなきゃいけなかったりとなかなか困った存在ではあったと思う
VWに関しては公式pdf読んだりExampleやったほうが早いしね Cincomに連絡すれば日本語版を送ってくれる。うれしいことにドキュメントも
日本語。 Cincomは、オブジェクト脳育成ツールとか、分析技術育成ツールと
して割り切って使うようにプロモートすればいいのにな。
それよりいい加減ネイティブなGUIを使うようにしてほしい
7.10からUISkinningとか入って来てるけど GNU Smalltalkを使ってるとき
ObjectMemory snapshotで保存したClassを
削除できなかった件自己解決しました。
ClassだけじゃなくMetaClassの削除と
Namespaceからの削除が必要らしい。
Classを削除する手続の例:
! ClassManager methodsFor: ''!
deleteClass: aClass
| superClass nameSpace |
superClass := aClass superclass.
nameSpace := aClass environment.
nameSpace removeKey: aClass name.
superClass removeSubclass: aClass.
superClass class removeSubclass: aClass class.
!! 64bit化されてなかった
そろそろ10.5以下切ってもいいのに Pharoいいな
Squeakが子供向けっぽくなったから敬遠してたけどまたSmalltalk系を
触ってみたくなった rasberry pi に scratch が入ってるらしいから、これから買ってポータブルの squeak 専用マシンにしようと思う Seaside を動かすサーバってログインしてSmalltalk動かしっぱなしにしとかなきゃ駄目なんか?
それとWebサーバ落ちたらどうやって再起動するの? >>160
Webアプリケーションサーバとはそういうものだ。
Webサーバが落ちたら、先に起動したときと同じ手順を踏むだけだと思うが、何がわからないのかがわからん。 >>160
画面が邪魔ならheadlessで起動すれ >>161
普通のWebサーバならデーモンやサービスで動いているんでログオンしてる必要は無いし
死活監視があるので落ちても自動でサーバ立ち上がるし
サーバがバックグランドで動かいななんてあるんかと思っただけ
>>162
Smalltalkをデーモン化するようなものか? Smalltalkのオススメの本かサイト教えてください。
正月休みに遊んでみたいんで。 >>164
ここらへんからよさげなのを選んでみてはどうでしょう。↓
Smalltalkをちょっとかじってみたい人のための、チュートリアルまとめ
http://qiita.com/sumim/items/6bed17961bd57daf88a3 >>163
deployすれば一つのアプリケーションになるよ
運用がうまくいくかは不明 >>165
有難う御座います〜♪
Squeak見て、何じゃこりゃ〜分けわからんになって
Pharo見てこれなら使えるかと思ってるところです。 >>166
deploy? なんかわからんが調べてみます >>168
VisualWorksだけね
SqueakやPharoは知らない >>160
Smalltalk にはいわゆる方言がたくさんあって、それぞれに事情が異なります。
さらに Seaside は人気で、処理系の差異も乗り越えて比較的多くの処理系に移植されているという
特殊な事情があるので、質問するときは特にどの処理系を想定しているか限定したほうがいいですよ。
Smalltalk を学び始めるタイミングでは、すでに他の言語にかなり精通している人が多いので
めんどくさい手続きかもしれませんが… squeak eToysでキーボード入力を取得するにはどうしたらいいの? >>172
http://wiki.squeak.org/squeak/488
ここ見た?このページにある、
http://bike-nomad.com/squeak/DriveUsingKeyboard.002.pr
このプロジェクトをSqueakland 2005Jで読み込んだら矢印キーで操作できた。
worldのkeyWatcherスクリプトに書いてある。詳しくはわかんない。 ありがとう
けれどそれeToys 5.0じゃダメみたい
でもそのページのワールドのキーストロークを使えるみたいな説明があったので
部分的には使えるかな
そこのページに書かれているけどモディファイやキーや複数キーの同時押しなんかには対応できないらしいのが残念
右と上の矢印キーの同時押しで右上に動くとかやりたいけど無理みたいね 今年を振り返って一行プログラムでもやろうかと思ったけど
特に何も思いつかなかった >>4
超重要なのは君の頭の中だけで
誰も必要としてないからだよ
というツッコミがないのが凄いスレ Smalltalkより
キミがどうしてそんな書き込みを
今、わざわざしたくなったのかの方に興味がわく そういや昔アラン・ケイが来日したときサインして貰った本がでてきた >>178
オブジェクト指向の元祖はSimulaだしSmalltalkなどは完全に無視できる派
ストラウストラップがSmalltalkを重要視してないので
かつてはC++ユーザーにもそういう人がいたのだという。 うん。
世の中にはそういう主張をする派があって、キミがその派に属することはわかった。
で、ならばその完全に無視していいはずの Smalltalk のスレを
今、ここにきてどうして無視できなくなったのかに興味がわく そんなことより
WindowsのVMはIMEのインライン化がいまだにできないことと
OSXのVMはネイティブのMenuBar(NSMenu)を使えるようにならないことが不満ではある
Windowにメニューが張り付くのはあんまりいい気がしない・・ これ最近さわりはじめて
発想がすごく面白いと思ったけど
やっぱ実用的な面で欲しい機能もある
たとえば作ったアプリは実行ファイル
(Windowsでいう .exeファイル)で配布したい
実行形式じゃないと絶対ダメってほど頭固くないけど
(速度が)早い・(容量が)小さい・(コードを)隠せる
ってメリットがあるから便利だと思う
それ(に近いこと)ができる処理系もあるようだけど
もともと少数派のSmalltalkの中で分家筋を使うと
さらに日本語ドキュメント少なくなって使いにくいし
(というわけでとりあえずSqueakさわってる)
Webアプリならサーバの部分はクライアントから見えないけど
今度はレンサバに入ってないからPHPのほうが早いってなる
そういうCファミリーのメジャー言語のいろんな恩恵に
どっぷり漬かっちゃってるから参入障壁になってる
自分ひとり用の環境としては面白いけど……
Smalltalkは初心者だから
なにか初歩的な誤解があるかもしれないが
あったらツッコミしてくれ >>183
俺はずっと初心者だけど
やはり最初は.exe作りたいと思ってた
できることが面白くなってからは、そういうこだわりは無くなったかな
まぁ配布したいものもないんだけど
Scratchもそうだけどpr、sar、imageで配布だし、そういうプラットフォームなんだと割り切ってる
他の人に使ってもらうにはインストールから説明しないといけないから、
確かに寂しいと思うけどね
SqueakだとWindowsの.exe作る方法もあったと思うけど...
そうね 自分ひとり用の環境としては面白いからSqueakでArduinoと通信するものとか
自宅LAN用のComSwikiのプラグインたまに作るくらいだけど