プログラミングいちねんせい

プログラミング歴ゼロの初心者がもがくサイトです

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_mysqlgit zlib1g-devなどを書いおきました。

備忘録のために後日Githubに残しておこうと思います。いくつもエラーが出て転びまくりましたが、とりあえずadminerのSQL管理画面の確認ができたので勉強の環境が作れました。疲れたー

スコープ定義演算子の挙動

前々回の記事で「初学者を悩ませるPHPの演算子と仲良くなろう」を書きました。

javacurry.hatenablog.jp

このときはスコープ定義演算子である::インスタンス化しなくてもメソッドやプロパティにアクセスできると思っていたのですが、検証してみたところ正確にはインスタンス化していない static メソッドにはアクセスできました。

アクセスする場合、上記のパターンがあります。現在はこれらに頭を悩ませているところです。これに加えて public, private, protect があるのでそれぞれどういうときに、どう使うのかを知っておかなくてはならないみたいです。さらにアロー演算子である->が複数出てくるa->b->cという書き方にも遭遇したので混乱しています。わからないことだらけです。

動画等では「このメソッドは static で十分なので static をつけます」と説明があるのですが「なぜこのメソッドは static で十分なのか」という説明がないので、プログラミングを理解している人には初学者の気持ちはわからないんだろうなと、ふと感じました。人に教えるというのは難しいものですね。

ここ数日は勉強ができなかったので月曜日からは本腰を入れたいです。