この日記は私的なものであり所属会社の見解とは無関係です。 GitHub: takahashikzn

TomcatでCookieのSameSite属性を無理やり付与する

最近のChromeやFirefoxでは、CookieにSameSiteという属性を指定することができます。 これは、CSRFから保護する強力な仕組みであるようです。 簡単に言うと、外部ページから内部ページへ直接リクエストを飛ばしても(※CSRFの動作原理)、Cookieヘッダを送信…

Memo: JenkinsのSlack Notifierを一括設定する

初めてJenkinsのスクリプトコンソールを使いましたが、慣れればラク…なのか? こちらを参考にしました。 http://gist.github.com/yuroyoro/337b72638578bafd50e5 jenkins.model.Jenkins.instance.items.each {job -> list = job.getPublishersList() list.re…

Memo: EclipseLinkが関連エンティティをUPDATE/DELETEする順序はID順

「同一オブジェクトの1-Nの関連先エンティティを同時更新した時、デッドロックは発生しないのか?」という点が急に気になったので調べたときのメモ。 EclipseLinkの場合、エンティティのUPDATE順序はデフォルトで「ID順」 で、その他に「オブジェクトの変更…

SSHで"No supported authentication methods available"→SELinuxが原因だった

本日、新しく鍵を作ってauthorized_keysに配置したのですが、なんかログインできないわけです。 “No supported authentication methods available” と言われてしまう。 /var/log/secureを見てみても、 May 18 14:19:21 foobar sshd[26582]: Received disconn…

MariaDBをメジャーダウングレードする

mariadb-java-client-2.0.1がリリースされたので試してみた所、よくわからないエラーでテストがコケるようになりました。 特定のSelect文を打つと、こんなエラーがでることがあります。 java.sql.SQLIntegrityConstraintViolationException: (conn:50) Colum…

HiDPI環境下のWindowsでSwingアプリケーションのメニューが壊れるのをどうにかする

タイトル通り。 本日、Parallelsで運用しているWindowsを「Retinaに最適」にしたところ、Swingアプリケーションのメニューが壊れました。 Parallelsの設定はこれ。 で、これで例えばVisualVMを起動するとこうなります。 本来、メニューが表示されるべき領域…

Struts2のリモートコード実行可能脆弱性(CVE-2017-5638)を分析した

またOGNL絡みの脆弱性が見つかりました。 アウトラインはid:Kango氏がまとめているこちらが参考になります。 http://d.hatena.ne.jp/Kango/20170307/1488907259 さて、この脆弱性の動作原理を調べてみました。 ファイルアップロード時のヘッダの処理方式に問…

MariaDB-10.2.4で、カスケード削除とクエリキャッシュ絡みのバグを発見

MariaDB-10.2.4がリリースされています。これは正式リリース候補版と言うことで、早速検証してみたところ、バグを発見。 僕がぶち当たった現象とは、以下のようなものです。 テーブルParentとChildには親子関係があり、Childが親を指す外部キーにはカスケー…

ジャスミンソフト贄さん&クオリティスタート湯本さんとランチしてきた

先週の話となりますが、湯本さん経由で贄さんに連絡してもらい、ランチしてきました。 場所は銀座の過門香です。 ところで、この店は仕事でめちゃくちゃ重宝してます。ロケーションは申し分ないし、店のレベルも高い。 ぜひ皆様ご活用下さいませ。 ただし上…

MariaDB-10.1.21が起動しない→SELinuxの問題

つい先程、MariaDB-10.1.21にアップデートしたらmysqlが起動しなくなりました。以下のようなエラーになります。 # service mysql start Starting MySQL.170120 15:39:55 170120 15:39:55 mysqld_safe Logging to '/var/log/mysqld.log'. 170120 15:39:55 mys…

dracutが古いカーネルのinitramfsを勝手に作る

いつからかそうなったのかは覚えていないのですが… 新しいバージョンのカーネルをインストールすると、なぜか古いカーネルバージョン(しかもアンインストール済み)のinitramfsも作ろうとするようになっていました。 で、そのうち/bootに壊れたinitramfsフ…

EclEmma-3.0.0に更新したらエラー発生

本日、EclEmmaのアップデートが来ていたので更新してEclipseを再起動すると、意味不明なエラーが出てEclEmmaを使用できなくなりました。 次のようなエラーが発生します。 !MESSAGE Invalid input url:platform:/plugin/com.mountainminds.eclemma.ui/icons/f…

Tomcat-8.5.8以降ではHTTPパイプラインが動作しない

弊社はSeleniumを用いたガチなE2Eテストを全ての受託案件で実施しており、 CI環境では24H365Dで膨大なSeleniumスクリプトが動いています。 つい先日、CI環境のTomcatのバージョンを8.5.8に上げた所、意味不明なエラーが出てテストが失敗するようになりました…

自分の精神をコピーしたら何が起きるのか

こんな増田が話題になってます。 anond.hatelabo.jp 僕も先月に「ディアスポラ」を読み終わったところだったのでちょうどよいネタ。 ディアスポラ (ハヤカワ文庫 SF)作者: グレッグ・イーガン,山岸真出版社/メーカー: 早川書房発売日: 2005/09/22メディア: …

struts-2.5.5でI18nInterceptorの初期化失敗を無理やり回避する

struts-2.5.5がリリースされました。 このリリースはかなり大きなインパクトのある変更がいくつか入っています。 最大のインパクトは、ActionContext#getParameters()の戻り値がjava.util.Mapからorg.apache.struts2.dispatcher.HttpParametersに変更された…

Googleからスカウトされました

数日前、いきなりGoogleのリクルーターからメールが来ました。 メールの全文掲載はマズいと思うので要点だけ書くと、 ブログ(このブログのこと)とGithubを見て、特にJavaに関するプログラミングの能力が高いとお見受けした Site Reliablity Engineers(SRE)…

"永続記憶装置からセッションをロード中の例外です"がウザったいのでセッション永続化をOFFにする

Tomcatを停止して再起動すると、こんな例外が発生することがあります。 java.lang.ClassCastException: java.lang.StackTraceElement cannot be cast to java.lang.String at java.io.ObjectInputStream.readTypeString(ObjectInputStream.java:1421) at jav…

Firefox48以降でSelenium-RCが動作しない問題を解消する

昨日やっとトレーナーレベル22になりました。わーい。 御存知の通り上野公園は毎週末ヤバイことになってますが、コイキングだらけのおかげでギャラドスを取れました。 さて、ウチは非プログラマもテスターとして戦力化しているので、Selenium IDEベースの環…

Jenkins2にアップグレードしたら問題なく動いた

昨晩おもむろにyum upgradeしたらLTSのバージョンもとうとうJenkins2系へ移っていた(1.651.3 → 2.7.1)ので、思い切ってアップグレードしてみました。 …とは言え、仮想マシンのスナップショットは取ってあるのでいつでも戻せますけどね。 Jenkinsサーバに万一…

Eclipse4.6 "Neon"の新機能一覧

毎年恒例の新バージョンリリースです。ネオン(Neon)ということで、なんだか派手になりました。 ティザーサイトによると、6/22にリリースされるとのこと。 http://www.eclipse.org/neon/ ひとつ前のリリース、4.5 "Mars"の解説はこちら。 http://takahashikzn…

TldScannerでNullPointerExceptionが出て起動しない

僕は普段、開発用としてTomcat-9.0.0系を使っています。 先ほどTomcat-9.0.0-M6に更新したら、このようなエラーが出て起動しなくなりました。 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component…

Eclipse 4.6 "Neon" M7リリース

そろそろ毎年恒例のイベントがやってきます。 今回のコードネームはNeonですが、惑星シリーズのネーミングは止めたようですね。 毎年のリリースペースならばマイルストーンビルドはこれで打ち止めです。次からはRC(Release Candidate)扱いになるでしょう。 (…

Struts2のS2-032の要点

またOGNL絡みで脆弱性が出ました。ホントにこの機構は問題児ですね… とはいえOGNLはStruts2の根幹に関わる機能なので、OFFにすることは難しい。 「1アクション=1アクションクラス」派でない方にとっては、DMIを使えないのは死活問題になりかねません。 ち…

Thanks to @Annotations, @Progress is @Unstoppable! (@Annotationが進化を促進する!)

面白いサイトを見つけたので訳してみました。 http://www.annotatiomania.com/ 2000年に書いたコード private Collection employees; 2004年に書いたコード private Collection<Employee> employees; 2005年に書いたコード // 糞コンパイラが文句を言うため。後で修正</employee>…

Tomcat-8.5.0を試す

Tomcat-8.5.0-betaがリリースされています。 リリースノートによると、 The Apache Tomcat Project is proud to announce the release of version 8.5.0 of Apache Tomcat. Apache Tomcat 8.5.0 is intended to replace 8.0.x and includes new features pul…

Tomcat-8.0.32上でRhinoの初期化に失敗する問題を強引に解消する

Tomcat-8.0.32がリリースされています。 いつも通り、早速アップデートして試してみたのですがそもそもアプリが起動しなくなりました。 こんなエラーを吐きます。 Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 3 at j…

Chrome49でShadow DOMの属性セレクタが効かなくなった

CSS

だいぶ前に、日付入力フォームの"年"、"月"、"日"をShadow DOMを用いて消す方法を紹介しました。 http://takahashikzn.root42.jp/entry/20130715/1373865102 要するにこのように指定すればOKです。(※Lessです) ::-webkit-datetime-edit-year-field, ::-webki…

rawgit.comに接続できなくなった→githack.comに乗り換えた

githubで管理しているJSやCSSをそのままCDN的に使いたい場合、rawgit.comが便利です。 僕も個人用JenkinsのカスタムCSSをrawgit経由でホストしています。 しかしどうやら本日から、Chromeがrawgit.comを拒否するようになりました。こんな感じになります。 証…

jQuery-2.2.0をEnv.js上で動かすためにパッチを当てる

jQuery-2.2.0がリリースされています。 「まだjQueryで消耗してるの?」と言われそうですが、細かいDOM操作をするならjQueryは依然として非常に優れた選択肢です。 ウチはクローラーをJavaで書いたりしている都合上、jQueryをEnv.js上で動かしているのですが…

JSONにコメントを付けるなら空文字キーがオススメ

JSONを設定ファイルとして使うとき、コメントを付けたくなりますよね。 または、お決まりのコピーライトヘッダを入れるとか。 「JSON コメント」でググったところ、わざと同じキー名の値を宣言するというテクが使えるとありますが、実装依存なのであまり良く…

テーブルにカラムがない場合に、エンティティの属性を無かったことにする

とあるシステムにおいて、「エンティティの属性について、テーブルにカラムがある場合のみマッピングを行う」必要が出てきました。 要するに、 @Entity public class Sample { @Column private int foo; // テーブルにbarカラムがない場合は何もしない @Colu…

Jenkins 1.641 / Jenkins 1.625.3 からContent-Security-Policyが設定された

タイトル通りです。どうやらXSS脆弱性が見つかったようで、その対策とのこと。 https://wiki.jenkins-ci.org/display/SECURITY/Jenkins+Security+Advisory+2015-12-09 セキュリティが強化されるのは良いことですが、この変更によってかなり困った弊害が出て…

Eclipse 4.6 "Neon" M4リリース

M4がリリースされました。 http://www.eclipse.org/eclipse/news/4.6/M4/ 新機能一覧の全文翻訳は面倒くさいので無し。 毎年恒例のリリース日直前にまとめて書きます。 M4で気になった改善は以下の通りです。 起動の高速化 Startup time improvements Equino…

MariaDB Connector/Jの1.3.0以降でTIME型カラムの値が00:00のときにNULLになるバグ?

タイトルの通りです。 昨日はBOOLEAN型に関するバグを見つけましたが、今度はTIME型です。 00:00の値のときだけNULLになります。 原因はわかっていませんが、軽くデバッガで見てみたところ、当該カラムの値はサーバからのレスポンスがゼロバイト配列になって…

MariaDB Connector/Jの1.3.0以降でBOOLEANのカラムが常にtrueになるバグ?

ちょっと前にConnector/Jが1.3.0にアップデートされたのですが、とたんにTINYINT(1)のカラムの値を正しく取得できなくなりました。 MySQLはBOOLEANをTINYINT(1)の別名として扱います。アプリケーションから見たらこのカラムはBoolean型です。 で、Connector/…

SSH Tunnel ManagerのEl Capitan対応版がリリース

OSX

ウチはVPN代わりにSSHトンネルで外からのアクセスを受け付けています。 OSX ServerのVPNサーバは微妙にウチのニーズに合わなかったし、とは言え一からVPNサーバを(Linux等で)構築するのは面倒過ぎて死ぬ。 一方でSSHトンネルならSSHサーバを公開するだけ。 …

100万円超えThinkPad(15年ぶり二度目)

モバイルXeonというネタCPUを載せた変態ThinkPadが発売開始になりました。 この変態っぷりはW700以来じゃないでしょうか。 盛りまくった構成がこちらになります。堂々の100万円超え。 100万円を超えるThinkPadというと、ThinkPad770シリーズがありますね。 …

SpringとGroovyにも直列化オブジェクト脆弱性

昨日の記事の続きです。 昨日はcommons-collectionsについて、どのような仕組みで攻撃が成功しうるかを書きました。 しかしこの問題はcommons-collections限定ではなく、GroovyまたはSpringFrameworkのクラスをロードしている環境でも起こりえます。 攻撃が…

commons-collectionsのInvokerTransformer脆弱性について

2015-11-12 追記あり。「SpringとGroovyにも直列化オブジェクト脆弱性」も参照してください。 昨日からJava界隈で話題になっているcommons-collectionsの脆弱性について。 元ネタはこちら。 対応するチケットはこちら。 InvokerTransformerなんてクラスは初…

Chromeブラウザのグラフィックが壊れた

僕は実験用に、Parallels上でOSXの仮想マシンを使っているのですが、 先ほどChromeが自動更新された直後からマトモに使えなくなりました。こんな感じ。 念のためですがこれはヤフーのトップページです。 設定画面も何もかもがこんな感じなので、何の操作もで…

Magic Trackpad 2を買った

Mac

早速買いました。法人割引のおかげて少し安くなってますが、それでもかなり高価。旧モデルのほぼ2倍の1.4万とは… 旧モデルとの横幅の比較。新モデルのほうが広くて縦がスリムになってますね。これは改善点。 縦幅は狭くなってますが、タッチ可能領域は同一な…

はてなブログProにしてみた

ホスト名を変えました。そしてヘッダ・フッタが消えてすっきり。 おまけに広告も非表示に。 とはいえ、こんな技術ネタばかりのブログを見るような方はアドブロック標準装備でしょうけど。

typetoolsのパッチを送ったらPlay Frameworkの中の人から応援された

Git

ジェネリクスの型解決のためのライブラリは多々ありますが、最軽量級のライブラリであるtypetoolsを愛用しております。 http://github.com/jhalterman/typetools 特に、ラムダ式の型解決ができるのがウリです。 で、OracleJDK_1.8.0_51からラムダ式の型解決…

Eclipse 4.6 "Neon" M2リリース

M2がリリースされています。 このリリースからスプラッシュスクリーンに"Neon"と表示されるようになりました。 M2の新機能 http://www.eclipse.org/eclipse/news/4.6/M2/ バイナリファイルの検索 バイナリファイルを検索出来るようになりました。 ただし一致…

OGNL-3.1で、(!!"1") == false になって困った

OGNL-3.1がひっそりとリリースされているのですが、かなり困った仕様変更が入ってます。 foo || barが動かない 例えば、barが文字列型の値だとして、 foo.aMethod(bar || "default string") のようにして、barがnullなら"default string"を渡すようなコード…

es6-shim@0.33.1におけるNumberクラスの置換を無かったことにする

とりあえずes6-shimですよね。 というわけでRhino環境で使っている*1のですが、0.33.1から急にテストが通らなくなりました。 こんなエラーが出るようになった。 InternalError: Can't find method java.lang.Integer.valueOf() え?何事?と思って調べてみる…

Firefox41以降でアドオンの署名チェックを無効にする方法

Firefox41からアドオンの署名チェックが有効になりました。普通は問題ないのですが、野良アドオンを使っている場合に困ることが有ります。 具体的にはSeleniumIDEが動かなくなって大いに困りました。 対応状況 この件、GitHubでは既にissueが上がっています…

Eclipse4.6 "Neon"を使い始める

Eclipse4.6 Neonのマイルストーンビルド1がリリースされていたので早速インストールしました。 外見的には、バージョンが4.6になっている点以外は何も変わりません。スプラッシュも"Mars"と表示されたままです。 M1の新機能 http://www.eclipse.org/eclipse/…

ある教授曰く - 「遊び相手ならJava、結婚相手ならC」

みなさん大好き、プログラミング言語ランキング。 今回のこちらは、IEEEの集計なので権威?があることになるんですかね。 http://spectrum.ieee.org/computing/software/the-2015-top-ten-programming-languages 結果はいつも通りの言語が上位を独占している…

落語始めました

とある方の影響で落語を嗜むようになりました。 正直な話、これまでの人生で落語といえば笑点に出演する噺家さんくらいしか接点がなかった(※笑点自体は落語ではない)のですが、 マジメに取り組んでみるとコレがまた面白い。 落語って一人で全てを表現しな…