mysqlの設計をするときに改めてカラムタイプについて考えてみた。
いまさらという感じでもあるが。。。

例えばブログのタイトル。
大体、100文字あれば十分という感じがする。
でもUTF-8の場合、日本語はほぼ一文字あたり3バイト(ときに4バイト)になるため
文字数x3から4を見積もるため、100文字の場合は300から400バイトを割り当てることになる。
でもvarcharの最大データ長は255だから、日本語で100文字のタイトルを設定するとなると
カラムタイプをtextにしないといけなくなる。タイトルなのに。
そんなバカな!

逆に200byteで考えておけば50~60文字のタイトルが格納される。
もちろん半角英数字が入る場合はもっと長くなる。
そうするとinputタグにmaxlength仕掛けても、それってユーザビリティ悪い気もする。
ajaxで文字列のバイト数を計算して、キーを叩くたびに計算して
オーバーしたらエラーっていうのがスマートかも。

参考:

Code:

echo strlen(bin2hex($str))/2

http://www.cpa-lab.com/tech/0144
http://zombiebook.seesaa.net/article/33192046.html

Link: http://firemobilesimulator.org/

近年モバイルサイトを開発することが多くなってきた。
モバイルサイトはPCとは違って、横幅のサイズが端末によって違ったり
絵文字がキャリア毎にちがったりで、慣れないと大変である。

モバイルサイトのリリースをする時点で
閲覧できるブラウザをモバイルだけに限定することが多い。
そうすると、PCからの確認作業ができなくなってしまうので
自分の携帯端末から確認するしかない。
とはいっても、パケット代が馬鹿にならない。

各種キャリアからもエミュレータ(シミュレータ)が配布されているが
どれも使い勝手はいまいちである。

Auキャリアに対応しているOpenwave SDK6.2Kは未だに公開停止だし。。。

それでもSoftbankから出ているウェブコンテンツヴューアはかなり使い心地はいいのだが、
他のキャリアでのテストを同時にしたい場合は、別のシミュレータを起動しておかないといけない。

こういうことを考えてみると、
各キャリア会社は本当にモバイルサイトを増やしたいのか?と思うほどである。
このあたりのツールをきちんと整備しているかどうかで、
その会社がどれだけこの分野に力を注いでいるかがわかってしまうような気がした。

ネットファーム・コミュニケーションズ株式会社からリリースされている
P1エミュレータはそんな問題をいっぺんに解決してくれる。
3キャリア対応で、絵文字やユーザーエージェント、画面幅などを
かなり細かくわけることができるし、キャリア毎の機種も豊富にそろっている。
しかも、新しい機種がリリースされるとともに、これらをきちんと対応機種に含んでくれる。

ところがこれは有償ソフトなので、開発案件のほとんどがPCで時々しかモバイルの案件がないような場合には
ちょっと費用対効果が少ないかもしれない。

ということでなかなかお手頃なエミュレータがないのが現状である。

閲覧するだけならfirefoxのアドオンであるUser Agent Switcherでも十分かもしれないが
絵文字の表示や、横幅の指定となるとちょっと物足りないかもしれない。

そこで登場したのがモバイル端末のエミュレーションをしてくれるfirefoxのアドオン。
FireMobileSimulatorだ。

3キャリア対応で、絵文字も表示して、横幅サイズもシミュレートしてくれます。
P1エミュレータほど機種が多くもないし、作りこんでいる感じはないですが、確認用としては十分です。
そして、オプションで緯度経度を設定できるところがなんとも素晴らしい!!
今や多くのモバイルサイトがGPSのサービスを使ったものが多いなかで、
このあたりをきちんとサポートしているところは、
よくモバイルサイトの情勢をわかっているなと感じました。
そして、やはり無償で提供しているのに感動します。

*Firefoxでの公式ページはこちら。(開発中のアドオンのためユーザー登録が必要になります。)

以下に開発者の方のコメントを引用いたします。

FireMobileSimulatorは、主要3キャリア(DoCoMo/Au/SoftBank)の携帯端末ブラウザをシミュレートして、モバイルサイト開発を容易にするために作成されたFirefoxのアドオンです。携帯端末のHTTPリクエスト、絵文字表示、位置情報送信機能などの動作をシミュレートすることができます。

モバイルサイトをPCで閲覧するために、従来からある方法として、キャリア公式シミュレータの使用、Proxyの使用、Firefoxの useragentswitcher+modify headersの組み合わせ等、色々と手段はありましたが、これらの方法はそれぞれに不足している機能があったり、またITに詳しくない人にとっては導入が面倒かつ困難という面があります。

このアドオンは、「誰でも簡単に導入できる」かつ「高機能である」ことを目的に作成された新しい携帯シミュレーターです。

おススメです。

vmware serverの2.0がリリースされました。
新しく立てたサーバはこれを使ってやってみました。

起動するとブラウザが立ち上がって、認証を求められます。
windowsの管理ユーザのidとパスワードを入力してログインします。
すると、管理画面が表示されます。

感想としては前よりもわかりやすくなったなと感じました。
新しく仮想マシンを作る時も、直感的にサクサク進みます。
しかも、仮想マシンを作ってから、ビルドする時間が非常に短くなった気がします。

Firefoxの場合は専用のプラグインをダウンロードすると
コンソールが立ち上がるようになります。

仕組みとしてはtomcatが入っていてapacheから管理画面にアクセスできるようになっているようです。

なかなかいいなと思っていると、問題が・・・。

windowsのスタートメニューからvmware serverをクリックしても
ログインページが表示されなくなってしまった。。。
自分のマシンを参照するドメインが違うのか、ポートの指定が違うのか。
いろいろやってみて、ログイン画面に入れたものの、
実際にログインしても、エラーになってしまう。

The VMware Infrastructure Web Service at “http://localhost:8222/sdk” is not responding (Connection Refused).

え~。そんな。

いろいろ調べてみると、この類の問題にぶち当たっている人は多いみたい。
スタートメニューからのショートカットはnetBiosの関係でうまく動かないとか
hostsの設定が違うとか、ネットワークの設定が違うとかなんとか。。。

結局vmware server 1.xのほうが安定してるんじゃ。。。

いろいろ試してみたけど、結果から言うと
vmware server 2.0をアンインストールして、
再インストールしたら直りました。
なんのこっちゃ。

それまで試した試行錯誤を見たい方は以下をクリックして
続きを読んでください。

Read more »

新しく開発用サーバを立てることになったのでメモを残します。
いわゆるLAMP環境の設置です。

apache2.2のインストール

apacheをportsからインストールします。

Code:

cd /usr/ports/www/apache22
make install
apachectl start

すると以下のようなエラーが。

httpd: apr_sockaddr_info_get() failed for sabani.localhost
httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName
[Wed Nov 26 16:12:35 2008] [warn] (2)No such file or directory: Failed to enable the ‘httpready’ Accept Filter

サーバのドメインネームが無い、ということなのでhostsファイルを編集。

Code:

vim /etc/hosts
127.0.0.1 yourdomain

もう一度apacheを起動するとちゃんと動きました。

php5のインストール

cd /usr/ports/lang/php5

Code:

make configure #apacheとmultibyteにチェック
make install

インストールが終わったら
php.ini-distをコピーしてphp.iniを作る。
php.ini-recommendとはrecommendと言いつつ、phpの公式ページでは
php.ini-distを使いなさいとある。なんのこっちゃ。
ちなみにdiffると違いがよくわかる。
error_reportingとかmagic_quoteとかが微妙に違うので注意。

httpd.confに以下の一行があることを確認

Code:

LoadModule php5_module libexec/apache22/libphp5.so

php5_moduleとlibexec/apache22/libphp5.soの間の変なタブが入っている場合は
そのタブを消してスペースで区切る。
じゃないときちんとphpと認識されないことがあるみたいです。

さらに以下の二行をhttpd.confに追加

Code:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

これでapacheのリスタートをかける。
適当にphpファイルを作ってブラウザから閲覧できればOK。

さらに拡張する場合は
/usr/ports/lang/php5-extensions
に移動して

Code:

make configure
make install

multibyteはともかく、必要そうなものを欲張りに入れていく。
特にMySQLとかXML-RPCとか。

参考URL
http://www.php.net/manual/ja/install.unix.apache2.php

mysqlのインストール

phpの拡張でmysql-clientはすでにインストールされているので
ここではmysql-serverのみをインストールする。

Code:

cd /usr/ports/database/mysql50-server
make configure
make install

mysqlの公式サイトによると
mysql_install_dbを実行する必要があるとのこと。
http://dev.mysql.com/doc/refman/5.1/ja/freebsd.html

これに従って以下を実行

Code:

cd /usr/local/mysql
bin/mysql_install_db --user=mysql
bin/mysqld_safe &

topを見るとmysqldが動いているのが見えます。

mysql_install_dbを実行した際に以下のメッセージが出るので
これに従います。

/usr/local/bin/mysqladmin -u root password ‘new-password’
/usr/local/bin/mysqladmin -u root -h yourdomain password ‘new-password’

そしてこのメッセージでもマニュアルでも
起動コマンドはあくまでも mysqld_safe & にしてくれと書いてある。
なので、できるだけmysqld_safeを使うことにする。

mysqld_safe は Unix や NetWare などの環境で、mysqld サーバ ( デーモン) を起動するときに推奨しているコマンドです。mysqld_safe は、エラー発生時にサーバを再起動したり、ランタイム情報をログ ファイルに記録するなどのセキュリティ機能が加わります。

http://dev.mysql.com/doc/refman/5.1/ja/mysqld-safe.html

ただし、以下の文章がよくわからなかったので、保留事項としておく。

FreeBSD は非常に小さいデフォルトのファイル処理制限があることで知られています。項B.1.2.17. 「’File’ Not Found and Similar Errors」 参照。サーバを –open-files-limit オプションを使用して mysqld_safe に起動しするか、あるいは /etc/login.confg の mysql ユーザーの制限を上げそれを cap_mkdb /etc/login.conf で再度ビルドします。

http://dev.mysql.com/doc/refman/5.1/ja/freebsd.html

ports管理やpackage管理でよく混乱するので覚書を残しておく。

cvsup

以下のコマンドでports treeを最新のものにアップデートする。
この場合はcvsサーバを指定し、portsのsupfileを参照するように指定する。

Code:

cvsup -L 2 -h cvsup.jp.FreeBSD.org /usr/share/examples/cvsup/ports-supfile

このコマンドでcvsのアップデートをする場合にはmake.confファイルを編集する必要はない。
make.confファイルの編集をするのが必要なのは、/usr/portsにて make update コマンドを実行したときである。

make.confは一般的に以下のように書かれるらしい。

Code:

SUP_FILE= yes
SUP= /usr/local/bin/cvsup
SUPFLAGS= -l -L 2
SUPHOST= cvsup.jp.FreeBSD.org
PORTSSUPFILE=/usr/share/example/cvsup/ports-supfile

(後藤大地 『FreeBSD ビギナーズバイブル』 p.87より)

make.confファイルは基本的にmakeコマンドの実行時に
デフォルトとは違うオプションとして指定したいものを
記述しておくものらしい。
よってmakeコマンドが叩かれたときには常にインクルードされるみたい。

以下参照
http://www.jp.freebsd.org/cgi/mroff.cgi?sect=5&cmd=&lc=1&subdir=man&dir=jpman-5.2.0%2Fman&subdir=man&man=make.conf

cvsupは/usr/portsディレクトリでmake updateコマンドでも実行することができる。
ただ、その場合はどのsupfileを読み込むのかということや、どのサーバにアクセスするのかが
わからないので、make.confファイルに記述しておく必要があるみたいだ。

なおsupfileは/usr/share/examples/cvsup/にいくつかのサンプルファイルがある。

  • doc-supfile
  • ports-supfile
  • standard-supfile
  • cvs-supfile
  • gnats-supfile
  • refuse
  • stable-supfile
  • www-supfile

これらのファイルのなかでどのようなコレクションをアップデートするかという記述があるみたいだけど
正直よくわからなかった。
とにかくportsをアップデートしたいのでports-supfileで良いみたい。

以下ports-supfileの内容

Code:

*default host=CHANGE_THIS.FreeBSD.org#ここに指定したcvsサーバが入る
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
*default compress
ports-all#全てのportsがアップデートの対象になる

ただゲーム関係のportsとかアラビア語のportsなどをインストールすることはまずないと思うので
本当ならば必要なものだけを指定したほうが効率的なのは間違いないだろうけど。
/usr/share/examples/cvsup/refuse にてcvsupする必要のないコレクションを指定することができる。

refuseファイルの内容

Code:

doc/bn_*
doc/da_*
doc/de_*
doc/el_*
doc/es_*
doc/fr_*
doc/hu_*
doc/id_*
doc/it_*
doc/mn_*
doc/nl_*
doc/no_*
doc/pl_*
doc/pt_*
doc/ro_*
doc/ru_*
doc/sr_*
doc/tr_*
doc/zh_*
ports/arabic
ports/chinese
ports/french
ports/german
ports/hebrew
ports/hungarian
ports/korean
ports/polish
ports/portuguese
ports/russian
ports/ukrainian
ports/vietnamese

デフォルトでは日本語関係のものが入っていることもあるので適宜抜く。

参照
http://www.freebsd.org/doc/ja/books/handbook/cvsup.html

1 2 3 4 >>

はじめまして。Takeshiといいます。今年の四月から、恵比寿の小さな会社でウェブSE兼プログラマーとして働き始めました。主にLAMP環境でウェブサービスやウェブサイトの構築をやっています。社会人なりたてということもあり、右も左もわからない状況ですが、日々感じたことや、覚えたことなどをメモっていきたいと思います。コメントやトラックバックなどいただけると、とても嬉しいです!それでは、よろしくお願いいたします。

4月 2017
 << <   > >>
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

検索

XMLフィード

blog software