PHP Composer の導入
installer のダウンロード
curl -sS https://getcomposer.org/installer | php
コマンドの確認するなら、
php composer.phar
local/bin/compoer に移動しておく。
mv composer.phar /usr/local/bin/composer
~/composer/composer.phar とかにしている人もいるので、ここじゃなきゃいけない、みたいなのはないのかな。分からなくなったら、
which composer
とかすればいい。
プロジェクトを作る
新しくプロジェクトを作るなら、
composer init
で、対話形式に composer.json が作れる。最初に、
Package name (<vendor>/<name>)
と ベンダー名/パッケージ名
が聞かれるので、このスラッシュ形式で指定。
Description
プロジェクトの説明を記入。
Author
name <mail address>
の形式で指定。
Minimum Stability
最小限の「安定度合い」的なものを聞かれるので、dev
, alpha
, beta
, RC
, and stable
から適時選択。デフォルトは、stable
。
Package Type
プロジェクトなら project
としてれば良さそう。デフォルトは library
。
License
オプショナルだけど、ドキュメントは、
Optional, but it is highly recommended to supply this.
と言っている。まぁ、そうだな。
Search for a package:
いよいよパッケージ。例えば、phpunit
など。
[0] phpunit/phpunit [1] eher/phpunit [2] jbzoo/phpunit [3] sugared-rim/phpunit [4] hiqdev/php-units [5] task/phpunit [6] phpunit/phpunit-mock-objects [7] phpunit/phpunit-selenium [8] phpunit/phpunit-story [9] phpunit/phpunit-skeleton-generator [10] phpunit/dbunit [11] phpunit/phpunit-dom-assertions [12] phpunit/phpcov [13] phpunit/phpunit-mink-trait [14] phpunit/php-timer
ばーっと候補がでるので、0
を入力。
Enter the version constraint to require (or leave blank to use the latest version)
最新版を使うなら、そのまま return で進む。
Using version ^6.1 for phpunit/phpunit Search for a package:
うっす。もういらないので、return で進む。
{ "name": "hoge/composer-test", "description": "this is a test.", "type": "project", "require-dev": { "phpunit/phpunit": "^6.1" }, "authors": [ { "name": "hoge", "email": "hoge@huga.com" } ], "require": {} } Do you confirm generation [yes]?
こんな json ができれば、OK。yes
で終了。ls
で確認すれば、composer.json がディレクトリに作成されている。
パッケージのインストール
composer install
と、手元の環境の PHP が 5.5.36
だったので、
Problem 1 - phpunit/phpunit 6.1.4 requires php ^7.0 -> your PHP version (5.5.36) does not satisfy that requirement. - phpunit/phpunit 6.1.3 requires php ^7.0 -> your PHP version (5.5.36) does not satisfy that requirement. - phpunit/phpunit 6.1.2 requires php ^7.0 -> your PHP version (5.5.36) does not satisfy that requirement. - phpunit/phpunit 6.1.1 requires php ^7.0 -> your PHP version (5.5.36) does not satisfy that requirement. - phpunit/phpunit 6.1.0 requires php ^7.0 -> your PHP version (5.5.36) does not satisfy that requirement. - Installation request for phpunit/phpunit ^6.1 -> satisfiable by phpunit/phpunit[6.1.0, 6.1.1, 6.1.2, 6.1.3, 6.1.4].
composer.json を編集して、phpunit のバージョンを phpunit-4.8.35.phar
とする。
"require-dev": { "phpunit/phpunit": "4.8.35" },
Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 21 installs, 0 updates, 0 removals - Installing symfony/yaml (v3.2.8): Downloading (100%) - Installing sebastian/version (1.0.6): Downloading (100%) - Installing sebastian/global-state (1.1.1): Downloading (100%) - Installing sebastian/recursion-context (1.0.5): Downloading (100%) - Installing sebastian/exporter (1.2.2): Downloading (100%) - Installing sebastian/environment (1.3.8): Downloading (100%) - Installing sebastian/diff (1.4.3): Downloading (100%) - Installing sebastian/comparator (1.2.4): Downloading (100%) - Installing doctrine/instantiator (1.0.5): Downloading (100%) - Installing phpunit/php-text-template (1.2.1): Downloading (100%) - Installing phpunit/phpunit-mock-objects (2.3.8):Downloading (100%) ) - Installing phpunit/php-timer (1.0.9): Downloading (100%) - Installing phpunit/php-file-iterator (1.4.2): Downloading (100%) - Installing phpunit/php-token-stream (1.4.11): Downloading (100%) - Installing phpunit/php-code-coverage (2.2.4): Downloading (100%) - Installing webmozart/assert (1.2.0): Downloading (100%) - Installing phpdocumentor/reflection-common (1.0): Downloading (100%) - Installing phpdocumentor/type-resolver (0.2.1): Downloading (100%) - Installing phpdocumentor/reflection-docblock (3.1.1): Downloading (100%) - Installing phpspec/prophecy (v1.7.0): Downloading (100%) - Installing phpunit/phpunit (4.8.35): Downloading (100%) symfony/yaml suggests installing symfony/console (For validating YAML files using the lint command) sebastian/global-state suggests installing ext-uopz (*) phpunit/php-code-coverage suggests installing ext-xdebug (>=2.2.1) phpunit/phpunit suggests installing phpunit/php-invoker (~1.1) Writing lock file Generating autoload files
依存モジュールもまとめて、いっぱい。 ls
すると、
composer.json composer.lock vendor
lock ファイル と vendor ディレクトリができている。vendor という名前のディレクトリに外部の依存モジュールが格納されるので、.gitignore にこのディレクトリを指定しておけば OK。
を参考。
パッケージの追加
composer require cebe/markdown
require
で追加できる。composer.json と lock ファイルも更新される。バージョン指定する場合は、
composer require hoge/huge:1.1.11
みたいにする。
参考
Markdown を PDF にする
前提
node.js が動くこと。
npm で markdown-pdf をインストール
npm install -g markdown-pdf
pdf に変換
markdown-pdf hoge.md
このままだとスタイルがないので、まず、github のスタイルを拝借。
https://gist.github.com/andyferra/2554919
css のオプションをつけて、
markdown-pdf hoge -s github.css
なお、6系の node.js だとエラーがでるけど、出力はちゃんとできる。
(node:63631) Warning: Possible EventEmitter memory leak detected. 2 end listeners added. Use emitter.setMaxListeners() to increase limit
PHPでOS差を吸収する定数を使う
PHP_EOL
改行コードを直接指定すると、
$hoge = "hoge"; echo $hoge, "\n";
みたいにしがち、これだとCRLFに対応できないので、PHP_EOLを使って、
echo $hoge, PHP_EOL ;
にしたほうがよい。環境の違いで、出力をかえてくれるみたい。ちなみに、EOLはEnd of Lineの略。
改行 | 改行コード |
---|---|
LF | \n |
CELF | \r\n |
DIRECTORY_SEPARATOR
ディレクトリパスもつい、
$hoge = "hoge"; $fuga = "fuga"; echo $hoge, "/", $fuga, PHP_EOL;
みたいにしちゃうけど、
echo $hoge, DIRECTORY_SEPARATOR, $fuga, PHP_EOL;
で環境差を吸収できる。
他、PATH_SEPARATORなんかもあるみたい。なお、PHP_OSでOS種を返してくれる。
HHKB Professional JP を購入!
言わずと知れた、Happy Hacking Keyboard をついに購入しました。
ずっと MacBook Pro のノートキーボードを使っていましたが、毎日使うものなんだから拘りを持って、というか、より使いやすいものにして、コスト削減・効率化を測れないかなぁと期待し、思い切って購入です。
まず、プログラミング以外にも日常的に日本語の文章を書くので、少し迷いましたが、英字配列ではなく、日本語配列にしました。そして、HHKBと言えば、「白」が一般的ですが、黒が好きな自分なので、「墨」というカラーのモデルにしています。
気になるのは、Type-Sではないので、音がすごい大きい!!個人的には、「押下の心地良さ」と「周囲に気を使う心地悪さ」だったら、後者が前者を食ってしまうんだけど、お家で使う用なので……前者を優先!!
慣れるまで今しばらくかかりそうです。
追記(2017/04/22)
ドライバをインストールして初期設定のまま使っていると、左の ♢
キーと Alt
がそれぞれ「⌘(コマンド)」と「⌥(オプション)」で、MackBook Pro の配置と逆でした!背面スイッチの5番目をオンにすれば、切り替えられます。
スイッチがかなり小さく狭いところにあるので、爪楊枝とかないといじれない感じです。
はてなブログを始めました
ブログを始めるなら、まずは使い方を覚えないといけないので、とりあえず、Markdown のチェック。
Markdown のおさらい
ヘッドライン
#
はヘッドライン。html でいう <h1>
。
##
###
で階層を増やせる。html でいう <h2>
とか <h3>
とか。
# h1 ## h2 ### h3 #### h4 ##### h5
リスト
-
と *
と +
はリスト。html でいう <ul><i>
。
- リスト1
- リスト2
- リスト3
番号付きリスト
数字.
は番号付きリスト。html でいう <ol><li>
- リスト
- リスト
- リスト
ボールド
** **
はボールド。html でいう <strong>
ふとってる
イタリック
_ _
はイタリック。html でいう <em>
斜めってる
打ち消し線
~~ ~~
は打ち消し線。html でいう <s>
打ち消されてる
コード
``
はコード。html でいう <code>
(インライン)
public class Quote
引用
>
は引用。CSS で border-left: solid 4px #666;
とかそんなん。
All the world is a stage.
リンク
[テキスト](url)
はリンク。html でいう <a href="url">
。
画像
![代替文字](url)
は画像。html でいう <img src="url" alt="代替文字">
。
境界線
***
とか ---
は境界線。CSS で border-bottom:solid 1px #666
とかそんなん。
注釈
[^1]
は注釈。[^1]: 文章
で注釈内容。
ここに注釈。1
チェックボックス
- [ ] 選択肢1
はチェックボックス。html でいう <input type="checkbox">
。
- [x] 選択肢1
はチェック付き。html でいう <input type="checkbox" checked="checked">
。
*チェックボックスが「はてなブログ」でレンダリングされない……
ざっくり主要どころはこんなところかな。
その他のマークアップ
「続きを読む」機能
<!-- more -->
は「続きを読む」的なやつらしい
目次
[:contents]
は目次を作ってくれる
-
注釈です。↩