mieki256's diary



2024/01/02(火) [n年前の日記]

#1 [prog] メモリ上のpngバイナリをOpenGLのテクスチャとして利用

昨日、bin2c というツールを使えば、何かしらのバイナリファイルをC言語の unsigned char 配列の形(.h)に変換できると知った。

_mieki256's diary - bin2cについて

その unsigned char 配列を .c に include すれば、実行形式 (.exe) にpngバイナリを含めてしまうこともできるはず。

そんなわけで、実行形式(.exe)に含まれたpngバイナリを OpenGL のテクスチャとして利用できるのか試してみた。もし、それができれば、.exe を1つ配布するだけで画像描画をするプログラムを配布することができるなと…。わざわざ .exe と一緒に .png も配布しなくて済む。例えばスクリーンセーバの類を作って配布する際などは、少しだけ都合が良いかもしれない。

使用言語はC言語。環境は Windows10 x64 22H2 + MinGW (gcc 6.3.0) or MSYS2 (gcc 13.2.0)。

今回、メモリ上のpngバイナリを読み込んで展開しなければいけないけれど、そこでlibpngライブラリ、もしくは stbライブラリを使えるのか試してみた次第。

必要なライブラリ :

以後のサンプルをビルドするには、freeglut、libpng、zlib(libz) が必要。

MinGW上での導入作業は以前のメモを参考に。

_mieki256's diary - MinGWでfreeglutを使ってみた
_mieki256's diary - MinGW上でzlibやlibpngをビルドしてみた

MSYS2 の場合はパッケージが用意してあるので、pacman -Ss xxxx で検索して、pacman -S xxxx でインストールすればいい。
pacman -S mingw-w64-x86_64-freeglut
pacman -S mingw-w64-x86_64-libpng
pacman -S mingw-w64-x86_64-zlib

pacman -S mingw-w64-i686-freeglut
pacman -S mingw-w64-i686-libpng
pacman -S mingw-w64-i686-zlib

余談。pacman -Ss stb で検索して気づいたけれど、MSYS2 の場合、stbライブラリもパッケージとして用意されてるっぽいなと…。
mingw-w64-x86_64-stb
mingw-w64-i686-stb

_Package: mingw-w64-x86_64-stb - MSYS2 Packages

include/stb/stb*.h という形でインストールされるらしい。ということは、「#include <stb/stb_image.h>」といった形で include して利用できるのだろうか? 試してないから分からないけど。

libpngを使う事例 :

libpngを使えば、png画像を開いて画像情報を取り出すことができる。

libpng の使用サンプルは、一般的に、ストレージ上のpng画像ファイル名を渡して、ファイルポインタでファイルを読み込んで処理をしていく事例がほとんどだけど。ファイルから読み込むあたりの処理を、別途関数で書いて、その関数を libpng に設定してやることで、メモリ上に存在するpngバイナリを読み込んで処理できるらしい。その方法については、以下のページが参考になった。ありがたや。

_008 PNGテクスチャの読み込み [stepism]
_C言語 メモリ上にある、PNGデータをlibpngを介して読み込むサンプル。 - うーびのメモ


まずは、bin2c を使って、png画像を .h に変換する。bin2c は、SourceForge で公開されている版、bin2c-1.1.zip を利用させてもらった。

_bin2c download | SourceForge.net

bin2c-1.1.zip を解凍すると、中に bin2c.exe というファイルがあるので、コレを利用する。

_texture.png を、texture.h に変換する。
.\bin2c.exe -o texture.h texture.png

texture.h が得られた。

_texture.h

コレを、「#include "texture.h"」で include してやれば、exeファイルにpngバイナリを含めることができるはず…。


OpenGL でテクスチャを描画するサンプルを作成。以下のページで紹介されているサンプルを参考にさせてもらった。

_PNGファイルをOpenGLで扱う話

以下が、メモリ上(.exeファイル内)にあるpngバイナリを、libpngで処理して、OpenGL のテクスチャとして描画するサンプル。

_02_loadpng_draw.c
// OpenGL + libpng sample. PNG image is in memory

#include <stdio.h>
#include <stdlib.h>
#include <GL/freeglut.h>
#include <png.h>

// png image binary
#include "texture.h"

GLuint texture;
int offset = 0;

// Callback function for reading data in libpng
void ReadEndProcess(png_structp _pPng, png_bytep _buf, png_size_t _size)
{
  unsigned char* p = (unsigned char*)png_get_io_ptr(_pPng);
  memcpy(_buf, p + offset, _size);
  offset += _size;
}

/**
 * Load texture from png image on memory
 *
 * @param[in] _pngData png binary on memory
 * return GLuint OpenGL texture ID. if 0, process fails
 */
GLuint createTextureFromPngInMemory(const unsigned char* _pngData)
{
  GLuint texture;
  png_structp png_ptr = NULL;
  png_infop info_ptr = NULL;

  unsigned int width, height;
  int depth, colorType, interlaceType;

  int rowSize;
  unsigned char *data;

  // PNG file ?
  if (png_sig_cmp(_pngData, 0, 8) != 0)
    {
      fprintf(stderr, "createTextureFromPngInMemory() : Not png file binary");
      return 0;
    }

  // create png read struct
  png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);

  if (png_ptr == NULL)
    {
      return 0;
    }

  // create png information struct
  info_ptr = png_create_info_struct(png_ptr);

  if (info_ptr == NULL)
    {
      png_destroy_read_struct(&png_ptr, NULL, NULL);
      return 0;
    }

  // set read data callback function
  png_set_read_fn(png_ptr, (png_voidp)_pngData, ReadEndProcess);
  offset = 8;

  // If error, jump here
  if (setjmp(png_jmpbuf(png_ptr)))
    {
      // Release allocated memory
      png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
      return 0;
    }

  // Skip identification area (8 bytes) in png files
  png_set_sig_bytes(png_ptr, 8);

  // Load image information
  // get width, height, bit depth, color type, interlace mode
  png_read_info(png_ptr, info_ptr);
  png_get_IHDR(png_ptr, info_ptr, &width, &height, &depth, &colorType, &interlaceType, NULL, NULL);

  // support RGB/RGBA only
  if (colorType != PNG_COLOR_TYPE_RGB && colorType != PNG_COLOR_TYPE_RGBA)
    {
      fprintf(stderr, "createTextureFromPngInMemory() : Supprted color type are RGB/RGBA only.");
      png_destroy_info_struct(png_ptr, &info_ptr);
      png_destroy_read_struct(&png_ptr, NULL, NULL);
      return 0;
    }

  // not support interlace
  if (interlaceType != PNG_INTERLACE_NONE)
    {
      fprintf(stderr, "createTextureFromPngInMemory() : Interlace image is not supprted.");
      png_destroy_info_struct(png_ptr, &info_ptr);
      png_destroy_read_struct(&png_ptr, NULL, NULL);
      return 0;
    }

  // calc memory size
  rowSize = png_get_rowbytes(png_ptr, info_ptr);
  data = malloc(rowSize * height);

  // read pixel
  for (int i = 0; i < height; i++)
    {
      png_read_row(png_ptr, &data[i * rowSize], NULL);
    }

  png_read_end(png_ptr, info_ptr);

  // create OpenGL texture
  glGenTextures(1, &texture);

  // select texture
  glBindTexture(GL_TEXTURE_2D, texture);

  // set texture from PNG image
  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);

  // Release allocated all memory
  free(data);
  png_destroy_info_struct(png_ptr, &info_ptr);
  png_destroy_read_struct(&png_ptr, NULL, NULL);

  return texture;
}

// draw OpenGL
void display()
{
  glClear(GL_COLOR_BUFFER_BIT);

  glColor4f(1.0f, 1.0f, 1.0f, 1.0f);

  // enable texture
  glEnable(GL_TEXTURE_2D);
  glBindTexture(GL_TEXTURE_2D, texture);

  // draw polygon
  glBegin(GL_QUADS);

  GLfloat v = 0.85f;

  glTexCoord2f(0.0, 0.0); // set texture u, v
  glVertex2f(-v, v);

  glTexCoord2f(0.0, 1.0);
  glVertex2f(-v, -v);

  glTexCoord2f(1.0, 1.0);
  glVertex2f(v, -v);

  glTexCoord2f(1.0, 0.0);
  glVertex2f(v, v);

  glEnd();

  // disable texture
  glDisable(GL_TEXTURE_2D);

  glFlush();
}

// Keyboard callback function
void keyboard(unsigned char key, int x, int y)
{
  switch (key)
    {
      case '\x1B':
      case 'q':
        // Exit on escape or 'q' key press
        glutLeaveMainLoop();
        // exit(EXIT_SUCCESS);
        break;
    }
}

int main(int argc, char **argv)
{
  glutInit(&argc, argv);

  glutInitDisplayMode(GLUT_RGBA);
  glutInitWindowSize(1280, 720);
  glutCreateWindow("OpenGL Texture Example");

  // create OpenGL texture from PNG image
  texture = createTextureFromPngInMemory((void *)&texture_png);

  if (!texture)
    {
      fprintf(stderr, "Failed create texture\n");
      exit(1);
    }

  glClearColor(0.2f, 0.4f, 0.8f, 1.0f);

  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

  glutKeyboardFunc(keyboard);
  glutDisplayFunc(display);

  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

  glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS);

  glutMainLoop();

  return EXIT_SUCCESS;
}
  • #include "texture.h" を書くことで、exeファイル内にpng画像のバイナリを含めてしまう。
  • pngバイナリは、texture_png という名前の unsigned char 配列になっている。
  • ReadEndProcess(png_structp, png_bytep, png_size_t) が、ファイルではなくメモリ上から読み込ませるためのコールバック関数。この関数を png_set_read_fn() に渡してやることで、「ファイルポインタじゃなくてこっちの関数を使ってデータを読み込め」と指示している。
  • GLuint createTextureFromPngInMemory(const unsigned char*) が、pngバイナリの先頭アドレスを渡すとOpenGLのテクスチャとして設定してくれる関数。


Makefile は以下。

_Makefile
# MinGW

02_loadpng_draw.exe: 02_loadpng_draw.c texture.h Makefile
    gcc 02_loadpng_draw.c -o 02_loadpng_draw.exe -D FREEGLUT_STATIC -lfreeglut_static -lopengl32 -lwinmm -lgdi32 -lpng -lz

texture.h: texture.png
    .\bin2c.exe -o texture.h texture.png

.PHONY: clean
clean:
    rm -f 02_loadpng_draw.exe
    rm -f texture.h
    rm -f *.o

make と打てばビルドできるけど…。要するに以下を実行すれば、gcc で .c をコンパイル&リンクして、実行形式 02_loadpng_draw.exe が得られる。
gcc 02_loadpng_draw.c -o 02_loadpng_draw.exe -D FREEGLUT_STATIC -lfreeglut_static -lopengl32 -lwinmm -lgdi32 -lpng -lz
  • -o hoge.exe で出力ファイル名を指定。
  • -lxxxx で、libxxxx.lib ライブラリをリンク。
  • -D FREEGLUT_STATIC で、freeglut をスタティックリンクするように指示しているらしい。

02_loadpng_draw.exe を実行すると、以下のウインドウが表示された。

02_loadpng_draw_ss.png


たしかに、exeファイル内に含まれているpngバイナリを、libpngで読み込んで、OpenGLのテクスチャとして利用することができた。

余談。MSYS2 (gcc 13.2.0) を使う場合は、以下の Makefile になった。

_Makefile.msys2
# MSYS2

02_loadpng_draw.exe: 02_loadpng_draw.c texture.h Makefile.msys2
    gcc 02_loadpng_draw.c -o 02_loadpng_draw.exe -D FREEGLUT_STATIC -lfreeglut -lopengl32 -lwinmm -lgdi32 -lpng -lz -static

texture.h: texture.png
    .\bin2c.exe -o texture.h texture.png

.PHONY: clean
clean:
    rm -f 02_loadpng_draw.exe
    rm -f texture.h
    rm -f *.o

make -f xxxx と打てば、xxxx を Makefile として利用できる。
make -f Makefile.msys2

stbライブラリを使う事例 :

画像読み込みを行うライブラリは色々あるけれど、stbライブラリという、ちょっと変わったライブラリがある。ヘッダーファイル(.h)を include するだけで各機能が使えてしまうライブラリで…。ヘッダーファイルをコピーしてきて、.c と一緒に置いて include するだけなので、導入が圧倒的に楽。

この stbライブラリを利用して、メモリ上にあるpngバイナリを利用できないか試してみた。今回は、画像の読み込みだけができればいいので、stb_image.h のみを入手して、.c と同じ場所に置いた。

_nothings/stb: stb single-file public domain libraries for C/C++
_stb/stb_image.h at master - nothings/stb


_bin2c を使って、 _png画像 texture.png_texture.h に変換。
.\bin2c.exe -o texture.h texture.png


以下が、stb(stb_image.h)を使って、exeに含まれているpngバイナリを、OpenGLのテクスチャとして利用するサンプル。

_03_loadpngwithstb.c
// OpenGL + stb sample. PNG image is in memory

#include <stdio.h>
#include <stdlib.h>
#include <GL/freeglut.h>

// use stb library
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"

// include png image binary
#include "texture.h"

GLuint texture;

/**
 * Load texture from png image on memory
 *
 * @param[in] _pngData png binary on memory
 * @param[in] _pngDataLen png binary size
 * return GLuint OpenGL texture ID. if 0, process fails
 */
GLuint createTextureFromPngInMemory(const unsigned char* _pngData, int _pngLen)
{
  GLuint texture;
  int width = 0, height = 0, bpp = 0;
  unsigned char *data = NULL;

  data = stbi_load_from_memory(_pngData, _pngLen, &width, &height, &bpp, 4);
  
  // create OpenGL texture
  glGenTextures(1, &texture);
  glBindTexture(GL_TEXTURE_2D, texture);
  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);

  // Release allocated all memory
  stbi_image_free(data);

  return texture;
}

// draw OpenGL
void display()
{
  glClear(GL_COLOR_BUFFER_BIT);

  glColor4f(1.0f, 1.0f, 1.0f, 1.0f);

  // enable texture
  glEnable(GL_TEXTURE_2D);
  glBindTexture(GL_TEXTURE_2D, texture);

  // draw polygon
  glBegin(GL_QUADS);

  GLfloat v = 0.85f;

  glTexCoord2f(0.0, 0.0); // set texture u, v
  glVertex2f(-v, v);

  glTexCoord2f(0.0, 1.0);
  glVertex2f(-v, -v);

  glTexCoord2f(1.0, 1.0);
  glVertex2f(v, -v);

  glTexCoord2f(1.0, 0.0);
  glVertex2f(v, v);

  glEnd();

  // disable texture
  glDisable(GL_TEXTURE_2D);

  glFlush();
}

// Keyboard callback function
void keyboard(unsigned char key, int x, int y)
{
  switch (key)
    {
      case '\x1B':
      case 'q':
        // Exit on escape or 'q' key press
        glutLeaveMainLoop();
        // exit(EXIT_SUCCESS);
        break;
    }
}

int main(int argc, char **argv)
{
  glutInit(&argc, argv);

  glutInitDisplayMode(GLUT_RGBA);
  glutInitWindowSize(1280, 720);
  glutCreateWindow("OpenGL Texture Example");

  // create OpenGL texture from PNG image
  texture = createTextureFromPngInMemory((void *)&texture_png, texture_png_size);

  if (!texture)
    {
      fprintf(stderr, "Failed create texture\n");
      exit(1);
    }

  glClearColor(0.2f, 0.4f, 0.8f, 1.0f);

  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

  glutKeyboardFunc(keyboard);
  glutDisplayFunc(display);

  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

  glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS);

  glutMainLoop();

  return EXIT_SUCCESS;
}

stb_image.h を利用するときは、ファイルの最初のほうで、以下を記述する。
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"

メモリ上にあるpngバイナリの読み込みは、以下の行で処理している。
  data = stbi_load_from_memory(_pngData, _pngLen, &width, &height, &bpp, 4);
  • _pngData : pngバイナリの先頭アドレス
  • _pngLen : pngバイナリのサイズ(byte数)
  • width : 画像幅を格納する変数
  • height : 画像高さを格納する変数
  • bpp : 何チャンネル持っているか。RGBなら3、RGBAなら4
  • 4 : どんな画像フォーマットも4チャンネル(RGBA)に変換するよう指定
  • stbi_load_from_memory() は、png画像を展開してベタに並んだピクセル情報のポインタを返す。

尚、利用し終わったら、確保したメモリを開放しないといけない。
  stbi_image_free(data);


Makefile は以下。

_Makefile (MinGW用)
_Makefile (MSYS2用)

# MinGW

03_loadpngwithstb.exe: 03_loadpngwithstb.c texture.h Makefile
    gcc 03_loadpngwithstb.c -o 03_loadpngwithstb.exe -D FREEGLUT_STATIC -lfreeglut_static -lopengl32 -lwinmm -lgdi32

texture.h: texture.png
    .\bin2c.exe -o texture.h texture.png

.PHONY: clean
clean:
    rm -f 03_loadpngwithstb.exe
    rm -f texture.h
    rm -f *.o

libpng を使った場合と大体同じだけれど、libpng と zlib(libz) を使わないので、-lpng -lz を省くことができた。

make と打ってビルド。03_loadpngwithstb.exe が得られた。実行すると以下のウインドウが表示された。

03_loadpngwithstb_ss.png


stbライブラリを使うことでも、exeファイル内のpngバイナリを読み込んで、OpenGL のテクスチャとして利用できることが分かった。

stbライブラリを使った場合、以下のメリットがあると言えそう。
  • 導入が簡単。
  • libpngを使った事例と比べると、圧倒的に少ない記述で済む。

逆にデメリットとしては、セキュリティホール面が不安、という点だろうか…。おそらく、libpngほど厳しくチェックされてるわけではないだろう…。そのあたりについては、配布ページでも言及されている。

This project discusses security-relevant bugs in public in Github Issues and Pull Requests, and it may take significant time for security fixes to be implemented or merged. If this poses an unreasonable risk to your project, do not use stb libraries.

nothings/stb: stb single-file public domain libraries for C/C++ より

「セキュリティホールの修正は遅れがちになるのでリスクを考えながら使ってね」てな感じだろうか。

もっとも今回、正体不明の画像を読み込ませるわけではないし…。自分で作成したpng画像を読み込むために使っているわけだから、特にデメリットは無さそうな気もする。

#2 [nitijyou] 弟が戻っていった

14:30頃に実家を出発して、17:00頃には帰宅したらしい。

2023/01/02(月) [n年前の日記]

#1 [digital] コンパクトデジカメのバッテリーが膨らんでた

コンパクトデジカメ Canon PowerShot A3300 IS のバッテリーが切れてることに気づいて、充電しようとバッテリーパックを取り出そうとしたものの、これがなかなか取り出せなくて…。おかしいな、以前はスポンと抜けたはずなのに。

ピンセットやラジオペンチを使ってどうにか抜き出してみたところ、バッテリー Canon NB-8L の真ん中がしっかり膨らんでいて、それで取り出せない状態になっていた。なんてこった…。劣化して膨らんでしまったのか…。

純正バッテリーや互換バッテリーについてググってみたものの、もはや市場には無いようで。困った。デジカメ本体はまだ動くのに、バッテリーがないせいでゴミになってしまうのか…。手持ちのスマホより画素数は多いし、撮影画像の色もスマホより全然イイ感じなのに…。

ちなみに、バッテリーパック Canon NB-8L には、3.6V, 740mAh (Li-ion), 2.7Wh と記述されていた。3.6V x 0.74Ah = 2.664Wh になるので、記述は合ってる気がする。

どうしてこの手のバッテリーの共通規格をメーカは作らない(作らなかった)のだろう…。製品毎に独自の形状やスペックにしているから、こうして入手に困る状況に…。

せめて、デジカメの外部にドーンとモバイルバッテリーがはみ出しちゃってもいいから、どうにか動かせるようにできないものか…。

家庭用電源で使う方法もあったらしい。 :

Canon PowerShot A3300 IS のマニュアルを確認したら、P164 に、「家庭用電源でカメラを使う」という項目があった。外部電源を使える仕様も備えているらしい…。バッテリーが入ってるはずの場所に、バッテリーの代わりにカプラー(DCカプラー)なるものを入れて、そのカプラーの端子にACアダプタの端子を差し込んで電源を供給する模様。手元のデジカメ本体の、バッテリーの蓋の部分を確認したところ、ゴム製の小さな蓋もついていて、そこを開けるとACアダプタの出力端子を差し込むことができるようになっていた。

Canon PowerShot A3300 IS 用のACアダプターは ACK-DC60 という型番らしい。「定格出力 DC 4.3V、1.5A」とスペック表には書いてある。

_【コンパクトデジタルカメラ】ACアダプターキット ACK-DC60 製品仕様

そういう仕組みで動かせるなら、スマホ用のモバイルバッテリー、DC5V, 1.5A ぐらいを想定したバッテリーで動かせそうな気もする…。まあ、カプラーとやらが入手できないと厳しいだろうけど。そのカプラーとやら、自作できないものだろうか。

コンデジは絶滅危惧種になってる。 :

いっそ新しい製品を、とググってみたけど、もうコンパクトデジカメ(コンデジ)という製品ジャンルはほとんど死滅状態のようで…。

ならばカメラ機能がヨサゲなスマホはどのあたりかとググってみたら20万円ぐらいするスマホがポンと出てきたりして、それはちょっとお値段が…。写真撮影に特化すれば、どう考えてもコンデジのほうが安い値段でイイ感じの写真が撮れていたのでは…。でもこうしてバッテリーが死んでしまったら、コンデジ本体があっても動かせない…。もったいない。実にもったいない。

コンデジにモバイルバッテリーを繋ぐことを前提にしたDCカプラーを、どこかで製造販売しないものだろうか…。プラスチックの箱に金属端子がついていれば使えそうなので、技術的なハードルは低そうな気もするのだけど。もちろん、モバイルバッテリーの選定はユーザの自己責任ってことで。

#2 [nitijyou] 弟が仙台に戻った

14:00頃に出発して、16:00頃に着いたらしい。

2022/01/02() [n年前の日記]

#1 [nitijyou] 年賀状を出してきました

遅くなりましたが年賀状を出してきました。元旦に届くスケジュールで作れなくて申し訳ないです。

須賀川郵便局本局まで電動自転車で行ってきて投函。

市内と市外で分けるものと思って分類して持って行ったのだけど、県内と県外で分けろと指示されていて…。市内なら局の管轄内で配達できるから楽になるという話を見かけたのだけど、そういうわけでもないということだろうか。

ネタで悩んでしまった。 :

年末からずっと年賀状のネタを考えていたのだけど、イイ感じの案が思いつかず。

いやまあ、寅年なんだからタイガーマスクだろうと参考画像を探してこのゴツゴツぶりは再現できる気がしないと諦めたり、虎縞模様と言えばラムちゃんでしょうとそのへんの紙に落書きしたらめちゃくちゃ下手で落ち込んだり、宇宙戦艦ヤマトのブラックタイガーをモデリングしようとして胴体と翼の接合部分の形状が把握できなくて挫折したり、タイガー戦車てのがあったよなとティーガーI戦車のモデリングデータを探してみたり、等々、結構ジタバタしてみたのだけど、どれもなんだか違うなと。このままではいつまで経っても年賀状を送れない。マズイ。ということで方針を変更して若干無難(?)っぽい画像を一旦作成したものの、やはりどうにも物足りず。帰省してた弟に話し相手になってもらってアイデア出しをしていたら良さそうなネタが出てきて、自分の中ではかなり盛り上がってそのネタの画像も作ってみたものの、作業を終えたあたりでこれは年賀状としてどうなの、朝になったら冷静になっちゃうやつだコレ、みたいな気分に。実際、朝になって仮印刷してみたソレを眺めたら…。いやー、やっぱりコレは無いよなと。

なんというか、自分の頭がどんどん固くなってきている気がする。駄洒落ネタすら浮かばなかったあたりが悔しい…。

#2 [nitijyou] 弟が仙台に帰った

PM01:00頃に出発して、PM03:30頃に到着したとの電話連絡有り。

#3 [anime] 「冴えない彼女の育てかた Fine」を視聴

BS11で放送されてたので視聴してみた。ゲーム制作をネタにしたハーレムモノというジャンル分けでいいのだろうか。TVアニメ版のその後を描いた映画、だと思う。たぶん。

TVアニメ版を見てないと設定が全然分からない系の映画だろうけど、自分も一応TVアニメ版をざっくり眺めていたので、フツーに面白かった。ファンの人なら満足できる内容だったのではないかと想像。

ネタバレになるけど、ラストのあたりで一旦 バッドエンドにしてからハッピーエンドにしていたあたりで感心してしまった。あのネタを事前に見せたからこっちで良かったと思えるのだろう、これもテクニックの一つなんだろうな、みたいな。

2021/01/02() [n年前の日記]

#1 [ubuntu][godot] Ubuntu Linux上でGodot Engineを動かしてみたり

ふとなんとなく、Ubuntu Linux 20.04 LTS上で Godot Engine 3.2.3 x64 を動かしてみたりして。

Godot Engine の公式サイトから Linux用のバイナリをDLして解凍。任意の場所に置いて、デスクトップ上でダブルクリックしてみたら、フツーに動いてしまった…。こんなにあっさり動くとは…。

簡単な3D表示をするプロジェクトを作って、Linux用のバイナリをエクスポートするところまで試してみたけど、これまたスンナリと動いてしまった。

つまり、Linux機 + Godot Engine でも、この手のゲームの開発はなんだかできそうだなと。

2020/01/02(木) [n年前の日記]

#1 [pc] M/Bについてググって調べてる

Socket AM4 の M/B について、スペック表を眺めたり、写真画像を眺めたりして調べてるところ。

ざっと眺めた感じでは、ビデオカードを差すスロットが、上から一段目にある製品と、上から二段目にある製品があるように見受けられる。

2スロットを占有してしまうビデオカードを使った場合、上から一段目にビデオカード用スロットがあるM/B では、二段目の PCI Express x 1 スロットがビデオカードで隠れてしまって使えない状態になってしまうのだろうなと…。そういうビデオカードを使いたい場合は、上から二段目にビデオカード用スロットがある M/B を選んだほうが、一番上の PCI express スロットを使えるのでマシ、ということになるのだろうか。

MicroATX の M/B なら、サイズからして拡張スロットが4本まで用意できるのだろうけど…。Socket AM4, MicroATX という検索条件では、2本か3本の場合が多いようだなと…。おそらくはチップセットにヒートシンクが付く関係で一定の面積を占有されるから、4本並べるスペースが無いのかなと。あるいは、そのあたりのチップセットは拡張スロットの本数に制限があるのだろうか。

#2 [nitijyou] 弟が仙台に戻った

PM02:00ちょっと前に出発。PM04:00過ぎ頃に到着したらしい。

2019/01/02(水) [n年前の日記]

#1 [pc] 弟から譲ってもらったSSDの型番をメモ

弟が中古のSSDをいくつか持ってきてくれた。親父さん用PCのSSDと交換したり、自分のメインPCのシステムドライブを換装できそうか実験する予定。

各製品の型番をメモ。
PLEXTOR PX-256M2P は、弟の手元で動作させた際に、あちこちのブロックが壊れてる感じの結果を出してしまうそうで。その部分を使わずに済ませる手があるなら、何かの実験用に ―― 例えば Linux等の起動実験に使えそうな気もするので一応貰っておくことにした。Linux の起動実験程度なら、16GB とか 32GB もあれば使えるはずだし…。

関連ページもメモ。

_SanDiskの格安SSD「Ultra II SSD」に省電力版が登場 - AKIBA PC Hotline!
_価格.com - SANDISK ウルトラ II SSD SDSSDHII-240G-J26 価格比較
_ASCII.jp:コスト重視のPC自作に狙い目のSanDisk「SSD PLUS」 (1/3)|最新パーツ性能チェック _価格.com - SANDISK SSD PLUS SDSSDA-240G-J26 価格比較
_PLDS、リード500MB/secのPLEXTORブランドSSD - PC Watch
_価格.com - PLEXTOR PX-256M2P 価格比較

2.5インチ用のHDD/SSDケースを入手しないといけないな…。HDD/SSDとUSB2.0接続で繋げる変換ケーブルは持っているけど、USB2.0で数百GBも読み書きしたら時間がかかりそうだし。後々実験用途でも使えるだろうから、この際、USB3.0接続のHDD/SSDケースを入手しておきたいところ。

#2 [nitijyou] 弟が仙台に戻った

14:30頃出発した…ような気がする。とメモ。

2018/01/02(火) [n年前の日記]

#1 [cg_tools] Atomタブレット上でお絵描きソフトを色々試用

WIndowsタブレットPC、DELL Latitude 10 (Atom Z2760, Windows8.1) 上で、お絵かきソフトを色々インストールして試用してみたり。せっかく WACOMのペンが使えるタブレットPCなのだから、お絵かきに使わない手は無いだろう…。もっとも、CPU が Atom なので、重いソフトは実用にならないだろうとは思うのだけど。

試用したソフトは以下。

_1bitpaint
_1bitPaper
_AzDrawing2
_AzPainter2
_8bitpaint
_FireAlpaca
_CLIP STUDIO PAINT PRO
_GIMP
_Krita

ざっくりと感想をメモ。1bitpaint、1bitPaper、AzDrawing2、AzPainter2 は動作が軽いソフトなので、線画だけならイケそうな感触だった。

8bitpaint は軽そうだけど、残念ながらちょっと使い方が分からなかった。

FireAlpaca は、ペン先をゆっくり動かす分にはなんとか描けそう。素早く動かすと悲しいことになるけど…。

CLIP STUDIO PAINT も、想像してたより結構使えそうな。線画なら…なんとか…なるかな…。

Krita は、そもそも画面が正常に表示されなかった。おそらく OpenGL関係だと思う。Atom Z2760 に載ってるビデオチップのドライバがアレなんだろう…。OpenGL を無効にすれば正常表示されたけど、シュッとペン先を動かしたら「もわんもわんもわん」な感じで線が引かれて、こりゃダメだと。

GIMPは意外とサクサク描けた。ただ、線画を描くのはちょっと厳しいような…。筆圧感知が妙というか。描き始めのサイズが大きくなってしまう。

タブレットPCの罠。 :

素早くペン先を上下に動かすとフリックが云々と表示されてちょっと困った。Windows側の設定でフリックを無効にしないと使いづらくなるアプリもあるようだなと…。

時々、ポインタに「Ctrl」とか「Alt」とか表示されて悩んでしまった。OS再起動以外に解決策が見つからない…。ペンを動かして何かの操作をすると、CtrlやAltが押しっぱなしの状態になるのではないかと想像してるけど、一体どんな操作でそうなるのか…。

ソフトウェアキーボードで入力しようとすると画面が隠れてしまって、各アプリの入力欄が見えなくなってしまう。厳しい…。ショートカットキーボードも使えないから作業効率もちょっと…。キーボードを増設して使わないとダメかな…。

何より、自分の手が邪魔…。今までペンタブレットで作業してたから…。この手を半透明表示に設定できればいいのに。

#2 [raspberrypi] Raspberry Pi Zero W上で love2d を動かすと画面解像度によっては60FPSにならない

今まで Raspberry Pi Zero W の画面解像度を 1280x720 に設定して動作確認してたのだけど。その画面解像度なら love2d を動かしても 60FPSに近い速度で動いてた。が、1920x1080 の画面解像度で動かしたら 45〜50FPS程度しか出ないことに気づいたり。更に、1920x1080の場合、ビデオ側に128MBほど渡してやらないと love2d が「テクスチャを確保できなかった」とエラーを出してしまう。

OpenGL ES で全画面表示に近い状態にするために、640x480 の canvas を作って、一旦 canvas に描画してから、その canvas をデスクトップの解像度に引き延ばして描画、ということをしているのだけど…。canvas に描画する際の処理時間はそれほど変わらないだろうから…。1920x1080 に引き延ばして描画するあたりで処理が間に合ってない、ということだろうなと…。

#3 [windows] Windows10のディスプレイ設定によってはTVTestの表示がおかしくなる

親父さんPCの液晶ディスプレイを昨日交換したのだけど、その後、TVTestの表示がおかしくなってることに気づいた。親父さんは、PC画面の文字が読みづらいので、スケーリングを150%ぐらいにしているのだけど。しかしTVTestの動画表示部分は100%のままだから、ウインドウサイズに対して動画のソレは小さくなるし、ウインドウを動かすと動画の表示位置だけどんどんずれていくという。スケーリングを100%にすると TVTest の表示は正常になるけれど、すると今度は親父さん画面上の文字を読めなくなるわけで。

TVTestの新しいバージョン(0.8.2, 0.9.0開発版)を探して導入してみたけれど変化なし。うーん。

解決策をググってたら、アプリのプロパティ → 互換性で、スケーリングを無視する云々にチェックを入れれば、アプリによっては解決する時もある、と知った。TVTest で試してみたところ問題解決。まあ、TVTestのウインドウ上の文字やアイコンは小さく表示されるわけだから、親父さんにしてみれば以前より少し使いづらくなったとは思うけど…。TV番組を見れない状態よりはマシだろう…。

#4 [nitijyou] 弟が仙台に帰った

PM02:00頃出発して、PM04:00前には着いたらしい。

2017/01/02(月) [n年前の日記]

#1 [pc] 薄型ケースPCを少しメンテナンス

弟が帰る前に動作確認をしておかないと。とりあえず、Ubuntu 16.04 LTS を入れて色々チェック。

Ubuntu 16.04 LTS をインストール。 :

USBメモリから起動して、Ubuntu 16.04 LTS をインストールした。Ubuntu 16.04 LTS のisoを _Ubuntu Desktop 日本語 Remixのダウンロード | Ubuntu Japanese Team から入手して、かつ、 _UNetbootin - Homepage and Downloads から unetbootin-windows-625.exe を入手。ブート可能なUSBメモリを作成。USBメモリは2GB。

サウンドにノイズが載る問題。 :

フロントパネルのヘッドフォンジャックにヘッドフォンを差すと、やたらとノイズが載るのが気になったけど。Ubuntu 16.04 LTS 上では、システム設定 → サウンド、で HDMI から音声出力をするように設定できた。そちらから出力する分にはノイズは気にならなかった。

また、PC背面の、M/Bについている端子にイヤフォンを差したらノイズが聞こえなかったので…。どうやらフロントパネルのオーディオ関連ケーブルの引き回しが悪くてノイズが載ってる可能性がありそうだなと。

解決策はあるのだろうか。そういえば、他のPCを自作した時も、フロントパネルのジャックにはノイズが載ってしまうことが多かったような。これはもう仕方ないような気もする…。

無線LANの接続が切れる問題。 :

_無線LAN子機 IO-DATA WN-G300UA (USB接続, IEEE802.11n/g/b 300Mbps対応) を使ってネット接続しようとしたら、やたらブチブチと接続が切れておかしいなと。フロントパネルのUSB端子に差してるせいだろうか。

どうやら Ubuntu のバグらしい。 Realtek RTL8192CU のドライバがよろしくない、との話。以下のページを参考にして github からドライバを入手して置き換えたら接続が切れない状態になってくれた。と思う。たぶん。

_ubuntuインストール時のセットアップ|あらかんゴルフ
_Realtek RTL8192CU無線LANのバグ対策|見よう見まねのブログ

sudo apt-get install git linux-headers-generic build-essential dkms
git clone https://github.com/pvaret/rtl8192cu-fixes.git
sudo dkms add ./rtl8192cu-fixes
sudo dkms install 8192cu/1.10
sudo depmod -a
sudo cp ./rtl8192cu-fixes/blacklist-native-rtl8192.conf /etc/modprobe.d/
sudo cp ./rtl8192cu-fixes/8192cu-disable-power-management.conf /etc/modprobe.d/
作業が終わったら再起動。

iwconfig で無線LANの状態を確認できる模様。

sshの設定。 :

メインPC + Putty からアクセスしてアレコレ作業したい。
sudo aptitude instal ssh

そのままだと接続が切れそうなので、/etc/ssh/sshd_config の ClientAliveInterval を設定。
ClientAliveInterval 15

_ssh 接続をタイムアウトしないようにする - maruko2 Note.

sambaをインストール。 :

Windowsからホスト名でアクセスしたいので、samba をインストール。
sudo aptitude install samba

設定方法は以前アレコレやった時のメモを参考にして作業したけど。ただし、Ubuntu 16.04 は samba のリスタート方法が変わってるらしい。
systemctl restart smbd
systemctl restart nmbd

シャットダウン時に時間がかかる。 :

シャットダウン時に以下のメッセージが表示されて1分以上待たされる。
[ *** ] A stop job is running for Make remote CUPS printers available locally (**s/ 1min 30s)

cupsのせいらしい。

_Ubuntu 16.04でシャットダウンがクソみたいに遅いとき - Qiita

以下を打ち込んで無効にした。
sudo systemctl disable cups-browsed.service

フォントをインストール。 :

sudo aptitude install fonts-mplus fonts-migmix fonts-mmcedar fonts-umeplus fonts-motoya-l-maruberi fonts-motoya-l-cedar fonts-horai-umefont fonts-ipafont-gothic fonts-ipafont-mincho

apt-get update すると変なメッセージが出る。 :

「AppStreamが云々」のメッセージがでる。以下のページを参考にして作業。

_「AppStream cache update completed,but some metadata was ignore due to erros」解決法 : 自分のためのメモ

sudo apt install appstream/xenial-backports
sudo appstreamcli refresh --force

無線LAN接続が切れることに対して試したアレコレ。 :

結局はドライバのせいだったけど、そこが原因と分かるまでアレコレ試した内容をメモ。

ホストが見つからないと怒られるので、/etc/network/interfaces に以下を追加してみたり。
dns-nameservers 8.8.8.8

/etc/nsswitch.conf を修正。
# hosts: files [NOTFOUND=return] dns
hosts: files dns

親機と再接続する時は以下を打って NetworkManager を再起動する。
sudo systemctl restart NetworkManager.service

/etc/NetworkManager/NetworkManager.conf を修正して dnsmasq を無効に。
dns=dnsmasq
↓
# dns=dnsmasq

以下、参考ページ。

_Ubuntu 16.04 LTSで、ネット接続が頻繁に切れる - q999
_Ubuntu16.04 (WiFi 無線LAN接続設定) ・ Libra Studioエンジニアブログ
_Ubuntu 16.04 インストール時の設定メモ (r271-635)
_How to reset network manager - Ask Ubuntu
_Ubuntu dnsmasqを停止する - LightHouse

IPv6無効化。 :

/etc/sysctl.conf を編集。以下を追加。
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
sudo sysctl -p を実行すれば反映される。

sudo cat /proc/net/if_inet6 を実行して何か表示されるようなら IPv6 が有効になってる。何も表示されないなら無効になってる。らしい。

/etc/default/grub を修正して、起動時に IPv6 を無効にするのもアリらしい。
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 noquiet nosplash"
sudo update-grub で反映できる。

ただ、NetworkManager とやらを使ってるなら、画面右上の無線LANアイコンをクリックして接続の編集を選べば、IPv6 を「無視」にして無効にすることもできるらしい。

_Ubuntu インストールしたらやること:IPv6を無効化する: プログラマの歩き方
_ubuntu-server-10-04:disableipv6 [ほげぴよwiki]

消費電力をメモ。 :

AMD A6-3500 は TDP65W。ただしGPUも内蔵してるわけで…。

実測してみたら、アイドル状態で 27W前後、何かしら処理をさせても47〜56Wぐらいだった。電源がACアダプタなあたりが効いてるのだろうか。比較的優秀な気がする。まあ、Intel Atom あたりと比べたらアレだけど。

#2 [nitijyou] 弟が仙台に戻った

昼ちょっと過ぎに出発。お袋さん曰く、無事着いたとの電話連絡があったらしい。

夜になって、ポータブルHDD用のUSBケーブルを弟が部屋に忘れていったことに気がついた。連絡したら保管しといてくれと言われたけど。HDD接続用の短いタイプって入手性はどうなんだろう。

#3 [nitijyou] 年賀状を作成中

blender 2.78 を使って鳥っぽい何かを作成中。ヤッターペリカンっぽいモノを作れないかなと夢想しつつ作業を始めたものの、途中で「ダメだ。無理だ。難し過ぎる」と悟った…。ヤッターペリカンは上手い。カッコイイ。

2016/01/02() [n年前の日記]

#1 [nitijyou][pc] 年賀状は描いたけど

描いて送ったものの、何のノリを再現しようとしてるのか伝わらないかもしれないと…。

年賀状のイラストを見た弟から指摘されて気が付いたけど、レトロPCっぽい画面と言っても、前景色と背景色を駆使して文字だけでそれっぽい画を描くという文化は、MZ-700にしか無かったんだよなと。 などと考えると、MZ-700だけが、日本製のレトロPCの中では画面表示に関して異端だったわけで…。なので、MZ-700っぽい画面がレトロPCっぽい画面に見えるかというと、一般的にはちょっと違うのかもしれないよな、と。

でもまあ、なんだか何か無理をして画を描いてることぐらいは伝わるだろうから、そこでレトロPCらしさを感じてもらえる可能性は…あるのかなあ。どうかなあ。

#2 [nitijyou] 色々な番組が録画できてなかった

弟から譲ってもらった、PT1 + 録画用PCのHDDが一杯になっていて、3ヶ月ほど何の番組も録画できてなかったことに今頃気が付いたり。ワンパンマンもおそ松さんも録画できてなかった。ガックリ。

HDDが一杯になると、0バイトのファイルばかりが作られてそれっきり、なのだな…。

#3 [pc] HDDのエラーチェックをしていたり

弟が持ってきてくれたSATA接続の3.5インチHDDが壊れてないかチェック開始。足元で埃を被ってたサブPCのリムーバブルケースに突っ込んで、USBメモリに入れた _UBCD(Ultimate Boot CD) で起動して、フルチェック。

Western Digital製のHDDなので、UBCD の HDD → Diagnosis → Data Lifeguard Diagnostic for DOS (Western Digital) を起動してチェックする。DOS起動時に止まってしまって悩んだけど、日記を検索してみたら _2011/10/20 に手順がメモってあった。Boot UMBPCI (semi-defensive) を選んで、途中で FdAPM を無効にしたらツールが起動してくれた。

サブPCの調子がよろしくない。 :

一応HDDのチェックをする前に memtest86+ でメモリが壊れてないかチェックしたのだけど、1passしたものの2週目の途中で動作が止まっていて不安になってきた。リセットしてやり直したら2passしたけど…。

サムスン製メモリがいかんのだろうか。サムスン製は、メモリテストでエラーが出ないのに不具合が起きるという話もあるし…。

それともCPUファンが止まって熱暴走してるとか。でも、回転数は検出できてるんだよなあ…。

2015/01/02(金) [n年前の日記]

#1 [pc] WordやLibreOfficeでも年賀状は作れるのですな

ふと、Word や LibreOffice で年賀状はどの程度作れるのかが気になってきたのでググったり。通信面? 文面? はハガキサイズの用紙に設定してペタペタ貼っていけば作れるけど、宛名面はどうなるんだろうと。

_Word 2007で年賀状/はがきの宛名面(表面)を差し込み印刷で作成する方法 - 121ware.com Q&A
_年賀状の宛名印刷 ワープロ編:ワード(Word)とエクセル(Excel)で年賀状の住所録作成、宛名を印刷「年賀状・暑中見舞いドットコム」2015年・平成27年未年(ひつじ年)版
_宛名印刷はWordにおまかせ!--ワード
_Libre Officeで年賀はがきの宛名差し込み印刷(横書き):沖縄ubun人
_GreetingCards-HOWTO_2 - OpenOffice.org Q&A
_縦書き宛名印刷
_年賀状宛名印刷
_年賀状の宛名書きを無料オフィスソフトLibreOfficeを使って作成【レモン】81 - YouTube
_LibreOfficeでハガキの宛名を縦書き印刷する ( ソフトウェア ) - アルファのブログ - Yahoo!ブログ

差し込み印刷機能を使えば宛名面も作れるらしい。特に Word は、ウイザード形式で選んでいく際、「年賀状」という項目がちゃんと用意されてるようで。

ということで、Microsoft Office がプリインストールされてるPCを使ってる人なら、Word と Excel で年賀状は作れる、ってことで。

もっとも、それぞれの解説ページをざっくり眺めると、どれも操作が面倒臭そうな印象も。やってることは同じでも、簡単操作っぽく見せているのが年賀状ソフト、かもしれず。

#2 [android] Android機のカメラをスキャナ代わりにできないかと実験

手元に、メモ用紙に描いた落書きがあって。PCに取り込んで用紙自体は捨ててしまおうと思ったのだけど、わざわざスキャナを起動するのも面倒くさいなと。一応、フラットベッドスキャナ、(モバイル)ドキュメントスキャナは持っているのだけど、引き出しの中から取り出して、USBケーブルを繋ぐのが面倒臭い。

そこで、Androidタブレット機、Lenovo IdeaPad Tablet A1 のカメラ機能を使ってスキャンできないかな、と思いついて。

ググってみたら、その手のソフトは結構あるようで。とりあえず、 _CamScanner スキャンPDF作成 なるアプリを試用してみたり。

カメラで撮影した段階では、用紙は斜めになってるわけだけど。トリミングすべき範囲を自動判別後、逆の透視変換(?)をして、スキャン画像のようにしてくれる。

しかし、ミリペンで描いた落書きは一応判別可能な状態で取り込めたけど、鉛筆で描いた落書きは全然取り込めなくて。線がボケボケで話にならない。紙と鉛筆ではコントラストがほとんどないから、仕方ないよな…。それに、Android機のカメラの画素数が低いことも影響してそう。300万画素のCMOSセンサでは厳しいだろうなと。

ということで、モノグサせずにちゃんとしたスキャナを引っ張り出さないとダメだわ、てな結論に。

もしかすると、複合機を持ってたらこのあたり少しは快適になるのだろうか。引き出しの中から取り出すこともなければ、ケーブルを繋ぐ必要もないし。常にケーブル接続されてるか、もしくは Wi-Fiで繋がっていてケーブル要らずのはずだから。

もっとも、年に何回使うんですか、という気も。今だって滅多に使ってないのに。いや、使いやすければもっと頻繁に使うようになるんだろうか。どうなんだろう。自分の場合は怪しいな…。

#3 [emacs] NTEmacs 24.4をインストール

今まで NTEmacs 24.3 を使ってたのだけど、試しに 24.4 もインストールしてみようかと。 _Emacs 24.4リリース!ファーストインプレッション | るびきち「日刊Emacs」 によると、設定ファイルを変更する必要があるらしいので、面倒臭くて今まで試用しなかったのだけど。

とりあえず、以下の版をDLさせてもらったり。ありがたや。

_chuntaro/NTEmacs64

emacs-24.4-IME-patched.zip をDLして解凍。任意のフォルダに置く。bin/runemacs.exe を実行したら起動してくれ、たように見えたけど、「~/.emacs.d/ が load-path に設定されてるぞ」と警告が出る。

_emacs24 - Disable warning about emacs.d in load path - Stack Overflow によると、どうやら ~/.emacs.d/ 以下に *.el を置くことは推奨されてないらしい。仕方ないので、~/.emacs.d/elisp/ というフォルダを作成して、そこに *.el を移動。また、~/.emacs に対して、~/.emacs.d/ 直下に .el があるはずだと指定されてる部分を探して修正。

_NTEmacs / Emacs for Windows でも 24.4 が配布されてるのだけど、こちらの版は w32-ime-initialize がどうのこうのとエラーが出てしまった。

migemo が動かない。 :

NTEmacs 24.3 までは、bin/ 直下に cmigemo.exe と migemo.dll を置いてたけど。24.4 からは置く場所が変わったらしい。

libexec/emacs/24.4/x86_64-pc-mingw32/ 以下に cmigemo.exe と migemo.dll を置いたら、cmigemo が存在すると認識してくれた模様。

C/Migemo は、 _C/Migemo - KaoriYa で公開されてる 64bit版を使わせてもらいました。ありがたや。

タスクバー上のアイコンがおかしい。 :

runemacs.exe をタスクバー上に登録したら、2つになったり、DOS窓が開いたり。

以下の記事を参考にして、ショートカットファイルの AppID を変更。

_Windows7でemacsのアイコンが2重に表示されるのを防ぐ|ざる魂
_NINE GENERATIONS: Emacs (NTEmacs) 23.1 をWindows 7上で少し快適に使う - Part.2

AppID を変更するツールは、 _win7appid - Windows 7 Shortcut Application Id Tool - Google Project Hosting を使わせてもらった。
Win7AppId1.1.exe ショートカットファイル.lnk GNU.Emacs
で、変更できる。

2014/01/02(木) [n年前の日記]

#1 [movie] 「パシフィック・リム」を視聴

弟に薦められて(?)、視聴してみたり。

素晴らしい。まるで夢でも見ているかのような映像・展開だなと。巷の評判にも納得。これは素晴らしい…。大絶賛されるわけだなと。

誰かが、「これはポルノムービーだ」と称してたけど、たしかにそれも一理あるなと。男の子の夢を存分に突っ込んでしまった映画のように思えたり。巨大ロボットと怪獣のプロレスバトル全開、だもの…。

2013/01/02(水) [n年前の日記]

#1 [nitijyou] 弟が仙台に戻った

夜から雪が降り始めそうなので、酷くなる前に帰るとのこと。そもそもこっちに居ると寒いわ乾燥するわで体調悪化しそう、とのことで。うむ…すきま風がガンガン入るもんな…。

#2 [pc] 録画用PCでアレコレ作業

Windows7 Home 上ではリモートデスクトップ機能を使えないはずだけど、パッチを当てると使えるかも、という記事を見かけたので試してみたり。なるほど、たしかにリモートデスクトップ接続が使えるように見えた。画面描画も結構速い。ただ、音声も転送できるはずが、鳴らない。相手先のPC上で、デバイスがねえよ、みたいなエラーダイアログが表示される。なんでだろ。また、リモートデスクトップ接続から、相手先をスタンバイ(スリープ)状態にできないようで。そのへんよくわからないので、やはり Brynhildr を使い続けることに。ただ、Brynhildr を使ってると、相手先の Aero が無効になっちゃうのが気になる。

Paragon Backup & Recovery 2012 Free を使って、SSDの内容を別HDDにイメージとしてバックアップ。これでもしSSD内のソレが壊れても、今日の状態までは戻せるはず。

2012/01/02(月) [n年前の日記]

#1 [anime] 雑誌版アニメスタイルを眺めたり

弟が最新号を持ってきたので少し読ませてもらったり。神山監督のイノセンス評が笑えるから読んでみろ、みたいな薦められ方を。たしかに笑えた。本編は未見だけど興味が湧いてきた。そんなに凄いのか。変な方向で。

雑誌そのものをパラパラめくった印象では、とにかく濃いなと。これは自分も買って読まないと細部まで読めないのではと思ったが、弟曰く発行部数限定の品だからもう売ってないよとのことで。そうか、買えないのか…。こういう時、紙の本は実に面倒臭いなと。まあ、紙の本だからこそできる紙面作りをやりたいと考えての創刊(復刊?)だったはずなので、その分デメリットが出てくるのは仕方ないんだろうけど。

2011/01/02() [n年前の日記]

#1 [linux] 自宅サーバが外部から見えなくなってました

no-ip.com のアカウントが無効になってたみたいです。スイマセン。IPアドレス登録を更新して有効にしておきました。

もし、 _http://blawat2015.no-ip.com/ でアクセスできない時は、 _http://blawat2015.dyndns.org/ で、試しにアクセスしてみてください。

#2 [linux] no-ipへの登録メールアドレスを変更

通常なら60日間IPアドレスが変化しないと、「IPがずっと変わってないけど、アンタもしかして固定IP? ウチは動的IPに対してサービス提供してるので固定IPだったら使わんでくれ。このままだとアカウントを無効にしちゃうけど、それが嫌なら金払うか、とりあえずIPの登録更新作業をしろや」てなメールが届くのだけど。今回はそういうメールが送られてこなかったので、気づくのが遅れてしまったわけで。

no-ipのサイトにログインしたら、「このメールアドレスは正しいのか? なんか知らんが弾かれたぞ。今後も使うなら、ちゃんとやり取りできるメールアドレスを登録しろや」とメッセージが。どうも今回、こちら側のメールの受け取り、104.net当てのメールが、何かの不具合で拒否されてしまった予感。仕方ないので登録メールアドレスをひとまずgmailのソレに変更してみた。

自宅サーバ側の設定を少し変更。 :

noip2の設定を変更。
  1. /etc/rc.d/init.d/noipd stop で一旦サービスを停止。
  2. /usr/local/bin/noip2 -C と打って設定変更。登録メールアドレスを新しく登録したものに変えた。
  3. /etc/rc.d/init.d/noipd start でサービスを再開。
  4. /usr/local/bin/noip2 -S で状態確認。

ddclient の設定も少し変更。/etc/rc.d/init.d/ddclient を修正。
daemon ddclient -daemon 300
↓
daemon ddclient -daemon 1800
に。

plalaのDDNSも使ったほうがいいのだろうか。 :

plalaもDDNSサービスを提供しているのだけど、もしかするとそちらを使ったほうがいいのかもしれず。ウチからネットに接続している時は、必ずplalaを経由しているわけだから、plalaのアドレスでアクセスすれば間違いないわけで。ただ、プラスオプション=月額315円を払わないと利用できないという…。

月額315円を追加することで、1,365円分のチケットが使えるようになるらしい。自分や妹用のメールアドレスを増やすことに使えるだろうから、無駄にはならないだろうけど…。

2010/01/02() [n年前の日記]

#1 [nitijyou] 弟が仙台から帰省

本当は昨日帰ってくる予定だったけど、雪が積もってたので予定を変更して今日のPM03:00頃に到着。

余ったPCパーツをいくつかもらった。400W電源、250GBのSATA-HDD x 2、BUFFALO USB接続外付けHDD 500GB。

BUFFALOのHDDは、東芝 37Z9000を購入したときにセットで100円で買ったらしい。が、弟は既にRD-X8を持ってるし、PC上に強力な録画環境を構築してるので、開封すらしてないとのこと。ということで新品同様のそのHDDは親父さんが貰うことに。

#2 [nitijyou] 年賀状を印刷し終えた

Canon製プリンタの場合、インクジェット年賀葉書の通信面は「インクジェットはがき」を、宛名面は「はがき」を設定して印刷するらしいけど。検索してみたら、最近の年賀ソフトなら両面印刷可能なプリンタにも対応していて、一気に両面印刷ができるらしく。印刷枚数が多い場合は早く印刷できる、ということだろうか。

自分は未だに筆自慢2001を使っているので、片面ずつ印刷。いや、そもそも通信面は OpenOffice Writer でレイアウトしているので、片面ずつ印刷するしかないのだけど。

2009/01/02(金) [n年前の日記]

#1 [nitijyou] 年賀CG作ってます

blender でモデリング。GIMPで背景と合成。

宇宙空間でワープしてるような背景を作りたいのだけどなかなか上手くいかず。

2008/01/02(水) [n年前の日記]

#1 [nitijyou] 年賀状用CGを作成中

Shade 8 basic で作業。フェルトを縫い合わせたような表現をどうすればいいのかで悩んだり。基本となる形状を作成してからブーリアンで縫い目を抜き出したほうがいいだろうか。それともあらかじめ縫い目を意識した形状を複製して張り合わせたほうが…。あれこれ試してみたけれどどれも上手くいかない。Shadeの自由曲面ではなく、blenderのポリゴン編集でどうにかしたほうがいいのだろうか。うーむ。

#2 [novel] 弟からSF小説の本を何冊か借りた

以前弟が帰省した際に、名作と呼ばれるものをまったく読んでない的話をしたら、「これは抑えるべき」てなタイトルを今回何冊か持ってきてくれた。ありがたや。借りておくのです。いや、しばらくは読む時間が取れない予感もあるんだけど。

漫画も持ってきてくれた。 :

部屋の片付けのついでに残しておくほどでもなさげな単行本を段ボールに詰めて持ってきたとのことで。知らない作家さんばかり。ありがたく頂いたり。

2007/01/02(火) [n年前の日記]

#1 [anime] 涼宮ハルヒの憂鬱アニメ版を何話か見た

弟がDVDを持ってきていたので見せてもらった。本筋とも言うべき話数分は一通り鑑賞。

素晴らしい。こりゃ人気が出るわけだなと。

もっとも、TV放映時の1話 = DVDでのエピソード0 ―― 自主制作映画のダメなところを忠実にアニメで再現した話 ―― を見たときには不安になったけど。全て意図的にやっているのは判るけど、寒い。いや、寒さがオチに繋がるので成功してると言えるのだけど、見ていてとても複雑な気分になった。弟曰く、一種のフィルタリングになってるのではないかとの話で。なるほど、「この1話についてこれない人は、これ以上見ないほうがいいですよ。この後の作りも到底面白いとは思えないだろうから」的、スタッフの所信表明でもあったのだろうか…。

人物が手前に近づくと一瞬ピントがぼけて元に戻ったり等々、異様な作りこみ(?)に感心。どこかのブログ記事で書かれていたけど、たしかにこれは制作会社の技術発表会的作品なのかもしれないなと。

TV放映時、各話の放映順がフツーではなかったという話を聞いてかなり驚いた。視聴者が混乱するような構成をあえて行い、しかも成功するとは。…なんとなく、「ブギーポップは笑わない」アニメ版の構成を思い浮かべたり。アレは成功したのかどうか判らないんだけど。

キョンとやらがひたすらナレーション? モノローグ?を披露するあたりにも驚いた。スレイヤーズアニメ版の第1期でやろうとして失敗(?)して極普通の作りになった、という前例を思い出したりもして。スレイヤーズがダメで、ハルヒが上手くいった理由は何だろうな…。トラブルを起こすキャラ自身が語るのではなく、傍観者に徹してるキャラが語るところがポイントなのだろうか。…弟は、語る内容がほとんどツッコミになってるあたりがポイントじゃないかと言っていたけど。たしかにそれもありそうな。

それにしても、こんな凄い作品が作られてる時期に、MUSASHIのような作品も作られていたことを思うと…。なんだか複雑な気分。

2006/01/02(月) [n年前の日記]

#1 [tv] ライダー555、パラダイスロストを見た

井上脚本+田崎演出。結構面白い。CG関係は、かなりグッド。脚本レベルでも各所の見せ場を強く意識してるのがよく判る。

企画とか時間の長さを考えると仕方ないのだけど。TV版を見ていない人には判らないような作りになってるあたりがなんだかもったいない気もしたり。でも、TV版の視聴者へのサービスが最優先されるべき作品だから仕方ないよなぁ。

手を繋ぐといったモチーフ?が繰り返し使われてるところに感心。最初は友人として、次は見知らぬ者同士として、最後は種族の違う者同士として。ただ、種族の違いを乗り越えて、といったあたりの見せ方が弱かった気もしたり。ヒロイン側が「乗り越える」ところを見せなきゃいけないと思うのだけど、そのへんあまり気を使わずに流してしまった印象が。もっとも、そういう細かいところで悩んでいたら井上脚本の爆速ぶりは得られないのだろうとも想像するし。TV版を見てれば補完できるだろうとの考えがあるのかもしれんと想像したりもして。

仮面舞踏会の見せ方は、非常に惜しいと思った。シチュエーションだけを聞けばとてもヨサゲなのだけど、画で見るとそれほど印象的なシーンになってなかった。TV版でギターの回担当時に、特撮ヒーローモノらしからぬ映像を見せた田崎監督だから、件の素材との相性は良いだろうと思ったのだけど。うーむ。

ラスト前のバトルシーンと、仮面舞踏会を重ね合わせるような見せ方ができたら面白かったかもしれないとなんとなく思ったりもして。人間側の舞踏会と、オルフェノク側の舞踏会。仮面をつけた者同士が、フレームの中で流れるように動くという点では共通性があるわけだし。舞踏会で見せたステップやターンのカットを、アクションシーンの中でもリピートしたりとか。敵のボスに「舞え」「踊れ」とか台詞で言わせたりとか。舞踏会の中で印象的なカットを作って、それをラストでリピートしたりとか。…とかそんなことを思ったのだけど、もしかすると、舞踏と武闘でかけてあったのだろうかってそれじゃ駄洒落か。

余談。変身シーン。 :

直前に流れていたアバレンジャー映画版も含め、見ていて気がついたのだけど。走りながらの変身シーンは戦隊シリーズもライダー555も当たり前のようにやってるなと。格別、ライダー剣で技術革新が起きたわけではなさそう。が、画面をフラッシュさせずとも変身できるのは、やはりライダー剣から、ということになりそうだなとも思った。

#2 [movie] 「マッハ!」を見た

弟が、「帰省してもどうせ暇だろうし」と予測してDVDを借りてきていたので、一緒に見せてもらったり。

凄過ぎる。よくまあ、やれたもんだなぁ。

メイキング映像も見たけれど。スタッフが、「外国の映画ほど予算はかけられないが〜」と、何度もコメントしてたのが気になった。どうやらタイの映画業界は、「貧乏」というコンプレックスを抱えているらしい。なんだか日本の特撮業界・アニメ業界みたいだなと。

練習の時点で、本番と同じカット割りをしているあたりに驚いた。そこまで含めて練習・テストしないと、あの画面は作れない ―― それだけ緻密な作り方をしているということだろうか。撮影時の風景も流れたけど、カットの始まりが後ろにふらついてるアクションから始まっていたあたりにも驚いた。直前のカットで前から殴られているから、次のカットでは後ろにふらついていないといけないわけで。あの手のアクションシーンはそういった細部についても考えながら撮影しないといかんのだなと。

監督さんが工科系大学の建築学科卒らしく。何故、建築学科…。あちらでは、工科系出身 = 映画を作ることが可能なぐらいに恵まれた層、なのだろうか。だとしたら、日本と逆なのかもしれんなぁ。…いや、もしかすると、未だ映画関係専門の教育機関が存在してないだけかもしれんか。

2005/01/02() [n年前の日記]

#1 [nitijyou] CG作成中

モデリング作業中。なんだかよくわからない物体になりつつあるような気がする。これはこれで、子供にとっては怖いかもしれない。うーん。

#2 [nitijyou] 弟が帰省

仙台から帰ってきた。

#3 [pc] DVD+R/RWドライブをプレゼントされた

弟が新しいドライブを買ったそうで、今まで利用していたDVD+R/RWドライブ RICOH製 MP5125A を持ってきた。ウチのPC環境を考慮して、外付けケースをわざわざ購入・入れて持ってきたそうで、USB2.0接続ができる。おそらくは、妹が喜びそうな予感。親父さんのPCから、DVD-R/RWドライブを、持ってったり、戻したりしてたから。ただ、DVD+R/RW ってところがちょっとアレな気もするけど。

#4 [movie] ダーククリスタルを見た

弟が、DVDを買ったまま封も切ってなくて、暇つぶし用に持ってきたとのことで。せっかくだから一緒に見せてもらった。

参りました。どうやって作ったんだ。

メイキング映像を見て、さらに脱帽。これで、20年前の作品なのか。

#5 [game] GT4を見た

弟が持ってきた。妹からPS2を借りて、茶の間で、家族揃って鑑賞。

参りました。よくまあこんなに入れたなぁ。作業量を考えると頭が下がります。

お袋さんの乗ってるFitや、弟の乗ってるシビックTypeRとやらはあったけど、親父さんの乗ってるHONDA車は無かった。やっぱりレースが出来そうな車じゃないと選ばれないか。そもそもあらゆる車種を網羅するなんて不可能だしなぁ。…いっそモデリング機能とパラメータ作成機能を実装して、ユーザ一人一人にデータを作ってもらってそれを集めて配布するというのはどうかってチートし放題になってレースにならなくなってしまうからダメか。それ以前にそんな機能を内蔵した製品なんて作れるはずがない。PS2上でコントローラ片手に精密なモデリング作業。想像がつかない。無理だろうなぁ。

2004/01/02(金) [n年前の日記]

#1 [nitijyou] 親父さんが埼玉に

兄弟で新年会があるのだとか。朝早く、車で出かけた。

#2 [debian] xemacsでkinput2が絡んでくる件

_FAQ だった。
この問題は XEmacs (Emacs, Mule) のキーバインドが kinput2 に乗っ取られることによって生じます。XIM を無効にすればこの問題を回避できます。
(中略)
XEmacs (Emacs, Mule) を起動するときに、環境変数 XMODIFIERS を @im=none (none は実在しないもの) にしておく。XEmacs の場合なら具体的には
$ XMODIFIERS=@im=none xemacs & (sh系)
% env XMODIFIERS=@im=none xemacs & (csh系)
のように起動します。これを alias にしておくか /usr/local/bin/xemacs というシェルスクリプトにしておくと便利でしょう。
…だそうで。よくよく見てみたら、既に、~/.bashrcの中で、
alias xemacs='XMODIFIERS= xemacs'
とされていた。たしかに、krxvt上から xemacs & と打ち込んで起動した場合は問題が起きない。…しかし、gnome2のメニューから起動する場合はどう指定すればいいのやら。…コマンドのところに、
env XMODIFIERS="" /usr/bin/xemacs
と記述したら期待通りの動作になってくれた。C-oで、xemacsの"ステータス部分"に"[ あ ]"と表示された。

#3 [debian] Mozilla FirebirdのContextMenu Extensions v3.1.2003122901

動作がおかしい。「ページを送る」や「選択範囲を送る」の設定内容が、Firebirdを起動する度に全て消滅する。「カスタムスクリプト」のサンプルも中身が無いように見える。一般ユーザでは利用できない・設定を保存できないのだろうか。と思ってrootでも試してみたが症状変わらず。mozilla-firebird 0.7-6の不具合なんだろうか。

_ココ によると、
Windowsを起動したときにできるctxextensions.rdfをコピってインポートすればうまくいきました。
のだとか。Linux環境しか無い人はどうするねん。

_JavaScript Actions :

自作Javascriptをコンテキストメニューから呼び出せる拡張機能。コレが使えれば、ContextMenu Extensionsのかなりの部分を代替できそうな予感。と思って導入してみたのだけど、自作スクリプトがうまく動かない。書き方を間違えてるのか、URIが間違ってるのか。

_クイックサーチ :

ブックマークのキーワード機能割り当てを使うとロケーションバーからgoogle検索や辞書検索ができる。Ctrl+Lでロケーションバーにフォーカスが移動するので、「g 検索単語」と打てば、「g」というキーワードが割り当てられたブックマークに対して、「検索単語」を渡して表示できる。…しかし、google barの検索単語としては反映されないみたいのがちょっと。

_infoseek辞書の検索プラグイン :

英和、和英、国語の辞書が使える。便利。これでsleipnir程度には使えそう。

#4 [cg_tools][debian] GIMP 1.3.22

Mozilla FirebirdのSearch Plugin追加絡みでアイコン画像を作成しようとGIMP 1.3.22を起動したら、ダイアログ関係がタブ管理できるようになって、かなり使いやすくなっていた。と喜んだのもつかのま、各ダイアログとキャンバスが別のウインドウとして管理されてる為に、キャンバス上に居るつもりが、実は別のウインドウ上に居る事に気づかず、ショートカットキーを押しても反応が無くて混乱してしまうあたりは相変わらず。

2003/01/02(木) [n年前の日記]

#1 年賀状について

年賀状用のCGを今頃作ってます。もう少しかかりそうです。スイマセン。Shadeのレンダリングは終了。Photoshopでの合成作業中。

2002/01/02(水) [n年前の日記]

#1 ナディア

ビデオに録画してたナディア総集編(後編)とパンダコパンダを見てました。 _(以下略)

#2 [anime] ナディアとパンダコパンダ

ビデオに録画してたナディア総集編(後編)を見ました。

ラストの無茶苦茶な展開に目頭が熱くなってきます。
面白い。面白すぎる。

ディ○ニーだかアト○ンティスだか知らんが、超えられるもんなら超えてみろ! と言いたい。
超えるの絶対無理。優等生の○ィズニーにはな!
つーか、あんな設定押し出したら米国内の宗教団体から突き上げ食らって大騒ぎになるのでは(笑)
なんていうか…
『大人から「体に悪いからダメ」と言われてるのに子供には大人気の怪しさ大爆発の胡散臭い駄菓子』
みたいなアニメでしょうか。MMRアニメ? >ナディア

この頃の庵野さんはまだ良かった…
EVAで曲がってしまった…もったいないなぁ…

総集編の構成って誰がやってるんでしょう。
スタッフロールを見る限り監督とか関係してないっぽい気もするんですが…
素材の質の良さが効いてて面白いのかな。

ナディアのTV版、再放送始まるそうですね。
…やっぱり某映画の影響なのかな(笑)


「パンダコパンダ あめふりサーカス」を見て愕然。

風呂で大パンダが立ち上がると湯船のお湯が下がって子パンダと子トラが大パンダの足元で「でられないよー」と騒ぐんですよ。

水の中にコップ持ったまま大パンダが沈んでコップの中からジュースがもわんと水の中に浮き始めそれを大パンダがもひょ〜んと大口開けて飲みこむんですよ。

そんなの逆立ちしたって思いつかない。
やっぱり天才の考える事はスゴイ…

どこかで見たレイアウトが山のように見られるのも面白いですね。
ナウシカやトトロのあのカットだ、みたいな <順番逆だよ…

2000/01/02() [n年前の日記]

#1 (NoTitle)弟が持ってきた各種エ...

弟が持ってきた各種エミュレータソフトを動作させて遊びました。

まず「bleem」というPSエミュレータを起動。動かすまでは「PCでPSのソフト動かしてもな。CPUパワー足りなくて処理落ちするだろうし、テクスチャデータは荒いままだし」と全く期待してなかったのですが、それは大間違いでした。テクスチャが荒くても解像度を上げポリゴンに各種フィルタやアンチエイリアスをかけると、こんなに画面が美しくなるとは。凄いッス。これならSONYはPS1の資産でもう一儲けできますね。GPUにこういった処理を付け加えれば一般ユーザーを絶対騙せますよ。それにしても今のPCポリゴンゲームがPC性能に頼って開発しているかが想像できてしまうような。「bleem」の画面とあまりかわらないんだもの >PCゲーム画面
手持ちのPSソフトをほとんど試しましたが動かないソフトは結構ありますね。コナミのはほぼ全滅。音がおかしくなる事から、おそらくサウンドドライバのトリッキーな処理に対応できてないのだと思うです。はからずもコナミのサウンドプログラマーの技術力の高さが証明されてしまった、という事なのかな <全然別の理由だったりして? (^◇^;)
「レシプロヒート1」も試してみましたが、2インターのゲームのはずがなぜか1インターで動いてしまいました。なぜ? しかしテクスチャがむっちゃ綺麗。デザイナーさんのセンス(?)が光ります。「バスト1」も試しましたがこちらはXAと同期が取れずゲームになりません。でもゲーム画面はまるでムービー画面を見ているかのような美しさ。スゴ。
PS2の画面ってこんな感じなんだろうな。楽しみ。

「NEO RAGEX」というNEOGEOのエミュレータも起動。音といい画面といい完璧ですね。でもラスター処理が一部再現できないみたい。BG画面が無くなって空中にキャラが立ってます。
ここまでエミュレートできるなら、これを商売にしない手は無いと思ったんですが、どうなんでしょ。ユーザにとっても確実・低価格・気軽にゲームが楽しめるのはメリットがあるはず。少なくとも技術的には可能な事が証明されてるのだから、後は権利関係や金を回収する事に関して整備していけば、ってそこが一番の問題なのでしょうけど。でもネットで密かに配布されてる現状を黙って指を加えてみてるのはもったいないと思うのですけどね。
そういやSNKって危ないのでしょうか。弟から「和議申請を出した」と聞かされました。むぅ。

「MAME32」という昔のアーケードゲームのエミュレータも起動。いやはや落ちる落ちる。でもディグダグやゼビウスが動いて感動。それにしても昔は怪しげなコピー品結構あったんですね。タイトルが一部違ってたりメーカー名が違ってたりするけど、中身同じってのが結構ある。中には明らかに「これデータ修正どころじゃなく『破壊』して出してないか?」というのもあってかなりトホホです (;^_^A

これを打ってる横で弟が「キーボードの音ウルセー。眠れねー」と怒っております。トホホ。
どこかに静かなタッチ音のキーボード売ってないかな。

以上、24 日分です。

過去ログ表示

Prev - 2024/07 - Next
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

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project