2010年1月29日金曜日

PostgreSQL、MySQL保守用のバックアップ、リストアのコマンド

毎回検索して実行しているので、自分用メモ。

環境: CentOS(linux), lampp

 

▼PostgreSQL

バックアップ
$ pg_dump dbname > /tmp/output.sql

バックアップ(drop文付き)
$ pg_dump --clean dbname > /tmp/output.sql

リストア
$ psql dbname < /tmp/input.sql

リストアしたらVACUUMする(アナライズも)
$ vacuumdb -d dbname --analyze

 

▼MySQL

バックアップ(パスワード付き)。lamppが導入されているならphpMyAdmin経由の方が簡単
# mysqldump -p dbname > /tmp/output.sql

リストア(パスワード付き)
# mysql -p dbname < /tmp/input.sql

 

▼保守

ファイル(ディレクトリ)の圧縮(アーカイブ用)tarコマンド
※フルパスで実行するとパスごとアーカイブするのでカレントディレクトリを移動して実行するほうがいい。
# tar -czvf /tmp/archive.tar.gz target/

解凍
# tar -xzvf /tmp/archive.tar.gz

10日以内に更新されたファイルを抽出して圧縮する。
(2015/04/19 Modified)xargsは大量のファイルを抽出する場合に失敗する。参考:つらつらと気づいたことを書いていきます。人狼とか。
# find ./target/ -mtime -10 | xargs tar czvf ./hoge.tgz
# find ./target/ -mtime -10 -print0 | tar -czv -T - --null -f ./hoge.tgz

「.svn」「node_modules」を除外したディレクトリ一覧をパス付きで。
# find -type d -name '.svn' -prune -o -name 'node_modules' -prune -o -type d -print

さらに書き込み可になっているディレクトリ一覧
# ls -dlF $(find -type d -name '.svn' -prune -o -name 'node_modules' -prune -o -type d -print) | grep rwxrwxrwx

 

▼SCPを使って外部サーバーからダウンロード

SSH使ってファイル転送。

外部サーバーにある「file.conf」をカレントディレクトリにダウンロード
# scp root@hoge.com:/opt/backup/file.conf ./

 

 

< Related Posts >

2010年1月28日木曜日

【.NET】BindingSourceの利点

.NET Framework 2.0から新たに使えるようになったBindingSource。何が出来るのかよく分からなかったので調べたメモ。

【MSDN】BindingSource コンポーネントの概要

【MSDN】BindingSource コンポーネント アーキテクチャ

詳しくは上記のドキュメントを読んでもらうとして、個人的に体感したのは

  • デザイン時のサポート
  • 伝達性の管理

▼デザイン時のサポート

Visual Studioで開発していると、

データベース(DataSet) ⇔ BindingSource ⇔ コンポーネント

というのをデザイナー(GUI)で全てできるので便利。

▼伝達性の管理

データを挿入する場合などBindingSourceやコンポーネントに値をセットしておいて、EndEditメソッドを実行すると、そこでデータベースに反映されるので、行追加イベントや値更新イベントなどの制御をやりやすい。

逆にEndEditを使うタイミングを良く考えないと変にイベントが走って動作がおかしくなる。

キャンセルする場合はCancelEditメソッドを使えば初期状態に戻るので、「リセット」ボタンに使ったりするのに便利。

 

今のところはこんな感じ。

まだ使いこなせてないので、MSDNに書いてあることの半分も理解しない。この辺は実際に使ってみるしかないか。

2010年1月27日水曜日

【.NET】ClickOnceのインストール先とキャッシュ領域

ClickOnceでインストールされたアプリケーションはどこのフォルダに配置されるのかを調べたメモ。

ClickOnceに関するメモ

アプリケーションが配置されるのは下記フォルダ

c:\Document and Settings\<user>\Apps\2.0

「ClickOnceキャッシュ領域」とか「ClickOnceアプリケーションストア」と呼ばれているらしい。ただ、インストールするときに差分をチェックする際に使われるのは、「NETアセンブリ・ダウンロード・キャッシュ」という場所。

「NETアセンブリ・ダウンロード・キャッシュ」をクリアしないと、「ClickOnceキャッシュ領域」を削除してもClickOnceがインストールできなくてハマる。詳しくは下記。

@IT - 第2回 ClickOnceの仕組みを理解しよう

@IT - ClickOnceオンライン・キャッシュ領域をクリアするには?[2.0のみ、C#、VB]

MSDN ClickOnce キャッシュの概要

コマンドラインで

mage –cc

gacutil –cdl

を使う。Gacutil.exeについてはこちら

Visual Studio 2005をインストールしてある環境ならスタートメニューから「Visual Studio 2005 コマンドプロンプト」を起動すると使える。

ちなみに同じアプリケーションを各ユーザーごとにカスタマイズしている場合は、アプリケーションの「アセンブリ名」を変更して、別アプリケーションとした方が開発とテストがやりやすいと思う。

2010年1月26日火曜日

【.NET】ClickOnceのインストール時に不明な発行元がでる

ClickOnceのインストール時に「不明な発行元です。」と表示されるのをなんとかしようと調べたメモ。

ベリサインなどの証明機関(CA)から証明書を発行してもらい署名すればエラーはでないみたい。

MSDN 開発者以外が配置する ClickOnce アプリケーションの作成

上記サイトを読むと「顧客に代わって配置に署名」するを実行すれば良さそうだけど、よく分からず。

インストールするときに出るだけなので今のところはいいか。

また、時間があるときに調べる。

2010年1月25日月曜日

【Firefoxアドオン】FireMobileSimulatorでAndroidをエミュレート

Andorid端末向けのサイトを構築する際に動作確認をするのにAndroid SDKに付属するエミュレータをインストールするのは面倒だったので、簡単にできないものかと調査したメモ。

Firefoxを携帯エミュレータにしてくれるアドオン「FireMobileSimulator」を使うと簡単にできる。インストールはこちらから。

インストール後、ツール → FireMobileSimulator → 最新端末リストから端末を追加から「HT-03A」を検索。

image

選択して「選択した端末を追加」で完了。あとはツール → FireMobileSimulator → DC HT-03Aを選択すればOK.

Firebugとの連携でデバッグもしやすい。

ちなみに試してたのは、WordpressをAndroid端末, iPhone, iPod touch向けに表示してくれるプラグイン「WPtouch

2010年1月22日金曜日

【.NET】ClickOnceの署名(デジタル証明書)を更新・延長する

開発をしていたら、ある日突然発行ウィザードでエラーを吐くようになった。

環境はVisual Studio 2005

エラー    2    SignTool はエラー 'bin\Debug\AuroraClient.publish\\setup.exe の署名に失敗しました。 SignTool Error: ISignedCode::Sign returned error: 0x80880253

    The signer's certificate is not valid for signing.

SignTool Error: An error occurred while attempting to sign: bin\Debug\AuroraClient.publish\\setup.exe

' を報告しました。    AuroraClient

デジタル証明書の有効期限が切れたみたい・・・。

下記サイトを参考に更新してみる。

ClickOnceのデジタル証明書を更新するには?[VS 2005のみ、2.0のみ、C#

書いてある通りに作成して実行してみると強制終了する・・・。

検索してみると、ここからRenewCertのエラーメッセージを出力してくれるバージョンをダウンロードできる。

ビルドして実行してみると、

PFXImportCertStore failed with error 0x56:

というエラーが。もしやと思い設定したパスワードを引数で渡すと作成できた。

RenewCert.exe "元のpfxパス" "出力pfxパス" "CN=<発行者名>" "設定したパスワード"

発行者名は適当に設定しても大丈夫らしい。

2010年1月21日木曜日

PostgreSQLをバージョン8.4系にあげたらクエリが遅い

新しい開発案件でPostgreSQL(今のバージョンは8.4.2)の設定をし終えて、いざ動かしてみるとviewが(異様に)遅い(のがある)。

環境はCentOS5.4(linux)

最初はPostgreSQLのチューニングで何とかなると思い、試行錯誤しながら設定したけど、8.3のころのスピードにはならず。

しょうがないので8.3の最新版を再インストールすることに。

下記ドキュメントを見る限り、8.4にすれば速くなりそうな気がするけど、もう少し8.4は待ちかな?

PostgreSQL 8.4 に関する技術情報(リリースノートの解説)

普通に使う文には多分速いと思う。

viewの作りが悪いのとオプティマイザの相性の問題かなと・・・

2010年1月20日水曜日

jQueryを使ってPHPとJSON形式のデータをやり取りする方法

クライアントとサーバー間で通信するときにJSON形式のデータを簡単にやり取り出来ないものかと調査したメモ。

クライアント(JavaScript側)はjQueryとjQueryのプラグイン「jquery-json」を使う。ダウンロードはこちらから。

jquery-jsonはjson形式の変換(encode, decode)を簡単にできる。

サーバー側はjson_decodeとjson_encodeを使う。詳しくは前の記事を参照。

以下サンプル

クライアント側

var objData = new Object(); //var aData = {};でもOK
objData.name = "hoge"; //aData["name"] = "hoge"でもoK
objData.age = 12;
sJson = $.toJSON(objData);
$.getJSON("test.php", { json : sJson },
function(objRes){
    alert(objRes.country); //objRes["country"]でもok
});

(jquery-jsonを使わない場合はobjDataをpostする)

ちなみに$.post()を使って、$.evalJSON(res)してもいい。

サーバー側(test.php)

$objParam = json_decode($_POST['json']);
$objParam->country = 'japan'; //注意:配列ではない
echo json_encode($objParam);

試してないけど、こんな感じでできるはず。

POSTするとサーバー側のデバッグがしづらいので、サーバーにポストする前にalertでJSONを出力して次のようなHTMLを用意すれば、ちょっとやりやすくなる。

<html>
<head>
  <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
  <title>保存するときの文字コードを気を付ける</title>
</head>
<body>
  <form method="POST" action="test.php">
    <input type="text" name="json" value='ここにsJsonを貼り付ける'/>
    <input type="submit"/>
  </form>
</body>
</html>

文字コード(charset)はファイルの文字コードと合わせないと日本語が文字化けする。

 

<2010/01/25 追記>

magic_quotes_gpcがOnの場合はエスケープされてしまうので、Offにするかプログラム側で

if (get_magic_quotes_gpc()) {
    $json = stripslashes($json);
}

して実行する。

 

▼関連記事

【VB.NET】アプリケーションからJSON形式でサーバと通信する
【PHP】json_decode, json_encodeを使えるようにjsonをインストール

2010年1月19日火曜日

PostgreSQLのチューニング(postgresql.confの設定)

サーバーを設定する際にPostgreSQLに割り当てるメモリをどれくらいにするか調査したメモ。

環境はCentOS 5.4, PostgreSQL 8.3.9

postgresql.confに書いてある設定の意味は公式リファレンスを参照する。

このwikiを参考に。

  • shared_buffers = 1024MB #共有メモリバッファ
  • temp_buffers = 256MB # 一時テーブルで使用
  • work_mem = 10MB #ソートやテーブル結合で使用
  • wal_buffers = 1024kB #トランザクションログで使用
  • effective_cache_size = 256MB #なるべくインデックスを使うように
  • random_page_cost = 2.0 #なるべくインデックスを使うように

 

▼関連記事

MySQLのチューニングメモ

2010年1月18日月曜日

【Linux】プロセスのメモリを確認して不要なサービスを止める

VMware上でメモリが足らず、開発に影響してきたので、不要なサービスを止めるために調査したメモ。ここのブログを参考にした

環境はCentOS

現在使用中のメモリを確認するコマンド

# ps alx | less

VSZが仮想メモリでRSSが物理メモリらしいので、これらが多いプロセスでいらないやつを止めた。不要なデーモンで参考になったのが下記サイト

r271-635 CentOS 不必要なサービスを無効化

PukiWiki 不要サービスの停止

以下止めたデーモン一覧

プロセス 説明
autofs ファイルシステムの自動マウント/アンマウント
avahi-daemon mDNSを使用して名前解決
auditd 監査メーッセージをログ出力
acpid 電源管理
cups 印刷サービス
gpm コンソールでマウスを使うためのドライバ
ip6tables ファイヤーウォール(IP6版)
jexec jarファイルを実行可能にする
firstboot システム初期設定用
mcstrans SELinuxで内部データを、ユーザ定義に変換して表示
mdmonitor RAID監視
netfs NFS, Sambaなどネットワークドライブを自動マウント
nfslock NFSでファイルの排他制御
portmap NFSなどのRPC接続を、TCP/IPにマッピング
rpcgssd
rpcidmapd
NFS(RPC)関連
pcscd スマートカードリーダー
sendmail メール送信
smartd HDDの障害予測機能(S.M.A.R.T)のサポート

自動起動を停止する場合は

# chkconfig <プロセス> off

起動しているか確認する場合は

# /etc/rc.d/init.d/<プロセス> status

 

関連記事

【CentOS】いらないデーモン(daemon)を削除する

2010年1月15日金曜日

【Android開発】EclipseのAndroid SDKをアップデートする方法

Android SDKをアップデートしたときのメモ。

環境はEclipse(Galileo)

インストールの仕方はこちらの記事を参考に。

プラグイン(Android Development Tools)(ADT)のアップデートはEclipseのHelp → Check for Updatesからできる。

インストールされたSDKなどはWindows → Android SDK and AVD Managerから。

Installed Packages、Available Packagesのどちらでも可能。Accept Allで一括インストール。

ただEclipseを起動しているとSDKのファイルをロックされて更新できない場合があるので、その場合はAndroid SDK and AVD Managerを単独で起動。

Windowsの場合はandroid-sdk-windows\tools\android.batを起動すればOK。

2010年1月14日木曜日

VMware Server 2.0の仮想マシンをコマンドラインで操作

遅いサーバーにVMware Serverをインストールして使っていると、いちいちWeb Accessを立ち上げていると遅いので、さくっとコマンドラインで出来なものかと調べたメモ。

ちなみにWeb Accessから「Generate Virtual Machine Shortcut」でデスクトップにショートカットを作ってもいい。

コマンドラインは下のブログを参考に。

VMware Server 2.0 をコマンドラインから操作する方法

以下は自分用メモ

コマンド 説明
vmware-vim-cmd vmsvc/getallvms ゲストOSの一覧
vmware-vim-cmd vmsvc/power.suspend [Vmid] サスペンド
vmware-vim-cmd vmsvc/power.on [Vmid] 電源on
vmware-vim-cmd vmsvc/power.off [Vmid] 電源off
vmware-vim-cmd vmsvc/power.reboot [Vmid] 再起動
vmware-vim-cmd vmsvc/power.getstate [Vmid] 状態表示
vmware-vim-cmd help vmsvc コマンド一覧

対話型で操作するには

# vmware-vimsh

を使う。実行後にTabを打てば、コマンドが出てくる。後は

[/]$ help (コマンド)

でいろいろ分かる。

2010年1月13日水曜日

【PostgreSQLチューニング】遅いSQLクエリをみつけるログ設定

ボトルネックになっているSQLを見つけようと設定したときのメモ。

環境はCentOS 5.4, PostgreSQL 8.4.2

インストールの方法は前の記事を参考に。

ログ設定で参考になったのは下記

@IT 第3回 PostgreSQLを遅くしている犯人はどこだ?

コンパイル直後はログの設定が無効になっているので、/usr/local/pgsql/data/postgresql.confを編集する

log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d.log'
log_truncate_on_rotation = on
log_rotation_age = 1d #1日ごとにrotation
log_rotation_size = 10MB
log_min_duration_statement = 3s #3秒を超えたらログ出力

それぞれコメントアウトをして有効にする。最後のlog_min_duration_statementで設定した秒数を超えるクエリをログに出力してくれる。

ログファイルは/usr/local/pgsql/data/pg_logに出力される。

2010年1月12日火曜日

SubversionをCompileしてsvnコマンドを使用(RPMとYUMを使う方法を追記)

yumでインストールしたsubversionは古いので最新のSubversionをソースからコンパイルしたメモ。

環境はCentOS5.4(linux)

Sambaで共有して、Windowsから更新・コミットしているので、サーバーではsvn exportができるだけでいい(subversionクライアントとして動作すればいい)

ダウロードは公式サイトから。

この辺からsubversion-1.6.6.tar.gzとsubversion-deps-1.6.6.tar.gzをダウンロードする。

subversion-1.6.6.tar.gzだけで最初やろうとしたらSQLiteの依存関係で困ったので(SQLiteはいろんなパーケージに依存されているのでyum管理から出したくない)、依存関係がパッケージされているsubversion-depsを使うことにした。

# tar xzvf subversion-1.6.6.tar.gz
# tar xzvf subversion-deps-1.6.6.tar.gz
# cd subversion-1.6.6
# ./configure --without-berkeley-db --without-apxs --without-swig --without-serf --disable-mod-activation
# make
# make install

/usr/local/binに配置される。

一回ログアウトしないとコマンドがないと怒られた。

エクスポートするコマンドは
# svn export /opt/aurora /tmp/aurora

という感じ。詳しくは
# svn help export

で確認。


< 2012/04/10 Modified >
subversion 1.7 のClient PackageをInstallしたのを追記。

CollabNetに登録(無料)して、rpm packageをDownloadする。

# rpm -ivh CollabNetSubversion-client-1.7.4-1.i386.rpm

/opt/CollabNet_Subversion
にInstallされるので、環境変数を設定
# vi /etc/profile.d/collabnet-subversion.sh

PATH=/opt/CollabNet_Subversion/bin:$PATH
MANPATH=/opt/CollabNet_Subversion/share/man:$MANPATH
LOCPATH=/opt/CollabNet_Subversion/share/locale:$LOCPATH

export PATH MANPATH LOCPATH

# chmod 755 /etc/profile.d/collabnet-subversion.sh
# source /etc/profile.d/collabnet-subversion.sh

svnが使えるようになっているはず。

 


RPMforgeを追加してyum経由でInstallしたのを追記。詳しくは下記

# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
# cd /opt/software/
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
# rpm -K rpmforge-release-0.5.2-2.el5.rf.i386.rpm
# rpm -i rpmforge-release-0.5.2-2.el5.rf.i386.rpm

下記Fileが作成される。
/etc/yum.repos.d/rpmforge.repo

yumを実行
# yum clean all
# yum info subversion
# yum install subversion

 

< Related Posts >

2010年1月8日金曜日

2010年はHTML5がどこまで広がるか

HTML5のドラフト版が発表され(2008年8月)、2010年の9月頃に正式に発表を予定しているらしい。wikipedia

Firefoxとかいくつかのブラウザでは既にHTML5のいくつかの機能を実装しているみたい。

そんなHTML5の情報は下記サイトから。

HTML5.JP

HTML 5 ― HTML 4 からの変更点

ざっと見ていると今までFlashやJavaScriptで実装していた機能がタグやAPIとして提供されるような感じ。よりWebアプリケーションが実装しやすくなりそう。

Google Chrome OSなんかはHTML5をフルで活用してきそうなイメージ。

グーグルが賭けるHTML 5の未来

でも、最近発表されたGoogleのAndroid携帯はflashが内蔵されているらしい。

2010年1月7日木曜日

【DNS】SPFレコードを設定して自ドメインのなりすましメール対策

メールを送信するときにFromを任意に設定して送信することが可能ですが、自分の管理しているドメインが不正に使われないようにするのにSPFレコードをDNSに記述して対策するらしい。

SPF(Sender Policy Framework)の詳細は下記

Wikipedia

Google Apps 管理者用 ヘルプ SPF レコードの設定

サンプルとかはGoogle先生に聞いてみるといろいろ出てくる。

自分でも設定したときに追記予定。

2010年1月6日水曜日

MicrosoftとGoogleのCDNでjQuery.jsの読み込みを高速化

Microsoftが提供するCDN(コンテンツ・デリバリー・ネットワーク)に置いてあるAjax(jQuery)ライブラリを使うと読み込みが高速化できるらしい。

Microsoft AJAX CDNのお知らせ - @IT

Microsoft AJAX CDN - SSLのサポート - @IT

商用、非商用でも無償で利用できるらしい。

さらにこれを調べていて、Googleでもすでに同じようなサービスを提供していることが分かった。

Google AJAX Libraries API

こちらの方が提供しているライブラリが豊富。

利用することで体感で分かるほど速度改善できるかは疑問だけど、頭の片隅に置いておくことにする。

2010年1月5日火曜日

HDD to HDDでコピーする「これdo台 PRO」

実際に見せてもらって良さそうだったのでメモ。

PCレスでHDDをまるごとコピーしたりできる

Century 「これdo台 PRO」

値段は26000円ぐらい。ちょっと高いか?

PC経由であればHDDをまるごとコピーできるフリーソフトもあるので、お金がない場合はそちらを利用するのも手。

2010年1月4日月曜日

2010年仕事始め

今日から仕事始め。

溜まっているタスクを考えると萎えるけど、地元で(精神的に)充電してきたのでグァーッとやって終わらせたい。

Related Posts Plugin for WordPress, Blogger...

Blog Archives