CGOptimizer麦茶の開発版を更新しました。
今回の更新では暫定的に下記のJpeg系ツールを追加しました。
暫定対応のため、細かくパラメータ設定ができません。
また、開発版のため、不具合を含んでいる場合がありますので使用時に画像のバックアップを行うようにしてください。
CGOptimizer麦茶の開発版を更新しました。
今回の更新では暫定的に下記のJpeg系ツールを追加しました。
暫定対応のため、細かくパラメータ設定ができません。
また、開発版のため、不具合を含んでいる場合がありますので使用時に画像のバックアップを行うようにしてください。
ZenCoding for SakuraEditor を更新しました。
更新内容
使うことなんてないと思うけれど、一応メモ。
Windows系コンパイラなら問題なくコンパイルできると思う。
一応、MinGWでコンパイル、動作確認は行った。
#include <windows.h>
#include <stdio.h>
int main(void)
{
unsigned int GV = GetVersion();
printf("GetVersion API(GV) = %08X\n\n", GV);
printf("_winver = %08X\n", _winver);
printf("_winmajor = %08X\n", _winmajor);
printf("_winminor = %08X\n", _winminor);
printf("_osver = %08X\n\n", _osver);
printf("(( GV << 8 ) | (( GV >> 8 ) & 0XFF)) & 0XFFFF = %08X (= _winver)\n",
(( GV << 8 ) | (( GV >> 8 ) & 0XFF)) & 0XFFFF );
printf("GV & 0XFF = %08X (= _winmajor)\n",
GV & 0XFF );
printf("( GV >> 8 ) & 0XFF = %08X (= _winminor)\n",
(( GV >> 8 ) & 0XFF));
printf("GV >> 16 = %08X (= _osver)\n\n\n",
(GV >> 16) );
// Windows version(_winmajor, _winminor, _osver)
printf("This system is [");
if ( _osver < 0X8000 ) {
// NT Group (_osver LowWORD MSB = 0)
switch (_winmajor) {
case 3:
case 4:
printf ("Windows NT %u.%u Build %u",
_winmajor, _winminor, _osver);
break;
case 5:
switch (_winminor) {
case 0:
printf ("Windows 2000 Build %u", _osver);
break;
case 1:
printf ("Windows XP Build %u", _osver);
break;
case 2:
printf ("Windows Server 2003 family Build %u",
_osver);
break;
default:
printf ("NT Group Windows Build %u", _osver);
}
break;
case 6:
switch (_winminor) {
case 0:
printf ("Windows Vista or Windows Server 2008 Build %u", _osver);
break;
case 1:
printf ("Windows 7 Build %u", _osver);
break;
default:
printf ("NT Group Windows Build %u", _osver);
}
break;
default:
printf ("NTGroup Windows Build %u", _osver);
}
}
else {
switch (_winmajor ) {
case 0: //Win32s Group
case 1:
case 2:
case 3:
printf ("Win32s Build %u", _osver & 0X7FFF);
break;
case 4: // 9X Group (_osver is invalid.)
switch (_winminor) {
case 0:
printf ("Windows 95 Build ----");
break;
case 10:
printf ("Windows 98 Build ----");
break;
case 90:
printf ("Windows Me Build ----");
break;
default: // To make sure
printf ("Newer than Windows Me");
}
break;
default: // To make sure
printf ("Newer than Windows Me");
}
}
printf("]");
return 0;
}
インタラクションデザインの入門にもってこいの一冊。
内容は考え方と担当するところを丁寧に書いてくれている。
まさに、必要な知識を吸収するのに最適な本。
インタラクションにスポットを当てているけれど、Webアプリ開発者および、デザイナーも読んでほしい。
仕事の進め方も例を上げながら記述されていて実にわかりやすく、「どんなふうに仕事してるの?」とか「インタラクションデザイナーって必要なの?」って時にこの本を差し出したい。それぐらいに明確に、わかりやすく、読みやすい、いい本である。
すでに、在庫が少なくなりAmazonでは2倍の値がついてるけれど、
ジュンク堂で何冊か残っていて定価で買えたのはほんとうに運が良かった。
CGOptimizer麦茶の開発版を更新しました。
Download(CGOptimizer.zip)
今回の更新では暫定的に下記のPNG系ツールを3つ追加しました。
暫定対応のため、細かくパラメータ設定ができません。
また、開発版のため、不具合を含んでいる場合がありますので使用時に画像のバックアップを行うようにしてください。
同梱されているドライバCDは文字化けする上、UM-740が存在せず、UM-750となっており、
しかも、インストールを行うとAvira AntiVirに引っかかる危なさ。
これではまったくもって、信用できないため、Webから新しいドライバを入手してインストールした。
Jpegoptim.cの変更なんだけど下記の変更のほうが修正個所が1か所にまとまるしいいかも。
@@ -53,6 +53,39 @@
#define ICC_IDENT_STRING "ICC_PROFILE\0"
#define ICC_IDENT_STRING_SIZE 12
+#ifdef WIN32
+#define uid_t int
+#define gid_t int
+#define ROOT_UID 0
+#define ROOT_GID 0
+#define realpath(N,R) _fullpath((R),(N),_MAX_PATH)
+uid_t getuid(void)
+{
+ return ROOT_UID;
+}
+uid_t geteuid(void)
+{
+ return ROOT_UID;
+}
+gid_t getgid(void)
+{
+ return ROOT_GID;
+}
+gid_t getegid(void)
+{
+ return ROOT_GID;
+}
+int setuid(uid_t uid)
+{
+ return (uid == ROOT_UID ? 0 : -1);
+}
+int setgid(gid_t gid)
+{
+ return (gid == ROOT_GID ? 0 : -1);
+}
+
+#endif
+
void fatal(const char *msg);
struct my_error_mgr {
Jpegoptimのコンパイルにちょっと躓いたのでメモ。
$ cd /src/jpegoptim-1.2.3/
$ autoconf
$ configure
configure: error: cannot find install-sh, install.sh, or shtool in aux "."/aux
@@ -3,7 +3,7 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(jpegoptim.c)
AC_CONFIG_HEADER(config.h)
-AC_CONFIG_AUX_DIR(aux)
+AC_CONFIG_AUX_DIR(sub)
AC_CANONICAL_HOST
$ mkdir sub
$ cp ../jpeg-6bx/install-sh ../jpeg-6bx/config.sub ../jpeg-6bx/config.guess ./sub
$ autoconf
$ configure
jpegoptim.c:354: undefined reference to 'realpath'
jpegoptim.c:354: undefined reference to 'realpath'
@@ -351,7 +351,11 @@
}
break;
case 'd':
- if (realpath(optarg,dest_path)==NULL || !is_directory(dest_path)) {
+#ifdef WIN32
+ if (_fullpath(dest_path,optarg,MAXPATHLEN)==NULL || !is_directory(dest_path)) {
+#else
+ if (realpath(optarg,dest_path)==NULL || !is_directory(dest_path)) {
+#endif
fatal("invalid argument for option -d, --dest");
}
if (verbose_mode)
@@ -441,8 +445,13 @@
fatal("splitdir() failed!");
strncpy(newname,argv[i],sizeof(newname));
}
- snprintf(tmpfilename,sizeof(tmpfilename),
+#ifdef WIN32
+ snprintf(tmpfilename,sizeof(tmpfilename),
+ "%sjpegoptim-%d.tmp", tmpdir, (int)getpid());
+#else
+ snprintf(tmpfilename,sizeof(tmpfilename),
"%sjpegoptim-%d-%d.tmp", tmpdir, (int)getuid(), (int)getpid());
+#endif
}
retry_point:
auxというのはBSD系の名残でinstall-shなどの補助スクリプトが各のされているフォルダなのだが、
WindowsではauxというフォルダはDOSの特殊フォルダの名残で作成できない。
そこで、参照先を”sub”に変更し、新たに”sub”フォルダを作成し、GNU系ソフトに同梱されている補助スクリプト類を格納した。
また、コンパイル時にエラーになったrealpathやgetuidはPOSIX系の関数で
Windowsには存在しないため同様の動作するものに置き換えたり削除したりしている。
今回の例ではコンパイルを通すためにrealpathを_fullpathに置き換えたけれどもっときれいに書き直した方がいいな
QEMUの最新版がほしかったので自分でコンパイルしてみたときのメモ。
/pc-bios/optionrom/signrom.sh: line 31: * 512 - 1
: syntax error: operand expected (error token is "* 512 - 1 ")
make[1]: *** [multiboot.bin] Error 1
rm multiboot.o multiboot.raw multiboot.img
make: *** [romsubdir-optionrom] Error 2
/src/SDL-1.2.14/configure --prefix=/mingw --disable-shared
make
make install
mkdir /home/***/QEMU
/qemu-0.12.4/configure --prefix=/home/***/QEMU --target-list=i386-softmmu
make
make install
まだ全部試せたわけじゃないけれど、基本的に無料で集めたつもり。
個人学習
コミュニティ
いいサイトや、使ってみた感想などありましたらここを参照した方へのアドバイスになりますので
コメントに書いていただけると助かります。