Hatena::ブログ(Diary)

橋本幸樹の無愛想な日記

2014-10-17

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>

<IfModule mod_userdir.c>のブロックコメントアウトする。

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

2014-05-06

[]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"> 

2013-08-26

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

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

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

結構いろんな手がかりが残っちゃうんだなあ。油断ならないなあというのが感想。あとフォレンジック母ちゃんが強烈だった。

他にもいろいろあったけどとりあえずメモ貼っとく。

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

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

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

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

記録を残す事が大事
HDDIDデータハッシュ値写真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を起動する、という動画をみて、「やべー、遅すぎる」とか言って盛り上がってた。吉村くんはこれを自作するつもりらしい。期待してる。

あと、わさおやみらくるくんとかは何かわちゃわちゃやってて、何をしているのか知らないが楽しそうな姿がとても良かった。

まとめ的な感想

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

本当にすごい勉強会です。

2012-12-13

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

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

はじめに

Processingユーザの皆さん、始めまして。橋本幸樹(@koki_h)と申します

今日Processingユーザ向けにruby-processingをご紹介します

ruby-processingProcessing機能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-processingruby 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っぽいのが出てきましたね。成功です。

f:id:koki-h:20121208130510j:image

スケッチ作成

ではスケッチを作っていきましょう。

まず雛形を作ります

> 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

すると、

f:id:koki-h:20121209165800j:image

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

ちなみに、同じのを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% と打ち込むと出てきます

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

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

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

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

2012-01-04

[][]バラ曲線への訪問数

ちょっと気になってサーバアクセスログ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偉い!




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