<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8759161663086926072</id><updated>2024-11-09T00:40:47.911+09:00</updated><category term="HTML"/><category term="JavaScript"/><category term="CSS"/><category term="Other"/><category term="WordPress"/><category term="CentOS6"/><category term="PHP"/><category term="CentOS5"/><category term="Cloud"/><category term="タブレット"/><category term="Android"/><category term="Apache"/><category term="Cordova"/><category term="jQuery Mobile"/><category term="API"/><category term="Linux"/><category term="MySQL"/><category term="スマホ"/><category term="設計入門"/><category term="Blogger"/><category term="SQL Server"/><category term="Windows"/><category term="nginx"/><title type='text'>システム開発おぼえがき</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>116</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-3910940739731145938</id><published>2015-10-07T09:08:00.000+09:00</published><updated>2015-10-07T09:12:06.407+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache"/><category scheme="http://www.blogger.com/atom/ns#" term="CentOS6"/><category scheme="http://www.blogger.com/atom/ns#" term="nginx"/><title type='text'>nginx + Apacheで20万PV/日を捌く</title><content type='html'>GMOクラウドVPSの2GBプランで運営しているWordPressサイトがあるのですが、5万PV/日を超えてだんだん重くなってきたので4GBプランに移行しました。&amp;nbsp;
&lt;br /&gt;
■これまでの経緯&lt;br /&gt;
・Apache：2GBプランだと2万PV/日くらいで厳しくなる（メモリ不足）&lt;br /&gt;
・nginx：5万PV/日を超えたあたりで重くなる（ロードアベレージが高すぎる）&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blog.chibiegg.net/2011/11/17_10_616.htm&quot;&gt;chibiegg日誌&lt;/a&gt;を参考に、バックエンドの処理をApache、フロントエンドの処理をnginxにさせて負荷軽減を目指します。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;h4&gt;Apacheの設定&lt;/h4&gt;
不要っぽいモジュールは読み込まないようにします。8080ポートで動くように変更します。&lt;br /&gt;
&lt;br /&gt;

/etc/httpd/conf/httpd.confの一部&lt;br /&gt;
&lt;pre&gt;
StartServers       8
MinSpareServers    5
MaxSpareServers   15
ServerLimit      40
MaxClients       40
MaxRequestsPerChild  1000

Listen 8080

#LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
#LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so

NameVirtualHost *:8080

&lt;VirtualHost *:8080&gt;
        ServerName example.com
        DocumentRoot /home/example.com/html/
        CustomLog       /home/example.com/logs/access8080.log combined
        ErrorLog        /home/example.com/logs/error8080.log
&lt;/VirtualHost&gt;

&lt;/pre&gt;
&lt;br /&gt;

&lt;h4&gt;nginxの設定&lt;/h4&gt;
ポート80で待ち受けてキャッシュ。キャッシュになければ8080に飛ばします。（キャッシュのサイズはどれくらいがいいか分からなかったので適当）&lt;br /&gt;
また、wp-adminへの不正アクセスがあるのでIP制限をします。&lt;br /&gt;
（記事をスクレイピングされることもあるので、スクレイピングサイトからのアクセスも弾く）
/etc/nginx/conf.d/default.conf&lt;br /&gt;
&lt;pre&gt;
proxy_cache_path /var/cache/nginx/static_file_cache levels=1:2 keys_zone=cache_static_file:128m inactive=7d max_size=10g;
proxy_temp_path /var/cache/nginx/temp;

upstream backend{
    server 127.0.0.1:8080;
}

server {
    listen       80;
    server_name  localhost;

    location ~ wp-login\.php$|xmlrpc\.php$|wp-admin/((?!admin-ajax\.php).)*$ {
        allow 許可するIPアドレス;
        allow このサーバーのIPアドレス;
        allow 127.0.0.1;
        deny all;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://backend;
    }

    location / {
        proxy_redirect off;

        set $do_not_cache 0;
        if ($request_method != GET) {
            set $do_not_cache 1;
        }
        if ($uri !~* &quot;.(jpg|png|gif|jpeg|css|js|swf|pdf)$&quot;) {
            set $do_not_cache 1;
        }
        proxy_no_cache $do_not_cache;
        proxy_cache_bypass $do_not_cache;
        proxy_cache cache_static_file;
        proxy_cache_key $scheme$host$uri$is_args$args;
        proxy_cache_valid 200 2h;
        proxy_cache_valid any 1m;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://backend;

    }
    deny スクレイピングサイトのIPアドレス;
    allow all;
}
&lt;/pre&gt;
&lt;br /&gt;

&lt;h4&gt;MySQLの設定&lt;/h4&gt;
上記で運用してみるとMySQLのCPU使用率が高かったので、クエリキャッシュを増やしてみました。&lt;br /&gt;
/etc/my.confの一部&lt;br /&gt;
&lt;pre&gt;
query_cache_size=256M
query_cache_limit=16M
&lt;/pre&gt;
&lt;br /&gt;

&lt;h4&gt;mod_rpaf&lt;/h4&gt;
このままだと、Apacheのアクセスログは常に「127.0.0.1」となってしまいます。&lt;br /&gt;
&lt;a href=&quot;http://qiita.com/skxeve/items/a20ca4baa027c5d48318&quot;&gt;Qiitaさんのブログ&lt;/a&gt;を参考に、mod_rpafをインストールしました。&lt;br /&gt;
&lt;br /&gt;
上記設定で、ピーク時（Google Analyticsで見たアクティブユーザー400人）でもロードアベレージは2くらいになりました。&lt;br /&gt;
このままで20万PV/日くらいまでならこなせると思います。&lt;br /&gt;
・php.iniでメモリを減らす&lt;br /&gt;
・MySQLをMyISAMからInnoDBに変更&lt;br /&gt;
・Apache, nginxのプロセス数調整&lt;br /&gt;
などをすればもう少しいけるかも？

</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/3910940739731145938/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2015/10/nginx-apache20pv.html#comment-form' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/3910940739731145938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/3910940739731145938'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2015/10/nginx-apache20pv.html' title='nginx + Apacheで20万PV/日を捌く'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-3789922829355122121</id><published>2015-06-13T08:23:00.000+09:00</published><updated>2015-06-14T10:18:30.145+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache"/><title type='text'>中規模Webサーバーの設定</title><content type='html'>メモリ2GBのVPSにCentOS 6.6を入れましたが、数万PV/日で遅くなったり、アクセスの多い時間帯にメモリ不足で落ちたりすることがありました。&lt;br /&gt;
&lt;br /&gt;
チューニングしてしばらく様子を見てみます。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
php.ini&lt;/h4&gt;
memory_limit = 64M&lt;br /&gt;
&lt;br /&gt;
標準では128MBですが、64MBにしました。本当は32MB程度にしたかったのですが、WordPressが動かず断念。プラグインを見直したほうがいいかもしれない。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
httpd.conf&lt;/h4&gt;
KeepAliveTimeout 5&lt;br /&gt;
StartServers &amp;nbsp; &amp;nbsp; &amp;nbsp; 8&lt;br /&gt;
MinSpareServers &amp;nbsp; &amp;nbsp;5&lt;br /&gt;
MaxSpareServers &amp;nbsp; 10&lt;br /&gt;
ServerLimit &amp;nbsp; &amp;nbsp; &amp;nbsp;20&lt;br /&gt;
MaxClients &amp;nbsp; &amp;nbsp; &amp;nbsp; 20&lt;br /&gt;
MaxRequestsPerChild &amp;nbsp;1000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
httpd 1プロセスで60MBくらいなので、60MB × ServerLimit 20 ＝ 1.2GB。&lt;br /&gt;
これくらいなら大丈夫？&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href=&quot;http://blog2.k05.biz/2012/06/00721.html&quot; target=&quot;_blank&quot;&gt;格安サーバーで実際どれだけのPVを処理できるかを調べてみた&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://server-setting.info/centos/php-apache-memory.html&quot; target=&quot;_blank&quot;&gt;php + apache のメモリ量をおさえる&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/3789922829355122121/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2015/06/web.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/3789922829355122121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/3789922829355122121'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2015/06/web.html' title='中規模Webサーバーの設定'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-4295561135597085705</id><published>2015-01-27T11:10:00.002+09:00</published><updated>2015-01-29T10:56:02.590+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server"/><title type='text'>ORDER BYでNULLを最後に</title><content type='html'>Microsoft SQL Serverで、ソート時にNULLを最後に持ってくる場合、CASE WHENを使うと便利です。&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;通常&lt;/h4&gt;
ORDER BY コード&lt;br /&gt;

&lt;table border=&quot;0&quot; bgcolor=&quot;#999999&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;&gt;
&lt;tr&gt;&lt;td bgcolor=&quot;#cccccc&quot;&gt;コード&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td bgcolor=&quot;#ffffff&quot;&gt;NULL&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td bgcolor=&quot;#ffffff&quot;&gt;NULL&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td bgcolor=&quot;#ffffff&quot;&gt;A01&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td bgcolor=&quot;#ffffff&quot;&gt;A02&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td bgcolor=&quot;#ffffff&quot;&gt;B01&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;br /&gt;

&lt;h4&gt;CASE WHENを使用&lt;/h4&gt;
ORDER BY CASE WHEN コード IS NULL THEN 0 ELSE 1 END DESC, コード&lt;br /&gt;

&lt;table border=&quot;0&quot; bgcolor=&quot;#999999&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;&gt;
&lt;tr&gt;&lt;td bgcolor=&quot;#cccccc&quot;&gt;コード&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td bgcolor=&quot;#ffffff&quot;&gt;A01&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td bgcolor=&quot;#ffffff&quot;&gt;A02&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td bgcolor=&quot;#ffffff&quot;&gt;B01&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td bgcolor=&quot;#ffffff&quot;&gt;NULL&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td bgcolor=&quot;#ffffff&quot;&gt;NULL&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/4295561135597085705/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2015/01/order-bynull.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/4295561135597085705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/4295561135597085705'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2015/01/order-bynull.html' title='ORDER BYでNULLを最後に'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-1225887199712183596</id><published>2014-08-13T08:44:00.001+09:00</published><updated>2014-08-13T08:52:47.588+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>htmltemplate.incがPHP5.3で動かない</title><content type='html'>PHPのテンプレートエンジンは、Hiroshi Ayukawaさんが作成したhtmltemplate.incをよく利用しています。&lt;br /&gt;
非常にコンパクトなので習得も早く、また軽いのも特徴です。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://sourceforge.net/projects/htmltemplate/&quot; target=&quot;_blank&quot;&gt;http://sourceforge.net/projects/htmltemplate/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
ただ、このソース内で使われている関数 split() がPHP5.3以降非推奨となりました。&lt;br /&gt;
&lt;a href=&quot;http://php.net/manual/ja/function.split.php&quot;&gt;http://php.net/manual/ja/function.split.php&lt;/a&gt;&lt;br /&gt;
そのため、PHP5.3以降では警告が表示されるようになります。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
対応策１：split()関数を変更&lt;/h4&gt;
htmltemplate.incを修正して、非推奨の関数を使わないようにします。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp0fRULKFOPfJTPW3Sg_JIzRIJF8cl9LvxC8yIcAjBgtsXZHL2DM6LkDcGKTIaDoECoEt222EDmRxydq1kRXPa2Xzn0w9fuqHCcgZzWEExQq33dgQH1iac1EqM4iVhADPH-2lBXw1MrYsE/s1600/%E7%84%A1%E9%A1%8C.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp0fRULKFOPfJTPW3Sg_JIzRIJF8cl9LvxC8yIcAjBgtsXZHL2DM6LkDcGKTIaDoECoEt222EDmRxydq1kRXPa2Xzn0w9fuqHCcgZzWEExQq33dgQH1iac1EqM4iVhADPH-2lBXw1MrYsE/s1600/%E7%84%A1%E9%A1%8C.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
2箇所あるので、ここをexplode()に置き換えます。&amp;nbsp;
&lt;br /&gt;
split()とexplode()は正規表現を使えるかどうかの違いなんですが、今回正規表現は使っていないので、どちらでも書き方は変わりません。

&lt;br /&gt;
$ar = split(&quot;/&quot;, $m);&lt;br /&gt;
の箇所を&lt;br /&gt;
$ar = explode(&quot;/&quot;, $m);&lt;br /&gt;
にすれば大丈夫です。
&lt;br /&gt;
&lt;h4&gt;
&lt;br /&gt;対応策２：php.iniの変更&lt;/h4&gt;
&lt;br /&gt;
&amp;nbsp;そもそもこの警告が表示されるようになったのは、PHP5.3から新しく E_DEPRECATED というエラーレベルが追加されたためです。&amp;nbsp;
&lt;br /&gt;
E_DEPRECATEDは、将来のバージョンで動作しなくなる場合に出力される警告です。
&lt;a href=&quot;http://php.net/manual/ja/errorfunc.constants.php&quot; target=&quot;_blank&quot;&gt;http://php.net/manual/ja/errorfunc.constants.php&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
これを非表示にする場合、&lt;br /&gt;
&lt;br /&gt;
(1)php.ini&lt;br /&gt;
&lt;pre&gt;
error_reporting = E_ALL &amp;amp; ~E_NOTICE &amp;amp; ~E_DEPRECATED
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
(2).htaccess&lt;br /&gt;
&lt;pre&gt;
php_value &quot;error_reporting&quot; &quot;E_ALL &amp;amp; ~E_NOTICE &amp;amp; ~E_DEPRECATED&quot;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
(3)PHPソース&lt;br /&gt;
&lt;pre&gt;
error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED);
&lt;/pre&gt;
または&lt;br /&gt;
&lt;pre&gt;
ini_set(&quot;error_reporting&quot;, E_ALL^ E_NOTICE ^ E_DEPRECATED);
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
以上のいずれかの方法で、E_NOTICE と E_DEPRECATED が表示されなくなります。
</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/1225887199712183596/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2014/08/htmltemplateincphp53.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/1225887199712183596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/1225887199712183596'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2014/08/htmltemplateincphp53.html' title='htmltemplate.incがPHP5.3で動かない'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp0fRULKFOPfJTPW3Sg_JIzRIJF8cl9LvxC8yIcAjBgtsXZHL2DM6LkDcGKTIaDoECoEt222EDmRxydq1kRXPa2Xzn0w9fuqHCcgZzWEExQq33dgQH1iac1EqM4iVhADPH-2lBXw1MrYsE/s72-c/%E7%84%A1%E9%A1%8C.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-6079369279368946155</id><published>2014-07-12T13:34:00.000+09:00</published><updated>2014-07-15T13:38:12.818+09:00</updated><title type='text'>オールドドメインの取得方法</title><content type='html'>SEOランクを上げるためには、ページランク（PR）の高いオールドドメインを使うこともひとつの方法だそうです。&lt;br /&gt;
業者から購入すると高いので、（時間と手間はかかりますが）自分で取得する方法をまとめました。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h3&gt;
期限切れドメインの検索&lt;/h3&gt;
期限切れドメインはいくつかのサイトで検索できますが、以下が分かりやすいです。&lt;br /&gt;
&lt;a href=&quot;http://www.expireddomains.net/&quot;&gt;Expired Domains&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
このサイトで、たとえば &quot;Deleted .com Domains&quot; を選択。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU4O4EFsNIH87QWCoVsFIGm0UkkOQG5_6WRU9P7xXBMrRZI6RFgM9WJhuAIQQtiGTwShKDYaFyxYvkJraiiHtM3LAzSOnaPZZpMJuS5buJ-J24h4gu3qhN6_2nQd-U-gZk2IevyVCBDvAh/s1600/dom1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU4O4EFsNIH87QWCoVsFIGm0UkkOQG5_6WRU9P7xXBMrRZI6RFgM9WJhuAIQQtiGTwShKDYaFyxYvkJraiiHtM3LAzSOnaPZZpMJuS5buJ-J24h4gu3qhN6_2nQd-U-gZk2IevyVCBDvAh/s1600/dom1.jpg&quot; height=&quot;233&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
最近期限が切れた.comドメイン一覧が表示されるので、PRをクリックしてページランク順にソート。&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
右側の &quot;Status&quot; が &quot;available&quot; になっているものが、取得できる可能性があるドメインです。&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
ここで、なるべくたくさんピックアップしておきます。&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaYV0MPt7zKV7WOcbKAOe_1z_ijBpfoLTdLr-cJNY14LebYMaCUTDuEnu8ZOSmy-uFEDXN1cICD_SDEIoC3oWS-WwBArcmbAWsvOeE5wNy5WqAgy3SBcwBW4XTgbYkbKE3KKooVvYsHOk-/s1600/dom2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaYV0MPt7zKV7WOcbKAOe_1z_ijBpfoLTdLr-cJNY14LebYMaCUTDuEnu8ZOSmy-uFEDXN1cICD_SDEIoC3oWS-WwBArcmbAWsvOeE5wNy5WqAgy3SBcwBW4XTgbYkbKE3KKooVvYsHOk-/s1600/dom2.jpg&quot; height=&quot;150&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
取得できるかどうか&lt;/h3&gt;
いくつかピックアップしたら、取得できるかどうか&lt;a href=&quot;http://px.a8.net/svt/ejp?a8mat=2BLJL4+7QMVW2+348+1BNBJM&quot; target=&quot;_blank&quot;&gt;ムームードメイン&lt;/a&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://www15.a8.net/0.gif?a8mat=2BLJL4+7QMVW2+348+1BNBJM&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;で一括検索します。&lt;br /&gt;
ID登録すると一括検索できるようになります。（無料）&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUz45g31KSaiyIHQTa5MIue7wUVm1JTMRa7CFMU8niz-YKmKOoEEIq6oE9EixmsF1PSkCfWB4WcuS5TpnkMBN3oayuUWq_KMsU3Fx34q194QwMY4YAUvort0V3YWKX2okJuoZ45HMPRIOu/s1600/dom3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUz45g31KSaiyIHQTa5MIue7wUVm1JTMRa7CFMU8niz-YKmKOoEEIq6oE9EixmsF1PSkCfWB4WcuS5TpnkMBN3oayuUWq_KMsU3Fx34q194QwMY4YAUvort0V3YWKX2okJuoZ45HMPRIOu/s1600/dom3.jpg&quot; height=&quot;210&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
メニュー左上の「ドメイン一括取得」を選択して、さきほど調べたオールドドメインを入力します。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUynr94eDX_LtPYq48AKn3TY4ktYYnQd2GxcWoq-JD92PjheMGLXwypJrYpJK2DmiCja-oYTROhK_RwHlRM8JW0W87qfTBzf9VpK2C3naJT92_uBlfH5nZFOIMA3rdo8wVKLH3m_lAYLhe/s1600/dom4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUynr94eDX_LtPYq48AKn3TY4ktYYnQd2GxcWoq-JD92PjheMGLXwypJrYpJK2DmiCja-oYTROhK_RwHlRM8JW0W87qfTBzf9VpK2C3naJT92_uBlfH5nZFOIMA3rdo8wVKLH3m_lAYLhe/s1600/dom4.jpg&quot; height=&quot;271&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
PR5以上のものはすでに取得されているものが多いんですが、PR3～4だと結構あるみたいです。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7TJdN427IEniI-C5F_TACr5drF3S87A1MKdixI_8P-yl8AloLUzSE8TtOhp7kxS4W-o0bj2UJJh1mh_lnmvHLa05xbxq9Ex7u58a1IUEIuuebrQNRbgvsIKRIffGW-jKQNhP1tuDl9aZH/s1600/dom5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7TJdN427IEniI-C5F_TACr5drF3S87A1MKdixI_8P-yl8AloLUzSE8TtOhp7kxS4W-o0bj2UJJh1mh_lnmvHLa05xbxq9Ex7u58a1IUEIuuebrQNRbgvsIKRIffGW-jKQNhP1tuDl9aZH/s1600/dom5.jpg&quot; height=&quot;283&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;clear: both; text-align: left;&quot;&gt;
優良ドメインかどうか&lt;/h3&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
次に、そのドメインが優良なのかどうか、主観になりますが、調べます。&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;http://seocheki.net/&quot; target=&quot;_blank&quot;&gt;SEOチェキ&lt;/a&gt;を使うのが便利です。&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhuf8v2UpzvQicnxfOwBaoAvGDrZLyr_SuctMVkJ8lMAyqQwmkhvhyphenhyphenMFAW4yfA8J3qzMqvFRA-wbTu5tLge_QJelDZdes227s0bDrBtYMWT-0w54rVFNrPEkqAF9QGXtEvxD2dnoJAd2J9/s1600/dom6.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhuf8v2UpzvQicnxfOwBaoAvGDrZLyr_SuctMVkJ8lMAyqQwmkhvhyphenhyphenMFAW4yfA8J3qzMqvFRA-wbTu5tLge_QJelDZdes227s0bDrBtYMWT-0w54rVFNrPEkqAF9QGXtEvxD2dnoJAd2J9/s1600/dom6.jpg&quot; height=&quot;217&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
SEOチェキでURLを入力すると、このような画面が出てきます。&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;ページランク偽装チェック&lt;/li&gt;
&lt;li&gt;aguse.jp（マルウェア検出、ブラックリスト判定、運営者情報）で&quot;SAFE&quot;になっているか&lt;/li&gt;
&lt;li&gt;「インデックス数」で、過去にどのようなサイトが運営されていたか&lt;/li&gt;
&lt;li&gt;発リンク、被リンクはどうか&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
などをチェックして、ドメインの質を調べます。&lt;/div&gt;
&lt;div&gt;
特にアダルトやギャンブル関係に使われていたドメインは避けたほうが無難です。&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/6079369279368946155/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2014/07/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/6079369279368946155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/6079369279368946155'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2014/07/blog-post.html' title='オールドドメインの取得方法'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU4O4EFsNIH87QWCoVsFIGm0UkkOQG5_6WRU9P7xXBMrRZI6RFgM9WJhuAIQQtiGTwShKDYaFyxYvkJraiiHtM3LAzSOnaPZZpMJuS5buJ-J24h4gu3qhN6_2nQd-U-gZk2IevyVCBDvAh/s72-c/dom1.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-5182592947221421306</id><published>2014-05-07T10:27:00.002+09:00</published><updated>2014-05-07T10:27:22.270+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><title type='text'>Galaxy Nexus(SC-04D)をeclipseに認識させる</title><content type='html'>Galaxy Nexusをeclipseに認識させるための覚え書きです。
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
android_winusb.infの編集&lt;/h4&gt;
android-sdk\extras\google\usb_driver あたりにandroid_winusb.infがあるので、[Google.NTx86]と[Google.NTamd64]のセクションに以下を追加。&lt;br /&gt;
&lt;pre&gt;;Google GalaxyNexus
%SingleAdbInterface% = USB_Install, USB\VID_18D1&amp;amp;PID_4E30
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&amp;amp;PID_4E30&amp;amp;MI_01
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&amp;amp;PID_D001&amp;amp;REV_0216
%CompositeAdbInterface% = USB_Install, USB\VID_04E8&amp;amp;PID_6860&amp;amp;REV_0216&amp;amp;MI_01
%CompositeAdbInterface% = USB_Install, USB\VID_04E8&amp;amp;PID_6860&amp;amp;MI_01
&lt;/pre&gt;
&lt;br /&gt;
&lt;h4&gt;
ドライバーの認識&lt;/h4&gt;
デバイスマネージャーでGalaxy Nexusに「！」が表示されている場合、ドライバーを更新する。
&lt;br /&gt;
（上記android_winusb.infを指定）&lt;br /&gt;
&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha2RyBQlujx-hVRrgr16yVR011ZA0LQAnqxIEAL377abYZ6BQWokX5KBEXYxQNyo-ev7t-uj2w2ViOUHVy5dGIJSIsSgh2Rl2HFQOem1RtTCCGwgUH1S0XO7NpwVmPwkUqRIHfG2rvrnMo/s1600/%E7%84%A1%E9%A1%8C.png&quot; height=&quot;232&quot; width=&quot;320&quot; /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/5182592947221421306/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2014/05/galaxy-nexussc-04declipse.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/5182592947221421306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/5182592947221421306'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2014/05/galaxy-nexussc-04declipse.html' title='Galaxy Nexus(SC-04D)をeclipseに認識させる'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha2RyBQlujx-hVRrgr16yVR011ZA0LQAnqxIEAL377abYZ6BQWokX5KBEXYxQNyo-ev7t-uj2w2ViOUHVy5dGIJSIsSgh2Rl2HFQOem1RtTCCGwgUH1S0XO7NpwVmPwkUqRIHfG2rvrnMo/s72-c/%E7%84%A1%E9%A1%8C.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-6554624269920402905</id><published>2014-04-25T10:28:00.000+09:00</published><updated>2014-04-25T10:32:22.005+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Cordova"/><title type='text'>Cordova(Phonegap)で、イメージをローカルに保存</title><content type='html'>カメラや写真を画面に表示して、永続的（PERSISTENT）に保存するサンプルです。&lt;br /&gt;
（Cordova 3.4.1、Androidの場合）
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;
fileプラグイン&lt;/h4&gt;
イメージをPERSISTENTに保存するためには、ファイル関係の操作が必要になります。&lt;br /&gt;
コマンドラインからfileプラグインを導入しておきます。&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;cordova plugin org.apache.cordova.file
&lt;/pre&gt;
&lt;br /&gt;
&lt;h4&gt;
コーディング例&lt;/h4&gt;
&lt;pre&gt;// id=&quot;camera_button&quot;の箇所がタッチされた場合
$(&#39;#camera_button&#39;).touchend( function() {
 getImage( &#39;camera&#39; );
}
// id=&quot;album_button&quot;の箇所がタッチされた場合
$(&#39;#album_button&#39;).touchend( function() {
 getImage( &#39;album&#39; );
}

function getImage( type ) {
 if(type == &#39;camera&#39;) {
  var options = {
   destinationType: Camera.DestinationType.FILE_URI,
   sourceType: Camera.PictureSourceType.CAMERA,
   encodingType: Camera.EncodingType.PNG,
   quality: 70
  };
 }else if(type == &#39;album&#39;){
   destinationType: Camera.DestinationType.FILE_URI,
   sourceType: Camera.PictureSourceType.SAVEDPHOTOALBUM, // Androidでは、SAVEDPHOTOALBUMとPHOTOLIBRARYは同じ
   encodingType: Camera.EncodingType.PNG,
   quality: 70
  };
 }
 // カメラ（ギャラリー）を起動
 navigator.camera.getPicture( camera_success, camera_error, options );
}

function camera_success(uri) {
 // uriのFileSystemオブジェクトを取得
 window.resolveLocalFileSystemURI( uri, resolve_success, file_error );
}

function resolve_success(entry) {
 var d = new Date();
 var n = d.getTime(); // ミリ秒
 var newFileName = n + &quot;.png&quot;;  // ミリ秒でファイル名を付ければダブらない。たぶん。
 var myFolderApp = &quot;com.example&quot;;  // イメージの保存先
 
 // (1)PERSISTENTのFileSystemオブジェクトを取得
 // (2)myFolderAppというディレクトリを取得（なければ作成）
 // (3)myFolderAppにファイルをコピー
 window.requestFileSystem( LocalFileSystem.PERSISTENT, 0, function( fileSys ) {
  fileSys.root.getDirectory( myFolderApp,
   {create: true, exclusive: false},
   function( directory ) {
    entry.copyTo( directory, newFileName, move_success, file_error );
   },
   file_error );
   },
  file_error );
}

function move_success(entry) {
 // id=&quot;image&quot;のIMGに画像を表示
 $(&#39;#image&#39;).attr(&#39;src&#39;, entry.toNativeURL());
 // 以下、データベースやローカルストレージに保存
}

function file_error(error) {
 alert(&#39;File System Error:&#39; + error.code);
}

function camera_error(message) {
 alert(&#39;Camera Error:&#39; + message);
}
&lt;/pre&gt;
&lt;br /&gt;
カメラやファイル操作は、iOS, Androidその他で振る舞いが微妙に違うようです。&lt;br /&gt;
&lt;a href=&quot;https://github.com/apache/cordova-plugin-camera/blob/dev/doc/index.md&quot;&gt;cameraプラグイン&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/apache/cordova-plugin-file/blob/dev/doc/index.md&quot;&gt;fileプラグイン&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/6554624269920402905/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2014/04/cordovaphonegap.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/6554624269920402905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/6554624269920402905'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2014/04/cordovaphonegap.html' title='Cordova(Phonegap)で、イメージをローカルに保存'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-8342178573120144270</id><published>2014-04-15T10:05:00.003+09:00</published><updated>2014-04-15T10:06:34.726+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Cordova"/><title type='text'>Cordova(Phonegap)のコマンドラインで署名付きapkを作成する</title><content type='html'>コマンドラインから署名付きapkを作成する方法です。&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h4&gt;
ビルド&lt;/h4&gt;
&lt;pre&gt;cordova build --release
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;プロジェクト名&amp;gt;\platforms\android\ant-build\&amp;lt;プロジェクト名&amp;gt;-release-unsigned.apk が作成されます。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
鍵の作成&lt;/h4&gt;
&lt;pre&gt;keytool -genkey -v -keystore .keystore -alias &amp;lt;エイリアス名&amp;gt; -keyalg RSA -validity 10000
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
上記では、10000日間有効な.keystoreという鍵ファイルを作成しています。&lt;br /&gt;
エイリアス名は、プロジェクト名でよいと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
鍵の確認&lt;/h4&gt;
&lt;pre&gt;keytool -list -v -keystore .keystore -storepass &amp;lt;パスワード&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
署名&lt;/h4&gt;
&lt;pre&gt;jarsigner -verbose -keystore .keystore &amp;lt;apkファイル&amp;gt; &amp;lt;エイリアス名&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
署名の確認&lt;/h4&gt;
&lt;pre&gt;jarsigner -verify&amp;nbsp;-verbose -certs &amp;lt;apkファイル&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
最適化&lt;/h4&gt;
&lt;pre&gt;zipalign -v 4 &amp;lt;元のapkファイル&amp;gt; &amp;lt;最適化後のapkファイル&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
※参考&lt;br /&gt;
&lt;a href=&quot;http://seesaawiki.jp/w/yamanobori_old/d/Android&quot; target=&quot;_blank&quot;&gt;Yamanobori_oldのMemo&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://blue-red.ddo.jp/~ao/wiki/wiki.cgi?page=Android+%BA%EE%C0%AE%A4%B7%A4%BF%A5%A2%A5%D7%A5%EA%A4%CB%BD%F0%CC%BE%A4%F2%B9%D4%A4%A6&quot; target=&quot;_blank&quot;&gt;Android 作成したアプリに署名を行う&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/8342178573120144270/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2014/04/cordovaphonegapapk.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/8342178573120144270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/8342178573120144270'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2014/04/cordovaphonegapapk.html' title='Cordova(Phonegap)のコマンドラインで署名付きapkを作成する'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-2298196458072967320</id><published>2014-04-07T13:38:00.002+09:00</published><updated>2014-04-13T20:52:46.149+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Cordova"/><title type='text'>Cordova(Phonegap)で AdMobを表示する (Android)</title><content type='html'>いくつか参考となるサイトがあったのですが、どれを試しても動かず・・・最終的には以下のサイトの方法でうまくいきました。&lt;br /&gt;
&lt;a href=&quot;https://github.com/sainttex/PhoneGap-Android-Native-AdMob&quot;&gt;GitHub / PhoneGap-Android-Native-AdMob&lt;/a&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;
AdMobへの登録&lt;/h4&gt;
AdMobとは、Google AdSenseのアプリ版のようなものです。（アプリ内にAdSenseを貼ることは禁止されているようです）&lt;br /&gt;
まずAdMobに登録して、広告IDを取得します。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.google.co.jp/ads/admob/&quot; target=&quot;_blank&quot;&gt;AdMob&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
※リリース前のアプリの広告を作成する際には、「アプリを手動で追加」を選択します。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
AdMob SDKのインストール&lt;/h4&gt;
&lt;br /&gt;
AdMobを使うためには、SDKをダウンロードしてプロジェクト内にインストールする必要があります。&lt;br /&gt;
&lt;a href=&quot;https://developers.google.com/mobile-ads-sdk/download#downloadandroid&quot; target=&quot;_blank&quot;&gt;AdMob SDK(Android)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
解凍後、Eclipseを起動して、&quot;GoogleAdMobAdsSdk-*.*.*.jar&quot; ファイルをプロジェクトのlibフォルダに入れます。&lt;br /&gt;
追加したjarファイルを右クリックすると、「ビルド・パス ‐ ビルド・パスに追加」というメニューがあるので、追加しておきます。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
ソースの修正&lt;/h4&gt;
&lt;br /&gt;
&quot;src/プロジェクト名/プロジェクト名.java&quot; ファイルを開き、以下のように修正します。&lt;br /&gt;
&lt;pre&gt;package パッケージ名;

import android.os.Bundle;
import org.apache.cordova.*;

&lt;span style=&quot;color: red;&quot;&gt;
import com.google.ads.*;
import android.widget.LinearLayout;
&lt;/span&gt;

public class パッケージ名 extends CordovaActivity 
{
&lt;span style=&quot;color: red;&quot;&gt;
    private AdView adView;
&lt;/span&gt;
 @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        super.init();
        // Set by &lt;content src=&quot;index.html&quot;&gt; in config.xml
        super.loadUrl(Config.getStartUrl());
        //super.loadUrl(&quot;file:///android_asset/www/index.html&quot;);
&lt;span style=&quot;color: red;&quot;&gt;
        // Create the adView
        adView = new AdView(this, AdSize.BANNER, &quot;広告ユニットID&quot;); 
        LinearLayout layout = super.root;
        layout.addView(adView); 
        AdRequest request = new AdRequest();
        request.setTesting(true);  // 本番ではfalseにする
        adView.loadAd(request); 
&lt;/span&gt;
    }

}
&lt;/content&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;h4&gt;
設定の修正&lt;/h4&gt;
&quot;www/AndroidManifest.xml&quot; ファイルを開き、manifestタグの中に以下を追加します。（最初から登録されている場合もあります）&lt;br /&gt;
&lt;pre&gt;&amp;lt;uses-permission android:name=&quot;android.permission.INTERNET&quot; /&amp;gt;
&amp;lt;uses-permission android:name=&quot;android.permission.ACCESS_NETWORK_STATE&quot; /&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
また、applicationタグの中に以下を追加します。&lt;br /&gt;
&lt;pre&gt;&amp;lt;activity android:configChanges=&quot;keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize&quot; android:name=&quot;com.google.ads.AdActivity&quot;&amp;gt;&amp;lt;/activity&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
※android:targetSdkVersion=&quot;13&quot;以上になっているか確認しておきます。&lt;br /&gt;
APIレベル13(Android 3.2)未満の場合、ターゲットを13以上にしておきます。&lt;br /&gt;
&lt;br /&gt;
以上で、広告が表示されるようになると思います。</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/2298196458072967320/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2014/04/cordovaphonegap-admob-android.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/2298196458072967320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/2298196458072967320'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2014/04/cordovaphonegap-admob-android.html' title='Cordova(Phonegap)で AdMobを表示する (Android)'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-3893631894171393042</id><published>2013-09-03T23:06:00.001+09:00</published><updated>2013-09-03T23:06:17.143+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache"/><category scheme="http://www.blogger.com/atom/ns#" term="CentOS6"/><category scheme="http://www.blogger.com/atom/ns#" term="WordPress"/><title type='text'>SFTPで管理画面からWordPressを更新</title><content type='html'>CentOS 6.4に入れたWordPressを、SFTPでアップデートさせるための設定です。&lt;br /&gt;
&lt;code&gt;
# yum install ssh2&lt;br /&gt;
# yum install libssh2&lt;br /&gt;
# yum install ssh2-devel&lt;br /&gt;
# pecl install -f ssh2&lt;br /&gt;
&lt;/code&gt;

うちの環境ではssh2, libssh2は入ってたので、最後の２つのみ実行しました。&lt;br /&gt;
その後、 /etc/php.ini に以下を追加してhttpdを再起動します。&lt;br /&gt;
&lt;code&gt;
extension=ssh2.so&lt;br /&gt;
&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/3893631894171393042/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2013/09/sftpwordpress.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/3893631894171393042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/3893631894171393042'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2013/09/sftpwordpress.html' title='SFTPで管理画面からWordPressを更新'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-8114308204260155548</id><published>2013-08-02T13:57:00.000+09:00</published><updated>2013-08-05T20:26:12.842+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache"/><category scheme="http://www.blogger.com/atom/ns#" term="CentOS6"/><title type='text'>さくらのVPSでSSL（https）</title><content type='html'>&lt;a href=&quot;http://px.a8.net/svt/ejp?a8mat=1ZTAC4+8ZAE9E+D8Y+BWVTE&quot; target=&quot;_blank&quot;&gt;さくらのVPS&lt;/a&gt;
&lt;img border=&quot;0&quot; width=&quot;1&quot; height=&quot;1&quot; src=&quot;http://www18.a8.net/0.gif?a8mat=1ZTAC4+8ZAE9E+D8Y+BWVTE&quot; alt=&quot;&quot;&gt;(CentOS 6.4)にSSLを設定しました。
証明書は、低価格の&lt;a href=&quot;http://www.rapid-ssl.jp/&quot; target=&quot;_blank&quot;&gt;Rapid-SSL.jp&lt;/a&gt;で。
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h4&gt;
mod_sslのインストール&lt;/h4&gt;
ApacheがSSLに対応していない場合、mod_sslを入れておきます。&lt;br /&gt;
&lt;br /&gt;
# yum install -y mod_ssl&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
秘密鍵の作成&lt;/h4&gt;
Rapid SSLでは2048bit以上とのことなので、2048bitで作成します。&lt;br /&gt;
途中でパスフレーズの入力を（2回）求められるので、適当に入力しておきます。&lt;br /&gt;
&lt;br /&gt;
# cd /etc/pki/tls/certs&lt;br /&gt;
#openssl genrsa -des3 -out server.key 2048&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
CSRの作成&lt;/h4&gt;
続いて、秘密鍵からCSR（認証局への署名リクエスト）を作成します。&lt;br /&gt;
会社名や市区町村名などを入力しますが、これらはドメインのwhois情報と合わせておいたほうがいいかもしれません。&lt;br /&gt;
&lt;br /&gt;
# openssl req -new -key server.key -out server.csr&lt;br /&gt;
Enter pass phrase for server.key: &lt;span style=&quot;color: blue;&quot;&gt;（先ほどのパスフレーズ）&lt;/span&gt;&lt;br /&gt;
You are about to be asked to enter information that will be incorporated&lt;br /&gt;
into your certificate request.&lt;br /&gt;
What you are about to enter is what is called a Distinguished Name or a DN.&lt;br /&gt;
There are quite a few fields but you can leave some blank&lt;br /&gt;
For some fields there will be a default value,&lt;br /&gt;
If you enter &#39;.&#39;, the field will be left blank.&lt;br /&gt;
-----&lt;br /&gt;
Country Name (2 letter code) [GB]:&lt;span style=&quot;color: blue;&quot;&gt;JP&lt;/span&gt;&lt;br /&gt;
State or Province Name (full name) [Berkshire]:&lt;span style=&quot;color: blue;&quot;&gt;Oita&lt;/span&gt;&lt;br /&gt;
Locality Name (eg, city) [Newbury]:&lt;span style=&quot;color: blue;&quot;&gt;Oita&lt;/span&gt;&lt;br /&gt;
Organization Name (eg, company) [My Company Ltd]:&lt;span style=&quot;color: blue;&quot;&gt;XXX Co. Ltd.&lt;/span&gt;&lt;br /&gt;
Organizational Unit Name (eg, section) []: &lt;span style=&quot;color: blue;&quot;&gt;（未入力）&lt;/span&gt;&lt;br /&gt;
Common Name (eg, your name or your server&#39;s hostname) []:&lt;span style=&quot;color: blue;&quot;&gt;www.example.com （←FQDN）&lt;/span&gt;&lt;br /&gt;
Email Address []:&lt;span style=&quot;color: blue;&quot;&gt;admin@example.com&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
Please enter the following &#39;extra&#39; attributes&lt;br /&gt;
to be sent with your certificate request&lt;br /&gt;
A challenge password []: &lt;span style=&quot;color: blue;&quot;&gt;（未入力）&lt;/span&gt;&lt;br /&gt;
An optional company name []: &lt;span style=&quot;color: blue;&quot;&gt;（未入力）&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
申込み（CSR送信）&lt;/h4&gt;
server.csrの内容をコピーして、&lt;a href=&quot;http://www.rapid-ssl.jp/&quot; target=&quot;_blank&quot;&gt;Rapid-SSL.jp&lt;/a&gt;から申し込みます。&lt;br /&gt;
審査が通るとサーバ証明書が送られてくるので、サーバに設置します。&lt;br /&gt;
&lt;br /&gt;
# vi server.crt&lt;br /&gt;
（サーバ証明書をコピペ）&lt;br /&gt;
&lt;br /&gt;
同時に、中間証明書も送られてくるので、こちらもサーバに設置します。&lt;br /&gt;
&lt;br /&gt;
# vi server-chain.crt&lt;br /&gt;
（中間証明書をコピペ）&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
サーバ証明書からパスフレーズを削除&lt;/h4&gt;
このままだと、Apache（サーバ）の再起動のたびにパスフレーズを入力しなければいけないので、パスフレーズを削除しておきます。&lt;br /&gt;
&lt;br /&gt;
# openssl rsa -in server.key -out server.key&lt;br /&gt;
Enter pass phrase for server.key: &lt;span style=&quot;color: blue;&quot;&gt;（先ほどのパスフレーズ）&lt;/span&gt;&lt;br /&gt;
writing RSA key&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Apacheの設定&lt;/h4&gt;
最後に、ApacheにSSLの設定をして再起動します。&lt;br /&gt;
&lt;br /&gt;
# vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/server.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/certs/server.key&lt;br /&gt;
SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt&lt;br /&gt;
DocumentRoot &quot;/var/www/html&quot;&lt;br /&gt;
ServerName www.example.com:443&lt;br /&gt;
&lt;br /&gt;
# /etc/rc.d/init.d/httpd restart&lt;br /&gt;
&lt;br /&gt;
■参考&lt;br /&gt;
&lt;a href=&quot;http://dounokouno.com/2011/04/07/%E3%81%95%E3%81%8F%E3%82%89%E3%81%AEvps%EF%BC%88centos-5-5%EF%BC%89%E3%81%AB-rapidssl-%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E3%81%BE%E3%81%A7%E3%81%AE/&quot; target=&quot;_blank&quot;&gt;さくらのVPS（CentOS 5.5）に RapidSSL をインストールするまでのメモ&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/8114308204260155548/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2013/08/vpssslhttps.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/8114308204260155548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/8114308204260155548'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2013/08/vpssslhttps.html' title='さくらのVPSでSSL（https）'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-8852372390210987721</id><published>2013-03-29T13:44:00.001+09:00</published><updated>2013-03-29T13:44:39.073+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><title type='text'>textareaでmaxlengthチェック</title><content type='html'>textareaはmaxlengthの設定ができません。（HTML5からは可能みたいですが）&lt;br /&gt;
&lt;a href=&quot;http://remysharp.com/2008/06/30/maxlength-plugin/&quot; target=&quot;_blank&quot;&gt;maxlength plugin&lt;/a&gt;なんていうのもありますが、日本語だとちょっと動きがヘンみたい。&lt;br /&gt;
そこで、&lt;a href=&quot;http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/&quot; target=&quot;_blank&quot;&gt;jQuery inline Form Validation Engine&lt;/a&gt;を使って、submitボタンが押されたときに文字数チェックするようにしてみます。
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
このpluginは、class=&quot;validate[length[0,10]]&quot;と書くと文字数チェックをしてくれるはずなんですが、textareaの場合うまく機能しません。
そこで、関数を定義して呼び出すようにします。&lt;br /&gt;
&lt;code&gt;
&amp;lt;head&amp;gt;
&amp;lt;script language=&quot;JavaScript&quot;&amp;gt;
$(function(){
  $(&quot;#form1&quot;).validationEngine();
});

function checklength(field, rules, i, options){
  var maxlength = field.attr(&#39;maxlength&#39;);
  var val = field.val();

  if (val.length &amp;gt; maxlength) {
    return &quot;文字が多すぎます。（&quot; + maxlength + &quot;文字まで）&quot;;
  }else{
    return;
  }
}
&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;form id=&quot;form1&quot;&amp;gt;
&amp;lt;textarea  name=&quot;comment&quot; id=&quot;comment&quot; maxlength=&quot;4000&quot; class=&quot;validate[funcCall[checklength]]&quot;&amp;gt;&amp;lt;/textarea&amp;gt;
&amp;lt;input type=&quot;submit&quot; /&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/code&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/8852372390210987721/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2013/03/textareamaxlength.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/8852372390210987721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/8852372390210987721'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2013/03/textareamaxlength.html' title='textareaでmaxlengthチェック'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-1160070805080755025</id><published>2013-03-08T14:12:00.000+09:00</published><updated>2013-03-08T14:25:47.473+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MySQL"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>PHP 5.5.0からMySQL関数が非推奨になりました</title><content type='html'>PHPには、MySQLに接続する関数が３種類あります。&lt;br /&gt;
&lt;a href=&quot;http://www.php.net/manual/ja/mysqlinfo.api.choosing.php&quot;&gt;http://www.php.net/manual/ja/mysqlinfo.api.choosing.php&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
このうち、MySQL関数がPHP5.5.0から非推奨になりました。&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
修正する場合のサンプルです。（エラー処理はしていません）&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
修正前&lt;/h4&gt;
&lt;code&gt;
&amp;lt;?php
$con = mysql_connect(&quot;hostname&quot;, &quot;user&quot;, &quot;pass&quot;);
mysql_select_db(&quot;dbname&quot;);

$rec = mysql_query(&quot;SELECT &#39;Hello, World.&#39; AS msg FROM DUAL&quot;, $con);
$row = mysql_fetch_array($rec);
echo htmlentities($row[&quot;msg&quot;]);
mysql_free_result($rec);

mysql_close($con);
?&amp;gt;
&lt;/code&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
修正後&lt;/h4&gt;
&lt;code&gt;
&amp;lt;?php
$con = new mysqli(&quot;hostname&quot;, &quot;user&quot;, &quot;pass&quot;, &quot;dbname&quot;);

$rec = $con-&gt;query(&quot;SELECT &#39;Hello, World.&#39; AS msg FROM DUAL&quot;);
$row = $rec-&gt;fetch_array(MYSQLI_ASSOC);
echo htmlentities($row[&quot;msg&quot;]);
$rec-&gt;free();

$con-&gt;close();
?&amp;gt;
&lt;/code&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/1160070805080755025/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2013/03/php-550mysql.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/1160070805080755025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/1160070805080755025'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2013/03/php-550mysql.html' title='PHP 5.5.0からMySQL関数が非推奨になりました'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-5731152215483865124</id><published>2012-10-24T13:34:00.001+09:00</published><updated>2012-10-24T13:34:57.236+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="WordPress"/><title type='text'>WordPress : timthumb脆弱性への対応</title><content type='html'>WordPressで、画像を縮小してサムネール表示するようなテーマ／プラグインで使われているライブラリのひとつ &quot;TimThumb&quot; に脆弱性が見つかっています。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.jpcert.or.jp/wr/2011/wr113001.html&quot; target=&quot;_blank&quot;&gt;[JPCERT] WordPress の TimThumb スクリプトに脆弱性&lt;/a&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
対策としては以下のどれか。&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;timthumb.phpを使っていなければ削除&lt;/li&gt;
&lt;li&gt;テーマ自体の新バージョンがあればバージョンアップ&lt;/li&gt;
&lt;li&gt;timthumb.phpのみ最新版にバージョンアップ（&lt;a href=&quot;http://code.google.com/p/timthumb/&quot; target=&quot;_blank&quot;&gt;http://code.google.com/p/timthumb/&lt;/a&gt;）&lt;/li&gt;
&lt;/ul&gt;
で、肝心の&quot;timthumb.phpを使っているか&quot;の調査方法です。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
プラグインを使う&lt;/h4&gt;
WordPressプラグインで、timthumbを検出してくれるものがあります。&lt;br /&gt;
&lt;a href=&quot;http://wordpress.org/extend/plugins/timthumb-vulnerability-scanner/&quot; target=&quot;_blank&quot;&gt;http://wordpress.org/extend/plugins/timthumb-vulnerability-scanner/&lt;/a&gt;&lt;br /&gt;
これをインストールしていろいろすればOK・・・ですが、WordPressを複数インストールしている場合は面倒ですね。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
サーバにログインしてファイル検索&lt;/h4&gt;
コマンドラインでは、以下で検索できます。&lt;br /&gt;
&lt;pre&gt;# find / -name &quot;timthumb*&quot;

&lt;/pre&gt;
&lt;br /&gt;
&lt;h4&gt;
その他&lt;/h4&gt;
サーバにログインできない場合、以下のPHPスクリプトで検出できます。（たぶん）&lt;br /&gt;
&lt;pre&gt;&amp;lt;?php

$base = &quot;./&quot;;  // 適当に書き換えて。
getTimthumbList($base);

function getTimthumbList($path){
 $searchfile = &quot;timthumb*&quot;;

 if($handle = opendir($path)){
  while (($file = readdir($handle)) !== FALSE){
   // ディレクトリの場合
   if(is_dir($path . &quot;/&quot; . $file)){
    // &quot;.&quot; と &quot;..&quot; は除く
    if($file != &quot;.&quot; &amp;amp;&amp;amp; $file != &quot;..&quot;){
     getTimthumbList($path . &quot;/&quot; . $file);
    }
   // ファイルの場合
   }else{
    if(fnmatch($searchfile, $file)){
     echo $path . &quot;/&quot; . $file . &quot;\r\n&quot;;
    }
   }
  }
  closedir($path);
 }
}
?&amp;gt;
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/5731152215483865124/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2012/10/wordpress-timthumb.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/5731152215483865124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/5731152215483865124'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2012/10/wordpress-timthumb.html' title='WordPress : timthumb脆弱性への対応'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-416755484305199894</id><published>2012-10-18T09:55:00.000+09:00</published><updated>2012-10-18T09:55:09.781+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Other"/><title type='text'>今日のおすすめ</title><content type='html'>&lt;a href=&quot;http://blog.56doc.net/Entry/433/&quot; target=&quot;_blank&quot;&gt;商用・無料で利用できる国内フリー写真素材24サイト 2012年10月版  56docブログ&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/416755484305199894/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2012/10/blog-post_18.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/416755484305199894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/416755484305199894'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2012/10/blog-post_18.html' title='今日のおすすめ'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-5461687212089723893</id><published>2012-10-17T16:43:00.001+09:00</published><updated>2012-10-17T16:43:34.697+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>PHPで日本語入力チェック</title><content type='html'>掲示板のように投稿できるサイトを作ると、海外からのSPAM書き込みが増えてきます。&lt;br /&gt;
その対策として「入力された文章にひらがなまたはカタカナが使われているか」をチェックするようにしました。&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;pre&gt;&amp;lt;?php
$in_hiragana = false;
$in_katakana = false;

if (mb_ereg(&#39;[ぁ-ん]&#39;, $_POST[&quot;comment&quot;])){
 $in_hiragana = true;

if (mb_ereg(&#39;[ァ-ヶ]&#39;, $_POST[&quot;comment&quot;])){
 $in_katakana = true;
}

if (!$in_hiragana &amp;amp;&amp;amp; !$in_katakana){
 print &quot;日本語のみ受け付けています。&quot;;
}else{
 // 登録処理
}
?&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
ガラケー(SJIS)の場合、mb_eregを使う前にencodingを変更しておきます。&lt;br /&gt;
&lt;pre&gt;mb_regex_encoding(&quot;Shift_jis&quot;);
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/5461687212089723893/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2012/10/php.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/5461687212089723893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/5461687212089723893'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2012/10/php.html' title='PHPで日本語入力チェック'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-3119550845983820567</id><published>2012-10-11T17:08:00.005+09:00</published><updated>2012-10-11T17:08:54.127+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><title type='text'>iGoogleのように要素をドラッグできるようにする（jQuery UI Sortable）</title><content type='html'>要素をドラッグ＆ドロップして並べ替えられるようにするには、jQuery UIのSortableが便利です。
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://stacktrace.jp/jquery/ui/interaction/sortable.html&quot; target=&quot;_blank&quot;&gt;Sortable - jQuery UI API 1.8.4 日本語リファレンス - StackTrace&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://jqueryui.com/sortable/&quot; target=&quot;_blank&quot;&gt;Sortable  jQuery UI（本家）&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;ですが、並べ替えた状態を保存しておかないと意味がありません。&lt;br /&gt;
こちらを参考に・・・&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://hijiriworld.com/web/jquery-ui-sortable/&quot; target=&quot;_blank&quot;&gt;jQuery UI Sortable は並び順を保存しなければ意味がない  hijiriworld Web&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上記URLのcookie保存バージョンを２列仕様にしたサンプルです。&lt;br /&gt;
&lt;a href=&quot;http://demo.svps.blab7.net/ui/sortable.html&quot; target=&quot;_blank&quot;&gt;http://demo.svps.blab7.net/ui/sortable.html&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/3119550845983820567/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2012/10/igooglejquery-ui-sortable.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/3119550845983820567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/3119550845983820567'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2012/10/igooglejquery-ui-sortable.html' title='iGoogleのように要素をドラッグできるようにする（jQuery UI Sortable）'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-3302152957025278102</id><published>2012-10-03T19:42:00.001+09:00</published><updated>2012-10-03T19:42:30.101+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Other"/><category scheme="http://www.blogger.com/atom/ns#" term="WordPress"/><title type='text'>今日のおすすめ</title><content type='html'>&lt;a href=&quot;http://dogmap.jp/2012/09/20/wordpress-replace-siteurl/&quot; target=&quot;_blank&quot;&gt;WordPress のDB上のサイトURLを一気に変換&lt;/a&gt;&lt;br /&gt;
今まで１つずつ修正してました・・・&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://kanemotilevel.com/add/kizi286.html&quot; target=&quot;_blank&quot;&gt;アフィリエイトで稼ぐなら絶対に読んでおくべき４つの記事&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.lpi.or.jp/linuxtext/text.shtml&quot; target=&quot;_blank&quot;&gt;Linux標準教科書（Ver2.0.0）&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/3302152957025278102/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2012/10/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/3302152957025278102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/3302152957025278102'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2012/10/blog-post.html' title='今日のおすすめ'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-3856058921842584183</id><published>2012-09-22T21:32:00.000+09:00</published><updated>2012-09-22T21:32:01.028+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CSS"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="WordPress"/><title type='text'>今日のおすすめ</title><content type='html'>&lt;a href=&quot;http://intridea.github.com/sketch.js/&quot; target=&quot;_blank&quot;&gt;sketch.js&lt;/a&gt;&lt;br /&gt;
HTML3 canvasのお絵かきプラグイン&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://golog.plus.vc/web/4531/&quot; target=&quot;_blank&quot;&gt;WordPressを高速化する9つのステップ &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://coliss.com/articles/build-websites/operation/css/awesome-css-techniques-the-first-half-of-2012.html&quot; target=&quot;_blank&quot;&gt;CSS3を使った実用的なスタイルシートのテクニックのまとめ&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://masaki0720.tumblr.com/post/30803034848/web&quot; target=&quot;_blank&quot;&gt;ネイティブアプリのようなWebアプリを作るために&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.webcreatorbox.com/tech/creditcard-test-numbers/&quot; target=&quot;_blank&quot;&gt;ECサイトの動作テストに使える、クレジットカードのテスト番号一覧 &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://cmmntr.com/m/17&quot; target=&quot;_blank&quot;&gt;商用利用可でクレジット表記不要な国内無料写真素材サイトまとめ14個&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://sixrevisions.com/design-showcase-inspiration/pricing-tables-examples/&quot; target=&quot;_blank&quot;&gt;25 Beautiful Examples of Pricing Tables&lt;/a&gt;&lt;br /&gt;
きれいな「料金表」25個&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://tympanus.net/codrops/2012/09/03/bookblock-a-content-flip-plugin/&quot; target=&quot;_blank&quot;&gt;bookblock&lt;/a&gt;&lt;br /&gt;
ページめくりプラグイン。&lt;br /&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/3856058921842584183/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2012/09/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/3856058921842584183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/3856058921842584183'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2012/09/blog-post.html' title='今日のおすすめ'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-338288977555894635</id><published>2012-09-13T13:16:00.003+09:00</published><updated>2012-09-13T13:16:30.726+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CSS"/><category scheme="http://www.blogger.com/atom/ns#" term="スマホ"/><category scheme="http://www.blogger.com/atom/ns#" term="タブレット"/><title type='text'>CSS UIキット（タブレット・スマホ用）</title><content type='html'>&lt;a href=&quot;http://speckyboy.com/2012/09/09/10-free-pure-css-ui-kits/&quot; target=&quot;_blank&quot;&gt;10 Free Pure CSS UI Kits&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
CSS3で書かれた、iOSやAndroidのようなフリーのUIキット。&lt;br /&gt;
さまざまな理由でjQuery Mobileなどを採用できない場合がありますが、そういう時に便利かも。</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/338288977555894635/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2012/09/css-ui.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/338288977555894635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/338288977555894635'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2012/09/css-ui.html' title='CSS UIキット（タブレット・スマホ用）'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-8413938927740779075</id><published>2012-09-04T18:58:00.001+09:00</published><updated>2012-09-04T18:59:57.273+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><title type='text'>AndroidタブレットでSSH接続してみる</title><content type='html'>AndroidタブレットにSSHクライアントを入れて、サーバーに接続してみました。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ53vkCIs6WSaw2Z6RVP7Gs6zM5ZOf9o0R0hk3jvhI3GxAviEe5xRxHiUEADcczm7uQoa4dNVz8QmZ1Oz4QHpUt8EpFya6rKhHxpMBF1BpmzWSaSyksRNpCrB5nLAys92azDe2z8MRYuBu/s1600/P9040171.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;217&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ53vkCIs6WSaw2Z6RVP7Gs6zM5ZOf9o0R0hk3jvhI3GxAviEe5xRxHiUEADcczm7uQoa4dNVz8QmZ1Oz4QHpUt8EpFya6rKhHxpMBF1BpmzWSaSyksRNpCrB5nLAys92azDe2z8MRYuBu/s320/P9040171.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;
SSHクライアント&lt;/h4&gt;
&lt;a href=&quot;https://play.google.com/store/apps/details?id=org.connectbot&amp;amp;hl=ja&quot; target=&quot;_blank&quot;&gt;ConnectBot&lt;/a&gt;がメジャーかつSSH2にも対応しているようなので、これを入れてみました。&lt;br /&gt;
Google Play未対応の場合、開発版を入れるか、野良アプリを探してください。&lt;br /&gt;
&lt;br /&gt;
開発版：&lt;a href=&quot;http://code.google.com/p/connectbot/&quot; target=&quot;_blank&quot;&gt;http://code.google.com/p/connectbot/&lt;/a&gt;&lt;br /&gt;
（左下からダウンロード）&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
キーボード&lt;/h4&gt;
Android標準キーボードなどでは不便なので、&lt;a href=&quot;https://play.google.com/store/apps/details?id=org.pocketworkstation.pckeyboard&amp;amp;hl=ja&quot; target=&quot;_blank&quot;&gt;Hacker&#39;s Keyboard&lt;/a&gt;に変更しました。&lt;br /&gt;
Ctrl、Alt、Tabなどが入力しやすくなります。&lt;br /&gt;
野良アプリはこちら。&lt;br /&gt;
&lt;a href=&quot;http://www.iapktop.com/hackers-keyboard-1-29.html&quot;&gt;http://www.iapktop.com/hackers-keyboard-1-29.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
接続&lt;/h4&gt;
SSH/Telnet/Localを選択し、サーバを指定します。&lt;br /&gt;
&quot;username@hostname:port&quot; の書式で接続。その後パスワードを入力してログインします。&lt;br /&gt;
認証鍵を設定している場合や詳細な設定方法は、参考サイトを見てみてください。&lt;br /&gt;
&lt;br /&gt;
※うちのタブレットの場合、Android標準キーボードではパスワード入力後の確定ができませんでした。&lt;br /&gt;
&lt;br /&gt;
Android携帯でも大丈夫みたいなので、緊急のときには使えそうですね。&lt;br /&gt;
（実際に使う機会が少ないことを祈ります・・・）&lt;br /&gt;
&lt;br /&gt;
参考：&lt;br /&gt;
&lt;a href=&quot;http://fnya.cocolog-nifty.com/blog/2012/03/connectbot-andr.html&quot; target=&quot;_blank&quot;&gt;ConnectBot ～ 公開鍵認証にも対応した Android の SSH クライアントアプリ あるＳＥのつぶやき&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/8413938927740779075/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2012/09/androidssh.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/8413938927740779075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/8413938927740779075'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2012/09/androidssh.html' title='AndroidタブレットでSSH接続してみる'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ53vkCIs6WSaw2Z6RVP7Gs6zM5ZOf9o0R0hk3jvhI3GxAviEe5xRxHiUEADcczm7uQoa4dNVz8QmZ1Oz4QHpUt8EpFya6rKhHxpMBF1BpmzWSaSyksRNpCrB5nLAys92azDe2z8MRYuBu/s72-c/P9040171.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-8584327281216538229</id><published>2012-09-01T14:49:00.000+09:00</published><updated>2012-09-01T14:49:17.538+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery Mobile"/><title type='text'>jQuery Mobileでファイルアップロード</title><content type='html'>jQuery Mobile（というよりJavaScript）では、セキュリティ上の観点からajaxでmultipart/form-dataを使えません。&lt;br /&gt;
そこで、ifameを使って対応しました。&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;
通常の方法を試してみる&lt;/h4&gt;
以下のようなページ構造を考えてみます。&lt;br /&gt;
&lt;br /&gt;
index.php&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;ページ1（データ一覧）&lt;/li&gt;
&lt;li&gt;ページ2（データ登録）　⇒データ登録.php（data-ajax=&quot;false&quot;）&lt;/li&gt;
&lt;/ul&gt;
この場合、データ登録.phpから data-rel=&quot;back&quot; 指定して戻ってもページ1が表示されてしまいます。&lt;br /&gt;
戻ってきたときにmobileinitあたりで「引数があればページ2に飛ばす」処理を入れれば対応できそうですが、速度が気になりました。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
iframeを使った処理&lt;/h4&gt;
formのターゲットにiframeを使ってみます。登録後にページ1に戻ります。&lt;br /&gt;
&lt;br /&gt;
ページ2の概要&lt;br /&gt;
&lt;pre&gt;&amp;lt;script&amp;gt;
function upload() {
  $(&#39;#form1&#39;).submit();
  alert(&#39;登録しました&#39;);
  location.hash = &#39;ページ1&quot;;
}
&amp;lt;/script&amp;gt;
&amp;lt;form id=&quot;form1&quot; method=&quot;post&quot; action=&quot;データ登録.php&quot; target=&quot;upload&quot;&amp;gt;
&amp;lt;input name=&quot;dataname&quot; id=&quot;dataname&quot;&amp;nbsp;type=&quot;text&quot; /&amp;gt;
&amp;lt;input name=&quot;photo&quot; id=&quot;photo&quot; type=&quot;file&quot; /&amp;gt;
&amp;lt;input type=&quot;button&quot; value=&quot;登録&quot; onclick=&quot;upload();&quot; /&amp;gt;
&amp;lt;iframe name=&quot;upload&quot; style=&quot;width:0;height:0;border:0;&quot;&amp;gt;&amp;lt;/iframe&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/pre&gt;
iframeのCSSでは「display:none;にすればよい」という記述も見かけますが、対応していないブラウザもあるようなのでサイズをゼロにしています。&lt;br /&gt;
データ登録.phpでは、通常の処理をすればOKです。&lt;br /&gt;
&lt;br /&gt;
iframeを見えるようにして、データ登録.phpの最後に「登録しました」と出力するようにしてもいいかもしれません。&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/8584327281216538229/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2012/09/jquery-mobile.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/8584327281216538229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/8584327281216538229'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2012/09/jquery-mobile.html' title='jQuery Mobileでファイルアップロード'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-6607537076026489370</id><published>2012-08-27T02:27:00.000+09:00</published><updated>2012-08-27T02:31:13.375+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery Mobile"/><title type='text'>都道府県が選択されたとき、市区町村一覧を表示する（プルダウンの連動）</title><content type='html'>selectで都道府県が選択されると、別のselectに市区町村一覧を表示するサンプルです。
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h4&gt;
HTML&lt;/h4&gt;
都道府県のプルダウン&quot;pref&quot;と市区町村のプルダウン&quot;city&quot;を用意。&lt;br /&gt;
&quot;pref&quot;のほうには都道府県を書いておきます。&lt;br /&gt;
&quot;city&quot;のほうは空で。&lt;br /&gt;
&lt;pre&gt;&amp;lt;div data-role=&quot;fieldcontain&quot;&amp;gt;
&amp;lt;label for=&quot;pref&quot;&amp;gt;都道府県&amp;lt;/label&amp;gt;
&amp;lt;select name=&quot;pref&quot; id=&quot;pref&quot;&amp;gt;
&amp;lt;option value=&quot;&quot;&amp;gt;選択してください&amp;lt;/option&amp;gt;
&amp;lt;option value=&quot;01&quot;&amp;gt;北海道&amp;lt;/option&amp;gt;
&amp;lt;option value=&quot;02&quot;&amp;gt;青森県&amp;lt;/option&amp;gt;
・・・
&amp;lt;/select&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div data-role=&quot;fieldcontain&quot;&amp;gt;
&amp;lt;label for=&quot;city&quot;&amp;gt;市区町村&amp;lt;/label&amp;gt;
&amp;lt;select name=&quot;city&quot; id=&quot;city&quot;&amp;gt;
&amp;lt;option value=&quot;&quot;&amp;gt;選択してください&amp;lt;/option&amp;gt;
&amp;lt;/select&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;h4&gt;
JavaScript&lt;/h4&gt;
都道府県プルダウンの値が変わったとき、ajaxで市区町村一覧を読み込みます。&lt;br /&gt;
それを市区町村プルダウンにセット。&lt;br /&gt;
$(&#39;#city&#39;).selectmenu(&#39;refresh&#39;);は、jQuery Mobileでのおまじないです。&lt;br /&gt;
&lt;pre&gt;$(&#39;#pref&#39;).change(function() {
 $.get(&#39;citylist.php?pref_code=&#39;+$(this).val(), function(data) {
  $(&#39;#city&#39;).html(data);
 });

 $(&#39;#city&#39;).val(&#39;&#39;);
 $(&#39;#city&#39;).selectmenu(&#39;refresh&#39;); 
});
&lt;/pre&gt;
&lt;br /&gt;
&lt;h4&gt;
PHP&lt;/h4&gt;
m_cityテーブルには、pref_code, city_code, city_nameという項目があります。&lt;br /&gt;
都道府県コードが渡されたらpref_codeで絞込み、市区町村一覧を返します。&lt;br /&gt;
&amp;lt;option value=&quot;01101&quot;&amp;gt;札幌市中央区&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option value=&quot;01102&quot;&amp;gt;札幌市北区&amp;lt;/option&amp;gt;&lt;br /&gt;
という一覧を返すので、そのまま&quot;city&quot;のプルダウンに入れます。&lt;br /&gt;
&lt;pre&gt;&amp;lt;?php
$pref_code = mysql_real_escape_string($_GET[&quot;pref_code&quot;]);

$sql  = &quot;SELECT * FROM m_city &quot;;
$sql .= &quot; WHERE pref_code = &#39;&quot; . $pref_code . &quot;&#39;&quot;;
$sql .= &quot; ORDER BY city_code&quot;;
$rec = mysql_query($sql, $g_db);

$ret = &#39;&amp;lt;option value=&quot;&quot;&amp;gt;選択してください&amp;lt;/option&amp;gt;&#39; . &quot;\r\n&quot;;
if($data = mysql_fetch_array($rec)){
 do{
  $ret .= &#39;&amp;lt;option value=&quot;&#39; . $data[&quot;city_code&quot;] . &#39;&quot;&amp;gt;&#39; . $data[&quot;city_name&quot;] . &#39;&amp;lt;/option&amp;gt;&#39; . &quot;\r\n&quot;;
 }while($data = mysql_fetch_array($rec));
}
mysql_free_result($rec);

echo $ret;
?&amp;gt;
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/6607537076026489370/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2012/08/select_27.html#comment-form' title='3 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/6607537076026489370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/6607537076026489370'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2012/08/select_27.html' title='都道府県が選択されたとき、市区町村一覧を表示する（プルダウンの連動）'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-5146448251334325073</id><published>2012-08-25T02:21:00.000+09:00</published><updated>2012-08-25T02:22:17.646+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery Mobile"/><title type='text'>select（プルダウン）に値を設定する</title><content type='html'>selectタグ（プルダウン・セレクトボックス）に値を設定したい場合、jQuery Mobileでは一工夫必要でした。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;code&gt;
$(&#39;#select&#39;).val(&#39;&#39;);
$(&#39;#select&#39;).selectmenu(&#39;refresh&#39;);
&lt;/code&gt;
&lt;br /&gt;
どうやらselectの上にspanをかぶせて、見た目をスマホのネイティブアプリっぽくしているみたい。&lt;br /&gt;
そのspanの部分に値を設定するために &#39;refresh&#39; が必要のようです。
</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/5146448251334325073/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2012/08/select.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/5146448251334325073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/5146448251334325073'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2012/08/select.html' title='select（プルダウン）に値を設定する'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8759161663086926072.post-6575108333304235036</id><published>2012-08-25T02:13:00.002+09:00</published><updated>2012-08-25T02:13:28.434+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API"/><category scheme="http://www.blogger.com/atom/ns#" term="CSS"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="Other"/><category scheme="http://www.blogger.com/atom/ns#" term="WordPress"/><title type='text'>今日のおすすめ</title><content type='html'>&lt;a href=&quot;http://coliss.com/articles/build-websites/operation/javascript/jquery-plugin-bigvideo-js.html&quot; target=&quot;_blank&quot;&gt;数行のコードで、動画をウェブページの背景いっぱいに配置するスクリプト -BigVideo.js&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.webinterfacelab.com/&quot; target=&quot;_blank&quot;&gt;CSS3 Code Snippets &amp;amp; Resources for Web Developers  WebInterfaceLab&lt;/a&gt;&lt;br /&gt;
CSS3コードサンプル集。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.jqueryrain.com/2012/08/jquery-flip-effect-plugin-examples/&quot; target=&quot;_blank&quot;&gt;10+ jQuery Flip effect plugin with examples&lt;/a&gt;&lt;br /&gt;
フリップエフェクトのjQueryプラグインとサンプル。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://matome.naver.jp/odai/2134518424321982701&quot; target=&quot;_blank&quot;&gt;TwitterのAPI変更でユーザーが受ける5つの影響&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://coliss.com/articles/blog/wordpress/starter-theme-for-wordpress-underscores.html&quot; target=&quot;_blank&quot;&gt;1クリックでWordPressのテーマファイルの制作に必要なファイルが全部揃う -Underscores&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.wp-com.net/plugins/3624/&quot; target=&quot;_blank&quot;&gt;GoogleカレンダーやiCalなどにも取り込み可能な、WordPressのカレンダープラグイン「All-in-One Event Calendar」&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://phpspot.org/blog/archives/2012/08/canvasjqueryske.html&quot; target=&quot;_blank&quot;&gt;Canvasベースのお絵かきが実装できるjQueryプラグイン「Sketch.js」&lt;/a&gt;&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lamp-oita.blogspot.com/feeds/6575108333304235036/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://lamp-oita.blogspot.com/2012/08/blog-post_25.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/6575108333304235036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8759161663086926072/posts/default/6575108333304235036'/><link rel='alternate' type='text/html' href='http://lamp-oita.blogspot.com/2012/08/blog-post_25.html' title='今日のおすすめ'/><author><name>Admin</name><uri>http://www.blogger.com/profile/03047749709534988461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>