haiju's 開発メモ

開発に必要な情報を自分用にメモ

Win7(x64)のVMのCentOS7.2(x64)にMariaDBを再インストール【準備編】

CakePHP 2.4.xでFixtureを作成する時にMariaDB5.5.xを使うとエラー

になったので長らく放置していたけど、そろそろバージョンを

上げて、確認してみようと思ったので、自分用メモ。

[参考サイト]

server.etutsplus.com

okdtsk.hateblo.jp

www.howtoforge.com

www.atlantic.net

www.digitalocean.com

vexxhost.com

www.tecmint.com

www.cyberciti.biz

How To Install The LAMP Stack On CentOS 7 – Liberian Geek

landoflinux.com

Install LAMP Server (Apache, MariaDB, PHP) On CentOS/RHEL/Scientific Linux 7 | Unixmen

devops.profitbricks.com

www.ostechnix.com


Nim の GUIライブラリ nimxをインストールしてサンプルコードを動かしてみる(3)

この記事はNim Advent Calendar 2016 の25日目の記事です。

こちらの環境はManjaro Fluxbox 15.12のNim開発環境を

0.15.2 -> 0.15.3 にアップデートして再検証を行います。

[手順]

1. ローカルの開発環境のバージョンを上げる。

 ローカルにインストールしたNimディレクトリに移動し

 以下を実行。

% cd Nim

% git pull

% ./koch boot -d:release

2. バージョンを確認。

% nim
Nim Compiler Version 0.15.3 (2016-12-27) [Linux: amd64]
Copyright (c) 2006-2016 by Andreas Rumpf

3. nimxインストール。

% nimble install nimx
Downloading https://github.com/yglukhov/nimx using git
Verifying dependencies for nimx v0.1
Info: Dependency on sdl2 (any version) already satisfied
Verifying dependencies for sdl2 v1.1
Info: Dependency on opengl (>= 1.1) already satisfied
Verifying dependencies for opengl v1.1.0
Info: Dependency on x11 (any version) already satisfied
Verifying dependencies for x11 v1.0
Info: Dependency on nimsl (>= 0.2 & < 0.3) already satisfied
Verifying dependencies for nimsl v0.2
Installing jnim (any version)
Downloading https://github.com/vegansk/jnim using git
Verifying dependencies for jnim v0.2.5
Installing nimfp (>= 0.1.0)
Downloading https://github.com/vegansk/nimfp using git
Verifying dependencies for nimfp v0.3.5
Installing nimboost (>= 0.3.2)
Downloading https://github.com/vegansk/nimboost using git
Verifying dependencies for nimboost v0.3.4
Installing nimboost v0.3.4
Success: nimboost installed successfully.
Installing classy (>= 0.0.1)
Downloading https://github.com/nigredo-tori/classy using git
Verifying dependencies for classy v0.0.1
Installing classy v0.0.1
Success: classy installed successfully.
Installing nimfp v0.3.5
Success: nimfp installed successfully.
Installing jnim v0.2.5
Success: jnim installed successfully.
Installing nake (any version)
Downloading https://github.com/fowlmouth/nake using git
Verifying dependencies for nake v1.8
Installing nake v1.8
Building nake/nake using c backend
Success: nake installed successfully.
Installing closure_compiler (>= 0.2 & < 0.3)
Downloading https://github.com/yglukhov/closure_compiler.git using git
Verifying dependencies for closure_compiler v0.2
Installing closure_compiler v0.2
Building closure_compiler/closure_compiler using c backend
Success: closure_compiler installed successfully.
Installing plists (any version)
Downloading https://github.com/yglukhov/plists using git
Verifying dependencies for plists v0.1.0
Installing plists v0.1.0
Success: plists installed successfully.
Installing variant (>= 0.2 & < 0.3)
Downloading https://github.com/yglukhov/variant.git using git
Verifying dependencies for variant v0.2.1
Installing variant v0.2.1
Success: variant installed successfully.
Installing jester (any version)
Downloading https://github.com/dom96/jester using git
Verifying dependencies for jester v0.1.1
Installing jester v0.1.1
Success: jester installed successfully.
Installing https://github.com/yglukhov/ttf (>= 0.2.3 & < 0.3)
Downloading https://github.com/yglukhov/ttf using git
Verifying dependencies for ttf v0.2.3
Installing nimBMP (any version)
Downloading https://github.com/jangko/nimBMP using git
Verifying dependencies for nimBMP v0.1.2
Installing nimBMP v0.1.2
Success: nimBMP installed successfully.
Installing ttf v0.2.3
Success: ttf installed successfully.
Installing https://github.com/yglukhov/async_http_request (any version)
Downloading https://github.com/yglukhov/async_http_request using git
Verifying dependencies for async_http_request v0.1.0
Installing jsbind (any version)
Downloading https://github.com/yglukhov/jsbind using git
Verifying dependencies for jsbind v0.1
Installing jsbind v0.1
Success: jsbind installed successfully.
Installing async_http_request v0.1.0
Success: async_http_request installed successfully.
Installing jsbind (any version)
Downloading https://github.com/yglukhov/jsbind using git
Verifying dependencies for jsbind v0.1
Installing jsbind v0.1
Prompt: jsbind-0.1 already exists. Overwrite? [y/N]
Answer: y
Success: jsbind installed successfully.
Installing nimx v0.1
Success: nimx installed successfully.

4. Hello, world!をWindowに表示するサンプルコードを書く。

# File: main.nim
import nimx.window
import nimx.text_field
import nimx.system_logger # Required because of Nim bug (#4433)
 
proc startApp() =
      # First create a window. Window is the root of view hierarchy.
     var wnd = newWindow(newRect(40, 40, 800, 600))
 
      # Create a static text field and add it to view hierarchy
      let label = newLabel(newRect(20, 20, 150, 20))
      label.text = "Hello, world!"
      wnd.addSubview(label)
 
# Run the app
runApplication:
        startApp()

5. ビルドして動作確認。

% nim c -r --noMain --threads:on main.nim
Hint: used config file '/home/haiju/Nim/config/nim.cfg' [Conf]
Hint: system [Processing]
Hint: main [Processing]
Hint: window [Processing]
Hint: abstract_window [Processing]
Hint: view [Processing]
Hint: typetraits [Processing]
Hint: tables [Processing]
Hint: hashes [Processing]
Hint: strutils [Processing]
Hint: parseutils [Processing]
Hint: math [Processing]
Hint: algorithm [Processing]
Hint: etcpriv [Processing]
Hint: sequtils [Processing]
Hint: types [Processing]
Hint: context [Processing]
Hint: opengl [Processing]
Hint: macros [Processing]
Hint: x [Processing]
Hint: xlib [Processing]
Hint: xutil [Processing]
Hint: keysym [Processing]
Hint: dynlib [Processing]
Hint: system_logger [Processing]
Hint: logging [Processing]
Hint: times [Processing]
Hint: os [Processing]
Hint: posix [Processing]
Hint: matrixes [Processing]
Hint: font [Processing]
Hint: unicode [Processing]
Hint: streams [Processing]
Hint: resource [Processing]
Hint: json [Processing]
Hint: lexbase [Processing]
Hint: async_http_request [Processing]
Hint: asyncdispatch [Processing]
Hint: oids [Processing]
Hint: endians [Processing]
Hint: heapqueue [Processing]
Hint: nativesockets [Processing]
Hint: net [Processing]
Hint: sets [Processing]
Hint: deques [Processing]
Hint: selectors [Processing]
Hint: epoll [Processing]
Hint: httpclient [Processing]
Hint: uri [Processing]
Hint: strtabs [Processing]
Hint: base64 [Processing]
Hint: mimetypes [Processing]
Hint: random [Processing]
Hint: httpcore [Processing]
Hint: asyncnet [Processing]
Hint: threadpool [Processing]
Hint: cpuinfo [Processing]
Hint: linux [Processing]
Hint: cpuload [Processing]
Hint: pathutils [Processing]
Hint: variant [Processing]
Hint: sdl2 [Processing]
Hint: unsigned [Processing]
Hint: timer [Processing]
Hint: mini_profiler [Processing]
Hint: sdl_perform_on_main_thread [Processing]
Hint: font_data [Processing]
Hint: stb_ttf_glyph_provider [Processing]
Hint: rect_packer [Processing]
Hint: ttf [Processing]
Hint: write_image_impl [Processing]
Hint: edtaa3func [Processing]
Hint: simple_table [Processing]
Hint: portable_gl [Processing]
Hint: image [Processing]
Hint: resource_cache [Processing]
Hint: oswalkdir [Processing]
Hint: load_image_impl [Processing]
Hint: worker_queue [Processing]
Hint: nimsl [Processing]
Hint: glsl_codegen [Processing]
Hint: composition [Processing]
Hint: helper_macros [Processing]
Hint: text_drawing [Processing]
Hint: animation [Processing]
Hint: animation_runner [Processing]
Hint: property_visitor [Processing]
Hint: class_registry [Processing]
Hint: serializers [Processing]
Hint: notification_center [Processing]
Hint: sdl_window [Processing]
Hint: event [Processing]
Hint: keyboard [Processing]
Hint: app [Processing]
Hint: window_event_handling [Processing]
Hint: view_event_handling [Processing]
Hint: view_event_handling_new [Processing]
Hint: linkage_details [Processing]
Hint: screen [Processing]
Hint: sdl_vk_map [Processing]
Hint: text_field [Processing]
Hint: control [Processing]
Hint: unistring [Processing]
Hint: table_view_cell [Processing]
Hint: pasteboard [Processing]
Hint: abstract_pasteboard [Processing]
Hint: key_commands [Processing]
Hint: formatted_text [Processing]
Hint: lower_bound [Processing]
Hint: scroll_view [Processing]
Hint: clip_view [Processing]
Hint: scroll_bar [Processing]
Hint: slider [Processing]
CC: main
CC: stdlib_system
CC: stdlib_sharedlist
CC: stdlib_locks
CC: nimx_window
CC: nimx_abstract_window
CC: nimx_view
CC: stdlib_typetraits
CC: stdlib_tables
CC: stdlib_sequtils
CC: stdlib_hashes
CC: stdlib_math
CC: stdlib_strutils
CC: stdlib_etcpriv
CC: stdlib_parseutils
CC: stdlib_algorithm
CC: nimx_types
CC: nimx_context
CC: opengl_opengl
CC: stdlib_macros
CC: x11_x
CC: x11_xlib
CC: x11_xutil
CC: x11_keysym
CC: stdlib_dynlib
CC: nimx_system_logger
CC: stdlib_logging
CC: stdlib_times
CC: stdlib_os
CC: stdlib_posix
CC: nimx_matrixes
CC: nimx_font
CC: stdlib_unicode
CC: stdlib_streams
CC: nimx_resource
CC: stdlib_json
CC: stdlib_lexbase
CC: async_http_request_async_http_request
CC: stdlib_asyncdispatch
CC: stdlib_oids
CC: stdlib_endians
CC: stdlib_heapqueue
CC: stdlib_nativesockets
CC: stdlib_net
CC: stdlib_sets
CC: stdlib_deques
CC: stdlib_selectors
CC: stdlib_epoll
CC: stdlib_httpclient
CC: stdlib_uri
CC: stdlib_strtabs
CC: stdlib_base64
CC: stdlib_mimetypes
CC: stdlib_random
CC: stdlib_httpcore
CC: stdlib_asyncnet
CC: stdlib_threadpool
CC: stdlib_cpuinfo
CC: stdlib_linux
CC: stdlib_cpuload
CC: nimx_pathutils
CC: variant_variant
CC: sdl2_sdl2
CC: stdlib_unsigned
CC: nimx_timer
CC: nimx_mini_profiler
CC: nimx_sdl_perform_on_main_thread
CC: nimx_font_data
CC: nimx_stb_ttf_glyph_provider
CC: nimx_rect_packer
CC: ttf_ttf
CC: nimx_write_image_impl
CC: ttf_edtaa3func
CC: nimx_simple_table
CC: nimx_portable_gl
CC: nimx_image
CC: nimx_resource_cache
CC: stdlib_oswalkdir
CC: nimx_load_image_impl
CC: nimx_worker_queue
CC: nimsl_nimsl
CC: nimsl_glsl_codegen
CC: nimx_composition
CC: nimx_helper_macros
CC: nimx_text_drawing
CC: nimx_animation
CC: nimx_animation_runner
CC: nimx_property_visitor
CC: nimx_class_registry
CC: nimx_serializers
CC: nimx_notification_center
CC: nimx_sdl_window
CC: nimx_event
CC: nimx_keyboard
CC: nimx_app
CC: nimx_window_event_handling
CC: nimx_view_event_handling
CC: nimx_view_event_handling_new
CC: nimx_linkage_details
CC: nimx_screen
CC: nimx_sdl_vk_map
CC: nimx_text_field
CC: nimx_control
CC: nimx_unistring
CC: nimx_table_view_cell
CC: nimx_pasteboard
CC: nimx_abstract_pasteboard
CC: nimx_key_commands
CC: nimx_formatted_text
CC: nimx_lower_bound
CC: nimx_scroll_view
CC: nimx_clip_view
CC: nimx_scroll_bar
CC: nimx_slider
Hint: [Link]
Hint: operation successful (82751 lines compiled; 7.564 sec total; 194.234MiB; Debug Build) [SuccessX]
Hint: /home/haiju/workspace/test-nimx/main [Exec]

6. 表示ができた!

f:id:haiju:20161227081504j:plain

[参考サイト]

How I Start.

github.com

CrystalのパッケージマネージャShardsの使い方とWebフレームワークのKemalを試してみるテスト

この記事はCrystal Advent Calendar 2016 の23日目の記事です。

CrystalのコードはRubyに似ているので、階乗とかフィボナッチ数

のプログラムを書いたりしたことはあったけど、パッケージマネージャ

のShardsを使ったアプリ開発はやったことなかったな。

と思って、その使い方の練習とフルスタックじゃないWebフレームワーク

を試してみたいなということで、Crystalの軽量フレームワークといえば

Kemalじゃね?ってことで、Hello World!を出力する簡単なコードを

書いて実行してみることにする。

※自分の環境

systemにanyenv + crenvで0.20.0をインストール。

[手順]

1. プロジェクトを作成しルートディレクトリへ移動。

% crystal init app example
create example/.gitignore
create example/LICENSE
create example/README.md
create example/.travis.yml
create example/shard.yml
create example/src/example.cr
create example/src/example/version.cr
create example/spec/spec_helper.cr
create example/spec/example_spec.cr
Initialized empty Git repository in /home/haiju/workspace/example/.git/

% cd example

2. ルートディレクトリ直下のshard.ymlを修正してKemalを

 設定。

% vim shard.yml
 
■kemalをインストールできるように修正。
 
name: example
version: 0.1.0
 
authors:
    - haiju <mail-address>
 
    targets:
       example:
           main: src/example.cr

    dependencies: --- 追加
        kemal: --- 追加
            github: kemalcr/kemal --- 追加
            branch: master --- 追加

 

crystal: 0.20.0 --- defaultは0.19.4だったがsystemの最新を指定してみる

license: MIT

3. Shardsを使って依存パッケージや依存ライブラリをインストール。

% shards install
Updating https://github.com/kemalcr/kemal.git
Updating https://github.com/luislavena/radix.git
Updating https://github.com/jeromegn/kilt.git
Updating https://github.com/RX14/multipart.cr.git
Installing kemal (master)
Installing radix (0.3.5)
Installing kilt (0.3.3)
Installing multipart (0.1.1)

4. 実際にコードを書いてみる。

 というより、むしろ、Kemalのサイトにあるサンプルコードを

 写経してみる。

% vim src/example.cr

require "kemal"

get "/" do

    "Hello, World!"

end

Kemal run

5. 4のコードをビルド。

% crystal build --release src/example.cr

何かエラーが発生している?Kemalがうまく読み込めてないらしい。

Error in src/example.cr:3: while requiring "kemal": can't find file 'kemal' relative to '/home/haiju/workspace/example/src'

require "kemal"

6. crystal env を確認してみる。

% crystal env
CRYSTAL_CACHE_DIR="/home/haiju/.cache/crystal"
CRYSTAL_PATH="/home/haiju/.anyenv/envs/crenv/versions/0.20.0/src:libs"
CRYSTAL_VERSION="0.20.0"

これから先の調べ方がよくわからないので作業中断。

もう少し調べて補足するつもりだけど、他の気になる少し古めのフレームワーク

も全部、相対パスだと読み込めなくて同じエラーだった。

ということは根本的に調べ方がまずいのかもしれない。

もう少し公式ドキュメント周りから攻めて行ってみよう。

という訳で初心者がゴソゴソしてみた現場からは以上になります。

[参考サイト]

github.com

kemalcr.com

github.com

Requiring files · GitBook

github.com

github.com

isucon5q-crystal を公開するまでのメモ · GitHub

 

ssh接続でプライベートリポジトリにバックアップ作成

ようやくBitbucketにssh接続できるようになったので、

ローカルのターミナル環境からブラウザにアクセスせず

sshのみでバックアップしてみるテスト。

[手順]

1. バックアップしたいプロジェクトディレクトリへ移動し、以下実行。

% cd helloFParsecTest

% git init

Initialized empty Git repository in $HOME/workspace/helloFParsecTest/.git/

2. リモートのマスターリポジトリを設定。

% git remote add origin ssh://git@bitbucket.org/username/hellofparsectest.git

3. 1のプロジェクトを2に追加、push。

% git add .

% git commit
[master (root-commit) 40f7f14] helloFParsecTest created
6 files changed, 127 insertions(+)
create mode 100644 helloFParsecTest.sln
create mode 100644 helloFParsecTest.userprefs
create mode 100644 helloFParsecTest/AssemblyInfo.fs
create mode 100644 helloFParsecTest/Main.fs
create mode 100644 helloFParsecTest/MainWindow.fs
create mode 100644 helloFParsecTest/helloFParsecTest.fsproj

% git push origin master

Counting objects: 9, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (9/9), 2.38 KiB | 0 bytes/s, done.
Total 9 (delta 0), reused 0 (delta 0)
To ssh://bitbucket.org/username/hellofparsectest.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.

[参考サイト]

qiita.com

bitbucketに鍵を登録してssh接続可能にする

個人開発のためにbitbucketにアカウントを作って

勉強してることをどんどんバックアップするのをもっと

手軽にしたいということで、ssh接続を設定する方法に

ついて調べたのでまとめる。

※基本的に、mercurialもgitも同じ。

[手順]

1. 開発PCのhomeディレクトリで鍵を生成。

% mkdir .ssh

% cd .ssh/

% ssh-keygen -t rsa -f id_rsa

パスフレーズなし 

2. 秘密鍵の登録。

 ssh接続時にid_rsaを指定したアドレスで使うように登録。

2-1. 秘密鍵のアクセス権を変更。

% chmod 600 id_rsa

2-2. .ssh/configファイルに下記を追記。

Host bitbucket.org

     HostName bitbucket.org

     IdentityFile ~/.ssh/id_rsa

     User hg

2-3. .sshディレクトリのアクセス権を変更。

% chmod 700 .ssh 

3. 公開鍵の登録

URLは「https://bitbucket.org/account/user/username/ssh-keys

3-1.「アカウントの管理」から「鍵を追加」をクリックして公開鍵

  を登録。

3-2. Labelの欄には分かりやすいように開発PCの名前を入力。

 (ex) my_vaio_duo11

3-3. 公開鍵(id_rsa.pub)を開いてラベルの下の欄にコピペ。

% cat ~/.ssh/id_rsa.pub 

4. 疎通確認とサーバ登録

4-1. 疎通確認のため、以下を実行。

ssh -v -T hg@bitbucket.org 

 接続すると can't be established などと言われて、続けるか?と

 聞かれるので、「yes」を選択すると、~/.ssh/known_host に

 サーバが登録される。

4-2. BitbucketにSSH接続を試みて、以下のようになれば正しく接続できている。

debug1: Authentication succeeded (publickey).

Authenticated to bitbucket.org ([104.192.143.2]:22).

... (省略)

debug1: client_input_channel_req: channel 0 rtype exit-status reply 0

logged in as username(account).

You can use git or hg to connect to Bitbucket. Shell access is disabled.

5.  終わったら、とりあえずもう一度、確認してみる。

ssh -v -T hg@bitbucket.org

6. bitbucketにログインして、リポジトリのClone部分のプルダウンが

 SSHを選択されててURLがsshで開始されているのを確認できればOK。

(ex) ssh://hg@bitbucket.org/username/docs

[参考サイト]

qiita.com

qiita.com

qiita.com

RustのWebフレームワークRocket.rsを試してみる

この記事はRust その2 Advent Calendar 2016 の24日目の記事です。

自分がRustでやってみたいと思っていたことはWebアプリの

開発です。

それで、たまたまTwitterを見ていたら、Rocket.rsという新しい

フレームワークを知ったので、早速、Hello Worldを表示する

サンプルプログラムを作ってみます。

[手順]

※前提条件

RocketにはNightly版のRustが必要とQuickstartの冒頭に

書いてあることに注意。

(見落としていたため、stable版で大量のエラーを吐いたw)

1. RustのNightlyの最新をインストールする必要があるので以下

 コマンドを実行。

% rustup default nightly

info: syncing channel updates for 'nightly-x86_64-unknown-linux-gnu'
info: downloading component 'rustc'
51.7 MiB / 51.7 MiB (100 %) 1.5 MiB/s ETA: 0 s
info: downloading component 'rust-std'
71.7 MiB / 71.7 MiB (100 %) 3.1 MiB/s ETA: 0 s
info: downloading component 'cargo'
4.0 MiB / 4.0 MiB (100 %) 1.2 MiB/s ETA: 0 s
info: installing component 'rustc'
info: installing component 'rust-std'
info: installing component 'cargo'
info: default toolchain set to 'nightly-x86_64-unknown-linux-gnu'

 

nightly-x86_64-unknown-linux-gnu installed - rustc 1.15.0-nightly (71c06a56a 2016-12-18)

2. バージョンを確認。

% rustc --version

rustc 1.15.0-nightly (71c06a56a 2016-12-18)  --- 最新であることを確認

3. cargoコマンドでhello-rocketプロジェクトを作成し、hello-rocketディレクト

 へ移動。

% cargo new hello-rocket --bin

     Created binary (application) `hello-rocket` project

% cd hello-rocket

4. Getting Startedにある通りにCargo.toml の[dependencies]にRocketを追加。

[dependencies]
rocket = "0.1.1"
rocket_codegen = "0.1.1"

5. src/main.rs を以下の通りに書き換えて保存。

#![feature(plugin)]
#![plugin(rocket_codegen)]


extern crate rocket;

#[get("/")]
fn index() -> &'static str {
     "Hello, world!"
}

fn main() {
       rocket::ignite().mount("/", routes![index]).launch();
}

6. cargo run で実行すると、4で追加したWebフレームワークの

 rocketと依存ライブラリのインストールが始まる。

% cargo run
Updating registry `https://github.com/rust-lang/crates.io-index`
Downloading rocket_codegen v0.1.1
Downloading rocket v0.1.1
Compiling typeable v0.1.2
Compiling unicode-normalization v0.1.3
Compiling rustc-serialize v0.3.22
Compiling log v0.3.6
Compiling matches v0.1.4
Compiling unicode-bidi v0.2.4
Compiling traitobject v0.0.1
Compiling httparse v1.2.1
Compiling semver v0.1.20
Compiling libc v0.2.18
Compiling mime v0.2.2
Compiling num_cpus v1.2.0
Compiling rustc_version v0.1.7
Compiling idna v0.1.0
Compiling language-tags v0.2.2
Compiling unicase v1.4.0
Compiling hpack v0.2.0
Compiling url v1.2.4
Compiling winapi v0.2.8
Compiling solicit v0.4.4
Compiling winapi-build v0.1.1
Compiling toml v0.2.1
Compiling kernel32-sys v0.2.2
Compiling term v0.4.4
Compiling time v0.1.35
Compiling cookie v0.2.5
Compiling term-painter v0.2.3
Compiling hyper v0.9.14
Compiling rocket v0.1.1
Compiling rocket_codegen v0.1.1
Compiling hello-rocket v0.1.0 (file:///home/haiju/workspace/hello-rocket)
Finished debug [unoptimized + debuginfo] target(s) in 52.51 secs
Running `/home/haiju/workspace/hello-rocket/target/debug/hello-rocket`

Finished debug [unoptimized + debuginfo] target(s) in 52.51 secs
Running `/home/haiju/workspace/hello-rocket/target/debug/hello-rocket`
 🔧 Configured for development.
 => listening: localhost:8000
 => logging: Normal
 🛰 Mounting '/':
 => GET /
 🚀 Rocket has launched from http://localhost:8000...
 GET /:
 => Matched: GET /
 => Outcome: Succcess
 => Response succeeded.

7. ブラウザで http://localhost:8000/ にアクセスし、Hello, World! が表示されて

 いればOK。

f:id:haiju:20161225024748j:plain

一番後発ってこともあるのか?分かりやすいなーって印象。

ただ、Nightlyの最新が必要ってことを除けばだけど。

追っかけてみたいなーって思った。

次はChatアプリとか書いてみたいなー。

[参考サイト]

rocket.rs