jpgとpngの違い

このサイトにも記事を書く際に画像を添付する事が多いのですが、「画像の形式ってjpgとpngどっちがいいんだろう・・・」と思いながらも適当に使っていたのでその辺を整理しておこうと思います。他にはgifなどもありますが今はあまり使用される事は少ないでしょうからjpgとpngについてのみまとめておきます。

jpgの特徴

  • 写真やグラデーションのある画像など色数が多い画像の場合の保存に適しています。
  • 透明/半透明の画像は扱えません。
  • 高画質でファイルサイズが小さくなります。
  • 画質が必ず劣化します。

pngの特徴

  • PC画面のキャプチャやイラストなど色数が少ない画像の場合の保存に適しています。
  • 透明/半透明の画像が扱えます
  • ファイルサイズが大きくなりやすい。ただしキャプチャなどのシンプルな画像の場合はjpgよりファイルサイズが小さくなります。
  • 画質が全く劣化しません。

SQL:SELECT文の各句の実行順番について

SQLを理解する上で記載する各句の実行順序を理解している事はとても重要な事です。この辺の知識がおろそかになっていると複雑なSQLを書く場合や作成したSQLのパファーマンスに問題が発生した場合、他人か作成したSQLの修正などの対応に苦慮する事になるからです(はい私の事です)。逆に各句の実行順序を正しく理解していれば複雑なSQLもスラスラ書けるようになっていきます。
では今回は「SELECT文の各句の実行順番について」まとめておきます。

SELECT文で指定可能な句

    SELECT文での指定順序で記載すると以下の様になります。
  • SELECT句
  • FROM句
  • WHERE句
  • GROUP BY句
  • HAVING句
  • ORDER BY句

SELECT文で指定可能な句の実行順序

    上記の句を実際に実行される順序に並び替えると以下の様になります。
  1. FROM句
  2. WHERE句
  3. GROUP BY句
  4. HAVING句
  5. SELECT句
  6. ORDER BY句

ブラウザ表示でのF5とctrl+F5の違い

Web系の開発していると画面表示確認する際に、「cssやjsは変更したのに画面を表示してみると反映されていない」という事を経験した方は少なくないと思います。
こういう場合はまず、F5もしくはctrl+F5を押下して画面を再表示(リロード)確認すると思いますが、そもそも「F5単独」押下と「ctrl+F5同時」押下では何が違うんだろう?という事についてメモしておきます。

F5単独押下時のリロード

  • ブラウザでキャッシュされている場合、キャッシュを利用して画面を再表示します。

Ctrl+F5同時押下時のリロード

  • ブラウザのキャッシュを利用せずにサーバーにある最新の情報を読み込んで画面を再表示します。
  • スーパーリロードとも呼びます
  • ブラウザによって、Ctrl + F5以外でもスーパーリロードは可能です。

ブラウザ別のスーパーリロード方法

<Google Chrome、Microsoft Edge>

  • Ctrl + F5
  • Shift + F5
  • Ctrl + Shift + R
  • Ctrl + 更新ボタン
  • Shift + 更新ボタン

<FireFox>

  • Ctrl + F5
  • Ctrl + Shift + R
  • Shift + 更新ボタン

<Opera>

  • F5
  • Ctrl + R
  • 更新ボタン

<Safari>

  • Shift + 更新ボタン

ブラウザの更新ボタンとは

上記で説明している「更新ボタン」ですが、以下の様にブラウザのアドレスバー付近に表示されている以下のような赤枠内のボタンのことを「更新ボタン」と記載しております。

Excel:大文字⇔小文字の変換方法

Excelで英字の「大文字⇒小文字」、「小文字⇒大文字」へ変換する方法です。

小文字⇒大文字へ変換する方法

    英字の小文字を大文字へ変換する場合は「UPPER」関数を使用します。
    以下の例ではB2セルにある内容をC2セルへ大文字で表示しています。
    C2セルへは「=UPPER(B2)」と入力します。

大文字⇒小文字へ変換する方法

    英字の大文字を小文字へ変換する場合は「LOWER」関数を使用します。
    以下の例ではB3セルにある内容をC3セルへ小文字で表示しています。
    C3セルへは「=LOWER(B3)」と入力します。

JUnit:Exceptionのテスト方法

junitでexceptionが発生した事の確認テストはどのようにすれば良いかメモしておきます。
exceptionの発生確認は@Test内に「(expected = [確認したいExceptionクラス])」を指定する事で簡単に確認する事が出来ます。

JUnitサンプル

CSVファイルの項目をダブルクォーテーションで囲む方法

CSVファイルを扱っていると項目値をダブルクォーテーションで囲まれていないケースもあり、これを項目毎にダブルクォーテーションで囲ませたい時があります。こういう場合に手っ取り早くダブルクォーテーションを付与する方法をご紹介します。基本的にはEXCELとサクラエディタなどのエディタを併用する事で実現出来ます。

使用するソフト

  • Microsoft Excel ※特にバージョンは問いません
  • サクラエディタ ※秀丸など他のエディタでも可

CSVファイルへのダブルクォーテーションの付与手順

  1. Excelで対象のCSVファイルを開きます。ここでは「sample.csv」を開いています。
    「sample.csv」の内容は以下の通りです。
  2. Excelでcsvファイルを開いたらデータの最終行の次行へ以下の数式を入力します。今回は1行空けて見やすくA5セルへ入力しています。
    ⇒「=””””&A1&””””」
  3. A5セルへダブルクォーテーション付で値が表示されましたので次にA5セルの式をA5:C7セルまでコピペします。
    ※項目数、行数によってペーストする範囲は変更して下さい。
  4. ここまで項目単位にはダブルクォーテーションが付与された状態になったのでこの内容をサクラエディタへ貼り付けます。
    ただこのままではカンマ区切りではなくタブ区切りの状態なので今度はこれをカンマ区切りへ変更します。
  5. 「Ctrl + R」で置換ダイアログを表示し、「置換前」の文字へ「\t」、「置換後」の文字へ「,」(カンマ)を入力し、正規表現へチェック後に「全て置換」を選択します。
  6. これでダブルクォーテーション付与のカンマ区切りのCSV形式の内容になったのでこの内容を元のファイルと差し替えれば完了です。

Excel:シートをコピーしようとすると「移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートに既にある名前’xxx’が含まれています。この名前を使用しますか?」というメッセージが表示される原因

Excelを操作しているとシートをコピーする際に「移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートに既にある名前’xxx’が含まれています。この名前を使用しますか?」というメッセージが表示される事がたまに発生します。今回はその原因と対処方法についてメモしておきます。

原因

    一部のセル範囲に名前指定していてその指定した範囲を列削除などしていると名前指定範囲等がおかしくなってしまい、シートコピーの際にメッセージが表示されてしまいます。
    ※Office2013の場合は「名前’xxx’は既に存在します。この名前にする場合は[はい]をクリックします。移動またはコピーを行うために’xxx’の名前を変更する場合は、[いいえ]をクリックします。」というメッセージになります。

対処方法

  1. 「Ctrl + F3」もしくはメニューの「数式」タブ⇒「名前の管理」を選択します。
  2. 名前の管理画面が表示されたら表示された一覧で参照範囲か範囲の数式が「#REF!」などエラーになっている箇所を修正する。もしくは名前定義そのものを削除すれば完了です。

djUnitでaddReturnValueが効かない原因について

ちょっとdjUnitで「addReturnValue」を使用しても全く効いてない?という事象に少しハマっていたので原因についてメモしておきます。

addReturnValueが効かない原因

addReturnValueが効かない原因として上げられるのが概ね以下の3つになるかと思います。1と2については少し見なおせばすぐ発見出来そうですが、今回ハマった原因が3でした。。。

  1. クラス名の指定が間違っている
  2. メソッド名の指定が間違っている
  3. 指定したメソッドが複数回実行されている

「指定したメソッドが複数回実行されている」とは

では「指定したメソッドが複数回実行されている」というのはどういう事かというとについて説明します。
根本的な話として以下の2つのコードは全く同じ意味という事を理解しておく必要があります。

これだけで気づく方はハッと思うかもしれませんが、ここで重要なのはaddReturnValueでは「1回目に実行」されたメソッドのみしかaddReturnValueで指定した値が返ってこないという事です。つまり「setReturnValueAt」で1回目を指定した場合と同様の動きしかしてくれないのです。
今回私がハマったのは指定したメソッドが想定した箇所よりも手前で事前に実行されていた為、想定したいたメソッドは2回目の実行になっていたために2回目の方にはaddReturnValueが効いていなかったという事象でした。

addReturnValueが効かない時の調査方法

addReturnValueをしてクラス名やメソッド名は正しいのにどうも効いていないように見える時は一度「getCallCount」でメソッドの実行回数を調査して見ると良いかもしれません。

djUnitでメソッドが呼び出されていない事を確認する方法

djUnitではメソッドが呼び出されている事の確認は「assertCalled」を使用する事で確認出来ましたが、逆にメソッドを呼び出されていない事の確認では「assertNotCalled」を使用する事で確認出来ます。

Javaソース

djUnitサンプル

    以下のテストソースでは「getDiffDays」メソッドが呼び出されていない事を確認しています。

djUnitでメソッドが呼び出された事を確認する方法

djUnitではassertCalledを使用する事でメソッドが呼び出された事が確認出来ます。

Javaソース

djUnitサンプル

    以下のテストソースでは「htmlEscape」メソッドと「urlEncode」メソッドが呼び出されている事を確認しています。

複数回呼び出された時の確認方法

以下の様に「getCallCount」を使用する事でメソッドが何回呼び出されたかを確認する事も出来ます。