技術とか戦略とか

SIerで証券レガシーシステムを8年いじってからSESに転職した普通の文系SEによる技術ブログ。

情報処理技術者試験対策「共通鍵暗号方式・公開鍵暗号方式とSSL」

この記事では、暗号化が必要な理由や共通鍵暗号方式・公開鍵暗号方式の概要、SSLの仕組みの概要について書きます。 1.暗号化が必要な理由ノード(端末やサーバ等、他の機器との通信を行う主体を指す)間の通信内容は、Wiresharkのようなパケットキャプチャ…

情報処理技術者試験対策「排他制御・デッドロック」

この記事では、情報処理技術者試験で問われる排他制御とデッドロックについて、基礎的なことを書いていきます。 排他制御やデッドロックを理解する前に、トランザクションについて理解する必要があります。トランザクションとは、複数の処理をひとまとまりに…

情報処理技術者試験対策「VR・AR」

最近の情報処理技術者試験では、VRとARの違いを知らないと答えられない問題が出題されることがあります。 詳しい知名度は以下の通りなのですが、VRという用語に比べて、ARという用語は比較的知名度が低いです。 VR認知度は87.6%、ARは34%。『VRビジネス調査…

情報処理技術者試験対策「静的解析ツール・動的解析ツール」

情報処理技術者試験では、「静的解析ツールとは何か」「動的解析ツールとは何か」を問う問題が出題されます。この記事では、これらのツールは何か、何のために使うのか、といったことについて簡単に書いていきます。 【静的解析ツールの説明】静的解析ツール…

Base64の説明とjavaでのエンコード・デコードの例

Base64とは、テキストデータやバイナリデータ(画像ファイル、PDFファイル等)を表現する方式の一つです。以下の64種類の文字と末尾のパディング文字(=)を用いて表現するのが特徴です。・アルファベット(a~z, A~Z)・数字(0~9)・一部の記号(+, /) …

Vue.jsに出てくるコロン(v-bind)とアットマーク(v-on)について

Vue.jsのコードに時折コロン(:)やアットマーク(@)が出てきて戸惑う人がいるかもしれませんが、これは省略記法です。それぞれ、v-bind、v-onを指しています。 Vueオブジェクトの変数や関数をHTML側から参照するために、v-bindやv-onを使用します。 以下、…

JavaScriptのasync・awaitのサンプルコード

JavaScriptでは、通常は非同期処理となり、重い関数が終わるまで待つということをせず、次の関数に先に制御が移ってしまいます。そのため、API呼び出しやIO(ファイルの読み書きやDBの読み書き)を伴う関数を呼び出した後に、その結果を元に次の処理を行う、…

Chromeの拡張機能を使用した文字列置換

以前の記事で、URLからJavaScriptを読みこむことでブラウザに表示される文字の変換を試みました。しかし、URLから読み込ませる方法だと、大量の文字列置換はできません。 そこで、今回はChromeの拡張機能を使用した文字列置換を試みました。以下、サンプルコ…

JavaScript:thisの挙動と用途

JavaScriptの初心者を悩ます文法の一つとして、thisが挙げられます。thisが何を指しているのか、どのような場合に使われるのか、なかなかイメージが難しいと思います。 この記事では、その疑問について答えていきたいと思います。 今回の記事では、サンプル…

JavaScript:Strictモードとは

JavaScriptには「Strictモード」と呼ばれるモードが用意されています。Strictモードにすることで、バグに気付かずに実行が継続されるのを防ぎやすくなり、高速化することもあります。 詳しくはMozillaのページ(https://developer.mozilla.org/ja/docs/Web/J…

ブラウザで表示される文字列をJavaScriptのURLを読ませて置換する

ブラウザで表示される文字列について、お気に入りからJavaScriptを読みこませることで置換することができます。例えば、強調表示したいような場合にこれを活用できます。 例として、mozillaのJavaScriptのページを強調表示してみましょう。https://developer…

Google翻訳を利用した英文コミュニケーション

国内で開発作業に従事している場合でも、国外の技術者とのやりとりが必要になるケースがあります。特に理系大卒の技術者は英語力に自信が無い場合が多い(理系大卒の新卒時点でのTOEICの平均スコアは400点台)のですが、現在はGoogle翻訳という文明の利器が…

サクラエディタの置換機能を使った簡単な独自ソート

サクラエディタの機能として昇順・降順ソートが用意されていますが、それ以外の独自の条件でソートを行いたい場合、置換機能を上手く使うことでソートできる場合があります。改行コードを一時的に置き換えて1行のファイルにするのと、参照機能で並び替えを…

テレワークにおけるコミュニケーションのコツ

コロナ渦の影響で、テレワークが流行っています。テレワークではコミュニケーションの取り方が変わるため、チャットでのやりとりに慣れていない技術者がコミュニケーションの取り方に悩むという姿を目にします。 先日、相談に乗る機会があったので、それを元…

カプセル化によるルールの強制

オブジェクト指向を適用すると、ソースコードの重複した記述を排除でき、生産性や品質を向上することができます。それとは別に、他の開発者にルールを強制できるメリットもあります。カプセル化を例にして説明するのがわかりやすいので、今回はカプセル化を…

JavaScript:matchメソッドで文字列抽出を行う

JavaScriptのmatchメソッドは戻り値に特徴があり、戻り値を利用して文字列抽出もできるようになっています。今回は、文字列抽出の方法を紹介していきます。 ---- matchメソッド(String.match)では、引数で与えた文字列が含まれるかどうかを返すメソッドで…

JavaScript:オブジェクトの中身をコピーする方法(deepcopyライブラリ使用)

JavaScriptにもJavaやC#と同じように参照型変数が存在し、オブジェクトや配列、関数が参照型変数です。そして、JavaやC#と同じように、単純に「=」で代入するだけでは参照先(オブジェクトのメモリ領域を示すポインタ)しかコピーできず、コピー先の変更がコ…

HelloWorldを書く意義

職業柄、実務で使った経験のない言語やフレームワークをある日突然現場で使うようになることが多いです。そのような場合、HelloWorldをプライベートで書くだけで、現場の実務に挑むようなこともあるのですが、HelloWorldを書くだけでも大分違うと感じます。 …

npmで公開されているパッケージをローカルに落とさず使用する

npmで公開されているパッケージは、UNPKG(https://unpkg.com/)で公開されています。UNPKGで公開されているパッケージをscriptタグ等で指定することで、ローカルにライブラリを落とすことなくライブラリを使用することができるようになります。インターネッ…

Jestを試してみた

Jestとは、JavaScriptのテスト用のフレームワークです。ここでは、Node.jsがインストールされていることを前提に、Jestを試してみます。公式ドキュメントであるGetting Started(https://jestjs.io/docs/ja/getting-started)を参考に、説明が割愛されている…

JSONフォーマットとは

JSONとは、データ構造を記述するフォーマットの一種です。CSV等とは異なり、階層構造を記述することができます。階層構造を表現できるフォーマットとしてはXMLも挙げられますが、JSONフォーマットはXMLよりも簡易的に記述できる、JavaScriptとの親和性が高い…

メインフレームのプリンターで使われる制御コードの概要

メインフレームのシステムでは、プリンターを用いて帳票やハガキを印刷することが多いです。この際、プリンターに読み込ませるためのバイナリの制御コードを用いて、文字の形式や改行・改ページ等をコントロールします。プリンターに読み込ませるファイルに…

Vue.jsインストール手順とHelloWorld(Windows、2020年12月)

Vue.jsとはJavaScriptのGUIのフレームワークです。MVVM(Model-View-ViewModel)を採用しており、画面(View)と内部状態(Model)を分離して画面の制約にとらわれないようにすることで、画面で入力された内容をリアルタイムに内部状態に反映させたり、内部状態の…

java:例外発生後に例外のメッセージを書き変える

例外オブジェクトにはメッセージが格納されており、getMessage()メソッドでそのメッセージを取得することができます。しかし、このメッセージはコンストラクタでのみ設定可能であり、メッセージを後で変更するメソッドは用意されていないため、例外クラスに…

ゴンペルツ曲線(信頼度成長曲線)とは

ゴンペルツ曲線(信頼度成長曲線)とは、テストで発見されるバグ数をグラフにしたものです。横軸に時間、縦軸に累積バグ数をとる場合、下記のようなグラフになります。 テストを開始した直後は、テスト手順が確立していないため、バグはなかなか見つかりませ…

java:引数で渡した参照型変数をメソッド内で変更する書き方について

参照型変数を引数としてメソッドに渡し、呼び出し先のメソッドの中でその参照型変数に変更を入れた場合、呼び出し元でもその変更内容を参照することができます。ソースコードで言うと、以下のような形で呼び出し元に影響を与えることができます。(isDisplay…

Excel:ピボットテーブルの使い道と作り方(テストデータ付き)

ピボットテーブルとは、集計作業を行う機能のことです。自力で集計用の表を作成して関数を書くことでも集計作業は可能ですが、ピボットテーブルを用いればマウス操作だけで簡単に集計作業を行うことができます。 今回は、試しにピボットテーブルで架空の体力…

障害の発生原因の切り分けのポイント

テストや本番運用で障害が発生した場合、既知の障害等で原因が明らかな場合を除き、対応のために原因を調査する必要があります。原因を調査する上ではどこに原因があるのかの切り分けが必要になります。以下では、切り分け作業を行う上でのポイントを順を追…

java:例外を先に生成して後でthrowする

多くのソースコードでは、例外を発生させると同時にthrowしています。しかし、例外クラスもクラスの一つであり、newするとオブジェクトが生成されますので、先に例外クラスのオブジェクトを生成し、オブジェクトとしてやりとりした後、後でthrowすることが可…

テーブル結合のキーはテーブル間で同一の値を用いること

SQL

当たり前のことなのですが、テーブル結合の際には、結合に必要なキーはテーブル間で同一の値を用いて、結び付けができるようにする必要があります。プログラムでキーとなる値を順次生成する場合、テーブルへのinsertの際にテーブル毎に別々の値を生成してし…