jqueryでのhtmlコピー(DOM操作)メモ

jQueryでselectboxなどプルダウンのオリジナルを用意しておき、
そのHTMLをコピーして使いまわしたい時のサンプルメモ。

<div id="list_select">
	{html_options name="list_select" options=list_select_list selected=$session->post.list_select_id}
</div>

上記のようにSmartyなどでフォームを作っている場合などに有効!

var this_id = "";
$j.each(txtArr,	function() {
	this_id = String(this);
	$j("#list_select").children().clone(true).appendTo($j("#list_select-" + this_id + " > .list_select_append"));
}

Selectボックスにはidとclassを設定しておき、class名を毎回変更させ、
2回目・3回目と繰り返すうちにばいばいに増えないようにしてます。

phpでSSH接続して、コマンドを投げるメモ

PHPでプログラムから、外部サーバーへのSSHで、コマンドをなげたいケースがある。

そういう際に、知っておくと便利なコマンド「ssh2_connect

下記はサンプルのPHPプログラムです。

ssh2_connect.php
// ssh接続して、ファイルのパーミッションをチェックするサンプル

$ok = "";
$ng = ""; 

$connection = ssh2_connect('192.168.1.1', 22);
ssh2_auth_password($connection, 'user', 'pass');

$stream = ssh2_exec($connection, 'echo `ls -l /home/test/call.agi` | cut -d" " -f1');
$errorstream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);

stream_set_blocking($stream, true);
stream_set_blocking($errorstream, true);

$ok =  stream_get_contents($stream);
$ng =  stream_get_contents($errorstream); //エラーがあれば表示

if($ok == "-rwxrwxrwxn" && !$ng)
{
    echo "OK";
    exit();
}
echo "NG";

 

パスワード無しでSSHやSCPするメモ

サーバー間のデータコピーなどcronなどスケジュールで自動化したいときに、
利用するパスワードなしSSH。
またにしかしないので、すらすら出てこないのでメモ!

下記例の条件
サーバー1:sshuser@example.server
サーバー2: sshuser@example2.server
※サーバー2からサーバー1へパスワードなしで接続する方法を紹介します。 

1.パスワードなしでSSH接続するようのユーザー作成 

# useradd -r sshuser
# passwd sshuser
#su sshuser

2.公開キー・秘密キー生成

$ ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sshuser/.ssh/id_rsa):入力せず[Enter]
Created directory '/home/sshuser/.ssh'.
Enter passphrase (empty for no passphrase):入力せず[Enter]
Enter same passphrase again:入力せず[Enter]
Your identification has been saved in /home/sshuser/.ssh/id_rsa.
Your public key has been saved in /home/sshuser/.ssh/id_rsa.pub.
The key fingerprint is:
8d:1b:7d:8e:5e:6c:0d:3b:08:ac:5f:67:9e:63:23:54 sshuser@example.server

3.接続したいサーバーにsshuserでログイン

$ ssh sshuser@example.server2
※この時点ではパスワードを入力
$ scp sshuser@example.server:~/.ssh/id_rsa.pub ~/.ssh/authorized_keys2

 

$ chmod 600 ~/.ssh/authorized_keys2

4.実際にパスワードなしで接続

$ ssh sshuser@example.server

ソーシャルボタンをまとめたサービスのまとめも!

twitterやlikeボタンなどメジャーなものから、日本ではほとんど知られてないソーシャルボタンまで、まとめてくれるサービスをまとメモしました!

正直あまりにもおおすぎでどういうサービスかわからないものまでたっぷりあります!
個人的には、

  • twitter
  • facebook
  • google+1
  • mixi
  • hatena
  • tumblr
  • evernote

上記だけあれば十分な気がしていますがこだわりなど色々あるかと思います。

下記2つサービスは非常にたっぷりのソーシャルボタンを用意しているので、お好きなものを選んでみてはいかがでしょうか?

『add this』
http://www.addthis.com/

『share this』
http://sharethis.com/

 

※2つともwordpressのプラグインなどもあるようなので、そちらも必要に応じて!

cakephpで『strtotime() [http://php.net/function.strtotime]: It is not safe to rely on the system’s timezone settings.』と表示されたら

cakephpここで下記のようなエラーが表示されたら

Warning (2): strtotime() [http://php.net/function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead [CORE/cake/libs/cache.php, line 597] Notice: Trying to get property of non-object in /var/www/domain/hoge.info/cakephp/cake/libs/cache/file.php on line 248 Fatal error: Call to a member function cd() on a non-object in /var/www/domain/hoge.info/cakephp/cake/libs/cache/file.php on line 248

上記指摘通り、

app/config/core.phpの下記をチェック!

//date_default_timezone_set('UTC');

コメントアウトをはずしてみると動きました。。

Google Code Jam Japan 2011 の練習問題がむずかしすぎる・・

『Google code jam japan 2011』というものが毎年開催されているらしく・・
「複雑なアルゴリズムの問題を限られた時間の中で解く能力を競う年1回のプログラミングコンテストです。」

との事 。
ぜひ難問を解く自信がある方はいかがでしょうか!?

ちなみに、練習問題が用意されているのですが、、
練習問題からこの難しさか!と思うほど・・
僕はどうやって回答していいのかさえわかりませんでした。。

http://code.google.com/codejam/japan/

 

まだ、僕が見た時点では正解者がいないようですので、是非第1号をみざしてみてはw

 

スピーディなログ調査に使える、「gawk」コマンド

システムの障害時や、急いで情報がほしい場合など、ログを急いで出す必要があった際に利用したコマンド。

『gawk』

例えば特定の文字列が入った行だけはく例。

gawk '/200 OK/'logcheck.log > 200OK.log

上記例だと、「200 OK」という文字列が含まれる行を「200OK.log」というファイルにはくという意味です。

各種コマンドは下記が参考なりました!
http://kazmax.zpp.jp/cmd/g/gawk.1.html

SQLで2つ以上のIDでin検索

MySQLなどで、たまにDBの構造上、2つのIDでin(複数)検索したい時がある。
ちから技でand検索などするのもいや場合があるので、そいいう時は、concatで連結して、in検索!

select
*
from
where
concat(A_ID,'-',B_ID) in(a_id-b_id)

ただ分かりづらくなる可能性もあるので、ご注意を。