2017 06,12 19:48 |
|
久しぶりにJAVAをやったら、スレッドセーフの問題に嵌りました
詳しくは、こちらに書いてあります。
http://www.symmetric.co.jp/blog/archives/20
http://se35over.seesaa.net/article/286645037.html 僕も、DateFormatのスレッドセーフ問題で
部分的に、synchronized をしても、ダメでしたので、
僕の場合は、メソッド自体をsynchronized することに。
まぁログを書く処理だから、メソッドをsynchronizedしても問題ないでしょう。
これが、くっそ重い処理だったら、メソッドにsynchronized をするのは
かなり問題が出てくると思いますが。
やっぱり、PHPばっか(特にバージョンが古いPHP)をやってると
頭が悪くなるなって痛感した日でした。
PR |
|
2015 07,04 05:23 |
|
ICU (International Components for Unicode) は、Unicode の文字の変換を行ってくれるライブラリです。
つまりは全角文字を半角に変換したり、逆に半角文字を全角文字にしたり、ひらがなをカタカナに、ひらがなをローマ字に変換したりって意味の変換です http://site.icu-project.org/download より、ダウロード http://weblabo.oscasierra.net/java-icu4j-1/ ここを参考にさせて頂いております。 全角->半角 Transliterator transliterator = Transliterator.getInstance("Fullwidth-Halfwidth");
半角->全角
Transliterator transliterator = Transliterator.getInstance("Halfwidth-Fullwidth");
カタカナ->ひらがな
Transliterator transliterator = Transliterator.getInstance("Katakana-Hiragana");
ひらがな->カタカナ
Transliterator transliterator = Transliterator.getInstance("Hiragana-Katakana");
凄いのが、ひらがな->ローマ字
Transliterator transliterator = Transliterator.getInstance("Hiragana-Latin");
小文字になるらしいので、大文字にしたいときは、それをさらに変換
|
|
2015 07,04 05:17 |
|
java.text.Normalizer を使用すれば、半角を全角に直してくれるみたい
正確には「テキストのソートや検索が容易になるように Unicode テキストをそれと等価な合成形式または分解形式に変換」 import java.text.Normalizer;
text = "AabB12345アイウエオあいうえお";
normalizedText = Normalizer.normalize(text, Normalizer.Form.NFKC);
AabB12345アイウエオあいうえお というようになるようです。 半角のものを全角にしちゃう。 大雑把に渡すと偉いことになりそうですが |
|
2015 07,02 21:59 |
|
久しぶりに焦って、どはまりしたので、記載
JSPが肥大化して、Tomcatがエラーを吐いた(Tomcat7) An error occurred at line: 70 in the generated java file
The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit 原因は、JSPのサイズオーバー JSPをコンパイルしたJAVAファイルが、約3MBまで行き、Tomcatがぷんぷん JSPを分割しても、トータル的なコンパイルされたJAVAファイルのサイズが対して変わらないので、回避出来ず。。。orz で、あまり望ましくはないが、Tomcatの設定で回避 Tomcatのconf/web.xml <servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
の部分を下記に変更 <servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>mappedfile</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
テストサーバで変更し、試したら成功! ローカルの開発環境で、WinのTomcatの設定を変更し試してみたけど変化なし! ずーっと悩んでいたら、そういえばEclipseって、Serverディレクトリに Tomcatの設定を持っていたことを思い出し、そっちも変更 そしたら、成功! 色々とどはまりした3時間 そもそも、JSP(テキスト)で、200KBを超えるフォームのUI設計がおかしいだろうよ。。。 近年UIの設計って、ほんと大事ね!って痛感させられる出来事が多い |
|
2013 07,29 19:42 |
|
Android でandroid.os.NetworkOnMainThreadException が出て起動しないという現象
調べた見たら、 Andorid3.0以降から、メインクラスから、ネットワーク処理を許していないとのこと で、軽く嵌った1段として、「メインクラス」 メインクラスではなくて、本当はメインスレッドからのネットワーク処理を許していないということ サブクラスを作り、そこに処理を書いてもメインスレッドからコールしても意味がない! で、その対応策として、AsyncTask を使用する 非同期でネットワーク処理を行うように、処理を記述 試してみたら、ほんとに非同期・・・UI部分を引っ張ってくるには便利なクラスだと思う だけど、1回目のネットワーク処理の結果を使い、2回目のネットワーク処理をする自分のアプリでは無意味。。。orz だって、非同期なんだもん。。。1回目の結果を待たずに2回目が実行されてしまう そんなわけで、自作のクラスを作り、メインスレッドからサブスレッドを実行。 サブスレッドにはネットワーク処理を行い、それが終わるまでメインは待機という JAVAスレッドの基本で対応 なんだよ、ほんとに。。。Androidはいろいろ嵌る はぁ、めんどくせい こんなもんがほんとに儲かるのか?って、いまだに半信半疑な人なのでした |
|
忍者ブログ [PR] |