駄文型

プログラミングとか英語とかの話題を中心にした至極ちゃらんぽらんな日記です。

ファイルをcurlでアップロードしてNode.jsで受け取る

なかなかうまく行かなくて半日かかったのでまとめておく。

参考

Node.jsアプリ

まずはmulterを入れてNode.jsアプリを構築。

$ npm install --save multer
var express = require('express');
var multer  = require('multer');
var upload = multer({ dest: 'uploads/' });
var app = express();

app.post('/', upload.single('data'), function (req, res) {
  console.log(req.file);
  res.end('success');
});

app.listen(4000, function () {
  console.log('Example app listening on port 4000!');
});

curlコマンドでテスト

ローカルでテストする場合はlocalhostcurlでPOSTを投げるだけ。

$ curl "localhost:4000" -X POST -F data=@test/test.csv

今回はtest/test.csvを用意した。jsonでもなんでもいい。

column0,column1,column2,column3
1,2,3,4
a,b,c,d

結果

{ fieldname: 'data',
  originalname: 'test.csv',
  encoding: '7bit',
  mimetype: 'application/octet-stream',
  destination: 'uploads/',
  filename: 'de080535f6452289e8b896236c0d179d',
  path: 'uploads/de080535f6452289e8b896236c0d179d',
  size: 49 }

uploadディレクトリにファイルが作成された。uploadディレクトリは勝手に作成されるっぽい。req.fileのところでreq.bodyreq.filesを指定してたのでずっと{}とだけ表示されてかなりハマってしまった。README見たらちゃんと.singleのときはreq.fileって書いてあった。つらい。

DUO 3.0の単語帳をzuknowで作ってみた

DUO 3.0の単語・熟語を学習アプリのzuknowで作ってみた。今のところはSECTION 15まで。

https://www.zuknow.net/cardset/203280www.zuknow.net

動機

Podcastを聴いたり英語ニュースを読んだりして英語学習を続けているが、語彙力不足を日々痛感していた。短期で集中して語彙力を付けるため、もともと持っていたDUO 3.0を使ってみたのだが、苦手な単語・熟語がなかなか頭に入ってこない。苦手なものは単語カードかなにかにまとめておいて覚えたほうが効率が良いのでは、と思ってzuknowに自分用単語カードをまとめてみた。

DUO 3.0について

DUO 3.0

DUO 3.0

Amazon

DUO 3.0は単語学習の超定番的な本で、ひとつの例文が複数の重要単語・熟語で構成されているタイプの単語帳だ。2000年の本なのだが、未だにTOEIC学習や大学入試用の英語学習本として評価が高い。実際よくできていて、上手く使えばかなり効率的に語彙力を伸ばすことができる。以前これを使ってTOEICの勉強をやってみたことがあるのだが、当時の僕にはレベルが高すぎて合わなかったため、積み本化していた。

koheikimura.hatenablog.com

zuknowについて

https://itunes.apple.com/jp/app/zuknow-you-datokuizude-jingeru/id731823316?mt=8&at=10l8JW&ct=hatenablog

https://play.google.com/store/apps/details?id=net.zuknow.android&hl=japlay.google.com

zuknowは単語帳とクイズで勉強を進めることができるアプリで、すでにかなりの量のコンテンツが作られているのでそれを使って勉強することもできるが、単語帳の自作もできる。自作できる単語帳アプリはいろいろあったが、zuknowの場合はWebから簡単に作成できそうだったので採用した。Excelなどの表計算ソフトからコピペで作成可能で、一列目に単語カードの表側(問題)、二列目に裏側(解答)の形式でシートを作成し、それをコピペすれば単語帳ができるようになっている。僕の場合はGoogleスプレッドシートで作成してみた。

https://docs.google.com/spreadsheets/d/1VJTkiq5seVMSDvkoTW1yx9ni238Xrvax9qm7zHJeLg0/edit?usp=sharingdocs.google.com

選考基準

DUO 3.0の単語すべてを載せたわけではない。すでに覚えている単語は省いた。また、覚えてはいるが重要だと思ったものや類義語を覚えたいと思ったものも選抜した。

使い方

あくまでDUO 3.0の補助教材として使うことを目的としている。単語帳形式にすることで完全にDUO 3.0のメリットが損なわれているので、この単語帳単独で勉強するのはおすすめしない。

また、問題と解答の他に解説なども載せることはできたが、アプリ側での操作が面倒*1になるので、なるべく問題と解答に情報を詰め込むことにした。なので、解答側に類義語や対義語が載っている形式になっている。解答を表示すれば同時に類義語や対義語が表示されるので、効率的な語彙力強化につながると思う。表記は基本的にDUO 3.0の表記に準拠している。英語→日本語ではなく日本語→英語の形式になっている。これは金フレと同じ形式の方がいいと思ったため。

koheikimura.hatenablog.com

感想

手打ちするのはつらいが、それだけでも覚えつつあるので良かった。はじめは厳選して苦手な単語に集中しようと思ったが、「これ重要かも」「これ類義語覚えたい」というものが多くて結局ほとんどの単語を載せてしまっている。つらい。1日5セクションずつ進めているが、3時間位かかっている。つらい。でもこの先にいい未来が待っていることを信じてがんばる。

*1:補足や解説を表示するのに1タップ必要になる

英語ブログはじめてました

kohei's blog

英語ブログを始めてみた。GitHub Pagesを使うかTumblrを使うか迷ったけどTumblrにした。さくっとはじめられて、既存のテーマを適用してさくっと終わらせたかったので。勉強のために頑張って続けようと思う。技術の話とか、ガジェットの話とか、英語学習の話とか、子育ての話とかを書いていこうかと思っている。

「Go言語によるWebアプリケーション開発」に関するメモ

はまったところとか感想とかのメモ。都度追記するかも。

環境

  • OS X 10.11.4
  • go 1.5.1

gomniauthがインストールできない

$ brew install bazaar
$ go get github.com/stretchr/gomniauth

2章のgomniauthのインストールではまった。「Bazaarをインストールしておく必要があります」とあったのでインストーラーからインストールしてもダメだったのでちょっと困った。

参考: Amazonのレビュー

改訂2版 基礎からわかる Go言語

改訂2版 基礎からわかる Go言語

  • 作者:古川 昇
  • シーアンドアール研究所
Amazon

あわせてどうぞ

Go言語でWebSocketを使ったチャットアプリを作ってみた

Rubyにもだんだん慣れてきたので、今度はGoを触ってみようと思ってGo言語によるWebアプリケーション開発を買ってみた。Goを学びながらチュートリアル形式でいい感じのWebアプリを作ることができる。そこそこ高度な内容っぽかったので、Goの基本的な文法などはA Tour of Goで予習しておいた。

アプリのソースはGitHubに公開した。今はまだ基本機能だけで、チャット画面を複数のタブやウィンドウで開くと、Postした内容が同期されるだけ。今後進めていけば、OAuth2でのログインやプロフィール画像の設定などが行えるようになる。

追記:OAuth2によるログインやSNSからのプロフィール画像の取得までは実装した。まだプロフィール画像のアップロード機能などが残っているが、いまのところそこまではやらない予定。

タイトルはWebアプリケーションだが、コマンドラインツールやREST形式APIなども対象としている。この本に沿って開発を進めていけば結構幅広くWeb開発を学べそう。GWはこれをいっきに進めようと思う。

以下メモ。

Goのインストール

$ brew install go

Goの設定

環境変数

環境変数GOPATH等の設定が必要なので、僕の場合は以下のように.zshrcに追記した。

export GOROOT=/usr/local/opt/go/libexec
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

goimportsのインストール

$ go get golfing.org/x/tools/cmd/goimports

と実行してgoimportsをインストールする。そうすると、

$ goimports -w *.go

と実行するだけでソース内で使用されているのにインポートされていないパッケージを自動でインポートの文を挿入してくれる。

Goの実行

ソースファイルが1つだけの場合は、

$ go run app.go

コンパイル、実行できる。複数のファイルに分けた場合は、

$ go build -o <アプリ名>

でビルド、

$ ./<アプリ名>

で実行できる。

参考

[asin:4798142417:detail]

[asin:4863541783:detail]

あわせてどうぞ

SinatraでTwitterアプリを作ってみた

動機

  • Sinatraで何か作ってみたかった
  • Rubyのお勉強したかった
  • TwitterAPIも触ってみたかった

何ができるか

  • 自分のツイートから画像を探して一覧を表示する。
  • それだけ。
  • 「あー、こんなんアップしたなぁ」と思い出してみてください。

ソース

github.com

使い方

git clone https://github.com/kohei-kimura/images-on-my-twitter.git
ruby app.rb

課題

  • 重い
    • めっちゃ重い
    • ツイートから画像付きのPostを探してくるのでめっちゃ時間がかかる
  • herokuにデプロイしてみたけど動かない
    • 原因探るのも面倒なので諸事情により原因特定が不可能になりました
  • instagramの画像が取得できない
    • instagramからのPostもURLから画像を取得するようにしてたけど、instagramの仕様が変わったっぽくていつの間にか動かなくなってた

[asin:4797386290:detail]

[asin:4873113946:detail]

[asin:4426608376:detail]

あわせてどうぞ

AWSビギナー勉強会 in Yokohamaに行ってきた

AWSビギナー勉強会 in Yokohamaについて

横浜で勉強会ないかなーと思って探してたらAWSの勉強会が見つかったので、試しに行ってみた。

connpass.com

AWSは知っているけど、どんなサービスがあるの?

使ってみたいけど、どんな風に役立てたら良い?

ビギナーだから知識を深めたい!

そんな方はいらっしゃらないでしょうか? みんなで集まってAWSについて勉強してみませんか?

自分一人じゃ心細くても、みんなでやれば怖くない。

感想

  • 発表者の方々もAWSビギナーで、使ってみた率直な感想が聞けてよかった。
  • AWSのサービスがこれほどあるのすら知らなかったのでいい機会になった。
    • AWS Mobile Hub便利そう
  • 横浜会場の勉強会もっと増えてほしい

あわせてどうぞ