Skip to content

Instantly share code, notes, and snippets.

View zonuexe's full-sized avatar
🤓
PHP is a Lisp. Emacs is Web.

USAMI Kenta zonuexe

🤓
PHP is a Lisp. Emacs is Web.
View GitHub Profile
@zonuexe
zonuexe / phpstan-for-phpstorm.php
Last active March 31, 2021 21:02
PhpStormでPHPStanに無駄なファイルを解析させないラッパースクリプト
#!/usr/bin/php
<?php
/** @license WTFPL http://www.wtfpl.net/ 2020 tadsan */
$base_dir = dirname(__DIR__) . '/';
$new_argv = [__DIR__ . '/phpstan'];
array_shift($argv);
file_put_contents(__DIR__ . '/../phpstan.log', json_encode($argv, JSON_UNESCAPED_SLASHES) . PHP_EOL, FILE_APPEND);
@zonuexe
zonuexe / socket-http.php
Created December 12, 2020 06:05
ソケットでHTTP/1.1通信する
<?php
$request = implode("\r\n", [
'POST /post HTTP/1.1',
'Host: httpbin.org',
'Accept: application/json',
'Content-Type: application/json',
'Connection: close',
'',
json_encode(['foo' => 'bar']),
@zonuexe
zonuexe / kokoro.md
Last active June 13, 2020 09:56
「こころ」携帯小説版

アタシはその人をいつも「センセ」と呼んでいた。だからここでもただセンセと書くだけで本名は秘密。
これはバレちゃうとか気にしてるんじゃなくて、アタシにとって自然だから。
アタシはその人のことを思い出すたびに、すぐ「センセ」といいたくなる。
小説を書いていても気持ちは同じ。イニシャルとかもわざとらしいからヤダ。

アタシがセンセと知り合ったのは鎌倉。その時アタシはまだフリーターだった。
夏休みに海に行ったメル友から「遊ぼうよ」ってメールが届いたからアタシはバイトして
お金を貯めて、遊びに行った。お金が貯まるのに3日かかった。

@zonuexe
zonuexe / fib-recursive.php
Created February 15, 2020 20:35
ジェネレータで無限を手玉に取る修行
<?php
function fib(int $i)
{
return [0, 1][$i] ?? fib($i - 1) + fib($i - 2);
}
var_dump(iterator_to_array(map(Closure::fromCallable('fib'), xrange(1, 24))));
@zonuexe
zonuexe / fib-generator.php
Last active February 15, 2020 20:13
ジェネレータで無限を手玉に取る修行 (2)
<?php
function fibonacci()
{
$i = 0;
$j = 1;
while (true) {
yield $i;
[$i, $j] = [$j, $i + $j];
@zonuexe
zonuexe / 0-util.php
Last active February 15, 2020 17:12
ジェネレータで無限を手玉に取る修行
<?php
function map(Closure $callback, iterable $iter): Generator
{
foreach ($iter as $k => $v) {
yield $k => $callback($v);
}
}
function take(int $n, iterable $iter): Generator
@zonuexe
zonuexe / DocCommentTest.php
Created November 19, 2019 13:14
リフレクションを使った正規表現のためのDocTest
<?php
namespace PixivTest\Util\RegexPattern;
/**
* 正規表現のためのDocTest
*
* {@see \Util_RegexPattern} クラスの定数定義ごとに正規表現をテストする。
*
* ## 記法
@zonuexe
zonuexe / ast-example.php
Created October 30, 2019 10:39
php-astで解析結果をそれっぽく表示する
<?php
$code = <<<'EoPHP'
<?php
if (1 == 1) {
echo 'a';
} else {
echo $b;
}
EoPHP;
@zonuexe
zonuexe / vim-as-a-text-processor.md
Created September 4, 2019 15:10
LT proposal for VimConf 2019

テキストプロセッサとしてのVim

Abstract

Vimは高機能なテキストエディタであるばかりか、その機能はVimをバッチモードで起動し、Vim scriptを通じて利用できます。つまりVimはヘッドレスなテキストエディタ、つまりテキストを操作するプロセッサでもあります。このLTではリファクタリングなどのテキスト整形に役立つVimの活用方法について手短にお伝えします。

Self promotion for reviewers

得意なプログラミング言語はPHPとLispです。Vimは2011年から使ってますが素人です。