taisablog

taisa's engineer blog

スクリーンショット 2019-08-14 20.00.32

投稿日:

-

執筆者:

関連記事

Go言語 GORM+GinでTODOリストのAPIを作ってみた

前回の「Go言語 GORM+GinでTODOリストを作ってみた」に続いて「GORM+Gin」でTODOリストのAPIを作ってみました。ソースコードは前回からの差分だけを記載しています。できたものは下記URLから確認できます。 http://sandbox.taisablog.com/api/v1/ GinのGithub 事前情報 Webフレームワーク:Gin (https://github.com/gin-gonic/gin) ORM:GORM (https://gorm.io/docs) DB:MySQL ルーティングは今回はAPIなので以下としました。モデルをtasksにすればよかったと思いましたが一旦このままにしておきます。 [GIN-debug] GET /todo –> main.main.func1 (3 handlers) // 一覧表示 [GIN-debug] POST /todo –> main.main.func2 (3 handlers) // 新規作成 [GIN-debug] GET /todo/:id –> main.main.func3 (3 handlers) // 編集画面表示 [GIN-debug] PUT /todo/:id –> main.main.func4 (3 handlers) // 編集 [GIN-debug] DELETE /todo/:id –> main.main.func5 (3 handlers) // 削除 ディレクトリ構成 . ├── api │   └── v1 │   └── todo.go ├── controllers │   └── todo.go ├── db │   └── db.go ├── main.go ├── models │   └── todo.go ├── router    └── router.go router.go router.goにr.Group(“/api/v1”)のAPI用のグループを追加してルーティングを追加しました。 package router import ( “github.com/gin-contrib/cors” “github.com/gin-gonic/gin” “github.com/jinzhu/gorm” v1 “github.com/taisa831/sandbox-gin/api/v1” “github.com/taisa831/sandbox-gin/controllers” …

no image

2017年の振り返り ~活動報告~

2017年のインプットとアウトプットを整理しながら振り返る。 読書 大体以下の本を読んだ。今年は書評ブログも書こう。 SCRUM BOOT CAMP THE BOOK ジョイ・インク 役職も部署もない全員主役のマネジメント スクラム実践入門 ── 成果を生み出すアジャイルな開発プロセス (WEB+DB PRESS plus) JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス JavaScriptパターン ―優れたアプリケーションのための作法 JavaScript Ninjaの極意 まつもとゆきひろ 言語のしくみ ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 ゼロからはじめるデータサイエンス ―Pythonで学ぶ基本と実践 Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術 みんなのGo言語[現場で使える実践テクニック] SQLアンチパターン ブログ 合計17本書いた。1、2月は外したけど概ね月1ペースは保てたのでよかった。今年も最低同じペースか月2本ペースで書きたい。 外部LT そもそも外部でLTをすることが目標だったからできてよかった。実際にはもう一つやったけど SlideShip じゃなかったから資料がみれなくなった。SlideShip最高! コミュニティ活動 PyCon JP 2017 in Tokyo スタッフ 去年活動できなくて残念だったから今年はコミットできたし当日参加もできたから最高だった。 カンファレンス参加 PyCon APAC 2017 – PyCon in Malaysia and python in general AWS Summit Tokyo 2017 Day2、Day3 PyCon APAC は行きたくて行けてなかったイベントだったから行けて本当によかった。 今年もなんとか参加したい。 英語 Talk Python To Me DMM英会話 海外ドラマ・映画 Walking Dead メンタリスト プリズン・ブレイク なんとか英語に触れられた一年になった。今年はもう少し比重を多くする予定。 ライブ Perfume FES!! 2017 Perfume×電気グルーヴ@幕張 5th ANNIVERSARY SILENT SIREN LIVE TOUR 2017 『新世界』@武道館 Яealライブ@渋谷www SILENT …

PHPの empty, isset, is_null の違いをしっかり理解する

PHPの isset、empty、is_null をしっかり理解して使おうと思い整理してみました。既にこのような記事「PHP isset, empty, is_null の違い早見表」もあるのでここではこれより少し踏み込んだところまで書いてみます。 empty, isset, is_nullの違い早見表 値 if ($var) empty isset is_null $var = 1 true false true false $var = array(1) true false true false $var = “” false true true false $var = “0” false true true false $var = 0 false true true false $var = array() false true true false $var = false false true true false $var = NULL; false true false true $var false true false true まず表ですが、順番を理解しやすい形に変えてみました。下記のように赤と青のグループで分けて考えておくと理解しやすいです。これをみると「if ($var)とempty」、「issetとis_null」が対になっているのがわかります。 感覚的には、if ($var)は値がありそうだなと思うものがtrueになり、emptyも値がなさそうだな思うものがtrueになる感じがします。issetは、何かしら値がセットされてばtrue(つまり値がfalseでも結果はtrue)、is_nullは値がnullであればtrueということになります。 実際の挙動の動作確認についてはPHPUnitを使ってテストしたものをGitHubにあげているので合わせて確認してみてください。https://github.com/taisa831/AimaiPHP empty, isset, is_null の Notice や Error 出力早見表 次に、PHPのerror_reportingをE_ALLにした場合に、indexのない配列にアクセスした場合やオブジェクトが空の変数や関数にアクセスした場合の挙動をまとめてみました。 値 if ($var) empty isset is_null $var = []; …

PyCon JP 2017にスタッフとして参加してきた

ようやく落ち着いてきたのでだいぶ今更ながらPyCon JP 2017の参加レポートを書く PyCon JP 2017 in Tokyo | Sep 7th – Sep 10th はじめに まずはじめに、自分にとってのPyCon JPを簡単に振り返って見る。最初は2014年に一般参加者として参加したのがはじまりだった。そして翌年はじめてスタッフとしてジョインした。ただこの年は開催数日前にこどもが産まれ、当日の参加はできなかった。そしてその翌年の2016年は絶望的な業務の忙しさによりスタッフになることさえもできずに終わってしまった。そして今年、例年のような忙しさがありつつも無理やり時間を作ってスタッフとして準備・当日参加を果たすことができた。 スタッフとして スタッフとしては今年、2015年と同様にプログラムチームというチームで活動をした。プログラムチームはプログラムといってもPythonを書くわけではなく、スピーカーを募集したり当日のスケジュールを組んだりとカンファレンスのコンテンツを決めていくような活動がメイン。その中で今年はキーノート担当として活動した。今年のキーノートは海外1名・国内1名だったが、それぞれのスピーカーとコミュニケーションができたのは非常に有意義だった。また、今年やりきれなかったこととしては、システムも少し触ろうとしていたけどキャパオーバーにつき並行で進めることは全くできなかった。 参加者として 今年はスタッフとして参加したので、セッションのチェアマンをしたりともろもろやることがあったので基本セッションを見ることはできず、未だ動画でもみることもできておらず、セッションはまだほとんど聞けてないけど「Keynote」「スポンサーブース」、昼休憩にやった「メディア会議」「ジョブフェア」、「Youth Coder」「1日目のParty」「2日目の関係者パーティ」とセッション以外のところだけでもめちゃめちゃ楽しむことができた。特に1日目のPartyは食事豪華で酒の種類も多く、いろんな人と話しすることができてめちゃめちゃ楽しめた。気づけば2014年以降一度も参加できていなかったPyCon JPだったけど、スタッフをはじめて苦節3年、ようやく最初から最後まで参加することができて本当によかった。 来年は 来年はどこまでコミットできるかわからないけどもちろんスタッフとして参加するし、場所はまだ決まっていないけどPyCon APACも必ず参加しようと思う。もはや気づけばこのカンファレンスが1年間のモチベーションの1つにもなっていたりしてコミュニティってすげーとひしひしと感じている次第。 2014年一般参加した時の写真 (この時一緒に参加した人も翌年からスタッフになっている) 当日の写真は以下にまとめて沢山あがっているので大変ありがたい https://www.flickr.com/photos/pyconjp/albums/ 主にPyConについての話をしたPyLadies TokyoでLTした時のスライド

FlaskをBottleと比較した雑感

以前Bottleのソースをチェックしてみた流れでFlaskも見てみた。結論から言うとBottleと大して変わらん。もちろんFlaskのほうがコード量が多く多少リッチではあるもののざっくり機能ベースで言うと大して変わらんのです。そもそも両方ともマイクロWebフレームワークが売りなので当たり前といえば当たり前ですが、歴史的にもBottleが2009年リリースでFlaskが2010年4月1日(エイプリルフールのネタとして)リリースと、名前もBottleに対抗してFlask(フラスコ)という名前をつけたということなので、もともとがBottleっぽいフレームワークを遊びで作ってみたという感じなんだと思います。それっぽいことはwikiに書かれています。 [Bottle Wiki](https://en.wikipedia.org/wiki/Bottle_(web_framework)Flask Wiki クラス構成に関しては以下にある通りで、Bottleが1ファイル構成でFlaskは機能にファイルが分かれてる構成という違いはあるものの、機能自体にほとんど違いはありません。ただFlaskはBlueprintという大規模アプリ対応の機能があります。なお、使い方については公式ドキュメントとサンプルコードも複数用意されているのでアプリの構成や使い方が確認しやすいです。