趣味のプログラミングで遭遇した技術的トラブルや疑問を調査して解決するお話

PHILIPS Series 9000のヘッドが外れて落ちる問題の修理
3dprinter

PHILIPS Series 9000のヘッドが外れて落ちる問題の修理

問題 いつも使っているシェーバー(フィリップスのSeries9000)が、最近使用中にヘッドが外れて落ちる現象が頻発するようになった 騙しだまし使ってきたのだが、最近はさかさまにするだけで外れて落ちるレベルになってきたため、なんとかすることにした フィリップス 9000シリーズ メンズ 電気シェーバー 72枚刃 回転式 お風呂剃り & 丸洗い可 トリマー・洗浄充電器付 S9185/26 ※クリックで商品ページが開きます 商品レビューにもあるが、もしこのシェーバーの購入を検討している人がいたら、このシリーズはヘッドと本体の固定部分が結構脆いので注意したほうがよい マジで使用中にポロリと外れる フィリップス メンズシェーバー 5000シリーズ S5395/

  • zienchan
    zienchan
mermaidのガントチャートで休日と祝日を考慮して表示する方法
html

mermaidのガントチャートで休日と祝日を考慮して表示する方法

問題 mermaidでガントチャートを表示したとき、休日や祝日が考慮されないスケジュールになってしまう \```mermaid gantt title dev schedule(休日祝日なし設定) dateFormat YYYY-MM-DD axisFormat %m/%d section HTML 設計&開発ドキュメント作成: design_and_doc, 2020-04-13, 3d section Migration 設計: desgin_migration, after

  • zienchan
    zienchan
stylusでpx同士などを演算した結果の単位を除去する方法
html

stylusでpx同士などを演算した結果の単位を除去する方法

問題 下記の様に、font-sizeとline-heightをpxを含む変数で定義しているとき、中央寄せにするための適切なline-heightを求めると単位pxが含まれて倍率指定ができない default_font_size_px = 16px default_line_height_px = 32px .sample font-size default_font_size_px line-height (default_line_height_px / default_font_size_px) この結果は当然単位pxを含むので、

  • zienchan
    zienchan
Vue Devtoolsで"Vue.js not detected"になる問題
html

Vue Devtoolsで"Vue.js not detected"になる問題

現象 vueのデバッグのためにchrome拡張を導入したが, "Vue.js not detected"と表示されローカルファイルのデバッグができない なおwebpackを使用してバンドル化しており,modeはもちろんdevelopmentとしている 原因 あれこれ悩んだ結果わかったのはローカル環境(fileプロトコル)で開発していたのが原因だったっぽい chrome側でプラグインからローカルファイルへアクセスをするのを遮断しているようだ 対処 ファイルのURLへのアクセスを許可するをONにしてやればよい

  • zienchan
    zienchan
WordpressのdokcerイメージでWP_DEBUGを有効にできない問題
wordpress

WordpressのdokcerイメージでWP_DEBUGを有効にできない問題

現象 dokcer-compose.ymlのenvironmentにWP_DEBUG="true", WP_DEBUG_DISPLAY="true"、env_file内に同様の記述をしてもWrodrpressのエラー内容が表示されない 解決策 同じ現象にはまってた人がいた https://github.com/docker-library/wordpress/issues/287 つまり、WORDPRESS_DEBUGを有効にしてやらないといけない したがって WORDPRESS_DEBUG=

  • zienchan
    zienchan
VAIO VPCZ21AJの液晶パネルを交換した話
vaio

VAIO VPCZ21AJの液晶パネルを交換した話

困ったこと Windows10の無償アップグレードが出た頃の話になるけれど、ある日突然、VPCZ21AJの画面がスタンバイとかではないのに、プツンと真っ暗になるようになってしまった。(いきなりディスプレイの電源が落ちる感じ) 最初の方は、それでもしばらくすると回復していたし、どうしても画面が復帰しない場合は一度画面を閉じて(スタンバイにする)、本体の電源を入れれば一定時間は使えていた (インバータ回路周辺からのノイズ音(ジーッ)がうるさくて気になって仕方なかったが...) そんな感じで騙しだまし使っていたのだが、これまたある日突然、BIOS画面すら映らなくなってしまった ここまでくるとほぼほぼハードウェアトラブルだろうと思いながらも、いろいろ試したところ、どうも輝度が30未満の場合はバックライトが点灯するっぽい しかし、一度でも輝度が30以上になると、その瞬間からバックライトが消えてしまう上に、復帰させるには輝度30未満にしてからディスプレイの電源を入れなおさないとならない VAIOのBIOS画面は強制的に輝度100で起動するため、この瞬間にバックライトが消灯してしまい、Windows起動時に輝度が30になろうが、復帰しないみたいだ 故障しているのは液晶パネルなのか? 液晶パネルが壊れているなら交換したらいい話なのだが、

  • zienchan
    zienchan
PDFBoxでのポイント(pt)とミリ(mm)の座標変換
java

PDFBoxでのポイント(pt)とミリ(mm)の座標変換

困ったこと JavaでPDFファイルを扱うライブラリとしてPDFBoxを使ったが、単位系がよくわからない そもそもポイント(pt)とは Point (typography) https://en.wikipedia.org/wiki/Point_(typography) を読む限りは1ptは1/72inch, つまり0.35277777777777775 mmらしい ちなみにポイント(pt)は更に複数の種類が存在するみたいだが、PDFやIllustlatorで扱うptはDTP Pointだったので、これからポイント(pt)といえばDTP Ptを指すことにする 実際に座標変換のコードを書く

  • zienchan
    zienchan
3Dプリンタのスイッチング電源が故障した話
3dprinter

3Dプリンタのスイッチング電源が故障した話

問題 ABSに初挑戦したところ印刷から1時間程度経過後にパチッという音と共に突然電源が落ちた 主電源を電源を入れなおすも本体パネルのバックライトが点灯しない スイッチング電源のFANは動作している 環境 Anycubic Kossel Delta Plus 3Dプリンタに付属の12V25Aスイッチング電源を使用 解決 出力電圧を調べる 本当に電源の問題なのかを切り分けるために最初に出力電圧をテスタで計測します 出力は0でしたので、電源側の問題でした 可変抵抗で出力電圧の調整ができるっぽいので、試しに回しましたが変化なし そもそもLED1が点灯してないので内部DCも通電してないのでしょう ヒューズの状態を調べる まずはAC側に最も近いヒューズを見て、問題なさそうであればテスタでぱっと通電チェックする 爪でひっかくとパカっと開きます 結果はシロ しかしこれ、配線を追ってもどこにも接続されていない浮いてるヒューズに見えるんだけど... 本当に意味あるのか?? 次に回路側のヒューズを見て、こちらも外見上問題なさそうであればテスタでチェック 結果はシロ どうやらヒューズは切れていないようです

  • zienchan
    zienchan
3DプリンタでPLAを印刷すると定着せず浮いて反れる問題
3dprinter

3DプリンタでPLAを印刷すると定着せず浮いて反れる問題

問題 PLAを印刷するとプラットフォームベッドにきちんと定着せずに反れてくる 環境 AnycubicのKossel Delta Plus ファームウェアは2019/09/11時点の最新 専用のヒートベッド&ガラスベッド(Ultrabase)を使用 設定温度はヘッド200℃/ベッド60℃(PLAにしてはちょっと高い設定) 対処 ガラスベッドの調査 Anycubic Ultrabase [新技術]3Dプリンタ ヒートベッド用ガラス 丸いタイプ 直径240mm デルタ型 ホットプレート 複合コーティングの材質 プラット

  • zienchan
    zienchan
スイッチマトリクスを使ってマイコンの入力ポートを節約する話
electronics

スイッチマトリクスを使ってマイコンの入力ポートを節約する話

目的単純なスイッチ(ON/OFF)を判定する際に、できるだけマイコンのIOポートを節約するための方法を考える なぜ単純なスイッチでは駄目なのか単純なON/OFFであれば下記の様な単純なスイッチでも問題ないです。 ※GPIO23は入力ポートとする 単純なスイッチ(1スイッチ/1ポート) GPIO23はプルアップされていて、常にHIGHとなっている状態です。 ここでスイッチが押されるとGNDに接続されてLOWになる感じですね。 個人的にこの設計はシンプルで好きです。迷うこともないし。 しかしこれで例えばキーボードなんて実装しようとしたらIOポートの数の壁にぶち当たるのは想像できますね。 同時押しを考えないでいいのならアナログ入力少し複雑になりますが、原理はわかりやすい。 アナログ入力で判定する(nスイッチ/1ポート)GPIO23をアナログ入力とすると、プルアップされているので常に3.3V付近です。 SW1が押されるとGNDに落ちて0V, SW2が押されると分圧回路が成立して半分の1.65V付近になります。(誤差や熱による変化が考えられるため)

  • zienchan
    zienchan
Ubuntu 18.04.2 LTS (Bionic Beaver)がある日突然、真っ暗になって起動しない件
linux

Ubuntu 18.04.2 LTS (Bionic Beaver)がある日突然、真っ暗になって起動しない件

現象深く考えずにアップデート適用して再起動したら突然、画面が真っ暗になってログイン画面が表示されなくなって詰んだ 環境VMWarePlayer上にUbuntu 18.04.2 LTSをインストール済 解決策セーフモードで起動して下記のファイルを編集してWaylandを無効化する vi /etc/gdm3/custom.conf #WaylandEnable=false これのコメントを外して、 WaylandEnable=false こうする 結果再びログイン画面が表示されるようになる 参考Ubuntu 18.04 LTSが起動しない?Waylandを無効にすれば起動するかも!

  • zienchan
    zienchan
AliExpressで格安ヒートガン(ホットガン)買った話
electronics

AliExpressで格安ヒートガン(ホットガン)買った話

事の始まり普段から海外の修理系の動画(ex. https://www.youtube.com/user/mymatevince)をYoutubeで見ているわけですが、よくこのヒートガン(ホットガン?)と呼ばれるツールが登場します。 この道具は主に熱風を当ててソルダリング(リ・ソルダリング?)するものです。 半田ごてとは違って、小手先を対象物に物理的に接触してなくてもはんだを溶解することができるので表面実装部品(SMD)などを剥がしたり、接着することができます。 なので主に修理などで用いられるのですが、私は表面実装ICを取り付けたいことが結構あるのでICの裏面に全面GNDとかあるIC(ESP32)を使う場合に欲しくなりました。 なお、こういった表面実装ICのリフローには、はんだでなくて、はんだクリームを使うはずなのですが、どうも修理動画を見ている限りでは再接着とかであれば溶解したはんだでもいけるっぽいですね。

  • zienchan
    zienchan
秋月のユニバーサル基板(ブレッドボード)のケースを作った
fusion360

秋月のユニバーサル基板(ブレッドボード)のケースを作った

目的 下記のユニバーサル基板がぴったり収まるケースが欲しい ※クリックすると商品ページへ 背景 ESP32とカラーセンサを使ったLED発光検知&通知のおもちゃを作成する際に、 きっちり収まる汎用のケースが欲しくなったため 解決策 3Dプリンタで作成する STLも配布するので必要な方は下記からどうぞ ケースモデル一式(STL) header.stl -> 上部(蓋) body.stl -> 下部(本体) 基板の寸法に互換性があれば、他のものでも使えると思います 仕様 梱包可能サイズ 名前

  • zienchan
    zienchan
Fusion 360で押し出した後の位置を修正したい場合
fusion360

Fusion 360で押し出した後の位置を修正したい場合

目的 Fusion 360で押し出しツールを適用したが、その後に押し出す値を変更したくなった 背景 今回のケースでは3Dプリンタヘッドの最小幅が0.4mmだったのを知らずに厚さ0.35mの壁を作成してしまったため、これを0.4m以上に修正したくなった ※この手前の上部にある凹みを修正したい 解決策 下記のようにパラメータ変更を使用するだけで一度適用した制約を変更することができる メニューの"修正"→"パラメータ変更"を選択 対象の押し出しパラメータを任意の値に修正 とてもよくできている ただ個人的にプロパティはメッシュなどを選択したら表示してくれた方が直感的かな パラメータの概念を一度理解してしまえばもう迷わないとは思う 失敗談 まず真っ先に思い付いた修正方法は、対象メッシュのスケッチ寸法ツールでの移動だった しかし、これを適用しようとすると過剰拘束(

  • zienchan
    zienchan
pythonでzipファイル判定する
python

pythonでzipファイル判定する

目的 pythonでzipファイルか否かをチェックする 環境 python3.6 解決策 判定方法は主に下記の2つになる ファイル名の拡張子からの判定 バイナリファイルのヘッダ(識別子)から判定 ファイル名からの判定は手軽だが、アーカイブ情報を事前チェックする用途には適用出来ないため、はじめからバイナリで判定したほうが後々を考えると都合が良い そのため、ここではバイナリ判定を行うことにした zipfileモジュールを使わなくてもヘッダを読むだけなので、下記でも可能 ただしエラーハンドリングは必要だし、冗長になるので後述のzipfileモジュールを使う方法のが良いと思われる input_file_path = "a.zip" with open(input_

  • zienchan
    zienchan
pythonでpandasからmatplotlibで散布図を作ろうとしたら警告が出る問題の対処
python

pythonでpandasからmatplotlibで散布図を作ろうとしたら警告が出る問題の対処

目的 pandasであるデータの一覧を読み込んでいって散布図的なものを出力するってことを下記のような感じで行った結果、下記のエラーが出力された /home/vm/.local/share/virtualenvs/***/lib/python3.6/site-packages/matplotlib/pyplot.py:514: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface

  • zienchan
    zienchan
ERROR: The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.0 and higher.の修正
android

ERROR: The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.0 and higher.の修正

問題 Anroid Studio 3.2.1を使っていたが更新があるというので3.3へアップデートしたら ERROR: The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.0 and higher. と言われてアーハイハイとgradleファイルのプラグインのバージョンを更新した(つもりだった)がダメだった 対策 build.gradle dependencies

  • zienchan
    zienchan
TensorFlowLiteのJavaインタプリタでハマった話
java

TensorFlowLiteのJavaインタプリタでハマった話

環境 学習はKeras(back-endはTensorFlow)を使用 スマートフォン上のランタイムはTensorFLowLiteを使用 TensorFlow(PBモデル)からTensorFLowLite(FBモデル)へ変換(変換には公式のものを使用) 入力は8bitグレースケールの画像配列、出力はXY座標とした単純な回帰モデル 現象 下記のように8bitグレースケールで入力バッファを用意してXY座標を取得しようとした。 255で割っているのは、正規化しているため。 public synchronized void recognize(byte[] aImageBytes) { for(byte px : aImageBytes) { mInputBuffer.putFloat(px

  • zienchan
    zienchan
Androidアプリにjavascriptエンジン(DuktapeAndroid)を乗せる
android

Androidアプリにjavascriptエンジン(DuktapeAndroid)を乗せる

目的 AndroidアプリにJavascriptエンジンを搭載する 背景 ユーザーがアプリ上の機能を自由に拡張できるような仕組みを作るため 解決策 Java上でJavaScriptを実行(eval)させる方法はいくつかあるが、下記のサイトを参考にDuktape Androidを使うことにした comparison-shopping-searching-for-javascript-engines-for-android duktape-android 基本的には上記の公式に従って導入すれば良い 依存関係の追加 build.gradleの変更 implementation 'com.squareup.duktape:duktape-android:1.3.0' とりあえずjavascriptを実行させる 自分はkotlinで書いているので下記になる Duktape.create().use { x

  • zienchan
    zienchan
[Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name.  Please run mysql_upgradeを何とかする
docker

[Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name. Please run mysql_upgradeを何とかする

環境 mysqlのdockerコンテナ 現象 mysqlイメージをpullしてコンテナへ展開したらいつのまにか下記の警告がわらわら出るようになった 2018-08-28T23:11:54.474791Z 0 [Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name. Please run mysql_upgrade 2018-08-28T23:

  • zienchan
    zienchan
WordPressでテーマ適用時に初期コンテンツを自動的に登録する方法
wordpress

WordPressでテーマ適用時に初期コンテンツを自動的に登録する方法

目的 カスタムテーマを適用すると同時に、必要な固定ページなどを一括で登録する 背景 企業向けサイトを作成するときに、いつでもコンテンツをリセットできるような環境を作りたいから 他の環境に移行するなどしたときでも簡単にセットアップできるようにしたいから 解決策 1. 初期コンテンツの作成 下記のようにテーマディレクトリの下にinitializeディレクトリ配下に初期コンテンツを配置する mytheme/initialize/index.page.html mytheme/initialize/contact.page.html mytheme/initialize/form.wpcf7_contact_form.html ... ここではタイトルとページ情報(固定なのかcontact-formなのか)

  • zienchan
    zienchan
jcodecでお手軽にbitmapをmp4にする
java

jcodecでお手軽にbitmapをmp4にする

目的 BufferdImageに展開されたBitmapをコンテナに追加してmp4動画を作成する 背景 連番PNGや画面キャプチャしたBitmapを動画に変換したい 環境 言語: Kotolin エンコード形式:H264 フレームレート:30FPS 解像度:VGA 解決策 SequenceEncoderを使えば簡単でした メモリ上のBitmapから生成する場合でもBufferedImageのラスタのByteArrayに突っ込んでやるなりしてBufferedImageを作ればそのままいけるはず val tDestinationFile = File("destination.mp4") val tEncoder = SequenceEncoder.create30Fps(tDestinationFile) //とりあえず30枚(1秒)

  • zienchan
    zienchan