2020/06/17

Java:サロゲート文字を考慮して1文字ずつ配列に格納したい

確かめずに、ソラで書いてるんだけど、
    String str = "𩸽が𩹉を𠮟る。";
    List<String> strList = str.codePoints()
                          .mapToObj(cp -> String.valueOf(Character.toChars(cp)))
                          .collect(Collections.toList());
こんな感じだっけ?

2020/04/19

 近況報告

仕事

バグを発見しても、資料を作り資料のレビューを、プログラムなんてしたことのない人に説明して、納得させられないと、資料の作り直し無限地獄で、いつまで経ってもバグの修正ができないイカれた世界から、残業のないシンプルなプログラマーだけをしていれば良い世界に転生したのは、去年の1月。
既に、1年が経っていますが、マジで残業をしたのはその間に1回のみ。
休日出勤って何?な世界で幸せに暮らしています。
あるんです、そんな世界。\(^o^)/
自分が思っている以上に大切に扱ってくれるし。
職業プログラマーな世界に転職してから、今が一番幸せかも...。

私生活

主にフリーソフトプログラマだったのは、既に何年も過去になっちゃいましたね。
今は、読書かNetflixが私生活の自由時間を占めていますので、コンテンツを作る側から消費する側になっていまいました。
作るといえば、土日や祝日には料理を作って家族に貢献はしていますよ。
読書は、職場でのスマホの持ち込みができないので、紙の本となっていますので、学生時代からのSFな小説を再読したり、新しく買ったりと。
昔はSFな小説といえばハヤカワ(水色)だったのですが、今時は創元(ラベンダー)なんですね。 ラノベは紙の本で買うと物理的に(心理的にも)部屋に置けないので、電子書籍で買うことがほとんどです。色々割引で買えますしね。
仕事でJavaしかしていないので。Javaはフリーソフトを書くには不向きな言語だと思いますので。Java自体のノウハウは非常に貯まるので誰かに言いたいくらいではありますが、仕事先は、インターネットから隔離された世界です。守秘義務との摺合せも面倒ですし。あしからず。

マイカー

中古のザ・ビートルに乗り換えたのは、去年の夏からだから8ヶ月になります。何が良かったかと言えば、燃費ですね。まぁ、通勤に使っていないせいもありますが、2ヶ月に1回くらいしかガソリンを入れなくて良い。満タンから800kmくらい走れますし。
ニュービートルと一緒で、ドライブは楽しいしぃ〜みたいな。
休日にしか乗らないから、黄砂とかクモの巣に悩まされています。

通勤

先に書いたとおり、マイカー通勤ではなく電車でGoなので、通勤中にスマホで読書ができます。行きは学生が一緒で混むので、ヘッドホン(イヤホンと言うのか?)で音楽オンリーですが。
今はコロナの影響で学生が乗ってこなくなったので、比較的空いていて通勤が楽です。

コロナ

もともと出不精なので、精神上は何も影響がないが、職場でマスク必須だし、通勤が電車なのでマスクを絶対しておきたいが、使い捨てのマスクが手に入らないのが、苦痛と言えば苦痛になるのかしら。
職場でタオル生地のマスクが支給されたんだけど、これでコロナから身を守れるのかが微妙〜。でも、無いよりは...。通気が良すぎてメガネが曇らないのが良いところ。

そろそろ夕方の犬の散歩の時間だ。それでは、また。

2019/09/03

こんにちは、ザ・ビートル

前車であるニュービートルと、新しくマイカーとなったザ・ビートルとを比べて、足りないところ、それは一輪挿し花瓶。
ニュービートルには、標準装備として一輪挿しがありましたが、ザ・ビートルには付いていません。
後付けの純正品らしきものも存在しているようですが、限定品であったらしく、今は欠品となっており入手は困難です。
代わりとなる一輪挿しを探しましたが、なかなか良いモノがなく...。

ニュービートルの一輪挿しを、ペンスタンドの代わりにして、ペンを挿している人が居る、という話を思い出し、だったら、一輪挿しではなく、ペンホルダーではどうだろうか?と探すこと数分。
ありました。
タブレット用スタイラスペンを、タブレットに貼り付けるタイプのケース。
早速、ザ・ビートルに取り付けてみました。
いい感じです。

2019/08/25

さよなら、ニュービートル

2001年式のニュービートルに乗って18年。
最後のニュービートル乗りになるまでニュービートルに乗り続ける。
と言い続けていましたが、さすがに維持費が掛かりすぎることが理由で、手放すことにしました。
車内のプラスチック部品が壊れまくり、ドアの取っ手が破損しています。
ドアの取っ手を修理するには、ドアの内張全体を取り換える必要があり、片側20万円するそうです。両方だと40万円。
それ以外にも、運転席側のドアのロックが、時々開かなくなったりして不便なので、修理をすると6万円。
サスもヘタって、後ろから見るとネガティブ・キャンバーになっていて、タイヤの内側だけが減っており、このままだと車検を通らない。
バッテリーも弱っていて、車検時に交換するべき状態。
バッテリーを格納するケースもプラスチックゆえにボロボロ。
ヘッドライトのクリア部分も、飴色になっており、交換なら10万円~20万円コース。
ハッチバックのゴムパッキンもボロボロだし。
ボンネットの塗面の剥がれもひどく、全塗装も考えていたものの、古い車ゆえになかなか全塗装をしてくれる業者が見つからず。

あれ?これだけ車検までに必要なら、それだけでザ・ビートルの中古が買えるのでは?
近所の中古車屋さんで、ザ・ビートルの相場を見ると、前期型だと150万円程度。
そうだ!ザ・ビートルの中古に乗り換えよう。ザ・ビートルなら、トラブルがあったとしても、自動車税も、維持費もニュービートルよりも安いだろう?

そう考えたのはお盆前。
そして昨日、ブラックのザ・ビートルが納車されました!!\(^o^)/
納車の前日には、乾式7速DSGのリコールが発表され、巷の乾式7速DSGはすぐ壊れて無茶金食い虫、という評判が故に中古車市場でVW車が割と安かったのも頷けます。
リコール修理だから、今後DSGの件は安心だし。
乗った感じは、良いよ~!
ずっと前に試乗した1.2リッター7速DSGのゴルフと同じく、低速でサクサク変速していき、排気量のわりに野太い排気音をさせるし、振動少ないし、剛性あるし、見た目マッシブだし。


ガンダムで例えると、グフからゲルググに乗り換えたようなものでしょうか?
連邦と後10年は戦えそうです。

2018/06/09

『もはやマイナーブラウザの域に? Firefoxのシェアがついに10%を切り一桁台に突入へ』に思う

ここの記事より
 これはNetmarketshare社が発表したもので、それまでシェアが10%台で推移していたFirefoxのシェアが2018年5月についに大台を割り、9.92%になったというもの。1年前、2017年6月の段階では12.53%のシェアがあったことを考えると、かなりの勢いで割合が減少しており、2017年11月リリースの「Firefox Quantum」で古いアドオンがサポートされなくなったことが、少なからず影響しているものとみられる。
マルチなOSで動作し、それぞれの設定を別の環境に引き継げるFirefoxは、昔から愛用しています。
また、痒いところに手が届くアドオンが素晴らしく、Chromeが現れた後でもずっとFirefoxを利用していました。
しかし、Quantumになってアドオンの互換性を捨てた事で、Firefoxを使い続ける意味が無くなってしまいました。
愛用していたアドオンが使えないから。
これにつきます。
ブラウザの速度が速くなったからと言われても、互換性を捨てたブラウザを使い続けられない。

 今は、Waterfoxを愛用しています。(^_^;)

互換性を捨てて良いことがあった例って過去に何かあったかしら?

Visual Basicが、.Net Frameworkベースで再構築化され、C#などのマルチプラットフォーム言語の一つとなった代わりに、Visual Basic 6.0との互換性を捨てた事により、Visual Basic 6.0ベースのアプリのほとんどは、アップグレードされず、Windows 10の時代になっても、Visual Basic 6.0のアプリケーションは生き続け、Visual Basic 6.0のランタイムは、OSに標準でインストールされ続けられる。
Visual Basic 6.0の後継のVisual Basic .netは、Windows 10ではサポートされていない。

インテルがサーバー用に新しく開発した、アイテニウムは、x86の後継として64ビットCPUとして開発された、x86との互換性を捨てて新しい命令セットで動作し、x86のアプリケーションは、エミュレーション上で動作させる。
その後AMDがAMD64という後方互換性を残した64ビットCPUアーキテクチャーを発表すると、インテルまでがそちらのアーキテクチャーのCPUを開発し、アイテニウムは無かったことになってしまった。

ソニーのプレイステーションからプレイステーション2は、ソフトウェアの上位互換性があり、セガのサターンとドリームキャストはゲームソフトの互換性がなかった。

カセットビデオの方式であるβには、画質を向上させるために、いくつもの規格があり、おおよその上位互換性が保たれはしたが、S-VHSでの互換性の高さを維持したVHS規格に敗北した。

互換性を捨てて、まったく新しい方式を採用するにあたって、得るものがいかに大きくても、今まで使っていたユーザーからは、後継機ではなく全くの新製品と同じものに見える。
今まで他の新製品に見向きもしなかった忠実なユーザーが、互換性を捨てた後継機に乗り換えるだろうか?
ユーザーは製品そのものに忠実だったのを、ブランドに忠実だから、互換性を捨てても得るメリットの大きさで納得させられる、と誤解してしまったのではないだろうか?

互換性の維持とは、それほどに重要な事なのだと思う。

2018/06/03

20年前を思い出す

ずいぶん前に、メールでVB De FilMtnのバグ報告があり、バグの修正をしていてふと気が付いたのですが、VB De FilMtn Version 0.10という最初のバージョンが公開されたのは、1998年の9月だったそうです。(ドキュメントより)
記憶では、0.10が公開されるずいぶん前から作っていたので、20年以上前から同じソースを弄繰り回していたことになります。
これ、よく考えると凄い事だよね?

まずは、Visual Basic 6.0のアプリケーション実行環境が20年間存在する件
これは、Microsoftの後方互換性が素晴らしい事だと思います。Windows 10で、x64環境でもVisual Basic 6なアプリケーションが動くのは凄い!OSにランタイムが最初からインストールされているもんねぇ~。開発環境も、仮想環境でx86なWindowsであれば、普通に動くし。Visual Studio 6がいくらしたか忘れちゃったし、高かったことしか覚えていないけど、これは元が取れているね。

次に、VB De FilMtnを20年後もメンテナンスしている件
作っていた本人は、きっと20年先もメンテナンスし続けるぞ!とは思っていなかった、というか考えてもいなかった。プログラムの需要が20年後もあるとは...。

最後に、VB De FilMtnを後方開発ツールで移行していない件
ごめんなさい。新しいVisual Studioの新しいバージョンが出るたびに、挑戦し続けているんだけど、途中で飽きちゃうんだよね。
自分の中で、今動いているプログラムをリプレースするモチベーションとか、時間とかなかなか確保できないしぃ~みたいなぁ~。
べ、別に新山(へろぱ)が、VB6でしか開発ができないってわけじゃないんだからねっ!

あの時の自分にあって、今無いものは、趣味的プログラムに時間を割り当てる能力、なのか?
今の時代、プログラミングで自分の時間を使わなくても、色んな消費コンテンツが溢れていますもんね。
ラノベを読んだり、Netfrixでアニメを観たり、ガンプラ作ったり。

20年前を思い出すと、ちょうど子供が生まれる前、結婚したてだったと思います。パソコン通信由来のネット友達と、メーリングリストで、VB De FilMtnのβ開発でいろいろやり取りしていたなぁとか。
まだ、新婚だったので結婚前の生活のリズムが生きていた。
職業もプログラマーじゃなかったし、今ほど消費コンテンツが溢れていなかったので、パソコンで何をやるかといえば、プログラムくらいしか自分にやれることはなかった。
マシンも非力でハードディスクの容量も1GBも無かったし、Windows 98だったし、ネットのインフラはISDNだったし、ビデオのメディアはレーザーディスクとVHSだったし、クルマはレガシイだったし、携帯電話持ってなかったし。

(次回に続く)<続きません

復活の

まいど、というか久しぶりです。(^^ゞ

メインのマシンとして使っているPCは、ThinkPad E450とMac mini(mid 2011)なのですが、ThinkPad E450のハードディスクというか、ハイブリッド・ハードディスクがある日突然に故障しまして、OSが起動しなくなりました。

まぁ、Mac miniがあるので、日常生活には差し支えがありませんでしたが、Windowsアプリの開発なんかは、仮想環境でやらざるを得ず、なかなか腰を落ち着けて開発をするという気分じゃありませんでした。

仕事の方も、某所常駐での開発作業が思った以上にグダグダ具だくさんで、帰って飯食って風呂入って寝るくらいしか時間がなくて...。
春の決算ボーナスを手に入れたので、動かなくなっていたThinkPad E450を復活させて、マイ・パソコン1台っきりという心細い状態から脱出することにしました。

ハードディスクの換装です。

幸いなことに、故障したときにハードディスクが何処に設置されていて、どうすれば取り替えることができるのかは調査済みでした。

底面のネジを数個外してフタを開けて、ハードディスクを固定しているネジを外せば、簡単にハードディスクを取り外すことができます。

どうせなら、ハードディスクではなくSSDにしてやろうと考え、アマゾンで今どきのSSDの500GBの値段を調査すると、だいたい1.5万程度。えっ、もうこんなに安い値段なの?ポチッ。速攻で購入してしまいました。機種とか特に調査せず、有名所のメーカーです。

数日後、アマゾンから送られてきたSSDをThinkPad E450に換装してみました。BIOSの設定を変更しないとOSのインストールがうまくいかないことに気がつくまで、何度も再起動を繰り返す羽目になりましたが、それ以外は特に問題もなく。

それにしても、起動も終了もバカッ速!!ハードディスクは、クライアントPCには不要で、NASなどのファイルサーバー用にしか必要ないのでは?!と思うくらいです。
OSインストール後に、故障前の環境に持っていくのに数日かかりました。いろんなアプリがこの1年の間にバージョンアップしていたり、後継のアプリになっていたり、Windows 10自体がバージョンアップされていたり。

そんなわけで、故障前の状態に戻ったので、開発もバリバリ行けるよ!と思ったのですが、1年間コンテンツ消費者生活を送っていたので、なかなか開発作業に専念できません。

Netfrixでアニメを観たり、スマホでラノベを読んだり。
職業で開発をしているので、プライベートの開発欲があまり発生しないのも原因のひとつなのかなと思います。

VB De FilMtnでバグ報告をしていただいた人には申し訳ございません。プログラム自体の修正は1行で終わりましたが、ヘルプやらドキュメントの変更が面倒でもう少し時間がかかります。

2017/03/25

Puchi Puchi jQuery plugin

概要

jQueryは、JavaScriptをさらに便利に使うフレームワークですが、そのプラグインでプチプチを作成してみました。 このプラグインを使用することにより、ご自分のサイトのページにプチプチが簡単に設置できます。

使用方法

jQueryのプラグインなので、jQueryを導入しなければ話が始まりません。
htmlのヘッダ部分で、jQueryを読み込ませてからjquery.puchi.jsを読み込ませます。

<script src="./js/jquery-1.7.1.min.js"></script>
<script src="./js/jquery.puchi.js"></script>
えっ?jQueryを知らない?ネットで調べてください。(^^ゞ

プチプチを表示したいdivタグを定義します。

<div id="puchiTest" style="height: 480px; width: 640px;">
</div>
このdivタグに対して、createPuchiメソッドを呼び出すと、divタグ内にプチプチが生成されます。

<script type="text/javascript">
$(function(){
    $('#puchiTest').createPuchi();
});
</script>
プチプチの描画にはHTML5のCanvasの機能を使用していますので、古いInternet Explorerでは動かないかもしれません。 そういった対策には、 HTML5業界ではよく知られている、excanvasを使用すれば使えるようになるようです。 「それ何?」って?自分で調べてください。(^^ゞ


<!--[if IE]>
  <script type="text/javascript" src="./js/excanvas.compiled.js"></script>
<![endif]-->
って感じです。
実は、マウス左ボタンのダブルクリックで、プチプチの絞る動作を行えます。
しかしながら、iPadやiPhoneのダブルタップでは、うまく動作しないかもしれません。
そんな時は、この業界では有名な、jquery.ui.touch.jsを読みこませるだけでうまくいくかもしれません。 iPadやiPhoneを持っていないので、本当に大丈夫かどうかは未確認です。(^^ゞ


<script src="./js/jquery.ui.touch.js"></script>
まぁ、こんな感じです。(^_^;)

オプション

サイズについては、以下の様に設定できます。

$('#puchiTest1').createPuchi({
    size : 1
});

$('#puchiTest2').createPuchi({
    size : 0
});
デフォルトは、「1(大きいプチプチ)」です。
オプション説明デフォルト値
sizeプチプチのサイズ1
backColorプチプチの背景色を設定します。 残念ながらプチプチの色は白固定ですが、背景色を少しイジるとそれっぽい色のプチプチが楽しめるかもしれません。
透明度も指定すると更に雰囲気が出ます。
'rgba(192,192,192,0.7)'
cursorプチプチの上のマウスカーソルを設定します。'pointer'
soundプチプチの音をさせるかさせないかの設定をすることができます。true
まぁ、jQueryで作成されているので、ソースを見れば何をやっているか分かりますよね。(^_^;)

仕様

アプリケーション版のプチプチの仕様を引き継いでいますので、以下の様な仕様です。
実物のプチプチを忠実にエミュレーションするためにあえてそうなっています。
  • プチプチを潰した時に音が出る確率は、1/6です。
  • 端っこで見切れているプチプチは潰れません。(既に潰れているので)
  • 絞った時に全部は潰れません。
  • 絞った時に一定数のプチプチが潰れないと、絞った音がしません。

ライセンス

MIT
jQueryの世界では、一番一般的なライセンスにしておきます。

設置例

プチプチ on Web

ダウンロード

jquery.puchi.zipのダウンロード (58KB)