2010年6月 2日

卒業

創業からお世話になっているEthnaですが、そろそろ卒業が近づいてまいりました。
新しく採用するフレームワークは100%国産というか自社産の・・・・。
乞うご期待!

2008年11月21日

.htaccessでBASIC認証とSSL必須設定する

.htaccessに

SSLRequireSSL

と設定すると、httpでアクセスすると403 Forbidden
にすることができるようです。

しかし、上記の場合BASIC認証を行っていると
うまくいかなかったので、以下のようにしました。

[BASIC認証]
AuthUserFile /path/.htpasswd
AuthName "xxx"
AuthType Basic
require valid-user

Satisfy all
SSLRequireSSL

2008年11月 8日

MySQLのSHOW PROCESSLIST

その名の通り実行中のスレッド情報を表示でき、どういうクエリが
実行されているか見ることができます。

12.5.4.24. SHOW PROCESSLIST 構文

上記で取得した情報から特定のクエリをKILLすることもできます。

mysqlのSUPER権限を持つユーザーで使うと良いでしょう。

2008年11月 7日

Ethnaのアクション名の決定方法をハック

Ethnaのアクション名がaction_xxxというパラメータで決定されているのですが、

http://hostname/xxx

http://hostname/index.php?action_xxx=true

にrewriteしているような場合、POSTのときだけアクション指定のため

<input type="hidden" name="action_xxx" value="1">

というパラメータを埋め込んだりしていました。

今回POSTとGETで同じパラメータにする必要が生じたため、試行錯誤したところ
[ProjectName]_ControllerでEthna_Controllerの_getActionName_Formを次のように
オーバーライドするとうまくいきました。

function _getActionName_Form()
{
    $action_name = parent::_getActionName_Form();

if( (!$action_name) && ($_SERVER['REQUEST_METHOD']=="POST") )
{
$http_vars = $_GET;
foreach ($http_vars as $name => $value) {
if ($value == "" || strncmp($name, 'action_', 7) != 0) {
continue;
}
$action_name = substr($name, 7);
}
}
return $action_name;
}

これでGETでは

http://hostname/xxx?p=1

、POSTでは

<form method="post" action="http://hostname/xxx">
<input type="hidden" name="p" value="1">
<input type="submit" value="post" />
</form>

というようにパラメータが統一できています。

2008年11月 3日

auで文字スクロールするときの3つの技

1.常にスクロール
<marquee loop="1">1回スクロール</marquee>
<marquee loop="infinity">無限スクロール</marquee>

2.フォーカス時(カーソルON)のみスクロール
<div mode="nowrap">長い文章(短い文のときはスクロールしない)</div>

3.↑のとき決定キーを戻るにしない
bodyの直後に
<wml:do type="accept"><noop /></wml:do>
を挿入

2008年11月 2日

SELECT SQL_CALC_FOUND_ROWS

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
    -> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();

ページャーを作る時などには欠かせません。

PostgreSQLにも欲しい!

> SQL_CALC_FOUND_ROWS and FOUND_ROWS() are MySQL features.

2008年11月 1日

PHP配列関数

$list = array();
for ($i = $start; $i < $start + $num; $i++) {
    if ($datas[$i]) {
        $list[] = $datas[$i];
    }
}

$list = array_slice($datas, $start, $num);

としてスッキリ!!

PHPリファレンス:配列関数

2008年10月27日

VMware Server 2でWeb Accessを使わないでゲストOS管理

VMware Server 2のWeb Accessにアクセスできない場合の対処ができたばかりですが、ゲストOSをWeb Accessを使わないで管理する方法がありました。

やり方は簡単。
まず
C:\Program Files\VMware\VMware Server\tomcat\webapps\ui\plugin
にあるvmware-vmrc-win32-x86.exeをインストール。

そして、Webの管理画面からゲストOSを指定して
CommandsのGenerate Virtual Machine Shortcutから

Install Desktop Shortcut to Virtual Machine

というリンクをクリックすればデスクトップにコンソール起動用の
ショートカットが作成できます。

これでサービスのVMware Server Web Accessを手動にして
おけば、tomcatも起動しないのでメモリが節約できます。

2008年10月26日

VMware Server 2のWeb Accessにアクセスできない場合の対処

VMware Server 2から管理画面がウェブインターフェースになっていますが、ある時期からブラウザで開こうと思ったら「正常に接続できませんでした サイトアドレスは有効なようですが、接続を確立できませんでした。」というエラーが出てログイン画面すら出なくなりました。

が、無事解決したので手順を書いておきます。
windows XPにVMware Server 2をインストールしている場合です。

【手順】
「コントロールパネル」の「管理ツール」にある「サービス」を起動。

VMware Host Agentサービスが起動していなかったので起動。

VMware Server Web Accessサービスを再起動。

これでhttps://Host名:8333/ui/にアクセスするとログイン画面が出ました。

もっと根本的な解決方法があればぜひ教えてください。

2008年10月25日

CentOS5.2でmemcachedインストール

CentOS5.2でyumからmemcachedをインストールしようとすると

[nakamoto@xxx ~]$ yum list memcached
Error: No matching Packages to list

パッケージが見つかりませんでした。

そこでネットの情報を参考に以下の手順でインストール。


[root@xxx ~]# rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
[root@xxx ~]# vi /etc/yum.repos.d/rpmforge.repo

enable = 1

enable = 0

[root@xxx ~]# yum install -y memcached --enablerepo=rpmforge
[root@xxx ~]# yum install -y php-pecl-memcache
[root@xxx ~]# /etc/rc.d/init.d/httpd restart

# 設定確認
[root@xxx ~]# cat /etc/sysconfig/memcached
PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

[root@xxx ~]# cat /etc/php.d/memcache.ini
; Enable memcache extension module
extension=memcache.so

[root@xxx ~]# php -i | grep memcache
/etc/php.d/memcache.ini,
memcache
memcache support => enabled
memcache.allow_failover => 1 => 1
memcache.chunk_size => 8192 => 8192
memcache.default_port => 11211 => 11211
memcache.hash_function => crc32 => crc32
memcache.hash_strategy => standard => standard
memcache.max_failover_attempts => 20 => 20
Registered save handlers => files user memcache

# 起動
[root@xxx ~]# /etc/rc.d/init.d/memcached start
Distributed memory caching (memcached) を起動中: [ OK ]

[root@xxx ~]# chkconfig --list memcached
memcached 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@xxx ~]# chkconfig memcached on
[root@xxx ~]# chkconfig --list memcached
memcached 0:off 1:off 2:on 3:on 4:on 5:on 6:off

2008年8月24日

久しぶりにAmazonで買い物

久しぶりにAmazonで買い物。

私がヘビーユーザーだった頃の2年前からさらに進化していて、特に


・この商品を見た後に買っているのは?



・関連商品の数珠つなぎ


が便利。


この商品を見た後に買っているのは?というのは、商品ページを閲覧後
どのくらいの人が購入しているかを表示する機能で、


類似商品を3つほど並べて、一番人気の商品に「45%が購入」と表示される
ので説得力ありまくり。


他に気になったのはビデオレビューで、まだまだレビューが少いようで、
役には立たなかったけど、レビュー数が増えると便利になりそうです。

2008年1月 9日

リニューアル

リニューアルしました!