gotin blog Whatever gotin wanna write 2020-09-25T00:58:02+09:00 gotin Hatena::Blog hatenablog://blog/12704346814673854339 テスト hatenablog://entry/26006613632095243 2020-09-25T00:58:02+09:00 2020-09-25T00:58:53+09:00 ん?どうなるんだ? あぁこういうことか。 <p>ん?どうなるんだ? <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/g/gotin/20200925/20200925005720.jpg" alt="TNT UGON " /></p> <p>あぁこういうことか。</p> gotin テスト。 hatenablog://entry/12704830469096379771 2012-12-14T01:53:36+09:00 2012-12-14T01:52:52+09:00 雪だるま作ってみた。 花並べてみた。 <p><span itemscope itemtype="http://schema.org/Photograph"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/g/gotin/20121212/20121212025514.jpg" alt="f:id:gotin:20121212025514j:plain" title="f:id:gotin:20121212025514j:plain" class="hatena-fotolife" itemprop="image"></span></p> <p><span itemscope itemtype="http://schema.org/Photograph"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/g/gotin/20121212/20121212025624.jpg" alt="f:id:gotin:20121212025624j:plain" title="f:id:gotin:20121212025624j:plain" class="hatena-fotolife" itemprop="image"></span></p> <p>雪だるま作ってみた。</p> <p>花並べてみた。</p> gotin node.jsでwsでWebSocketしてるサーバとiOSアプリをつなぐものを作っているんだけど、node.jsのホスティングサービスでこれらをうまくつなげられる環境が今のところみつからない hatenablog://entry/12704591929888129571 2012-07-30T00:15:50+09:00 2012-07-30T00:15:50+09:00 今まで試したもの ホスティングサービス heroku dotcloud node.jsのWebSocketライブラリ socket.io ws iOS用のWebSocketライブラリ SocketRocket 他にも試した気がしたけど忘れしまった。。(なのでこれはこれ以上忘れないためのメモ) いろいろ試してローカルでは動くんだけど、ホスティングサービスの上ではインストールできなかったり動かなかったりした。PaaS系はやっぱり好きな環境にしきれなくて歯がゆい。EC2使っとけばいいかな。 そういえばGreasemonkeyだとドメイン関係なくwebsocketできるのかな? <p>今まで試したもの</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DB%A5%B9%A5%C6%A5%A3%A5%F3%A5%B0">ホスティング</a>サービス</p> <ul> <li>heroku</li> <li>dotcloud</li> </ul> <p>node.jsのWebSocketライブラリ</p> <ul> <li>socket.io</li> <li>ws</li> </ul> <p>iOS用のWebSocketライブラリ</p> <ul> <li>SocketRocket</li> </ul> <p>&nbsp;</p> <p>他にも試した気がしたけど忘れしまった。。(なのでこれはこれ以上忘れないためのメモ)</p> <p>いろいろ試してローカルでは動くんだけど、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DB%A5%B9%A5%C6%A5%A3%A5%F3%A5%B0">ホスティング</a>サービスの上ではインストールできなかったり動かなかったりした。PaaS系はやっぱり好きな環境にしきれなくて歯がゆい。EC2使っとけばいいかな。</p> <p>&nbsp;</p> <p>そういえば<a class="keyword" href="http://d.hatena.ne.jp/keyword/Greasemonkey">Greasemonkey</a>だとドメイン関係なくwebsocketできるのかな?<br />&nbsp;</p> gotin nvmでnode v0.6.6をインストール hatenablog://entry/12704591929884283821 2011-12-19T17:37:26+09:00 2011-12-19T17:37:26+09:00 % nvm install v0.6.6 でMac Book Air / Lion にインストールを試みた。 何度もlibv8のインストール(?)のあたりでつまづいた。 いろいろ調べたら、bashじゃないとダメよ的なことだったようで、 bashに切り替えて再度インストールしてみたらあっけなく成功した。追求する気はないけど、なんで今時実行時のsh環境に左右されるようなインストール環境になっちゃってるんだろう? <pre class="code lang-sh" data-lang="sh" data-unlink>% nvm <span class="synStatement">install</span> v0.<span class="synConstant">6</span>.<span class="synConstant">6</span> </pre><p>でMac Book Air / Lion にインストールを試みた。<br /> 何度もlibv8のインストール(?)のあたりでつまづいた。<br /> いろいろ調べたら、<a class="keyword" href="http://d.hatena.ne.jp/keyword/bash">bash</a>じゃないとダメよ的なことだったようで、<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/bash">bash</a>に切り替えて再度インストールしてみたらあっけなく成功した。</p><p>追求する気はないけど、なんで今時実行時のsh環境に左右されるようなインストール環境になっちゃってるんだろう?</p> gotin Hatena Blog使ってみたいです hatenablog://entry/12704591929884283822 2011-11-08T13:50:47+09:00 2011-11-08T13:50:47+09:00 しばらくほったらかしになってましたが、気付けば新しくHatena BlogがBetaスタートしたんですね。どなたか招待してもらえると嬉しいです。 <p>しばらくほったらかしになってましたが、気付けば新しくHatena BlogがBetaスタートしたんですね。どなたか招待してもらえると嬉しいです。</p> gotin express-on-railwayをほんの少しだけ試した hatenablog://entry/12704591929884283825 2011-04-16T18:34:45+09:00 2011-04-16T18:34:45+09:00 node.jsをいじりはじめないといけないなと思い、ようやく触り始めた。いろいろフレームワークも作られてるようでとりあえずひとつ、express-on-railwayをいじってみた。フレームワークの上にフレームワークを作ってるみたいだけども。https://github.com/1602/express-on-railway とりあえず動かすには mongodb node.js npm をインストールして、 npmで express mongodb connect-mongodb mongoose をインストール。 で、 $ git clone git://github.com/1602/ex… <p>node.jsをいじりはじめないといけないなと思い、ようやく触り始めた。いろいろ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>も作られてるようでとりあえずひとつ、express-on-railwayをいじってみた。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>の上に<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>を作ってるみたいだけども。</p><p><a href="https://github.com/1602/express-on-railway">https://github.com/1602/express-on-railway</a></p> <div class="section"> <h4>とりあえず動かすには</h4> <ul> <li>mongodb</li> <li>node.js</li> <li>npm</li> </ul><p>をインストールして、<br /> npmで</p> <ul> <li>express</li> <li>mongodb</li> <li>connect-mongodb</li> <li>mongoose</li> </ul><p>をインストール。<br /> で、</p> <pre class="code lang-sh" data-lang="sh" data-unlink>$ git clone git://github.com/<span class="synConstant">1602</span>/express-on-railway.git $ <span class="synStatement">cd</span> express-on-railway $ npm <span class="synStatement">install</span> </pre> </div> <div class="section"> <h4>アプリケーションをつくる</h4> <pre class="code lang-sh" data-lang="sh" data-unlink>% railway init sample </pre> </div> <div class="section"> <h4>express2.2.2で動くように修正</h4> <p>現時点で僕の環境ではexpress2.2.2がインストールされていたのだけど、express-on-railwayで想定しているexpressのバージョンは1.0.0のようで、2.2.2だとうまく動かなかった。server.jsのapp.configureのあたりを少し修正するとうごいた。</p> <pre class="code lang-javascript" data-lang="javascript" data-unlink>app.configure(<span class="synIdentifier">function</span>()<span class="synIdentifier">{</span> <span class="synComment">// app.use(express.staticProvider(__dirname + '/public')); </span> app.use(express.<span class="synStatement">static</span>(__dirname + <span class="synConstant">'/public'</span>)); <span class="synComment">// Providerはいらない</span> app.set(<span class="synConstant">'views'</span>, __dirname + <span class="synConstant">'/app/views'</span>); app.set(<span class="synConstant">'view engine'</span>, <span class="synConstant">'ejs'</span>); <span class="synComment">// app.use(express.bodyDecoder());</span> app.use(express.bodyParser()); <span class="synComment">// DecoderじゃなくてParser</span> <span class="synComment">// app.use(express.cookieDecoder());</span> app.use(express.cookieParser()); <span class="synComment">// DecoderじゃなくてParser</span> <span class="synComment">// app.use(express.session({store: mongoSessionStore}));</span> app.use(express.session(<span class="synIdentifier">{</span>secret:<span class="synConstant">&quot;sample&quot;</span>, store: mongoSessionStore<span class="synIdentifier">}</span>)); <span class="synComment">// secret属性を追加</span> app.use(express.methodOverride()); app.use(app.router); <span class="synIdentifier">}</span>); </pre> </div> <div class="section"> <h4>モデル</h4> <p>デフォルトだとconnect-mongodbをドライバとして、mongooseをORマッパ風の便利ライブラリとしてmongoDBを使うみたい。mongoDBは使ったことがないし、モデルの定義はどう書くんだろうと思ったけど、</p> <pre class="code lang-sh" data-lang="sh" data-unlink>% railway generate model Comment title:String body:String date:Date </pre><p>とかすると、db/schema.js に</p> <pre class="code lang-javascript" data-lang="javascript" data-unlink><span class="synComment">/** </span> <span class="synComment"> * Comment </span> <span class="synComment"> */</span> <span class="synIdentifier">var</span> CommentSchema = <span class="synStatement">new</span> Schema; CommentSchema.add(<span class="synIdentifier">{</span> body: <span class="synIdentifier">{</span> type: <span class="synType">String</span> <span class="synIdentifier">}</span>, title: <span class="synIdentifier">{</span> type: <span class="synType">String</span> <span class="synIdentifier">}</span>, <span class="synType">date</span>: <span class="synIdentifier">{</span> type: <span class="synType">Date</span> <span class="synIdentifier">}</span> <span class="synIdentifier">}</span>); mongoose.model(<span class="synConstant">&quot;Comment&quot;</span>, CommentSchema); module.exports<span class="synIdentifier">[</span><span class="synConstant">&quot;Comment&quot;</span><span class="synIdentifier">]</span> = mongoose.model(<span class="synConstant">&quot;Comment&quot;</span>); </pre><p>ってのが追記されて、それだけでとりあえずcontroller内のコードとかrailwayコンソール(% railway cでコンソールが使える)でCommentモデルが使えるようになってた。</p> </div> <div class="section"> <h4>コントローラ</h4> <pre class="code lang-sh" data-lang="sh" data-unlink>% railway generate controller sample home post </pre><p>とすると、/app/controllers/sample_controller.jsができて中身が</p> <pre class="code lang-javascript" data-lang="javascript" data-unlink>action(<span class="synConstant">&quot;home&quot;</span>, <span class="synIdentifier">function</span>()<span class="synIdentifier">{</span> <span class="synIdentifier">}</span>); action(<span class="synConstant">&quot;post&quot;</span>, <span class="synIdentifier">function</span>()<span class="synIdentifier">{</span> <span class="synIdentifier">}</span>); </pre><p>となっている。</p> <pre class="code lang-javascript" data-lang="javascript" data-unlink>action(<span class="synConstant">&quot;home&quot;</span>, <span class="synIdentifier">function</span>()<span class="synIdentifier">{</span> Comment.find(<span class="synIdentifier">{}</span>, <span class="synIdentifier">function</span>(err, comments)<span class="synIdentifier">{</span> render(<span class="synIdentifier">{</span>comment: <span class="synStatement">new</span> Comment(), title:<span class="synConstant">&quot;test!&quot;</span>, comments:comments<span class="synIdentifier">}</span>); <span class="synIdentifier">}</span>); <span class="synIdentifier">}</span>); action(<span class="synConstant">&quot;post&quot;</span>, <span class="synIdentifier">function</span>()<span class="synIdentifier">{</span> <span class="synIdentifier">var</span> comment_body = req.body.comment; <span class="synIdentifier">var</span> comment = <span class="synStatement">new</span> Comment(); comment.body = comment_body; comment.save(<span class="synIdentifier">function</span>(err)<span class="synIdentifier">{</span> redirect(<span class="synConstant">'/'</span>); <span class="synIdentifier">}</span>); <span class="synIdentifier">}</span>); </pre><p>こんな感じでコントローラ内でやりたいことを適当に書く。</p> </div> <div class="section"> <h4>ルーティング定義</h4> <pre class="code lang-javascript" data-lang="javascript" data-unlink>exports.routes = <span class="synIdentifier">function</span> (map) <span class="synIdentifier">{</span> map.get(<span class="synConstant">'/'</span>, <span class="synConstant">'sample#home'</span>); map.post(<span class="synConstant">'/post'</span>, <span class="synConstant">'sample#post'</span>); <span class="synIdentifier">}</span>; </pre><p>とりあえずこんな感じ。</p> </div> <div class="section"> <h4>ビュー</h4> <p>/app/views/sample/home.ejs がすでにできてるので適当に埋める。</p> <pre class="code lang-jsp" data-lang="jsp" data-unlink><span class="synIdentifier">&lt;</span><span class="synStatement">h1</span><span class="synIdentifier">&gt;&lt;%=</span> title <span class="synIdentifier">%&gt;&lt;/</span><span class="synStatement">h1</span><span class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;</span><span class="synStatement">ul</span><span class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;%</span> comments.forEach(function(comment){ <span class="synIdentifier">%&gt;</span> <span class="synIdentifier">&lt;</span><span class="synStatement">li</span><span class="synIdentifier">&gt;&lt;%=</span> comment.body <span class="synIdentifier">%&gt;&lt;/</span><span class="synStatement">li</span><span class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;%</span> }<span class="synError">)</span>; <span class="synIdentifier">%&gt;</span> <span class="synIdentifier">&lt;/</span><span class="synStatement">ul</span><span class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;%</span> form_for(comment, {action:<span class="synConstant">'</span><span class="synError">/post</span><span class="synConstant">'</span>}, function(f){ <span class="synIdentifier">%&gt;</span> <span class="synIdentifier">&lt;%</span>- f.input(<span class="synConstant">'</span><span class="synError">comment</span><span class="synConstant">'</span>) <span class="synIdentifier">%&gt;</span> <span class="synIdentifier">&lt;%</span>- f.submit(<span class="synConstant">'</span><span class="synError">comment</span><span class="synConstant">'</span>) <span class="synIdentifier">%&gt;</span> <span class="synIdentifier">&lt;%</span> }<span class="synError">)</span>; <span class="synIdentifier">%&gt;</span> </pre><pre class="code lang-jsp" data-lang="jsp" data-unlink> <span class="synIdentifier">&lt;%=</span> xxx <span class="synIdentifier">%&gt;</span> </pre><p>とかくとhtmlエスケープされて出力</p> <pre class="code lang-jsp" data-lang="jsp" data-unlink> <span class="synIdentifier">&lt;%</span>- xxx <span class="synIdentifier">%&gt;</span> </pre><p>と書くとhtmlエスケープされずに出力されるみたい。</p> </div> <div class="section"> <h4>動かす</h4> <pre class="code lang-sh" data-lang="sh" data-unlink>% node server.js </pre><p>動いた。<br /> <a href="http://f.hatena.ne.jp/gotin/20110417013524" class="hatena-fotolife"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/g/gotin/20110417/20110417013524.png" alt="f:id:gotin:20110417013524p:image" title="f:id:gotin:20110417013524p:image" class="hatena-fotolife"></a></p><p>よくよくみたら</p> <pre class="code lang-sh" data-lang="sh" data-unlink>% railway generate scaffold Hogehoge </pre><p>もできるようになってた。それでgenerateされるコードを見たほうが何ができるのかよくわかる。<br /> でも結構自分で埋めないとダメなところも多い。</p> </div> gotin MacBookProのバッテリー、再びぷっくり。 hatenablog://entry/12704591929884283826 2010-08-10T08:09:35+09:00 2010-08-10T08:09:35+09:00 日本に一時帰国し、San Joseに戻ってきてからしばらくしまいっぱなしで使っていなかったMac Book Pro。久々にあけてみたら再びこんなことに。 すでに補償期間は切れているので再びバッテリーを買うべきか、新たなラップトップを買うべきかは検討中。 <p>日本に一時帰国し、San Joseに戻ってきてからしばらくしまいっぱなしで使っていなかったMac Book Pro。久々にあけてみたら再びこんなことに。<br /> <a href="http://f.hatena.ne.jp/gotin/20100809000806" class="hatena-fotolife"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/g/gotin/20100809/20100809000806.jpg" alt="f:id:gotin:20100809000806j:image" title="f:id:gotin:20100809000806j:image" class="hatena-fotolife"></a></p><p>すでに補償期間は切れているので再びバッテリーを買うべきか、新たなラップトップを買うべきかは検討中。</p> gotin 落書き。 hatenablog://entry/12704591929884283828 2010-05-28T08:40:18+09:00 2010-05-28T08:40:18+09:00 <p><a href="http://f.hatena.ne.jp/gotin/20100527163955" class="hatena-fotolife"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/g/gotin/20100527/20100527163955.jpg" alt="f:id:gotin:20100527163955j:image" title="f:id:gotin:20100527163955j:image" class="hatena-fotolife"></a></p> gotin JavaScriptメモ:this値がセットされる場合とされない場合 hatenablog://entry/12704591929884283829 2010-03-07T22:23:05+09:00 2010-03-07T22:23:05+09:00 this値が.の前の呼び出し元(ちゃんとした呼び名があるはずだけど知りません、すみません)になる場合 //(1) 'ABCDEF'.charAt(3); // D //(2) ('ABCDEF'.charAt)(3); // D 個人的にはこれもそうなんだってちょっとだけ驚いた。 this値にglobalオブジェクトが割り当てられる場合 //(3) var f0 = 'ABCDEF'.charAt; f0(3); // j //(4) var f1 = ('ABCDEF'.charAt); f1(3); // j //(5) (0, 'ABCDEF'.charAt)(3); // j //(6… <div class="section"> <h4>this値が.の前の呼び出し元(ちゃんとした呼び名があるはずだけど知りません、すみません)になる場合</h4> <pre class="code lang-javascript" data-lang="javascript" data-unlink><span class="synComment">//(1)</span> <span class="synConstant">'ABCDEF'</span>.charAt(3); <span class="synComment">// D </span> <span class="synComment">//(2)</span> (<span class="synConstant">'ABCDEF'</span>.charAt)(3); <span class="synComment">// D 個人的にはこれもそうなんだってちょっとだけ驚いた。</span> </pre> </div> <div class="section"> <h4>this値にglobalオブジェクトが割り当てられる場合</h4> <pre class="code lang-javascript" data-lang="javascript" data-unlink><span class="synComment">//(3)</span> <span class="synIdentifier">var</span> f0 = <span class="synConstant">'ABCDEF'</span>.charAt; f0(3); <span class="synComment">// j</span> <span class="synComment">//(4)</span> <span class="synIdentifier">var</span> f1 = (<span class="synConstant">'ABCDEF'</span>.charAt); f1(3); <span class="synComment">// j</span> <span class="synComment">//(5)</span> (0, <span class="synConstant">'ABCDEF'</span>.charAt)(3); <span class="synComment">// j</span> <span class="synComment">//(6)</span> (x=<span class="synConstant">'ABCDEF'</span>.charAt)(3); <span class="synComment">// j</span> <span class="synComment">// j なのは charAt実行時のthisがglobalオブジェクトになり、それをtoStringしたものが&quot;[object Object]&quot;になるから。</span> </pre><p>(2)と(4)はものすごくよく似てるけれど、(2)では()式で関数値が値として評価されてその関数がそのまま関数呼び出しに使われるからthis値がセットされない、と思ったのだけどそうではなく、this値がセットされる関数呼び出しになるんですね。という驚きがあったのでメモ。</p> </div> gotin はじめての雨 hatenablog://entry/12704591929884283830 2009-08-07T18:19:50+09:00 2009-08-07T18:19:50+09:00 San Joseに来てからおよそ二ヶ月。 今日ついに初めての雨が降った。 記念に記録。 追記: でも昼前にすぐに晴れた。 <p>San Joseに来てからおよそ二ヶ月。<br /> 今日ついに初めての雨が降った。<br /> 記念に記録。</p> <div class="section"> <h4>追記:</h4> <p>でも昼前にすぐに晴れた。</p> </div> gotin Mac OS XのターミナルでEmacsを使っていて、M-w(kill-ring-save)のつもりでうっかりコマンド+wをするとウィンドウごと閉じてしまって困るので、システム環境設定でターミナル用にコマンド+wのキーボードショートカットを適当なものに設定して回避しました。とっても便利。 hatenablog://entry/12704591929884283836 2009-07-25T03:24:19+09:00 2009-07-25T03:24:19+09:00 本来M-wはメタキー+wなのでメタキーとしてoptionキーを割り当てておいてoptionキー+wで実行することになるわけですが、ついついコマンドキーを押してしまうことがあります。しかも最悪なことにウィンドウが閉じてしまうわけですね。困ったもんです。そのために僕が考えた回避策がタイトルです。 とりあえず「ターミナルについて」に割り当ててみました。 でももうちょっとましな回避方法がある気がします。 例えばターミナルのときだけコマンドキーがoptionキーとして動作してくれてもいいけど、それだとコピペしたいときに困るんですよね。あぁ、ターミナルのときだけコマンドキーとoptionキーが入れ替わると… <p>本来M-wはメタキー+wなのでメタキーとしてoptionキーを割り当てておいてoptionキー+wで実行することになるわけですが、ついついコマンドキーを押してしまうことがあります。しかも最悪なことにウィンドウが閉じてしまうわけですね。困ったもんです。</p><p>そのために僕が考えた回避策がタイトルです。<br /> とりあえず「ターミナルについて」に割り当ててみました。<br /> でももうちょっとましな回避方法がある気がします。<br /> 例えばターミナルのときだけコマンドキーがoptionキーとして動作してくれてもいいけど、それだとコピペしたいときに困るんですよね。</p><p>あぁ、ターミナルのときだけコマンドキーとoptionキーが入れ替わるといいな。<br /> そんな技あるかなぁ。。</p><p>→コメント欄参照。 <br /> <a href="http://blog.hatena.ne.jp/swdyh/">id:swdyh</a>さんに<a href="http://blog.hatena.ne.jp/tunefs/">id:tunefs</a>さん作成のプラグインを紹介してもらいました。<br /> 思いっきり欲しかったものそのものです。</p> gotin Thunderbird+Lightning+Provider for Google Calendarのときの設定ではまったこと hatenablog://entry/12704591929884283840 2009-06-27T21:46:11+09:00 2009-06-27T21:46:11+09:00 ThunderbirdにLightningとProvider for Google CalenderというAdd onを使うとカレンダ機能が使えるようになって、かつGoogle Calendarと同期できるようになる。便利。 (→参考:Mozilla Re-Mix: 「Lightning」にGoogle カレンダーを同期させる「Provider for Google Calendar」)でも、会社内で外につなぐのにProxy設定が必要な場合に、はまった。 Google Calendarの接続先はHTTPSなのでSSLのプロキシ設定も必要になる。 で、メールの受信にもSSLを使ってて、当然そのサ… <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Thunderbird">Thunderbird</a>にLightningとProvider for <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> CalenderというAdd onを使うとカレンダ機能が使えるようになって、かつ<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Calendar">Google Calendar</a>と同期できるようになる。便利。<br /> (→参考:<a href="http://mozilla-remix.seesaa.net/article/37771574.html">Mozilla Re-Mix: &#x300C;Lightning&#x300D;&#x306B;Google &#x30AB;&#x30EC;&#x30F3;&#x30C0;&#x30FC;&#x3092;&#x540C;&#x671F;&#x3055;&#x305B;&#x308B;&#x300C;Provider for Google Calendar&#x300D;</a>)</p><p>でも、会社内で外につなぐのにProxy設定が必要な場合に、はまった。<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Calendar">Google Calendar</a>の接続先は<a class="keyword" href="http://d.hatena.ne.jp/keyword/HTTPS">HTTPS</a>なので<a class="keyword" href="http://d.hatena.ne.jp/keyword/SSL">SSL</a>のプロキシ設定も必要になる。<br /> で、メールの受信にも<a class="keyword" href="http://d.hatena.ne.jp/keyword/SSL">SSL</a>を使ってて、当然そのサーバは会社内LAN内にあったりするとプロキシ経由ではアクセスできなかったりする。<br /> だからプロキシを通さないアドレスとしてメールサーバのアドレス(かネットワークアドレスか)を登録しておかないといけない。<br /> ちょっと考えれば当たり前なのだけどしばらく悩んでしまった。<br /> 要はメール受信に<a class="keyword" href="http://d.hatena.ne.jp/keyword/SSL">SSL</a>使っていることにしばらく気がつかなかったわけで。<br /> なのでメール受信に<a class="keyword" href="http://d.hatena.ne.jp/keyword/SSL">SSL</a>を使ってなければこんな問題に出くわすこともないわけで、このパターンはレアケースなのかもしれないな。</p> gotin git install into CentOS hatenablog://entry/12704591929884283841 2009-05-19T18:15:51+09:00 2009-05-19T18:15:51+09:00 メモ $ wget http://kernel.org/pub/software/scm/git/git-1.6.3.1.tar.gz $ tar xzvf git-1.6.3.1.tar.gz $ cd git-1.6.3.1 $ ./configure $ sudo make prefix=/usr $ sudo make prefix=/usr install $ $ which git /usr/bin/git $ git --version git version 1.6.3.1 <p>メモ</p> <pre class="code lang-shell" data-lang="shell" data-unlink>$ wget http://kernel.org/pub/software/scm/git/git-1.6.3.1.tar.gz $ tar xzvf git-1.6.3.1.tar.gz $ cd git-1.6.3.1 $ ./configure $ sudo make prefix=/usr $ sudo make prefix=/usr install $ $ which git /usr/bin/git $ git --version git version 1.6.3.1 </pre> gotin 学生のときに描いた絵 hatenablog://entry/12704591929884283842 2009-05-14T19:31:45+09:00 2009-05-14T19:31:45+09:00 ふと思い出して探したらあった。こんなものをちゃんと保存してくれていてありがたいと思った。 。。ねぇ、なにこれ > 昔の僕 <p>ふと思い出して探したらあった。こんなものをちゃんと保存してくれていてありがたいと思った。<br /> <a href="http://f.hatena.ne.jp/gotin/20090514032849" class="hatena-fotolife"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/g/gotin/20090514/20090514032849.jpg" alt="f:id:gotin:20090514032849j:image" title="f:id:gotin:20090514032849j:image" class="hatena-fotolife"></a><br /> <a href="http://f.hatena.ne.jp/gotin/20090514032848" class="hatena-fotolife"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/g/gotin/20090514/20090514032848.jpg" alt="f:id:gotin:20090514032848j:image" title="f:id:gotin:20090514032848j:image" class="hatena-fotolife"></a></p><br /> <p>。。ねぇ、なにこれ > 昔の僕</p> gotin ほとんど使い物にならない。 hatenablog://entry/12704591929884283843 2009-04-28T05:44:31+09:00 2009-04-28T05:44:31+09:00 という大変厳しい批判コメントをもらった。 さすがに悲しくなった。 <p>という大変厳しい批判コメントをもらった。<br /> さすがに悲しくなった。</p> gotin バスケ hatenablog://entry/12704591929884283844 2009-04-21T17:39:42+09:00 2009-04-21T17:39:42+09:00 さりげなく娘も。 撮影者は妻。 <p><img src="http://farm4.static.flickr.com/3539/3454807035_d7cd867775.jpg?v=0" /><br /> さりげなく娘も。<br /> 撮影者は妻。</p> gotin 無念 hatenablog://entry/12704591929884283845 2009-04-13T16:25:15+09:00 2009-04-13T16:25:15+09:00 あ〜評価悪いなぁ。順位もどんどん落ちてるし。 実用的に使えるものではないけど、いろいろ似たような写真が出てきて楽しいと思ってもらえたらいいと思ったんだけどな。 無念。 <p>あ〜評価悪いなぁ。順位もどんどん落ちてるし。<br /> 実用的に使えるものではないけど、いろいろ似たような写真が出てきて楽しいと思ってもらえたらいいと思ったんだけどな。<br /> 無念。</p> gotin 記念撮影。 hatenablog://entry/12704591929884283846 2009-04-11T12:48:15+09:00 2009-04-11T12:48:15+09:00 <p><a href="http://f.hatena.ne.jp/gotin/20090410204745" class="hatena-fotolife"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/g/gotin/20090410/20090410204745.jpg" alt="f:id:gotin:20090410204745j:image" title="f:id:gotin:20090410204745j:image" class="hatena-fotolife"></a></p> gotin GazoPaのiPhoneアプリ、リリース hatenablog://entry/12704591929884283847 2009-04-06T23:37:51+09:00 2009-04-06T23:37:51+09:00 ようやっと公開されました。 ">iTunesで開くにはこちら <p>ようやっと公開されました。<br /> <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=307884092&mt=8<br /> ">iTunesで開くにはこちら</a></p> gotin functionと書くのは面倒なので@って書いたらいいことにしてみるというのはどうだろう hatenablog://entry/12704591929884283848 2009-04-05T20:10:05+09:00 2009-04-05T20:10:05+09:00 というのを試してみるスクリプトを書いてみた。僕的には setTimeout(@{alert('foo');},50); とか // 以下、 // http://svn.coderepos.org/share/lang/javascript/jsdeferred/trunk/sample.html // ↑ここのサンプルを書き換えたもの next(@{print("start");}). next(@{ @pow (x, n) { @_pow (n, r) { print([n, r]); if (n == 0) return r; return call(_pow, n - 1, x * r)… <p>というのを試してみるスクリプトを書いてみた。僕的には</p> <pre class="code lang-javascript" data-lang="javascript" data-unlink>setTimeout(@<span class="synIdentifier">{</span><span class="synStatement">alert</span>(<span class="synConstant">'foo'</span>);<span class="synIdentifier">}</span>,50); </pre><p>とか</p><p></p> <pre class="code lang-javascript" data-lang="javascript" data-unlink><span class="synComment">// 以下、</span> <span class="synComment">// http://<a class="keyword" href="http://d.hatena.ne.jp/keyword/svn">svn</a>.<a class="keyword" href="http://d.hatena.ne.jp/keyword/coderepos">coderepos</a>.org/share/lang/<a class="keyword" href="http://d.hatena.ne.jp/keyword/javascript">javascript</a>/<a class="keyword" href="http://d.hatena.ne.jp/keyword/jsdeferred">jsdeferred</a>/trunk/sample.html</span> <span class="synComment">// ↑ここのサンプルを書き換えたもの</span> next(@<span class="synIdentifier">{</span>print(<span class="synConstant">&quot;start&quot;</span>);<span class="synIdentifier">}</span>). next(@<span class="synIdentifier">{</span> @pow (x, n) <span class="synIdentifier">{</span> @_pow (n, r) <span class="synIdentifier">{</span> print(<span class="synIdentifier">[</span>n, r<span class="synIdentifier">]</span>); <span class="synStatement">if</span> (n == 0) <span class="synStatement">return</span> r; <span class="synStatement">return</span> call(_pow, n - 1, x * r); <span class="synIdentifier">}</span> <span class="synStatement">return</span> call(_pow, n, 1); <span class="synIdentifier">}</span> <span class="synStatement">return</span> call(pow, 2, 10); <span class="synIdentifier">}</span>). next(@(r)<span class="synIdentifier">{</span>print(<span class="synIdentifier">[</span>r, <span class="synConstant">&quot;end&quot;</span><span class="synIdentifier">]</span>);<span class="synIdentifier">}</span>). error(@(e)<span class="synIdentifier">{</span><span class="synStatement">alert</span>(e);<span class="synIdentifier">}</span>); @print (m) <span class="synIdentifier">{</span> $(<span class="synConstant">&quot;#basic-code&quot;</span>).append(<span class="synConstant">&quot;</span><span class="synSpecial">\n</span><span class="synConstant">// &quot;</span>+m) <span class="synIdentifier">}</span> </pre><p><br /> なんて書けるといいじゃん、と思ったのだけど、functionって書いてないと逆に分かりづらいのかもしれない。</p><br /> <p>いろいろ整理せず、ゴチャゴチャと<br /> <a href="http://github.com/gotin/chain/tree/master">http://github.com/gotin/chain/tree/master</a><br /> ↑ここに置いてみました。<br /> at_functioin.jsがそのためのスクリプトで、af_test.jsが利用例で、test.htmlがconsole.logを使って動作を試してみるサンプル。chain.jsは<a class="keyword" href="http://d.hatena.ne.jp/keyword/JSDeferred">JSDeferred</a>みたいなやつ。</p><p>ついでに、</p> <pre class="code lang-javascript" data-lang="javascript" data-unlink>@dice<span class="synIdentifier">{</span>1+Math.floor(Math.random()*6);<span class="synIdentifier">}</span> <span class="synStatement">alert</span>(dice()); <span class="synComment">// 1-6を表示</span> </pre><p>とかで最後の式の値をreturnするようにしちゃってもいいかも。<br /> それだと適当に書いた字句解析じゃだめで、ちょっとまじめにパースしないといけなくなるけど。</p><br /> <p>サンフランシスコ空港のラウンジにて。<br /> <a href="http://f.hatena.ne.jp/gotin/20090406072151" class="hatena-fotolife"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/g/gotin/20090406/20090406072151.jpg" alt="f:id:gotin:20090406072151j:image" title="f:id:gotin:20090406072151j:image" class="hatena-fotolife"></a></p> gotin サンフランシスコに来てました hatenablog://entry/12704591929884283849 2009-04-05T07:41:16+09:00 2009-04-05T07:41:16+09:00 某2.0Expoで展示するために来てました。 何はともあれ展示会中にサービス停止せずにすんでよかったです。 英語がよくわからないのにデモ&質問対応しなくちゃいけなくてドン疲れでした。 ホンヤクコンニャクが欲しかったです。 わけの分からない英語にも関わらず熱心に質問してくれた皆様、ありがとうございました。 (って日本語でこんなこと書いても熱心に質問してくれた皆様は理解してくれないか^^;) <p>某2.0Expoで展示するために来てました。<br /> 何はともあれ展示会中にサービス停止せずにすんでよかったです。<br /> 英語がよくわからないのにデモ&質問対応しなくちゃいけなくてドン疲れでした。<br /> ホンヤクコンニャクが欲しかったです。<br /> わけの分からない英語にも関わらず熱心に質問してくれた皆様、ありがとうございました。<br /> (って日本語でこんなこと書いても熱心に質問してくれた皆様は理解してくれないか^^;)</p> gotin びっくりした hatenablog://entry/12704591929884283850 2009-03-19T17:12:37+09:00 2009-03-19T17:12:37+09:00 こないだ、カラスがカエルの脚をつまんで飛んでいくところを見かけた。 カエルがビヨヨヨーンとなっていて、漫画みたいだなと思った。 <p>こないだ、カラスがカエルの脚をつまんで飛んでいくところを見かけた。<br /> カエルがビヨヨヨーンとなっていて、漫画みたいだなと思った。</p> gotin だめだった。 hatenablog://entry/12704591929884283851 2009-03-18T17:45:37+09:00 2009-03-18T17:45:37+09:00 さんざん考えて、これはなかなかいい方法を思いついた、と思っていたら、すでに他の人がほとんど同じ方法でやっていた。 あーあ。 <p>さんざん考えて、これはなかなかいい方法を思いついた、と思っていたら、すでに他の人がほとんど同じ方法でやっていた。<br /> あーあ。</p> gotin 今日きづいたこと hatenablog://entry/12704591929884283852 2009-02-23T06:12:15+09:00 2009-02-23T06:12:15+09:00 カンカンいってるあいつは踏切じゃない。 遮断機だ。 踏切は線路と道路が交差している部分のこと。 <p>カンカンいってるあいつは踏切じゃない。<br /> 遮断機だ。<br /> 踏切は線路と道路が交差している部分のこと。</p> gotin バレンタイン hatenablog://entry/12704591929884283853 2009-02-14T17:41:12+09:00 2009-02-14T17:41:12+09:00 おめでとう。 <p>おめでとう。</p> gotin 自宅サーバが死にました。 hatenablog://entry/12704591929884283854 2009-02-05T16:40:38+09:00 2009-02-05T16:40:38+09:00 実はずいぶんと前の話なんですが、ここで載せてたスクリプトやらなんやらを置いていた自宅サーバがおなくなりになりました(なっていました) gomaxfire.dnsdojo.comの名前をつけていたやつがそれです。iMacでした。 気がついたら電源が入らなくなってました。思い出のJavaScriptたち。さようなら。 なぜ今頃こんなことを書いたかというと、 結構昔に書いた記事にブックマークやスターをつけてくださることに気づき、 その記事を懐かしみながら読んでみたらもう見れなくなってしまっているページへの リンクが残ってしまっていたんですね。 申し訳なくて仕方がないのですが、もう彼らは戻ってきません… <p>実はずいぶんと前の話なんですが、ここで載せてたスクリプトやらなんやらを置いていた<a class="keyword" href="http://d.hatena.ne.jp/keyword/%BC%AB%C2%F0%A5%B5%A1%BC%A5%D0">自宅サーバ</a>がおなくなりになりました(なっていました)<br /> gomaxfire.dnsdojo.comの名前をつけていたやつがそれです。<a class="keyword" href="http://d.hatena.ne.jp/keyword/iMac">iMac</a>でした。<br /> 気がついたら電源が入らなくなってました。</p><p>思い出の<a class="keyword" href="http://d.hatena.ne.jp/keyword/JavaScript">JavaScript</a>たち。さようなら。</p><br /> <p>なぜ今頃こんなことを書いたかというと、<br /> 結構昔に書いた記事にブックマークやスターをつけてくださることに気づき、<br /> その記事を懐かしみながら読んでみたらもう見れなくなってしまっているページへの<br /> リンクが残ってしまっていたんですね。<br /> 申し訳なくて仕方がないのですが、もう彼らは戻ってきません。。</p><br /> <br /> <p>あ。よく考えたらハードディスクは死んでないのかも。</p> gotin 帰国開始 hatenablog://entry/12704591929884283855 2008-11-17T20:10:38+09:00 2008-11-17T20:10:38+09:00 サンフランシスコに来てました。 ↓これの展示のために。 The Berkeley Digital Media Conference (>play) brings together creative professionals, industry leaders, and academics to discuss the trends and challenges that face technology and digital media industries. Driven by Berkeley's legacy of creativity and its role as a leader… <p>サンフランシスコに来てました。<br /> ↓これの展示のために。</p> <blockquote cite="http://playconference.org/"> <p>The Berkeley Digital Media Conference (>play) brings together creative professionals, industry leaders, and academics to discuss the trends and challenges that face technology and digital media industries. Driven by Berkeley's legacy of creativity and its role as a leader of digital media technology, >play offers the opportunity for companies to connect with industry professionals and Berkeley students from the Haas School of Business, the College of Engineering and the School of Information.</p> <cite><a href="http://playconference.org/">Index of /</a></cite> </blockquote> <p><br /> 相も変わらず英語は苦手です。<br /> でもみんな(展示していたものに対しての)ポジティブないい意見をしてくれました(くれたように聞こえてました^^;)</p><br /> <p>ちなみに今は生まれて初めて来たラウンジというところにきてます。<br /> 飲み物や軽食がただでもらえて<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CC%B5%C0%FELAN">無線LAN</a>もただで使えて快適です。<br /> 今日が(サンフランシスコの時間で)日曜日なこともあって人も少ないし^^</p> gotin やきそば弁当うまい hatenablog://entry/12704591929884283856 2008-10-13T16:40:54+09:00 2008-10-13T16:40:54+09:00 スープがうまい。 <p>スープがうまい。</p> gotin はてなtouchテスト hatenablog://entry/12704591929884283859 2008-09-24T16:47:59+09:00 2008-09-24T16:47:59+09:00 便利かも でも僕のはtouchで、家ぐらいしかネットにつなげられないので宝の持ち腐れかな。根本的に入力がまだ慣れないな… <p>便利かも<br /> でも僕のはtouchで、家ぐらいしかネットにつなげられないので宝の持ち腐れかな。</p><p>根本的に入力がまだ慣れないな…</p> gotin Google ImageからGazoPaで類似画像検索できるようにするGreasemonkeyユーザスクリプト hatenablog://entry/12704591929884283860 2008-09-23T16:00:00+09:00 2008-09-23T16:00:00+09:00 を書いてみました。 ↓こちらです(userscripts.org) google_image_with_gazopa.user.js 追記 Google Imageって、Windowサイズを変更したときにサイズに応じてカラム数を変更してHTML書き直してるんですね。 その書き直しがあったときにボタンが消えてしまう問題があったのですが、修正しました。 使い方 まずGazoPaのアカウントを作る もちろんもう持ってる人はいらない。 GazoPaのトップページでアカウント登録受付中。 なかなか招待されない場合は僕に文句を言うといいかもしれない。 Firefoxをインストール もちろんもうインストール… <p>を書いてみました。<br /> ↓こちらです(userscripts.org)<br /> <a href="http://userscripts.org/scripts/show/34262">google_image_with_gazopa.user.js</a></p> <div class="section"> <h4>追記</h4> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Imageって、Windowサイズを変更したときにサイズに応じてカラム数を変更してHTML書き直してるんですね。<br /> その書き直しがあったときにボタンが消えてしまう問題があったのですが、修正しました。</p> </div> <div class="section"> <h4>使い方</h4> <div class="section"> <h5>まず<a class="keyword" href="http://d.hatena.ne.jp/keyword/GazoPa">GazoPa</a>のアカウントを作る</h5> <p>もちろんもう持ってる人はいらない。<br /> <a href="http://www.gazopa.com/sign_in">GazoPa&#x306E;&#x30C8;&#x30C3;&#x30D7;&#x30DA;&#x30FC;&#x30B8;</a>でアカウント登録受付中。<br /> なかなか招待されない場合は僕に文句を言うといいかもしれない。</p><p></p> </div> <div class="section"> <h5><a class="keyword" href="http://d.hatena.ne.jp/keyword/Firefox">Firefox</a>をインストール</h5> <p>もちろんもうインストールしてある人は不要。インストールの仕方はよく知らないので自力でがんばってみてください。</p><p></p> </div> <div class="section"> <h5><a class="keyword" href="http://d.hatena.ne.jp/keyword/Greasemonkey">Greasemonkey</a>をインストール</h5> <p>もちろんもうインストールしてある人は不要。インストールの仕方はよく知らないので自力でがんばってみてください。</p><p></p> </div> <div class="section"> <h5>↑に置いたスクリプトをインストール</h5> <p>先走ってインストールした人は不要。<br /> <a href="http://userscripts.org/scripts/show/34262">&#x3053;&#x3053;</a>にいって、右のほうの黒地のinstall this scriptボタンをポチ。</p><br /> <p>ここまでで下準備は完了。これでようやく使える。</p> </div> <div class="section"> <h5><a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> imageで何か検索する</h5> <p>例:<a href="http://images.google.co.jp/images?q=%E3%83%8C%E3%82%B3">&#x30CC;&#x30B3; - Google Image Search</a><br /> <a href="http://f.hatena.ne.jp/gotin/20080923043551" class="hatena-fotolife"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/g/gotin/20080923/20080923043551.png" alt="f:id:gotin:20080923043551p:image" title="f:id:gotin:20080923043551p:image" class="hatena-fotolife"></a></p><p></p> </div> <div class="section"> <h5>よく見ると<a class="keyword" href="http://d.hatena.ne.jp/keyword/Gazopa">Gazopa</a> searchボタンが置いてある</h5> <p><a href="http://f.hatena.ne.jp/gotin/20080923043552" class="hatena-fotolife"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/g/gotin/20080923/20080923043552.png" alt="f:id:gotin:20080923043552p:image" title="f:id:gotin:20080923043552p:image" class="hatena-fotolife"></a></p><p></p> </div> <div class="section"> <h5>ので、押してみると、</h5> <p><a href="http://f.hatena.ne.jp/gotin/20080923043553" class="hatena-fotolife"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/g/gotin/20080923/20080923043553.png" alt="f:id:gotin:20080923043553p:image" title="f:id:gotin:20080923043553p:image" class="hatena-fotolife"></a><br /> ↑こんな感じで5枚ほど、押した<a class="keyword" href="http://d.hatena.ne.jp/keyword/GazoPa">GazoPa</a> searchボタンの上にあった画像と似てるっぽい画像が出てくる。<br /> さらにそれらの画像をクリックすると、クリックした画像に似た画像を検索する<a class="keyword" href="http://d.hatena.ne.jp/keyword/GazoPa">GazoPa</a>のページにとぶ。</p><p></p> </div> <div class="section"> <h5>このとき<a class="keyword" href="http://d.hatena.ne.jp/keyword/GazoPa">GazoPa</a>にログインしてないと、</h5> <p><a href="http://f.hatena.ne.jp/gotin/20080923043554" class="hatena-fotolife"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/g/gotin/20080923/20080923043554.png" alt="f:id:gotin:20080923043554p:image" title="f:id:gotin:20080923043554p:image" class="hatena-fotolife"></a><br /> ログインしてねって言われる。</p><p></p> </div> <div class="section"> <h5>正直なところ、</h5> <p>主観だけど、どの画像でもバッチリ似てる結果が出まくる、ということはない。<br /> もっとクローリング画像数が増えればよくなるのかもしれないし、検索アルゴリズムに磨きをかける必要があるのかもしれない。<br /> それでも結構楽しめると思う。</p> </div> </div> gotin