8進数リテラルはプログラミング言語ごとに異なる

8進数を表記する文法は、主に以下の3つがあります。 (二番目と三番目は分かりにくいですが ゼロ オー1 です) プリフィックスとして 0 を付与する (例: 0123) プリフィックスとして 0o を付与する (例: 0o123) プリフィックスとして 0O を付与する (例: 0O1…

SELECT文で本番環境を落としたお話

本番環境でやらかしちゃった人 Advent Calendarで、このパターンのやらかしはなかったのでキーボードを叩くことにしました。 番外編のつもりでお楽しみください。 この記事が、新たな障害発生を防ぐことにつながれば幸いです。 何をやったのか ある日、ちょ…

Object#clone() メソッドからスローされる CloneNotSupportedException はどのようにハンドリングするべきか

Java の Object#Clone() メソッドは throws CloneNotSupportedException が宣言されています。 protected native Object clone() throws CloneNotSupportedException; しかし、クラスが Cloneable インタフェースを実装していれば CloneNotSupportedExceptio…

Ansible で Mackerel を操作するプラグインを作りました!

Ansible で Mackerel の設定を取得したり変更したりできたらなーと思う時があります。 例えば… アラートが鳴ってしまうのを防ぐために、Ansible 実行中はホストのステータスを standby にしたい 特定のロールが設定されているホストの場合だけ、ファイルをコ…

JJUG CCC 2019 Fall ( #jjug_ccc ) - セッション資料の一覧

JJUG CCC 2019 Fall に行ってきました! 最近 Java のシステムをまたいじるようになって*1、 Java 欲が高まってきていたところにいろんなセッションを聞けてすごいテンション上がりました。 特に、「開け!ドメイン駆動設計の扉」がちょうどこれから一部のシ…

Stack Overflow のタグから、どのフレームワークについてよく質問されているのかプログラミング言語ごとに分析してみた

Stack Overflow の質問には、その内容を示すタグが付与されています。 このタグ、よく見ると「言語」+ 「フレームワークやライブラリの名称」という構成が多いです。 つまり、これを分析すれば、言語ごとに質問の多い(つまり、よく使われている、人気がある…

Java のバージョンを上げるだけで、プログラムは速くなるのか

よく Java の実行バージョンを上げるだけで速くなるという話を聞きます。 でも、本当にそうなのでしょうか。また、本当だとしたらどれぐらい速くなるのでしょうか。 そこで、簡単なプログラムで実験してみました。 実験概要 実験用に、数独を解く Java のプ…

strptime は環境によって挙動が違う

PHP には、日付文字列をパースするための strptime という関数があります。 これを使って、Sun, 19 Apr 2015 11:43:30 GMT という文字列を %a, %d %b %Y %H:%M:%S %Z というフォーマットでパースした結果、以下の通り環境によって異なる結果になりました。 s…

パラメータ設定が不適切だと、ruby-oci8 より go-oci8 の方が遅くなることもあるので要注意

こんな感じの単純な SQL を Ruby と Go それぞれで流したら、なぜか Go の方が遅くなりました。 特に text が長いと遅い…。 SELECT id , text FROM example 使っているライブラリは、ruby-oci8, go-oci8。 原因 原因は、それぞれのライブラリのパラメータの…

JJUG CCC 2019 Spring ( #jjug_ccc ) - セッション資料の一覧

JJUG CCC 2019 Spring に行ってきました! 今回はレガシーコード改善のヒントになるネタがないかなーといろいろ話を聞いてきました。弊社の Java、古くなっているものがいくつかあって、それを少しでも楽にしたいというのがモチベーションです。 毎回思うの…

JJUG CCC 2019 Spring のスマートフォン用タイムテーブルを作りました

5月18日(土) に開催される JJUG CCC 2019 Spring 、そのスマートフォン用タイムテーブル(セッション一覧)が欲しかったので、作りました! JJUG CCC 2019 Spring タイムテーブル 公式ページのビルドして圧縮された Vue ファイルを手作業でハックして作った…

JavaScript の String.prototype.split() の第二引数 limit は、ほかの言語と意味が違う

JavaScript の split メソッドを使ったら「あれ?」となったのでメモ。 一般的な spilt メソッド Java, C#, Ruby, Perl の split メソッドは、第二引数に limit を指定できます。 これを指定すると分割回数が制限されます。 (下記の例だと、文字列を2つに分…

意地でも IE を使わずに Firefox をダウンロードする方法

新しい Windows 7 の PC を使おうとしたら Internet Explorer (IE) しか入っていませんでした。 しかし、私は IE が嫌いなので、Firefox を使いたいです。 そこで、Firefox ダウンロードしようと思い…、そこで気づきました。 Windows 7 で Firefox を使おう…

JJUG CCC 2018 Fall( #jjug_ccc ) - セッション資料の一覧

JJUG CCC 2018 Fall に行ってきました!今回、興味のあるディープな JVM の話とかアーキテクチャ設計をたくさん聞けて、個人的にはとてもテンションが上がりました! 「Deep dive into instanceof」のように、HotSpot VM の深い話を知れたり。仕事で役に立つ…

Arrays.asList(T... a) は、なぜ add や remove ができないのか?

Arrays.asList(T... a) というメソッドについてググると、「このメソッドで返ってくる List は、add や remove ができないので注意しましょう」ということが良く書かれています。 でも、「なぜできないのか?」という点については書かれていないことが多いの…

ジオシティーズのデータを保存する方法

Web

2019年3月末で、ジオシティーズが閉鎖されることが決まりました。 これはつまり、過去のいろんな歴史的サイトも消えてしまうということ。 そうなる前に、ジオシティーズのデータを保存して置く方法をまとめました。 サイト全体をローカルに保存する まず、Wg…

Java のリリース日とEOLのまとめ

Oracle JDK の場合 図にまとめてみました。 こうしてみると、サポート期間5〜6年って結構長いなーと思います。 First Release Date Final Public Release Date Final Public Release Version Java 1.3 2000年5月8日 2006年12月 Java 1.3.1 Update 20 Java 1.…

JJUG CCC 2018 Spring ( #jjug_ccc ) - セッション資料の一覧

JJUG CCC 2018 Spring に行ってきました! 実は、仕事では最近 Java から離れているのですが*1、それでも CCC (クロスコミュニティカンファレンス)と銘打ってるだけあってやっぱり参考になる話がいろいろありました。 特に、同じ業界の方も登壇されていて…

トップレベルドメインっていくつあるの?

.com や .jp などのトップレベルドメイン(ドメイン名の一番右側の部分)っていくつあるのか気になったので調べてみました。 トップレベルドメインのリスト IANA (Internet Assigned Numbers Authority) のページに載っていました。 IANA — Root Zone Databa…

Java 10 で変わる Java のバージョン表記

Java は、バージョン 10 以降タイムベースリリースに変わりました。 それに合わせて、バージョン表記がまた変わったので概要をまとめました。*1 詳細は JEP 322: Time-Based Release Versioning を参照。 バージョン番号 $FEATURE.$INTERIM.$UPDATE.$PATCH …

Firefox で、アクティブなタブの幅を広くする方法

タブをいくつも開いていると幅が狭くなってしまい、タブのタイトルが読めなくなることがよくあります。 そういうときに、アクティブなタブだけ幅が広くなっていると読めるのになるなーと思ったので、ハックしてみました。 設定方法 about:support を開く*1 …

Firefox 58 でも、Shift + マウスホイールで「戻る/進む」をできるようにする方法

今日リリースされた Firefox 58 で、Shift + マウスホイールで横スクロールができないという有名な16年物のバグ (?) が修正されました。ただ、もともと Windows 版 Firefox では Shift + マウスホイールは「戻る/進む」に割り当てられていました。これが、上…

「Alt+Click」だけでテキストをコピーできるようにするブラウザ拡張機能を作りました。

テキストをコピーするのがものすごく簡単になる Google Chrome / Firefox 用ブラウザ拡張機能を作りました! Copy Text with Alt+Click この拡張機能を導入後は、Alt + Click でテキストをコピーできるようになります! 範囲選択も Ctrl + C を押す必要もあ…

JJUG CCC 2017 Fall ( #jjug_ccc ) - セッション資料の一覧

JJUG CCC 2017 Fall に行ってきました! 今回は自分好みな「普段使ってるアレ、深掘りするとこうなってるんだぜ」的なセッションをいろいろ聞けて大満足でした。 印象に残っているのが「DBのTCPプロトコルとJDBC / yohei yamana さん」。 「かっちりした Pos…

今回も、JJUG CCC 2017 Fall の時間別タイムテーブル(セッション一覧)を作りました

11月18日(土) に開催されるJJUG CCC 2017 Fall の「時間別」&「カテゴリ別」タイムテーブル(セッション一覧)が欲しかったので、前回同様にページを作りました! JJUG CCC 2017 Fall - Timetable (非公式) 今回の改良点はお気に入りボタンがわかりやすくな…

Java9 で String クラスがリファクタリングされていました。(replace メソッド編)

前々からこの実装はどうなの!?と言われていた String クラスの CharSequence を引数に取る replace メソッド。 これがついに Java 9 でリファクタリングされていました! 今まであった問題 String クラスの replace (CharSequence target, CharSequence re…

Java9 でも String クラスがリファクタリングされていました (JEP 254: Compact Strings 編)

本日、ついに JavaSE 9 がリリースされました! そこで、かねてから噂になっていた JEP 254: Compact Strings がどのように実装されているのか調べてみました。 Compact Strings の概要 これまで String クラスや StringBuilder クラスなどの内部では、文字…

Java 6, 7 の API ドキュメントを開いた時に、自動で Java 8 のドキュメントにリダイレクトしてくれるツール "JavaAPI-Redirector" を作りました!

たまに検索エンジンなどからリンクを辿って Java API ドキュメント (Javadoc) のページを開くと、古い Java 6 や Java 7 のページが表示されて (´・ω・`) となることがあります。 自分は Java 8 の API ドキュメントが見たいのに…。 そんなときに、自動で J…

Duke 画像の再配布ページを作りました

かつて https://duke.kenai.com/ で配布されていた Duke の画像を再配布するページを作りました! Redistribution of Duke images これは何? Java のマスコットキャラクター "Duke" の画像は、これまで https://duke.kenai.com/ で BSDライセンスのもと配布…

JJUG CCC 2017 Spring ( #jjug_ccc ) - セッション資料の一覧

JJUG CCC 2017 Spring に行ってきました!(感想をあとで書く)さて、まだ公式で公開されていなかったので、残念ながら時間がかぶってしまって参加できなかったセッションもあったので、あとで読むために現時点で発表者の方が公開されている資料一覧をまとめ…