img

宇賀神のブログ

色々あってフリーランスのエンジニアをしています。普段触ったりした技術なんかを書いています。

2019/08/5

Dockerでwordpress開発環境構築

こんにちは。宇賀神です。 今日はこのブログのテーマ作成の時に使ったwordpress環境構築についてです。 なぜDocker 今回テーマのコーディングやデザインを知り合いのデザイナーに頼んだのですが、WordPressに触れるのが初だったらしく、環境構築がネックだなーと思いまして。 こんなときのためのDockerだろう、ということで、使うことにしました。 手順 構築の手順としてはこれだけ。さすがDocker。 Docker for Macなどはインストール済みだったようなので、そのあたりはすっ飛ばしています。 docker-compose.ymlの準備 docker-compose up 中々サクッといけそうですね。というわけで、いってみましょう。 docker-compose.ymlの準備 まずやることは docker-compose.yml の準備です。 今回はこのブログに合わせて、以下のように設定しています。なお、wordpressとmysqlは公式イメージを使用するようにしています。 version: '3.3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress ports: - "4306:3306" wordpress: depends_on: - db image: wordpress:5.2.2 ports: - "8000:80" volumes: - "$PWD/wp:/var/www/html" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER:…

2019/06/17

Pawが邪魔してDockerが80番ポートでアクセスできない場合の対処

はじめに お久しぶりです。 先日Dockerを触っていたらちょっと特異性のありそうなエラーに遭遇したので、その対処方を記事にしようかと思います。 何が起きた nginxイメージを元にして webserver というコンテナを起動しようとしたときのことです。 おそらく、入門書的な本ではよくあるコマンドなのではないかと思います。 docker container run --name webserver -d -p 80:80 nginx 期待に胸を踊らせて http://localhost にアクセスしたところ以下の画面が表示されていました。 想定していたものと全然違うものが表示されました。 人間というのは 「Pow is installed」 と突然言われても、 「あ、はい」 以上の反応って出てこないんだなって思いました。 原因 なぜ宇賀神のPCが既知の情報を伝え続けるようなマシンになってしまったのか。 Pawをインストールすると、内包されているrackサーバーが80番ポートを使用するようになってしまいます。それが今回起動したコンテナと競合してしまったようです。 対応 起動コマンドを少しいじって、ポートフォワーディングをするようにしてあげれば大丈夫です。 docker container run --name webserver -d -p 8080:80 nginx そうです、これが見たかった。 まとめ 以上、Dockerいじってみて詰まった点でした。 StackOverflowとか覗くと、「アンインストールしなければならない」的な物騒なこと言われていたりするのですが、もし同じような症状の方はアンインストールする前にこちらを試してみると良いかもです。(せっかくの有料ソフトですし。。) また更新します〜

2019/03/25

Python tutorial(前編)

みなさんおはようございます。 この記事はこちらの続きとなっております。 はじめに というわけで、前回の記事で構築した実行環境を使いながら、Python tutorialを進めてみました。 内容としては比較的経験や知識の多いRubyなどと比べたりしながら、個人的に思ったことなどをまとめています。 ただ、触ってるうちに「これ実際にアプリケーション作る方向に倒した方が良いんじゃね」と思ってしまい、7章以降はざっと流し読みした程度になっています。 タイトルが「前編」となっているのはそのためですが、後編の更新予定は今のところありません。今後にご期待ください。 触りながら思ったことなど ここからは実際に動かしながら思ったことをまとめていきます。 文字列が不変 Pythonでは一度変数に代入された文字列を編集することが出来ないそうです。 >>> word = "Python" >>> word[2] = "a" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment 新たな文字列が必要な場合は新たな変数を用意する必要があるそう。 確かにそういうコードは汚れがちなので、仕様としてはわりと助かるのかな。 長さチェックの関数 長さチェックの関数は len()。しかし word.len() ではなく len(word) >>> word = "Python" >>> word.len() Traceback (most recent call last): File "<stdin>",…

2019/03/24

Pythonの実行環境を構築してみた

みなさんこんばんは。 私事で恐縮ですが、昨日iQOSを失くしてしまい、とても落ち込んでいます。 どこに置いてきてしまったか定かではないのですが、もし見つけた方は宇賀神までご一報をお願い致します。 はじめに 告知も終わったので本題に。 今週は少ししか勉強時間が取れなかったものの、Python tutorialなるものをやってみたので、そのレポートという感じです。 実行環境構築の手順をまとめていたらそれなりのボリュームになってしまったので、実際にやってみての話は別にまとめようと思います。 どうしてPythonやったんすか 自分の中で触ったことのある言語の幅をもう少し広げたいとは前々から思っていまして。 名前をよく聞く言語の中からとりあえずなんとなくで選んでみました。 とはいえPythonに限らず、言語触ってみたシリーズはこれから色々とやっていきたいなぁと思っております。 本編 というわけで、Pythonの実行環境を作るところから始めました。 tutorialの文章を見る限り、バージョンは3.7が推奨されているようだったので、まずはそちらのインストールから。 とりあえずMacにデフォルトで入っているバージョンを確認 $ python --version Python 2.7.10 全然足りん。 というわけで、こちらの記事を参考にインストールを進める。 $ brew install pyenv ----------- 中略 ------------- $ pyenv install 3.7.2 pyenvと言うものがあるらしい。名前からして rbenv みたいなものかと思ったら合ってた。 2行目の pyenv install コマンドを実行したところコケた。 can't decompress data; zlib not available とのこと。エラーメッセージでググってみるとこちらの記事 がヒット。 xcode-selectの最新バージョン(2354)にMojave用のmacOS SDK headerがデフォルトで入っていないのが原因のようです。 とのことです。 下記のコマンドを打って無事解決。 $ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target…

2019/03/14

rubyでサウンドファイル(mp3)を再生する

こんばんは、宇賀神です。 先日gemを作って記事にしたのですが、その時に詰まった事をせっかくなのでまた記事のネタにしようと思います。 何で詰まったんですか pomodorokun という、25分と5分を延々とカウントダウンするgemを作ったのですが、ラスト5秒くらいで「パ、パ、パ、パーン」て感じの時報っぽい音を流したくて。 調べてみてもrubyでサウンド流す系の事例があまり見かけず、まあそりゃ確かにJavaScriptでやるような内容だし 頑張ってやってみた次第です。 やった事 「rubyで鳴らせないなら、shellで鳴らせばいいじゃない」ということで、 afplay コマンドを使うことにしました。コンソールで試したところ、以下のコマンドでmp3ファイル(countdown.mp3)を再生することが出来ました。この時点でOSX以外への対応が不可能になってますが一旦気にしない。 $ afplay countdown.mp3 後はこれを %w なり使ってruby側から実行すればいいと思ったのですが、どうやらrubyのプロセスから単にコマンドを実行するだけではmp3ファイルは開けないらしく、解決するのに結構時間を使ってしまいました。 救世主Open3 上記の問題はOpen3を使うことで解決しました。 リファレンスによるとOpen3とは、 プログラムを実行し、そのプロセスの標準入力・標準出力・ 標準エラー出力にパイプをつなぎます。 とのことです。正直言うと完全には理解できてないです。 なんとなく感覚としては、プログラムから実行環境の標準入/出力を操作できて、その結果を受け取れる、というような感じで捉えてます。← 優しい読者の方、このあたりマサカリあればください。 最終的なコードとしては以下のようになりました。 Open3.popen3 ("afplay #{File.expand_path('../../sound/countdown.mp3', __FILE__)}") Open3.capture3() も試してみたのですが、サウンドの再生中に肝心のカウントダウン自体が止まってしまったので、別プロセスで動かせる Open3.popen3() を使いました。 まとめ 今回の技術的な部分としてはこんな感じです。 今後仕事で使うかと言うと微妙なところですが 普段触らないところに触ったので楽しかったです。 他にもimportメソッドに渡すパスがどこから始まるとかそれなりに学びはあったので、総合的にまあ良かったかなと思います。また何かあれば更新します〜

こんばんは、宇賀神です。 先日gemを作って記事にしたのですが、その時に詰まった事をせっかくなのでまた記事のネタにしようと思います。 何で詰まったんですか pomodorokun という、25分と5分を延々とカウントダウンするgemを作ったのですが、ラスト5秒くらいで「パ、パ、パ、パーン」て感じの時報っぽい音を流したくて。 調べてみてもrubyでサウンド流す系の事例があまり見かけず、まあそりゃ確かにJavaScriptでやるような内容だし 頑張ってやってみた次第です。 やった事 「rubyで鳴らせないなら、shellで鳴らせばいいじゃない」ということで、 afplay コマンドを使うことにしました。コンソールで試したところ、以下のコマンドでmp3ファイル(countdown.mp3)を再生することが出来ました。この時点でOSX以外への対応が不可能になってますが一旦気にしない。 $ afplay countdown.mp3 後はこれを %w なり使ってruby側から実行すればいいと思ったのですが、どうやらrubyのプロセスから単にコマンドを実行するだけではmp3ファイルは開けないらしく、解決するのに結構時間を使ってしまいました。 救世主Open3 上記の問題はOpen3を使うことで解決しました。 リファレンスによるとOpen3とは、 プログラムを実行し、そのプロセスの標準入力・標準出力・ 標準エラー出力にパイプをつなぎます。 とのことです。正直言うと完全には理解できてないです。 なんとなく感覚としては、プログラムから実行環境の標準入/出力を操作できて、その結果を受け取れる、というような感じで捉えてます。← 優しい読者の方、このあたりマサカリあればください。 最終的なコードとしては以下のようになりました。 Open3.popen3 ("afplay #{File.expand_path('../../sound/countdown.mp3', __FILE__)}") Open3.capture3() も試してみたのですが、サウンドの再生中に肝心のカウントダウン自体が止まってしまったので、別プロセスで動かせる Open3.popen3() を使いました。 まとめ 今回の技術的な部分としてはこんな感じです。 今後仕事で使うかと言うと微妙なところですが 普段触らないところに触ったので楽しかったです。 他にもimportメソッドに渡すパスがどこから始まるとかそれなりに学びはあったので、総合的にまあ良かったかなと思います。また何かあれば更新します〜

こんばんは、宇賀神です。 先日gemを作って記事にしたのですが、その時に詰まった事をせっかくなのでまた記事のネタにしようと思います。 何で詰まったんですか pomodorokun という、25分と5分を延々とカウントダウンするgemを作ったのですが、ラスト5秒くらいで「パ、パ、パ、パーン」て感じの時報っぽい音を流したくて。 調べてみてもrubyでサウンド流す系の事例があまり見かけず、まあそりゃ確かにJavaScriptでやるような内容だし 頑張ってやってみた次第です。 やった事 「rubyで鳴らせないなら、shellで鳴らせばいいじゃない」ということで、 afplay コマンドを使うことにしました。コンソールで試したところ、以下のコマンドでmp3ファイル(countdown.mp3)を再生することが出来ました。この時点でOSX以外への対応が不可能になってますが一旦気にしない。 $ afplay countdown.mp3 後はこれを %w なり使ってruby側から実行すればいいと思ったのですが、どうやらrubyのプロセスから単にコマンドを実行するだけではmp3ファイルは開けないらしく、解決するのに結構時間を使ってしまいました。 救世主Open3 上記の問題はOpen3を使うことで解決しました。 リファレンスによるとOpen3とは、 プログラムを実行し、そのプロセスの標準入力・標準出力・ 標準エラー出力にパイプをつなぎます。 とのことです。正直言うと完全には理解できてないです。 なんとなく感覚としては、プログラムから実行環境の標準入/出力を操作できて、その結果を受け取れる、というような感じで捉えてます。← 優しい読者の方、このあたりマサカリあればください。 最終的なコードとしては以下のようになりました。 Open3.popen3 ("afplay #{File.expand_path('../../sound/countdown.mp3', __FILE__)}") Open3.capture3() も試してみたのですが、サウンドの再生中に肝心のカウントダウン自体が止まってしまったので、別プロセスで動かせる Open3.popen3() を使いました。 まとめ 今回の技術的な部分としてはこんな感じです。 今後仕事で使うかと言うと微妙なところですが 普段触らないところに触ったので楽しかったです。 他にもimportメソッドに渡すパスがどこから始まるとかそれなりに学びはあったので、総合的にまあ良かったかなと思います。また何かあれば更新します〜