てんてー

~Web開発の備忘録~

バブルソートを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);

 

結果

f:id:takahashikareha:20180813141639p:plain

あ、出力は配列じゃなくて文字列です

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 plugin install vagrant-winnfsd

 そして設定反映させますぅ

vagrant reload --provision 

 そしてHomestead.yamlのtoで設定したディレクトリ code/ にプロジェクトをインストールします。

composer create-project --prefer-dist laravel/laravel プロジェクト名 "5.5.*" 

 すると!!

なんということでしょう。

mapに設定したフォルダにもプロジェクトが作られているではありませんか。

匠の技によって、希望を取り戻すことができました。

 

設定でうまくマッピングできているので

http://homestead.test

にアクセスしてWelcomeページ表示もできました。

 

 

ありがとうプラグイン

f:id:takahashikareha:20180626075348p:plain

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画面で表示させるまでの道のりです(^-^)

 

インストールしておくもの

VirtualBox

Vagrant

・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. 初期化する

vagrant init centos 

 ↑centos のところはインスタンス名になるので名前は任意!

 これで作業スペースに Vagrantfile が生成されるはずです!

 

4.起動

 4-1. インスタンス起動

vagrant up

 4-2. 接続

vagrant ssh

 

5.必要なものをOSにインストール

  5-1. ApachePHP

sudo yum install php 

  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で接続する

  http://192.168.33.10/

 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 ではまったこと

VirtualBoxVagrant を使って開発環境をしました。

centOSApachePHPmysql をインストールし、Vagrantfileと同じ階層に適当なファイルを置いてWeb画面で表示されるところまでは難なくできました!が!

 

フレームワークを使ったプロジェクトを置いたら表示されない!!

windowsのxampp環境では表示できたのに)

 

調べてみると、「.htaccess」の設定が使えていない とのことでした。

mod rewrite の設定を有効にする必要があるらしい!

vim /etc/httpd/conf/httpd.conf

コメントアウト # を外す

LoadModule rewrite_module modules/mod_rewrie.so

AllowOverrideを修正する

AllowOverrid None → AllowOverrid All

Apache再起動

service httpd restart

できた!!

4ヶ月前からたまに調べてやっとたどり着いた;;

 

あとmysqliでエラーになったりしましたが、それはPHPのバージョンが古かったのが原因でした。

古いバージョンだと使えないライブラリがあったりするので、せめてサポートされているバージョンを使う必要がありますね><