2011/02/27

MacPortsで入れたmysqlの文字化け

MacPortsで入れたmysqlがnavicatやphpadminなどで文字化けする場合
my.cnfで文字コード指定をしてやる必要があります。
まず最初にmy.cnfがない場合はコピーしてきます。
sudo cp /opt/local/share/mysql5/mysql/my-small.cnf /opt/local/etc/mysql5/my.cnf
んでできたmy.cnfに下記の設定
sudo vi /opt/local/etc/mysql5/my.cnf
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
あとはmysqlの再起動。

それでも文字化けが出るようであればnavicatやphpadminの設定確認。
該当するdatabaseを右クリックしてdatabase propertiesを確認。

2011/02/15

Google Analytics API

Google AnalyticsはAPIを公開しているのでアクセスログを定期的に出力したりできます。
こんな感じ。

<?php
require_once 'googleanalytics.class.php';
try {
    // アカウント情報を設定
    $ga = new GoogleAnalytics('ID','PASS');

    // プロファイルIDを指定
    $ga->setProfile('ga:プロファイルID');

    // 期間を指定
    $yesterday = date("Y-m-d",strtotime("-1 day"));
    $lastweek = date("Y-m-d",strtotime("-1 week"));
    $ga->setDateRange($lastweek,$yesterday);

    // 日付別の総ページビューを取得
    $report = $ga->getReport(
        array(
            'dimensions'=>urlencode('ga:date'),
        'metrics'=>urlencode('ga:pageviews,ga:visits'),
            'sort'=>'ga:date'
        )
    );

    // 結果を出力
    $result = print_r($report, TRUE);

   // 件名
   $subject = 'GoogleAnalytics{$yesterday}';
   // 本文
   $mailbody = '{$result}';
   // メール送信
   mb_send_mail("宛先",$subject,$mailbody);

// 例外処理
} catch (Exception $e) {
    print 'Error: ' . $e->getMessage();
}

?>
googleanalytics.class.phpと参考情報は下記から
http://www.askaboutphp.com/63/google-analytics-api-class-for-php.html

2011/02/01

Ruby1.8.7 tlsmailを使う

rubyでgmail送信を行うにはtlsmailを使うのが楽です。
# -*- coding: utf-8 -*-
require "rubygems"
require "tlsmail"
require "time"

Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
Net::SMTP.start("smtp.gmail.com", "587", "localhost", "Gmailアカウント", "パスワード", :plain) do |smtp|
  smtp.send_message msg, "送信元アドレス", "送信先アドレス"
end
メッセージの中身(msg)は下記のように指定

msg =<<EOF
From: xxx@gmail.com
To: xxx@xxx.jp
Subject: TEST
Date: #{Time.now.rfc2822}

TEST
\r\n
EOF
ちなみに
コマンド文字列および正規表現の中では#{式}という形式で式の内容(を文字列化したもの)を埋め込むことができます。
http://www.ruby-lang.org/ja/man/html/_A5EAA5C6A5E9A5EB.html#a.bc.b0.c5.b8.b3.ab

($ruby = "RUBY"の場合)



   "my name is #{$ruby}" #=> "my name is RUBY"

#{Time.now.rfc2822}の部分ね。

2月2日 追記
ちなみに本文になにか変数を入れたい場合tmailを使う方法もある。
tmailはメールの箱だけ用意するってイメージで、その場合は下記のとおり。
require 'tmail'
require "tlsmail"

    # tmailでメールを作成
    mail = TMail::Mail.new
    mail.to = ''
    mail.from = ''
    mail.subject = 
    mail.date = Time.now
    mail.mime_version = '1.0'
    mail.set_content_type 'text', 'plain', {'charset'=>'utf-8'}
    mail.body = result.items

    # メールはNet::SMTPで送信。
    Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
    Net::SMTP.start( "smtp.gmail.com",  587, "localhost.localdomain", "", "", "plain"){ |smtp| 
         smtp.sendmail(mail.encoded, mail.from, mail.to) 

2010/12/20

VirtualBoxでホストOSからゲストOSに繋ぐ方法

VirutalBoxを使ってゲストOSにホストOSからアクセスする方法

1.VirtualBoxをSunのサイトからダウンロードして、普通に環境構築。
2.仮想マシンを作成し、ネットワークの設定でアダプタ1で”NAT”を、アダプタ2に”ホストオンリーアダプタ”を選択。

以上。NATの方で普通にゲストOSからインターネット接続できます。ゲストOSに繋ぎたい場合はホストオンリーアダプターのIPにホストOSからアクセスすればOK。初期のままであればDHCPによって192.168.56.101が割り当てられるはず。あとは固定にするも自由。簡単でしょ。

windowsのコマンドプロンプトのビープ音を消す

net stop beep
うるさい。以上。

2010/10/13

Twitter Botの登録(AccessTokenの発行)

http://dev.twitter.com/からログイン
http://dev.twitter.com/apps/からアプリケーション登録
Consumer keyとConsumer secretを取得

Access tokenとAccess secret取得には
http://gist.github.com/388067が便利なのでgitからclone
gem twitter oauthが必要

ruby make_token.rbをする
Consumer keyとConsumer secretを入力
表示されるURLにアクセスしてPINを入手
Access tokenとAccess secret取得

あとはこんな感じで
base = TwitterOAuth::Client.new({
  :consumer_key=>'',
  :consumer_secret=>'',
  :token=>'',
  :secret=>''
})

#base.update("もう"+Time.now.strftime("%H時%M分")+"か。。。。。" )
bit.lyを使うなら
def shorten(long_url)
  id = ''
  api_key = ''
  version = '2.0.1'
  query = "version=#{version}&longUrl=#{long_url}&login=#{id}&apiKey=#{api_key}"
  result = JSON.parse(Net::HTTP.get("api.bit.ly", "/shorten?#{query}"))
  result['results'].each_pair {|long_url, value|
 return value['shortUrl']
  }
end

非常に分かりやすい参考動画 http://www.youtube.com/watch?v=vTMuI4ln6Rc

2010/09/07

GAEでのアップデートエラー

GAEでアップデート中にキャンセル等をすると次回以降エラーでアップデートできなくなるときがあります。エラー内容は次の様な形でrollbackしろとの指示が出ます。
undo the transaction with appcfg.py's "rollback" command.
その場合はターミナルから次のコマンドを入力します。
appcfg.py -verbose --no_cookies --email=アドレス --passin rollback 対象のディレクトリ