バブルソートをPHPでやってみる
sort.php
<?php
/*
* bubble sort
*/
$sauce = $argv;
$cut_number = 0;$check_with = null;
echo to_sort($sauce, $cut_number, $check_with);function to_sort($sauce, $cut_number, $check_with) {
$count = count($sauce);if ($cut_number < $count - 1) {
$value = $sauce[$cut_number];
$next_value = $sauce[$cut_number + 1];
if ($value > $next_value) {$sauce[$cut_number] = $next_value;
$sauce[$cut_number + 1] = $value;
$check_with = 1;
}
}
if ($cut_number === $count) {if (isset($check_with)) {
$cut_number = 0;
$check_with = null;
return to_sort($sauce, $cut_number, $check_with);}
return implode($sauce);
}
$cut_number = $cut_number + 1;
return to_sort($sauce, $cut_number, $check_with);}
このブログ、コード載せるの相応しくないな
群馬の山奥生活でやることがないので、配列をバブルソートのアルゴリズムで昇順にソートするプログラムをPHPで書いてみました。
コマンドプロンプトで以下のように入力して実行すると、ソート結果が出力されます。
sort.php 引数1 引数2 引数3...
半角スペースで区切って数字を入力すれば配列になります。
→ array(引数1, 引数2, 引数3);
結果
あ、出力は配列じゃなくて文字列です
HomesteadのディレクトリとWindowsフォルダをマウントする
やっぱりすんなりいきませんね☆
環境
Windows10
Homestead 7.7.0
Homestead.yamlなかみ
folders:
- map: C:/Users/ユーザ名/Desktop/home_dev/src/Homestead/code/
to: /home/vagrant/code/
type: "nfs"
sites:
- map: homestead.test
to: /home/vagrant/code/portal/public
これ私の設定ファイルのなかみです!
type: "nfs" を書かないとWeb画面でプロジェクト表示できませんでした!
そして、Windowsではこの"nfs"をサポートされていないから同期できないんだとか。
ってことで、プラグイン投入!!
そして設定反映させますぅ
vagrant reload --provision
そしてHomestead.yamlのtoで設定したディレクトリ code/ にプロジェクトをインストールします。
composer create-project --prefer-dist laravel/laravel プロジェクト名 "5.5.*"
すると!!
なんということでしょう。
mapに設定したフォルダにもプロジェクトが作られているではありませんか。
匠の技によって、希望を取り戻すことができました。
設定でうまくマッピングできているので
にアクセスしてWelcomeページ表示もできました。
ありがとうプラグイン
Homesteadでvagrant起動させるまで
以下の環境を構築したくてHomesteadをさくっと使う!
Laravel5.5
PHP7.1
躓いたのでメモ(^-^)
とりあえず起動まで!!
事前に準備するもの
Git
VirtualBox (5.2.12)
Vagrant (2.1.1)
バージョンが古いと起動できなかったりするので、私は最新を入れました!
Let's Try
1.作業したいフォルダでGit Bashを立ち上げる
2.Box作成!以下のコマンドを打つ
vagrant box add laravel/homestead
何を使うか聞かれるので 2)virtualbox を選択
3.プロジェクトフォルダを作る
mkdir src
cd src
git clone https://github.com/laravel/homestead.git Homestead
cd Homestead
git checkout v7.7.0
4.設定ファイル(Homestead.yaml)を生成
bash init.sh
5. SSH接続の鍵作成
ssh-keygen
6.Homestead.yaml 編集
folders:
- map: ~/code/プロジェクト
to: /home/vagrant/code/プロジェクト
type: "nfs"sites:
- map: homestead.test
to: /home/vagrant/code/プロジェクト/public
mapはwindowsのpath、toはVagrantのpathですね
自分の環境に合わせて修正します
7. Vagrant 起動!
vagrant up
ここで起動できずに 何時間も経ちました。ちん
やったこと
★プラグインの互換性を保つためのコマンドを打つ
vagrant plugin repair
★ 使っていないVMを削除する
vagrant global-status --prune
★ちゃんと消せたか確認
vagrant box list
★個別で削除
vagrant box remove
あと、VirtualBox VMs フォルダに同じ名前のファイルがあるとvagrant起動できない!!
ので、手動で削除しました~削除削除削除ぉ(キラ)
仕上げに
★hostsを書き換えるためGit Bashを管理者権限でたちあげ
→Git Bashを右クリック・管理者権限で実行 そして
vagrant up
これでいけました!!!!
この後は、vagrant ssh でログインして念願のlaravel5.5をインストールする流れですね^^
composer create-project --prefer-dist laravel/laravel プロジェクト "5.5.*"
おわり
VirtualBox+Vagrant 開発環境構築
centOSの環境を作ってWeb画面で表示させるまでの道のりです(^-^)
インストールしておくもの
・Git
1.作業フォルダを作成
Vagrantファイルを作るためのフォルダを作成します。作業する度にここを開くことになります。
例)C:\Users\my_dev
2.ターミナルを開く
2-1. 1の作業フォルダで右クリック
2-2. Git Bash Here をクリック
2-3. そのフォルダのコマンド画面が開きます
3.準備
3-1. Boxダウンロード(時間かかる)
vagrant box add centos https://github.com/vezzoni/vagrant-vboxes/releases/download/0.0.1/centos-7-x86_64.box
3-2. 初期化する
↑centos のところはインスタンス名になるので名前は任意!
これで作業スペースに Vagrantfile が生成されるはずです!
4.起動
4-1. インスタンス起動
vagrant up
4-2. 接続
5.必要なものをOSにインストール
→phpとhttd(依存関係)がインストールされる(バージョン指定の方法は省略)
5-1-1. httpdを起動
sudo systemctl start httpd.service
5-1-2. 次回以降立ち上げたら自動で起動するように設定
sudo systemctl enable httpd.service
5-1-3. DocumentRootを空っぽにしておく
sudo rm -rf /var/www/html
5-1-4. シンボリックリンクを設定
sudo ln -fs /vagrant /var/www/html
6. Web画面で表示してみる
6-1. Vagrantfileを編集
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "public_network"
→この2行のコメントアウトを外す(#を削除)
6-2. Vagrantfileと同じ階層にてきとうなファイルを置く
→/vagrantディレクトリとVagrantfileがあるディレクトリはマウントしている
index.html
Heloo World
6-3. Webで接続する
6-4. 表示されるはず!
7.番外編
Apacheが起動しないとき、下記コマンドで確認!!
sudo systemctl status httpd.service -l
MySQLが使えるようにする
sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
sudo yum -y install mysql-community-server
sudo systemctl enable mysqld.service
sudo systemctl start mysqld.service
ログイン
mysql -u root -p
以上です!
VirtualBox+Vagrant+FuelPHP ではまったこと
VirtualBox+Vagrant を使って開発環境をしました。
centOS、Apache、PHP、mysql をインストールし、Vagrantfileと同じ階層に適当なファイルを置いてWeb画面で表示されるところまでは難なくできました!が!
フレームワークを使ったプロジェクトを置いたら表示されない!!
(windowsのxampp環境では表示できたのに)
調べてみると、「.htaccess」の設定が使えていない とのことでした。
mod rewrite の設定を有効にする必要があるらしい!
コメントアウト # を外す
LoadModule rewrite_module modules/mod_rewrie.so
AllowOverrideを修正する
AllowOverrid None → AllowOverrid All
Apache再起動
service httpd restart
できた!!
4ヶ月前からたまに調べてやっとたどり着いた;;
あとmysqliでエラーになったりしましたが、それはPHPのバージョンが古かったのが原因でした。
古いバージョンだと使えないライブラリがあったりするので、せめてサポートされているバージョンを使う必要がありますね><