2010年12月29日水曜日

ユーザにsudo権限を付与する

サーバクリティカルなので、何でもかんでもrootでログインして弄るのは危険なこと、なのでちゃんとroot以外のuserを作って、ログインしましょう。しかし、rootしかできない操作はよくあるので、いちいちs「su -」コマンドでrootに切り替えるのはめんどくさいです。そこでsudoが役に立つ。

事前に、sudoが使えるユーザを/etc/sudoersに登録しなければならない
このファイルはデフォルト読み込み専用になっているので、変更をするなら

/etc/sudoersの所有者でログインしている前提

chmod u=rwx /etc/sudoers
vi /etc/sudoers

これをsudoersの最後に追加

kagen ALL=(ALL) ALL

念のため、sudoersを読み込み専用に戻そう

chmod 440 /etc/sudoers

こうするとrootとしてコマンドを実行できるようになる

sudo コマンド
パスワード:

最初はパスワード聞かれるが、自分のパスワードを入れてOK
パスワード聞かれない方法もあるが、推奨はしない

chmodコマンド

r = 4 読み出し可
w = 2 書き込み可
x = 1 実行可能(ディレクトリの場合、これがないと入れない)


このファイル(またはディレクトリ)のアクセス権限を設定するコマンドchmod

chmod 754 /path/file


ここの「754」という3桁数字の意味は:
第1桁: このファイル(またはディレクトリ)の所有者に対して
第2桁: 所有者のいるグループの他のユーザに対して
第3桁: その他ユーザ
(※ちなみにrootは何でも出来るよ!)

なので「754」は
1.所有者に対して:
7 = (4 + 2 + 1) = 読み出し可 + 書き込み可 + 実行可能(すべて可能)

2.所有者いるグループの他のユーザに対して:
5 = (4 + 1) = 読み出し可 + 実行可能

3.その他のユーザに対して:
4 = 実行のみ可能

下記2つコマンドは等価です:

chmod 750 /path/file
chmod u=rwx,g=rx,o= /path/file

u = 所有者
g = 所有者のいるグループの他のユーザ
o = その他ユーザ

他にも色々設定方法があるが、これが覚え安いので…
chmod --helpを参考してください

2010年12月28日火曜日

ここで過去のバージョンを含め(最新バージョンを除く)CentOSの歴代イメージをダウンロードできる

ここで過去のバージョンを含め(最新バージョンを除く)CentOSの歴代イメージをダウンロードできる

http://vault.centos.org/

現時点のバージョン

Name Last modified Size Description
2.1/ 19-Aug-2009 01:36 -
3.1/ 31-Jul-2005 16:05 -
3.3/ 17-Mar-2005 11:17 -
3.4/ 01-Mar-2005 01:38 -
3.5/ 28-Jul-2005 16:14 -
3.6/ 04-Apr-2006 16:59 -
3.7/ 06-May-2006 01:20 -
3.8/ 25-Aug-2006 00:22 -
4.0/ 23-Jun-2005 12:09 -
4.0beta/ 15-Sep-2005 23:40 -
4.1/ 19-Oct-2005 12:09 -
4.2/ 04-Nov-2006 12:35 -
4.2beta/ 23-Oct-2005 11:17 -
4.3/ 27-Aug-2006 12:04 -
4.4/ 01-Nov-2006 19:32 -
4.5/ 08-Dec-2007 09:23 -
4.6/ 18-Sep-2008 14:35 -
4.7/ 14-Feb-2010 12:50 -
5.0/ 11-Apr-2007 17:53 -
5.1/ 27-Nov-2007 10:38 -
5.2/ 18-Jun-2008 23:34 -
5.3/ 14-Feb-2010 02:30 -
5.4/ 25-Jun-2010 14:38 -

HT-03AをDoCoMoの1.6からMyTouch3Gの1.5にダウングレードしました

HT-03AをDoCoMoの1.6からMyTouch3Gの1.5にダウングレードしました。
具体の方法はまた後程、纏めてポストする予定。

ダウングレード成功後、最初の起動時、Googleのアカウントをセットアップする画面が表示される。
しかし!この画面ではwi-fiの設定がなくAPNの設定しかできないんだ。


※入れたのはmyTouch3Gのイメージ、Googleのアカウントセットアップはskip出来なかったが、
実はvodafoneのイメージのvf-sappimg-crc24-1.33.0007.nbhをリストアすれば、このステップはskipできるので、APNなしでwi-fiは可能です。


つまり、APNがないとGoogleアカウントの認証が通らない、通らないと携帯が起動できない!

パケット代が高すぎで、wi-fiしか使わない私は、既にDoCoMoのmoperaと解約したので、困った…

ドコモショップに持って行ってもおそらく改造ROMだからサポートしてくれないと思います。

道を5つ考えましたが、すべて検証した訳ではない。

①moperaのパケット放題(またはビズ放題)契約済みのドコモSIMカードを入手、とりあえずAndroidを起動させて、wi-fiのセットアップをしてから、自分のSIMカードに差し替える。(この方法は多分ダメ)

②友達にスマートフォンを借りて、自分のSIMカードをさして、ドコモショップにmoperaサービスを開通する。

③フリーのAPNをググって一つ一ついれて検証する(時間がかかる)

④無理やり改造ROMのままドコモショップへ

⑤MyDoCoMoでmoperaと契約、パケットサービスを開通する。


最後は⑤を採用、【パケ・ホーダイ ダブル】契約後、約5分を待ったら(待っでも出ない場合は手動で書きのAPNを設定してください)

(menuキー⇒APN Settings⇒menuキー⇒New APN)

「3G」のアイコンが表示され、Googleアカウント無事に開通しました。

APNの手動で設定しなかったが、念のため、書き留めます:

パケ・ホーダイ ダブルまたはパケ・ホーダイ
APN:mpr.ex-pkt.net

Biz・ホーダイ ダブル および Biz・ホーダイ
APN:mpr.bizho.net
APN以外のユーザやパスワードの設定は一切いりませんでした。

来月、また解約する予定、その間、HT-03aにandroid2.3を入れる予定!

2010年12月27日月曜日

php配列から要素を削除したら、キーを前に詰める方法

//配列aがあります
$arr=array('a','b','c');

//第2要素'b'を削除
unset($arr[1]);
var_dump($arr);

//結果出力
array(2) {
  [0]=>
  string(1) "a"
  [2]=>
  string(1) "c"
}

//欲しい結果はこれ
array(2) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "c"
}

//こうすればいいらしい
$arr = array_values($arr);

2010年12月22日水曜日

winmergeでフォルダー比較、.svnを無視する方法

バージョン管理ツールを使用するなら、「.svn」という隠しフォルダーがすべてのディレクトリに自動で作られる。winmergeでフォルダごとを比較したい時、.svnフォルダーが結構邪魔です。ところで、フィルターを設定することができます。





便利便利^。^v

2010年12月17日金曜日

iPadブラウザのUAで判断するコード

iPad使っているのはSafari Mobile、User Agentは
Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10
iPadかどうかの判断のキーポイントは「iPad」の有無。

Javascript

function is_iPad(){
    var ua = navigator.userAgent.toLowerCase();
    if(ua.match(/iPad/i)=="ipad") {
        return true;
    } else {
        return false;
    }
}

Php

$is_iPad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPad');

もしiPadであれば、iPad専用ページに飛ばす

.htaccess


RewriteCond %{HTTP_USER_AGENT} ^.*iPad.*$
RewriteRule ^(.*)$ http://ipad.fairyfish.net [R=301]


引用元

2010年12月16日木曜日

クラスとモジュールの違い

引用元:http://www.rubylife.jp/ini/module/index1.htmlhttp://www.rubylife.jp/ini/module/index1.html

モジュールはクラスと同じくメソッドを定義する事が出来ます。クラス変数に相当するものはモジュールにはありませんが定数は定義する事が出来ます。

このようにモジュールはクラスに非常に似た構成を持っていますが大きな違いとしてクラスはクラスからオブジェクトを作成することが出来ますがモジュールでは作成することは出来ません。モジュールの利用方法としては「モジュール名.メソッド名」の形式で関数のように実行するか、または他のクラスの中にインクルードして利用することが出来ます。

クラスでは継承をサポートしており1つの基幹クラスを継承して複数のクラスを作成する事が出来ます。これによって同じような機能を持つクラスを別々に1から作成する必要はありません。ただ、同じ様な機能が必要だったとしてもまったく別の目的のクラスである場合はクラスの継承によって共通化する部分を作成するにはおかしい場合があります。そのような場合に共通となる機能をモジュールとして定義し、各クラスにインクルードして利用することでコードの再利用性を高めることができます。

感想:
クラスができることの一部は、モジュールもできます(メソードや定数)が、使い分けは原則上の言い方だと私的に結構すーっと入りますね

linuxの一部常用圧縮解凍コマンド

tar

圧縮
# tar zcvf huge.tar.gz huge

解凍
# tar zxvf huge.tar.gz


bzip

# bzip2 -dc IE6-XPSP2.vmdk.bz2 > IE6-XPSP2.vmdk

必ず最後で解凍後ファイル名またはディレクトリ名を指定しないと行けないみたい
-v メッセージを表示
-c 元のファイルは削除せず、標準出力
-z ファイルを圧縮
-d gunzip形式で圧縮されたファイルを伸張
-k 圧縮する元ファイルを削除しない

2010年12月15日水曜日

grep, find, locate

grepであるディレクトリの下のすべてのファイルに対して、文字列を検索する
下記のコマンドで、カレントディレクトリ以下のすべてのファイルに、「documentroot」という文字列(大文字小文字関係なく)を含むファイルを出力する。

$ grep -ri documentroot .

-r はサブフォルダを含め、すべてを検索
-i は大文字小文字関係なく


下記のコマンドで、カレントディレクトリ以下のすべてのファイル名に「log」が含まれないファイルに、ファイルの中に「172.17.0.190」を含むファイルを出力する。

$ grep -r --exclude='*log*' 172.17.0.190 .



また、ひかかったファイル名(パスも含む)のみを表示するには

$ grep -lr "ABC DEF" .



find

$ find / -name abc.txt //全部探す
$ find . -name abc.txt //カレントディレクトリ以下を探す
$ find ~ -name '*.xbm' //ホームディレクトリ以下の拡張しはxbmのすべてのファイル


A cool thing with find is tracking down orphaned files, after you've booted a
user off the system. You need to locate all the files that belonged to that
user. Oops, their account is long gone, so you can't search by login name. No
problem, search on their UID:

# find / -uid 1005

If you're searching system directories as a lowly unprivileged user, you'll
generate bales of error messages. These are like, so depressing, so they must
be suppressed, or redirected into the bitbucket, hahaha:

# find / -uid 1005 2>/dev/null



最後はlocate

$ updatedb
$ locate filename
$ locate -i filename //大文字小文字区別

linux上スペースを含んだディレクトリ名やファイル名の作成とアクセス


$ mkdir "Sound Good Kagen"
$ touch "good morning.txt"
$ mv good\ morning.txt Sound\ Good\ Kagen/

scpでディレクトリごとをリモートサーバにコピーする

scp -r user@fromhost:/path/ user@tohost:/path/
scp user@fromhost:/path/file user@tohost:/path/file
-r はサブフォルダも、ディレクトリごとコピー (recursive)
-p はファイルの更新日時を変更しない (preserve time stamp?)

当サーバのVMwareイメージをすべて別のサーバへ複製する

$ scp -r /var/lib/vmware/Virtual\ Machines/ user@192.168.1.1:/var/vmware/


コピー先サーバのディレクトリ名にスペースが入っている場合、ダブルコーテーションを付ければよい

$ scp -r /ext1/vmware/IE6-XPSP2/ user@192.168.1.1:"/var/vmware/Virtual\ Machines/"

2010年12月14日火曜日

xamppのhttpd.confのconfigtestテスト

xamppのhttpd.confのSyntaxテストはこのコマンド

C:\xampp\apache\bin>httpd -t

全角スペースなどは引っかかるので、注意しましょう。
ちなみに、linuxでよく使う httpd configtestはxamppのapacheバージョンだと使えない(?)

vertrigoservのhttpd.confのSyntaxテストはこのコマンド

I:\VertrigoServ\Apache\bin>v_apache.exe -t
Syntax OK

2010年12月13日月曜日

SELinuxをOFFにすると、httpdサービスがaccessableになる

新しい作ったCentOS仮想サーバ、Apache起動したのに、ブラウザーでアクセスしたら、頑張ってconnectingしているっぽい見えますが、最終的に表示できない。
調べたら、firewallが原因でした。

# system-config-securitylevel-tui -q --disabled --selinux='disabled'
setenforce: SELinux is disabled

これで問題なく表示された

2010年12月6日月曜日

httpd(apache)の実体の場所を調べる方法

apacheの実体の場所を知る方法:
[kagen@home kagen]$ ps ax | grep httpd
1 ... - S ? 3:53 /usr/local/apache2.0.59/bin/httpd -f ...
5 ... - S ? 241:22 /usr/local/apache2.0.59/bin/httpd -f ...
5 ... - S ? 247:33 /usr/local/apache2.0.59/bin/httpd -f ...
5 ... - S ? 0:07 /usr/local/apache2.0.59/bin/httpd -f ...
5 ... - S ? 0:04 /usr/local/apache2.0.59/bin/httpd -f ...
5 ... - S ? 0:16 /usr/local/apache2.0.59/bin/httpd -f ...
5 ... - S ? 0:33 /usr/local/apache2.0.59/bin/httpd -f ...
1 ... - S ? 0:07 /usr/local/apache2.0.59/bin/httpd -f ...
5 ... - S ? 0:00 /usr/local/apache2.0.59/bin/httpd -f ...
5 ... - S ? 0:00 /usr/local/apache2.0.59/bin/httpd -f ...
0 ... schedu S pts/0 0:00 vim httpd.conf
0 ... pipe_w S pts/2 0:00 grep httpd

yuhei.kagayaさん、ありがとうございました。

2010年12月3日金曜日

【随時更新】金融キーワード

シャープレシオ(Sharpe Ratio)
【数式】
シャープレシオ = 超過収益(過去の運用実績-無リスク資産の利回り)/ ポートフォリオのリスク(標準偏差)

【解説】
この値は大きいほどいいです。効率的な運用ができていると判断することができる。ただし、超過収益(リターン)がゾロ、またはマイナスの場合は意味なくなります。

画像使わないおしゃれなCSSボックス

画像使わないおしゃれなCSSボックス

ありがとうございます(~_~)

.kg_box {
background-color: #F6F6F6;
border: 1px solid white;
color: #777;
margin-bottom: 5px;
padding: 12px 15px;
position: relative;
text-shadow: white 1px 1px 0px;
}

.kg_shadow {
-webkit-box-shadow: #E5E5E5 1px 1px 0px;
}

.kg_round {
-webkit-background-clip: padding-box;
border-bottom-left-radius: 6px 6px;
border-bottom-right-radius: 6px 6px;
border-top-left-radius: 6px 6px;
border-top-right-radius: 6px 6px;
}

こんな感じで使う
ありがとうございます(~_~)

DOSでファイルを新規作成する方法

Linuxではtouchコマンドがありますが、DOSではファイルを新規作成するコマンドがないのと思った。
調べたらそれがあった。

C:\Documents and Settings\kagen-yu>copy con filename.bat

編集終わったら

Ctrl+z

でファイルが保存されます。

2010年12月2日木曜日

JSライブラリー「dp.SyntaxHighlighter」の対応する言語


ソースコードを表示できるJSライブラリー「dp.SyntaxHighlighter」
本サイトもお世話になっております

今現在、対応する言語は下記の表。
本家から参照しただけ
Language Aliases
C++ cpp, c, c++
C# c#, c-sharp, csharp
CSS css
Delphi delphi, pascal
Java java
Java Script js, jscript, javascript
PHP php
Python py, python
Ruby rb, ruby, rails, ror
Sql sql
VB vb, vb.net
XML/HTML xml, html, xhtml, xslt

xamppのhttpd.confにaliasを追加する

xamppをC:\xamppにインストールしました。
デフォルトのDocumentRootはc:\xampp\htdocs
しかし私のwebはすべてc:\wwwにありますから、confにaliasを追加しないといけない

C:\xampp\apache\conf\httpd.conf
このファイルの最後に下記を追加
  Include conf/extra/kagen.conf

C:\xampp\apache\conf\extra
このフォルダーにkagen.confを新規作成し、次の内容を書き込み
<ifmodule alias_module="">
  Alias /www "C:\www"
</ifmodule>

<directory "c:\www">
  Options All
  AllowOverride All
  Order Deny,Allow
</directory>
最後、apacheサービスをrestartすることを忘れずに

IE8ではimgタグのalt属性をツールチップで表示されない

IE8ではなぜかimgタグのalt属性をツールチップで表示されない、IE7はできるのに。
仕方なく、altの代わりにtitle属性を追加しましょう。

秀丸で一括置換しましょう。viewフォルダーの中で(サブフォルダーも含め)、すべてのファイルに対して、置換を掛けました(SubVersionを使っているので、.svnフォルダが邪魔するなら、一回exportしましょう、exportされたフォルダーに置換かけたら、元のフォルダーを上書きしましょう)

Rubyで生成するタグを含めて、すべて4パタンを置換しなければなりません:

パタン1:(Rubyで生成するタグ、ダブルコーテーション)
検索する文字列:
:alt => "([^¥"]+)",
置換する文字列:
:alt => "¥1", :title => "¥1",

パタン2:(Rubyで生成するタグ、シンクルコーテーション)
検索する文字列:
:alt => '([^¥']+)',
置換する文字列:
:alt => '¥1', :title => '¥1',

パタン3:(一般HTMLタグ、シンクルコーテーション)
検索する文字列:
alt='([^¥']+)'
置換する文字列:
alt='¥1' title='¥1'

パタン4:(一般HTMLタグ、ダブルコーテーション)
検索する文字列:
alt="([^¥"]+)"
置換する文字列:
alt="¥1" title="¥1"