投稿

9月, 2016の投稿を表示しています

LineBot動かしてみた #golang #linebot #heroku

イメージ
始まり
LineさんのStreaming APIが公開されたようです。とりあえずやれ(JUST DO IT)動かすぞの精神で動かします。 今回はGoとHerokuを使います
 JUST DO IT!!!!

今回はGoとHerokuを使います。理由は以下
@mogetta Herokuで動かせるよ — すぎゃーん💯 (@sugyan) 2016年9月29日 コードとりあえずGithubに。(と言っても、SDKに入ってたエコーをherokuに上げるように修正したのみ。
https://github.com/mogeta/lbot

手順、および詰まった箇所等
そもそも、どこから登録すんだ?>https://business.line.me/ja/channel_secret?channel_token?どこだ?ってなるので、素直に動画見たほうが良い。>https://developers.line.me/messaging-api/getting-started#what_you_needwebhookに指定するURLはhttps必須。とりあえず試す場合、herokuやLet's Encryptに頼ることになるかな?IPのホワイトリスト指定。起動して、対話するとこんな感じでログが出てる。ひとまず動かすだけなので、指定されたアドレスをさくっと登録しときましょうねー。linebot: APIError 403 Access to this API denied due to the following reason: Your ip address [<ipアドレス>] is not allowed to access this API. Please add your IP to the IP whitelist in the developer center.
herokuで起動の手順
herokuにユーザー登録。herokuツールベルトのインストール後は各自、コマンドライン上でコマンド打っていく大体公式の手順書に従う感じでやれば問題ない、Goの場合はここheroku create >これだけでサーバーが立ち上がる、URLとgitリポジトリが示される>デプロイしたいアプリがあるディレクトリでかつ、git initしとくとherokuというリモートを追加し…

サービスを作りたいエンジニアってなんだろうなー。リアルウォンテッドリーに行ってきた。

リアルウォンテッドリーに参加してきましたよっと。
お酒も入ってるけど、一気に書かないとブログ書かないなと思ったので。
(エンジニアという表記がブレてるなーと思ったけど、大体ITのエンジニア、いわゆるWeb系プログラムを書いたりする人と思ってください)
あ、コーヒー、めっちゃうまかったです。↓
speeeさんのコーヒーガチでうまかった。 — もげっ (@mogetta) 2016年9月28日  自分のような緊張しいには面接の場よりも数段カジュアルに仕事や技術のことが聞けたのでだいぶありがたい集まりでした。(それでも緊張してかなりしどろもどろ感もあったけど)

 どういうエンジニアを求めていますか?という質問をすると、多くの企業で「サービスを作りたいエンジニア」もしくはそれに準じたニュアンスをもらった。自分はどちらかと言えば、技術を追求して価値を高めるエンジニアではなく、今ある状況、使える技術においてどのように最大利益を追求するか?というエンジニアだと自負しているのでこの点に関してはだいぶ心強いなと思った。(ちなみに、自分と仕事をしたことがあるエンジニアや同僚に聞きたいんだけど、この点ってニュアンス合ってます?技術を追求する方のエンジニアって思われてる?)

 余談)前職ではベトナムのエンジニアと協業でゲームを製作していたのだけれど、エンジニアとしての仕事よりも、ゲームの仕組みづくりやどうやったら広告を見てもらえるか、ユーザーが続けたいと思うモチベーションはなにか。どうやってゲームが遷移するのか。みたいなのを考えてることが多かったなーなどとつくづく。一年かけて、結局3,4回フルスクラッチで作り直してポシャったんだけど。)

 ところで「サービスを作りたいエンジニア」ってなんだろう。という根本的な疑問が湧いてきている。思いつく限り、適当に羅列していく。

企画から参加し、意見を出せるエンジニア改善案を提案出来る。自分ごとのように考える。 うーん、もうちょい具体例を出したいな。どういうのがいいだろう。自分はゲーム業界畑だったのでそちら側に流れがちになるけど。 どのタイミングで動画広告だす?それってユーザーがみたくなる?、じゃあこのタイミングで(ryこの数字が撃破したモンスターだと伝わるように魂的なエフェクト載せません?PCとかスマホとかゲームのビュー複数持つならサーバー側APIにし…

GoとDockerのお勉強 #golang #docker

イメージ
始まり ISUCONの敗北から、もう少し体系的にWebサービスの作成を学ばなければ。と思い始めたので唐突にDockerから始める。Dockerについて、ガッツリ説明するというよりかは、自分の知識の再確認。メモの用途が強い記事。

一言まとめhttps://blog.golang.org/dockerを見る各自の環境に合わせたDocker for ほげほげを導入。自分はMac用:https://docs.docker.com/engine/installation/mac/自分のPCにDocker環境構築 https://docs.docker.com/machine/get-started/Docker環境立ち上げ、アプリのビルド、Dockerの実行。 という流れ。 環境など
Goのバージョン
go version
go version go1.7.1 darwin/amd64Macの環境
sw_vers
ProductName:Mac OS X
ProductVersion:10.11.6
BuildVersion:15G1004Docker周り
docker -v
Docker version 1.12.1, build 6f9534c
docker-machine -v
docker-machine version 0.8.1, build 41b3b25
docker-compose -v
docker-compose version 1.8.0, build f3628c7 VirtualBox バージョン 5.1.6 r110634 (Qt5.5.1)

インストールはここから、Docker for Macを選択。
https://docs.docker.com/engine/installation/mac/

公式の導入記事https://blog.golang.org/docker


サンプルをgo getDockerfileを書いてあるとおりに書き換える
# Start from a Debian image with the latest version of Go installed
# and a workspace (GOPATH) configured at /go.
FROM golang
# Copy the local package files t…

ISUCONにてGoの正規表現で爆死 #ISUCON #golang

概要 基本的には表題の通りです。惨敗。

http://isucon.net/に参加してました。
メンツは去年と同じく自分、@ayumu83s@roro0000
チーム名は「瞬殺の美学」集まったときにみてたナショジオが由来。瞬殺どころか
問題にじわじわなぶり殺しだったわ。
選択した言語はGo。
なるべく一週間に一回、「ざつもく会」と称して復習をしてました。
去年は初参加で準備もそんなにできなかったため、自分は無能感を否めない感じでした。
今年は今無職なうでど暇(いや、面接なんかはしてましたけど)なのでサーバーサイドでのGoを色々キャッチアップする猶予があり、やってやるぞ!という気でいました。(仕事のご相談があればご連絡くださいてへぺろ)
問題について  一応説明しておくと、http://anond.hatelabo.jp/のようなサービスをいい感じにスピードアップしろ。という問題が出題されてました。Go言語を選択した我々は

reg.ReplaceAllStringFunc(content, func(kw string) string {})

特定のキーワード(そこそこたくさんある)を文章内に見つけたらそれをリンクつけた形に変換する。をどうやって改善するかに失敗し、failした形になります。

当日の流れ 時間は曖昧です。 9:30くらいに集合朝、くっそ眠いけど自分は家だったので比較的気楽、@ayumu83s@roro0000はおつかれさまです。HOOOOOO!!!!とか言いながら無理やりテンション上げてました。 10:00開始、順調にインスタンス立てる。@roro0000の下準備が光る。$GOROOT、$GOPATHでガッチャガッチャする。今時$GOROOT???と自分も混乱する。@ayumu83sが$PATHを書き換えて無事死亡。戦犯ポイントを稼ぐ@ayumu83sがリアルな方の仕事に巻き込まれる。土曜デプロイ乙 12:00毎回regexpのやつ生成してるのあからさまにだめじゃね?キーワードとハッシュのリストもとりあえず持っとくか とか、毎回やる必要のない作業をinitに持っていく作業をする。 反省点としてはここが大きい。この時点でもっと細かく計測作業をするべきだった。 推測するな 計測せよ 13:00 ココらへんでお昼を食べたりしながら、「一回細かく速度を取ってみ…

Firebase と Androidで認証、ストレージ、データベース #firebase

イメージ
始まり 飲み屋で今日のメニューとかを通知出来るアプリがあると良いんだけど。
と相談されたのでFirebaseでいっちょやってみるか。とやってみました。
結論から言うと、コードラボをやりましょう。認証、データベースへの登録、表示等の扱い方を理解することができます。

やったことカメラを起動して、データを登録するAdminアプリとDBから一覧を表示するサポーターアプリの2つを作成。アカウント認証 ->Googleアカウントで認証写真をとってFirebase Storageに保存。上で保存した画像のURLを取得。タイトルや値段を設定してFirebase Databaseに保存Databaseから一覧を取得して表示、画像のURLを取得して表示する。 スクリーンショット
ドキュメント、参考URL等ドキュメント https://firebase.google.com/docs/コードラボ https://codelabs.developers.google.com/Firebaseでチャット https://codelabs.developers.google.com/codelabs/firebase-android/#0
DBの書き込み権限を抑止する。 今回は、adminアプリ側で認証した人だけが書き込めれば良いので以下のようなルールを設定ユーザーUIDユーザー登録後、Authのページから参照できます。
{ "rules": { ".read": true, ".write": "auth.uid == 'ユーザー UID'" } } 各種機能のコード断片 ソースコードの断片等
storageへの保存
ディレクトリを作成しときましょう。(直下に上がると管理が…
gs://<your-storage-url>/new_dir/みたいな感じ。
https://gist.github.com/mogeta/d8abda24799d407673af3c7f908e927f ---- ----

databaseへの反映
事前にテーブルを用意する必要がなく、DTOを指定するとそのままの形でデータが突っ込まれる。これすげーな。
あらかじめ、DB…