エルディンガーアルコールフリー レモン ~ ノンアルビール飲み比べ

エルディンガーのアルコールフリー、レモン
ビールにレモンの酸味と小麦の甘みがいい感じに混ざっておいしい。 f:id:nowokay:20210920185331p:plain

瓶に「リフレッシュにピッタリな1本です」って書いてあるとおり、食事と一緒に飲むよりは休憩時間に飲むとよさそう。
なので今回はパスタと一緒ではない。

原材料は「小麦麦芽、大麦麦芽、ホップ、酵母」といったエルディンガーに「果糖、レモン果汁、レモンエキス、アセロラ果汁」を混ぜたものになってる。
アルコール度数は0.2%。エルディンガーアルコールフリーが0.4%なので、少し薄まっている。

MARUKUから6本単位で買えます。
大人の味わい エルディンガー アルコールフリー レモン330ml ボトル – MARUKU
1本あたり286円

アマゾンではここから選べるけど在庫切れ

他のノンアルビールについてはこちら。

常陸野ネスト ノン・エール ~ ノンアルビール飲み比べ

常陸野ネストのノンアル
日本の低アルコールビールでいちばんうまい
f:id:nowokay:20210919171339p:plain

おいしい。エールの味がする。
苦めで、ホップの香りもしっかりあって、クラフトビール感があります。
わかりやすく言うと よなよなエールのノンアル版。実際には常陸野ネスト ペールエールのノンアル版というのがいいのだろうけど、伝わりやすさ・・・

ノンアルコールというにはちょっとアルコール高めの0.3%
原材料は麦芽(外国製造)、ホップと炭酸です。


1本あたり240円ですね。

他のノンアルビールについてはこちら。

モレッティゼロ ~ ノンアルビール飲み比べ

イタリアビール、モレッティのノンアル
カートに行くときに早起きしたら @at_tun さんがごほうびにくれた。ありがとう! f:id:nowokay:20210918174325p:plain

0.0%という表記だけど実際には0.05%らしい。 クリーミーで、アロマの匂いがして、ビールでいうとエーデルワイスのような味です。

原材料は水・麦芽・ホップ・アロマ
モレッティビールにはコーンが入っているので、モレッティゼロにもコーンが入ってるかなと思いきや、入ってないようです。

だいたいすぐ品切れになるのだけど、飲み比べセットに入ってるものがありますね。

0.05%がどのくらいのアルコールかというと、グレープフルーツ程度、みかん未満という感じか。
f:id:nowokay:20210918175030p:plain
https://www.jstage.jst.go.jp/article/shokueishi1960/33/6/33_6_619/_pdf

他のノンアルビールについてはこちら。

「写経」の原典

書籍とかのサンプルコードをそのまま入力して勉強することを「写経」というけども、それを言い出したのは角谷さん、というメモ。
写経は言葉ではなく心で理解するのが大事。

恐らく2005年7月ごろではないかと思われる。
この夏は写経が来るね, 地震が来た - 角谷HTML化計画(2005-07-23)

角谷さんのブログでの初出も7/15だけど、babieさんのコメントを見るとこの時期にまわりで語ってたことを推しはかることができる。
『カンフーハッスル コレクターズ・エディション』, 『ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道』 - 角谷HTML化計画(2005-07-15)

このころ角谷さんはPofEAA読書会などたくさんの勉強会を主催していたので、そこで広めていたんじゃないだろうか。そもそも「勉強会」という言葉も定着させてないか?

t_wadaの「以前の現場に通いながら」という話はここで語られてる。
第 43 回 和田卓人 さんの巻 | オブジェクトの広場

関数型インタフェースまとめ

Javaには関数型インタフェースがたくさん用意されてるのだけど、なにがあってなにがないのかとかわかりにくいのでまとめている。

ここの最後にまとめていたのだけど、検索しづらいので独立させた
https://nowokay.hatenablog.com/entry/20130824/1377300917

しかし見れたもんじゃないな・・・
下のほうに再掲

第一引数 第二引数 void int long double boolean object R (T=U=R)
    Runnable IntSupplier LongSupplier DoubleSupplier BooleanSupplier Supplier  
int   IntConsumer IntUnaryOperator IntToLongFunction IntToDoubleFunction IntPredicate IntFunction  
int int   IntBinaryOperator          
long   LongConsumer LongToIntFunction LongUnaryOperator LongToDoubleFunction LongPredicate LongFunction  
long long     LongBinaryOperator        
double   DoubleConsumer DoubleToIntFunction DoubleToLongFunction DoubleUnaryOperator DoublePredicate DoubleFunction  
double double       DoubleBinaryOperator      
ObjectT   Consumer ToIntFunction ToLongFunction ToDoubleFunction Predicate Function UnaryOperator
ObjectT ObjectU BiConsumer ToIntBiFunction ToLongBiFunciton ToDoubleBiFunction BiPredicate BiFunction BinaryOperator
ObjectT int ObjIntConsumer            
ObjectT long ObjLongConsumer            
ObjectT double ObjDoubleConsumer            




























第一引数 第二引数 void int long double boolean object R (T=U=R)
    Runnable IntSupplier LongSupplier DoubleSupplier BooleanSupplier Supplier  
int   IntConsumer IntUnaryOperator IntToLongFunction IntToDoubleFunction IntPredicate IntFunction  
int int   IntBinaryOperator          
long   LongConsumer LongToIntFunction LongUnaryOperator LongToDoubleFunction LongPredicate LongFunction  
long long     LongBinaryOperator        
double   DoubleConsumer DoubleToIntFunction DoubleToLongFunction DoubleUnaryOperator DoublePredicate DoubleFunction  
double double       DoubleBinaryOperator      
ObjectT   Consumer ToIntFunction ToLongFunction ToDoubleFunction Predicate Function UnaryOperator
ObjectT ObjectU BiConsumer ToIntBiFunction ToLongBiFunciton ToDoubleBiFunction BiPredicate BiFunction BinaryOperator
ObjectT int ObjIntConsumer            
ObjectT long ObjLongConsumer            
ObjectT double ObjDoubleConsumer            

20年前にPHPでJavaカスタムタグのようなものを実装していた

2001年くらいにPHPJavaカスタムタグのようなものを実装したのを発掘したので放流。

PHPでJavaのカスタムタグっぽいものを実装した2001年 · GitHub

メーリングリストでやりとりをしてたときに
「できらぁ!PHPJavaカスタムタグの実装できらぁ!」
「え、PHPJavaカスタムタグを?」
ってなって、一晩でがーっと作った記憶。
自分だけしか使わない前提で、%var%で変数が埋め込まれる程度のものを作ったのだけど、1年くらい実プロジェクトで使っていた。
600行くらいでコンパクト。
当時は元気があったんだな。

PHP4の時代で、テンプレートエンジンもなかったというかPHP自体がテンプレートエンジンというイメージで まだテンプレートエンジン需要も あまりなかったんじゃないかと。
SynfonyやZend Frameworkもまだ出ていなかった。

こんな感じのテンプレートを書く。

<php:switch condition="%user_type%">
    <php:case value="2">
        <h1>提案書一覧</h1>
    </php:case>
</php:switch>
<pg:exec result="rtn">
    <pg:title field="youki_type_cd">
        <b><pg:result field="youki_type_nm">種類</pg:result></b><br>
        <ul>
    </pg:title>
    <pg:aif href="teian.php?teian=" field="teian_cd"><pg:result field="teian_nm">提案書名</pg:result></pg:aif><br>
    <pg:total field="youki_type_cd">
        </ul>
    </pg:total>
</pg:exec>

そうするとこんなPHPが生成されて、あとはそのままこれを実行する。
そういう動きもJSPのカスタムタグと同じ。
勢いで書いたわりにはよくできてるな。

<?//switch
if (!isset($__phptag_switch_1)) $__phptag_switch_1 = new SwitchTag;
$__phptag_switch_1->parenttag = null;
ob_start();
?><?=$user_type?><?$__phptag_switch_1->attr["condition"] = ob_get_contents();
ob_end_clean();
if ($__phptag_switch_1->doStartTag() == TAG_BODY_INCLUDE){
ob_start();
?>
    <?//case
if (!isset($__phptag_case_2)) $__phptag_case_2 = new CaseTag;
$__phptag_case_2->parenttag = &$__phptag_switch_1;
$__phptag_case_2->attr["value"] = "2";
if ($__phptag_case_2->doStartTag() == TAG_BODY_INCLUDE){
ob_start();
?>
        <h1>提案書一覧</h1>
    <?
$page_content = ob_get_contents();
ob_end_clean();
echo $page_content;
}
$__phptag_case_2->doEndTag();
?>
<?
$page_content = ob_get_contents();
ob_end_clean();
echo $page_content;
}
$__phptag_switch_1->doEndTag();
?>
<?//exec
if (!isset($__phptag_exec_3)) $__phptag_exec_3 = new PgExecTag;
$__phptag_exec_3->parenttag = null;
$__phptag_exec_3->attr["result"] = "rtn";
if ($__phptag_exec_3->doStartTag() == TAG_BODY_INCLUDE){
$__phptag_exec_3->doInitBody();
while(true){
if ($__phptag_exec_3->doBeginBody() == TAG_SKIP_BODY) break;
ob_start();
?>
    <?//title
if (!isset($__phptag_title_4)) $__phptag_title_4 = new PgResultTitleTag;
$__phptag_title_4->parenttag = &$__phptag_exec_3;
$__phptag_title_4->attr["field"] = "youki_type_cd";
if ($__phptag_title_4->doStartTag() == TAG_BODY_INCLUDE){
ob_start();
?>
        <b><?//result
if (!isset($__phptag_result_5)) $__phptag_result_5 = new PgResultTag;
$__phptag_result_5->parenttag = &$__phptag_title_4;
$__phptag_result_5->attr["field"] = "youki_type_nm";
if ($__phptag_result_5->doStartTag() == TAG_BODY_INCLUDE){
ob_start();
?>種類<?
$page_content = ob_get_contents();
ob_end_clean();
echo $page_content;
}
$__phptag_result_5->doEndTag();
?></b><br>
        <ul>
    <?
$page_content = ob_get_contents();
ob_end_clean();
echo $page_content;
}
$__phptag_title_4->doEndTag();
?>
    <?//aif
if (!isset($__phptag_aif_6)) $__phptag_aif_6 = new PgResultIfLinkTag;
$__phptag_aif_6->parenttag = &$__phptag_exec_3;
$__phptag_aif_6->attr["href"] = "teian.php?teian=";
$__phptag_aif_6->attr["field"] = "teian_cd";
if ($__phptag_aif_6->doStartTag() == TAG_BODY_INCLUDE){
ob_start();
?><?//result
if (!isset($__phptag_result_7)) $__phptag_result_7 = new PgResultTag;
$__phptag_result_7->parenttag = &$__phptag_aif_6;
$__phptag_result_7->attr["field"] = "teian_nm";
if ($__phptag_result_7->doStartTag() == TAG_BODY_INCLUDE){
ob_start();
?>提案書名<?
$page_content = ob_get_contents();
ob_end_clean();
echo $page_content;
}
$__phptag_result_7->doEndTag();
?><?
$page_content = ob_get_contents();
ob_end_clean();
echo $page_content;
}
$__phptag_aif_6->doEndTag();
?><br>
    <?//total
if (!isset($__phptag_total_8)) $__phptag_total_8 = new PgResultTotalTag;
$__phptag_total_8->parenttag = &$__phptag_exec_3;
$__phptag_total_8->attr["field"] = "type_cd";
if ($__phptag_total_8->doStartTag() == TAG_BODY_INCLUDE){
$__phptag_total_8->doInitBody();
while(true){
if ($__phptag_total_8->doBeginBody() == TAG_SKIP_BODY) break;
ob_start();
?>
        </ul>
    <?
$page_content = ob_get_contents();
ob_end_clean();
if ($__phptag_total_8->doAfterBody($page_content) != TAG_BODY_AGAIN) break;
}
}
$__phptag_total_8->doEndTag();
?>
<?
$page_content = ob_get_contents();
ob_end_clean();
if ($__phptag_exec_3->doAfterBody($page_content) != TAG_BODY_AGAIN) break;
}
}
$__phptag_exec_3->doEndTag();
?>