HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

Java

Apache MINAでSFTP接続

はじめに 必要に迫られてFTPS接続するJavaプログラムをSFTP接続するように書き換える際に、Apache MINAを使って動く形に書き下されたサンプルが見つからなかったので、そのメモ。 要件としてパスワード認証を使うというのもあった。 事前準備 必要なライブラ…

令和4年3月21日

そうか今日は令和4年3月21日か和暦使ってるところで切符やレシートとって残しとくと記念になりそう— 上原 哲太郎/Tetsu. Uehara (@tetsutalow) 2022年3月20日 ということなので、遊んでみる。 import java.util.Calendar; import java.util.Locale; import j…

CSVファイルの扱いに関する挙動の比較(2)

前回、以下の記事を書いた。 hhelibex.hatenablog.jp その中で、「自身が書き出したCSVファイルを読み込むとエラーになる」可能性が出たので、実際に検証してみた。 なお、今回は、PHPについては7.4.0以降を対象とする。 事前準備 fgetcsv/fputcsv (PHP (7.4…

CSVファイルの扱いに関する挙動の比較

CSVファイルの読み書きに関する挙動をまとめたメモ。 はじめに 検証に使うCSVファイル fgetcsv/fputcsv (PHP) Super CSV (Java) Super CSV Annotation (Java) OrangeSignal CSV (Java) opencsv (Java) まとめ 参考 おまけ(Excelで開く) はじめに まず、復…

超訳:Apache MavenでJavaアプリケーション開発

いまさら、人生初のApache Maven使用ということで。 詳細は以下のサイトに譲るとして。 初心者のためのApache Maven入門 - libro https://www.tuyano.com/index2?id=5729201025974272 このサイトの内容をベースにして、Javaアプリケーションの作成から実行ま…

SSLサーバー証明書を無視するための対応方法

よりにもよって繁忙期に、以下のROOT証明書期限切れで接続不可になるというトラブルに見舞われ、なんじゃゴルァ!と叫びながら対応した記憶の記録。 Knowledge: Sectigo AddTrust External CA Root Expiring May 30, 2020 https://support.sectigo.com/artic…

Nを表すのに必要な最低限のビット数

Javaのあるプログラムで非負整数Nに対する以下のような式を見かけた。 int n = (int)(Math.log10(N) / Math.log10(2) + 1.0); 最初、何を求めているのかしばらく分からなかったのでメモ。 ちなみに以下のように書いても同じ(はず)である。 int n = (int)Math…

Range同士の関係を判定する述語についてまとめてみる

非常につまらないミスをやらかして凹んでいるので、反省の意味を込めて、Rangeに対して実装できる述語を整理してみるテスト。 ちなみに、Rangeとは開始と終了(begin & end、from & to、left & right、etc.)の範囲を表現することができる何か。 Javaでクラ…

大量の座標値を読む場合の効率的な読み方

ふと、AtCoderなどのコンテストでよくある「大量の座標値を読んで何かを求める」という場合に、どういう処理を書いたら一番効率がいいのかと疑問に思ったので試してみたメモ。 テストケース データ生成 実行スクリプト 実行結果 テストケース 実際に試したケ…

Javaでの和暦対応の罠

ふと、Javaで和暦対応してたよなぁと思い出し、検索して見つけた以下のサイトのプログラムを元に、とあることを検証してみた。 Javaで和暦→西暦、西暦→和暦に変換する - Qiita それは、「Calendar#setで西暦年をセットして和暦でフォーマットして出力したら…

サーバー名の末尾にドットを付けたリクエストを送ると予期せぬ応答が返ってくる問題

前置き 事前準備 サーバープログラム 接続テスト(サーバー:OpenJDK 1.7.0) 接続テスト(サーバー:OpenJDK 1.8.0) 検証 参考 前置き 以下の2つの環境での挙動が違うことに悩んでいた。 CentOS 6.9+OpenJDK 1.8.0+Apache Tomcat 6.0 CentOS 5.11+OpenJ…

各言語で正規表現「^」「$」「\A」「\z」を試してみる

徳丸浩の日記: 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう https://t.co/Lc20UYnwMT— HHeLiBeX (@hhelibex) 2017年12月11日 ということで、あちこちから突っ込みが来ないことを祈りつつ(謎)、手元にある各言語でテストプログラム…

各言語で部分文字列を取得してみる

各言語で入力された文字列の部分文字列を取得するプログラムを書いてみたメモ。 要件は以下の通り。 標準入力から、1行の文字列が与えられる 文字エンコーディングはUTF-8 サロゲートペアも含まれることがある 文字数は3文字以上であることが保証される 入力…

各言語で指定したディレクトリ内のファイル一覧を取得してみる

各言語で指定したディレクトリ直下のファイル一覧を取得するプログラムを書いてみたメモ。 要件は以下の通り。 コマンドライン引数には、ディレクトリ名が1つ指定される 指定されたディレクトリから直下にあるファイルのファイル名一覧を読む ファイルの個数…

各言語での整数型の最大値と最小値

唐突に、各言語での整数型の最大値と最小値をまとめてみようと思ったメモ。 環境 手元にあるものということで、環境は以下のものに限定する。なお、32ビット環境は、このために急きょ作った。 CentOS 6 (32ビット) Java (openjdk version "1.8.0_151") C (gc…

各言語でUTF-8バイト列を文字列置換および文字列分割してみる

各言語でUTF-8のバイト列を読み込み、文字列置換と文字列分割をしてみたメモ。 要件は以下の通り。 標準入力から、文字列が1行だけ入力される。 文字エンコーディングはUTF-8 入力文字数は高々10文字とする 標準出力に、以下の2つを改行区切りで出力する。 …

各言語でUTF-8バイト列からバイト数と文字数を取ってみる

各言語でUTF-8のバイト列を読み込み、バイト数とUnicodeでの文字数を取得してみたメモ。 要件は以下の通り。 標準入力から、文字列が1行だけ入力される。 文字エンコーディングはUTF-8 入力文字数は高々10文字とする 標準出力に、以下の3つを改行区切りで出…

各言語でファイル入出力+文字エンコーディング変換

各言語でファイル入出力と文字エンコーディング変換を書いてみたメモ。 やってる途中で、別々のエントリに分けた方が良かったかもと思ったりもしたが、例えばJavaなんかは内部的には「文字」はUTF-8だったりして入出力と文字エンコーディング変換が深くかか…

各言語の標準エラー出力

そういえば今まで意識しなかったな、ということで、各言語の標準エラー出力を使ってみたメモ。 環境 手元にあるものということで、環境は以下のものに限定する。 CentOS 7 Java (openjdk version "1.8.0_151") C (gcc (GCC) 4.8.5) -std=gnu11でコンパイル C…

いやそれリークしますからっ!

以下のようなプログラムを見つけて、思わず机を叩き割ろうかと思いましたよ、えぇ‥ Reader reader = null; try { for (int i = 0; i < files.length; ++i) { reader = new BufferedReader(new InputStreamReader(new FileInputStream(files[i]))); // 以下、…

各言語でコマンドライン引数を扱う

そういえばやってなかったなということで、各言語でコマンドライン引数を扱うプログラムを書いてみたメモ。 要件は以下の通り。 コマンドライン引数として、3個以上の文字列を与える 標準出力に、以下を順に出力 引数として与えられた文字列を改行区切りで出…

文字列のマッチング方法によるパフォーマンスの違い

Javaで文字列のパターンマッチをしようと思ったら、以下の3通りに書ける。 String str = "Hello World"; if (str.matches("H.*W")) { ... } String str = "Hello World"; if (java.util.regex.Pattern.matches("H.*W", str)) { ... } String str = "Hello Wo…

各言語でメッセージダイジェスト

手元にある各言語で、メッセージダイジェストを出力してみたメモ。 要件は以下の通り。 標準入力から、0バイト以上の任意のバイト列が入力される 標準出力に、入力に対する以下のハッシュ文字列を改行区切りで出力する MD5 SHA-1 SHA-224 SHA-256 SHA-384 SH…

各言語でbase64エンコード/デコード

手元にある各言語で、base64エンコード/デコードをしてみたメモ。 要件は以下の通り。 標準入力は以下の通り構成される 1行目はASCII文字(空白文字を含む)からなる文字列が与えられる 2行目はbase64エンコードされた文字列が与えられる 3行目以降はMIME形式…

各言語での1行読み込み時に得られる文字列の違い

手元にある各言語で、「1行」を読み込んだ時の文字列の違い、とりわけ改行コードの扱いについて調べてみたメモ。 環境 手元にあるものということで、環境は以下のものに限定する。 CentOS 7 Java (openjdk version "1.8.0_151") C (gcc (GCC) 4.8.5) -std=gn…

各言語でMap

手元にある各言語で、Map構造を使うプログラムを書いてみようと思ったメモ。 Map構造と言っても、「連想配列」がその言語にあればそれを使う。 要件は以下の通り。 標準入力は、以下のデータから構成される 1行目に、空白区切りのキーワードがいくつか入力さ…

各言語で日時文字列の解析

手元にある各言語で、標準入力から日時文字列を読み込んで、標準出力にUNIX TIME値を吐き出すプログラムを書いてみようと思ったメモ。 要件は以下の通り。 入力される日時文字列は1つのみ 不正入力のチェックは不要とする OS等のタイムゾーンはJST 対応するU…

各言語でdate format

手元にある各言語で、標準入力からUNIX TIME値を読み込んで、標準出力にフォーマットされた日時文字列を吐き出すプログラムを書いてみようと思ったメモ。 要件は以下の通り。 入力されるUNIX TIME値は1つのみ 不正入力のチェックは不要とする タイムゾーンは…

各言語でQueue

手元にある各言語で、標準入力からの数値列をQueueに放り込んで、入力と同順になるように標準出力に吐き出すプログラムを書いてみようと思ったメモ。 標準入力から入力される数値列の要件は以下の通り。 1行に1つの数値が書かれている 不正入力のチェックは…

各言語でStack

手元にある各言語で、標準入力からの数値列をStackに放り込んで、入力とは逆順になるように標準出力に吐き出すプログラムを書いてみようと思ったメモ。 標準入力から入力される数値列の要件は以下の通り。 1行に1つの数値が書かれている 不正入力のチェック…