ハッピーメモメモ

私的備忘録

【コツ】環境構築

・どうでも困ったら同じ環境の方にファイルをみせてもらって、ちがうところを探す

・wsl上のフォルダを扱うとき、圧縮・解凍はLinuxでやった方が早い!

・最終的にどんなコマンドを使ったかすべてメモを残しておくと後でめちゃくちゃ役立つ

・launch.jsonファイル  デバッグの役に立つ

Windows側、Ubuntu側、docker側、全てのターミナルからバージョンがあっているかなど確認するとよい

wgetコマンド活躍してた気がする

・ユーザー  (Ubuntu)monaka…自分自身  (Docker)www-data(ダボダボ)…PHP使用権あり?

・Laravel、storageフォルダ…ファイルの読み書き保存などを行う。この権限に自分のユーザーを割り当てていないとエラーになる。権限は777でよさそう(次にやる前にもう一度調べたい)

【Linux】【Ubuntu】Apacheをインストール

Apache

1.インストール

「apt」と「apt-get」があるが、「apt」の方がモダンなコマンドなのでこちらを使うといい

sudo apt update
sudo apt install apache2

2.ファイアウォールの調整

ufwアプリケーションプロファイルを一覧表示

sudo ufw app list

実行結果

Output
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

設定したトラフィックを許可しながら、最も制限の厳しいプロファイルを有効にすることをお勧めします。現時点ではまだ、サーバーにSSLを設定していないため、ポート80のトラフィックのみを許可すればよいでしょう。

sudo ufw allow 'Apache'

変更の確認

sudo ufw status

<つまづいたところ>

「状態: 非アクティブ」になる場合は、ufwを有効化する

ufw enable

Webサーバーの確認

sudo systemctl status apache2

理想の結果

Output
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-04-23 22:36:30 UTC; 20h ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 29435 (apache2)
      Tasks: 55 (limit: 1137)
     Memory: 8.0M
     CGroup: /system.slice/apache2.service
             ├─29435 /usr/sbin/apache2 -k start
             ├─29437 /usr/sbin/apache2 -k start
             └─29438 /usr/sbin/apache2 -k start

<つまづいたところ>

  • systemd が PID1 で動作していない
$ systemctl
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

参考サイト

https://snowsystem.net/other/windows/wsl2-ubuntu-systemctl/#

  • genieインストールが必要
monaka@DESKTOP-5QEHRDB:~/genie$ genie -s
genie: コマンドが見つかりません

最初mac向けの記事を読んでいて、makeコマンドがない!!とあたふた笑

参考サイト

https://qiita.com/sakai00kou/items/0b401faf6dd72ad63d87


3.Webサーバーの確認

systemd initシステムでサービスが稼働中であることを確認

sudo systemctl status apache2

結果:OKな場合の例

Output
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-04-23 22:36:30 UTC; 20h ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 29435 (apache2)
      Tasks: 55 (limit: 1137)
     Memory: 8.0M
     CGroup: /system.slice/apache2.service
             ├─29435 /usr/sbin/apache2 -k start
             ├─29437 /usr/sbin/apache2 -k start
             └─29438 /usr/sbin/apache2 -k start

サーバーのIPアドレスを取得

hostname -I

インターネット上の別の場所から見たパブリックIPアドレスの確認方法

curl -4 icanhazip.com

ブラウザにアクセス

http:// さっき確認したサーバーのIPアドレスを入力

続き:

参考サイト

https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04-ja


ついでにLaravelのインストールについて

Apacheの設定、権限変更まではしたんだけど、nanoエディタでlaravel.confの設定をいじるのはやってない

参考サイト

https://ubunlog.com/ja/laravel-framework-php-ubuntu/#Instalar_Laravel

【勉🌱】【JavaScript】コンストラクタ関数とは?

 

コンストラクタ関数(p80,176)

・new式を使用して新規オブジェクト(インスタンス)を作成する関数

【JavaScript】 コンストラクターとは?関数とは違うのか?

 

・クラスの中のコンストラクタとは違う

JavaScript におけるコンストラクタ関数とは、プロトタイプオブジェクト
を継承してオブジェクトインスタンスを生成するための独立した関数のこと

 

オブジェクト指向(p78)

・クラスベース

・プロトタイプベース

 

クラスベース

・クラスは実体を持たない抽象概念

・例)Java

 

プロトタイプベース

・プロトタイプは実体のあるオブジェクト

・そもそもオブジェクトの抽象としてのクラスが存在しない

・オブジェクトは直接、他のオブジェクトを継承する

・継承元になったオブジェクトのことを『プロトタイプ』と呼ぶ

・プロトタイプへ直にメソッドを追加したり削除したりできる上に、その変更がすでに生成済みのインスタンスにも即時反映される

・例)JavaScript

 

参照:りあクト!【1.言語・環境編】

 

オブジェクトをつくる「もと」なのか?

クラスだったり関数だったりするけど、実体があるものを、JavaScriptにはクラスがないから「コンストラクタ関数」と呼ぶのかも?

class XXX { … }   

function XXX( ) { … }

→ new XXX    

 

クラスからオブジェクトがつくれるのはいいんだけど、関数からオブジェクトが生まれてくるのが気持ち悪い・・・

 

抽象クラス、インターフェース

JavaScriptにはない!

TypeScriptには導入されている

 

【JavaScript】関数型プログラミング

コールバック

・関数の引数として渡される関数のこと

例)関数の引数として関数をわたす

const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(arr.map((n) => n * 2));

 

高級関数✨

・関数の引数として関数を渡したり、戻り値として関数を返すことができる

例)関数の戻り値として関数を返す

const greeter = (target) => {
const sayHello = () => {
console.log(`Hi, ${target}!`);
};
return sayHello;
};
const greet = greeter('Step Jun');
greet(); // Hi, Step Jun!

 

※返しているもの

 〇関数そのもの

 ×関数の実行結果  return sayHello();にすると実行結果undefindが返る

 

 

 

 

 

参照:りあクト!【1.言語・環境編】

【JavaScript】…

■スプレッド構文

できること

・配列式や文字列などの反復可能オブジェクトを、0 個以上の引数 (関数呼び出しの場合) や要素 (配列リテラルの場合) を期待された場所で展開する

・オブジェクト式を、0 個以上のキーと値の組 (オブジェクトリテラルの場合) を期待された場所で展開する

使用例:他のオブジェクトにそのオブジェクトの中身を全て追加する(参照渡しではなく、コピーが作成できる!)

const person ={
    name:'Max',
    age:'30',
}
const copiedPerson = {
    ...person,
}

→キーバリューペアが1度すべて取り出されて、演算子の使われた場所に展開される!

参照: スプレッド構文 - JavaScript | MDN