2009年11月07日
抽象 曖昧
どうでもいいことなんだけど、昨日友人と話しをしていたら彼の口から
「抽象的ってのと曖昧ってのは同じだろ?」と言うような言葉が出てきた。
違います。意味はさまざまな辞書を参照してくだされ。
抽象的・曖昧、どちらも形容する対象があって、
私がこれらに対して持つ言葉のイメージは
曖昧
対象がぼやけている。輪郭がはっきりしない。不定形。
抽象的
不定形だが、輪郭ははっきりしていてぼやけていない。
こんなやって書いてみてもホントどうでもいいな。
「抽象的ってのと曖昧ってのは同じだろ?」と言うような言葉が出てきた。
違います。意味はさまざまな辞書を参照してくだされ。
抽象的・曖昧、どちらも形容する対象があって、
私がこれらに対して持つ言葉のイメージは
曖昧
対象がぼやけている。輪郭がはっきりしない。不定形。
抽象的
不定形だが、輪郭ははっきりしていてぼやけていない。
こんなやって書いてみてもホントどうでもいいな。
Posted by 匿名希望 at
10:21
│Comments(60)
2009年11月06日
てんしょんがぁ・・・
うおおお
だめだ、どうしてもだめだ、
と不安定な気分になっていたが、
あるケータイサイトのマーキータグでマークアップされたタイトルを
カーソルで追っかけていたら気持ちが落ち着いてきた。
ふしぎね。
というわけで、
だめだ、どうしてもだめだ、
と不安定な気分になっていたが、
あるケータイサイトのマーキータグでマークアップされたタイトルを
カーソルで追っかけていたら気持ちが落ち着いてきた。
ふしぎね。
というわけで、
Posted by 匿名希望 at
16:57
│Comments(0)
2009年11月02日
よい子のみんなは無名オブジェクトには気をつけよう!^^
私はSwingアプリケーションをNetBeansを使って開発しています。
ちなみにSwingというコンポーネント群がどういった性質を持つものかもよく分かりませんでした。
AWTでいいんじゃないか?とも思っていました。(ちなみに私がJavaに大半の時間を割くようになったのは最近2~3週間ぐらいの話です。。。)
UIの更新をしながらバックグランドでメインの処理を進めるために、SwingUIをイベントディスパッチスレッドとは別のスレッドで表示更新していました。もちろんコンソールにはキャッチされなかったNPEのスタックがずらーっと出力されます。(それでもアプリケーションは動いていました)
いままではJavaMail APIとSwingコンポーネントのAPIの把握で精一杯でSwingのスレッド処理がどういうものか調べる気持ち的な余裕がありませんでしたが、今日ようやくリファクタリングにある程度のめどがついたので調べてみました。
なるほど、Swingはたった一つのスレッドでイベント・SwingUIの更新などのスケジューリングを行うといったことがはじめて分かりました。
確かに私みたいな生半可なものがあれこれとスレッドを生成したところで、システムが複雑になるにつれそれらを管理しきれずに論理的な破綻を起こすのは目に見えています。
スレッドプログラミングは熟練のプログラマにも大変難儀なものだと聞きます。
このSwingアプリケーションを作るためにはSwingUIのかかわる処理はjavax.swing.SwingUtilities#invokeLaterをつかうという記事を最初に見つけました。
実際にそのように処理を書き直してみたところ、いままで私にとって原因不明のNPEが出ていた箇所でそれがなくなっていました。どうやら正しく書けたようです。
しかしこのスタティックメソッドをコードの途中途中に挿入しその引数のためにそのつどRunnableオブジェクトを作らなければならないというのはコードがとても煩雑になると感じていました。
そこでもう少し調べてみたところ、やっぱり便利なフレームワークがありました。
javax.swing.SwingWorkerクラスです。皆さんはご存知でしょうが、私はいまのいままで知りませんでした。。。
これで正しいSwingアプリケーションがすっきりと記述できます。とてもうれしいです。
あと、配列や列挙に対してphpやperlなどで使われているforeachがあることを知りました。
さらにFileOutputStreamやFileInputStreamでストリームを開いたFileオブジェクトはcloseがコールされるまでロックがかかるんですね。
File#renameToでfalseが返ってきまして、少し時間(20~30秒くらい?)をおいてrenameToをコールしてみたらtrueが返ってきてファイル名が変更できるという(私にとって)変な挙動がおきました。
FileOutputStreamやFileInputStreamの使用状況を調べてみると、これらの無名オブジェクトを使っていてcloseしておりませんでした。
これからは気をつけます。
ちなみにSwingというコンポーネント群がどういった性質を持つものかもよく分かりませんでした。
AWTでいいんじゃないか?とも思っていました。(ちなみに私がJavaに大半の時間を割くようになったのは最近2~3週間ぐらいの話です。。。)
UIの更新をしながらバックグランドでメインの処理を進めるために、SwingUIをイベントディスパッチスレッドとは別のスレッドで表示更新していました。もちろんコンソールにはキャッチされなかったNPEのスタックがずらーっと出力されます。(それでもアプリケーションは動いていました)
いままではJavaMail APIとSwingコンポーネントのAPIの把握で精一杯でSwingのスレッド処理がどういうものか調べる気持ち的な余裕がありませんでしたが、今日ようやくリファクタリングにある程度のめどがついたので調べてみました。
なるほど、Swingはたった一つのスレッドでイベント・SwingUIの更新などのスケジューリングを行うといったことがはじめて分かりました。
確かに私みたいな生半可なものがあれこれとスレッドを生成したところで、システムが複雑になるにつれそれらを管理しきれずに論理的な破綻を起こすのは目に見えています。
スレッドプログラミングは熟練のプログラマにも大変難儀なものだと聞きます。
このSwingアプリケーションを作るためにはSwingUIのかかわる処理はjavax.swing.SwingUtilities#invokeLaterをつかうという記事を最初に見つけました。
実際にそのように処理を書き直してみたところ、いままで私にとって原因不明のNPEが出ていた箇所でそれがなくなっていました。どうやら正しく書けたようです。
しかしこのスタティックメソッドをコードの途中途中に挿入しその引数のためにそのつどRunnableオブジェクトを作らなければならないというのはコードがとても煩雑になると感じていました。
そこでもう少し調べてみたところ、やっぱり便利なフレームワークがありました。
javax.swing.SwingWorkerクラスです。皆さんはご存知でしょうが、私はいまのいままで知りませんでした。。。
これで正しいSwingアプリケーションがすっきりと記述できます。とてもうれしいです。
あと、配列や列挙に対してphpやperlなどで使われているforeachがあることを知りました。
さらにFileOutputStreamやFileInputStreamでストリームを開いたFileオブジェクトはcloseがコールされるまでロックがかかるんですね。
File#renameToでfalseが返ってきまして、少し時間(20~30秒くらい?)をおいてrenameToをコールしてみたらtrueが返ってきてファイル名が変更できるという(私にとって)変な挙動がおきました。
FileOutputStreamやFileInputStreamの使用状況を調べてみると、これらの無名オブジェクトを使っていてcloseしておりませんでした。
これからは気をつけます。

Posted by 匿名希望 at
12:19
│Comments(0)
2009年10月27日
メールソフト(メーラー)つくってます。
ある機能をもったメーラーがほしくなり、製作を始めてはや二週間くらい?
もう無職になって久しいので時間の感覚がおかしくなってます。
これを作り始めた理由と言うのは、他にもあります。
私はいままでにデスクトップアプリケーションと言うものを作ったことがありませんでした。
「君、デスクトップアプリケーションも作ったこと無いの?」と言う批判がどこからか耳に入ってくるようだったと言うのが一つです。
また、この製作に取り掛かる直前まで取り掛かっていたWEBアプリがありました。そのアプリの完成度は大体8割~9割といったところで完成目前だったのですが、最後に取り付けるつもりだった機能がjava applet との連携で思うように動かず、それで一呼吸入れるつもりで別のアプリ(メーラー)の製作に取り掛かりました。
(ちなみに製作を中断しているWEBアプリと言うのはFTPクライアントでありまして、バイナリファイルのローカルからの読み出しが思うようにいきませんでした。この機能はいろいろな方法で実装できるのですが、このとき敢えてappletを選択しました。時代はJavaFXだというのに。。。一番簡単な方法・紙(PHP/JavaScript)でいこうかと考えています。)
メインウィンドウ ウィンドウタイトルなんかはいまのところテーゲーです。

設定ウィンドウ ここでサーバーなんかの設定をします。

メール編集ウィンドウ 送信するメールを編集します。

製作を中断しているFTPクライアント
スクリーンショットではメインのFTPウィンドウは一つなのですが、たくさん開くことだって出来ます。
もう無職になって久しいので時間の感覚がおかしくなってます。
これを作り始めた理由と言うのは、他にもあります。
私はいままでにデスクトップアプリケーションと言うものを作ったことがありませんでした。
「君、デスクトップアプリケーションも作ったこと無いの?」と言う批判がどこからか耳に入ってくるようだったと言うのが一つです。
また、この製作に取り掛かる直前まで取り掛かっていたWEBアプリがありました。そのアプリの完成度は大体8割~9割といったところで完成目前だったのですが、最後に取り付けるつもりだった機能がjava applet との連携で思うように動かず、それで一呼吸入れるつもりで別のアプリ(メーラー)の製作に取り掛かりました。
(ちなみに製作を中断しているWEBアプリと言うのはFTPクライアントでありまして、バイナリファイルのローカルからの読み出しが思うようにいきませんでした。この機能はいろいろな方法で実装できるのですが、このとき敢えてappletを選択しました。時代はJavaFXだというのに。。。一番簡単な方法・紙(PHP/JavaScript)でいこうかと考えています。)
メインウィンドウ ウィンドウタイトルなんかはいまのところテーゲーです。

設定ウィンドウ ここでサーバーなんかの設定をします。

メール編集ウィンドウ 送信するメールを編集します。

製作を中断しているFTPクライアント
スクリーンショットではメインのFTPウィンドウは一つなのですが、たくさん開くことだって出来ます。

Posted by 匿名希望 at
20:02
│Comments(0)
2009年10月26日
てぃーだ移民
いやっほうぅ
引越し完了っ…!
jugemはMT形式のエクスポートをサポートしてないから、記事を移すのに手間取った。。。
というわけで、いろいろ遺して逝くので(メモとか、なんか作ったものとか)よろしくお願いします。
引越し完了っ…!
jugemはMT形式のエクスポートをサポートしてないから、記事を移すのに手間取った。。。
というわけで、いろいろ遺して逝くので(メモとか、なんか作ったものとか)よろしくお願いします。
Posted by 匿名希望 at
05:30
│Comments(0)
2009年10月26日
php date 関数での警告
date()
関数を使ったところ次の警告が出力された。
Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead in /var/www/html/ftp_test.php on line 22
調べてみると php.ini の date.timezone がコメントアウトされてデフォルトになっていた。
/etc/php.iniを編集して
date.timezone = Asia/Tokyo
とした。
Posted by 匿名希望 at
05:15
│Comments(0)
2009年10月26日
Zend Framework アクションコントローラの処理の流れ (フロー)
最近 Zend Framework に手を出しはじめてカコイイWEBアプリ作れたらいいなと目論んでいるところです。
Zend Framework というか、Frameworkというものを使うのもこれが初めてのような気がします。
と言うわけで散々既出かもしれませんが、Zend Framework でのアクションコントローラの処理の流れを調べてみました。
結果から示すと次のようになっています。
と言う感じです。上の図でdammy[k-1]とか、dammy[k]と書いていますが、これはもちろんパースエラーになります。
さらに、コントローラはこのように
実際には次のようなコードを用いて調べました。
上のようなコントローラを作って動かしてみると、次のような出力を得ました。(実際はJSON形式で出力してましたがここでは割愛しました。)
Zend Framework というか、Frameworkというものを使うのもこれが初めてのような気がします。
と言うわけで散々既出かもしれませんが、Zend Framework でのアクションコントローラの処理の流れを調べてみました。
結果から示すと次のようになっています。
init() → preDispatch() → dammy1Action(){ _forward('dammy2Action'); } → postDispatch()
↓
init() → preDispatch() → dammy2Action(){ _forward('dammy3Action'); } → postDispatch()
↓
init() → preDispatch() → dammy3Action(){ _forward('dammy4Action'); } → postDispatch()
↓
:
:
init() → preDispatch() → dammy[k-1]Action(){ _forward('dammy[k]Action'); } → postDispatch()
↓
init() → preDispatch() → dammy[k]Action(){ _forward('dammy[k+1]Action'); } → postDispatch()
↓
:
:
と言う感じです。上の図でdammy[k-1]とか、dammy[k]と書いていますが、これはもちろんパースエラーになります。
さらに、コントローラはこのように
_forward($action)
で遷移する際にアクションクラスのプロパティを初期化します。実際には次のようなコードを用いて調べました。
<?php
require_once 'Zend/Controller/Action';
require_once MODEL_PATH . 'JsonResponseModel.php';
class FlowSurveyController extends Zend_Controller_Action
{
public function init() {
JsonResponseModel::addMessage('init');
}
public function preDispatch() {
JsonResponseModel::addMessage('preDispatch');
}
public function postDispatch() {
JsonResponseModel::addMessage('postDispatch');
}
public function dammy1Action() {
$this->_forward('dammy2');
JsonResponseModel::addMessage('dammy1');
}
public function dammy2Action() {
$this->_forward('dammy3');
JsonResponseModel::addMessage('dammy2');
}
public function dammy3Action() {
JsonResponseModel::addMessage('dammy3');
}
}
上のようなコントローラを作って動かしてみると、次のような出力を得ました。(実際はJSON形式で出力してましたがここでは割愛しました。)
"init",
"preDispatch",
"dammy1",
"postDispatch",
"init",
"preDispatch",
"dammy2",
"postDispatch",
"init",
"preDispatch",
"dammy3",
"postDispatch"
Posted by 匿名希望 at
05:14
│Comments(0)
2009年10月26日
php ftpモジュール fsockopen でストリームを開けない
ftpモジュールで遊ぼうと
ftpサーバいろいろ変えてやっても全然だめ。
とエラーメッセージが出力された。
Permission deniedとあるのでグーぐる先生にお伺いしたところ、SELinuxとやらのおかげでこのようなことが起こっていることがわかった。
でSELinuxを無効(?)にしたところ、
とりあえず原因分かってよかったけど、SELinuxとか名前聞いた事あるようなないような。。。
調べなきゃなと。
以下のサイトを参考にさせてもらいました。
Linux関連/SELinux
ftp_connect
でストリームを得ようとしたけど、返ってくる値はfalse
ばっかり。。。ftpサーバいろいろ変えてやっても全然だめ。
ftp_connect($ftp_server)
でだめならfsockopen($ftp_server, $port)
ではどうなんだと思って試してみたら、Warning: fsockopen(): unable to connect to foo.bar.com:21 (Permission denied)
とエラーメッセージが出力された。
Permission deniedとあるのでグーぐる先生にお伺いしたところ、SELinuxとやらのおかげでこのようなことが起こっていることがわかった。
/usr/sbin/setenforce 0
でSELinuxを無効(?)にしたところ、
ftp_connect
、fsockopen
の両方でストリームを得ることができた。とりあえず原因分かってよかったけど、SELinuxとか名前聞いた事あるようなないような。。。
調べなきゃなと。
以下のサイトを参考にさせてもらいました。
Linux関連/SELinux
Posted by 匿名希望 at
05:14
│Comments(0)
2009年10月26日
mysql 文字コード設定変更おぼえがき
/etc/my.cnfをいじったのでノート。
システムってややこしいね。
参考サイト
MySQL 文字化けを防ぐ、文字コードの確認と設定
MySQLの文字化け
[client]
# 次の一行だけを追加
default-character-set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
# 以下の行を追加
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake
# 次の行はよく分からないからコメントアウトした。
# init-connect=set names utf8
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
システムってややこしいね。
参考サイト
MySQL 文字化けを防ぐ、文字コードの確認と設定
MySQLの文字化け
Posted by 匿名希望 at
05:13
│Comments(0)
2009年10月26日
うおおおおおおおっ…! L i n u x っだ…! ペンギンっだ……!
三ヶ月くらい前にインスコしてほったらかしにしてたCentOSやっとさわる気になれた。
ちょっとかっこいいWEBアプリ思いついたんで、これを作るにあたってせっかくならCentOS使ってやろうということです。
今までlinuxなんてほとんどさわったことないから(以前いた仕事場では開発はwidowsでした)使い勝手が全然分かりません。
アプリケーション・パッケージのインストールが難しい。。。
でさっそくPHPのバージョンアップを参考にPHPをバージョンアップしました。
よし、つぎはZendFrameworkのインスコだ!
ちょっとかっこいいWEBアプリ思いついたんで、これを作るにあたってせっかくならCentOS使ってやろうということです。
今までlinuxなんてほとんどさわったことないから(以前いた仕事場では開発はwidowsでした)使い勝手が全然分かりません。
アプリケーション・パッケージのインストールが難しい。。。
でさっそくPHPのバージョンアップを参考にPHPをバージョンアップしました。
よし、つぎはZendFrameworkのインスコだ!
Posted by 匿名希望 at
05:13
│Comments(0)