mosowave

sinamon129による(主に)技術ブログ。Ruby,Ruby on Rails,Elasticsearchやその他について書きます。

今年のTRYの進捗

もう3月になりました。あっという間ですね。

せっかくなので軽く振り返り記事。

★日常生活編
1. 体力をつける
→朝ヨガに行き始めた。が、体調崩したりして、まだ2回しかいってない。
 TRY:今週からは行く。

2. 週2回以上は自炊する
→なんやかんやでできてる。頑張る。

3. 早起きをする
→できてない。ギリギリでおきてる。
 TRY:朝ごはんを食べれる時間に起きるようにする。最低8時。

4. 一日一箇所何か片付ける
→全然できてなくて、部屋が荒れたので今日頑張って片付けた。
 物が多いのが問題なので、いらないものは売るか捨てるかするようにしてものを減らす。
 TRY:一年以上手をつけてないものは捨てる

★仕事編
1. 効率アップするアレコレを覚えたり時間やお金を投資したりする
→心がけ始めた。Dashにsnippetを追加したりして、ちょっと効率化した。
 vimrcとかzshrcを整備しなおしたりした。

2. 人に聞くと決めたら早く聞く
→案外大丈夫になってきた気がする。この調子。

★その他
1. 本を読む
→あまりできてない。
 TRY:デザインパターン関係の本(先輩に貸してもらった)2冊読む
    あと、Effective RubyとパーフェクトRuby on Rails読む

2. ブログを書く
→全然できてない、リレーブログすっ飛ばした
 TRY:最低でもリレーブログは書く

3. もうちょっと外にでる
→服を買いに行くとかしかしてない気がする…
 歯医者に行く習慣はついたけど…。
 TRY:一人で行く気が起きないなら誰かとの予定をいれる、土日どちらか一回以上。

    • -

またこのTRYの進捗を書く。

今年のTRY

1 月も半ば過ぎ去りましたが。
年末年始をすぎると、今年という年に関する想像が現実になってくるので、
なんというか、ドリーミーじゃなくて現実的なTRYがでてきたなーとおもうので、
ブログにまとめて宣言(期限つき)しておこうとおもいます。

なんというか、できそうだけどできなかったこと、が多いんですが、
これをやるともうちょっといい感じの人間になれるとおもう(しろめ

上半期が終わったぐらいに、中間報告を書こうとおもいます。

★日常生活編
1. 体力をつける
学生の時は、自由に生きてたので、むしろ土日のほうが働いてたりしたのですが、
社会人になってからの傾向が、土日が非常に廃人と化して活用できてないなと。
全ては平日にすべての体力を使いきって抜け殻になってるのですが原因なのですが、
これはよろしくないので、軽い運動を始めて体力をつけたいなーと。最近ヨガがきになる。
【リミット:3月までにワンアクションはおこす】

2. 週2回以上は自炊する
飲み会があったり、起きれなかったり、疲れきっていたりで、どうしても外食になりがちな毎日。
自炊はお金もかからないし、塩とか油とか自分で入れる量調整できますし。
毎日自炊は無理だろうので、週2回の現実最低ライン。
【今から】

3. 早起きをする
4月とは7時には起きていたのに、最近は8時すぎぐらいに起きてるような…。
高校時代は5時半起きだったので、やればできるはず。朝ごはんを食べてから会社にいけるように。
7時半には起きよう…w
【明日から】

4. 一日一箇所何か片付ける
一週間経つと部屋がすごいことになって毎週土日に片付けるハメになるのをやめたい
【今日から】

★仕事編
1. 効率アップするアレコレを覚えたり時間やお金を投資したりする
そんなにキーボード打つのがめっちゃ遅いとかじゃないとは思うのですが、
覚える気があんまりなくていままで覚えてこなかったコマンドやショートカット類をちょこちょこ覚える。
あと、手動でやらないでもいいことは自動化スクリプトを書くなどする。
ぬくもりなくても良い部分は手作業から脱する
【今から】

2. 人に聞くと決めたら早く聞く
作業など一人でできることは比較的早め早めに手をつける習慣があるのですが、
普段あまり接しない人に聞きに行くとかっていうところが非常に遅い(精神的ハードルを作る傾向がある)
わかってるんですけど、自分にとって一番ハードルの高い部分。
えいやってやってみる習慣をつける。
【来年になって、そんなことなくなったなーって思えるようになる】

★その他
1. 本を読む
ビジネス書や技術書などを読む習慣をつける。
【今から】

2. ブログを書く
4週に一回はリレーブログが回ってくるけど、もうちょっと書いてもいいような気がする。
ゆるふわな内容でもいいので、アウトプットする場を作る。
【今週から】

3. もうちょっと外にでる
土日に最低一回、初めて行く所に行くようにする(いつも大体同じ行動をする傾向にあるので。)
【今週から】

TodoistとTodoistAPIで、毎朝のタスク報告をするヾ(‘ω’)ノ

この記事はVOYAGE GROUP エンジニアブログ : Advent Calendar 2014の11日目の記事になります。

こんにちは、@sinamon129です。
VOYAGE GROUPで、新卒一年目のエンジニアをしておりますヽ|・ω・|ゞ

突然ですが、みなさんはタスク管理ツールってつかっていますか?
学生時代はTODOが多い時だけメモに書き出してみたりしていたものですが、
会社に入ると、今日や今週に自分が自分がやる仕事を把握したり、報告する場面が増えました。また、仕事だけじゃなくて、プライベートのタスクもあったりして、時間を有効活用するために、やるべきことをきちんと把握したいようになりました。

そこで、Todoistを使い始めたので、どこが使いやすいかと、普段の報告を簡単にするプログラムを書いた話をしようと思います〜

Todoistとは?

いい感じのタスク管理ツールです。詳しくは、

To-Doリストとタスク管理。無料、簡単、オンラインとモバイル用: Todoist

日記3日坊主的正確の私なので、あまり管理系のツールを使い続けられたことがないのですが、一週間ぐらい続いています…w

個人的にいいなと思ってるポイントを3つ。
f:id:sinamon129:20141211101715p:plain

今日&一週間のやることが見やすい

全体的に無駄がなくて、テンションのあがるUIだとおもいますw
今日と次の7日間がフォルダ分けされているので、
今日やることをみながらTODOをこなすし、明日のものを前倒しにしてやっといたほうが平和そうとか、そういう調整を一週間の予定を見ながらできます。
また、期限が切れたタスクも今日のフォルダに入ったままになっていて、やばいやばい感を持ちながら消化することもできます…w

やたら褒められる

当日のタスクを全て終了すると、お疲れ様でした的な文章がでたり、あなたの生産性という項目があって、タスクをこなすとカルマが加算されていったり、日や週煮立てた目標を達成すると、ボーナスポイントがもらえたりするので、楽しいですw

一人で使うのに適している

プロジェクトを共有して複数人でつかうこともできるのですが、一人で使う時に気軽に使えるのがすごくよいです。

日々のタスクを自動で報告してみる

会社で、毎朝Slackの所属チームのチャンネルに、昨日やったことと今日やることを投下して、メンバーに共有をしています。
せっかくTodoistをつかっているので、昨日終わらせたものと今日やることにはいってるものをそのままslackに投げたいなーとおもいました。
でもいちいち探してコピーするのは面倒だし…
ということで、Todoist APIとSlack APIをつかって、
Todoistで管理している仕事の昨日やったこと・今日やることをSlackに投げることにしました。

今回は、http://todoist.com/API/Todoist Standard APIの、

  • /API/getUncompletedItems
  • /API/getAllCompletedItems

を使って、昨日やったことと今日やることを取得することに。

どちらも、この日のという指定をして取ることができなかったので、
全部とってきて、プログラム側で処理をしています。
(コード適当でごめんなさい)

#todoist.rb 
require 'open-uri'
require 'json'

class Todoist
    API_URL = 'https://todoist.com/API/'
    TOKEN = 'とーくん。設定から取ってこれる'

    def getAllCompletedItems(project_id)
        request_url = create_url('getAllCompletedItems', {:token => TOKEN, :project_id => project_id})
        api_request(request_url)
    end

    def getUncompletedItems(project_id)
        request_url = create_url('getUncompletedItems', {:token => TOKEN, :project_id => project_id})
        api_request(request_url)
    end

    def api_request(request_url)
        res = open(request_url)
        code, message = res.status

        if code == '200'
            return JSON.parse(res.read)
        end
    end

    def create_url(action, params)
        API_URL + action + '?' + URI.encode_www_form(params) 
    end

end
#slack.rb
require 'uri'
require 'net/http'

class Slack
    TOKEN = 'slackのとーくん';

    def post_message(text)
        `curl -F "token=#{TOKEN}" -F "channel=#{'チャンネル名'}" -F "username=#{'投稿名'}" -F "text=#{text}" -F "icon_emoji=>#{'アイコン代わりの絵文字'}" https://slack.com/api/chat.postMessage`
    end
end
# daily_standup.rb
require 'date'
require './todoist.rb'
require './slack.rb'

project_id = 'とってきたいプロジェクトのID'

todoist = Todoist.new
all_complete_items = todoist.getAllCompletedItems(project_id)
uncomplete_items = todoist.getUncompletedItems(project_id)

yesterday_complete_tasks = ''
all_complete_items['items'].each do |task|
    if Date.today - 1 === Date.parse(task['completed_date']) then
        yesterday_complete_tasks << "#{task["content"]} \n"
    end
end

today_tasks = '' 
uncomplete_items.each do |task|
    unless task['due_date'].nil? then
        if Date.today === Date.parse(task['due_date']) then
            today_tasks << "#{task["content"]} \n"
        end
    end
end

daily_standup = <<"EOS"
:panerun: しなもん :panerun:
# 昨日やったこと
#{yesterday_complete_tasks}
# 今日やること
#{today_tasks}
EOS
print daily_standup

slack = Slack.new
slack.post_message(daily_standup);

あとで綺麗にして、githubにあげます(TODO)

そうすると、
f:id:sinamon129:20141211101316p:plain
こういう感じで投稿できるようになります!
あとは、cronで毎日9時半(定時)にセットすれば手を離してても報告できますね!(´・艸・`)

明日は、同期で音ゲーをこよなく愛する@gomachan46です!

【Tech Women Advent Calendar 2014】今思えば笑える&背筋が凍る 私が犯したwebアプリケーション開発〜リリースまでの黒歴史(ゆるふわに10個)

※これはTech Women Advent Calendar 2014の1日目として書かれています。

こんにちは、@sinamon129といいますヾ[・ω・`●]
皆様からはしなもそとよばれています。

本題に入るまえに、この記事は、
Tech Women Advent Calendar 2014の一日目&私がカレンダー登録したということで、
少し前置きを。

http://qiita.com/advent-calendar/2014/tech_women
Tech Women Advent Calendar 2014 - Qiita

こちらのアドベント・カレンダーは、
TechなWomenのためのAdvent Calendarで、興味のあるプログラミングなどの話題(分野問わず)や、最近流行りの○○女子部(ex. Linux女子部,Android女子部, Pyladies等)での活動の様子などの発信をして、盛り上がっていく!ことが目的のカレンダーです!

techなwomen人口は少ないと感じているのですが、女子部系の活動も盛り上がってきていることですし、更に盛り上がっていければと思っております!

そんなところで、本題に。。

今思えば笑える&背筋が凍る 私が犯したwebアプリケーション開発〜リリースまでの黒歴史

今私は社会人一年目なのですが、大学生の時の昔話をしようとおもいます。
あれは大学三年生の冬でした。
当時関わっていた、当時学生のメンツだけで作っていたwebサービスがありました(今もあります)。
その頃、私のwebアプリケーション開発経験は今より本当に乏しかった時期に、
たまたま、関わっていたサービスがありがたいことに、テレビやSNSのシェアでアクセスが沢山来た時に、
色々奮闘した際にやった、今思えば笑える&背筋が凍る話。
(時系列が案外バラバラになってしまった)

1.バージョン管理などされていない!?開発機で上書きされまくり

第一バージョンを作っている時は、gitの使い方もあやしい時期だったので、複数人で同じサーバのデータを編集していました。
cssをなおして、よっしゃ!っておもってリロードすると、まさかの元にもどってる!?コードも元に戻ってる…うああああ。
その後バージョン管理をはじめました(学び)

2.本番DBを直接GUIツールで編集しまくり

特に深夜帯でもなんでもない、アクセスが集中する時間帯に、データ更新のために、レコードを直接編集したり、カラムを間違えて消したりしていた。
うわーしくったとかいいながら、消す前にとっておいたダンプファイルになおしていた。

3.コントローラーが全て しかもメソッド一個

フレームワークCakePHPだったのですが、複雑なロジックも全部コントローラーに書いてある。もちろんテストなんて一個もない。コワイ
ひさびさによんだらこれはひどいって感じだった。

4.間に合わないところは全部静的ページ状態

エンジニアの手をつかわなくても更新できるとか、ピックアップ的なものを用意していたりしたのですが、間に合わなくて全部ただのhtml
最後まで仕組み化できず

5.データは頑張って手動でどうにかする

データの更新をエクセルでもらう
エクセルからcsvで保存&文字コード改行コード変換(coteditorで)
&DB格納用に変換(一応自前スクリプト
(絶対自動化できる)

6.最初にアクセスが沢山きて、サーバが重くなった時、攻撃されてると思っていた

さくらVPSの一番低いプランのサーバ一台構成(DBサーバはもちろん別ではない)だった時期に、
重すぎてみれないという報告をうけ、
とりあえず本番サーバに入って、インターンで覚えたてのtopコマンドを打つ。
そしたらロードアベレージが見たことない数値(記憶があやしいですが、桁が二桁ぐらい違う?)。
意味不明だ!これは攻撃されている!やばい!
と助けを求めましたが、アクセスがたくさん来ているだけでした。

mysqlのテーブルに一個もインデックス貼ってないわ、キャッシュもなにも設定してない状態でした。
いろんな人に助けを求めて何とかチューニングをして事無きを得ました。(入ってる状態で固まって為す術がなくなり再起動しました)

7.明日はテレビだから、とりあえずサーバーを増築?しましょう事件

翌日テレビに出ることになったけど、そもそもテレビに出たらどれだけアクセスが来るかはかりしれず(なにもわかってない)。
出るのは朝のニュース番組で、日付が変わって当日(0:30ぐらいだった)になってから、やっとサーバーの設定をスタート(ようは6時間半ぐらいしかない)。
時間がないので、とりあえず増築というか、スペックのいいサーバに交換することに(DNSの再設定が必要)これが後あと悲劇を呼ぶのだった。。。

7.1 サーバを変えるために、設定して、リポジトリをクローンしたけど、アプリケーションが動かない

apacheの設定、mysqlを入れて起動したのに、動かない。なんでだああああ。
となって、チームメンバーと確認してたら、phpが入ってなかった(cakePHPでつくったアプリケーションでした)

7.2 深夜帯の作業のため、遠隔でやりとりしていたチームメンバーの連絡が途絶える

やっとアプリケーションがうごくようになったし、データも前のサーバからとってきたし、お名前ドットコムで設定も切り替えたし大丈夫だ!
っておもって、メンバーにできた!って報告したら、反応がない。
みんな寝落ち…w(メンバーはみなリモートでやりとりして開発していました)

7.3 お名前.comページが見える

朝の情報番組で人が来ているのを無事analyticsで確認してチャットに書き込み、
とりあえずその日面接だし(就活生)仮眠をとって、電車に乗り込む。
そしたら、【お名前ドットコムのページがみえるんだけど…?】との連絡。
その日の夜、もう一本大きい番組の放送がまっていたのに、まさかのお名前トッドコムのページがみえる!?なんで?
実は、深夜作業の時に、DNSレコード設定で、まさかのリセットボタンを押していました…
その後、設定しなおしたのですが、まあリセットの設定が一度反映されてしまってるので…(察し)

7.4 IPアドレスfacebookページに貼る

どうしようもなくなってしまったので、
テレビ番組に、アクセスが多くてつながらなかったら、facebookページをみてくださいと伝えてもらい、IPアドレスを書いた

8.mysqlとアプリケーションが同じサーバにあるのを2つ作ってロードバランサにつないだ

二箇所の別のマスターDBにデータが分散して格納される(しかもどうやって一緒にすればいいかわからない)みたいなひどいことが起きてた

9.バグったから、本番サーバを直接直す

テレビ放送何分か前に、git管理してた方のブランチがリリースできる状態じゃなくなり(masterしかなかったし、何処に戻ればいいのかすら謎だった)
しょうがないので、本番サーバのコードを直接直した。

10.もうだめだとおもってアプリケーションのコードを3回フルで書き直した

フレームワークなしの生PHPから、3回全部書き直していて、テーブル構成も2回は変えた。
若気の至りだったと思う。
なのに、久々にみたら、ひどすぎて泣けた。

      • -

久々に書き出したらとまらないですね…。そしてひんやりします。
今回はゆるふわに書きましたが、どこがどうやばいのかと、今ならどうするをセットにした記事をまた書いてみようと思います!

明日の担当は、会社の超尊敬する同期である@amacbeeです!

iPhoneがない(´・ω・`)からの学び

こんにちは、@sinamon129です。

最近jquery mobileに苦しめられています。

さておき、
今日外で夕食を食べたあとに、
ブログのネタを考えて書くために喫茶店に向かっていました。

コーヒーを注文して、
席について、テザリングしようと思ってiPhoneをつけようとしたら、

iPhoneがない…orz

うあああああorz
でもご飯を食べた場所で、
席を立つときに忘れそうだと思って持ったはず。
そこから喫茶店まではどこかに立ち寄ったりはしませんでした。


ポケットやかばんにもはいっていなくて、
とりあえず、一緒にいた人にwifiを借りて、
iPhoneを探すをしました。


そしたら、iPhoneはオフライン

おかしいなぁ、電池はあったから、電源は切れていないはず。
オフラインだと探せないので、とりあえず電源がはいったら警告がなるようにしました。

とりあえずその喫茶店で確認し、
元きた道をたどりつつ交番へ向かいました。


途中で、上着の袖のなかにiPhoneを入れてブンブン腕を振り回していたことを思い出し、
(その時はすごく夢中に話していた)
その時に落としたのかもしれない
(気づかなかったのかよって感じでした)

そして交番について、調べてもらったら、
別の交番にあるかも?とのことで、いってみたら、



ありました。拾ってくれた人ありがとう(´;ω;`)日本でよかった。

そこで、iPhoneを渡され、パスコード解除してください(目の前で)
(本人のものかどうかの確認ですね)
といわれて、渡されて、

あれ?電源切れてる?電池きれてるかも?といったら、

「電源きるようにしてるんですよ〜」

っていわれた。


そうか、iPhone交番に届いてたら、
電源切ってくれるからiPhoneを探すでオフラインになってる可能性あるのか。

という学びがありました。

きっと電源きれちゃうと、本人確認できなくなるからでしょうね。

なお、iOS8からは、最後の位置情報を送信する機能があるらしく、

【iOS8】紛失&盗難防止!「最後の位置情報を送信」は必ずオンに! | 楽しくiPhoneライフ!SBAPP

いまからOSアップデートして、それを入れようと思いました。
(あげてなかったんかよ、というツッコミはおいといてw)


<学び>
iPhoneは袖に入れてぶんぶんしない
・常に所在を把握しながら移動する
・交番に運良く届くと、電源切られるからiPhoneを探すできない
・iOS8からは、最後の位置情報を送信することができる


iPhoneおとして疲れたので今日のブログはこれだけです←

PyLadies Tokyo Meetup #1に参加してきた!

こんにちは、しなもそです。

ふだんは仕事でphpを書いていることが多いのですが、
同期の@amacbeeが主催しているということで、
会場係<として参加してきました!

pythonはド初心者なのですが、
@amacbee「会場係やってくんない〜」
@sinamon129「いいよ〜」
@amacbee「LTやらない〜?」
@sinamon129「いいよ〜」
の二つ返事でやってみました。

今日は折角なので、かる〜くどういう内容だったかを書きたいと思います。
(飲みながらかいてるので、若干おかしいかもしれないですね)

PyLadies Tokyo Meetup#1はどういうイベントなのか?


PyLadies Tokyo Meetup #1 - connpass

PyLadies Tokyoは,PyLadies (http://www.pyladies.com/) の東京(or 日本!?)支部として,Pythonが好きな女性同士をつなぐために活動しています.その最初のMeetupとして、開催されました!
来ている人はPython玄人から初心者の方まで色々でした!

スケジュール&発表内容

さらっと書きます!

オープニング:PyLadies Tokyoについて  @amacbee

@amacbeeによる、PyLadiesってこういう団体だよ!っていう話

Python初心者がTornadoを触ってみた @sinamoso129

@sinamon129(自分)による発表。
Pythonはほぼ勉強したことがないのですが、せっかくなのでLTを!ということで、
何をしようかなぁとおもったときに、Tornadoがおもしろそうだったので、
Tornadoをhello worldする感じのデモをしました。
さくっと簡単に、手軽にできるwebサーバ&フレームワークだなぁと思いました。

Pythonと出会ったデザイナーの話 @uniqさん

デザイナーさんが、Pythonを触るにいたった経緯なお話。
もっとよしなにデザインしたい!っていう歯がゆいところから、
pythonを触るようになって。
エンジニアとデザイナーってやっぱり近い所にいるし、
お互いの領域に踏み込めたほうがいいよねーというのはありますよね。

技術本翻訳のススメ @fujinagaさん

たのしいプログラミング Pythonではじめよう! の訳者の方による、
技術本翻訳のススメ。
英語から日本語の表現に変える難しさはありつつ、
技術本はテクニカルタームが多く、実用書なら具体例も多いので、
そういう点は楽しそうなところも多そうに感じました!

Simple is better than complex. ~私がPythonを愛する理由~ @cocodripsさん

プログラミング言語を学ぶときに、何から学びますか?という話から、
言語思想を学ぶといいのでは話から、Zen of Python を読み合わせる!
Pythonの言語思想はいいなぁというところが多かった。何回も読みたい。

PyLadies Tokyo活動予定について @amacbee

他国のPyLadiesの活動の様子や、今後の活動はどういうふうにしていきたいかなど。
一緒に作っていきましょう募集てきな感じ!

クロージング @amacbee

ゆるふわっぽいけど、ガチな感じでよかったです。ありがとうございました〜

懇親会(希望者)

なんかOSSにバグレポートを出す話とか、英語の話だったり、海外のカンファレンスの話だったり、
すっごいガチな話が多く…w
一旦お開きの後、女性エンジニアのキャリア、キャリアアップの悩みについての話に。
今後こういう話も聞きたいですねーという話も。

\\(//∇//)\\この顔文字がエスケープ泣かせだった

\\(//∇//)\\
…ただの照れてる顔文字に見えるが案外手強いこいつ
(見たらわかると思うが、スラッシュとバックスラッシュを多用している…)

vimで検索したかったとき
?\\\\(//∇//)\\\\

vimで置換したかった時
%s?\\\\(//∇//)\\\\?置換する文字列?gc

…たぶんいままでつかったことないけどぜったいこれからさきも\\(//∇//)\\こいつつかわないってきめたんだ…