【PR】

  

Posted by TI-DA at

2009年11月07日

抽象 曖昧

どうでもいいことなんだけど、昨日友人と話しをしていたら彼の口から
「抽象的ってのと曖昧ってのは同じだろ?」と言うような言葉が出てきた。

違います。意味はさまざまな辞書を参照してくだされ。

抽象的・曖昧、どちらも形容する対象があって、
私がこれらに対して持つ言葉のイメージは

曖昧
対象がぼやけている。輪郭がはっきりしない。不定形。

抽象的
不定形だが、輪郭ははっきりしていてぼやけていない。

こんなやって書いてみてもホントどうでもいいな。  


Posted by 匿名希望 at 10:21Comments(60)

2009年11月06日

てんしょんがぁ・・・

うおおお
だめだ、どうしてもだめだ、

と不安定な気分になっていたが、
あるケータイサイトのマーキータグでマークアップされたタイトルを
カーソルで追っかけていたら気持ちが落ち着いてきた。

ふしぎね。

というわけで、



あなたも一緒に追っかけてみてはいかが?
なたも一緒に追っかけてみてはいかが?あ
たも一緒に追っかけてみてはいかが?あな
も一緒に追っかけてみてはいかが?あなた
一緒に追っかけてみてはいかが?あなたも
緒に追っかけてみてはいかが?あなたも一
に追っかけてみてはいかが?あなたも一緒
追っかけてみてはいかが?あなたも一緒に
っかけてみてはいかが?あなたも一緒に追
かけてみてはいかが?あなたも一緒に追っ
けてみてはいかが?あなたも一緒に追っか
てみてはいかが?あなたも一緒に追っかけ
みてはいかが?あなたも一緒に追っかけて
てはいかが?あなたも一緒に追っかけてみ
はいかが?あなたも一緒に追っかけてみて
いかが?あなたも一緒に追っかけてみては
かが?あなたも一緒に追っかけてみてはい
が?あなたも一緒に追っかけてみてはいか
?あなたも一緒に追っかけてみてはいかが

  


Posted by 匿名希望 at 16:57Comments(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しておりませんでした。

これからは気をつけます。
  


Posted by 匿名希望 at 12:19Comments(0)

2009年10月27日

メールソフト(メーラー)つくってます。

ある機能をもったメーラーがほしくなり、製作を始めてはや二週間くらい?
もう無職になって久しいので時間の感覚がおかしくなってます。

これを作り始めた理由と言うのは、他にもあります。
私はいままでにデスクトップアプリケーションと言うものを作ったことがありませんでした。
「君、デスクトップアプリケーションも作ったこと無いの?」と言う批判がどこからか耳に入ってくるようだったと言うのが一つです。

また、この製作に取り掛かる直前まで取り掛かっていたWEBアプリがありました。そのアプリの完成度は大体8割~9割といったところで完成目前だったのですが、最後に取り付けるつもりだった機能がjava applet との連携で思うように動かず、それで一呼吸入れるつもりで別のアプリ(メーラー)の製作に取り掛かりました。
(ちなみに製作を中断しているWEBアプリと言うのはFTPクライアントでありまして、バイナリファイルのローカルからの読み出しが思うようにいきませんでした。この機能はいろいろな方法で実装できるのですが、このとき敢えてappletを選択しました。時代はJavaFXだというのに。。。一番簡単な方法・紙(PHP/JavaScript)でいこうかと考えています。)

メインウィンドウ ウィンドウタイトルなんかはいまのところテーゲーです。
メーラー メインウィンドウ

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

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

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


Posted by 匿名希望 at 20:02Comments(0)

2009年10月26日

てぃーだ移民

いやっほうぅ
引越し完了っ…!

jugemはMT形式のエクスポートをサポートしてないから、記事を移すのに手間取った。。。

というわけで、いろいろ遺して逝くので(メモとか、なんか作ったものとか)よろしくお願いします。  


Posted by 匿名希望 at 05:30Comments(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:15Comments(0)

2009年10月26日

Zend Framework アクションコントローラの処理の流れ (フロー)

最近 Zend Framework に手を出しはじめてカコイイWEBアプリ作れたらいいなと目論んでいるところです。
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:14Comments(0)

2009年10月26日

php ftpモジュール fsockopen でストリームを開けない

ftpモジュールで遊ぼうと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_connectfsockopenの両方でストリームを得ることができた。

とりあえず原因分かってよかったけど、SELinuxとか名前聞いた事あるようなないような。。。
調べなきゃなと。

以下のサイトを参考にさせてもらいました。
Linux関連/SELinux
  


Posted by 匿名希望 at 05:14Comments(0)

2009年10月26日

mysql 文字コード設定変更おぼえがき

/etc/my.cnfをいじったのでノート。


[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:13Comments(0)

2009年10月26日

うおおおおおおおっ…! L i n u x っだ…! ペンギンっだ……!

三ヶ月くらい前にインスコしてほったらかしにしてたCentOSやっとさわる気になれた。
ちょっとかっこいいWEBアプリ思いついたんで、これを作るにあたってせっかくならCentOS使ってやろうということです。

今までlinuxなんてほとんどさわったことないから(以前いた仕事場では開発はwidowsでした)使い勝手が全然分かりません。
アプリケーション・パッケージのインストールが難しい。。。
でさっそくPHPのバージョンアップを参考にPHPをバージョンアップしました。

よし、つぎはZendFrameworkのインスコだ!
  


Posted by 匿名希望 at 05:13Comments(0)