JavaScriptは動的型付けを採用した言語であるため、実行するまで変数の型が分からない状態になります。この特徴により、数値計算を行う時を以下のような問題を引き起こすことがあります。 ・加算を行うつもりが文字列結合になってしまう (例えば、100 + "10…
Springセキュリティによるログインが成功すると、UserDetailsクラスのオブジェクトを含むorg.springframework.security.core.context.SecurityContextHolderがセッションに保持されます。UserDetailsクラスのオブジェクトには、ログインしたユーザー名の情報…
文字列置換はサクラエディタを使用すると楽ですが、サクラエディタを使用した場合は大量データの処理ができないという問題があります。 そこで、C#をプログラムにより置換を行うというのが有効になります。プログラムでのファイルのストリーム読み込みであれ…
画面の各項目で設定された値に応じて、プルダウンの選択値(初期値)を動的に変更したい場合があります。 Vue.jsの場合、これは、値の状態を監視するウォッチャー(watch)と双方向データバインディング(v-model)を併用することで実現できます。画面の各項…
エクスプローラー上でファイルを右クリックし、「新規作成」を選ぶことで、表題のことを実現できます。 ファイルを誤更新したくない、しかしファイル設定を変えるのは面倒、という時に使えるテクニックです。
JavaScriptで多次元配列を作るためにはpushを使用します。また、配列の長さを調べるにはArray.lengthを使用します。 ここで、pushの方法により、Array.lengthの使い方が異なってくるので、注意が必要です。(使い方を間違えると、undefinedが出力されます) …
async・awaitで例外処理を行う場合、メソッドチェーンで受け取る方法と、try-catchで受け取る方法があります。これらの方法について、紹介していこうと思います。 サンプルコードはNode.jsで実行しています。 ---- awaitで呼び出される関数では、Promiseオブ…
ソースコードを書く上で、好みの書き方は個人によってある程度分かれてくると思います。例えば、if文で定数を右辺に書くか左辺に書くかは、人によって好みが分かれます。 ・右辺に書く例 if (value == 9) { ・左辺に書く例 if (9 == value) { 左辺に書く方法…
IT業界では、炎上プロジェクトへの人員追加は悪手とされ、遅れが更に拡大する結果になることが多いです。(一般的には、スコープ見直しやスケジュール延伸が良い手とされます) このことは「ブルックスの法則」として知られており、その法則では以下の理由に…
この記事は「ソース管理ルールが信頼されないことによるデグレード例と対策(https://akira2kun.hatenablog.com/entry/2019/01/03/103732)」の焼き直しです。 ---- ソース管理を行う方法としては、今日ではGitベースのプラットフォーム(GitHub、Bitbucket…
Eclipseからbuild.gradleを編集(1行スペースを入れる→そのスペースを削除)し保存してみて下さい。 なぜ赤いビックリマークが出るのかと言うと、何かしらの原因で設定したクラスパスが失われたからです。クラスパスはGradleにより設定されるので、Gradleで…
通常の会社では、大まかに言って役職が「経営者」「管理者」「担当者」と分かれています。先に挙げた方が、責任が重い上位の役割であるとみなされます。そして、組織は通常ピラミッド式になっており、上位者は見る範囲が広く人数が少ない、下位者は見る範囲…
品質を上げる上では、レビューやテストにてあるプログラムのバグを1つ見つけた場合、「他にも同じようなバグが潜んでいないか」という視点で追加でレビューやテストを入れるのが定石です。類似バグが発生しやすいポイントを押さえて追加レビュー・追加テス…
「DevOps」とは、「開発部門と運用部門の連携を密にすることで、新機能や機能改修等のリリースの速度を上げること」を指します。そして、連携を密にする具体的な方法として、自動化ツールが用いられます。 ---- 一般的に、開発部門と運用部門の役割を時系列…
少し古い事例ですが、2020年10月01日の東証ArrowHead障害の会見から、システム利用者に向けた理想的な障害報告を見て行きたいと思います。https://www.youtube.com/watch?v=Sokp32qOvyE この会見は、障害報告のお手本と言える会見だと思います。 ビジネスを…
JSONフォーマットはプログラムで読み込むことができるデータ構造であり、人間が読むのにも適しています。しかし、人間が読む場合、適切にインデントが入っていないと読みにくいです。 そこで、JSONフォーマットを整形するサンプルコードを紹介します。このサ…
私は元々COBOLやC言語を主に扱っていたエンジニアでしたが、3年前からJavaやC#を中心的に扱う現場で仕事をするようになり、現在ではJavaScriptを使うフロントエンド業務に従事するようになりました。プログラミング言語に依らない共通のスキルを有していた…
社会インフラを支えるシステム、例えば金融システムや公共システムについては、高い信頼性が求められます。このようなシステムの本番運用で障害が発生した場合、その結果は重大なものになります。一般的なイメージとして、その「重大なもの」として、以下の…
「動的SQL」とは、入力値に従ってプログラムにより柔軟にSQL文を生成することを指します。条件が外から与えられる場合に便利です。 例えば、以下のようなユーザーマスターテーブルがあるとします。 create table user_master(user_id CHAR(4) NOT NULL,user_…
企業間でやりとりするファイルでよく見かけるフォーマットとして、レコードが「ヘッダレコード」「データレコード」「トレーラレコード」に分かれているフォーマットがあります。簡単に言うと、それぞれのレコードの説明は以下のようになります。 【それぞれ…
SpringFrameworkで、JavaやHTMLのコードを読んでも原因がわからないバグは、「application.properties」の定義漏れで引き起こされることがあります。 例えば、「spring.messages.basename」の定義が漏れていると、「messages.properties」のようなファイルに…
この記事では、ハッシュ化で使われる「ソルト」について、説明していきます。どちらかと言うと初心者向けです。 ---- 【ハッシュ化とは】ハッシュ化とは、与えられた文字列を特定の方式(アルゴリズム)に従って変換することです。変換後の文字列から変換前…
JavaScriptにおける変数の宣言方法は、constを除くと以下の4つがあります。 ・未宣言 var1 = "var1"; のように、値が代入された時点で変数が宣言されたものとみなされる。 ・var var var1; のように、var句により変数を宣言する。 ・var(巻き上げ) var1 =…
ファイルから読み込んだ文字は前から解釈することが多いですが、ある程度のまとまり(例えば1行)を読みこんでから後ろから解釈した方が楽な場合があります。例えば、項目数が可変の場合に後ろの項目を取得するような場合に楽に処理できます。 今回は、以下…
経験が浅い技術者は、システムを構築する際、ユーザーの目から見える機能(機能要件)を満たすことのみを考えがちです。しかし、システムが価値を生み出すためには、システムが安定的に運用される必要があります。システムの安定運用を実現するための要件を…
ファイルを1バイト/1文字ずつ読み書きすることでファイルの中身を解釈しながら処理することができる、というのは以前の記事で書いた通りです。今回の記事では、複雑なフォーマットのファイルを例に出して説明したいと思います。 ---- 今回の例では、以下…
表題の通りですが、システム開発で本当に必要な設計書は、システムの概要を示す設計書です。そのような設計書があれば、実装を知らない立場の人(例えば要件定義担当や上位の設計者)との意思疎通がスムーズになりますし、開発者を新たに向かい入れる時にも…
ファイルの中身を前から順番に解釈しながら読み込む場合、ファイルを1バイトずつ/1文字ずつ読み込むと処理がしやすいです。ここでは、読み込みと書み込みのjavaのサンプルコードを示します。 1バイトずつ読み込んだ方が汎用性は高いのですが、1バイトず…
Webデザインを学習するにあたり全体像を見渡す記事が必要と感じたので、作成しました。 1.近年のWebページの傾向エンドユーザーの目に触れる部分について、HTMLの機能をそのまま使ったシンプルなページは少なくなり、ボタンやラベル等の見た目を装飾したペ…
通常、初回リリースの時点では、ソースコードは現実のビジネスルールを反映したものになっています。(なっているべきです) 障害対応や保守開発でソースコードを修正する際は、将来の保守性を犠牲にしないために、ビジネスルールに沿った修正を行うべきです…