Chonaso's Commentary

InternetやIT技術などについて知ったこと、試したこと、考えたことを書いていきます。

不作法なWebAPIにハマる

プロダクトコードなので詳細は非公開ですが、とあるパブリックじゃないWebAPIへのアクセスで激ハマりしたのでその記録などひとつ。

そのWebAPIの仕様書(のようなもの)にはレスポンス内の文字コードについての言及がなく、「メッセージは英語なのかな」って勝手に思い込んでいたのですが、先方の試験用環境にアクセスしたら思いっきりマルチバイト文字だった、というところから始まりました。

完全に文字化けしていてどうしようもない状態だったので、先方に「これ文字コード何ですか?」と確認したら「シフトJISです(ぺこり)」との回答。

ならば、ちょろっと.getBytesして文字コード変換すればいいかな、と思いましたが、妙な違和感。

そもそもhttpclient使っている系のライブラリでこの手の問題(文字化け)って出くわした(解決した)記憶がないのです。

続きを読む

twitter4jでハマったこと

社内のハッカソンTwitter(twitter4j)を使ったアプリを作りましたが、時間内に解決できなかった問題があって、調査の時間も取れずになかなか解決できずにいました。

問題というのはすぐにAPI制限がかかってしまうというものです。

429:Returned in API v1.1 when a request cannot be served due to the application's rate limit having been exhausted for the resource. See Rate Limiting in API v1.1.(https://dev.twitter.com/docs/rate-limiting/1.1)
message - Rate limit exceeded
code - 88
Relevant discussions can be found on the Internet at:
    http://www.google.co.jp/search?q=ec1fe56d or
    http://www.google.co.jp/search?q=1e3b4ab6
TwitterException{exceptionCode=[ec1fe56d-1e3b4ab6], statusCode=429, message=Rate limit exceeded, code=88, retryAfter=-1, rateLimitStatus=RateLimitStatusJSONImpl{remaining=0, limit=15, resetTimeInSeconds=1410595332, secondsUntilReset=864}, version=4.0.2}
    at twitter4j.HttpClientImpl.handleRequest(HttpClientImpl.java:163)
    at twitter4j.HttpClientBase.request(HttpClientBase.java:53)
    at twitter4j.HttpClientBase.get(HttpClientBase.java:71)
    at twitter4j.TwitterBaseImpl.fillInIDAndScreenName(TwitterBaseImpl.java:128)
    at twitter4j.TwitterImpl.verifyCredentials(TwitterImpl.java:545)
・・・

な感じで怒られます。

続きを読む

秋のJavascript祭り

秋のJavascript祭りに行ってきました。

最近、社内でもフロント周りのニーズが高まってきてることもあり、主に情報収集の一環です。

どうも参加者はデザイナー寄りな方々が多い様子。backbone.jsとかAngularJSあたりのSPAとかバインディング、あるいはnode.jsなどのサーバサイド的な話題はかなり少なめでした。

Javascriptは書けないけどjQueryは書けます」っていうのは「Rubyは書けないけどRailsなら書けます」的な感じなんですかね(適当)。

続きを読む

YAPC::Asia Tokyo 2014

YAPC::Asia Tokyo 2014に行ってきました。

いちおうJavaを生業にしてることになってるんですが、 日常的に書いてる(書き捨ててる)コードといえば今でもPerlだったりします。 CentOS系ならpythonもいいんですが、Perlはだいたい環境を選ばないのでその辺も便利です。

とはいえ、YAPCトークのお品書きを見てもあんまりPerlって感じじゃないですね。

1日目は午後から行ったんですが、人多過ぎでセッションやってる部屋に入れずノベルティ抱えて帰宅して出社。

2日目は前日の教訓から場所取りのために初回セッションの1時間くらい前に到着して待機。 「朝イチのセッションは集まり悪いですねー」とか言いながらセッション始まる頃には振り向くと人がギッシリ。

キャパが小さいなら規模の大きいカンファレンスでよくある、各セッション単位での事前登録制がよさそうです。

続きを読む

greasemonkeyで別ウィンドウを作って書き換える

社内のスケジューラがアレなんでgreasemonkeyでいじくりまくりなんですが、タイトルの通り「別ウィンドウを作って書き換える」っていうのをやりたくて、

素直に

function ababa(){
  var win = window.open("", "", "width=520, height=400");
  win.document.write("あばば");
}

setTimeout(ababa(), 3000);

ってやると、

続きを読む

nullを許容する2Way-SQL

別に意図したわけじゃないんですが、長い文章の記事しか書いてないせいで記事を書くハードルがやたら上がってしまっているので短い記事を増やしてハードルを下げようかと思います。

というわけで、最近Domaを使ったアプリのコーディングにちょっとだけ参加しているのでその辺の出来事。

続きを読む

第7回 渋谷Java Apache Shiroを使ってみた

渋谷JavaでLTさせていただきました。

第七回 #渋谷java - connpass

小規模な開発でApache Shiroを使ったので紹介と感想などを発表しました。 やっぱり駆け足になってしまった・・・。