SlideShare a Scribd company logo
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 EC2


2011年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 Grails




2011年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_Standard



2011年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/gdk48
2011年11月22日火曜日

More Related Content

Similar to GDK48総選挙の裏側

Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
Mori Shingo
 
Google container builderと友だちになるまで
Google container builderと友だちになるまでGoogle container builderと友だちになるまで
Google container builderと友だちになるまで
lestrrat
 
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
Kazumi IWANAGA
 
Riot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディングRiot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディング
Tsutomu Kawamura
 
Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514
junichi anno
 
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
Akihiro Suda
 
TECHTALK 20200825 RやPythonとの連携で実現するQlik Senseの高度な分析
TECHTALK 20200825 RやPythonとの連携で実現するQlik Senseの高度な分析TECHTALK 20200825 RやPythonとの連携で実現するQlik Senseの高度な分析
TECHTALK 20200825 RやPythonとの連携で実現するQlik Senseの高度な分析
QlikPresalesJapan
 
Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127
Shotaro Suzuki
 
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
Shinsuke Sugaya
 
View customize pluginを使いこなす
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなす
onozaty
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみた
Katsutoshi Nagaoka
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
Suguru Oho
 
分散バージョン管理システムって何なん 20101218
分散バージョン管理システムって何なん 20101218分散バージョン管理システムって何なん 20101218
分散バージョン管理システムって何なん 20101218
Takashi Okamoto
 
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
Katsutoshi Nagaoka
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
Kazuhiro Hara
 
Jenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdiJenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdi
昌桓 李
 
【Pycon2012】unittest嫌いがunitestをtesting
【Pycon2012】unittest嫌いがunitestをtesting【Pycon2012】unittest嫌いがunitestをtesting
【Pycon2012】unittest嫌いがunitestをtesting
ido_ojos_jp
 
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOpsGitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
Kazumi IWANAGA
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイ
Kazuhiro Hara
 

Similar to GDK48総選挙の裏側 (20)

Heroku Postgres
Heroku PostgresHeroku Postgres
Heroku Postgres
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
 
Google container builderと友だちになるまで
Google container builderと友だちになるまでGoogle container builderと友だちになるまで
Google container builderと友だちになるまで
 
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
 
Riot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディングRiot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディング
 
Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514
 
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
 
TECHTALK 20200825 RやPythonとの連携で実現するQlik Senseの高度な分析
TECHTALK 20200825 RやPythonとの連携で実現するQlik Senseの高度な分析TECHTALK 20200825 RやPythonとの連携で実現するQlik Senseの高度な分析
TECHTALK 20200825 RやPythonとの連携で実現するQlik Senseの高度な分析
 
Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127
 
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
 
View customize pluginを使いこなす
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなす
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみた
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
 
分散バージョン管理システムって何なん 20101218
分散バージョン管理システムって何なん 20101218分散バージョン管理システムって何なん 20101218
分散バージョン管理システムって何なん 20101218
 
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
Jenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdiJenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdi
 
【Pycon2012】unittest嫌いがunitestをtesting
【Pycon2012】unittest嫌いがunitestをtesting【Pycon2012】unittest嫌いがunitestをtesting
【Pycon2012】unittest嫌いがunitestをtesting
 
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOpsGitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイ
 

More from Kiyotaka Oku

Osaka Venture Meetup #3
Osaka Venture Meetup #3Osaka Venture Meetup #3
Osaka Venture Meetup #3
Kiyotaka Oku
 
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
Kiyotaka Oku
 
BaseScriptについて
BaseScriptについてBaseScriptについて
BaseScriptについて
Kiyotaka Oku
 
ミニ四駆ジャパンカップで勝つ方法を考える
ミニ四駆ジャパンカップで勝つ方法を考えるミニ四駆ジャパンカップで勝つ方法を考える
ミニ四駆ジャパンカップで勝つ方法を考える
Kiyotaka Oku
 
Jenkins plugin memo
Jenkins plugin memoJenkins plugin memo
Jenkins plugin memo
Kiyotaka Oku
 
Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介
Kiyotaka Oku
 
Griffon不定期便〜G*ワークショップ編〜
Griffon不定期便〜G*ワークショップ編〜Griffon不定期便〜G*ワークショップ編〜
Griffon不定期便〜G*ワークショップ編〜
Kiyotaka Oku
 
日本Grails/Groovyユーザーグループ
日本Grails/Groovyユーザーグループ日本Grails/Groovyユーザーグループ
日本Grails/Groovyユーザーグループ
Kiyotaka Oku
 
GroovyConsole2
GroovyConsole2GroovyConsole2
GroovyConsole2
Kiyotaka Oku
 
GroovyConsole
GroovyConsoleGroovyConsole
GroovyConsole
Kiyotaka Oku
 
JJUG CCC 2011 Spring
JJUG CCC 2011 SpringJJUG CCC 2011 Spring
JJUG CCC 2011 Spring
Kiyotaka Oku
 
Jenkinsプラグインの作り方
Jenkinsプラグインの作り方Jenkinsプラグインの作り方
Jenkinsプラグインの作り方
Kiyotaka Oku
 
Jenkins and Groovy
Jenkins and GroovyJenkins and Groovy
Jenkins and Groovy
Kiyotaka Oku
 
とある断片の超動的言語
とある断片の超動的言語とある断片の超動的言語
とある断片の超動的言語
Kiyotaka Oku
 

More from Kiyotaka Oku (20)

Osaka Venture Meetup #3
Osaka Venture Meetup #3Osaka Venture Meetup #3
Osaka Venture Meetup #3
 
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
 
BaseScriptについて
BaseScriptについてBaseScriptについて
BaseScriptについて
 
javafx-mini4wd
javafx-mini4wdjavafx-mini4wd
javafx-mini4wd
 
ミニ四駆ジャパンカップで勝つ方法を考える
ミニ四駆ジャパンカップで勝つ方法を考えるミニ四駆ジャパンカップで勝つ方法を考える
ミニ四駆ジャパンカップで勝つ方法を考える
 
Jenkins plugin memo
Jenkins plugin memoJenkins plugin memo
Jenkins plugin memo
 
Spockの基礎
Spockの基礎Spockの基礎
Spockの基礎
 
JUC2012
JUC2012JUC2012
JUC2012
 
Jenkins入門
Jenkins入門Jenkins入門
Jenkins入門
 
Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介
 
Griffon不定期便〜G*ワークショップ編〜
Griffon不定期便〜G*ワークショップ編〜Griffon不定期便〜G*ワークショップ編〜
Griffon不定期便〜G*ワークショップ編〜
 
日本Grails/Groovyユーザーグループ
日本Grails/Groovyユーザーグループ日本Grails/Groovyユーザーグループ
日本Grails/Groovyユーザーグループ
 
GroovyConsole2
GroovyConsole2GroovyConsole2
GroovyConsole2
 
GroovyConsole
GroovyConsoleGroovyConsole
GroovyConsole
 
JJUG CCC 2011 Spring
JJUG CCC 2011 SpringJJUG CCC 2011 Spring
JJUG CCC 2011 Spring
 
Jenkinsプラグインの作り方
Jenkinsプラグインの作り方Jenkinsプラグインの作り方
Jenkinsプラグインの作り方
 
Devsumi Openjam
Devsumi OpenjamDevsumi Openjam
Devsumi Openjam
 
Jenkins and Groovy
Jenkins and GroovyJenkins and Groovy
Jenkins and Groovy
 
とある断片の超動的言語
とある断片の超動的言語とある断片の超動的言語
とある断片の超動的言語
 
Mote Hudson
Mote HudsonMote Hudson
Mote Hudson
 

Recently uploaded

【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
Sony - Neural Network Libraries
 
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
Toru Tamaki
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
Takayuki Nakayama
 
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログLoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
CRI Japan, Inc.
 
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
Natsutani Minoru
 
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit IntroductionMatsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo Lab
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo Lab
 
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
Toru Tamaki
 
【JSAI2024】J-NER大規模言語モデルのための固有表現認識における拡張固有表現階層を考慮したベンチマークデータセット.pdf
【JSAI2024】J-NER大規模言語モデルのための固有表現認識における拡張固有表現階層を考慮したベンチマークデータセット.pdf【JSAI2024】J-NER大規模言語モデルのための固有表現認識における拡張固有表現階層を考慮したベンチマークデータセット.pdf
【JSAI2024】J-NER大規模言語モデルのための固有表現認識における拡張固有表現階層を考慮したベンチマークデータセット.pdf
ARISE analytics
 
20240717_IoTLT_vol113_kitazaki_v1___.pdf
20240717_IoTLT_vol113_kitazaki_v1___.pdf20240717_IoTLT_vol113_kitazaki_v1___.pdf
20240717_IoTLT_vol113_kitazaki_v1___.pdf
Ayachika Kitazaki
 
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ..."ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
たけおか しょうぞう
 
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
Sony - Neural Network Libraries
 
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
chisatotakane
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo Lab
 

Recently uploaded (14)

【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
 
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
 
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログLoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
 
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
 
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit IntroductionMatsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit Introduction
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
 
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
 
【JSAI2024】J-NER大規模言語モデルのための固有表現認識における拡張固有表現階層を考慮したベンチマークデータセット.pdf
【JSAI2024】J-NER大規模言語モデルのための固有表現認識における拡張固有表現階層を考慮したベンチマークデータセット.pdf【JSAI2024】J-NER大規模言語モデルのための固有表現認識における拡張固有表現階層を考慮したベンチマークデータセット.pdf
【JSAI2024】J-NER大規模言語モデルのための固有表現認識における拡張固有表現階層を考慮したベンチマークデータセット.pdf
 
20240717_IoTLT_vol113_kitazaki_v1___.pdf
20240717_IoTLT_vol113_kitazaki_v1___.pdf20240717_IoTLT_vol113_kitazaki_v1___.pdf
20240717_IoTLT_vol113_kitazaki_v1___.pdf
 
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ..."ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
 
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
 
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
 

GDK48総選挙の裏側

  • 2. 自己紹介 •運営レンジャー イエロー 2011年11月22日火曜日
  • 5. 仕様 •#gdk48かつGistのURLがあるTweetを集める •集めたGistを一覧する •Twitter認証したユーザがGistに投票できる 2011年11月22日火曜日
  • 8. 投票する Twitterアカウントで ログイン ログインすると 投票できる 2011年11月22日火曜日
  • 9. アーキテクチャ •Grails 1.3.7 •Amazon EC2 2011年11月22日火曜日
  • 10. 使ったプラグイン $ 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 Grails 2011年11月22日火曜日
  • 11. ボリューム $ 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日火曜日
  • 12. ツイートを取ってくる •Quartzプラグインを使って1分おきに Twitter検索 (q=#gdk48) •検索結果のツイートにGistのURLが含まれ るか? •短縮URLの問題 2011年11月22日火曜日
  • 13. 短縮URLを展開 •java.net.URL使ってヘッダだけ取得 •Locationヘッダの値を見る •GistへのURLか? さらに短縮URLか? 2011年11月22日火曜日
  • 14. /** * 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日火曜日
  • 15. 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日火曜日
  • 16. Gist連携 •Gistコード表示 •Description表示 2011年11月22日火曜日
  • 20. Description表示 scriptタグ埋め込みでは表示されない! 2011年11月22日火曜日
  • 21. Description表示 scriptタグ埋め込みでは表示されない! 2011年11月22日火曜日
  • 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日火曜日
  • 23. これで勝つる •Gist APIを使ってDescriptionをDBに登録 しておけばいい。 2011年11月22日火曜日
  • 24. 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日火曜日
  • 25. 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_Standard 2011年11月22日火曜日
  • 26. Gist API + JSONP •JSONPでクライアントからゴニョゴニョ すれば合法 2011年11月22日火曜日
  • 27. // 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日火曜日
  • 29. 感想 •CSSに時間がかかった。 •あのデザインでも自分の中では頑張った方 •困ったときのEC2 •PaaSよりIaaSの方が素直 •Grailsプラグインはチート杉 2011年11月22日火曜日
  • 30. 参考情報 •関谷さんの企画書 •http://www.slideshare.net/kazuchika/gdk48 •GDK48 •http://bit.ly/gdk48 •GDK48ソースコード •http://git.io/gdk48 2011年11月22日火曜日