{"id":1252,"date":"2015-09-23T20:13:18","date_gmt":"2015-09-23T11:13:18","guid":{"rendered":"https:\/\/hack.gpl.jp\/?p=1252"},"modified":"2015-09-23T20:13:18","modified_gmt":"2015-09-23T11:13:18","slug":"post-1252","status":"publish","type":"post","link":"https:\/\/hack.gpl.jp\/2015\/09\/23\/post-1252.html","title":{"rendered":"espeink \u306e\u30bd\u30fc\u30b9\u3092\u30b3\u30f3\u30d1\u30a4\u30eb"},"content":{"rendered":"

\u3055\u3066\u3001\u30cf\u30fc\u30c9\u306e\u8abf\u67fb\u304c\u7d42\u308f\u3063\u305f\u306e\u3067\u3001\u4eca\u5ea6\u306f\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u8abf\u67fb\u3067\u3059\u3002<\/p>\n

\u307e\u305a\u3001\u3056\u3063\u3068\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u898b\u3066\u307f\u307e\u3059\u3002<\/p>\n

osx 10.9.5 \u3067\u3084\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n

\n

\u25bc\u30bd\u30fc\u30b9\u3092\u30b2\u30c3\u30c8
$ git clone http:\/\/git.spritesserver.nl\/espeink.git\/<\/a>
$ cd espeink\/
$ git submodule init
$ git submodule update<\/p>\n<\/blockquote>\n

\u4ee5\u4e0b\u306e\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3057\u305f\u3002<\/p>\n

\u25bc\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u6982\u7565
\u30fbESP12 \u306e\u4e2d\u3067\u52d5\u4f5c\u3059\u308bweb\u30b5\u30fc\u30d0\u304cmkespfsimage\u3092\u4f7f\u3044e-ink \u306b\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0
\u30fb\u30c7\u30fc\u30bf\u53d7\u3051\u6e21\u3057\u306f\u3001PhantomJS\uff08pixelserver.js\uff09\u3092\u4f7f\u3063\u3066\u3044\u308b\u3088\u3046
\u30fb\u753b\u50cf\u5f62\u5f0f\u306f\u3001.bm \u3068\u3044\u3046\u767d\u9ed2\uff12\u5024\uff08\u30b0\u30ec\u30fc\u8868\u793a\u306f\u3042\u308b\u306e\u304b\u306a\uff1f\uff09800×600\u3092\u4f7f\u7528
\u30fb\u30c7\u30d5\u30a9\u30eb\u30c8\u306760\u79d2\u3054\u3068\u306bsleep \u304b\u3089\u76ee\u899a\u3081\u308b\u3088\u3046 -> sleeptime , system_deep_sleep(60*1000*1000);
\u30fb\u521d\u56de\u8d77\u52d5\u6642\u306f\u3001\u30a2\u30af\u30bb\u30b9\u30dd\u30a4\u30f3\u30c8\u306e\u8868\u793a\u306e\u521d\u671f\u8a2d\u5b9a\u304c\u52d5\u4f5c\u3002\u30e1\u30e2\u30ea\u306e\u7279\u5b9a\u9818\u57df\u306b\u5024\u304c\u3042\u308b\u304b\u306a\u3044\u304b\u3092\u898b\u3066\u3044\u308b\u6a21\u69d8 -> RTC_MAGIC
\u30fb\u30e9\u30a4\u30bb\u30f3\u30b9\u306f\u3001Beer-Ware license \ud83d\ude42
https:\/\/en.wikipedia.org\/wiki\/Beerware<\/a>
  \u3053\u308c\u306f\u4f5c\u8005\u306e\u30b8\u30e7\u30fc\u30af\u304b\u3068\u3002GPL\u30e9\u30a4\u30d6\u30e9\u30ea\u30fc\u306b\u30ea\u30f3\u30af\u3057\u3066\u3044\u308b\u306e\u3067\u3053\u306e\u30bd\u30fc\u30b9\u3082GPL\u306b\u306a\u308a\u307e\u3059\u304c\u3001
  \u4f55\u304b\u4f5c\u8005\u306b\u9001\u308a\u305f\u3044\u3067\u3059\u3088\u306d\u3002
\u30fb\u5727\u7e2e\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u3001Heatshrink\u4f7f\u7528
https:\/\/github.com\/atomicobject\/heatshrink<\/a>
  Lempel\u2013Ziv\u2013Storer\u2013Szymanski (LZSS)\u30d9\u30fc\u30b9\u306e\u3088\u3046\u3067\u3059\u3002
\u30fb\u30bd\u30fc\u30b9\u3092\u30d3\u30eb\u30c9\u3059\u308b\u306b\u306f\u3001SDK (toolchain) \u304c\u5fc5\u8981
\u30fbesp-open-sdk\u306e\u74b0\u5883\u3092\u4f5c\u308c\u3070\u826f\u3044\u304b\u3068\u601d\u3046
\u30fb\u74b0\u5883\u69cb\u7bc9\u306f\u3001osx \u3067\u307e\u305a\u30c1\u30e3\u30ec\u30f3\u30b8<\/p>\n

 <\/p>\n

PhantomJS\u3063\u3066\u4f55\u3067\u3057\u3087\u3046\u304b\uff1f<\/p>\n

\u3068\u308a\u3042\u3048\u305a\u3001\u307e\u3041\u3001\u4f7f\u3063\u3066\u307f\u308c\u3070\u7406\u89e3\u3082\u6df1\u307e\u308b\u306f\u305a\u3067\u3059\u3002<\/p>\n

osx \u306e\u30ed\u30fc\u30ab\u30eb\u306b\u5165\u308c\u3066\u307f\u307e\u3059\u3002<\/p>\n

\n

$ brew install phantomjs<\/p>\n<\/blockquote>\n

\u30b5\u30f3\u30d7\u30eb\u306f\u30b0\u30b0\u3063\u3066\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n

---- test.js\n\/\/ Headless \u30d6\u30e9\u30a6\u30b6\u306e\u751f\u6210\nvar page = require('webpage').create();\n\n\/\/ URL \u3092\u958b\u304f\npage.open('http:\/\/hack.gpl.jp\/about\/', function(status) {\n    if (status === 'success') {\n        \/\/ \u30b9\u30af\u30ea\u30fc\u30f3\u30ad\u30e3\u30d7\u30c1\u30e3\n        page.render('junkhack.png');\n        \/\/ \u30d6\u30e9\u30a6\u30b6\u5185\u3067 JS \u3092\u5b9f\u884c\u3057\u3066\u30c7\u30fc\u30bf\u3092\u53d7\u3051\u53d6\u308b\n        var title = page.evaluate(function() {\n            var title = document.title;\n            return title;\n        });\n        console.log(title);\n    }\n    \/\/ exit \u3057\u306a\u3044\u3068\u7d42\u4e86\u3057\u306a\u3044\n    phantom.exit();\n});<\/pre>\n

 <\/p>\n

\u30fb\u5b9f\u884c\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n

\n

$ phantomjs test.js<\/p>\n<\/blockquote>\n

\u30ab\u30ec\u30f3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3001junkhack.png \u304c\u3067\u304d\u3066\u3044\u308b\u3002\u307b\u30fc\u306a\u308b\u307b\u3069\u3002
\n
\u3068\u3044\u3046\u3053\u3068\u306f\u3001PhantomJS\u304c\u52d5\u4f5c\u3059\u308b\u30b5\u30fc\u30d0\u304c\u5fc5\u8981\u3060\u3063\u3066\u3053\u3068\u3067\u3057\u3087\u3046\u304b\u306d\uff1fESP12 \u3067PhantomJS\u304c\u52d5\u4f5c\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u304b\u306d\uff1f\u3061\u3087\u3063\u3068\u3053\u306e\u3042\u305f\u308a\u306f\u826f\u304f\u308f\u304b\u3063\u3066\u3044\u307e\u305b\u3093\u3002<\/p>\n

\u305d\u306e\u5185\u3001\u9032\u3080\u306b\u3064\u308c\u89e3\u308b\u306f\u305a\u3060\u3068\u601d\u3046\u306e\u3067\u3001\u30b9\u30eb\u30fc\u3057\u307e\u3059\u3002<\/p>\n

 <\/p>\n

\"junkhack <\/p>\n

\u3068\u308a\u3042\u3048\u305a\u3001osx \u3067\u30d3\u30eb\u30c9\u3059\u308b\u74b0\u5883\u3092\u6574\u3048\u3066\u307f\u308b\u3053\u3068\u306b\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n

 <\/p>\n

\u25bc\u30d3\u30eb\u30c9\u3059\u308b\u74b0\u5883\u306e\u69cb\u7bc9 for osx 10.9.5 <\/p>\n

\u30fb\u4ee5\u4e0b\u306b\u3042\u308b\u8aac\u660e\u901a\u308a <\/p>\n

https:\/\/github.com\/pfalcon\/esp-open-sdk<\/a><\/p>\n

\n

$ brew tap homebrew\/dupes
\n
$ brew install binutils coreutils automake wget gawk libtool gperf gnu-sed –with-default-names grep<\/p>\n<\/blockquote>\n

\u2605\u3061\u3087\u3063\u3068\u6642\u9593\u306f\u304b\u304b\u308a\u307e\u3059\u3002\u30a8\u30e9\u30fc\u306b\u306a\u3063\u3066\u3044\u306a\u3044\u304b\u30b3\u30f3\u30bd\u30fc\u30eb\u3092\u78ba\u8a8d\u3002<\/p>\n

 <\/p>\n

\u30fbsed \u306f gnu \u306e\u3092\u4f7f\u3046\u3088\u3046\u306b\u3059\u308b\u3088\u3046\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3089\u306a\u3051\u308c\u3070\u3001\u30d1\u30b9\u3092.bash_profile\u306b\u8a2d\u5b9a\u3057\u3066\u304a\u304d\u307e\u3059\u3002 <\/p>\n

    $ which sed
\n
    \/usr\/local\/opt\/gnu-sed\/libexec\/gnubin\/sed <\/p>\n

$ export PATH="\/usr\/local\/opt\/gnu-sed\/libexec\/gnubin:$PATH"<\/p>\n

 <\/p>\n

\u30fb10G \u306e\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u533a\u5225\u3059\u308bHFS+\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u4f5c\u88fd\u3002\u30de\u30a6\u30f3\u30c8\u3057\u3001\u79fb\u52d5\u3002 <\/p>\n

$ sudo hdiutil create ~\/Documents\/case-sensitive.dmg -volname "case-sensitive" -size 10g -fs "Case-sensitive HFS+"\n$ sudo hdiutil mount ~\/Documents\/case-sensitive.dmg\n$ cd \/Volumes\/case-sensitive\n\n$ git clone --recursive https:\/\/github.com\/pfalcon\/esp-open-sdk.git<\/pre>\n

\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30fc\u30f3\u306aSDK \u3092\u4f5c\u308c\u3070\u3001-I\u3068-L\u30d5\u30e9\u30b0\u3092\u4ed8\u3051\u306a\u304f\u3066\u3088\u3044\u3088\u3046\u3067\u3059\u304c\u3001espeink \u306emakefile \u306f
\n
-I \u3068 -L \u306f\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001SDK \u3092\u5206\u96e2\u3057\u3066\u4f5c\u308a\u307e\u3059\u3002 <\/p>\n

\n

$ cd esp-open-sdk\/
\n
$ make STANDALONE=n<\/p>\n<\/blockquote>\n

\u2605\u3061\u3087\u3063\u3068\u6642\u9593\u306f\u304b\u304b\u308a\u307e\u3059\u3002\u30b3\u30fc\u30d2\u30fc\u30bf\u30a4\u30e0\u3067\u3059\u3002
\n
ESP8266 \u306e\u30c1\u30c3\u30d7\u306f\u3001\u30b1\u30a4\u30c7\u30f3\u30b9\u30fb\u30c7\u30b6\u30a4\u30f3\u30fb\u30b7\u30b9\u30c6\u30e0\u30ba\u793e\u304c\u4f5c\u3063\u3066\u3044\u308bXtensa\u30d7\u30ed\u30bb\u30c3\u30b5\u306a\u3093\u3067\u3059\u306d\u3002<\/p>\n

Espressif Systems\u793e\u304c\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u305f\u3001\u30c6\u30f3\u30b7\u30ea\u30abXtensa\u30d7\u30ed\u30bb\u30c3\u30b5\u304c\u8f09\u3063\u3066\u3044\u308b\u3068\u3044\u3046\u3053\u3068\u306e<\/p>\n

\u3088\u3046\u3067\u3059\u3002<\/p>\n

https:\/\/www.cadence.co.jp\/news\/2015-01-29-929.html<\/p>\n

 <\/p>\n

\u30fb\u3055\u3066\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308c\u3070OK\u3067\u3059\u3002\u30d1\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002 <\/p>\n

    ::
\n
    Xtensa toolchain is built, to use it:<\/p>\n

    export PATH=\/Volumes\/case-sensitive\/esp-open-sdk\/xtensa-lx106-elf\/bin:$PATH<\/p>\n

    Espressif ESP8266 SDK is installed. Toolchain contains only Open Source components<\/p>\n

    To link external proprietary libraries add:<\/p>\n

    xtensa-lx106-elf-gcc -I\/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include -L\/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/lib<\/p>\n

 <\/p>\n

\u30fb\u3053\u3053\u3082\u30d1\u30b9\u3092\u901a\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n

---- .bashrc\u3000\u8ffd\u8a18\nexport PATH=\/Volumes\/case-sensitive\/esp-open-sdk\/xtensa-lx106-elf\/bin:$PATH<\/pre>\n
\u4ee5\u4e0b\u306b\u3001\u30b3\u30f3\u30d1\u30a4\u30e9\u304c\u3042\u308a\u307e\u3059\u3002<\/pre>\n
\n

$ ls \/Volumes\/case-sensitive\/esp-open-sdk\/xtensa-lx106-elf\/bin
\n
esptool.py            xtensa-lx106-elf-ct-ng.config    xtensa-lx106-elf-gcov        xtensa-lx106-elf-ranlib<\/p>\n

xtensa-lx106-elf-addr2line    xtensa-lx106-elf-elfedit    xtensa-lx106-elf-gdb        xtensa-lx106-elf-readelf<\/p>\n

xtensa-lx106-elf-ar        xtensa-lx106-elf-g++        xtensa-lx106-elf-gprof        xtensa-lx106-elf-size<\/p>\n

xtensa-lx106-elf-as        xtensa-lx106-elf-gcc        xtensa-lx106-elf-ld        xtensa-lx106-elf-strings<\/p>\n

xtensa-lx106-elf-c++        xtensa-lx106-elf-gcc-4.8.2    xtensa-lx106-elf-ld.bfd        xtensa-lx106-elf-strip<\/p>\n

xtensa-lx106-elf-c++filt    xtensa-lx106-elf-gcc-ar        xtensa-lx106-elf-nm<\/p>\n

xtensa-lx106-elf-cc        xtensa-lx106-elf-gcc-nm        xtensa-lx106-elf-objcopy<\/p>\n

xtensa-lx106-elf-cpp        xtensa-lx106-elf-gcc-ranlib    xtensa-lx106-elf-objdump <\/p>\n<\/blockquote>\n

 <\/p>\n

\u30fb\u30b3\u30f3\u30d1\u30a4\u30e9\u304c\u547c\u3073\u51fa\u305b\u308c\u3070OK\u3067\u3059\u3002 <\/p>\n

\n

$ which xtensa-lx106-elf-gcc
\n
\/Volumes\/case-sensitive\/esp-open-sdk\/xtensa-lx106-elf\/bin\/xtensa-lx106-elf-gcc<\/p>\n<\/blockquote>\n

\n

$ xtensa-lx106-elf-gcc –version
\n
xtensa-lx106-elf-gcc (crosstool-NG 1.20.0) 4.8.2<\/p>\n

Copyright (C) 2013 Free Software Foundation, Inc.<\/p>\n

This is free software; see the source for copying conditions.  There is NO<\/p>\n

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. <\/p>\n<\/blockquote>\n

\u30fb\u4f55\u304b\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u52d5\u4f5c\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n

$ git clone https:\/\/github.com\/esp8266\/source-code-examples.git\n$ cd source-code-examples\/blinky<\/pre>\n

 <\/p>\n

\u30fbsed \u3067 make \u30d5\u30a1\u30a4\u30eb\u306e\u6307\u5b9a\u3092\u66f8\u304d\u63db\u3048\u307e\u3059\u3002
\n
\u203b\u30d1\u30b9\u304c\u3042\u308b\u306e\u3067\u3001\u89e3\u308a\u306b\u304f\u3044\u3002sed \u306f s\/\u7f6e\u304d\u63db\u3048\u524d\/\u7f6e\u304d\u63db\u3048\u5f8c\/g \u3067\u3059\u3002 <\/p>\n

\u4ee5\u4e0b\u3060\u3068\u3001
\n
Espressif\/crosstool-NG\/builds\/xtensa-lx106-elf\/bin<\/p>\n

\u3092\u4ee5\u4e0b\u306b\u7f6e\u304d\u63db\u3048<\/p>\n

esp-open-sdk\/xtensa-lx106-elf\/bin <\/p>\n

  Espressif\/ESP8266_SDK
\n
  \u3092\u4ee5\u4e0b\u306b\u7f6e\u304d\u63db\u3048<\/p>\n

  esp-open-sdk\/sdk <\/p>\n

  Espressif
\n
  \u3092\u4ee5\u4e0b\u306b\u7f6e\u304d\u63db\u3048<\/p>\n

  esp-open-sdk <\/p>\n

  opt\/
\n
  \u3092\u4ee5\u4e0b\u306b\u7f6e\u304d\u63db\u3048<\/p>\n

  Volumes\/case-sensitive\/<\/p>\n

$ sed -i 's\/Espressif\\\/crosstool-NG\\\/builds\\\/xtensa-lx106-elf\\\/bin\/esp-open-sdk\\\/xtensa-lx106-elf\\\/bin\/g' Makefile\n$ sed -i 's\/Espressif\\\/ESP8266_SDK\/esp-open-sdk\\\/sdk\/g' Makefile\n$ sed -i 's\/Espressif\/esp-open-sdk\/g' Makefile\n$ sed -i 's\/opt\\\/\/Volumes\\\/case-sensitive\\\/\/g' Makefile<\/pre>\n

 <\/p>\n

make \u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n

$ make <\/p>\n

\u30fb\u4ee5\u4e0b\u304c\u5b9f\u884c\u7d50\u679c\u3067\u3059\u3002\u30a8\u30e9\u30fc\u306a\u304f\u30d3\u30eb\u30c9\u3067\u304d\u308c\u3070\u307e\u3041\u3001\u52d5\u304f\u3067\u3057\u3087\u3046\u3002<\/p>\n

\n

$ tree
\n
.<\/p>\n

\u251c\u2500\u2500 Makefile<\/p>\n

\u251c\u2500\u2500 README<\/p>\n

\u251c\u2500\u2500 build<\/p>\n

\u2502   \u251c\u2500\u2500 app.out\u2605\u5b9f\u884c\u30d0\u30a4\u30ca\u30ea\u30d5\u30a1\u30a4\u30eb<\/p>\n

\u2502   \u251c\u2500\u2500 app_app.a<\/p>\n

\u2502   \u251c\u2500\u2500 driver<\/p>\n

\u2502   \u2514\u2500\u2500 user<\/p>\n

\u2502       \u2514\u2500\u2500 user_main.o<\/p>\n

\u251c\u2500\u2500 firmware<\/p>\n

\u2502   \u251c\u2500\u2500 0x00000.bin\u2605<\/p>\n

\u2502   \u2514\u2500\u2500 0x40000.bin\u2605<\/p>\n

\u2514\u2500\u2500 user<\/p>\n

    \u251c\u2500\u2500 user_config.h<\/p>\n

    \u2514\u2500\u2500 user_main.c <\/p>\n

5 directories, 9 files<\/p>\n<\/blockquote>\n

 <\/p>\n

\u25bc\u3068\u308a\u3042\u3048\u305a\u3001esp-open-sdk \u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u307f\u307e\u3059\u3002Makefile \u306e\u30b3\u30d4\u30fc\u3092\u53d6\u3063\u3066\u30d1\u30b9\u3092\u66f8\u304d\u63db\u3048\u3002 <\/p>\n

\n

$ cd espeink\u306e\u30bd\u30fc\u30b9
\n
$ cp Makefile Makefile_org <\/p>\n<\/blockquote>\n

\u203b\u884c\u982d\u306e$ \u306f\u53d6\u3063\u3066\u3042\u308a\u307e\u3059\u3002<\/p>\n

sed -i 's\/Espressif\\\/crosstool-NG\\\/builds\\\/xtensa-lx106-elf\\\/bin\/esp-open-sdk\\\/xtensa-lx106-elf\\\/bin\/g' Makefile\nsed -i 's\/Espressif\\\/ESP8266_SDK\/esp-open-sdk\\\/sdk\/g' Makefile\nsed -i 's\/Espressif\/esp-open-sdk\/g' Makefile\nsed -i 's\/opt\\\/Espressif\\\/arch\\\/lib\/Volumes\\\/case-sensitive\\\/esp-open-sdk\\\/sdk\\\/lib\/g' Makefile\nsed -i 's\/opt\\\/\/Volumes\\\/case-sensitive\\\/\/g' Makefile<\/pre>\n

\u30fbosx \u3058\u3083\u306a\u304f\u3001Linux \u3067\u3084\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u307b\u3069\u3088\u304f\u66f8\u304d\u63db\u3048\u3002\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30d1\u30b9\u3092\u5909\u66f4\u3057\u307e\u3057\u305f\u3002<\/p>\n

$ diff Makefile Makefile_org \n15c15\n< XTENSA_TOOLS_ROOT ?= \/Volumes\/case-sensitive\/esp-open-sdk\/xtensa-lx106-elf\/bin\n---\n> XTENSA_TOOLS_ROOT ?= \/opt\/Espressif\/crosstool-NG\/builds\/xtensa-lx106-elf\/bin\n18,19c18,19\n< SDK_EXTRA_INCLUDES ?= \/Volumes\/case-sensitive\/esp-open-sdk\/include\n< SDK_EXTRA_LIBS ?= \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/lib\n---\n> SDK_EXTRA_INCLUDES ?= \/opt\/Espressif\/include\n> SDK_EXTRA_LIBS ?= \/opt\/Espressif\/arch\/lib\n22c22\n< SDK_BASE    ?= \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\n---\n> SDK_BASE    ?= \/opt\/Espressif\/ESP8266_SDK<\/pre>\n

 <\/p>\n

\u30fb\u3055\u3066\u3001make\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n

make \u3057\u307e\u3057\u305f\u304c\u3001\u306a\u3093\u304b\u30a8\u30e9\u30fc\u3067\u307e\u3059\u306d\u3002\u4f5c\u8005\u306f\u3001SDK \u30d0\u30fc\u30b8\u30e7\u30f3\u3044\u304f\u3064\u3092\u4f7f\u3063\u3066\u3044\u305f\u306e\u3067\u3057\u3087\u3046\u304b\uff1f<\/p>\n

unknown type name ‘uint32_t’
\n
unknown type name ‘uint8_t’<\/p>\n

unknown type name ‘uint16_t’<\/p>\n

conflicting types for ‘os_random’ <\/p>\n

    $ make
\n
    CC user\/cgiwifi.c<\/p>\n

    In file included from \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/os_type.h:10:0,<\/p>\n

                     from \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/user_interface.h:9,<\/p>\n

                     from user\/cgiwifi.c:17:<\/p>\n

    \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/ets_sys.h:14:1: error: unknown type name ‘uint32_t’<\/p>\n

     typedef uint32_t ETSSignal;<\/p>\n

     ^<\/p>\n

    \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/ets_sys.h:15:1: error: unknown type name ‘uint32_t’<\/p>\n

     typedef uint32_t ETSParam;<\/p>\n

     ^<\/p>\n

    \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/ets_sys.h:27:1: error: unknown type name ‘uint32_t’<\/p>\n

     typedef uint32_t ETSHandle;<\/p>\n

     ^<\/p>\n

    \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/ets_sys.h:32:5: error: unknown type name ‘uint32_t’<\/p>\n

         uint32_t              timer_expire;<\/p>\n

         ^<\/p>\n

    \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/ets_sys.h:33:5: error: unknown type name ‘uint32_t’<\/p>\n

         uint32_t              timer_period;<\/p>\n

         ^<\/p>\n

    In file included from user\/cgiwifi.c:17:0:<\/p>\n

    \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/user_interface.h:316:1: error: unknown type name ‘uint8_t’<\/p>\n

     void wifi_promiscuous_set_mac(const uint8_t *address);<\/p>\n

     ^<\/p>\n

    In file included from user\/cgiwifi.c:20:0:<\/p>\n

    user\/io.h:3:16: error: unknown type name ‘uint16_t’<\/p>\n

     void ioSpiSend(uint16_t data);<\/p>\n

                    ^<\/p>\n

    user\/io.h:8:18: error: unknown type name ‘uint8_t’<\/p>\n

     void ioEinkWrite(uint8_t data);<\/p>\n

                      ^<\/p>\n

    In file included from user\/cgiwifi.c:21:0:<\/p>\n

    include\/espmissingincludes.h:42:5: error: conflicting types for ‘os_random’<\/p>\n

     int os_random();<\/p>\n

         ^<\/p>\n

    In file included from user\/cgiwifi.c:16:0:<\/p>\n

    \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/osapi.h:45:15: note: previous declaration of ‘os_random’ was here<\/p>\n

     unsigned long os_random(void);<\/p>\n

                   ^<\/p>\n

    make: *** [build\/user\/cgiwifi.o] Error 1<\/p>\n

 <\/p>\n

\u25bcsdk \u3092\u3044\u308d\u3044\u308d\u4ee3\u3048\u3066\u8a66\u3057\u30010.9.5\u3042\u305f\u308a\u304b\u3089\u8a66\u3057\u307e\u3057\u305f\u3002<\/p>\n

\n

$ cd \/Volumes\/case-sensitive\/esp-open-sdk\/
\n
$ ln -s esp_iot_sdk_v0.9.5 sdk<\/p>\n<\/blockquote>\n

\u25bc\u30d0\u30a4\u30ca\u30ea\u306f\u3067\u304d\u308b\u3051\u3069\u3082\u3001\u30d5\u30a1\u30fc\u30e0\u30a6\u30a7\u30a2\u304c\u3067\u304d\u306a\u3044\u306e\u3067\u3001Makefile \u3092\u66f8\u304d\u63db\u3048\u3002
\n
\u203b \u307e\u3060\u5b9f\u6a5f\u3067\u8a66\u3057\u3066\u3044\u306a\u3044\u306e\u3067\u3001\u3053\u308c\u3067\u826f\u3044\u304b\u4e0d\u660e\u3067\u3059\u304c\u3002<\/p>\n

$ cat Makefile.patch \n--- Makefile_org    2015-09-11 00:13:00.000000000 +0900\n+++ Makefile    2015-09-23 15:29:56.000000000 +0900\n@@ -12,18 +12,18 @@ BUILD_BASE    = build\n FW_BASE        = firmware\n \n # Base directory for the compiler\n-XTENSA_TOOLS_ROOT ?= \/opt\/Espressif\/crosstool-NG\/builds\/xtensa-lx106-elf\/bin\n+XTENSA_TOOLS_ROOT ?= \/Volumes\/case-sensitive\/esp-open-sdk\/xtensa-lx106-elf\/bin\n \n #Extra Tensilica includes from the ESS VM\n-SDK_EXTRA_INCLUDES ?= \/opt\/Espressif\/include\n-SDK_EXTRA_LIBS ?= \/opt\/Espressif\/arch\/lib\n+SDK_EXTRA_INCLUDES ?= \/Volumes\/case-sensitive\/esp-open-sdk\/include\n+SDK_EXTRA_LIBS ?= \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/lib\n \n # base directory of the ESP8266 SDK package, absolute\n-SDK_BASE    ?= \/opt\/Espressif\/ESP8266_SDK\n+SDK_BASE    ?= \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\n \n #Esptool.py path and port\n-ESPTOOL        ?= esptool\n-ESPPORT        ?= \/dev\/ttyUSB0\n+ESPTOOL        ?= esptool.py\n+ESPPORT        ?= \/dev\/tty.SLAB_USBtoUART\n #ESPDELAY indicates seconds to wait between flashing the two binary images\n ESPDELAY    ?= 3\n ESPBAUD        ?= 115200\n@@ -61,9 +61,9 @@ SDK_INCDIR    = include include\/json\n # we create two different files for uploading into the flash\n # these are the names and options to generate them\n FW_FILE_1    = 0x00000\n-FW_FILE_1_ARGS    = -bo $@ -bs .text -bs .data -bs .rodata -bc -ec\n+#FW_FILE_1_ARGS    = -bo $@ -bs .text -bs .data -bs .rodata -bc -ec\n FW_FILE_2    = 0x40000\n-FW_FILE_2_ARGS    = -es .irom0.text $@ -ec\n+#FW_FILE_2_ARGS    = -es .irom0.text $@ -ec\n \n # select which tools to use as compiler, librarian and linker\n CC        := $(XTENSA_TOOLS_ROOT)\/xtensa-lx106-elf-gcc\n@@ -117,13 +117,17 @@ endef\n \n all: checkdirs $(TARGET_OUT) $(FW_FILE_1) $(FW_FILE_2)\n \n-$(FW_FILE_1): $(TARGET_OUT) firmware\n-    $(vecho) "FW $@"\n-    $(Q) $(ESPTOOL) -eo $(TARGET_OUT) $(FW_FILE_1_ARGS)\n-\n-$(FW_FILE_2): $(TARGET_OUT) firmware\n-    $(vecho) "FW $@"\n-    $(Q) $(ESPTOOL) -eo $(TARGET_OUT) $(FW_FILE_2_ARGS)\n+$(FW_BASE)\/%.bin: $(TARGET_OUT) | $(FW_BASE)\n+    $(vecho) "FW $(FW_BASE)\/"\n+    $(Q) $(ESPTOOL) elf2image -o $(FW_BASE)\/ $(TARGET_OUT)\n+    \n+#$(FW_FILE_1): $(TARGET_OUT) firmware\n+#    $(vecho) "FW $@"\n+#    $(Q) $(ESPTOOL) -eo $(TARGET_OUT) $(FW_FILE_1_ARGS)\n+\n+#$(FW_FILE_2): $(TARGET_OUT) firmware\n+#    $(vecho) "FW $@"\n+#    $(Q) $(ESPTOOL) -eo $(TARGET_OUT) $(FW_FILE_2_ARGS)\n \n $(TARGET_OUT): $(APP_AR)\n     $(vecho) "LD $@"\n@@ -138,14 +142,20 @@ checkdirs: $(BUILD_DIR) $(FW_BASE)\n $(BUILD_DIR):\n     $(Q) mkdir -p $@\n \n-firmware:\n+#firmware:\n+#    $(Q) mkdir -p $@\n+$(FW_BASE):\n     $(Q) mkdir -p $@\n \n+#flash: $(FW_FILE_1) $(FW_FILE_2)\n+#    $(Q) $(ESPTOOL) -cp $(ESPPORT) -cb $(ESPBAUD) -ca 0x00000 -cf firmware\/0x00000.bin -v\n+#    $(Q) [ $(ESPDELAY) -ne 0 ] && echo "Please put the ESP in bootloader mode..." || true\n+#    $(Q) sleep $(ESPDELAY) || true\n+#    $(Q) $(ESPTOOL) -cp $(ESPPORT) -cb $(ESPBAUD) -ca 0x40000 -cf firmware\/0x40000.bin -v\n flash: $(FW_FILE_1) $(FW_FILE_2)\n-    $(Q) $(ESPTOOL) -cp $(ESPPORT) -cb $(ESPBAUD) -ca 0x00000 -cf firmware\/0x00000.bin -v\n-    $(Q) [ $(ESPDELAY) -ne 0 ] && echo "Please put the ESP in bootloader mode..." || true\n-    $(Q) sleep $(ESPDELAY) || true\n-    $(Q) $(ESPTOOL) -cp $(ESPPORT) -cb $(ESPBAUD) -ca 0x40000 -cf firmware\/0x40000.bin -v\n+    $(ESPTOOL) --port $(ESPPORT) write_flash $(FW_FILE_1_ADDR) $(FW_FILE_1) $(FW_FILE_2_ADDR) $(FW_FILE_2)\n+\n+\n \n clean:\n     $(Q) rm -f $(APP_AR)<\/pre>\n

\u30fb\u518d\u5ea6make <\/p>\n

\n

$ make clean
\n
$ make<\/p>\n

CC user\/cgiwifi.c<\/p>\n

CC user\/config.c<\/p>\n

CC user\/eink.c<\/p>\n

CC user\/espfs.c<\/p>\n

CC user\/heatshrink_decoder.c<\/p>\n

CC user\/httpd.c<\/p>\n

CC user\/httpdclient.c<\/p>\n

CC user\/httpdespfs.c<\/p>\n

CC user\/io.c<\/p>\n

CC user\/stdout.c<\/p>\n

CC user\/user_main.c<\/p>\n

AR build\/einkdisp_app.a<\/p>\n

LD build\/einkdisp.out<\/p>\n

FW firmware\/<\/p>\n<\/blockquote>\n

\u30a8\u30e9\u30fc\u306f\u306a\u304f\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n

\u30fb\u3068\u308a\u3042\u3048\u305a\u3001\u3053\u3093\u306a\u611f\u3058\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 <\/p>\n

$ tree
\n
.<\/p>\n

\u251c\u2500\u2500 Makefile<\/p>\n

\u251c\u2500\u2500 Makefile.patch<\/p>\n

\u251c\u2500\u2500 Makefile_org<\/p>\n

\u251c\u2500\u2500 README<\/p>\n

\u251c\u2500\u2500 build<\/p>\n

\u2502   \u251c\u2500\u2500 driver<\/p>\n

\u2502   \u251c\u2500\u2500 einkdisp.out\u2605\u3053\u308c\u306f\u3069\u306e\u9818\u57df\u306b\u66f8\u304d\u8fbc\u3081\u3070\u3044\u3044\u306e\u3067\u3057\u3087\u3046\u304b\u306d\uff1f<\/p>\n

\u2502   \u251c\u2500\u2500 einkdisp_app.a<\/p>\n

\u2502   \u2514\u2500\u2500 user<\/p>\n

\u2502       \u251c\u2500\u2500 cgiwifi.o<\/p>\n

\u2502       \u251c\u2500\u2500 config.o<\/p>\n

\u2502       \u251c\u2500\u2500 eink.o<\/p>\n

\u2502       \u251c\u2500\u2500 espfs.o<\/p>\n

\u2502       \u251c\u2500\u2500 heatshrink_decoder.o<\/p>\n

\u2502       \u251c\u2500\u2500 httpd.o<\/p>\n

\u2502       \u251c\u2500\u2500 httpdclient.o<\/p>\n

\u2502       \u251c\u2500\u2500 httpdespfs.o<\/p>\n

\u2502       \u251c\u2500\u2500 io.o<\/p>\n

\u2502       \u251c\u2500\u2500 stdout.o<\/p>\n

\u2502       \u2514\u2500\u2500 user_main.o<\/p>\n

\u251c\u2500\u2500 firmware<\/p>\n

\u2502   \u251c\u2500\u2500 0x00000.bin\u2605<\/p>\n

\u2502   \u2514\u2500\u2500 0x40000.bin\u2605<\/p>\n

\u251c\u2500\u2500 html<\/p>\n

\u2502   \u251c\u2500\u2500 140medley.min.js<\/p>\n

\u2502   \u251c\u2500\u2500 apconnect.bm<\/p>\n

\u2502   \u251c\u2500\u2500 batempty.bm<\/p>\n

\u2502   \u251c\u2500\u2500 connecting.html<\/p>\n

\u2502   \u251c\u2500\u2500 icons.png<\/p>\n

\u2502   \u251c\u2500\u2500 neterror.bm<\/p>\n

\u2502   \u251c\u2500\u2500 style.css<\/p>\n

\u2502   \u2514\u2500\u2500 wifi.tpl<\/p>\n

\u251c\u2500\u2500 icons<\/p>\n

\u2502   \u251c\u2500\u2500 apconnect.png<\/p>\n

\u2502   \u251c\u2500\u2500 batempty.png<\/p>\n

\u2502   \u2514\u2500\u2500 neterror.png<\/p>\n

\u251c\u2500\u2500 include<\/p>\n

\u2502   \u251c\u2500\u2500 espmissingincludes-ip.h<\/p>\n

\u2502   \u251c\u2500\u2500 espmissingincludes.h<\/p>\n

\u2502   \u251c\u2500\u2500 ip_addr.h<\/p>\n

\u2502   \u251c\u2500\u2500 lwipopts.h<\/p>\n

\u2502   \u251c\u2500\u2500 spi_register.h<\/p>\n

\u2502   \u251c\u2500\u2500 stdint.h<\/p>\n

\u2502   \u251c\u2500\u2500 uart_hw.h<\/p>\n

\u2502   \u2514\u2500\u2500 user_config.h<\/p>\n

\u251c\u2500\u2500 lib<\/p>\n

\u2502   \u2514\u2500\u2500 heatshrink<\/p>\n

\u2502       \u251c\u2500\u2500 LICENSE<\/p>\n

\u2502       \u251c\u2500\u2500 Makefile<\/p>\n

\u2502       \u251c\u2500\u2500 README.md<\/p>\n

\u2502       \u251c\u2500\u2500 dec_sm.dot<\/p>\n

\u2502       \u251c\u2500\u2500 enc_sm.dot<\/p>\n

\u2502       \u251c\u2500\u2500 greatest.h<\/p>\n

\u2502       \u251c\u2500\u2500 heatshrink.c<\/p>\n

\u2502       \u251c\u2500\u2500 heatshrink_common.h<\/p>\n

\u2502       \u251c\u2500\u2500 heatshrink_config.h<\/p>\n

\u2502       \u251c\u2500\u2500 heatshrink_decoder.c<\/p>\n

\u2502       \u251c\u2500\u2500 heatshrink_decoder.h<\/p>\n

\u2502       \u251c\u2500\u2500 heatshrink_encoder.c<\/p>\n

\u2502       \u251c\u2500\u2500 heatshrink_encoder.h<\/p>\n

\u2502       \u251c\u2500\u2500 test_heatshrink_dynamic.c<\/p>\n

\u2502       \u251c\u2500\u2500 test_heatshrink_dynamic_theft.c<\/p>\n

\u2502       \u2514\u2500\u2500 test_heatshrink_static.c<\/p>\n

\u251c\u2500\u2500 mkespfsimage<\/p>\n

\u2502   \u251c\u2500\u2500 Makefile<\/p>\n

\u2502   \u251c\u2500\u2500 espfsformat.h<\/p>\n

\u2502   \u251c\u2500\u2500 heatshrink_encoder.c<\/p>\n

\u2502   \u251c\u2500\u2500 heatshrink_encoder.o<\/p>\n

\u2502   \u251c\u2500\u2500 main.c<\/p>\n

\u2502   \u251c\u2500\u2500 main.o<\/p>\n

\u2502   \u2514\u2500\u2500 mkespfsimage<\/p>\n

\u251c\u2500\u2500 mkimg.php<\/p>\n

\u251c\u2500\u2500 server<\/p>\n

\u2502   \u251c\u2500\u2500 README<\/p>\n

\u2502   \u2514\u2500\u2500 pixelserver.js<\/p>\n

\u2514\u2500\u2500 user<\/p>\n

    \u251c\u2500\u2500 cgiwifi.c<\/p>\n

    \u251c\u2500\u2500 cgiwifi.h<\/p>\n

    \u251c\u2500\u2500 config.c<\/p>\n

    \u251c\u2500\u2500 config.h<\/p>\n

    \u251c\u2500\u2500 eink.c<\/p>\n

    \u251c\u2500\u2500 eink.h<\/p>\n

    \u251c\u2500\u2500 espfs.c<\/p>\n

    \u251c\u2500\u2500 espfs.h<\/p>\n

    \u251c\u2500\u2500 heatshrink_config_httpd.h<\/p>\n

    \u251c\u2500\u2500 heatshrink_decoder.c<\/p>\n

    \u251c\u2500\u2500 httpd.c<\/p>\n

    \u251c\u2500\u2500 httpd.h<\/p>\n

    \u251c\u2500\u2500 httpdclient.c<\/p>\n

    \u251c\u2500\u2500 httpdclient.h<\/p>\n

    \u251c\u2500\u2500 httpdconfig.h<\/p>\n

    \u251c\u2500\u2500 httpdespfs.c<\/p>\n

    \u251c\u2500\u2500 httpdespfs.h<\/p>\n

    \u251c\u2500\u2500 io.c<\/p>\n

    \u251c\u2500\u2500 io.h<\/p>\n

    \u251c\u2500\u2500 stdout.c<\/p>\n

    \u251c\u2500\u2500 stdout.h<\/p>\n

    \u2514\u2500\u2500 user_main.c <\/p>\n

12 directories, 86 files<\/p>\n

 <\/p>\n

\u25bc\u307e\u3068\u3081<\/p>\n

\u30fbSDK \u306b\u3044\u304f\u3064\u3092\u4f7f\u3063\u3066\u3044\u305f\u304b\u4e0d\u660e\u3002\u4f5c\u8005\u306b\u805e\u304f\u3053\u3068\u306b<\/p>\n

\u30fbPhantomJS \u3067\u52d5\u4f5c\u3059\u308b pixelserver.js \u306f\u5225\u30b5\u30fc\u30d0\u306b\u304a\u304f\u306e\u304b\u3069\u3046\u304b\uff1f<\/p>\n

\u30fb\u30d3\u30eb\u30c9\u3059\u308b\u306b\u306f\u3001esp-open-sdk \u3092\u4f7f\u3048\u3070\u3044\u3044\u306e\u304b\u3001\u305d\u308c\u3068\u3082\u4ed6\u306e\u65b9\u6cd5\u304b\u4e0d\u660e\u3002<\/p>\n

\u30fb\u30d3\u30eb\u30c9\u3057\u3066\u3067\u304d\u305f\u3082\u306e\u306f\u3001\u3069\u306e\u3088\u3046\u306b\u3069\u306e\u9818\u57df\u306b\u66f8\u304d\u8fbc\u3081\u3070\u3044\u3044\u306e\u304b\u4e0d\u660e\u3002<\/p>\n

 <\/p>\n

\u25bc\u53c2\u8003
\n
http:\/\/nemuisan.blog.bai.ne.jp\/?eid=215341<\/a><\/p>\n

http:\/\/dsas.blog.klab.org\/<\/a><\/p>\n

http:\/\/www.homu.net\/esp8266%E7%94%A8open-sdk%E3%82%92macosx%E7%94%A8%E3%81%AB%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B\/<\/a><\/p>\n

http:\/\/bbs.espressif.com\/viewforum.php?f=46<\/a><\/p>\n

https:\/\/github.com\/esp8266\/esp8266-wiki\/tree\/master\/sdk<\/a><\/p>\n

http:\/\/nemuisan.blog.bai.ne.jp\/?eid=215341<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"

\u3055\u3066\u3001\u30cf\u30fc\u30c9\u306e\u8abf\u67fb\u304c\u7d42\u308f\u3063\u305f\u306e\u3067\u3001\u4eca\u5ea6\u306f\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u8abf\u67fb\u3067\u3059\u3002 \u307e\u305a\u3001\u3056\u3063\u3068\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u898b\u3066\u307f\u307e\u3059\u3002 osx 10.9.5 \u3067\u3084\u3063\u3066\u3044\u307e\u3059\u3002 \u25bc\u30bd\u30fc\u30b9\u3092\u30b2\u30c3\u30c8 $ git clone http:\/\/git.spri […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","footnotes":""},"categories":[30,31,71],"tags":[],"acf":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"post-thumbnail":false},"uagb_author_info":{"display_name":"JunkHack","author_link":"https:\/\/hack.gpl.jp\/author\/junkhack\/"},"uagb_comment_info":0,"uagb_excerpt":"\u3055\u3066\u3001\u30cf\u30fc\u30c9\u306e\u8abf\u67fb\u304c\u7d42\u308f\u3063\u305f\u306e\u3067\u3001\u4eca\u5ea6\u306f\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u8abf\u67fb\u3067\u3059\u3002 \u307e\u305a\u3001\u3056\u3063\u3068\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u898b\u3066\u307f\u307e\u3059\u3002 o…","_links":{"self":[{"href":"https:\/\/hack.gpl.jp\/wp-json\/wp\/v2\/posts\/1252"}],"collection":[{"href":"https:\/\/hack.gpl.jp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hack.gpl.jp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hack.gpl.jp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hack.gpl.jp\/wp-json\/wp\/v2\/comments?post=1252"}],"version-history":[{"count":0,"href":"https:\/\/hack.gpl.jp\/wp-json\/wp\/v2\/posts\/1252\/revisions"}],"wp:attachment":[{"href":"https:\/\/hack.gpl.jp\/wp-json\/wp\/v2\/media?parent=1252"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hack.gpl.jp\/wp-json\/wp\/v2\/categories?post=1252"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hack.gpl.jp\/wp-json\/wp\/v2\/tags?post=1252"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}