Elixir + Phoenix のExcelで出来る事をやろう的なチュートリアル第3回〜5回まで。次 CRUDやりたいの準備
とりあえず前回に続き
piacere_ex - Qiita さんのElixir + Phoenixを実践。
第3回〜第5回までで、この組み合わせの触り部分の雰囲気はつかめます。
どこか詰まる所があればと思ったのですが、DB作成部分さえ慣れてればスムーズに行きます。
あと、第1,2回と別のPhoenixアプリとなるので、前回までのプロジェクトは別に作成という点は注意。
さっそく第3回から
まずは・・・
DBに・・・つないでなんぼ、システムです。
ここは個人で色々ですが、DBはとりあえず入ってるdockerのやつを流用します。

どうでもいいけど、MovableType用に起動したコンテナが4週間も立ち上げっぱなしでした・・・・(汗
最初はDB周りの設定と思いっきりMySql内でSQL文を回す作業です。
これ、Laravelみたいなmigrationやseedもあるんでしょうけどまあ、最初はこれで。
あとは第1,2回の消化試合。
そして第4回に

ほうほう、こういう事が・・・
ここだけのコードを見るとhtmlテンプレートの部分だけである程度遊べるますね・・・・w
でサクッと終了。
そして第5回
なるほど・・・
jsとの組み合わせ方もわかりやすいですね。
昔、JavaのSpringをやってた記憶からするとかなり、ここまでは手軽です。
Javaに比べたらScalaの生産性はちがうわな・・・という所感でした。
ここまでで完全なCRUDチュートリアルのようなパターンでは無いですが、ElixirにおけるPhoenixの一部が見えてきました。
となると当然
書き込み、削除を含めたCRUDチュートリアルが欲しくなりますね。
次回は
ここらへんをやるか・・・
ジェネレーター一発・・・・
でも、これだとファイル構成とかも身につかないかもで
ここらへんも・・
あと、手元だけで動かしてもしょうがないので、herokuにドーン。
Procfileとかの設定の変更とかで時間つぶすのもあれなので、なるべく最新そうなチュートリアルを選別
mysql有料でしたよね・・・・
謂わく、公式ドキュメント通りほぼいけるらしいので
Deploying on Heroku – Phoenix v1.3.4
こちらも参考に準備
続きはまた次回。
まるで公式を解いている気分になれるScalaを始める。 helloからListまでをチュートリアル的に消化。
前回一気に Scalaをインストールしたので、他の言語と並行して進めます。
The Scala Programming Language

余談ですが、プログラミング言語のサイトのデザインの中でも好きな部類です。
今までのScalaに対する印象
昔からのJAVAプログラマーさんに最近何が熱いの?と聞いたらScalaと即答されたのが数年前です。 その人はポケコンの時代からプログラミングしてた人ですが、関数型プログラミングを熱く語ってくれました。
当時、じゃあと少しドキュメントや、これが関数型プログラミングや!!みたいなワンライナーっぽい数珠の塊を見て投げ出したのを覚えています。
まずは簡単な所から
大体のプログラミング言語は昔からの文法に近かったり、書きやすく見やすくなっているのですが、このScalaだけは、そう・・・・
数学の公式!?
のようにも見えます。
なんで、本家のドキュメントの流し読みは後回しにして、日本語で良さそうなサイトを探しました。
ここ・・・いい

とりあえず、下記の1ページ分と
下記の半分ぐらいまでをこなしました。
↑ めっちゃ長いですもん・・・・(汗
Scala自体はこの多すぎる命令文や書き方を、どう組み合わせていくかがポイントですかね。
考える事自体が面白い言語
今の所そんな印象です。
フレームワークもRuby On Railsの影響を受けたPlay Frameworkというのがあります。
Rails派生(?)のフレームワーク(Laravel,Phoenixなど・・・)などの基本概念はあるので、Scalaはゆっくり進めて行きたいとい所です。
完成品よりも言語で考える事自体が面白いのは少しまずい気もしますね・・・・
次はリストの続きから行う予定です。
WEB、プログラミング初心者にこそオススメ。 Elixir + Phoenix を動かすまで。ブラウザ表示までは非常に楽。
What is Elixir / Elixir(エリクサー)とは?
Elixirはスケーラブルで保守可能なアプリケーションを構築できる言語。
Erlang VMを活用しており、Web開発や組み込みソフトウェア分野でも利用されています。
ドキュメント
Elixir公式
Phoenix / Elixir Framework
Install / インストール
Macだと
brew install elixir
cli ツールは
$ iex
抜ける場合は
Ctrl+G > q Return
Ctrl+c を2回でもいけるみたいだが・・・
これで簡単な環境は整います。
Tutorial / チュートリアル
さんのチュートリアルが非常にわかりやすくて素晴らしいです。
補足:Phoenixの新規プロジェクト作成後にサーバーを立ち上げる前にHexのmixコマンドを一度叩く必要あり
mix deps.get
ちょっとびっくりしたのはPhoenixといいパッケージインストールといいめっちゃ早いって事です。npmやcomposerあたりが遅すぎるんかな・・・・
無事起動

パイプを使ったプログラミングは逆に初心者にこそわかりやすく、コードも非常にすっきりして見やすく、わかりやすいと感じました。
これ最初にやると他の言語が逆にキツくなるような・・・(もちろん今の段階での所感ですので、この後どうなるかはわかりませんが)
次は引き続き
さんのチュートリアルを進める予定です。
MacでNasm+gccでアセンブラ(アセンブリを書いてみる)
はじめに
現在OSは下記のバージョンを利用中です。

この記事はMacでアセンブラを少し走らせてみたいなという人を対象にしています。
nasmインストール
brew install nasm
今回このnasm+ldでうまくコンパイルできなかったので
gccを後半利用しています。
コードを書く
hello.asmで保存します。
; hello.asm
GLOBAL _main
SECTION .data
str_hello db "Hello World", 0x0a ; Output string and \n
SECTION .text
_main:
mov rax, 0x2000004 ; Set system call to write=4.
mov rdi, 1 ; Set output to stdout.
mov rsi, str_hello ; Set output data.
mov rdx, 13 ; Set output data size.
syscall ; Call system call.
mov rax, 0x2000001 ; Set system call to exit=1.
mov rdi, 0 ; Set success value of exit.
syscall ; Call system call.
中間ファイル .oファイル作成
nasm -f macho64 hello.asm
これで hello.o が完成
コンパイル
本来
ld -o hello hello.o
これでいけるはずなのですが、エラー。
(追記)下記でいけました。
ld -macosx_version_min 10.11 -lSystem -o hello hello.o
gccを利用する場合は
gcc -o hello hello.o
これでhelloが作成されるので
./hello
で実行無事 hello would
とりあえず実行環境だけ準備 Erlang,Elixir,Scala,Goのインストールと各CLIツール等の確認
準備から
$ brew update
# Erlangの install
- cli tool
$ erl
Ctrl+G > q returnで抜ける
# Elixir install
$ brew install Elixir
- cli tool
$ iex
Ctrl+G > q returnで抜ける
# Sala
$ brew tap caskroom/versions
$ brew cask install java8
$ brew install sbt
参考
http://yebisupress.dac.co.jp/2017/12/07/scala-nyumon-zyunbi01/
https://qiita.com/umeneri/items/666ff425a11b3dc2022b
- cli tool
$ scala
:q で抜ける
# Go lang
$ brew install go
参考
https://qiita.com/megu_ma/items/7208be8de52b712955a0
cli無い
go run ***.go で実行、コンパイルとか後回し
godoc -http=:6060 とかでヘルプをローカルのブラウザで(localhost:6060)
結論
ほぼほぼbrewで片付く
brew listで確認

coursera Julia Scientific Programming第4章で全てを一旦終了。 良かった点、反省点、今後。
下記講座を無事終了しました。
今回juliaの事をよくわからずに、このコースを進めましたが、色んな反省点があります。
1 (反省)言語バージョンをちゃんと確認しましょう。
開発の時は気にするくせに今回はまったく何も考えずに初めてしまいました。
教材のバージョンは0.6対応。自分が準備したバージョンは1.0だった為、ちょっと余分な時間が・・・・
2 (良かった)学習しながらツイートやブログを活用しましょう。
ツイッターの勉強垢などを使ってつぶやくのは学習のモチベーションを上げるのにやはりいいです。近くの知り合いや仕事仲間が同じ時期に、自分の学習したい項目に食いつくとは限らないですし。自分の周りはもっかPythonやruby,nodeなどに夢中な人はいますが、Juliaをやろうとする人はいませんでした。
ツイッターならもっか学習中の人の言動も見て取れてモチベーションが維持できます。
3 (反省点)これから何をしたいかも考えておいた方がいいかも
久しぶりに授業を受けるうような感じで学習を進めるのも、詰まってしまった課題を解いていくのも楽しかったです。ただ、終盤にさしかかるにつれ祭りが終わるような寂しさも・・・
やはり自分でやりたいプロダクトや実際の仕事に結びつけて置くことを初めに想定しておかないと、レッスンだけで終わるのはもったいないです。
今後
もう少しJuliaの学習をしながらWEBのフレームワークなどでサイトを作るか、深層学習とかにいくか・・・
どのみちこの言語自体になれる必要はありますかね。
データサイエンティストの仕事。 実データと法則と未来予想。 Cousera Julia Scientific Programming Chapter3の締めくくり
チャプター3を無事終了です。データの型や、実データからの各値の調整などなど、ここまで一通りやればJupyter Note Bookを使ってのデータ分析の触り部分が理解できます。
ここまで来て、改めてデータサイエンティストって何だろうなーって考えてしまいました。
データサイエンティストって何?
- - 分析手法に関する最新動向の把握(機械学習、ディープ・ラーニング、テキスト・アナリティクスなど)
- - IT部門および業務部門とのコミュニケーションとコラボレーション
- - データに潜む秩序やパターンの発見と、ビジネスの最終利益に寄与する傾向の特定
非常に的確に色々書いてありますが、データというリソースを料理する人間というポイントは一貫してます。
要はデータという塊から意味のある価値を探し出す事ができるという事です。
競馬予想する人もある意味データサイエンティストって言えますね。
ある特定の法則を見つけ出す作業は後々の人工知能系の技術(機械学習、深層学習)のベースにもなりますよ。
ここまで来て、データサイエンティストになりたいかと自問自答したら活用する人間にはなりたいが、そこに収まりたくないなってのはあります。
この分野将来的には100%人工知能にとられてしまいますからね・・・・