Hatena::ブログ(Diary)

IT職人になりたくて このページをアンテナに追加

2009-04-26

突然ですが女性エンジニアに恋しました

23:20 | 突然ですが女性エンジニアに恋しましたを含むブックマーク 突然ですが女性エンジニアに恋しましたのブックマークコメント

えー。

すごい突然ですが女性エンジニアSE)に恋しました。


そこで、友人に相談したところエンジニアならではのくどき

文句があるのでは?

とアドバイスを受けたので今日から色々考えてみたいと思います。



君のパーミッションを○○にしてくれないか?

700でしょうかねぇ。でもオーナーってのもおこがましい。。。



あなたにpingうちます!!

応答帰ってきてほしい!!

3WAYハンドシェイクとか・・・

ブロードキャスト・・・絶対あかんな



君のこころのファイアーウォールを開けてくれ

あなたならいつでもトラストよっ。

ポート開けて欲しい!


僕のポインタはいつも君をみているよ

なんかやらしい。。。


うーむ、ネットワーク系になりがち。


なかなかいいのが思い浮かびませんねー


今こそ集合知ってことで皆さんの心暖かくもスパイスの利いた

アドバイスお待ちしております。

2009-02-04

ち○毛が原因でサーバに障害ランプ

01:03 | ち○毛が原因でサーバに障害ランプを含むブックマーク ち○毛が原因でサーバに障害ランプのブックマークコメント

とあるサーバにメモリを増設して起動したところ・・・


障害ランプが点滅、ハードウェアの障害チェック用のCDで確認しても

原因は特定できず。。。


うーん、こりゃサポート行きかなぁと思っていたら・・・


ん?


んん???


よく見るとファンの近くになんか挟まってる、なんか挟まってるよ!!


これ、このちりちりは・・・ち○毛じゃないか!ち○毛だよ!!


まさかなと思いながらおそるおそる除去してサーバ再起動してみる。



・・・



・・・


正常に起動しちゃったよ!!


まさに事件は現場で起きてる・・・


うーん教科書には載ってないことがいっぱいあるもんだ。

これも経験、経験!?


それにしてもなぜこんなところに、、、ラックに入ってたよねぇ。

ち○毛はたまに家では生きてるんじゃないか?ってところにいますがこんなことってあるんですね。。。

皆さんもハードウェア障害で困ったときはち○毛が挟まっていないか確認することをおすすめします(笑

2008-08-06

google app engine使ってみた

| 23:52 | google app engine使ってみたを含むブックマーク google app engine使ってみたのブックマークコメント

今更ながらpython勉強用にgoogle app engineを使ってみた

■sdkをダウンロードしてインストール

http://code.google.com/appengine/downloads.html

アプリケーションフォルダを作成し、アプリケーションを作成

$ mkdir katana-test
$ cd katana-test
$ vi test.py

適当にアプリケーションを作成する。

作成方法はリファレンスなどを確認してください(汗)

■設定ファイルを作成

$ vi app.yaml

application: katana-test

version: 1

runtime: python

api_version: 1

handlers:
  url: /.*
  script: test.py

■テストサーバ起動(localhost:8080でアクセスできるようになる)

$ dev_appserver.py katana-test

■公開

$ appcfg.py update katana-test/

※事前にhttp://appengine.google.com/アプリケーションを 登録しておく必要があります。

(今回の場合はkatana-test)


http://katana-test.appspot.com/

アクセスすると確認できました。

2008-07-29 pythonでpostgres動かす

pythonでpostgres動かす

| 23:37 | pythonでpostgres動かすを含むブックマーク pythonでpostgres動かすのブックマークコメント

macpythonからpostgrs動かそうとしてハマった罠

psycopg使ってpostgresに接続

 $ wget http://initd.org/pub/software/psycopg/psycopg2-2.0.6.tar.gz 
 $ tar xzvf psycopg2-2.0.6.tar.gz 
 $ cd psycopg2-2.0.6
 $ python setup.py build

なんかエラーがでる・・

というわけでpostgresの設定ファイルを指定

 $ vi setup.cfg

#Macports使用したので/opt配下にあります。

pg_config=/opt/local/lib/postgresql83/bin/pg_config

■リベンジでインストール

 $ python setup.py insall

■確認

 $ python
>>>import pyscopg2

無事動きました!!

2008-07-23 全く参考にならないPHPフレームワークその1

全く参考にならないのでマネしないでねフレームワーク

| 23:48 | 全く参考にならないのでマネしないでねフレームワークを含むブックマーク 全く参考にならないのでマネしないでねフレームワークのブックマークコメント

MVCもいまいち理解していない初心者の全く参考にならないフレームワークのログ

とりあえずコントローラー編

http://example/actionName/methodName/ みたいな感じで特定のアクションクラスの

methodを実行させたい


■library/ashigar/controller/mother.php



require_once 'ashigar/controller/request/http.php';

/**
 * コントローラーの親クラス
 *
 */
class ashigar_controller_mother
{

    /**
     * アクションファイル名
     */
    private $_actionFile = null;
    
    /**
     * http インスタンス
     */
    private $_httpIsnstance = null;
    
    /**
     * コンストラクタ
     *
     */
    public function __construct()
    {
        $this->_httpIsnstance = new ashigar_controller_request_http();
    }

    /**
     * モジュールアクションを実行
     * 
     */
    public function run()
    {
        // URLから実行するモジュールとアクション名をセットする
        $this->_dispatch();
        // 該当のモジュールを実行する
        $this->_moduleExec();
    }
    
    /**
     * dispatchでURLマッピングを行う
     *
     */
    protected function _dispatch()
    {
        // モジュールとアクションをUrlマッピングする
        $this->_setMappingUrl();
    }
    
    /**
     * URLマッピングを行う
     */
    private function _setMappingUrl()
    {
        $moduleDir = $this->_httpIsnstance->getBaseDir() . DIRECTORY_SEPARATOR .
        				'modules' . DIRECTORY_SEPARATOR . $this->_httpIsnstance->getModuleName();
        $this->_actionFile = $moduleDir . DIRECTORY_SEPARATOR . 'action.php';
    }
    
    /**
     * モジュールを実行
     *
     */
    private function _moduleExec($actionFile = null)
    {
        if($actionFile === null) {
            $actionFile = $this->_actionFile;
        }
        
        try {
            // ファイルの存在チェック
            if(!file_exists($actionFile)) {
                echo 'no action file';
                return null;
            }
            
            // 各モジュールのactionファイルを読み込み
            require_once $actionFile;
            $class = $this->_httpIsnstance->getModuleName() . 'Action';
            $method = $this->_httpIsnstance->getActionName() . 'Action';

            // クラスとメソッドの存在チェック
            if(!class_exists($class)) {
                echo 'no class name';
                return null;
            } else if(!method_exists(new $class(), $method)) {
                $method = 'indexAction';
            }
            
            // モジュールを実行
            call_user_func(array($class, $method));
        
        } catch(Exception $e) {
            throw $e;
        }
    }
}

■リクエスト系を操作するクラス library/ashigar/controller/request/http.php



/**
 * リクエスト操作クラス
 *
 */
class ashigar_controller_request_http
{
    /**
     * baaseディレクトリをセット
     */
    public $_baseDir = null;
    
    /**
     * モジュールネーム
     *
     * @var String
     */
    public $_moduleName = null;
    
    /**
     * アクション名を保村
     * 
     * @var Sgring
     */
    public $_actionName = null;
    
    /**
     * Uirを保存
     *
     * @var string
     */
    public $_requestUri = null;
    
    /**
     * アクションファイル名
     */
    public $_actionFile = null;
    
    /**
     * コンストラクタ
     *
     */
    public function __construct()
    {
        $this->_init();
    }
    
    private function _init()
    {
        $this->_parseUrl();
        $this->_setBaseDir();
    }
    
    /**
     * URLを分解する
     */
    private function _parseUrl()
    {
       $requestUri = $this->getRequestUri();
       $arrSeg = explode('/', trim($requestUri, '/'));
       $this->setModuleName($arrSeg[0]);
       $this->setActionName($arrSeg[1]);
    }
    
    /**
     * _requestUri をセットする
     *
     * @param string $_requestUri
     */
    public function setRequestUri($_requestUri = null)
    {
       if ($_requestUri === null) {
          if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { // check this first so IIS will catch
             $_requestUri = $_SERVER['HTTP_X_REWRITE_URL'];
          } elseif (isset($_SERVER['REQUEST_URI'])) {
             $_requestUri = $_SERVER['REQUEST_URI'];
          } elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0, PHP as CGI
             $_requestUri = $_SERVER['ORIG_PATH_INFO'];
             if (!empty($_SERVER['QUERY_STRING'])) {
                $_requestUri .= '?' . $_SERVER['QUERY_STRING'];
             }
          }
       }
       $this->_requestUri = $_requestUri;
    }

    /**
     * _requestUri を得る
     *
     * @return string
     */
    public function getRequestUri()
    {
       if (empty($this->__requestUri)) {
          $this->setRequestUri();
       }

       return $this->_requestUri;
    }
            
    /**
     * モジュール名をセット
     */
    public function setModuleName($moduleName)
    {
        $this->_moduleName = $moduleName;
    }

    /**
    * module name
    *
    * @return strig
    */
    public function getModuleName()
    {
       return $this->_moduleName;
    }
    
    /**
    * アクション名を取得
    *
    * @return string
    */
    public function getActionName()
    {
       return $this->_actionName;
    }

    /**
    * アクション名を取得
    *
    * @return string
    */
    public function setActionName($actionName)
    {
       return $this->_actionName = $actionName;
    }
    
    /**
     * baseディレクトリの設定
     *
     */
    private function _setBaseDir()
    {
        $this->_baseDir = dirname($_SERVER['SCRIPT_FILENAME']);
    }
    
    /**
     * baseディレクトリを取得
     */
    public function getBaseDir()
    {
        if($this->_baseDir === null)
        {
            $this->_setBaseDir();
        }
        
        return $this->_baseDir;
    }
}

■テストモジュール modules/example/action.php


class exampleAction
{

	/**
	 * Indexアクション
	 */
	function indexAction()
	{
	    echo 'example modules!!';
	}
}

rootディレクトリにindex.phpを設置 mod_rewriteでこのindex.phpを絶対に実行する


/**
 * TODO:本来ならphp.ini に設定すべきだがテストのため記述
 */
$baseDir = dirname(__FILE__);
ini_set('include_path','.:' . $baseDir . DIRECTORY_SEPARATOR . 'library');

require_once 'ashigar/controller/mother.php';

$objMother = new ashigar_controller_mother();
$objMother->run();

■実行

http://example.com/example/index/

とりあえず表示されました。