web屋が使えそうなlinuxコマンドメモ

findは一括でデータを書き換える為使い方によってはサーバが死にます。
重々良く確認してご使用ください。
自己責任でよろ。
.phpパーミッション一括変更


find . -name \*.php -exec chmod 755 {} \;
カレントディレクトリ(SSHで今いる階層)以下のファイルに対して有効
ファイルを指定する場合は『\*.php』を書き換える。
example)hogehoge.cgi、hogehoge.log、hogeoge.php など
ディレクトリのパーミッション一括変更

カレントディレクトリ(SSHで今いる階層)以下のすべてのディレクトリに対し作用。
find . -type d -exec chmod 755 {} \;
カレントディレクトリ(SSHで今いる階層)以下のすべてのディレクトリに対し作用。
find . -name \* xargs chmod 777
ただし、こちらは『\*』を適時書き換える事によって、カレントディレクトリ以下の
該当の特定ディレクトリのみ一括で書き換えを行える。

もっといろんな方法は、以下を参照
http://w.livedoor.jp/pinetail/d/Linux%A5%B3%A5%DE%A5%F3%A5%C9Tips

windows7 64bit上での fireworks(ファイアーワークス) cs3の挙動不安定(ツールを選択できない)問題についての解決策。

デザイナーからサポート依頼を受けました。


内容は、最近買い換えたwindows7 64bit icore5 8G 上で、firewoksの動作が不安定だと言う。
adobe fireworksのバージョンはcs3。
確認した所 ツールが選択出来たり出来なかったり。
今回はクラッシュなどは発生していないようです。


そこで、windows7のディスプレイ出力廻りを調査。
解決策を発見したので、メモ。


ぱっと見ネット上でも解決策は載っていないようなので、掲載しておきます。
誰かの助けになれば幸いです。


まず、現在fireworksを開いているようであれば、閉じてください。


fireworksのショートカット』を右クリック
※ショートカットはいつもfireworksを起動時にクリックしているアイコンの事。

『プロパティ』を左クリック

『互換性』を左クリック

『互換モードでこのプログラムを起動する』にチェックを入れ、『xp sp3』か『vista sp2』あたりを選択

『デスクトップコンポジションを無効にする』にチェックを入れます

『適用』『OK』

以上で、それ以降、問題なく、安定動作したようです。
困っている方はお試しあれ。


以下、蛇足として原因として考えられる事。
windows7のDWMが有効になると、デスクトップデバイスへの直接描画から、
GPU経由での、合成出力となる。
この際に、レンダリングと、クリック入力の取得方式の問題から起こったのではないか?


とりあえず、この問題はこれにて了。

copyrightを今現在javascriptで自動更新させると言う事。

クライアントPCに依存するので使っちゃダメ。
おとなしくサーバーサイドにしましょう。

phpであれば、

Copyright &#169; <?php echo date("Y");?> hogehoge All rights reserved.

みたいな感じ。


いずれも、.htmlで動かすなら、.htaccessを設定する必要があります。
AddType application/x-httpd-php .php .html
もしくは
AddType application/x-httpd-php .php .html
.htaccessに記入する。
※サーバによってPHPをHTML上での動かす方法が違います。
 上記はlinux系になります。freeBSDや、レンタルサーバ(サクラなど)によっても違いますので注意。


もしくは最近はもう、年月記載が流行ってないみたいなので、素直に

・Copyright &#169; hogehoge All rights reserved.
・Copyright (c) hogehoge All rights reserved.

とするのもありかもです。

今更ながら簡単にXPとCentOS5をデュアルブートさせる方法

CentOS、XPに標準でついているgrubが上手く動かなかったので、メモ。

XPをインストール。
その際、適当にパーティションを区切る。
パーティションの余っている方へCentOSをつっこむ。)

インストール後、PCの仕様を元にドライバ突っ込んだり、いろいろする。

次にCentOSをインストール。ブートローダーの設定がGUIからしか出来ないため、
インストールモードは必ずGUIで。
(インストール後は、今回はCUIを想定)

インストール途中
[パーティションレイアウトの再確認と変更] を選択、 [次]へ
未割り当て領域が選択されていることを確認して [次]へ
適当にXPと、CentOSを指定して、[高度なブートローダオプション]を選択し、[次]へ

hogehogeの最初のブートパーティションの最初のセクタを選択して[次]へ
後は適当にインストール。

そして最後にhttp://sourceforge.net/projects/grub4dos/から
・grldr と ・grub.exeをパーティションの直下(ルートディレクトリまたはc:¥など)にコピー。
c:\boot.iniをノートパッドで開きc:\grldr="grub4dos"を追加。
起動時に F8 キーなどを押し OS選択画面へ移動。「 grub4dos 」を選択、確認。

以上。


名前空間

今まで名前空間にもmainが一番上に来る箒上の順序があるもんだと思ってたんだけども、
実は無いみたい。

#!/usr/bin/perl

use strict;
use warnings
BEGIN{ $| = 1;print "Content-type: text/html\n\n"; open(STDERR, ">&STDOUT");print "start  <br/>"; }
package aaa;
BEGIN{print "aaastart <br/>";}
sub say{
	my $class = shift;
	my $say = "hello aaa <br/>";
	$class->output($say);
}
sub output{
	my ($this,$arg) = @_;
	print $arg;}
1;
package Test;
print "hello world  <br/>";
BEGIN{print "end <br/>" ;}
aaa->say;

1;
1;

こんな感じに適当に打ってやると
普通にサブルーティン以外は、BEGINが上から処理された。びっくりだ。
つまり、main空間は使わなくても問題ないで
初期実行のみサブルーティンで囲わず書いとくと、スタート地点を擬似的に制御できるみたい。
NanoA見てて、なんでスタートがmain空間に無かったのか、どうやってNanoAルーティンから開始していたのか、
ようやく納得。


と言うか、こんな基本的なことも知らなかった事に驚きを隠せない。

動的且つ複数のスワップイメージを用意したい場合のjavascript on jquery

お客さんからCGIで一覧表示している写真A、B、Cに
Aに紐付いた写真a1、a2、a3
Bに紐付いた写真b1、b2、b3
と言う風に追加し、さらに
a1をマウスオーバーすると写真Aがa1に変わらないか?
と言うご注文をいただいたので、jqueryプラグイン的な物を作った。
本番環境では、それぞれを外部化して、使う。
もし通りかかったあなたが、これを使用するような事態になってたら、
jqueryに関しては、ご自分でググりやがってくださいませ。
またmainを外枠につけるなどの編集を加える事により
認識するsiblingsの範囲変更ができますので、そちらで一層自由度が変わるかとおもわれます。

js部分--------------------------------------------------------------------------------
<script type="text/javascript" charset="utf-8" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" charset="utf-8">
<!--
  $(document).ready( function() {
    //各種class、tempタグ設定
    var class_main = ".main"; // メイン写真部
    var class_sumn = ".sumn"; // サムネイル写真部
    var class_temp = "span";  //  
    $(class_sumn).mouseover( function() {
      $(this).siblings(class_temp).text($(this).siblings(class_main).attr("src",replace("_s", ""));
      $(this).siblings(class_main).attr("src",this.src);
    });
   $(class_sumn).mouseout( function() {
      var changeSrc = $(this).siblings(class_temp).text();
      $(this).siblings(class_main).attr("src", changeSrc);
    });
  });
// -->
</script>
//js部分--------------------------------------------------------------------------------
css部-----------------------------------------------------------------------------------
<style type="text/css"><!--
.hidden {display:none;}
--></style>
//css-----------------------------------------------------------------------------------

html部----------------------------------------------------------------------------------
<div>
<img class="main" src="winter.jpg" width="480" height="320"/>
<br />
<img class="sumn" src="water_lilies_s.jpg" width="50" height="50"/>
<img class="sumn" src="sunset_s.jpg" width="50" height="50"/>
<img class="sumn" src="blue_hills_s.jpg" width="50" height="50"/>
<span class="hidden">temp</span>
<div/>
<div>
<img class="main" src="01_s.jpg" width="480" height="320"/>
<br />
<img class="sumn" src="02_s.jpg" width="50" height="50"/>
<img class="sumn" src="03_s.jpg" width="50" height="50"/>
<img class="sumn" src="04_s.jpg" width="50" height="50"/>
<span class="hidden">temp</span>
<div/>
//html部--------------------------------------------------------------------------------

サムネイルは
hoge_s.jpgでマウスオン時はメイン写真部にhoge.jpgが読み込まれる。

foreachとmap

evalで動的useをしている時にふと思ったんだけども、


どっちが速いんだろう・・・。


悩んだら試してみるの法則。
Benchmark してみた。
for: 1 wallclock secs ( 0.53 usr + 0.02 sys = 0.55 CPU) @ 1824817.52/s (n=1000000)
map: 1 wallclock secs ( 0.25 usr + 0.00 sys = 0.25 CPU) @ 4016064.26/s (n=1000000)

以下試したソース
use Benchmark;
my %codes = ();
$codes{'for'} = q{foreach my $modules(@$modules_ref){eval"use $modules;";}};
$codes{'map'} = q{map {eval "use $_;";} @$modules_ref;};
my $ret = timethese(1000000,\%codes);


5000000回だとえらい差が出てくる。
そんな訳で今回はmapを採用。