工学院専門学校で講師することになりました(正確には「しました、そして後期もします」)

タイトル通り

工学院専門学校さんで講師をすることになって講師してきました(前期の終わり際をちょっとだけ)。

学生さんパワフルっすね。

ほいで、技術レベルではすでに私は追いこされているような子もちらほらいました。専門学校の学生なので尖がってて面白かった。

私は業務知識を頭に入れてプログラムにねじ込むことと、いかにギリギリの納期を引っ張るか(又は妥協点を見つけて交渉するか)みたいなことを口とロジックでやり取りすることに長けていたので生き残れているSEなので、単純に関心します。

学生の時点でこれならあと数年たったらどうなるものかと。

そして後期、まだ私自身現場仕事をしている身なので、二足どころか社長業(まぁほぼ会計と採用)合わせて三足の草鞋でかなりきついですが、せっかく講師になったので、学生にちゃんと価値を与えられる講義を心がけたいと思います。

源泉所得税の納付延滞について

今回は、会社出来立てで、会計なんかは全部自分でやっている超小規模事業者の社長さん向けの記事。

源泉所得税の納付って毎月10日じゃないですか、特例受けてると7月10日までに前期分、翌年1月10までに後期分の支払があると思うんですが、特に特例の場合忘れますよこれ。

1月は年末調整があるので忘れる方は少ないかと思いますが、7月のやつ…

実際私忘れてました。ちゃんとTODOアプリで確認していたにも関わらず、すっかり忘れてました。私自身客先に常駐していたり専門学校の講師をやることになったりで7月パンパンだったという言い訳もありますが、久しぶりに会計処理しなきゃとあれこれしてたら「ん?そういえば源泉所得税の納付って7月だったような…」

当然といえば当然ですが「源泉所得税・納付・延滞」とググると、数々の税理士法人さんや会計Freeeやらのサイトで説明が出てきて、延滞金は支払う所得税の約10%になるとかなんとか出てきます。まぁ法律なのでそうでしょう。

しかし、よほどのことがない限り、延滞金が発生することはない。らしい。

税務署職員さん曰く

ちなみに私は1ヶ月近く忘れてましたが「たぶん大丈夫だよ」とのこと。

また、仮に延滞金が発生したとしても、後で納付書が送られてくるというシステムとのこと。

つまり、慌てて(銀行3時にしまっちゃったから直接税務署に走る、このクソ暑い中)延滞金含めた金額握りしめて行っても、その時支払う金額は自分で算出した所得税の額のみ。

なわけなので、皆さん慌てず騒がず普通に銀行で支払いしましょう。税務署の職員さんにちょっと嫌な顔されます。

staticとスレッドセーフの罠

皆さんご存知 static

特に何も考えずにプログラムする場合は便利ですよね、インスタンス化しなくてもどこからでも呼び出せるし。そもそもjavaの入門は「static void main(String[] args) {~}」なんだからここで使用するメソッドも当然staticになるわけで…

これが諸悪の根源のような気さえする。

AzureでもAWSでもそうなんだけど、元々マルチスレッド前提で起動させるアプリケーションで安易にstaticで変数やメソッド作ると知らないところで痛い目にあいます「沈黙の臓器」肝臓みたいなもんですね。(バグったりバグらなかったりいつの間にかメモリリークしたりするので見つけるのも大変、単体テストや結合テストでは絶対にバグの発見ができず、負荷テストでシステムの動きをちゃんと確認していたら、もしかしたら発見できるかも…大概はリリース後に発覚して大目玉を食らう)

★まず極力staticは使わないようにしましょう。これが大前提。使う場合は慎重に慎重を重ねて、よく吟味したうえで使いましょう。以下、やっちゃいけないパターンです。

1.AWSLambda(又はコンテナを使用したアプリケーションサービス等)でstaticなメンバー変数を評価して値の更新をする。

  • アプリの実行一回分が終わったらプロセスも死ぬ。ように見えるかもしれませんが、裏ではコンテナが起動していて、こちらの思った時にプロセスが死んでいるわけではありません。
    • その証拠に、ホットスタートというやり方が存在し、ヘルスチェック(一定間隔で処理を流させるようなトリガーを引く)でプロセスを殺さずに永続させ、初期起動時間の短縮を図ることができます。実行ソースがJavaだとjarファイルの解凍やらJVMの起動やらで初期起動に鬼のような時間がかかるので、これを用いることがあるそうな。
    • 補足:起動時間が最も速いのがGO、2番目がPython、最も遅いのがJava(ただしホットスタートであれば、処理時間で最も速いのがGO、2番目がJava)
  • そもそもstaticの値を変更するというのが恐ろしい。

2.List (Java) や Dictionary (c#) をstaticで宣言して、プロセス内で単一の値を持たせておく。

  • 別に考えとしては悪くない、コネクションを張ったりするときによく使うかもしれない。ただし、JavaのListはスレッドセーフではないので、ListなのにOutOfIndexが発生したりします(hashmapを使用するときも同様)。うまいやり方は、Listにアクセスするときにsynchronizedしたりするんですが、詳しくは以下のサイト「https://qiita.com/hitomatagi/items/c43267d4fd0342147ab7」に丁寧に記載されていたので参考にしてください。
  • c#のDictionaryは、データを突っ込む用のメソッドがスレッドセーフではなかったりするらしいので、今はConcurrentDictionaryというスレッドセーフなクラスが用意されているようなので、Framework 4.7.2 以降を使用しているならこれを使うのがいいんじゃないでしょうか?

 

他にもやらかすパターンはたくさんあると思いますので、くれぐれも注意して、staticの罠にはまらないようにしてください。

Jmeterの使い方(HTTP Request の POST でバイナリデータをリクエストする)

別に難しいことでもないのにできるかどうかわからない、その上これに該当する日本語のサイトが見当たらない、という困ったちゃん。
日本語の解説サイトがググっても見つからないなら自分で書いちゃえ、ってことで備忘録的に書いときます。
よければ参考にしてくださいね。

まず、「HTTP Request」サンプラーを追加する。
サーバー名またはIPアドレスを入力。
ポートはHTTPであれば80、HTTPSであれば443?だったっけ?
メソッドはPOSTを選択。
Pathに送信先のURLを入力。
チェックボックスは元のままでいいと思う。
さて、ここまでは普通なのでできると思います。

こっから重要で、まず、BodyDataには何も記入せず空にしておく。
あらかじめ送信したい内容を入力したバイナリファイルを用意しておく。(※拡張子は.binでも.batでもなんでもよし。そこにバイナリデータが入力されていることが重要)
「リクエストと一緒に送信するファイル」に追加ボタンで追加し「参照」ボタンで、あらかじめ用意しておいたバイナリファイルを指定する。

ちなみにこれだけだとファイルの内容がうまく送信できず、Content-Length:0になってしまう…(多分送信先でリクエスト見ると何もないはず)
なので「リクエストと一緒に送信するファイル」のファイルパス名の右にある「パラメータ名」にFILENAME(これは別になんでもいいけどね、ただし、省略するとうまくいかない)と入力。
そのまた隣の「MIME TYPE」に「application/binary」と記入する。

これで準備完了!
あとは起動させるだけ。

グッドラック!!

プログラムで最近すごく困ったこと

困った、全く困った…
マイクロソフトの仕様にホトホト困らされた…
HttpClientの使い方
通常IDisposableを持つクラスはC#ではusingで使用するのが当たり前、誰も疑いもしないしそんなもんだと考えて使ってると思う。
しかし、HttpClientってば、Disposeするとソケットが溜まりまくって枯渇するらしい。
しかも、データ量が大したことない場合は特に問題ないらしく、超大量のデータを扱う(まぁつまりビッグデータ扱う場合とか)場合に限りこの問題が表面化する。
え~~~…
勘弁してよ~…

そんなわけで著しくパフォーマンスが悪化するプログラム…
一向に進まない原因の特定…
だってそんなとこ疑ってかからないんだもの…

staticで使用するのが吉らしいので、参考サイト載せときます。

.NET(Framework)のHttpClientの取り扱いには要注意という話

開発者を苦しめる.NETのHttpClientのバグと紛らわしいドキュメント

設立祝いありがとうございます!!

前職の上司である株式会社トレセン名古屋取締役 鳥居社長より設立祝いをいただきました。
以前から男前だ、男前だとは思っていましたが、惚れてまいそうです。

鳥居社長のデスクに置いてある企業理念のガラスケースに私の名刺を被せて2枚突っ込んできてよかった。
その後の交流会で名刺が足りなくなるというリスクを冒した甲斐がありました。
鳥居社長、お祝いありがとうございました!

さる友人社長からの会社設立祝い

今月一日に会社の設立がやっと完了したわけですが、先日一足先に会社を経営している中部負荷試験サービス株式会社の井川社長より設立祝いを頂戴いたしました。以下祝い品。

トーストすると、サクッ!カリッ!とした食感で、グラニュー糖と相性が抜群。ラスクのような感覚で軽くいただけました。

こんな貴重な体験をさせていただいた井川社長には感謝してもしきれない何かが私の胸に去来したのは言うまでもないありません。