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

emacs25にバージョンアップ

有志の方がIMEパッチを適用して64bitでWindowsビルドしてくれているのでこちらを利用。ありがたや。https://github.com/chuntaro/NTEmacs64設定を何も変えずにexeだけ置き換えて動いたのに感動。diredでドット始まりのファイルが先頭に来なくなった。 (setq …

MoinMoinでWebP画像を表示する

moin-1.9.8を使っています。PNG画像を減色して貼り付けていたのですが試しにWebPにしたらめちゃめちゃ小さくなるじゃないですか! しかしmoin-1.9.8はWebPをアップロードしても画像とは認識してくれませんでした。 むむぅ。ということでMoinMoinのコードを読…

C++単体テストTIPS ~みんなともだち~

テストコード書いてると対象のクラスのprivateメンバの値が知りたいときがよくある。 class MyTest; #define private \ friend class ::MyTest; private #include <TargetClass.h> #include <cxxtest/TestSuite.h> class MyTest : public CxxTest::TestSuite { public: void testHoge() { auto p </cxxtest/testsuite.h></targetclass.h>…

sqlite3でダメ文字を入れてしまったときの対処

うっかりダメ文字をINSERTしてしまって困った。 # hoge.py conn = sqlite3.connect('hoge.db') conn.text_factory = lambda raw: raw.decode('utf8', errors='replace') これは便利。

はてなブログ移行

めちゃめちゃ便利やん。

言語バーのENがたまに復活する。

id:shive:20160720:1469017510 リストに英語(米国)は存在しないのだけど、もう一回追加して削除してやれば消える。なんなんだ…。

子プロセス起動時に管理者権限での実行を強制する

ShellExecuteExでlpVerb=runasにすれば良いらしい。 #include <windows.h> #include <shellapi.h> #include <cstdio> int main(int, const char**) { SHELLEXECUTEINFO sei = {}; sei.cbSize = sizeof(sei); sei.fMask |= SEE_MASK_WAITFORINPUTIDLE; sei.fMask |= SEE_MASK_FLAG_NO_UI; sei</cstdio></shellapi.h></windows.h>…

WindowsのキーボードタイプにENが現れてしまったときの対処

言語設定で「英語(英国)」を一度追加して削除すると消える。

デコレータで関数に属性を付与

def note(**kw): def applier(func): __notes__ = getattr(func, '__notes__', None) if __notes__ is None: __notes__ = dict() setattr(func, '__notes__', __notes__) __notes__.update(kw) return func return applier @note(foo='this is add') @note(b…

cdefクラスとcpdefの挙動

Cythonでネイティブ実装のPythonクラスを作る。(Cython 0.24 で確認) # hoge.pyx from libc.stdio cimport printf from libcpp.string cimport string cdef class Hoge: cdef string name_ property name: def __get__(self): return self.name_.c_str().d…

.pyxはutf-8-sigにしてはいけない

# -*- coding: utf-8-sig -*- print(b'abc') print('abc') print('abc'.encode('utf-8-sig')) print('abc'.encode('utf-8')) env = Environment() env.Append( CPPPATH=['C:/Python34/include'], LIBPATH=['C:/Python34/libs'], ) env.Command('hoge.cpp', '…

if括弧内で定義した変数の生存期間

c++

ifの括弧内で定義した変数ってelseのスコープでも有効なのね。知らなかった。 // hoge.cpp #include <string.h> #include <stdio.h> int main(int argc, const char** argv) { if(int len = strlen(argv[1])) { printf("then, '%s' len = %d\n", argv[1], len); } else { printf</stdio.h></string.h>…

luajit vs pypy 2016

前回検証した記事がもう4年前。id:shive:20120112:1326376896luajitがちらほら使われるのを見かけるようになったので久しぶりに再検証してみました。https://github.com/shive/try_luajit前に記事を書いた直後にpypyはluajitに抜かれていたので、その後変わ…

Makefileで相対パスからinclude

Makefileから共通ビルド定義をincludeする際にお決まりでincludeするファイルが複数あった場合に、MakefileはC/C++とは違ってinclude先でのパスはinclude元と同じで簡単にパスを取得する方法が見つけられなかったので毎回下記のようにしていた。 # share/com…

cppcheckのバグ

c++

cppcheck-1.72で確認。 // hoge.cpp class Base { }; template<typename T> class Hoge<T[]> final : public Base { }; void func() { int a[2]; a[5] = 0; } $ cppcheck hoge.cpp Checking hoge.cpp... Hogeのfinal消すか継承を消すかT[]をTにするとちゃんと動く $ cppcheck </t[]></typename>…

Win8で削除時に確認ダイアログを表示する

ごみ箱アイコンを右クリックしてプロパティを表示。「削除の確認メッセージを表示する」をチェックしておく。うっかり連打で隣のファイルまで削除されてビビる。

VC2013が無名構造体のメンバに初期値を記述しても初期化してくれない

VisualStudio2013のC++11実装が甘い。 // hoge.cpp #include <stdio.h> struct Hoge { int one = 11; int two = 12; int sun = 13; struct named_t { int one = 21; int two = 22; int sun = 23; } named; struct { int one = 31; int two = 32; int sun = 33; } nona</stdio.h>…

nginxで認証必須にする

nginxでBASIC認証を通過していなければ何も出来ないようにする方法。 # /etc/nginx/conf.d/default.conf server { listen 443 default ssl; server_name hoge.com; # SSL証明書 ssl_certificate /etc/nginx/conf.d/ssl/server.crt; ssl_certificate_key /etc…

304を求めて

nginx/uwsgi/moinmoinを運用しているのだけどLastModified/IfModifiedSinceが一致するのにnginxが304を返してくれない。http://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_revalidate ↑これだけだとダメなのか。。わからん。。http://w…

メモリダンプファイルが相変わらず保存されている

先日の設定は有効ではなかったようで。。どうやって止めるんだろう?

「システムエラーのメモリ ダンプファイル」がデカすぎる件

ハードディスクの残量が少ないのでちょいちょいディスク クリーンアップしてるんですが、「システムエラーのメモリ ダンプファイル」が10GBを超えててギョっとしたので保存しない方法を探してみた。http://www.jyoukyoutools.com/?p=899 http://detail.chieb…

getoptの戻り値をグループ化

こういうのが欲しい。 # hoge.py import sys import getopt import itertools opts, argv = getopt.getopt(sys.argv[1:], 'x:y:z:') keyfunc = lambda item: item[0] opts = sorted(opts, key=keyfunc) opts = itertools.groupby(opts, key=keyfunc) opts = …

Python3.4(win64)用の_curses.pydをビルド

https://github.com/shive/python_curses_for_windowsちゃんと日本語が使える _curses.pyd が欲しかったんですが、ネット上に見つけられなかったので自分でビルドしてみた。これで tui 作り放題ですね!昔のN88BASICを叩いてたころが懐かしくなってきたので…

git gcの限度設定

git

リポジトリが太ってくると git gc --aggressive をやるんですがそうすると.packがかなり大きくなるので設定を入れてみた。http://stackoverflow.com/questions/3095737/is-there-a-way-to-limit-the-amount-of-memory-that-git-gc-uses $ git config --globa…

gnupack-13.00に更新したときのメモ

gnupackが更新されたので追従してみた。いつもありがとうございます。 http://d.hatena.ne.jp/ksugita0510/20150502/p1 gnupack-13.00の準備 いつものようにcygwinのpythonを削除。普段はwindowsのpythonを使っている。 $ apt-cyg remove python curl,git-sv…

WindowsでOpenEXR-2.2.0をビルド

cmake-3.2.2 VisualStudio2013 # Makefile DEST_DIR := $(shell cygpath -ma libs) DEVENV := "$(shell cygpath -ua "$(VS120COMNTOOLS)/../IDE/devenv.exe")" CMAKE := "$(shell cygpath -ua "$(PROGRAMFILES)/CMake/bin/cmake.exe")" CMAKE_TARGET := 'Vis…

Windowsの資格マネージャからパスワードを拾う

以下のコードで取れた。あとはTargetNameでマッチングしてやれば目的のパスワードが拾えそう。 # Python3.4.2(x64) import sys from ctypes import * class CREDENTIAL(Structure): _fields_ = [('Flags', c_uint), ('Type', c_uint), ('TargetName', c_wcha…

git filter-branch

git

履歴からファイルを消してリポジトリを軽量化する。まず関係者全員にpushしてローカルのリポジトリを削除してもらう。 $ git filter-branch -f --prune-empty --index-filter 'git rm -fr --ignore-unmatch data/backup/' -- 51ee5a93ac..HEAD $ git show-re…

cygwinでwincred

git

http://d.hatena.ne.jp/shive/20141024/1414112031最近gitをcygwin版に変更しました。そしたらwincredが使えなくなってしまった。msysgitからlibexec/git-core/git-credential-wincred.exeをcygwin側の同じところにコピーしたら使えました。快適 git-2.1 生…

gitのhttpパスワード

git

gitでhttpを使う場合、毎回パスワードを聞かれるのが面倒だったのでちょっと調べてみた。windowsのmsysgitはwincredを使うらしい。 $ git config --global credential.helper wincred これでok。 追記 http://orangeclover.hatenablog.com/entry/2014/01/15/…

.batが実行できなくなった

http://www.atmarkit.co.jp/ait/articles/1303/15/news042.html Windows TIPS:.batファイルの関連付けを元に戻す意図的にやったわけじゃないので何かの操作で自動で設定されるみたい。 .bat に関連付けが出来る必要があるのだろうか?

RSA暗号書いてみた

https://github.com/shive/try_rsa $ make keygen python keygen.py P = fe03 Q = fc95 N = fa9ecbbf / log2(N): 31.9694 K = 10001 U = da17e869 (V = dec9) len(ORIGIN) = 22 b'\x8c\xc3\x92r\x82\xe2\x8a^\x82\xc6\x82\xd1\x82\xb1\x82\xde\x90\x85\x82\x…

py2exe for python3を使ってみた。

https://github.com/shive/test_py2exe_for_python3さっくり動いた。ctypesが必須だけど明示しないと含まれなかった。入力スクリプトをutf8にするにはどうすればいいんだろうか?

gnu find で最近編集したファイル一覧表示

3日(日付じゃなくて24H*3=72時間)以内に編集したファイル一覧 $ find -type f -mtime -3 | xargs ls -lht -rw-r--r-- 1 hoge None 13K 4月 10 17:14 ./aaa.txt -rw-r--r-- 1 hoge None 1.2K 4月 9 11:08 ./hoge/hoge.txt 3日以内(now-mtime $ touch -m -d '2…

gimpのフォント変更

"c:/Program Files/GIMP 2/etc/gtk-2.0/gtkrc" に style "user-font" {font_name="MeiryoKe_UIGothic 10"} widget_class "*" style "user-font"を書き足す 2014-10-08 追記 GIMP-2.8.14を入れたら効かなくなった上に、デフォルトでも文字化けして何が何だか……

bareリポジトリからbareリポジトリへ同期する方法

git

# origin(clone元のbareリポジトリ)からすべてをfetch $ git fetch origin 'refs/heads/*:refs/heads/*' # originへpushはいつも通り $ git push origin feature/hoge

cx_Freezeでexeを作る

Python: 3.3.2 win32 cx_Freeze: 4.3.2 # hoge.py print("hoge hoge hoge") # setup.py from cx_Freeze import setup, Executable setup( name='hoge', options = dict( build_exe = dict( create_shared_zip = False, ### library.zip ではなく hoge.zip を…

gtags.el/anything-gtags.elのバッファが残りすぎて気になる

;; gtags-find-tag で検索時に以前のバッファが残らないようにクリアする (setq gtags-select-buffer-single t) ;; anything-gtagsでgtagsの候補バッファを奪うときに違う名前でバッファを作りまくるのでどんどん残る。 ;; gtags-select-buffer-singleを真似…

コマンドプロンプトさんは気難しい

DOS

@echo off rem hoge.bat echo "%1" "%2" "%3" shift /1 echo "%1" "%2" "%3" echo "%*" > hoge.bat foo bar=baz "foo" "bar" "baz" "bar" "baz" "" "foo bar=baz" =(イコール)はどこへ行ってしまったのですか?

呼び出し履歴を取得する

環境 Windows7 SP1 VisualStudio2012 SP1 SCons-2.3.0 やってみた main.cpp / SConstruct $ make run-x86 make run TARGET_ARCH=x86 make[1]: ディレクトリ `/home/github/shive/blogpost/20130918-stacktrace' に入ります scons -Qj4 TARGET_ARCH=x86 build…

sconsの便利っぷり

sconsの日本語情報が少ない気がするので自分の知ってる情報を晒してみます。 sconsを使ったWindows環境下でのサンプルです。githubにあげました。 https://github.com/shive/scons-test/tree/master/test001-forwin 動作環境 Python 2.7 SCons 2.3.0 Cygwin …

何回もビルドされるVisualStudio2010のバグ

VisualStudio2010 でWin32/C++プロジェクトを弄っていたら、あるタイミングから何回ビルドしてもビルドしますか?っと聞かれるようになった。何も編集していないので意味がわからん。http://social.msdn.microsoft.com/Forums/vstudio/ja-JP/ccac59d3-9df8-4…

省略ファイルパスの無効化

win

~(チルダ)が入る8.3形式の抑制方法です。 $ fsutil 8dot3name set 1参考 http://www.atmarkit.co.jp/fwin2k/win2ktips/1200disable83/disable83.html

PyPyは本当に速いのか?

先日のjson速度計測を使いまわして試してみた。#PyPyではujsonがコンパイル通らずインストール不可でした 速いのはyamlだけ。PyPyはC言語でモジュールを書いた部分が混ざると逆に遅くなるとか?PyPy専用に書けば速くなるのかもしれないけど、すべてのモジ…

パイプを開くとファイルが消せない

ハマった…。知らんかった…。しかもC++でも同じ挙動とは…。WINだけ? パイプでプロセスを開くときは事前に不要なファイルを閉じなくてはいけないみたい。 ファイルの変換処理をテンポラリファイル経由で大量に走らせつつパイプで子プロセスに処理させたら削除…

PyYAMLが非常に遅かった

うすうす感じてはいたが測ってみたらPyYAMLがめちゃめちゃ遅い。しかもこの調査をするまでlibyamlを使えていなかったのでなおさら。 ということでテキストならujson、バイナリならmsgpackがおすすめ。どうしても可読性が必要な場合は容量を抑えるか速度の必…

PTVS on VS2012

VS2012のPTVS動いた。 http://www.microsoft.com/visualstudio/jpn/downloads の 「Visual Studio 2012 Shell」にあるやつを Isolated → Integrated の順に入れて http://pytools.codeplex.com/ の 「PTVS 1.5 VS 2012.msi」 を入れる。 追記 ちゃんと解説し…

MongoDB.Bsonの4MB限界突破

http://www.mongodb.org/display/DOCS/CSharp+Language+Center BSONだけ使いたくて導入してみましたが4MiBを超えると例外が投げられる。 MongoDB.Bson.IO.BsonBinaryWriterSettings.Defaults.MaxDocumentSize = int.MaxValue;↑これで通りました。MongoDBの1…

easy_installの底力

$ easy_install pywin32-217.win32-py2.7.exe これでインストーラ形式のpythonモジュールをインストールできる。 virtualenvなどでクリーンな環境の自動構築するのに便利。

pybindgenでC++クラスを呼び出す

いろいろカンでやったとこもあるので間違っているところがあればツッコミお願いします。 前提とする環境 Windows XP 32bit cygwin VisualC++ 2008 Express Edition (gccxmlは古いので2010に対応していない) Python2.7 gccxmlのインストール http://sourcefor…