読者です 読者をやめる 読者になる 読者になる

楽しいだけで十分です

好きなことを書きます

ターミナルで、shell-init: error retrieving current directory: getcwd: cannot access parent directories: というエラーが出た場合の対処

プログラミング

コマンドが実行できない!となって焦ったエラーですが、原因は大したことないものでした。

原因

カレントディレクトリが存在しないため、発生しているエラーです。

解決方法

存在していることがわかっている、別のディレクトリに移動すれば解決します。

参考

SSHログインで「shell-init: error retrieving current directory」となるのを調べたら意外に時間がかかったという話 - \ay diary

Carbonで、日付をゼロサプレスする

プログラミング

PHPでCarbonを使って、日付を制御しようと思ったのですが、ゼロサプレスの方法が分からなかったのでメモ。

そもそもCarbonって?

PHPの日付操作のライブラリです。
Laravelなどのフレームワークにも取り込まれています。
carbon.nesbot.com

使い方はこの辺が参考になります。
PHPの便利な日時操作ライブラリCarbonで曜日を日本語で表示する | A Small, Good Thing – blog

本題

結論から言うと、ゼロサプレスしたいフォーマットの前に - をつけるだけです。 e.g. 本日の月日をゼロサプレスしたい場合

Carbon::now()->formatLocalized('%-m月%-d日');

簡単ですね。
sprintfなどの書式をわかっている人なら当たり前なんだろうなあと思いながら、僕は知りませんでした。
ネットでも調べた感じなさそうだったので、同じ轍を踏む人がいないように書いておきます。

社内で勉強会を開きました - その後

雑記

以前に書いた通り、先週から勉強会を開いています。 yinm.hatenadiary.jp

今日は第2回目ということで、前回の反省点を踏まえて、改善してみました。
実際に行ったことをメモしておきます。

まとめノートを作る

前回は、1項を読むごとにホワイトボードにまとめを書くという形で行ったのですが、進みが遅いことや、読む範囲の粒度が小さいため内容がまとめにくいといった指摘がありました。
ということで、今回はあらかじめ僕の方でまとめノートを作ってみました。節単位です。
github.com

勉強会では、節単位で読み手を交換して、読み終わるたびに、このまとめノートを僕が説明する形にしてみました。
スピードも上がったし、概ね良さそうでした。
とりあえず、次回も同じ形で進めていこうと思います。
唯一問題は、このノートを作る時間とモチベーションを、保てるかなー?というところでしょうか・・・!

勉強会・読書会に関する記事などを読んだ

世の中ではたくさんの勉強会が開かれているわけなので、そこから何か学べないかなと思って、いくらか記事を読んでみました。
いいなあと思った記事は次のものです。「勉強会って何だろうね?」という根本的な部分を考えられて良かったです。

勉強会を半年運営して気づいた「強烈なリーダーシップで引っ張るのではなく、“場を創って提供する”リーダーシップもある」って気付かされた話-Six Apart ブログ|オウンドメディア運営者のための実践的情報とコミュニティ

まとめ

試行錯誤しながら、のらりくらりやっていきます。いい勉強会にできたらいいな。

MacのHomebrewのアップデートを、cronで自動化する

プログラミング

Macでcronを使って、Homebrewのアップデートを自動化してみました。
作業したことをメモしておきます。
なお、このエントリでは、それぞれの見出しごとに関連しそうな参照リンクを書く形式にしています。

cronの設定前にすること

事前に設定が必要なことがいくつかあります。
この設定をしていないと、cronを登録しても保存されずに、エラーで終了してしまうので、先に設定を済ましておきましょう。

# .zshrcなどシェルの設定ファイル
export EDITOR=vim
" .vimrc
set backupskip=/tmp/*,/private/tmp/*

cronの設定を行う

  • crontabコマンドを使用します(cron tableの略)
  • crontab -eで編集が行えるのですが、タイポによる設定の削除を防ぐために、以下の方法を使うことが推奨です
crontab -l > 任意のパス/crontab    # 現在のcronの設定を、任意のパスに書き出す
vim 任意のパス/crontab             # 上記の書き出したcronを編集
crontab < 任意のパス/crontab       # 編集したcronを、実行するcronに反映する

cronの書式

分 時 日 月 曜日 (実行ユーザー名) cronで実行したいコマンド・スクリプト

ここまでやれば、設定は完了です。
後は設定した時間が来れば、実行されるはず!なのですが、うまく行かなかった人(私です・・・)のために、デバッグ方法や、ハマりそうなポイントを書いておきます。

うまくいかない時は?

おまけ

#!/bin/sh
log_name=任意のログの絶対パス/`date "+%Y%m%d_%H%M%S"`.log

echo 'brew doctor ---------------------------------------------------' >> ${log_name} 2>&1
brew doctor >> ${log_name} 2>&1
if [ $? -ne 0 ]; then
  echo 'brew update ---------------------------------------------------' >> ${log_name} 2>&1
  brew update >> ${log_name} 2>&1
  echo 'brew upgrade --------------------------------------------------' >> ${log_name} 2>&1
  brew upgrade >> ${log_name} 2>&1
  echo 'brew cleanup --------------------------------------------------' >> ${log_name} 2>&1
  brew cleanup >> ${log_name} 2>&1
fi

JavaScriptのArray.lengthプロパティは、インデックスの最大値 + 1を表す

プログラミング

タイトルの通りなのですが、びっくりしました。
配列の要素数を返してくれるプロパティだと思ってたら、違いました。
配列のインデックスが飛び飛びになることはほとんどない(Array.shift()などでも振り直される)ので、気にしないといけない機会はあまりないと思いますが、こういうのもあるんだなあと頭に置いておきます。

参考

d.hatena.ne.jp

社内で勉強会を開きました

雑記

会社の昼休みを使って、Webを支える技術 の勉強会を開いてみました。
以前から勉強会を開催したいと思いつつ、どうやって進行するのがいいのかや、そもそもテーマを何にすればいいのか、人は集まるのかなど不安があってやれてなかったのです。
でも、普段の仕事で使ってる技術から、一段階抽象化したWeb技術を勉強すると、いいことありそうな気がすると思うことが多く、これなら興味持ってくれる人もいそうだよね!ということで、見切り発車感満載でスタートしてみました。

勉強会のやり方としては、輪読しつつ、節単位でホワイトボードに要約や図解をしていくというスタイルでやってみました。
まだ、改善する点も多いのですが、ぼちぼちやって行きたいなあと思います。
楽しみながら、何かをタメになるものが得られる時間にしたいです。

PHPUnitを、Composerでインストールする時のメモ

プログラミング

PHPUnitをComposerでインストールする時に少しハマったのでメモ。
実行環境は次のものです。

やったこと

  • composer.jsonに記述した後に、composer installを実行すると、「PHP extension domがないよ」と言われました。
$ php composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - phpunit/phpunit 5.5.7 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 5.5.6 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 5.5.5 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 5.5.4 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 5.5.3 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 5.5.2 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 5.5.1 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 5.5.0 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - Installation request for phpunit/phpunit 5.5.* -> satisfiable by phpunit/phpunit[5.5.0, 5.5.1, 5.5.2, 5.5.3, 5.5.4, 5.5.5, 5.5.6, 5.5.7].
  • ということで、PHP extension domを追加してあげます。
$ sudo yum -y install php-xml
  • 再び、composer installを実行すると、今度は「zipを解凍するコマンドがないよ」と言われました。
$ php composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 26 installs, 0 updates, 0 removals
    Failed to download sebastian/resource-operations from dist: The zip extension and unzip command are both missing,skipping.
  • ということで、unzipを追加してあげます。
$ sudo yum -y install unzip
  • composer installを実行すると、今度こそPHPUnitのインストールに成功しました!
$ php composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 26 installs, 0 updates, 0 removals
  - Installing sebastian/resource-operations (1.0.0) Downloading: 100%
  - Installing sebastian/recursion-context (1.0.2) Downloading: 100%
  - Installing sebastian/object-enumerator (1.0.0) Downloading: 100%
~ 中略 ~
Writing lock file
Generating autoload files
  • 作業は以上です。月並みながら、エラーメッセージ読むの大事だなあと思いました。

参考

blue-goheimochi.hatenablog.com