Ubuntu16.04でgolangのechoを使う
まとめ
Ubuntu16.04 LTSはデフォルトでインストールされるgolangのバージョンが1.6のため、最新のechoを実行することができないので、golangのバージョンを上げる必要がある。
事象
echoがgolang1.7から入ったcontextパッケージに依存しているため、インストールに失敗する。
対処
# apt-getのリポジトリ更新 sudo add-apt-repository ppa:longsleep/golang-backports sudo apt-get update sudo apt-get install golang-go # -> 1.8が入る go get -u github.com/labstack/echo
以上です。
Ubuntu16.04でgolangの開発環境Goglandのインストール
インストーラーの入手
https://www.jetbrains.com/go/download/#section=linux
JetBrainsのサイトからGoglandをダウンロードします。2017年6月時点では、EAP 9, 171.4694.35が入手できました。
インストール
tarで固められたファイルが手に入るので、解凍してください。Ubuntu16.04の場合、ダブルクリックでArchive Managerが起動しますので、Extractを実行して解凍してください。
その後、terminalを立ち上げ、解凍したディレクトリに入ってから、gogland.shを実行します。
cd {YourLikeDir}/cd Gogland-171.4694.35/bin/ ./gogland.sh
その後、GUIの画面が立ち上がります。今回は初めてのインストールでしたので、Do not import settingsを選択しました。
これでインストールは完了です。
golangの設定
golangをインストールしていない場合は、まずそこから始めましょう。
sudo apt-get install golang # bashにgopathの設定 mkdir ~/{YourLikeDir}/go echo "export GOPATH=$HOME/Project/go" >> ~/.bashrc echo "export PATH=$GOPATH/bin:$PATH" >> ~/.bashrc source ~/.bashrc
これで設定は完了です。
Goglandを使ってみる
File > New > Projectから、新規プロジェクトを作成します。 その後、Projectファイルを右クリックして、New > GoFileでgolangのソースファイルを作成します。
そして、Configure GOPATHから、GoglandにもGOPATHの設定を行います。
次に、Run > Edit configuretionsから、実行環境の設定を行います。
左上の+
を押し、Go Applicationを選択してください。その後、Fileに先ほど作ったファイルを設定します。
あとは、Runを押して下のコンソールに実行結果が表示されたらOKです。
- 作者: 松木雅幸,mattn,藤原俊一郎,中島大一,牧大輔,鈴木健太
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/09
- メディア: Kindle版
- この商品を含むブログを見る
0からwindows10にPython3.6環境を構築する方法(2017/6版)
mac OSXやlinuxにはデフォルトでPythonがインストールされていますが、windowsにはインストールされていません。 今回はPythonを初めて使うwindowsユーザーがお試しですぐ触れるよう、 windowsで0からPython3.6の環境を構築する方法をまとめてみました。
環境
1. Anacondaのインストール
いきなり、判断が難しいところなのですが、windows 10ではAnacondaを用いてPythonをインストールするのが 最も手軽だという結論に至りました。
Anacondaは数値解析や科学計算のライブラリを含んだ形で配布されているPython環境なのですが、 非常に手軽にPythonを実行することができます。(環境変数の設定さえ必要ありません)
また、windowsにおいてハマるポイントとして、C言語のライブラリを含んだパッケージの導入があるかと思われます。 numpy、matplotlibなどを特にハマらずにインストールするためには、Anacondaの導入が手っ取り早いです。 (Django等を使ってwebサーバを建てたい、という方には関係ないですが)
https://www.continuum.io/downloads
リンク先にPython3.6のインストーラーがありますので、そこからダウンロードしてください。
ダウンロードが終わったら、インストーラーを実行してください。 何個か選択肢がありますが、 特にこだわりがなければ、すべてNextを押せば問題ありません。
2. Pythonの実行
Anacondaのインストールに成功したら、すぐにPythonを使うことができます。 おそらくスタートメニューには、以下のようなものがインストールされているはずです。
この中からAnaconda Promptを選んで、起動してください。
すると、以下のようにプロンプトが立ち上がるはずです。
あとはプロンプト内でpython
と入力してください。Pythonが立ち上がります。
それでは、試しになにか実行してみましょう。
Pythonが無事に動いたことが確認できました。
3. ライブラリを利用する
今回はAnacondaを利用してPythonをインストールしたので、そのままの状態で、すでにたくさんのライブラリを使うことができます。
どのようなライブラリがインストールされているかは、pip freeze
というコマンドで確認することができます。
試しにこの中に入っているmatplotlibという作図ライブラリを使用してみましょう。
まずは先ほどと同じように、pythonを起動してください。 そして、
import matplotlib.pyplot as plt import random xs = range(100) ys = [random.randint(0, x) for x in xs] plt.plot(xs, ys) plt.show()
のように、実行してみてください。すると、
上記のような画像が表示されたかと思います。このように、Pythonを使うことでグラフの描画も簡単に行うことができます。
4. おわりに
以上、windowsで0からPythonの環境を構築する方法を示しました。 このように、Pythonは非常に簡単に始めることができますので、 windowsユーザーの方も、ぜひ一度最近はやりのPythonを触ってみてください。
- 作者: 柴田淳
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/12/22
- メディア: 単行本
- この商品を含むブログ (1件) を見る
- 作者: クジラ飛行机
- 出版社/メーカー: マイナビ出版
- 発売日: 2016/10/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
Pythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみよう
- 作者: クジラ飛行机
- 出版社/メーカー: ソシム
- 発売日: 2016/12/06
- メディア: 単行本
- この商品を含むブログ (3件) を見る
next.jsとnuxt.jsとAngular Universalを触ってみた
server side rendering(ssr)を試したかったので、ssrを比較的簡易に実行できると思われるUniversal Javascriptに対応しているライブラリを簡単に比較してみた。
実行環境
- MacBook Air (13-inch, Mid 2012)
- node v7.9.0
- Typescript 2.2.0
next.js
React用のUniversal Javascriptライブラリ。ここでは、https://github.com/zeit/next.js/tree/master/examples/hello-world を試す。
git clone https://github.com/zeit/next.js.git cd next.js/examples/hello-world/ npm install ./node_modules/next/dist/bin/next build ./node_modules/next/dist/bin/next start
ファイル
index.js
import Link from 'next/link' export default () => ( <div>Hello World. <Link href='/about'><a>About</a></Link></div> )
about.js
export default () => ( <div>About us</div> )
転送量
251KB
nuxt.js
Vue用のUniversal Javascriptライブラリ。ここでは、 https://github.com/nuxt/nuxt.js/tree/master/examples/hello-world を試す。
git clone https://github.com/nuxt/nuxt.js cd nuxt.js/examples/hello-world npm install node_modules/nuxt/bin/nuxt build node_modules/nuxt/bin/nuxt start
ファイル
index.vue
<template> <div> <h1>Welcome!</h1> <nuxt-link to="/about">About page</nuxt-link> </div> </template>
about.vue
<template> <div> <p>Hi from {{ name }}</p> <nuxt-link to="/">Home page</nuxt-link> </div> </template> <script> export default { asyncData ({ req }) { return { name: req ? 'server' : 'client' } } } </script>
転送量
56.1KB
Angular Universal
Angular用のUniversal Javascriptライブラリ。まだ公式にangular-cliとAngular Universalが対応していないようなので、ここでは、 universal-cliを用いてサンプルアプリを作成する。
npm install -g universal-cli rxjs ung new angular-universal cd angular-universal ung build --prod ung serve --prod
ファイル
(ungコマンドによる自動生成ファイル。下記以外も多数生成される)
app.component.html
<h1> {{title}} </h1>
app.component.ts
import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { title = 'app works!'; }
転送量
215KB (jsはgzip済)
印象
nuxt.jsのファイルサイズの小ささが素晴らしい(ただし、謎に読み込んでいるindex付きのbundleが何をしているか不明なので後で調べたい)。いずれのライブラリも、ssrを意識しなくても普通にレンダリングまで可能なのが凄い。例えばnuxt.jsはexpressに依存しているけれど、hello worldのみだと一行もサーバサイド専用のコードが存在しない。(nuxt-linkというvue-routerに類似したタグが使われているが、これでサーバ側でのルーティングとクライアント側でのルーティングを一元管理しているようだ)。
時間があったらredux or vuex周りとの連携も試したい。
ubuntu16.04(xenial)にelixirをインストール
公式ドキュメントを参照すれば良い。 http://elixir-lang.org/install.html
Erlang & Elixirをインストール
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb sudo apt-get update sudo apt-get install esl-erlang sudo apt-get install elixir
hello world
iex >> IO.puts("hello world")
hello worldできた。
Typescriptでサーバサイドとフロントをどっちも書いてる時にいらいらする点
今、サーバ→node & Typescript, フロント→Angular & Typescriptみたいな構成でコードを書いているのだけれど、
Typescriptのコンパイル結果をサーバ側をES6, フロントをES5で吐かせているせいでその差でいらつくことが多い。
主にfind
。 サーバ側ではhoge.find(y => y.id === 1)
みたいなかんじで一意な値を取ってきてるのだけれど、findはES5では使えないので、hoge.map(y => y.id).indexOf(1)
みたいにしてインデックス取るか、hoge.filter(y => y.id === 1)[0]
みたいに書いている。インデックスアクセス歯がゆい。値がほしいだけなのにその過程で-1とか配列長さチェックとかするのも辛い。幸せをください。
(多段コンパイルでTypescript → Babelが正解なのか...?)
なぜシン・ゴジラはナックルウォークを経ずして二足歩行を獲得することができたのか
(この記事は明確にシン・ゴジラのネタバレを含みますので、未視聴の方は閲覧しないでください)
はじめに
現生生物で二足歩行を行う生き物といえば、真っ先に鳥類が思い浮かぶが、その二足歩行の起源については恐竜にまで遡る。鳥類の起源は恐竜の中でも、多くの種が二足歩行をしていたとされる竜盤目獣脚類とされているからだ(これはティラノサウルスを含む群になる)。そして、彼らがどのようにして二足歩行を獲得したかについては、どうやら以下の論文に目を通したかぎりははっきりとした定説はなさそうだ。
https://www.dinosaur.pref.fukui.jp/archive/memoir/memoir010-055.pdf (恐竜の共通祖先は二足歩行だと思われていたが、実は四足歩行なのではないかという議論がされている)
さて、公開中の映画シン・ゴジラでは、獣脚類によく似た見た目のゴジラが、作中で二足歩行を獲得した。この二足歩行に至る描写がとてもすんなりと頭に入ってきたので、非常に感動した(もしかしたら元ネタがあるのかもしれないけれど)。つまり要約すると、ゴジラは前足が退化していたため、四足歩行することができず、地上では二足歩行せざるを得なかったのだ。
問題意識
まず、そもそもなぜこんな疑問が生じるかについて理解できない方もいるかと思われるので、問題を共有したい。例としてヒトを挙げる。問題は、「ヒトはどうやって(直立)二足歩行を獲得したのか」。その答えは、とてもざっくりと進化論を援用して言うと、「二足歩行可能な形質をもった個体がたまたま発生し、それがたまたまその環境で生き残ったから」となる。しかし、果たして四足歩行しているサルからいきなり二足歩行する生物が生まれるのだろうか。だとしたらなぜ二足歩行の哺乳類は珍しいのだろうか。そのような疑問に答える一つの方向性として、それらの進化の隔たりを埋める中間的な形質を持つ種が存在した、と仮定することができる。それは上記の文脈で言うと、ゴリラ等が行うナックルウォーク(拳をついて歩くこと)、ということになる。樹上生活を行っていたサルが、前足を枝を握るために用いるようになる。前足の形状は歩行には適さない。その中で地上に降りたもの(ゴリラ)が、前足を握り歩行するようになる。しかしそのナックルウォークだとあまりにも移動コストが高い。そのために、森が失われ歩行が優位になる環境では、直立二足歩行というナックルウォークに比べると移動コストの低い手段を用いることのできる生物が、新たな種として固定される。...果たしてこれが明快なストーリーだろうか? 二足歩行なんて不安定な移動法を取るくらいならナックルウォークのほうがましではないのか?(少し古い記事だが、http://sicambre.at.webry.info/200710/article_17.html ナックルウォークは直立二足歩行より後という内容もある)
https://www.youtube.com/watch?v=rVlhMGQgDkY
(近年見られる四足歩行から二足歩行への進化の例)
以上のように、二足歩行について少し考えるだけで頭が混乱してくるのだが、シン・ゴジラの中では二足歩行の獲得は明快に示される。なにしろ、視聴者の目の前で得体のしれない生き物がどんどん進化していくのだ。そして、地上にでてきたそれは当初、前足はひれ状になっており、後ろ足だけが発達している。移動方法は匍匐だ。そして物語は進み、ついに、その両足で立ち上がる。あのやたらと気持ち悪い謎の生物がやっと二足歩行を獲得したのだ。
ゴジラにおける二足歩行の獲得
ゴジラは二足歩行を獲得する順序において、匍匐→四足歩行→二足歩行という脊椎動物の王道を無視し、ひとつ飛ばしに匍匐→二足歩行という進化を遂げた。こここでの進化は、「すでに退化してしまった前足を歩行用に用いる」というオプションではなく、「すでに発達している後ろ足のみでの歩行」というオプションが用いられている。おかげで、匍匐から二足歩行への中間的な形質である四足歩行(ヒトの説明で言えばナックルウォーク)をスキップしている。これは明らかに、前足が退化していたおかげである。これは二足歩行を獲得する上で非常にスマートな回答のひとつだと自分は思う。シン・ゴジラ公開前に、自分は「このゴジラ前足がちっちゃい!前足がちっちゃい!」としか思っていなかったが、その伏線が回収された瞬間が、このゴジラ立ち上がりシーンだと言える。オットセイ、アシナシイモリ、ヘビ類等に準じた退化をし(有尾類のネオテニーが可能性が高いと睨んでいるが)、十分な歩行器官の無い生物だからこその、二足歩行の獲得。それを視聴者の前でやってのける映画力、さすがだ。この映画の95%ぐらいの面白さはここに詰まっている。
最後に
この記事はゴジラが四足歩行を獲得した生物(両生類や爬虫類)から進化した、という仮定にもとづき書かれているが、「単に魚から進化しただけでは?」というつっこみにはじまり、生物学的に不適切であることが確実なため(用語も適当、"中間的な形質"、とか、進化論ではなんていうんだろう?)、不備については順次指摘されたい。また、「どうしておばあちゃんのお口はそんなに大きいの?」「それはお前を食べるためだよ」的な考察(たぶんビルで視界が塞がれるから立ち上がったんだと思うが)もしていないので、そちらについても気になっていることではある。ゴジラの二足歩行に対して専門的な意見を持っている方がもしおられれば、随時ネット上に関連記事をアップしていただけると非常にありがたい。