2014年1月22日水曜日

Twitter4J で急に例外(TwitterException)が出るようになった件

タイトルの通り、開発中のアプリの Twitter 機能を久々に使ったところ
何をするにも TwitterException が発生し、全く使い物にならない状態と
なっていました。

 具体的には、
・OAuthAuthorization クラスの getOAuthRequestToken メソッド
・Twitter クラスの search メソッド
あたりを実行すると、

403:The request is understood, but it has been refused.

とか言われる始末。

わりと本気でパニックです。
何なんすか新年早々このタチの悪いドッキリは。
コレ頭にタライ落とされたほうがまだマシってもんです。

で、ネットを漁りまくったところ、

Restricting api.twitter.com to SSL/TLS traffic

要約:「2014/1/14以降、APIのアクセスはhttps限定にすっかんね。」

んな!?何コッソリ余計なことしてくれてんすか!!??



瞬間的に目の前にお花畑が広がりかけましたが、
まあ調べてみたら対応自体はそれほど難しくもないみたいで。

要は Configuration の UseSSL を true にしてやりゃいいみたいです。

参考) REST API, regarding 403 error code?

■認証オブジェクト作成(従来)
    Configuration conf = ConfigurationContext.getInstance();
    OAuthAuthorization oauth = new OAuthAuthorization(conf);

■認証オブジェクト作成(対応後)
    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setUseSSL(true);
    OAuthAuthorization oauth = new OAuthAuthorization(cb.build());


■検索等で使用する Twitter オブジェクト作成(従来)
    Twitter tw = new TwitterFactory().getInstance();

■検索等で使用する Twitter オブジェクト作成(対応後)
    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setUseSSL(true);
    Twitter tw = new TwitterFactory(cb.build()).getInstance();



ちなみに Twitter4J のバージョン 3.0.5 以降ならこの問題は
対応済みみたいです。

なのでライブラリ差し替え・リビルドでも対応できるんだとは思うけど、
開発中にサードパーティライブラリのバージョン変えるのって
他の挙動まで影響しないかなぁとかビビっちゃうあたりヘタレ全開。

2014年1月18日土曜日

TortoiseGit でのローカルリポジトリのブランチ削除方法

それなりの規模のソースコードを扱うようになるとバージョン管理というのは
けっこう重要になってきます。

・メジャーバージョンアップ向け修正と
・新機能追加のプロトタイプ版と
・急遽発生したバグフィックス版と

…とかいう分岐をいちいち物理的にフォルダ分けでなんかで
管理しようものならけっこうドエライことになります。


「今時そんな原始的なことやってるヤツいんのかよw」て、周りを見渡すと
ウチの会社へたすると半分くらいそんな感じだからもう目もあてらんない(ノ∀`)


で、私はとりあえずローカルでの管理に git を使ってるワケで。

git でのバージョン管理のベストプラクティス(運用)に関しては
まだまだ模索中ですが、このあたりは非常に参考になります。

見えないチカラ: A successful Git branching model を翻訳しました


------

んでタイトルの件。

Windows 環境で git を導入する場合、GUI クライアントでは
TortoiseGit というのがけっこう有名で使いやすいのですが、
使っているうちにふと。
 
ブランチを作成して、修正して、master にマージして、
いらないブランチは削除、…
…て、どっから削除すんのコレ???

この部分だけなぜか異様にわかりにくかったりしますが、
とりあえず以下の手順で削除可能なようです。

1.ログを表示



2.左上のブランチ名部分をクリック


3.削除したいブランチ名を右クリック→削除


て、実はもっとわかりやすいとこにあったりするのかなぁ…
基本的な機能だしもっとシンプルな方法ありそうな気もするけど。。。