gotohayato.com

太陽(ライトモード)

actions/github-script と composite アクションでカスタムアクションをかんたんに作れる

GitHub Actions 小ネタです。 actions/github-script と composite アクションを使えば、再利用可能なアクションかんたんに作ることができます。 前提 この記事は 2022 年 05 月に書きました。 時間が経つと GitHub Ac…

Safari や iOS 上のブラウザで border-radius で子要素をマスクできない問題

Safari で HTML を閲覧した際に、親要素に overflow: hidden と border-radius を設定してあるのに子要素が border-radius の範囲をはみ出して表示されてしまう問題についてです。 追記: 親要素に overflow…

Laravel のキューの dispatchAfterResponse() の仕組みのまとめ

PHP のフレームワーク Laravel が提供するキューのジョブオブジェクトに dispatchAfterResponse() というメソッドがあります。 少し前にこの仕組みについて調べたのですが、ウェブ上で参考になる情報があまり見つかりませんでした。 今回はこの di…

PHP-FPM のリクエスト処理後のタイムアウトの仕組みのまとめ

少し前に PHP の FPM (FastCGI Process Manager) のリクエスト処理後のタイムアウトの仕組みについて調べたのでかんたんにまとめておきます。 fastcgi_finish_request() FPM で PHP を動かすと、 fastcgi_fin…

Next.js でのエラー Module not found: Can't resolve 'fs' の対処方法

Next.js で次のようなエラーが出たときの対処方法についてです。 確認時のバージョン Node.js 16.x Next.js 12.x / 11.x 問題 Next.js を実行すると(= next dev や next build を実行すると)次のメッセージを…

Gatsby でパンくずリストを作る方法

Node.js ベースの SSG のひとつ Gatsby でパンくずリストを実装する方法についてかんたんにまとめました。 私は Gatsby で実装しましたが、基本的な考え方は他の SSG でも同じと思いますので他の SSG を使う方にも参考になるかもしれません。 対象バー…

Docker Compose で NGINX の起動前に自己署名証明書を生成する方法

Docker Compose で NGINX を起動する前に SSL/TLS の自己署名証明書を生成する方法についてです。 この方法は、開発環境や確認用の環境において http~ ではなく https~ のアドレスで動作確認をしたいときなどに有用です。 確認時の環境 D…

MySQL ですべてのテーブルを一括で OPTIMIZE する方法

今日も小ネタで、 MySQL で特定のデータベース内のすべてのテーブルを一括で OPTIMIZE する方法についてです。 確認時のバージョン MySQL 5.7 or 8.0 MySQL ですべてのテーブルを OPTIMIZE する方法 早速結論ですが、 mysqlch…

Cypress で特定のテストだけ実行する方法

Node.js のテスティングライブラリ Cypress で特定のテストだけを実行する方法についてです。 確認時のバージョン Node.js v17.3.1 Cypress 9.2.1 ファイル単位で絞り込む方法とファイル内のケース単位で絞り込む方法の 2 つの方法がありま…

M1 Mac で Docker のビルドエラー fatal error: vips/vips8 への対処方法

M1 Mac ( Apple Silicon )で Node.js を使う Docker イメージのビルドで次のようなエラーが出るときの対処方法についてです。 サンプル 1: サンプル 2: 私は Node.js の NPM パッケージ sharp を使うプロジェクトでこの…

macOS でキーチェーンに保存されたパスワードをターミナルで利用する方法

macOS でキーチェーンに保存されたパスワードをターミナルで利用する方法についてです。 早速結論ですが、 security のサブコマンド find-generic-password を使用することでキーチェーンのに保存されたパスワードを取得できます。 各オプションの…

SSH の秘密鍵のパスフレーズを変更・削除する方法

SSH の秘密鍵のパスフレーズを変更または削除する方法についてです。 これが必要になる度に検索して調べている気がするので自分用メモです。 早速結論ですが、コマンド ssh-keygen -p -f [秘密鍵ファイル] を使えば OK です。 -p はパスワードを変更するた…

Docker for Mac の仮想マシンのディスクが壊れたときの対処方法

Docker for Mac の仮想マシン Linux のディスクが壊れてしまったときの対処方法についてです。 結論から言うと、トラブルシュートの「 Clean / Purge data 」を実行すれば OK です(ただし、ボリュームなどがすべて削除されてしまうので、削除される…

Docker Compose の bind mounts から node_modules を除外する方法

Docker Compose において bind mounts から Node.js のパッケージ格納ディレクトリである node_modules を除外する方法についてです。 主な使いどころとしては、開発環境において「 bind mounts を利用したいが node_…

GitHub Codespaces で WordPress を動かす方法

GitHub Codespaces 上で WordPress を動かす方法についてです( 2021 年 8 月時点の情報です)。 Codespaces にはポートフォワーディング機能が備わっており Codespaces 上で動かしたウェブサーバー・ CMS にブラウザからアクセ…

GitHub Actions で Dart Sass を使う方法

GitHub Actions で Dart Sass を使いたいことがあったのでその方法をまとめておきます。 前提 使用マシン: ubuntu-latest ( ubuntu-20.04 ) 方法 A. Homebrew を使う B. Dart Sass を直接ダウ…

Cypress のテストで Basic 認証をパスする方法

Node.js のテスティングライブラリ Cypress のテストで Basic 認証をパスする方法についてです。 確認時のバージョン 動作確認に使用したバージョンは次のとおりです: Node.js 16.5.0 Cypress 8.0.0 1. とりあえず Basic 認…

静的サイトジェネレーターと相性のよいホスティングサービス一覧( 2021 年時点)

2021 年 7 月時点における「静的サイトジェネレーターと相性のよいホスティングサービス」をかんたんにまとめました。 「静的サイトジェネレーター」は長いので以下「 SSG 」と書きます。 選定基準は次のとおりです: SSG ・ Jamstack 界隈で有名 特定の SSG に…

Ansible Playbook で localhost でタスクを実行する方法

Ansible Playbook ( ansible-playbook )で localhost (ローカル環境)でタスクを実行する方法についてです。 必要になる度に方法を調べている気がするので、ここにかんたんにまとめておきます。 環境 動作確認には以下のバージョンを使いま…

GitHub 上のリポジトリでコードの言語を設定する方法

Github 上に置いたリポジトリのコードを閲覧するときに、シンタックスハイライトに使われる言語を設定する方法についてかんたんにまとめておきます。 GitHub のコードの言語判定には Linguist というオープンソースのライブラリが使われていて(正確には「開発したライブラ…

Express アプリのテストの書き方

Node.js のフレームワーク Express を使ったウェブアプリケーション開発における自動テストの書き方をかんたんにまとめました。 利用ツール 今回は React ベースのプロジェクトでよく使われる Jest をテストフレームワークとして使います。 Node.js 1…

Google Cloud Build の高速化 tips

Google Cloud Platform (以下「 GCP 」)の Cloud Build の処理を高速化するための tips をかんたんにまとめました。 情報はいずれも記事執筆時点のものです。 時間が経つとあてはまらなくなる部分も出てくるので、参考にされる際は注意してくださ…

Markdown のコードの中にバッククォートを含める方法

Markdown でバッククォート( ` )を出力する方法についてです。 インラインコード インラインの <code> の中でバッククォートを使うには、 外側のバッククォートを 2 つずつにします。 出力: `name` コードブロック <pre><code> に相当…

Google Chat に自動投稿する方法

Google Chat のルームにプログラムで自動投稿する方法についてです。 事前に想像したよりかんたんであっけなかったですが、また次久しぶりにやるときに少し時間がかかるかもしれないので、かんたんに方法をまとめておきます。 Google Chat をプログラムから利用するパター…

Docker Compose の depends_on の使い方まとめ

Docker Compose の depends_on の使い方をかんたんにまとめました。 主に自分用のまとめですが、このあたりは公式ドキュメントがあまり充実していないので、 Docker Compose をよく使う方のお役にも立つのではないかと思います。 前提 Compo…

GCP で処理を定期実行する方法

Google Cloud Platform (以下「 GCP 」)で特定の処理を定期的に実行する方法についてかんたんにまとめました。 GCP で処理を定期実行する方法の選択肢 GCP で処理を定期実行するための方法はいくつかあります。 A. Compute Engine インス…

スマートフォンのブラウザでフォントサイズがおかしくなる問題の対処方法

ウェブ制作者向けの小ネタです。 スマートフォンのブラウザでウェブサイトを開いたときに、指定したフォントサイズと異なるサイズで文字が表示されてしまう問題についてです。 問題 font-size でフォントサイズを指定しているのに、 iOS や Android のブラウザでページ…

Node.js のパッケージをまとめて最新版にアップデートする方法

Node.js のパッケージをまとめて最新版にアップデートする方法についてです。 npm と Yarn を使った方法をそれぞれ説明します。 npm 記事執筆時点の npm の最新版 7.x には、パッケージをまとめて最新版にアップデートする機能は備わっていません。 代わりに …

React でウィンドウサイズが小さいときだけスライドショー表示をする方法

ピンポイントな小ネタですが、 React で「ウィンドウサイズが大きいときは画像をそのまま並べて、ウィンドウサイズが小さいときは画像をスライドショー表示する方法」についてです。 今回はスライドショーの例ですが、この方法は「画面幅によって出力コンポーネントを切り替える方法」として…

Homebrew で Error: homebrew-core is a shallow clone が出て brew update が実行できない問題

2020 年 12 月以降に Homebrew で brew update をしようとすると次のようなエラーが出て処理が実行できないことがあります。 homebrew-cask を利用している場合はそちらでも起こります。 Homebrew はこれまで Git リポジトリの…

React の PropTypes.element と PropTypes.elementType の違い

JavaScript のフレームワーク React で使われる PropTypes.element と PropTypes.elementType の違いについてです。 両者には次の違いがあります。 意味 例 PropTypes.element React エレメント …

GCP の Container-Optimized OS でサイトを運用するときの tips

Google Cloud Platform (以下 GCP )の Container-Optimized OS で Docker を使ってサイトを構築・運用するときの tips 集です。 Container-Optimized OS を使うようになってしばらく経ったので利用時の…

axios で reCAPTCHA のレスポンストークンの検証を行う方法

JavaScript のライブラリ axios で reCAPTCHA のレスポンストークンの検証を行う方法をかんたんにまとめます。 reCAPTCHA は一般に次の 3 ステップで利用するものですが、今回はこのうちの 3 ステップめのサーバーサイドにおける処理が対象です。 (…

React Context API と useContext() の使い方

フロントエンドフレームワーク React の Context API と useContext() の使い方についてまとめました。 ウェブ上で見つかる Context API と useContext() についての説明は、読者にクラスコンポーネントの知識があることを前…

Docker の MariaDB / MySQL イメージを使うときの tips

Docker で MariaDB / MySQL イメージを使うときのプチ tips をいくつかまとめました。 対象イメージは mariadb:10.5 と mysql:5.7 ですが、他のバージョンのものでも使えることが多いと思います。 目次 日本語サポートを改善する…

GitHub Actions で WordPress のプラグインを自動更新する方法

GitHub Actions を使って WordPress のプラグインを自動的に更新する方法をご紹介します。 より正確に言うと「 Git でコードを管理している WordPress サイトのプラグインを GitHub Actions で更新する方法」というお話です。 前提 以…

Google Cloud Platform で特定の国からのアクセスをブロックする方法

Google Cloud Platform で特定の国からのアクセスをブロックする方法についてです。 直接国を指定してブロックする方法は用意されていないので、 まずブロックしたい国の IP アドレスの範囲を特定してから、それらをファイアウォール機能で全件ブロックする という…

JavaScript で File オブジェクトの画像のサイズを取得する方法

JavaScript で File オブジェクトとして保持された画像ファイルのサイズ(幅・高さ)を取得する方法についてです。 Node ではなくクライアントサイドの JavaScript でのお話です。 早速結論ですが、 Image オブジェクトを生成して src …

Git でデフォルトのブランチ名を master 以外に変更する方法

Git で git init 後に最初のコミットをすると自動的に作られるブランチの名前を master 以外に変更する方法についてです。 早速結論ですが、設定項目 init.defaultBranch を使えば OK です。 次のようにするとデフォルトで作られるブラ…

Next.js を使った Jamstack なブログの始め方

今回は Next.js を使って Jamstack なブログを作る方法を紹介します。 ゴール 本チュートリアルでは最終的に以下の構成のブログサイトを作ります。 ページ構成 「フロントページ」「投稿一覧ページ」「投稿詳細ページ」の 3 つだけのシンプルな構成です。 投稿の管理方法…

Gatsby 公式のプラグイン・テーマまとめ

React ベースの静的サイトジェネレータ( SSG )である Gatsby が公式に提供するプラグインとテーマについてまとめました。 正確には、公式の monorepo リポジトリ ↓ で管理されているプラグインとテーマを一覧にしました。 記事執筆時点で monorepo…

GitHub のリポジトリのデフォルトのブランチ名を変更する方法

先日 GitHub の CEO が、 GitHub で作成されたリポジトリのデフォルトブランチに奴隷制を連想させる master という名前を使うのをやめて代わりに main を使っていく旨の発言をしました。 "Nat Friedman on Twitter: "@Un…

GitHub Actions ワークフローで処理を定期実行する方法

GitHub の自動化ツール GitHub Actions のワークフローを使って特定の処理を定期的に実行する方法についてです。 GitHub 公式のドキュメントに方法が書かれているのですが、情報があちこちに散っている感じなのでかんたんにまとめておきます。 schedule …

Gatsby で Google Analytics Reporting API を使って人気の投稿一覧を作成する方法

今回は静的サイトジェネレーターの Gatsby を使ったプロジェクトにおいて Google Analytics Reporting API v4 を使って投稿一覧を作成する方法を紹介します。 前提 今回は 2020 年時点で最新の Reporting API v4 を使います。…

cron の処理が期待どおりに動かないときの対処方法まとめ

cron の処理が思いどおりに動かないときの対処方法についてかんたんにまとめます。 cron の基礎知識 以下 cron を利用する上での前提知識です。 cron ではシェルのスタートアップスクリプトが通常読み込まれない 結果としてシェルで通常利用できる環境変数やコマンドが利用…

Next.js と Gatsby の比較

最近 React ベースのフレームワークである Next.js と Gatsby を使っています。 ある程度客観的に比較できるだけの知識がたまったと思うので、 Next.js と Gatsby の比較情報をまとめてみました。 これからどちらを使うか・学ぶか迷っている方のご参考に…

Git の管理対象外のファイルのみ表示する方法

Git の小ネタで、 Git で管理されていないファイルのみを一覧表示する方法についてです。 早速結論ですが、 git ls-files コマンドを使えば OK です。 git ls-files は Git 管理下のファイルを一覧表示するためのコマンドです。 通常は管理さ…

React の state hook で array を更新しても再描画がされない問題

JavaScript のフレームワーク React に関する小ネタです。 掲題のとおり「 state hook で array を扱っているときに、 array を更新してもコンポーネントの再描画が起こらない」という問題についてです。 今回動作確認に使った React のバージ…

PHP の Multiple access type modifiers are not allowed というエラーの対処方法

PHP の小ネタです。 PHP のコードを実行しようとすると次のようなメッセージの Fatal error が出て処理が止まることがあります。 これはクラスのメソッドやプロパティのアクセス修飾子( public / protected / private )を複数重…

Drupal 7 から WordPress への移行方法

今回は Drupal 7 から WordPress への移行方法についてまとめたのでそのことを書きます。 なぜ Drupal 7 から WordPress に? Drupa 7 は 2021 年の 11 月に 公式のメンテナンスが終了することが決定しています(追記: その後…

WordPress のバージョニングとリリースサイクルまとめ

WordPress (ワードプレス)のバージョニングとリリースサイクルについてかんたんにまとめます。 最初に用語の意味を明確にしておきます。 バージョニング: バージョン番号付け リリースサイクル: バージョンが上がる周期やプロセス 尚この記事を書いた時点での WordPres…

docker-compose up で一部のサービスを除外する方法

追記 2021/03/25: profiles を使った方法について追記しました。 Docker 小ネタで、 docker-compose up コマンドで一部のサービスを除外する方法についてです。 動作確認時点の Docker と Docker Compose のバー…

バリュードメインから Google Domains へのドメイン移管方法

バリュードメインから Google Domains にドメインを移管する方法のかんたんなまとめです。 最近所有するドメインのいくつかをバリュードメインから Google Domains に移管したので、そのかんたんなまとめです。 この情報は 2020 年 1 月時点のものであり…

e-Tax ソフト( WEB 版)のログインページが読み込み中のまま開かない問題

e-Tax ソフト( WEB 版)のページを開くと、画面に「読み込み中です...」と表示されたままでいくら待っても操作できるようにならない問題についてです。 以下に述べるものがこの問題の唯一の原因かどうかはわかりませんが( e-Tax ソフトはいろいろひどいため他にもいろんなバ…

Gatsby で gatsby-theme-blog を使うときの tips

Gatsby 公式のブログ用テーマ gatsby-theme-blog を使うときの tips 集です。 追記 2020/07/29: この説明は gatsby-theme-blog のバージョン 1.x 系に対するものです。 2020 年 7 月にリリースされた …

PHP で文字列が正の整数かどうかを判定する方法

PHP で 与えられた文字列が正の整数と解釈できるかどうかをチェックする方法 についてです。 尚 PHP のバージョン 7.3 で動作確認をしました。 バージョンが違うとそのまま使えないこともあると思うので、参考にされる際はご注意ください。 PHP だとこんな単純なこと…

OGP image 画像のサイズ仕様( 2020 年時点)

Twitter と Facebook のリンクのカード表示に使われる OGP (Open Graph Protocol) の画像のサイズ周りの仕様をかんたんにまとめました。 自分用メモなので箇条書きです。 この情報は 2020 年 1 月に確認したもので、将来的に変更される可能…

脱 Drupal 7 の進め方

Drupal 7 から他のプラットフォームに移行する方法についてまとめました。 Drupal 7 は公式のメンテナンスが 2021 年 11 月に終了することが決定したため、 2020 〜 2022 年の間に脱 Drupal 7 を必要とするサイトがたくさん出てくるものと思いま…

Docker のターミナル出力が変なところで折り返される問題

Docker の標準出力が変な文字数で折り返されて表示される問題の解決方法についてです。 原因 ホスト側のターミナルの幅の情報が Docker コンテナの方に渡されないことが原因です。 対処方法 以下のような形で環境変数を使ってカラム数を指定すれば、ホスト側のターミナルの幅が …

JavaScript の formdata イベントのまとめ

JavaScript (以下 JS )の formdata イベントについて簡単にまとめました。 formdata イベントとは formdata イベントは HTML のフォーム( <form> )の送信処理の直前に発火するイベントです。 従来の submit …

JavaScript で日本語の変換確定とその他のリターンを識別する方法

HTML のテキストフィールドやテキストエリアで、日本語の変換を確定させるためのリターンキー(エンターキー)入力とその他のリターンキー入力とを JavaScript で識別する方法についてです。 早速結論ですが、イベント compositionstart と compos…

JavaScript の配列の操作まとめ

JavaScript の配列の基本的な操作方法についてまとめました。 仕事の一環で JavaScript (以下 JS )のコードを書く機会があるのですが、なかなか頻度・量が少ないため、組み込み型の基本的な操作方法を覚えては忘れ、覚えては忘れを繰り返しています。 配列については…

O'Reilly Safari を半年使ってみた

追記 2020/06/13: その後も使い続けています。今は名前から「 Safari 」が外れて「 O'reilly Online Learning 」になっているようです。 追記 2020/03/10: 2020/01/06 に価格が月々 39 ドルから 49 ドルに変更され…

macOS で .DS_Store を除外して zip ファイルを作成する方法

macOS で .DS_Store ファイルを除外して zip ファイルを作成する方法についてです。 zip コマンドの -x オプション zip コマンドには -x というオプションがあり、これを使うと除外対象を指定することができます。 これですべての階層の …

WordPress Gutenberg でエラー「更新に失敗しました」が出る問題の解決方法

問題 WordPress の管理画面で、 Gutenberg エディタ(ブロックエディタ)を使ってポストを更新しようとすると「更新に失敗しました」というメッセージが出ます。 しかし実際には投稿は適切に更新されていて、エラーメッセージが間違って表示される状態です。 対象バージョン…

PHP で小数点以下の桁数を指定して切り上げ・切り捨てする方法

PHP で少数点以下の桁を指定して数値を切り上げ・切り捨てする方法についてです。 尚、今回動作確認には PHP のバージョンの 7.2 を使用しました。 組み込み関数 PHP では、数値を丸めるための組み込みの関数として次のものが用意されています。 round() ceil…

git log で特定の期間のログだけを出力する方法

Git の git log コマンドで期間を絞ってログを出力する方法についてです。 歴史が長くコミットの多い OSS のコミットログを見たいとき等に便利です。 早速結論ですが、以下のオプションが使えるのでこれを利用すると OK です。 特定の日時 以降 のものに絞る: …

ウェブシステムをウェブフレームワークと CMS のどちらで作るべきか

ウェブシステム開発の際のプラットフォームの選択肢としてウェブアプリケーションフレームワーク(以下「フレームワーク」)と CMS がある場合、どのように使い分けるのがよいのでしょうか。 今回はこの「 フレームワークと CMS の使い分け問題 」についてかんたんに整理してみたい…

PHP の static と self の違い

PHP の static と self の違いについてです。 基本中の基本なのですが、 PHP を書かない日が続くとどちらがどちらなのか忘れてしまい調べ直すことしきりなので、メモとして残しておきます。 まとめ static は 実行時 のクラスを指す self …

macOS を Mojave にあげた後に Homebrew を使うとエラーが出る問題

掲題のとおり、 macOS を Mojave にアップデートした後に Homebrew を使うとエラーが出る問題についてです。正確にはエラーが出て使えないので「使おうとすると」です。 問題 Mojave にあげた後に Homebrew を使ってパッケージをインストールしようとす…

PHP で callable なプロパティを呼び出す方法

PHP の小ネタです。 PHP において「 callable なオブジェクト a が別のオブジェクト b のプロパティとして格納されているときに、 a をどのように呼び出せばよいのか」についてです。 サンプルとして、インスタンスが callable な Regis…

How to set field default values programatically in Drupal 7

I'd like to share a way to set default values of fields to new nodes (more generally "entities") programatically in Drupal 7. At the time w…

PHP で入れ子の配列の中身を再帰的に変更する方法

PHP で入れ子の配列の中身を再帰的に変更する方法について説明します。 PHP でコードを書いているとときどきやりたくなることがあるのですが、サッと実装できずに時間がかかったりするのでやり方をまとめておきます。 課題 入れ子の配列 $form があり、その中にキーが #s…

自動テストのスタブ・スパイ・モックの違い

ソフトウェアの自動テストで使う代品オブジェクト――いわゆる「 テストダブル 」の種類についてまとめました。 タイトルには「スタブ」「スパイ」「モック」の 3 つだけをあげていますが、他にも「フェイクオブジェクト」と「ダミーオブジェクト」に言及しています。 お断り この記事の…

CMS Drupal の現状と今後の予測( 2018 年 6 月時点)

2018 年 6 月時点での Drupal の現状の整理と今後( 3 〜 5 年)の展開予測 をしてみました。 このあたりの認識をそのときどきで記録しておくと後々おもしろそうなので分析のエクササイズがてら書き残してみます。 英語圏も含めてこのタイプのまとめをしている人はあま…

Git で管理下にあるファイルのみをステージングする方法

Git リポジトリで、新しいファイルは追加せずに、すでに Git で管理されているファイルの変更及び削除のみをステージングする方法です。 ファイルを選り分けてひとつずつ add するのが億劫なときに便利です。 確認時の Git のバージョンは 2.18.0 です。 新し…

PHP の整数の最大値周りの挙動

PHP の整数の最大値周りの挙動についてまとめてみます。 整数の最大値に関連する定数 PHP には整数の最大値に関連した定数として次の 3 つがあります( PHP の最新バージョンが 7.2 である 2018 年 5 月時点の認識です)。 PHP_INT_SIZE : inte…

Git のリモートリポジトリで削除されたブランチをローカルから削除する方法

Git で、リモートリポジトリで削除済みの不要なブランチをローカルから削除する方法についてです。 早速結論ですが、まさにそのための git remote prune があるのでこれを利用すれば OK です。 git remote prune は次のように使用します。 例え…

git apply を dry run する方法

Git の git apply コマンドを、実際にファイルを変更することなく事前にチェックしたいことがあります。 そういうときに取りうるオプションとしてどんなものがあるかをまとめました。 尚、今回の動作確認には Git のバージョン 2.17.0 を使用しました。 a)…

Sublime Text 3.1 リリースと新しいカラースキームフォーマット

先日 Sublime Text のバージョン 3.1 がリリースされました。 Sublime Text 3.1 Released - News - Sublime Text ニュースサイトで紹介されているのはいくつか見かけたのですが、実際に使っている人が日本語で言及している記事…

プログラマのためのフロー理論のすすめ

今回はプログラマの方向けに「フロー理論」の紹介をしてみたいと思います。 このブログではあまり長文を書きませんが、今回は長文です。 …… 日々プログラムを書いたり読んだりしているとつくづく私は「プログラミングはスポーツや楽器の演奏に似ているなぁ」と思います。 プログラミングとスポ…

Mac の SSH の設定ファイルで IgnoreUnknown で複数のオプションを指定する方法

OS のバージョンの異なる複数の Mac で SSH の設定ファイルを共有していると、各マシンで利用できるオプションの違いのために、エラーで ssh コマンドが実行できなくなることがあります。 私の場合は、 UseKeychain と AddKeysToAgent …

ふだん Markdown を書く技術者のための reStructuredText 文法まとめ

ふだんは Markdown を書いていて、稀に reStructuredText を書く必要がある技術者(私です)のための reStructuredText 文法まとめです。 reStructuredText のすべてを網羅するのではなく、あくまで「 Markdown にある機…

GitHub API v3 でプライベートリポジトリの情報が取れない問題の解決方法

GitHub API v3 を使っているときに、プライベートリポジトリの情報が取得できない問題の解決方法についてです。 問題 Personal access token を取得して GitHub API v3 (REST API) でリポジトリの情報を取得しようとすると、プ…

GitHub にリポジトリを追加する方法のパターン別まとめ

GitHub にリポジトリを追加する方法についてパターン別にまとめてみます。 このあたりは Git 歴が短めの方や、 Git には慣れているが GitHub に馴染みの薄い方などには少しわかりづらいところかと思います。 そのような方はぜひ参考にしてみてください。 前提 GitH…

Git で git pull するとマージすべきブランチがわからないと言われる場合の対処方法

Git の基本になりますが、 git pull コマンドを実行すると次のようなメッセージが出て処理が走らないことがあります。 Git は、 git pull の基本形である git pull <remote> <branch> の <remote> と <br…

CSS でクラス指定の無い要素にのみスタイルを適用する方法

CSS の小ネタです。 CSS で class 属性での指定が無い要素にのみスタイルを付ける方法についてです。 この方法はハックでも何でも無いのですが、個人的には目からウロコでした。 これを使うと、規模が大きめのサイトの CSS で起こりがちな「スタイルリセット地獄」を回避…

Modern JS Cheatsheet リポジトリを翻訳しました

ECMAScript の ES6 あたりのポイントがわかりやすくまとめられた GitHub リポジトリ「 Modern JS Cheatsheet 」を日本語に翻訳しました。 翻訳の PR をオリジナルのリポジトリにマージしてもらえたので、以下のページで日本語版を閲覧することが…

Git でリモートに push 済みのコミットを amend したときの対応方法

Git でリモートに push した後のコミットを、ローカルで commit --amend で変更してしまった場合の対応方法についてです。 凡ミスにより年に数回はこの状況に遭遇するので、やり方をまとめておきます。 対応オプション 対応方法のオプションがいくつかあります。 …

2017 年リリースのスター 1 万越え GitHub リポジトリ

早いもので 2017 年もあとわずかですね。 今年のソフトウェア関連のトレンドを振り返ってみようと思いたち、年内リリースの GitHub 人気リポジトリについて興味を持ち、調べてみました。 具体的には、「リポジトリの作成日が 2017 年」で、「スター数が 10,000 個以上…

Drupal サイトでモジュール一覧を csv で取得する方法

今回も Drupal の開発ネタで、掲題のとおり「 Drupal サイトで利用されているモジュールの一覧を csv として取得する方法 」についてです。 個人的には、サイトの引き継ぎのときや、モジュールのアップデートをまとめてかけたいときに、モジュール一覧をスプレッドシート…

ウェブフレームワークと CMS の特徴と違い

今回は、ウェブ技術者以外の方に向けて、サイト構築に利用される 2 つの技術「ウェブフレームワーク」と「 CMS 」について、その特徴と違いを説明してみます。 最初に「フレームワーク」「 CMS 」それぞれの説明をした後に両者の違いについて見ていきます。 フレームワークとは CM…

Drupal のモジュール構成パターンあれこれ

今回は CMS の Drupal を使った開発に関する少しマニアックなお話です。 Drupal を使ったサイト制作において「カスタムモジュールをどのように分割するか」というのはそのサイトの中長期のメンテナンス性に影響する重要なポイントです。 一般に、 Drupal 上で A と…

サイトやシステムの見積もり金額はなぜ業者によって大きくちがうのか

今日はウェブ制作を行う側の立場から ウェブ制作費やシステム開発費の見積もりはなぜ会社によって大きく差が開くのか ということについて書いてみたいと思います。 なぜウェブ制作費用の見積もり金額は会社によって大きくちがうのか。 その理由は細かく数え上げればたくさんありますが、最も…

Git の「バウンダリーコミット」とは

Git のコマンドの説明を読んでいると、ときどき「バウンダリーコミット」( boundary commit )ということばが出てくることがあります。 「バウンダリーコミット」。 パッと検索してみましたが日本語での説明がなかなか見つからないので、私が理解している範囲のことをかんた…

Mac の Chrome でコピーをするとフリーズする現象の解決方法

Mac で Google Chrome を使っていると、テキストをコピーしたときに高い頻度でフリーズします。 「動作が遅い」というよりは「固まる」と表現する方が適切な感じの挙動で、長いときには 5 秒以上動作を受け付けなくなります。 私の体感では、特に Google のスプレッ…

MySQL で各データベースのサイズをチェックする方法

MySQL のデータベースのサイズを確認する方法について。 データベースサイズを調べるクエリについてはなんだか定期的に調べている気がするので、メモとして残しておきます。 こちらを実行すると次のような形でデータベースのサイズが一覧で表示されます。 参考 How to Get Tr…

Git で最初のコミットも含むすべての差分を取得する方法

Git で最初のコミットも含む差分をすべて取得する方法についてです。 Git の最初のコミットの内容は git show で確認できますが、それを diff として出力したい場合があります。 また、最初のコミットも含めて一連のコミットの変更内容を確認したくなる場合もあります…

PHP の Flysystem の使い方まとめ

PHP でファイル操作のためのシンプルな API を提供する Composer パッケージ「 Flysystem 」の使い方をまとめてみました。 Flysystem は「さまざまなストレージを共通のインタフェースで扱えること」が大きな特徴のひとつですが、ローカルのストレージ…

PHP の型キャストの挙動のまとめ

PHP には、他の言語にもよくある「型キャスト」( typecasting )の機能があります。 正しく使えればきっと便利な機能なのですが、 PHP の場合は直感的ではない挙動をする場合がかなり多いので、使うときは細心の注意が必要です。 代表的なパターンを以下にかんたんにまとめ…

Drupal 8 の #markup のエスケープを避ける方法

Drupal 開発ネタです。 Drupal 8 には前のバージョン Drupal 7 と同じ #markup という要素タイプが存在しますが、この挙動は Drupal 7 とは少し異なり、 #markup の中身にも一定のオートエスケープがかかるようになっています。 今…

Git の 1 文字エイリアスでも自動補完を効かせる方法

私はふだん git コマンドの利用頻度が多いので、 git コマンドの 1 文字エイリアス g をよく使っています。 1 文字エイリアスは一度慣れたらとても快適ですが、 Tab による自動補完が効くようにするとますます快適でやめられない止まらない状態になります。 私…

Mac で複数の URL をまとめて開く方法

Mac で複数の URL (ウェブページ)をまとめて開く方法をご紹介します。 1 行 1 URL の形で数件の URL があった場合にそれらをまとめて開きたくなることが、ウェブ関連の仕事に携わっている方であればあるものと思います。 私の場合は、サイトマップをスプレッドシートで…

Apache 2.4.25 以降でホスト名のアンダースコアで 400 が出る場合の対処方法

Apache の 2.4 系では、ホスト名にアンダースコア( _ )が含まれるパターンがバージョン 2.4.25 より禁止されました。 そもそも、 RFC 的にアンダースコアはドメイン名に含むことができないものとされていますが、バージョンの低い Apache ではそれに反し…

How to create a collapsible widget on Drupal 8

There's a new render element type named details which is for creating a collapsible widget in Drupal 8. details is similar to the exist…

Sublime Text 3 のパッケージ ComposerPackageInfo をリリースしました

「 ComposerPackageInfo 」という名前の Sublime Text 3 用パッケージをリリースしました。 ComposerPackageInfo - Package Control gh640/SublimeComposerPackageInfo - GitH…

個人的によく使うパッケージマネージャのパッケージ更新方法まとめ

ウェブ開発の仕事で gem pip npm composer などの パッケージマネージャのお世話になることが多いのですが、サブコマンドがちょっとずつ異なるためよく間違えます。 月に数回は検索している気がするので、個人的なメモとしてよく使うパッケージマネージャの…

Drupal 8 プラグイン その 3: カスタムプラグインタイプの作り方

前回 と 前々回 に引き続き CMS 「 Drupal 」のバージョン 8.x で導入されたプラグインのお話です。 Drupal 8 プラグイン その 1: プラグインの作り方 Drupal 8 プラグイン その 2: プラグインデリバティブの作り方 前々回は Drupal 8…

Drupal 8 プラグイン その 2: プラグインデリバティブの作り方

前回に引き続き CMS 「 Drupal 」のプラグインについて解説します。 前回はプラグインとは何ぞやという概念的な部分とプラグインの作り方について説明しました。 Drupal 8 プラグイン その 1: プラグインの作り方 今回はプラグインシステムのいち機能である「 プラ…

Drupal 8 プラグイン その 1: プラグインの作り方

Drupal 8 で新たに導入された「 プラグイン 」の概念とその作り方について解説してみたいと思います。 まずはじめに Drupal 8 のプラグインとは何ぞやという概念の説明をした後に具体的な実装方法について説明していきます。 本稿では執筆時点で最新の Drupal 8…

Libraries included in Drupal 7 core

There're many JavaScript libraries included in the Drupal 7 core. Many of them are rarely used in custom modules (I haven't used many of th…

How to use EntityFieldQuery's entityCondition() in Drupal 7

Drupal 7 has a powerful query class EntityFieldQuery in its core. EntityFieldQuery | entity.inc | Drupal 7.x | Drupal API There're 3 main…

Using OOP styles for Drupal 7: callbacks

Drupal 7 was created mainly with a procedural style but OOP styles can be used in many parts of it. For example, there're many callbacks us…

When to use call_user_func() and 'funcname'() in PHP?

There are 2 ways to call a function whose name is set at runtime in PHP. One is call_user_func() and another is 'funcname'() . At a glan…

Drupal のコア / モジュールへのコントリビュート方法について

先週の末に開催された DrupalCamp Japan 2017 に参加してきました。 そのときのスライドをアップしたので興味のある方はどうぞご覧ください(ひとまず Speaker Deck にアップロードしますが、場所を変えるかもしれないのでこちらからリンクしておきます)。

Git を使った Drupal のパッチの作り方

今回は Drupal へのコード周りのコントリビュートに欠かせない「パッチの作り方」に関する記事を翻訳してご紹介したいと思います。 このコントリビュートのお話と関連するところとして 2017/01/15 に DrupalCamp Japan 2017 が開催されます。 興味のあ…

A Bash function to check Drupal database sizes

At times I'd like to check the size of databases used by Drupal. But I don't like to launch apps like phpMyAdmin and Sequel Pro only for th…

Homebrew で MySQL を 5.6 から 5.7 にあげたときのエラーの解決方法

Homebrew で導入している MySQL のバージョンを 5.6.x から 5.7.x にあげたときに MySQL が立ち上がらなくなってしまいました。 なんだろうなと思い Stack Overflow を検索してみましたがこれといった解決法が見つかりません。 「自分の場合…

Drupal 7: How to disable a content type

While developing a site with Drupal, at times I'd like to disable a content type without removing it. I just want to disable one. The datab…

Drupal 7 で theme.inc で発生する Fatal error の対処方法

Drupal 7 で次のようなエラーに遭遇することがあります。 原因 問題の原因は関数 _theme_process_registry() の中で連想配列とその他の何か(たいてい NULL )の加算が行なわれていることです。 そしてそれが起こるのは hook_them…

Drupal 7 の .info ファイルの files[] とは

今回は Drupal 7 の .info ファイルの files[] についてのお話です( Drupal に興味のない方にはおもしろくないちょっとマニアックなお話です・・・)。 Drupal で開発を行う際に必ず必要となるもののひとつが .info ファイルです。 その…

Drupal 7 の DrupalWebTestCase のメソッドまとめ

Drupal 7 には仮想ブラウザを使った自動テストを行うための DrupalWebTestCase というテストクラスがデフォルトで用意されています。 ただ、 DrupalWebTestCase には驚くほどたくさんの便利機能が備わってはいるのですが、主に利用するのが…

PHP のエラーログを標準出力や標準エラーに出す方法

PHP のエラーログを標準出力や標準エラーに出す方法についてです。 PHP をコマンドラインで実行するときに、エラーをターミナル上で確認したくなることがあります。 そんなときには ini_set() で設定 error_log の値を変更すれば OK です。 実際に使う…

よい Git コミットメッセージを書くために気をつけるべきポイント

本日は Git のコミットメッセージについてです。 Git の(広くいうなら VCS の)コミットメッセージは、チームで開発を行う場合、あるいは、個人での開発の場合でも長期にわたって開発を行う場合には「書き方の共通ルール」というものをあらかじめ決めておくと便利です。 このあたり…

Google スプレッドシートでの行情報の便利な使い方

Google スプレッドシートで「行の情報」( ROW() )を便利に使う方法をいくつか集めてみました。 1. 自動採番 テーブルで何らかの情報を管理していると、各行に番号をつけたくなることがあります。 そんなときは 1, 2, 3 ... と数値をひとつずつ入力したり、最…

Mac のターミナル上で OS の時刻情報を確認・変更する方法

Mac のターミナル上で OS の時刻情報にアクセスする方法についてかんたんにまとめておきます。 日付 日付(年月日)の情報を確認したり変更したりする場合は systemsetup コマンドの -getdate -setdate オプションを使用します。 syst…

Git でローカルブランチをチェックアウトせずに更新する方法

Git でカレントブランチ以外のブランチを更新する方法についてです。 Git を使っていると、カレントブランチ以外のブランチを、チェックアウトしないまま(カレントブランチを切り替えないまま)で更新したくなることがときどきあります。 そういうときには次のようにすれば OK です。…

ログインが必要なサイトのページをまとめてキャプチャする方法

ログイン(認証)が必要なサイトのページを自動的に一括でキャプチャする方法についてです。 すぐに結論に行きますが、 Selenium や CasperJS ( PhantomJS )のキャプチャ機能を使えば認証が必要なサイトでもかんたんにキャプチャを取得することが可能です。 Se…

Drupal 7 で Database クラスが見つからないエラーの対処方法

Drupal 7 で Drush コマンドを実行しようとすると Database クラスが存在しないというエラーが出る場合の対処方法についてです。 問題 Drupal 7 で Drush コマンドを実行しようとすると Database クラスが存在しないと怒られます。 …

Git で引数なしで push したときの挙動オプション

Git で引数を省略して push したときの挙動のオプションについてかんたんにまとめました。 git push の正式なフォーマットは次のとおりです。 これらの引数は省略することが可能です: 引数を省略した場合の挙動は、設定項目 push.default の値とカレント…

Git で疎通試験を行う方法

Git でリモートへの接続がうまくできるかどうかを確認する方法についてです。 すぐに結論ですが、次のコマンドを使えば OK です。 リモート名を省略して使用することもできて、その場合は現在のブランチのアップストリーム(デフォルトのリモートブランチ)がチェック対象となります。 参…

Git でデフォルトのリモートを変更する方法

Git の各種コマンドでリモート名を省略したときに使用されるデフォルトのリモートを変更する方法についてです。 Git では git pull や git push などのコマンドにおいてリモート名を省略することができます。 この引数省略時に使われる「デフォルト的な位置づ…

csscomb で設定ファイルが見つからないエラーの対処方法

CSS の自動整形ツール csscomb を使っていて、設定ファイルがないというエラーが出る場合があります。 私の知るところでは、このエラーの原因には次の 2 つのパターンがあります。 設定ファイルがない 設定ファイルはあるがシンタックスエラーがある 前者の「設定ファイルがない…

jQuery の matchHeight プラグインの使い方サンプル

jQuery のプラグイン matchHeight が便利です。 横並びに並んだ要素の高さを自動的にいい感じに合わせてくれます。 jquery.matchHeight.js - a responsive equal heights plugin for jQuery デモは…

SASS で function を使ってセレクタを生成する方法

CSS 拡張のひとつである SASS で function を使ってセレクタを生成する方法について。 通常 SASS の function の戻り値はプロパティの値に使うことが多いかと思いますが、セレクタとしても使用することが可能です(あまり使い途はありませんがプロパティ名にも…

水平メニューを作る CSS のスタイルまとめ

ウェブサイトでよく見かける「横方向に並ぶメニュー」の作り方についてまとめてみます。 記事執筆時点では、主流の横方向に並ぶメニュー(以後「水平メニュー」)の作り方は大きく分けて 4 つあります。 float を使う方法 inline-block を使う方法 table レイ…

git diff コマンドとふつうの diff / patch コマンド

git のサブコマンドである git diff と通常の diff コマンド、 patch コマンドについての tips をいくつかまとめます。 diff コマンドで git diff 風の出力を出す方法 git diff の出力結果を通常の patch…

Linux 系 OS でファイルのグループパーミッションをオーナーのパーミッションに合わせる方法

ファイルのグループパーミッションをオーナー(ファイル所有者)のものにあわせる方法についてです。 単純なことですが、やり直しがやりづらい処理なので、特に一括で変換する場合は毎回慎重になります。 g=u という形で指定すれば OK です。 特定のディレクトリ以下に対して一括で行い…

PHP で最大実行時間をセットしたり確認したりする方法

PHP でタイムアウトまでの時間をセットしたり確認したり方法についてです。 タイムアウトまでの時間をセットする セットする方については 2 通りの方法があります。 ひとつめは専用の set_time_limit() を使う方法、もうひとつは汎用の ini_set() を…

PHP で使用されている php.ini ファイルを特定する方法

PHP で設定ファイル php.ini を確認する方法について。 大きく分けて 3 つの方法があります。 php コマンドの -i オプションを使う方法 phpinfo() 関数を使ってページで確認する方法 php_ini_loaded_file() 関数を使う方…

git clean のオプションについてのまとめ

Git で最も恐ろしい恐怖のコマンドのひとつ git clean のオプションについてかんたんにまとめておきたいと思います。 git clean のオプション: -d : ディレクトリを削除対象に含める。 -f ( --force ): ファイル削除を強制的に実行する。…

スマートフォンのブラウザのアドレスバーの色を変更する方法

スマートフォンのブラウザのアドレスバーの背景色を変更する方法について。 スマートフォン所有者ではなくサイト所有者向けの内容です。 方法としては HTML の head 内に所定のメタタグを追加するだけで OK です。 OS/ブラウザごとに方法が少しずつ異なりますが主流は次の…

Drupal 7 で hook_boot() と hook_init() と hook_preprocess_html() の特徴と使いどころ

今回も Drupal 7 のマニアックなお話です。 今回は「すべてのページリクエストに対してある処理を行いたい場合、どの関数を使うべきか」の判断ポイントについてまとめてみたいと思います。 Drupal 7 では、原則すべてのページリクエストにおいて実行される関数として次の 3 …

Git でのリモートリポジトリの操作方法まとめ

Git でリモートリポジトリを操作する方法についてかんたんにまとめました。 以下 CRUD の順で書きます。 C: 作成 リモートリポジトリを追加する R: 表示 リモートリポジトリを一覧表示する リモートリポジトリの詳細を確認する(疎通確認も行う) U: 更新 リモートリポジ…

Chrome で 301 リダイレクトが解除できないときの対処方法

再追記( 2018/03/13 ): Developer Tools (開発者ツール)を表示した状態でブラウザのリロードボタンを右クリックすると「キャッシュの消去とハード再読み込み」という項目が現れるので、これをクリックする形でも、リダイレクトキャッシュの削除が可能なようです。…

Mac のメモリ使用量をターミナルで調べる方法

Mac で現在のメモリ使用量を調べる方法について。 メモリ使用量は Mac にデフォルトで備わっている Activity Monitor から調べることもできますが、コマンドラインから調べたくなることがあります。 そんな場合には top コマンドを使用すれば OK です。 …

Drupal 7 で drush pm-update コマンドが失敗するときの対処方法

問題 Drupal 7 で drush pm-update (もしくは drush up )コマンドを実行すると下記のようなエラーが出て処理が失敗してしまいます。 原因 この問題の原因は「モジュールの更新情報の文字列を drush がうまく認識できないこと」にありま…

Drupal 7 でファイルアップロード後にノードを保存しなかった場合のファイルのゆくえ

Drupal 7 でノードのファイルフィールドからファイルをアップロードした後ノードを保存せず破棄した場合にアップロードしたファイルがその後どうなるかについてです。 結論は、一定時間経過すると cron で自動的に削除されます。 流れ: アップロードされたとき、ファイルは一時デ…

さくらのレンタルサーバーでデフォルトのドメインを非公開にする方法

さくらのレンタルサーバーでデフォルトで付与されるドメイン( xxx.sakura.ne.jp )を非公開にする方法について。 独自ドメインの方を利用するようになるとデフォルトのドメインを非公開にしたくなります。 しかし、コントロールパネルにはデフォルトのドメインを非公開にで…

Drupal 7 の EntityFieldQuery でオリジナルの条件指定メソッドを利用する方法

今回は Drupal 7 の開発のマニアックなお話です。 Drupal 7 で開発を行っていると EntityFieldQuery でオリジナルの条件指定メソッドを作成したくなることがあります。 オリジナルの条件を指定するには基本的には addTag() メソッドを利用すれ…

Mac の Finder で隠しファイルの表示/非表示を切り替える方法

Mac の Finder で隠しファイルを表示する方法について。 ターミナルを開いて次のコマンドを打つことで隠しファイルを表示する状態に変更することができます。 隠しファイルを表示するようにするとデスクトップに .DS_Store ファイルが表示されたりもするので、用事が済…

Google Maps の埋め込み地図をレスポンシブにする方法

Google Maps の埋め込み地図をレスポンシブ化する方法について。 Google Maps の埋め込み用コードはそのまま埋め込んでもレスポンシブになってくれません。 ラッパー div を作成してラッパーに padding ( padding-bottom ) を指…

Drupal 7 で特定のモジュールの cron 処理が他のモジュールのものよりも後に実行されるようにする方法

Drupal でモジュールの cron 処理の順序を指定する方法について。 Drupal のモジュールの hook の実行順序はデフォルトではアルファベット順ですが、 weight を変更することで任意の順序で処理を実行する事が可能です。 次のコードでは、 mymodul…

Homebrew で Homebrew-Cask のコンフリクトの警告が出る場合の対処方法

エラー brew doctor を実行すると以下のような警告が出ます。 原因 2015 年 12 月のアップデートで Homebrew-Cask の作りが変わったようです。 ですので、 2015 年 12 月以前から Homebrew-Cask を利用していて brew…

Doctrine の ArrayCollection クラスの使い方まとめ

Doctrine の ArrayCollection の使い方をかんたんにまとめてみました。 PHP の組み込みの配列ではパッとできないことがシンプルにエレガントに書けるので便利です。 オリジナルのリファレンスはこちら。 Class Doctrine\Common\Coll…

PHP で Fatal error: Can't use method return value in write context in ... というエラーが出る場合の対処方法

問題 PHP でコードを書いていると実行時に次のようなエラーが出ることがあります。 原因と対処方法 (私の経験上)多くの場合、このエラーが出るのは empty() に関数やメソッドの戻り値を直接渡していることが原因です。 例えば次のようなコードでこのエラーが発生します。 解…

Heroku toolbelt を Mac からアンインストールする方法

公式に書かれているとおりそのままなのですが・・・ Heroku toolbelt 、いわゆる heroku コマンドの削除方法についてです。 どの方法でインストールしたかによってアンインストール方法が異なります。 Homebrew で入れた場合 Homebrew で通常やる…

HTML のタグの略さない名前

HTML のタグの名前は略称になっていることが多く、もともとの名前を知る機会はあまりありません。 しかし元の名前を一度調べてきちんと知っておくと、実際にコーディングするときに直感的にサクサク書けるようになりますし他の人に伝えるときもより的確に伝えることができます。 中途半端に知…

Git で現在のコミットのハッシュを取得する方法

Git で現在のコミット(正確には HEAD )のハッシュを取得するには rev-parse コマンドを利用します。 ハッシュの短縮版を取得したい場合は --short オプションを追加します。 ハッシュだけでなくコミットメッセージなども取得したいときは log …

Homebrew でキャッシュを cleanup する方法

Mac のパッケージマネージャ Homebrew はいったんダウンロードしたフォーミュラをキャッシュとしてローカルに保存してくれます。 ふだんはこれが便利なのですが、ときどきあえてキャッシュを削除したいことがあります。 そういうときには次のコマンドを使えば OK です。 -s …

MySQL で my.cnf のシンタックスチェックを行う方法

MySQL でサーバは起動せずに my.cnf のシンタックスチェックだけ行いたい場合があります。 そういうときには mysqld コマンドにオプションをつけて実行すれば OK です。 > /dev/null はチェックのために特に必要というわけではありませんが、この…

Drupal の Ajax API で wrapper エラーが出た場合の対処方法

エラー Drupal の Ajax API を使った処理を実装した際に次のようなエラーが出ました。 原因と解決方法 エラーメッセージに書かれているとおり method のパラメータが間違っています。 こちらは $form 配列に追加した #ajax の metho…

PHP で固定間隔の時系列を生成する方法

PHP の組み込みの関数を利用して固定間隔のタイムシリーズを取得する方法についてご紹介します。 出力のイメージは次のとおりです。 この場合は DatePeriod オブジェクトを使うやり方がシンプルです。 テストしてみます。 うまく使えています。 ポイントは次のとおりです。…

Atom エディタでキーバインディング設定を登録する方法

GitHub がオープンソースで提供している Atom エディタが Sublime Text と同等かそれ以上に使いやすくなってきました。 Atom Atom は Sublime Text を参考に作られたらしく大部分はほぼ同じ使い勝手で使うことができます。 ただ、ところどころ…

PHP の array_reverse() の使用上の注意

PHP の関数 array_reverse() を使っていて挙動に驚いたので備忘録を残しておきます。 array_reverse() は配列の要素の順番を逆にした配列を生成して返してくれる関数です。 通常の使用例は次のとおりです。 インデックス配列: 連想配列: いずれも…

jQuery で対象要素の存在を確かめる方法

jQuery で $('#some-id') や $('.some-class') といった形で $() 関数を使ったときに対象要素の存在をチェックしたいケースがあります。 対象要素をチェックするには length プロパティを使うのがよさそうです。 参考 ja…

PHP の .phar ファイルを解凍する方法

解凍という表現が適切かどうかわかりませんが .phar ファイルの中身を確認したいときがあります。 そういうときには以下のコマンドを使うことで中身をディレクトリに展開して確認することができます。 参考 php - Extracting files from .phar arch…

Drupal 7 でインストール済みのモジュールを別ディレクトリに移動する方法

Drupal 7 でインストール済のモジュールを他のディレクトリに移動する方法について。 Drupal のモジュールの場所は DB のレコードに登録されるので、無理やり移動するとサイトが次のようなエラーを吐いて動かなくなることがあります。 解決方法は大きく 2 つあります。 モ…

jQuery で特定の要素が表示されているかどうかをチェックする方法

jQuery で特定の要素が現在画面に表示されているかどうかを確認する方法について。 結論としては is() メソッドに引数 :visible と渡す形がお手軽かつ確実です。 現在の表示状態に応じて処理を切り替えたい場合などに便利です。 参考 javascript - …

Bash で CSS の連番がついたクラス名などをまとめて生成する方法

小ネタです。 .. 記法を使うと連番を生成できるので、 echo コマンドと組み合わせるとちょっとした連番つきコードの生成に利用することができます。 例えば macOS で以下のコマンドを使用すると 次のコードをクリップボードに貼り付けることができます。 pbcopy …

Awesome OS X 日本語訳

GitHub 上で各種定番アプリやツールをまとめた「 Awesome XX 」というまとめシリーズがあるのですが、 そのうちのひとつ、 OS X 用のアプリやツールに関してまとめられたリストを今回日本語に翻訳してみました。 gh640/awesome-osx - GitHub …

Mac OS X El Capitan にアップデートした後に brew update が動かない場合の対処方法

Mac OS X を El Capitan にアップデートした際に brew update がうまく動かない場合の対処方法について。 エラー 対処方法 私の場合は /usr/local ディレクトリの所有者が root になっていたことが原因のようでした。 まずは所有者…

Drupal 7 の Views を date フィールドでうまくグルーピングできない問題の解決方法

Drupal 7 の Views でリストを作成していると、リストを date 型のフィールドでグルーピングしたくなる場合があります。 過去の投稿一覧を月単位でまとめたり、エンティティを日付の単位をまとめたり、といったケースです。 このような場合にグルーピングを使うと複数の項目…

jQuery で複数の ID をまとめて選択する方法

jQuery で複数の ID の要素をまとめて選択する方法についてです。 jQuery ではワイルドカード指定はできないため別の方法を使うことになります。 ちなみに Zepto.js でも同じ方法が使えます。 次のように ID に一定のパターンがある複数の要素をまとめて選択した…

Homebrew で「 Error: Formulae found in multiple taps 」と怒られたときの対処方法

Homebrew で brew update などをしていると以下のようなエラーが出てしまうことがあります。 こちらはフォーミュラの名前が重複しているために起こるようなので、どちらか一方を登録解除すれば OK です。

MySQL のクエリキャッシュ周りの設定を確認/変更する方法

タイトルのとおり MySQL でクエリキャッシュ周りの設定を確認したり変更したりする方法について。 設定の確認はお馴染み show variables を使います。 クエリキャッシュに絞る場合は like 節のところを %query_cache% としましょう。 変…

Mac でマークダウンファイルをプレビューする方法

Mac OS X Yosemite には .md ファイルをプレビューする機能がデフォルトで備わっていませんが、「 QLMarkdown 」をインストールすることで .md ファイルを HTML 化された形でプレビューすることができます。 QLMarkdown のインストー…

git.drupal.org の Git リポジトリにアクセスできない場合の対処方法

問題 2015 年 7 月以降に Drupal の公式 Git リポジトリにアクセスすると次のようなメッセージが出ることがあります。 接続が確立されず Git リポジトリにアクセスすることができません。 原因と対処方法 この問題の原因は、マシンに登録されている git.drup…

PHP での型チェック方法まとめ

PHP での変数の型チェック方法のまとめです。 頻度は高くないのですが、 PHP で変数の型チェックをしたくなることがときどきあります。 このあたり PHP はわかりづらい感じなので、かんたんにまとめておきたいと思います。 gettype() get_class() insta…

Drupal 7 で db_select() が発行するクエリ文を確認する方法

今回は Drupal 7 で db_select() などデータベース関連の関数が発行するクエリを確認する方法について。 結論からいうと、 db_select() の戻り値である SelectQuery クラスのインスタンスのメソッドを利用すれば OK です。 同様…

Drupal 7 でいったん無効にしたデフォルトのテキストフォーマットを有効化する方法

今回は Drupal 7 で一度無効化されたデフォルトのテキストフォーマットを再度有効化する方法についてご紹介したいと思います。 Drupal 7 を Standard プロファイルでセットアップした場合、次の 3 つのテキストフォーマットがデフォルトで有効になっています。 P…

PHP の連想配列の最初の要素を取得する方法

PHP の連想配列で最初の要素を取得する方法について。 ちょっと直感的ではなくまたすぐ忘れてしまいそうなのでここに書き留めておきます。 最初の要素の「バリュー」を取得する 値を取得するのはかんたんで reset() 関数を使えば OK です。 最初の要素の「キー」を取得する…

CSS でテキストの色と同じボーダーの色を設定する方法

CSS でテキストの色と同じボーダーの色を設定する方法について。 実は border-color を指定しない場合、 border-color は自動的に color の色になります。 ですので以下のように設定すれば、ボーダーの色が自動的にテキストの色と同じになりま…

Homebrew の MySQL の設定ファイルの場所

Mac で Homebrew で入れた MySQL を使っている場合、設定ファイルがすぐに見つからなくて困ることがあるかと思います。たまにしか触らないファイルはすぐに場所がわからなくなってしまいますよね。。 以下のコマンドを打つと設定ファイルの場所を確認することができます。 こ…

PHP での Fatal error: Can't use function return value in write context というエラーの原因と対処方法

今回は PHP のコードを書いていて次のエラーが出た場合の対処方法について。 原因 このエラーが表示される最も代表的なパターンは isset() や empty() に関数の戻り値を直接渡してしまっている場合のようです。 例をあげてみます。 isset() empt…

PHP で関数を受け取る関数にインスタンスメソッドを渡す方法

PHP の関数型スタイルの関数 array_map() や array_filter() の引数に通常の関数ではなくメソッドを渡す方法をご紹介したいと思います。 PHP では array(インスタンス, メソッド名を表す文字列) でインスタンスメソッドを指定すること…

さくらサーバーで POST 時に弾かれる問題の解決方法

さくらインターネットのレンタルサーバーを利用していると、ブログの投稿時などに POST メソッドでアクセスすると以下のようなメッセージが出て弾かれてしまうことがあります。 原因 これはさくらの「 Web アプリケーションファイヤウォール」が誤検知した場合に発生するようです。 解…

Drupal 7 の Form API #states の使い方

手短な説明にはなりますが、 Drupal の Form API の #states というパラメータの使い方についてかんたんにご紹介したいと思います。 Drupal でフォームをプログラムで作成する場合は #states というパラメータを使うことにより、通常 JavaScri…

Mac OS のターミナルでログイン時のメッセージを非表示にする方法

Mac のターミナルを新たに立ち上げたときに、デフォルトでは特定のメッセージが表示されます。 今回はこのメッセージを表示しなくする方法についてです。 やり方はとてもシンプルで、ホームディレクトリに .hushlogin という名前のファイルを作成するだけです。 存在がチェッ…

さくらのレンタルサーバーで cron が動かない場合の対処方法

今回はさくらのレンタルサーバーで cron がうまく動かないときの対処方法について書いてみたいと思います。 cron 周りはたまにしか設定しないこともあり、忘れた頃にまた設定をして同じミスを繰り返すことが度々あります。 私だけでなく多くのサイト管理者、エンジニアの方に共通の問題…

Drupal 7 で drupal_attributes() の引数エラー

Drupal 7 で開発をしていると、次のようなメッセージで怒られることがあります。 今回はこの問題の原因と対策について。 原因と対策 原因は、エラーメッセージのとおり drupal_attributes() への引数が正しく渡されていないことです。 drupal_att…

Drupal 7 で Drush が新しいアップデートを認識してくれない問題の解決方法

Drupal 開発を行う上で欠かせない Drush ですが、アップデートを行おうとしたときに思うように動いてくれないことがたまにあります。 そんなときの解決方法をいくつか書き留めておきます。 1. drush rf サブコマンド rf で Drush のリリース情報を更新…

PHP の echo と print のちがいと使いどころ

PHP には echo と print という 2 つのよく似た出力用機能が備わっています。 これらのちがいやそれぞれの使いどころについて、ことあるごとに調べては忘れ調べては忘れの繰り返しなので、備忘録として書き留めておきます。 早速結論ですが、ひとことでいうと、 e…

CSS でテキストフィールドのフォーカス時の枠を取る方法

CSS でテキストフィールドが focus されたときに自動的に付くボーダーを外す方法についてです。 ここではテキストフィールドと書いていますが、 textarea や button 、 submit ボタンなどでも共通かと思います。 私がチェックした Chrome 、 Fir…

Drupal 7 で検索フォームを Font Awesome 風に変える方法

Drupal のデフォルトの検索フォームのボタンを Font Awesome のものにスタイル変更する方法について。 Drupal に Font Awesome を導入するには、「そのまま Font Awesome を自作のテーマに含めて使う方法」と「専用のコントリビュートモジ…

Drupal 7 の Webform の日付フィールドのフォーマットを変更する方法

Drupal 7 の Webform の日付フィールドはデフォルトでは「 月/日/年 」というフォーマットになっています。 これは日本では馴染みの薄いフォーマットなので、国内のプロジェクトで使用する場合は変更して使う形がほとんどになるかと思います。 明示的な説明がありませんが、…

Drupal 7 の Views で使用すべきテンプレートを特定する方法

Drupal 7 の Views で出力のテンプレートを変更したいことがあるかと思います。 そういう場合にはどこかのテンプレートを実装/上書きする必要があるということはパッとわかるのですが、具体的にどのテンプレートを利用すればよいのかにわかにはわかりません。 そういう場合には、…

Drupal 7 で DB にレコードを複数行まとめて入れる方法

タイトルのとおり Drupal でレコードを複数行まとめて入れる挿入する方法について。 こちら可能は可能なのですがちゃんと解説しているドキュメントがあまりないようでパッと確認したいときに不便します。メモ代わりに書いておきたいと思います。 おなじみ db_insert() で…

Drupal 7 で DB トランザクションを明示的にコミットする方法

Drupal 7 で DB トランザクションを明示的にコミットする方法について。 Drupal では使用している DB がトランザクションをサポートしている場合は db_transaction() 関数でトランザクションを開始することができます。そして、ロールバックや例外な…

さくらのレンタルサーバーで SSH のシェルに Bash を使う方法

さくらのサーバーで SSH のシェルは初期設定では csh になっていたりしますが、以下のコマンドを使うと Bash に変更することができます。 利用可能なシェルの一覧はファイル /etc/shells の中に書かれているようです。

Composer で Drush を入れようとしたときのエラー

エラー文 原因 Composer のバージョンが古いために起こるエラーのようです。 私は Composer 0.9-dev で Drush 7.0 を入れようとしたときに発生し Drush を入れることができませんでした。 対処方法 Composer をアップデートします。 C…

Drupal 7 の Views で日付フィールドでフィルタリングする方法

Views で日付フィールドの値によってフィルタリングしたい場合があるかと思います。たとえば未来のお知らせだけを表示したい、直近 1 ヶ月のイベントだけを表示したい、など。 今回はそんな「 Drupal の日付フィールドでフィルタリングする方法」をご紹介します。 前提として、 …

Drupal 7 でテンプレートファイル内で使用できる変数をチェックする方法

Drupal のテンプレートファイルでは多数の変数が使用できるようになっていますが、テーマの継承などを行っていると使える変数が非常に多く「何が使えて何が使えないのかわからない」という状況になりがちです。 変数をチェックするにはテンプレートファイル内で以下のコードを記述するとよい…

さくらのレンタルサーバーで drush の自動補完がきかない問題の解決方法

さくらインターネットのレンタルサーバーで Drupal を使うときに起こる問題の解決方法についてです。 さくらで Drush をセットアップし自動補完用のスクリプトも読み込むようにしたのに、自動補完がきかないことがあります。 drush コマンドは使えるのに自動補完がきかな…

Drupal 7 で単一のノードを別の Drupal サイトにコピーする方法

Drupal で単一、あるいは小数のノードを特定の Drupal サイトから別の Drupal サイトに移動する方法について。 いくつか方法はあるかと思いますが、たとえば、ローカルの開発環境から本番環境へひとつだけのノードをサッと移すだけであれば Node export モ…

JavaScript でページ読み込み時にページをふんわりと表示させる方法

JavaScript を使って HTML ページの読み込み時にページをふんわりとフェードインで表示させる方法をご紹介します。 フェードインで表示させるには、ページの opacity をいったん 0 (透明)にしておいてその後にアニメーションで 1 (不透明)に戻していきます。 …

jQuery で複数のクラスをまとめて追加する方法

jQuery で複数のクラスをまとめて追加する方法についてです。 早速結論ですが、単純に addClass() メソッドにスペース区切りで複数のクラス名を渡せば OK です。 逆に複数のクラスを削除したいときも同様の書き方が使えます。 さらに、複数のクラスをまとめてトグルし…

Mac や Linux でディスクの空き容量を調べる方法

Mac や Linux でディスク( HDD や SSD )の空き容量を調べるには df コマンドを使いましょう。 -H コマンドを使うと人間が見てわかりやすい形で出力してくれます。 -h コマンドを使えば 1K = 1,000 ではなく 1K = 1,024 の計算…

Ubuntu で crontab の編集に使うエディタを変更する方法

Ubuntu で crontab -e で起動するエディタを変更するには次のコマンドを使います。 するとエディタのオプションが表示されるので、その中から使いたいエディタを選択すれば OK です。 Ubuntu 14.04.2 で確認しました。

Drupal 7 でテーマのベーステーマが見つからないときのエラー

エラー Drupal で有効でデフォルトになっているテーマのベーステーマが存在しないときに以下のような警告文が表示されます。 厳密にはエラーではありませんが、そのまま放置していても正常な動作をするようにはならないので広義のエラーと言ってもよいでしょう。 対処方法 Drupal …

Drupal 7 で POST リクエストのデータが送信できない問題の解決方法

問題 Drupal 7 の HTTP リクエスト用の関数 drupal_http_request() を使って POST リクエストをしようとしても POST データが送れない。 原因 ヘッダが正しく設定されていないことが原因です。 method と data だけ…

SSH で UNPROTECTED PRIVATE KEY FILE というメッセージが出て ssh 接続ができない問題の解決方法

症状 SSH 接続をしようとすると以下のようなメッセージが出て接続が成功しないことがあります。 対処方法 秘密鍵ファイルのパーミッションが問題なので、パーミッションを変更すれば OK です。 グループやその他ユーザに閲覧権限がある場合はそれらを外します。 すると問題なく接続でき…

Mac の Finder での非表示ファイルの表示/非表示をコマンドで切り替える方法

ふだん必要となる機会はそうそうないのですが、 Finder で非表示ファイルを表示したくなる場合がときどきあります。 そういったときに Finder の設定からでも設定変更ができますが、コマンドでやれるようにしておくと便利です。 以下のコマンドで「非表示ファイルを表示する設定」…

Git で容量が大きなリポジトリの一部だけダウンロードする方法

Git でリポジトリの一部だけをダウンロードする方法についてです。 たとえば次のようなときにはリポジトリの全体ではなく一部分だけをダウンロードしたくなります。 リポジトリの容量が大きい場合 通信量を抑えたい場合 見たい部分がリポジトリの一部分だけの場合 早速結論ですが、次のよう…

Drupal 7 でルートディレクトリを移動するとページが見れなくなるエラー

Drupal があるルートディレクトリを移動したりリネームしたりするとエラーが出てしまいページが見れなくなります。 エラー 私の環境では次のようなエラーが出ました。出てくるエラーは状況により変わることがあるようです。 原因 正確な原因は不明のままですが、キャッシュ周りが怪しそう…

Drupal 7 で cron を実行しようとすると「実行中です」と出て実行できないエラー

Drush を使って cron を実行しようとすると次のようなエラーが出てしまい実行できないことがあります。 原因 このエラーが起こるのは、 cron プロセスがすでに実行中のときか、実行中でなければ前回の cron 実行中に処理が途中で終了し関連データが残った場合に多いようで…

MacOS でオフライン時に Dnsmasq の設定が使えない問題

Mac で開発用のドメインを利用するのに Dnsmasq を使っているのですが、ネットワークインタフェースがすべて無効な場合にはその DNS 設定が利用できません。 結論として、この問題に対しては現状よい解決方法はないようで、 WiFi ネットワークを有効にするか /etc/…

Git で一部のファイルのみ特定のコミットの状態に revert する方法

Git でローカルリポジトリの一部のファイルのみ以前の状態に戻す方法を。 いくつか方法がありますが、 git diff と patch を使う方法がかんたんなのではないかと思います。 たとえば .htaccess を最終コミットのひとつ前の状態に戻したい場合は次のよ…

Apache の設定ファイルにエラーがないか確認する方法

Apache の設定ファイルにエラーがないかを確認するには次の 2 つのコマンドのいずれかを使用します。 問題のない場合は Syntax OK という文言が標準エラーに返ってきます。 httpd と apachectl のどちらが使えるかは Linux のディストリビ…

Sublime Text 2 で Docblockr の日本語入力問題を解決する方法

Sublime Text 2 に DockBlockr というパッケージがあります。 これは PHP の「 PHPDoc 」など関数の説明コメントを記述するのをサポートするためのパッケージです。 このパッケージを入れてコメント内に日本語を書こうとすると Enter 入力時に未確…

Drupal 7 で Features モジュールがアンインストールできないときの解決方法

Drupal 7 で Features モジュールをアンインストールしようとすると以下のエラーが出てアンインストールができない場合があります。 エラー 原因 原因は、アンインストールの処理内で Features モジュールの関数 features_get_components…

SD カードに Raspbian をインストールする方法 for Mac

SD カードに Raspberry Pi 用の OS である「 Raspbian 」を Mac でインストールする方法についてご紹介します。 「インストール」という表現は正確ではないかもしれません。より正確には「 Raspberry Pi で Raspbian が起動するような…

Bash で Tab 補完の大文字小文字の区別をなくす方法

Bash で Tab 補完の際の大文字小文字の区別をするにはファイル ~/.inputrc に次の 1 行を追加します。ファイルが存在しない場合は新規作成すれば OK です。 この設定が有効になるにはターミナルを新たに起動する必要があるかと思います。上記の内容を保存したらい…

ドットファイルを Dropbox 以下に移動させシンボリックリンクを張る方法

以下の関数を登録して使います。 次のようにして使います。 特に関数を作成する必要はありませんが、多用する場合は .bashrc などで定義しておくと便利です。

Drupal 7 でなるべく多くのエラーを画面に表示するための設定

settings.php に次の行を追加します。 すると、エラー発生時はなるべく画面に表示することができます。開発用なので本番サイトでは必ず削除するようにしましょう。ネタ元は Definitive guide to Drupal 7 です。

Git コマンドでブランチ名に問題があるときのエラー

エラー 原因 原因は HEAD という名前のブランチ(あるいはタグ)が作成されていることです。 Git において HEAD は先頭コミットを指す予約語なので HEAD という名前を使うと上記警告が出ます。 対処方法 HEAD という名前のブランチを削除、あるいはリネーム…

Drupal 7 でテーマの .info ファイルのスタイルシートの記述が間違っている場合のエラー

エラー 原因 / 対処方法 原因は有効にしているテーマの .info ファイル内のスタイルシートなどの設定が間違っていることです。よくあるのは次のまちがい。正の方に修正してキャッシュをクリアしたら直ります。 誤: 正: all の部分には all screen pr…

Raspberry Pi で IP アドレスを固定に変更する方法

Raspberry Pi で IP アドレスを固定に変更する方法について。 Raspberry Pi の場合は /etc/network/interfaces に IP アドレスに関する設定が書かれているのでこちらを編集します。 元に戻せるか不安な方はバックアップを取ってお…

PHP の uploadprogress をさくらのレンタルサーバーで使う方法

uploadprogress をさくらのレンタルサーバーで利用する方法をご紹介します。全体的な流れとしては以下のとおりとなります。 uploadprogress をインストール php.ini に設定行を追加 具体的には以下のとおりに行うとよいでしょう。 まずは以下のコマ…

PHP の APC の apc_fcntl_unlock エラー

エラー 発生環境 上記エラーが発生した私の環境は以下のとおりです。 PHP 5.3.35 APC 3.1.9 原因 APC 3.1.9 の既知のバグのようです。次のページで議論され解決されています。 PHP :: Bug #59750 :: Unknown: apc_fcntl…

Drupal 7 で翻訳ファイルディレクトリのパーミッションが適切でないときのエラー

エラー 原因 原因は翻訳ファイル・ディレクトリのパーミッションが書き込み可能でないこと。もしくは、テンポラリーディレクトリのパーミッションが書き込み可能でないこと。 対処方法 「環境設定」「ファイルシステム」の「パブリックファイルシステムパス」以下の languages ディレ…

Drupal 7 でデータベースが立ち上がっていないときのエラー

エラー 原因 データベースが立ち上がっていないときにこのエラーが出ます。 対処方法 対処方法はデータベースを立ち上げることです。

© 2022 gotohayato.com
サイトについてタグアーカイブメッセージを送る