カテゴリー : web & pc

robocopy

windows用のrobocoyっていうsyncできるコマンドを使ってデータを移し変えてみたいんですが、
ファイルのアクセス権限等も含めた全データをコピーする “/COPYALL”というオプションをつけても
アクセス権だけがコピーできない状態になりました。

http://support.microsoft.com/kb/973776/ja
このへんを見たりもしてたんですが、今回はadministrator権限でやっているので、
権限が足りないってことはない。全権限があるので、”/B”オプションは使わないので関係なし。

“robocopy アクセス権限 継承” とかでググッて、でてきたのは、これら。

http://upsilon.blog.shinobi.jp/Entry/202/
こちらは直接解決に結びつくことは書いてなかったけど、robocopyをやる際の
イメージがつかみやすく、今回検索で見つけた中で、一番いいサイトでした。

http://ja.w3support.net/index.php?db=sf&id=60908
こちらが問題解決の糸口になったサイト。
英語を翻訳ソフトで翻訳したような変な日本語なんですが、役にたったのはこの一文。
”その先のルートディレクトリには新しいファイルに、そのアクセス許可を継承するように設定していないことを確認します”

アクセス許可を継承するっていう設定があるってことがここでわかりました。
ということは、コピーした際に、アクセス許可を継承して、以前のアクセス許可が上書きされているのかなと思ったのです。

解決策としては、コピーするフォルダのプロパティのセキュリティタブを開いて、
下の方にある”詳細設定”をクリックし、開いた画面の”編集”をクリックします。
ここで出てきた画面の下に、”このオブジェクトの親からの継承可能なアクセス許可を含める”っていうチェックを外します。
これで、親フォルダの権限を引き継ぐことがなくなったはず!!

ってことで、再度robocopy実行します。オプションは以下。
実行したのは、administrator権限です。
administrator権限がないと、/COPYALL とかできなかったので。

>robocopy “移行元フォルダ” “移行先フォルダ” /E /COPYALL /DCOPY:T /SECFIX /TIMFIX /PURGE /R:0

CubeIce

今まで圧縮解凍ソフトは、「LHAユーティリティ32」を使っていました。
ぞうさんのアイコンのソフトです。不便はなく快適でした。

利用OSがwindows7になったので、気分を変えて新しいソフトを探して、
見つけたのがCubeICEです。
ポイントは、「LHAユーティリティ32」と使い勝手に遜色がないこと。
圧縮対象を選んで右クリックして圧縮。
そのタイミングで、パスワード付き圧縮も選択可能。
windows、mac間で発生する不要ファイルも自動的に削除してくれる。
これらがいいかもと思った理由です。(下記記事に詳細のってます。)
http://www.forest.impress.co.jp/docs/news/20110214_426886.html

ずっと同じソフト使っているし、気分変えたいなという方はどうぞ。

gitで、最後にcommitした状態に全体を戻す

ファイル管理でgitを使っているのですが、リポジトリの最新のファイル全体を戻したい場合のコマンドがわからず、調べたので、ご紹介します。

1
git reset --hard


このコマンドで思った通りの結果が得られました。参考にしたのはこちら。
http://transitive.info/article/git/command/reset/#git-00-reset-hard

他にも、沢山のコマンドがのっていたので重宝しそうです。
http://transitive.info/article/git/

かっこいいwordpressテーマ

百式管理人 田口さんのサイト(http://http://www.ideaxidea.com/)がきっかけで、モノラボさん(http://www.mono-lab.net/)を知りました。

今までいろいろ探した中でも、モノラボさん作成のテンプレートはかっこいい!
以下のダウンロードページにある3つともかっこいです。
個人的には neutral と monochrome が甲乙つけがたいところ。
http://www.mono-lab.net/download/monochrome/

次にテーマを変えるときは、どっちかにしようかな。

phpの連想配列から指定したキーの要素を、指定したキーの順番で取得する方法

日本語で説明すると面倒ですねw

以下のような配列から

1
2
3
4
5
6
$list = array(
    "item100" => "aaa", 
    "item50" => "bbb", 
    "item30" => "ccc", 
    "item10" => "ddd"
);

以下のような配列を取得したかったのです。

1
2
3
4
$list = array(
    "item30" => "ccc", 
    "item50" => "bbb"
);


最終的にたどり着いたのは、この方法でした。

1
2
3
4
5
6
7
8
9
10
11
$list = array(
    "item100" => "aaa", 
    "item50" => "bbb", 
    "item30" => "ccc", 
    "item10" => "ddd"
);
$cols = array("item30", "item50");
$ret = array_merge(
    array_flip($cols), 
    array_intersect_key($list, array_flip($cols))
);


array_intersect_keyを行うと必要な要素は取得できるんですが、要素の並び順がもともとの $list の状態を保持していました。そこで、array_mergeを使って、指定したkeyの順番を保ちつつ、値を $list のもので上書きしています。

trigger_errorの使い方

使い方マニュアルはこちら。
http://phpspot.net/php/man/php/function.trigger-error.html

私は読んでもピンとこなかったので、動かしてみることに。
trigger_errorに渡したメッセージが、ブラウザに出力されました。表示形式はphpのエラーと同じフォーマットで、trigger_errorを実行したファイル、ファイルの行数、設定したメッセージが表示されます。
(”}”の対応が間違ってたりしたときに、warningとかでるあのフォーマットです。)

自分で共通クラスとかつくったときに、使い方が間違っていたら今までException発生させて間違っているよということを通知していましたが、trigger_errorを使った方がいいかなと思いました。
Exceptionの中身からエラー発生行数とか見つけなくていいですし。

ZendFramework1.11.1はPCREのUnicode対応が必要

ZendFramework1.10.1から、1.11.1に変えたときに、Noticeメッセージがでました。内容は、「PCREがUnicodeをサポートしてませんよ」というもの。
Niticeメッセージはでないようにしてたのにと思って調べてみたら、ZendFrameworkのZend_Locale内で、trigger_errorを使ってメッセージを出してました。なので、ちゃんとPCREをUnicode対応にしました。

参考にさせていただいたサイトは以下です。
http://junrei.dip.jp/wordpress/nagios/pnp4nagios%EF%BC%880-6-2%EF%BC%89%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/

以下のコマンドで、PCREがUnicodeに対応してないことを確認。

1
2
3
4
5
6
7
8
9
10
11
12
# pcretest -C
PCRE version 8.02 2010-03-19
Compiled with
  UTF-8 support
  No Unicode properties support
  Newline sequence is LF
  \R matches all Unicode newlines
  Internal link size = 2
  POSIX malloc threshold = 10
  Default match limit = 10000000
  Default recursion depth limit = 10000000
  Match recursion uses stack



まずは、以下のファイルを作成。
デフォルトのリポジトリに、pcre-unicodeがないので、下記のリポジトリを追加します。私の環境だと、phpをインストールするときに、追加してました。(忘れてました。。)

1
2
3
4
5
6
7
8
# vi /etc/yum.repos.d/utterramblings.repo
 
[utterramblings]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka



そして、以下のコマンドを実行

1
# yum install pcre-unicode



再度、unicodeに対応しているかをコマンドで確認。

1
2
3
4
5
6
7
8
9
10
11
12
# pcretest -C
PCRE version 8.02 2010-03-19
Compiled with
  UTF-8 support
  Unicode properties support
  Newline sequence is LF
  \R matches all Unicode newlines
  Internal link size = 2
  POSIX malloc threshold = 10
  Default match limit = 10000000
  Default recursion depth limit = 10000000
  Match recursion uses stack


Unicode properties supportになったのでOK。
Noticeメッセージもでなくなりました。
ZendFrameworkを利用するときに覚えておく必要がありそうです。

ZendFrameworkの環境変数APPLICATION_ENVを設定する

ZendFrameworkでは、index.phpにもともと書いてある記述に以下の環境変数に関わるものがあります。

1
2
3
/ Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));


APPLICATION_ENVが設定されてなかったら、’production’ という文字列を、APPLICATION_ENVとして設定するという内容です。このAPPLICATION_ENVはどこで使われているかというと、Bootstrap内で、application.iniを読み込む際に、パラメタとして渡されています。

application.iniは、DB接続設定等を書くファイルで、APPLICATION_ENVの値を、本番環境、テスト環境等で変えることによって、ファイルを編集することなく、DB接続先の設定を環境に合ったものに設定することができます。iniファイルの書き方は、こちらをご参照ください(http://framework.zend.com/manual/1.11/ja/zend.config.adapters.ini.html)

今回、/etc/sysconfig/httpd に以下の記述を追加すると、apacheにて環境変数を追加することができました。

1
export APPLICATION_ENV="development"


.htaccessを使うと、”setEnv”を使って記述することもできます。その場合の書き方は以下になります。

1
setEnv APPLICATION_ENV development


これまで、.htaccessを使ったやり方のみでやってきて、/etc/sysconfig/httpd を編集する方法を知りませんでした。

Zend_Mailで文字化けしなくなっていた

以前、こんな記事を書きました。
http://life.co-hey.com/2009/02/zendframework_175_1/

その後、Zend_Mailをいじることはなかったんですが、最近また利用する機会があったのですが、Zend_Mailの中身を修正しなくても、文字化けしなくなっていました。

1
2
3
4
5
6
7
$e = Zend_Debug::dump($errors->exception, null, false);
$mail = new Zend_Mail('iso-2022-jp');
$mail->addTo('test@co-hey.com')
     ->setFrom('error@co-hey.com')
     ->setSubject(mb_convert_encoding('例外が発生しました', 'iso-2022-jp', 'UTF-8'))
     ->setBodyText(mb_convert_encoding(strip_tags(htmlspecialchars_decode($e)), 'iso-2022-jp', 'UTF-8'))
     ->send();


ErrorController.phpの中で、上記のプログラムでエラー発生箇所をメールするという用途で使っています。バージョンアップの度に、Zend_Mailを1行修正する手間がいらなくなるのはうれしいです。

動作を試したのは、1.10.1ですが、いつから文字化けが解消されていたのかはわかりません。。

iMacも値下げ

http://store.apple.com/jp/browse/home/shop_mac/family/imac

この前、新MacBook Airが発表されて、MacBookの値下げをしていたAppleですが、今日サイトを見てみたら、iMacの価格も下がっていますね。10000円から20000円程度値下がりしているようです。今持っているMacBook Proを2008年に25万くらい出して買ったことを考えると、ほんとに安くなったなーと思います。

あと、2年くらいしたら、iMacの27インチが14万くらいで買えたりして。

%d人のブロガーが「いいね」をつけました。