2023年の振り返り

2022年の振り返り に引き続き、2023年の簡単な振り返りです。2月も半ばになってしまいましたが…。 競技プログラミング 2023年はAtCoder Algorithmのratedに18回出場。レートは2022年末の1585から2023年末の1443に激減しました。 2023年もほとんど出場できて…

ffmpegに関するメモ

動画を60秒おきに分割(再エンコードなし) ffmpeg -i input.mp4 -c copy -segment_time 60 -f segment -reset_timestamps 1 output_%02d.mp4 参考 - windows 7 - How to split videos with FFmpeg and -segment_times option? - Super User

Plotlyに関するメモ

最近グラフの可視化によく使っているPlotlyに関するちょっとしたメモです。 plotly.expressとplotly.graph_objects plotlyのスクリプト例を検索すると、 import plotly.express as px しているものと import plotly.graph_objects as go しているものの両方…

Windows 11の環境構築

自作PCをRyzen 7 5700Xに更新するの続き。自作PCにインストールしたWindows 11の環境構築をしていきます。 (最終更新 2023-10-09) 最初にやる設定 CapsをCtrlに MS公式のCtrl2Cap v2.0を使って、Capsキーを潰してCtrlキーとして使う 以前のCtrl2capはダウン…

自作PCをRyzen 7 5700Xに更新する

Windows 11 PCの入手計画を立てるの続き。2017年に作成した自作PC(Core i7-7700 + GTX 1070 )を更新してWindows 11を入れ、 2023年でも通用するPCにするまでの記録です。アマゾンアフィリエイトを利用しています。 パーツ選定 CPU 結論を言うとAMDのAMD Ry…

Windows 11 PCの入手計画を立てる

仕事と私生活が忙しすぎて、現実逃避のために新しいPC、具体的にはWindows 11を入手したくなってしまい、 ここ1~2ヶ月ずっと調査をしていました。さっさと買えばいいだけの話なのですが、回り道しすぎでした…。 購入候補1. 中古ノートPCを買う 今、第8世代の…

Ubuntuでのディスク管理について調べたことのメモ

自作PCに入れているUbuntu 20.04.6 LTSのためにあれこれ調べたことのメモです。 接続されている物理デバイスに関する情報を得る 方法1: lsblkコマンド $ lsblk とすると、 sda 8:0 0 489.1G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi └─sda2 8:2 0 488.6G …

WindowsでのHDD初期化に関するメモ

HDDを処分するにあたってデータ初期化の方法について調べたことをメモ。 cipherコマンド 空き容量にあるファイルを復元不能にする機能が提供されている。 例えばDドライブの空き容量にあるファイルを復元不能にするには、CIPHER /W:D: とする。 (参考 ) 参考…

iiyamaのWQHDモニタ XUB2792QSN-B5 を買った

技術的な進捗がないので、最近買ったWQHDモニタの紹介をします。 iiyamaのXUB2792QSN-B5 (Amazonアフィリエイトリンク)です。 購入動機は、2010年頃に買った三菱のRDT271WLMの電源がとうとう入らなくなったことです。モニタ選定に際して考えたことは以下で…

JPEGのEXIFに記録された撮影日時でファイル作成日時を更新するサンプルPythonスクリプト

Windowsにて表題のことをするPythonスクリプトを以下に示します。 os.utime()だとファイルの更新日時、アクセス日時を更新することはできるのですが、 ファイルの作成日時は変更できないところで少し調査が必要でした。 【Python】ファイルとフォルダのタイ…

Google Code Jamのアーカイブサイトまとめ

Google主催の競技プログラミングコンテストであるGoogle Code Jamがついに2023年にcloseしてしまいます。 https://codingcompetitions.withgoogle.com/codejam/faq によると、2023-06-01でサインインが不可になり、2023-07-01にはサイト自体がシャットダウン…

新電力の燃料費調整額を理解していなくて大損した話

新電力の電気代が高騰する原因の一つである「燃料費調整額」のことをよく理解しておらず大損してしまいました。なぜ自分が勘違いしていたのかを後学のために以下に記します。 まず、東京電力は、「自由化前の料金プラン」と「新しい料金プラン」の2種類のプ…

Androidのタッチディスプレイが壊れて詰んだ話

先日、Android機 (Pixel 4a (5G)) を胸辺りの高さから床に落としました。タッチしても反応しなかったので、OSが固まったのかなと思い強制再起動したが変わらず。じきに、落とした衝撃でタッチパネル機能ごと死んだのだと悟りました。 タッチパネルが効かない…

SoftBankからOCNモバイルONEにMNPしたときのメモ

1年強利用したSoftBankの回線をOCNモバイルONEにMNPしたときのメモです。 SoftBankでのプラン SoftBankではスマホデビュープランというプランを利用していました。これは条件を満たすことでしか加入できないプランで、私は他社のガラケーからMNPすることで加…

NumPyでランダム画像を生成

いつも忘れるのでメモ。値域が0以上255以下で、縦がheight, 横がwidthのランダム画像を生成するには np.random.randint(256, size=(height, width, 3)).astype(np.uint8) とします。以下でも同じことです。 np.random.randint(low=0, high=256, size=(height…

2022年の振り返り

今年の簡単な振り返りです。 競技プログラミング 今年はAtCoder Algorithmのratedに24回出場。レートは昨年末の1565から今年末は1585に変動しました。 月に一回くらいしか出てない感覚だったので思ったより出ていて驚きでした。しかしコンテストに出る以外の…

C++のbitsetに関するメモ

競技プログラミングで使いたいと思いつつずっと未履修だったbitsetの使い方を勉強しました。 基本操作 以下ではすべて以下が書かれているものとします。 #include <bitset> #include <iostream> using namespace std; 初期化は、文字列を与えるか、整数を与えるかで行えます。 </iostream></bitset>…

nkfの使い方のメモ

ファイルの文字コードと改行コードを調べる nkf --guessを使います。 $ nkf --guess a.cpp UTF-8 (CRLF) UTF-8 (BOM付)の場合は以下のように表示されます。 $ nkf --guess a.cpp UTF-8 (BOM) (CRLF) 文字コードや改行コードを変換する 例えば改行コードをCRL…

lessとlvの使い方の比較

これまで私はずっとlvというテキストビューワーを癖で使い続けてきました。 lvはShift_JISやeuc_jpのファイルも文字化けなしで閲覧できるメリットがありますが、 最近はそもそもutf-8以外のファイルを扱うことがほぼなくなってきて、このメリットが薄くなっ…

Pythonのインデント系エラーと戦う

Pythonスクリプトを書いてflake8にかけると、インデント量や改行タイミングの微妙な違反によって E125 continuation line with same indent as next logical line E129 visually indented line with same indent as next logical line といったエラーが出ま…

NumPyで2つのベクトル配列に対して順に内積を計算

2つの同型のベクトル配列a, bがあったとします。shapeは、ベクトルの次元をD、ベクトルの数をNとして(N, D)だとします。 0番目からN-1番目まで順に内積を取っていき長さNの結果を得ることを考えます。専用の命令があるのかと思ったらどうやらないようで、 ht…

Pythonスクリプトのテンプレートを考えてみた

Pythonの書き捨てスクリプトを書く速度を上げられるように、Pythonスクリプトのテンプレートを考えてみました。 経験上、どんなスクリプトでも以下を心がけると良いことが多いです。 コードは全部メイン関数の中に入れて、グローバル変数は許容しない 出力は…

bashスクリプトでset -uしているときの unbound variable を回避する

bashスクリプトの定番テクニックで、set -uを冒頭に書いておくことで、未定義の変数をうっかり使った時点でスクリプトを終了させるようにする、というものがあります( 参考 )。しかし、PATHやPYTHONPATHにパスを追加するときに困ることがあります。例えば…

std::setやstd::multisetで末尾の要素を削除する

C++

std::setやstd::multisetで末尾の要素を削除するには、https://www.geeksforgeeks.org/how-to-delete-last-element-from-a-set-in-c/ で紹介されているテクニックを使います。例えばsをstd::setのオブジェクトとした場合、std::prev(s.end()) が末尾の要素を…

NumPyでベクトルの長さを1に正規化

NumPyでベクトルの長さを1に正規化するには、np.linalg.normを使います。 ベクトルの例 例えば、要素数3のベクトルの長さ(より正確には、ユークリッド距離。すなわちL2ノルム)を1に正規化するには以下のようにします。 vec = np.array([3.0, 4.0, 5.0]) un…

random.randint()とnp.random.randint()の定義の違い

Python 3の random.randint() と NumPy の np.random.randint() には次のような微妙だが重大な違いがあります。 random.randint(a, b) a以上b以下の整数を1個選んで返します。以下のコードで、random.randint(3, 7)が3以上7以下の整数をランダムに生成するこ…

NumPyのブロードキャストのルール

NumPyのブロードキャストのルールについて曖昧にしか理解していなかったので調べました。わかってしまえば簡単です。 2つのarrayの間でブロードキャストができるかどうかは、2つのarrayのshapeによってのみ決まります。アルゴリズムは以下です。 もし2つのa…

tensorflow.kerasでMNIST分類器を学習

tensorflowの初心者向けページをもとに、tensorflow.kerasのチュートリアル記事を読みながら、MNISTデータセットでかんたんな分類器を学習するサンプルコードを作成しました。

NumPyのconcatenate(), vstack(), hstack(), dstack(), stack()の違い

NumPyのconcatenate(), vstack(), hstack(), dstack(), stack()の違い について毎回混乱するのでまとめました。 concatenate() 複数のアレイを、既存の軸に沿って結合する関数です。 基本的に、後述するvstack(), hstack(), dstack()の上位互換がconcatenate…

CygwinからWSLに移行するときのメモ

多分15年以上Cygwinを使い続けていますが、いい加減WSLに移行していこうと考えています。以下、CygwinでできていたことをWSLでやるためにはどうすればいいかというメモです。 ExplorerのファイルをDrag & Dropしたときに/mntで始まるパスに自動変換 Cygwinで…