Advertise with Googlier.com -ANDROIDろいど- プログラム開発入門&情報共有ブログ http://androidroid.info プログラム開発に必要な知識や技術をメインに、JAVAやEclipseなど、ジャンル問わず様々な技術情報を公開していきます。 Fri, 19 Feb 2021 07:56:17 +0000 ja hourly 1 https://wordpress.org/?v=5.9.20 http://androidroid.info/wp-content/uploads/2017/06/cropped-avatar20170608232554-32x32.jpg -ANDROIDろいど- プログラム開発入門&情報共有ブログ http://androidroid.info 32 32 Laravel_composer create-projectでエラー(Permission denied) http://androidroid.info/laravel-composer-err2/ http://androidroid.info/laravel-composer-err2/#respond Fri, 19 Feb 2021 07:48:17 +0000 http://androidroid.info/?p=743 Laravel開発環境の構築でどハマりしましたので情報共有。
(VirtualBox + Vagrant + Homestead + Composer)

vagrant@homestead:~$ cd code/
vagrant@homestead:~/code$ composer create-project --prefer-dist laravel/laravel myapp

Laravelのプロジェクト作成時
「mkdir(): Permission denied」が発生した場合の対処法をご紹介。

Creating a "laravel/laravel" project at "./myapp"
Installing laravel/laravel (v8.5.10)


  [ErrorException]
  mkdir(): Permission denied


create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--ask] [--] [] [] []

mkdir(): Permission denied
このエラーは権限がない場合にでるエラーです。

対象のフォルダに対して権限を付与してあげましょう。

vagrant@homestead:~$ sudo chmod 777 ./code

上記のコマンドは、homestead内のcodeディレクトリに対して、
すべてのユーザーに読み込み書き込み実行権限を与えています。

対応はこれだけです。

再度、composer create-projectコマンドを実行してみます。

vagrant@homestead:~$ composer create-project --prefer-dist laravel/laravel myapp
Creating a "laravel/laravel" project at "./myapp"
Installing laravel/laravel (v8.5.10)
  - Downloading laravel/laravel (v8.5.10)
  - Installing laravel/laravel (v8.5.10): Extracting archive
Created project in /home/vagrant/myapp
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies
Lock file operations: 105 installs, 0 updates, 0 removals
  - Locking asm89/stack-cors (v2.0.2)
  - Locking brick/math (0.9.2)

無事インストール処理が動き出しました。

同じエラーで先に進めない方の参考になれば幸いです。

]]>
http://androidroid.info/laravel-composer-err2/feed/ 0
laravel homesteadをインストール失敗!checksumエラー解決方法 http://androidroid.info/laravel-homestead-err/ http://androidroid.info/laravel-homestead-err/#respond Fri, 12 Feb 2021 16:20:37 +0000 http://androidroid.info/?p=739 laravel homesteadの環境構築で「vagrant up」を実行したところ
checksumがどうのこうのというエラーが出力されて
homesteadのインストールに失敗しました。

$ vagrant up
Bringing machine 'homestead' up with 'virtualbox' provider...
==> homestead: Box 'laravel/homestead' could not be found. Attempting to find and install...
    homestead: Box Provider: virtualbox
    homestead: Box Version: >= 11.0.0, < 12.0.0
==> homestead: Loading metadata for box 'laravel/homestead'
    homestead: URL: https://vagrantcloud.com/laravel/homestead
==> homestead: Adding box 'laravel/homestead' (v11.0.0) for provider: virtualbox
    homestead: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/11.0.0/providers/virtualbox.box
    homestead: Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com
    homestead: Progress: 100% (Rate: 1478k/s, Estimated time remaining: --:--:--    homestead:
    homestead: Calculating and comparing box checksum...
The specified checksum type is not supported by Vagrant: sha512.
Vagrant supports the following checksum types:

md5, sha1, sha256

何が原因でしょうか。。。

The specified checksum type is not supported by Vagrant: sha512.
Vagrant supports the following checksum types:

md5, sha1, sha256

この部分があやしいです。

直訳すると、
「指定されたchecksumの種別はVagrantでサポートされていません:sha512」

色々とググってみたところ、同じ問題でハマってる記事がいくつかヒットしました。
どうもVagrantのバージョンを上げれば解決するようです。
先人の方の知恵をお借りします!

そもそも自分の環境のVagrantはいくつなのでしょうか。

$ vagrant --version
Vagrant 2.2.5

だそうです。

ということで、vagrantのバージョンをあげてみました。
古いバージョンをアンインストール後、新しいバージョンを再インストールしました。

$ vagrant –version
Vagrant 2.2.6

再度「vagrant up」を実行してみます。

$ vagrant up
Bringing machine 'homestead' up with 'virtualbox' provider...
==> homestead: Box 'laravel/homestead' could not be found. Attempting to find and install...
    homestead: Box Provider: virtualbox
    homestead: Box Version: >= 11.0.0, < 12.0.0
==> homestead: Loading metadata for box 'laravel/homestead'
    homestead: URL: https://vagrantcloud.com/laravel/homestead
==> homestead: Adding box 'laravel/homestead' (v11.0.0) for provider: virtualbox
    homestead: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/11.0.0/providers/virtualbox.box
    homestead: Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com
    homestead: Progress: 100% (Rate: 1860k/s, Estimated time remaining: --:--:--    homestead:
    homestead: Calculating and comparing box checksum...
==> homestead: Successfully added box 'laravel/homestead' (v11.0.0) for 'virtualbox'!
==> homestead: Importing base box 'laravel/homestead'...

先に進みだしました。

そして、無事にインストールと起動が完了しました。

同じエラーでハマっている方はvagrantを上げて試してみてください。

]]>
http://androidroid.info/laravel-homestead-err/feed/ 0
C# ラムダ式(Lambda)を解説(基本) http://androidroid.info/csharp-lambda01/ http://androidroid.info/csharp-lambda01/#respond Wed, 20 Jan 2021 15:31:55 +0000 http://androidroid.info/?p=627 C#を学習してたくさんの人が行き詰るラムダ式。
書き方が急に変わったり考え方そのものが違うので、たくさんの人が目を背けてしまいがちですが
理解してしまえば決して難しいものではありません。

それでは早速、
ループ処理を例にラムダ式について解説していきます。

ループ処理のfor、foreach

private List itemList = new List
{
    "AAA","BBB","CCC","DDD","EEE"
};

例として
いくつかの文字列が格納されたListがあり、
Listの要素1つ1つの文字列の長さを格納したリストを作成する
といった処理を実装するとします。

forやforeachではこのような実装になります。

for文

List editedList = new List();
for (int i = 0; i < itemList.Count; i++)
{
    editedList.Add(list[i].Length);
}

foreach文

List editedList = new List();
foreach (string str in list)
{
    editedList.Add(str.Length);
}

これらは皆さんがよく使用するおなじみのforやforeachです。

ラムダ式でループ処理を実装する

では、早速このループ処理をラムダ式に置き換えてみます。
今回はSelectメソッドを使って説明していきます。

まずはラムダ式の前にメソッド引数から

private List itemList = new List
{
    "AAA","BBB","CCC","DDD","EEE"
};

public void Exec()
{
    var editedList = itemList.Select(AddText).;
}

// Selectメソッドに渡すメソッド
private int AddText(string arg)
{
    return arg.Length;
}

上記のコードを見てみると、
Selectメソッドの引数にメソッドそのものを渡しているのが分かるでしょうか。
itemListの型はListなので、
Selectメソッドはリストの要素分、引数で渡したメソッドを実行します。
また、stringしか入らないリストということがジェネリックによって保障されています。
よって、AddTextメソッドの引数はstringとなります。

メソッド引数をラムダ式に置きかえる

メソッドを引数で渡すにしても、1行程度の処理の為にメソッドを作るのは馬鹿らしいですよね。
そんな時、こんな書き方に置き換えることができます。

private void Exec()
{
    var editedList = itemList.Select((string arg) => { return "000_" + arg; });
}

AddTextメソッドで行っていた処理をメソッド内に直接書きます。
これがラムダ式です。
普段よく見るラムダ式はもっとシンプルだけど?って思った方もいらっしゃいますかね。

実は、ラムダ式は様々な記述を省略できます。
実際に省略してみます。

// 何も省略してないラムダ式
var editedList = itemList.Select((string arg) => { return "000_" + arg; });

 ↓

// ジェネリックにより型が保障されているため、引数の型が省略できる
var editedList = itemList.Select((arg) => { return "000_" + arg; });

 ↓

// {} とreturn も省略できる
var editedList = itemList.Select((arg) => "000_" + arg);

 ↓

// 引数のカッコ()も省略できる
var editedList = itemList.Select(arg => "000_" + arg);

ラムダ式の使い方を理解する

先ほどの例で、ラムダ式はメソッドを渡していることと同じだということを説明しました。
同じ考え方でこんなこともできます。

以下は、コレクションのリストをFor文でループさせ、ひとつずつ出力する。
というロジックです。

foreach (string str in itemList )
{
  Console.WriteLine(str);
}

結果:

AAA
BBB
CCC
DDD
EEE

このロジックをLinqに置き換えると以下のようになります。(メソッド渡し)

private void Action01()
{
  list.ForEach(OutputText);
}

private void OutputText(string arg)
{
  Console.WriteLine(arg);
}

さらに、ラムダ式に置き換えます。

private void Action02()
{
  list.ForEach(arg => Console.WriteLine(arg));
}

ForEachの引数に処理そのものを定義します。

ラムダ式まとめ

非常にシンプルなパターンでのサンプルで解説しましたが
なんとなくイメージできたでしょうか。
結局のところ、実際にコーディングでラムダ式を使ってみる。というのが
理解するための一番の近道だと思います。
最初は実装に時間がかかるかもしれませんが、
なぜそう動くのかを考えながら実装すれば徐々に理解できるようになってきます。

]]>
http://androidroid.info/csharp-lambda01/feed/ 0
Laravel環境構築 Homestead-Vagrant(Windows10) http://androidroid.info/laravel-homestead-install/ http://androidroid.info/laravel-homestead-install/#respond Sun, 17 Jan 2021 15:26:32 +0000 http://androidroid.info/?p=680 今回はWindows10でPHP開発でおなじみのLaravel環境を構築します。
VirtualBox、Homestead、Vagrant、Composer
これらを使用して環境を作成していきます。

必要なツールをインストール

前提条件として以下の3つのツールをインストールする必要があります。
Git for winodws
VirtualBox
vagrant

ちなみに今回、このページで環境構築した際の
それぞれのバージョンは以下になります。ご参考まで。
・OS:Windows10 Pro
・Git for winodws (2.30.0.2)
・VirtualBox(5.2.44)
・vagrant(2.2.5)

Homestead環境を作成する

まずはローカル環境にHomesteadの環境を作成していきます。
以下、手順です。

Git Bashを起動します。

Git Bashの起動方法は以下の通り。
windowsスタートメニュー -> Git -> Git Bash

起動したら以下を実行

$ vagrant box add laravel/homestead

「Enter your choice:」が表示されたら、3を入力してEnter

==> box: Loading metadata for box 'laravel/homestead'
    box: URL: https://vagrantcloud.com/laravel/homestead
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) hyperv
2) parallels
3) virtualbox
4) vmware_desktop

Enter your choice:

次にHomesteadとう名前のディレクトリにgitのhomesteadリポジトリを作成します。
以下を実行

$ git clone https://github.com/laravel/homestead.git Homestead

windows10の場合、
Gitのデフォルトホームディレクトリは「C:\Users\ユーザー\」なので
「C:\Users\ユーザー\Homestead」というディレクトリが作成されます。

作成したディレクトリへ移動します。

$ cd ./Homestead

初期化用のシェルを実行します。(Homesteadの設定ファイルなどが作成される)

$ ./init.sh

成功すると以下の文字列が表示されます。

Homestead initialized!

これでhomesteadのセットアップは完了です。

SSH用のカギを作成する

続いて、Git for WindowsのSSH作成機能を利用して
VMに入るためのSSH用の鍵を作成します。

鍵作成用のディレクトリを作成します。

$ mkdir ~/.ssh && cd $_

鍵作成用のコマンドを実行します。

$ ssh-keygen -b 4096

※4096は鍵長の長さ

デフォルトのKey名で問題ないければ何も入力せずにEnter
未入力の場合、デフォルトの「id_rsa」がKey名となる

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/yoshi/.ssh/id_rsa):

任意のパスワードを入力してEnter

Enter passphrase (empty for no passphrase):

パスワードを再入力

Enter passphrase (empty for no passphrase):

成功すると以下のような文字列が表示されます。

Your identification has been saved in XXXXX
Your public key has been saved in XXXXX.pub
The key fingerprint is:
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The key's randomart image is:
+---[RSA 4096]----+
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・
+----[SHA256]-----+

以下のフォルダに行き、鍵のファイルが作成されていることを確認してください。
「C:\Users\ユーザー\.ssh\」
・id_rsa
・id_rsa.pub

これでSSHの鍵作成完了です。

Homestead.yamlを編集する

Homesteadを正常に起動させるためには
開発環境にあわせてHomestead.yamlを編集する必要があります。

「C:\Users\ユーザー\Homestead\Homestead.yaml」をテキストエディタ等で開き
①~④の場所を確認・修正してください。

---
ip: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub ←①鍵ファイルの格納場所、ファイル名を指定

keys:
    - ~/.ssh/id_rsa ←②鍵ファイルの格納場所、ファイル名を指定

folders:
    - map: C:\Users\ユーザ\Laravel ←③ローカルの開発ディレクトリを指定
      to: /home/vagrant/code
      type: "nfs" ←④追加

sites:
    - map: homestead.test
      to: /home/vagrant/code/myapp/public ←⑤myappは後々の作業で作成するプロジェクト名

databases:
    - homestead

features:
    - mariadb: false
    - ohmyzsh: false
    - webdriver: false

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

vagrantを起動する

いよいよvagrantの起動です。

git bashにてHomesteadのディレクトリへ移動し、以下のコマンドで起動します。

$ vagrant up

うまくいけば以下のように起動が始まります。

Bringing machine 'homestead' up with 'virtualbox' provider...
==> homestead: Checking if box 'laravel/homestead' version '10.1.1' is up to date...
==> homestead: Clearing any previously set network interfaces...
==> homestead: Preparing network interfaces based on configuration...
    homestead: Adapter 1: nat
    homestead: Adapter 2: hostonly
==> homestead: Forwarding ports...
    homestead: 80 (guest) => 8000 (host) (adapter 1)
    homestead: 443 (guest) => 44300 (host) (adapter 1)
    homestead: 3306 (guest) => 33060 (host) (adapter 1)

起動には数分かかります。
のんびり待ちましょう。

余談ですが、vagrant upでの起動時に
いくつかのエラーではまりまして。
解決方法をアップしています。

同じようにエラーとなってしまった場合は参考になるかもしれませんので
リンク張っておきます。

Laravel_homestead vagrant upでバージョンエラー(no available version)
vagrant upコマンド実行時に 以下のようなメッセージが表示された場合の 解決策を記載します。 $ vagrant up Bringing machine 'homestead' up with 'virtualbox' provider... ==> homestead: Box 'laravel/homestead' could not be found. Attemp...
Laravel_homestead vagrant upでエラー(bridged or non-hostonly network.)
vagrant upコマンド実行時に 以下のようなメッセージが表示されて起動できなかった場合の 解決策を記載します。 Bringing machine 'homestead' up with 'virtualbox' provider... ==> homestead: Checking if box 'laravel/homestead' version '10.1.1' is ...

laravelのプロジェクトを作成する

仮想環境が立ち上がったら、
vagrant sshコマンドで仮想環境へログインします。

$ vagrant ssh
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-48-generic x86_64)

 _                               _                 _
| |                             | |               | |
| |__   ___  _ __ ___   ___  ___| |_ ___  __ _  __| |
| '_ \ / _ \| '_ ` _ \ / _ \/ __| __/ _ \/ _` |/ _` |
| | | | (_) | | | | | |  __/\__ \ ||  __/ (_| | (_| |
|_| |_|\___/|_| |_| |_|\___||___/\__\___|\__,_|\__,_|

* Homestead v10.17.0, v11.4.0
* Settler v9.7.2 (Ubuntu 18.04)
* Settler v10.1.1 (Ubuntu 20.04)

0 updates can be installed immediately.
0 of these updates are security updates.


Last login: Sat Jan 16 07:00:28 2021 from 10.0.2.2
vagrant@homestead:~$

無事にログインできました。

続いて、laravelのプロジェクトを作成します。

cdコマンドでcodeディレクトリへ移動後、composer create-projectを実行します。

vagrant@homestead:~$ cd code/
vagrant@homestead:~/code$ composer create-project --prefer-dist laravel/laravel myapp

数十秒で作成完了です。
これでプロジェクトが作成されました。

もし、Could not deleteのエラーが発生してしまったら
こちらのページを参考にしてみてください。

Laravel_composer create-projectでエラー(Could not delete)
Laravel開発環境の構築でどハマりしましたので情報共有。 (VirtualBox + Vagrant + Homestead + Composer) vagrant@homestead:~$ cd code/ vagrant@homestead:~/code$ composer create-project --prefer-dist laravel/laravel myapp ...
Laravel_composer create-projectでエラー(Permission denied)
Laravel開発環境の構築でどハマりしましたので情報共有。 (VirtualBox + Vagrant + Homestead + Composer) vagrant@homestead:~$ cd code/ vagrant@homestead:~/code$ composer create-project --prefer-dist laravel/laravel myapp ...

IPアドレス転送設定を行う

続いてIPアドレスの転送設定を行います。
windowsの場合、hostsファイルを編集することで設定可能です。

hostsファイルは以下にあります。
「C:\Windows\System32\drivers\etc\hosts」

hostsファイルをテキストエディタ等で開き、
以下を追加します。

192.168.10.10  homestead.test

IPアドレス、ホスト名ともに、Homestead.yamlで設定した値を設定してください。

ちなみにhostsファイルの編集は管理者権限が必要になります。
管理者権限での編集方法がわからない場合は、googleで調べればすぐ見つかると思います。

デフォルトページを表示してみる

これですべての準備が完了しました。
ブラウザでデフォルトページを表示させてみましょう。

任意のWEBブラウザのURLに「homestead.test」と入力しEnter

無事表示されました。

以上!

]]>
http://androidroid.info/laravel-homestead-install/feed/ 0
Laravel_composer create-projectでエラー(Could not delete) http://androidroid.info/laravel-composer-err/ http://androidroid.info/laravel-composer-err/#respond Sun, 17 Jan 2021 14:49:59 +0000 http://androidroid.info/?p=699 Laravel開発環境の構築でどハマりしましたので情報共有。
(VirtualBox + Vagrant + Homestead + Composer)

vagrant@homestead:~$ cd code/
vagrant@homestead:~/code$ composer create-project --prefer-dist laravel/laravel myapp

Laravelのmyappという名前のプロジェクトを作成したいのですが
なぜか「Could not delete」が発生してプロジェクトが作成できません。

Creating a "laravel/laravel" project at "./myapp"
Installing laravel/laravel (v8.5.8)
  - Installing laravel/laravel (v8.5.8): Extracting archive
    Install of laravel/laravel failed


 [RuntimeException]
  Could not delete /home/vagrant/myapp:


create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--ask] [--] [] [] []

調べてみると様々な解決方法がヒットするが、
どれを試しても一向にエラーは解消せず・・・。

結果、ハマりにハマり解決するのに丸一日かかりました。

そして、肝心の原因はというと

Homestead.yamlの設定が原因でした。

folders:
    - map: C:\Users\ユーザ\Laravel
      to: /home/vagrant/code/myapp ←原因はここ

sites:
    - map: homestead.test
      to: /home/vagrant/code/myapp/public

composerで作成するプロジェクトルートのディレクトリを
foldersのmapで指定すると
「Could not delete」のエラーが発生してしまうようです。

以下のように再設定することで解決しました。

folders:
    - map: C:\Users\yoshi\Laravel
      to: /home/vagrant/code/

sites:
    - map: homestead.test
      to: /home/vagrant/code/myapp/public

同じエラーで先に進めない方の参考になれば幸いです。

]]>
http://androidroid.info/laravel-composer-err/feed/ 0