C#やらD言語やらで実装していた『小説サイト構築専用コンバータ』。うちのサイトには必須のツールなのですが、これをこの土日、Pure Javaで再実装していました。
しかし、JavaってFileオブジェクトにcopyメソッドがないのね。結構古典的なとこがある言語だと思ってたけど、ここまで昔懐かしい、というか古典的仕様が残っているとは驚きだった。
個人的に思うんですが、
システム記述言語などは知らないけど、少なくともユーザアプリケーション作成のための汎用言語ならば、ファイルの読み書きとコピー、タイムスタンプや権限の管理、それにもちろん書きやすいソケットと正規表現は搭載してなきゃダメだと考えています。だから生のCやC++の類はもはや今となっては、アプリケーション一般用途の言語とは言えないのではないかと考えています。
なのに、既に21世紀になって久しいというのに、未だに生のCをアプリケーション開発の基本であり王道のように勘違いしている人がいるのは、ちょっとどうかなと思います。30年は遅れてんじゃん。
いや、確かにある意味基本なんですがね。
だけど、いくら基本だからって東京から大阪まで歩いて行くのは物好きだけでしょう。一歩一歩歩けば確かにそれは大きな力になるかもしれないけど、生産性がまったく上がらない。実用に使うにはこれでは当然ダメで、飛行機と言わずとも新幹線でもなんでも使うべきだと考えます。
2009年6月24日水曜日
忘れられていた記事とコメ
おお。先生からコメントきてたのに。
bloggerの設定て、ノーチェックにできないのかね。どうもイマイチだな。
http://amarudanquy.blogspot.com/2009/06/3.html
bloggerの設定て、ノーチェックにできないのかね。どうもイマイチだな。
http://amarudanquy.blogspot.com/2009/06/3.html
2009年6月21日日曜日
ただいま実験中
二次創作系のページ生成エンジンを、C#ベースからD言語ベースに切り替えてみました。
テキスト→HTML変換において新しい考えも盛り込んでみたし、いろいろと変化しています。
しかし……実に扱いやすいけど、まだまだだなD言語。
これだけ扱いよいんだから仕方ないバーターかもしれないけど、ある程度より大きな構造体を扱うと処理時間が途端に大きくなってしまうようです。まだ若い言語で、固さの方を優先した実装なんだと思うけど、いろいろ削ったとはいえテキスト原稿だけでまだ3MB近くはあるうちの二次創作ページを一つ一つ展開してWebに仕立てる処理をすると、10秒以上平気でかかることも。C#(Mono)と大差なくなってしまうのが切ないね。リソース小さい時は40倍くらいの速さで「スパーン!」と処理できるってのに。
うん。まだまだこれからだね。
まだ細かい修正が続いていますが、C#版ともども、あとでまとめて最新版を公開する予定です。
テキスト→HTML変換において新しい考えも盛り込んでみたし、いろいろと変化しています。
しかし……実に扱いやすいけど、まだまだだなD言語。
これだけ扱いよいんだから仕方ないバーターかもしれないけど、ある程度より大きな構造体を扱うと処理時間が途端に大きくなってしまうようです。まだ若い言語で、固さの方を優先した実装なんだと思うけど、いろいろ削ったとはいえテキスト原稿だけでまだ3MB近くはあるうちの二次創作ページを一つ一つ展開してWebに仕立てる処理をすると、10秒以上平気でかかることも。C#(Mono)と大差なくなってしまうのが切ないね。リソース小さい時は40倍くらいの速さで「スパーン!」と処理できるってのに。
うん。まだまだこれからだね。
まだ細かい修正が続いていますが、C#版ともども、あとでまとめて最新版を公開する予定です。
2009年6月13日土曜日
hachikun式ホームページ作成ツール『novel』

改版ついでに公開。
Monodevelop用ソースツリーとテスト実行環境の両方をひとまとめにしてあります。
novel.zip download(50.2KB)
ツール名: novel.exe
種別: テキスト・ホームページ作成ツール
動作環境: mono2.* または .NET2.0
開発環境: monodevelop2.* for LinuxおよびWindows
ライセンス: 特にないが、改造して再配布する時はGPL2を採用すること。
本ツールは、テキストファイル群を手っ取り早くホームページの形にしてインデックスをつけ公開可能にするための小さなプログラムです。XHTML1.1ベースで生成され、合法的にルビをふる事も自動で行います。アップロード機能はありませんので、そこだけ何か既存のツールを使ってください。ソースコードつきですので、通信を組み込むことも容易です。
・ DOS Box(Windows)またはTerminal(UNIX系)上で動かす小さなプログラムです。
・ Mono2.0または.NET2.0以上の環境で動きます。
・ RSSも自動生成します。
・ 複雑なネストは表現できませんが、章分けできます。(行頭に「* 」と書くと章が分かれて、その後の言葉が自動的にサブタイトルと理解されます。詳しくはサンプルをみてください)
・ XHTML1.1で作ります。ルビもふります。
・高度な機能は皆無です。小説のような地味な長文テキストに特化しています。
注意事項は以下の通りです。
・ マニュアルは、testフォルダの中のpublic/readme/index.html を開いてください。
・ 原稿のコードはUTF-8です。シフトJISは確実に文字化けします。
2009年5月26日火曜日
iPhone電子ブックリーダーが「発禁」に:理由はインドの古典 | WIRED VISION
iPhone電子ブックリーダーが「発禁」に:理由はインドの古典 | WIRED VISION
ようするに「ボクが気に入らないからだめだよ」。一社独占による弊害の象徴のような話だ。
しかし、iPhoneの扱いがよくわかる。つまりコンシューマゲーム機のノリに近いんだな。ジョブスの描いた「誰でも使えるウェラブルなコンピュータ」ではないということだ。
iPhoneを、いわゆる Knowledge navigator へのひとつのカタチと位置づけるなら、こういうバカな規制をする前に一言付け加えるべきだろう。つまり「遺憾だが、これを使うと性的コンテンツも閲覧できてしまう。子供たちをアダルトコンテンツから隔離できる技術が確立するまでは掲載させられない」という文面だ。
ついでに言うと、iPhoneアプリの承認に一貫性がなく「いいかげん」なのは以前から言われている事だ。これは「好意的に解釈すれば」柔軟に対応可という事なんだけど、現実にはジャイアニズム全開で「ボクの言う通りにするんなら、まぁ掲載させてやってもいいよ」となっている。今回のはそのいい例だろう。私もそうだ。社命で作れと言われない限りiPhoneものは作らないし、自分でもユーザーにはならないと思う。
自由を束縛されるのは我慢ならない。たとえ冷たい逆風でも、外の自由な風の中のほうがいい。
プラットホームとして魅力的な素材だけに、本当にもったいない話だ。
ようするに「ボクが気に入らないからだめだよ」。一社独占による弊害の象徴のような話だ。
しかし、iPhoneの扱いがよくわかる。つまりコンシューマゲーム機のノリに近いんだな。ジョブスの描いた「誰でも使えるウェラブルなコンピュータ」ではないということだ。
iPhoneを、いわゆる Knowledge navigator へのひとつのカタチと位置づけるなら、こういうバカな規制をする前に一言付け加えるべきだろう。つまり「遺憾だが、これを使うと性的コンテンツも閲覧できてしまう。子供たちをアダルトコンテンツから隔離できる技術が確立するまでは掲載させられない」という文面だ。
ついでに言うと、iPhoneアプリの承認に一貫性がなく「いいかげん」なのは以前から言われている事だ。これは「好意的に解釈すれば」柔軟に対応可という事なんだけど、現実にはジャイアニズム全開で「ボクの言う通りにするんなら、まぁ掲載させてやってもいいよ」となっている。今回のはそのいい例だろう。私もそうだ。社命で作れと言われない限りiPhoneものは作らないし、自分でもユーザーにはならないと思う。
自由を束縛されるのは我慢ならない。たとえ冷たい逆風でも、外の自由な風の中のほうがいい。
プラットホームとして魅力的な素材だけに、本当にもったいない話だ。
2009年2月11日水曜日
なるほど@@
「三つの処理系・三つのOSに触れなさい」とは、わたしのお気に入りの言葉のひとつだけど、Eric S. Raymondの「ハッカーになろう」でも少し類似のことが推奨されている。
これは実によい事なのだ。いろいろな視点からコンピュータを理解できるから。
私は(*)今まで、BTRON、Linux、Microsoft Windows、BeOSその他いくつかのOSに触れてきたわけだけど、おかげさまで今では、相等に異端なOSでもゼロからでなく扱えるだろう。唯一の不安は、あまり接点を持っていないBSD系OS、それにウインドウマネージャ以外は未知の世界であるPlan9くらいだ。
処理系の方は残念ながらあまり数をこなしていない。NDA関係で言えないものもあるが、一般的にはFORTRAN77、F-BASIC、どこのものとは言わないけど電子交換機用言語、Perl、Delphi(Objective Turbo Pascal)、Ruby、そして最近のいくつかのものである。
lispと生のCはhello Worldで止まっている。特にCは、ビット演算ですっかり嫌になってしまった。
レジスタの匂いのするものは好きではない。私にとってプログラム言語とは道具であって、システムに食い込んだ高度なアプリケーションを作る予定はないからだ。
まぁそれはそれとして今回、ちょおおっと苦笑いするようなことがあったのだ。
えらく久しぶりにJavaをいじっていたのだけど、意味不明のエラーが出る。それも配列まわりでだ。戻り値もおかしい。よくよくみると、どうやら配列に追加できてない。なんやねん。
んで、気づく。JavaのArrayは追加ができないことに。
なるほど。もう何年も、まともな高級言語ばかり使ってたからなぁ@@;
いや、C系列の人に喧嘩売るわけじゃないけど、(*2)何種類も整数型があったり、文字の連結もc=a+bで普通に足せなくて、正規表現すら標準で持たない処理系を高級言語のカテゴリに入れていいかどうかよくわからないので @@; すみません。
しかしそうか。Javaでは s[s.length] = "add"; みたいな書き方するとエラーになるのね。
言われてみれば確かにそうなんだけど、なぜか納得してしまったのだった @@
(*: PC以前の大型機とかワークステーションとかは、NDAとか古すぎるとか色々あるので除く)
(*2: 整数や浮動小数点の型がいくつもあるというのは、私も含めた古い言語慣れしている人には当然のことなんだけど、より「人間からみてわかりやすい」というプログラミング言語のパラダイムには完全に逆行しているシステム寄りの考えだと思います)
これは実によい事なのだ。いろいろな視点からコンピュータを理解できるから。
私は(*)今まで、BTRON、Linux、Microsoft Windows、BeOSその他いくつかのOSに触れてきたわけだけど、おかげさまで今では、相等に異端なOSでもゼロからでなく扱えるだろう。唯一の不安は、あまり接点を持っていないBSD系OS、それにウインドウマネージャ以外は未知の世界であるPlan9くらいだ。
処理系の方は残念ながらあまり数をこなしていない。NDA関係で言えないものもあるが、一般的にはFORTRAN77、F-BASIC、どこのものとは言わないけど電子交換機用言語、Perl、Delphi(Objective Turbo Pascal)、Ruby、そして最近のいくつかのものである。
lispと生のCはhello Worldで止まっている。特にCは、ビット演算ですっかり嫌になってしまった。
レジスタの匂いのするものは好きではない。私にとってプログラム言語とは道具であって、システムに食い込んだ高度なアプリケーションを作る予定はないからだ。
まぁそれはそれとして今回、ちょおおっと苦笑いするようなことがあったのだ。
えらく久しぶりにJavaをいじっていたのだけど、意味不明のエラーが出る。それも配列まわりでだ。戻り値もおかしい。よくよくみると、どうやら配列に追加できてない。なんやねん。
んで、気づく。JavaのArrayは追加ができないことに。
なるほど。もう何年も、まともな高級言語ばかり使ってたからなぁ@@;
いや、C系列の人に喧嘩売るわけじゃないけど、(*2)何種類も整数型があったり、文字の連結もc=a+bで普通に足せなくて、正規表現すら標準で持たない処理系を高級言語のカテゴリに入れていいかどうかよくわからないので @@; すみません。
しかしそうか。Javaでは s[s.length] = "add"; みたいな書き方するとエラーになるのね。
言われてみれば確かにそうなんだけど、なぜか納得してしまったのだった @@
(*: PC以前の大型機とかワークステーションとかは、NDAとか古すぎるとか色々あるので除く)
(*2: 整数や浮動小数点の型がいくつもあるというのは、私も含めた古い言語慣れしている人には当然のことなんだけど、より「人間からみてわかりやすい」というプログラミング言語のパラダイムには完全に逆行しているシステム寄りの考えだと思います)
2009年2月8日日曜日
C++で正規表現したいが……
C++な人には当たり前なのかもしれないけど、今どきの処理系なのに正規表現ライブラリすら標準でまともに持ってないという事実に驚愕 @@;
無印のCじゃあるまいし、何十年遅れてますかC++。
まぁ確かに名前通り、所詮はただのC言語+αって事なんかなぁ。
まぁ、テキスト処理したけりゃ外部のライブラリもってくるか別の処理系使えばいい、C++的には単純な文字列関数で十分って事なのかもしれないけど、それって「単漢字変換できるから日本語ばっちりOKよ」っていってるようなものだ。
今更言うまでもないが、単漢字変換でOKという人は「一般人」ではないと思う。ちょっと特殊な人だろう。普通の人は少なくとも単文節変換できないと使い物にならない。
むう。
無印のCじゃあるまいし、何十年遅れてますかC++。
まぁ確かに名前通り、所詮はただのC言語+αって事なんかなぁ。
まぁ、テキスト処理したけりゃ外部のライブラリもってくるか別の処理系使えばいい、C++的には単純な文字列関数で十分って事なのかもしれないけど、それって「単漢字変換できるから日本語ばっちりOKよ」っていってるようなものだ。
今更言うまでもないが、単漢字変換でOKという人は「一般人」ではないと思う。ちょっと特殊な人だろう。普通の人は少なくとも単文節変換できないと使い物にならない。
むう。
2009年2月4日水曜日
Linux側のIDEツール

統合開発ツールなんかいらない?それに対する慣れが必要?確かにその通り。
だけど「短期間に少しでもたくさんのコードを」と思うと、入力支援やデバッガ等を備えたIDEは確かに便利ですよ。今回Visual Studio2008(Express Editionですが^^;)に触れてて、入力支援やエラー解説の便利さに目から鱗。「こんなのMS関係の開発者ばかり使ってたら、そりゃあ壁もできるわ」なんて思っていたわけで。
さて、そんなわけでLinuxでmono環境を揃えているわけですが、eclipse+C#プラグインか、それともMonoDevelopを使うかでちょっと悩む。最初はこれからの事を考えてeclipseにしようとセットアップしていたのですが、実にシンプルな問題で立ち往生。
環境のせいかもしれないですが、Console.WriteLineなんて基本中の基本のメソッドで日本語が文字化けしてしまうのです。単に環境かプラグインの問題と思われますが、これは困った。
MonoDevelopは化けない。MonoDevelopに決定しました。
2009年1月29日木曜日
.NETアプリケーション(GUI編)
今度はGUIでやってみた。
といっても構造がよくわかってなくて面倒なのでソースコピーはしていない。やったのもラベルと時計ボックスくらいだ。
いきなりバイナリを転送して実行。
おお動いた@@ ラベルの日本語が(たぶんSJISか何かの関係で)化けるが、ちゃんと動くじゃないの@@
すげー @@
といっても構造がよくわかってなくて面倒なのでソースコピーはしていない。やったのもラベルと時計ボックスくらいだ。
いきなりバイナリを転送して実行。
おお動いた@@ ラベルの日本語が(たぶんSJISか何かの関係で)化けるが、ちゃんと動くじゃないの@@
すげー @@
.NETアプリケーション(コンソール編)
.NETはjavaのように使える(ただしGUI関連はいろいろあり、その解決策としてmono等が実装されている)という。逆にいうとCUIやASP.NETは2003年頃すでにばりばり動いていて、現在GNOMEの標準アプリにはmono利用のGUIソフトがいくつか混じっているほどだ。
まぁ能書きはいい。実際にやってみた。
単に時刻を取得して挨拶するだけのものを書いてみた。これくらいなら私も普通にC++などで書けるので、これを説明などみながら、Microsoft Visual C# Express Edition上で書いてみる。
で、そのソース(hello.cs)をUbuntu Linuxマシンでコンパイルする。
$ mcs hello.cs
$ ./hello.exe
こんにちは。09:30です。
$
当然動く。
で、次はバイナリを直接コピーする。
gmail等で*.exeや*.zipを送ろうとすると文句をいわれるので、*.zipにしたうえGoogleSitesにアップする。
で、これをubuntuマシンでダウンロードして実行してみる。
$ ./hello.exe
/home/yakumo/文書/lang/hello.exe
こんにちは。09:35です。
$
おお!確かに動くじゃないか!
なんか余計な尾ひれがついているが、これはmono側の環境設定っぽいな。
あとはGUIだなぁ。ま、これもあとで遊んでみよう。
まぁ能書きはいい。実際にやってみた。
単に時刻を取得して挨拶するだけのものを書いてみた。これくらいなら私も普通にC++などで書けるので、これを説明などみながら、Microsoft Visual C# Express Edition上で書いてみる。
で、そのソース(hello.cs)をUbuntu Linuxマシンでコンパイルする。
$ mcs hello.cs
$ ./hello.exe
こんにちは。09:30です。
$
当然動く。
で、次はバイナリを直接コピーする。
gmail等で*.exeや*.zipを送ろうとすると文句をいわれるので、*.zipにしたうえGoogleSitesにアップする。
で、これをubuntuマシンでダウンロードして実行してみる。
$ ./hello.exe
/home/yakumo/文書/lang/hello.exe
こんにちは。09:35です。
$
おお!確かに動くじゃないか!
なんか余計な尾ひれがついているが、これはmono側の環境設定っぽいな。
あとはGUIだなぁ。ま、これもあとで遊んでみよう。
登録:
投稿 (Atom)
