MacBook Pro 2016 13インチのキーボードを掃除した

10分くらいで対応できた。

対象

  • MacBook Pro (13-inch, 2016, Four Thunderbolt 3 Ports)
    • キーボード修理プログラム実施済み

現象

  • Qのキーが鈍い
  • ←キーが鈍い

方法

必要なもの

  • テレホンカードくらいの薄くて硬めのカード

手順

参考サイトが詳しい。保証が切れているから自前で対応したが、保証がある人はジーニアスバーに持ち込んだほうが良い。

  1. カードキーの上側の隙間に差し込む。
  2. ゆっくり斜めに傾けて上部左右の引っ掛けからキーを外す。その際は弱い音でカチッ、カチッと音がする。
  3. 上側を外した後、キーを下側にずらし下側の引っ掛けも外す。
  4. 掃除する。
  5. 掃除後に下側からはめていく。

経緯

ガリガリ君を袋から開けた際に一部がキーボードにこぼれた。 キーの周りにガリガリ君が入り込みキー押下がねちょねちょするようになった。

キーボードの不具合が良くニュースに上がるので「またかー?」と思ったけど完全に自分のせいだった。

参考サイト

ポートを使用中のプロセスを特定する

MacのDockerで80番ポートを使おうとしたら使用中だった。試しにlocalhostにアクセスしたら It works! なる表示が出た。どうもapacheが建っているみたいだ。 使用していたMacは複数人に渡って受け継がれてきたもので誰かがapacheを動かしていてもおかしくない。

80番ポートを使用しているプロセスを表示

$ sudo lsof -i:80 | grep LISTEN
httpd      110     root    4u  IPv6 0x****************      0t0  TCP *:http (LISTEN)
httpd      374     _www    4u  IPv6 0x****************      0t0  TCP *:http (LISTEN)
httpd     1470     _www    4u  IPv6 0x****************      0t0  TCP *:http (LISTEN)
httpd     1471     _www    4u  IPv6 0x****************      0t0  TCP *:http (LISTEN)
httpd     1472     _www    4u  IPv6 0x****************      0t0  TCP *:http (LISTEN)

やはりhttpdが使っている。

httpdのプロセスを確認

$ ps -ax | grep httpd
  110 ??         0:00.46 /usr/sbin/httpd -D FOREGROUND
  374 ??         0:00.03 /usr/sbin/httpd -D FOREGROUND
 1470 ??         0:00.00 /usr/sbin/httpd -D FOREGROUND
 1471 ??         0:00.00 /usr/sbin/httpd -D FOREGROUND
 1472 ??         0:00.01 /usr/sbin/httpd -D FOREGROUND
 1671 ttys001    0:00.00 grep httpd

/usr/sbin/httpd、どうもMac標準のapacheが動いているみたい。

自動起動の設定の確認と解除

確認

$ sudo launchctl list | grep httpd
110    0  org.apache.httpd

解除

$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

参考

weblabo.oscasierra.net

Docker で Laravel の開発環境を作りたい 3 PhpStormでデバッグできるまで

以下の続き vtorica.hatenablog.com

Dockerfile 前回からの改良

  • xdebugのバージョン指定
    • PECLPHPのバージョンに対応するモジュールのバージョンを取得するわけではないため明示する
  • docker-php-ext-enableの実行
    • extentionがインストールされたフルパスを取得して、conf.d/ にdocker-php-ext-xdebug.ini を作成してくれる
  • docker-php-ext-xdebug.iniへリモートデバッグの設定を追記する

参考: https://github.com/docker-library/docs/blob/master/php/README.md

# 元となるイメージを指定
FROM php:7.2-apache

# イメージを作る際に実行するコマンド
RUN apt-get update
RUN apt-get install -y vim

# php.iniが無いため、コピーして作成する
RUN cp /usr/local/etc/php/php.ini-development /usr/local/etc/php/php.ini

# xdebugをインストールする
RUN pecl install xdebug-2.6.1 \
    && docker-php-ext-enable xdebug
RUN echo xdebug.remote_enable=1 >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo xdebug.remote_autostart=1 >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo xdebug.remote_host=192.168.0.202 >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini  # ホストのIPを設定
RUN echo xdebug.remote_log=/tmp/xdebug.log >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

PhpStormでデバッグ

  • PhpStorm上の電話アイコンを押してデバッグを開始する (メニューからはRun -> Start Listening for PHP Debug Connections)
  • ブラウザでPHPファイルにアクセスする
  • XdebugとPhpStormが接続される

次は

  • composerのインストール
  • Laravelに必要なextentionの確認とインストール

Docker で Laravel の開発環境を作りたい 2 Dockerfile化

下の続き vtorica.hatenablog.com

Dockerfileの作成

  • Vimのインストール
  • php.iniの作成
  • xdebugのインストール
# 元となるイメージを指定
FROM php:7.2-apache

# イメージを作る際に実行するコマンド
RUN apt-get update
RUN apt-get install -y vim

# php.iniが無いため、コピーして作成する
RUN cp /usr/local/etc/php/php.ini-development /usr/local/etc/php/php.ini

# xdebugをインストールする
RUN pecl install xdebug

Dockerfileをもとにイメージ・コンテナの作成

$ docker build -t hogehoge . # カレントディレクトリのDockerfileを元にイメージを作成
$ docker run -d -p 80:80 --name myapp -v $(pwd):/var/www/html hogehoge # 実行

Docker で Laravel の開発環境を作りたい

魔法のように見えるDocker・・・を学習して Laravel の開発環境を作っていきたい

最終的に作りたい開発環境

  • Linux
  • Apache
  • PHP 7.2
  • MySQL 5.7
  • Laravel 5.5
  • ローカルからコンテナのファイルいじりたい
  • ローカルのPHP開発環境からデバッグしたい
  • ローカルのMySQLクライアントからコンテナのMySQLへアクセスしたい

環境

ホスト

  • macOS 10.14 Mojave
  • Docker 18.09

とりあえずコピペから

  • Apache
  • PHP 7.2
  • ローカルの80番ポートをコンテナの80ポートへフォワード
  • ローカルのカレントディレクトリをドキュメントルートにマウント
$ docker run -d -p 80:80 --name myapp -v $(pwd):/var/www/html php:7.2-apache
  • phpinfo()などのファイルを置いて動作確認

後片付け

$ docker stop myapp # コンテナ停止、その後
$ docker rm myapp # コンテナ削除

コマンドの意味

  • Docker Hubからphp:7.2-apacheのイメージを取得
  • myappというコンテナを作成
  • コンテナをバックグラウンドで起動
  • ホストの80ポートをコンテナの80ポートに接続する
  • ホストのカレントディレクトリをコンテナの /var/www/htmlにマウントする
$ docker \
    run # コマンドを新しいコンテナで実行
    -d   # コンテナをバックグラウンドで実行、コンテナIDを出力する
    -p 80:80 # コンテナのポートをホストに公開する。ホスト:コンテナ。
    -v $(pwd):/var/www/html # ホストのディレクトリをコンテナのディレクトリにマウントする。ホスト:コンテナ。$(pwd)はシェルのコマンド置換で現在のディレクトリとして展開される
    php:7.2-apache # イメージを指定

参考

IIS7 PHP(FastCGI)でphp.iniの変更を反映する

結論

  • サイトが使用しているアプリケーションプールのリサイクルを行う

なぜ即時反映されないか

  • FastCGIで動くため、php-cgi.exeがプロセスに常駐する
  • そのためphp.iniを変更しても読み込まれない
  • アプリケーションプールを停止するとphp-cgi.exeも停止する
    • サイトを停止してもアプリケーションプールは停止しない

Laravel 5.5 手動でデプロイする (Lolipop マネージドクラウド)

以下の続き vtorica.hatenablog.com

環境

ローカル

テストサーバー

2018年末まで無料で使えるLolipop マネージドクラウドを使用した。 PHPのバージョンは異なる。

ローカルでの作業

テストサーバー用の.envファイルを作成する

$ cp .env.example .env.staging

テストサーバー用にAPP_KEYを生成する

$ php artisan key:generate

テストサーバー用にDB接続設定を変更する

vtorica.hatenablog.com 参照

ここまでの修正をgitでcommitしておく

$ git init
$ git add .
$ git commit -m "initial"

リポジトリアーカイブしてテストサーバーへコピーする

アーカイブ

$ git archive HEAD > Sample.tar

テストサーバーへコピー

SCPでコピー

ファイル・ディレクトリ構成

$ pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/|  /g'
/var/www
|--.bash_history
|--Sample.tar
|--html

展開

$ tar xvf Sample.tar
$ rm Sample tar
$ mv public/* html
$ mv public/.htacess html # ドットファイルは通常 mv * で移動できない
$ rm -rf public

ディレクトリ構成

$ pwd;find . -type d | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/|  /g'
/var/www
|--app
|  |--Console
|  |--Exceptions
|  |--Http
|  |  |--Controllers
|  |  |  |--Auth
|  |  |--Middleware
|  |--Providers
|--bootstrap
|  |--cache
|--config
|--database
|  |--factories
|  |--migrations
|  |--seeds
|--html
|  |--css
|  |--js
|--resources
|  |--assets
|  |  |--js
|  |  |  |--components
|  |  |--sass
|  |--lang
|  |  |--en
|  |--views
|  |  |--auth
|  |  |  |--passwords
|  |  |--layouts
|--routes
|--storage
|  |--app
|  |  |--public
|  |--framework
|  |  |--cache
|  |  |--sessions
|  |  |--testing
|  |  |--views
|  |--logs
|--tests
|  |--Feature
|  |--Unit

.env.staging ファイルをリネーム

$ mv .env.staging .env

composerをインストール

  • /var/www/bin/ ディレクトリを作成して、そこにインストールする
$ mkdir bin
$ cd bin
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('sha384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"

composer install

  • /var/www/ で実施する
$ php bin/composer.phar install

migrate

$ php artisan migrate

動作を確認する

  • 確認して終了