Keen IOでグロースハックするための分析をする

グロースハックというキーワードがちょっと前から流行っていますが、Webサービスの利用状況の分析、何で行っていますか?GoogleAnalyticsMixPanel? でもGoogle Analyticsではトラフィック分析がメインだし、MixPanelはサマりすぎ、もっといろんな切り口で分析したい!

そこで、とりあえず分析したい項目だけがんがん入れたJSONを送り込んだあとで分析できるKeen IOというサービスがあります。

Read More

ブログをGhostに移行しました

以前、さくらのVPSで運用していたサーバーを手放す必要があり、WordPressから静的HTMLでブログを運用できるOctopressに移行していたわけですが、このたび仮想サーバーをまた利用できる状況になり、静的HTMLで運用するのはもったいないなと思いGhostに移行することにしました。

Read More

テザリングでダウンロード容量制限をするプロキシ

ふと Nexus 4 をいろいろと触っていたところ、「データ使用」のサブメニューに「モバイルアクセスポイント」という項目を発見しました。最初はテザリングをする項目かなと思ったらどうやら違うようで「このWiFiアクセスポイントはテザリング経由」という設定ができるようです。

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

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

Read More

YahooのワンタイムパスワードはGoogle Authenticatorと互換性がある

先日Yahoo!JAPANのIDとハッシュ化されたパスワードが流出したと報じられた

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

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

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

Read More

サーバーをRackHubに移行

これまで様々なレンタルサーバー、VPSサーバーを転々としていましたが、ブログをWordPressからOctopressに変更したことでメモリすら必要がなくなりました。

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

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

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

Read More

Raspberry Pi で iPhone5 から繋がる無線開発環境を構築する

※本内容はCROSS2013のアンカンファレンスにて発表した内容をベースに記事化しました。</p>

SlideShare: Raspberry Pi で作る無線開発環境

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

Read More

CakePHPでジョブキューするプラグイン

CakePHP Advent Calendar 2012の16日目の記事として書きます。前日の15日目は@longkey1さんの「俺流CakePHPセットアップ方法」でした。私は最近良くCakePHPでジョブキューする機会がありますので、そのプラグインについて書きます。

Read More

WordCamp Yokohama 2010 ライトニングトークに参加します

今まさにWordCamp Yokohama 2010が開催されており、セッションを聞いているところです。

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

[講演者紹介] ライトニング・トーク(サブホール) | WordCamp Yokohama 2010

先日公開したばかりのWordPressのバックアッププラグイン Vault Docs をネタに、お話する予定です。

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

チャンネル URL http://www.ustream.tv/channel/nirecom

Twitter #wcYokohama #wcYokohama2

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

Read More

WordPressの記事を自動でGoogleDocsへバックアップするプラグイン

3月にVaultPressというWordPressのバックアップ及びセキュリティ対策のサービスが発表されました。これを見て同じようなことをいわゆるクラウドサービスと連携してできないかなぁと思って作りました。

それが Vault Docs です。

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

Read More

WordPress Media Flickr 1.1.0 をリリースしました

お待たせしました。Wordpress 2.8 以降に対応する Wordpress Media Flickr 1.1.0 をリリースしました。

Read More

[対応中]wp-mixi-publisherのWordPress2.5への対応とMixiバージョンアップ対応

タイトルのとおり、いまさらではありますが対応中です。すでに様々な箇所でパッチなどを配布されている方もいらっしゃると思いますが、Wordpress2.5での動作実績などをお見かけしませんでしたので対応したいと思っています。

また、データの持ち方なども若干変えようかと思っておりますのでリファクタリングも行おうと思います。2008年5月中にはリリース予定ですのでもう少々お待ちください。

Read More

みんなで育てる日本語入力 Social IME

Social IME ~ みんなで育てる日本語入力 ~ "Social IME"は、Web 2.0時代の新しい日本語入力ソフトウェアです。 みんなで専門用語や正しい変換結果を覚えさせることで、どんどん賢くなっていきます。

未踏ソフトウェア創造事業に採択され、現在ベータ版ですが個人的に注目しています。

変換内容をみんなで共有することで、最近出てきた難しい漢字のあの芸能人の名前とか、そういうのも手軽に変換できるようになるわけですね。でも「Web2.0」と謳っているので、たとえば変換数の多い文字とかをWeb上で公開するとかそういったWeb連携も面白いかなと思いました。

Read More

Flickrの写真をWordPressの記事に直接貼り付けるプラグイン

[youtube http://www.youtube.com/watch?v=9OZuEHdfqko&w=420&h=315]

* Added screencast!

※スクリーンキャストを追加しました。英語表記ですが、

日本語版Wordpressをお使いの方はもちろん日本語表記が行なわれます。)

Wordpress 2.5 のリッチエディターにて、Flickr の写真を選択してエディター上に貼り付けられるプラグイン「Wordpress Media Flickr 1.0.0」をリリースします。

Read More

WordPress 2.5 が正式リリース

WordPress 2.5 日本語版リリースのお知らせ http://ja.wordpress.org/2008/03/30/wordpress-25-japanese/

ついに出ました。Wordpress2.5向けプラグインは本日中にリリース予定です!

Read More

WordPress 2.5 RC2 がリリース

2.5の開発バージョンを導入している私としては正式リリースを心待ちにしているのですが、RC2が公開されました。

WordPress › Blog » Screencast and WordPress 2.5 RC2 http://wordpress.org/development/2008/03/wordpress-25-rc2/

2.5 is coming along thanks to the fantastic feedback you guys provided on RC1 (over 580 pingbacks and counting), and we’re now ready to show you a bit more of a peek with a short screencast covering the new dashboard and uploader and Release Candidate 2. First here’s the screencast, which is also available embedded below, as a Flash movie, or as a 17mb AVI download:

プロジェクト管理上でもかなりタスクが潰されているようですが、ステータス的にはRC2のフィードバックを反映して正式リリース。。にはならないですよね ;)

Roadmap - WordPress Trac - Trac http://trac.wordpress.org/roadmap

Milestone: 2.5 74% Due in 22 years (04/01/30) Closed tickets: 720 Active tickets: 247 (Date not set yet, awaiting RC feedback.)

yujilogではオープンソースソフトウェアの開発を再開していきたいと思っていますが、第一弾として Wordpress 2.5 で新しくなった投稿インタフェースに対するプラグインを 2.5 の正式リリースに合わせて公開予定です。正式リリースにまだ時間がかかるようであれば類似プラグインを2つ公開できるかもしれません。

ご期待下さい。

Read More

WordPress2.5のリリース日が再度延期に

前回リリース予定でありましたWordpressの新版 2.5 ですが、どうやらリリース日がまた3月19日に延期になったようです。

Milestone 2.5 - Wordpress Trac - Trac http://trac.wordpress.org/milestone/2.5

Milestone 2.5 Due in 3 days (03/21/08) Closed tickets: 636 Active tickets: 375

yujilogでは開発中のバージョンをすでに導入済みですが、管理画面のインタフェースがかなり改善されていると思いました。WYSIWYGエディタもまともに使えるようになったし、ファイルアップロードの仕組みもFlashを使うなど洗練されています。 あと3日で正式リリースを迎えられるでしょうか。。

Read More

AppleからSafari3.1がリリース、Windowsも正式リリースへ

アップル - Safari - ダウンロード http://www.apple.com/jp/safari/download/

自分はOSXでもFireFoxを常用しているので乗り換える気は無いですが、WindowsでもSafariの動作がある程度確認できるのでソフトウェア開発者にはちょっと嬉しいかもしれません。

ブラウザが増えないことや、CSS、HTMLに対する挙動が統一されることが一番望ましいことではありますが。。。

Read More

WordPress2.5のリリース日が延期に

3月10日にリリース予定だったWordpressの新版 2.5 ですが、どうやらリリース日が3月17日に延期になったようです。

Milestone 2.5 - Wordpress Trac - Trac http://trac.wordpress.org/milestone/2.5

Milestone 2.5 Due in 1 week (03/17/08) Closed tickets: 548 Active tickets: 412

クローズされていないチケットがまだ400件ほどありますが、一部は次リリースに持ち越されたとしても1週間の延期でリリースが可能なのか個人的に心配です。。

我慢できずにβ版を導入してしまいました。

Read More

Wp-MixiPublisher 1.0.0 RC2 をリリース

利用された皆様からの声を反映し、Wp-MixiPublisher 1.0.0 RC2 をリリースします。

Wp-MixiPublisher - Wordpressの記事をMixiに複製 Wordpressの投稿を公開またはすでに公開されている記事を 更新する際に、「Mixiへこの記事を投稿する」という チェックボックスを有効にすることでMixiへも記事の 投稿を行います。Mixiへの投稿内容は「全文」「概要」 「無し」から選べ、Aタグ以外のすべてのHTMLタグは 除去されます。フッターを付加できるので、ブログへの 誘導もできるかと思います。

まだテストが十分に行われていないため、致命的な不具合が存在する可能性があります。自己責任でご利用ください。

Read More

ネットを日本語化するFireFoxプラグイン Japanize

ネットを日本語化する:Japanize Japanize は、外国語のウェブサイトのユーザーインターフェイスを日本語化するサービスです。 Mozilla Firefox の拡張機能 (エクステンション) をインストールするだけで、 いままで英語だったウェブサイトを日本語で操作できるようになります。

実は似たような事を考えていました。って後から言ってもどうしようもない。

なかなか画期的なプラグインで、英語のみでしか提供されていないサービスを ページ読み込み完了後書き換えて日本語化してしまうもの。YouTubeとか日本語化されて表示されます。

翻訳データはリアルタイムで配信されるようなので、これからに期待します。

Read More

Wp-MixiPublisher – WordPressの記事をMixiに複製

いままでMixiで外部ブログとしてyujilogを設定していましたが、せっかくのソーシャルネットワークがあまり生かせないと感じたので逆の発想をしてみました。Wordpressのプラグイン Wp-MixiPublisher 1.0.0 rc1 をリリースします。

Wordpressの投稿を公開またはすでに公開されている記事を更新する際に、「Mixiへこの記事を投稿する」というチェックボックスを有効にすることでMixiへも記事の投稿を行います。Mixiへの投稿内容は「全文」「概要」「無し」から選べ、Aタグ以外のすべてのHTMLタグは除去されます。フッターを付加できるので、ブログへの誘導もできるかと思います。

まだテストが十分に行われていないため、致命的な不具合が存在する可能性があります。

Wp-MixiPublisher 1.0.0 RC2をリリースしました。

Read More

Gmail your domain – 独自ドメインでGmail

やっと Gmail your domain のbeta tester invitation が到着しました。 そういえば、Google spreadsheets も来ていたなぁ。 あ、あと Picasa Web Album も。

こうしてどんどん自分の情報がGoogleにデータベース化されていくんですね。なるほど。。

Read More

Wp-TypeKeyの作成中

まだ開発段階にあるため、配布はしておりません

需要があるのか無いのか。WordpressとMovableType(TypePad他)のどちらに喧嘩を売っているのか。 WordpressにてTypeKeyの認証を行ってコメントを投稿するためのプラグインを作成しました!

TypeKey TypeKeyはオンラインの認証システムです。シックス・アパートが提供するTypeKeyサービスのアカウントが一つあれば、 ウェブ上にたくさんあるウェブログにコメントする権限が管理できます。

※ちなみに類似のプラグインってまだ無いですよね。ありそうで無かったと思っているんですが。。

Read More

WordPressプラグイン wp-tegaki のキャッシュ化

ブログ構築システムである Wordpress のプラグイン wp-tegaki に 画像をキャッシングする機能をつけてみました。

wp-tegaki は以下のような書式で記述することで、文字を画像に変換して 表示するプラグインです。

[tagaki]ゆる~い感じ。[/tagaki]
※実際には[tagaki]ではなく[tegaki]です。。

[tegaki]ゆる~い感じ。[/tegaki]

wp-tegaki を作ってみる 決められたタグ内の文字列を、指定の TrueType で出力するプラグインです。

wp-tegaki 0.81 リリース(ひょえ~) 昔の PHP のバージョンの参照渡しの記述をソースに混在させておりました.. XREA で新しい PHP 使っている方が動かなかったようです。

ふと思いついてこのGD関数を利用してできあがった画像をキャッシングしてみることを 思いつきました。実際には文字を書いているだけなのでそこまで負荷は無いと思いますが、 毎回作るのも。というわけで wp-tegaki を改造してみました。

Read More

良く使うFireFox拡張機能

友人からおすすめのの拡張を教えて欲しいとのことだったので、 会社と自宅両方で使用しているの拡張の一覧をだしてみました。

説明文は若干適当です。。

CHANGELOG

  • 2006/06/02 del.icio.us を追加
  • 2006/06/01 Google Calendar Quick Add を追加

必須

  • Tab Mix Plus にタブ機能を付けます。最低限。
  • All-in-one Gestures マウスジェスチャー機能を付加します。右クリックを押しながら左へ動かすことで前のページに戻ったり。
  • IE Tab Internet Explorerエンジンでのレンダリングをタブで表示可能にする。特定のページのみIEのタブで表示したり、 アイコンをクリックするだけでエンジンの切り替えを行うことができる。
  • ViewSourceWith 現在表示しているページのソースを表示する際に任意のエディタで開くことができる。
  • Live HTTP Headers リクエスト・レスポンスヘッダーのキャプチャーを行うことができる。
  • GmailNotifier Gmail の未読状態をアイコンで表示したり、メールが届くと控えめなアラートでお知らせしてくれる。
  • Pearl Crescent Page Saver 画面キャプチャをとる拡張。スクロールが必要なページも一枚の画像に保存できる。
  • Web Developer 日本語版 Webアプリケーション作成エンジニアには欠かせない拡張。現在表示しているページのHTML・スタイルシートの内容を リアルタイムで確認しながら編集できたり、タグ毎・スタイルシートのID、クラス毎に枠をつけたりなど多機能。

その他

  • GooglePreview Googleの検索結果表示に手を加えて、サムネイルを表示する。
  • Google Notebook Google Notebookへステータスバーからアクセスしてサイトを確認したりしながら編集できる。
  • Download Statusbar 現在ダウンロードしているファイルの状態をステータスバーに表示する。
  • Blogger Web Comments 現在表示しているページに言及しているブログ記事の一覧を表示する。
  • Google Calendar Quick Add Google Calendar上でShift+Qを押すと QuickAdd が表示されるが、それをどのページを見ていても実行できる。 Ctrl+: を押すとダイアログが出てきて、簡単にGoogle Calendarへ予定を追加することができる。
  • del.icio.us ソーシャルブックマーク del.icio.us へのブックマークの追加や確認をワンボタンで行える。

Read More

「Ajax 実装のための基礎テクニック」

最近何かと流行のAjax。友人の増井さんのブログで。。

「Ajax 実装のための基礎テクニック」 5冊プレゼント

https://static.flickr.com/41/118051275_997ca6f3a6_m.jpg

「Ajax 実装のための基礎テクニック プレゼント希望」です! そのためだけにこの記事を書くのも少し気がひけますが取り急ぎですみません。。w

余談ですがWeb2.0のDNAマップが少し格好良くて、職場に貼り付けています。

adaptive path » experience attributes: crucial dna of web 2.0

Read More

サーバー移転完了

サーバー移転に伴い、ブログのデザイン変更中です。

Read More

大規模コメントSPAM55件。。

yujilogに大規模なコメントスパムが行われました。。その数約60件。IPアドレスも毎回違うものでコメントが行われたパターン。うーん。。。

まぁでも全てWordpressのプラグインでスパムコメントとして判別されたから良しとしよう。。

Read More

pukiwiki.orz

pukiwiki.orgがしばらくドメイン更新されていなくてついに競売にかけられてしまいました。。

http://pukiwiki.org/

こういう事が解かっていて買ってしまう人がいるんですよね。。それが目的なんでしょうけれど、理不尽な気がします。。。。:cry:

【2005/09/12 11:23追記】http://pukiwiki.jp/ に移行しています。あくまでドメインが変わっただけで、今後のPukiWikiについては何も影響はありません。

Read More

最近注目している技術など

ちょっと最近いろいろな技術情報を溜め込んでいます。

Google Maps http://maps.google.co.jp/</blockquote> 注目しているのはGoogle Maps API。何か楽しいことが思いつきそうです。

s2php5(PHP5版Seaser2コンテナ) http://s2php5.oscj.net/</blockquote> Javaからはしばらく離れてしまっているので、実物のSeaser2は触った事が無いが恐らくかなり品質の高い移植がされている模様。なんとなく触ってはみたけれども、AOP(アスペクト指向プログラミング)の概念から始めることにする。

Ajax http://www.atmarkit.co.jp/fwcr/special/ajax01/01.html</blockquote> Google MapGoogle Suggest に用いられている技術。通常サーバーサイドで処理を行うには画面遷移が伴うが、JavaScriptでHTTP通信を行いバックグラウンドでサーバーサイドの処理が行える。DHTMLと組み合わせて何か面白いことが思いつきそうです。

Agavi http://agavi.org/ http://agavi.jp/</blockquote> Mojavi3の開発状況に嫌気が差した開発者が立ち上がった。。

Read More

グーグルデスクトップ検索、日本語版が登場

'グーグルデスクトップ検索、日本語版が登場 - CNET Japan'
Googleは3月15日、「Googleデスクトップ検索」の日本語版(ベータ版)を提供開始した。Googleでウェブ検索する場合と同じように、インターネットに接続することなくユーザーが個々のパソコン内の情報を検索できるというもので、3月7日に米国で発表された英語版「Google Desktop Search 1.0」(正式版)と同じ機能を持っている。

日本語の検索が少し気になっていたところ。英語版では日本語の構文的な検索ではなく、「日本語」と検索した場合に「日」「本」「語」と別々の単語として認識されてインデックス化されていた。そのあたりがうまくできているのか試用してみる。

Read More

wp-mail.phpを改造して地図へのリンクを表示する

wp-mail.php サムネイル+機能強化版
こちらで配布されているwp-mail.phpに手を加え、画像が添付された際にサムネイルを作成できるように機能追加しました。

wp-mail.phpのサムネイル+機能強化版を利用して、GPS情報のある写真が添付された場合に地図へのリンクを記事に挿入する改造を行ってみました。

  • '仕様'
    • 複数の写真が添付された場合、GPS情報を取得できるのは1枚目の写真のみ
    • GPS情報は世界測地系(WGS-84)/日本測地系(Tokyo)の両測地系に対応し、世界測地系であれば日本測地系に変換を行い地図サイトへのリンクを生成します
  • '注意'
    • 携帯電話 au W21S でしか確認していません
    • ライセンスは元のwp-mail.phpが GNU GPL となっていますのでGPLです
  • &color(#F00){'2005/03/15 更新'}
    • GPS情報が日本測地系の場合エラーが発生する問題を修正。
    • メールを2件以上処理する場合でも、1件目のGPS情報を利用してしまう問題を修正
<!--more-->

wp-mail.php サムネイル+機能強化版を入れる

wp-mail.php サムネイル+機能強化版から somy_wp-mail.lzh(EUC-JPの場合はsomy_wp-mail_euc.lzh)をとってきて、WordPressのディレクトリに展開する。

wp-mail.phpを改造する

結構無理やりな事をしています。。。 :oops:

get_gps_information()関数の $content = … あたりで地図サイトへのリンクを生成していますので、お好みに合わせて変更してください。

114行目に追加

// GPS地図リンク作成用の設定

      /* GPS情報がある場合地図へのリンクを作成 ''1'':する ''0'':しない */
  $wpmail_get_gps_information = ''1'';

    /* 地図サイトへのURL一覧(日本測地系) URL中の$latは緯度、$lonは経度 */
 $_gps_map_urls = array(
            ''Yahoo'' => ''http://map.yahoo.co.jp/pl?nl=$lat&el=$lon'',
          ''Mapion'' => ''http://www.mapion.co.jp/c/f?uc=1&grp=all&nl=$lat&el=$lon'',
           ''MapFan'' => ''http://www.mapfan.com/index.cgi?MAP=E$lonN$lat&ZM=11'',
      );

      /* 地図サイトへのURL一覧からの名前 */
    $_gps_map_url = ''MapFan'';

     /* [ラジアン/度](変更の必要がなければ修正しないでください) */
  $rd = pi() / 180;

   /* [変換用データ](変更の必要がなければ修正しないでください) */
   $geo_param = array(
         ''WGS-84'' => array(
                     ''a'' => 6378137,
                        ''1/f'' => 298.257223563,
       ''dx'' => 0,
                      ''dy'' => 0,
                    ''dz'' => 0,
              ),
          ''TOKYO'' => array(
     ''a'' => 6377397.155,
                     ''1/f'' => 299.152813,
  ''dx'' => 148,
                    ''dy'' => -507,
                 ''dz'' => -681,
           ),
  ) ;

332行目付近に追加

// GPS情報取得
   if($wpmail_get_gps_information && count($_wpmail_photo_filepaths) > 0) {
        $content = get_gps_information($_wpmail_photo_filepaths[0]).$content;
       $_wpmail_photo_filepaths = array();
  }

399行目に追加

   global $_wpmail_photo_filepaths;

462行目に追加

    $_wpmail_photo_filepaths[] = $file_path;

620行目に追加

/**
 * GPS情報取得
 */
function get_gps_information($filename) {
        global $_gps_map_urls, $_gps_map_url;

    $content = "";

    if(($exif  = exif_read_data($filename, 0, true)) && array_key_exists("GPS", $exif)){
              $lon = degstr($exif["GPS"]["GPSLongitude"]);
            $lat = degstr($exif["GPS"]["GPSLatitude"]);

            $gps_geo = $exif["GPS"]["GPSMapDatum"];

            if($gps_geo != "TOKYO"){
                  $gps_geo_tokyo = convert_gps_geo($gps_geo, "TOKYO", $lon, $lat);
          }else{
                      $gps_geo_tokyo = array("Longitude" => $lon, "Latitude" => $lat);
          }
           $replace_patterns = array(''/$lon/'', ''/$lat/'');
              $location_mapurl = preg_replace($replace_patterns, $gps_geo_tokyo, $_gps_map_urls[$_gps_map_url]);
          $location = get_map_location_from_url($location_mapurl);

            $dt = dtstr( $exif["EXIF"]["DateTimeOriginal"]);

            $content = "<blockquote>n"
                                ."<strong>GPS情報:</strong>n"
                              ."$dtn"
                          ."<a href="$location_mapurl">$location</a>n"
                             ."</blockquote>n";
 }

       return $content;
}

function get_map_location_from_url($url) {
     $content = get_content_from_url($url);
      if(preg_match("/<title>([^<>]+)< /title>/i", $content, $match)){
              $title = htmlspecialchars($match[1]);
               list($title, $location) = explode(" - ", $title);
         if(strstr($location, "周辺") === false){
 $location = $title;
          }
   }
   return $location == "" ? "不明" : str_replace("地図", "", $location);
}

function get_content_from_url($url) {
     $content = @join("", @file($url));
        $content = mb_convert_encoding($content, get_settings(''blog_charset''), "EUC-JP");

    return $content;
}

function degstr($parry) {
      $d = ratstr2num($parry[0]);
$m = ratstr2num($parry[1]);
  $s = ratstr2num($parry[2]);
 list($g,$l) = explode(''.'', $s);

       return sprintf("%02d.%02d.%02d.%02d", $d, $m, $g, $l);
}

function ratstr2num($str) {
    list($ch, $mot) = explode(''/'', $str);
     return $mot == 0 ? 0 : ($ch/$mot);
}

function dtstr($str)
{
    list($y, $m, $d) = explode('':'', substr($str,0,10));
       list($h, $i, $s) = explode('':'', substr($str,-8));

    $time = mktime( $h, $i, $s, $m, $d, $y) - (TZ*60*60);

    return date(get_settings("date_format") . '' '' . get_settings("time_format"), $time);
}

function convert_gps_geo($geo_from, $geo_to, $lon, $lat, $altitude=0) {
      global $geo_param;

      $llh_pattern = "/^(d+).(d+).(d+.d+)$/";

     preg_match($llh_pattern, $lon, $match);
     $longitude = $match[1] + $match[2]/60 + $match[3]/3600;

preg_match($llh_pattern, $lat, $match);
      $latitude = $match[1] + $match[2]/60 + $match[3]/3600;

  if(!isset($geo_param[$geo_from]))
          die("''geo_param[$geo_from]'' not supported");
     if(!isset($geo_param[$geo_to]))
             die("''geo_param[$geo_to]'' not supported");

  list($x,$y,$z) = ellipsoid_to_rectangular(
          $longitude,
         $latitude,
          $altitude,
          $geo_param[$geo_from][''a''],
               calc_eccentricity( $geo_param[$geo_from][''1/f''] )
 ) ;

     list($longitude, $latitude, $altitude) = rectangular_to_ellipsoid(
          $x+$geo_param[$geo_to][dx],
         $y+$geo_param[$geo_to][dy],
         $z+$geo_param[$geo_to][dz],
         $geo_param[$geo_to][a],
             calc_eccentricity( $geo_param[$geo_to][''1/f''] )
  ) ;

      $converted_lat = deg_to_dms( $latitude ) ;
  $converted_lon = deg_to_dms( $longitude ) ;
 return array($converted_lat, $converted_lon);
}

function calc_eccentricity($i_f) {
        $f = 1/$i_f ;
      return 2*$f-$f*$f ;
}

function ellipsoid_to_rectangular($l, $b, $h, $a, $ec) {
     global $rd;

     $b *= $rd ;
 $l *= $rd ;
 $sb = sin( $b ) ;
   $cb = cos( $b ) ;
   $cl = cos( $l ) ;
   $sl = sin( $l ) ;

       $k = $a/sqrt( 1 - $ec*$sb*$sb ) ;
   $x = ($k+$h) * $cb * $cl ;
  $y = ($k+$h) * $cb * $sl ;
  $z = ($k*(1-$ec)+$h) * $sb ;

   return array($x, $y, $z);
}

function rectangular_to_ellipsoid($x, $y, $z,$a, $ec) {
        global $rd;

     $sq = sqrt( 1-$ec ) ;
      $r1 = sqrt( $x*$x + $y*$y ) ;
        $s = atan2( $z, $r1*$sq ) ;
 $st = sin( $s ) ;
   $ct = cos( $s ) ;
   $b = atan2( $z + $ec*$a / $sq*$st*$st*$st, $r1 - $ec*$a*$ct*$ct*$ct ) ;
     $l = atan2( $y, $x ) ;

  $sb = sin( $b ) ;
   $rn = $a / sqrt( 1 - $ec*$sb*$sb ) ;
        $h = $r1/cos( $b ) - $rn ;

      return array($b/$rd, $l/$rd, $h) ;
}

function deg_to_dms($d) {
    $h = floor($d);
     $m = floor( (($d-$h)*60) % 60 ) ;
   $s = ($d-$h-$m/60)*3600;

        return sprintf("%d.%02d.%02.2f", $h,$m,$s) ;
}</title>

Read More

Google Desktop Searchが正式リリース

'Google Desktop Searchが正式版に、マルチメディアファイルにも対応'
米Googleは米国時間の6日深夜、デスクトップ検索ソフト「Google Desktop Search 1.0」を公開した。2004年10月以降ベータ版として提供されていたものが今回、正式版にアップデートされたかたちになる。PDFやマルチメディアファイルにも対応したほか、Deskbar上から検索できる機能も追加された。

'Google Desktop Search 日本語化 第一版 barlog ≫+||||≪'

前々からThunderbirdに対応しないものかなーと思っていたら正式版で対応したのかわからないけれど、対応している!ということで早速初めてのデスクトップ検索をインストール。当面は仕組みに感動するような状態か、使い込んで飽きたらアンインストールします。。。笑

Read More

脱MovableTypeしました!

前々から気になっていたWordpressにメジャーリリースがあり、まだDevelopmentバージョンのようだけれど 1.5 がリリースされたのでちょこちょこ触っていたらなかなか止まらなくて。。笑

ついにMovableTypeと入れ替えても良いかなと考え、今まで運用していたMovableTypeのブログをWordpressへ移行してみました。比べてどうか、と言われるどちらかというと個人的にはPerlよりもPHPのほうがカスタマイズし易いので触りやすいぐらいか、そんな個人的な事情です。。まだまだテンプレートなど改良の余地がありますがとりあえずです。

当面はプラグインの開発とかWordpress 1.5 Strayhorn でとりあえず問題になっている個所と対策などを取り上げていきたいと思います。

また、MovableType の時に書いていた幾つかのエントリを復元する予定です。少々お待ち下さい。

Read More

MovableType 3.01D-ja 導入

'Movable Type 日本語版サイト: Movable Type 3.0 Developer Edition 日本語版の提供を開始しました' お待たせいたしました。Movable Type 3.0 Developer Edition 日本語版の提供を開始いたしました。米国で7月9日にリリースされた最新版3.01Dをベースにしております。

  • TypeKey認証を行ってコメントをつけられるようにテンプレートを編集しました。
  • CatEntries 2.8 がうまく動かなかったので追記します。

Read More

RRDToolとHotSaNICでハードディスク温度を計測

サーバを監視してネットワークトラフィックやCPU使用率などをグラフ化しビジュアル的に見れるMRTGというツールがありますが、現在はだんだんとRRDToolとHotSaNICのような組み合わせで監視を行うのが流行り(?)のようです。

そこで、LinkStationでRRDToolとHotSaNICを使用して監視を試みます。さらにハードディスクの温度を見る hddtemp を使用してハードディスクの温度の計測にもチャレンジしてみました。

画面イメージ

'MRTGによるネットワーク監視' MRTG使うと、ネットワーク帯域の利用状況をIn/Outパケットの2系統でグラフ化する事ができます。 また、MRTGの動作は、数値を取ってきてグラフ化するだけなので、SNMPでGETしたデータやコマンドの出力結果などもグラフ化する事もできます。

'InfoBB - RRDTOOL HotSaNIC SmokePing のインストール' FreeBSD4.7-STABLEにRRDTOOLをインストールしたときのメモです。

Read More

CPEntriesプラグイン

ダウンロード

インストール

/MTホーム/plugins 以下に cpentries0.9.3.txt を cpentries0.9.3.pl に名前を変更してコピーします。

用法

  • MTCPEntriesコンテナタグ
    • days属性
      • 日数の指定。指定した日数以内以降にコメント・トラックバックされたエントリを表示する。
    • lastn属性
      • 最新件数の指定。指定した個数最新のエントリを表示する。
    • offset属性(lastn属性かdays属性と一緒に指定する)
      • オフセットの指定。指定した位置からエントリを表示する。
    • sort_order属性
      • 表示順の指定。ascend か descend を指定する。
  • MTCPEntryコンテナタグ(MTCPEntriesコンテナの中で使用)
    • 属性は無し。

使用例

<mtcpentries lastn="5" sort_order="descend">
<mtcpentry>
<div class="side">
<b>
<a href="<$MTEntryPermalink$>">
< $MTEntryTitle$>
</a>
</b><br />
<div class="sidechild">
<mtsimplecomments lastn="4">
<mtsimplecommentifcomment>
(C)
<a href="<$MTEntryPermalink$>#C< $MTCommentID$>">
< $MTCommentDateformat="%m/%d"$>
by < $MTCommentAuthor$>
</a><br />
</mtsimplecommentifcomment>
<mtsimplecommentiftrackback>
(T)
<a href="<$MTEntryPermalink$>#T< $MTPingID$>">
< $MTPingDate format="%m/%d"$>
by < $MTPingBlogName$>
</a><br />
</mtsimplecommentiftrackback>
</mtsimplecomments>
</div>
</div>
</mtcpentry>
</mtcpentries>

Read More

サイドバーのリンク表示。

</pre>

// movabletype_templateの内容

<rnaitems lastn="5">
 < $RNAItemDate format="%m/%d"$>
 <a href="http://<$RNAItemLink$>"
    title="< $RNAItemTitle$>n(更新日時:< $RNAItemDate format="%Y/%m/%d %H:%M"$>)">
  < $RNAItemCreator$></a><br />
</rnaitems>
<br />
<b>Powered by <a href="http://www.semblog.org">Semblog/RNA</a> <a href="http:///yu-ji/rna">@</a></b>

MovableTypeのサイドバーに表示を行うために、MovableTypeのテンプレートの編集を行います。rna.cgi の ‘encoding’ はご自分の環境に合わせて設定してください。また、’template’ の指定を上記で設定したテンプレートファイルの名前にあわせます。ここでは ‘movabletype_template’ とします。

<div class="sidetitle">
 リンク
</div>
<div class="side">
 <script type="text/javascript"
         src="http://factage.com/yu-ji/rna/rna.cgi/javascript
         ?encoding=EUC-JP
         &target=RecentSiteList
         &template=http://factage.com/yu-ji/rna/template/movabletype_template"></script>
 <br /><br />
</div>

以上でMovableTypeのサイドバーに表示されるはずです。

アンテナの自動更新

ここまででサイドバーには表示はできますが、自動では更新は行われません。リンクへ登録したblogクリエータが RNA へ更新通知を行うことで更新はされます。ここでは自力で自動更新を行うための設定を行います。

自動更新を行う方法は2つあるかと思います。

  • cronによる自動更新
  • PHPによる更新(!)
    • (ブラウザからの要求をうけると毎回 RNA のアンテナ情報XMLの日付をチェックしてある一定の時間が経過していたらバックグラウンドで更新させるというもの)

1,cronによる自動更新

とりあえず cron による自動更新を行いましょう。うちのサーバは全部Webから設定できてしまうので、cron を使用するためのファイルやコマンドは割愛します。というか忘れてしまいました。。

まず、RNA の rna.cgi を実行するためのシェルスクリプトを準備します。わりに適当です。ここでは ‘rna-reload.sh’ というファイルにします。パーミッションは ‘755’ とします。

#!/bin/sh
cd ..../yu-ji/rna
./rna.cgi

つぎに cron に上記シェルスクリプトを実行するように設定します。

0 */6 * * * ..../rna-reload.sh > /dev/null

基本的には RNA を展開したディレクトリの下の ‘rna.cgi’ を実行するだけで自動更新は行われます。ここでは’6時間毎に‘実行するよう設定しています。随時書き換えてください。

2,PHPによる自動更新

PHPによる更新は実際設定は行っていませんが、論理的には可能だと思います。前提はPHPが使えるサーバであることと、MovableTypeの各ページの拡張子を php として出力していることです。

スクリプトは以下のようになると思います。実行していないので自身はないです。。。

< ?
$nowtime = time();
$recenttime = filemtime("..../yu-ji/rna/rss/recent_site.rdf");
$expire = 60 * 60 * 6; // 6時間に期限を設定

// 期限が切れているかチェック
if($nowtime - $recenttime > $expire){
  // http呼び出しを行う。
  file("http://factage.com/yu-ji/rna/rna.cgi");
}
?>

上記のスクリプトをサイドバーのPHP等に埋め込むことにより自動更新が行われるかと思います。更新自体はたぶんバックグラウンドで行われるのでサイトを見て回る待ち時間は発生しないかと思います。

とりあえずメモ程度に書きました。かなり適当な事書いてますので問題があればコメントください。お待ちしてます。

Read More

Copyright © yu-ji All Rights Reserved.