<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>PHP on ゲンゾウ用ポストイット</title><link>https://genzouw.com/entry/category/php/</link><description>Recent content in PHP on ゲンゾウ用ポストイット</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Wed, 12 Oct 2022 07:40:21 +0900</lastBuildDate><atom:link href="https://genzouw.com/entry/category/php/index.xml" rel="self" type="application/rss+xml"/><item><title>シェルにも使える！nodemon を使ってコードに変更があった場合にホットリロード(自動再起動)させる</title><link>https://genzouw.com/entry/2021/04/09/084541/2536/</link><pubDate>Fri, 09 Apr 2021 08:45:41 +0900</pubDate><guid>https://genzouw.com/entry/2021/04/09/084541/2536/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;Node.js でアプリケーション開発をしている際に、コード変更が行われたら自動的に再起動したいと思いました。&#10;ちょうど GraphQL を使ってアプリケーションを開発していたのですが、 GraphQL のスキーマ変更は（ &lt;strong&gt;Apollo Server&lt;/strong&gt; の) 再起動を行わないと変更が反映されません。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://nodemon.io/"&gt;nodemon&lt;/a&gt; というツールを使うことで簡単に実現できました。&lt;/p&gt;&#10;&lt;h2 id="作業環境"&gt;作業環境&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ node --version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;v15.12.0&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="nodemon-ってなに"&gt;「nodemon」 ってなに？&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;2021-04-09 現在で 1500 万を超えるプロジェクトで利用されているツール&lt;/li&gt;&#10;&lt;li&gt;ソースコードの変更を監視している&lt;/li&gt;&#10;&lt;li&gt;変更があったら自動定期にサーバプロセスを再起動してくれる&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="nodemon-の使い方は"&gt;「nodemon」 の使い方は？&lt;/h2&gt;&#10;&lt;p&gt;とても簡単です。&#10;&lt;code&gt;node&lt;/code&gt; コマンドの代わりに &lt;code&gt;nodemon&lt;/code&gt; コマンドを使います。ただそれだけ。&#10;それだけで、コードの変更を検知したら自動的に再起動してくれます。&lt;/p&gt;&#10;&lt;h2 id="nodemon-コマンドの特徴"&gt;「nodemon」 コマンドの特徴&lt;/h2&gt;&#10;&lt;p&gt;ほぼこれを使えば困ることがないぐらい、機能豊富です。&#10;特徴を上げてみます。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;アプリケーションを自動的に再起動してくれます&lt;/li&gt;&#10;&lt;li&gt;いくつかの拡張子に該当するファイルを自動的に探して監視してくれます&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;.js&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;.mjs&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;.coffee&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;.litcoffee&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;.json&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;デフォルト挙動では &lt;strong&gt;&lt;code&gt;node&lt;/code&gt; コマンド + 監視機能&lt;/strong&gt; として動作しますが、 &lt;strong&gt;&lt;code&gt;python&lt;/code&gt; コマンド + 監視機能&lt;/strong&gt; や、 &lt;code&gt;ruby&lt;/code&gt; コマンド、 &lt;code&gt;make&lt;/code&gt; など、任意のコマンド実行に切替可能です&lt;/li&gt;&#10;&lt;li&gt;指定したファイルやディレクトリを監視対象から外すこともできます&lt;/li&gt;&#10;&lt;li&gt;指定したディレクトリだけを監視させることができます&lt;/li&gt;&#10;&lt;li&gt;自作のスクリプトから呼びだあすことも可能&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="インストール方法"&gt;インストール方法&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;npm&lt;/code&gt; コマンドが使えれば簡単にインストールできます。&lt;/p&gt;</description></item><item><title>WordPressのLuxeritasテーマでpreタグ内の空行が消えてしまう問題に対処</title><link>https://genzouw.com/entry/2020/01/09/000250/1855/</link><pubDate>Thu, 09 Jan 2020 00:02:50 +0900</pubDate><guid>https://genzouw.com/entry/2020/01/09/000250/1855/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;当ブログは &lt;a href="https://wordpress.com/"&gt;WordPress&lt;/a&gt; で構築しています。&#10;WordPressのテーマは &lt;a href="https://thk.kanzae.net/wp/"&gt;Luxeritas&lt;/a&gt; という「無料」で「SEO最適化」された「高機能」のテーマを利用しており、大変重宝しています。&lt;/p&gt;&#10;&lt;p&gt;時々バージョンアップを行っていたのですが、ある時からエントリの &lt;code&gt;pre&lt;/code&gt; タグ内のコンテンツから空白行が消えてしまうという現象が発生してしまいました。&#10;以下のイメージは &lt;strong&gt;問題解消後&lt;/strong&gt; のものになります。 &lt;strong&gt;空行&lt;/strong&gt; が2行ありますが、この行が消えてしまうという問題でした。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://docs.google.com/uc?id=1ZSzh40wTiMTmBlF9yTKpZhbPmILTM1rw" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;WordPressのコードは愚か、テーマなど触ったこともなかったのですが、最終的には自分で修正してみました。&lt;/p&gt;&#10;&lt;h2 id="検証環境"&gt;検証環境&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;WordPress&lt;/strong&gt; : バージョン &lt;code&gt;5.3.2&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Luxeritas&lt;/strong&gt; : バージョン &lt;code&gt;3.7.5.1&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="1googleで調べてみる"&gt;1.Googleで調べてみる&lt;/h2&gt;&#10;&lt;p&gt;まずはGoogleで同様の現象に悩んでいる方がいないか調べてみました。&#10;同じような問題で悩んでいる方はいないようでした。&lt;/p&gt;&#10;&lt;h2 id="2公式サイトで調べてみる"&gt;2.公式サイトで調べてみる&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://thk.kanzae.net/wp/"&gt;Luxeritas&lt;/a&gt; の公式ページから調べてみました。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://thk.kanzae.net/wp/page-3176/"&gt;Q&amp;amp;A よくある質問 | Luxeritas Theme&lt;/a&gt; のページも見てみましたが、特に記載はありません。&lt;/p&gt;&#10;&lt;h2 id="3最新版にバージョンアップしてみる"&gt;3.最新版にバージョンアップしてみる&lt;/h2&gt;&#10;&lt;p&gt;もしかしたら最新バージョンでは修正されている問題かもしれません。&#10;試しにバージョンアップしてみましたが、やはり問題は解消されませんでした。&lt;/p&gt;&#10;&lt;h2 id="4twitterで聞いてみる"&gt;4.Twitterで聞いてみる&lt;/h2&gt;&#10;&lt;p&gt;製作者の方に恐縮ですが、Twitterのアカウントを見つけたので相談してみました。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://docs.google.com/uc?id=1NnulzvSXF7Z_HAP29qkTvfxyxI-P2LJ5" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;ご丁寧に「公式ページ」で質問などを受け付けてくれているという回答をいただきました。&lt;/p&gt;&#10;&lt;h2 id="5公式ページで問い合わせしてみる"&gt;5.「公式ページ」で問い合わせしてみる&lt;/h2&gt;&#10;&lt;p&gt;問い合わせページを探して問い合わせしようと思いましたが、こちらでは &lt;strong&gt;Luxeritas&lt;/strong&gt; に関する問い合わせは受け付けていらっしゃらないようでした。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://docs.google.com/uc?id=1UFqcZRdIsx1q2N_7XOk5HehciJqBJjGD" alt=""&gt;&lt;/p&gt;&#10;&lt;h2 id="自分で頑張ってみることにする"&gt;自分で頑張ってみることにする&lt;/h2&gt;&#10;&lt;p&gt;自分で頑張って修正してみることにしました。&lt;br&gt;&#10;ここでは最終的にどこを修正したかだけまとめておくことにします。&lt;/p&gt;&#10;&lt;h3 id="修正したファイル"&gt;修正したファイル&lt;/h3&gt;&#10;&lt;p&gt;&lt;code&gt;wp-content/themes/luxeritas/inc/filters.php&lt;/code&gt;&lt;/p&gt;&#10;&lt;h3 id="修正箇所"&gt;修正箇所&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;以下のスクリーンショットの行をコメントアウトします。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://docs.google.com/uc?id=1b5DgHpIURAZ4-_r3GXsEEAL5sEaUpNqM" alt=""&gt;&lt;/p&gt;&#10;&lt;h2 id="結果"&gt;結果&lt;/h2&gt;&#10;&lt;p&gt;これで無事、 &lt;code&gt;pre&lt;/code&gt; タグ内の空行が正しく表示されるようになりました。&lt;/p&gt;&#10;&lt;h2 id="ひとこと"&gt;ひとこと&lt;/h2&gt;&#10;&lt;p&gt;コード量も結構あり、これで正しい修正なのかという思いはありますが、今のところ正常に動作しているようですので様子を見たいと思います。&lt;/p&gt;&#10;&lt;p&gt;問題が見つかった場合、当エントリに追記したいと思います。&lt;/p&gt;</description></item><item><title>iタウンページの企業情報を収集（スクレイピング）するPHPスクリプト</title><link>https://genzouw.com/entry/2019/04/03/220254/1309/</link><pubDate>Wed, 03 Apr 2019 22:02:54 +0900</pubDate><guid>https://genzouw.com/entry/2019/04/03/220254/1309/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;随分前に頼まれて作成した &lt;a href="https://itp.ne.jp/?rf=1"&gt;iダウンページ&lt;/a&gt; の一覧情報をかき集めてくるスクリプトです。&#10;&lt;a href="https://github.com/guzzle/guzzle"&gt;Guzzle&lt;/a&gt; の使い方の勉強も兼ねて作ったものです。&lt;/p&gt;&#10;&lt;p&gt;せっかく作って眠らせておいたので公開します。&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;※ソースコードは決してきれいではないです。一枚物のPHPです。&lt;/em&gt;&lt;/p&gt;&#10;&lt;h2 id="email_picker_from_townpage"&gt;「email_picker_from_townpage」&lt;/h2&gt;&#10;&lt;p&gt;&lt;em&gt;説明文が長いですね。&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;アプリ名に &lt;em&gt;&amp;ldquo;email&amp;rdquo;&lt;/em&gt; とありますが、メールアドレス以外も収集します。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/genzouw/email_picker_from_townpage"&gt;&lt;img src="https://gh-card.dev/repos/genzouw/email_picker_from_townpage.svg?fullname" alt="genzouw/email_picker_from_townpage - GitHub"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="機能"&gt;機能&lt;/h2&gt;&#10;&lt;p&gt;収集してくれる情報は以下のとおりです。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;会社名&lt;/li&gt;&#10;&lt;li&gt;メールアドレス&lt;/li&gt;&#10;&lt;li&gt;電話番号&lt;/li&gt;&#10;&lt;li&gt;住所&lt;/li&gt;&#10;&lt;li&gt;都道府県ID&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="インストール方法"&gt;インストール方法&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git clone git@github.com:genzouw/email_picker_from_townpage.git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; email_picker_from_townpage&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ composer install&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="使い方"&gt;使い方&lt;/h2&gt;&#10;&lt;p&gt;のいずれか好きなものをどうぞ。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ php ./index.php &lt;span class="p"&gt;|&lt;/span&gt; tee addresses.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ php ./index.php &amp;gt; addresses.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ./index.php &lt;span class="p"&gt;|&lt;/span&gt; tee addresses.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ./index.php &amp;gt; addresses.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;一応、&lt;strong&gt;2秒おきにアクセス&lt;/strong&gt; するようにして負荷がかかりにくくはしていますが、以前図書館サイトに負荷をかけて捕まった方の事例もありますのでご注意を。&lt;/p&gt;</description></item><item><title>VimからWordPressのエントリを投稿する方法</title><link>https://genzouw.com/entry/2019/02/25/202445/992/</link><pubDate>Mon, 25 Feb 2019 20:24:45 +0900</pubDate><guid>https://genzouw.com/entry/2019/02/25/202445/992/</guid><description>&lt;p&gt;僕がエントリを投稿するときはいつも &lt;strong&gt;Vim&lt;/strong&gt; で下書きした内容をクリップボードに貼り付け、WordPress の新規投稿ページに貼り付ける、という流れで投稿していますが、 これを &lt;strong&gt;Vim&lt;/strong&gt; の世界だけで完結できないかと思い調べてみました。&lt;/p&gt;&#10;&lt;h2 id="wordpressvim"&gt;WordPress.vim&lt;/h2&gt;&#10;&lt;p&gt;便利そうな Vim のプラグインを発見&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/vim-scripts/VimRepress"&gt;GitHub - vim-scripts/VimRepress: Plugin for managing wordpress blog from Vim.&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="機能概要"&gt;機能概要&lt;/h2&gt;&#10;&lt;p&gt;一部抜粋。&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;This is a mirror of &lt;a href="http://www.vim.org/scripts/script.php?script_id=3510"&gt;http://www.vim.org/scripts/script.php?script_id=3510&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;VimRepress is a plugin for managing wordpress blog from Vim, a rewritten of vimscript #1953 , which is broken for years.&lt;/p&gt;&#10;&lt;p&gt;Now VimRepress lives with more powerful again.&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;REQUIREMENT&lt;/em&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Vim 7.3+ with python 2.6/2.7 support&lt;/li&gt;&#10;&lt;li&gt;Python Environment matched wtih Vim&amp;rsquo;s support&lt;/li&gt;&#10;&lt;li&gt;python-markdown/python-markdown2 installed&lt;/li&gt;&#10;&lt;li&gt;wordpress 3.0.0 +&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;翻訳してみました。&lt;/p&gt;</description></item><item><title>気象庁の過去の時間帯別天気情報をスクレイピングするプログラム</title><link>https://genzouw.com/entry/2019/02/19/205338/914/</link><pubDate>Tue, 19 Feb 2019 20:53:38 +0900</pubDate><guid>https://genzouw.com/entry/2019/02/19/205338/914/</guid><description>&lt;p&gt;ずいぶん昔に作ったものだけどどうぞ。&#10;csvで出力されるんだったと思います。&lt;/p&gt;&#10;&lt;p&gt;*　https://github.com/genzouw/collect_weather_data&lt;/p&gt;&#10;&lt;p&gt;githubトップページの内容を抜粋。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h1 id="collect_weather_data"&gt;collect_weather_data&lt;/h1&gt;&#10;&lt;p&gt;気象庁の過去の時間帯別天気情報をスクレイピングするプログラムです。&lt;/p&gt;&#10;&lt;h2 id="set-up"&gt;Set up&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git clone https://github.com/genzouw/collect_weather_data.git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; collect_weather_data/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ composer install&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="execution"&gt;Execution&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;span class="lnt"&gt;7&#10;&lt;/span&gt;&lt;span class="lnt"&gt;8&#10;&lt;/span&gt;&lt;span class="lnt"&gt;9&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# from 1980-01-01 to yesterday&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ./main.php&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# from 1990-12-31 to yesterday&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ./main.php &lt;span class="s1"&gt;&amp;#39;1990-12-31&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# from 1990-12-31 to 1991-01-02&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ./main.php &lt;span class="s1"&gt;&amp;#39;1990-12-31&amp;#39;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;1991-01-02&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;</description></item><item><title>phpQueryを使って、commandlinefu.comからCommandLine Tipsを取得してみる</title><link>https://genzouw.com/entry/2015/12/17/012204/10/</link><pubDate>Thu, 17 Dec 2015 01:22:04 +0900</pubDate><guid>https://genzouw.com/entry/2015/12/17/012204/10/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;&#10;&lt;p&gt;コマンドラインからWebサイトのスクレイピングを行う必要がありました。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/FriendsOfPHP/Goutte"&gt;Goutte&lt;/a&gt; を使ってスクレイピングを行ったことがありました。&#10;けれどもあまり直感的に実装できずハマった思いがあるため、もう少し使いやすいライブラリはないものかと探してみました。&#10;代わりに良さそうなライブラリを見つけたのでこちら ( &lt;a href="https://github.com/electrolinux/phpquery"&gt;electrolinux/phpquery · GitHub&lt;/a&gt; ) を使ってみることにしました。&lt;/p&gt;&#10;&lt;p&gt;検証を兼ねて、 &lt;a href="http://www.commandlinefu.com/commands/browse/25"&gt;commandlinefu.com&lt;/a&gt; から &lt;strong&gt;CommandLine Tips&lt;/strong&gt; を抜き出してみることにしました。&lt;/p&gt;&#10;&lt;h3 id="2019-02-07-追記"&gt;2019-02-07 追記&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://www.commandlinefu.com/commands/browse/25"&gt;commandlinefu.com&lt;/a&gt; のHTMLの構成が変更されているみたいです。ご注意ください。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="環境"&gt;環境&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ bash -version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GNU bash, バージョン 4.3.42&lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;-release &lt;span class="o"&gt;(&lt;/span&gt;x86_64-apple-darwin14.5.0&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Copyright &lt;span class="o"&gt;(&lt;/span&gt;C&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="m"&gt;2013&lt;/span&gt; Free Software Foundation, Inc.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ライセンス GPLv3+: GNU GPL バージョン &lt;span class="m"&gt;3&lt;/span&gt; またはそれ以降 &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;This is free software&lt;span class="p"&gt;;&lt;/span&gt; you are free to change and redistribute it.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;There is NO WARRANTY, to the extent permitted by law.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ php -v&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PHP 5.5.28 &lt;span class="o"&gt;(&lt;/span&gt;cli&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;built: Aug &lt;span class="m"&gt;31&lt;/span&gt; &lt;span class="m"&gt;2015&lt;/span&gt; 12:17:07&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Copyright &lt;span class="o"&gt;(&lt;/span&gt;c&lt;span class="o"&gt;)&lt;/span&gt; 1997-2015 The PHP Group&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Zend Engine v2.5.0, Copyright &lt;span class="o"&gt;(&lt;/span&gt;c&lt;span class="o"&gt;)&lt;/span&gt; 1998-2015 Zend Technologies&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="インストール"&gt;インストール&lt;/h2&gt;&#10;&lt;h3 id="事前準備"&gt;事前準備&lt;/h3&gt;&#10;&lt;p&gt;&lt;a href="https://getcomposer.org/"&gt;Composer&lt;/a&gt; がインストールされていることが前提となります。&#10;インストールされていない場合はすぐにインストールしましょう！&lt;/p&gt;</description></item><item><title>php5の学習を進めるための環境構築</title><link>https://genzouw.com/entry/2012/12/28/144321/130/</link><pubDate>Fri, 28 Dec 2012 14:43:21 +0900</pubDate><guid>https://genzouw.com/entry/2012/12/28/144321/130/</guid><description>&lt;p&gt;仕事帰りにO&amp;rsquo;rellyのPHP本を買ってきたので、早速学習準備を行う。今までは作成済みの環境を借りることが多かったので、今回は自分で環境構築からやってみた。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt-get install apache2 libapache2-mod-php5&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;今回は、自分のHomeディレクトリの &lt;strong&gt;public_html&lt;/strong&gt; にてphpスクリプトを実行したいので、userdirモジュールの導入も行う。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; ~&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ mkdir public_html&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;lt;?php echo &amp;#39;test&amp;#39;; ?&amp;gt;&amp;#34;&lt;/span&gt; &amp;gt; public_html/index.php&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ chmod &lt;span class="m"&gt;777&lt;/span&gt; -R public_html&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo a2enmod userdir&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo service apache2 restart&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;自分のユーザー名はgenzouwだけど、ブラウザから以下のURLにアクセスしてみても見れなかった。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://localhost/~genzouw/index.php"&gt;http://localhost/~genzouw/index.php&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;以下のファイルに、userdir上ではphpを動かさないようにするよ、という設定がかかれているのでコメントアウトする。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo vim /etc/apache2/mods-enabled/php5.conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;IfModule&lt;/span&gt; &lt;span class="err"&gt;mod_php5.c&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;FilesMatch&lt;/span&gt; &lt;span class="err"&gt;&amp;#34;\.ph(p3?|tml)$&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SetHandler application/x-httpd-php&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/FilesMatch&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;FilesMatch&lt;/span&gt; &lt;span class="err"&gt;&amp;#34;\.phps$&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SetHandler application/x-httpd-php-source&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/FilesMatch&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# To re-enable php in user directories comment the following lines&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# (from &lt;span class="nt"&gt;&amp;lt;IfModule&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; to &lt;span class="nt"&gt;&amp;lt;/IfModule&amp;gt;&lt;/span&gt;.) Do NOT set it to On as it&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# prevents .htaccess files from disabling it.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# &lt;span class="nt"&gt;&amp;lt;IfModule&lt;/span&gt; &lt;span class="err"&gt;mod_userdir.c&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# &lt;span class="nt"&gt;&amp;lt;Directory&lt;/span&gt; &lt;span class="err"&gt;/home/*/public_html&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# php_admin_value engine Off&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# &lt;span class="nt"&gt;&amp;lt;/Directory&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# &lt;span class="nt"&gt;&amp;lt;/IfModule&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/IfModule&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;無事動作確認完了。&lt;/p&gt;</description></item></channel></rss>