2016年3月26日土曜日

Windows10で使えるいいターミナルソフトがないか探してTerminalsを選んだ

このエントリーをはてなブックマークに追加
普段はMacを使っていてて、家のマシンもすべてMacなのだがWindowsにも触れておかないと
「僕、普段MacなんでWindowsわからないです(キリッ」
という周りから見たらなんかよくわからない事になりそうなのでWindowsも使うようにしている。

ただWindowsでSSHを使う際に正直PuttyとかTeraTermとか飽きてきたので何かいいソフトないかなぁと探していた時に見つけたのがTerminalsというソフトだった。


自分で感じたよくわからない理由なんだけど、なんか”今現れた!”っぽいし、リモートデスクトップも使えるしShellプロンプトも使えるし、PingやnslookupやはたまたWhoisまで使えるというインフラツールが山盛り入っているのが魅力的だったので、使ってみることにした。

インストールして手元のFedora23サーバにSSHしてみようとしたら
Sorry, Terminal was unable to connect to the remote machine.
server does not support diffie-hellman-group1-sha1 for key exchange
と出て接続できなかった。

FedoraのSSHサーバがdiffie-hellman-group1-sha1をサポートしていなからなので、Fedoraのsshd_configにdiffie-hellman-group1-sha1をサポートしてやるように足してやればいいだけなんだけど、それもそれでサーバ側のセキュリティ強度さげてるだけなのでクライアント側でできないか調べてみた。

http://terminals.codeplex.com/discussions/650183

・・・今のところPuttyだけしか対応できてないそうだ。。本当かよ。

という訳で取りあえずsshd_config側に足してあげて対応するようにしたら接続することができた。


たしかにputtyでは簡単に接続できたけどね!

<追記>

というか、これだけじゃなくて見た目派手だけどSSHのポートフォワードが設定項目にあるのにDisableになってて使えなかったり、いろいろとしょぼいので違うものを探すことにしました(涙

2016年3月25日金曜日

Eclipse Chaを使ってみる

このエントリーをはてなブックマークに追加
この前、Eclipse ChaというクラウドIDEがリリースされたというので試してみることにした。

ちょっと前からローカルのPCでできることをクラウドへ移行させたいと思ってて、デスクトップの移行だとかいろいろ試してみている。これもそのうちの1つの選択肢になればいいなと。この前VDIにしたLubuntuが一番ディスク容量があるので、少し意図とは違うけども、これに入れてみる。

事前にJavaのインストールは必須なので入れておこう。

ダウンロードしてきたソースを解凍する。
$ tar -xvzf eclipse-che-4.0.0-RC11.tar.gz
起動させる。
$ cd eclipse-che-4.0.0-RC11/ 
$ ./bin/che.sh run

dockerが起動できない場合はメッセージを見れば大体わかるはず。多くはdockerグループの権限の問題だと思う。

起動に成功すればあとはブラウザからhttp://[IP Address]:8080/へアクセスすると、こんな画面で起動中になる。


・・・

・・・

メモリ1GBだと5分ぐらい待ったけど、これ以上進まなかった。。。
やはりVDIで作ったところには無理があったか。。。

もう少しスペックのある環境で試してみたいと思う。

【追記】

スペックかなり上げたVMで動かしたらちゃんと動きました。

2016年3月22日火曜日

LubuntuにDockerインストールした

このエントリーをはてなブックマークに追加
使い物になるのか試したかったのでLubuntuにDocker入れてみた。ここ見ただけだけどメモっとく。

Install Docker

$ curl -fsSL https://get.docker.com/ | sh
apparmor is enabled in the kernel and apparmor utils were already installed
+ sh -c apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.KxiBSCIzyE --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyring /etc/apt/trusted.gpg.d/alessandro-strada_ubuntu_ppa.gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
gpg: 鍵2C52609Dをhkpからサーバーp80.pool.sks-keyservers.netに要求
gpg: 鍵2C52609D: 公開鍵“Docker Release Tool (releasedocker) ”を読み込みました
gpg: 処理数の合計: 1
gpg:               読込み: 1  (RSA: 1)
+ sh -c mkdir -p /etc/apt/sources.list.d
+ dpkg --print-architecture
+ sh -c echo deb [arch=amd64] https://apt.dockerproject.org/repo ubuntu-wily main > /etc/apt/sources.list.d/docker.list
+ sh -c sleep 3; apt-get update; apt-get install -y -q docker-engine
ヒット http://jp.archive.ubuntu.com wily InRelease
取得:1 http://jp.archive.ubuntu.com wily-updates InRelease [65.9 kB]
ヒット http://jp.archive.ubuntu.com wily-backports InRelease
無視 http://dl.google.com stable InRelease
ヒット http://jp.archive.ubuntu.com wily/main Sources
ヒット http://jp.archive.ubuntu.com wily/restricted Sources
ヒット http://jp.archive.ubuntu.com wily/universe Sources
ヒット http://jp.archive.ubuntu.com wily/multiverse Sources
ヒット http://jp.archive.ubuntu.com wily/main amd64 Packages
ヒット http://jp.archive.ubuntu.com wily/restricted amd64 Packages
ヒット http://jp.archive.ubuntu.com wily/universe amd64 Packages
ヒット http://jp.archive.ubuntu.com wily/multiverse amd64 Packages
ヒット http://jp.archive.ubuntu.com wily/main i386 Packages
ヒット http://jp.archive.ubuntu.com wily/restricted i386 Packages
ヒット http://jp.archive.ubuntu.com wily/universe i386 Packages
ヒット http://dl.google.com stable Release.gpg
ヒット http://jp.archive.ubuntu.com wily/multiverse i386 Packages
ヒット http://jp.archive.ubuntu.com wily/main Translation-ja
ヒット http://jp.archive.ubuntu.com wily/main Translation-en
ヒット http://jp.archive.ubuntu.com wily/multiverse Translation-ja
ヒット http://jp.archive.ubuntu.com wily/multiverse Translation-en
ヒット http://jp.archive.ubuntu.com wily/restricted Translation-ja
ヒット http://jp.archive.ubuntu.com wily/restricted Translation-en
ヒット http://jp.archive.ubuntu.com wily/universe Translation-ja
ヒット http://jp.archive.ubuntu.com wily/universe Translation-en
取得:2 https://apt.dockerproject.org ubuntu-wily InRelease [454 B]
無視 https://apt.dockerproject.org ubuntu-wily InRelease
取得:3 https://apt.dockerproject.org ubuntu-wily Release.gpg [801 B]
取得:4 http://security.ubuntu.com wily-security InRelease [65.9 kB]
ヒット https://apt.dockerproject.org ubuntu-wily Release
取得:5 http://jp.archive.ubuntu.com wily-updates/main Sources [69.2 kB]
取得:6 http://jp.archive.ubuntu.com wily-updates/restricted Sources [3,741 B]
取得:7 http://jp.archive.ubuntu.com wily-updates/universe Sources [21.1 kB]
ヒット https://apt.dockerproject.org ubuntu-wily/main amd64 Packages
取得:8 http://jp.archive.ubuntu.com wily-updates/multiverse Sources [3,199 B]
取得:9 http://jp.archive.ubuntu.com wily-updates/main amd64 Packages [197 kB]
取得:10 http://jp.archive.ubuntu.com wily-updates/restricted amd64 Packages [13.3 kB]
取得:11 http://jp.archive.ubuntu.com wily-updates/universe amd64 Packages [87.6 kB]
ヒット http://dl.google.com stable Release
取得:12 http://jp.archive.ubuntu.com wily-updates/multiverse amd64 Packages [6,247 B]
ヒット http://ppa.launchpad.net wily InRelease
取得:13 http://jp.archive.ubuntu.com wily-updates/main i386 Packages [194 kB]
取得:14 http://jp.archive.ubuntu.com wily-updates/restricted i386 Packages [13.4 kB]
取得:15 http://jp.archive.ubuntu.com wily-updates/universe i386 Packages [85.0 kB]
取得:16 http://jp.archive.ubuntu.com wily-updates/multiverse i386 Packages [6,678 B]
取得:17 http://jp.archive.ubuntu.com wily-updates/main Translation-en [90.1 kB]
取得:18 https://apt.dockerproject.org ubuntu-wily/main Translation-ja_JP [454 B]
取得:19 http://jp.archive.ubuntu.com wily-updates/multiverse Translation-en [3,156 B]
取得:20 http://jp.archive.ubuntu.com wily-updates/restricted Translation-en [3,024 B]
取得:21 http://jp.archive.ubuntu.com wily-updates/universe Translation-en [51.0 kB]
ヒット http://jp.archive.ubuntu.com wily-backports/main Sources
ヒット http://jp.archive.ubuntu.com wily-backports/restricted Sources
ヒット http://jp.archive.ubuntu.com wily-backports/universe Sources
ヒット http://jp.archive.ubuntu.com wily-backports/multiverse Sources
ヒット http://jp.archive.ubuntu.com wily-backports/main amd64 Packages
ヒット http://jp.archive.ubuntu.com wily-backports/restricted amd64 Packages
ヒット http://jp.archive.ubuntu.com wily-backports/universe amd64 Packages
ヒット http://jp.archive.ubuntu.com wily-backports/multiverse amd64 Packages
ヒット http://dl.google.com stable/main amd64 Packages
ヒット http://jp.archive.ubuntu.com wily-backports/main i386 Packages
ヒット http://jp.archive.ubuntu.com wily-backports/restricted i386 Packages
ヒット http://jp.archive.ubuntu.com wily-backports/universe i386 Packages
ヒット http://jp.archive.ubuntu.com wily-backports/multiverse i386 Packages
ヒット http://jp.archive.ubuntu.com wily-backports/main Translation-en
ヒット http://ppa.launchpad.net wily/main amd64 Packages
ヒット http://jp.archive.ubuntu.com wily-backports/multiverse Translation-en
ヒット http://jp.archive.ubuntu.com wily-backports/restricted Translation-en
ヒット http://jp.archive.ubuntu.com wily-backports/universe Translation-en
取得:22 http://security.ubuntu.com wily-security/main Sources [41.3 kB]
取得:23 https://apt.dockerproject.org ubuntu-wily/main Translation-ja [454 B]
ヒット http://ppa.launchpad.net wily/main i386 Packages
取得:24 http://security.ubuntu.com wily-security/restricted Sources [2,854 B]
ヒット http://ppa.launchpad.net wily/main Translation-en
取得:25 http://security.ubuntu.com wily-security/universe Sources [10.8 kB]
取得:26 https://apt.dockerproject.org ubuntu-wily/main Translation-en [454 B]
取得:27 http://security.ubuntu.com wily-security/multiverse Sources [2,788 B]
取得:28 http://security.ubuntu.com wily-security/main amd64 Packages [133 kB]
取得:29 https://apt.dockerproject.org ubuntu-wily/main Translation-ja_JP [454 B]
取得:30 https://apt.dockerproject.org ubuntu-wily/main Translation-ja [454 B]
取得:31 https://apt.dockerproject.org ubuntu-wily/main Translation-en [454 B]
取得:32 https://apt.dockerproject.org ubuntu-wily/main Translation-ja_JP [454 B]
取得:33 http://security.ubuntu.com wily-security/restricted amd64 Packages [10.9 kB]
取得:34 http://security.ubuntu.com wily-security/universe amd64 Packages [49.3 kB]
取得:35 http://security.ubuntu.com wily-security/multiverse amd64 Packages [6,247 B]
取得:36 https://apt.dockerproject.org ubuntu-wily/main Translation-ja [454 B]
取得:37 http://security.ubuntu.com wily-security/main i386 Packages [130 kB]
取得:38 https://apt.dockerproject.org ubuntu-wily/main Translation-en [454 B]
取得:39 https://apt.dockerproject.org ubuntu-wily/main Translation-ja_JP [454 B]
取得:40 http://security.ubuntu.com wily-security/restricted i386 Packages [10.8 kB]
取得:41 https://apt.dockerproject.org ubuntu-wily/main Translation-ja [454 B]
取得:42 http://security.ubuntu.com wily-security/universe i386 Packages [49.3 kB]
取得:43 https://apt.dockerproject.org ubuntu-wily/main Translation-en [454 B]
取得:44 http://security.ubuntu.com wily-security/multiverse i386 Packages [6,443 B]
取得:45 http://security.ubuntu.com wily-security/main Translation-en [65.6 kB]
取得:46 https://apt.dockerproject.org ubuntu-wily/main Translation-ja_JP [454 B]
無視 https://apt.dockerproject.org ubuntu-wily/main Translation-ja_JP
取得:47 https://apt.dockerproject.org ubuntu-wily/main Translation-ja [454 B]
取得:48 http://security.ubuntu.com wily-security/multiverse Translation-en [2,806 B]
無視 https://apt.dockerproject.org ubuntu-wily/main Translation-ja
取得:49 http://security.ubuntu.com wily-security/restricted Translation-en [2,666 B]
取得:50 https://apt.dockerproject.org ubuntu-wily/main Translation-en [454 B]
無視 https://apt.dockerproject.org ubuntu-wily/main Translation-en
取得:51 http://security.ubuntu.com wily-security/universe Translation-en [32.3 kB]
無視 http://dl.google.com stable/main Translation-ja_JP
無視 http://dl.google.com stable/main Translation-ja
無視 http://dl.google.com stable/main Translation-en
1,537 kB を 7秒 で取得しました (218 kB/s)
パッケージリストを読み込んでいます... 完了
パッケージリストを読み込んでいます...
依存関係ツリーを作成しています...
状態情報を読み取っています...
以下の追加パッケージがインストールされます:
  aufs-tools cgroupfs-mount git git-man liberror-perl
提案パッケージ:
  git-daemon-run git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki
  git-svn
推奨パッケージ:
  yubico-piv-tool
以下のパッケージが新たにインストールされます:
  aufs-tools cgroupfs-mount docker-engine git git-man liberror-perl
アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 1 個。
12.7 MB のアーカイブを取得する必要があります。
この操作後に追加で 68.7 MB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu/ wily/universe aufs-tools amd64 1:3.2+20130722-1.1 [92.3 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ wily/universe cgroupfs-mount all 1.2 [4,970 B]
取得:3 http://jp.archive.ubuntu.com/ubuntu/ wily/main liberror-perl all 0.17-1.1 [21.1 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu/ wily-updates/main git-man all 1:2.5.0-1ubuntu0.1 [728 kB]
取得:5 http://jp.archive.ubuntu.com/ubuntu/ wily-updates/main git amd64 1:2.5.0-1ubuntu0.1 [3,009 kB]
取得:6 https://apt.dockerproject.org/repo/ ubuntu-wily/main docker-engine amd64 1.10.3-0~wily [8,834 kB]
12.7 MB を 1秒 で取得しました (9,082 kB/s)
以前に未選択のパッケージ aufs-tools を選択しています。
(データベースを読み込んでいます ... 現在 121037 個のファイルとディレクトリがインストールされています。)
.../aufs-tools_1%3a3.2+20130722-1.1_amd64.deb を展開する準備をしています ...
aufs-tools (1:3.2+20130722-1.1) を展開しています...
以前に未選択のパッケージ cgroupfs-mount を選択しています。
.../cgroupfs-mount_1.2_all.deb を展開する準備をしています ...
cgroupfs-mount (1.2) を展開しています...
以前に未選択のパッケージ docker-engine を選択しています。
.../docker-engine_1.10.3-0~wily_amd64.deb を展開する準備をしています ...
docker-engine (1.10.3-0~wily) を展開しています...
以前に未選択のパッケージ liberror-perl を選択しています。
.../liberror-perl_0.17-1.1_all.deb を展開する準備をしています ...
liberror-perl (0.17-1.1) を展開しています...
以前に未選択のパッケージ git-man を選択しています。
.../git-man_1%3a2.5.0-1ubuntu0.1_all.deb を展開する準備をしています ...
git-man (1:2.5.0-1ubuntu0.1) を展開しています...
以前に未選択のパッケージ git を選択しています。
.../git_1%3a2.5.0-1ubuntu0.1_amd64.deb を展開する準備をしています ...
git (1:2.5.0-1ubuntu0.1) を展開しています...
man-db (2.7.4-1) のトリガを処理しています ...
ureadahead (0.100.0-19) のトリガを処理しています ...
systemd (225-1ubuntu9.1) のトリガを処理しています ...
aufs-tools (1:3.2+20130722-1.1) を設定しています ...
cgroupfs-mount (1.2) を設定しています ...
docker-engine (1.10.3-0~wily) を設定しています ...
liberror-perl (0.17-1.1) を設定しています ...
git-man (1:2.5.0-1ubuntu0.1) を設定しています ...
git (1:2.5.0-1ubuntu0.1) を設定しています ...
libc-bin (2.21-0ubuntu4.1) のトリガを処理しています ...
systemd (225-1ubuntu9.1) のトリガを処理しています ...
ureadahead (0.100.0-19) のトリガを処理しています ...
+ sh -c docker version
Client:
 Version:      1.10.3
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   20f81dd
 Built:        Thu Mar 10 15:59:07 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.10.3
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   20f81dd
 Built:        Thu Mar 10 15:59:07 2016
 OS/Arch:      linux/amd64

If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

  sudo usermod -aG docker your-user

Remember that you will have to log out and back in for this to take effect!

さて動くか。

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
03f4658f8b78: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7
Status: Downloaded newer image for hello-world:latest

Hello from Docker.
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker Hub account:
 https://hub.docker.com

For more examples and ideas, visit:
 https://docs.docker.com/userguide/

2016年3月20日日曜日

LubuntuにGoogleDriveをマウントする

このエントリーをはてなブックマークに追加
この前VDIにしたLubuntuはHDDが100GBあるんだけど、ファイルの共有とかもしたいのでGoogle Driveをマウントして使えないか調べてみた。

やっぱり同じように考える人もいるみたいで、Google Driveとファイル同期はさせたくないけどディスクとして使いたいという感じ。
このエントリを参考にさせていただいた。

LINUXでGOOGLEドライブを使えるようにしてみたのでメモ残しておく

google-drive-ocamlfuseというパッケージを利用し、Google Driveを仮想ディスクとして認識させることができる。

早速、google-drive-ocamlfuseを使うためにUbuntuのリポジトリ用に提供されているPPAを登録し、パッケージをインストールする。
$ add-apt-repository ppa:alessandro-strada/ppa
$ apt-get update
$ apt-get install google-drive-ocamlfuse
インストールしたパッケージをデスクトップ上のターミナルで実行する。
$ google-drive-ocamlfuse
すると、ブラウザが開きGoogleの認証画面になるのでアカウントを入力しログインする。
ログインが無事終了するとこのような画面が表示される。
ここでブラウザを閉じる。

また適当な場所にマウント先になるディレクトリを作成しマウントしてみる。
$ cd ドキュメント
$ mkdir GoogleDrive
$ google-drive-ocamlfuse GoogleDrive/
これでマウントができたので、GoogleDriveの中のファイルをローカルにコピーしてみる。
$ cp -ip GoogleDrive/image1.JPG ~
きちんとコピーできた。
アンマウントする時はこう。
$  fusermount -u GoogleDrive/
これで便利なると思うんだけど、毎回マウントするのが面倒くさいので起動時にマウントするようにしておくとなお便利かな。~/.bashrcあたりに書いといたらいいんじゃないかと。



2016年3月18日金曜日

僕はLaravelを使う事にした(3):RoutingからViewまで

このエントリーをはてなブックマークに追加
シリーズものだったりするのでこれまでのエントリを並べておく。


Routing

RutingとはアクセスしてきたURLとHTTPメソッドに対して実行するコントローラがクロージャを記載する。これはapp/Http/routes.phpにコーディングする。チュートリアルにある例をそのままもってくるとこんな感じ。

use App\Task;
use Illuminate\Http\Request;

/**
* 全タスク表示
*/
Route::get('/', function () {
//
});

/**
* 新タスク追加
*/
Route::post('/task', function (Request $request) {
//
});

/**
* 既存タスク削除
*/
Route::delete('/task/{id}', function ($id) {
//
});

Route::の後がHTTPメソッドになっていて、第1引数にURLを指定しているのがわかる。第2引数はクロージャになってる。

チュートリアルの内容的には全タスクを表示だとかなんだとか書いているけども”/”にアクセスされた時の挙動としてViewを表示した時の処理を足す。
/**
 * 全タスク表示
 */
Route::get('/', function () {
 // resourcse/views配下のtasksテンプレートを表示させる
 return view('tasks');
});
ここで指定したtasksというViewをresources/views配下に作っていく。

View

ViewもRailsやSymfonyと同じでページ共通部分(ヘッダー、フッター、ナビゲーションなど)を共通化できるlayoutという概念をもっており、その中で各ページで異なる部分は各ページのviewで担うようになっている。

layoutで使用するViewはresources/views/layoutsに置かれる。ここでつくるのはapp.blade.phpになる。わかりやすくするためにこんな感じで作ってみた。



layoutだよ
 
@yield('content')
body> 


tasks.blade.phpresources/viewsに置く。

@extendで指定したlayouts.applayouts/app.blade.phpを指定し、@section〜@endsectionまでの間が@yield('content')に挿入される。
@extends('layouts.app')

@section('content')
tasks.blade.phpの部分だよ
@endsection

これでサイト上で確認してみよう。http://IP Address/test1/でアクセスするとこのように見えた!

2016年3月13日日曜日

Lubuntuのターミナルが使いにくいのでguakeをインストールした

このエントリーをはてなブックマークに追加
Lubuntuのターミナルソフトがあまりいけてないなぁという柔らかい理由で、なんかいいの探してたらGuakeとかいうやつがMacのiTermに似て良さそうだったのでインストールしてみた。

デフォルトのUXTermはこんな感じ。


そこでインストール。

$ apt-get install guake

こんな感じで上に張り付く。F12で出したりしまえたりは便利かも。


2016年3月10日木曜日

僕はLaravelを使う事にした(2):チュートリアルをやってDB周りになじむ

このエントリーをはてなブックマークに追加
さてLaravelをインストールしてみたものの使い方はSymfonyをwrapしているので、似たようなものと思っているけど実際のところは分からないので用意されているチュートリアルをやってみる事にした。内容すっごい分かりにくいけど。


DBのテーブルを作成する。

SymfonyやRailsと同じようにMigrationを行ってデータベース管理をする。tasksテーブルを作成するためのMigrationの雛形を作成する。
$ php artisan make:migration create_tasks_table --create=tasks
Created Migration: 2016_03_10_084136_create_tasks_table
artisanの使用方法についてはこんな感じ。
$ php artisan make:migration <Migration File Name> --create=<Table Name>
これを実行するとProject/database/migrations配下に2016_03_10_084136_create_tasks_table.phpというようなファイルが作成される。中身はこんな感じ。
increments('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('tasks');
    }
}
レコードのIDとタイムスタンプのカラムがデフォルトで設定されているので、これにタスク名を格納するためのカラムを追加で設定する。こんな感じ。ハイライト部分が追記した部分。
public function up()
    {
        Schema::create('tasks', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->timestamps();
        });
    }
このMigrationを実行する前に。やっておく事が2つ。
  • データベースの作成
  • .envとconfig/database.phpへのデータベース設定
今回はMySQLを利用し、データベースは'Laravel_tutorial'として、mysqlに対して事前に作成しておく。

データベース設定はユーザはめんどくさいのでrootを使った。.envとconfig/database.phpに両方設定しておく必要があるが、.envは開発用、.envに設定がない場合はconfig/database.phpの値が利用される。.envに設定されている値がなければconfig配下の設定ファイルの値が利用される。
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=Laravel_tutorial
DB_USERNAME=root
DB_PASSWORD=password

'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'Laravel_tutorial'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', 'password'),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],
これが終わったらようやくMigrateできる。
php artisan migrate
Migration table created successfully.
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrated: 2016_03_10_084136_create_tasks_table
MySQLでデータベースLaravel_tutorialにtasksテーブルが出来ているかみてみる。
mysql> show tables;
+----------------------------+
| Tables_in_Laravel_tutorial |
+----------------------------+
| migrations                 |
| password_resets            |
| tasks                      |
| users                      |
+----------------------------+
4 rows in set (0.00 sec)

mysql> desc tasks;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255)     | NO   |     | NULL    |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
4 rows in set (0.15 sec)
出来ているのを確認したらテーブルtasksへアクセスするためのモデルTaskを作成する。
$ php artisan make:model Task
Model created successfully.
テーブル名は複数形、モデルは単数形という暗黙のルールがあるので明示的にtasksテーブルを指定せずともTaskというモデルはtasksテーブルを参照するモデルがapp配下に作成される。
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Task extends Model
{
    //
}
疲れてきた。

僕はLaravelを使う事にした(1):導入〜確認まで

このエントリーをはてなブックマークに追加
ずっとPHPのフレームワークはSymfonyを使っていたんだけれど、そろそろ新しいイケてるやつも出てきてるんじゃないかということで調べてみるとPHPフレームワークおすすめ一覧【10選】2015年⇒2016年へ向けて。という記事に当たり、その中からLaravelを試してみようと思ったので、導入〜確認まで。


Composerのインストール

Laravelでは依存関係の解決にComposerを使っているそうなので事前にインストールしておく。

Download Pageから1.0.0-beta1をダウンロードし、/usr/local/bin配下にcomposerという名前でリネームして移動させる。
$ wget https://getcomposer.org/download/1.0.0-beta1/composer.phar
$ mv composer.phar /usr/local/bin/composer
最後、コマンドとして実行するためにパーミッションを付与する。
$ chmod +x /usr/local/bin/composer

Laravelのインストール

これは簡単。先ほどインストールしたcomposerコマンドを叩くだけ。
$ composer global require "laravel/installer=~1.1"
Changed current directory to /root/.config/composer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing symfony/process (v3.0.3)
Downloading: 100%

- Installing symfony/polyfill-mbstring (v1.1.1)
Downloading: 100%

- Installing symfony/console (v3.0.3)
Downloading: 100%

- Installing guzzlehttp/promises (1.1.0)
Downloading: 100%

- Installing psr/http-message (1.0)
Downloading: 100%

- Installing guzzlehttp/psr7 (1.2.3)
Downloading: 100%

- Installing guzzlehttp/guzzle (6.1.1)
Downloading: 100%

- Installing laravel/installer (v1.3.1)
Downloading: 100%

symfony/console suggests installing symfony/event-dispatcher ()
symfony/console suggests installing psr/log (For using the console logger)
Writing lock file
Generating autoload files
最後に~/.composer/vendor/binにPATHを通しておく。

Laravelを利用したProjectの作成

これも簡単。Projectを作りたいディレクトリでLaravelのコマンドを実行する。今回は作成されたProject配下のpublicへDocumentRootにシンボリックリンクを作成したいので、その場合DocumentRootと同列のディレクトリにProjectを作成する。何かもっといい方法がありそうだけど。。。

参考:http://stackoverflow.com/questions/30301573/laravel-symbolic-links-without-losing-prefix
$ cd /usr/local/apache2
$ laravel new test1
$ ln -s ../test1/public test1
実行する前にstorageディレクトリにパーミッションを付与する。
chmod -R o+w storage

確認

URLにアクセスする。


できた、できた。

2016年3月3日木曜日

MacからSSHトンネリングでRDPする

このエントリーをはてなブックマークに追加
さて、さくらVPSにLubuntu Descktopを入れてVDI環境を作ったでRDPできるようにしたはいいものの、こいつもグローバルに画面が見えているのであればSSHを鍵認証にした意味がない。なので、RDP自身もSecureに利用するためにSSHのトンネリングを利用して接続できるように変更してみた。

WindowsだとputtyでSSH tunnelが作れるみたいだけど、MacにはputtyがないのでターミナルからコマンドでSSH tunnelを作成する。
ssh -L [any local Port]:localhost:3389 [username]@[sakura vps IP] -i ~/.ssh/[secretkey Name]

-L で指定するのはMacからRDPしたい時に指定するPort番号と、そのあとはSSH接続したサーバが接続しにいくhostとPort番号になる

MacのRemote Desktop Clientが指定するのはlocalhost:13389になる。この接続の中で利用するlocalhostは2つの意味がある。
Remote Desktop Clientのlocalhost:Macのlocalhost
SSHコマンドのlocalhost:サーバ側がフォワードにいくサーバとしてのlocalhost


あとはRDP側の接続をlocalhostからしか受け付けないようにする。/etc/xrdp/xrdp.iniの[globals]セクションに下記の指定を加える。
address=127.0.0.1
そのあとxrdpのサービスを再起動する。
$sudo service xrdp restart

これでSSH tunnelを確立した後でないとRDPできないようになった。これでリモート接続に関しては一安心。。。

2016年3月2日水曜日

さくらVPSにLubuntu Descktopを入れてVDI環境を作った

このエントリーをはてなブックマークに追加
家の外でモバイルで作業する時にはノートPCを持っていくことが多いんだけれど、いつも家にあるMacの3台のどれをもっていくかで悩んでいた。本来であればiPadで全部用事すませたいところなんだけど、なかなかかゆいところに手が届かなかったりするので。。。

家にあるMacは割と特徴がそれぞれ。
  1. MacBook Pro 13インチ (Retina, 13-inch, Late 2013
    • DDR3 1600MHz 8GB
    • Corei5 2.4Ghz
    • SSD 256GB
    • 1.57kg
  2. MacBook Pro 13インチ (13-inch, Mid 2012)
    • DDR3 1600MHz 16GB
    • Corei5 2.5Ghz
    • SSD 500GB(換装済み)
    • 2.06kg
    • Windows10がBootCampで入っている。
  3. MacBook Air 11インチ (11-inch, Mid 2012)
    • DDR3 1600MHz 4GB
    • Corei5 1.7Ghz
    • SSD 64GB
    • 1.08kg

一番、性能もいいのは②、画面がRetinaでないのが残念。一番重量は重い。①はRetinaで画面もきれいながら重量もそこまでないけど、持ち歩くと腰痛持ちにはちょっと荷が重い。。。

そこで目標を③のMacBook Airに絞った、ただしハード的な制約は割とあってSSDとメモリが少ない。特にSSDが少ないので、それを補うために仮想デスクトップを用意してシンクライアントっぽく利用できればと思って、さくらのVPSに軽量LinuxのLubutu-15-10 DesktopをさくらのVPSにインストールしてみた。


Debiun系さわるのは久しぶりなので少し勘を取り戻しながらやる。
以下、インストールしていったもの。


[Google Chrome]
デフォルトでブラウザはFirefoxが入ってるのだけど拡張機能とか使い慣れているChromeが良かったので

[sysv-rc-conf]
単純にRedhat系のchkconfigみたいなのが良かっただけ。

[SSH]
基本的にデスクトップ用途なのでデフォルトでは入っていない。それでもいいんだけれど何かあったときは必要だろうと思うのでインストール。ただしGlobalIPで接続することになるのでパスワード認証なし、Rootログインなし、鍵認証は必ずしておく。さすがにIPベースで縛るのはきびしいし。

[XRDP]
デスクトップにリモート接続するために導入。VNCより使い勝手がよさそう。

IDCFクラウドでUbuntu MATE 14.10とxrdpを使うを参考にさせていただいた。

割と使いやすい。でもメモリが1GBなのであまり重い処理はできないな。。。