GDK48総選挙の裏側
Upcoming SlideShare
Loading in...5
×
 

GDK48総選挙の裏側

on

  • 1,853 views

 

Statistics

Views

Total Views
1,853
Views on SlideShare
1,002
Embed Views
851

Actions

Likes
0
Downloads
1
Comments
0

5 Embeds 851

http://d.hatena.ne.jp 801
http://orangeclover.hatenablog.com 30
http://webcache.googleusercontent.com 11
http://a0.twimg.com 7
http://coderwall.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    GDK48総選挙の裏側 GDK48総選挙の裏側 Presentation Transcript

    • GDK48総選挙の裏側2011年11月22日火曜日
    • 自己紹介 •運営レンジャー イエロー2011年11月22日火曜日
    • 運営レンジャー2011年11月22日火曜日
    • GDK48総選挙アプリ2011年11月22日火曜日
    • 仕様 •#gdk48かつGistのURLがあるTweetを集める •集めたGistを一覧する •Twitter認証したユーザがGistに投票できる2011年11月22日火曜日
    • Tweetを集める2011年11月22日火曜日
    • 一覧する2011年11月22日火曜日
    • 投票する Twitterアカウントで ログイン ログインすると 投票できる2011年11月22日火曜日
    • アーキテクチャ •Grails 1.3.7 •Amazon EC22011年11月22日火曜日
    • 使ったプラグイン $ grails list-plugins -installed Plug-ins you currently have installed are listed below: ------------------------------------------------------------- blueprint 1.0.2 -- Blueprint CSS framework hibernate 1.3.7 -- Hibernate for Grails jquery 1.6.1.1 -- JQuery for Grails quartz 0.4.2 -- This plugin adds Quartz job scheduling resources 1.1.1 -- Resources spring-security-core 1.2.4 -- Spring Security Core Plugin spring-security-twitter 0.3.4 -- Twitter authentication for Spring tomcat 1.3.7 -- Apache Tomcat plugin for Grails2011年11月22日火曜日
    • ボリューム $ grails stats +----------------------+-------+-------+ | Name | Files | LOC | +----------------------+-------+-------+ | Controllers | 5 | 141 | | Domain Classes | 6 | 113 | | Jobs | 1 | 44 | | Unit Tests | 5 | 102 | +----------------------+-------+-------+ | Totals | 17 | 400 | +----------------------+-------+-------+2011年11月22日火曜日
    • ツイートを取ってくる •Quartzプラグインを使って1分おきに Twitter検索 (q=#gdk48) •検索結果のツイートにGistのURLが含まれ るか? •短縮URLの問題2011年11月22日火曜日
    • 短縮URLを展開 •java.net.URL使ってヘッダだけ取得 •Locationヘッダの値を見る •GistへのURLか? さらに短縮URLか?2011年11月22日火曜日
    • /** * URLからGistの番号を取得。 * URLがGistのURLじゃなかったらnullを返す。 */ private Long getGistNo(String url, tryCount = 0) { if (tryCount >= MAX_TRY) { return null } def m = url =~ GIST_URL if (m) { return m[0][1].toLong() } else { def conn = new URL(url).openConnection() conn.followRedirects = false def location = conn.getHeaderField(Location) return location ? getGistNo(location, ++tryCount) : null } }2011年11月22日火曜日
    • Twitter認証 $ grails install-plugin spring-security-core $ grails s2-quickstart $ grails install-plugin spring-security-twitter $ grails s2-init-twitter コマンド4つでほぼ完了! <twitterAuth:button/>2011年11月22日火曜日
    • Gist連携 •Gistコード表示 •Description表示2011年11月22日火曜日
    • Gistコード表示2011年11月22日火曜日
    • Gistコード表示2011年11月22日火曜日
    • scriptタグだけ<script src="https://gist.github.com/1197737.js"></script>2011年11月22日火曜日
    • Description表示 scriptタグ埋め込みでは表示されない!2011年11月22日火曜日
    • Description表示 scriptタグ埋め込みでは表示されない!2011年11月22日火曜日
    • Gist API v3 •http://developer.github.com/v3/ •Gistの情報を取得できるAPI $ curl https://api.github.com/gists/1341145 { "description": "クソゲーによる自己紹介(by uehaj)", "created_at": "2011-11-05T05:26:07Z", "forks": [ ], ... }2011年11月22日火曜日
    • これで勝つる •Gist APIを使ってDescriptionをDBに登録 しておけばいい。2011年11月22日火曜日
    • https://api.github.com/robots.txt User-agent: Googlebot Disallow: /tarball/ Disallow: /zipball/ ... User-agent: msnbot Disallow: /tarball/ Disallow: /zipball/ ... User-agent: * Disallow: /2011年11月22日火曜日
    • Robots Exclusion Standard ウェブサイトの所有者がボットに対して指示したい場合、そのウェブサイトの階層のルートに robots.txt というテ キストファイルを置く(例えば、www.example.com/robots.txt)。サイト側の指示に従う選択をしているボットは、 まずこのファイルにアクセスし、その指示を読み込んで、それに従ってそのウェブサイトの他のファイルの読み込 みを行う。このファイルがない場合、ボットはそのサイトの所有者が特に何も指示していないと判断する。 robots.txt はボットに対して特定のファイルやディレク トリを検索しないよう指示する。これは例えば、検索エンジンからプライバシー に関わる情報を守る場合、指定したファイルやディレクトリの内容がサイトの分類をする際に誤解を与える虞があ る場合、特定のアプリケーションのみが読み込むことを意図したデータの場合などがある。 下位ドメインがあるウェブサイトでは、各下位ドメインごとに robots.txt ファイルが必要である。example.com に robots.txt があっても、a.example.com になければ、example.com の robots.txt の内容は a.example.com には適用されな い。 http://ja.wikipedia.org/wiki/Robots_Exclusion_Standard2011年11月22日火曜日
    • Gist API + JSONP •JSONPでクライアントからゴニョゴニョ すれば合法2011年11月22日火曜日
    • // HTML <span id="desc-1197737" class="description"></span> // JavaScript $(function() { $(.description).each(function() { var span = $(this) var gistNo = span.attr(id).match(/desc-(d+)/)[1] $.getJSON( https://api.github.com/gists/+gistNo+?callback=?, function(resp) { var description = resp.data.description || <No description> if (resp.data.user) { description += (by +resp.data.user.login+) } span.text(description) } ) }) })2011年11月22日火曜日
    • 2011年11月22日火曜日
    • 感想 •CSSに時間がかかった。 •あのデザインでも自分の中では頑張った方 •困ったときのEC2 •PaaSよりIaaSの方が素直 •Grailsプラグインはチート杉2011年11月22日火曜日
    • 参考情報 •関谷さんの企画書 •http://www.slideshare.net/kazuchika/gdk48 •GDK48 •http://bit.ly/gdk48 •GDK48ソースコード •http://git.io/gdk482011年11月22日火曜日