tag:blogger.com,1999:blog-30792024481826841622024-02-19T21:26:34.594+09:00Road to Happy EngineeriPhone・Androidアプリ開発、クラウド、Webサービスについて綴ります。<br>
Jリーグアプリ「スマートJ」シリーズ、「レッズマイライフ」開発者。Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.comBlogger78125tag:blogger.com,1999:blog-3079202448182684162.post-30145904521550161752017-08-22T21:54:00.004+09:002017-08-22T21:58:38.927+09:00MySQLで日付から「○月第○週」を求める方法MySQLで日付から「○月第○週」を求める方法のメモ。<br />
<br />
-- テスト用テーブル・データ作成<br />
create table test.weektest (date1 date primary key);<br />
<br />
insert into test.weektest values('2017/06/01');<br />
insert into test.weektest values('2017/06/02');<br />
insert into test.weektest values('2017/06/03');<br />
insert into test.weektest values('2017/06/04');<br />
insert into test.weektest values('2017/06/05');<br />
insert into test.weektest values('2017/06/06');<br />
insert into test.weektest values('2017/06/07');<br />
insert into test.weektest values('2017/06/08');<br />
insert into test.weektest values('2017/06/09');<br />
insert into test.weektest values('2017/06/10');<br />
insert into test.weektest values('2017/06/11');<br />
insert into test.weektest values('2017/06/12');<br />
insert into test.weektest values('2017/06/13');<br />
insert into test.weektest values('2017/06/14');<br />
insert into test.weektest values('2017/06/15');<br />
insert into test.weektest values('2017/06/16');<br />
insert into test.weektest values('2017/06/17');<br />
insert into test.weektest values('2017/06/18');<br />
insert into test.weektest values('2017/06/19');<br />
insert into test.weektest values('2017/06/20');<br />
insert into test.weektest values('2017/06/21');<br />
insert into test.weektest values('2017/06/22');<br />
insert into test.weektest values('2017/06/23');<br />
insert into test.weektest values('2017/06/24');<br />
insert into test.weektest values('2017/06/25');<br />
insert into test.weektest values('2017/06/26');<br />
insert into test.weektest values('2017/06/27');<br />
insert into test.weektest values('2017/06/28');<br />
insert into test.weektest values('2017/06/29');<br />
insert into test.weektest values('2017/06/30');<br />
insert into test.weektest values('2017/07/01');<br />
insert into test.weektest values('2017/07/02');<br />
insert into test.weektest values('2017/07/03');<br />
insert into test.weektest values('2017/07/04');<br />
insert into test.weektest values('2017/07/05');<br />
insert into test.weektest values('2017/07/06');<br />
insert into test.weektest values('2017/07/07');<br />
insert into test.weektest values('2017/07/08');<br />
insert into test.weektest values('2017/07/09');<br />
insert into test.weektest values('2017/07/10');<br />
insert into test.weektest values('2017/07/11');<br />
insert into test.weektest values('2017/07/12');<br />
insert into test.weektest values('2017/07/13');<br />
insert into test.weektest values('2017/07/14');<br />
insert into test.weektest values('2017/07/15');<br />
insert into test.weektest values('2017/07/16');<br />
insert into test.weektest values('2017/07/17');<br />
insert into test.weektest values('2017/07/18');<br />
insert into test.weektest values('2017/07/19');<br />
insert into test.weektest values('2017/07/20');<br />
insert into test.weektest values('2017/07/21');<br />
insert into test.weektest values('2017/07/22');<br />
insert into test.weektest values('2017/07/23');<br />
insert into test.weektest values('2017/07/24');<br />
insert into test.weektest values('2017/07/25');<br />
insert into test.weektest values('2017/07/26');<br />
insert into test.weektest values('2017/07/27');<br />
insert into test.weektest values('2017/07/28');<br />
insert into test.weektest values('2017/07/29');<br />
insert into test.weektest values('2017/07/30');<br />
insert into test.weektest values('2017/07/31');<br />
insert into test.weektest values('2017/08/01');<br />
insert into test.weektest values('2017/08/02');<br />
insert into test.weektest values('2017/08/03');<br />
insert into test.weektest values('2017/08/04');<br />
insert into test.weektest values('2017/08/05');<br />
insert into test.weektest values('2017/08/06');<br />
insert into test.weektest values('2017/08/07');<br />
insert into test.weektest values('2017/08/08');<br />
insert into test.weektest values('2017/08/09');<br />
insert into test.weektest values('2017/08/10');<br />
<br />
<span style="color: blue; font-size: medium;">SELECT</span><br />
<span style="color: blue; font-size: medium;">date1</span><br />
<span style="color: blue; font-size: medium;">,CONCAT(MONTH(ADDDATE(date1, weekday(date1) * -1))</span><br />
<span style="color: blue; font-size: medium;"> , '月第'</span><br />
<span style="color: blue; font-size: medium;"> ,
FLOOR((DAYOFMONTH(ADDDATE(date1, weekday(date1) * -1))-1)/7)+1, '週') </span><br />
<span style="color: blue; font-size: medium;">AS
WEEK</span><br />
<span style="color: blue; font-size: medium;">FROM test.weektest</span><br />
<span style="color: blue; font-size: medium;">ORDER BY date1;</span><br />
<br />
↓のような結果が得られる。月曜始まりとして、ある日付の週の月曜日がある月の第○週を返す。<br />
<br />
date1<span style="white-space: pre;"> </span>WEEK<br />
2017/06/01 5月第5週<br />
2017/06/02 5月第5週<br />
2017/06/03 5月第5週<br />
2017/06/04 5月第5週<br />
2017/06/05 6月第1週<br />
2017/06/06 6月第1週<br />
2017/06/07 6月第1週<br />
2017/06/08 6月第1週<br />
2017/06/09 6月第1週<br />
2017/06/10 6月第1週<br />
2017/06/11 6月第1週<br />
2017/06/12 6月第2週<br />
2017/06/13 6月第2週<br />
2017/06/14 6月第2週<br />
2017/06/15 6月第2週<br />
2017/06/16 6月第2週<br />
2017/06/17 6月第2週<br />
2017/06/18 6月第2週<br />
2017/06/19 6月第3週<br />
2017/06/20 6月第3週<br />
2017/06/21 6月第3週<br />
2017/06/22 6月第3週<br />
2017/06/23 6月第3週<br />
2017/06/24 6月第3週<br />
2017/06/25 6月第3週<br />
2017/06/26 6月第4週<br />
2017/06/27 6月第4週<br />
2017/06/28 6月第4週<br />
2017/06/29 6月第4週<br />
2017/06/30 6月第4週<br />
2017/07/01 6月第4週<br />
2017/07/02 6月第4週<br />
2017/07/03 7月第1週<br />
2017/07/04 7月第1週<br />
2017/07/05 7月第1週<br />
2017/07/06 7月第1週<br />
2017/07/07 7月第1週<br />
2017/07/08 7月第1週<br />
2017/07/09 7月第1週<br />
2017/07/10 7月第2週<br />
2017/07/11 7月第2週<br />
2017/07/12 7月第2週<br />
2017/07/13 7月第2週<br />
2017/07/14 7月第2週<br />
2017/07/15 7月第2週<br />
2017/07/16 7月第2週<br />
2017/07/17 7月第3週<br />
2017/07/18 7月第3週<br />
2017/07/19 7月第3週<br />
2017/07/20 7月第3週<br />
2017/07/21 7月第3週<br />
2017/07/22 7月第3週<br />
2017/07/23 7月第3週<br />
2017/07/24 7月第4週<br />
2017/07/25 7月第4週<br />
2017/07/26 7月第4週<br />
2017/07/27 7月第4週<br />
2017/07/28 7月第4週<br />
2017/07/29 7月第4週<br />
2017/07/30 7月第4週<br />
2017/07/31 7月第5週<br />
2017/08/01 7月第5週<br />
2017/08/02 7月第5週<br />
2017/08/03 7月第5週<br />
2017/08/04 7月第5週<br />
2017/08/05 7月第5週<br />
2017/08/06 7月第5週<br />
2017/08/07 8月第1週<br />
2017/08/08 8月第1週<br />
2017/08/09 8月第1週<br />
2017/08/10 8月第1週<br />
<br />
<div>
<br /></div>
<br />Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com1tag:blogger.com,1999:blog-3079202448182684162.post-82984372537245444882017-03-16T09:11:00.002+09:002017-03-16T09:12:15.298+09:00AIが人に代わる未来は来ない<h1 class="article-title" style="border: 0px; color: #131313; font-family: "Hiragino Sans", ヒラギノ角ゴシック, "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", Meiryo, メイリオ, Verdana, "MS Pゴシック", sans-serif; font-stretch: inherit; font-variant-numeric: inherit; line-height: 1.267; margin: 0px 0px 0.6em; padding: 0px; vertical-align: baseline;">
<span style="font-size: large;"><a href="http://diamond.jp/articles/-/120967" target="_blank">グーグルの研究本部長が予言「AIが人に代わる未来は来ない」</a></span></h1>
<div>
を読んだ。</div>
<blockquote class="tr_bq">
<span style="background-color: #f3f3f3;">人間が認識しておかなければならないのは、こういったモノは人間が使えるツールであって、われわれがやってきたことにとって代わる、完全に代替するものではないということです。</span></blockquote>
<br />
<br />
常々思ってたことなのでGoogleの研究本部長が言ってくれてスッキリした。<br />
<br />
技術者がAIを進化させて、人々がうまく使いこなせるようになる事は意味があるけど、<br />
お任せってわけにはなかなかいかないでしょう。<br />
<br />
<br />
<br />
まあでも100年後どうなってるかは分からないけどね。<br />
<br />
<br />
<br />Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-50914195496659225832017-03-01T11:11:00.001+09:002017-03-01T11:12:06.245+09:00最近読んだものメモ<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif; font-size: large;">Spring Boot解説第2回 (IDEの構築とHello World)</span><br />
<a data-saferedirecturl="https://www.google.com/url?hl=ja&q=http://qiita.com/TEBASAKI/items/a30a7daf11cdb51272fb&source=gmail&ust=1488419934644000&usg=AFQjCNF4TpY8w32jhKTInxrLErG-2Zzpfw" href="http://qiita.com/TEBASAKI/items/a30a7daf11cdb51272fb" rel="noreferrer" style="background-color: white; color: #1155cc; font-family: arial, sans-serif;" target="_blank"><span style="font-size: large;">http://qiita.com/TEBASAKI/<wbr></wbr>items/a30a7daf11cdb51272fb</span></a><br />
<span style="font-size: large;"><br style="background-color: white; color: #222222; font-family: arial, sans-serif;" /></span>
<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif; font-size: large;">Spring Boot 使い方メモ</span><br />
<a data-saferedirecturl="https://www.google.com/url?hl=ja&q=http://qiita.com/opengl-8080/items/05d9490d6f0544e2351a&source=gmail&ust=1488419934645000&usg=AFQjCNFiQuNXYeBBLkH72hlK9Aw9aR92Fg" href="http://qiita.com/opengl-8080/items/05d9490d6f0544e2351a" rel="noreferrer" style="background-color: white; color: #1155cc; font-family: arial, sans-serif;" target="_blank"><span style="font-size: large;">http://qiita.com/opengl-8080/<wbr></wbr>items/05d9490d6f0544e2351a</span></a><br />
<span style="font-size: large;"><br style="background-color: white; color: #222222; font-family: arial, sans-serif;" /></span>
<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif; font-size: large;">Spring MVCのコントローラでの戻り値いろいろ</span><br />
<a data-saferedirecturl="https://www.google.com/url?hl=ja&q=http://qiita.com/tag1216/items/3680b92cf96eb5a170f0&source=gmail&ust=1488419934645000&usg=AFQjCNF2nwVexSjVwwioQVzJnknyWaqjtg" href="http://qiita.com/tag1216/items/3680b92cf96eb5a170f0" rel="noreferrer" style="background-color: white; color: #1155cc; font-family: arial, sans-serif;" target="_blank"><span style="font-size: large;">http://qiita.com/tag1216/<wbr></wbr>items/3680b92cf96eb5a170f0</span></a><br />
<span style="font-size: large;"><br style="background-color: white; color: #222222; font-family: arial, sans-serif;" /></span>
<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif; font-size: large;">Spring4勉強会 第三回(Validation)</span><br />
<a data-saferedirecturl="https://www.google.com/url?hl=ja&q=http://qiita.com/yu_eguchi/items/5a1b2ae46ff803b020bf&source=gmail&ust=1488419934645000&usg=AFQjCNGLni4Sm5f4Hwvng5GPJ1Pi-EgRmw" href="http://qiita.com/yu_eguchi/items/5a1b2ae46ff803b020bf" rel="noreferrer" style="background-color: white; color: #1155cc; font-family: arial, sans-serif;" target="_blank"><span style="font-size: large;">http://qiita.com/yu_eguchi/<wbr></wbr>items/5a1b2ae46ff803b020bf</span></a><br />
<span style="font-size: large;"><br style="background-color: white; color: #222222; font-family: arial, sans-serif;" /></span>
<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif; font-size: large;">Thymeleafチートシート</span><br />
<a data-saferedirecturl="https://www.google.com/url?hl=ja&q=http://qiita.com/NagaokaKenichi/items/c6d1b76090ef5ef39482&source=gmail&ust=1488419934645000&usg=AFQjCNFaJ-kCGGVrrwRbCW93Ven7Sd6jjw" href="http://qiita.com/NagaokaKenichi/items/c6d1b76090ef5ef39482" rel="noreferrer" style="background-color: white; color: #1155cc; font-family: arial, sans-serif;" target="_blank"><span style="font-size: large;">http://qiita.com/<wbr></wbr>NagaokaKenichi/items/<wbr></wbr>c6d1b76090ef5ef39482</span></a><br />
<span style="font-size: large;"><br style="background-color: white; color: #222222; font-family: arial, sans-serif;" /></span>
<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif; font-size: large;">Spring BootでSpring SecurityのCSRF対策を使う</span><br />
<a data-saferedirecturl="https://www.google.com/url?hl=ja&q=http://qiita.com/nenokido2000/items/22a97a26a5858ddb164f&source=gmail&ust=1488419934645000&usg=AFQjCNGsISENwrBTuDpUxPK2o0jXX8Kg-g" href="http://qiita.com/nenokido2000/items/22a97a26a5858ddb164f" rel="noreferrer" style="background-color: white; color: #1155cc; font-family: arial, sans-serif;" target="_blank"><span style="font-size: large;">http://qiita.com/nenokido2000/<wbr></wbr>items/22a97a26a5858ddb164f</span></a><br />
<span style="font-size: large;"><br style="background-color: white; color: #222222; font-family: arial, sans-serif;" /></span>
<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif; font-size: large;">OkHttp (POST送信)</span><br />
<a data-saferedirecturl="https://www.google.com/url?hl=ja&q=http://square.github.io/okhttp/&source=gmail&ust=1488419934645000&usg=AFQjCNFhwpQBfK0QrdiwD8sUBKSC910c0A" href="http://square.github.io/okhttp/" rel="noreferrer" style="background-color: white; color: #1155cc; font-family: arial, sans-serif;" target="_blank"><span style="font-size: large;">http://square.github.io/<wbr></wbr>okhttp/</span></a><br />
<span style="font-size: large;"><br style="background-color: white; color: #222222; font-family: arial, sans-serif;" /></span>
<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif; font-size: large;">CentOS6.7 + Java 1.8 + Tomcat 8 の環境を作るには</span><br />
<a data-saferedirecturl="https://www.google.com/url?hl=ja&q=http://qiita.com/hirohiro77/items/893be0dea507925f6322&source=gmail&ust=1488419934645000&usg=AFQjCNG1q6tL_-zwq-poQ5WK5-kbJa4R_A" href="http://qiita.com/hirohiro77/items/893be0dea507925f6322" rel="noreferrer" style="background-color: white; color: #1155cc; font-family: arial, sans-serif;" target="_blank"><span style="font-size: large;">http://qiita.com/hirohiro77/<wbr></wbr>items/893be0dea507925f6322</span></a><br />
<span style="font-size: large;"><br style="background-color: white; color: #222222; font-family: arial, sans-serif;" /></span>
<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif; font-size: large;">CentOSでサーバー公開するためのセキュリティ設定メモ</span><br />
<a data-saferedirecturl="https://www.google.com/url?hl=ja&q=http://qiita.com/narumi_/items/179048afb48f64f45c6e&source=gmail&ust=1488419934645000&usg=AFQjCNG7eE49Hld8-IsRDdp7zhtlZlzbHg" href="http://qiita.com/narumi_/items/179048afb48f64f45c6e" rel="noreferrer" style="background-color: white; color: #1155cc; font-family: arial, sans-serif;" target="_blank"><span style="font-size: large;">http://qiita.com/narumi_/<wbr></wbr>items/179048afb48f64f45c6e</span></a><br />
<span style="font-size: large;"><br style="background-color: white; color: #222222; font-family: arial, sans-serif;" /></span>
<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif; font-size: large;">鍵認証の設定をしてパスワードログインを無効にするまで</span><br />
<a data-saferedirecturl="https://www.google.com/url?hl=ja&q=http://qiita.com/nama/items/54e8f62bfe835bf24a4c&source=gmail&ust=1488419934645000&usg=AFQjCNEeb_cu8ysBQiziFe19Z5pRd4H4Lw" href="http://qiita.com/nama/items/54e8f62bfe835bf24a4c" rel="noreferrer" style="background-color: white; color: #1155cc; font-family: arial, sans-serif;" target="_blank"><span style="font-size: large;">http://qiita.com/nama/items/<wbr></wbr>54e8f62bfe835bf24a4c</span></a><br />
<span style="font-size: large;"><br style="background-color: white; color: #222222; font-family: arial, sans-serif;" /></span>
<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif; font-size: large;">AWSのApache2.4の初期設定とセキュリティ設定</span><br />
<a data-saferedirecturl="https://www.google.com/url?hl=ja&q=http://qiita.com/shojimotio/items/41a74f314f3e47c018a5&source=gmail&ust=1488419934645000&usg=AFQjCNGbnhJFTBPuofOd_iql-033uYJB5g" href="http://qiita.com/shojimotio/items/41a74f314f3e47c018a5" rel="noreferrer" style="background-color: white; color: #1155cc; font-family: arial, sans-serif;" target="_blank"><span style="font-size: large;">http://qiita.com/shojimotio/<wbr></wbr>items/41a74f314f3e47c018a5</span></a><br />
<span style="font-size: large;"><br style="background-color: white; color: #222222; font-family: arial, sans-serif;" /></span>
<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif; font-size: large;">中規模サイトのApacheチューニング</span><br />
<a data-saferedirecturl="https://www.google.com/url?hl=ja&q=http://qiita.com/kou/items/acb3dcf1dcb428d7a3ec&source=gmail&ust=1488419934645000&usg=AFQjCNE9-VyerYxV0dN2MwjVLyss2QF_NQ" href="http://qiita.com/kou/items/acb3dcf1dcb428d7a3ec" rel="noreferrer" style="background-color: white; color: #1155cc; font-family: arial, sans-serif;" target="_blank"><span style="font-size: large;">http://qiita.com/kou/items/<wbr></wbr>acb3dcf1dcb428d7a3ec</span></a><br />
<br />Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-46953001267464831162016-11-22T13:20:00.003+09:002016-11-22T13:33:45.753+09:00Spring Day 2016 参加メモ先日11/18、<a href="http://springday2016.springframework.jp/" target="_blank"><span style="font-size: large;">Spring Day 2016</span></a> に行ってきました。<br />
<br />
そろそろと思い、最近 Spring Framework、Spring Boot の情報収集・勉強を始めてた所でした。<br />
<br />
このイベントは大規模で、開発元や国内の大手・有力な会社が講演を行うということで、期待大でした。<br />
<br />
という事で参加メモ。<br />
<br />
<br />
<span style="background-color: #d9ead3; font-size: large;">1.Application Re-Architecture Technology</span><br />
~ StrutsからSpring MVCへ ~<br />
倉元 貴一/池谷 智行(NTTデータ)<br />
<br />
メモ:<br />
Springの薄くラップしたTERASOLUNAの説明。ガイドラインが目玉。<br />
二重送信防止機能がある。<br />
TERASOLUNAはSpring Boot未対応?みたいだが、ガイドラインは読む価値あり。<br />
<br />
<br />
<br />
<span style="background-color: #d9ead3; font-size: large;"><span class="il" style="background-color: white; color: #222222; font-family: "arial" , sans-serif;">2.Spring</span><span style="background-color: white; color: #222222; font-family: "arial" , sans-serif;"> Bootで学ぶ初めてのWEBアプリ開発</span></span><br />
てらひで<br />
<br />
<span style="color: #222222; font-family: "arial" , sans-serif;"><span style="font-size: 14px;"><a href="http://www.slideshare.net/terahide/spring-bootweb-69236132">http://www.slideshare.net/terahide/spring-bootweb-69236132</a></span></span><br />
<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif; font-size: 14px;"><br /></span>
メモ:<br />
Bootのチュートリアルを少しデモ。関係ない話が多くて面白くなかった。<br />
<br />
<br />
<br />
<span style="background-color: #d9ead3; font-size: large;">3.<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif;">LINE における </span><span class="il" style="background-color: white; color: #222222; font-family: "arial" , sans-serif;">Spring</span><span style="background-color: white; color: #222222; font-family: "arial" , sans-serif;"> Framework の活用</span></span><br />
松野 徳大(LINE)<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="485" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/1c2jRcJa7ribQa" style="border-width: 1px; border: 1px solid #ccc; margin-bottom: 5px; max-width: 100%;" width="595"> </iframe> <br />
<div style="margin-bottom: 5px;">
<strong> <a href="https://www.slideshare.net/tokuhirom/linespring-framework" target="_blank" title="Lineにおけるspring frameworkの活用">Lineにおけるspring frameworkの活用</a> </strong> from <strong><a href="https://www.slideshare.net/tokuhirom" target="_blank">Tokuhiro Matsuno</a></strong> </div>
<br />
メモ:<br />
LINEではかなりJava率が高い。Springを多く使っている。<br />
<span style="background-color: white; color: #222222; font-family: "arial" , sans-serif;"> フレームワーク決めつけない。一つにコミットすると変化に弱い。</span><br />
<div class="m_5994991440859873677p1" style="background-color: white; color: #222222; font-family: arial, sans-serif;">
LINE Notifyで使用。</div>
<div class="m_5994991440859873677p1" style="background-color: white; color: #222222; font-family: arial, sans-serif;">
Redisは良い</div>
<div class="m_5994991440859873677p1" style="background-color: white; color: #222222; font-family: arial, sans-serif;">
<span class="m_5994991440859873677s1"> Jetty使ってる。起動速い</span></div>
<div class="m_5994991440859873677p1" style="background-color: white; color: #222222; font-family: arial, sans-serif;">
LINEは全部オンプレ</div>
<div class="m_5994991440859873677p1" style="background-color: white; color: #222222; font-family: arial, sans-serif;">
<span class="m_5994991440859873677s1"> freemarker使用。タイムリーフと人気を二分</span></div>
<div class="m_5994991440859873677p1" style="background-color: white; color: #222222; font-family: arial, sans-serif;">
mybatis優勢。JPA少ない。</div>
<div class="m_5994991440859873677p1" style="background-color: white; color: #222222; font-family: arial, sans-serif;">
技術的にかなり濃い内容。松野氏は若そうだがすごい技術者だと思う。しゃべりも上手い。</div>
<div class="m_5994991440859873677p1" style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
<br />
<br /></div>
<br />
<span style="background-color: #d9ead3; font-size: large;">3.楽天トラベルとSpring</span><br />
藤井貴浩/Thomas Ludwig(楽天トラベル)<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="485" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/7QhuZGSdwt38Wf" style="border-width: 1px; border: 1px solid #ccc; margin-bottom: 5px; max-width: 100%;" width="595"> </iframe> <br />
<div style="margin-bottom: 5px;">
<strong> <a href="https://www.slideshare.net/rakutentech/springspring-day-2016" target="_blank" title="楽天トラベルとSpring(Spring Day 2016)">楽天トラベルとSpring(Spring Day 2016)</a> </strong> from <strong><a href="https://www.slideshare.net/rakutentech" target="_blank">Rakuten, Inc</a></strong> </div>
<div>
<div>
<br /></div>
<div>
メモ:<br />
マイクロサービス推進</div>
<div>
SpringRESTDocsでAPIドキュメント作成</div>
<div>
マイクロだとログ追跡が面倒。MDCを利用。</div>
<div>
Spring Cloud Sleuthを使用</div>
<div>
楽天は堅そうなイメージだったけど結構攻めてる。</div>
</div>
<div>
<br />
<br /></div>
<div>
<br /></div>
<div>
<span style="background-color: #d9ead3; font-size: large;">4.アメブロの大規模システム刷新とそれを支える Spring</span><br />
向井 政貴/服部 拓也(サイバーエージェント)<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="485" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/uFgyKvgNEY6k9o" style="border-width: 1px; border: 1px solid #ccc; margin-bottom: 5px; max-width: 100%;" width="595"> </iframe> <br />
<div style="margin-bottom: 5px;">
<strong> <a href="https://www.slideshare.net/nin2hanzo/spring-69237035" target="_blank" title="アメブロの大規模システム刷新と それを支えるSpring">アメブロの大規模システム刷新と それを支えるSpring</a> </strong> from <strong><a href="https://www.slideshare.net/nin2hanzo" target="_blank">Takuya Hattori</a></strong> </div>
<div>
<div>
メモ:</div>
<div>
OS、言語、フレームワークの陳腐化が深刻化</div>
<div>
レガシーコードも多く課題山積</div>
<div>
DC移設の際にシステム刷新した。Springを採用。</div>
<div>
SpringFox+SwaggerでAPIドキュメント作成</div>
<div>
とても分かりやすい内容で、面白かった。大規模になってくるとみんなAPI化。</div>
<div>
+Swagger等でAPIドキュメント作るのが常識になっているのが分かった。</div>
<div>
<br /></div>
<div>
<br />
<br /></div>
<div>
<span style="background-color: #d9ead3; font-size: large;">5.Spring で実現する SmartNews のニュース配信基盤</span></div>
<div>
<div>
<div>
井口 貝(SmartNews)</div>
<div>
<br /></div>
<div>
<script async="" class="speakerdeck-embed" data-id="ab6d1aa5903045989d6763b12737df7d" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>
</div>
</div>
<div>
<br /></div>
<div>
メモ:</div>
<div>
Seasar2からSpring Bootへ移行した。</div>
<div>
マイクロサービス化で個々のコンポーネントに集中。</div>
<div>
SpringFox+SwaggerでAPIドキュメント作成</div>
<div>
高度な周辺エコシステム</div>
<div>
spring boot adminでUIで設定確認、変更ができる</div>
<div>
actuatorでのメトリクス収集</div>
</div>
</div>
<div>
こちらもマイクロサービス化。今回Springのイベントなんだがマイクロサービスも存在感大だった。</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
その他、参加してないが以下のセッションも非常に興味深い。</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div>
<span style="background-color: #d9ead3; font-size: large;">Let's Visualize Your Spring Cloud Applications!</span></div>
<div>
~ElasticsearchとSleuthを使った可視化の実際〜</div>
<div>
谷本 心(Acroquest Technology)</div>
<div>
<br /></div>
<div>
<script async="" class="speakerdeck-embed" data-id="337436bd5ecf4443b62f9802779696e9" data-ratio="1.44428772919605" src="//speakerdeck.com/assets/embed.js"></script>
</div>
</div>
<div>
<br /></div>
<div>
<br />
<br /></div>
<div>
<div>
<span style="background-color: #d9ead3; font-size: large;">Spring Security で作る Web API アクセス制御の最適解</span></div>
<div>
~ Basic認証? APIキー? OAuth 2.0? OpenID Connect? ~</div>
<div>
都元ダイスケ(クラスメソッド)</div>
<div>
<br /></div>
<div>
<iframe allowfullscreen="" frameborder="0" height="485" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/GqLYehvd9mv0fk" style="border-width: 1px; border: 1px solid #ccc; margin-bottom: 5px; max-width: 100%;" width="595"> </iframe> <br />
<div style="margin-bottom: 5px;">
<strong> <a href="https://www.slideshare.net/daisuke_m/spring-day-2016-web-api" target="_blank" title="Spring Day 2016 - Web API アクセス制御の最適解">Spring Day 2016 - Web API アクセス制御の最適解</a> </strong> from <strong><a href="https://www.slideshare.net/daisuke_m" target="_blank">ダイスケ 都元</a></strong> </div>
</div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
参考: <a href="http://qiita.com/c-cho/items/8682dc725d334a09635b" target="_blank">JSUG Spring Day 2016資料まとめ</a></div>
<br /></div>
Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-46940005280525994342016-10-04T19:38:00.001+09:002016-10-04T19:38:34.121+09:00Rails勉強中Ruby on Rails勉強中。<br />
<br />
とりあえずドットインストールにて。<br />
http://dotinstall.com/lessons/basic_rails_v2<br />
<br />
Javaと相当文化が違う。<br />
<br />
Migrationて、メリットが分からないな。<br />
<br />
カラム追加する時とか、普通にALTERすればいいんじゃない。って思う。<br />
<br />
でも、色々面白い。Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-7958368088479246392015-08-24T21:33:00.000+09:002015-08-24T21:41:04.992+09:00GMail APIを使ってJavaからGMail検索<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5ebRDbor_hOjE-qZzbELSOIWASquzNIDVPI80Jne4R_R8cxsskVb9SqiW8YDrlcZ5PCUzZ_diOIMJORAr6kogfw4xTnX4YopqIOOalMR2vLODuDcevbr46yzL6rZIOWtuiLFcBCAyufcw/s1600/gmail_api.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5ebRDbor_hOjE-qZzbELSOIWASquzNIDVPI80Jne4R_R8cxsskVb9SqiW8YDrlcZ5PCUzZ_diOIMJORAr6kogfw4xTnX4YopqIOOalMR2vLODuDcevbr46yzL6rZIOWtuiLFcBCAyufcw/s400/gmail_api.png" width="400" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<a href="https://developers.google.com/gmail/api/" target="_blank">GMail API</a>というのが最近できたらしい。<br />
<br />
Java Quickstart<br />
<a href="https://developers.google.com/gmail/api/quickstart/java">https://developers.google.com/gmail/api/quickstart/java</a><br />
<br />
上記の説明では、gradleを使うようになっている。<br />
gradleプラグインが標準で入っているEclipse 4.5をインストールしておく。もちろん<a href="http://mergedoc.osdn.jp/" target="_blank">Pleiades</a>を使う。<br />
<br />
Eclipseで、新規→その他→Gradle プロジェクト で、プロジェクトを作成する。<br />
<br />
Library.javaとLibraryTest.javaが自動で作成されるが削除する。<br />
<br />
「Gradle タスク」ビューでbuildを右クリックして「Gradle タスクの実行」をクリックすると、以下のエラーが出た。<br />
<br />
--------------------------------------------------------<br />
<span style="color: red;">FAILURE: Build failed with an exception.</span><br />
<span style="color: red;"><br /></span>
<span style="color: red;">* What went wrong:</span><br />
<span style="color: red;">Execution failed for task ':compileJava'.</span><br />
<span style="color: red;">> Could not find tools.jar</span><br />
<span style="color: red;"><br /></span>
<span style="color: red;">* Try:</span><br />
<span style="color: red;">Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.</span><br />
<div>
--------------------------------------------------------</div>
<div>
<br /></div>
<div>
プロジェクトルートフォルダに、gradle.propertiesを作成し、以下のようにJDKのパスを設定した。</div>
<div>
org.gradle.java.home=C:/Program Files/Java/jdk1.8.0_40</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
これで上記エラーは出なくなったが、違うエラーになった。</div>
<div>
--------------------------------------------------------</div>
<div>
<div>
<span style="color: red;">C:\eclipse4.5\workspace\GMailAPI\src\main\java\GmailQuickstart.java:16: エラー: シンボルを見つけられません</span></div>
<div>
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>private static FileDataStoreFactory DATA_STORE_FACTORY;</span></div>
</div>
<div>
--------------------------------------------------------</div>
<div>
<br /></div>
<div>
<div>
依存性の解決がされていない。</div>
</div>
<div>
自分でjarダウンロードのタスクを書いて実行しないといけない。</div>
<div>
<a href="http://qiita.com/Lda_Knt/items/ed6136212409498f2297">http://qiita.com/Lda_Knt/items/ed6136212409498f2297</a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
build.gradleに以下を追加する。libsフォルダはルートに作成しておく。</div>
<div>
-------------------------------------------------</div>
<div>
<div>
<span style="color: #38761d;">task copyDependencies(type:Copy) {</span></div>
<div>
<span style="color: #38761d;"> from (configurations.compile)</span></div>
<div>
<span style="color: #38761d;"> into 'libs' //ダウンロード先ディレクトリ</span></div>
<div>
<span style="color: #38761d;">}</span></div>
</div>
<div>
-------------------------------------------------</div>
<div>
<br /></div>
<div>
「実行の構成」から、Gradleの実行構成を作り、タスクに「copyDependencies」を入力して実行すると、</div>
<div>
libsにjarがダウンロードされる。</div>
<div>
<br /></div>
<div>
その後、Eclipse上で「Javaのビルド・パス」から、libsにダウンロードしたjarをビルド・パスに入れる。</div>
<div>
<br /></div>
<div>
GmailQuickstart.javaのコンパイルエラーがなくなるので、Eclipseから普通に実行する。</div>
<div>
以下のメッセージが表示される。</div>
<div>
<br /></div>
<div>
<div>
-------------------------------------------------</div>
<div>
<span style="color: #38761d;">Please open the following address in your browser:</span></div>
<div>
<span style="color: #38761d;"> https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=xxxxxxxxx-xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com&redirect_uri=http://localhost:23189/Callback&response_type=code&scope=https://www.googleapis.com/auth/gmail.labels</span></div>
<div>
<span style="color: #38761d;">Attempting to open that address in the default browser now...</span></div>
</div>
<div>
<div>
-------------------------------------------------</div>
</div>
<div>
<br /></div>
<div>
ブラウザで上記URLが自動的に開き、Googleの承認画面が表示されるので、「承認」をクリック。</div>
<div>
以下のメッセージが表示された。</div>
<div>
<span style="color: #38761d;">Received verification code. You may now close this window...</span></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
再度、GmailQuickstartを実行すると、めでたくGMailのラベル一覧が表示された。</div>
<div>
<span style="color: #666666;">※出力結果は割愛</span></div>
<div>
<br /></div>
<div>
###########################################################</div>
<div>
<br /></div>
<div>
次に、以下のコードでメール(メッセージ)の検索を試みる。</div>
<div>
---------------------------------------------------------</div>
<div>
<div>
<span style="color: #38761d;">Gmail service = getGmailService();</span></div>
<div>
<span style="color: #38761d;">String user = "me";</span></div>
<div>
<span style="color: #38761d;">ListMessagesResponse listResponse = service.users().messages().list(user).setQ("検索ワード").execute();</span></div>
<div>
<span style="color: #38761d;">List<Message> messages = listResponse.getMessages();</span></div>
<div>
<span style="color: #38761d;">if (messages.size() == 0) {</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>System.out.println("No messages found.");</span></div>
<div>
<span style="color: #38761d;">} else {</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>System.out.println("messages:");</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>for (Message message : messages) {</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>System.out.printf("- %s\n", message);</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="color: #38761d;">}</span></div>
</div>
<div>
---------------------------------------------------------</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
実行すると、権限がないとのエラーになる。</div>
<div>
<div>
---------------------------------------------------------</div>
</div>
<div>
<span style="color: red;">Credentials saved to C:\Users\nob\.credentials\gmail-api-quickstart</span></div>
<div>
<span style="color: red;">Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden</span></div>
<div>
<div>
<span style="color: red;">{</span></div>
<div>
<span style="color: red;"> "code" : 403,</span></div>
<div>
<span style="color: red;"> "errors" : [ {</span></div>
<div>
<span style="color: red;"> "domain" : "global",</span></div>
<div>
<span style="color: red;"> "message" : "Insufficient Permission",</span></div>
<div>
<span style="color: red;"> "reason" : "insufficientPermissions"</span></div>
<div>
<span style="color: red;"> } ],</span></div>
<div>
<span style="color: red;"> "message" : "Insufficient Permission"</span></div>
<div>
<span style="color: red;">}</span></div>
</div>
<div>
<div>
---------------------------------------------------------</div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
↓に着目する。このフォルダを一旦削除して、再実行すると再度ブラウザで承認画面が開く。</div>
<div>
Credentials saved to C:\Users\nob\.credentials\gmail-api-quickstart</div>
<div>
<br /></div>
<div>
しかし、相変わらず「メールボックス ラベルの管理」しか表示されない。</div>
<div>
<span style="color: red;"><br /></span></div>
<div>
<span style="color: red;"><br /></span></div>
<div>
GmailQuickstart.javaのここに着目する。</div>
<div>
<span style="color: #38761d;">private static final List<String> SCOPES = Arrays.asList(GmailScopes.GMAIL_LABELS);</span></div>
<div>
<br /></div>
<div>
以下のように、GMAIL_READONLYを追加する。</div>
<div>
<br /></div>
<div>
<span style="color: #38761d;">private static final List<String> SCOPES = Arrays.asList(GmailScopes.GMAIL_LABELS, GmailScopes.GMAIL_READONLY);</span></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
再度実行すると、リクエストの許可画面で、「メール メッセージと設定の表示」も表示された。</div>
<div>
承認後、再実行すると、検索が実行できた。</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
しかし、出力結果を見ると、以下のようにidとthreadIdしかゲットできていない。</div>
<div>
<div>
-------------------------------------------------------</div>
<div>
- {"id":"14f5f0xxxxxxxxxx","threadId":"14f5eefxxxxxxxxxx"}</div>
<div>
- {"id":"14f5eexxxxxxxxxx","threadId":"14f5eefxxxxxxxxxx"}</div>
</div>
<div>
-------------------------------------------------------</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
メールの内容(送信者、受信者、サブジェクト、本文、etc...)をゲットしたい場合は、</div>
<div>
idを元に再度getする必要がある。</div>
<div>
<a href="https://developers.google.com/gmail/api/v1/reference/users/messages/get">https://developers.google.com/gmail/api/v1/reference/users/messages/get</a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
以下は、検索して日付とサブジェクトと本文の一部(snippetと言う)をゲットする例。</div>
<div>
<div>
---------------------------------------------------------</div>
<div>
<div>
<span style="color: #38761d;">Gmail service = getGmailService();</span></div>
<div>
<span style="color: #38761d;">String user = "me";</span></div>
<div>
<span style="color: #38761d;">Long max = 5L;<span class="Apple-tab-span" style="white-space: pre;"> </span>//最大件数</span></div>
<div>
<span style="color: #38761d;">ListMessagesResponse listResponse = service.users().messages().list(user).setQ("検索ワード").setMaxResults(max).execute();</span></div>
<div>
<span style="color: #38761d;">List<Message> messages = listResponse.getMessages();</span></div>
<div>
<span style="color: #38761d;">System.out.println("ヒットした件数: " + messages.size());</span></div>
<div>
<span style="color: #38761d;">for (Message message : messages) {</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Message detailMessage = service.users().messages().get(user, message.getId()).execute();</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>List<MessagePartHeader> headers = detailMessage.getPayload().getHeaders();<span class="Apple-tab-span" style="white-space: pre;"> </span>//ヘッダー一覧</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>String date = "";</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>String subject = "";</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>for(MessagePartHeader header : headers) {</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>if ("Date".equals(header.getName())) {<span class="Apple-tab-span" style="white-space: pre;"> </span>//日付</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>date = header.getValue();</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>else if ("Subject".equals(header.getName())) {<span class="Apple-tab-span" style="white-space: pre;"> </span>//サブジェクト</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>subject = header.getValue();</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>System.out.println(date + " " + subject);</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>System.out.println(detailMessage.getSnippet());</span></div>
<div>
<span style="color: #38761d;"><span class="Apple-tab-span" style="white-space: pre;"> </span>System.out.println();</span></div>
<div>
<span style="color: #38761d;">}</span></div>
</div>
</div>
<div>
---------------------------------------------------------</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
setQ("検索ワード")の部分は、GMailブラウザ版と同様の検索機能が色々使える。</div>
<div>
<a href="https://support.google.com/mail/answer/7190?hl=ja">https://support.google.com/mail/answer/7190?hl=ja</a></div>
<div>
<br /></div>
<div>
送信者を指定する例: from:送信者の名前またはアドレス</div>
<div>
期間を指定する例: after:2015/08/15 before:2015/08/25</div>
<div>
<br /></div>
<div>
<br />
<br /></div>
<div>
しかし、、自分でタスク書いてlibsにダウンロードするなら、gradleである必要があったのかな・・・。<br />
<br />
ちなみにlibsにダウンロードされたjarの一覧はこちら。</div>
<div>
<br /></div>
<div>
commons-codec-1.3.jar<br />
commons-logging-1.1.1.jar<br />
google-api-client-1.20.0.jar<br />
google-api-services-gmail-v1-rev29-1.20.0.jar<br />
google-http-client-1.20.0.jar<br />
google-http-client-jackson2-1.20.0.jar<br />
google-oauth-client-1.20.0.jar<br />
google-oauth-client-java6-1.20.0.jar<br />
google-oauth-client-jetty-1.20.0.jar<br />
guava-jdk5-13.0.jar<br />
httpclient-4.0.1.jar<br />
httpcore-4.0.1.jar<br />
jackson-core-2.1.3.jar<br />
jetty-6.1.26.jar<br />
jetty-util-6.1.26.jar<br />
jsr305-1.3.9.jar<br />
servlet-api-2.5-20081211.jar<br />
<br /></div>
<div>
<br /></div>
Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-47751801654666856942015-08-21T20:39:00.000+09:002015-08-21T20:43:24.457+09:00Amazon S3にawscliのs3 syncを使ってファイルバックアップ<span style="font-size: large;">【S3事前準備】</span><br />
1.AWSアカウントを作成する。<br />
2.AWSコンソールにログインし、<a href="https://console.aws.amazon.com/console/home" target="_blank">S3の管理画面</a>を開く。 <br />
3.バケットを作成する。名称は"xxxx-bucket"等任意。<br />
4.右上のユーザー名をクリックし、「認証情報」をクリック。<br />
5.「アクセスキー」を開き、「新しいアクセスキーの作成」から作成し、アクセスキーIDと、シークレットアクセスキーをエディタ等に控える。(後で再確認できない!)<br />
<br />
<span style="font-size: large;">【s3 sync インストール・設定】</span><br />
1.pythonインストール<br />
yum install python<br />
2.pipインストール(awscliをインストールするためのもの)<br />
cd /usr/local/src<br />
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py<br />
python get-pip.py<br />
3.awscliインストール・設定(AWS公式ツール)<br />
pip install awscli<br />
aws configure <br />
→アクセスキーIDとシークレットアクセスキーを入力する。Default region nameとDefault output formatは未入力でEnter。<br />
<br />
<span style="font-size: large;">【S3へのバックアップ】</span><br />
1.バックアップコマンド実行<br />
aws s3 sync バックアップファイルがあるディレクトリ s3://xxxx-bucket/<br />
→バケットにファイルが送信される。コピー元にフォルダがある場合はそれも同期される。<br />
既にS3側に同一ファイルが存在する場合は送信されない。<br />
2.ファイル削除コマンド実行<br />
aws s3 rm s3://xxxx-bucket/ファイル名<br />
→S3のファイルを削除する。<br />
<br />
<a href="http://docs.aws.amazon.com/cli/latest/reference/s3/index.html">http://docs.aws.amazon.com/cli/latest/reference/s3/index.html</a><br />
<br />
※<a href="https://github.com/s3fs-fuse/s3fs-fuse" target="_blank">s3fs</a>という、S3をファイルシステムにマウントしてくれるサードパーティツールもあるが、安定していないのでおすすめできない<br />
<div>
<br /></div>
Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-6769888663562771322015-08-19T22:50:00.000+09:002015-08-19T22:55:03.830+09:00DaiGo語録メモ<blockquote class="twitter-tweet" lang="ja"><p lang="ja" dir="ltr">小さなことにこだわるのをやめよう。小さなことやどうでもいいことにこだわるには、人生は短すぎる。嫌いな人や苦手な人について悩みすぎるのも同じだ、あなたの人生の取って大切なこと以外は無視する力を身につけよう。そうすれば、あなたは今よりもっと自分の人生を生きることができる。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/631435613905027072">2015, 8月 12</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p lang="ja" dir="ltr">ポジティブな特徴や有利な状況を使うのは馬鹿にでもできる。大切なのは、ネガティヴな特徴や不利な状況を上手に使う方法を考えることだ。自分にとって都合の悪いことや目を背けたくなるようなことに向き合い、上手に利用することができれば、道は開ける。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/631798151133982720">2015, 8月 13</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p lang="ja" dir="ltr">感じる不安の8割は、起こらないし考える必要もないものだ。その不安は不確実性が作り出す単なる幻で、あなたが実際に行動し始めると霧のように消えてなくなってしまう。今は怖いし恐ろしいかもしれないが、一歩踏みだそう、そうすればあなたの心にはごく僅かな不安と大きな期待が残るはずだ。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/630710875280773120">2015, 8月 10</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p lang="ja" dir="ltr">悲しみにも大切な役割がある。悲しみは、偏見にとらわれない冷静な意思決定をする手助けをしてくれる。あなたが悲しんでいるとき、それはフェアな意思決定ができる絶好のチャンスなのだ。自分の身に降りかかる悲しみさえも、あなたなら前に進むために利用できる。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/629985972445388800">2015, 8月 8</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p lang="ja" dir="ltr">時には悩んでもいい。でも悩むのは問題を紙に書き出して、頭の外に出してからにしよう。頭の中で問題を扱うとネガティブな考えが広がり、かえって悩みが深くなってしまうことがある。紙に書き出せば客観的に問題を見ることができ、意外な解決策があっさり見つかることが多い。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/628898972795543552">2015, 8月 5</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p lang="ja" dir="ltr">どうやって逃げるかよりも、どうすれば打ち勝てるかを考えよう。現実から一時的に逃げたとしても、いつか必ずもっと厳しい現実に追いつかれる、そうして怯えて生きるのは辛い。しかし、一度打ち勝ってしまえば、もう二度とその問題に立ち向かう必要はないのだ。勇気を出して今日、立ち向かおう。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/628672418068983808">2015, 8月 4</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p lang="ja" dir="ltr">恥ずべき過去などない、 本当に恥ずべきは過去を活かして前に進むことができない現在の自分自身である。だから私は堂々と自分の恥ずかしい過去を公開できるわけです。富士山回をついに公開、そして噴火→ <a href="http://t.co/mtDF2QvBH0">http://t.co/mtDF2QvBH0</a></p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/628491023447138304">2015, 8月 4</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p lang="ja" dir="ltr">ヒトの心はバネと同じだ、大きく飛び上がるには一度ぺしゃんこになる必要がある。だから、あなたが今、何かに押しつぶされているとしても気にしなくていい。ぺしゃんこになった分だけいつか大きく飛び上がり、新しい世界に行けるだろう。そしてぺしゃんこにされて本当に良かったと思える日が必ず来る。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/627087042766315520">2015, 7月 31</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p lang="ja" dir="ltr">仕事があなたのすべてではない、仕事だけで人生が決まるなんて占いを本気で信じるのと同じくらい馬鹿げている。仕事があって、あなたがいるのではなく、あなたがいるから仕事があるのだ。仕事がなくてもあなたはあなただ。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/625773500494647296">2015, 7月 27</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p lang="ja" dir="ltr">失敗するのは早ければ早いほど良い。早ければ早いほど、挽回し立ち直る時間は十分にあるし、そこから得られた経験を活かすチャンスも沢山あるからだ。むしろ、今、失敗できたことをラッキーだと考え、それを活かすチャンスに目を向けよう。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/621289113719844864">2015, 7月 15</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-2716804133023882252015-06-29T22:15:00.000+09:002015-06-29T23:06:10.544+09:00Androidで写真と動画を複数選択するUIAndroidで写真と動画を複数選択するUIの作り方を書いてみます。<br />
<br />
MediaChooserというライブラリを使用します。<br />
<br />
<a href="https://github.com/learnNcode/MediaChooser">https://github.com/learnNcode/MediaChooser</a><br />
<br />
こんな感じで、ビデオのタブと写真のタブがあり、<br />
選択して右上の「Done」を押すと決定するというUIです。<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlzEiTwFty9wWbVo9srmhOe8DFnegOHxe6cglsu5dEHxJC5OJw-auu8ZKJgyuHagw3ZsaVXp5r-TZRnIGaLNxOcm2RqXl-IGQa8mSyCbpc-521TgQiM_tCQx9qEOnmsNk_457PMcH3m3vk/s1600/screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlzEiTwFty9wWbVo9srmhOe8DFnegOHxe6cglsu5dEHxJC5OJw-auu8ZKJgyuHagw3ZsaVXp5r-TZRnIGaLNxOcm2RqXl-IGQa8mSyCbpc-521TgQiM_tCQx9qEOnmsNk_457PMcH3m3vk/s640/screenshot.png" width="420" /></a></div>
<br />
1.SDK Managerで、以下をインストール。すでにInstalledであれば不要。<br />
Android Support Repository<br />
Android 4.4.2 (API 19)の中の以下2つ。<br />
SDK Platform<br />
Google APIs (x86 System Image)<br />
<br />
2.Android Studioを再起動。<br />
<br />
3.https://github.com/learnNcode/MediaChooser に行き、右側の Download ZIP を<br />
押してダウンロードし、解凍しておく。<br />
<br />
4.Android Studioのメニューの File → Import Project から、<br />
解凍した中の mediaChooser-sample フォルダを選択してインポート。<br />
comlearnNcodemediachoosersampleとmediaChooserlibの2つのプロジェクトができる。<br />
<br />
5.mediaChooserlib/manifests/AndroidManifest.xml のandroid:name="@string/app_name" の所でエラーになるので、<br />
android:label="@string/app_name" に修正。<br />
<br />
6.さらに、同ファイルの<br />
com.learnncode.mediachooser.fragment.ImageFragment の所でエラーになるので、<br />
<activity を <fragment に修正。その下のVideoFragmentの所も同様。<br />
<br />
7.android:theme="@style/AppBaseTheme" が重複しているとのエラーが出るので、<br />
android:theme="@style/AppBaseTheme" を削除。<br />
<br />
8.メニューの Build → Clean Project を実行すると、ビルドが成功。<br />
(BUILD SUCCESSFUL)<br />
<br />
9.アプリを実行 (Run 'app')すると、サンプルアプリが起動する。<br />
少し動かしてみて感触を掴んだら、今度は自分のアプリに組み込む。<br />
<br />
10.自分のアプリをAndroid Studioで開いて、File → Project Structure を開く。<br />
左上の + をクリックし、下の枠の Improt Existing Project を選択して Next を押す。<br />
<br />
11.先ほど解凍した MediaChooser-lib フォルダを選択して Next を押して、さらにNext、Finish を押す。<br />
ビルドが行われるので、しばらく待つと、mediaChooserlib というライブラリが自分のアプリと同じ階層に現れる。<br />
<br />
12.上記の5~8を実行する。<br />
<br />
13.続く・・・Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-73978261032190457812015-03-20T10:08:00.003+09:002015-03-20T10:11:24.003+09:00メンタリストDaigoが最近気になる<blockquote class="twitter-tweet" lang="ja"><p>夢は行動すれば希望になるが、行動しなければただの幻想になってしまう。人に夢を語るときには、こういう目標があると言うのではなく、こういう目標のために毎日こういうことをしている、と行動とセットにして話すようにすると、あなたの夢に行動が伴ってくる。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/577575650170634241">2015, 3月 16</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p>肉体の老化は、感情の老化によって始まる。「どうせ頑張ったって、もうたかが知れている」と思うようになったとき、ヒトは行動をしなくなり、肉体が急激に老化する。まずは、感情の若作りから始めよう。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/577077194243117056">2015, 3月 15</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p>仕事でもスポーツでも練習すれば脳が学習して、意識しなくても上手にできるようになる。同様に、愚痴や不満を言えば言うほど、脳がそれを学習して、意識しなくても物事をネガティブに考える癖がついてしまう。ポジティブな言葉を使うようにしたいですね。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/578662740002267136">2015, 3月 19</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p>成功したいなら、特別なことをしようとするのではなく、みんなが嫌がってやらないことをやってみよう。率先して人がやらないことをするあなたに、皆が注目する。岩崎弥太郎もそうやって成功した。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/576126123211407361">2015, 3月 12</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p>ダメな人はあれもこれもやろうと考える、できる人はこれだけはやろうと考える。大切なのはたくさんのことをやろうとすることではなく、本当にやるべきこと以外をバッサリ切り捨てる決断をすることだ。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/573090921274863616">2015, 3月 4</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p>仕事中や勉強中は、スマホを見えない場所にしまおう。触らなくても、スマホが視界にに入っているだけで、あなたの集中力が削がれることがわかっている。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/573815743281827840">2015, 3月 6</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" lang="ja"><p>目標を高く設定したいときは、量を増やすより、期間を短くしてみよう。量を増やして挫折すると取り返しがつかないが、期限を早める場合はいくらでも取り返しがつく。</p>— メンタリスト DaiGo (@Mentalist_DaiGo) <a href="https://twitter.com/Mentalist_DaiGo/status/575401211853172737">2015, 3月 10</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-63927584089642236012015-02-05T06:38:00.000+09:002015-02-05T06:43:47.283+09:00iOS8のSystemButtonのスクリーンショット一覧Titaniumで使える、iOSのSystemButtonのスクリーンショットをメモとして残します。<br />
<br />
iPhone5S、iOS8のものです。<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNlFSOySjRNH5z3W1voFn6dJTiDd515CPWZ4DMVW6P-IAmcHVQ6HuZaI6zeypO1kTKvCOxGChNhsLnN8tUkN_WKqU0itgygi2gm9rD2NKocfR_hUYDSWo_ptnGUV4hcaUZmAi0h5velHnP/s1600/iOS8_SystemButtons.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNlFSOySjRNH5z3W1voFn6dJTiDd515CPWZ4DMVW6P-IAmcHVQ6HuZaI6zeypO1kTKvCOxGChNhsLnN8tUkN_WKqU0itgygi2gm9rD2NKocfR_hUYDSWo_ptnGUV4hcaUZmAi0h5velHnP/s1600/iOS8_SystemButtons.PNG" /></a></div>
<br />
ACTION<br />
ACTIVITY<br />
ADD<br />
BOOKMARKS<br />
CAMERA<br />
CANCEL<br />
COMPOSE<br />
CONTACT_ADD<br />
DISCLOSURE<br />
DONE<br />
EDIT<br />
FAST_FORWARD<br />
FIXED_SPACE<br />
FLEXIBLE_SPACE<br />
INFO_DARK<br />
INFO_LIGHT<br />
ORGANIZE<br />
PAUSE<br />
PLAY<br />
REFRESH<br />
REPLY<br />
REWIND<br />
SAVE<br />
SPINNER<br />
STOP<br />
TRASH<br />
<br />
<br />Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-26228520749023124332014-09-20T06:07:00.001+09:002014-09-20T06:57:31.575+09:00Jリーグ各チーム用スマホアプリレッズマイライフ(<a href="https://itunes.apple.com/jp/app/id570541514?l=ja&ls=1&mt=8" target="_blank">iPhone版</a>・<a href="https://play.google.com/store/apps/details?id=org.with.urawa.reds" target="_blank">Android版</a>)をベースとして、<br />
Jリーグの各クラブ用のアプリを作ってます。<br />
<br />
今の所、以下3つのアプリをリリースしてます。<br />
全チーム分、iPhone版とAndroid版を作る予定。<br />
<br />
<a href="https://itunes.apple.com/jp/app/id912618358?l=ja&ls=1&mt=8" target="_blank">スマートJ for 川崎フロンターレ iPhone版</a><br />
<br />
<a href="https://play.google.com/store/apps/details?id=frontale.mylife" target="_blank">スマートJ for 川崎フロンターレ Android版</a><br />
<br />
<a href="https://play.google.com/store/apps/details?id=smartj.marinos" target="_blank">スマートJ for 横浜F・マリノス Android版</a><br />
<br />
<a href="https://play.google.com/store/apps/details?id=everyday.albirex" target="_blank">スマートJ for アルビレックス新潟 Android版</a><br />
<br />
★ ★ ★ ★ ★ ★ ★ ★ ★<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: start;">マリノス版のスクリーンショット。</span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: start;">マリノスに関連するニュース、ブログのみ表示します。</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxntfvyH0w3ApnLCtwnfCJPyDTqpgM-PoM0HZlSVx6L-FgnbPoLYqOIN6THXTY0Pahml8o5AhGi9oeqXexs0VSYrg5KUK3QuX0O-kLQR6WbO8ub03miGaMye338AlPlgpLr_IGMWOxhcn6/s1600/%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxntfvyH0w3ApnLCtwnfCJPyDTqpgM-PoM0HZlSVx6L-FgnbPoLYqOIN6THXTY0Pahml8o5AhGi9oeqXexs0VSYrg5KUK3QuX0O-kLQR6WbO8ub03miGaMye338AlPlgpLr_IGMWOxhcn6/s1600/%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9.png" height="400" width="225" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
試合日程。ハイライト動画も見れます。</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyZmGI8Wd8PiN3d6Ja0PNXXjtYspDfQqmOD-qvBq18xi5AqrNLi1ZU-sI17MzQeaBHW7z5hIUJOBRTnxgG3B1q8LuQhD6s5RsGTvzUMzLI3UZmMlhU5J1OpFVGZX4Sh7vGRng5l6WozyC7/s1600/%E6%97%A5%E7%A8%8B.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyZmGI8Wd8PiN3d6Ja0PNXXjtYspDfQqmOD-qvBq18xi5AqrNLi1ZU-sI17MzQeaBHW7z5hIUJOBRTnxgG3B1q8LuQhD6s5RsGTvzUMzLI3UZmMlhU5J1OpFVGZX4Sh7vGRng5l6WozyC7/s1600/%E6%97%A5%E7%A8%8B.png" height="400" width="225" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
順位表。</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv9D_HKBOyR9tcKhC2rwBPgq7rJ5BHxR4_jygTtOeDVmLAQ8TZIjtyuAvwAs404T269Y1Wct1zi2092l3hOl_WJwufHmnfn1AYOeJEpdVjWgRxY5lE_U_NtAneBtEWU14bkqMExLvKFhJm/s1600/%E9%A0%86%E4%BD%8D%E8%A1%A8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv9D_HKBOyR9tcKhC2rwBPgq7rJ5BHxR4_jygTtOeDVmLAQ8TZIjtyuAvwAs404T269Y1Wct1zi2092l3hOl_WJwufHmnfn1AYOeJEpdVjWgRxY5lE_U_NtAneBtEWU14bkqMExLvKFhJm/s1600/%E9%A0%86%E4%BD%8D%E8%A1%A8.png" height="400" width="225" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-5722086049054380772014-06-30T16:33:00.000+09:002014-06-30T16:37:52.697+09:00「代表なう」iPhone版リリース!アプリ「<b><span style="font-size: large;">代表なう</span></b>」iPhone版、6/21にリリースできました!<br />
<br />
<br />
ワールドカップの各国代表選手のTwitter、Facebook投稿をまとめてチェックできます。<br />
<br />
<br />
投稿内容の<b><u>日本語訳表示</u></b>に対応しています!<br />
<br />
<br />
右上の「翻訳する」をタップすると、日本語の表示に切り替わります。<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwE-rd8623e1sEnn28MhadzEER6kawTDklso4BxG81UK6Mw9EyzTuJep4xERtSYJ8QBgR-6CEga8WRy-coJFhfhmCjWFKj7mBC-XgDZuw3LGvaKn7Qw6lNNrshyN48XYEGQUaDHmkNXqTI/s1600/%E3%82%BF%E3%82%A4%E3%83%A0%E3%83%A9%E3%82%A4%E3%83%B3.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwE-rd8623e1sEnn28MhadzEER6kawTDklso4BxG81UK6Mw9EyzTuJep4xERtSYJ8QBgR-6CEga8WRy-coJFhfhmCjWFKj7mBC-XgDZuw3LGvaKn7Qw6lNNrshyN48XYEGQUaDHmkNXqTI/s1600/%E3%82%BF%E3%82%A4%E3%83%A0%E3%83%A9%E3%82%A4%E3%83%B3.PNG" height="400" width="225" /> </a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<span style="color: #e06666; font-size: large;"><b>ハメス・ロドリゲス</b></span>、すごいですね!<br />
<div>
<br /></div>
<div>
<br /></div>
<div>
<span style="color: #f1c232; font-size: large;"><b>ネイマール</b></span>も結構つぶやいてます!</div>
<div>
<br /></div>
<div>
<br />
<br /></div>
<div>
ぜひダウンロードしてみてください~!</div>
<div>
<br /></div>
<div>
<br />
<a href="https://itunes.apple.com/jp/app/dai-biaonau/id886560145?mt=8&uo=4" style="background-image: url(https://linkmaker.itunes.apple.com/htmlResources/assets/ja_jp//images/web/linkmaker/badge_appstore-lrg.svg); background: url(https://linkmaker.itunes.apple.com/htmlResources/assets/ja_jp//images/web/linkmaker/badge_appstore-lrg.png) no-repeat; display: inline-block; height: 40px; overflow: hidden; width: 135px;" target="itunes_store"></a>
</div>
Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-83656248006985864452014-06-10T14:49:00.001+09:002014-06-30T16:34:18.285+09:00Androidアプリ「W杯代表なう」リリース!前回のブログから1年以上空いてしまいました。<br />
<br />
本日6/10、Androidアプリ「<span style="font-size: large;"><a href="https://play.google.com/store/apps/details?id=net.footballersvoices" target="_blank">W杯代表なう</a></span>」をリリースしました!!<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/YJ33FS7ChL4vu0ootKg_6cxygfgtZDH-Xpsjio01IwIyWGoC6C4V2dFxRLHYvEzJdjk=h900-rw" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/YJ33FS7ChL4vu0ootKg_6cxygfgtZDH-Xpsjio01IwIyWGoC6C4V2dFxRLHYvEzJdjk=h900-rw" height="320" width="179" /></a><a href="http://2.bp.blogspot.com/NiM3FwjbmVyB2jGjiH3tB1Xn-t8uMIRigD_kTQYqmWzU6l9svbQEUx9Xna9OjR8_YXs=h900-rw" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/NiM3FwjbmVyB2jGjiH3tB1Xn-t8uMIRigD_kTQYqmWzU6l9svbQEUx9Xna9OjR8_YXs=h900-rw" height="320" width="179" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
見ての通り、ワールドカップに出場する各国代表選手のTwitter、Facebook、ブログの<br />
投稿をまとめ読みできるアプリです。<br />
<br />
<br />
外国語は何言ってるか分からないので、自動翻訳機能を予定しています。<br />
<br />
<br />
<b>ワールドカップの主役たちの発信をチェックして、</b><br />
<b><br /></b>
<b>4年に1度の祭典をさらに楽しみましょう!</b><br />
<br />
<br />
<a href="https://play.google.com/store/apps/details?id=net.footballersvoices">https://play.google.com/store/apps/details?id=net.footballersvoices</a><br />
<br />
<br />
※iPhone版も近々登場予定です!<br />
<br />Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-27441834185196963062013-04-30T23:22:00.002+09:002013-04-30T23:32:03.176+09:00Node.js で Google Feed APIさて、<b><span style="color: red;">浦和レッズ My Life</span></b>ではニュース記事の取得に<br />
Google Readerを使用しているが、Googleが7/1でサービス終了するという話で<br />
代替手段が必要になった。<br />
<br />
feedlyがGoogle Reader互換APIを提供するという話もあるが、<br />
まだ情報が公開されていないので、<span style="font-size: large;">Node.jsとGoogle Feed API</span>で<br />
作ってみることにしよう。<br />
<br />
ということで、Node.jsのインストール。<br />
<a href="http://snippets.takahironakamori.jp/2013/01/nodejs_install/">http://snippets.takahironakamori.jp/2013/01/nodejs_install/</a><br />
<br />
<span style="font-size: large;">最初にPython 2.7.3のインストール。</span><br />
<blockquote class="tr_bq">
<span style="background-color: #fff2cc;">$ cd /tmp</span><br />
<span style="background-color: #fff2cc;">$ wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tgz</span><br />
<span style="background-color: #fff2cc;">$ tar zxvf Python-2.7.3.tgz</span><br />
<span style="background-color: #fff2cc;">$ ./configure --with-threads --enable-shared</span><br />
<span style="background-color: #fff2cc;">$ make</span><br />
<span style="background-color: #fff2cc;">$ sudo make install</span><br />
<span style="background-color: #fff2cc;">$ ln -s /usr/local/lib/libpython2.7.so.1.0 /lib64/</span><br />
<span style="background-color: #fff2cc;">$ python -V</span></blockquote>
Python 2.7.3と表示されたらOK。<br />
<br />
* * * * * * * * * * * * * * * * * * * * * * * * * *<br />
<br />
<span style="font-size: large;">次にNode.jsのインストール。</span><br />
<blockquote class="tr_bq">
<span style="background-color: #fff2cc;">$ cd /tmp</span><br />
<span style="background-color: #fff2cc;">$ wget -N http://nodejs.org/dist/node-latest.tar.gz</span><br />
<span style="background-color: #fff2cc;">$ tar xzvf node-latest.tar.gz</span><br />
<span style="background-color: #fff2cc;">$ cd node-v0.x.xx ←解凍したディレクトリへ移動</span><br />
<span style="background-color: #fff2cc;">$ make</span><br />
<span style="background-color: #fff2cc;">$ sudo make install</span><br />
<span style="background-color: #fff2cc;">$ node -v</span></blockquote>
v0.10.5と表示されたらOK。(2013/4/30時点)<br />
<br />
* * * * * * * * * * * * * * * * * * * * * * * * * *<br />
<br />
<span style="font-size: large;">次に、Node.jsでGoogle Feed APIを使うためのモジュールをインストール。</span><br />
https://npmjs.org/package/google-feed-api<br />
<br />
<blockquote class="tr_bq">
<span style="background-color: #fff2cc;">$ mkdir nodetest ※任意のDIR</span><br />
<span style="background-color: #fff2cc;">$ cd nodetest</span><br />
<span style="background-color: #fff2cc;">$ npm install google-feed-api</span></blockquote>
<br />
* * * * * * * * * * * * * * * * * * * * * * * * * *<br />
<div>
</div>
そして実装してみる。<br />
<blockquote class="tr_bq">
<span style="background-color: #fff2cc;">$ vi google_feed_api_test.js</span></blockquote>
<blockquote class="tr_bq">
↓中身<br />
//モジュールロード<br />
var gfeed = require('google-feed-api');<br />
//フィードを読み込み<br />
var feed = new gfeed.Feed("http://www.uramaga.jp/index.rdf");<br />
feed.load(function(res) {<br />
console.log("site title=" + res.feed.title);<br />
});<br />
//フィード取得件数設定<br />
feed.setNumEntries(10);<br />
//フィードを読み込む<br />
feed.listItems(function(items){<br />
for(i=0; i<items.length; i++) {<br />
var item = items[i];<br />
console.log("title=" + item.title + " " + item.publishedDate);<br />
// console.log(" content=" + item.content);<br />
}<br />
});</blockquote>
<div>
<br /></div>
<div>
<span style="background-color: #fff2cc;">$ google_feed_api_test.js</span></div>
<br />
<div>
を実行すると結果は以下の通り。</div>
<blockquote class="tr_bq">
feed title=浦和レッズマガジン<br />
title=「浦和レッズマガジン×浦和パルコ水内猛&都築龍太トークライブ」を開催しました! Fri, 07 Dec 2012 01:55:55 -0800<br />
title=水内猛&都築龍太トークライブ 11月25日(日)、浦和パルコにて開催決定 Sun, 11 Nov 2012 17:35:26 -0800<br />
title=力(リキ)で飲もう。レッズを語ろう。水内猛&島崎英純ウラマガ・トークライブ<RIKI NIGHT>10月23日(火)開催 Wed, 26 Sep 2012 06:31:05 -0700<br />
title=永井雄一郎ナイト 真夏の夜のトークライブ 開催決定! 8月23日(木)19:30~ 東京開催 司会:水内猛 Wed, 15 Aug 2012 05:18:17 -0700<br />
title=水内猛&池田学&時田愛梨7/10トークライブ申込受付中! ウラマガ8月号をプレゼント Wed, 04 Jul 2012 21:28:13 -0700<br />
title=【残席わずか】水内猛&都築龍太トークライブ 6月25日(月)テレ玉スタジオにて開催 Fri, 22 Jun 2012 04:26:59 -0700<br />
title=5月11日(金)福永泰&島崎英純ウラマガトークライブ参加者募集 最新号をプレゼント Wed, 02 May 2012 15:26:16 -0700</blockquote>
<br />
Node.js+Google Feed APIでフィードの内容が取得できた。<br />
<br />
* * * * * * * * * * * * * * * * * * * * * * * * * *<br />
<br />
読み込んだ結果値の構造は<br />
<a href="https://developers.google.com/feed/v1/devguide?hl=ja#resultJson">https://developers.google.com/feed/v1/devguide?hl=ja#resultJson</a><br />
を参照。<br />
<br />
<br />Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-42196483541350836392012-11-20T13:13:00.003+09:002012-11-20T13:13:34.858+09:00スマホアプリ分析ツール「App Annie」がすばらしい<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGrbeazut7TsQvZff_g5NWwqcj0nB-Igy8iAVB7uEeCmFfVOovG7m71gQgR_z4HODM_2A9ifogF0UVXfkzYdsCK_UDnYMNNLbwxvv3j2O8wRmeV7cEkqv6znY7vG5D1JIhqdwvRSQMT7aK/s1600/appannie.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="244" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGrbeazut7TsQvZff_g5NWwqcj0nB-Igy8iAVB7uEeCmFfVOovG7m71gQgR_z4HODM_2A9ifogF0UVXfkzYdsCK_UDnYMNNLbwxvv3j2O8wRmeV7cEkqv6znY7vG5D1JIhqdwvRSQMT7aK/s320/appannie.jpg" width="320" /></a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
ようやくiPhoneアプリをリリースして、<br />
<br />
「よし、どのくらいダウンロードされてるかな?」<br />
<br />
と思って、iTunes Connectで意気揚々と「Sales & Trend」をクリックしたまではいいが・・・<br />
<br />
<br />
<br />
日ごと、週ごとのダウンロード数やランキングは分かるけど、<br />
<br />
<span style="font-size: large;"><u>合計ダウンロード数が分からない</u></span>。<br />
<br />
<br />
なんでだ!?と思いつつ検索してると、<b><span style="font-size: large;"><a href="https://www.appannie.com/" target="_blank">App Annie</a> </span></b>というサービスを発見。<br />
<br />
<br />
アカウント登録してしばし使ってみた所、<span style="font-size: large;">これはいい</span>!<br />
<br />
<br />
ダウンロード推移やランキング推移がチャートで見やすく表示され、<br />
<br />
もちろん合計ダウンロード数も表示される。<br />
<br />
<br />
<span style="font-size: large;">iPhone/Androidに対応しているし、無料で使えるし、</span><br />
<br />
スマホアプリ開発者には必須のサービスとなるね。<br />
<br />
<br />
「Sales & Trend」を見ることは二度とないかも?<br />
<br />
<br />Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-1161512501586111792012-11-13T13:42:00.003+09:002012-11-14T12:33:17.842+09:00「浦和レッズ My Life」 iPhone版リリース「浦和レッズ My Life」 iPhone版、<br />
<br />
先日の申請後、バグにより1回リジェクトされた後、<br />
<br />
<span style="font-size: large;">本日めでたく承認されました!!</span><br />
<br />
<br />
<br />
このアプリは、<br />
<br />
<span style="color: red; font-size: large;">浦和レッズのファン・サポーターのための情報集約アプリ </span>です!<br />
<br />
<br />
浦和レッズに関係するニュース・ブログの更新情報一覧、試合日程・結果やハイライト動画検索、<br />
<br />
順位表やtwitter閲覧の機能があります。<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://a195.phobos.apple.com/us/r1000/072/Purple/v4/8e/e4/2d/8ee42d20-3125-0d79-72d7-a50b5fbf98a6/mzl.vrtsveda.320x480-75.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="http://a195.phobos.apple.com/us/r1000/072/Purple/v4/8e/e4/2d/8ee42d20-3125-0d79-72d7-a50b5fbf98a6/mzl.vrtsveda.320x480-75.jpg" width="180" /></a></div>
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://a1694.phobos.apple.com/us/r1000/061/Purple/v4/16/28/b2/1628b203-bf5e-e653-ecf3-e265bdcae42c/mzl.dyeshlsq.320x480-75.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="http://a1694.phobos.apple.com/us/r1000/061/Purple/v4/16/28/b2/1628b203-bf5e-e653-ecf3-e265bdcae42c/mzl.dyeshlsq.320x480-75.jpg" width="180" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://a180.phobos.apple.com/us/r1000/061/Purple/v4/0b/2a/b1/0b2ab139-d48e-a958-8043-e77c7c85f598/mzl.ptyuengr.320x480-75.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="http://a180.phobos.apple.com/us/r1000/061/Purple/v4/0b/2a/b1/0b2ab139-d48e-a958-8043-e77c7c85f598/mzl.ptyuengr.320x480-75.jpg" width="180" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://a388.phobos.apple.com/us/r1000/107/Purple/v4/39/4a/dd/394add49-af6a-db0c-3ab1-4a0a250c2f10/mzl.kgquedgc.320x480-75.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="http://a388.phobos.apple.com/us/r1000/107/Purple/v4/39/4a/dd/394add49-af6a-db0c-3ab1-4a0a250c2f10/mzl.kgquedgc.320x480-75.jpg" width="180" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
2012年シーズンはもう残り3試合ですが、<br />
<br />
レッズサポの方は是非ダウンロードして使ってみて下さい~!<br />
<br />
<span style="font-size: x-large;"><br /></span>
<span style="font-size: x-large;">ここからダウンロード↓</span><br />
<span style="font-size: x-large;"><br /></span><span style="color: #0000ee; font-size: x-large;"><u><a href="https://itunes.apple.com/jp/app/pu-herezzu-my-life/id570541514?l=ja&mt=8">https://itunes.apple.com/jp/app/pu-herezzu-my-life/id570541514?l=ja&mt=8</a></u></span><br />
<br />
<br />
<br />Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-17325243918637928842012-10-21T21:56:00.004+09:002012-10-21T21:56:59.545+09:00浦和レッズ My Life iPhone版申請!!ようやく、iPhone版の申請ができた!!<br />
<br />
早く承認されないかな〜!Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-81184230021920317852012-10-18T14:42:00.000+09:002012-10-18T14:42:01.246+09:00iPad miniもうすぐ発表されるiPad mini。<br />
<br />
<br />
<span style="font-size: large;">速攻で予約するよっ!</span><br />
<span style="font-size: large;"><br /></span>
<br />
いや~ようやくだなあ。<br />
<br />
Galaxy Tab、Nexus7は我慢して見送ってきたからな。<br />
<br />
<br />
iPhone5はすごくいいけど、やはりもっと大きく、広く見たい。<br />
<br />
<br />
<br />
そして、、アプリ開発はまた困難が増える・・・のか?Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-26891547203879363552012-10-15T15:25:00.001+09:002012-10-15T15:25:27.097+09:00iPhoneアプリ開発iPhoneアプリ開発は複雑ですね。<br />
<br />
開発者登録、証明書、デバイス登録、配布用アーカイビング、iTunes Connectなど、<br />
<br />
やることがてんこもり。。<br />
<br />
でも70万近くのアプリが公開されていて増え続けている。<br />
<br />
ハードルの高さを考えると、このプラットフォームは本当にすごいです。<br />
<br />
<br />
自分もそのプレイヤーになるべく、浦和レッズ My LifeのiPhone版をTitaniumで作ってます。<br />
<br />
あともう少し・・・・<br />
<br />
今シーズン中に出すぞ!<br />
<br />Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-86567628666619300662012-09-13T22:14:00.000+09:002012-09-13T22:16:18.663+09:00TitaniumでUnicodeDecodeErrorTitaniumプロジェクトをXcodeでビルドしたらUnicodeDecodeErrorが発生・・<br />
<br />
しばらくハマってたが、原因判明。<br />
<br />
ソース中のコメント内に、Ti.UI.SIZEとか、Ti.UI.orientationとかがあるとダメらしい。<br />
<br />
これは予想外だわ。。気をつけよ。<br />
<br />
参考:http://dokuwiki.eniblo.org/doku.php/titanium/imp_issue2Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-22866695223914014182012-07-12T19:55:00.001+09:002012-07-12T19:55:18.174+09:00Google App Engine て大変!Google App Engine に悩まされるこの頃・・・<br />
<br />
スピンアップがすごい遅かったり(10秒以上とか)<br />
<br />
スピンアップがないのにいきなり意味不明に重くなったり、<br />
<br />
次の日にはすごい速くなったり。<br />
<br />
<br />
業務システムにはちょっと辛いか・・・<br />
<br />
<br />
他のPaaSはどうなんだろう。<br />
<br />
Amazon Beanstalk と Heroku を使ってみた<span style="background-color: white;">い。</span><br />
<br />Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-90896440400667045082012-07-05T14:28:00.000+09:002012-07-05T14:28:20.856+09:00勉強している風エンジニアにならないために<br />
<b>「勉強している風エンジニアにならないために」</b><br />
<a href="http://blog.velc.jp/post/25535319529">http://blog.velc.jp/post/25535319529</a>
<br />
<br />
<br />
「勉強している風」、すごくありがちですね。<br />
<br />
こうならないように常に自分にプレッシャーをかけていきたいです。<br />
<br />
それにはまずブログで「○○までに○○する!」と宣言するのがいい。<br />
<br />
<br />Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-17248901733470580182012-06-28T16:56:00.004+09:002012-06-28T16:56:56.839+09:00iOSシミュレータが落ちるTitanium + Android で開発したアプリをリリース後、<br />
<br />
iPhone版にとりかかってるわけですが、<br />
<br />
iOSシミュレータって何のログも吐かずにいきなり落ちたりする。<br />
<br />
それも結構な頻度で・・・<br />
<br />
<br />
うーん・・・・<br />
<br />
<br />Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0tag:blogger.com,1999:blog-3079202448182684162.post-3164246947163356852012-06-11T14:00:00.000+09:002012-06-11T14:00:17.419+09:00「スマートフォンUXの最前線」勉強会レポート<a href="http://b.hatena.ne.jp/articles/201206/8966">http://b.hatena.ne.jp/articles/201206/8966</a>
<br />
<br />
この勉強会はとても興味深かったので、詳しいレポートありがたい。<br />
<br />
忘れた頃にまた読み返したい。Motoi Kataokahttp://www.blogger.com/profile/08971578059635794324noreply@blogger.com0