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

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

5月20日(土) に開催されるJJUG CCC 2017 Spring の「時間別」タイムテーブル(セッション一覧)が欲しかったので、前回同様にページを作りました! JJUG CCC 2017 Spring - Timetable (非公式) 新機能「お気に入り登録」 今回から「セッションのお気に入り登…

パソコンのディスクアクセスランプがずっと点きっぱなしになってるときの調査方法

「なんかパソコンが遅いと思ったら、ディスクのアクセスランプがずっと点きっぱなしになってる…。なんでー!?」というときがたまによくあります。 そんなときの調査方法です。 ディスクアクセス原因の調査方法 まずは Process Monitor をダウンロードして起…

各言語での「翌月1日」の求め方

C# で「翌月1日」の DateTime を作るのに、こんなコードを書いてしまいました。 DateTime today = DateTime.Today; DateTime nextMonth = new DateTime(today.Year, today.Month + 1, 1); 結果、12月1日になったら new DateTime(2017, 13, 1) となってしまい…

main メソッドは private クラスに書いても動く?

static なメンバー・クラス*1は、以下のように "private" として宣言できます。 この時、"java Main$Internal" と打ってこの private クラス内の main メソッドを起動できるのでしょうか。 class Main{ private static class Internal{ public static void m…

64bit 版の Windows に Java 1.1 をインストールする

誰得な気がしなくもないですが。 Java 1.1 は、いまでも Oracle Java Archive からダウンロードできます。 Java Archive Downloads - Java SE 1.1 しかし、これを 64bit 版の Windows にインストールしようとすると、インストーラの一部が 16bit アプリケー…

Java API の規模がどれだけ大きくなったか気になったので、コード行数を確認してみました

Java API は、バージョンが上がるごとにどんどん大きくなっています。 でも、「大きくなった」といってもピンとこなかったので、目安としてコード行数を確認してみました。 Java API のコード行数 調べた結果がこちら。 バージョン コード行数 jdk1.1.8 63,4…

C# で、変数に代入したかどうかで値が変わってしまう不思議なコード

C#

この前の Java で NaN や Infinity を int にキャストしたときの値 を C# でやってみたら、面白い挙動になったのでメモ。 C# で NaN や Infinity を int にキャストしたときの値 C# で NaN や Infinity を int にキャストしてみたところ、結果はいずれも "0"…