2017年5月23日火曜日

MacでSDカードにddするときのオプション

macでUSB接続したSDに向けてddするときに早くする方法。

2017年5月19日金曜日

Gmailで未読のままアーカイブしちゃったやつをフィルターする方法

has:nouserlabels label:unread -label:inbox

2017年5月8日月曜日

動画を再エンコーディングしないでアスペクト比を変更する。

mp4であればPAR (PAR = Pixel Aspect Ratio)を変更すれば良いとか。ffmpegでやるには、こんな感じ。
$ ffmpeg -i input.mp4 -c copy -aspect 16:9 out.mp4

2016年3月17日木曜日

ESP8266のFlash容量

Espressif純正のFlash Download Toolのソースがあったのでこちらをゲット。

そして手持ちのESP8266のフラッシュを確認。

$ esptool.py flash_id
Connecting...
Manufacturer: a1
Device: 4015

では、ソースの中から関連しそうなところを抜粋。

flash_id_dict.py:

SPI_FLASH_VENDOR_DICT = {
    0xA1 : "FM",
    0xC8 : "GD",
    0x9D : "ISSI",
    0xC2 : "KH",
    0xEF : "WB",
}

SPI_FLASH_MODE_DICT = {
    0x40: "QUAD",
    0x30: "DUAL",
}

SPI_FLASH_SIZE_DICT = {
    0x09 : "256Kbit",
    0x10 : "512Kbit",
    0x11 : "1Mbit",
    0x12 : "2Mbit",
    0x13 : "4Mbit",
    0x14 : "8Mbit",
    0x15 : "16Mbit",
    0x16 : "32Mbit",
}

download_panel_info.py:

vendor = SPI_FLASH_VENDOR_DICT[self.flash_manufacturer_id & 0xff]
mode = SPI_FLASH_MODE_DICT[(self.flash_device_id>>8)&0xf0]
size = SPI_FLASH_SIZE_DICT[self.flash_device_id & 0xff]

これで、もうおわかりですね。Flashのベンダーはa1なのでFM。モードは0x40なのでQUAD。容量は0x15なので16Mbit

2016年1月12日火曜日

オブジェクトファイルのセクションを取り出す。

オブジェクトファイルから任意のセクションを取り出す方法をメモ

どういうことか

以下のようにしてリソースをオブジェクトファイルに変換して使っているときに、オブジェクトファイルからlogo.pngを取り出してみる。

$ objcopy -I binary -O elf32-i386 -B i386 logo.png logo.png.o

ちなみに生成されているlogo.png.oの内容は以下。

$ objdump -x logo.png.o

logo.png.o:     file format elf32-i386
logo.png.o
architecture: i386, flags 0x00000010:
HAS_SYMS
start address 0x00000000

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00000f03  00000000  00000000  00000034  2**0
                  CONTENTS, ALLOC, LOAD, DATA
SYMBOL TABLE:
00000000 l    d  .data  00000000 .data
00000000 g       .data  00000000 _binary_logo_png_start
00000f03 g       .data  00000000 _binary_logo_png_end
00000f03 g       *ABS*  00000000 _binary_logo_png_size

ファイルの内容を確認して切り出す

ヘッダからバイナリの大きさとオフセットを確認する。Sizeが大きさ、File offがオフセットとなる。

$ gobjdump -h logo.png.o

logo.png.o:     ファイル形式 elf32-i386

セクション:
索引名          サイズ      VMA       LMA       File off  Algn
  0 .data         00000f03  00000000  00000000  00000034  2**0
                  CONTENTS, ALLOC, LOAD, DATA

切り出しに必要なパラメータが分かったのでddで切り出す。

  • 切り出す大きさ: 0xf03 Bytes
  • 切り出す領域の開始地点: ファイル先頭から0x35 Bytes(0x34 Bytes読み飛ばす)
$ dd if=logo.png.o of=logo.png.extract bs=1 count=0xf03 skip=0x34
3843+0 records in
3843+0 records out
3843 bytes transferred in 0.016074 secs (239079 bytes/sec)
$ ls
logo.png         logo.png.extract logo.png.o
$ diff logo.png logo.png.extract; echo $?
0

objcopyで良いやん

$ objcopy -O binary --only-section .data logo.png.o logo.png.extract

2015年12月25日金曜日

Aの横はCtrlでファイナルアンサー

LinuxコンソールのCtrlとCapsLockを入れ替える方法

2015年12月18日金曜日

ESP8266の開発環境セットアップ手順

ESP8266の開発元であるEspressifが公開している*ESP8266 IoT SDK*を使った開発をできるようにする方法です。