Ideapad S540 14 AMD SSD増設
Ideapad S540 14 AMDでSSD増設成功したので上げときます
(動作を保証するものではありません)
M.2 type2242 NVMeだったら動くっぽい?
この商品、ネジ着いてないので別途用意する必要がありました
https://twitter.com/veleno_jp/status/1561243122742734849?s=20&t=V_uVb8niW_iF0XknISg5Rw
万有引力シミュレーションみたいなやつをC#(WPF)で書いてみた
はてなダイアリーひさしぶり。
ひさしぶりになんかこういうの書きたくなって昔のコードを見ながら書いてみたやつ。
最初はPython/TkInterで書いたかと思ったらProcessingで書いていた。
いまのVisualStudioはGitHubがデフォルトで対応しているからこういう公開するのもすごい楽!
https://github.com/veleno/StarMovingWPF.git
はてなダイアリー、動画張り付けれなかったのでこっちで。 https://t.co/gldkJoSpZ5 pic.twitter.com/VHSYcMHodK
— べれ野 (@veleno_jp) 2022年8月6日
はてなダイアリー、動画できなかったのでTwitterでリプして貼り付けましたww
第10回シンデレラガール総選挙にむけて
前回の総選挙、わたしは自分のボイスアイドルオーディション(以下VIA)票をVIA担当Pさんとの票交換に出しました。
個人の自担当への投票数をあげるという成果をあげることができたので満足しています。
ですが、結果発表時に予想と反することがあったのでその点について分析・考察をしたいと思います。
前回の投票後(結果発表前)の記事が下記
https://veleno.hatenadiary.org/entry/2020/05/16/002508:第9回シンデレラガール総選挙の投票期間を終えて
あくまで個人の予想(前回の)です
■第9回総選挙のときの予想
- CV未実装はトップ5には入らない
- ボイスオーディションのほうが票が散らばる
- LIPPSが強そう、デレステでイベント多い組が+になる?
●CV未実装はトップ5には入らない
この点については言葉通りではあるのですが、予想より総選挙でのCV未実装アイドルが順位を落としていました。やっぱりVIAに集中したほうがいい結果を得られる、となっています。
浅利七海が総選挙では50位以内に入れていますが、VIAでは3位に入れていないため、ボイスの獲得ができていません。
CV未実装アイドルでもVIAに票を集中したほうが良い結果を得られるのではないか、と予想しています。
(票を集中したいので総選挙に集中するのもありな気はします)
●ボイスオーディションのほうが票が散らばる
ここは予想と異なる結果となりました。VIAの結果が3位までしか発表されていないのでその範囲でしか比較はできませんが、3位までの合計を比較します。
総選挙でのトップ北条加蓮、2位鷺沢文香、3位一ノ瀬志希までの得票数が1692万6974票、995万1829票、842万5856票。合計3530万4659票。
VIAでは辻野あかり、砂塚あきら、桐生つかさで2211万9341票、2122万6585票、1348万6437票。合計で5683万2353票。
母数が違うのでVIAの合計に母数の比率(当時のCV未実装アイドル数102/総選挙アイドル数)をかけると3051万0000票。
VIAのトップグループの得票率は総選挙のトップグループの85%ほどを集めているはずです。
もっとばらけた結果になると思っていました。
「96川1000秋プロジェクト」さんの分析を見ても3位以降はある程度団子状になっていることが予想されます。
https://ch.nicovideo.jp/turkey_p/blomaga/ar2000381:黒川千秋のVA133万票可視化は何を見せてくれたのか
昨年度は辻野あかり&砂塚あきらのトップ2が突出していましたが、今年度はトップ3までがVIAから抜けるのでさらに団子状になると思っています。
■第9回総選挙の他のポイント
- 浅利七海が総選挙では50位以内にランクイン(CV未実装アイドルでは最上位)したが、VIAでは入賞できず
- Co属性の躍進&Cu属性Pa属性の後退
●浅利七海の両名が総選挙では50位以内にランクイン(CV未実装アイドルでは最上位)したが、VIAでは入賞できず
総選挙では50位以内にランクインしたがVIAでは入賞できない、という現象が発生しました。
今回もCV実装のみに目的を絞るのならVIAに票を集中したほうが絶対有利、と予想しています。
■第9回総選挙以降のポイント
●CVのサプライズ実装が行われなかった。
第9回総選挙&VIA以降、CVのサプライズ実装(VIA選出以外のCV実装)がありません。
この状況がずっと続くとは思えないのですが、CVの実装タイミングをVIAにある程度まかせる、という運営の意図があるのかもしれません。なんとも。
■第10回シンデレラガール総選挙の予想
(ほんと個人的な直感レベルの予想なのでなにかのあてにはしないでください。あとレギュレーションで変わるかも)
●総選挙ではCo属性が躍進する。前回と変わらないレベルになると思う。
属性の変化はデレステ票の増加による好みの差が出たと思っています。デレステとモバマスで同じ票が得られるなら同様の傾向が続く予想です。
●VIAは前回発表分がまるまる抜けるのでほとんど予想不能
前回総選挙では浅利七海が50位以内、前々回以前では松本沙理奈、八神マキノ、今井加奈、西園寺琴歌、池袋晶葉が50位以内ですが、予想の根拠にはしづらいですね…。
実際前回はその前に全く圏外だった辻野あかり、砂塚あきら、桐生つかさがVIAで上位だったので、今回も予想外のところから来るとは思っています。
前回で新キャラ枠全員にCVが実装されたので今回以降のほうがどこから来るのかわからない感はあります。
C言語の構造体を書き込んだファイルをビッグエンディアンからリトルエンディアンにPythonで変換する
Perlでも書いたんだけど、Pythonのほうが綺麗に書けたのでPythonで書いたやつを。
*1
C言語の構造体をそのまま書き込んだバイナリファイルがあるんだけど、ビッグエンディアンからリトルエンディアンに直したい。
構造体の定義はわかっているとする。
コンバートモジュール
構造体のフィールド、入力ファイル名、出力ファイル名とエンディアンのフラグを受け取って、入力ファイルから指定エンディアンのバイナリデータを読み込んで、逆で出力ファイルに書き込む。
やっていることは
- 構造体のもとになるクラスの動的定義
- そのインスタンス生成
- 入力ファイルをバイナリでオープン
- 入力の構造体に読込み
- 入力構造体から出力構造体にフィールドをコピー
- 出力ファイルをバイナリでオープン
- 室力ファイルに出力構造体を書込み
#!/usr/bin/env python3 import ctypes ## エンディアン変換 ## fields :構造体のメンバ変数定義 ## fileNameIn :入力ファイル名 ## fileNameOut :出力ファイル名 ## flg :0:ビッグエンディアン>リトルエンディアン ## 1:リトルエンディアン>ビッグエンディアン def convertEndian(fields,fileNameIn,fileNameOut,flg): intype = ctypes.LittleEndianStructure if flg else ctypes.BigEndianStructure outtype = ctypes.BigEndianStructure if flg else ctypes.LittleEndianStructure StructIn = type('StructIn', (intype,), {'_fields_':fields}) StructOut = type('StructOut', (outtype,), {'_fields_':fields}) tIn = StructIn() tOut = StructOut() with open(fileNameIn, 'rb') as f: f.readinto(tIn) for item in tIn._fields_: setattr(tOut, item[0], getattr(tIn, item[0])) with open(fileNameOut, 'wb') as f: f.write(tOut) ## リトルエンディアン→ビッグエンディアン変換 ## fields :構造体のメンバ変数定義 ## fileNameIn :入力ファイル名 ## fileNameOut :出力ファイル名 def convertLittleToBig(fields,fileNameIn,fileNameOut): "リトルエンディアン→ビッグエンディアン変換" convertEndian(fields, fileNameIn, fileNameOut, 1) ## ビッグエンディアン→リトルエンディアン変換 ## fields :構造体のメンバ変数定義 ## fileNameIn :入力ファイル名 ## fileNameOut :出力ファイル名 def convertBigToLittle(fields,fileNameIn,fileNameOut): "ビッグエンディアン→リトルエンディアン変換" convertEndian(fields, fileNameIn, fileNameOut, 0)
呼び出しサンプル
構造体のメンバ変数を定義してコンバートメソッドを呼び出す
#!/usr/bin/env python3 import ctypes from endianConvertHelp import * """ /*** C言語の構造体定義 ***/ typedef struct __TEST{ int n1; int n2; int n3; char text[16]; }TEST_STRUCT; """ ## C言語の構造体のメンバ変数を定義する fields = ( ('n1', ctypes.c_int32), ('n2', ctypes.c_int32), ('n3', ctypes.c_int32), ('text', ctypes.c_char*16), ) ## リトルエンディアン→ビッグエンディアン変換メソッド # convertLittleToBig(fields, ## メンバ定義 # 'test.dat', ## 入力ファイル名 # 'test.dat.py.big') ## 出力ファイル名 ## ビッグエンディアン→リトルエンディアン変換メソッド convertBigToLittle(fields, ## メンバ定義 'test.dat.py.big', ## 入力ファイル名 'test.dat.py.ltl') ## 出力ファイル名
C言語の構造体のデータをPerlから操作したい。
C言語の構造体のデータをPerlから操作したい。
C言語の構造体のデータをバイナリのままファイルに吐き出して、Perlで読み書きしてからそのファイルを構造体に戻す。
元の構造体のヘッダ
typedef struct __TEST_STRUCT{ int n1, n2, n3; char txt[16]; } TEST_STRUCT;
構造体のデータをファイルに書き出すC言語のコード
#include <stdio.h> #include <string.h> #include "test.h" int main(int argc, char** argv){ TEST_STRUCT test; memset(&test, 0, sizeof(test)); test.n1 = 1; test.n2 = 0x12345678; test.n3 = -1; snprintf(&test.txt[0], sizeof(test.txt), "hello,world.\n"); FILE* fp = fopen("test.dat", "wb"); if(!fp){ return 0; } fwrite(&test, sizeof(test), 1, fp); fclose(fp); }
バイナリファイルを読み出すPerlのコード
#!/usr/bin/perl -w use strict; eval{ main(@ARGV); }; print $@ if $@; sub main{ open my $f, '<', 'test.dat' or die "can't open test.dat."; binmode $f; my $sz = read $f, my $buf, 28; print "$sz\n"; my ($n1,$n2,$n3,$txt) = unpack "lllZ16", $buf; print "$n1,$n2,$n3,$txt\n"; }
バイナリファイルに書き出すPerlのコード
#!/usr/bin/perl -w use strict; eval{ main(@ARGV); }; print $@ if $@; sub main{ open my $f, '<', 'test.dat' or die "can't open test.dat."; binmode $f; my $sz = read $f, my $buf, 28; print "$sz\n"; my ($n1,$n2,$n3,$txt) = unpack "lllZ16", $buf; print "$n1,$n2,$n3,$txt\n"; }
ファイルに書き出された構造体のデータを読み出すC言語のコード
#include <stdio.h> #include <string.h> #include "test.h" int main(int argc, char** argv){ TEST_STRUCT test; memset(&test, 0, sizeof(test)); FILE* fp = fopen("test.dat", "rb"); if(!fp){ return 0; } fread(&test, sizeof(test), 1, fp); fclose(fp); printf( "n1:%d\n" "n2:%d\n" "n3:%d\n" "txt:%s\n", test.n1, test.n2, test.n3, test.txt ); }
WSL2のEmacsでクリップボードを切ったり貼ったりできた
参考にしたのは下のサイト。
Emacs on WSLのクリップボード
clip.exeだとクリップボードを取得できなさそうなのでwin32yank.exeを下記からダウンロードして、パスの通ったところに適当において、
Releases · equalsraf/win32yank · GitHub
下記のように.emacsに書いておくと、C-c C-cでコピー、C-c C-vでペーストできるようになりました。
(defun wsl-copy (start end) (interactive "r") (shell-command-on-region start end "win32yank.exe -i")) (global-set-key (kbd "C-c C-c") 'wsl-copy) (defun wsl-paste () (interactive) (insert (shell-command-to-string "win32yank.exe -o"))) (global-set-key (kbd "C-c C-v") 'wsl-paste)
残念なことにkill-ringと同期できたりはしていません…。
レシピ
最近便利だったレシピ
繊維質を取りたいのに取れなかったときの夜食。お手軽に野菜を取るやつ。
oceans-nadia.com
茄子が余った時の。揚げびたしが大変だなー、ともって揚げないでいいやつにしたんだけど煮込みすぎて結局きれいにならなかった。
www.sirogohan.com