Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

Java

PleiadesのTomcatにEclipseからアプリをデプロイした際の確認先

EclipseからTomcatにアプリをデプロイしたんだけど、思った通りに動いていないように見える……ちゃんとデプロイされてるんだっけ?などというときに調べるフォルダ。 アプリケーションの展開先 (Eclipseのワークスペース)/.metadata/.plugins/org.eclipse.wst…

Spring Frameworkのmax-file-sizeによるアップロードファイルサイズ制限のまとめ

satob.hatenablog.com application.propertiesにspring.servlet.multipart.max-file-size=100のように設定することでサイズ制限設定可能。 Spring Frameworkのファイルアップロード機能は、Webコンテナが持っているmultipartリクエストの処理機能をそのまま…

Spring Frameworkのアップロードファイルサイズ制限のテスト

spring.servlet.multipart.max-file-size=100を設定した状態で、以下のようなControllerに様々なmultipart/form-dataリクエストを送信して結果を比較した。 @PostMapping("/upload") public String handleFileUpload(@RequestParam("file") MultipartFile fi…

Validate memory consumption in a JUnit test case

For load test If you want to run a load test in a JUnit test case and get maximum memory consumption or GC count as a Java variable, the way to do it doesn't seem to be. For memory consumption of whole Java VM If you want to run some tests…

マークアップ言語に対する静的解析

JSPやXMLなどのマークアップ言語に対して、たとえば JSPで<form:password>タグのshowPassword属性はtrueにしたらダメ JETTでxlsxファイルに<jt:comment>タグは使ったらダメ Apache FOPで<fo:external-graphic>タグのsrc属性に#や%や空白が入っていたらダメ のような、「XML SchemaやDTDでは禁止されていないけ</fo:external-graphic></jt:comment></form:password>…

JavaEEアプリケーションサーバに対するHTTPリクエストの流量制御が可能な箇所の候補

RHEL標準の機能のみで、外から追加のモジュール等を導入することなしに採用可能な方法の候補を列挙してみた。また商用JavaEEサーバの場合は専用の機能があるケースもありそうだが、Tomcatの場合に使える方法の候補も調べてみた。 制御箇所の候補 TCP/IPレベ…

Javaアプリケーションサーバのライセンスに関する考察

GlassFishはEPL 2.0とGPLv2のデュアルライセンスである。ここで、GPLv2にはクラスパス例外が付いている*1。わざわざクラスパス例外が付いているってことは、「クラスパス例外が付いていないGPLのJavaアプリケーションサーバでは、その上で動かすプログラムも…

ProcessBuilder freezes when you try to run a .bat containing PowerShell scripts

Background By using the .bat file from here, you can run a PowerShell script by just click the .bat file. reosablo.hatenablog.jp Problem When you are trying to run the .bat file from Java ProcessBuilder class like this, the .bat file will …

Equivalent of native2ascii and native2ascii -reverse in CyberChef

CyberChef Unescape string is equivalent to native2ascii -reverse. CyberChef Escape string is almost equivalent to native2ascii. Escape level should be "Special chars". native2ascii never escape Escape single quotes, double quotes, or backt…

匿名加工情報の作成に使う鍵つきハッシュの鍵をPBKDF2で生成する

個人情報を含むデータをもとにプログラムのテストデータを作成する場合などには、データの匿名化が必要になります。個人情報保護委員会「個人情報の保護に関する法律についてのガイドライン(匿名加工情報編)」*1には、管理用IDなど特定の個人の識別に使え…

How to add a JMS queue corresponding to jboss.naming.context.java.jboss.resources.xxx.yyy.zzz with jboss-cli

Context You are building a Java web application with JMS. You have added a reference to JMS queue with <res-ref-name>xxx/yyy/zzz</res-ref-name> in web.xml. You have changed the configuration file from standalone.xml to standalone-full.xml to use JMS module. You have a…

What is the difference of RFC 5322, RFC 821 and implementations of javax.mail.internet.InternetAddress ?

Test for RFC 5322: https://gist.github.com/satob/0dc003aefe020d5f1e9263bd7e173f9f (with regexp in http://www.din.or.jp/~ohzaki/mail_regex.htm#RFC) Test for RFC 821: https://gist.github.com/satob/8c5a42cf636732d81b850b58e8808eef (with regex…

メールアドレスのバリデーション方法

じゃぁメールアドレスのバリデーションってどうやったらいいのさ、という話。 satob.hatenablog.com もちろんバリデーションをした後には、メールアドレスの実在性確認のために実際にメールを送信します*1。その前段で、画面に表示したときにセキュリティ的…

What does "the syntax of RFC822" means in javax.mail.internet.InternetAddress ?

Javadoc of JavaMail API says InternetAddress class uses "the syntax of RFC822". https://javaee.github.io/javamail/docs/api/javax/mail/internet/InternetAddress.html Then how about actual implementation? Is it different from some other email…

How many fields does a class need to cause StackOverflowError with @ToString in Lombok

A: Around 568 (But sometimes it could be compile) BeanWithSoManyFields.java · GitHub This class causes java.lang.StackOverflowError like this: java.lang.StackOverflowError at java.lang.reflect.Field.get(Field.java:393) at lombok.core.AST.b…

mvn command results in error in Windows

You will get error when you run following Maven command from Windows PowerShell: PS C:\workspace> mvn -B archetype:generate -DgroupId=com.example -DartifactId=hajiboot -Dversion=1.0.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quicksta…

Difference of behavior of String#split() in Java and -split operator in PowerShell

Both of String#split() in Java and -split operator in PowerShell take regex as argument, and split string into a list or an array, but there is some difference in behavior when you pass an empty string as argument. In Java: System.out.prin…

java.text.BreakIteratorによる文字数(grapheme)カウント

JIS X 0213など、シフトJISやマイクロソフト コードページ932以外の文字をプログラム上で紙に印刷する場合には、入力された文字列を枠内に確実に収めるため、文字数を正しくカウントする必要があります。 JIS X 0213では複数のコードポイントで1文字を表す文…

Default ClassLoader configuration in several Application Servers

Java application uses ClassLoaders in parent-first mode. On the other hand, some JavaEE Application Servers are not parent-first mode in default, and/or have preferences to configure ClassLoader behavior. # Application Server Default mode …

A List of What Cannot JCache do

JCache cannot save the order of insertion. You should use LinkedHashMap for that purposes. JCache cannot update whole entries in a cache atomically. You should use AtomicReference or some locking mechanisms for that purpose. (Ofcourse you …

How to join nested collections with Stream API

For example, in PushOperation.java in EGit, PushOperationSpecification contains LinkedHashMap<URIish, Collection<RemoteRefUpdate>>. So you can join all remote name with Stream API like: String specs = this.specification.getURIs().stream() .map(uri -> this.specification.getRe</uriish,>…

You cannot wrap checked exceptions with lambda in Java

Context You can use lambda as lazy evaluation syntax in Java. Problem You can wrap RuntimeException with lambda like (it shows "omit exception"): import java.util.function.Supplier; public class OmitRuntimeException { public static void ma…

What does "US-ASCII only" means in Java regexp?

Java Patten class (regexp) supports POSIX character classes like \p{XDigit}. They are very useful when you want to check hex strings. In Java API Document, POSIX character classes say (US-ASCII only). What does it mean? https://docs.oracle…

Trimmed characters by trim() are different between languages

String object in .NET (PowerShell), JavaScript, and Java all have trim() method. But trimmed characters by trim() are different between these languages. # codepoint .NET JavaScript Java 1 0000-0008 ✘ ✘ ✔ 2 0009-000D ✔ ✔ ✔ 3 000E-001F ✘ ✘ ✔…

Delombok removes super(); in default constructors

Context: You have a class that has one or more constructors other than default constructor, so you have to define the default constructor explicitly. You use Lombok to generate some methods/fields. You use static code analyzers that warn e…

Javadocの{@value}タグで日本語が表示できない

Javadocには、static finalな定数のJavadocコメントに「{@value}」という内容を含めると、そこを定数の値で置き換えるという機能がある。 例えば、下記のようなコメントの場合Javadocには「ファイル名 ("AIUEO")」と表示される。 /** ファイル名 ({@value}) …

Eclipse 3.3 (Europa) で行番号を付けて印刷

Eclipse 3.4 ではできるが、Eclipse 3.3 では行番号を付けた印刷ができない。 前述の設定を行っても、エディタのビューに行番号が表示されるだけで、印刷結果には行番号が含まれない。

Eclipse 3.4 (Ganymede) で行番号を付けて印刷

以下の設定を行うとエディタのビューに行番号が表示される。 [設定]-[一般]-[エディター]-[テキスト・エディター]-[行番号の表示]この状態で印刷を行えば、印刷結果にも行番号が含まれるようになる。 (Eclipse 3.4 のリリースノートに記述がありそうだが、…

再帰構造を扱うTailib

Struts(1.x系列)付属のTaglibには、再帰構造を扱えるものがない。再帰的なデータ構造を使う代わりに、平坦なデータ構造でまかなえないか検討すること。 あるいは、再起構造を扱うTaglibを作成すること。

デフォルトエンコーディング

Java VM 実行時のデフォルトエンコーディングは OS および実行時の locale によって決定される *1。 ……とあるが、どの OS でどの locale だったらどのエンコーディングになるかは規定されていない模様。 *1:http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs…