コグノスケ


link 未来から過去へ表示  link 過去から未来へ表示(*)

link もっと前
2022年7月13日 >>> 2022年8月9日
link もっと後

2022年7月13日

Might and Magic Book One TAS US版、更新

目次: Might and Magicファミコン版

Might and Magic Book One TAS US版をさらに6秒くらい短縮(7:32.39 → 7:25.80)しました(ニコニコ動画へのリンク)。

キーカードを後回し
ダスクの町でキーカードを作成する場合、ゴロスの目玉+キーカードの2つを作る必要があります。しかしゴロスの目玉は7回使用したら(アストラル世界、聖域に入る手前)要らないこと、キーカードはゴロスの目玉からバグ技1回で生成できることを考慮すれば、ダスクの町でゴロスの目玉だけを作って、要らなくなったタイミングでキーカードに変換する方が早いです。
メッセージを減らす
ゴロスの目玉+キーカードを作る際は、魔力のオイルを2つ使い切る(つまり2回USELESS! メッセージを見ることになる)必要がありました。が、今回のチャートですとゴロスの目玉だけ作れば良いので、メッセージ1回分を回避できます。

TASVideosに再投稿するなら何かもう1つくらいは改善してから送りたいですが、良いアイデアが思いつかないです……。

編集者:すずき(2023/08/20 03:30)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2022年7月18日

GNU tarのアーカイブ圧縮方式の判定

GNU tarのxオプションは圧縮されたtarでも正しく展開してくれます。圧縮方法はgzip, bzip, xz, ... など複数存在しますが、どのように判定しているんでしょう?まさか拡張子でしょうか?

こういうときにOSSは便利です。ソースコードを見ればわかるはず。バージョンはどれでも仕組み自体は同じだと思いますが、とりあえず最新版リリースGNU tar 1.34にしました。gitリポジトリへのリンクも貼っておきます。

マジックヘッダの定義部分

// src/buffer.c

/* Compression detection */

enum compress_type {
  ct_none,             /* Unknown compression type */
  ct_tar,              /* Plain tar file */
  ct_compress,
  ct_gzip,
  ct_bzip2,
  ct_lzip,
  ct_lzma,
  ct_lzop,
  ct_xz,
  ct_zstd
};

static enum compress_type archive_compression_type = ct_none;

struct zip_magic
{
  enum compress_type type;
  size_t length;
  char const *magic;
};

struct zip_program
{
  enum compress_type type;
  char const *program;
  char const *option;
};

static struct zip_magic const magic[] = {
  { ct_none,     0, 0 },
  { ct_tar,      0, 0 },
  { ct_compress, 2, "\037\235" },
  { ct_gzip,     2, "\037\213" },
  { ct_bzip2,    3, "BZh" },
  { ct_lzip,     4, "LZIP" },
  { ct_lzma,     6, "\xFFLZMA" },
  { ct_lzop,     4, "\211LZO" },
  { ct_xz,       6, "\xFD" "7zXZ" },
  { ct_zstd,     4, "\x28\xB5\x2F\xFD" },
};

各圧縮方式に固有のマジックヘッダを定義している部分がありました。さすがに拡張子などという雑な判定ではなさそうです。そりゃそうか。

マジックヘッダを調べる関数

// src/buffer.c

/* Check if the file ARCHIVE is a compressed archive. */
static enum compress_type
check_compressed_archive (bool *pshort)
{
  struct zip_magic const *p;
  bool sfr;
  bool temp;

  if (!pshort)
    pshort = &temp;

  /* Prepare global data needed for find_next_block: */
  record_end = record_start; /* set up for 1st record = # 0 */
  sfr = read_full_records;
  read_full_records = true; /* Suppress fatal error on reading a partial
                               record */
  *pshort = find_next_block () == 0;

  /* Restore global values */
  read_full_records = sfr;

  if (record_start != record_end /* no files smaller than BLOCKSIZE */
      && (strcmp (record_start->header.magic, TMAGIC) == 0
          || strcmp (record_start->buffer + offsetof (struct posix_header,
                                                      magic),
                     OLDGNU_MAGIC) == 0)
      && tar_checksum (record_start, true) == HEADER_SUCCESS)
    /* Probably a valid header */
    return ct_tar;

  for (p = magic + 2; p < magic + NMAGIC; p++)    //★★magicはさきほど示したコードで定義していた配列★★
    if (memcmp (record_start->buffer, p->magic, p->length) == 0)    //★★ここで比較★★
      return p->type;

  return ct_none;
}

各圧縮方式に固有のバイナリ列が存在するか?をmemcmp() で見ています。結構シンプルな仕組みですね。

編集者:すずき(2022/08/21 03:05)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2022年7月22日

懐かしのbrkによるメモリ確保

目次: C言語とlibc

Cライブラリがメモリを確保する際、内部でシステムコールを呼んでOSにメモリ確保を依頼します。現状のLinuxですとメモリ確保は2種類用意されています。1つは懐かしのbrk(), sbrk() で、もう1つはmmap() で匿名ページ(MAP_ANONYMOUS)を割り当てる方法です。

匿名ページ(MAP_ANONYMOUS)によるメモリ確保の場合、0初期化されていることが定められています。brk, sbrkが返す領域はどうでしょう?SUSv3を見ましたがbrk, sbrkの項目そのものがありません。

SUSv2を見るとLEGACY扱いではあるものの、brkの項目が(brkへのリンク)ありました。説明を見ると、

DESCRIPTION

The brk() and sbrk() functions are used to change the amount of space allocated for the calling process. The change is made by resetting the process' break value and allocating the appropriate amount of space. The amount of allocated space increases as the break value increases. The newly-allocated space is set to 0.

とのことです。0初期化は必須ですね。

きっかけ

自作OSもどきを作っていて、brkで確保した領域を未初期化で返していました。newlibだと動いてしまうんですが、glibcはたまに死んでしまうことがあって気づきました。実装する前に規格を見ましょう。行き当たりばったりは良くないです……はい。

編集者:すずき(2022/07/22 15:14)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2022年7月25日

市町村の一覧

一番たくさんの村があるのはどの都道府県でしょうか?地図を見てカウントしても良いのですが、こういう面倒なことは機械にやってもらいましょう。

総務省のサイト(総務省 - 地方行政のデジタル化 - 全国地方公共団体コード)に全国の市町村の一覧があります。サイトにあるExcelファイルから、余計な列を落として都道府県名と市町村名だけにしたテキストファイルlink 都道府県名ファイルlink 市町村名ファイル)を用意します。

各都道府県の村の数をカウントする例
for i in `cat 20220725_prefs.txt`;
  do echo -n "${i} ";
  grep ${i} 20220725_cities.txt | grep '村$' | wc -l;
done

北海道21
青森県8
岩手県4
宮城県1
秋田県3
山形県3
福島県15
茨城県2
栃木県0
群馬県8
埼玉県1
千葉県1
東京都8
神奈川県1
新潟県4
富山県1
石川県0
福井県0
山梨県6
長野県35
岐阜県2
静岡県0
愛知県2
三重県0
滋賀県0
京都府1
大阪府1
兵庫県0
奈良県12
和歌山県1
鳥取県1
島根県1
岡山県2
広島県0
山口県0
徳島県1
香川県0
愛媛県0
高知県6
福岡県2
佐賀県0
長崎県0
熊本県8
大分県1
宮崎県3
鹿児島県4
沖縄県19

正解は長野県でした。平成の市町村大合併で村は大分減りましたね。なぜか長野、北海道だけたくさんの村が残っていますけど……。

編集者:すずき(2022/07/29 10:24)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2022年8月6日

ゲーム用PCを作ろう

ずっとグラフィック性能のしょぼいノートPCでゲームをしていましたが、描画が遅すぎて「コマ送り」レベルになってしまい、遊ぶことに障害がでているゲームもあり悲しくなってきました。GPUはまだ高値が続いているものの常識の1.5倍くらいの価格まで下がりましたし、いよいよ観念して新たにゲーム用PCを作ることにします。

場所の制約

まず場所を考えると、在宅勤務スペースの机の横に60cmくらいの奥行きがあってそこに置けそうです。


PCを置く予定のスペース

ミドルタワーのスペースとしてはちょいと寸足らず(おそらく70cm〜80cmくらいあったほうが便利だと思う)ですけど、ミニタワーを選ぶほどではなく素直にミドルタワーを置けそうです。

コンパクト指向のケース
無理して寸詰まりにする必要はなく、配線できなくなるほど奥行きのあるケースは避ける程度。
光学ドライブ(あと5インチベイを使う何か)は未搭載
もはやデスクトップといえど光学ドライブは要らないでしょう。さようならBlu-rayドライブ。
スイッチ、コネクタ類は上部がベター
前だと棚が邪魔ですっごい使いにくい。きっと。

PCの正面に棚の側面がきて5インチベイが実質使えないことが一番大きな制約でしょうか?それ以外はまあ大したことないですね。

部品選び

一番肝心なGPUはGeForce RTX 3060にします。これ以上性能が低いと将来のゲームが厳しそうですし、これ以上高額だと払う気が起きません。そもそもRTX 3060ですら5万円もして高過ぎです。ミドルエンドのGPUなんて3万円後半くらいにしてほしいなあ……。

ケースは最近気に入っているFractal Design Define Cというケース(メーカーサイトへのリンク)にしました。最近の流行?なのか、電源を下にマウントするタイプのケースです。スイッチ類はケース上部に配置されており、奥行きも40cmと控えめです。

概ね希望通りのケースですが……唯一気に入らない点は上部から吸気するエアフロー設計です。PCの上に物が置けないのであまり好きじゃないです。空冷+簡易水冷兼用で使えるケースの多くは、簡易水冷のクーリングユニットを上部に取り付ける設計みたいで……しゃーないですね。

CPUとマザーボード、メモリは古い部品を流用でストレージだけは新しくしておきましょう。

電源選びで大失敗

ケースの電源規格はATX電源です。素直にATX電源を買っても良かったんですけど、SFX電源にすれば将来的に別のケースにも付けやすかろう、ATX電源の枠にもマウンタがあるから付けられるだろうと欲目を出し、COOLER MASTER MPY-6501-SFHAGV-JPというSFX電源を買いました。


全く届かない24ピン電源ケーブル(下の網目のところに電源がある)

これが大失敗でして、なんとマザーボードに配線する24ピン電源ケーブルが短すぎて全く届きませんでした……。まじかー。やってしまいました。

挽回策

電源を買い直さなければならないのかと途方に暮れていましたが、Twitterでの会話で得られた知見としてはATX 24ピン電源の延長用ケーブルが売っているそうです。世の中には便利な物がありますなあ……。

もう1つの挽回策としてMini-ITXケース(ファイルサーバー)のATX電源と入れ替える手段があります。何台もバラしたり組み立てたり非常に面倒ですが利点として、

  • サーバーの電源(5年経った)をリフレッシュできる
  • Mini-ITXケースならSFX電源のケーブル長で延長なしで届く

延長ケーブルは最後の手段として取っておき、ひとまずファイルサーバーのATX電源と交換する作戦でやってみたいと思います。

編集者:すずき(2022/08/14 16:24)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2022年8月8日

レガシィの6回目の車検完了

目次:

車検の車を取りに行きました。追加の修理費は特になしでした。ワイパーがもうダメそうとのことなので、そのうち換えましょう。

あとパワステギアボックスだかのオイル滲みがあり、進行してオイル漏れすると車検に通らないと言われました。修理費も高いみたいで、そうなったらもう次の車に買い換えた方が良いんでしょうかねえ。バンパーも半分取れちゃったしなー……。

COVID-19 1日目 - ついにCOVID-19にやられたようです

金土日月と4日連続で炎天下に外出して体力を消耗したせいか、夕方くらいから具合が悪くなって熱が出てきました(37.4℃)。喉も痛いです。今までCOVIDには気をつけて生活してきたつもりですが、ついに第7波にて陥落ですかねえ(後日検査したらCOVID-19陽性でした)。

声を出しすぎた時の喉の痛みとは違い、普通に喋れます。喉の奥を打撲したような痛さで、何かを飲み込むときに非常に痛いので困ります。熱が低いので食欲には特に影響ないのが幸いですけど、喉の痛さは辛いな〜。

編集者:すずき(2023/09/30 15:11)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2022年8月9日

COVID-19 2日目 - 抗原検査キット

起きても熱が下がらず(37℃台)、いよいよCOVID-19の感染が疑われるので、奥さんにAbbott社PanbioというCOVID-19 Antigenラピッドテスト(体外診断用医薬品)を買ってきてもらって、自主検査しました。

世の中にはうさんくさい検査キットも売られていますが、このキットは製造販売承認番号付き、つまり厚生労働省のお墨付きです。新型コロナウイルス感染症診断薬の承認について(アボット ダイアグノスティクス メディカル株式会社申請品目)安心ですね。


抗体検査の自主検査結果

15分待つまでもなく、3分くらいできれいな二本線が出現しました。ばっちり陽性です。ついにCOVID-19に敗北です。

東京都発熱相談センター

東京都発熱相談センターにお電話して聞いてみたところ、近所の病院をいくつか紹介されました。

なるべく公共交通機関を使わないで欲しい(電車もバスもタクシーも公共交通機関)と言われましたが、さすがに無茶です。37℃ 台とはいえ、炎天下を1駅分は歩けません。元気なときだって具合悪くなるのでやりたくありません……。

風呂に入ったせいなのか、38.7℃ にまで熱が上がってしまいました。これはイカン、さっさと寝よう。

編集者:すずき(2022/08/13 16:36)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2022年7月13日 >>> 2022年8月9日
link もっと後

管理用メニュー

link 記事を新規作成

<2022>
<<<07>>>
-----12
3456789
10111213141516
17181920212223
24252627282930
31------

最近のコメント5件

  • link 24年6月17日
    すずきさん (06/23 00:12)
    「ありがとうございます。バルコニーではない...」
  • link 24年6月17日
    hdkさん (06/22 22:08)
    「GPSの最初の同期を取る時は見晴らしのい...」
  • link 24年5月16日
    すずきさん (05/21 11:41)
    「あー、確かにdpkg-reconfigu...」
  • link 24年5月16日
    hdkさん (05/21 08:55)
    「システム全体のlocale設定はDebi...」
  • link 24年5月17日
    すずきさん (05/20 13:16)
    「そうですねえ、普通はStandardなの...」

最近の記事3件

  • link 24年4月12日
    すずき (07/05 10:40)
    「[台湾東部沖地震に寄付] ささやかではありますが台湾東部沖地震に寄付しました。日本の赤十字社→台湾の赤十字(正式名称...」
  • link 24年4月16日
    すずき (07/05 10:40)
    「[Zephyr SDKのhosttoolsは移動してはいけない、その2 - インストール時のバイナリ書き換え] 目次: Zep...」
  • link 24年4月17日
    すずき (07/05 10:39)
    「[VSCodeとMarkdownとPlantUMLのローカルサーバー] 目次: LinuxVSCodeのPlantUML Ex...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 07/05 10:40