青汁を一週間飲み続けました
近所の世間話がきっかけで青汁やさんの回数券を買ってほぼ毎日飲むという謎ムーブをかましました。
今週は毎日青汁飲もうと思います。🤗 pic.twitter.com/sml0PHMz6R
— yuYabu☕️ (@yuyabu2) 2019年2月10日
今週は100mlの回数券を買って平常時は100ml、たまに2枚使って200mlを飲むという感じでほぼ毎日飲めました*1。
効果はあったのか
今現在身体的に特に効果は出ていません。若干乾燥が改善したくらい*2。
私は成人男性にしては野菜を食べている方だと思うので、おそらく野菜不足を解消することによって発動する効果は現れないと思います。しかしケールの絞り汁を日常的に摂取した経験はないためケール固有の効果は出るかもしれません。
個人的な生活習慣の問題はコンビニ飯やジャンクフードが多いことと運動不足なので、そちらの改善を計画的に行わないと青汁を飲む意味がないような気がします。
気づいたこと
トッピングせずに青汁を飲む人はどうも少数派のようです。 飲んでいる青汁はいままで飲んだことのないようなハードコアな味がします。 他のお客さんもだいたいゴマ、はちみつ、リンゴ酢などを入れて飲みやすくしている人が多い印象です。私も初日は鼻をつまんで無理やり流し込むというスタイルで飲んでいましたが、いまは慣れたので普通に飲めています。
今後
回数券の量を100mlから200mlに増やして日常的に200ml飲むように変えて様子を見ようと思います。あと、豆腐屋さんが作っている豆乳もいいらしいのでそちらも試すかもしれません。
virtualbox でホスト(mac)とゲスト(ubuntu)のclipbordの共有がうまくいかない(解決)
色々生産性が悪いので調査した。
バージョン
- 仮想化ソフト:Virtualbox 5.2.22
- ゲスト:ubuntu 18.04
- ホスト:macOS Mojave 10.14.1
巷ではVirtualboxの設定>一般>高度の「クリップボードの共有」を「双方向」にすることで解決するという記事が多いが、 それだけでは解決しなかった。追加でVM側にVBoxClientを導入することで解決した。
yy@yy-VirtualBox:~$ sudo apt-get install virtualbox-guest-x11 yy@yy-VirtualBox:~$ sudo VBoxClient --clipboard
早速ターミナルで試してみた所、Ctrl + vが使えなくて調べた結果。。。
ターミナルではCtrl + Shift + V
が貼り付けらしい。
https://askubuntu.com/questions/202459/keyboard-shortcut-for-pasting-on-the-gnome-terminal
「チョコレートの世界史」を読んだ
バレンタインデー記念エントリー。ちょうど時期が良いので昔読んだ本の感想を投下。
チョコレートの世界史―近代ヨーロッパが磨き上げた褐色の宝石 (中公新書)
- 作者: 武田尚子
- 出版社/メーカー: 中央公論新社
- 発売日: 2010/12/01
- メディア: 単行本
- 購入: 1人 クリック: 28回
- この商品を含むブログ (26件) を見る
感想
若干ネタバレになりますが、本書は某大学のロウントリー社(オリジナルのキットカットを製造した会社)の資料コーナーを著者が訪れたことが原点にあるらしいので若干ロウントリー社贔屓な歴史書になっている。
チョコレートは以外と歴史が浅く、特に今の固形のものが食されるようになってからまだ200年も建っていない。本書には中南米がスペインに侵略されてからカカオを加工する技術がヨーロッパ諸国で発展してキットカットが出来上がる歴史が書かれている。
個人的にはチョコレートの成分とかが詳しく書かれているところが分かりやすかった。カカオポッド、カカオパウダー、カカオバター、カカオマス、カカオニブの違いは全くわからなかったけど、本書で理解した。
ノート
チョコレートの品種は結構コーヒーに似てる
カカオ豆には、ポリフェノールの含有量が異なる三種類の系統がある。クリオロ種、フォラステロ種、トリニタリオ種という。
クリオロ種でビター系のチョコレートを作ると、抜群の味になる。クリオロ種は生の豆を食べても美味に感じるという。しかし、病気に弱いため、栽培が難しい。稀少品種で、現在世界で生産されているカカオ豆の一%程度の生産量にすぎない。フォラステロ種は、ポリフェノールを多く含む。栽培が容易な強い品種で、世界の生産量の約八五~九○%を占める。味にパンチはあるが、苦味が強い。そのままでは、ビター系のチョコレートには向かない。
コーヒーも似た感じでアラビカ種とロブスタ種があり、
- 美味しいけど病気に弱く量が取れないアラビカ
- 味は劣るけど病気に強くで量が取れるロブスタ
という風になっている。この種構成に関して、コーヒーと比べた時のチョコレートの特筆点は美味しい方(クリオロ)が極端に出回っていない、という点だと思う。
コーヒーはアラビカ種の方が消費量が多い*1。私個人の経験でもロブスタ100%のコーヒーは飲んだ覚えがない。逆にチョコレートに関してはこの本を読むまでクリオロ種のものは食べたことがなかった。
お店で買えるクリオロ種チョコレート
市販されているものの中で安いクリオロ種のものはカルディに売ってあったペルー産の板チョコがあった。こちらはカカオ分の高いブラックチョコレートだが、評判通りブラックチョコレートでも美味しく、他のものによくある強い苦味がなく美味しく食べられた。値段も安かったのでおすすめ。ちょっと前流行ったbean to barのチョコレートは高すぎる(板チョコ1枚くらいの量で数千円)ので個人的に日用するのは無理。
チョコレートの製造方法とかややこしい成分とか
- カカオポッドからカカオ豆を取り出す
- カカオ豆を砕きカカオニブ(胚乳)を取り出す
- カカオニブをローストする
- カカオニブをすりつぶしてカカオマス(ドロドロ状のものを作る)
ここまでがチョコレートとココアパウダー製造の共通部分。ここからが工程が違っている。
ココアパウダー
チョコレート
一応チョコレートの作り方はここに色々応用があり、例えばホワイトチョコレートを作る際はカカオマスは使わずココアバターのみを使う。ここアバターの代わりに融点の高い油を使えば高音でも溶けにくいチョコレートになる。戦中は東南アジアや潜水艦内(熱がこもると40度を超える)内でも日本兵の食用に作っていた。ちなみにスーパーでみる殆どの普及品チョコレートはにはココアバターだけでなく植物性油脂も使われている。
商品分類(名称の分け方)
チョコレート分が多い順に
チョコレート>ミルクチョコレート>準チョコレート>準ミルクチョコレート
カカオ分35%以上かつココアバター18%以上がチョコレートを名乗れる
年表
- (~1521年まで)オルメカ文明/マヤ文明がクリオロ種をメインにカカオ崇拝(通貨としても利用)
- (1521年)滅亡したアステカ王国らへんを植民地にしたスペインがカカオを広め始める
- スペイン人がココアに砂糖を入れ出すようになってくる
- メキシコでカカオの消費量増加に伴いエルサルバドル、エクアドル、ベネズエラがフォラステロ種の産地として台頭
- 味の悪いフォラステロ種の増加によりカカオの価格が下落し、市民に普及
- (1660年頃)フランス人がカリブ海諸島(マルチニーク島)にカカオを持ち込んで栽培を始める。
- (1757年)トリニダード島(スペイン領後のイギリス領)でクリオロ種が病気のため壊滅。生き残ったクリオロとフォラステロ種を交配してトリニタリオ種が作られる。
- (1828年)ヴァン・ホーテン(オランダ)がココアパウダーを作る発明から特許を取得(カカオマスからここアバターを搾り取る技術)
- (1879年)アフリカ本土(ガーナ)にフォラステロ種が移植される
- (1847年)ブリストルでジョーゼフ・フライがカカオマスにここアバターを混ぜて固形チョコレートを初めて作る。
- (1849年)ココアパウダーに色々混ぜて売るのが流行る。その流れで粉末ミルクを混ぜたミルクココアが発明される
- (1876年)アンリ・ネスレ(スイス)がコンデンスミルクをチョコレートに混ぜてミルクチョコレートを発明する
- (1878年) 日本で初めてチョコレートが売られる@米津風月堂
- (1918年)日本で初めてチョコレートが製造される@田町by森永製菓
- (1935年)ロウントリー社キットカット販売開始。当初の商品名はチョコレート・クリスプ
- (1941年)原材料不足・価格統制などにより商品名をチョコレートクリスプからキットカットに変え、戦時中は青いラベルで売り始める
- (1958)ブリュッセル万博を機に家族経営小規模生産だったベルギーチョコレート(ノイハウス、ゴディバ等)が世界的に注目を浴びる
- (1988)ネスレがロウントリー社を買収。以後アメリカ以外ではネスレ社がキットカットを販売。アメリカではハーシー社が販売権保有。
戦時中の日本のチョコレート事情
- 1940年12月でカカオ豆の輸入ストップ
- 戦中は森永製菓が50人社員をインドネシアに派遣し、現地のカカオでチョコレートを作っていた
- 代用チョコレート
- 進駐軍が消費していたチョコレートはハーシー社*2のチョコレートといい、闇市に出回っているものや「ギブミーチョコレート」でもらえるやつはこれらしい。
余談:バレンタインデーに関する記載が一切ない
本書を「バレンタイン」で検索をかけても前書きで1単語だけ登場するだけで詳しい解説とかは一切なかった。 広告とかマーケティングの章は一応あるけど、チョコ業界的にバレンタインデーが成功したのは日本だけなのでしょうか。
「RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み」を読んだ
結構古い本です。中古で書いましたが、多分新品はあまり出回っていないと思います。
この本を読んだ動機
- CC本(Bernstein本)やweikum本をいきなり読むのはきついので、RDBMS(自体の)入門書が読みたい
- DBのコンポーネントを特定製品に依存しない形式で理解したい
- 特定の製品に依存していないMVCCの日本語解説を読みたい
などを理由にこの本を読みました。
Concurrency Control and Recovery in Database Systems
- 作者: Philip A. Bernstein,Vassos Hadzilacos,Nathan Goodman
- 出版社/メーカー: Addison-Wesley
- 発売日: 1987/02/01
- メディア: ハードカバー
- この商品を含むブログを見る
- 作者: Gerhard Weikum,Gottfried Vossen
- 出版社/メーカー: Morgan Kaufmann
- 発売日: 2001/05/30
- メディア: Kindle版
- この商品を含むブログを見る
ノート
- SQLを解釈実行するパーツ
- データベースの構造を司るパーツ
- カタログ管理
- インデックス管理
- バッファ管理
- ストレージ管理
- 複数のアプリケーションからの要求や可溶性を司るパーツ
雑感
- プランには論理プランと物理プランの2種類がある
論理プラン
データベースの処理手順を「関係代数」の言葉で(厳密にはこれだけではないが)書き下したのが「論理プラン」である(p36)
物理プラン
論理プランをコンピュータ上の実行手順に書き換えたものを物理プランという(p36)
- 論理プランではSQLで書かれた内容を関係代数の操作に書き直す(和、差、共通、選択、射影、直積、結合)
物理プランでは結合アルゴリズム(nested loop/sort merge/hash join)を選んだりスキャン方式(index/table scan)を選ぶ
WAL(Write a head log)のメリットがわかりやすく書かれている。
Create tableで宣言したテーブル情報は一般に「カタログ情報」というらしい。これは知らなかった。
- 本書ではMVCCはMVTO (Multi Version Timestamp Ordering)のプロトコルを例に説明されている
微妙な点
- 記述が若干古い
- HDDが100GBの時代。
- もちろんSSDやOn memory DBなんてない
- JOIN構文がまだ存在していない
- FROM句にテーブルをカンマ区切りで列挙してWhere句に結合条件を書くスタイル
と、こんな感じです。RDBMSの内部に切り込んでかつ特定製品に依存しないような類書はあまり無いように思います。データベーススペシャリストの獲得を目指す方が副読本として読むのがいいのではないでしょうか。
RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み (DB Magazine Selection)
- 作者: 鈴木幸市,藤塚勤也
- 出版社/メーカー: 翔泳社
- 発売日: 2005/02/22
- メディア: 単行本(ソフトカバー)
- 購入: 11人 クリック: 88回
- この商品を含むブログ (26件) を見る
COBOLが基本情報午後問題から廃止されるらしいので解いてみた&動かしてみた
基本情報の午後試験からCOBOLが廃止されますのでH30秋のCOBOLを解きました。問題自体は完答できて満点でした。それだけだと面白くないのでMacにCOBOL環境を構築して実行してみました。
問題はこちらの設問10です。
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2018h30_2/2018h30a_fe_pm_qs.pdf
問題内容
- 全社員の資格(4つ限定w)の合格状況を管理するプログラム
- プログラムは半年に一回だけ実行されるバッチ。この利用頻度だとCOBOLからリプレースされないだろうとちょっと納得できる設定。
- 繰り返しと分岐をきちんと理解していないと完答できないような良問だと個人的に思う。
情報サービス企業であるP社には社内資格として資格1~4があり,従業員に取得を奨励している。 社内資格を取得するための試験は定期的に実施しており, 全従業員の保有状況を保有資格ファイルで管理する。P社の事業年度は4月から翌年3月までであり, 上期(4月~9月)と下期( 10 月~翌年3月)の2期から成る。 資格試験に合格した従業員の情報は合格ファイルに1期分を蓄積する。 上期の合格者を蓄積した合格ファイルは 10 月初めに,下期の合格者を蓄積した合格ファイルは 4月初めにプログラムを実行して,保有資格ファイルに反映する運用である。
ざっくり概要がわかる程度に紹介しましたが、完全版が見たい人は上記リンク先を見てください。
環境
$ cobc --version cobc (OpenCOBOL) 1.1.0 Copyright (C) 2001-2009 Keisuke Nishida / Roger While Built Aug 24 2018 04:30:53 Packaged Feb 06 2009 10:30:55 CET
ソース&ビルド
open-cobolをインストールします
brew install open-cobol
適当に写経したままだと動かなかったので先頭8行を足した。
IDENTIFICATION DIVISION. PROGRAM-ID. QLF. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT SRT-FILE ASSIGN TO 'sort.txt'. SELECT QLF-FILE ASSIGN TO 'qlf.txt'. SELECT PAS-FILE ASSIGN TO 'pas.txt'. DATA DIVISION. FILE SECTION. SD SRT-FILE. 01 SRT-REC. 02 SRT-NO PIC X(8). 02 SRT-CD PIC 9(1). 02 SRT-DATE PIC 9(8). FD QLF-FILE. 01 QLF-REC. 02 QLF-NO PIC X(8). 02 QLF-INF. 03 QLF-DATE PIC 9(8) OCCURS 4. FD PAS-FILE. 01 PAS-REC. 02 PAS-NO PIC X(8). 02 PAS-CD PIC 9(1). 02 PAS-DATE PIC 9(8). WORKING-STORAGE SECTION. 77 SRT-FLAG PIC X(1) VALUE SPACE. 88 SRT-EOF VALUE "E". 77 CR-NO PIC X(8) VALUE SPACE. PROCEDURE DIVISION. MAIN-PROC. OPEN I-O QLF-FILE. SORT SRT-FILE ASCENDING KEY SRT-NO USING PAS-FILE OUTPUT PROCEDURE IS RET-PROC. CLOSE QLF-FILE. STOP RUN. RET-PROC. PERFORM TEST BEFORE UNTIL SRT-EOF RETURN SRT-FILE AT END SET SRT-EOF TO TRUE PERFORM WRI-PROC NOT AT END PERFORM UPD-PROC END-RETURN END-PERFORM. UPD-PROC. IF SRT-NO NOT = CR-NO THEN PERFORM WRI-PROC MOVE SRT-NO TO QLF-NO READ QLF-FILE END-READ MOVE QLF-NO TO CR-NO END-IF. MOVE SRT-DATE TO QLF-DATE(SRT-CD). WRI-PROC. IF CR-NO NOT = SPACE THEN REWRITE QLF-REC END-IF.
ちなみにプログラムの大部分は 【基本情報技術者試験】平成30年 秋期 午後 問題と解答 からコピペしたものを手直しした。
上記ファイルをコンパイルします
$ cobc -x --free -W prog.cob
実行前ファイル内容確認〜実行
必要になるファイルを用意する。sort.txt処理に必要な中間ファイルなので空でOK
$ ls pas.txt prog prog.cob qlf.txt sort.txt $ cat pas.txt 00000001220180203 $ cat qlf.txt 00000001 0000000220170101 00000003
実行〜結果確認
$ cat qlf.txt 00000001 00000002 00000003 $ ./prog $ cat qlf.txt 00000001 20180203 00000002 00000003
無事00000001
の社員の資格2の合格日が更新されました。
感想
COBOLは自分の知ってるどの言語よりも自然言語(英文)っぽく書けるように工夫されている。可読性は高いと思う。
参考にさせていただいたサイト
動かす時に少し調べました。
gnucobol - Opening file for reading in COBOL - Stack Overflow
ubuntuのssh serverに公開鍵認証でログインする
前職ではsshを本格的に使ったことがなく、せいぜい自宅でgithubに公開鍵をupした程度しか使ってなかったのでサーバー側、クライアント側を一通り動かして見ました。
サーバー側のsshの設定
設定ファイルは/etc/ssh/sshd_config
なのでコレを編集して様々な設定を適用可能
- 待受portを22から変更
- ポートフォワーディングを禁止する
- パスワード認証を無効化する(常に事前に登録した公開鍵を使う)
※todo:セキュリティ的にましな設定を調べてまとめる
変更を加えたらリスタートしましょう
sudo systemctl restart sshd.service
接続
パスワードを使って接続
クライアント側で実行するとuserのパスワードを聞かれ、ログインできます。
ssh <user name>@<server name(or ip)>
RSAで認証して接続
クライアント側でRSAの鍵を作る
$ ssh-keygen -t rsa
クライアント側のPCから鍵をサーバーに送る
ssh-copy-id -i <key file> <user name>@<server name( or ip)>
クライアント側から秘密鍵を指定して接続
ssh -i <private key file> <user name>@<server name(or ip)>
note複数の鍵がある場合、
~/.ssh/config
ファイルに設定を書いておくと実行するときにオプションの指定などをすべて省略できるので便利。(ssh <接続名>
だけで接続できる)
Host <接続名1> HOSTname <server name (or ip)> port <port no> User <user name> IdentityFile <key file> Host <接続名2> ...(以下略)
切断
exit
コマンドで切断可能
weikum本に記載されている全定義の一覧リスト
現在5章を読む勉強会に参加していますが、 5章まで全部読めていません。最近読めていないところを見直すと、理解を曖昧にしていた用語の定義が前半の方に乗っていたので、この際全部調べて定義の掲載箇所を一覧できるものを作ってみました。
下表を参考におっ、こんな定義も乗ってたか!という感じで使ってもらえると嬉しいです。*1
DEFINITION | page |
---|---|
2.1 Partial Order | 46 |
2.2 Page Model Transaction | 46 |
2.3 Object Model Transaction | 51 |
3.1 Schedules and Histories | 66 |
3.2 Serial History | 67 |
3.3 Herbrand Semantics of Steps | 74 |
3.4 Herbrand Universe | 75 |
3.5 Schedule Semantics | 76 |
3.6 Final State Equivalence | 77 |
3.7 Reads-From Relation | 78 |
3.8 Final State Serializability | 82 |
3.9 View Equivalence | 83 |
3.10 View Serializability | 85 |
3.11 Monotone Classes of Histories | 92 |
3.12 Conflicts and Conflict Relations | 93 |
3.13 Conflict Equivalence | 93 |
3.14 Conflict Serializability | 94 |
3.15 Conflict Graph (Serialization Graph) | 96 |
3.16 Commutativity Based Equivalence | 99 |
3.17 Commutativity Based Reducibility | 100 |
3.18 Order Preservation | 102 |
3.19 Commit Order Preservation | 102 |
3.20 Closure Properties of Schedule Properties | 106 |
3.21 Commit Serializability | 107 |
3.22 Indivisible Units | 111 |
3.23 Dependence of Steps | 113 |
3.24 Relatively Serial Schedule | 113 |
3.25 Relative Serializability | 114 |
3.26 Push Forward and Pull Backward | 116 |
3.27 Relative Serialization Graph | 116 |
4.1 CSR Safety | 130 |
4.2 Two-Phase Locking (2PL) | 134 |
4.3 Conservative 2PL | 142 |
4.4 Strict 2PL | 143 |
4.5 Strong 2PL | 144 |
5.1 Version Function | 187 |
5.2 Multiversion Schedule | 188 |
5.3 Monoversion Schedule | 189 |
5.4 Reads-From Relation | 190 |
5.5 View Equivalence | 191 |
5.6 Multiversion View Serializability | 192 |
5.7 Version Order | 194 |
5.8 Multiversion Serialization Graph (MVSG) | 195 |
5.9 Multiversion Conflict | 197 |
5.10 Multiversion Reducibility | 198 |
5.11 Multiversion Conflict Serializability | 199 |
5.12 Multiversion Conflict Graph | 199 |
6.1 Object Model History | 218 |
6.2 Tree-Consistent Node Ordering | 219 |
6.3 Object Model Schedule | 219 |
6.4 Serial Object Model Schedule | 221 |
6.5 Isolated Subtree | 221 |
6.6 Layered History and Schedule | 222 |
6.7 Flat Object Schedule | 223 |
6.8 Commutative Operations | 224 |
6.9 Commutativity Based Reducibility | 226 |
6.10 Conflict Equivalence and Conflict Serializability | 227 |
6.11 Tree-Reducible History | 229 |
6.12 Level-to-Level Schedule | 234 |
6.13 Conflict Faithfulness | 238 |
6.14 State-Dependent Commutativity | 241 |
6.15 Return Value Commutativity | 242 |
8.1 IDM Transaction | 286 |
8.2 Transaction Equivalence | 287 |
8.3 Final State Serializability | 289 |
8.4 Conflict Serializability | 291 |
8.5 Conflict Graph | 291 |
8.6 Extended Conflict Graph and Serializability | 293 |
8.7 State Serializability | 296 |
8.8 Transaction Chopping | 302 |
8.9 Chopping Graph | 302 |
8.10 Correct Chopping | 304 |
10.1 Isolation Levels | 361 |
10.2 Multiversion Read Committed and Snapshot Isolation Levels | 362 |
10.3 Formal Definition of Snapshot Isolation | 363 |
10.4 Snapshot Isolation Serialization Graph | 363 |
11.1 Expansion of a Schedule | 384 |
11.2 Expanded Conflict Serializability | 385 |
11.3 Reducibility | 387 |
11.4 Prefix Reducibility | 389 |
11.5 Recoverability | 391 |
11.6 Avoiding Cascading Aborts | 392 |
11.7 Strictness | 393 |
11.8 Rigorousness | 394 |
11.9 Log Recoverability | 398 |
11.10 Inverse Operation | 408 |
11.11 Perfect Commutativity | 411 |
11.12 Perfect Closure | 413 |
11.13 Normal Commutativity Table | 414 |
11.14 Strictness | 415 |
11.15 Terminated Subtransactions | 416 |
11.16 Expanded Object Model Schedule | 417 |
11.17 Extended Tree Reducibility | 418 |
12.1 Extended History | 434 |
12.2 Stable Log | 435 |
12.3 Log Buffer | 435 |
12.4 Cached Database | 436 |
12.5 Stable Database | 437 |
12.6 Correct Crash Recovery | 437 |
12.7 Logging Rules: Redo Rule, Undo Rule, Garbage Collection Rule | 438 |
18.1 Global History | 677 |
18.2 Conflict Serializability | 678 |
18.3 Global History | 692 |
18.4 Direct and Indirect Conflict | 694 |
18.5 Global Conflict Graph | 695 |
18.6 Commit-Deferred Transaction | 699 |
18.7 Extended Commitment Ordering | 701 |
ちなみにですが同じものが複数回出てきているものがあるかもしれませんが、それぞれ文脈が違っています。 例えばConflict Serializabilityは3回でてきていますが、
- 3.14 Conflict Serializability
- 8.4 Conflict Serializability
- 18.2 Conflict Serializability
とそれぞれ内容が違っています。
ちなみにこの本の勉強会は明日もあります。オススメです。一緒に楽しくトランザクションを勉強しましょう。
- 作者: Gerhard Weikum,Gottfried Vossen
- 出版社/メーカー: Morgan Kaufmann
- 発売日: 2001/05/30
- メディア: Kindle版
- この商品を含むブログを見る