"Java 8 is required to run..."エラーが表示されVSCodeでApexのシンボル情報を参照できなくなった場合の対応
環境
事象
なぜかVSCodeでApexのシンボル情報を参照できなくなった(とても開発効率が落ちる)
- ↓これが出なくなった
- ついでにサイドバーのアウトラインも表示されなくなった
VSCode起動時に
Java 8 is required to run. Download and install it from https://java.com/en/download/.
というエラーが表示されるようになった
Java11が原因?
forcedotcom/salesforcedx-vscodeにissueが起票されていた
github.com
- Apex Language Server · forcedotcom/salesforcedx-vscode Wiki · GitHubに書いている通りにsalesforcedx-vscode-apex.java.home
にJava8用のパスを設定したら直った
$ java --version
したらJava11.0.2だった- VSCode拡張のApexはJava8のみ対応とのことだった
- 特に環境を更新した記憶はないけど、知らない内にJava11がインストールされていた...?
文字からUTF-8のバイトコードを調べるワンライナー
環境
文字からUTF-8のバイトコードを調べるワンライナー
ー
(全角ハイフン)を調べたい場合
$ echo -n 'ー' | iconv -f utf-8 | xxd -p e383bc
-t
を明示しない場合はUTF-8で出力と解釈される
ワンライナーの意味
- 下記を参照
出力するエンコーディング方式を指定する
-
xxd
はファイルのダンプなのでUTF-16BEのBOMfeff
も付与されている模様(30fc
がー
のバイトコード)
$ echo -n 'ー' | iconv -f utf-8 -t utf-16 | xxd -p feff30fc
$ echo -n 'ー' | iconv -f utf-8 -t sjis | xxd -p 815b
他の方法は
- あるかもしれないです
楽々ERDレッスンでER図の描き方を学んだ
tl;dr
- 楽々ERDレッスン+MySQL WorkbenchでER図を描く練習が捗る
取り組む前の自分のスキル・知識
- 業務でER図を読むことはある
- 業務でER図を描いたことはない
- IE記法は分かる、IDEF1X記法は分からない
動機
- 最近、実装より上のレイヤーの設計に関わる機会が増えた
- ER図がないとデータ構造を議論しにくい(ER図がない場合は自分で描けるようにしたい)
- ER図がないと自分もデータ構造を理解できない・問題に気づけない・忘れると思い出すのに時間がかかる
- というわけでER図を描く訓練したい
楽々ERDレッスンとは
...それに加えて、私が設計のスキルを付けるために実際に行ってきた「身の回りのものを題材にERDを書く」という方法のサンプルを今回は8種類書き下ろさせていただきました。手前味噌ではありますが、本書をお読みいただき実践していただくことで「実務で具体的に手が動く」というレベルに達していただけると考えています。
- ER図の演習問題と解答・解説が8セットも掲載されている
- 題材の例としてはレシート、注文書、請求書等
- 演習問題は全体の1/3ぐらいで、DBの論理設計周りの解説もあり
- 何事も手を動かすことは正義
どうやってER図を描くか
- MySQL :: MySQL Workbench: ビジュアルデータベース設計を使った
- ツールはあくまで手段なので、学習コストの低さと描きやすさがそれなりに両立していれば良いと思った
- 多少動きに癖はあるが、練習用・イメージを掴むのに使うのに丁度よいと感じた
- ER図からテーブル定義のDML発行可能
8回分完走してみて
所感
- 年末年始でコツコツ8回分進めた(内7回分のER図を実際に描いた)
- 答えの図だけでなく、始めにイベント系、次にリソース系のエンティティを見つけて項目を足してリレーションを考えて...という一定の型に沿った解説が凄く良かった
- (規模にもよるが)慣れれば一旦議論の場に出せるレベルのER図を描くのは難しくない。ツールに慣れていれば長くても30分ぐらいでできるタスクだと思った
- 作図のための型があったので、1,2回解説を読んで描いたら後の回は大体自力で描けて大体合ってた
- やっぱり図にすると業務の理解不足、考慮漏れが明らかになるので絶対描いたほうが良いと思った
- IDEF1X記法が解答や例で使われていたので少し馴染めた(MySQL Workbenchが両方の記法を切り替えできたのも良かった)
- あと掲載されている題材の画像がもっと大きいと良いなと思ったりもした(文字が細かくて読みにくい)
苦手意識
ER図を描いていて気づいた自分の弱点
- イベントを中心にリソースとリレーションを繋ぐ発想が浮かびにくかった
- (例)何となくUserテーブルの項目が多くなりがちだった
- 帳票等のサンプルからイベントを見つける/切り分けるという業務分析の考え方や経験が足りないなと思った
次は
- 練習したのはあくまで架空のシステムのER図なので、あとは実際に稼働している多くのシステムと対峙して経験を積んでいくかという気持ち
- 要件定義系の演習課題集も何冊か発売されているみたいなので少し興味ある
macOS 10.14でdark mode有効時にMySQL WorkbenchのUIが変になる問題の解決策
楽々ERDレッスン(羽生章洋)|翔泳社の本を読みながらER図を描きたかったので、MySQL Workbenchがいいかなと思いセットアップしていたら困ったのでメモ。
環境
事象
解決策
$ defaults write com.oracle.workbench.MySQLWorkbench NSRequiresAquaSystemAppearance -bool yes
- MySQL Bugs: #92902: MySQL Workbench with OSx 10.14 Color Issueに記載の通りMySQL Workbench起動時だけdark modeを無効にする
結果
- 直った
- 8.0.14で修正されるらしいのでアップデート待ち
bashの`printf "%.s" hoge`と`printf "%0s" hoge`の違い
環境
事象
$ printf "%0s" hoge hoge $ printf "%.s" hoge # 何も表示されない
疑問
- 文字列かつ精度指定は文字数の制限なので0を指定したら何も表示されないのでは
- "%.s"で何も表示されないのはピリオド=精度0と解釈されているからだと思う
オプションである精度は、ピリオド ('.') とそれに続く10進数という 形式で指定する (10進数はオプション) 。 10進数の文字列の代わりに "" や "m$" (m は 10 進整数)を書くこともできる。 "" と "m$" はそれぞれ、次の引き数と m 番目の引き数を精度として 使うことを指定する (これらの引き数は int 型でなければならない)。 精度として '.' だけが指定された場合、 精度はゼロとみなされる。 精度が負の数だった場合、 精度は指定されなかったものとみなされる。 d, i, o, u, x, X 変換では、表示される最小の桁数を指定する。 a, A, e, E, f, F 変換では、小数点以下に表示される数字の桁数を指定する。 g と G 変換では、有効数字の最大桁数を指定する。 s と S 変換では、文字列から出力される最大文字数を指定する。
解決
- 文字列の場合は
%5.3s
は全体5桁、最大3桁の文字列を出力する
$ printf "%5.3s" 123456 123 # 全体の長さが5なので半角空白が2つ入る
- したがって、
%.s
は%0.0s
と解釈されて最大0桁の文字列出力だから何も表示されなかった(推測)*1
$ printf "%0.0s" hoge # 何も表示されない
- ちなみに、
%0s
で表示されたのは最大桁の指定無しだったから(推測)- 全体の文字数<引数の文字数の場合は全て表示
$ printf "%1s" hoge hoge
精度は変換指定子によって意味が異なる
- 何となく
%f
で小数点以下を指定するイメージしかなかった - ちゃんと確認しよう
これがしたかった
- そもそもなんで気になっていたかというと、このスクリプトの原理が分からなかったからでした
$ printf hoge\\n"%.s" {1..5} hoge hoge hoge hoge hoge
参考
*1:実装は確認していないので
キャッシュレスな生活をしたい
たまにはライフハック的な記事でも
現金を使いたくない理由
- 紙幣や小銭を探すために時間がかかる
- 所持金を補充するためにATMを利用する必要がある
- 新生銀行はスタンダード会員の場合に1回あたり108円のATM利用手数料がかかるようになってしまった
- ATMは順番待ちする場合もあり時間がかかる、セキュリティ上のリスクもある
- 支払い金額に対して所持金が不足している可能性がある
- 財布を持たないといけない
- 小銭が増えるとかさばる
- 財布の紛失リスク
- 財布には現金以外に保険証やクレジットカード等も入っている
現金を使う場面と解決策を整理
- 自分が日々の生活で現金を利用する場面を整理した
- 下記以外の場面ではクレジットカードを使う(病院、家電量販店etc)
- もちろん下記の場面でもクレジットカードは使えるが、サインや暗証番号を求められるので日常的に使用するなら代替手段を見つけたい
- 割り勘は人依存(Kyash使えるとそれで済む)
場面 | 頻度 | 急ぎ度 | 解決策 |
---|---|---|---|
コンビニで買い物 | 毎日 | 高 | Suica |
スーパーで買い物 | 週2,3回 | 低 | なし(クレジットカード) |
ドラッグストアで買い物 | 週に1回 | 低 | なし(クレジットカード) |
スターバックス | 週2,3回 | 中 | スターバックスモバイルアプリ |
外食(昼食) | 週2,3回 | 中 | なし(クレジットカード) |
Suicaチャージ/定期券更新 | 月1,2回 | 高 | JREカードで自動化 |
- 急ぎ度は始業前、業務中等は高くなる
問題点
支払い方法
- スーパー、ドラッグストアは店舗によってはSuica利用可だが自宅周辺の店舗は未対応
- 諦めてクレジットカードで支払う?
- 大抵の飲食店はクレジットカードor現金しか選択肢がない
- ランチだと1000円でお釣りなしの場合も多いのでクレジットカードの方が支払い速度が遅くなりそう
小銭の処分
- 現金を使う場面が減ると小銭は減りにくくなる。ただし現金を一切利用しないわけではないので小銭が増えることはある
- 自宅に小銭を貯めるスペースを作る or 募金箱に投入する?
理想はJREカード1枚 + 小さくて安価な財布
所感
bashでUnicodeコードポイントから文字を表示する方法まとめ
シェル芸に取り組んでいるとUnicodeコードポイントを操作して文字を表示させることが多いのでまとめ。
環境
\uを利用する方法
- こんな感じのこと
$ echo -e \\u3043 ぃ
数値文字参照を利用する方法
- こういう方法もある
$ echo 'ぃ' | nkf --numchar-input ぃ
- 複数行に並べられたコードポイントを一括で文字に変換するときは便利かも?
- 何となくワンライナーの見通しが良い
$ for c in $(seq 0x3042 0x3050); do printf "&#x%x;\n" $c; done | nkf --numchar-input あ ぃ い ぅ う ...(略)