100day’s blog

思いついた事や、プログラミングの毎日の作業工程を短めにまとめてます。

職場がいきなりdjangoの方の為の 資料収集、 公式、チュートリアル等チェックなどなど

仕事でdjango・・・で焦る

ここ数日、仕事でdjangoのプロジェクトにかかわる事に。

Pythondjangoもまだまだ中途半端にしか理解しておらず、juliaやらElixirやらに目が向かっていた為、「もう少しやっとけば良かった・・・」と焦ってます。

 

自分の現状のdjangoレベルは・・・

- python自体のドキュメントは一通り目を通している。

- djangoチュートリアルでherokuへデプロイまでで終わっている。

このぐらいの状態です。

何なら、まあRailsと同じかなーって若干舐めていた節もあります(汗

 

とりあえず情報整理を始める。

今回Pyhton3.6,Django2.1が対象

 

1 公式

The Web framework for perfectionists with deadlines | Django

 

2 公式内の日本語ドキュメント

Django ドキュメント | Django documentation | Django

実際、上記のドキュメントで良いのですが、かなり詳細なインデックスになってしまっています。

 

親切な事にドキュメントの利用方法についてチュートリアル終了後に

次のステップへ | Django documentation | Django

で、色々と解説してくれています。

さあ、ここにきたあなたは、入門編 をあらかた読み終えて、 Django を使い続ける決心をしたことだと思います。入門編では、Django のほんの表面的な部分に触れただけにすぎません (実際、入門編の分量は、全体のドキュメントの 5% にも満たないのです)。

 

なので大きく概要を見るのであればこちら側が良いかもしれません。

Django を使う | Django documentation | Django

 

 

他のドキュメントやチュートリアル、トピックスなどを調べる前に・・・

だいたいの公式に目を通し他の情報も入れていくのですが、その前に

 

現状使おうとしている言語やフレームワークのリリース日のチェックは必須です。

Django 2.1 released | Weblog | Django

Django 2.1 リリースノート | Django documentation | Django

理由としては、仕様変更などにより、ネット上の情報が既に使えなくなってる可能性があったり、改変が必要だったりするからです。

 

2.1のリリースが比較的最近のようです。(2018.8)

マイナーアップデートは続いてるのでリリースノートのチェックも。

リリースノート | Django documentation | Django

 

で、他のドキュメント

はじめに · Django Girls Tutorial

2018.10.15時点では2.0.6系で記載されていますが、平たく読みやすいかもしれません。

 

正直、公式ドキュメントでピンとこなければ、googleで検索を1年以内に絞って調べていけば後はたいていなんとかなります。

 

あと理想的なのはサンプルコードあれば。

pythoncmsの中でもdjangoで作られたdjango-cms

GitHub - divio/django-cms: The easy-to-use and developer-friendly CMS

 

サンプル名簿アプリ

[Python] Djangoチュートリアル - 汎用業務Webアプリを最速で作る

 

番外

Python and Django tutorial in Visual Studio Code

vs codeの設定例も含めたチュートリアル。親切

 

やっと準備が出来ました。

一旦これで一通り準備ができました。正直django自体ドキュメントが非常に出来が良いので、それだけでもいいですが、なるべく早く情報を整理するには書き方の違うドキュメント類やソースコードに目を通すのが一番です。

 

幸い、仕事のプロジェクト自体はメインは別の方が担当なので、後追いしながら進めていける分気は楽です。

でも、しばらくはpython,djangoも見ていく必要がありそうです。

あと、何気にフロントがreactですが・・・(汗

 

 

 

 

 

 

 

 

 

HerokuにElixir + Phoenixをデプロイしてみる。一旦起動まで行くが、bullpackで一部問題ありのまま後日へ。

前回に続き、今回はHerokuにサンプルアプリをデプロイする所までチャレンジです。

公式ドキュメント通りでほぼ行けるとの事なので・・・・

Deploying on Heroku – Phoenix v1.3.4

こちらを参考に進めていきます。

 

1 プロジェクト作成 

Phoenixのプロジェクト自体はこちらをまたお世話になります。

Excelから関数型言語マスター3回目:WebにDBデータ表示【PostgreSQL or MySQL編】

 

前回mysqlで進めてしまったので

DockerでPostgreSQL環境を構築する(更新: 2017/6/20)

こちらを参考にしてDockerでPostgresSQLを構築

f:id:gpstandard:20181009232529p:plain

無事コンテナが立ち上がったので

 

user_id: root

password : test

port番号5432で

 

config/dev.exsに記入

 

# Configure your database
config :test_db, TestDb.Repo,
adapter: Ecto.Adapters.Postgres,
username: "postgres",
password: "test",
database: "test_db_dev",

port: "5432"
hostname: "localhost",
pool_size: 10

これをベースに

$ mix ect.create

ちなみにこのport:はEctoのドキュメントで発見、まあ文字通りですが。

Ecto.Adapters.Postgres – Ecto v2.2.11

 

一旦これでPhoenixの基本的な画面は立ち上がる

 

$ iex -S mix phx.server

なので

herokuに上げてみる事に

 

2 Herokにデプロイ準備

Deploying on Heroku – Phoenix v1.3.4

Phoenix Production デプロイへの道その2:Heroku編

を見ながら自分のプロジェクトに合わせ保管しながら進めます。

 

古いドキュメントだとphxの表記じゃないとありましたが、そこらへんは公式も修正されているようです。

 

ところがnodeでこける

-----> Installing binaries
Resolving node version 6.9.2...
Downloading and installing node 6.9.2...
       Installing Node 6.9.2...
       Using default npm version
 
-----> Building dependencies
       Installing and caching node modules
/app/tmp/buildpacks/abc8fb9e8be131ec2574c4ba9e31b81540d97b3bbce47d96e05959c4f81404ac71605dd35ebbcf7a1abe958c346d8ee266ff035de9254424eb54e8b9480059be/lib/build.sh: line 113: cd: /tmp/build_a02ddee6b6ef8bb769fd0f01616a3612/./assets: No such file or directory
 !     Push rejected, failed to compile Phoenix app.

 

理由はよくわからんがbullpackとnodeの問題か・・・?

https://elixirforum.com/t/heroku-deploy-issues-with-phoenix-1-3/5710/15

を参考にbullpackの一部を一旦消去

f:id:gpstandard:20181010004934p:plain

一旦static-buildpackを外して再度

$ git push heroku master

無事起動

f:id:gpstandard:20181010005032p:plain

うーん。この部分は何かドキュメントの読み違いがあるのか・・・・

後日原因さぐります。

 

 

 

 

 

 

 

 

初学の為のScala公式サイトの探訪。 ScalaFiddleやチートシート、Gitterコミュニティなどなどチェック。

初めて学習するサイトが英語だと萎える方でしたが、最近はだいぶ慣れてきました。

ほとんどのプログラミング言語が海外発祥なので、英語はいたしかたがないですね。

 

ただ、日本語で情報を集めきろうとすると情報が古かったりもするので、一度は公式サイトを済から済までみておいた方がいいです。

 

f:id:gpstandard:20181003223825p:plain

The Scala Programming Language

 

さっそく、見ていきます。

 

まず押さえるべきはドキュメント

f:id:gpstandard:20181005074126p:plain

大半の目的がここに集約されると言ってもいいドキュメントです。

言語の全体像を掴むならここを一通り流し読みしてしておきたい所。

 

リファレンスはともかく、いいなあと思ったのは下記の3つ

 

ブラウザでScala 

f:id:gpstandard:20181005210200p:plain

https://scalafiddle.io/

 

オンラインリソースにあるScala Exercies

www.scala-exercises.org

 

チートシート

これはいいですね。

Scalacheat | Scala Documentation

 

 

 

あとは

ライブラリScaladex

f:id:gpstandard:20181005211724p:plain

Scaladex

 

色んなライブラリがあって、Scalaで何作ろうwという楽しい気分になりますね。

 

また、Gitter(Githubと連携するSNS)も

f:id:gpstandard:20181005212059p:plain

gitter.im

ツイッター好きですが、Gitterもなかなかw

f:id:gpstandard:20181005212159p:plain

英語が出来るとパラダイスですね。

 

やはり公式サイトはもりだくさん

今でこそ、公式サイトをちゃんとチェックしますが、最初の頃はどうしてもチュートリアルだけで終わってたりする事もありました。

しかし、今はなるべく早い段階で公式サイトの構成や内容を流し読みするようにしています。

そうする事で、色んな事に早めに気づき言語習得の助けになると思います。

 

 

残念なおまけ

日本でも数年前に派手にもりあがった時期がありました。その時に作られたScalaユーザーグループがあります。

jp.scala-users.org

本家のサイトでは2.12.7が2018年にリリースされていますが、日本語サイトは2015年で更新がストップしてる感じです。

f:id:gpstandard:20181005213320p:plain

 言語の移り変わりの栄枯盛衰を感じますね・・・・

 

 

Elixir + Phoenix のExcelで出来る事をやろう的なチュートリアル第3回〜5回まで。次 CRUDやりたいの準備

とりあえず前回に続き

piacere_ex - Qiita さんのElixir + Phoenixを実践。

第3回〜第5回までで、この組み合わせの触り部分の雰囲気はつかめます。

 

どこか詰まる所があればと思ったのですが、DB作成部分さえ慣れてればスムーズに行きます。

あと、第1,2回と別のPhoenixアプリとなるので、前回までのプロジェクトは別に作成という点は注意。

 

さっそく第3回から

qiita.com

 

まずは・・・

DBに・・・つないでなんぼ、システムです。

 

ここは個人で色々ですが、DBはとりあえず入ってるdockerのやつを流用します。

f:id:gpstandard:20181004222151p:plain

 どうでもいいけど、MovableType用に起動したコンテナが4週間も立ち上げっぱなしでした・・・・(汗

 

最初はDB周りの設定と思いっきりMySql内でSQL文を回す作業です。

これ、Laravelみたいなmigrationやseedもあるんでしょうけどまあ、最初はこれで。

 

あとは第1,2回の消化試合。

 

そして第4回に

qiita.com

f:id:gpstandard:20181004230631p:plain

ほうほう、こういう事が・・・

ここだけのコードを見るとhtmlテンプレートの部分だけである程度遊べるますね・・・・w

 

でサクッと終了。

 

そして第5回

qiita.com

 

なるほど・・・

jsとの組み合わせ方もわかりやすいですね。

昔、JavaのSpringをやってた記憶からするとかなり、ここまでは手軽です。

Javaに比べたらScalaの生産性はちがうわな・・・という所感でした。

 

ここまでで完全なCRUDチュートリアルのようなパターンでは無いですが、ElixirにおけるPhoenixの一部が見えてきました。

 

 

となると当然

 

書き込み、削除を含めたCRUDチュートリアルが欲しくなりますね。

次回は

ここらへんをやるか・・・

 

ジェネレーター一発・・・・

qiita.com

でも、これだとファイル構成とかも身につかないかもで

ここらへんも・・

qiita.com

 

あと、手元だけで動かしてもしょうがないので、herokuにドーン。

 

Procfileとかの設定の変更とかで時間つぶすのもあれなので、なるべく最新そうなチュートリアルを選別

 

mysql有料でしたよね・・・・

qiita.com

 

qiita.com

謂わく、公式ドキュメント通りほぼいけるらしいので

Deploying on Heroku – Phoenix v1.3.4

こちらも参考に準備

 

続きはまた次回。

 

 

まるで公式を解いている気分になれるScalaを始める。 helloからListまでをチュートリアル的に消化。

前回一気に Scalaをインストールしたので、他の言語と並行して進めます。

The Scala Programming Language

f:id:gpstandard:20181003223825p:plain

余談ですが、プログラミング言語のサイトのデザインの中でも好きな部類です。

 

今までのScalaに対する印象

昔からのJAVAプログラマーさんに最近何が熱いの?と聞いたらScalaと即答されたのが数年前です。 その人はポケコンの時代からプログラミングしてた人ですが、関数型プログラミングを熱く語ってくれました。

当時、じゃあと少しドキュメントや、これが関数型プログラミングや!!みたいなワンライナーっぽい数珠の塊を見て投げ出したのを覚えています。

 

まずは簡単な所から

大体のプログラミング言語は昔からの文法に近かったり、書きやすく見やすくなっているのですが、このScalaだけは、そう・・・・

 

数学の公式!?

 

のようにも見えます。

 

なんで、本家のドキュメントの流し読みは後回しにして、日本語で良さそうなサイトを探しました。

 

ここ・・・いい

f:id:gpstandard:20181003224655p:plain

とりあえず、下記の1ページ分と

Scala言語の概要

 

下記の半分ぐらいまでをこなしました。

Scalaでリスト処理

↑ めっちゃ長いですもん・・・・(汗

 

Scala自体はこの多すぎる命令文や書き方を、どう組み合わせていくかがポイントですかね。 

 

考える事自体が面白い言語

今の所そんな印象です。

フレームワークRuby On Railsの影響を受けたPlay Frameworkというのがあります。

Play Framework - Wikipedia

 

Rails派生(?)のフレームワーク(Laravel,Phoenixなど・・・)などの基本概念はあるので、Scalaはゆっくり進めて行きたいとい所です。

 

完成品よりも言語で考える事自体が面白いのは少しまずい気もしますね・・・・

 

次はリストの続きから行う予定です。

WEB、プログラミング初心者にこそオススメ。 Elixir + Phoenix を動かすまで。ブラウザ表示までは非常に楽。

What is Elixir / Elixir(エリクサー)とは?

 

Elixirはスケーラブルで保守可能なアプリケーションを構築できる言語。

Erlang VMを活用しており、Web開発や組み込みソフトウェア分野でも利用されています。

 

ドキュメント 

Elixir公式

elixir-lang.org

 

Phoenix / Elixir Framework

phoenixframework.org

 

 

Install / インストール

 

Macだと

 

brew install elixir

 

cli ツールは

 $ iex

抜ける場合は 

Ctrl+G > q Return

Ctrl+c を2回でもいけるみたいだが・・・ 

 

これで簡単な環境は整います。

 

 Tutorial / チュートリアル

 

piacere_ex - Qiita

さんのチュートリアルが非常にわかりやすくて素晴らしいです。

 

qiita.com

 

qiita.com

 

補足:Phoenixの新規プロジェクト作成後にサーバーを立ち上げる前にHexmixコマンドを一度叩く必要あり 

mix deps.get

 

ちょっとびっくりしたのはPhoenixといいパッケージインストールといいめっちゃ早いって事です。npmやcomposerあたりが遅すぎるんかな・・・・

 

無事起動

f:id:gpstandard:20181003093126p:plain

パイプを使ったプログラミングは逆に初心者にこそわかりやすく、コードも非常にすっきりして見やすく、わかりやすいと感じました。

これ最初にやると他の言語が逆にキツくなるような・・・(もちろん今の段階での所感ですので、この後どうなるかはわかりませんが)

 

次は引き続き

piacere_ex - Qiita

さんのチュートリアルを進める予定です。

 

 

 

MacでNasm+gccでアセンブラ(アセンブリを書いてみる)

はじめに

現在OSは下記のバージョンを利用中です。

f:id:gpstandard:20181002091834p:plain

この記事はMacアセンブラを少し走らせてみたいなという人を対象にしています。

 

nasmインストール

brew install nasm

今回このnasm+ldでうまくコンパイルできなかったので

Macにgccをインストールする

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