あきらぼ

テック系ブログ

スマホでCADもできる時代【Onshape】

今回はスマホで設計できるCADソフトOnshapeを使ってみました。

 

Solidworks、CATIA、Autodeskなど色々使ってきましたが今回は初めてのスマホです。

 

今回は3Dプリンタでわざわざ作る必要もない簡単なスペーサ(ただの直方体)やネコポスのサイズ判定定規を作ってみました。

 

アプリはAppStoreからインストールしてすぐに使えます。

個人利用であれば全設計が公開されることにはなりますが、無料で使えます。

 

早速使ってみました。


f:id:AKIRA_san:20240511234935p:image

f:id:AKIRA_san:20240511234932p:image

 

スマホで閲覧できるCADは結構あるのですが、寸法入れたりモデリングできるCADはだいぶ少ない気がします。

 

実際スマホで使えることによって通勤電車やベッドに入っても設計することができます。

 

指でダイレクトにグリグリ動かせる部分は面白いです。

指でタッチだとスナップポイントが定めずらい感じはしますが。

タブレットとかならもうちょっと使いやすいかも。

 

そして3Dプリンタ用にSTLなどでエクスポートするにはPCからOnshapeのwebページに行くとブラウザ上で同じようにCADが使えるのでモデルの3Dを編集画面上で右クリックしてエクスポートすればSTLなどがダウンロードできます。

 

WebGLなどの普及による効果でしょうが、Webブラウザ上でCADが動くなんて昔だったら考えられませんね。

 

あとはいつも通りのCAMソフトに入れて3Dプリンタで印刷するだけです。

 

f:id:AKIRA_san:20240511235530j:image
f:id:AKIRA_san:20240511235533j:image

 

今回のスペーサーはクローゼットドアハンガーの幅を合わせて扉が閉まらなくなるの防ぐためのものでした。


f:id:AKIRA_san:20240511235630j:image

f:id:AKIRA_san:20240511235628j:image

f:id:AKIRA_san:20240511235633j:image

 

これからは通勤電車やベッドでくつろぎながらスマホで趣味の設計をしてみてはいかがでしょうか。

【Ubuntu】PalWorld専用サーバーのアップデート方法

PalWorldの専用サーバーのアップデート方法を忘れないように備忘録として記載しようと思います。

 

私の場合はPalWorldをSystemctlのサービス化しているのでまず状態を確認します。

サービス名はpal_worldで登録しています。

sudo systemctl status pal_world

 

Steamゲームのサービス化はARKですが、以下にやり方をまとめているので参考までに。(自動再起動や停止・再開が簡単なのでTOPなどでタスク確認してkillするよりずっと簡単でログ等も取れてお勧めです。)

 

aki-lab.hatenadiary.com

 

恐らく、Activeの状態だと思うので、サービスを一旦停止します。

(他の人がプレイしていたらサーバーから追い出されてしまうので注意です。)

sudo systemctl stop pal_world

 

これでサービスが停止されるので、この状態でSteamCMDがインストールされているディレクトリまで移動してsteamcmdを起動します。

./steamcmd.sh

あとはSteamCMD内でアップデートをしていきます。

PAL WorldのAppIDは2394010になります。

なので、以下のコマンドでアップデートすることができます。

login anonymoous
app_update 2394010 validate

もしDefaultのインストール先にインストールしていない場合は以下のコマンドでインストール先の指定をapp_updateの前に行う必要があります。

force_install_dir (インストールしているPath)

デフォルトでインストールしている場合は

/Steam/steamapps/common/PalServer/

にインストールされているはずです。

 

そしてアップデートが完了したらサービスの再起動です。

sudo systemctl restart pal_world

 

これでアップデート完了です。

Ankerポータブル電源を簡易UPSとして使ってみる

先日、修理したAnkerのポータブルバッテリーですが予定通り簡易UPSとして2カ月ほど使ってみました。

 

修理の記事はこちら。

aki-lab.hatenadiary.com

 

 

 

背景

今回なぜ簡易UPSとして使おうかと思った理由は、インターネットモデムとルーターの電源です。

私の家はブレーカー容量が小さく、冬場なんかにちょっと油断するとすぐブレーカーが落ちてしまいます。

ブレーカ自体はすぐに自動復帰してくれるのですが、インターネットが復帰してくれません。

OCNバーチャルコネクトでインターネットにつないでいるのですが、一旦ルーターの電源が落ちて接続が切れると、自動で復帰してくれません。

わざわざ動作の遅いルーターにブラウザ上からアクセスして再設定する必要があります。

色々IoT化しているのでインターネットが使えないと部屋の電気すらつけることができないので、かなり不便です。

 

ということでルーターとモデムを簡易UPSにつなぐことにします。

 

簡易UPS設置

ということで設置していきます。

とはいってもただコンセントを繋ぐ先をAnkerのポータブル電源にするだけです。

数分で完了です。

 

あとはインターネットを再設定すれば完了です。

 

2カ月使ってみて

実際に2カ月使ってみました。

何度かブレーカーを落としてしまうことがありましたが、期待通りUPSとして作動してくれました。インターネットも落ちずに快適です。

 

特にバッテリー残量は99%と100%を行き来するだけで特に問題ありません。

 

期待通りに動作してくれたことに加えて、このポータブル電源はUSB電源が4口あるのですが、普通にUSB電源としても使えてかなり便利です。

 

以上、Ankerポータブル電源の簡易UPS化でした。

 

 

 

PowerPointでmp4動画が真っ黒になって「メディアを再生できません」と表示される。

PowerPointにMP4の動画を張り付けたところ、なぜか張り付けた動画が真っ黒になってしまい「メディアが再生できません」とエラーが表示されてしました。

 

結論から言うと、動画はH264のコーデックの正しいMP4動画なのですが、パワーポイントがYUV422pというMP4のピクセルフォーマットをサポートしていないのが原因でした。

 

 

 

 

詳細説明

詳細について説明すると、上記の図の張り付けられている動画はどちらもMP4の動画になります。

詳細のコーデック等をffprobeで確認してみます。

再生できるMP4動画の詳細がこちら。

MP4でH264のコーデックではあるのですが、ピクセルフォーマットがyuv420pとなっています。

 

そして再生できないMP4動画の詳細がこちら。

ピクセルフォーマットだけがyuv420pとなっています。

 

これがパワポで表示できない原因になります。

 

対策

原因は分かったので、パワポで表示させるようにするにはピクセルフォーマットだけ変更してあげればよいです。

 

ffmpegを使用すれば以下のコマンドで変更が可能です。

 

ffmpeg -i 入力ファイル名 -pix_fmt yuv420p 出力ファイル名

 

ほんの少しの画質劣化はあるとは思いますが、パワポで使うような動画でこの差が気になることは無いと思います。

 

YUV420pとYUV422pの違い

 

YUV420pとYUV422pは、ビデオデータの色情報のサンプリング方法における違いがあります。具体的な違いを以下に示します:

  1. サンプリングの方法:

    • YUV420p: Yコンポーネント(輝度)はフル解像度でサンプリングされ、UとVの色差信号は水平および垂直方向のピクセルごとに1/4の解像度でサンプリングされます。
    • YUV422p: Yコンポーネントはフル解像度でサンプリングされ、UとVの色差信号は水平方向のピクセルごとに1/2の解像度でサンプリングされます。
  2. 色情報の量:

    • YUV420p: 色差信号が低い解像度でサンプリングされるため、色情報が少なく、データ量が少なくなります。
    • YUV422p: 色差信号が水平方向のピクセルごとにサンプリングされるため、より多くの色情報が含まれます。
  3. 画質とファイルサイズ:

    • YUV420p: 色情報のサンプリングが低いため、画質が若干劣化することがありますが、通常の視聴条件では目立たないことが多いです。また、ファイルサイズが比較的小さくなります。
    • YUV422p: 色情報が多いため、色の変化が多い場面では画質の向上が見られることがありますが、ファイルサイズが増加します。
  4. 適用領域:

    • YUV420pは一般的に動画配信や一般的なビデオコーディングに使用されます。
    • YUV422pはビデオ編集やプロフェッショナルなビデオプロダクションなど、高品質な色情報が必要な場面で使用されることがあります。

これらの違いは、ビデオの品質やデータ量、および使用されるコンテキストに影響を与えます。

 

YUV420やYUV422の数字部分は、色情報のサンプリング方法を示しています。

  1. YUV420:

    • "4"は、色差信号のサンプリングがY(輝度)コンポーネントの解像度に比べて水平方向に2倍、垂直方向に2倍の解像度でサンプリングされることを示しています。つまり、水平および垂直方向に1/4の解像度でサンプリングされることを意味します。
  2. YUV422:

    • "2"は、色差信号のサンプリングがY(輝度)コンポーネントの解像度に比べて水平方向に2倍の解像度でサンプリングされることを示しています。つまり、水平方向に1/2の解像度でサンプリングされることを意味します。

iPhoneの写真をheicファイルからjpegファイルにpython で変換する

またやってしまいました。

 

今までWindowsユーザーの私はiphone のデフォルト設定であるheicフォーマットの写真を扱いづらいのでjpeg保存にしていたのですが、iPhoneを買い替えた際に元の設定に戻ってしまっていました。

 

heicは圧縮率が高いので便利な面もありますが、こうやってブログを書いたりする際にWindowsPCで読み込んだり加工しづらく困ってしまいます。

すでに写真はheicのままAmazonPhotoにアップロードされてしまっているし。

 

 

 

そこで今回はpythonでheicからjpegへ変換するスクリプトを書いてみました。

 

変換で使用するパッケージはpillow_heifです。

以下のコマンドでインストールします。

sudo pip install pillow_heif

windowsなら

python -m pip install pillow_heif

 

あとはChatGPTさんに協力してもらいながらスクリプトを書きます。

GPTさん優秀なプロンプトエンジニアなので、適切に指示すれば綺麗に作ってくれます。

 

 

あとは入力にheicファイルが保存されているディレクトリと変換したファイルを保存したいディレクトリを指定して使用します。

python heic_jpeg_converter.py -i input_directory -o output_directory

実際の例はこんな感じ。

python heic_jpeg_converter.py -i path/to/heic_files -o path/to/output_directory

 

とりあえず、これで変換してブログ用の画像等を変換して使いました。

 

今回作成したスクリプトはこちら。

github.com

Ankerのポータブル電源修理

壊れて動かなくなったというAnkerのポータブル電源を手に入れたので修理できるか試してみます。

 

f:id:AKIRA_san:20240229092133j:image

 

症状としては充電ケーブルを接続しても何も表示がされず、USBや12V、100Vの出力ボタンを押しても何も反応しません。

 

とりあえずネットで調べてるみると分解修理している人がいたので参考にしながら分解していきます。

https://mazu-bunkai.com/bunkai-wp/repair/12640/

 

まず、本体側面のビスを外して、底面のゴム足の裏にあるビスをはずします。

このゴム足が接着剤固定なので硬く、スイスツールのピッキングツール使っていたら折れてしまいました(泣)


f:id:AKIRA_san:20240229092749j:image

f:id:AKIRA_san:20240229092753j:image

 

そしてビスを外せば背面と前面のパネルははまっているだけなので隙間を作って引っ張り出せば取り外せます。

 

しかし、この爪ではまっているだけのパネルが固いのなんの。

一応バッテリーで万が一にもショートさせたり破損させらればいのでスマホ分解用の工具用を使っていたのですが、ものの見事に破棄しまくりました。

(バッテリーは酸化剤も燃料も入っているので燃えてしまったら燃え尽きるまで待つしかできませんからね。家での作業なら尚更注意が必要です。)

 

なんとか背面パネルを外しました。

f:id:AKIRA_san:20240229092456j:image

 

(最後までやってから気づいたのですが、おそらく背面は外さなくても良かった)

 

次に前面も同じように外していきます。背面よりも液晶があったりボタンがあったりで力は入れづらくやりづらかったです。

 

次に基板固定のビスを外してケーブルを外すと参考にしていたサイトではやっていたのですが、組み順的には基板は後にやっても良さそうです。

パネル外側のビスを全て外すと中身ごと手前に引き出せます。

 

f:id:AKIRA_san:20240229093412j:image

 

そうすると前面パネルと繋がっているケーブルコネクタが外せるので外してサイドにあるキボシのバッテリー接続を外します。

 

電源容量も大きいので万が一にもショートできないので一個ずつ取り外してテープで絶縁してを繰り返して安全にバッテリーと基板を切り離します。

 

これで基板本体で故障チェックができます。

1番怪しい充電コネクタの導通を確認しましたが、問題ありませんでした。

不思議に思ってとりあえず基板だけで充電ケーブルを繋いでみると液晶が正しく表示されています。

「あれ?症状が変わった?」と思いバッテリーのキボシも取り付けて仮組して充電ケーブルを接続してみると問題なくバッテリー残量も表示されました。

 

「なんでかは分からないが分解してみたら治ってしまったので逆の手順で組み付けていきます。

 

f:id:AKIRA_san:20240301170815j:image

 

問題なく出力も含めて作動するようになりました。

 

ということでただ分解して組んだだけで症状がなくなってしまったので、修理完了です。

 

足ゴムを接着剤でつけて作業完了です。

 

用途は簡易UPSとして使用していこうと思います。

 

Streamlitで部屋の温度・湿度モニターの可視化ボード作成

こんにちは。

 

今回はStreamlitを使って以前作った部屋の温湿度モニターの可視化ボードを作ってみました。

以前はChart.jsを使ってグラフ化していたのですが、Streamlitを使うと簡単にもっとInteractiveな表示ができそうなので試してみた次第です。

 

前回Chat.jsを使った際の記事はこちら。

 

aki-lab.hatenadiary.com

 

Streamlitとは?

Streamlitとはpythonのwebフレームワークで、データ解析に特化したフレームワークになります。

Pandasなどと相性がよく、データサイエンスやAIのフィールドでよく利用されているようです。

実際、私も仕事で解析のスクリプト組んだとしても結果の共有に悩む場面が多いですが、こういったWEBで表示できると共有先の環境に合わせる必要がなく便利というわけです。

 

streamlit.io

 

実際、使用してみた感じでもWEB上で細かくデータも見ることができるのでとても便利です。

一時解析ぐらいできてしまうぐらいインタラクティブに動かせるのも魅力です。

実際のサンプルサイト

今回使った実際のサンプルサイトはこちらになります。

JSON形式のデータを読み込んで表示しています。

https://aki-r-streamlit-sample-app-gkayym.streamlit.app/

 

まずはLineグラフに関して。

SreamlitのAPIにも線グラフのAPIはありますが、Plotlyと組み合わせられるのでグラフはPlotlyで表示しています。

Plotlyの方がカスタマイズ性が高いです。

実際見てもらうとドラッグ、ズームも簡単でPNGで出力もできます。

 

以前使っていたChart.jsよりもグリグリと動かせるので使い勝手がとても良いです。

 

次にPandasのデータフレーム表示に関して。

データフレームを簡単に表示できるだけでなく、変数名のところをクリックすることで簡単にソートできてしまいます。

これだけで簡単な一時解析できるぐらいの便利さです。

 

こんな形で、データ表示としては強力なGUIを作ることができます。

 

実装コード

今回上記のサンプルを作成したのは以下のコードです。

GUIアプリですが、この程度であれば非同期やコールバックを考えずにそこそこ実装できます。

 

 

公開はサーバーであればstreamlitをpipでインストールして実行するだけ。

今回添付したサンプルはstreamlitの機能でgithub連携で公開していてデプロイも楽ちんです。

 

今回のコードはこちらです。

github.com

 

以上、Streamlitでの可視化ダッシュボード作成でした。