2015-01-01から1年間の記事一覧

メイン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でデコードしてみる

(2019-03-30追記) Windows の文字コードは Python では cp932 - criticablog によると shift_jisx0213 ではなく cp932 を使うべきだそうです。以下の記事は2015-07-30に投稿したものそのままです。 あるウェブページを、Python 3で以下のように読み込もうと…

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>…

重複組合せの復習

例えば「区別のないK個の玉を、区別のあるN人に分配する組み合わせ」のように、区別のないものを区別のあるものに分配する組み合わせを重複組合せと呼びます。 重複組合せは以下の記号で定義されます。 重複組合せは、を使って以下のように表せることが知ら…

lower_bound(), upper_bound()の練習帳

C++

事前準備 数列は昇順にソートされている必要があります。 #include <iostream> #include <algorithm> int main() { std::vector<int> nums{1,1,1,1,2,2,3,3,3,4,4,6,6,6}; std::sort(nums.begin(), nums.end()); .... } 要素の数を数える 「3より小さい要素数」「3以下の要素数」を数え</int></algorithm></iostream>…

Pythonのインタラクティブシェルで打ったコマンドをファイルに保存

普通のインタラクティブシェルの場合 以下の2行を打ち込めばOKです。 >>> import readline >>> readline.write_history_file('history.py') ↑の例の場合、現在のディレクトリにhistory.pyという名前で保存されます。現在のディレクトリを知りたい場合は以下…

Pythonのライブラリのソースコードの場所を調べる

Python Library Source Code: how can I view it? - Stack Overflowに方法が載っていました。いろいろ方法はあるようですが、もっとも簡単なのは import random print(random) でしょうか。

scikit-learnのSVMを使って多クラス分類を試す

Pythonのscikit-learnを勉強中です。今回は、公式ページにある、手書き文字を0から9に分類するコード (Recognizing hand-written digits — scikit-learn 0.16.1 documentation) を読み解いてみます。 準備 Python 3でscikit-learnを使えるようにします。今回…

Pythonパッケージ集の比較

Pythonの科学技術計算でよく使うライブラリを一挙にインストールできるパッケージ集を比較しました。 比較対象 Download Anaconda Python Distribution Python Distribution and Integrated Analysis Environment | Enthought Canopy pythonxy - Scientific-…

gdbのメモ

gdbの忘れがちな項目をメモ。 引数、標準入力、標準出力を指定 Linuxの場合 gdb (program)でgdbを起動したのち、run (arguments) < (input file) > (output file) Cygwinの場合 Cygwinの場合、↑に書いた方法ではinput fileを読めない(参考:gdb input redir…