<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="http://www.key-p.com/ohnishi/rss/style.css" type="text/css"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:content="http://purl.org/rss/1.0/modules/content/"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xml:lang="ja">
<channel rdf:about="http://www.key-p.com/ohnishi/rss/recent.php">
<title>えせSEの1日1Hack</title>
<link>http://www.key-p.com/ohnishi/index.php</link>
<dc:date>2008-08-03T14:29:26+0900</dc:date>
<description>
えせSEの1日1Hack - RSS (RDF Site Summary) Feed.
</description>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://www.key-p.com/ohnishi/article.php?id=132" />
<rdf:li rdf:resource="http://www.key-p.com/ohnishi/article.php?id=131" />
<rdf:li rdf:resource="http://www.key-p.com/ohnishi/article.php?id=130" />
<rdf:li rdf:resource="http://www.key-p.com/ohnishi/article.php?id=129" />
<rdf:li rdf:resource="http://www.key-p.com/ohnishi/article.php?id=128" />
<rdf:li rdf:resource="http://www.key-p.com/ohnishi/article.php?id=127" />
<rdf:li rdf:resource="http://www.key-p.com/ohnishi/article.php?id=126" />
</rdf:Seq>
</items>
</channel>
<item rdf:about="http://www.key-p.com/ohnishi/article.php?id=132">
<title>FirefoxのTextareaでCarbon Emacs</title>
<link>http://www.key-p.com/ohnishi/article.php?id=132</link>
<dc:date>2008-08-03T14:29:26+0900</dc:date>
<description>7月は、更新0
なんだか、1ヶ月1Hackも厳しい状況ですが。

ようやく、使えるようになったので、その報告です。
以前から、色々とやっていたのですが、WindowsでEmEditorを使うことは問題なかったのですが、どうしても普段使ってい...</description>
<content:encoded>
<![CDATA[
<p>7月は、更新0<br />
なんだか、1ヶ月1Hackも厳しい状況ですが。
</p>
<p>ようやく、使えるようになったので、その報告です。<br />
以前から、色々とやっていたのですが、WindowsでEmEditorを使うことは問題なかったのですが、どうしても普段使っているMacのCarbon Emacsで使えなかったので放置していたのですが、しばらくぶりにやってみると、簡単にできてしまったので、その報告です。</p>
<p>あまりの暑さに、日本語がおかしいですね。<br />
タイトルの通りではあるのですが、FirefoxでTextareaの入力の際に、Emacsを立ち上げて、それで入力を出来てしまう、便利な拡張機能<a href="https://addons.mozilla.org/ja/firefox/addon/4125">It's All Text! :: Firefox Add-ons</a>の紹介です。</p>
<p>なぜ、必要かと言えば、弊社では、<a href="http://www.key-p.com/pamps/">PAMPS</a>と言う自社のWebメーラーを全員使っているため、これで当然メールを書かないといけないのですが、かなり苦手なんですよね。一部は、Emacsキーバインドになってるけれども、やはり完全ではないので、編集などがしにくい。ただ、これで、かなり使い勝手の良いメーラーのできあがりです（笑）。</p>
<!--more-->
<p>ややこしいのは、Carbon EmacsのPATHの設定だけです。</p>
<p>上のリンクから、拡張をインストールすると、下記のような設定画面になります。</p>
<p>
<img src="http://www.key-p.com/ohnishi/resources/It_s All Text! 設定.jpg" />
</p>
<p>通常は、「参照」ボタンから選びたくなりますが、なんと、エディタ：四角で囲まれた部分は、入力も出来ちゃいます。ですので、以下のように、直接入力をします。</p>
<pre class="code">
/Applications/Emacs.app/Contents/MacOS/Emacs
</pre>
<p>決して、アプリケーションフォルダ直下のEmacs.appを指定しないように。</p>
<p>あとは、適当にショートカットキーなどを設定しておけばOK。私の場合は<kbd>Ctrl</kbd>+<kbd>r</kbd>にしているので、Textareaで<kbd>Ctrl</kbd>+<kbd>r</kbd>を押せば、勝手にEmacsが立ち上がり、編集後保存をして終了すれば、Textareaに自動的に反映されます。</p>
<p>これは、かなり便利です。</p>

]]>
</content:encoded>
</item>
<item rdf:about="http://www.key-p.com/ohnishi/article.php?id=131">
<title>Emacsでackをつかう</title>
<link>http://www.key-p.com/ohnishi/article.php?id=131</link>
<dc:date>2008-06-27T14:54:33+0900</dc:date>
<description>久しぶりの登場です(^^;
めっきりと、Emacsを使う機会が減ったので、忘れる前にがんばって、開発しようと奮闘中です。
以前は、Emacs上で、grepをするときは、以下のように、grep-findを定義していたりもしたのですが、Macで...</description>
<content:encoded>
<![CDATA[
<p>久しぶりの登場です(^^;</p>
<p>めっきりと、Emacsを使う機会が減ったので、忘れる前にがんばって、開発しようと奮闘中です。</p>
<p>以前は、Emacs上で、grepをするときは、以下のように、grep-findを定義していたりもしたのですが、Macで動かなかったりして、放置していました。</p>
<pre class="code">
(add-hook 'dired-load-hook
          '(lambda ()
             (load-library "ls-lisp")
             (setq ls-lisp-dirs-first t)
             (setq dired-listing-switches "-AFl")
             (setq find-ls-option '("-exec ls -AFGl {} \;" . "-AFGl"))
             (setq grep-find-command "find . -type f -print0 | xargs -0 -e grep -ns ")
             (require 'wdired)
             ))
</pre>
<p>ただ、最近は開発期間が空くことも多くなって、私の脳みそではどうも覚え切れてないことが多くなり、真剣にgrep-findを見直そうと思っていたのですが、よく考えると、.svnフォルダ以下を検索オプションで外したりしないといけないことを思い出し、それも<s>めんどくさい！</s>なって思って、そういえば、それらを除外して検索してくれる、<strong class="stronger">ack</strong>というコマンドをふと思い出したので、今回は、この<strong class="stronger">ack</strong>を使えるようにしました。</p>
<!-- more -->
<h2>ackのインストール</h2>
<p>macでは、MacPortsで提供されているので、portコマンドでインストールします。パッケージは<strong class="stronger">p5-app-ack</strong>です。</p>
<div class="command">
$ sudo port install p5-app-ack
</div>
<h2>emacsの設定</h2>
<p>先ほどの.emacsの設定を以下のように変更するだけです。</p>
<pre class="code">
(add-hook 'dired-load-hook
          '(lambda ()
             (load-library "ls-lisp")
             (setq ls-lisp-dirs-first t)
             (setq dired-listing-switches "-AFl")
             (setq find-ls-option '("-exec ls -AFGl {} \;" . "-AFGl"))
             <span style="color:red">(setq grep-find-command "ack --nocolor --nogroup ")</span>
             (require 'wdired)
             ))
</pre>
<p>これで、いままで通りのM-x grep-findで、文字列を入力できますので、そのまま入力してEnterを押せば、検索結果が出てきて、そのファイル名の上でEnterを押せば、ファイルを開いてくれるはずです。</p>

]]>
</content:encoded>
</item>
<item rdf:about="http://www.key-p.com/ohnishi/article.php?id=130">
<title>テスト</title>
<link>http://www.key-p.com/ohnishi/article.php?id=130</link>
<dc:date>2008-04-20T18:39:16+0900</dc:date>
<description>データベースを4.0系から、4.1系に変更したので、そのテストです。
...</description>
<content:encoded>
<![CDATA[
<p>データベースを4.0系から、4.1系に変更したので、そのテストです。</p>

]]>
</content:encoded>
</item>
<item rdf:about="http://www.key-p.com/ohnishi/article.php?id=129">
<title>Google App Engine SDKでHello World!</title>
<link>http://www.key-p.com/ohnishi/article.php?id=129</link>
<dc:date>2008-04-09T02:47:49+0900</dc:date>
<description>ついに、Google App Engineが発表されました。

Amazonが多少先行はしていたのですが、今HOTな分野だけに、こんな時間にもかかわらず、さわってみました。
とりあえず、ダウンロードページに行くと、Mac版も配布されていたの...</description>
<content:encoded>
<![CDATA[
<p>ついに、<a href="http://builder.japan.zdnet.com/news/story/0,3800079086,20370974,00.htm">Google App Engineが発表されました。</a>
<br />
Amazonが多少先行はしていたのですが、今HOTな分野だけに、こんな時間にもかかわらず、さわってみました。</p>
<p>とりあえず、<a href="http://code.google.com/appengine/downloads.html">ダウンロードページ</a>に行くと、Mac版も配布されていたので、ダウンロードして、インストールしてみました。
</p>
<p>
<a href="http://code.google.com/appengine/docs/gettingstarted/">ドキュメント</a>も、最初がHello Worldなので、とりあえず、作ってみることに。</p>
<p>「Mac(OS X 10.5)の場合は、Python2.5が入っているから、そのまま使える」みたいなことが書いてあったので、早速、ドキュメント通りにプログラミングです。
</p>
<p>と言っても、Pythonを全くわからないのですが、今回のはあまり、言語関係なのでとりあえず、やってみることに。</p>
<!--more-->
<p>自分のホームディレクトリの下に、helloworldというディレクトリを作って、その中に、
<ul>
<li>helloworld.py</li>
<li>app.yaml</li>
</ul>
と言うファイルを作成します。</p>
<p>
中身は、非常に簡単です。<br />
helloworld.py
<pre class="code">
print 'Content-Type: text/plain'
print ''
print 'Hello World!'
</pre>
app.yaml
<pre class="code">
application: helloworld
version: 1
runtime: python
api_version: 1
handlers:
- url: /.*
  script: helloworld.py
</pre>
この2つだけです。</p>
<p>後は、ホームディレクトリ上で以下のコマンドを実行すれば、Webサーバが立ち上がります。<br />
最初に、「今後、appサーバの更新チェックしても良い？」みたいなこと聞かれますので、yで答えておきます。</p>
<p>
<pre class="command">
$ /usr/local/google_appengine/dev_appserver.py helloworld
Allow dev_appserver to check for updates on startup? (Y/n): y
dev_appserver will check for updates on startup.  To change this setting, edit /Users/masateru/.appcfg_nag
INFO     2008-04-09 02:28:14,196 appcfg.py] Checking for updates to the SDK.
INFO     2008-04-09 02:28:14,914 appcfg.py] The SDK is up to date.
WARNING  2008-04-09 02:28:14,915 datastore_file_stub.py] Could not read datastore data from /var/folders/XU/XUdG1-gnHMSfGaWq96VIp++++TI/-Tmp-/dev_appserver.datastore
WARNING  2008-04-09 02:28:14,915 datastore_file_stub.py] Could not read datastore data from /var/folders/XU/XUdG1-gnHMSfGaWq96VIp++++TI/-Tmp-/dev_appserver.datastore.history
INFO     2008-04-09 02:28:14,918 dev_appserver_main.py] Running application helloworld on port 8080: http://localhost:8080
INFO     2008-04-09 02:28:20,438 dev_appserver.py] "GET / HTTP/1.1" 200 -
INFO     2008-04-09 02:28:20,441 dev_appserver_index.py] Updating /Users/masateru/work/helloworld/index.yaml
</pre>
</p>
<p>あとは、ブラウザで、<a href="http://localhost:8080">http://localhost:8080</a>へブラウザでアクセスをすれば、以下のように表示されるはずです。<br />
<img src="http://www.key-p.com/ohnishi/resources/GoogleAppEngine.png" alt="GoogleAppEngine.png"" />
<br />
時間が空いたときにでも、弄ろうかな？と思っています。<br />
たぶん、これが、Googleのサーバ上でも動くようになるんだよね？他の言語が出てくるという話なので、そちらも期待！</p>

]]>
</content:encoded>
</item>
<item rdf:about="http://www.key-p.com/ohnishi/article.php?id=128">
<title>MacでFirefox3β5を別にインストール</title>
<link>http://www.key-p.com/ohnishi/article.php?id=128</link>
<dc:date>2008-04-08T23:04:02+0900</dc:date>
<description>先日より、各所で話題になっている、Firefx3のベータ版を使いたくて、別環境にインストールしてみました。
そのままインストールされると、既存の2.0.0.13を上書きしてしまうことになり、使えなくなってしまうエクステンションがあったり、開...</description>
<content:encoded>
<![CDATA[
<p>先日より、各所で話題になっている、Firefx3のベータ版を使いたくて、別環境にインストールしてみました。</p>
<p>そのままインストールされると、既存の2.0.0.13を上書きしてしまうことになり、使えなくなってしまうエクステンションがあったり、開発に影響が出たりもするので、この環境とは、全く別で、Firefox2とFirefox3βを同時に立ち上げて、使えるようにしてしまおう、と言うのが今回の目的です。</p>
<p>非常に、簡単にできてしまうので、申し訳なさがいっぱいなのですが、一応環境的には、Mac OS X 10.5.2を使ってやりましたので、他のOSの方は、適時読み替える（調べる必要もあるかも）などして、お役立ていただければと思います。</p>
<p>
まずは、<a href="http://www.mozilla-japan.org/products/firefox/all-beta.html">ベータ版ダウンロード</a>から、ダウンロードします。<br />
すでに、日本語版も用意されていますので、日本語版をダウンロードして、開きます。</p>
<!--more-->
<p>
<img src="http://www.key-p.com/ohnishi/resources/Firefox.jpg" alt="install" />
<br />
開いたら、通常は、Applicationフォルダにコピーをしますが、ここはひとまず、デスクトップにでもコピーをして、名前を既存のFirefoxにかぶらないようにします。<br />
今回は、<strong>Firefox30b5</strong>としました。<br />
<img src="http://www.key-p.com/ohnishi/resources/Desktop.jpg" alt="Desktop" />
</p>
<p>
次に、名前を変更した、<strong>Firefox30b5</strong>をApplicationフォルダに移動させます。<br />
このまま、起動してしまうと、Firefox2のプロファイルを使われてしまうので、ターミナルより、以下のように入力します。
<pre class="command">
% /Applications/Firefox30b5.app/Contents/MacOS/firefox -ProfileManager
</pre>
こうすることで、起動時にプロファイルを選択できるようになりいます。
</p>
<p>
今回は、新規で、<strong>Firefox30b5</strong>と言うプロファイルを作成して、それで起動します。<br />
<img src="http://www.key-p.com/ohnishi/resources/Firefox - ユーザプロファイルの選択.jpg" alt="ProfileManager" />
<br />
<div style="color:red">08.04.09 2:10AM 追記</div>
[今後このプロファイルを使用する]のチェックは外しておかないと、このままFirefox2を終了して、再度立ち上げると、Firefox30b5のプロファイルを使用して立ち上がってしまうので、注意してください。
</p>
<p>これで、アプリケーションフォルダの<strong>Firefox30b5</strong>を起動すれば、Firefox2とは、別にFirefox3βが起動するはずです。</p>
<p>これから、弊社のサービスのテストをしてみます・・・</p>

]]>
</content:encoded>
</item>
<item rdf:about="http://www.key-p.com/ohnishi/article.php?id=127">
<title>zipにパスワード</title>
<link>http://www.key-p.com/ohnishi/article.php?id=127</link>
<dc:date>2008-04-08T17:02:11+0900</dc:date>
<description>なんだか、ずいぶんとあいてしまった。いつものことではあるが・・・
2月後半から、怒濤の忙しさ（年度末関係なし）で、ようやく、春を感じられるようになってきた、今日この頃ではあります。
時間がないので、Twitterでぼやくことはあっても、ゆっ...</description>
<content:encoded>
<![CDATA[
<p>なんだか、ずいぶんとあいてしまった。いつものことではあるが・・・</p>
<p>2月後半から、怒濤の忙しさ（年度末関係なし）で、ようやく、春を感じられるようになってきた、今日この頃ではあります。</p>
<p>時間がないので、Twitterでぼやくことはあっても、ゆっくりBlogを書く時間は、ありませんでした。</p>
<p>私も、指示しないので、Staff Blogも同様に閑古鳥が鳴いております。</p>
<p>今日は、先日、WebFileをお客さんへ提案に行く際に、ふと疑問に思った、「zipファイルをパスワード付き」にする方法です。</p>
<!--more-->
<p style="font-size:x-large;font-weight:800;color:red">そんなの気休め程度だ！</p>
<p>と言うことは、百も承知ですが、我々がお取引する、企業様の中には、ルールによって、zipのパスワード付きファイルを添付として送信してくださって、その後、もう一通のメールで、パスワードを終えてくださったりしています。</p>
<p>とうぜん、WebFileのパスワード付き送信は、ダウンロードページを開くためのパスワードなので、ファイル自信へのパスワードというのとは、少し要件が違いますので、社内ルールでそうなっている以上、それに対応する可能性もあるかもしれないので、調べてみたら、簡単にできた、と言う話です。</p>
<pre class="command">
zip -P パスワード -e pass.zip （まとめるファイル）
</pre>
<p>
こうするだけで、パスワード付きのZipファイルができます。</p>

]]>
</content:encoded>
</item>
<item rdf:about="http://www.key-p.com/ohnishi/article.php?id=126">
<title>今の作業で編集したファイルを探す</title>
<link>http://www.key-p.com/ohnishi/article.php?id=126</link>
<dc:date>2008-02-08T20:47:58+0900</dc:date>
<description>たまには、オプションも調べてみるもんです。
本日は、findの話。

今日触ったファイルを探す場合、今までは、

$ find . -mtime -1

みたいな感じで、今まで、やってました。要は、過去1日に変更されたファイルを探しているわ...</description>
<content:encoded>
<![CDATA[
<p>たまには、オプションも調べてみるもんです。</p>
<p>本日は、findの話。</p>
<p>
今日触ったファイルを探す場合、今までは、
<pre class="command">
$ find . -mtime -1
</pre>
みたいな感じで、今まで、やってました。要は、過去1日に変更されたファイルを探しているわけですが、ただ、これだとために、前日の夜中とかに触ってたファイルが出てきたりと、かなり、惑わされる場合もある。</p>
<p>そこで、本日見つけたオプション！<br/>
<span style="font-size:x-large;color: red">newer</span>の出番である。<br />
なんとこいつ、指定したファイルより後に編集されたファイルを探してくれるのだ。
</p>
<!--more-->
<p>つまり、作業で一番最初に触って保存したファイルさえ覚えていれば、それ以降のファイルが出てくるという、優れもののオプションである。<br />
使い方は簡単、オプションの後にそのファイルを指定すればいい。
<pre class="command">
$ find . -newer ./first.txt
</pre>
これで、first.txtが更新された以降に、更新したファイルが探せるわけだ！</p>
<p>作業開始した、だいたいの時間はわかるけど、最初に触ったファイルなんてわからないってこともあるだろうから、だいたいの時間のファイルを作ってしまうのも、一つの手段！
<pre class="command">
$ touch -t `date +y%m%d`1000 /tmp/newer.txt
$ find . -newer /tmp/newer.txt
</pre>
これで、今日の10時以降に変越さされたファイルが検索されます。</p>

]]>
</content:encoded>
</item>

</rdf:RDF>