読者です 読者をやめる 読者になる 読者になる

100 numpy exercisesの解説 1~50

NumPyでよく使うテクニックが網羅されたnumpy-100/100 Numpy exercises.ipynb at master · rougier/numpy-100 · GitHubを一通りやってみました。以下はその途中で調べたメモ書きです。断らない限り64bit Python 3.6 + numpy 1.11で試しています。 問題数が多…

Pythonのitertoolsでできる全列挙のまとめ

Pythonのitertoolsモジュールには、イテレーションに関する便利関数が多数用意されています。この記事では、その中でも競技プログラミングで全列挙に使える関数についてまとめます。Python 2.x, 3.xのどちらでも使えます。 Google Code JamのSmallでは全列挙…

kaggleの練習コンペDogs vs. Catsに出場

Kaggleで開催されていた練習用コンテスト Dogs vs. Cats Redux: Kernels Edition | Kaggle に参加しました。このコンテストでは、画像の中に犬または猫のどちらが映っているかを識別する識別器を学習し、その性能を競います。通常では犬か猫かの2値で答える…

自作PCにUbuntu 16.10をインストール

Core i7 7700 + GTX 1070 なPCを自作 - minus9d’s diary の続き。自作したPCにUbuntu 16.10をインストールしました。初物ハードウェアということでインストールがうまくいくか不安で、実際トラブルもありましたが、今のところ順調に動いています。 USBメディ…

Core i7 7700 + GTX 1070 なPCを自作

2010年に購入し、パーツを継ぎ足しつつ愛用していたDellのXPS 8100。もはやベンチマークの比較対象にならなくなったCore i7の第一世代を積んだPCで、ちょっとした開発程度なら問題はないものの、本格的な開発をするには限界を感じ始めたため、一念発起してPC…

windows 10 + cuda + chainer で corecrt.h が見つからない問題

Windowsに正式対応していないchainerをwindowsで動かす際のエラーについてメモします。 環境 Windows 10 64bit cuda 8.0 (cudnnは未導入) Python 3.5.1 64bit (Anaconda Pythonを利用) chainer 1.20.0.1 Visual Studio Community 2015 現象 GPUを利用するcha…

pythonのsplit関数を使って空白文字で分割するときの注意点

pythonのsplit関数を使うと、文字列をある文字で分割することができます。 例えば、カンマで文字列を分割するには以下のようにします。 s = "a,b,c" print(s.split(',')) # ['a', 'b', 'c'] s.split()とs.split(' ')は同じ出力となると勘違いしていましたが…

multiset, multimapを使うにはset, mapをinclude

C++

しょうもないネタですが他にもハマる人がいるかもしれないので記事にします。C++11から導入されたstd::multiset, std::multimapを使おうと以下のコードを書きました。 #include <multiset> #include <multimap> しかしg++で以下のエラーが出ます。 致命的エラー: multimap: No su</multimap></multiset>…

cygwinで日本語を含むutf-8ファイルをクリップボードにコピーする方法

cygwinで日本語を含むutf-8ファイル(例えばaaa.txt)をクリップボードにコピーするには以下のコマンドを使います。 $ cat aaa.txt > /dev/clipboard 以下のコマンドだと文字化けしてしまうようです。 $ clip < aaa.txt 参考URL cygwin command to copy to w…

Python 3で絵文字を羅列する

Python3を使って、Unicodeに登録された絵文字を羅列して遊んでみました。この記事ではPython 3でのみ動作確認をしています。 コードポイントから文字への変換 Pythonの組み込み関数であるchr()を使うと、Unicodeのコードポイント(日本語では符号点)から文…

Pythonの例外処理に関するまとめ

適当に書いてしまいがちな例外処理について自分なりにまとめました。 Pythonにおける例外 Pythonでは「認可をとるより許しを請う方が容易 (easier to ask for forgiveness than permission)」、略してEAFPというコーディングスタイルが推奨されています。EAF…

Pythonのvars()とdir()の違い

よくどっちがどっちだったか混乱してしまうので自分用にまとめます。最初に、引数にオブジェクトを渡して呼び出したときの挙動を比較したのち、引数なしで呼び出したときの挙動を比較します。 vars(obj) 2. 組み込み関数 — Python 3.5.2 ドキュメントによる…

PyCharmでエディタの文字サイズをCtrl + マウスホイールで変更可能にする

表題のようにする方法が PyCharm 2016.1 Help :: Zooming in the Editor にあります。 File -> Settings...と辿ってウィンドウを開いた後、左側のペインでEditor -> Generalと辿り、"Change font size (Zoom) with Ctrl+MouseWheel"にチェックを付ければOKで…

pythonでwithによるネストを防ぐ

Pythonではファイルを開くときなどにwithを使うのが定石である(参考:ファイル - Dive Into Python 3 日本語版)。しかし、複数のファイルを開くときには以下のようにネストが発生してしまうのが気に入らなかった。 with open('a.txt', 'w') as f1: with op…

O'Reillyで買ったebooksをKindleで読む

現在O'ReillyでEbookがすべて半額セール中 (Ebooks - O'Reilly Media)なのを利用して、C in a Nutshell, 2nd Edition - O'Reilly Mediaを買ってみました。いつも購入したEbookをスマホで読めるようにする方法を忘れてしまうので、簡単にメモします。 管理画…

ピタゴラス数を無限に生成する

先日久しぶりに参加したCodeforces Round #368 (Div. 2) - Codeforcesの C. Pythagorean Triples が面白かったのでご紹介します。 問題 「正の整数aが与えられる。三平方の定理 a2 + b2 = c2 を満たす残りの 正の整数b, cの組を一組答えよ。そのようなb, cの…

PyInstallerでPythonスクリプトをexe化

PythonスクリプトをWindowsのexeにする方法 (調査中) - minus9d's diary にて、Python 3.5のスクリプトをWindowsのexe化するにはPyInstallerが良さそうだという記事を書きました。この記事ではPyInstallerを使ってexe化する方法について調査した結果を記しま…

PythonスクリプトをWindowsのexeにする方法 (調査中)

表題の方法について調べてみました。Python 3.5で動かすことが目標なのですが、ハマっていてまだ動いていません。以下、調査した内容のメモです。 py2exeを使う方法 py2exeは、Python 2系とPython 3系とで配布場所が異なります。 Python 2系の場合、py2exe d…

Python3では変数名に日本語が使える

Fluent Python - O'Reilly Mediaを読んでてびっくりしたのでメモ。Python 3では変数名にアスキー文字以外も使えます。例えば # -*- coding: utf-8 -*- def 階乗(整数): if 整数 <= 0: return 1 else: return 整数 * 階乗(整数-1) print(階乗(5)) は問題なく…

matplotlibで軸の値が小数になったりオフセット表現になったりするのを止める方法

問題 pythonのmatplotlibで、年ごとの値の変化を表す折れ線グラフを書こうとして以下のコードを書きました。 import numpy as np import matplotlib.pyplot as plt x = np.array([2006, 2007, 2008]) y = np.array([35.2, 27.4, 41.2]) plt.plot(x, y) plt.s…

matplotlibをオブジェクト指向スタイルで使う その2

前にmatplotlibをオブジェクト指向スタイルで使う - minus9d's diaryという記事を書きました。しかし、matplotlib によるデータ可視化の方法 (1) - Qiita および Why do many examples use "fig, ax = plt.subplots()" in Matplotlib/pyplot/python - Stack …

pythonでcsvを読む方法 - 標準ライブラリ, pandas, numpy

pythonでcsvを読み込む方法についてまとめました。ライブラリによって微妙に読み込み方が異なるので大変です。 この記事では、以下のdata.csvを読み込む場合を考えます。最初の行がヘッダ行で、それ以降の行がデータ行です。 a,b,c 2,5.6,1 1,7.0,0 3,6.2,1 …

Emacsに入ってる人工無脳ELIZAと対話する

AlphaGo | Google DeepMindと人類の戦いが最高潮なのにかこつけて、人工知能ネタを紹介します。 EmacsにELIZA(イライザ)と呼ばれる、簡素な対話プログラムが入っているのはご存知でしょうか? ELIZAはJoseph Weizenbaumによって1964から1966年に書かれたプ…

2016年センター試験英語(筆記)を解く

英語力の定点観測のために、今年のセンター試験英語(筆記)を解いてみました。結果からいうと183点で、期待よりも低い値でした。 以下、間違えた部分を中心としたメモです。ネタバレしてます。 第1問 B-3. charity, continent, demonstrate, opponentでアク…

Anacondaのcondaコマンドによる仮想環境の使い方のまとめ

Pythonパッケージ集として人気のあるAnacondaに付属するcondaコマンドを使って、クリーンなPython環境を作ったり破棄したりする方法についてまとめました。 環境を作る myenvという名前のpython環境を作ってみましょう。 $ conda create --name myenv python…

VirtualBOX + Ubuntuの環境構築メモ

Windows 10 + VirtualBOX + Ubuntuを動かすときのメモです。適宜更新します。 Ubuntuの仮想イメージを取得 Ubuntuの入手 | Ubuntu Japanese Teamから「日本語 Remix 仮想ハードディスクイメージのダウンロード 」をクリックして「Ubuntu 14.04 LTS」を入手し…

C言語でOpaqueポインタを使って構造体のメンバを隠蔽する

C

C言語で、自作の構造体のメンバをユーザに開示しないテクニックとして、Opaqueポインタというものが知られています。今回は、書籍「C++のためのAPIデザイン」の3.1.6節を参考に、Opaqueポインタを使う簡単なサンプルを紹介します。 Opaqueポインタを使わない…

メインPCをWindows 10にUpgradeした記録

自宅でメインPCとして5年以上使っているDell XPS 8100をWindows 7からWindows 10にアップグレードしました。大多数のアプリは問題なく動いており、おおむね満足です。 このエントリでは、アップグレードにまつわる記録を記します。 アップグレードできなかっ…

Travis CI にて、C++11のソースをgccとclangの両方でビルドする

githubのレポジトリと簡単に連携できる継続的インテグレーションサービスであるTravis CIを使って、C++11で書かれたソースコードをテストできるようにしました。想像以上に大変だったのでメモしておきます。 ソースコードとテストコードの準備 Travis CIで提…

makeで大量のメッセージが表示されるときは-dオプションを疑う もしくは変数展開についてのbash/zshの違い

ある私的プロジェクトでMakefileの変数$(CXXFLAGS)を変更して実行するために、以下のようなスクリプト script.sh CXXFLAGS="-std=c++0x -stdlib=libc++" make CXXFLAGS=${CXXFLAGS} を書きました。このスクリプトの意図は、Makefileに記されたCXXFLAGSという…

cmathをincludeするとy0, y1などのグローバル変数が使えなくなる問題

C++

一見問題なさそうな以下のコード #include <cmath> int x1, y1; int main() { x1 = 10; y1 = 5; return 0; } を、例えばVisual C++ 2015でコンパイルしようとすると、以下のエラーが出て失敗します。 main.cpp(3): error C2365: 'y1': redefinition; previous defin</cmath>…

Visual Studio 2015起動時の"License: Prerelease software This license has expired"問題の解決策

Visual Studio 2015を起動すると、"License: Prerelease software This license has expired"というエラーメッセージが出て、開始できない問題に遭遇しました。 Visual Studio 2015 - Prerelease software. This license has expired - Stack Overflow にあ…

ScanSnap S1300iで読み込むJPEGの画像サイズと品質

FUJITSU ScanSnap S1300i FI-S1300A で本格的にスキャンをするにあたり、画像の圧縮率を1(低圧縮)から5(高圧縮)まで変化させると、画像サイズと品質がどう変化するかを調べました。 実験環境 スキャン対象 A4のカラー写真を含む紙片面 主な設定 読み取りモー…

Modern C++でのクラスに関する私的メモ

C++

C++のクラスについて理解があやふやなので、調べたことを以下にまとめます。C++11以降をターゲットにしています。 特殊メンバ関数 (Special member functions) 以下に、メンバ変数を2つとメンバ関数を1つのみ持つ単純なクラスを含むサンプルを示します。 #in…

Pythonの関数のデフォルト値にリストなどを使うときは要注意

Pythonの関数には、他の多くの言語と同じく、引数のデフォルト値を指定する機能があります。 例えば以下の関数に引数を一つのみ与えたときは、bには3の値が入ります。 def func1(a, b = 3): return a + b このデフォルト値に、リスト、辞書などの可変オブジ…

Nexus 5 + iijmioの組み合わせが不調のときに調べること

Nexus 5 + iijmioの組み合わせで通信が不調になることが何回かありました。この記事ではその解決策をまとめます。 Android 5.xにて通信が不安定になる問題 Androidを4から5に上げた後、アンテナマークにビックリマークが付いた状態になり通信できなくなるこ…

CMakeをコマンドラインから使う方法の簡単なまとめ

CMakeという、多様なプラットフォームでソースコードをビルドするためのツールの使い方を勉強中です。この記事では、CMake向けに構築されたソースコードを、Linuxなどのコマンドラインからビルドする方法についてまとめます。 ビルドの基本 まず、buildを行…

VistaのWindows Updateが働かない不具合を修正

約3ヶ月起動していないVistaを起動してWindows Updateをかけたところ、「更新プログラムを確認できません」というエラーとともに、更新に失敗する不具合が出ました。 「"Windows Update で更新プログラムを確認できません" エラー メッセージが更新プログラ…

Pythonでインスタンスの状態をダンプするにはvars()を使う

以下のような、インスタンス変数としてval1とval2を持つMyClassというクラスを考えます。 class MyClass: def __init__(self, val1, val2): self.val1 = val1 self.val2 = val2 以下のように、このクラスのインスタンスを作り、printしてみます。 mc = MyCla…

shift_jisでUnicodeDecodeErrorが出る場合は、shift_jisx0213でデコードしてみる

あるウェブページを、Python 3で以下のように読み込もうとしました。 import bs4 import urllib.request def get_soup(url): rawtext = urllib.request.urlopen(url).read() soup = bs4.BeautifulSoup(rawtext.decode('shift_jis')) get_soup('http://xxxxx'…

linuxで連番を生成するにはseqコマンドが便利

linuxのシェルコマンドであるseqを使うと簡単に連番を生成できることを知りました。 まずは5から12までの連番を作ってみます。 $ seq 5 12 のように、最初の数字と最後の数字をそれぞれ指定すると、以下のように表示されます。 5 6 7 8 9 10 11 12 次に、5か…

Windows 7とNexus 5が接続できない現象の解決策

症状 Windows 7とNexus 5をUSBケーブルで接続しても、Android Studioからrunning deviceとしてNexus 5が認識されない。 解決法 usb driverがインストールできない - Google プロダクト フォーラム で直りました。 以下に方法を引用します。 (PCに繋がってい…

Pythonで、文字列に日本語が含まれているか判定する

表題のことをPythonで行おうとあれこれ検索しましたが、なかなかこれだという方法が見つかっていません。 今のところ、Is there a way to know whether a Unicode string contains any Chinese/Japanese character in Python? - Stack Overflowで紹介されて…

Googleマイマップでぐるっとパスの施設一覧地図を作る

新Googleマップの「マイマップ」で地図作成&スマホで表示する方法|Mac - 週アスPLUSを参考に、表題の地図を作成しました。 地図を作成するときには以下のようなExcelファイルを作成する必要がありますが、どこにもスクレイピングできるページがなく、仕方…

Python3で、urllibとBeautifulSoupを使ってWebページを読み込む

Python3で、urllibとBeautifulSoupを使ってWebページを読み込む方法についてまとめます。 urllibを使ったページの取得 まず、Python3の標準ライブラリであるurllibを使ってページを取得します。Python2から書き方が変わっているので注意が必要です。 import …

Anacondaの本体とパッケージ一式のアップデート方法

本体のアップデート コンソールから conda update conda と打つ。 パッケージ一式のアップデート コンソールから conda update --all と打つ。アップデートされるパッケージの一覧が表示されるので、問題なければyと打ちReturn。 Pythonのバージョンのアップ…

SymPyで数式と戯れる

数式を扱うPythonのライブラリであるSymPyを触っています。できることが多くてなかなか面白いです。以下、導入メモです。 ブラウザでとりあえず試す SymPy Liveで試せます。適当に >>> x ** 2 - 3 * y ** 2 などと打つと、LaTeXのきれいな数式で表示されて驚…

Cygwinからコマンドプロンプトのウィンドウを開く

以下のコマンドを打ち込めばOK. $ cygstart cmd 参考:Linda Walsh - Re: Launching CMD.EXE windows from cygwin bash (answer found)

gdbでvectorなどの中身をprintする

C++

gdbでvectorなどSTLのコンテナの中身をprintしようとすると、例えば以下のようにうまく表示できません。 (gdb) p x1 $1 = {<std::_Vector_base<int, std::allocator<int> >> = { _M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, _M_start = 0x8003b9e8, _M_finish = 0x8003b9fc, _M_end_of_storage …</no></no></__gnu_cxx::new_allocator<int></std::allocator<int></std::_vector_base<int,>

C++11で、std::tie()を使って複数の変数への代入を1行で行う

C++

スクリプト言語だと、複数の変数への代入を1行で行えることが多いです。以下はPythonの例。 a,b,c = 10, 7.7, "hello" print(a,b,c) これと同じことをC++11でも行うには、std::tie()を使います。 #include <iostream> #include <tuple> using namespace std; int main(){ int </tuple></iostream>…