travis-ci.orgでCIを動かしていたリポジトリをtravis-ci.comに移行

久々にtravis-ci.orgにアクセスしたら "Since June 15th, 2021, the building on travis-ci.org is ceased. Please use travis-ci.com from now on." とメッセージが出たので、慌ててtravis-ci.comに移行したときのメモ。あとから思い出しながら書いたので抜…

Python 3のsubprocess.run()の使い方

Python 3で外部コマンドを呼ぶにはsubprocessモジュールで提供されているrun()を使うことが推奨されるのですが、毎回使い方を調べてしまっているので自分用にまとめます。順を追っていかないと引数の意味を理解しづらいところがあるので、冗長ですが簡単な例…

Python 3で現在の日時を表示

毎回調べてしまっているのでメモ。 import datetime now = datetime.datetime.now() print(now) で 2021-05-31 21:10:18.332820 というふうに表示できるのだけれど、個人的には秒までで十分なことが多いので、以下のようにするのが多いです。 import datetim…

Python 3のunittestを使い始めるためのメモ

Pythonのunittestをちゃんと使ったことがなかったので、使い方について調べてまとめました。Windows 10のAnaconda Python 3.8.5で動作確認しています。 もっとも小さな例 被テストコードとテストコードとを同一のスクリプトに記述した小さな例を以下に示しま…

matplotlibでグラフを保存するときのテンプレート

サーバにてmatplotlibを使ってグラフを作成し、ファイルに保存することがよくあるのですが、実装するたびにググりまくって非効率なので、私が高確率で使う機能をテンプレ化しました。 さっそくコードを以下に示します。 import matplotlib import matplotlib…

std::vectorのresizeとassignの違い (C++)

C++

恥ずかしながらC++のvectorのassign(n, val)という関数を知らなかったのでメモです。 よく似た関数に、resize(n, val)という関数があります。以下のコードで挙動を比較してみます。 #include <iostream> #include <vector> void print_vector(const std::vector<int> &vec) { for (a</int></vector></iostream>…

PowerShellのTab補完をbashのようにする

Windows PowerShell (この記事の執筆時点でバージョンは5.1) でTabキーを押したときの補完方法をbashのようにする方法について調べました。 デフォルトでの補完方法 まず、デフォルトでのWindows PowerShellの補完方法について説明します。例として、2021010…

PowerShellからAnaconda Pythonの仮想環境を使えるようにしたときのメモ

PowerShellにてAnaconda Pythonの仮想環境をactivateしようとしてactivate (仮想環境名)というコマンドを実行しても何も起こりません。これを修正しようとしたときにやったことのメモです。注:私はAnaconda PythonにもPowerShellにも精通していないため、こ…

Visual Studio Codeのショートカットキー集

普段使わなくて覚えられないものを使いこなせるようになるようメモ書き。Windowsで動作確認しています。Ctrl / Shift / Altのコンビネーションが複雑で覚えるのが大変です… カーソル移動 Ctrl + Enter: カーソルがどこにあっても、カーソルの下に空白行を作…

Python 3のsqlite3モジュールでSQLiteの練習

Python 3の標準ライブラリであるsqlite3を使って、SQLite と呼ばれるデータベースを触ってみるメモです。 基本 テーブルを作成 以下のコードでは、都道府県のデータを格納するprefecturesという名前のテーブルを定義します。このテーブルは、name(都道府県名…

TensorFlow / Kerasにおけるlogitsの意味

TensorFlowやKerasを使うと遭遇する logits という用語、ざっと検索してもすぐに意味が出てこなかったので書いておきます。なお、この用語は複数の意味を持つ単語なので注意願います。この記事ではあくまで TensorFlow / Keras でのlogitsの意味を説明してい…

Pythonのexceptionをprint()して何も出ない原因

Python 3にて以下のように例外オブジェクトをprint()するコード try: raise ValueError except Exception as e: print(e) を実行しても、以下のように何も出力されません。 結論からいうと、上記のコードを以下のように修正すると try: raise ValueError('va…

Visual Studio Codeの基本設定

共有設定を使う場合 2020年3月頃からプレビュー機能として提供されている、設定を共有する機能を有効にすることで、複数のマシンでVSCodeの設定を共有できます。参考: 「Visual Studio Code」が設定の同期に対応、Insider版でテスト中 - 窓の杜 左下の歯車…

VS CodeでPython 3の競プロコードをデバッグ実行

AtCoderやCodeforcesなどの競技プログラミングサイトでは、通常、標準入力から入力を受け取ります。例えばPythonで回答する場合、あなたの回答(例としてsolve.pyとします)は、入力が書かれたテキストファイルinput.txtが $ python solve.py < input.txt の…

ios_base::sync_with_stdio(false); cin.tie(0); の意味

競技プログラミングでC++を使うときに、入出力を高速化する目的でおまじないのように書かれる ios_base::sync_with_stdio(false); cin.tie(0); の意味、実はよくわかっていなかったので c++ - Significance of ios_base::sync_with_stdio(false); cin.tie(NU…

Oversized Pancake Choppers の解説

Google Code Jam 2020 Round 1Cの最終問題であるOversized Pancake Choppersの解説です。 この問題はTest Set1から3の3つから構成されます。本番ではTest Set 1のみ解けました。この記事ではTest Set2とTest Set3について解説します。 問題概要 N個のパンケ…

Codeforces Round #641 Orac and Mediansの解説

約1年ぶりにCodeforcesに出場しました。Div. 2の4問目、Orac and Medians が解けそうで解けませんでした。終了後、解説を読みながら考えをまとめました。 問題概要 数列が与えられる。この数列の任意区間を選び、その区間のすべての値を、その区間の中央値で…

Google Kickstart 2020 Round 1B - Wandering Robot の解説

Google Kickstart 2020 Round 1Bの最後の問題、Wandering Robot についてやっと理解できたので解説を書きます。 問題概要 W*Hの盤面が与えられる。盤面には ある矩形1つ分の穴が空いている。ロボットは左上の(1, 1)を出発し、等確率で右か下に移動する。た…

Dockerfileでkeras環境を作成する練習

Docker ImageからContainerを作るコマンドのまとめ - minus9d's diary の続きです。今回はKeras環境を備えるDocker Imageを作成する練習をしてみました。普通であればTensorflow公式のDocker Imageを使うのが正しいと思いますが、練習なので気にしないことに…

Python3でエラー発生時にデバッガを起動する

Python3のスクリプトを数時間動かしたあとにエラーで落ちるという経験はないでしょうか。エラーが発生したら pdb と呼ばれるデバッガが起動するようにしておくと、エラーの究明に役立ちます。 例えば、以下のような script.py があったとします。 def main()…

LinuxでGPUの情報を取得する

LinuxでGPUの情報を取得する方法を調べました。以下の表示例およびコマンド例は、すべてUbuntu 18.04 + GTX 1070という環境で試しました。OSによって差異があるかもしれません。 1. lspciを使う lspciは、PCIデバイスのリストを表示するコマンドです。以下の…

Docker ImageからContainerを作るコマンドのまとめ

いまさらながらDockerの使い方を勉強中です。この記事では、Dockerを使うための環境構築方法と、誰かが作成したDocker ImageをもとにDocker Containerを作成して動かす方法についてまとめます。 環境構築 以下ではUbuntu 18.04にDocker Community Editionを…

Ubuntu 18.04でsleepする方法

Ubuntu 18.04でsleepする方法は以下のとおりです。なお、正しくは"sleep"ではなく"suspend”というそうです。 Winキーを押す "sleep" または "suspend" とキーボードに打ち込む 途中で「サスペンド」というアイコンが出てくるので、選択する

Santa's Workshop Tour 2019 参加記

10日前まで開催されていたKaggleのSanta's Workshop Tour 2019に参加していました。結果は1620チーム中の142位。Kaggleで初めてのメダルであるブロンズメダルを獲得できました。最適化系のコンテストなのに問題のサイズが小さく、コンテストの序盤から最適解…

Windows Subsystem for Linux (WSL) でscreenを動かす

wsl

現象 Windows Subsystem for Linux (WSL) で動かしているUbuntu 16.04にてscreenを動かそうとすると以下のエラーが出ました。 $ screen Cannot make directory '/var/run/screen': 許可がありません 解決策1 (推奨) screenが使用するディレクトリを環境変数…

Windows Subsystem for Linux (WSL) のホームディレクトリの場所

wsl

Windows 10で導入されたWindows Subsystem for Linux (WSL) を使ってインストールしたLinuxのホームディレクトリの場所を調べるには、コンソールでホームディレクトリに移動したあと $ explorer.exe . とすればよいです。 WSLで導入しているUbuntu 16.04から…

robocopyの使い方メモ

robocopyというコマンドを使って、Windowsでタイムスタンプを保持してフォルダまるごとコピーするときの自分用メモです。 基本的な使い方 基本コマンドは以下の通り。(src)と(dst)にはそれぞれコピー元フォルダ、コピー先フォルダを入れてください。 robocop…

wgetでsegmentation faultが出たときの対症療法

wgetで2.4GBほどある大きなファイルを取得しようとしたとき、以下のようにsegmentation fault (core dumped)が出ました。 $ wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run (略) HT…

flake8を使いこなす

Pythonのコード改善のためのツール5つを試してみた - minus9d's diary の中で個人的にもっともよさそうだと感じたflake8について、使い方を詳しく調べました。 インストール $ pip install flake8 バージョンとプラグインの確認 $ flake8 --version すると、…

Ubuntu 18.04の設定メモ

Ubuntu 18.04をクリーンインストールしようとしてはまる - minus9d's diary の続き。日本語 Remixを使わずにUbuntu 18.04をインストールした場合における設定メモです。 基本設定 Caps Lockキーを潰してCtrlキーとして使う GUIで行うために $ sudo apt insta…