作成者別アーカイブ: auther

いまさらii

誰が見てるんだ.
というブログの更新だ.

● 久しぶりに

塾講師の夏期講習の中休みだった.
うちの何LDKか忘れた戸建ての中には,なんというか

● やばい歓声が

響き渡る.
6歳の女の子と,小学6年になる男の子のだ.
後者は,若干抵抗を受けるかもしれない.

● 僕は

塾講師を17年ほどやってきた.
この時期は,戦いだ.(夏期講習)

こちとら45で夏期講習,13時ぐらいから22時まで延々授業してんだ.
なめんな.
毎日近所のヨーカドーで『アジフライ2枚で270いくら』を食べて,アイスモナカを食んで授業やってんじゃい.

● で

毎晩帰ってきては,断酒したと家族に言っいる酒を
グビグビ飲んでは,飲んでないふりをして翌朝また職場に向かう.

比喩ではなく,僕のかばんにはたくさんの酒の空箱が眠っているわけだ.

● 今日

同じように日が変わる頃に部屋に戻り,
僕と,僕の当時の彼女が

● そうしたかったように

キッチンとリビングっぽい所を分ける何かを見ればその向こうに,いくらかの空間がある.
TVと,敷居の向こうに建立からずっと無人の謎の和室があるはずだ.

暗くて見えんが.

● で

飲んではないはずの酒を飲みながらそのこっち側に立って,
蛇口を見るともなしに見ながら,
遠くになるに伴って暗くなる向こう3間の彼方を見ると

● 昨日よりは

すこし散らからなくなってる何かが見える.

あの緑の絨毯の上に揺蕩うように

● 6歳の彼女がいる

その言動を冷笑するようになったお兄ちゃんが,
小学6年生として,その暗がりに佇んでいる.

● なんだこの

霊現象は.
なんなんだなんだ.1990年代の林雄司さんの言葉だ.
なんなんだなんだ.

すげえ.

今はデイリーポータルZの偉い人なんだっけか.
テキトーに生き得るサラリーマンの象徴だったはずのオールマイトがその力を認められて大忙しになるということを誰かから聞きながら僕はよりにもよって塾講師になった.

● Mr.Childrenの『くるみ』の

PV以来だ.

折しも昨日まで朝昼晩とこのリビングに続くカオスを見てきた.

盆休みだったからね.

6歳の彼女は「遊ぼ」と30秒ごとに言う.

● 娘6歳

誰に似たものかと,みんなで言い合うわけだ.

候補1:SOBO
攻撃:★★★★★
防御:★★★★☆
スタンド:出刃包丁

僕の祖母だ.
強い.

いっぺん,論理的に完全に言い負かしたら,出刃包丁を出してきた.
「おばあちゃんはなあ,おじいちゃんが死んでから,いつでも死ねるようになあ」

包丁を,家の各所に配置してるという.

殺人未遂だ.

正確には「さあ,そんなに儂が憎ければこの包丁を付き押せ,お前の目の真ん前でハラワタのたくり回して死んでやらぁ」と己の孫に対して吐き捨てたのだ.
一生忘れない.来世出会っても忘れないつもりだし,今生この人の恥を人々に語って僕は散ろう.

● 彼女いわく

例えばお前(僕)のベッドの下にもなあ

包丁があるという.

((シャキーン)🌟)

果たしてあった.

僕がベッドで串刺しになったらどうするつもりだったんだろう.と当時(中2)の僕は思ったわけだが,
今の(45歳)僕が思うに,

それで僕が死んでも,何かしらの言い訳をして自分は助かると思ってたんだろうなあ.
あのばーちゃんは最悪だった.

他のエピソード

(1)死ぬときは1人説
 人は生まれるときも一人,死ぬときも一人,だから信じられるのは自分ひとり.誰も信用するな.
 ーーという言葉をどうやったら信じられるのか,自己矛盾を孕む.と僕が言うから僕は疎まれたのかもしれない.僕は当時中2.

(2)自分の命が一番大事説
 人は自分の命が一番大事.人を殺せば自分が助かるなら,誰でも誰でも殺す.だから気をつけろ.
 ーーということは,おばあちゃんも信じないほうがいいの?と聞くと「うぐ」と言って黙った.正直な人だった.

● 今思えば

なかなかの含蓄だった.
ただ,僕はそれを聞くだけの耳を有しなかったのと,一般化したときの自己矛盾を均すだけの時間が彼女になかった.

● という

わけもあり,僕の6歳の娘に対する目は色々だ.

登場人物2:

候補1:HAHA
攻撃:★★★★★
防御:★★★★★
スタンド:口

僕が知る最強の人物だ.
僕の母だ.

親戚からの評判もほぼ上記の通り.
18年間ずっと近くにいた身からすると,

● 18年間一度も

ま じ で

● 謝らなかった人

として旧約聖書に今更ながら列挙してもらったほうがいいかもしれないモーゼ.
18歳の頃,思い返して,ガチで震えた.

● 情状を

酌量する余地はある.

● かの祖父

何とかさんという人は,第2次大戦で腎臓を患い,塩気を伴ったあらゆる食事が禁忌.

塩が使えないというのは,相当なストレスになりそうだが

● その祖父

は,ずっとそれから苛々してたらしく,
寝たきりなのに,木刀をずっと握って寝たきりをしてらしたらしく(本気で器用だと思う)

● 娘息子が

気に食わないことをすると
その木刀を活用して,滅多打ちにされたとは,その長女(他界・伯母)が過去に言ってた.

たぶん,憂さ晴らしだろう,というのは

● 中2病の

僕は「思わなかった」が,当時はね.

ただ.

● 今

そのおっさんと
同じぐらいの齢になって,その程度の男児がやることとして思うに

● たぶん,憂さ晴らしだろう

ひどいもんだ.
どんな理由があろうが,病床で自分の食事もままならぬまま,息子娘を木刀で殴打する気持ちというのが僕には,

● いまいち

というか,微塵も納得と共感できないでいる.

いや,僕は数年間(数日間かも),塩の味のしない食事を取り続けるという経験がないから,
わからない.

● けど

少なくとも,そのジジィ本人でもなく,実際に殴られまくった伯母が,

● あれを

あたかも自分の
自分たち(兄弟姉妹)の武勇伝のように,小学生の僕と従兄に語ったあの伯母はどんな気分だったんだろう.

「殴られた私達」
という連合でも感じとってたのか.
それをその子達である,僕と従兄と,義理の従兄(当時・その後他人に)へのカタルシスとして昇華しようとしてたのか.甚だ迷惑な話だ.

ちょっとした下らない真夏の怪談よりおどろおどろしい.
そんなジジィの血が自分にも流れてる・・だと?

あの伯母にはまだ恨みがましい事柄が残る.
それは今回書く内容ではない.

● とにかく

そんな経緯があって,

● 我が母は

僕の見る中,人に謝ったことが生まれてこちら

● 一度もない

一度などは

「いいか,車に社名を載せてる奴らは弱い,見てろ」

と言って,社名の乗ってる車の癪に障ると言って,小学生ぐらいの僕から見れば「言いがかり」をつけて,謝罪させて見せていた.
当時の僕は「成程,社会にはそういう規則があるのか」ぐらいに思ってたが

● 今

僕が塾講師をやりながら,クレームを食らって

● ちょうど今から

13年ぐらい前,1年間怒鳴られ続けたことがあって

● その時の上司は

一生許さないけど
(ついぞ矢面に出ず,僕に電話掛けさせつづけたからなあ,本当,苦しみながらあれすればいい,と思ってたら不倫の果て振られてうつ病になって降格に次ぐ降格してるけど)
一生許す気にならない.

● まあ

そんな経験があって,

● なんの話だっけ

そうそう,身近な最強伝説

その3
僕の大好きな友人:
攻撃力:★★★☆☆
防御力:★★★☆☆
スタンド:攻防100倍

言わずもがな,僕の最強の,my better halfだ.
my strongest half って意味を成すのだろうか.英語として.

お義父さんから,

「おい,ほんまにええんか,こいつ」

● 「キッツいぞ」

知っとるんか,ええ,

と言われた方.

−存じ上げません,今の所は

と奏上したわけだが,当時.
今の所,「思慮深い」以外の形容詞は思いついてませんよ,お義父さん.

● 返品不可

と言われて一緒になった僕の better half曰く

この子(6歳)が性格キツイのは,もう分かってる,,とのこと

● 否,否否

それ以外に,いろんな血がある.

2歳で,喧嘩したあと,しばらくして油断した8歳の兄に,iPadを叩きつけた殺人未遂見るに

● あの子には

S&B以上のなにかのブレンドがなされてる.

● リビングで

家族には「やめた」と言ったはずの酒をぐびぐび飲みながら
自分の半生で出会った色んな人を思い出した.

あの闇からまだまだ出てくる.

● 例えば

平気で嘘を付く(嘘だとほぼ証明できない嘘だけ)小6のお兄さんには,間違いなく邪悪な僕の血が流れてる.

だから彼が泣いてても,僕は手放しでは信用してない.

● というのは

あの闇の中には,
僕が佇んでる.
白けた姿で.
うつむいて,
きっと顔はにやけてるはずだ.

見えないようにして.

ああ,あんなこと,しなきゃ良かった.だとすれば僕の子を信じられたのに.

いやあ,出てくる出てくる.
このリビングの向こうに滲むように広がる薄暗い和室からだ.なんだあの和室,どうなってんだ.

● 疲れたのかも

しれない.
毎日の仕事で.

仕事で小中学生の子たちと相対峙する際にひた隠してる何かが
偉そうにその深淵からこちらを見てる気がしている.

深淵から,あちらが,こちらを.

● だから

見返している.

● だが負けそうだ

今回は,娘の言動を最小限に抑えながら娘について血の滴るような考察をするというのをやってみた.

息子verはまた今度酩酊したら書こう.

久しぶりに
what i’ve seen, felt, and listened to を書く.

疲れてんのかな.

SDL2でC++でテトリスを作る練習してみた

 久しぶりにプログラミングしてみた。
 YouTubeを見てると、「テトリスを作ってみた」というのが沢山あって、なんか、燃えてくるわけだ。

 が

 

● 小一時間どころか

 6時間ぐらいかかった。

 

● しかも

 「次に降ってくるやつ」が表示されてないし、GAME OVERもない。恥と外聞もない。

● で、

 今回色々引っかかったので、メモしておく。

 

● 引っかかったのは下記
  (1)SDL_CreateWindow()でウインドウが表示されない
     前はCreateした後にSDL_Delay(3000);とかで表示されてたのに・・・

  (2)memcpy()ではsizeof()×カウント数を使う
     int配列を1バイトずつ数えないために

  (3)g++でSDL2リンク時「undefined reference to ‘SDL_Init’」になる
     linuxで動かそうとしたら、リンクエラーになり詰まった。ライブラリ指定位置をコマンドラインで変えたら、動く。

  (4)矩形領域のコピー処理
     そりゃそうだ、というバグ。結局、力技でなんとかする。

 

(1)SDL_CreateWindow()でウインドウが表示されない

 昔(4年前:「macでSDL2.0とC++でゲーム画面を表示」)は、

  SDL_CreateWindow(..., SDL_WINDOW_SHOWN);
   :
  SDL_Delay(5000);

 みたくやれば、ウインドウが表示されて、5秒待ってプログラムが終了って動いたはず。

 

● 結論

 stack over flowによると、

  SDL_PollEvent();

 しないと表示されないよ。とのこと。ウハー

 確かに表示された。
 めちゃビビった。

 

● 教えてくれたのは

やはりstack over flowだった。


>ステムにイベントループ処理を走らせる処理を入れる必要がある
>簡単なのは、ループで待つ代わりに、イベントをpoolする処理を書いとくやり方:

 とのこと。
 Toadさんありがとう。

 

● (2)memcpy()ではsizeof()×カウント数を使う

  int myshape[4][16] = {
    // テトリミノの形の定義ズ
    :
    :
  };
  memcpy(this->shape, myshape, 4*16); // bug!

 これでテトリス表示させたら、テトリミノの形がバグるバグる。
 正しくは

  memcpy(this->shape, myshape, sizeof(int)*4*16); // correct

 初心者でした。

 

● どこかのサイトか本かで

 「Cのポインタ演算は、必ずしもアセンブリでのアドレスと対応しない」というような話を聞いたのを思い出した。

  char a[10];
  int  i[10];
  
  char *pa = a;
  int  *pi = i;
  
  pa++;   // アドレスは1ずつ増加する
  pi++;   // アドレスは2ずつとか4ずつとか、分からんけど1ずつは増加しない

 ということだった。

 

● とにかく

 memcpy()のときは、sizeof()の存在を思い出すようにしようと思った。
 初心者でした。

 

(3)g++でSDL2リンク時「undefined reference to ‘SDL_Init’」になる

 linuxでコンパイルし直そうとしてハマった。
 下記だとエラーになる。

g++ -o executable -lSDL2 aaa.cpp bbb.cpp

 例えば

undefined reference to `SDL_Init'`

 みたいな。
 正しくは

g++ -o executable aaa.cpp bbb.cpp -lSDL2

 みたいに「-lSDL2」を行末に持ってくる。

 

● どこで知ったかってぇ?

 これもまたstack over flow
 世界の殆どの答えがここにある。

>inputのパラメータの順番を変えてみて
>これ前に自分もつまづいた(linuxで)
>これだとエラーが出る

g++ --libs sdl2 sdltest.cpp

>これだと大丈夫

g++ sdltest.cpp --libs sdl2

>inputの引数の順序を変えたらうまくいった。SDL2main(.cpp)をSDL(ライブラリ)より前に置いた

 みたい。4年前の方々ありがとうございます。

 

● (4)矩形領域のコピー処理

 25年ぶり3度めの出場だ。
 学生の頃「?」ってなった話。

 こういうのを、ちょい右下に重なる位置に矩形コピーする処理を書いたときの話。
 → 

 もとの矩形の左上から、1段ずつ赤い囲みの中にコピーしていくと、
 すでに1番上の行が、コピー元の情報を壊してる。

 で、こうなって

 なぞのコピー結果に。

 

● 解決策

 たぶん、どう重なるかで左上→右下のコピーする向きを変えるとうまくいきそう(4種類?)。
 なんだけど、

 

● バグりそうなので

 同サイズのバッファを使って、2回コピー。
 25年前には考えられない富豪的プログラミングでいくことにした。

 →  →  → 

 こんな感じ。

Xcodeでflexつかうとエラーになる時のメモ

半日潰したのでメモ。

● 出てたのは

2つ。
Xcode付属のflex,bisonで下記。

  • (1) flex ver 2.5.: C++11仕様でコンパイルでワーニング
  • (2) bison ver2.x:「%define parser_class_name { Parser }」が通じない

(1)(2)ともにXcode付属のflex/bisonが古いぜ。

● 結論

(1)(2)ともに,flex&bisonをverUpしたがXcodeがそれをガン無視。
 ↓
Scanner.cpp, Parser.hpp, Parser.cppを予めコマンドラインで生成して,Xcodeのプロジェクトに追加することに。
 ↓
今度は,Xcodeの環境で読み込む「#include 」が古いファイルを参照するので,/Application/Xcode.app/〜以下のFlexLexer.hをXcodeに内緒で差し替える
 ↓
ビルド成功(ちょっぴりwarningまだ出るけどね)

ここまで半日格闘。

● (1)flex 2.5.x だと c++11 コンパイルでワーニング

flex 2.5.xは,変数宣言だかにregisterキーワードが使われる。
registerはc++11でdeprecatedに。だから Xcode でコンパイル時にワーニングだらけになる。

こちとら趣味だしワーニングなんで放っとこうかと思ったが,何しろ多量だし気味が悪い。

● 調べると

flex 2.6.xは,registerキーワード吐かなくなったらしい。おお。
早速brewでインストール。

$ brew install flex
$ brew link flex --force

これでScanner.lをコンパイルする。

$ flex -o Scanner.cpp Scanner.l

中身からキレイにregisterが消えた。

● このファイルをXcode

に追加すると,register絡みのワーニングは消えた。

● が

今度はエラーが大量に出るように。

Xcode曰く
Too many errors emitted, stopping now

て。ええ!?

● みると Semantic Issue だそうで

「Member reference type ‘std::istream *’ (aka ‘basic_istream *’) is a pointer; did you mean to use ‘->’?」

みると確かに「yyin」がポインターとして宣言されて,「.」演算子が付されてる。
「yyin.rdbuf(std::cin.rdbuf())」みたくなってて妙だ。
「yyin->rdbuf(std::cin.rdbuf())」では,ってコンパイラが言うのも確かに。

しっかしsemanticエラーたって,flexが吐いたコードだしなあ。
webによっては「もう,自分で.を->に編集しちゃおうか」的な話もあり。

● だが救世主はやはり

webの中に。

● stack overflowというサイト

国内に情報が少ない場合に大体googleでヒットするstack overflowだ。

もう。stack overflowyahoo知恵袋に世界の大半は記録されてるんじゃないか。

上記リンク先のAlex H.さん(stack overflowの方ね)曰く

you might be able to just use a newer “FlexLexer.h” (for example the one from here: https://github.com/westes/flex/blob/master/src/FlexLexer.h)
(新しいほうの”FlexLexer.h”が使える。(例えばこことか))

FlexLexer.hが古いんで,新しいやつダウンロードして使えば?という。

理由はAlex H.さんの予想だと

I believe the issue is an out of sync “FlexLexer.h”. Flex 2.6.0 changed the storage definition of yyin storage for C++ scanners for both the header and the generated source. However I suppose the mac port package is including an out-of-date FlexLexer.h, even though flex itself has been updated. This leads to the mismatch you are seeing as compilation errors.

ということのよう。って英語だらけ。だいたい

  • flex 2.6.0で,yyinの定義が変更になってる
  • flex自体は更新されても,古いまんまの”FlexLexer.h”が読み込まれてるんじゃないか

ということか。

● そこで

仰せの通りここへ行って,FlexLexer.hをダウンロード。
いや実際にはここでcloneをダウンロード。
どこに入れればいいかというと

~$ find /Applications/Xcode.app/ -name "FlexLexer.h"
/Applications/Xcode.app//Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/FlexLexer.h

発見。

これで(1)が解決。
Xcodeにはコマンドラインで作ったScanner.h

$ flex -o Scanner.cpp Scanner.l

を後から読み込ませれば世はすべて事もなし。

● (2) bison ver2.x:「%define parser_class_name { Parser }」が通じない

$ brew install bison
$ brew link bison --force

そして

$ bison -o Parser.cpp Parser.y

を後からXcodeに読み込ませる。

● なんとかおしまい

上記でビルド成功(ちょっぴりwarningまだ出るけどね)。

次は

● 今まで作ってた

SDL2.0のプログラムとマージしてみる。

Apple Watchを買ったら自分の腕のほうが大きかった話

というわけで

買っちゃった。apple watchだ。そしてAirPodsだ。

● 苦節3年

 ずっと欲しい欲しい言ってきたわけだ。apple watch。
 癇症の疲れたお嫁いわく

−もうな,

 欲しい?買えばええやん。もう。

● という

 『ハッピーウエディング前ソング』ヤバイTシャツ屋さん

 だ。

● で

● 勢いで38mm買ったら付属のバンドが小さすぎて手首に巻けませんでした

 という一連の流れを,だいたい

● 56,000円ぐらい掛けてお送りするわけだ

 まずは5月13日。

 届いた。
 前日14時までのネット発注で,翌日午前中に届くというこのサイバーシティ。

● まずは

 AirPodsだ。

 ダンボールを開けるとこんにちはする。

● こんな感じで

 収まってるわけだが,手に持つと

 小さい・・。
 すげえ。

● 開けてく

 いつものカードがこんにちは。

 の下に真珠のように

 ケース&本体。

 の下がライトニングケーブル。

 丸いぜ。

● 続いて,いよいよ本命

 開け口はこんな

 ここを持って剥ぐパターンのやつ。

 なるほどキレイに剥がせるって
 わ
  け

    か

 キャー既にアップルウォッチみたーい♥

● という

 ことを言ってると,いよいよ御大が

 こんにちはする。

 これの

 両端の発泡スチロールは後に,子どもたちのメガネに。

 こんな感じのキャラのあれだ。

 apple watchの中敷きの発泡スチロールまでがアミューズメント。

● 更に開ける

 いつものカード・・。

 

 そのカードをどけると・・

 ・・・・!?

● 高まる鼓動

 これ・・・・・

 俺の腕より短いやん・・。

● 以下,

 動揺しすぎて,撮影できず。
 身体中の毛穴が閉じたり開いたり揺らめいたりする中口元は半笑いで

 もう,ね・・

● 僕の記憶の中では

 こんな

 もうね。

 「おれ うで おおきい。
  あっぽうぉっち おれ ちっちゃい くやしい。」

 て感じだ。だった。巨人かよ。

 しかし,あんなに

● 口の中って乾くんだ

 で,結局。

● 最後の袋だ

 この中には。

● 何となしに

 amazonで発注してた

 これが入ってるはず。
 シルバーリンクブレスレットで2,499円。

 本家だと45,800円。
 その差は43,301円。

 差額が,ほぼ本家の値段だ。

 

● ふとメールを

 チェックすると

 送られてるのは・・・

 ・・・・。

● ゴールドッ

● エクスペリエンスッ

● レクイエムッ!

 最強の香りが漂う。

 うそ,これ送ってんの!?

 俺,シルバーっつったよね!?

 え?ゴールド?!

● この 俺の エクスペンシブ シルバー

 がッ!

● 恐る恐る

 開ける・・・。

● あ,ケースね

 あけるぞ あけるぞ

 あけろ あけろ

 う・・・

● !?

 シルバーでした。
 こっちは。

 で,つけてみる。

 おー。

● というか

 こっちは腕にハマるのか。恐る恐る

● 巻くと

 無調整でぴったり。

 レビューには「調整できない」とか「部品壊れた」とか書かれてたんで,調整なしなのはありがたく。

 あの38mmのフォグ色のバンドはどうしようか思案。

 ま,何しろ,3年間悩んでる間,一度も試着もせず,腕周りを測りもせずだったのがいけない。
 これを着けて,これから盛岡へいく。

映画『ダイバージェント』をみる

午前2時に,見始めるHulu

● なんか

2時間20分ぐらい掛かるらしい。
吹き替えでもいいけど,そのまんまを聞けるし,英語の勉強になるかなと

● 字幕版

で見て

● フーフー!

言ってたら,4時20分じゃねえか。

● ッアー

そういやそう言ってたな。2時間20分だって。
正確だ。

● キャッチフレーズは

『たった1回の性格診断で未来は決まる』
だ。

すげー気になるじゃん。しかも近未来。

● 100年前の「最終戦争」で

教訓を得た人類は,性格診断で人種を分けたんだそうだ。
分けるから争うだろうに。。

おまえらもう一遍ジョンレノンの『イマジン』でも聴いてろって

● 江戸前のてやんでえで

言ってやりたいですよ。ええ。僕なんかになるとね。(なんだ)

● その人種は


  1. 博識
  2. 無欲
  3. 勇敢
  4. ???
  5. ???

あとなんだっけ。
あと2つぐらいあったぜ。

・・・。
出てこないんで分かんないや。えーと(「平和」「高潔」だって)。

あと,どれにも属さない「ダイバージェント=「異端者」」がいる。
劇中では,もう,日本史の穢多非人的な役どころ。

「派閥」内で脱落したりタブーを犯したりしたらなるっぽい。

さすが契約社会だ。

欧米だ。

● そしたら

政治は「無欲」が司ることになってたけど,そのうちに

● 「博識」が

例のごとく

「永遠の平和を実現するのは,あてくし共ですわっ」みたく

やってくる。
あのヒール役の女優さんは何て人だろう。あんまりにも憎らしすぎてリスペクトする。

● 結局

分類するから軋轢が生ずるのか。
どうあがいても,人間の性でしようがないのか。

支配する側と,される側になるという構図を描いてて吐き気が止めどもない。

次に生まれるときは神様になりてえなあ。

● 「無欲」出身の

主人公は,なんだかのセレモニー(儀式)で「勇敢(治安部隊)」に
兄貴は,同じ日のセレモニー(生年関係ないのかな)で「博識(研究職,で,そのトップはクーデタラー)」に

それぞれ手のひらにナイフを入れて,誓いを立ててしまう。

痛そう。

ナイフで「グサ」って。ケッパンみたいなもんか。
にしても痛そう。

なんで,本気度示すときって,洋の東西血ぃを出すのか。
小学生がついおっぱい見て鼻血出すのはやっぱ本気度なのかも知れないなと思って映画を見る。

● あ

これネタバレサイトかも知れないです。

● つまり

出生はどうあれ,手のひらさえ切れれば,

● 商人の子が

侍に。

● 侍でござるが

やっぱ農民になるだよ。

● とか,一応ありだけど

家柄と異なると,両親ともう

● 会えないという。

なかなかの縛り。

● 「無欲」出身の

兄妹はそれぞれ

兄:「俺ってインテリジェンスだから博愛ってか,「博識」だよな。」
妹:「なんか,性格診断で「ヤバめ」って出ちゃった。直感で「勇敢」かな」

てなった。
文章理解能力希薄。

● なんか

フォーっていう男がイケメンすぎてため息が止まらないうちに

娘をかばって母(実は「勇敢」出身)が凶弾に倒れ,
敵の中枢進入時に,かなり勇敢で憤慨しきった父(格好いい)が,でもやはり凶弾に倒れ

主人公は

● 両親を失う

イヤー!!

これも幻覚であって欲しかった。

● アクションや

その他諸々。例えば

● 幻覚剤を

打たれて,幻覚世界を彷徨い歩くとか。
起きたと思ったらまだ幻覚世界だったーーとか。

● で起きたら

やっぱまだ幻覚世界やないかーい

● とか

どれがホントか分かんなーい♡

みたいな

● ヤバめの

トリックが2重3重なのかと思いきや,意外とガチだったり。チュー
ここでエロか?!と思ったら,主人公の女の子が

● まだだめー♥

とか。
エロやサイコや,かなり格好いいアクションシーンで僕を揺さぶりながら,

しかし

● 「無欲」の人々を押さえつけ

芝生に泣き崩れる「無欲」の人々に銃口を突きつける,
「博識」がつくっったヤクで操られた「勇敢」の黒尽くめの人々(中には主人公の親友の女の子も銃口構えてたり)を見たり。

● ホロコーストって

こんな絵面だったのかとか。
先の大戦で,日本人はどんなことまではしたのかなとか。

ばーちゃんは
「アメリカさんは,女にひどいことをしてくると聴いてたけど,アメリカさんは,結局紳士だっただよなあ」とか。

まあ近隣のアジア諸国をよく言わなかった祖母の言は
僕からすればあれはあれだけど

● もう一度

人が人を殺すことに
何ら正当な理由なんかない。

戦争なんていうのは

● やっちゃいけないことで

大抵,そこにwin-loseのえげつない図式があり
僕ら善良な市民は,そのことを子々孫々伝えるのが
文化を持った良心なんだろうと

● 思うにとどめつつ

設定や,「博識」が「勇敢」を操り,「無欲」を駆逐しようと,
先の戦争からわずか100年で
そういう構図が生まれるということを暗示した設定に

● 考えさせられた

わけだ。

いつか書いたけど
僕の愛する子どもたちが,やがて大人になる頃に
世の中がもう少しでもよくなれば
いいのになあと思ったわけだ。

コログ

最近のこと。

これは生きたログだから,最近のことをかき殴ろうというわけだ。

● プログラム紀

始まる。
久しぶりに,プログラムを趣味でカタカタやる。

もっぱら

● flex & bison in C++

というやつだ。
flexとbisonを使って,簡単すぎるインタプリタぐらいまでは作れそうな感じに。

bison -> flex へのヘッダファイル提供。
実際には,bisonで言語ルールまで書いて%tokenや%typeで宣言した部分を,
後に flex で#includeして使うということのよう。

これには,

● これに

めっぽうお世話になりました。
動物の柄のこの本,学生時代から憧れの象徴。

実際には,2年前ぐらいか。秋ぐらいから寝床で読んでは
単語がわからずiphoneとかで調べる。

  • precedence:優先順位(計算機演算ではpriorityて言わないのかな)
  • arbitrary:任意の
  • adequate:十分な
  • punctuation:句読点(句読法か)
  • glue to:接着する
  • simultaneously:同時に
  • albeit:〜であるが。
    (p12. “This is a hack, albeit a very useful one, since most of the time it does the right thing.”)

いくつかは入試レベルな気もし。
albeitって,そういう意味で使うんだ。など。

● 下記は,去年の夏に書いてボツにしたブログから

−−−−−−
● 学生のとき(1994〜2000年ぐらい)

大学の授業でBNF記法というのを学んだわけだが、まあ

→ 学べてなかった

単位はもらえたんだっけ。という。
bisonでは、言語仕様をBNF風に書かねばならなかったはず。

● 戸塚時代(2002年〜2007年ぐらい)

よーしいっちょう、flexでも勉強して、新種のプログラミング言語でも発明してやりますかぁ〜
と意気込み、再三挫折。

ギリflexまでは分かる。
けどbisonで何度やってもどうやっても僕の書いたBNFの言語仕様が

● ambiguous grammar

ていうエラーになる。
訳すと「曖昧な文法」。何が曖昧じゃい。曖昧な日本の私のプログラム言語の仕様。

僕にはもう、bisonを使う才能とか、生きている価値とか、死なない権利とか、笑う勇気とか、

● 何にもないに違いない

と咆哮したり呻いたりして畳の目に逆らって爪を立てたり、足の裏で敷居をゴシゴシしたりしては、とにかく、諦めていた訳だ。
−−−−−−

● という

存外に元気な感じでやってたわけだ。
やがて分かりかける。

● 飯も自炊し

再び去年の盆に書いてボツにしたブログから引用する。

−−−−−−
● で

何に感動したかというと、この『flex&bison』の「計算式を入力すると、加減乗除を優先順位を守って計算する」という
サンプルプログラムをつくる中での p.14 だ。

またしばらくすると、仕事で頭が一杯になって、何を理解したのか忘れると思うので、備忘録として残す。

Ambiguous Grammars: Not Quite
The reader may be wondering at this point whether the grammar in Example 1-5 is needlessly complicated. Why not just write this?
(読者はExample 1-5が不必要に複雑だと思っているかも知れない。こう書いてはだめかと。)

exp: exp ADD exp
   | exp SUB exp
   | exp MUL exp
   | exp DIV exp
   | ABS exp
   | NUMBER

そうそう、まさにそう。↑みたく書いちゃなんでダメなんだって十年来わからなかった。
この辺、わくわくしながら読んだ。

ちなみに「Example 1-5」というのは、bisonへ渡す言語仕様を書いたもので p.11 にはこうある。

Bison’s Rule Input Language
Bison rules are basically BNF, with the punctuation simplified a little to make them easier to type. Example 1-5 shows the bison code, including the BNF, for the first version of our calculator.
(bisonに渡すコードは基本的にBNFだが、容易に書けるよう記法を少し簡単にしている。Example 1-5 に計算機の一番最初のバージョンのためのbison用のコード(BNFを含む)を示す。)
Example 1-5 Simple calculator fb1-5.y

 <前略>

calclist: /* nothing */
  | calclist exp EOL { printf("= %d\n", $1); }
  ;

exp: factor
  | exp ADD factor { && = $1 + $3; }
  | exp SUB factor { && = $1 - $3; }
  ;

factor: term
  | factor MUL term { $$ = $1 * $3; }
  | factor DIV term { $$ = $1 / $3; }
  ;

term: NUMBER
  | ABS term { $$ = $2 >= 0? $2 : -$2; }
 ;

<後略>

そうコレなのだ。僕が戸塚時代にメロメロになったやつ。
よく入門書なんかに書いてあるやつだ。

何でこんなに分けて、わざわざ複雑に書かねばならんのだと。謎だった。

p.14でLevine先生が言う「The reader wondering at the point」こそ僕だ。

そしたらそのp.14にはこう続く。

There are two answers: precedence and ambiguity. The separate symbols for term, factor, and exp tell bison to handle ABS, then MUL and DIV, and then ADD and SUB.
(答えは2つある。優先順位と曖昧さだ。termとfactorとexpを分けて書くことで、bisonにまずABSを、その次にMULとDIVを、そしてその次にADDとSUBを処理するよう指示している。)

興奮して音読していた。
そういうことだったんだ。今までこの世のどこにもなかった答えが初めて身に染み入る。ッアー!
−−−−−−

● 何やら

感動している。
スピッツのメドレーをyoutubeで流しながら,暑い日,来る日も来る日も

● 新築の

家の中で猫と僕だけ住んでる状況。
その中で,ずっとプログラム三昧。何度かラム肉食って赤ワイン飲みまくって吐く。

● 分かったことは

C++でflex, bisonを利用することは可能ということと,
ヘッダファイルで

#undef YY_DECL
#define YY_DECL \
yy::Parser::token_type \
Scanner::scan(yy::Parser::semantic_type* yylval, \
			  yy::Parser::location_type* yylloc, \
			  ParseDriver& driver)

とかやったり,かなりトリッキーだということと。

Parser.y内で,


%{
#include "ParseDriver.hpp"

//yylex()のオーバーロード
yy::Parser::token_type
yylex(
yy::Parser::semantic_type* yylval,
yy::Parser::location_type* yylloc,
ParseDriver& driver) {
	return driver.scanner->scan(yylval, yylloc, driver);
}

// parser's error routine <- it's need to be implemented by us
void
yy::Parser::error(
const yy::Parser::location_type& l,
const std::string& m) {
	driver.error(l, m);
}
%}

なんていう,なかなか香ばしいことを書く必要。

● なんか

もともと flex, bison が広域変数使いまくったり,
#ifndefや#defineつかって,凄いことになってたりする中,

● flex, bison in C++も

C++のクラスを使う上で,かなり凄いことになってる。ということのよう。
勉強したのは下記。

  • Blog Alpha Networkingめっちゃお世話になりました。GW前〜GW中@ハトヤ。ずっと解読してました。言ったら実際に手で打って写してました。
  • bison-test@GitHub日本人の方のソース。めっっっっっちゃ分かりやすかったっす。ありがたい。
  • flatB-Compiler-and-Interpreter@GitHubAST(Abstract Syntax Tree:抽象構文木)をC++で作ろうという場合の,B-flatというC言語ぽい言語の,(1)文法チェック(2)インタプリタ(3)コンパイラの例示。すげえ。
  • 10.1.4 C++ Parser InterfaceGNUか何かの,てほどき。bison側の。
  • Generating C++ scannersGNUか何か。flex側の。

やっと,コンパイルフリーなBison/Flexのtinyセットを作成できた。
コレを元に,ASTつくって逐次実行するサンプルができたら,

● やっと

1年以上ぶりにyoutubeのサイトを更新できそうだ。
今日はプログラム紀について。

● 次回は音楽編

そんで次は,最近の人生観について。
順次追記していく。

flex&bisonの勉強

をしてる。

IMG_9153

これ。
今わかった所までの覚え書き。

● 近況

 youtubeへは下記をアップロード。

 ゲームのメインループをクラスに切り出してみたという話。

● で、いよいよ次は

 スクリプトの解析をする処理。アドベンチャーゲームだから。
 シナリオを書いたテキストファイルを読み込んで、ゲームを動かしてみたい。

 で現状下記がボツに。

  1. logo.gif lua :スクリプト言語。いろいろ目処立たず。
  2. kirikiri_inside_small吉里吉里:windows版のよう。なのと、すごい存在感。手を出すとここまで撮った動画が無為になるため見て見ぬふり。

 というわけで自分でつくることにした。

● スクリプトファイルを

 単語単位に分けるのがflex

fade 0           画面の輝度を0に
load "awesome.jpg"    背景画像をロード
fade 0 to 100 in 500   画面の輝度を0から100%まで500ミリ秒で

wait            ユーザ入力を待つ

 こういうのを。

fade
0
load
awesome.jpg
fade
0
to
100
in
500
wait

 こういう風に直してくれるのがflex
 ありがとうflex

● これやるためのflexコードが

 こんな感じ。

%{
#include "myparser.tab.h"
%}

%%

<INITIAL>"fade"		{ return FADE; }
<INITIAL>"load"		{ return LOAD; }
<INITIAL>"to"			{ return TO; }
<INITIAL>"in"			{ return IN; }
<INITIAL>"wait"		{ return WAIT; }
<INITIAL>[0-9]+		{ yylval.integer_value = atoi(yytext); return INT_VALUE; }
<INITIAL>[ \t]		{ }
<INITIAL>"\""			{ yylval.string_literal[0] = '\0'; BEGIN _LITERAL; }
<_LITERAL>"\""		{ BEGIN INITIAL; return STR_LITERAL; }
<_LITERAL>.			{ strcat(yylval.string_literal, yytext); }

%%

 flexにお願いするとこれを元に、C言語のコードを生成してくれる。
 そのC言語のコードの冒頭あたりに

#include "myparser.tab.h"

 が挿入される。

 また、

<INITIAL>"fade"		{ return FADE; }

 と書いておくと、
 入力されたファイルの中に「fade」という単語が見つかったら、「return FADE;」を実行するようなC言語のコードが生成される感じだ。

 このときFADEは記号定数だが、宣言部分を生成してくれるのはbison

● bisonの方のコードが

 これで

%{
#include "stdio.h"
extern int yylex();
extern int yyerror(char *);
%}

%union {
	int integer_value;
	char string_literal[2048];
}

%token FADE LOAD TO IN WAIT
%token <integer_value> INT_VALUE
%token <string_literal> STR_LITERAL

%%

program			: /* empty or.. */
				| program command
				;

command			: FADE INT_VALUE { printf("fade to %d\n", $2); }
				| LOAD STR_LITERAL { printf("load the file named: '%s'\n", $2); }
				| FADE INT_VALUE TO INT_VALUE IN INT_VALUE { printf("fade from %d to %d in %d milli second\n", $2, $4, $6); }
				| WAIT { printf("ordered to wait.\n"); }
				;

 これの

%token FADE LOAD TO IN WAIT

 ここで指定したやつが”myparser.tab.h”に

#define FADE 258
#define LOAD 259
#define TO 260
#define IN 261
#define WAIT 262
 :

 みたく展開される。これをさっきflexのほうで

#include "myparser.tab.h"

 として読み込んでいる。
 だからflexが読み込むファイルの中に

<INITIAL>"fade"		{ return FADE; }

 とあっても、FADEがdefineされているので通る。

● あとは

mylange.c

#include <stdio.h>
#include "myparser.tab.h"

int yyerror(char *s) {
	printf("yyerror(): %s", s);
	return -1;
}

int yywrap(void) {
	return 1;
}

extern int yyparse(void);

int main() {
	yyparse();
	return 0;
}

 これでmain()からyyparse()を呼び出す。
 yyparse()が、bisonが生成したコード(構文解析器)の処理呼び出しになっている。
 yyparse()の中では、flexが生成したコード(字句解析器)の処理(単語単位で取り出す処理)を使うという寸法。

 yyerror()とyywrap()はこんな感じで定義しておくらしい(いい加減)。

● 実行結果

 こんな感じ。

$ ./mylang < sample.txt
fade to 0
load the file named: 'awesome.jpg'
fade from 0 to 100 in 500 milli second
ordered to wait.
$

 なんか元のスクリプトと同じような出力にしてしまった・・。
 けど正真正銘、字句解析器→構文解析器を通した結果出力。

● はじめ

 特に理解がいかなかったのがflex生成コードと、
 bisonが生成したコードの結びつき具合。

● 現在は

 flexとbisonが出してくれたCコードを、
 ゲームメインのC++から呼び出すときの齟齬が出ないか恐る恐るリンク中。

父の日208*9

 という訳で

IMG_8864

 父の日だ2017。
 いろいろ秘密だ。

 僕の,実の父との話は,本当に

● 秘密だ

 という

● わけで

 数日前から

● あった

 らしい。置き手紙を6月17日の朝,とうとう見つける。
 仕事では,新たに,色々なクレームを抱える。

IMG_8851

● なんねなんね

 これの裏は,

IMG_8852

 こうなってる。
 「おくれないでね」?

● ?

 だと?
 というわけもあり,本日6月18日午前0時数分,

● 開けてみたよマイサン

 すると

IMG_8855

 ようするにチャレンジだ。ベネッセだ!!
 親の感動するツボを心得ているだ!

● そんな

 出来すぎた状況に涙なんか

● する

● もんか

 というわけで,

● 20歳にして始めて

 近所の飲み屋で平日の7時台に,スズメの丸焼きが出てきて

● 部活へ向かう南西中の

 僕らのはるか下の後輩のジャージ姿を
 頭頂に,竹串の穴が空いた

● スズメを

 タレで食いながら眺めてた22歳ぐらいの僕が言う。

● 違和感しか

 ないっすよ。これ。
 うまいけどね。

 スズメの丸焼きは。タレでも塩でも。

● ああ

 というわけで

  1. サントリー ウーロンハイ350×2
  2. 白角水割り×2
  3. タカラ缶酎ハイ×1

 を飲みきり,家でボールペンを持ってA4に書くには。

IMG_8861

 というわけだ。

● 全文,という名の生きたログ

___くん お母さん __ちゃん

 父の日のプレゼントありがとう。
 ほんとうにありがとう。

 お父さんはみんなに
 会えて ほんとうに
 良かったと 思っています。

 たった一回の人の人生で
 みんなに 会うことが できて。

 みんなを 生んでくれた お母さん。
 生まれてきてくれたみんな みんな 大好きですよ。

 ありがとう。

 この家と この家の窓から見える 青空が好きで
 しばし 泡沫と見ずに 楽しくいきていこうね

 さーーーーーー肉,喰うぞーー!ウホー!

● ここまで

 色々あったからこそ
 深く,深まる感謝があるんだろう。

自分でもう一度読もうと思うタイトル

本当は、自分の生きてきたことをテキストエディタでどこかで書かねばなあ。

IMG_8423moz

と思いながら、昔の書き込みを見てたら。

あ、ちなみに写真は気持ち悪い。
ある日、仕事から帰ると、左足になぜかハンコ(2色)が押されてたという写真。なんだこれ。

そういえば2日前ほどに、とうとうUFOを見た(気がした)。
すると息子が言う。

僕は7歳になって2回見たんだ、UFO。

  1. 西行のうた 2014年4月7日, 15時52分
    2014年の話。
    相武台前の駅前で仕事をしてた頃。
    相陽中の桜だろう。
    綺麗に散っていた。その時、入学を祝った生徒はもう
    高校を卒業しようとしている。

    いろいろなことがあった。
    その2年後の2月、大きなクレームを母親から頂いて、
    すげー投げやりなため息とともに、当時4,5歳の息子と、雪そぼ降る中、箱根の温泉につかったのはまだ記憶に鮮明に残る。

    いや。

    西行のうたである。
    この花は、一体、何十垓人の心と生と死を彩ってきたのだろう。

    wikipediaで「辞世」を調べるとこの花を詠んだ句は無数にある。

    友を得て なほぞうれしき 桜花 昨日にかはる 今日のいろ香は  毛利元就

    ちりぬべき 時知りてこそ 世の中の 花も花なれ 人も人なれ    細川ガラシャ

    限りあれば 吹かねど花は 散るものを 心短き 春の山風    蒲生氏郷

    散るをいとふ 世にも人にも さきがけて 散るこそ花と 吹く小夜嵐  三島由紀夫

  2. ダルマ掃除 2005年12月31日, 01時53分

    今、7歳の息子と2歳の娘が家にいる。
    41歳の僕と、41歳のお嫁もだ。

    息子に<<今も>>必ず僕はこういうことにしている。

    極めてシンクロニシティな私的なこと 2013年8月17日, 00時01分
    の中で書いた。

    言うのは下記点である。

    (1)◎◎くん、大好きだよ
    (2)お父さんとお母さんの子供に生まれてきてくれてありがとう
    (3)お父さんも、お母さんも、本当に嬉しかったんだよ

    今では息子は7歳で、
    足は長いし、身体はでかいし、寝返りは信じられないほど信じられない方向にうつし

    しかし、(1)を言うと「うんうん、わかってるって」というふうに、寝顔で笑顔で、小さく頷いてくれるんだ。

    そうそう娘には最近ことあるごとに「かわいいねー」と言い続ける。
    やがて頷き始める娘。

    お嫁曰く、だんなさんはおじいちゃんに会えて本当によかったね。

    僕に底の知れない人の優しさと、いわゆる「人の良さ」の存在をこの世に高らかに
    赤らんだ頬と鼻と、
    青空の向こうに巨大な雲のあること、
    足元に黒いオタマジャクシの気味の悪い世界があること、
    人はこんなに人にやさしく、ひとの性や業を許し赦し生きることができるのだと
    おしりのポッケに片方をしまいこんだ白い手ぬぐいで汗を拭い拭い
    僕に示し続けてくれた、そしていまも示し続けてくれている
    底なしに優しく、短気で、そこそこ酒飲みで、ばあちゃんのイビキを買ったばかりのカセットテープレコーダーで録音してみたりした
    子供のような
    僕のだいすきなおじいちゃんの話だ。

  3. 夜歩く 2013年4月26日, 03時19分

    同名の本があるとかないとか。
    主にミスチルの『ランニングハイ』を想い。

    少し前(2004年ぐらい)に、前の会社のSさんという方の説法を聞くうちに、

    気が狂いそうになり、今で言うパワハラというやつで
    心療内科で、中学生以来の謎の白い錠剤をたくさんもらい、しかも中学生以来
    一度も「うつ病ですよ」と言われることなく、気がついたら、錠剤を飲み忘れるようになっていた頃。

    戸塚から1号線を、原宿方面へ車を走らせると、曲がりにくい右折を通り越した先にそのクリニックはある。

    行き帰りに、よせばいいのに、大音量で聞いてたのがこの曲だ。
    ランニングハイ

    亡霊が出るというお屋敷を
    キャタピラが踏みつぶして
    来春ごろにマンションに変わると代理人が告げる
    また僕を育ててくれた景色が呆気なく金になった
    少しだけ感傷に浸った後「まぁ それもそうだなぁ」

    たまらなかった。
    今でも、この曲を聞くと、当時の情景が浮かぶ。

  4. ばあちゃん他界

    僕の嫌いだったばあちゃんがなくなった。
    家のことは、おって書こう。

    テキストエディタで書こうとしたが止まった。

    直接wwwにつながるこのエディタ(ブラウザ上)で書き綴るのが向いている話。

    とにかくばあちゃんが亡くなる。

    お嫁への感謝、父親が意外と泣いてた話、母はよくあんだけ献身的になれたもんだ、
    ばあちゃんの甥にあたる、僕の叔父が

    普段の冷静沈着な印象に反し、ここまで僕の祖母を想ってくださっていたんだという
    気持ちを書いている。

xcodeでsdlのヘッダに出てくる謎のワーニングを回避するメモ

 というわけで、今までつくりためたsdl関係のC++クラスを使って、

wwwthumbnail.php

 アクションゲームを作りたくなってきている。(画面は2008年に作りかけてたときのやつ)
 んだが。

● ふと気づくと

 sdl2.0のヘッダファイルをインクルードすると

● ワーニングが

スクリーンショット 2017-06-02 13.49.17

 表示されるようになってた。
 息子が横で見てて、

ー何それー?ねえ、全部消してね、全部ちゃんと消して〜

 と言う。
 んん。まあ、動くからいいじゃん、とも思いつつ気になるので調べてみた。

● どうも

 よく見ると

スクリーンショット 2017-06-02 13.49.28

 「Documentation Issue」とのことで、なんでも

– ‘\return’ command used in a comment that is attached to a function returning void

 だそう。意訳すると

ー戻り値の型がvoidの関数に付随するコメント内で、戻り値があるかのようにreturnコマンドについて書かてるからおかしいよ。

● 見ると

 SDL_assert.hとか、ヘッダファイル内を指してるぽい。

 で、見てみると

スクリーンショット 2017-06-02 13.50.16

 コメントがワーニング・・だと。

● んなアホなと。

● 思いつつ

 どうも

● コメント内に関数とかそういうのの

 仕様を記述しておくものらしい。

 ツールを通して、自動で仕様書?みたいな「ドキュメント」を作るような支援機能用なのか、
 後からそこを追いかけて、IDEのエディタがカーソル付近に情報を表示してくれるのか。

● これは

 絶対、オフにするオプションがあるハズ、と思ってネットを当たってみたが
 日本語のページを探し当てられず、
 出てくるのは

ー Hi im having a big trouble in ほにゃらかほにゃらか

 みたいな英文ばかり。

 なので、メモしとく。

● 下記

スクリーンショット 2017-06-02 13.50.40

 だ。
 これをNoに設定すればワーニングは消える。

 じゃ次は、いま上げてるyoutubeのプログラム動画の次のテーマを
 アクションゲームづくりにできそうかどうか実験してみる。