Git initすると128エラーが登場
dockerのファイル構成をgitで管理したくなりSourceTreeでリポジトリを作成するとエラーコード128のfatal: detected dubious ownership in repository
というエラーが表示されました。他にも細かく表示されていましたが要約すると「君は怪しいな。だって、オーナーが違うもん」ということでした。ソフトウェア特有の問題かもしれないと思い、一度gitを削除してcmdからコマンドを叩いてみましたが再発。ChatGPT先生に聞いても解決には至らない返答。いろいろ調べた結果C > ユーザー > .gitconfig
ファイルのsafeの項目をdirectory = *
に修正することで解決しました。
プログラミングの勉強はなにかやろうとするたびにエラーに当たるので、なかなか先に進まない問題がありますね。
勉強再開
【追記】このDocker-composeは現在使っていません。
久しぶりにプログラミングを再開したんですが何もかもを忘れてしまいました。とりあえずDockerで環境構築するところから始めようとしたわけですがdocker-composeの書き方すら失念。しかし、数年前と違うところはChatGPTの存在。というわけでChatGPT 3.5先生に相談しながらdocker-composeを作りました。
version: "3.8" services: nginx: image: nginx:latest container_name: nginx ports: - "80:80" volumes: - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf - ./laravel-app:/var/www/html depends_on: - php networks: - mynetwork php: build: context: ./php volumes: - ./laravel-app:/var/www/html container_name: php depends_on: - mysql networks: - mynetwork mysql: image: mysql:8.0 container_name: mysql environment: MYSQL_ROOT_PASSWORD: ****** MYSQL_DATABASE: db MYSQL_USER: user MYSQL_PASSWORD: ****** volumes: - ./mysql/data:/var/lib/mysql - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf networks: - mynetwork adminer: image: adminer:latest container_name: adminer ports: - "8080:8080" env_file: - ./adminer/adminer.env networks: - mynetwork networks: mynetwork: driver: bridge
Nginx, PHP, MySQL, adminerを採用しました。phpMyAdminじゃないのは軽いという話を聞いたことと新しいものに触っておきたいという考えからです。adminerはデザインを変更できるので落ち着いたpepa-linha-darkにしました。Dockerfileにはcomporserの利用も考えてpdo_mysql
やgit zlib1g-dev
などを書いおきました。
備忘録のために後日Githubに残しておこうと思います。いくつもエラーが出て転びまくりましたが、とりあえずadminerのSQL管理画面の確認ができたので勉強の環境が作れました。疲れたー
スコープ定義演算子の挙動
前々回の記事で「初学者を悩ませるPHPの演算子と仲良くなろう」を書きました。
このときはスコープ定義演算子である::
はインスタンス化しなくてもメソッドやプロパティにアクセスできると思っていたのですが、検証してみたところ正確にはインスタンス化していない static メソッド
にはアクセスできました。
- インスタンス化していないプロパティ
- インスタンス化していないメソッド
- インスタンス化しているプロパティ
- インスタンス化しているメソッド
- インスタンス化していない static プロパティ
- インスタンス化していない static メソッド
- インスタンス化している static プロパティ
- インスタンス化している static プロパティ
アクセスする場合、上記のパターンがあります。現在はこれらに頭を悩ませているところです。これに加えて public, private, protect があるのでそれぞれどういうときに、どう使うのかを知っておかなくてはならないみたいです。さらにアロー演算子である->
が複数出てくるa->b->c
という書き方にも遭遇したので混乱しています。わからないことだらけです。
動画等では「このメソッドは static で十分なので static をつけます」と説明があるのですが「なぜこのメソッドは static で十分なのか」という説明がないので、プログラミングを理解している人には初学者の気持ちはわからないんだろうなと、ふと感じました。人に教えるというのは難しいものですね。
ここ数日は勉強ができなかったので月曜日からは本腰を入れたいです。