- blogs:
- cles::blog
壊れた H2 DB のファイルを修復するには
java 突然、Gitbuketが JDBC エラーを吐くようになってしまって参りました。
ログを調べて見ると H2 DB に関する見たことがないログを吐いています。
Row "####" not found と言っていますが、これはデータベースファイルが不整合を起こしているようです。
しかたがないので、データベースをリカバリしていきます。
H2 DB には Using the Recover Tool というプログラムが用意されていて、不整合を起こしているデータベースファイルからデータをサルベージすることができます。
サルベージされたデータは SQL としてダンプされているので、あとはこれを元にデータベースを復元してやれば OK。
具体的な手順は H2 DB をダウンロードし、カレントディレクトリにデータベースファイル( data.mv.db )がある状態で以下のコマンドを実行します。
うまくいけばカレントディレクトリに new.mv.db が生成されているはずなので、あとはこれを元の data.mv.db に上書きしてやれば完了です。
† 参考
TIOBE Index で Python が初の 2 位に
python
java
c プログラミング言語の人気ランキングとしてよく使われている TIOBE Index で Python が始めて 2 位になっていました。
C と Java が 1, 2 位を明け渡すのは TIOBE Index 至上初とのこと。
Java は Oracle の JRE/JDK ライセンス変更以降、退潮傾向が続いているので中長期的にはしょうがないかなという感じもします。
JavaとCの2大人気に異変、Pythonが2位にーーTIOBE Index | OSDN Magazine
オランダTIOBE Softwareが発表した最新のプログラミング言語ランキング「TIOBE Index for November 2020」で、Pythonが過去最高位の2位となった。約20年前にTIOBE Indexの作成を開始以来初めてJavaとCが揃って上位2位に入らないという結果となった。
Oracle のクリティカルパッチアップデート(2020 年 10 月)
oracle
java Oracle のクリティカルパッチアップデートが出ていたのでメモ。
Oracle Java SE は昨年のライセンス改訂で個人利用・開発目的のみという使途制限がついたので、もう使っている人はかなり少なくなっているかもしれませんが、LTS の Java SE だと 11 系は 11.0.9、8系は u271 になっています。
- Oracle Critical Patch Update Advisory - October 2020
- October 2020 Critical Patch Update Released | Oracle Security Blog
- 2020年10月 Oracle 製品のクリティカルパッチアップデートに関する注意喚起
Ant で起動したプログラムに標準入力から文字列を与える
java Ant の Java Task*1 でプログラムを起動させたときに、起動されたプログラムの標準入力に対して入力を与える方法を調べてみました。
結論から述べると、標準入力に渡したい内容のテキストファイルをあらかじめ用意しておき、<java classname="(クラス名)" input="(ファイル名)"> という感じで、input 属性にそのテキストファイルを渡してやると、その内容をプログラムに渡すことができます。
今回は ./input/ というディレクトリ以下に txt ファイルを作ることにより、それらを1つずつ渡して繰り返しプログラムを実行するための build.xml を作ってみました。for や if を使うために ANT Contrib を使っています。ant なんてもう過去の遺産みたいな感じですが、ちょっとしたことがやりたいときには maven とかよりも融通が利きやすいので便利なんですよね。
build.xml
実行結果はこんな感じになるはずです。
hprof が Java9 から削除されてた
java hprof が Java9 から削除されていたことが分かったのでメモ。
Java の変更点については追いかけていたつもりでしたが、見落としていました。
hprof について調べたのは 2011 年のことで、学習用にちょうど良いので偶につかっていたのですが、これからは VisualVM あたりをちゃんと使わないとダメそうですね。
実際に Java8 と Java9 を比較すると、Java 9 以降では以下のようなエラーが出ることが確認できます。
Java 9 Besides Modules | Learning Quest
To demonstrate the impact of removing this agent, we can run a Java program with the hprof agent enabled (i.e. using the option -agentlib:hprof) on Java 8 and then on Java 9 (which is added on my system path):
C:\Users\manouti>D:\Dev\Java\jdk1.8.0_121\bin\java.exe -agentlib:hprof test.ProcessHandleExample
Running...
Dumping Java heap ... allocation sites ... done.
C:\Users\manouti>java -agentlib:hprof test.ProcessHandleExample
Error occurred during initialization of VM
Could not find agent library hprof on the library path, with error: Can't find dependent libraries
In all cases, this agent was not an official part of the JDK and it was rarely used by existing applications.
Java 14 リリース
java Java 14 がリリースされました。
このバージョンは LTS ではないのでサポート期間が6ヶ月しかないことに注意が必要です。
いろいろと新しい機能が搭載されていますが、デベロッパーでなければ基本的にはスルーすべきバージョンです。
Oracle、「Java 14」を発表 ~Recordクラスがプレビュー導入、switch式が正式機能に - 窓の杜
米Oracleは3月17日(現地時間)、プログラミング言語「Java」の最新版「Java 14」を発表した。「Java 14」では2つのインキュベーターモジュールと3つのプレビュー機能が導入されたほか、2つの機能が非推奨化、2つの機能が削除された。合計で16の主要な変更が加えられている。
Oracle のクリティカルパッチアップデート(2020 年 1 月)
java
oracle
virtualbox Oracle が 2020 年 1 月のクリティカルパッチアップデートを出していました。
Java SE は LTS のものだと 11.0.6*1, 8u241*2 が、VirtualBox は 6.1.2*3 が出ています。
† 参考
- *1: Java Development Kit 11 Update Release Notes
- *2: JDK 8 Update Release Notes
- *3: フリーの仮想PCソフト「Oracle VM VirtualBox」v6.1.2が公開 ~脆弱性を修正 - 窓の杜
Oracle のクリティカルパッチアップデート(2019 年 10 月)
java
oracle
virtualbox Oracle Critical Patch Update がリリースされていたのでメモ。
Java SE は 11.0.5 / 8u231 がリリースされています。
VirtualBox は 6.0.14 になったみたいですね。
Oracle のクリティカルパッチアップデート(2019 年 7 月)
java
oracle 3 ヶ月に 1 回の Oracle のクリティカルパッチアップデートが出ています。
JDK や JRE などの Java 製品を使っている場合にはアップデートが必要になります。
2019年 7月 Oracle 製品のクリティカルパッチアップデートに関する注意喚起
PC に Java JRE がプリインストールされている場合や、サーバで使用するソフトウエア製品に、WebLogic Server を使用している場合もあります。利用中の PC やサーバに対象となる製品が含まれていないかについても、確認してください。
なお、Oracle によると Java SE について、既に公式アップデートを終了している Java SE JDK/JRE 7 および Java SE JDK/JRE 8 も脆弱性の影響を受けるとのことです。
webdrivermanager で ChromeDriver を自動アップデート
selenium
sh
java 久しぶりに selenium のスクリプトを起動しようとしたら、以下のような例外を吐いて起動しなくて困ってしまいました。
エラーメッセージを読む限り、ChromeDriver と Chrome のバージョンが合っていないというエラーのようです。
以前書いたとおり Chrome は apt を使って導入しているので、定期的にバージョンアップされます。
ところが、ChromeDriver は手動インストールなので、これらのバージョンがズレてしまうというのが問題の根本的な原因です。
エラーが出てから対処するというのでも良いのですが、やはりこういうのは未然に防ぎたいもの。
というわけで、自動的に ChromeDriver を更新するための良い方法がないかと思って探してみたら、webdrivermanager というプロジェクトを見つけました。
webdrivermanager はインストールされているブラウザのバージョンに合わせた Selenium 用のバイナリドライバを自動的にダウンロードしてくれるという java のプログラムです。Maven などに組み込んで動かすのが一般的なようですが、今回は単純にコマンドラインから起動して /usr/local/bin/chromedriver を更新するようなスクリプトを組んでみました。無駄な動きがないように、インストールされた Chrome のバージョンをファイルで覚えておいて、バージョンアップされている場合にのみ動作するようにしてあります。
- sadpkv
- CACHEMANAGER.phpというのはどうだろうかと
- pairb1m
- Lightning のToDoリストを複数のPCで共有できるアドオン
- majodca
- 九州旅行から帰ってきました
- majodca
- 九州旅行から帰ってきました
- hot534
- yum を使って OpenVPN をインストールする
- dresssu3
- NP_Trackbackを騙るトラックバックspamについて
- zippern7o
- NP_SpamBayesJP jp1b
- park81o
- Google Docs をメールフォームとして使う
- fogmpl
- なんで官庁の文章はPDFなんだろうか
- cutjw9
- 即席スライドショーを作る
- frightenlho
- 添付ファイルの容量を表示する「Attachment Sizes」
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(5022)
3 . GitHub が全ての公開リポジトリへのシークレットスキャンを有効に(4164)
4 . 年次の人間ドックへ(4092)
5 . 2023 年分の確定申告完了!(1つめ)(3948)
Academic[574]
Book[155]
Diary[522]
Disaster[101]
Foodlogue[1425]
Game[284]
Goods[805]
Healthcare[341]
Hobby[32]
IT[1195]
Military[343]
misc.[1570]
Mobile[510]
Music[38]
Neta[106]
News[95]
Photo[391]
RealEstate[120]
Security[1178]
SEO Contest[36]
Software[634]
Tips[1886]
Travelogue[1238]
Web[675]
Work[193]