Ubuntu ServerのユーザーディレクトリでPHPが使えるようにする。

Ubuntu 10.04.4 LTSだとphpとユーザディレクトリのモジュールを有効にしただけではユーザディレクトリにPHPスクリプトを置いても実行されずにスクリプトがダウンロードされてしまう。

以下の設定ファイルを編集し、apacheを再起動すると動いてくれる。

  • /etc/apache2/mods-available/php5.conf

編集前

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
  SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
  SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>
~                   

編集後

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
  SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
  SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    #<IfModule mod_userdir.c>
    #    <Directory /home/*/public_html>
    #        php_admin_value engine Off
    #    </Directory>
    #</IfModule>
</IfModule>

のブロックをコメントアウトする。
"php_admin_value engine Off"という命令によってユーザディレクトリでのPHPの実行が抑制されているようだが、"php_admin_value engine On"にしてもPHPスクリプトへのアクセス時にサーバーエラーになってしまい実行できない。ブロック全体をコメントアウトまたは削除する必要がある。(よく読むとこのファイルのコメントにそう書いてある。)

ActiveRecordの属性は"="を使わないとDBを更新できない

Ruby on Rails チュートリアル:実例を使って Rails を学ぼうをやっていて気づいたので書いた。rails 4.0.2です。

"="を使わずに更新してみる("sub!"を使ってみる→失敗)

#オブジェクトを作る
> user1 = User.create(name:"aaa",email:"aaa@example.com")
   (0.2ms)  SAVEPOINT active_record_1
  SQL (0.5ms)  INSERT INTO "users" ("created_at", "email", "name", "updated_at") VALUES (?, ?, ?, ?)  [["created_at", Tue, 06 May 2014 08:25:28 UTC +00:00], ["email", "aaa@example.com"], ["name", "aaa"], ["updated_at", Tue, 06 May 2014 08:25:28 UTC +00:00]]
   (0.2ms)  RELEASE SAVEPOINT active_record_1
 => #<User id: 4, name: "aaa", email: "aaa@example.com", created_at: "2014-05-06 08:25:28", updated_at: "2014-05-06 08:25:28"> 

#email属性をsub!を使って更新
 > user1.email.sub!(/a/,"b")
 => "baa@example.com" 

#保存(ログにSQLの実行履歴が表示されない)
 > user1.save
   (0.2ms)  SAVEPOINT active_record_1
   (0.2ms)  RELEASE SAVEPOINT active_record_1
 => true 

#DBは更新されていない
 > User.find(4)
  User Load (0.2ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 4]]
 => #<User id: 4, name: "aaa", email: "aaa@example.com", created_at: "2014-05-06 08:25:28", updated_at: "2014-05-06 08:25:28"> 

"="をつかって更新してみる(成功)

#DBデータをリロード
 > user1.reload
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 4]]
 => #<User id: 4, name: "aaa", email: "aaa@example.com", created_at: "2014-05-06 08:25:28", updated_at: "2014-05-06 08:25:28"> 

#email属性を"="を使って更新
 > user1.email="baa@example.com"
 => "baa@example.com" 

#保存(ログにSQLの実行履歴が表示される)
 > user1.save
   (0.2ms)  SAVEPOINT active_record_1
  SQL (0.6ms)  UPDATE "users" SET "email" = ?, "updated_at" = ? WHERE "users"."id" = 4  [["email", "baa@example.com"], ["updated_at", Tue, 06 May 2014 09:03:11 UTC +00:00]]
   (0.2ms)  RELEASE SAVEPOINT active_record_1
 => true 

#DBが更新されている
 > User.find(4)
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 4]]
 => #<User id: 4, name: "aaa", email: "baa@example.com", created_at: "2014-05-06 08:25:28", updated_at: "2014-05-06 09:03:11"> 

第8回セキュリティさくら

8/24に熊本が誇る勉強会「セキュリティさくら」の第8回に行ってきました!

今回は「フォレンジック」がテーマ。

結構いろんな手がかりが残っちゃうんだなあ。油断ならないなあというのが感想。あとフォレンジック母ちゃんが強烈だった。
他にもいろいろあったけどとりあえずメモ貼っとく。

2013/08/24 セキュリティさくら

不正アクセス調査におけるコンピュータフォレンジック
株式会社ラック 初田淳一さん

デジタルフォレンジックとは?
電磁的記録の証拠保全及び調査分析、改竄・毀損等についての分析・情報収集等

利用シーン
・法廷証拠など

記録を残す事が大事
HDDのID、データハッシュ値、写真、USBメモリ受け渡し記録

フォレンジック技術
・データ保全
 ディスクイメージの取得
 ファイル削除だけではダメ、削除された領域も含めディスク全体をビットコピー
 ライトブロッカー:ディスクへの書き込みをブロックするハードウェア

 FTK Imagerで削除されたファイルを復元。Windowsのみ?

 タイムライン調査
 Prefetch情報を見ると過去に実行されたファイルが分かる
 レジストリにも痕跡が残る
  Tool:Registry Viewerで見るとレジストリエントリの更新日時が見える
  実効履歴に関係するエントリだけ抜き出すツールもある(Regripper)
  log2timeline:いろいろなログファイルをタイムラインに入れて調査できる(buggy)
  Autospy
  スルースキット:タイムラインを作成する

 メモリフォレンジック:ディスクに痕跡を残さないマルウェアもある
     マルウェアは通常のコマンドで調べても見えないようになっていたりする!
     実メモリのダンプ(dumpitで取る)を解析する(volatilityを使用)

愛甲さん
  機械語普及のための努力
  かるた
  短歌
  テトリス
  美少女

前田さん(カスペルスキーソーシャルエンジニアリング
  騙されそうにないことでも結構騙される

竹内さん
  生存戦略
  SI系インフラエンジニア
  健康が大事.運動しましょう
  fibit one 運動量のログを取れる

中原さん Cagayake_Miracle
セキュリティキャンプについて→ ブログ見てくれ
今日は黒歴史について

まあざっと以上のような感じ。

Qemb

さくらの始まる前の午前中には組み込み勉強会の「Qemb」もありました。これもまた楽しかった。

自作したエレキウクレレ持ってったけど組み込みとはまったく関係なし!タダのウケ狙い。ウケなかったけど。
会は座談会形式で徒然なままにみんなが話したいことを適当に話す感じ。
例えば吉村くんのライントレースカーの原理を教えてもらったり。早く走らせるための工夫で、1周目だけセンサーでトレースして走り、あとは1周目で学習して覚えたデータに基づいて走らせるとか。
個人的には福岡から参加された金井さんときくちゃん先生とのサウンドバイスにOSを使うのは是か非か論争がとても面白かった。
あとAVRマイコンにSIMMメモリをハンダ付けしてLinuxを起動する、という動画をみて、「やべー、遅すぎる」とか言って盛り上がってた。吉村くんはこれを自作するつもりらしい。期待してる。
あと、わさおやみらくるくんとかは何かわちゃわちゃやってて、何をしているのか知らないが楽しそうな姿がとても良かった。

まとめ的な感想

さくらはいつ行っても楽しい。テーマがわかりやすい。勉強になる。運営が本当にしっかりしてるから。勉強会も懇親会も準備がしっかり行き届いているのがよくわかる。
本当にすごい勉強会です。

非モテP5erに贈る!イケメン言語 ruby-processing のご紹介

Processing Advent Calendar 2012 12月13日参加企画

はじめに

Processingユーザの皆さん、始めまして。橋本幸樹(@koki_h)と申します。
今日はProcessingユーザ向けにruby-processingをご紹介します。
ruby-processingはProcessingの機能をruby言語の文法をつかって記述できるようにした処理系で、Processingのかっこいいグラフィックをrubyのかっこいい構文で記述できるという究極のイケメン言語です。
今回はruby-processingのインストールから簡単なプログラム作成までを紹介したいと思います。*1

環境はWindows Vista Business SP2です。他のWindowsを使っている人は適当に読み替えてください。LinuxMacでも動くはずですが、rubyのインストールなどはそれぞれの環境に合わせて行ってください。

Processingのインストール

Processingのインストールは不要です。

rubyのインストール

rubyの処理系はいろいろあるのですが、今回は、Ruby-1.9.3-p327 Microsoft Installer Package(2012-11-10) を使います。
こちらのサイト↓からインストーラをダウンロードします。

ダウンロードしたら、インストーラを実行すればOKです。

ruby-processingのインストール

スタートメニューの すべてのプログラム > Ruby-1.9.3 > Ruby-1.9 console (Administrator)
をクリックしてコマンドプロンプトを開き、以下のコマンドを打ち込みます。

> gem install ruby-processing

エラーメッセージのようなものも出てきますが、気にせずに以下のコマンドを打ち込みましょう。

> rp5 -v

ここででてきた"rp5"というのがruby-processingの本体です。このコマンドを使ってruby-prosessingのプログラムを実行します。
"Ruby-Processing version 1.0.11"と出てきたら成功です。

必要な設定

早速サンプルスケッチでも動かしてみたいところですが、このままではエラーが出て動きません。
エラーを回避するための設定が必要です。
以下の内容のテキストファイルを作成し、ユーザディレクトリに*2 .rp5rc という名前で保存します。

sketchbook_path : C:\Users\koki\Processing

"C:\Users\koki\Processing"の部分は各自の好きなディレクトリのパスでOKです。
これでサンプルを動かす準備ができました。

サンプルを動かす

ruby-processingはruby consoleから実行します。
スタートメニューの すべてのプログラム > Ruby-1.9.3 > Ruby-1.9 console
で、出てきます。*3
ruby consoleを開いたらサンプルを展開するディレクトリに移動します。適当なディレクトリでOKです。

> cd C:\Users\koki\rp5

つぎにサンプルを展開します。

> rp5 unpack samples

現在のディレクトリにsamplesというディレクトリが作成されます。この中にruby-processingのサンプルが入っています。
サンプルの実行は以下のようにします。

> rp5 run samples\contributed\jwishy.rb

なんかProcessingっぽいのが出てきましたね。成功です。

スケッチの作成

ではスケッチを作っていきましょう。
まず雛形を作ります。

> rp5 create --bare first 200 200

これで現在のディレクトリにfirst.rbという名前のファイルができます。
中身はこんな感じ。

def setup
    size 200, 200
end

def draw
  
end

これだけでもprocessingとそっくりなのがわかると思います(当たり前か)。この雛形をエディタで次のように編集します*4

load_libraries :opengl
def setup
    size 200, 200, OPENGL  
    $rotation_rate = 0.02
end

def draw
    background 50, 50, 50
    translate 100, 100, 0; 
    rotateX frameCount * $rotation_rate;
    rotateY frameCount * $rotation_rate;
    rotateZ frameCount * $rotation_rate;
    box 100
end

そして次のように実行します。

> rp5 run first.rb

すると、

こんな感じの立方体が回転する画が出てきます。

ちなみに、同じのをProcessingでやると以下のようになります。

import processing.opengl.*;
  
public float rotation_rate = 0.02;
void setup(){
  size(200,200,OPENGL);
}

void draw(){
  background(50,50,50);
  translate(100,100,0);
  rotateX(frameCount * rotation_rate);
  rotateY(frameCount * rotation_rate);
  rotateZ(frameCount * rotation_rate);
  box(100);
}

ruby-processingだとカッコが省略できたり、セミコロンがいらなかったり、変数の型指定がいらなかったり、すっきりしていてなかなかステキなんじゃじゃないでしょうか。この辺がRubyのイケメンっぷりですね。他にもオープンクラスだとかlambdaだとかrubyの面白い機能を使ってスケッチを作ることができます*5

その他便利な機能

> rp5 watch first.rb

とやるとfirst.rbを編集して保存した瞬間にプログラムが再起動して変更内容が実行結果に反映されます。
普通のProcessingだとCtrl+rを押したときみたいな動きですね。

> rp5 live first.rb

こうするとスケッチがインタラクティブモードで起動します。
実行中のスケッチをコマンドプロンプトから動的に変更できます。
かなり面白いのですが、ちょっと癖があって使いにくいかもしれません。

終わりに

インストールのやり方と簡単なプログラムの作成をご紹介しましたがいかがだったでしょうか?
インストールやコマンドプロンプトを使うところが若干面倒で、ドキュメントが少なかったりここ1年くらいメンテされていなかったり、あまりいけてない面もありますが、rubyならではのプログラムがサクサク書ける感覚は他ではあまり味わえないと思います*6。普通のProcessingと一味違った楽しみ方ができると思います。ぜひ一度チャレンジしてみてください!

リンク

*1:途中まで書いてよく見たら、ruby-processingのGetting Startedとほとんど同じ内容ですね。https://github.com/jashkenas/ruby-processing/wiki/getting-started

*2:ユーザディレクトリのパスはコマンドプロンプトで、echo %USERPROFILE% と打ち込むと出てきます。

*3:ruby-processingのインストールのところでも似たようなのが出てきましたね。あっちはコマンドを管理者権限で実行するためのものです。

*4:ちなみにProcessingのようなIDEはありません。好みのエディタを使ってください

*5:詳しくはrubyの本などを参照してください。本当に面白いです。

*6:この記事の内容ではわかりづらいかもしれませんが。。

バラ曲線への訪問数

ちょっと気になってサーバのアクセスログgrepやらcutやらuniqやらを使って手動で解析。

日付       訪問数
==================
11/Dec    232
12/Dec    105
13/Dec     18
14/Dec      8
15/Dec      9
16/Dec      4
17/Dec      3
20/Dec      2
22/Dec      2
24/Dec      2
28/Dec      2
29/Dec      1
01/Jan     36  <--- vallogで紹介
02/Jan     32 
03/Jan     14 
04/Jan     61   <--- 再度vallogで紹介
05/Jan      4 
(2012/01/05 0:40ごろ現在)

vallog偉い!




バラ曲線を書いてみた - 橋本幸樹の無愛想な日記

バラ曲線を書いてみた

http://25.media.tumblr.com/tumblr_lx7ebg2zpY1qz6qbho1_400.png
http://serversman.gohannnotomo.org/toys/rose_curve/rose.html
先月のネタだけど、埋もれさせるのはもったいない気がするのでブログにPOST。
詳細はリンク先参照ということで。


追記(2012/01/05):
上の画像の曲線はこちらで見ることができます(DRAWボタンを押してください) → http://serversman.gohannnotomo.org/toys/rose_curve/rose.html#5677
それにしてもバラ曲線が変化する様子は面白いなあ。