わいえむねっと

Contents
Categories
Calendar
2019/02
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28
Monthly Archives
~2000/01
Recent Entries
RSS1.0
Templates
Information
Processed: 0.069 sec
Chashed: -
2019/02/28 Thu
二度寝しすぎた。
春眠暁を覚えずにはまだ早い。 Officeにセーフモードなんてあったの。
2019/02/27 Wed
飲んで帰った上で缶チューハイを飲んだくれた結果、死んでいます。
159292 - During download, "file.lnk" is renamed "file.download", name is _not_ fixed upon completion. - chromium - Monorail
https://bugs.chrom​ium.org/p/chromium/issues/detail?id=159292

Chrome で .lnk ファイルをダウンロードすると拡張子が .download になってしまうって話。
WontFixではじかれてますがな。
2019/02/26 Tue
ユーザーリリースを済ませたので、一杯飲んで帰るかなと先日入ろうとした店に行ってみたところ予約でいっぱい。
それならと、やっぱり前に入れなかった店に行ってみたけど、こちらも満席。
火曜の定時上がりでもだめかー。タイミングあわんなー。

しょんぼりしながら歩いていたところ、ふと赤提灯が目に入ったので入ってみる。


山城屋 - 秋葉原/居酒屋 [食べログ]
https://tabelog.co​m/tokyo/A1310/A131001/13075248/



自分が入った時点で一人目!
女将さんは御年90ですってよ。元気!




クロハイボールてなんだろと頼んでみたやつ。
多分コークハイのことだよなーとは思っていたけど案の定。

こちらは女将さんではなく親父さんがだしてくれたのですが、つくりかたがとても丁寧でした。ジョッキにジョボーと注いで終わりとかじゃない。
マドラーさばきを見るに、元々バーで働いておられたのではなかろうか。(後で聞いてみた)




名物のニラ玉。芋ロック。




ソロバンをはじく音をBGMに芋ロックを傾ける。
確定申告の準備をされていたみたい。




大根煮。こういう素朴な品が嬉しい。




ここで、親父さんからサービスでチーズをいただいてしまいました。
それではと、なにかチーズにあうお酒をくださいーと注文してのウィスキー。

お話を伺ったところ、親父さんは女将さんとはご夫婦ではなく、社交ダンスのパートナーだったとか。女将さんのだんなさんは他界されているそう。
バーテンダーをやられてました?と聞いてみたら、案の定、戦後銀座のバーで働いていたとのことでした。道理で所作がピシッとしているわけですよ。


常連さんに絡まれたり、親父さんから昔話を聞いたりと、楽しく飲んでくる。
いやー、いいお店でした。
2019/02/25 Mon
新宿線ががっつり遅延してたので迂回ルートで出社。 電車内にストロング系チューハイを飲んでいる女の子がいたんだけど、飲んでたのがドライで本気を感じた。
しかも、サントリーとかサッポロではなくサンガリア。
いや、あれ美味しくないんだけどもw
2019/02/24 Sun
コッヘルを買っちったので芋を煮る。



前回の反省を踏まえて、今回は里芋160gに水500ml。




〆のカレーうどん。
前回は普通の固形ルーを適当にぶち込んだところだいぶしょっぱかったので、今回は味があっさり目のエスビーの赤缶にしてみた。固形ではなく粉末のやつ。

専用スプーンで2杯。水300mlに対する分量だけど、醤油が入っているわけだし控えめに。
今回はちょうどよかったかな。




ししゃも焼いたり。

河原でぼけと過ごす。


株式会社 丸十大屋[芋煮のたれレシピ]
https://www.marujy​u.com/recipe/recipe_imo​ni.html

赤缶 カレーミックス|赤缶カレーミックス|S&B エスビー食品株式会社
https://www.sbfood​s.co.jp/products/detail/09994.html​



おまけ



アウトドアチェアがへし折れた…
立ち上がる時の反動に耐えられずにべっきり。
まぁ、安物だったし。
2019/02/23 Sat
常連さんに絡まれながら楽しく飲んでたら日付変わってた。
飲んだ飲んだ!
16:44 組長 休日出勤終わり!
16:58 なや おつかっしゃす!(スタンプ
17:02 組長 飲むか!(スタンプ
17:03 なや マージか
17:03 なや ストロングゼロ飲んでたw
17:03 なや えーけど
17:03 組長 え?(スタンプ
17:03 組長 どこでものんでるなw

17:05 なや どこいくけ
17:05 組長 どこでもええよ
17:06 組長 今は中野だが
17:06 なや 秋葉原あたりにしとくかね
17:08 組長 えーでちゃん

というわけで飲みに行く。



ポイントカードの特典で1人1時間飲み放題になる店に行こうとしたけど、いっぱいで入れず。
ぶらぶらしてから五島列島の海鮮と日本酒の店に入る。


牡蠣と五島列島の魚 日本酒 郷味 本店 (さとみ) - 岩本町/居酒屋 [食べログ]
https://tabelog.co​m/tokyo/A1310/A131002/13034632/





胡椒の圧がすごいポテサラ。




五島あごだしのおでんに貝盛り。




いさき焼き。


  • 風が吹く 純米吟醸生中取り
  • 黒龍 いっちょうらい
  • 黒龍 垂れ口
  • 澤屋まつもと 純米
  • 雪氷柱 純米
移動。
今年は組長がワインを攻めているのでバルに。


ワイン酒場 wai-wai (【旧店名】ワイン&肉バル カウガール) - 秋葉原/ダイニングバー [食べログ]
https://tabelog.co​m/tokyo/A1310/A131001/13202539/





円柱形のポテサラ。




自分はビールを頼んでみたり。グースIPA。
苦味効いててうまかったですねこれ。 もうちょっと雑に飲もうぜ!とさらに移動。
久し振りに駅前地下のノスタルジックなエリアに行ってみる。


町役場 秋葉原店 (マチヤクバ) - 秋葉原/居酒屋 [食べログ]
https://tabelog.co​m/tokyo/A1310/A131001/13024016/





ますばハイボール大ジョッキ!
まるごとにんにく!




あると頼まずにはいられない ちくわの磯部揚げ。
そしてハイボール大ジョッキ!




あると大体組長が頼むポテトフライ。
というか、三軒連続でポテト食ってんな。




ゴーヤの天ぷらにハイボール大ジョッキ!


閉店まで飲んだくれるのでした。
23時閉店なので終電も安心!
2019/02/22 Fri
花粉症の薬飲み始めた。
GR III | RICOH IMAGING
https://ricohimagi​ngstore.co​m/gr-3-s0015041.h​tml
2019年3月下旬発売予定
¥121,500 (税込)

GR III 来月発売かー。
今使っている GR II は、GR DIGITAL III が故障したタイミングの発売だったので発売当日に購入したけど、今回は悩む…
ダイヤルとかの動きが悪くなっていて修理にだそうか迷っていたところなんだけど、修理にだすならいっそ新しいのを買ってしまってもなーと。

そもそも動きが悪くなってるってのは、いつも居酒屋でテーブルに転がしていて何度か酒をぶっかけてるせいなんですけどね。
10万するカメラなのに扱いが雑すぎる。

まぁ、いつも持ち歩いているからこそというか。
道具は大事にしまっておくより使ってなんぼだ。 飲んで帰るか家に帰って飲むか迷って、家の近くの店で飲んで帰る。


のんべい 安兵衛(やすべえ) (一之江/居酒屋) - Retty
https://retty.me/area/PRE13/ARE10/SUB1006/1000012546​44/





つくねで一杯。




鮭カマで一杯。




『おすすめB級地酒』をまたひととおり飲んだり、チューハイ飲んだり。

  • 上撰 みちのく小町 福島
  • 武蔵男山 さいたま市
  • すずしな 生貯蔵酒 秋田
  • 吟醸 三年古酒 古籠 新潟
  • 上撰 杜氏一心 さいたま市
  • 金絞朝日 しぼってそのまま さいたま市




B級地酒以外からも一杯。

  • 女城主 特別純米


常連の爺さんと社長さんに挟まれて楽しく飲んでくる。
2019/02/21 Thu
二晩連続で四合瓶を飲み干す。 隣のチームの人たち、大体英語で話しているのでいつもなにしゃべってるかよくわからないけど、今日は

「craft beer」

て言ってたのだけ聞こえた。 ここんとこずっと置いてなかったけど、ひさしぶりにスーパーにラム肉があったので、今夜は羊祭や!
2019/02/20 Wed
えびみそぺろぺろしながら酒飲んでたら四合瓶が空に。

株式会社マルヨダイレクト
http://www.maruyo​-food.co.jp​/fs/maruyo/ebimiso/4180
えびの身入りえびみそ

うめぇ。
2019/02/19 Tue
週間 季節前進 雨のあと花粉多く飛ぶ(日直予報士 2019年02月19日) - 日本気象協会 tenki.jp
https://tenki.jp/forecaster​/k_shiraish​i/2019/02/19/3711.html

そろそろ花粉対策はじめないとね。
2019/02/18 Mon
駅のホームでスマホ忘れたのに気が付いて取りに戻ってから出社したけど別に遅刻はしない。

サーバーのプラン変更作業 番外編

オンラインマニュアルの特定ページを参照しようとするとトップにリダイレクトされるのでサポートに「見れないヨ」てメールしたところ、閲覧環境を教えろと返ってきたので「いや、403が返ってきてんだけど。アクセス拒否する設定になってね?」て返したら、「ごめーんね!」て返ってきて直った。

多分、非公開設定でアップロードしておいて、一覧が更新されてから非公開を解除する予定だったところ、一覧の更新だけして解除を忘れてたとかそんなとこかな。
2019/02/17 Sun
イカ墨食ったから うんこが黒い。 昨日組長と「ピンク色の日本酒けっこうあるよ?」って話をしたけど、店頭で見かけるだけで自分で買うことはなかったからどんな銘柄があんのかなーとざっくり調べてメモ。

  • 埼玉 石井酒造 ピンクにごり酒純米 pipipi
  • 埼玉 石井酒造 権現桜 ピンクにごり
  • 大分 中野酒造 ちえびじん LOVE PINK 桃色にごり純米生原酒
  • 大分 井上酒造 桃色にごり 花便り
  • 山口 酒井酒造 五橋 桃色にごり
  • 岡山 宮下酒造 純米桃にごり
  • 広島 賀茂泉酒造 COKUN
  • 新潟 鮎正宗酒造 さくらいろ 純米にごり酒
  • 石川 中島酒造 桃色にごり酒 花おぼろ
  • 福岡 若波酒造 若波 桃色にごり
  • 福島 小原酒造 桃色にごり 桜
  • 秋田 山本合名会社 白瀑 ど!ピンク
  • 群馬 龍神酒造 尾瀬の雪どけ 桃色にごり
  • 長崎 梅ヶ枝酒造 ももいろにごり酒

五橋とか尾瀬の雪どけにもあるのかー。
昨日飲んで印象よかった若波にもあるんですね。

自分が飲んだことあるのはpipipi権現桜くらい。
というか、同じ酒造だったのか。

酒自体がピンクのもの以外に瓶がピンクのものも春には並ぶので、酒屋の一角が結構ピンク。
2019/02/16 Sat
久し振りに映画を見に行く。朝の回。

前作があんまりだったので期待してなかったんだけど、今作は面白かった。良かった。
ラスト前の校門をそっと閉じるシーンとかぐっときたよ。


ただ、隣の男がずっともぞもぞしてて最高に鬱陶しかったですね。クソがー! 終わってからモンベルでコッヘルを買ったりぶらぶらして、昼間っからビール飲む。





YONA YONA BEER WORKS 新宿東口店 (ヨナ ヨナ ビア ワークス) - 新宿三丁目/ビアホール・ビアレストラン [食べログ]
https://tabelog.co​m/tokyo/A1304/A130401/13205198/





左から東京ブラック、SUN SUN、軽井沢高原ビール ワイルドフォレスト。




ソーセージ3種。
手前からパクチーレモン、イカ墨スパイシー、ラクレットモッツァレラ。
店員さんが切り分けてくれます。

パクチーレモンはあんまりパクチー感なくて残念。むしろピリ辛。




よなよなリアルエール。
常温・低炭酸・高アルコールの よなよなエール。
これうまかったですね。




バレルフカミダス B-49 インペリアルスタウト。

バレルフカミダスの別の奴を注文しようとしたら限定のこちらをすすめられて、それじゃあと注文。
ものっそい香ばしい。
18:40 組長 飲むか!(スタンプ
18:47 なや えーで
18:48 組長 ヨーソロー!!(スタンプ

というわけで夕方になってから飲みに行く。

18:50 なや どこかな
18:52 組長 ばしょまでかんがえたなかた
18:52 組長 のみたいいっしんで
18:53 組長 どこなら?
18:54 なや どんだけ飲みたいんだw
18:58 組長 ポイントカード実装の十徳か3丁目のパクチーはすぐでるな
18:59 なや ポイントカードw
18:59 なや 正月にいったきりだったな
18:59 なや 十徳いくかー
19:00 組長 オッレイ♪(スタンプ

ポイントカードが始まった十徳へ行くことに。

19:00 なや (新宿から飲んで帰ってまた新宿に飲みに行くおじさん
19:00 組長 いるのかとおもったw

再び新宿へ!


新宿古民家 十徳 (シンジュクコミンカ ジュットク) - 新宿/居酒屋 [食べログ]
https://tabelog.co​m/tokyo/A1304/A130401/13187216/





最初の一本は裏男山。
アテにハモの湯引き。ハモうまかったですねー。梅のアクセントもよし。




お次は黒ばくれん。




このあたりで店長からオススメを聞く。
今日は色々ある模様!
そのうちからまず、開運の山田錦をいただく。




オススメから2本目。若波。
これは今日一よかった!
暫定今年の一本ですわー。




オススメから3本目。
開運の赤磐雄町。
先ほど頼んだものの原料違い。

区別つかないだろうなーと思っていたけど、思いの外違った。
こっちのが酸味が特徴的でしたね。うまい。




オススメから4本目は福田。




オススメから5本目は山本。
酵母違いを組長とそれぞれ頼んで飲み比べ。

このあたりで組長が落ちる。




こちらは変わり種。津島屋の外伝。
ワイン酵母で醸したものらしい。
津島屋って好きな銘柄なんですけど、こういうのもあったのかー。




最後は秋鹿。
飲んだ飲んだ!


  • 裏男山 超辛純米
  • 黒ばくれん 超辛口吟醸
  • 開運 純米吟醸 山田錦
  • 若波 純米吟醸
  • 開運 純米吟醸 赤磐雄町
  • 福田 純米吟醸
  • 山本 純米吟醸原酒 6号酵母
  • 津島屋 外伝 北の風
  • 秋鹿 純米生酒 全量山田錦

組長からもらった分とか瓶の最後でサービスしてもらった分とかを考えると、一升飲んでません?





そば食って〆っ。
2019/02/15 Fri
厄年って数え年なんだっけ。来年、大厄じゃないか… スーパーでシュリンプ祭とかやってたので海老フライ買って帰る。
2019/02/14 Thu
【勤怠連絡】じゃなくて【艦隊連絡】てメールが送信されてきた。提督か。

サーバーのプラン変更作業④

ディレクトリの移動とリダイレクト設定。

.htaccess
RewriteEngine on

# http -> https
RewriteCond %{HTTPS} off
RewriteRule .* https://www.ymnet.org%{REQUEST_URI} [R=302]

RewriteRule ^ymnet/(.*) /$1 [R=302]
RewriteRule ^$ /diary/d [R=302]

リダイレクトをキャッシュされないよう、さしあたり302。
Lはこの場合、指定しないほうが評価回数が少ない。

  • L4~5 : 旧URLからの転送とHTTPS強制
  • ​http://sakanaya.kir.jp/ymnet/xxx -> https://www.ymnet.org/ymnet/xxx
  • ​http://www.ymnet.org/xxx -> https://www.ymnet.org/xxx
  • L7 : 移動したディレクトリの転送
  • ​https://www.ymnet.org/ymnet/xxx -> https://www.ymnet.org/xxx
  • L8 : ルートは日記に飛ばす
  • ​https://www.ymnet.org/ -> https://www.ymnet.org/diary/d


301リダイレクトはもう使わない | SEO
https://grewja.com​/seo/2324

.htaccess に RewriteRule 書くときは、[L]フラグをつけてもそこで終了しないかもよ?って話。 - Qiita
https://qiita.com/ezaki/items/87c2dff8f7​753ef048d2​



作業前



作業後



いえーい。
2019/02/13 Wed
昨晩、リダイレクトのテスト中にうっかり旧ドメインのまま https にリダイレクトしてしまう設定を書いてしまって証明書エラーになる状態になっていたんですが、さらに 301 を指定していたもんだから証明書エラーになるリダイレクト先がキャッシュされてしまう状態だったので、そのタイミングで踏んだ人がいたらキャッシュを削除しないとここ見られなくなっていると思うんですよね。
見られなくなっているが故に伝える手段がないんですけどね。 そもそも誰が見てるんだここ。


最近のログをざっと眺めた感じ、知り合いからのアクセスっぽいのは

  • Pixcel 3 : 組長
  • ZenFone 3 : シキさん
  • BIGLOBE 千葉 + iPad : K先生
  • ODN 保土ヶ谷 : チェリーさん?そのあたりに引っ越していた気がする。
  • iPhone + mixi経由 : mixiのログイン時間を見るに なる様??

あと、Xperia(SO-05D)の人とOCN 船橋の人もそうっぽいけど誰。
2019/02/12 Tue

サーバーのプラン変更作業③

SSLが使えるようになったので設定してみる。

ドメインをどうしようかと思っていたけど、自宅サーバーで使用しているものを別ホストで使えばいいだけだった。

  • Webサイト → ドメイン設定 → 独自ドメイン から割り当て。ホスト名は www を指定。
  • 自宅サーバー向けには、ドメイン → DNSレコード設定 でAレコードを割り当てている。
  • SSL → SSLサーバー証明書購入 から申し込み。

これでとりあえず https://www.ymnet.org/ymnet/diary/d でアクセスできるように。
次はディレクトリ構成の変更と転送設定だな。
2019/02/11 Mon
自宅サーバーの電源を剛短4に交換。
SATA電源プラグがL型じゃなくなってたんですけど改悪では…?
省スペースケースにはキツイ。 よく考えたら、剛短2のL型ケーブルを流用すればよかったのでは。
もうフタ閉めちゃったよ。
2019/02/10 Sun

サーバーのプラン変更作業②

コントロールパネルからサービスプラン変更を実行。
さくっとサーバーが移動されてファイルが全部消えるので、バックアップからリストア。

無事変更完了。

OSとか諸々変わっているけど、とりあえず大丈夫そうかな。
株式会社 丸十大屋[芋煮のたれレシピ]
https://www.marujy​u.com/recipe/recipe_imo​ni.html

芋煮のたれを注文したのでソロ芋煮会。





まずは里芋を煮るッ。
湯気がすごい。




続けて牛バラと こんにゃくを投入ッ。




肉に火が通ったらネギを入れてひと煮立ちさせて完成ッ。

B-6君の上に鍋を置くと輻射熱が遮断されるから必然的に調理中は寒くなるんだけど、その冷えた体に熱々のスープがしみる…
バラ肉からでた脂もいい味だしてる。
そしてホクホクのいもっ。

うまぁぁぁい!


  • 里芋300g、水1Lでつくったけど一人で食うには多すぎた。



鍋に残ったスープに「うどん」と「カレールー」を入れて、「芋煮カレーうどん」もおススメです。



具を少し残して〆はカレーうどん!
2019/02/09 Sat
ちょうど終電だった。
こんなくそ寒い中を歩くはめになるところだった。 予報通りの雪。 カツカレー弁当のカレーが少なすぎたのでルーを煮ただけの具なしカレーで追いカレー。

サーバーのプラン変更作業①

まずはファイルのバックアップ。
総ファイル数は16,950でした。
半分が写真。そのまた半分がアクセスログ(日単位)。

カウンターは表示しなくなってから全然見てなかったけど、バックアップ時点で2,408,028。
にひゃくまん…
もちろん回しているのはほぼクローラーである。(※1)


※1)Baiduのクローラーだけはアクセスはじいてた。クソすぎて。今はどうか知らないけど。
2019/02/08 Fri
ガラケーとスマホ(データ通信のみ)と社有携帯の3台持ちなんだけど、ガラケーを使う機会がほぼほぼなくて最近出勤時に持ってきてなかったんだけど、久しぶりに必要な事態になる。 社食のある棟に出入りするのに必要な入館証がなかなか発行されず、昼食はずっとコンビニを利用していたんだけど、執務室から出たら即コンビニというロケーションが楽すぎて、入館証が発行されてからもわざわざ一階に降りて隣の棟に移動してから最上階まで上がる必要のある社食に行くのが面倒でコンビニで済ませていたけど、久方ぶりに社食を利用。 ここのレンタルサーバー、大学時代に契約したものでプランが超古いんですが、現行プランの一番安いやつに乗り換えるとメールアドレスが消失してしまうからなーと旧プランのままにしていたけど、別に一番安いやつじゃなければメールアドレス消えないんですよね。
2番目のプランなら料金今のままだし、なんなら一括支払いにも対応するようになるので安くできるし、さらにSSL対応とかサービス内容増えるし。
プラスしかなかった。

バックアップとったら乗り換えよ。


サービス・料金一覧表 - KAGOYA Internet Routing サポートサイト
https://support.ka​goya.jp/kir/charge/charge_sha​red.html
サービス形態 旧共用サーバー
サービスプラン名称 20
1ヶ月毎月支払い 2,160

サービス・料金一覧表 - KAGOYA Internet Routing サポートサイト
https://support.ka​goya.jp/kir/charge/charge.htm​l
サービス形態 共用サーバー
サービスプラン名称 S21
1ヶ月毎月支払い 2,160
19:56 なや くそさむい
19:57 組長 あったまっちゃぅ?
19:58 なや あったかーい!!!(スタンプ

20:16 組長 俺は退社するぞ、ジョジョー
20:17 なや おつかっしゃす!(スタンプ
20:22 組長 もっと飲むか!(スタンプ
20:23 なや イエーイ!(スタンプ
20:23 組長 わーい(スタンプ
20:24 組長 生まれてきて一番うれしい ポロポロ(スタンプ
20:24 なや こんなくそ寒い日はあつかんが恋しい
20:24 組長 かんあがりか?
20:24 組長 十徳か?
20:25 なや いっぱいかもだけど、かんあがりいきたいところ
20:25 組長 電話しないとわからんね

20:31 組長 予約とぅた
20:32 なや やったー!(スタンプ
20:32 なや 生まれてきて一番うれしい ポロポロ(スタンプ

というわけで、久し振りに燗アガリへ!


燗アガリ - 新宿/ろばた焼き [食べログ]
https://tabelog.co​m/tokyo/A1304/A130401/13182294/





こんな寒い日に飲む熱燗とか最高ですやん?




どんこに玉ねぎの丸々炙り。
玉ねぎあまーい。




黒むつの一本焼き。





  • 誉国光 山廃
  • 玉川 山廃純米
  • 神亀 純米辛口
  • 杜の蔵 純米
  • 天穏 生酛純米
  • 北島 生酛純米
  • 御前酒 純米雄町 中取り 無濾過生原酒
  • これのみ冷


燗酒だとでてくるのに時間かかるから、いい感じにインターバルが取れて飲めた。

もうちょっと飲みたかったけど!(どうせ家に帰って飲みなおす
2019/02/07 Thu

前回までのあらすじ

Apache POI が共有数式の作成に対応していないっポイ!(渾身のギャグ)(※1)


※1)今回調査したバージョンは3.9だけど、最新の4.0.1でも未対応の模様。



というわけで、Open XML ファイルフォーマットのオブジェクトを直接いじってどうにかしてみる。

まずは適当に数式が共有されそうなデータをExcelでつくって中を覗いてみる。



  • A~B列に数値を入力
  • C1 に "=A1*B1" を入力
  • C2:C3 に C1 をコピー


xl/worksheets/sheet1.xml
  <sheetData>
    <row r="1" spans="1:3" x14ac:dyDescent="0.4">
      <c r="A1">
        <v>1</v>
      </c>
      <c r="B1">
        <v>4</v>
      </c>
      <c r="C1">
        <f>A1*B1</f>
        <v>4</v>
      </c>
    </row>
    <row r="2" spans="1:3" x14ac:dyDescent="0.4">
      <c r="A2">
        <v>2</v>
      </c>
      <c r="B2">
        <v>5</v>
      </c>
      <c r="C2">
        <f t="shared" ref="C2:C3" si="0">A2*B2</f>
        <v>10</v>
      </c>
    </row>
    <row r="3" spans="1:3" x14ac:dyDescent="0.4">
      <c r="A3">
        <v>3</v>
      </c>
      <c r="B3">
        <v>6</v>
      </c>
      <c r="C3">
        <f t="shared" si="0" />
        <v>18</v>
      </c>
    </row>
  </sheetData>

C2とC3が共有数式になってますね。
この場合、C1は通常セルになっているけど、C1を共有元にすることも可能かな。



Excelの出力結果を参考に値をセット。

  • cell は XSSFCell のインスタンス
  • 値si は共有数式のインデックスなので式の数に合わせて採番
  • 要素v は計算したら設定される(ハズ)なので省略

共有元

        CTCellFormula f = CTCellFormula.Factory.newInstance();
        f.setT(STCellFormulaType.SHARED);
        f.setRef("C1:C3");
        f.setSi(0);
        f.setStringValue("A1*B1");

        CTCell c = cell.getCTCell();
        c.setF(f);

共有先

        CTCellFormula f = CTCellFormula.Factory.newInstance();
        f.setT(STCellFormulaType.SHARED);
        f.setSi(0);

        CTCell c = cell.getCTCell();
        c.setF(f);


実行してみたところ、計算でエラー。

java.lang.IllegalStateException: Master cell of a shared formula with sid=0 was not found
    at org.apache.poi.xssf.usermodel.XSSFCell.convertSharedFormula(XSSFCell.java:383)
    at org.apache.poi.xssf.usermodel.XSSFCell.getCellFormula(XSSFCell.java:368)
    at org.apache.poi.xssf.usermodel.XSSFEvaluationWorkbook.getFormulaTokens(XSSFEvaluationWorkbook.java:148)
    at org.apache.poi.ss.formula.WorkbookEvaluator.evaluateAny(WorkbookEvaluator.java:286)
    at org.apache.poi.ss.formula.WorkbookEvaluator.evaluate(WorkbookEvaluator.java:230)
    at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.evaluateFormulaCellValue(XSSFFormulaEvaluator.java:264)
    at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.evaluateFormulaCell(XSSFFormulaEvaluator.java:151)
    at org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.evaluateAllFormulaCells(HSSFFormulaEvaluator.java:327)
    at org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.evaluateAllFormulaCells(HSSFFormulaEvaluator.java:318)
    at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.evaluateAllFormulaCells(XSSFFormulaEvaluator.java:238)

XSSFSheet の sharedFormulas に該当がないと怒られている。

org/apache/poi/xssf/usermodel/XSSFSheet.java
    /**
     * cache of master shared formulas in this sheet.
     * Master shared formula is the first formula in a group of shared formulas is saved in the f element.
     */
    private Map<Integer, CTCellFormula> sharedFormulas;
    private TreeMap<String,XSSFTable> tables;
    private List<CellRangeAddress> arrayFormulas;
    private XSSFDataValidationHelper dataValidationHelper;    



リフレクションでねじ込む。

  • sheet は XSSFSheet のインスタンス

        Field field = sheet.getClass().getDeclaredField("sharedFormulas");
        field.setAccessible(true);
        Map<Integer, CTCellFormula> sharedFormulas = (Map<Integer, CTCellFormula>) field.get(sheet);
        sharedFormulas.put(0, f);

再度実行してみたところ正常終了。
ファイルを開いてみたところ、計算結果も表示されました。

いけるじゃーん。


CTCell#setF を呼んでいる回数は 行×列 のままなので、パフォーマンス的には大差ないか?と思ったけど、大幅に向上。
CTCellFormula に数式が含まれている場合にコストがかかるんだな。



はまった点とか

  • CTCell#setF に渡した CTCellFormula のインスタンスを更新しても、CTCell には反映されない。再セットが必要。
  • shiftRows で行をずらすと、セル本体の ref と数式は更新されるが、sharedFormulas 側は更新されない。
いつものラム肉がない! 注文していた電源が到着。
予備電源を使い続けてもよかったのだけど、故障した剛力短2がサイズ小さくてよかったので後継機を購入。


剛短4 プラグイン 500W・600W・700W(ごうたん4) | 株式会社サイズ
https://www.scythe​.co.jp/product/power/spgt4
2019/02/06 Wed
階下が退去してた。

一般入居者ではなく会社事務所だったから夜間と休日は人がいなくて(※1)、夜中に酔っ払って盛大に転んでもぜんぜん気にしなくて大丈夫(※2)だったのに。


※1)そもそも平日の日中も人の出入りを見たことないけど。
※2)なにも大丈夫ではない。 考え事しながらビル内を歩いていたら向こうから見たことあるような人がきたなと思ったら声をかけられる。

前の現場でいっしょだった人でした。

ぐうぜーん。 処理に時間がかかりすぎてタイムアウトするやつ、蓋を開けたら Apache POI だったのでコードを眺める。




ボトルネックになっているのは XSSFCell#setCellFormula。

org/apache/poi/xssf/usermodel/XSSFCell.java
    /**
     * Sets formula for this cell.
     * <p>
     * Note, this method only sets the formula string and does not calculate the formula value.
     * To set the precalculated value use {@link #setCellValue(double)} or {@link #setCellValue(String)}
     * </p>
     *
     * @param formula the formula to set, e.g. <code>"SUM(C4:E4)"</code>.
     *  If the argument is <code>null</code> then the current formula is removed.
     * @throws org.apache.poi_v3_9.ss.formula.FormulaParseException if the formula has incorrect syntax or is otherwise invalid
     * @throws IllegalStateException if the operation is not allowed, for example,
     *  when the cell is a part of a multi-cell array formula
     */
    public void setCellFormula(String formula) {
        if(isPartOfArrayFormulaGroup()){
            notifyArrayFormulaChanging();
        }
        setFormula(formula, FormulaType.CELL);
    }

    private void setFormula(String formula, int formulaType) {
        XSSFWorkbook wb = _row.getSheet().getWorkbook();
        if (formula == null) {
            wb.onDeleteFormula(this);
            if(_cell.isSetF()) _cell.unsetF();
            return;
        }

        XSSFEvaluationWorkbook fpb = XSSFEvaluationWorkbook.create(wb);
        //validate through the FormulaParser
        FormulaParser.parse(formula, fpb, formulaType, wb.getSheetIndex(getSheet()));

        CTCellFormula f = CTCellFormula.Factory.newInstance();
        f.setStringValue(formula);
        _cell.setF(f);
        if(_cell.isSetV()) _cell.unsetV();
    }

バリデートのコストが高いのか?と、ダイレクトに CTCell#setF するようにしてみたけど大して変わらず。
openxmlformats の中だと手がだせんな…



なにか別のアプローチはないものかと眺めたところ、shared formula とかいうのが。
数式を共有する構造があるのか。

org/apache/poi/xssf/usermodel/XSSFSheet.java
    /**
     * cache of master shared formulas in this sheet.
     * Master shared formula is the first formula in a group of shared formulas is saved in the f element.
     */
    private Map<Integer, CTCellFormula> sharedFormulas;
    private TreeMap<String,XSSFTable> tables;
    private List<CellRangeAddress> arrayFormulas;
    private XSSFDataValidationHelper dataValidationHelper;    

    void onReadCell(XSSFCell cell){
        //collect cells holding shared formulas
        CTCell ct = cell.getCTCell();
        CTCellFormula f = ct.getF();
        if (f != null && f.getT() == STCellFormulaType.SHARED && f.isSetRef() && f.getStringValue() != null) {
            // save a detached  copy to avoid XmlValueDisconnectedException,
            // this may happen when the master cell of a shared formula is changed
            CTCellFormula sf = (CTCellFormula)f.copy();
            CellRangeAddress sfRef = CellRangeAddress.valueOf(sf.getRef());
            CellReference cellRef = new CellReference(cell);
            // If the shared formula range preceeds the master cell then the preceding  part is discarded, e.g.
            // if the cell is E60 and the shared formula range is C60:M85 then the effective range is E60:M85
            // see more details in https://issues.apache.org/bugzilla/show_bug.cgi?id=51710
            if(cellRef.getCol() > sfRef.getFirstColumn() || cellRef.getRow() > sfRef.getFirstRow()){
                String effectiveRef = new CellRangeAddress(
                        Math.max(cellRef.getRow(), sfRef.getFirstRow()), sfRef.getLastRow(),
                        Math.max(cellRef.getCol(), sfRef.getFirstColumn()), sfRef.getLastColumn()).formatAsString();
                sf.setRef(effectiveRef);
            }

            sharedFormulas.put((int)f.getSi(), sf);
        }
        if (f != null && f.getT() == STCellFormulaType.ARRAY && f.getRef() != null) {
            arrayFormulas.add(CellRangeAddress.valueOf(f.getRef()));
        }
    }

org/apache/poi/xssf/usermodel/XSSFCell.java
    /**
     * Return a formula for the cell, for example, <code>SUM(C4:E4)</code>
     *
     * @return a formula for the cell
     * @throws IllegalStateException if the cell type returned by {@link #getCellType()} is not CELL_TYPE_FORMULA
     */
    public String getCellFormula() {
        int cellType = getCellType();
        if(cellType != CELL_TYPE_FORMULA) throw typeMismatch(CELL_TYPE_FORMULA, cellType, false);

        CTCellFormula f = _cell.getF();
        if (isPartOfArrayFormulaGroup() && f == null) {
            XSSFCell cell = getSheet().getFirstCellInArrayFormula(this);
            return cell.getCellFormula();
        }
        if (f.getT() == STCellFormulaType.SHARED) {
            return convertSharedFormula((int)f.getSi());
        }
        return f.getStringValue();
    }

でも、CTCellFormula#setT で STCellFormulaType.SHARED を設定しているコードや、CTCellFormula#setSi でインデックスを設定しているコードが見当たらない。
読み取りにしか対応していない?

読み取ったものは書き出しできるはずだから、なんとかできないこともないと思うけど。



なにか他にないかとさらに探したところ、

org/apache/poi/xssf/usermodel/XSSFSheet.java
    public CellRange<XSSFCell> setArrayFormula(String formula, CellRangeAddress range) {

        CellRange<XSSFCell> cr = getCellRange(range);

        XSSFCell mainArrayFormulaCell = cr.getTopLeftCell();
        mainArrayFormulaCell.setCellArrayFormula(formula, range);
        arrayFormulas.add(range);
        return cr;
    }

配列数式。
いわゆるCSE数式。そんなものあったな!

これなら、数式を設定する数が 列×行 ⇒ 列 にできる。
複雑な数式には対応できないけど。

今回の内容であれば適用可能なので試しに実装してみたところ、速度的には問題なし。
とりあえず候補だな。 いつも大体しめじなので、たまにはまいたけ。 レトロな両手鍋が欲しいなーと比較検討してポチッていたものが到着。

以下、候補。




和平フレイズ - Wikipedia
https://ja.wikiped​ia.org/wiki/%E5%92%8C%​E5%B9%B3%E​3%83%95%E3​%83%AC%E3%​82%A4%E3%8​2%BA
和平フレイズ株式会社(わへいフレイズ)とは、新潟県燕市に本社を置く日本の企業である。主にフライパンや鍋などのキッチン用品を企画・販売している。主な商品に平野レミのレミパンや有元葉子のラバーゼシリーズがある。

レミパンのとこ。



パール金属 - Wikipedia
https://ja.wikiped​ia.org/wiki/%E3%83%91%​E3%83%BC%E​3%83%AB%E9​%87%91%E5%​B1%9E
パール金属株式会社(パールきんぞく)とは、新潟県三条市に本社を置く日本の企業である。主にフライパンや圧力鍋などの金属製台所用品などを製造している。また、アウトドア用品を製造・販売しているキャプテンスタッグ (CAPTAIN STAG) のブランドでも知られている。

キャプテンスタッグのとこ。





和平フレイズは「薄い」、パール金属は「テープがベタベタする」てレビューが目立っていたので敬遠。
北陸アルミはレビュー数が一番少ないんだけど、そこは値段と反比例なのかなーと。
というか、比較すると一番高いけど、そもそも別に高くないよね。

というわけで、北陸アルミのものを購入したのでした。

結果、他二社のレビューにでていたマイナス要素はまったくないですね。いい感じ。
2019/02/05 Tue
首になんかしこりが。 ちょっとデータを増やすと経路の途中で噛んでいるサーバーがタイムアウトしてしまってどうにもならんみたいな状態だったので調べてみたところサードパーティーのライブラリがボトルネックになっていたわけですがこのライブラリが使えないとなるとここの出力を一から作り直しみたいな話になるので見なかったことにして定時で帰る。
2019/02/04 Mon
2週間くらい体調不良の状態が続いていたけどようやく復調した感。
ここ数日はよく寝てたしな!(※1)


※1)酔っぱらって寝こけていただけなので、健康という面ではむしろよろしくない。
【レビュー】よっちゃんイカ専用の日本酒!?「春鶯囀 カットよっちゃん専用日本酒」を飲んでみた | NOMOOO(ノモー) - 日本最大級のお酒専門メディア
https://www.nomooo​.jp/column/120398/

試しに買ってみるか。
次は何飲む? ~カクテルを検索するWebアプリを作ってみた~ - Qiita
https://qiita.com/kon2/items/ba97666080​2a9600a38b​

おもしろいし使えそう。

なお、自分はよく「スコッチベースでなにかー」と頼むので、"スコッチ"で検索してみたけど引っ掛からないなーと思ったら、

× スコッチ
× スコッチウィスキー
○ スコッチウイスキー

でした。 Facebook経由で日記にアクセスがあって何かと思ったら、これこれ
十徳…?
2019/02/03 Sun
日本酒6合飲んで帰ってきて寝て起きたら5時。

ここんとこなんなん。 じゃがアリゴつくってみたけど別に激ウマではないな。ネット飯ですね。
酒のアテになるってのも見たけど、元のままのが酒のアテになりますわ。


ボトルを手に取って選べるのイイですね。
味の感想がタグで付いてるのも語彙力が死んでる勢にはありがたい。

まぁ語彙力死んでるから、この場合の感想は「タグに書いてあった通りだ~!」になりますけどね。
2019/02/02 Sat
日本酒4合飲んで帰ってきて、ストロング1.5リットル飲んで、寝て、目覚ましでいったん起きて、二度寝したら昼でした。

もえるごみだしそこねた。 久し振りにかよちゃんにいってみる。

総菜の盛り合わせを注文してから「日本酒お願いしまーす」と後ろのテーブルに取りに行ったら、

女将「あら、お客さんきたことある?」
なや「はい、2回目ですー」
女将「前きた時、ここに座ってた…?」
なや「あ、はい!そうですそうです」

さすが客商売。よく覚えてらっしゃる。

なや「隣がご夫婦に娘さんで、後ろにミュージシャンの方がいて…」
女将「あら、それって(自分の隣にいた人の方に手をやる」
なや「えっ」

今日もいたー!

なや「前回は12月の頭だったから2ヶ月ぶりですねー」
ミュ「あれから2ヶ月も経ってましたっけ?!」

こちらにも覚えられてたw


かよちゃん - 鬼越/居酒屋 [食べログ]
https://tabelog.co​m/chiba/A1202/A120202/12020652/





まずは総菜の盛り合わせ。

  • 栄川 特醸酒
  • 2杯いただく。




前回食べられなかった栃尾揚げ。
薬味たっぷりで良かったですねぇ。
写真だと分かりにくいけど、サクラエビが乗っているのがこれまたイイ。

  • 会津ほまれ 清酒
  • こちらも2杯いただく。




サバ君。
鯖の燻製ですね。めっちゃ酒のアテになる。

  • 木戸泉 本醸
  • また2杯いただく。
  • 「ちゃんと水も飲んでね!」て言われる。
2019/02/01 Fri
ストロング飲んでワイン飲んでスコッチをストレートで飲んで焼酎をロックで飲んで寝て起きたら4時。
おはようございます。2月です。
新宿「日本再生酒場」若き立ち飲み、いまや街の立派な景色
https://syupo.com/archives/23337
昭和をコンセプトにした、とあえて書きましたが、実はそのルーツは1950年(昭和25年)に中野で創業の4席しかない立ち飲み屋に遡れます。1974年(昭和49年)に調布へ移転し、以来調布の人々に愛されている「い志井」です。

日本再生酒場て い志井の系列だったのかー。
盛岡五郎とも姉妹店なんですね。こっちでも つくPだしてる模様。

コンセプト居酒屋感が強くて敬遠してたけど、いっぺんいってみるか。
十徳ポイントカードのご案内:酒処十徳
http://www.juttok​u.com/backnumber​/bn070508.h​tm
十徳グループでは全店共通でご利用頂ける「十徳ポイントカード」をスタートいたします。

十徳でポイントカードはじまったの?!まーじで。

■30ポイント:3,000円分のご飲食券+十徳オリジナルグッズ

オリジナルグッズは気になるけど、30回はなかなか厳しいなー。
月一の利用で2年以上かかりますやん。 今日は飲んで帰るぞジョジョーッ!

前回いけなかった俵やに再チャレンジしてみたけど今回もいっぱい。
次に小伝馬にいってみたけどこちらもいっぱい。ぐぬぬ。
と思いきや、

店員さん「こちらでよければ…」

ほぼ通路のカウンター席にねじ込んでもらえました。やったぜ!
超狭くて店員さんが通るたびにがんがんあたってたけど!(※1)


小伝馬 - 馬喰横山/居酒屋 [食べログ]
https://tabelog.co​m/tokyo/A1302/A130204/13102226/


※1)ねじ込んでもらえただけでありがたかったので文句は一切ない。



ここは道灌を各種取り扱っているんですよねー。飲み比べ。




貝の盛り合わせ。ホッキ貝/ツブ貝/トリ貝。

  • 道灌 山廃純米




サクラマスの塩焼き。めちゃくちゃうまかった。

  • 千代田蔵 特別純米生原酒 山廃
  • 道灌 本醸造生原酒 蔵出し一番酒




栃尾揚げ。

  • 道灌 清酒
  • 燗で。