メイン

「プログラミング」カテゴリのアーカイブ

2007年08月31日

横並びのfloatリストの左に要素を置くには、その要素もfloatさせればよい

よく見かける下のような横に並んだリストがあって、

  • 要素1
  • 要素2
  • 要素3

これの前にチェックボックスをつけようとして上手くいかず、苦しんだのが悔しかったのでメモ。

単純に<input>を置くだけでは下のように段差ができるし、<input>や<ul>にstyle="display: inline;"を指定しても同じ。チェックボックスとリストを同じ<div>でくくってみたりしても、もちろんダメ。

  • 要素1
  • 要素2
  • 要素3

さんざん悩んだ挙句、やっと気づいた方法が<input>もfloatさせればよいということ。

  • 要素1
  • 要素2
  • 要素3

わかってみれば超当たり前のことだけど、リスト要素と同列にfloatさせるという発想が思い浮かばなかったのが敗因。

2007年07月22日

Struts関連情報リンク

Strutsの関連情報を集める機会があったので、対象バージョンごとにまとめてみた。こうしてみると、Struts2系はともかく、1.3系の情報も意外と少ないなぁ。

1.0系
1.1系
1.2系
1.3系
Struts2
関連ツール

2007年06月04日

LL魂チケット発売

毎年恒例のLLイベント、今年はLightweight Language Spirit(LL魂)のチケット販売が今日から始まったようです。詳しくはこちら。参加予定の人は早めにチケット入手しておいた方がよさそうです。

2007年05月29日

GREEの勉強会に行ってきた

昨日のことですが、GREE主催の第10回 オープンソーステクノロジー勉強会に参加してきました。ゲストはサンの藤井彰人さんという方で、先日のJavaOneのお話などを聞かせていただきました。

印象深かったのが、サンの動的言語への取り組みでした。JavaVM上で動くスクリプト言語をサポートしてJavaプラットフォームをJava言語以外でも利用できるようにしていく動きがあり、そのなかで、今サンが一番肩入れしてるのがJRubyだそうです(@ITの記事)。

もう一つ。JavaのIDEというと国内ではEclipse一択というイメージがありますが、海外ではNetBeansの人気が高まってるそうです。上記JRubyの開発もサポートしているそうで、注目かもしれません。

追記:
藤井彰人さんらによるJavaOne報告会のレポートがありました。
【レポート】JavaOne 2007 報告会 - 有識者たちが取り上げるJavaOne 2007 注目トピックス (1) Java SEはOPEN、FAST、COOL | エンタープライズ | マイコミジャーナル

2007年05月27日

Seasar Conferenceに行ってきた

はしかで休校中の法政大学で開かれたSeasar Conference 2007 Springに行ってきました。と言っても、参加したセミナーは「いまさら人に聞けないDIxAOP入門」だけなんですが(発表資料(PDF))。

内容は、技術的な解説よりも背景や導入メリットなどについてが中心でした。発表形式や時間を考えれば妥当だと思いますが、ちょっと物足りなかった感も。とはいえ、最近Javaから随分離れていたので、いい勉強になりました。

DIとAOPは単に流行り物をくっつけたのではなく、合わせて使うことで更に嬉しいというのが一番のポイントだったように思います。DIによる依存の注入時にAOPの処理追加も同時に行うことで、AOP専用コンパイラなどを使わなくても横断的機能を追加できるとのことでした。

2007年05月05日

MySQLの文字化け対策

PHP-MySQL間での文字化けについて。

問題点

PHP、MySQLともにUTF-8で構成しているのに、DBとのデータ受け渡しで文字化けが起こる(おそらく他の文字コードでも同様)。

対応策

下記どちらかの対応を実施する。

その1
DB接続ごとに、処理実行前に「SET NAMES UTF8」というクエリを発行する。

その2
my.cnfファイルの設定を下記のように変更する。

#character-set-server = latin1        // 元々あるものをコメントアウト
#collation-server = latin1_general_ci //   同    上
default-character-set=utf8            // 新しく追加する
skip-character-set-client-handshake   //   同    上

実行時の環境

  • Windows 2000
  • XAMPP 1.6.1
  • PHP 5.2.1
  • MySQL 5.0.37
  • phpMyAdmin 2.10.02

詳細

上記のXAMPP環境で、PHP・MySQLともにUTF-8で構成しているはずなんだけど、どうも文字化けが出るのでいろいろ調べてみた。

ちょうど同じタイミングで同じような問題に遭遇していた方がいたようで、下記のサイトが参考になりました。

artful: XamppのphpMyAdminの文字化けーその2より。

PHP(文字コードはUTF8)とMySQL(phpMyAdminの照合順序はutf8_unicode_ci)のやり取りの際、PHPからそのままデータを挿入するとSQLから取り出した際は正常に表示されるのですが、phpMyAdmin内では日本語は文字化けしてました。

$sql = "SET NAMES utf8";
mysql_query($sql);

そこで上記のUTF8で指定するコードをSQLから取り出す際も、挿入する際もはじめにSQLに送ることでphpMyAdmin内の文字化けも無事解決しました。

私の場合は、PHPMyAdminから挿入したデータをPHPスクリプトで取得すると文字化けするという反対の状況でしたが、同じ方法で解決できました。

ただ、この方法では接続のたびに毎回「SET NAMES」のクエリを発行しないといけないので、設定から変えられないものかと調べたら、MySQLのマニュアルに下記のような説明がありました。

MySQL AB :: MySQL 5.1 リファレンスマニュアル :: 4.4 接続のキャラクタセットおよび照合順序より。

デフォルト以外のキャラクタセットを使用したい場合、mysql クライアントでは、起動するたびに SET NAMESを実行する必要はありません。--default-character-setオプション設定をmysqlステートメントラインか、オプションファイルに追加することができます。たとえば、以下のオプション設定ファイルの設定では、mysql:を実行する度に、三つのキャラクタセット変数値をkoi8rに変更します。

[mysql]
default-character-set=koi8r

ところが、これを実際に(utf8に変更の上で)設定しても、変化がありませんでした。これはちょっと原因不明。

で、更に調べるうちに別のサイトを見つけて、これでやっと解決しました。

ヽ( ・∀・)ノくまくまー(2006-10-11) [MySQL] 文字化け問題を本気で直すより。

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

1 行目でデフォルトの文字コードを指定し、2行目は「余計なことはするな」という命令。(MySQL4.1.5で実装)。これによってサーバとクライアントの文字コードが違っていても内部変換をしなくなる。余計なものを実装して、その余計なものを抑止するオプションを実装してくれたMySQLに乾杯!設定は上記のように "mysqld" セクションだけでOK。サーバの設定を変更したので、MySQLは忘れずに再起動しておく。

設定ファイルに元々記載されている「character-set-server = latin1」と「collation-server = latin1_general_ci」をコメントアウトして、代わりに上記2行を追加すると、めでたく「SET NAMES」なしでも文字化けを回避できました!

参考にしました上記2サイト様、ありがとうございました。

MySQL逆引きクイックリファレンス―MySQL 4.0/4.1/5.0対応
山田 祥寛
毎日コミュニケーションズ (2006/12)
売り上げランキング: 31520
おすすめ度の平均: 5.0
5 「使える」逆引きが満載。
5 バージョン5.0の新機能も載っています

2007年04月19日

最新のXAMPPでローカルからのアクセスが上手くいかない件について

今日、古いバージョンのXAMPPを一旦アンインストールして、最新バージョン(1.6.1)を入れ直してみたんだけれども、その初期設定で問題発生。

・セキュリティ設定ページにアクセスできない。
最近のバージョンで新しく追加されたセキュリティ設定ページ(http://localhost/security)にアクセスしようとすると、

 FORBIDDEN FOR CLIENT 0.0.0.0
というエラーが出てアクセスできない。

・.htaccessによるアクセス制限が正常に動作しない。
ネットワーク上の他の端末からのアクセスを制限するために、通常htdocsディレクトリに以下のように記述した.htaccessファイルを置きます。

Order deny,allow
Deny from All
Allow from localhost 127.0.0.1
しかし、これが上手く動作せず、自端末からのアクセスも拒否されてしまう。

Apacheのログなどを見て原因を調べてみましたが、どうやら上の2つの問題はクライアントのリモートアドレスが上手く取得できていないのが原因のよう。本来、自端末からのアクセスは127.0.0.1となるはずですが、それが何故か0.0.0.0と判定されてしまいアクセスの制限に引っかかっているようです。以前に同じ環境にver1.5.4aを入れたときは問題なかったはずなので、最近のバージョン特有の問題かもしれません…。

対応策ですが、Apacheの設定ファイル(xampp/apache/conf下のhttpd.conf)に以下の一行を追加して再起動すれば解決するようです。

Win32DisableAcceptEx
これでリモートアドレスがちゃんと127.0.0.1と認識されるようになり、どちらの問題も解決します。ただ、そもそもの問題が起きる原因と解決法の因果関係がよくわかっていないので調査中…。

2007年04月16日

php.iniファイル設定メモ

php.iniファイル設定関連のリンクメモ。

2007年01月25日

マッシュアップアワード 2nd

リクルートのBIコラボblogで紹介されていますが、リクルートとサン・マイクロシステムズの共同主催による「Mash up Award 2nd」が開催されるそうです。
参加受付は3月12日までの2ヶ月弱の期間、最優秀賞は賞金50万円なり。

(勝手に選んだ)主な提供API

●リクルート関連


  • カーセンサー・ラボWebサービス

  • じゃらんWebサービス

  • スマッチWebサービス

  • フロム・エー ナビお仕事検索webサービス

  • ホットペッパーWebサービス

●ブログ系


  • シックス・アパートのTypePadやVoxのAPI

  • テクノラティブログ検索API

  • ドリコムブログ XML-RPC API

●キーワード系


  • GREEキーワードAPI

  • PingKing WEBサービス

  • kizapi(きざっぴ)

●便利ツール系


  • イースト辞書Webサービス

  • RailGo

  • ぽすたん

などなど。(全提供API一覧

このアワードに限った話ではないけど、昨年はGoogle Mapsと絡めた位置情報系のマッシュアップが熱い一年だった。今年もその勢いは衰えないだろうけど、個人的には、上記のキーワード系のAPIをマイクロフォーマットやセマンティックウェブの流れと組み合わせて、何か面白いものが作れないかなと考え中。

意味付けされたキーワードを軸に、それらのワードが持つ言葉の「広がり」と有機的な「繋がり」を視覚的に表現できれば、新しい情報の収集・共有ツールとしての可能性が見えてくる気がするんですが…、
いかんせん、今はまだ自分の技術力がそこまで到底届きませんorz


via JavaScript++かも日記

2006年12月29日

PHP覚書その2 - NULLの扱い

PHPにおける、NULLと関係する関数の動作のまとめ。

●is_null()
明示的にNULLが設定された変数、未定義の変数、unset()により割り当てを解除された変数にのみTRUEを返す。

●isset()
is_null()と逆の振る舞いをする。

●empty()
is_null()がTRUEを返すケースに加えて、空文字や0(数値・文字列とも)、FALSE値、空の配列などに対してもTRUEを返す。この挙動はある変数をTRUEとするかFALSEとするかの判定のちょうど逆となる。

2006年12月27日

PHP覚書その1 - foreach構文

foreach ($array as $value) {} 構文の中では、$value の値を変更しても元の配列の値は変更されません。$value に代入されているのは、配列の要素の「値のコピー」だからです。便利だからといっていつもforeach文を使っていると、ついこのことを忘れそうです。

他の言語の同種の構文も調べてみましたが、VBのFor Each、JavaScriptのfor、Javaの拡張For文なども、やはり全て同じ仕様のようです。

ちなみに、PHP5以降の場合、foreach ($array as &$value) {} として$valueに参照を代入すれば、$valueへの変更を配列に反映させることができます。

see PHPマニュアル

2006年12月25日

PHP統合開発環境

簡単なPHPコードを書くときにはKJさんのPHPエディタを使ってるんですが、デバッグ機能が使えるIDEがほしい! ということで、PHPの開発環境を整備しました。
基盤はJavaでお世話になったEclipse。
既に詳しいインストール手順を公開している方がいるので、それを参考にしつつセットアップ。

でも、コード中にdebugbreak()を書いてデバッグすることはできるようになったんだけど、Eclipseのブレークポイントは何故か無視されてしまいます><
何がおかしいんだろうなぁ…。

とりあえず、自分のセットアップのメモです。何かの参考になれば。
(バージョンの依存関係のため、必ずしも最新のものを使ってはいません)

以下は、自分がはまった注意点です。

・インストールの前に、apacheやPHPなどの各種ソフトは必ずアンインストールしておきましょう。同じバージョンのものを入れる場合でも、XAMPPは独自のディレクトリ構造を形成するので、予期せぬ問題の原因になります。

・phpmyadminで最初にMySQLのユーザパスワードを設定するとき、関数にPASSWORDを設定するのを絶対に忘れないように。これを忘れると意図しない値がパスワードとして設定されてしまい、以後ログインできなくなってしまいます。

・PHPの拡張dllを配置するディレクトリは、PHP4までは php/extension でしたが、 PHP5ではデフォルトで php/ext になっています。知らないと結構はまります。php.iniファイルを書き換えれば変更も可能です。

・XAMPPでは、php switch という機能で簡単にPHPのバージョンを 4.x と 5.x に切り替えられますが、切り替えるとphp.iniの設定はデフォルトに戻ってしまいます。PHP4.x用のiniファイルと5.x用のiniファイルをそれぞれ準備しておきましょう。

(2007/04/23 追記)
Apacheの起動時に他のアプリケーションがPort80を使用中だとApacheが起動できません(よくあるのがSkype)。なので、設定でどちらかのアプリのPort番号を変えるようにしましょう。
(追記終わり)

設定手順などの参考サイト

2006年12月18日

PHPからWindows APIを使う方法(情報求む)

現在、PHP5でWindows APIを使用する方法を模索中です…。

マニュアルのこの辺りの情報から、従来のPHP4の php_w32api.dll が、PHP5では php_ffi.dll に置き換えられたらしいことがわかって、
PECL4WIN(Windows用のPECLのサイト)のここから5.0.5用のモジュールを入手して(5.1以降の環境ではモジュールが認識されないようです)、
php/ext ディレクトリに放り込んで、iniファイルに一行追記して、いざ使ってみたのですが…、
Windows APIの使い方がわかりませんorz。

やりたいことは、アクセスしたユーザのWindowsへのログオンIDを取得することで、

$windows = new ffi ("[lib='user32.dll'] int MessageBoxA( int handle, char *text, char *caption, int type );" );
echo $windows->MessageBoxA(0, "Message For You", "Hello World", 1);

上記のコードは正常にMessageBoxが表示されるので、Windows API の呼び出しはできているようなのですが、

$windows = new ffi ("[lib='advapi32.dll'] long GetUserName(string &a, int &b);" );
$name = "";
$windows->GetUserName($name, 100);
echo $name;

こちらのコードは、

Fatal error: Call to undefined method FFI::GetUserName()

となってしまいます…。

どなたか詳しい方がいたら、どこがおかしいのかご教授くださいませ……。

2006年12月16日

PHPの文字コードの設定

PHPの文字コードまわりの設定を見直しました。

  • OS           :Windows
  • 内部エンコーディング:EUC-JP
  • 出力文字コード    :Shift_JIS

上記の環境に合わせてこちらを参考にして設定したリストがこれ。

  • output_buffering = On
  • output_handler = mb_output_handler
  • default_charset = Shift_JIS
  • extension=php_mbstring.dll を有効に
  • mbstring.language = Japanese
  • mbstring.internal_encoding = EUC-JP
  • mbstring.http_input = auto
  • mbstring.http_output = SJIS
  • mbstring.encoding_translation = On
  • mbstring.detect_order = auto
  • mbstring.substitute_character = none

これで上手くいっているようなんだけど、output_buffering や default_charset の設定が、実際にどう影響を与えているのかがいまだよくわかりません。マニュアル熟読して勉強していかないとなぁ…。

2006年12月14日

PHPマニュアルの文字化け

本家PHPのサイトで配布されている.chm形式のPHPマニュアルが文字化けしてしまうのは私だけでしょうか?

http://www.php.net/download-docs.php
(マニュアルはここからダウンロードできます)

文字コードの問題だろうけど、Windows環境だと「キーワード」の日本語が化けていて、日本語による検索もできません。同じ形式のPEARのマニュアル(http://pear.php.net/manual/index.php)は化けてないので不思議に思って調べてみると、Windows上で一度デコンパイルして再コンパイルすれば化けなくなるようです。

で、実際に再コンパイルしてみたら上手くいったので、修正済みのファイルをアップしました。同じ症状で苦しんでた方はご利用くださいませ。
こちらからどうぞ。(マニュアルは2006年11月25日付けのファイルです)(→追記参照)


デコンパイル&再コンパイルの方法は以下のサイト様を参考にしました。http://blog.plastik.jp/archives/15
http://diary.noasobi.net/2006/04/diary_060407a.html


追記:(2007/05/05 11:00)
PHPマニュアルを新しいものに置き換えました。また、合わせて同様の症状のMySQLのドキュメント(本家)もアップしました。(全て2007/05/04時点での最新のものです)


プロフィール

運営者:ina
詳細はプロフィール参照。

連絡先:
inamenai [at] gmail.com
Loading...

フィード

最新のはてなブックマーク

最新のTumblr

ライセンス

クリエイティブ・コモンズ・ライセンス
このブログは、上記のクリエイティブ・コモンズ・ライセンスで保護されています。

その他

track feed
  • track word