docker環境作成

前提

Windows11
Docker Desktop
PHP/Laravel

手順

1. docker-compose.ymlを書く

version: "x.x"

services:
  web:
    build:
      context: .
      dockerfile: ./web/Dockerfile
    container_name: "web"
    restart: always
    volumes:
      - ./web/php.ini:/usr/local/etc/php/php.ini
      - ../src:/var/www/html/
    ports:
      - 8080:80
    depends_on:
      - mysql
      - mail

  mysql:
    image: mysql:x.x
    restart: always
    container_name: "mysql"
    volumes:
      - ./mysql/data:/var/lib/mysql
    command:
      - --sql-mode=NO_ENGINE_SUBSTITUTION
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=${DB_DATABASE}
      - MYSQL_USER=${DB_USERNAME}
      - MYSQL_PASSWORD=${DB_PASSWORD}

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    container_name: "phpmyadmin"
    volumes:
      - ./phpmyadmin/sessions:/sessions
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mysql
      - PMA_USER=${DB_USERNAME}
      - PMA_PASSWORD=${DB_PASSWORD}
    ports:
      - 4040:80
    depends_on:
      - mysql
  mail:
    image: mailhog/mailhog
    container_name: "mail"
    restart: always
    ports:
      - "8025:8025"

2. docker-composeで実行

cd path-to/
docker-compose up -d

3. コンテナに入る
docker exec -it [コンテナ名] bash

4.コンテナ内でパッケージインストールなど
composer install
php artisan key:generate
php artisan migrate:fresh --seed

Windows7でCentOSをインストール

前提条件
Rubyがインストールされてること。

1. Vagrantインストール
ここ
Download Vagrant - Vagrantからダウンロードしてインストール


2. VirtualBoxインストール
ここDownloads – Oracle VM VirtualBoxからダウンロードしてインストール

3. VirtualBoxにゲストOSをインストール
インストール
urlのところはここA list of base boxes for Vagrant - Vagrantbox.esから目的のOSのURLを取得する。
ここopscode/bento · GitHubからダウンロードしてローカルのパスを指定しても良い

> vagrant box add {title} {url}

C:\dev\Vagrant\box>vagrant box add centos https://github.com/2creatives/vagrant-centos/releases/download/v0.1.0/centos64-x86_64-20131030.box
Downloading box from URL: https://github.com/2creatives/vagrant-centos/releases/download/v0.1.0/centos64-x86_64-20131030.box
Extracting box...ate: 2590k/s, Estimated time remaining: --:--:--)
Successfully added box 'centos' with provider 'virtualbox'!

設定ファイル作成
コマンドを実行したディレクトリに[VagrantFile]という設定ファイルができる

> vagrant init {title}

起動

> vagrant up

sshで接続
…できないのでPuTTYで接続する。

> vagrant ssh

`ssh` executable not found in any directories in the %PATH% variable. Is an
SSH client installed? Try installing Cygwin, MinGW or Git, all of which
contain an SSH client. Or use the PuTTY SSH client with the following
authentication information shown below:

Host: 127.0.0.1
Port: 2222
Username: vagrant
Private key: C:~/.vagrant.d/insecure_private_key

PhoneGapでAndroidアプリを作る

前提

  • Eclipseがインストールされている
  • Android sdkがインストールされている

PhoneGap(cordova)のダウンロード

  1. Apache Cordovaからダウンロードする。

今回ダウンロードしたバージョンは2.9.0。

Eclipseでプロジェクトを作成・設定

  1. ファイル > 新規 > プロジェクト > Andoroidアプリケーション・プロジェクトを

選択する
(以下、適当にウィザードを進めてプロジェクトを作る)
f:id:hryord:20131017162103j:plain

  1. 作成したプロジェクトで、以下のディレクトリを作成する
[project root]/assets/www
  1. cordovaのファイルをプロジェクトにコピー

ダウンロードしたcordovaに入っている以下のファイルをコピー
cordova.js => assets/www
cordova.jar => lib
xml/config.xml => res(フォルダごとコピー)

cordova.jarはlibフォルダを右クリック→ライブラリ構成でライブラリに含まれているか確認しておく

  1. 作成したプロジェクトの src フォルダーにあるメインの Java ファイルを編集

import org.apache.cordova.DroidGap; を追加
クラスの継承元を Activity から DroidGap に変更
  protected→publicに変更
setContentView() の行を super.loadUrl("file:///android_asset/www/index.html"); に置き換え

f:id:hryord:20131017175228j:plain

  1. AndroidManifest.xmlの編集

タグの間に以下のコードをコピー

<supports-screens 
android:largeScreens="true" 
android:normalScreens ="true" 
android:smallScreens="true" 
android:resizeable="true"
android:anyDensity="true" /> 
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
  1. コンテンツのコピーと実行

Androidアプリ化したいコンテンツを[project root]/assets/wwwに入れて実行すれば完成!

HTML5/JavaScriptとPhoneGapで作るiPhoneアプリ開発入門

HTML5/JavaScriptとPhoneGapで作るiPhoneアプリ開発入門

さくらレンタルサーバーにGitをインストールする

Subversionが流行り始めたころにはすぐに飛びついた方だったが、Gitについては全然手が出てなかった。イカン。フットワークは軽い方がいいということで早速インストール。
ここはローカルではなくさくらレンタルサーバーに入れてみる。

  1. 前提

ソースコードディレクトリ:$HOME/local/src
インストールディレクトリ:$HOME/local

  1. wgetソースコードを取得・展開する

$HOME/local/srcに移動して作業。
最新は1.8.4だったので1.8.4を指定して取得する。

%wget http://git-core.googlecode.com/files/git-1.8.4.tar.gz
%tar xvfz git-1.8.4.tar.gz
  1. インストール

解答したソースコードのディレクトリでインストールする。
問題なく終了すれば$HOME/local/binにインストールされる。

% ./configure --enable-pthreads=-pthread --prefix=$HOME/local
% gmake all install
  1. インストールの確認

実行確認。バージョンが表示されればOK。

git --version

入門Git

入門Git

PHPからMySQLにINSERTすると文字化けする

単純にINSERTしてみたら文字化け発生。
まずMySQLの設定を確認してみる。
MySQLのコンソールから以下のコマンドを叩く。

mysql>show variables like "char%";

するとどうでしょう。まったくutf-8になっていませんw

+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | cp932                          |
| character_set_connection | cp932                          |
| character_set_database   | latin1                         |
| character_set_filesystem | binary                         |
| character_set_results    | cp932                          |
| character_set_server     | latin1                         |
| character_set_system     | utf8                           |
| character_sets_dir       | C:\xampp\mysql\share\charsets\ |
+--------------------------+--------------------------------+
<||

これを全部想定文字コードのUTF-8にすれば治るだろうということで
MySQLの設定ファイルの項目を調べてみる。

MySQLの設定ファイルはmy.cnfとmy.iniがあり、しかも場所は色んなパスが指定されている。mysql --helpで場所が表示されるらしい。

で、[http://1000g.5qk.jp/2010/11/04/xampp%E3%81%AEmysql%E3%81%A7%E6%AD%A3%E3%81%97%E3%81%8Futf-8%E3%82%92%E4%BD%BF%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B/:title]を参考に設定。

>||
# MySQL >= 5.5 用の設定
# [client]ブロックに下記の行を追加する
default-character-set=utf8
 
# [mysqld]ブロックに下記の行を追加する
character-set-server=utf8
skip-character-set-client-handshake

さっきのコマンドで文字コードが正しく設定できたか確認。

+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8                           |
| character_set_connection | utf8                           |
| character_set_database   | utf8                           |
| character_set_filesystem | binary                         |
| character_set_results    | utf8                           |
| character_set_server     | utf8                           |
| character_set_system     | utf8                           |
| character_sets_dir       | C:\xampp\mysql\share\charsets\ |
+--------------------------+--------------------------------+

できた!
途中、mysql5.5以降で設定の名前が変わっていてハマった。。

実践マスター PHP+MySQL PHP5対応

実践マスター PHP+MySQL PHP5対応

applyとは

Javascriptにはcallとapplyという特殊な関数があるらしい。
取り敢えずapplyだけメモ。

簡単に言うと
とある関数に「this」と「引数(配列)」を渡して使える

というものです。

他のブログで挙げられていた例がとてもわかりやすかったので以下引用。

1	var obj = {
2	    say: 'Hello'
3	}
4	 
5	function hoge(arg1, arg2){
6	    alert(this.say + ', ' + arg1 + ' and ' + arg2);
7	}
8	 
9	hoge.apply(obj, ['Suzuki', 'Tanaka']); //Hello, Suzuki and Tanaka

よくわかるJavaScriptの教科書

よくわかるJavaScriptの教科書

配列の中から最大値を得る

配列の中から最大値を見つけるっていうのをループとか回さないでできないかなぁ
といろいろ調べてみたところ、ありました。
Math.max.applyを使えば良いみたい。

1	var ary = [3, 2, 5, 4, 1];
2	alert(Math.max.apply(null, ary));

これを実行すると、ダイアログに配列の最大値の「5」が表示されます。

[もう少し詳しく]
Math.maxっていうのは、値を比較して大きいものを返してくれるもので

Math.max(x, y)

と書くと、xとyを比較して大きい方を返します。
で、実は引数は2個だけじゃなくて、Math.max(x, y, z, …)という風に
いくつも指定できる。
配列の内容を比較したいので、applyを使って渡せば
よい、というのが結論。

jQuery逆引きマニュアル Webデザインの現場で役立つ基本と実践

jQuery逆引きマニュアル Webデザインの現場で役立つ基本と実践