アーカイブ - 2月, 2013



2013年 2月 28

今回のGunma.webは旧暦でいう大晦日開催。高コンの前座ということもあり、過去最大の参加人数33名(!)となりました。やはり年の瀬となると沢山の人が集まるのは当然なのでしょうか。LTの数も9本とこちらも最多記録。今回はバトル形式らしいです。

開催からやたら時間が経ってしまいましたがレポートです。

LT/発表一覧


「正解がわかりません」 LT @korogaru さん

A/Bテストのお話。

LT初という事でバトル前座を希望したものの思惑とは異なり一発目の発表となってしまったというド緊張必至の順番。

A/Bテスト。サービスリリース後、どう改善すればより良い結果になるのか。テストでは分かり得ない、実際のユーザーの行動に基いて改善していくのに必要な方法。という認識。

A/Bテストを行う上では小さく始めてみることが大事との事。また、分析するデータもクリック率だけではダメで、コンバージョン率を意識しないとあらぬ方向へ行くことも。きちんとデータを取れば2、3倍は難しいが、1.2倍や1.3倍ならある。

個人的にはわりと大規模なサービスでないとなかなか難しいかな、と思っていたりします。いや、個人的なサービスしかしていないのでよくわかりませんが。質問にも出ていましたが、自社にエンジニアがいないと難しそうですね。

「正解がわかりません」

きっとそれでいいのです。人生に正解などありえないのだから…。


「vimをつくってみた」 LT @tsurumau さん

JavaScriptのフレームワークでvimを作ったというお話。

  • impact game engine
  • JSとHTML5でゲームを作る
  • 価格は99ドル
  • ブラウザで動作するのでデスクトップでもモバイルでも動作するみたい。調べてみたら、60フレーム/秒とか実現しているらしい。

    で、今回のvimはvi-impact。impactで作られたviって事みたい。

  • コマンド カーソルの移動と入力くらい
  • 独自なコマンド
  • 著作権考慮
  • ギリギリまで作業していたみたいで動かない機能が若干あったみたいだけど、デモが始まって…wwwwww。

    これは見ないとわかりません。ぜひデモを試してみて下さい!楽しいよ!
    vi-impact Github

  • :set impact
  • :set cat
  • は必見ですww
    ※どうやらUSキーボードじゃないと動作しないみたいです

    実装にはほとんどフレームワークの機能を使っていない、との事でこの方は一体どこを目指しているのでしょうか?

    PS.群馬でアルゴリズムを学ぼう お世話になりました!


    「Photoshopの自動処理で効率作業」 LT @caz0404 さん

    PhotoShopのアクションパネルで自動処理が出来るよ!というお話。

    解像度の変更、明るさ、シャープ等の作業を記憶しておいて、複数の画像に対して自動処理する事が出来る。また、フォルダ単位で実行も可との事。なるほど。

    あるアクションを無効化にしたり、途中でパラメータを指定出来たりとたくさんの画像を処理する時には便利そうです。画像処理系のソフトは中々使いこなすのが難しいですが、こんな感じで紹介してもらえるとスキルアップに繋がりそうです。

    初LTにチャレンジと言う事でしたが、スライドではなくムービーで発表するという一風変わったLTでした。絶対時間オーバーしないってこの事だったんですね。納得。

    個人的には高コン観戦しながらのお酒に行けなかったのが無念です。次の機会には是非。


    「モダンすぎる静的サイトの作り方」 LT @yterajima さん

    静的サイト生成ツールのMiddlemanのお話。個人的に非常に興味があるお話。

    CSSにはLess、Sass等のCSSプリプロセッサがあるけれども、HTMLはどうするか。

    非常に直面する事が多い問題です。閉じタグ嫌い←同意。ボクは結局HTML書くのですが…。

    Slimというテンプレートエンジンを使うとタグを使わずに済む。SlimはHamlを進化させたもの。Slim + Sassがおすすめ。でも、この組み合わせで作業しているとちょっとした悲劇が襲うことになる。

    Sass   →      convert to CSS
     ↑                     ↓
    convert to HTML ← Slim/Haml

    無限連鎖…。

    この解決策がMiddlemanという事です。middlemanとは static site jenerater(静的サイト生成ツール )の事で、静的サイトを作るためのツール群とでもいうのでしょうか。

    middlemanのドキュメントは英語なのですが、実は日本語訳を作ったとのこと。これで勝つる。
    http://middleman-guides.e2esound.com/

    ただし、これを使うにはターミナルという黒い画面(macのデフォルトでは白い画面ですが)を使う必要があります。ボクは使っているのでモーマンタイです。最近静的なサイト作り手を出す事が億劫になっているので、いいきっかけになればいいな。

    という事で、agatsuma.survive#02 おじゃまします。


    「エンジニアがTRPGをやるべき理由 〜隣り合わせの遊びと技術〜」 LT @parrot_studio さん

    TRPG = テーブルトークRPG。前回のGunma.webの時にちょこっと話が出ていましたが、自分は馴染みがなくどんな感じでプレイするのか今だにイメージが出来てません。

    GM(Game Master)と呼ばれる人がシナリオを進めるようです。使うものは紙と鉛筆とサイコロ。勝手なイメージではスゴロク的な人生ゲーム的な感じです。きっとぜんぜん違うんだとは思いますが。

    そしてこのTRGPがAjile的だ、という事。

    TRPGをプレイすることによって論理構成力、コミュニケーション能力、アドリブ力、リソース管理能力、判断力等々の非技術的なスキルが磨かれる→結果的に合理的にスピード感のある仕事やプロジェクトの進行が出来る=アジャイル的って事かな?

    恥ずかしながらAjileという言葉にいまいちピンときていません…。(@parrot_studioさんのブログでは「概念であり結果」と綴られています)

    マツコ的に言うとふわふわっとしたものなんでしょうね。TRPGをプレイしてみれば分かるのかしら。


    「javascriptで苦戦した経験」 LT @kanayannet さん

    JavaScriptでの経験談のお話。

    何かと躓きやすいJSですが、しばらく書いていないと忘れて同じ所で躓くという事を思いだしました。JavaSsriptにおけるグローバル変数って単に大元であるwindowオブジェクトに属している値やメソッドであると、考えると

    function Test(aaa,bbb){
        this.x = aaa;
        this.y = bbb;
    }
    
    var Test = function (aaa,bbb){
        this.x = aaa;
        this.y = bbb;
    }
    

    となるので、Test()は window.Test() と同義。となるとthisに入るのはwindowオブジェクトそのもの。this.xはwindow.xと同義になるのでグローバル変数xが汚染される…となるのですが、忘れます。手を動かして思い出しました。

    また、巻き上げの件では、

    global = 'global';
    
    function func(){
      console.log(global); // undefined
      
      var global = 'local';
      console.log(global); // local
    }
    
    func();
    console.log(global); //global
    

    となるようで、コンパイルと実行の関係なのでしょうか。JavaScriptの場合は関数スコープしか無いのでどこで変数宣言しても先頭で宣言したことになる…って読んだことあるような無いような…。

    最近は純粋なJavaScript書く事があまりなくて、専らjQueryだったりするので余計に忘れてしまいます。

    JavaScript=全てがオブジェクトで出来ているっていうのを考えると、OOP(オブジェクト指向プログラミング)を覚えるのに最適な言語なのではないかと思っていたりします。ブラウザで動くしね。

    こういう経験談的なLTもいいのではないか?

    確かにこのような機会があることで試してみたり、再発見することは多いと思います。今回も再確認する良いきっかけになりましたし。ボクも誰か一人でも役立つような発表が出来るよう精進しようと思います。


    「MTCafe Gunma 2013へのお誘い」 LT @hjfuji さん

    3月2日(土)に開催されるMTCafe Gunma 2013の告知LTです。

    MTというのはMiyagawa Tatsuhikoの略…ではなく、Movavle Type。MTはperl製のCMS(Blog)で、以前から知っていましたが使ったことはありませんでした。perl使いなのに…。blogを開設しようとしていた当時はOSS版が無かったので…。

    MTは2011年からシックス・アパート日本法人が扱っているとの事。シックス・アパートはボクの尊敬するTatsuhiko Miyagawaさんもエンジニアとして在籍していたのでとても気になります。

    MTCafe Gunma 2013、参加させて頂きます!


    「Koi::Bana」LT @clicktx

    前エントリーに書きました。


    「Nuuk Jam」 LT @ivoryworks さん

    エディタを作ったお話。まさかのカブり。と、思わせておいて…。
    どこからこの発想が浮かんだのか実に変態的です。URL shortenerいわゆるURLを短縮するサービスを使ってファイルを保存するというwebサービス。

    http://goo.gl/

    googleが提供しているURL短縮サービスですが、トップレベルドメインである.gl=グリーンランドみたいです。.jp=japみたいなものですね。Nuukはグリーンランドの首都みたいです。

    保存方法は対象のデータをURLエンコードして、これを含んだURLを生成。このURLをURL Shortenerで短縮させる。http://goo.gl/6dTBg のように短縮されるので 6dTBgにデータが紐付く。ここまで基本。

    で、どこらへんがジャムかって言うと大きなファイルを保存する時。

    例えば画像の場合はdata URI schemeという画像データをbase64エンコードして作られたURIを元に分割して保存する仕組みになっているので複数の短縮URLが生成されます。これを元の画像に復元する時に1つにする=詰め込む、という事に由来しているようです。だから頻繁にパンを焼いていたのですね。

    なぜ分割するかについて。実はURLの長さについてはRFCで定められていないそうですが、googleのAPIに制限があるからとの事。あまりにも長いURLはブロックされるみたい。googleはNuuk Jam想定内なのかもしれません。

    ただひたすら、無駄に短縮URLを消費していくという実に変態的な仕様に笑いが止まりませんでした。ネーミングセンスも抜群だしね。

    と、@ivoryworksさんのエントリー読んだらアイデア自体は同様の事をしていた先人がいた様子。このエントリーを見て思い出した言葉があります。

    良いと思えるアイデアが閃いたら、まずは世の中に同じアイデアのプロダクトがないか徹底的に調べる事が重要です。


    所感とか

    初参加の方も多数、参加人数も最多という事もあり、なんとなくですが発表者の面々はいつもよりも緊張していたのではないでしょうか?私?パなかったですがなにか?

    主催もおっしゃっていましたが、技術関係のみならず色々なLT/発表が出来るのがGunma.webの特徴の一つ。新しい発表者が増えるともっともっと盛り上がると思うので、是非チャレンジしてみて下さい!

    関連リンク

    発表のスライド等のリンクは以下のリンクから閲覧できます。


    Filed under: 勉強会

    Trackback Uri






    2013年 2月 23

    スマートフォンでpush通知出来るようにIMAP-IDLE対応のdovecot2をインストールする。

    基本的には メールサーバ構築のまとめ(複数のバーチャルドメイン+Postfix+MySQL+Dovecot+procmail+Clam AntiVirus+spamassassin+postfixadmin) のdovecotの部分をdovecot2にするための記事。

    ATrpmsリポジトリを追加

    yumでインストールできるようにするため、ATrpmsリポジトリを追加する。

    # vi /etc/yum.repos.d/atrpms.repo
    
    [atrpms]
    name=Redhat Enterprise Linux $releasever - $basearch - ATrpms
    baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
    enabled=0
    gpgcheck=1
    gpgkey=http://atrpms.net/RPM-GPG-KEY.atrpms
    

    dovecot 2のインストール(アップデート)

    # yum install dovecot --enablerepo=atrpms
    
    Loaded plugins: fastestmirror, security
    Loading mirror speeds from cached hostfile
     * base: www.ftp.ne.jp
     * centosplus: www.ftp.ne.jp
     * epel: ftp.kddilabs.jp
     * extras: www.ftp.ne.jp
     * rpmforge: ftp.riken.jp
     * updates: www.ftp.ne.jp
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package dovecot.i386 1:2.1.1-2_132.el5 set to be updated
    --> Processing Dependency: libpq.so.5 for package: dovecot
    --> Running transaction check
    ---> Package postgresql84-libs.i386 0:8.4.13-1.el5_8 set to be updated
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package                 Arch       Version                  Repository    Size
    ================================================================================
    Updating:
     dovecot                 i386       1:2.1.1-2_132.el5        atrpms       2.5 M
    Installing for dependencies:
     postgresql84-libs       i386       8.4.13-1.el5_8           base         213 k
    
    Transaction Summary
    ================================================================================
    Install       1 Package(s)
    Upgrade       1 Package(s)
    
    Total download size: 2.7 M
    Is this ok [y/N]: y
    
    ... 
    
    Running Transaction
      Installing     : postgresql84-libs                                        1/3 
      Updating       : dovecot                                                  2/3 
      Cleanup        : dovecot                                                  3/3 
    warning: /etc/dovecot.conf saved as /etc/dovecot.conf.rpmsave
    
    Dependency Installed:
      postgresql84-libs.i386 0:8.4.13-1.el5_8                                       
    
    Updated:
      dovecot.i386 1:2.1.1-2_132.el5                                                
    
    Complete!
    

    設定ファイルの編集

    アップデートした場合、設定ファイルはに変更があるのでスクリプトがあるみたいだけど最初から設定することにする。
    http://wiki2.dovecot.org/Upgrading

    dovecot2では設定ファイルの書式が変わり、諸々の設定は conf.d/以下に置かれている。

    dovecot.confを編集
    ・ オリジナルをコピーしておく
    # cd /etc/dovecot
    # cp -a dovecot.conf dovecot.conf.org
    
    ・ dovecot.confを編集
    # vi /etc/dovecot/dovecot.conf
    
    # Protocols we want to be serving.
    #protocols = imap pop3 lmtp
    protocols = imap pop3 ←追記
    
    
    master.conf
    # cd /etc/dovecot/conf.d/
    
    # vi /etc/dovecot/conf.d/10-master.conf
    
    service imap-login {
      inet_listener imap {
        port = 143 ←コメント削除
      }
      inet_listener imaps {
        port = 993 ←コメント削除
        ssl = yes ←コメント削除
      }
    
    ...
    
    service pop3-login {
      inet_listener pop3 {
        port = 110  ←コメント削除
      }
      inet_listener pop3s {
        port = 995  ←コメント削除
        ssl = yes  ←コメント削除
      }
    }
    
    ....
    
    service auth {
    
      unix_listener auth-userdb {
        #mode = 0666
        #user = 
        #group = 
      }
    
      # Postfix smtp-auth
      unix_listener /var/spool/postfix/private/auth {  ←コメント削除
        # mode = 0666
        mode = 0660      ←追記
        user = postfix   ←追記
        group = postfix  ←追記
      }                  ←コメント削除
    
      # Auth process is run as this user.
      #user = $default_internal_user
    }
    
    10-mail.conf
    # vi /etc/dovecot/conf.d/10-mail.conf
    
    # See doc/wiki/Variables.txt for full list. Some examples:
    #
    #   mail_location = maildir:~/Maildir
    #   mail_location = mbox:~/mail:INBOX=/var/mail/%u
    #   mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
    #mail_location = 
    mail_location = maildir:/mail/%d/%u  ← 追記
    
    ...
    
    
    # Valid UID range for users, defaults to 500 and above. This is mostly
    # to make sure that users can't log in as daemons or other system users.
    # Note that denying root logins is hardcoded to dovecot binary and can't
    # be done even if first_valid_uid is set to 0.
    #first_valid_uid = 500
    #last_valid_uid = 0
    first_valid_uid = 10000  ← 追記
    
    # Valid GID range for users, defaults to non-root/wheel. Users having
    # non-valid GID as primary group ID aren't allowed to log in. If user
    # belongs to supplementary groups with non-valid GIDs, those groups are
    # not set.
    #first_valid_gid = 1
    #last_valid_gid = 0
    first_valid_gid = 10000  ← 追記
    
    
    10-auth.conf
    # vi /etc/dovecot/conf.d/10-auth.conf
    
    # Space separated list of wanted authentication mechanisms:
    #   plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey
    #   gss-spnego
    # NOTE: See also disable_plaintext_auth setting.
    auth_mechanisms = plain login digest-md5 cram-md5  ←追加
    
    ....
    
    #!include auth-deny.conf.ext
    #!include auth-master.conf.ext
    
    !include auth-system.conf.ext
    !include auth-sql.conf.ext         ←コメント削除
    #!include auth-ldap.conf.ext
    #!include auth-passwdfile.conf.ext
    #!include auth-checkpassword.conf.ext
    #!include auth-vpopmail.conf.ext
    #!include auth-static.conf.ext
    
    10-ssl.conf
    # vi /etc/dovecot/conf.d/10-ssl.conf
    
    #ssl_cert = 
    

    MySQLを使うための設定

    ※自分はunixユーザでメールを使わないので下記設定で問題ないが、以前頂いたコメントによると問題がある模様。参考まで。

    auth-mysql.conf.ext を新規作成
    # vi /etc/dovecot/conf.d/auth-mysql.conf.ext 
    
    driver = mysql
    default_pass_scheme = PLAIN
    connect = dbname=postfix host=localhost user=postfix password=passwd
    password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1'
    user_query = SELECT concat('/mail/', maildir) as home, 10000 as uid, 10000 as gid FROM mailbox WHERE username = '%u' AND active = '1'
    
    auth-sql.conf.extを修正
    # vi /etc/dovecot/conf.d/auth-sql.conf.ext
    
    passdb {
      driver = sql
    
      # Path for SQL configuration file, see example-config/dovecot-sql.conf.ext
      #args = /etc/dovecot/dovecot-sql.conf.ext
      args = /etc/dovecot/conf.d/auth-mysql.conf.ext  ←追記
    }
    
    ...
    
    userdb {
      driver = sql
      #args = /etc/dovecot/dovecot-sql.conf.ext
      args = /etc/dovecot/conf.d/auth-mysql.conf.ext  ←追記
    }
    
    

    参考

  • CentOS で EPEL や ATrpms のパッケージを yum で利用できるようにする
  • Dovecot2.x/設定
  • Postfix + Dovecot 2 + PostfixAdmin + MySQL [がらくたネット]

  • Filed under: インストールメモ,メールサーバ

    Trackback Uri






    2013年 2月 22

    サーバー証明書を作成

    メールサーバー間通信内容暗号化(OpenSSL+Postfix+Dovecot) – CentOSで自宅サーバー構築 を参考にサーバー証明書を作成

    # cd /etc/pki/tls/certs/
    # make mail.pem
    umask 77 ; \
    	PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
    	PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
    	/usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_serial 0 ; \
    	cat $PEM1 >  mail.pem ; \
    	echo ""    >> mail.pem ; \
    	cat $PEM2 >> mail.pem ; \
    	rm -f $PEM1 $PEM2
    Generating a 2048 bit RSA private key
    ......................................................................................................+++
    ............+++
    writing new private key to '/tmp/openssl.h27273'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [GB]:JP
    State or Province Name (full name) [Berkshire]:Gunma
    Locality Name (eg, city) [Newbury]:Maebashi
    Organization Name (eg, company) [My Company Ltd]:clicktxcloud.com
    Organizational Unit Name (eg, section) []:
    Common Name (eg, your name or your server's hostname) []:mail.clicktxcloud.com
    Email Address []:mail@clicktxcloud.com   

    Postfixの設定

    main.cf
    smtpd_use_tls = yes
    #最終行に追記
    smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem
    smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
    smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
    
    master.cf
    submission inet n       -       n       -       -       smtpd  ←コメント削除
      -o smtpd_enforce_tls=yes  ←コメント削除
      -o smtpd_sasl_auth_enable=yes  ←コメント削除
      -o smtpd_client_restrictions=permit_sasl_authenticated,reject  ←コメント削除
    smtps     inet  n       -       n       -       -       smtpd  ←コメント削除
      -o smtpd_tls_wrappermode=yes  ←コメント削除
      -o smtpd_sasl_auth_enable=yes  ←コメント削除
      -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    #628      inet  n       -       n       -       -       qmqpd
    pickup    fifo  n       -       n       60      1       pickup
    cleanup   unix  n       -       n       -       0       cleanup
    qmgr      fifo  n       -       n       300     1       qmgr
    #qmgr     fifo  n       -       n       300     1       oqmgr
    tlsmgr    unix  -       -       n       1000?   1       tlsmgr   ←コメント削除
    
    コマンドラインで接続テストしてみる
    $ openssl s_client -starttls smtp -crlf -connect xxx.xxx.xxx.xxx:587
    CONNECTED(00000003)
    
    ...
    
    SSL-Session:
        Protocol  : TLSv1
        Cipher    : DHE-RSA-AES256-SHA
        Session-ID: 9AE082BD79AE4029D5AD48BCCA63C3E6970FE3D3617C2EE98586AB7B331A4332
        Session-ID-ctx: 
        Master-Key: 64F761C1EA5B4261A67DDBB625A2D04AD88586CD21B0D35F4E62C06C1FDE481EA21BEED6EDCD5548B4DCBEF0A6399881
        Key-Arg   : None
        PSK identity: None
        PSK identity hint: None
        SRP username: None
        Compression: 1 (zlib compression)
        Start Time: 1394449493
        Timeout   : 300 (sec)
        Verify return code: 10 (certificate has expired)
    ---
    250 DSN

    dovecotの設定

    # Disable SSL/TLS support.
    ssl_disable = no ←コメント削除
    
    # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
    # dropping root privileges, so keep the key file unreadable by anyone but
    # root. Included doc/mkcert.sh can be used to easily generate self-signed
    # certificate, just make sure to update the domains in dovecot-openssl.cnf
    #ssl_cert_file = /etc/pki/dovecot/certs/dovecot.pem
    #ssl_key_file = /etc/pki/dovecot/private/dovecot.pem
    ssl_cert_file = /etc/pki/tls/certs/mail.pem ←追記
    ssl_key_file = /etc/pki/tls/certs/mail.pem  ←追記
    

    Postfix TLS サポート
    Postfix+MySQL+Postfix AdminによるバーチャルSMTPサーバの構築(CentOS4.x編)


    Filed under: postfix,インストールメモ

    Trackback Uri






    2013年 2月 17

    Build Systemの新規作成

    Sublime Text 2のBuild Systemにはデフォルトだとperlの設定が無いので新たに設定ファイルを作成する必要がある。

    Tools > Build System > New Build System… を選択
    SublimeText2 - New Build System...
    untitled.sublime-build が開かれるので編集する。

    {
        "cmd": ["perl", "-w", "$file"],
        "file_regex": ".* at (.*) line ([0-9]*)",
        "selector": "source.perl"
    }

    -w を -c にすると実行しないで文法チェックだけ行える。

    ファイル名を Perl.sublime-build に変更して Packages/Perl に保存する。
    Perl.sublime-buildの保存場所

    コードの実行

    ⌘+Bで実行可能です。
    SublimeText2 perl script 実行結果

    参考

    Sublime Text 2をMacで使う | Kitchen Garden Blog
    Perl Build System File for sublime text editor

    2013/3/14追記:

    PATHが通っていない問題を解消する

    perlのbuildシステムが使えるようになったけど、macだとpathが通っていないのでモジュールを使ったりする時にエラーになる。

    Sublime Text 2 と環境変数 を見ると環境変数を設定できるみたい。

    {
        ...
        "build_env":
        {
            "PATH": "/usr/local/bin:/usr/bin"
        },
        ...
    }

    のように build_env という項目を追加すればいいみたい。pathの確認はmacの環境ならターミナルで、

    $ echo $PATH
    /Developer/usr/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

    表示されたpathを “PATH”: に設定すればおk。設定ファイルは Preference > Settings – Userで表示されます。

    SublimeText2 Settings - User


    Filed under: Mac,メモ,開発環境

    Trackback Uri






    2013年 2月 12

    手軽に関連語を取得するモジュール – ダウンロードたけし(寅年)の日記

    Lingua::JA::Expand は愛用させて頂いているperl moduleですが、近年のAPI不正利用対策の影響でYahoo!APIの利用規約が変更になります。

  • 検索Web APIにて新プランをリリースしました – Yahoo! JAPAN Tech Blog
  • xデーは2013年3月31日。Yahoo!プレミアム会員だと500回/day。これではちょっとだけ少ないし…。 という事で、Lingua::JA::Expand::DataSource::xxx を書けば使えそうなので書いてみた。

  • clicktx/Lingua-JA-Expand-DataSource-GoogleWebSearch · GitHub
  • 基本的にはWeb::Scraperでレスポンスを解析しているだけ。使うには Lingua::JA::Expandを継承したMyExpandクラスを作って、datasourceメソッドをオーバーライドする。

    package MyExpand;
    
    use base qw(Lingua::JA::Expand);
    
    # method overriding.
    sub datasource {
        my $self = shift;
        $self->_class_loader( datasource => 'DataSource::GoogleWebSearch' );
    }

    問題点

    googleの規約には

    本サービスを不正に利用しないでください。たとえば、本サービスの妨害や、Google が提供するインターフェースおよび手順以外の方法による本サービスへのアクセスを試みてはなりません。

    とあります。しかし、以前の規約である利用規約のアーカイブには、

    5.3 Google が提供するインタフェース以外の手段で、本サービスのいずれにもアクセスしないこと(またはアクセスを試みないこと)に同意するものとします。ただし、Google との別個の契約において明確な許可を受けた場合は除きます。特に、ユーザーは、いかなる本サービスについても、いかなる自動化された方法(スクリプトやウェブ クローラーの利用によるものを含みます)によりアクセスせず、アクセスを試みないことに同意し、また、本サービスに関して提示されるいかなる robots.txt ファイルにおける指示に従うものとします。

    と記されていたものが削除されているので、getリクエストで(botがアクセスしても)なら良くなったとも見える。いずれにしろ解釈の違いでどっちとも取れそうな気はするけど、普通に考えればアウトかな。

    あと、とりあえずokだとしてもそこそこのリクエストでアクセス拒否されますので実用性に欠けます。

    google

    某中華製検索エンジンには利用規約にも書いていないので、使うならそっちの方がいいかもね。Web::Scraperのprocessをちょっと変えればすぐに出来るはず。

    関連リンク

  • Takeshi Miki / Lingua-JA-Expand – search.cpan.org

  • Filed under: perlモジュール

    Trackback Uri