p0t.jpのドメインを失って暫く。
売ってもらったりできるのかなと思って調べてみると、
% whois p0t.jp | nkf -u
[ JPRS database provides information on network administration. Its use is ]
[ restricted to network administration purposes. For further information, ]
[ use 'whois -h whois.jprs.jp help'. To suppress Japanese output, add'/e' ]
[ at the end of command, e.g. 'whois -h whois.jprs.jp xxx/e'. ]
Domain Information: [ドメイン情報]
[Domain Name] P0T.JP
[登録者名] エヌエムケーケー
[Registrant] N.M.K.K
[Name Server] dns1.name-hosting.net
[Name Server] dns2.name-hosting.net
[登録年月日] 2009/07/01
[有効期限] 2010/07/31
[状態] Active
[最終更新] 2009/07/01 01:15:02 (JST)
Contact Information: [公開連絡窓口]
[名前] エヌエムケーケー
[Name] N.M.K.K
[Email] info@namemarket.jp
[Web Page]
[郵便番号] 150-0031
[住所] 東京都渋谷区
桜丘町20-1
[Postal Address] Shibuya-ku
20-1 Sakuragaoka-cho
[電話番号] 03-5456-5167
[FAX番号]
N.M.K.Kでググッたところ取り戻すのは難しそう。YHVHみたいで何か怖いですね。関わらない方がいいのかな・・・。

還暦プログラマの挑戦(Haskell に挑む→F#による言語造り)なにが、私を、そうさせたか。
還暦直前のプログラマです。
(厳密に言いますと、2008年1月1日、戊子(つちのえね)で還暦ということです。
2008年4月某日で60歳になりました)
最近引退したので、元プログラマというべきでしょうか。
還暦をマジかに控え、400時間、500時間労働はこたえました。おかげで、10Kg以上もやせて、メタボリックなんとやらは心配なくなったみたいな。
時間ができたらやりたいと思っていた事が2つありました。こんなおり、どこかで読んだのを、ちょいと思い出してしまったのが、かの「Haskell」です。
- 言語を作る。(CMLと名前だけ決まっています)
- OSを作る。(CMosと、名前だけ決まっています)
なんとかいう天才プログラマが、数ヶ月でHaskellを学び、また数ヶ月でPerlのV6を作っちゃったとか。
刺激的な話題ですよね。
で、めづらしいもの好きのオヤジとしては、つい環境を作っちゃって、お勉強をはじめたわけです。
「還暦の手習い」です。
この方の様な生活にとても憧れます。
とりたてて"天才"でも"スーパーハッカー"でもなくてもプログラムが好きで書き続けていれば還暦を迎えられ、その後に自分の楽しみのプログラムを書いて暮らせる老後生活が送れる。
我々にそういう希望を持たせてくれます。とても素敵なロールモデル。
内容もとても好きです。
地道な勉強やコーディングの合間にある発見や手応え。分からないことにも正面からスーっと入っていく自然体が素敵です。
常日頃、3億円あったらディアスポラのヤチマのように真理鉱山に引き篭って死ぬまで暮らしたいと思っていますが、既に体現されている方がいるとは羨ましい限りです。
![]() |
|
昨日8086と486の本を読んで(とても面白かったので一気に読んでしまいました)x86_64の一般命令とレジスタをちょろっと見たのでjonesforthが何となく読めるようになりました。(コメント内にgasのシンタックスの説明すらちょっと書いてあってとても親切)
(OSやドライバを書くのが目的ではないでシステム系の難しい機能は飛ばしました。)
そこでまずforthが分からないとしょうがないのでgforth(gnuのforth実装)を入れてみることに。
$ sudo port install gforth
(...)
/usr/bin/gcc-4.2 -I./../arch/386 -I. -Wall -O2 -arch x86_64 -fomit-frame-pointer -fforce-addr -no-cpp-precomp -DHAVE_CONFIG_H -DDEFAULTPATH='".:/opt/local
/lib/gforth/site-forth:/opt/local/share/gforth/site-forth:/opt/local/lib/gforth/0.7.0:/opt/local/share/gforth/0.7.0"' -I/opt/local/include -fno-gcse -fno-s
trict-aliasing -fno-crossjumping -fno-reorder-blocks -falign-labels=1 -falign-loops=1 -falign-jumps=1 -fno-defer-pop -fcaller-saves -fno-inline -DGFORTH_DEB
UGGING -DENGINE=2 -o engine2-noll.o -c ./engine.c
/var/tmp//cc6XyjEK.s:1482:Incorrect register `%r13' used with `l' suffix
/var/tmp//cc6XyjEK.s:1525:Incorrect register `%rbx' used with `l' suffix
/var/tmp//cc6XyjEK.s:1587:Incorrect register `%rbx' used with `l' suffix
が、エラー。rbxレジスタが使えないというのは何となく64bit対応部分がおかしいのかなと予想。
building gforth on Mac OS X Snow Leopard (10.6.x) - comp.lang.forth | Google グループThe error does not occur in 64-bit mode, with an updated version
of Anton's configure line:./configure x86_64-apple-darwin10.2.0
Targetをちゃんと指定しないと駄目みたいです。
$ ./configure CC="gcc -m32"
でも行けるっぽいですが、せっかくのCPUなので前者で入るようにportfileに下記を追加。
$ sudo port edit gforth
(...)
configure.args x86_64-apple-darwin10.2.0
(...)
今度はちゃんと入りました。
% gforth
Gforth 0.7.0, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
1 2 + . 3 ok
bye
キター!
![]() |
|
基礎と16bit CPUを知るために。
![]() |
|
32bit CPUを知るために。
![]() |
|
gasの文法を知るために。
用途によって色んな言語が必要になり勉強してきたんですが、どうも基礎が分かってないので常に習うより慣れろ方式で、毎度繰り返しているうちに効率が悪い気がしてきました。
基礎、要はx86アセンブラで簡単な言語を実装してみれば今後、言語習得も楽なんじゃないかなと思いました。
しかし、業界で10年"作らなければいけない物があり、それに必要な技術をとにかく死に物狂いで覚える"ということを繰り返してきた結果、"作るべき物が無いと何も覚えられない"という体になってしまっていました。
おそらく、"作るべき物"に参照されない情報は寝ている間に僕の"優秀な"GCが回収してしまうようです・・・。 (一番忘れたい、ドラゴンクエストモンスターズに出てきた「"ボミエ"の呪文=敵一人の素早さを下げる」は何故かずっと回収してくれません。)
そこでquekさんに、
「何か簡単な作るべきもの無いですかね」
的なことを聞くと、Forthの処理系でjonesforthというのがコメントが豊富でシンプルなアセンブラで書かれていて分かりやすいということを教えてもらいました。(64bit対応にするのはどうか、とのこと)
もちろんx86アセンブラもForthもさっぱり分かりませんがとりあえず本を買って始めてみました。とりあえず、年明けにjonesforthを何かに移植するという目標でやってみたいと思います。
(本来、8086は専門学校で習ったハズなんですが、僕の優秀な(略・・・)
Debianでapache2落ちたら再起動
$ sudo apt-get install monit
Starting daemon monitor: monit won't be started/stopped
unless it it's configured
please configure monit and then edit /etc/default/monit
and set the "startup" variable to 1 in order to allow
monit to start
Debianでは/etc/default/monitを編集しないと起動しないみたい。
$ sudo vi /etc/monit/monitrc
set daemon 120
set logfile syslog facility log_daemon
set mailserver localhost
set mail-format { from: monit@kmsebisu.com }
set alert dev@actindi.net
check process apache with pidfile /var/run/apache2.pid
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
if failed host localhost port 80
protocol HTTP request / then restart
group www-data
便利だわぁ。こんな簡単なら早く使えばよかった・・・。
いつからあるのか分からないけどrake notesでTODOとかFIXMEが見れるらしいので手元のプロジェクトで行ってみた。
% rake notes
(in /Users/komagata/Sites/outing)
app/models/facility.rb:
* [ 52] [TODO] もっとメタな書き方がしたい
* [ 57] [TODO] ハッシュにしたいが、今のとこ,はエラーが出る
* [ 68] [TODO] ハッシュにしたいが、今のところはエラーが出る
* [114] [TODO] リファクタリング
% rake notes
(in /Users/komagata/Sites/tsuisumi)
app/helpers/cemeteries_helper.rb:
* [ 5] [FIXME] クラス変数が共有できないのでメソッドで対処
app/helpers/stone_shops_helper.rb:
* [ 16] [FIXME]
lib/romkan.rb:
* [221] [FIXME] ad hod solution
生々しい。面白いので僕ももっとコメント書いていこうと思いました。
あくまで中立な実況。
ポーニョポーニョポニョさかなの子ー♪
一級ブロリスト。
__init__と__call__ってどう違うのかなと思ったけどわかった。
class Foo:
def __init__(self):
print 'init'
def __call__(self):
print 'call'
Foo()()
init
call
__init__はクラスがインスタンス化される時に呼ばれて、__call__はインスタンスが呼ばれた時に動くんですね。
この間書いた、RubyのFoo()とか使ってると混乱するわ!