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