2014年8月26日

便利ツール:Everything紹介

 ローカルディスク(NTFS)のファイルを超超高速に検索するツールです。
ダウンロードはこちら→http://www.voidtools.com/downloads/

 秀逸なのは、インクリメンタルサーチや、ファイルやフォルダ名に正規表現を使っての検索ができることです。
例えば、正規表現では、検索エリアに「2014[0-9]{2}01」と入力すると20140201や、20140801等、パターンマッチしたフォルダやファイルが超高速で一覧表示されます。

 初めて起動した時は、インデックスを作るので、ちょっと時間がかかりますが、インデックスができた後は、素晴らしく高速です。

 よく、ファイルを作るけど、直ぐどこに置いたか忘れてしまうような方にはうってつけではないでしょうか?

 ちなみに、ETPサーバという機能を使うと、複数のコンピュータでネットワーク上のPCにあるファイルの検索もできるようです(まだ、試していませんが)。
 ファイルサーバーにWindowsServerを使用している方は、便利ではないでしょうかね?遅いプロトコルでファイル検索をしなくても良くなるので。


2014年8月19日

CakePHPで設定を簡単に切り替える方法の提案

 システム開発をしている時に開発環境やテスト環境によってデータベースの接続先やログイン名が違うのが普通です。

 環境毎の設定ファイルを持つことで対応することも可能ですが、現在の実行環境の設定を変えることで簡単に設定を変更することができるようになったらいいと思いませんか?
 さらには、同じ設定は書かずに継承して使いたいですよね。

CakePHPで持っているConfigには、database.php、email.phpがあります。
database.phpを例に説明します。

以下のようにdevelop(開発環境)、test(テスト環境)、staging(ステージング環境)、production(本番環境)などのように、複数の設定を書いておきます。
各設定は、$defalutと違う部分のみ設定を入れておきます。
例では、開発環境のデータベースの接続先が違うので'host'の設定を入れてあります。

どこで設定をコントロールするかというと、Configureで設定された「environment」を読み込むことでDBの接続先を切り替えます。
enrivonmentは、bootostrap.phpの先頭(わかりやすいとこ)に書くことでそこだけ変更すれば、実行環境の設定を簡単に切り替えることができます。
実行環境がたくさんある場合は、設定を追加して__constructメソッド内で追加した設定を追加することで対応できると思います。

bootstrap.phpファイルの書き方の例
/**
* 
* Choose environment
* 
* production : 本番環境
* staging    : 準本番環境
* test       : テスト環境
* develop    : 開発環境
* 
*/
Configure::write('environment', 'develop');

database.phpの書き方の例
class DATABASE_CONFIG {
 // デフォルト設定
 public $default = array(
  'datasource' => 'Database/Mysql',
  'persistent' => false,
  'host' => 'db-server',
  'login' => 'DBのログイン名',
  'password' => 'DBのログインのパスワード',
  'database' => 'データベース名',
  'prefix' => '',
  'encoding' => 'utf8',
 );

 // 本番環境
 public $production = array(
 );

 // ステージング環境
 public $staging = array(
 );

 // テスト環境
 public $test = array(
 );

 // 開発環境
 public $develop = array(
  'host' => 'localhost',
 );

 public function __construct() {

  $environment = Configure::read("environment");

  $this->develop = $this->develop + $this->default;
  $this->test = $this->test + $this->default;
  $this->staging = $this->staging + $this->default;
  $this->production = $this->production + $this->default;

  if(!empty($this->{$environment})) {
   $this->default = $this->{$environment};
  }

 }
}

これで、違う環境で動かして、動かねーとか言ってんじゃねーよとかいって叱られなくて住みますよね。

2014年8月18日

iptablesにハマるの巻(MySQLにつながらない…)

 MySQLを使う必要があって、CentOS6.5にソースからインストールして見ました。
(なぜソースからというと新しいのが使いたかったからなんです。練習にもなるし)

 インストールが終わって(これも一時問題がありましが…)、ローカルホストからの接続は確認できたので、別のPCから接続を試みたとろこ繋がらない…。
 ちゃんと、CentOS側では、3306のポートは開けています。でも、繋がらない。

何がまずいのかわかりませんが、iptablesの設定の順番を変更することで解決しました。


filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [34:5744]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 3306 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [34:5744]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

なにが違うかというとハイライトしている行の設定を書く位置を変更しました。

なるほど、-A INPUT -j REJECT --reject-with icmp-host-prohibitedの後ろに書いたのは、全てREJECTされるらしいです。
なので、REJECTの行を後ろに移動したら動いたんですね。うん、うん。

教えて!gooに同じことで悩んでる人がいました。
http://oshiete.goo.ne.jp/qa/7530019.html


ほんとにこの書き方でいいのか、何が問題かはこれから調べて自分の知識にしていく必要がありんす。
もう少し真面目に本とか呼んで意味で覚えないとダメだなこれは。

2014年8月15日

タスクタイムカード(androidアプリ)を機能強化しました

 日頃やっている作業毎の時間を記録するためのアプリです。
久しぶりに機能強化したので紹介してみました。

 せっかく記録したタスクの情報をファイル化してメール送信などして取り出すことができるようにしました。


使い方は、予めアプリにタスクを登録しておき、そのタスク(作業)を開始したら、そのボタンを押すだけです。
新しいタスクが開始されると直前にやっていたタスク時間の記録は止ります。


 人間はマルチタスクで作業をしているようですが、結局は同時にできることは、一つなのでシングルタスクなんです。
 なので、なにか別の作業を始めたら前のタスクは終了です。

ダウンロードはこちら↓↓
https://play.google.com/store/apps/details?id=jp.bsfactory.android.tasktime


さぁ、このアプリを使って、自分の日頃の時間配分を測ってみよー。

はっ、ダウンロードできるまで時間がかかるから告知はまだしないほうが良かった…。
ちなみに、最新バージョンは、1.10です。

2014年8月9日

Amazon Web Servicesつかてみた

 お客様のWebサービスを自分のVPSサーバーで運用していたのですが、専用サーバーを準備してそこに移行しましょうという話になっていたので、1年間は無料で使えるサーバとしてawsにその環境を作ってみました。

 OSのインストール(awsは、OSインストールはワンタッチでできる。感覚としては、OSの入ったディスクを持ってくる感じ)から環境を作ることができる人であれば特に問題なくできるだろうということがわかりました。
 自分も、人に教えるほど知識を頭のなかに保持しているわけではないですが、ちょっと調べながらでもできる人だったら挑戦しても良いのではないかと思います。

 完全にGoogle先生だけに頼ったわけではなく本も見てますよ。下に紹介しておきました。
具体的に何をやったかはあとで纏めて見ます。

やはり、1年間無料(最小スペックでも)でサーバーを使えるというのはいいですよね。

ここもとても良いと思います。
Amazon Web Services入門 (http://dotinstall.com/lessons/basic_aws)