飴屋

開発日記/2021年の日記

2021/12/13

やよいの青色申告というソフトで帳簿をつけていますが、作業PCの引っ越しの際に困ったときのメモ。

弥生製品群はライセンス認証機構が備わっています。やよいの青色申告では(同時起動はしないという制限下で)一ライセンスにつき2台までのPCにインストールできるようです。以前、これを知らなくて、PCのリプレースやらOSのクリーンインストールやらが重なったときに2つのインストール枠をすぐ使い切って、再インストールできない状態になったことがありました。その経験を踏まえて、今回は古いPCのライセンス認証を事前に解除しておいたので問題はないはず!と新しいPCでインストール作業を済ませて、いざライセンス認証を行おうとしても「エラーコード:13027-8」というメッセージが出て、認証作業をやり直すようにうながされました。

いろいろ試した結果、WEBのアクセス時にプロキシサーバーを経由していたことに問題があったみたいです。プロキシ設定を切ったらすんなりライセンス認証が完了しました。エラーコードでググっても、良い情報に巡りあえなかったので、ここにメモっておきます。

2021/10/28

自作のWikiシステムで問題が起こっていることに気が付きました。「ビッグ」と「ピッグ」という項目があったとして、別々に編集しようとしても、どっちも「ビッグ」として編集結果が保存されているという現象が起こっているようでした。いろいろ検証した感じでは「ヒック」「ビック」「ピック」「ヒッグ」「ビッグ」「ピッグ」のどれも同じ単語として記録されているようです。データベース上の順番で最初に該当した「ビッグ」が選ばれていると推測しました。

自作のプログラム的に濁点や半濁点のついた文字とつかない文字を同一の文字として扱うような処理は書いてないので、サーバーとかサードパーティー製品由来の問題だろうと思い、真っ先にデータベースサーバーが疑われました。レンタルサーバーで提供されているのはMariaDBの5.5系なのでMySQLの情報をあたってみますと、MySQL8.0から濁点半濁点をデフォルトでは区別しなくなるという情報がみつかりました。これはcollationという仕組みと関係してて、文字列を探すときの照合順序やルールに関係するみたいですね。辞書であれば単語の並び順のルールみたいなものかな。「ヒ」も「ビ」も「ピ」も扱いが等しくなってしまうと、日本語としてはとても困ったことになってしまいますね。

では、collationを変更してみよう、と思って現在どうなっているか確認してみたところ、「utf8_unicode_ci」になってました。おー、超古い!かなり昔にデフォルトのcollationをutf8_unicode_ciに設定したまま、ずっと引きずってきたのかー。これでは絵文字も化けるぞって感じです。とりあえず「utf8mb4_general_ci」に変更したところ、今回の問題は解消しました。

2021/10/24

figmaでレイアウトデザインをもらうことが増えました。コーダーにもデザイナーにも好評な印象を持っています。Photoshopを使う頻度が減ってきたかも。

figmaはグラフィックエディタとしても使えて、ベクタデータをSVGで書き出せるところも便利だと思います。そんな風に生まれたSVG画像がWebサイトのbackgroundプロパティで読んだら、何も表示されないという事態が発生しました。表示されなかったのはいくつかの色のグラデーションで塗られた線(パス)です。ちなみにブラウザで直接SVG画像を開いてみるとちゃんと意図したとおりに表示されました。

<path d="M(省略)Z" fill="url(#paint**_linear_**:***)"/>

表示されないパスは大体↑こんな内容です。怪しいのはfillのリンク表記かな、と目星をつけます。ちなみに*印のところには数字が入ってました。内部で機械的につけられた数字と予想します。paintは多分「塗り」データの番号でlinearは「線形グラデーション」を指してるのかな。パレットかなんかを指す一意的な名称なのでしょう。

<linearGradient id="paint**_linear_**:***" x1="*" y1="*" x2="*" y2="*" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#**"/>
<stop offset="**" stop-color="#**"/>
...(省略)
<stop offset="1" stop-color="#**"/>
</linearGradient>

defsタグの中にいっぱいグラデーション塗りが定義されてました。定義自体はおかしくなさそうなので、やはりlinearGradientタグのid属性値が怪しいですかね。IDの命名規則は知りませんが「:」文字が名前としては浮いている印象を受けました。なので「**:***」な部分はみんな「**_***」に置換してみることにしました。

結果、無事backgroundにSVGが表示されました。ワーイ

id属性に日本語がついてるデータなんかもよく人から渡されますので、あんまり気にしていませんでしたが、そういうこともあるのかな。私自身はfigmaを使ってデザインを描くことをやってないので、このid名がfigma起源なのか、外部のソフトウェア由来なのかまではわかりませんが、一度figmaのことをもっと触っておいてもいいかもって思いました。

2021/9/11

スマホをだいぶ機種変してないな、って思ってはいたのですが、端末は気に入ってたし、不自由な点もなかったので、ついつい新しいものを用意しないで生きてきたのですが、先日、バッテリーがモリモリと盛り上がってきて、裏ブタがパンパンになってしまったことをきっかけに新調しました。やはり新しいものはジワジワとよくなってきているのですね、と感心しながら使っているのですが、自作のアプリに動作がおかしい点がみつかりました。

古い端末ではちゃんと動いているので、多分、OSのバージョン起因の問題だろうなと、目星をつけました。で、とりあえず新端末でデバッグしてみようとしたら、新端末とPCをつなぐUSBケーブルがありません。古い端末と仲良くし過ぎてUSB-C規格の準備が不十分でした。しかし、Androidはバージョン11からワイヤレスでデバッグできると聞いていたので、それを試してみました。なにこれ、すごい便利!

ちゃんとadb pair コマンドでペアリングされて、adb connect コマンドで開発機とスマホがつながったので、ログを眺めていたら

java.io.IOException: Cleartext HTTP traffic to ***.***.***.*** not permitted

という例外を吐いていました。これはAndroidのAPI28からhttpプロトコルでの通信が原則カットされたのが理由で起こる例外だそうです。対策としてはAndroidManifestでそれをオプトインするだけでよいようです。

android:usesCleartextTraffic="true"

http通信自体にはセキュリティ面での心配がありますが、今回の通信は使っているネットワーク内で完結するものなので、問題にはならなそうに思っています。API側での仕様変更に気が付かないというのも怖いので、機種変の頻度はもう少し上げないとかな?

2021/5/29

以前、レンタルサーバーにmecabを設置していたのですが、いつの日にか正常に動かなくなっていることに気が付きました。設置したのが2018年で止まったのが、その数か月後だったっぽい。原因を調べてたんですが、最終的にサーバー屋さんがサーバーの設定を変えたか、サーバーをリプレースするかした際にパスに変更が加わったのではないかと考えが至りました。

とりあえずmecabをインストールしなおしてみて、それだけではダメだったので、mecab-perl(Perl用の拡張)も2018年の日記を見ながら入れなおしたら直りました。

将来的に頻繁にこれが起こるのであれば、レンタルサーバーでの運用は向いてないのかもな、と思いつつ、とりあえず様子見の構えです。(そして忘れる)

2021/4/17

コード上でGoogleCast(ChromeCast)とセッションを持つとき以下のようにせよと書いてあった。

Intent castIntent = new Intent();
castIntent.putExtra("CAST_INTENT_TO_CAST_ROUTE_ID_KEY", routeId);
castIntent.putExtra("CAST_INTENT_TO_CAST_DEVICE_NAME_KEY", routeName);
sessionManager.startSession(castIntent);

だけどセッションが張れなかった・・・。CAST_INTENT_TO_CAST_ROUTE_ID_KEYのところにCastデバイスのIDを渡せってことだったので、

mediaRouter_routeInfo.getId().replaceFirst("^.*:","");

MediaRouter.getRoutes()から必要なRouteInfoを選んで、getIdで得た情報から余計な情報を抜いて、32桁くらいのIDを渡していたのですが、余計なことはせず、getIdで得た情報をそのまま渡すのでよかったようです。余計なことに気をまわしてしまった。

2021/2/28

長いことノートパソコンを買い替えてなくて、ストレージやバッテリーを換装しながら使っています。古いですが、日常の使用には問題も特になくて、何よりデザインコンセプトが気に入っていて、同メーカーから似たような新作が出ても買い替えに至ってない状況です。先日も久しぶりに裏ブタをあけてバッテリーを交換して様子をみていたのですが、三日前くらいからACアダプターについているLEDがみたことのない状況になりました。(二色交互に点滅)バッテリーは充電率96%と表示されていますが、いつまで経っても96%のまま増えも減りもしない無限バッテリー状態です。

最初は猫にコードを噛まれて、電源が短絡してるのかと思いましたが、継続して使っているうちに、

  • 電源はACアダプターから供給されている
  • バッテリーからも電源は供給されている(空になるまでは)
  • 充電はされていない

ということが判明してきました。そんなことあるのか、バッテリーの初期不良ではないか、と思ったのですが、ググりまくったところ、充電中に何か異常な状態になると、発火などの予防のためにバッテリーがロックされることがあるそうです。それは知らなかった。

このPCでは電源オフの状態で、電源ボタンを長押しすると、ロックが解除されるようで、とりあえず復旧して様子を見ながら使っているのですが、いったい何が原因でロックされたのか、ちょっとドキドキしてます。

Last-Modified