弥生会計のスマート取引取込がスマートじゃない

  • このエントリーをはてなブックマークに追加

弥生会計には、画像やPDFを証憑として仕分けをする「スマート取引取込」という機能があります。
この機能はPDFファイルも取り込めるのですが、仕様があまりにも酷いため、現代では使い物になりません。
PDFファイル中の一番最初の画像だけを処理する仕様になっています。そのため、テキスト情報のみで構成されているPDFは以下のようなエラーが発生し、手動で日付や金額を入れる事もできません。

画像解析でエラーが発生しました。(内部エラーコード:EC80305)
しばらく時間をおいて実行するか、
再度試していただいても解決しない場合はサポートまでご連絡ください。
(エラーID:E1309)

サポートに問い合わせたところ以下の回答をいただきました。

お使いのスキャナの設定が、「高圧縮モード」になっていないかをご確認ください。
「高圧縮モード」になっていると、今回のエラーが表示します。

「高圧縮モード」になっていた場合、「高圧縮モード」になっていなかった場合の
いずれも、別のモードに変更して[スキャンデータ取込]で読み取れるか
ご確認をお願いします。

PDFファイルはテキスト情報あってこそのPDFだと思うのですが、さすがに画像ファイル1枚で構成されたものしかサポートしないのは、それはPDFをサポートしているとは言えないのでは。念のために確認をすると、以下の回答をいただきました。

「つまりこれはPDFの中身が画像ファイル1枚で構成されているものしかサポートしていないという事になりますが、その認識で合っていますか?」

PDFの中身が画像ファイル1枚で構成されているものしか、
スキャンデータ取込ができなのかの確認ということですね。

お客様が記載されている通り、1つのPDFファイルに対して中身が画像ファイル1枚で
構成されているものがスキャンデータ取込で取り込める対象になります。

今回お問い合わせいただきました内容とご要望につきましては、
関連部署へ報告いたしまして、今後の製品開発の参考にさせていただきます。

SaaSを使っているとInvoiceとしてPDFをダウンロードできるわけですが、そのPDFは殆どテキストで構成されています。画像化しているものなんて見たことありません。どうやら、スキャナで読み込んだものだけを対象にしているみたいです。これはさすがにない… 本当に開発者はドッグフーディングしてるのかな?
普通に使っていたら困ると思うんだけど。

いくつかパターンを確認してみる

PayPalの明細をダウンロードすると、こんな感じになります。

弥生会計に読み込ませると、このように認識します。ロゴだけ。

ConoHaの明細の場合はこんな感じですね。

やっぱりロゴだけ認識。

当然、PDFとして一番全うであろうテキストのみのPDFは、最初に挙げたエラーが発生し、訂正画面を出すことすらできません。画像の差し替えや手動で登録することもできないので、証憑の登録ができません。

どう対応するのか?

PDFファイルを画像化する必要があります。
PDF EChange Editorを使えば、無料で画像化することができます。「ページのラスタライズ」でPDFを画像1枚だけのものにするか、「イメージ変換」で画像を生成します。

せめてサーバ側でラスタライズ化して処理してくれよ。
時代に追いついていないのか、時代に逆行しているのかわからないですが、本末転倒にもほどがある。

確定申告2020年度メモ

  • このエントリーをはてなブックマークに追加

今年も期限が1ヶ月延長されています。国税庁のお知らせ
令和3年3月15日(月) => 令和3年4月15日(木)

今回のわたしの確定申告は以下のとおり。

  • 青色申告
  • 寄付控除
    • ふるさと納税は今年度はしていません
    • コロナ関連の寄付で、公益社団法人等に寄付をしています
  • 生命保険控除
  • 個人年金
  • 医療費控除
  • 上場株式の配当(分離課税)
  • 上場株式の譲渡益

これをe-taxで送信。

去年と同様に、源泉徴収票、生命保険の控除、個人年金、医療費控除、寄付控除、上場株式の配当や譲渡益などの添付書類は、明細を入力していれば省略できます。
省略できないものは、住宅ローン控除の1回目、エンジェル税制くらいです。添付省略できる書類の一覧はこちらにあります。

今回私が気をつけることは、昨年度の国税還付還付金のうち、内還付加算金は課税対象なので雑所得として計上する必要があることです。(参考: 昨年の確定申告)

弥生会計

最初は弥生会計で提出しようと思いました。
しかし、弥生会計では寄付控除の明細の入力ができず、寄付控除証明書を郵送する必要があります。
これではデジタル処理だけで完結せず、手間がかかってしまいます。

サポートにも問い合わせましたが、やはり出来ないようです。

<回答>
「寄付金控除」の明細のデータをe-taxで送信する事はできないか、
というご質問ですね。

大変申し訳ございませんが、『弥生会計』からは「寄付金控除」の明細を
送信することができません。

お手数ですが、『弥生会計』からe-tax送信をされる場合は、「寄付金控除」の
明細や、寄付された団体などから交付された寄付金の受領書などを
郵送していただくようお願いいたします。

郵送を省略したい場合は、国税庁の確定申告書作成コーナーから
e-tax送信をお願いいたします。

なお、『弥生会計』からe-tax送信できる帳票については、以下をご参照ください。

◎ご参考FAQ
「確定申告e-Taxモジュールで送信できる帳票」
https://support.yayoi-kk.co.jp/subcontents.html?page_id=25700

今回お問い合わせの「寄付金控除」の明細につきましては、
ご要望として承りまして、今後の製品開発の参考にさせていただきます。

ご不便をおかけしますが、 何卒ご了承くださいますようお願い申し上げます。

他にも弥生会計では出来ない事があります

国税庁の確定申告書等作成コーナーでは自動で転記される項目でも、弥生会計では転記されないものがあり、注意が必要です。自動で転記されないということは、結局のところ計算式を自分で調べたり、制度を調べる必要があり、とても不便です。(そういうのを調べたくないから、こういうツールを使っているのに)

  • 申告書B/第二表で所得の内訳を入力しますが、その内容を元に各種項目へ転記されない
    • 雑所得, 雑収入へ転記されない(第一表のケ、⑨)
    • 株式の配当が、申告書B/第二表の「住民税/配当割額控除額」へ転記されない
      • 分離課税の場合は5%、総合課税の場合は10%をここに書く必要がある
  • 申告書B/第二表の「公的年金等以外の合計所得金額」53が空欄のままで反映されない。しかも、入力もできない。
  • 申告書B/第二表の所得の内訳を別紙明細にした場合、収入金額と源泉徴収税額が空欄のまま
  • 国税庁が用意している株式配当のEXCELファイルからインポートができない
    • 医療費控除のEXCELはインポートできます

このあたりも出来ない事はサポートに聞いて確認済みです。

そんなわけで、例年通り国税庁の確定申告書等作成コーナーを使うのでした。

e-Tax

個人の所得税の確定申告をe-Taxでするのは今回が初めてです。(※法人のe-Tax, eLTAXは使ってます)
普段使うChromeに余計なPluginは入れたくないので、Edge版を使いました。(Profile分ければ良いだけだが)
e-taxをするためには、いくつかの拡張を入れる必要がありますが、既に入れてあるので何が必要だったのかは覚えていないです。ヘルプに従ってインストールしましょう。

青色申告(事業所得)の決算書は弥生会計から転記しました.. もしかしたら弥生会計からe-tax用のデータを出力して、確定申告書等作成コーナーへインポートできるのかもしれませんが、試していません。
あとはいつも通り、申告書Bを作るための情報を入力。
カードリーダーをPCに挿して、マイナンバーカードをかざして、パスワードを入れるだけ。

送信が完了すると、「所得税及び復興特別所得税申告」という手続き名でメッセージボックスに完了通知が届いています。これで完了。簡単。確定申告書等作成コーナーは本当に良く出来ているので、これからも提供を続けて欲しいです。

メッセージの添付書類送付書を見れば、何のデータを送ったのかがわかります。
今年も納税ではなく、還付なので納税処理をする場合の手続きは書きません。

還付された場合は、ここからも確認できます。

申告後の状況確認

処理フローは以下のようになっており、処理状況によってメッセージが変わります。ステータスが変わる度にお知らせの通知が届きます。

  • 申告書の確認:「申告書の内容を確認しています。」
  • 振込先の確認:「還付金額や振込先の金融機関情報などの確認を行っています。」
  • 支払手続完了:「還付金の支払手続を下記の日程にて行います。」

2021年3月9日(火)に申請をし、3月16日にステータスが変わりました。

さらに、3月26日(金)にステータスが変わりました。

3月30日(月)に銀行に還付金が振り込まれていました。

マイナポータル連携

マイナポータルと連携すると以下の情報を引っ張ってきて、自動で入力してくれます。

  • 生命保険料控除証明書
  • 住宅取得資金に係る借入金の年末残高等証明書
  • 住宅借入金等特別控除証明書
  • 特定口座年間取引報告書

私が契約している生命保険は対応しているみたいなのですが、データがありませんよと言われてしまい、引っ張ってこれませんでした..
マイナポータル連携可能な控除証明書等発行主体一覧

さらに、2021年3月(予定)からマイナンバーカードを保険証として利用できるようになるみたいです。参考
これによって、医療費明細の入力も自動で出来るようになるみたいです。

にしても弥生会計め…
もともとは法人用に買ったんだけど、これを使い続けるのかは正直悩む.

大学の単位習得メモ

  • このエントリーをはてなブックマークに追加

卒業に必要な単位

  • 卒業に必要な単位 -> 124単位
  • スクーリング等 -> 8単位

目的に必要な単位

卒業要件を満たすと自動的に卒業になってしまう。
自分の場合は卒業要件が一番ハードルが低いため、取り方を間違えると、本来の必要なものを取得できずに卒業になってしまう。

  • 単位CAP
    • 1年間 -> 42単位
    • 留年 -> 30単位
  • 編入で93単位は今までの単位を認定 -> 124単位まで残り31単位(科目問わず)
  • 心理学メジャー -> 特定の科目を40単位以上
  • 認定心理士 -> 36単位以上(下記の条件を満たしつつ特定の科目)
    • 基礎科目が12単位以上
      • Aが4単位以上
      • Cが4単位以上
        • 心理学実験実習A/Bは必須
      • B+Cで8単位以上
    • 選択科目が16単位以上
      • D,E,F,G,H領域のうち、3領域以上で4単位以上

⇒ 実験(C領域)を履修しないことで、自動卒業回避。

取得状況

いくつか興味無い科目を取るのがハードだ。
私が面白いなと思うのは、対人に関する心理学と社会/組織に関する心理学、文化に関する心理学です。

Windows Update 20H2 が適用できない件

  • このエントリーをはてなブックマークに追加

LG gram 13Z980-GA56JというノートPCを使っています。こちらの機種ですが、バージョン1909のまま次のアップデート(2004(20H1))が来ないで、つい先日20H2が来るようになりました。
20H2はConexant Audio関連の不具合が多く、BSoDが出るというIssueが上がっていて、それが更新のBlockerになっていましたが、ようやくこのPCにも適用できる状態になりました。

さっそく更新をポチッとしても、61%で止まります。調べてみると、同じような症状が出ている人が多いです。絶望。

対策1

「設定」の「トラブルシューティング」で「Windows Update」のトラブルシューティングツールの実行を選択します。これで何個か修正がされました。

再度Windows Updadeを行うも、61%で停止するので改善はありませんでした。

対策2

Conexant Audioを一度削除してからWindows Updadeをします。
デバイスマネージャから「Conexant HD Audio」を選択し、デバイスのアンインストールを行います。この後、ハードウェアの変更スキャンを行うと再度デバイスを認識してしまうため、そういった操作は行わないようにします。

この状態でWindows Updadeを行うと、更新が無事にできました。

適用後

デバイスをアンインストールしたConexant HD Audioを復活してました。
特に問題なく音は鳴っています。BSoDは今のところ発生していません。

テーマの設定方法が変わったみたいなので、設定がリセットされてました。
他にはATOKなどの一部のソフトウェアのライセンスが再度認証に必要になりました。

気になったのはそれくらいです。

注意

私の環境では問題が発生していませんが、同じ手順でBSoDが発生しても責任は取れませんです。自己責任で。

参考

弥生会計がエラーで起動できない件について

  • このエントリーをはてなブックマークに追加

オンライン版じゃないパッケージ製品の弥生会計を購入しました。
さっそく起動できない。

エラーログはC:\Users\{ユーザー名}\Documents\Yayoi\SystemLog\Common\YKaikei21にあります。

エラーログ
2021/01/07 13:07:40 [ERROR] (1_2909)
- [10099] 弥生 ライセンス認証管理内で不正終了しました。
【例外メッセージ】
場所 Void .ctor(System.Windows.Media.FontFamily, System.Windows.FontStyle, System.Windows.FontWeight, System.Windows.FontStretch)
System.TypeInitializationException :
'System.Windows.Media.FontFamily' のタイプ初期化子が例外をスローしました。
【内部例外メッセージ】
場所 Void Win32Error(Int32, System.String)
System.IO.IOException :
データがさらにあります。

【スタックトレース】
場所 System.Windows.Media.Typeface..ctor(FontFamily fontFamily, FontStyle style, FontWeight weight, FontStretch stretch)
場所 MS.Internal.Text.DynamicPropertyReader.GetTypeface(DependencyObject element)
場所 MS.Internal.Text.TextProperties.InitCommon(DependencyObject target)
場所 MS.Internal.Text.TextProperties..ctor(FrameworkElement target, Boolean isTypographyDefaultValue)
場所 System.Windows.Controls.TextBlock.GetLineProperties()
場所 System.Windows.Controls.TextBlock.EnsureTextBlockCache()
場所 System.Windows.Controls.TextBlock.MeasureOverride(Size constraint)
場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
場所 System.Windows.UIElement.Measure(Size availableSize)
場所 System.Windows.Controls.Grid.MeasureOverride(Size constraint)
場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
場所 System.Windows.UIElement.Measure(Size availableSize)
場所 System.Windows.Controls.Border.MeasureOverride(Size constraint)
場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
場所 System.Windows.UIElement.Measure(Size availableSize)
場所 System.Windows.Controls.StackPanel.MeasureOverride(Size constraint)
場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
場所 System.Windows.UIElement.Measure(Size availableSize)
場所 System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
場所 System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV)
場所 System.Windows.Controls.Grid.MeasureOverride(Size constraint)
場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
場所 System.Windows.UIElement.Measure(Size availableSize)
場所 MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
場所 System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
場所 System.Windows.UIElement.Measure(Size availableSize)
場所 System.Windows.Controls.Decorator.MeasureOverride(Size constraint)
場所 System.Windows.Documents.AdornerDecorator.MeasureOverride(Size constraint)
場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
場所 System.Windows.UIElement.Measure(Size availableSize)
場所 System.Windows.Controls.Border.MeasureOverride(Size constraint)
場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
場所 System.Windows.UIElement.Measure(Size availableSize)
場所 System.Windows.Window.MeasureOverrideHelper(Size constraint)
場所 System.Windows.Window.MeasureOverride(Size availableSize)
場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
場所 System.Windows.UIElement.Measure(Size availableSize)
場所 System.Windows.Interop.HwndSource.SetLayoutSize()
場所 System.Windows.Interop.HwndSource.set_RootVisualInternal(Visual value)
場所 System.Windows.Interop.HwndSource.set_RootVisual(Visual value)
場所 System.Windows.Window.SetRootVisual()
場所 System.Windows.Window.SetupInitialState(Double requestedTop, Double requestedLeft, Double requestedWidth, Double requestedHeight)
場所 System.Windows.Window.CreateSourceWindowImpl()
場所 System.Windows.Window.SafeCreateWindow()
場所 System.Windows.Window.ShowHelper(Object booleanBox)
場所 System.Windows.Window.Show()
場所 System.Windows.Window.ShowDialog()
場所 Yayoi.YmActivate.Wizard.Model.UIStartupProcess.RunByProduct(ActivationMode mode, ProductInfo product, Boolean& isModeModified)
場所 Yayoi.YmActivate.ProxyEntryPoint.TryStartupProduct()
場所 Yayoi.YmActivate.ProxyEntryPoint.DoLicenseAuth(String args)


2021/01/07 13:07:42 [INFO ] (1_4550)
- [10022] ステータスを返却します。(Error)

良くないフォントがあるとエラーになるらしい。参考サイトを元に、SourceHanCodeJPを削除しました。これはこれで使ってるから、消すのは嫌なんだけど、起動しないから仕方ない。

参考

2020年のまとめ

  • このエントリーをはてなブックマークに追加

2020年は2021年に向けての準備の年としてギアをあまり入れない形で過ごしました。

会社を作りました

合同会社を作りました。
今住んでいる賃貸物件は法人登記には使えないので、バーチャルオフィスを借りました。

大学に行きました

2020年4月から大学に通っています。院ではなく、心理学系の学部です。4年間通うことはなく、過去の単位を認定してもらって編入しています。
もともとはCSの学部卒なので、CSの院に行ってると多くの人が思っているみたいですが、私の生存戦略はちょっと違うのです。なぜ心理学をという話は、聞かれた人には教えているのですが、わざわざここで書くような話ではないので、知りたい人は直接聞いてください。

成績は現役(CS)の時は、GPAが3.93だったのですが、今回は4.0を目指してます。
心理学系の学問は学修の目安として、認定心理士、臨床心理士、公認心理師の3つがあります。後者2つのどちらかがないと、専門職としては弱いのですが、エンジニアを辞めるつもりはないので後者2つはターゲットにしていません。

  • 認定心理士 ▶ 大学で所定の単位を取って申請するだけのもの
  • 臨床心理士 ▶ 国家資格ではない。院に行く必要がある。
  • 公認心理師 ▶ 最近できた国家資格。院に行く必要がある。

簿記の資格を取りました

理由は2つあり、1つは大学への入学が決まり授業が始まるまでの間暇だったこと、もう1つは会社設立にあたり自分で事務処理をするために覚えた方が良いだろうと思ったことです。

無事に合格しています。一般的な知識は身につきました。1級は要らないかな..

DIYはじめました

テレビの壁掛けは以前にやっていたのですが、ちゃんとした工具を買って本棚や作業台を作るようになりました。

買ったもの

勉強のノートテイキングのために初めてのiPadを買いました。とても使いやすい・・。
4Kディスプレイを買いました。外部ディスプレイはこれ1つあれば十分かな。
インクジェットの複合機を買いました。スキャナを主に利用するのですが、毎回コンビニに行く必要がなくなり便利。
リゲッタの靴がとても良いです。自由が丘のお店で毎回買っているのですが、ショートブーツがとても良く、今年は4足も買いました。

技術的なこと

あまりアウトプットしていませんが、何個かサービスを作ったりしてます。
殆どが効率的に勉強をするためのものが多いですけども。

もう1つ人格を作ってみた

裏アカとかではなく、まっさらな状態での別名義のSNSアカウントを作りました。
趣味アカウントではなく、技術系のアカウントです。実験に近いのですが、今のご時世、個人の信用パラメータがゼロの状態で始めると、どれくらい大変なのかなと。
成果が分散しちゃうのでちょっと嫌なのですが、いくつかのサービスはそっちで公開しました。

なかなか大変ですね。

フードデリバリーや宅配弁当を利用するように

UberEatsなどのサービスを使ったことがないのですが、今年から必要に応じて使うようになりました。
またNoshというお弁当のサービスを一時期利用していました。

Instagramの毎日投稿

5月から毎日投稿をしていました。
毎日1つ何か違う事をすることによって、記憶の圧縮を防いだり、だらだら過ごさないようにするためにやっていました。

ふるさと納税で良かったもの履歴

  • このエントリーをはてなブックマークに追加

年末で迷っている人もいると思うので、2015年から2019年までの履歴で良かったものを列挙します(※2020年はこれといった収入がないため、ふるさと納税をしていません)。良くなかったものは書きません。
基本的に1万円~3万円のものが多いです。

参考までに、わたしの直近の寄付控除額です。※寄付控除額なので、ふるさと納税以外の寄付控除も含まれています。なので、これを参考に所得を計算しても近似値にはなりません。悪しからず..

年度 寄付控除額
H27 228,000
H28 303,000
H29 380,000
H30 424,000
R1 2,368,513

Tojiro-Pro DPコバルト合金鋼割込 包丁2点セット

包丁と言えば新潟県燕市と岐阜県関市。
普段の生活では高い包丁を買わない人も、こういう機会に入手するのは有りだと思います。
私は上記写真のTojiro Proのセットとパン(ケーキ)切り包丁を貰いました。

包丁は他にも色々あります色々2

ビール各種




私はもうお酒は飲まないのですが、お酒をたくさん飲む人はビールも良いと思います。24缶で1.6万円~2万円くらいのレンジです。泉佐野市が問題になる前は、24缶で1万円でした。

インドの青鬼、水曜日の猫、よなよなエール、エビス、プレモルなどがあります。
消費できない分は会社に持っていきました。

お肉 / 陣中の牛タン厚切り塩麹熟成

陣中の牛タン厚切り塩麹熟成。何度もリピートしました。すっっっっごい美味しいです!!

静岡県の藤枝市が3万円で7個(銀色がパッケージが4つ、金色のパッケージが3つだったかな?)のものがあったのですが、還元率が高すぎたのか無くなりました。

今は宮城県名取市が陣中の牛タンを出しています。

生活用品 / ティッシュ

これのおかげで、今年の謎のティッシュ買い占めの難を逃れることができました。このティッシュは水分が凄い含まれているので、花粉症で鼻水をかみまくっても痛くなりません。
※メイクの時に使うとか、ねっとりしたものを拭き取る場合とかは、安めのティッシュの方が良いです。

赤ちゃんがいる場合は、おむつなんかもあります。

静岡県富士宮市の場合は、エリエールの贅沢保湿が30箱パックで20,000円。

北海道赤平市はエリエールの+WATERが50箱で22,000円。

生活用品 / トイレットペッパー

エリエールのトイレットペーパー各種、72ロールで14,000円くらいです。

私はエリエール消臭+を使っています。

上記ティッシュと同様、エリエールなら静岡県富士宮市と北海道赤平市がオススメです。
でっかい箱で届くので、置き場所注意。

お米

最近は白米を食べないで玄米なのですが、過去に以下のお米を貰いました。平均値として10kgで1万円の返礼品が多いです。

山形県村山市/つや姫 パックご飯 パックライス 200g 36食入 16,000円。

北海道沼田町/雪中米食べ比べセット(ゆめぴりか5㎏・ななつぼし5㎏) 13,000円。

雪中米美味しいです。何回かリピートしました。

お菓子 / ポテチ

このあたりのポテチを頼みました。食べきれない分は会社に持っていきました。なお、これだけ食べれば当然太るので注意です。
私が申し込みをした時は8,000円から10,000円でしたが、今はちょっと高くなっています。

24袋にびびりますが、まぁポテチは美味しいです。
もしくは、じゃがポックルもあります。

冷凍食品 / つくね

山形県鮭川村 / 鮭川村産 「やまがた最上どり」つくね串 50本 50本で15,000円です。

冷凍庫に余裕がある人向けです。段ボールのまま保存できない場合は、ジップロックとかに小分けにして保存すると良いです。
魚焼きグリルで焼くと、もちもちした食感で美味しいです。

冷凍食品 / 餃子

餃子はいろいろな種類を試したのですが、長崎のひとくち餃子が満足度高いです。

長崎県 佐世保市が10,000円で162個。無くなってました…。
餃子で探すと、他にも色々あります。

冷凍食品 / 唐揚げ

レンチンする唐揚げ、味付けしてあって自分で油で揚げるものなどを試しました。

この冷凍食品の大量セットが岐阜県 富加町にあったのですが、無くなってました。

スイーツ / いちご

甘くて美味しい淡雪という白イチゴです。複数の市町村が出してます。冷凍品もあるので間違えないように注意。

いちごは、福岡県 八女市のあまおうも良きです。

インスタントの味噌汁

(furusato-taxから無くなっていたので、楽天の方をリンク)


朝に味噌汁作るの面倒ですし。タニタの茄子のお味噌汁が特に美味しいです。

鎌田のだし醤油

香川県坂出市 / 鎌田醤油 だし醤油500ml【4本入】 2㍑で6,000円。4㍑で11,000円もありますが、調味料なので全然減らないです。大容量は計画的に..。

鎌田のだし醤油シリーズはいろいろあるので、いろんな種類を試したいという人は詰め合わせもあります。

カップヌードル

北海道千歳市 / 日清ヌードル3種セット 各1箱(20食)合計3箱 36,000円。

カップヌードルが好きな人向け。ご飯を作るのが面倒な時に便利です。
味別のものもありますし、どん兵衛もあります。

味付うずら卵

北海道室蘭市 / 味付うずら卵ヤヤン昆布だし燻製うずら卵セット 10,000円。

すっごい美味しいです。お酒のおつまみや、サラダのお供に。

高千穂のカフェオレ、ヨーグルト

宮城県都城市 / 高千穂牧場ヨーグルト&ドリンクファミリーセット 20,000円。

コンビニでよく見るカフェオレです。このセット意外にもいろいろな組み合わせがあります。ヨーグルトもめっちゃ美味しいです。

※賞味期限が早いので量に注意。

その他

  • 生活用品として洗剤やトイレクイックル、入浴剤など
  • はちみつ (良い蜂蜜は高いですからね。パンやヨーグルトにどうぞ.)
  • オリーブオイル
  • 飲み物
    • ミネラルウォーター
    • ペットボトルのお茶
      • 紅茶花伝
      • すこやか茶
      • 綾鷹
      • 胡麻麦茶
  • いくら (ある程度小分けになっているものが良いです)
  • フルーツ
    • メロン
    • いちご
    • シャインマスカット (めちゃくちゃ美味い)
    • みかん
    • もも
  • うなぎ

お正月向けにお餅をもらった事がありますが、量が多くて消費できなくて詰みました。
フルーツや野菜は定期便が良かったです。
冷凍の魚は1種類で量が多いのは飽きるので数種類セットのが良いです。
お肉は色々と食べてみたのですが、良いお肉は油が多くて胃につらかったので省略。

参考になれば。

rubyのleveldbを使うとwarningが出るようになった

  • このエントリーをはてなブックマークに追加

RubyのLevelDBのGemは有名なものが2つあります。私は前者の方をよく利用していました。

Ruby2.7で利用してみると大量のWarningが出るようになりました。キーワード引数の代わりにハッシュを渡すと出るようです。

leveldbfiddlerに依存しており、fiddlerが原因でした。

1
/var/lib/gems/2.7.0/gems/fiddler-rb-0.1.2/lib/fiddler.rb:51: warning: Using the last argument as keyword parameters is deprecated

これを対応するのもあれなので、せっかくなのでRocksDBを利用するようにしてみます。

参考

sequelのafter_commit

  • このエントリーをはてなブックマークに追加

DBのライブラリとしてsequelを良く使います。使い勝手が好みです。

Modelを利用しないでトランザクションを利用する時は次のような処理を書きます。

1
2
3
4
5
db = Sequel.connect(...)
db.transaction do
db[:xxx].insert(...)
db[:xxx].where(...).update(...)
end # commit

何を寝ぼけていたのか、こんな処理を書いてしまっていました。
commit前に更新通知の送信をしているので、受信側はcommit前にメッセージを受け取り更新前の情報を参照してしまいます。

1
2
3
4
5
6
7
8
9
db.transaction do
cond = db[:xxx].where(...).select(...).first
if cond
db[:xxx].insert(...)
else
db[:xxx].where().update(...)
mq.publish(...) # 更新通知をMessageQueueに送信する
end
end # ここでcommit

もちろんtransactionブロックを抜けたところにロジックを書いても良いですが、それだと上記のように複雑な条件文の中にあると、一律実行する事はできずにフラグを用意する必要があります。

そこでafter_commitもしくはafter_rollbackを使います。

1
2
3
4
5
6
7
8
9
10
11
db.transaction do
cond = db[:xxx].where(...).select(...).first
if cond
db[:xxx].insert(...)
else
db[:xxx].where().update(...)
db.after_commit do
mq.publish(...) # 更新通知をMessageQueueに送信する
end
end
end

注意点は、after_commitで変数を参照している場合、ブロックの最後の値になるという事です。threadのようにその時の変数の値を渡すことができません。以下の例ではafter_commitのブロック中ではx=10ではなくx=11になります。

1
2
3
4
5
db.transaction do 
x = 10
db.after_commit { puts x } # x = 11
x = 11
end

MySQL(InnoDB)の空振りDeleteでデッドロック

  • このエントリーをはてなブックマークに追加

delete-insertパターンを処理しているところでデッドロックが発生しました。

1
#<Sequel::SerializationFailure: Mysql2::Error: Deadlock found when trying to get lock; try restarting transaction>

ネクストキーロックやギャップロックは分かっていたのですが、横着して書いたせいか件数チェックをしないでレコードが無い場合でもDELETEを行っていたのが原因です。トランザクション分離レベルはInnoDBデフォルトの「Repeatable Read」です。

トランザクション分離レベルを変更しろという記事を結構見るのですが、トランザクション分離レベルの変更はアプリケーションの設計に大きな影響を与えるため、気軽に変更するのは反対です。今回は、件数を確認して削除対象レコードが存在する場合のみDeleteを実行するようにしました。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 駄目
db.transaction do
db[:xxx].where(...).delete
db[:xxx].insert
end

# 空振りdeleteを回避する
db.transaction do
if db[:xxx].where(...).count > 0 # for_updateもした方が良い
db[:xxx].where(...).delete
end
db[:xxx].insert
end

参考

今回の件とは直接関係はないけど、分離レベルとロストアップデートの話