管理者コマンドで以下を実行してリブート
1 |
reg.exe add "HKLM\System\CurrentControlSet\Services\atapi\Controller0" /f /v EnumDevice1 /t REG_DWORD /d 0x00000001 |
管理者コマンドで以下を実行してリブート
1 |
reg.exe add "HKLM\System\CurrentControlSet\Services\atapi\Controller0" /f /v EnumDevice1 /t REG_DWORD /d 0x00000001 |
activeperlをダウンロードしてC:\Perlにインストール
nasm-2.11.06-installer.exeをダウンロードしてC:\nasmにインストール
https://www.openssl.org/からopenssl-1.0.2.tar.gzをダウンロードしてC:\osl\openssl-1.0.2に解凍
デスクトップにnasmのショートカットができているのでここからプロンプト起動、これはnasmにパスを張るだけ。perlも起動できるか確認。
1 2 3 |
C:\nasm>cd .. C:\>cd osl\openssl-1.0.2 C:\osl\openssl-1.0.2>perl Configure VC-WIN32 --prefix=C:\OpenSSL |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
Configuring for VC-WIN32 no-ec_nistp_64_gcc_128 [default] OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir) no-gmp [default] OPENSSL_NO_GMP (skip dir) no-jpake [experimental] OPENSSL_NO_JPAKE (skip dir) no-krb5 [krb5-flavor not specified] OPENSSL_NO_KRB5 no-libunbound [experimental] OPENSSL_NO_LIBUNBOUND (skip dir) no-md2 [default] OPENSSL_NO_MD2 (skip dir) no-rc5 [default] OPENSSL_NO_RC5 (skip dir) no-rfc3779 [default] OPENSSL_NO_RFC3779 (skip dir) no-sctp [default] OPENSSL_NO_SCTP (skip dir) no-shared [default] no-ssl-trace [default] OPENSSL_NO_SSL_TRACE (skip dir) no-store [experimental] OPENSSL_NO_STORE (skip dir) no-unit-test [default] OPENSSL_NO_UNIT_TEST (skip dir) no-zlib [default] no-zlib-dynamic [default] IsMK1MF=1 CC =cl CFLAG =-DOPENSSL_THREADS -DDSO_WIN32 -W3 -Gs0 -GF -Gy -nologo -DOPENSSL _SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE -DOPE NSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_AS M_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DV PAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM EX_LIBS = CPUID_OBJ =x86cpuid.o BN_ASM =bn-586.o co-586.o x86-mont.o x86-gf2m.o EC_ASM = DES_ENC =des-586.o crypt586.o AES_ENC =aes-586.o vpaes-x86.o aesni-x86.o BF_ENC =bf-586.o CAST_ENC =cast-586.o RC4_ENC =rc4-586.o RC5_ENC =rc5-586.o MD5_OBJ_ASM =md5-586.o SHA1_OBJ_ASM =sha1-586.o sha256-586.o sha512-586.o RMD160_OBJ_ASM=rmd-586.o CMLL_ENC =cmll-x86.o MODES_OBJ =ghash-x86.o ENGINES_OBJ = PROCESSOR = RANLIB =true ARFLAGS = PERL =perl THIRTY_TWO_BIT mode BN_LLONG mode RC4_INDEX mode RC4_CHUNK is undefined Configured for VC-WIN32. |
1 2 3 4 5 6 7 8 |
C:\osl\openssl-1.0.2>ms\do_nasm C:\osl\openssl-1.0.2>perl util\mkfiles.pl 1>MINFO C:\osl\openssl-1.0.2>perl util\mk1mf.pl nasm VC-WIN32 1>ms\nt.mak C:\osl\openssl-1.0.2>perl util\mk1mf.pl dll nasm VC-WIN32 1>ms\ntdll.mak C:\osl\openssl-1.0.2>perl util\mk1mf.pl nasm BC-NT 1>ms\bcb.mak C:\osl\openssl-1.0.2>perl util\mkdef.pl 32 libeay 1>ms\libeay32.def C:\osl\openssl-1.0.2>perl util\mkdef.pl 32 ssleay 1>ms\ssleay32.def C:\osl\openssl-1.0.2> |
ここでVC環境が必要なのでVC10のvcvarsall.batを実行
1 2 3 4 |
C:\osl\openssl-1.0.2>"c:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" Setting environment for using Microsoft Visual Studio 2010 x86 tools. C:\osl\openssl-1.0.2> |
nmake実行
1 |
C:\osl\openssl-1.0.2>nmake -f ms\ntdll.mak |
10分くらいで終了、次にテスト
1 |
C:\osl\openssl-1.0.2>nmake -f ms\ntdll.mak test |
30秒くらいで終了、次にインストール、これはやらなくてもいいらしいが
1 |
C:\osl\openssl-1.0.2>nmake -f ms\ntdll.mak install |
WindowsのVC2013で調べた場合。
boost\config\auto_link.hppが各種のマクロ定義から最終的に
#pragma comment(lib, “boost…lib”)を呼ぶ。
影響するマクロは_DLL, _MT, _DEBUG, __SGI_STL_PORTなど多数。
lib名の最後につくdgsとかのsは_DLLならsがつかない。そうでなければsがつく。
_DLLは/MDか/MDd (Multithreaded DLL)があればつく。/MDはランタイムをダイナミックリンクする。
boostのスタティックライブラリは標準ランタイムをstatic linkしたもの。
最近のビルドはほとんど/MDのはずなのでsはいらない。/MTの場合はランタイムをスタティックリンクする。
boostのビルドを何も考えずに行った場合staticバージョンはビルドされない。
BOOST_LIB_DIAGNOSTICを定義すればビルド時にlibのファイル名がわかる。
簡単な方法はないようだ。このコードでも以下の問題がある。
1 2 3 4 5 6 7 |
enum ISFILEOPEN { ISFILEOPEN_NO, ISFILEOPEN_YES, ISFILEOPEN_UNKNOWN, } ; ISFILEOPEN IsFileOpen(LPCTSTR pFile); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include #include "IsFileOpen.h" ISFILEOPEN IsFileOpen(LPCTSTR pFile) { HANDLE f = CreateFile( pFile, GENERIC_READ, 0, // share NULL, // sec OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(f==INVALID_HANDLE_VALUE) { switch(GetLastError()) { case ERROR_SHARING_VIOLATION:return ISFILEOPEN_YES; case ERROR_ACCESS_DENIED:return ISFILEOPEN_UNKNOWN; } return ISFILEOPEN_NO; } CloseHandle(f); return ISFILEOPEN_NO; } |
vmdkファイルのエンコードでエラーになる場合がある。vmdkファイルのサイズの小さいディスクリプションファイルを開いてencodingの行を削除したなら直った。壊れるかもしれないので注意。
1 |
encoding="windows-1252" |
https://www.sqlite.org/lang_conflict.html
・REPLACEとINSERT OR REPLACEは同じ
ここでいうORは制約エラーが発生した場合でUNIQUEやPRIMARY_KEYもしくはNOT NULL制約
UNIQUEやPRIMARY KEYの時はその行を削除してからINSERTが行われる。
NOT NULLの時はデフォルト値で置き換えられる。
とのことなのでREPLACEが使えるのはコラムを全部指定したときで一部しか指定しないと
他のコラムが消えるかデフォルト値で置き換えられるのだろう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
Use ".open FILENAME" to reopen on a persistent database. sqlite> create table mytable (cp integer primary key, c1,c2); sqlite> .table sqlite> insert into mytable values(1,'aaa','bbb'); sqlite> insert into mytable values(2,'xxx','yyy'); sqlite> insert into mytable values(3,'ccc','ddd'); sqlite> sqlite> select * from mytable; 1|aaa|bbb 2|xxx|yyy 3|ccc|ddd sqlite> insert into mytable values(1,'sss','ttt'); Error: UNIQUE constraint failed: mytable.cp sqlite> insert or replace into mytable values(1,'sss','ttt'); sqlite> select * from mytable; 1|sss|ttt 2|xxx|yyy 3|ccc|ddd sqlite> sqlite> insert into mytable(cp,c1) values(1,'vvv'); Error: UNIQUE constraint failed: mytable.cp sqlite> insert or replace into mytable(cp,c1) values(1,'vvv'); sqlite> select * from mytable; 1|vvv| 2|xxx|yyy 3|ccc|ddd sqlite> |
一部しか指定しないと他のコラムが消えてしまう。
1 2 3 4 5 6 7 8 9 |
sqlite> insert or replace into mytable ...> values(2,'AAA', ...> (select c2 from mytable where cp=2) ...> ); sqlite> select * from mytable; 1|vvv| 2|AAA|yyy 3|ccc|ddd sqlite> |
こう書けばOKだが、コラムが増えたとき対応できない。
やる方法もあるのかも知れないが返って複雑になりそうだから素直にUPDATEとINSERTに分けたほうがいいのか
/repodir/repos/conf/svnserve.confでauthz-dbを有効にする
1 |
authz-db = authz |
/repodir/repos/conf/passwdにリードオンリーユーザを加える
1 2 |
normal = normalpass readonly = ropass |
/repodir/repos/conf/authz-dbでリードオンリーに設定する。セクションのパスはレポジトリのパス
1 2 3 4 5 6 7 |
[groups] okgroup = normal rogroup = readonly [/] @okgroup = rw @rogroup = r |
svnサーバを再起動して実験
svnコマンドに–username readonlyをつければreadonlyユーザでのアクセスになる。
1 |
svn --username readonly co .... |
コミットしようとすると以下のエラー
1 2 3 4 |
svn: E170001: Commit failed (details follow): svn: E170001: Authorization failed svn: E170001: Your commit message was left in a temporary file: svn: E170001: '/pass/svn-commit.tmp' |