Lolidroid.txt

メモ書きです。

平成28年度 秋期情報処理技術者試験を受験した

先週10月16日、平成28年度 秋期情報処理技術者試験を受験した。

ただの勉強不足+知識詰めるだけじゃ解答しにくい問題もあったように思う。 今後は演習中心に勉強する。

使った教材

金を惜しまないスタイルでやっていくのがいいと思う。


2017/1/3 追記

大して勉強してないけど受かってた。

GitHub Supportから早く返事をもらう方法

GitHubのフォームとメールの両方で問い合わせても返事がなかなか来ない場合、GitHub SupportのTwitterアカウント(@GitHubHelp)へリプライをするとすぐ返事を貰えるかもしれません。

自分の場合、1か月ほどアクションのなかった問い合わせ(フォームとメール)について即日返事をもらえました。

この後、メールで返信が来ていました。
返事が来なかったのは、私の送ったメールが独自ドメインで迷惑メールフォルダに振り分けられていたためでした。
見てほしいメールを送る場合はGmailなどを使いましょう(教訓)。

おまけ(問い合わせた内容)

GitHubアカウントで既に使われていたユーザー名を解放してもらいました。

GitHubにはName Squatting Policyという規約があり、欲しいユーザー名が使われていてもそのアカウントがアクティブでなければ解放してもらうことができます。

Twitterへ自動ログイン -> oauth認証 

複数Twitterアカウントのフォロー管理や投稿などを、まとめて管理したいとします。
これらの作業を自動化するためにはTwitterが公開するAPIを利用するのがよいでしょう。 しかし、これを利用する場合、最初にOAuth認証が必須でこれには手動ブラウザ操作を伴います。

そこで、OAuth認証時のブラウザ操作をrubyMechanizeを使って自動化します。

Mechanizeはgem install 'mechanize'なりしてインストールしてください。

【注意】 本記事の内容を試す場合は自己責任にてお願いします。またTwitter webの仕様変更などで動作しなくなる場合があります。

下記のようなコードを作成します。

7,8行目にはTwitterアプリケーションキー(consumer key & consumer secret key)を設定してください。
アプリケーションキーhttps://apps.twitter.com/などから入手してください。
今回はPIN認証を自動化します。

require 'optparse'
require 'mechanize'
require 'oauth'
require 'oauth/consumer'

# アプリケーションキーを設定してください
CONSUMER_KEY    = '<consumer key >'
CONSUMER_SECRET = '<consumer secret key>'

# Parse Option 
args = {}
OptionParser.new do |parser|
    parser.on('-u', '--username USERNAME'){|v| args[:username] = v}
    parser.on('-p', '--password PASSWORD'){|v| args[:password] = v}
    parser.parse!(ARGV)
end

username = args[:username]
password = args[:password]

agent = Mechanize.new

agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
agent.follow_meta_refresh = true
agent.user_agent = 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'

# Login to Twitter
page = agent.get("https://twitter.com/")

form = page.forms[1]
form["session[username_or_email]"] = username
form["session[password]"] = password
page = form.submit

# Get Request token (use Twitter API)
consumer=OAuth::Consumer.new( CONSUMER_KEY,CONSUMER_SECRET, {
    :site=>"https://api.twitter.com"
})
request_token=consumer.get_request_token
auth_url = request_token.authorize_url

# Open request url
page = agent.get(auth_url).form_with(:id =>'oauth_form').submit 

# Parse PIN code
code = page.at('code').content

# Send PIN code
access_token = request_token.get_access_token(:oauth_verifier => code)

puts access_token.token
puts access_token.secret

以下のようにコマンド引数を与えて実行すると標準出力にアクセスキーが出力されます。

ruby twiauth.rb -u <ユーザ名> -p <パスワード>

あとはよしなに。