<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>yujilog</title>
    <description>CODE IS POETY</description>
    <link>https://factage.com/</link>
    <atom:link href="https://factage.com/feed.xml" rel="self" type="application/rss+xml" />
    <pubDate>Thu, 09 Jan 2025 06:06:50 +0000</pubDate>
    <lastBuildDate>Thu, 09 Jan 2025 06:06:50 +0000</lastBuildDate>
    <generator>Jekyll v4.3.4</generator>
    
      <item>
        <title>Kodama TrinusのACアダプタが故障したので代わりを探した</title>
        <description>&lt;p&gt;2月に届いた3Dプリンター&lt;a href=&quot;http://www.kodama3d.com&quot;&gt;Kodama Trinus&lt;/a&gt;。身の回りの雑貨を印刷して楽しんでいて、いよいよABSの印刷にもチャレンジしようかとABSのフィラメントを買って印刷をしてみました。&lt;/p&gt;

&lt;p&gt;が、印刷が1時間ほど経過したところでACアダプタから異音が発生。アダプタを触ると火傷するほど高熱になっていてこれはマズイと思い印刷を停止しました。。&lt;/p&gt;

&lt;p&gt;ネットのフォーラムを見ると同じ悩みを抱えている人がそこそこ居て、ATX電源を利用し解決した方を見かけました。が、なんとなく汎用ACアダプタでなんとかならないかなあと思い、仕様を確認し思い切って買ってみました。&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;仕様は12V、10A、AC部分は外径5.5、内径2.5。汎用ACアダプタは内径2.1が多くそのままでは適用できないことはフォーラムの情報でもわかっていたので変換プラグを同時に購入しました。&lt;/p&gt;

&lt;p&gt;結果、変換プラグが差し込め、今の所順調に動作しABSの印刷も成功しています。&lt;/p&gt;

&lt;div class=&quot;clearfix&quot; style=&quot;margin-bottom: 10px;&quot;&gt;
&lt;iframe style=&quot;width:120px;height:240px;margin-right:10px;float:left;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;amp;bc1=000000&amp;amp;IS2=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=000000&amp;amp;lc1=0000FF&amp;amp;t=yujilog-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as4&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;ref=as_ss_li_til&amp;amp;asins=B00WESRH16&amp;amp;linkId=fe5cd05e229bae347baf20f535f1157a&quot;&gt;&lt;/iframe&gt;
&lt;iframe style=&quot;width:120px;height:240px;float:left;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;amp;bc1=000000&amp;amp;IS2=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=000000&amp;amp;lc1=0000FF&amp;amp;t=yujilog-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as4&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;ref=as_ss_li_til&amp;amp;asins=B00UJB315G&amp;amp;linkId=4f06993a791aac7c4725c1d6d65da691&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
        <pubDate>Mon, 01 May 2017 00:00:00 +0000</pubDate>
        <link>https://factage.com/2017/05/01/kodama-trinus-adapter/</link>
        <guid isPermaLink="true">https://factage.com/2017/05/01/kodama-trinus-adapter/</guid>
        
        <category>3D Printer</category>
        
        <category>Kodama Trinus</category>
        
        
        <category>Tech</category>
        
      </item>
    
      <item>
        <title>Keen IOでグロースハックするための分析をする</title>
        <description>&lt;p&gt;グロースハックというキーワードがちょっと前から流行っていますが、Webサービスの利用状況の分析、何で行っていますか？&lt;a href=&quot;http://analytics.google.com&quot;&gt;GoogleAnalytics&lt;/a&gt;？&lt;a href=&quot;http://mixpanel.com&quot;&gt;MixPanel&lt;/a&gt;？ でもGoogle Analyticsではトラフィック分析がメインだし、MixPanelはサマりすぎ、もっといろんな切り口で分析したい！&lt;/p&gt;

&lt;p&gt;そこで、とりあえず分析したい項目だけがんがん入れたJSONを送り込んだあとで分析できる&lt;a href=&quot;http://keen.io&quot;&gt;Keen IO&lt;/a&gt;というサービスがあります。&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Keen IOは月間のイベント数が50,000までは無料で利用できますが、それ以降は有料になります。全トラフィックを送るとすぐイベント数が超過してしまいますが、必要なものだけ送るのであれば十分ですね。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/files/2015/03/keenio_pricing-1.png&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;サービスが利用されるようになれば売上もあがるようなサービスであれば、費用もそこまで問題にならないのではないでしょうか。&lt;/p&gt;

&lt;p&gt;イベントを送信したり閲覧したりするための&lt;a href=&quot;https://keen.io/docs/SDKs/&quot;&gt;SDK&lt;/a&gt;はiOS, JavaScript, Android, Python, Ruby, Java, Node, PHPなど各種プログラミング言語向けに公開されています。 私は主にPHPから利用していますが、PHP版は非同期送信に対応していないため、cURLコマンドを利用して別プロセスで送信するようにしています。&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public function event ($name, $params) {
    $payload = json_encode($params);
    $payload = escapeshellarg($payload);
    $url = sprintf( &apos;https://api.keen.io/3.0/projects/%s/events/%s?api_key=%s&apos;, KEENIO_PROJECT_ID, $name, KEENIO_WRITE_KEY );
    $cmd = &apos;/usr/bin/curl -X POST -H &quot;Content-Type: application/json&quot;&apos;; $cmd.= &apos; -d &apos; . $payload . &apos; &quot;&apos; . $url . &apos;&quot;&apos;;
    $cmd.= &apos; &amp;gt; /dev/null 2&amp;gt;&amp;amp;amp;1 &amp;amp;amp;&apos;; exec($cmd, $output, $exit);
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;送信するイベントの中身はMongoのように好きなパラメーターを定義して送ることができます。 分析のためのAPIは基本的なものがすでに用意されており - イベント名
- 分析の種別 - sum 数値の合計値
- count カウント
- count&lt;em&gt;unique ユニークカウント
- minimum 値の最小値
- maximum 値の最大値
- average 値の平均値
- select&lt;/em&gt;unique カラムの値
- extraction 生データ（最大100件まで）
- 対象のカラム
- グループ化（Group By）
- フィルタリング
- 出力する対象期間
- 集計（minutely, hourly, daily, weekly, monthly, yearly）
- タイムゾーン&lt;/p&gt;

&lt;p&gt;を指定できます。たとえば以下のような集計が簡単にできます。 - 機能ごとの利用者数を知りたい
- 利用者ごとの指定した機能の利用回数を知りたい
- 利用者一人あたりの平均課金額が知りたい&lt;/p&gt;

&lt;p&gt;Keen IOはこの集計結果をJSONとして出力するだけでなく、JavaScriptのSDKにはグラフを表示する機能もビルトインされています。複雑な集計はJSONとして出力した後、自分で加工する必要がありますが、「このフィールドごとの数を知りたい」といったわりとシンプルなものは簡単に画面に表示できます。 また、Workbenchという機能がKeen IOの管理画面にあります。FacebookのGraph API Explorerに近い機能ですね。プログラムレスに集計を行いその結果をグラフとして出したり、結果をJSONで表示、表示するためのJavaScriptのコードの出力、結果をcURLで得るためのURLも表示できるので実装前に集計を行うことができるので実装の準備を行うにはとても便利です。 &lt;img src=&quot;/files/2015/03/keenio_workbench.png&quot; alt=&quot;&quot; title=&quot;&quot; /&gt; Fluentd+Elasticsearch+Kibanaでほとんど同じことができるとは思いますが、環境構築するためのリソースが無い時やシンプルに分析したいときに活用できると思います。&lt;/p&gt;
</description>
        <pubDate>Fri, 21 Feb 2014 00:51:25 +0000</pubDate>
        <link>https://factage.com/2014/02/21/growthhack-analytics-by-keen-io/</link>
        <guid isPermaLink="true">https://factage.com/2014/02/21/growthhack-analytics-by-keen-io/</guid>
        
        <category>Analytics</category>
        
        <category>KeenIO</category>
        
        <category>Tools</category>
        
        
        <category>Tech</category>
        
      </item>
    
      <item>
        <title>ブログをGhostに移行しました</title>
        <description>&lt;p&gt;以前、さくらのVPSで運用していたサーバーを手放す必要があり、WordPressから静的HTMLでブログを運用できるOctopressに移行していたわけですが、このたび仮想サーバーをまた利用できる状況になり、静的HTMLで運用するのはもったいないなと思い&lt;a href=&quot;http://ghost.org&quot;&gt;Ghost&lt;/a&gt;に移行することにしました。&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;&lt;img src=&quot;/files/2015/03/Ghost___Just_a_blogging_platform.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Ghostはまだまだ機能が少なく、不具合も多いですがMarkdownで記述でき、ライブプレビューが右側に表示されるエディタが気にいり乗り換えを決めました。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/files/2015/03/GhostAdmin.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;私の運用しているブログは記事数もそんなに無いのですが、OctopressからGhostに移行するスクリプトを作っている方が居ましたので、それを利用しました。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/jbrooksuk/OctoGhost&quot;&gt;jbrooksuk/OctoGhost&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ついでにテーマまで作りました。まだ公開できるレベルのものではありませんが、カスタマイズができるよう調整したら&lt;a href=&quot;http://marketplace.ghost.org/&quot;&gt;Ghost Open Maeketplace&lt;/a&gt;で公開しようかなと思っています。&lt;/p&gt;

&lt;p&gt;テーマに対して普通にHTMLやCSSを書く以外にやったこととしては&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&amp;lt;!-- more --&amp;gt; に対応

&lt;ul&gt;
&lt;li&gt;Ghostの「続きを読む」はいわゆる抜粋にしか対応していないので、本文中の任意の場所で「続きを読む」が表示できるようJavascriptで対応しました。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;サイドバーに新着記事一覧

&lt;ul&gt;
&lt;li&gt;Ghostのほとんどのテーマは1カラムで、しかも個別記事で記事一覧を取得するすべが無いのでこれもJavascriptでフィードを読み込んで表示するようにしました。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;サイドバーに最近のコメント一覧

&lt;ul&gt;
&lt;li&gt;Octopressに移行したタイミングでコメントシステムを&lt;a href=&quot;http://disqus.com&quot;&gt;Disqus&lt;/a&gt;にしていました。Disqusにはコメント一覧を出すウィジットも特に無いようでしたので、これも新着記事を表示するのと同じ要領で実装しています。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Javascriptでフィードを取得する部分は&lt;a href=&quot;https://developers.google.com/feed/?hl=ja&quot;&gt;Google Feed API&lt;/a&gt;を利用していますが、若干パフォーマンスが気になるのでCronで定期的に取得するようにしてもいいかなと思いました。&lt;/p&gt;

&lt;p&gt;テーマにJavascriptで実装したほとんどの機能は&lt;a href=&quot;https://github.com/TryGhost/Ghost/wiki/Planned-Features&quot;&gt;Planned Features&lt;/a&gt;で予定されているので、バージョンアップとともにそちらに移行します。&lt;/p&gt;
</description>
        <pubDate>Mon, 03 Feb 2014 03:23:08 +0000</pubDate>
        <link>https://factage.com/2014/02/03/migrated-to-ghost/</link>
        <guid isPermaLink="true">https://factage.com/2014/02/03/migrated-to-ghost/</guid>
        
        <category>Blog</category>
        
        <category>Ghost</category>
        
        <category>Theme</category>
        
        
        <category>Tech</category>
        
      </item>
    
      <item>
        <title>テザリングでダウンロード容量制限をするプロキシ</title>
        <description>&lt;p&gt;ふと Nexus 4 をいろいろと触っていたところ、「データ使用」のサブメニューに「モバイルアクセスポイント」という項目を発見しました。最初はテザリングをする項目かなと思ったらどうやら違うようで「このWiFiアクセスポイントはテザリング経由」という設定ができるようです。&lt;/p&gt;

&lt;p&gt;Android端末は設定によりますがWiFiに接続していると勝手にアプリをアップデートしてくれますが、大きいファイルをダウンロードすることになるとすぐ通信量があがってしまいます。日本の通信事業者各社は月間7GBの通信量制限をしているわけですが、この設定を行うことでその通信量を抑えることができます。&lt;/p&gt;

&lt;p&gt;で、本題ですがMac OSXに同様のことをしてくれる機能があるとありがたいのですが、残念ながら無いようです。OSXもバージョンが上がり大変便利になりましたが、AppStore経由でソフトウェアアップデートで勝手にアプリやOSのアップデートをダウンロードしてくれます。が、テザリングしていてもダウンロードしてくれるので7GBなんてあっという間です。&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;そこで、ダウンロードされるファイルサイズを制限するプロキシを考えました。最初はRubyでWEBRickを使ったプロキシを考えましたが、プロキシのソフトウェアに設定を仕込むのがお手軽かと思い、今回はSquidを使うことにしました。&lt;/p&gt;

&lt;p&gt;SquidをMacにインストールするにはHomebrewを使う方法などありますが、今回は簡単にインストールできる&lt;a href=&quot;http://squidman.net/squidman/&quot;&gt;SquidMan&lt;/a&gt;を使うことにしました。&lt;/p&gt;

&lt;p&gt;インストールを行い、設定に以下を追記します。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# 端末から払い出されるIPアドレス帯を指定します
# 以下は iPhone 5 における例
acl tethered src 172.20.10.0/24
# ファイルサイズを10MBに制限
reply_body_max_size 10 MB tethered
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;本当はグローバルIPアドレスやDNS名を指定したいのですがその指定は簡単にはできなさそうなので、端末から払い出されるIPアドレスを判別し簡易的に識別することにします。同じIPアドレス帯を他で使っている場合にはちょっと難しいですね。。&lt;/p&gt;

&lt;p&gt;設定ファイルを修正し起動したらプロキシ設定をOSXの設定から行います。一つ注意が必要で、「Webプロキシサーバー」に127.0.0.1やlocalhostなどを指定すると、Squidからは接続元のIPアドレスがローカルホストになってしまうため判別できませんので、「コンピュータ名.local」を指定します。「保護されたWebプロキシ」にも同じ設定をしましょう。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/files/2015/03/131017_0005_1.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/files/2015/03/131017_0005_1.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;/files/2015/03/131017_0006_1.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/files/2015/03/131017_0006_1.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;これで実際にテザリングして大きなファイルをダウンロードしようとしたときにSquidのエラー画面が表示されれば問題ないですね。&lt;/p&gt;

&lt;p&gt;Have a nice NOMADO life.&lt;/p&gt;
</description>
        <pubDate>Wed, 16 Oct 2013 23:56:00 +0000</pubDate>
        <link>https://factage.com/2013/10/16/tethered-body-max-size/</link>
        <guid isPermaLink="true">https://factage.com/2013/10/16/tethered-body-max-size/</guid>
        
        <category>iPhone</category>
        
        <category>Mac</category>
        
        <category>Tools</category>
        
        
        <category>Tech</category>
        
      </item>
    
      <item>
        <title>YahooのワンタイムパスワードはGoogle Authenticatorと互換性がある</title>
        <description>&lt;p&gt;先日Yahoo!JAPANのIDとハッシュ化されたパスワードが流出したと&lt;a href=&quot;http://www.itmedia.co.jp/enterprise/articles/1305/23/news148.html&quot;&gt;報じられた&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;パスワードを変更したうえで、iPhoneのApp StoreでもYahoo!JAPANワンタイムパスワードが上位にランクインされていたので、早速私も設定してみることにしました。&lt;/p&gt;

&lt;p&gt;アプリを起動して、Yahoo!JAPANのサイトのインストラクションにしたがって設定しようとしてふと思ったこととして、私は普段からGoogle Authenticatorを利用してGoogleの二段階認証をしているのですが、これは面倒だなと。。どうせならGoogle Authenticatorひとつにまとめたい。&lt;/p&gt;

&lt;p&gt;なんの下調べもせずに、Yahoo!JAPANのワンタイムパスワード設定画面の「自動設定がうまくいかない場合（手動で設定）」のリンクを押し、表示された登録コードをGoogle Authenticatorに設定してみた。&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;&lt;img src=&quot;/files/2015/03/2013_05_27_08_54_40.png&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;/files/2015/03/2013_05_27_08_54_50.png&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;/files/2015/03/2013_05_27_08_55_04.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;するとどうだろう。そのまま使える。&lt;/p&gt;

&lt;p&gt;Yahoo!JAPANのワンタイムパスワードとGoogle Authenticatorには互換性があるようです。&lt;/p&gt;

&lt;p&gt;アプリを２つ使い分けるのが面倒で統一したいという方、お試しください。&lt;/p&gt;
</description>
        <pubDate>Sun, 26 May 2013 23:47:00 +0000</pubDate>
        <link>https://factage.com/2013/05/26/yahoo-otp-has-compatibility-google-otp/</link>
        <guid isPermaLink="true">https://factage.com/2013/05/26/yahoo-otp-has-compatibility-google-otp/</guid>
        
        <category>iPhone</category>
        
        <category>Security</category>
        
        <category>Tools</category>
        
        
        <category>Tech</category>
        
      </item>
    
      <item>
        <title>サーバーをRackHubに移行</title>
        <description>&lt;p&gt;これまで様々なレンタルサーバー、VPSサーバーを転々としていましたが、ブログを&lt;a href=&quot;http://wordpress.org&quot;&gt;WordPress&lt;/a&gt;から&lt;a href=&quot;http://octopress.org&quot;&gt;Octopress&lt;/a&gt;に変更したことでメモリすら必要がなくなりました。&lt;/p&gt;

&lt;p&gt;Octopressであれば静的HTMLでしか構成されなくなり、GitHub Pagesで運用できるのでサーバーすらいらないわけですが、やはりサーバーが海外にあるとレスポンスが悪い。&lt;/p&gt;

&lt;p&gt;さらに言うと、ただのレンタルサーバーよりSSHなどで黒い画面を観れるVPSのほうが心が落ち着くわけで。。&lt;/p&gt;

&lt;p&gt;今まで借りていたさくらのVPSよりも安いVPSは無いかな？と思いちょっと探して悩みましたが&lt;a href=&quot;http://rackhub.net&quot;&gt;RackHub&lt;/a&gt;を使うことにしました。今回はWebサーバーだけあれば十分なのでRack X1を選択。メモリ256MB、ディスク4GBで15日260円＝月額520円。&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;秘密鍵でのSSHログインは自動で設定されるし、ミドルウェアがあらかじめひととおりインストール済みなので、バージョンを選ばないのであれば楽に構築ができます。IaaSとPaaSの間みたいで新鮮。&lt;/p&gt;

&lt;p&gt;インストール済みのNginxの設定ファイルを編集し起動するだけで構築は完了。空きリソースは以下の通り。&lt;/p&gt;

&lt;pre&gt;
$ free
             total       used       free     shared   buffers     cached
Mem:        245404     173112      72292          0     41004      91524
-/+ buffers/cache:      40584     204820
Swap:       524284          0     524284
&lt;/pre&gt;

&lt;pre&gt;
$ df
Filesystem     1K-blocks   Used Available Use% Mount
ed on
aufs             5104816 223000   4625816   5% /
udev              113528      4    113524   1% /dev
tmpfs              49084    204     48880   1% /run
none                5120      0      5120   0% /run/lock
none              122700      0    122700   0% /run/shm
&lt;/pre&gt;

&lt;p&gt;結局バックエンドはさくらの専用サーバーのようで、レスポンスはなかなかいいです。&lt;/p&gt;

&lt;p&gt;ご参考までにこのドメインをホスティングするために転々としたレンタルサーバー、VPSサーバーを以下に列挙します。覚えている限り時系列に。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://lolipop.jp&quot;&gt;ロリポップ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.value-domain.com/xrea.php&quot;&gt;XREA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dreamhost.com&quot;&gt;DreamHost&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://joes-vps.com/&quot;&gt;Jos&apos;s クラウドコンピューティング&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.xserver.ne.jp&quot;&gt;XSERVER&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vps.sakura.ad.jp&quot;&gt;さくらのVPS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://rackhub.net&quot;&gt;RackHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Octopress への移行についてはまた近いうちに書きます！&lt;/p&gt;
</description>
        <pubDate>Wed, 15 May 2013 13:16:00 +0000</pubDate>
        <link>https://factage.com/2013/05/15/migration-to-rackhub/</link>
        <guid isPermaLink="true">https://factage.com/2013/05/15/migration-to-rackhub/</guid>
        
        <category>Octopress</category>
        
        <category>Server</category>
        
        <category>WordPress</category>
        
        
        <category>Tech</category>
        
      </item>
    
      <item>
        <title>Raspberry Pi で iPhone5 から繋がる無線開発環境を構築する</title>
        <description>&lt;p&gt;※本内容は&lt;a href=&quot;http://cross-party.com&quot;&gt;CROSS2013&lt;/a&gt;のアンカンファレンスにて発表した内容をベースに記事化しました。&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;SlideShare: &lt;a href=&quot;http://www.slideshare.net/yujiod/raspberry-pi-16089195&quot;&gt;Raspberry Pi で作る無線開発環境&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;昨年7月に購入した Raspberry Pi が年末になってようやく届いたので、地下鉄などの電波が届かない環境でもコーディングできる無線開発環境を構築した記録です。&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;どういうことか簡単に説明しますと、eneloopで給電している無線LANドングルを付けた Raspberry Pi から iPhone5 のテザリングで共有されているWiFiに自動で接続し、Prompt などのSSHクライアントから接続を行いコンソールで開発を行える環境というものです。&lt;/p&gt;

&lt;p&gt;テザリングされた iPhone5 に別途 iPad などを接続すれば、iPad からも開発が行えますし、iPad の3G版であればもっとシンプルにできますね。&lt;/p&gt;

&lt;p&gt;で、その環境を構築して本当に通勤中の地下鉄で開発しているかというと。。していません。。&lt;/p&gt;

&lt;h2&gt;必要なもの&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Raspberry Pi

&lt;ul&gt;
&lt;li&gt;SDカード（可能であれば4GB以上）&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;無線LANドングル（PLANEX GW-USValue-EZ）

&lt;ul&gt;
&lt;li&gt;内部に RTL8188CUS を使っているようなので、Linux にWiFiサポートがインストールされていればドライバーも入っていると思います&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;eneloop QE-PL201-WなどのUSBモバイル充電器&lt;/li&gt;
&lt;li&gt;iPhone5(テザリング使用、代わりにWiFiルーターでもOK)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://panic.com/jp/prompt/&quot;&gt;Prompt&lt;/a&gt;などのSSHクライアント&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;clearfix&quot;&gt;
&lt;/div&gt;

&lt;h2&gt;Linuxのインストール&lt;/h2&gt;

&lt;p&gt;Raspberry Pi にはOSが用意されていませんので、まずはインストールから行う必要があります。すでに Raspberry Pi をお持ちの方はもうインストール済みですね。&lt;/p&gt;

&lt;p&gt;わたしは Fedora 17 を入れることにしました。以下のページに従いインストールを行います。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://fedoraproject.org/wiki/Raspberry_Pi&quot;&gt;Raspberry Pi - FedoraProject&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;インストールガイドにも注意書きがありますが、初回起動後の再起動で以下メッセージが表示される場合がありますが、あとで修正予定と記載がありました。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; Oh no! Something has gone wrong.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;とりあえず CTRL+ALT+DELETE で強制再起動を行えば3回目の再起動後に正常に立ち上がってきます。&lt;/p&gt;

&lt;p&gt;インストールを終えられればあとは無線LANドングルを指すだけで無線LANは使えるようになります。&lt;/p&gt;

&lt;h2&gt;無線LANの接続設定&lt;/h2&gt;

&lt;p&gt;XFCE desktop の画面右上の無線LANのマークからあらかじめ iPhone5 のテザリングへの接続を済ませておきます。 （実際には NetworkManager を使った接続ですね）&lt;/p&gt;

&lt;p&gt;接続情報を保存しておけば、勝手にスポットをスキャンして接続してくれます。&lt;/p&gt;

&lt;h2&gt;IPアドレスをメールで送るためのスクリプトを書く&lt;/h2&gt;

&lt;p&gt;さて、とりあえずこのままでもテザリングした iPhone5 の3G/LTEの電波の無いところに持ちだしたうえで eneloop などで給電した Raspberry Pi は iPhone5 に接続しにいってくれますが、画面が無い状態ですのでIPアドレスをメールで行なうようスクリプトを書きます。 （なおメールを送る場合には当然 iPhone5 の3G/LETの電波がある状態である必要がありますね。。）&lt;/p&gt;

&lt;p&gt;まず以下のシェルスクリプトファイルをrootにて作成します。&lt;/p&gt;

&lt;p&gt;/etc/rc.d/rc.local （Fedora16からはrc.localが無くなりましたが適切に配置を行えば以前と同じように実行されるようです）&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/bin/sh
/usr/sbin/ntpdate ntp1.jst.mfeed.ad.jp
/usr/local/bin/send_privateip.php &amp;amp;
exit 0
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;作成後は実行権限を付与しておきましょう。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# chmod a+x /etc/rc.d/rc.local
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;シェルスクリプト中の１つ目のはメールを送る前に ntpdate コマンドを使って時刻同期を行うものです。&lt;/p&gt;

&lt;p&gt;２つ目はPHPにてメールを送るスクリプトを実行するものですが、他の言語がお好みの方は他の言語で実装いただいてもかまいません。&lt;/p&gt;

&lt;p&gt;他の言語で実装される方は次の説明を読み飛ばしていただければと思います。&lt;/p&gt;

&lt;h2&gt;メールを送るための設定&lt;/h2&gt;

&lt;p&gt;テザリングを行なってもいわゆるOPB25などの迷惑メール対策がなされているので、Raspberry Pi 単体でメールを送ることができないので、Gmail やプロバイダのSMTPを利用してメールを送る必要があります。&lt;/p&gt;

&lt;p&gt;私は以下のサイトを参考に Postfix をインストールし、Gmail アカウントのメールアドレスで送るよう中継設定を行いました。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://linux.matchy.net/archives/35&quot;&gt;Postfix から Gmail 経由でメールを送る - 冒険するコンピューティング&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;PHPでプライベートIPアドレスをメールで送る&lt;/h2&gt;

&lt;p&gt;Raspberry Pi の初期状態ではPHPがインストールされていませんので、以下コマンドにてインストールをしておく必要があります。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# yum install php-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;インストールが終わったら、さきほどの /etc/rc.d/rc.local にて実行している以下のPHPをrootにて作成します。&lt;/p&gt;

&lt;p&gt;/usr/local/bin/send_privateip.php&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/bin/php
&amp;lt;?php
// ネットワークが接続される前に実行されるのを防ぐために30秒だけ待つ
sleep(30);
$result = array();

// この例では有線LAN接続時もメールを送る
foreach (array(&apos;wlan0&apos;, &apos;eth0&apos;) as $interface) {
    exec(&apos;ifconfig &apos;.$interface, $result);
    $result = join(&quot;n&quot;, $result);
    if (preg_match(&apos;/^.*inets([^s]+)/m&apos;, $result, $match)) {
        // メールの送り先はスマートフォンやガラケーに設定する
        mail(&apos;foo@example.com&apos;, &apos;&apos;, &quot;Raspberry PI IP Addressn&quot;.$match[1], &apos;From: bar@example.com&apos;, &apos;-fbar@example.com&apos;);
        break;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;作成後は実行権限を付与しておきましょう。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# chmod 755 /usr/local/bin/send_privateip.php
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;とりあえず実行してみます。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ /usr/local/bin/send_privateip.php
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;メールが送られてくれば見事成功！再起動も行なってみてメールが送られてくるか確認しましょう。&lt;/p&gt;

&lt;h2&gt;いよいよ地下鉄で。。&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;地下鉄の駅に行く&lt;/li&gt;
&lt;li&gt;iPhone5 のWiFiをオンにする&lt;/li&gt;
&lt;li&gt;iPhone5 のテザリングをオンにする&lt;/li&gt;
&lt;li&gt;Raspberry Pi を eneloop に接続し給電開始&lt;/li&gt;
&lt;li&gt;iPhone5 のテザリングの接続数が増えることを確認&lt;/li&gt;
&lt;li&gt;1分程度でメールが来る&lt;/li&gt;
&lt;li&gt;メールに記載されているプライベートIPアドレスにSSHクライアント（Promptなど）で接続&lt;/li&gt;
&lt;li&gt;電車に乗る&lt;/li&gt;
&lt;li&gt;途切れずにSSHで作業を継続できる&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;以上、いかがだったでしょうか。そもそも座席に座れれば Macbook Air などのノートマシンで作業をすることができますし、iPhone のキーボードで本格的な作業はできないと思いますのでかなり用途は限られると思いますが。。&lt;/p&gt;

&lt;p&gt;地下鉄の満員電車で書いたソースコードの動作確認などにお役立ていただければと思います。。。&lt;/p&gt;
</description>
        <pubDate>Tue, 22 Jan 2013 00:00:00 +0000</pubDate>
        <link>https://factage.com/2013/01/22/raspberry-pi-from-iphone5-via-tethering/</link>
        <guid isPermaLink="true">https://factage.com/2013/01/22/raspberry-pi-from-iphone5-via-tethering/</guid>
        
        <category>iPhone</category>
        
        <category>Linux</category>
        
        <category>RaspberryPi</category>
        
        <category>Server</category>
        
        
        <category>Tech</category>
        
      </item>
    
      <item>
        <title>CakePHPでジョブキューするプラグイン</title>
        <description>&lt;p&gt;&lt;a href=&quot;http://www.adventar.org/calendars/40&quot;&gt;CakePHP Advent Calendar 2012&lt;/a&gt;の16日目の記事として書きます。前日の15日目は&lt;a href=&quot;http://twitter.com/longkey1&quot;&gt;@longkey1&lt;/a&gt;さんの「&lt;a href=&quot;http://longkey1.net/blog/2012/12/15/the-personal-method-of-setup-of-cakephp/&quot;&gt;俺流CakePHPセットアップ方法&lt;/a&gt;」でした。私は最近良くCakePHPでジョブキューする機会がありますので、そのプラグインについて書きます。&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;複雑なアプリケーションを構築していくと、なが～く時間のかかる処理をばんばん実行したいときがありますが、その際に以下が課題となってきます。&lt;/p&gt;

&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;ユーザーを画面で待たせたくない→バックグラウンドで処理したい&lt;/li&gt;
    &lt;li&gt;CPUを専有する処理を同時に行いたくない&lt;/li&gt;
    &lt;li&gt;でも複数のサーバーで分散させて処理したい&lt;/li&gt;
&lt;/ul&gt;
&lt;strong&gt;これらはすべてジョブキューの仕組みを使えば解決できます。&lt;/strong&gt;

&lt;/div&gt;

&lt;p&gt;ワーカーというジョブを処理するプロセスが、キューに溜まったジョブを入った順から（FIFO: First in, First out）処理してくれます。ワーカーのプロセスは複数のサーバーを並列にして起動できるので、複数のジョブをより効率的に処理したい場合にはワーカーを増やせます。&lt;/p&gt;

&lt;p&gt;ではCakePHPでどうやってジョブキューを行い処理が行えるかというと、Ruby on RailsにはResqueというジョブキューの仕組みがありますが、その仕組みをCakePHPに移植した&lt;a href=&quot;http://cakeresque.kamisama.me/&quot;&gt;CakeResque&lt;/a&gt;というプラグインがあります。なお、CakeResqueは&lt;strong&gt;CakePHP2.1以降向けのプラグイン&lt;/strong&gt;となっていますので、CakePHP2.1以降を前提として利用方法を説明したいと思います。&lt;/p&gt;

&lt;h2&gt;Redisのインストール&lt;/h2&gt;

&lt;p&gt;CakeResqueを利用するにはジョブを格納する先としてNoSQLなKVSであるRedisをインストールする必要があります。Mac OSXへのインストール方法とCentOS 6.3へのインストール方法について説明しますが、他のLinuxディストリビューションでもパッケージ管理ツールから簡単にインストールできると思います。&lt;/p&gt;

&lt;p&gt;なお、Redisは2.2以降が必要です。&lt;/p&gt;

&lt;h2&gt;Mac OSXへのインストールと起動&lt;/h2&gt;

&lt;p&gt;homebrewからインストール可能です。homebrewをインストールしていない方は、&lt;a href=&quot;http://mxcl.github.com/homebrew/&quot;&gt;インストールを行なってください&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;homebrewが入っている方、入れた方は以下コマンドよりインストールできます。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ brew install redis
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;インストール後、以下を実行することでRedisを起動できます。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ /usr/local/bin/redis-server /usr/local/etc/redis.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;CentOS 6.3へのインストールと起動&lt;/h2&gt;

&lt;p&gt;CentOSの標準リポジトリには入っていないので、remiリポジトリからインストールします。remiリポジトリを使いたくない方はソースからインストールできますが、この記事では割愛させていただきます。&lt;/p&gt;

&lt;p&gt;remiリポジトリを追加していない方は以下のコマンドで追加できます。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
$ sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$ sudo rpm --import http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/RPM-GPG-KEY-EPEL-6
$ sudo rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/epel-release-6-7.noarch.rpm
$ sudo rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
$ sudo rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;remiリポジトリが追加されている方、追加した方は以下のコマンドでインストールできます。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo yum install redis
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;インストール後、以下を実行することでRedisを起動できます。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo service redis start
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;CakeResqueのインストール&lt;/h2&gt;

&lt;p&gt;CakeResqueはCakePHPのプラグインとしてインストールする必要があります。インストール方法はgitを用いるか、ファイルをダウンロードして配置するか２つ方法がありますが、この記事ではgitを使ってインストールします。&lt;/p&gt;

&lt;p&gt;インストールしたいCakePHPの /app/Plugin ディレクトリで以下を実行します。
    $ git clone git://github.com/kamisama/Cake-Resque.git CakeResque
とりあえずファイルをダウンロードし配置した、という状態ですが依存しているライブラリがありますので以下を実行しそれらもインストールします。&lt;/p&gt;

&lt;p&gt;※インストールにはPHPのモジュールであるPHP Archive(phar)が必要となります&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ cd CakeResque
$ curl -s https://getcomposer.org/installer | php
$ php composer.phar install
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;また、CakeResqueを使うには設定ファイルに記載が必要です。/app/Config/bootstrap.php に以下を記載します。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CakePlugin::load(array( # or CakePlugin::loadAll(array(
    &apos;CakeResque&apos; =&amp;amp;gt; array(&apos;bootstrap&apos; =&amp;amp;gt; true)
));
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;最後に/app/Console/Command/AppShell.phpを修正する必要があります。AppModelクラスをインクルードすることと、performメソッドを記述する必要があります。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;initialize();
        $this-&amp;amp;gt;{array_shift($this-&amp;amp;gt;args)}();
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;以上でインストールが完了となります。&lt;/p&gt;

&lt;h2&gt;ジョブの実装&lt;/h2&gt;

&lt;p&gt;早速ジョブの実装に移ります。ジョブはAppShellクラスを継承し、任意のメソッド名で処理を記述します。作成したジョブは /app/Console/Command 配下に「クラス名.php」の名前で配置します。&lt;/p&gt;

&lt;p&gt;以下は TestjobShell というクラスで testAction という名前のメソッドの例です。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;args に配列として格納されます
        $value = isset($this-&amp;amp;gt;args[0]) ? $this-&amp;amp;gt;args[0] : &apos;&apos;;
        $this-&amp;amp;gt;log(&apos;testAction value:&apos;.$value, &apos;Testjob&apos;);
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ジョブの処理を確認するためにTestjobという名前でログを作成するようにしました。&lt;/p&gt;

&lt;h2&gt;ジョブをキューに入れる&lt;/h2&gt;

&lt;p&gt;コントローラーやシェルからジョブをキューに入れるには以下のようにします。第一引数には入れるキューの名前、第二引数にはジョブの名前、第三引数にはジョブに渡す引数を配列で指定します。引数の配列の1番目には呼び出すメソッド名を指定します。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CakeResque::enqueue(&apos;default&apos;, &apos;Testjob&apos;, array(&apos;testAction&apos; &apos;Test value 1&apos;, &apos;Test value 2&apos;));
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;以上でRedisが起動していればジョブはキューに入っています。この状態ではまだ処理は行われていません。なぜならワーカーのプロセスを起動していないからです。&lt;/p&gt;

&lt;p&gt;ワーカーが動いていなくてもキューには入っていますので、後でワーカーが起動されればジョブは処理されます。次にワーカーを起動しましょう。&lt;/p&gt;

&lt;h2&gt;ワーカーの起動&lt;/h2&gt;

&lt;p&gt;以下のコマンドを、CakePHPがインストールされているディレクトリで実行することでワーカーが起動されます。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ app/Console/cake CakeResque.CakeResque start
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ディフォルトでは「default」という名前のキューでワーカーが起動されますが、別の名前のキューでワーカーを起動するには -q オプションのあとにキュー名を入れます。&lt;/p&gt;

&lt;p&gt;その他のワーカーを操作するためのコマンドについては &lt;a href=&quot;http://cakeresque.kamisama.me/commands&quot;&gt;Cake Resque | Commands&lt;/a&gt; を参照してください。&lt;/p&gt;

&lt;p&gt;先ほど入れたキューと同じ名前でワーカーを起動していれば、もうジョブは処理されたはずです。ログが出力されているか確認してみましょう。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ tail app/tmp/logs/Testjob.log
2012-12-18 01:35:18 Testjob: testAction value:test1
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;注意点として、ワーカーを起動するとジョブはすべてインスタンス化されるようで、ジョブのPHPファイルを修正しても反映されません。ジョブを修正した場合は必ずワーカーを再起動しましょう。&lt;/p&gt;

&lt;h2&gt;ジョブをコマンドラインからキューに入れる&lt;/h2&gt;

&lt;p&gt;ジョブをとりあえず起動してみたいときや、より複雑な構成になると定期的にジョブを駆動させたいシーンがあると思います。その際にはコマンドラインからジョブをキューに入れることも可能です。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ app/Console/cake CakeResque.CakeResque enqueue [キュー名] [ジョブクラス名] [メソッド名,引数,引数が複数ある場合はカンマ区切り]
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;ワーカーのステータスを確認する&lt;/h2&gt;

&lt;p&gt;ワーカーが動いているかの確認や、失敗したジョブがなかったかについてはコマンドラインから簡単にではありますが確認することができます。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ app/Console/cake CakeResque.CakeResque stats
Resque Statistics
===============================================================

Jobs Stats
   Processed Jobs : 3
   Failed Jobs    : 0


Workers Stats
   Workers count : 1
    localhost:39290:default
       - Started on     : Tue Dec 18 01:35:08 JST 2012
       - Processed Jobs : 1
       - Failed Jobs    : 0
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;以上、CakePHPにてジョブキューを処理するプラグインについて説明しましたがいかがだったでしょうか。Redisを別サーバーで立ちあげたい場合など、より詳しい使い方については公式サイト &lt;a href=&quot;http://cakeresque.kamisama.me/&quot;&gt;Cake Resque &lt;/a&gt;に記載されていますので参照してください。&lt;/p&gt;
</description>
        <pubDate>Tue, 18 Dec 2012 00:00:00 +0000</pubDate>
        <link>https://factage.com/2012/12/18/cakephp-job-queue-plugin-resque/</link>
        <guid isPermaLink="true">https://factage.com/2012/12/18/cakephp-job-queue-plugin-resque/</guid>
        
        <category>CakePHP</category>
        
        <category>Plugin</category>
        
        
        <category>Tech</category>
        
      </item>
    
      <item>
        <title>WordCamp Yokohama 2010 ライトニングトークに参加します</title>
        <description>&lt;p&gt;今まさにWordCamp Yokohama 2010が開催されており、セッションを聞いているところです。&lt;/p&gt;

&lt;p&gt;本日16:40頃より東京都市大学横浜キャンパスサブホールにてライトニングトークに参加します。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://yokohama2010.wordcamp.jp/2010/05/28/speaker-lightning-talk-sub/&quot; target=&quot;_blank&quot;&gt;[講演者紹介] ライトニング・トーク（サブホール） | WordCamp Yokohama 2010&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;先日公開したばかりのWordPressのバックアッププラグイン &lt;a href=&quot;http://factage.com/yu-ji/tag/vault-docs/&quot;&gt;Vault Docs&lt;/a&gt; をネタに、お話する予定です。&lt;/p&gt;

&lt;p&gt;内容についてはは Ustream でも配信されましたので、ご興味がある方はご覧いただければと思います。&lt;/p&gt;

&lt;p&gt;チャンネル URL
&lt;a href=&quot;http://www.ustream.tv/channel/nirecom&quot;&gt;http://www.ustream.tv/channel/nirecom&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Twitter
&lt;a href=&quot;http://twitter.com/search?q=%23wcYokohama&quot; target=&quot;_blank&quot;&gt;#wcYokohama
&lt;/a&gt;&lt;a href=&quot;http://twitter.com/search?q=%23wcYokohama2&quot; target=&quot;_blank&quot;&gt;#wcYokohama2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;※2010年05月30日 00:17 更新: Ustream とスライドを追加しました&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;配信されたUstream（&lt;a href=&quot;http://www.ustream.tv/recorded/7291484&quot; target=&quot;_blank&quot;&gt;Ustreamで表示&lt;/a&gt;）&lt;/p&gt;

&lt;div class=&quot;ustream&quot;&gt;

&lt;/div&gt;

&lt;p&gt;※00:22:40 付近から Vault Docs の発表が始まります&lt;/p&gt;

&lt;p&gt;スライド（&lt;a href=&quot;http://www.slideshare.net/yujiod/vault-docs&quot; target=&quot;_blank&quot;&gt;SlideShareで表示&lt;/a&gt;）&lt;/p&gt;

&lt;div class=&quot;slideshare&quot; style=&quot;width:425px&quot; id=&quot;__ss_4350131&quot;&gt;
&lt;strong style=&quot;margin:12px 0 4px&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/yujiod/vault-docs&quot; title=&quot;バックアッププラグイン Vault Docs のご紹介&quot; target=&quot;_blank&quot;&gt;バックアッププラグイン Vault Docs のご紹介&lt;/a&gt;&lt;/strong&gt;  &lt;div style=&quot;padding:5px 0 12px&quot;&gt; View more &lt;a href=&quot;http://www.slideshare.net/&quot; target=&quot;_blank&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/yujiod&quot; target=&quot;_blank&quot;&gt;Yuji Oda&lt;/a&gt; &lt;/div&gt;
&lt;/div&gt;
</description>
        <pubDate>Sat, 29 May 2010 00:00:00 +0000</pubDate>
        <link>https://factage.com/2010/05/29/wordcamp-yokohama-2010-l/</link>
        <guid isPermaLink="true">https://factage.com/2010/05/29/wordcamp-yokohama-2010-l/</guid>
        
        
        <category>Tech</category>
        
      </item>
    
      <item>
        <title>WordPressの記事を自動でGoogleDocsへバックアップするプラグイン</title>
        <description>&lt;p&gt;3月に&lt;a href=&quot;http://vaultpress.com/&quot; target=&quot;_blank&quot;&gt;VaultPress&lt;/a&gt;というWordPressのバックアップ及びセキュリティ対策のサービスが発表されました。これを見て同じようなことをいわゆるクラウドサービスと連携してできないかなぁと思って作りました。&lt;/p&gt;

&lt;p&gt;それが Vault Docs です。&lt;/p&gt;

&lt;p&gt;WordPressで記事を保存するとバックグラウンドで自動的にGoogleDocsにバックアップを保存します。保存した記事は復元することも可能です。&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;今のところ、投稿もしくはページの保存のみに対応しており、記事カテゴリやタグ、写真などのバックアップは行われませんが、次以降のバージョンにて対応予定です。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;インストール&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;WordPress管理画面の[プラグイン]-[新規追加]で「Vault Docs」を検索していただくか、以下の公式プラグインディレクトリからダウンロードしてお使いください。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://wordpress.org/extend/plugins/vault-docs/&quot; target=&quot;_blank&quot;&gt;WordPress › Vault Docs « WordPress Plugins&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ライセンス&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;WordPressの他のプラグインと同じで、&lt;a id=&quot;GPLv2&quot; href=&quot;http://www.gnu.org/licenses/old-licenses/gpl-2.0.html&quot;&gt;GNU General Public License (GPL) version 2&lt;/a&gt; のライセンスのもとに公開します。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;不具合について&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;何か不具合などございましたらお気軽にコメントいただければと思います。&lt;/p&gt;
</description>
        <pubDate>Wed, 19 May 2010 00:00:00 +0000</pubDate>
        <link>https://factage.com/2010/05/19/vault-docs/</link>
        <guid isPermaLink="true">https://factage.com/2010/05/19/vault-docs/</guid>
        
        
        <category>Tech</category>
        
      </item>
    
  </channel>
</rss>
