{"id":643,"date":"2020-01-05T14:11:06","date_gmt":"2020-01-05T05:11:06","guid":{"rendered":"http:\/\/hirlab.net\/nblog\/?p=643"},"modified":"2020-01-05T14:11:06","modified_gmt":"2020-01-05T05:11:06","slug":"%e3%80%90c%e3%80%91%e9%9b%a3%e8%a7%a3%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e8%a8%80%e8%aa%9e%e3%82%92%e4%bd%9c%e3%82%8d%e3%81%86%ef%bc%81%e3%80%90brainfck%e3%83%99","status":"publish","type":"post","link":"https:\/\/hirlab.net\/nblog\/category\/programming\/art_643\/","title":{"rendered":"\u3010C++\u3011\u96e3\u89e3\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3092\u4f5c\u308d\u3046\uff01\u3010brainf*ck\u30d9\u30fc\u30b9\u3011"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_11 counter-hierarchy counter-decimal ez-toc-light-blue\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\">\u30b3\u30f3\u30c6\u30f3\u30c4<\/p>\n<span class=\"ez-toc-title-toggle\"><a class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\"><i class=\"ez-toc-glyphicon ez-toc-icon-toggle\"><\/i><\/a><\/span><\/div>\n<nav><ul class=\"ez-toc-list ez-toc-list-level-1\"><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/hirlab.net\/nblog\/category\/programming\/art_643\/#%E9%9B%A3%E8%A7%A3%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E\" title=\"\u96e3\u89e3\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\">\u96e3\u89e3\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/hirlab.net\/nblog\/category\/programming\/art_643\/#%E3%81%BE%E3%81%9A%E3%81%AFBrainfuck%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF%E3%82%92%E4%BD%9C%E3%82%8B\" title=\"\u307e\u305a\u306fBrainfuck\u306e\u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u3092\u4f5c\u308b\">\u307e\u305a\u306fBrainfuck\u306e\u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u3092\u4f5c\u308b<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/hirlab.net\/nblog\/category\/programming\/art_643\/#%E3%81%A8%E3%82%8A%E3%81%82%E3%81%88%E3%81%9ABrainfuck%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B\" title=\"\u3068\u308a\u3042\u3048\u305aBrainfuck\u3092\u5b9f\u884c\u3057\u3066\u307f\u308b\">\u3068\u308a\u3042\u3048\u305aBrainfuck\u3092\u5b9f\u884c\u3057\u3066\u307f\u308b<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/hirlab.net\/nblog\/category\/programming\/art_643\/#%E9%81%A9%E5%BD%93%E3%81%AB%E5%91%BD%E4%BB%A4%E3%82%92%E3%81%84%E3%81%98%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B\" title=\"\u9069\u5f53\u306b\u547d\u4ee4\u3092\u3044\u3058\u3063\u3066\u307f\u308b\">\u9069\u5f53\u306b\u547d\u4ee4\u3092\u3044\u3058\u3063\u3066\u307f\u308b<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/hirlab.net\/nblog\/category\/programming\/art_643\/#%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB\" title=\"\u304a\u308f\u308a\u306b\">\u304a\u308f\u308a\u306b<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%E9%9B%A3%E8%A7%A3%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E\"><\/span>\u96e3\u89e3\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u96e3\u89e3(\u96e3\u8aad)\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e (esolang: Esoteric programming language)\u3068\u306f\uff0c\u305d\u306e\u540d\u306e\u901a\u308a<mark><strong>\u3068\u3066\u3082\u8aad\u307f\u3065\u3089\u3044\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e<\/strong><\/mark>\u3092\u6307\u3057\u307e\u3059\uff0e<\/p>\n<p>\u3044\u308f\u3086\u308b\uff0c\u30b8\u30e7\u30fc\u30af\u8a00\u8a9e\u3067\u3059\uff0e<\/p>\n<p>\u6700\u3082\u6709\u540d\u306a\u306e\u306fBrainfuck\u3060\u3068\u601d\u3044\u307e\u3059\u304c\uff0c\u300cHello, world!\u300d\u306a\u3089\u3053\u3093\u306a\u611f\u3058\u3067\u3059\uff0e<\/p>\n<pre class=\"lang:c++ decode:true\" title=\"Brainfuck\u306eHello, world!\">+++++++++[-&gt;++++++++&gt;+++++++++++&gt;+++++&lt;&lt;&lt;]&gt;.&gt;++.+++++++..+++.&gt;-.---------\r\n---.&lt;++++++++.--------.+++.------.--------.&gt;+.<\/pre>\n<p>\u300c\u96e3\u89e3\u300d\u3068\u8a00\u308f\u308c\u308b\u306e\u3082\u306a\u3093\u3068\u306a\u304f\u308f\u304b\u308a\u307e\u3059\uff0e<\/p>\n<p>\u305f\u3060\uff0cBrainfuck\u306e\u547d\u4ee4\u306f\u3068\u3066\u3082\u30b7\u30f3\u30d7\u30eb\u3067<mark><strong>8\u3064\u306e\u547d\u4ee4<\/strong><\/mark>\u3067\u6210\u308a\u7acb\u3063\u3066\u304a\u308a\uff0c\u30c1\u30e5\u30fc\u30ea\u30f3\u30b0\u5b8c\u5168\u306a\u8a00\u8a9e\u3067\u3059\uff0e<\/p>\n<p>\u3057\u305f\u304c\u3063\u3066\u96e3\u89e3\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u521d\u5fc3\u8005\u306b\u306f\u3082\u3063\u3066\u3053\u3044\u306a\u308f\u3051\u3067\u3059\uff08\uff1f\uff09<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E3%81%BE%E3%81%9A%E3%81%AFBrainfuck%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF%E3%82%92%E4%BD%9C%E3%82%8B\"><\/span>\u307e\u305a\u306fBrainfuck\u306e\u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u3092\u4f5c\u308b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Brainfuck\u306b\u3064\u3044\u3066\u77e5\u3089\u306a\u3044\u65b9\u306f\uff0c\u50d5\u304c\u6614\u66f8\u3044\u305f\u8a18\u4e8b\u3092\u8aad\u3093\u3067\u304f\u3060\u3055\u3044\uff0e<\/p>\n<ol>\n<li><a href=\"https:\/\/hirlab.net\/nblog\/category\/programming\/art_394\/\" target=\"_blank\" rel=\"noopener noreferrer\">\u307e\u308b\u3067\u6697\u53f7\uff0e\u4eca\u66f4\u306a\u304c\u3089\u96e3\u8aad\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9eBrainf*ck\u3092\u89e3\u8aad\u3057\u3066\u307f\u308b<\/a><\/li>\n<\/ol>\n<p>\u3068\u3082\u304b\u304f\uff0c8\u3064\u306e\u547d\u4ee4\u306b\u5bfe\u3057\u3066\u30dd\u30a4\u30f3\u30bf\u3092\u64cd\u4f5c\u3057\u3066\u3044\u3051\u3070\u826f\u3044\u306e\u3067\uff0c\u305d\u3093\u306a\u306b\u96e3\u3057\u304f\u306a\u3044\u306f\u305a\u3067\u3059\uff0e<\/p>\n<p>\u305d\u3057\u3066\uff0c\u304d\u3063\u3068<mark><strong>\u8ab0\u304b\u3059\u3067\u306b\u7dba\u9e97\u306a\u30b3\u30fc\u30c9\u3092\u5b9f\u88c5\u3057\u3066\u3044\u308b\u3060\u308d\u3046<\/strong><\/mark>\u3068\u3044\u3046\u7518\u3044\u8003\u3048\u306e\u3082\u3068\uff0c\u3068\u308a\u3042\u3048\u305a\u5b9f\u88c5\u3057\u307e\u3057\u305f\uff0e\u7b11<\/p>\n<p>\u3068\u3044\u3063\u3066\u3082\uff0c\u6700\u7d42\u7684\u306b\u30aa\u30ea\u30b8\u30ca\u30eb\u306a\u96e3\u89e3\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3092\u4f5c\u308b\u308f\u3051\u306a\u306e\u3067\uff0c\u305d\u308c\u304c\u3057\u3084\u3059\u3044\u3088\u3046\u306b\u4fee\u6b63\u306f\u3057\u307e\u3059\uff0e<\/p>\n<p>\u3068\u308a\u3042\u3048\u305a\u3053\u3093\u306a\u611f\u3058\uff0e<\/p>\n<pre class=\"lang:c++ decode:true \" title=\"Brainfuck_interpreter\">#include &lt;iostream&gt;\r\n#include &lt;stack&gt;\r\n\r\n#define MEMORY_SIZE 1024\r\n\r\n#define PTR_INCREMENT   '&gt;'\r\n#define PTR_DECREMENT   '&lt;'\r\n#define BYTE_INCREMENT  '+'\r\n#define BYTE_DECREMENT  '-'\r\n#define OUTPUT          '.'\r\n#define INPUT           ','\r\n#define LOOP_START      '['\r\n#define LOOP_END        ']'\r\n\r\nusing namespace std;\r\n\r\nint main(int argc, char* argv[]) {\r\n    \/* memory of array *\/\r\n    char memory[MEMORY_SIZE];\r\n\r\n    \/* source code *\/\r\n    char *source = nullptr;\r\n\r\n    \/* recurrent pointer *\/\r\n    unsigned short ptr = 0;\r\n\r\n    \/* recurrent pointer of the source code *\/\r\n    int order_ptr = 0;\r\n\r\n    \/* end of pointer of the source code *\/\r\n    int order_end = 0;\r\n\r\n    \/* stack of multi-loop *\/\r\n    stack&lt;int&gt; loops;\r\n\r\n\r\n    \/* initialize memory *\/\r\n    memset(memory, 0, sizeof(memory));\r\n\r\n    \/\/ check command line arguments\r\n    if(argc &lt; 2){\r\n        cout &lt;&lt; \"Oops! There are no-arguments.\" &lt;&lt; endl;\r\n        return 0;\r\n    }\r\n\r\n    \/* get filename *\/\r\n    char *filename = argv[1];\r\n    FILE *fp;\r\n\r\n    \/* open file *\/\r\n    if (!(fp = fopen(filename, \"rb\"))){\r\n        cout &lt;&lt; \"ERROR: Not found the designated file.\" &lt;&lt; endl;\r\n        return -1;\r\n    }\r\n\r\n    \/* get code *\/\r\n    if(fseek(fp, 0, SEEK_END) == 0){\r\n        int size = ftell(fp);\r\n        if(fseek(fp, 0, SEEK_SET) == 0){\r\n            source = new char[size];\r\n            order_end = fread(source, 1, size, fp);\r\n        }\r\n    }\r\n    fclose(fp);\r\n\r\n    \/* main loop *\/\r\n    while(order_ptr &lt; order_end){\r\n        \/* order switch *\/\r\n        switch(source[order_ptr]){\r\n            case PTR_INCREMENT:\r\n                ptr++;\r\n                break;\r\n            case PTR_DECREMENT:\r\n                ptr--;\r\n                break;\r\n            case BYTE_INCREMENT:\r\n                (memory[ptr])++;\r\n                break;\r\n            case BYTE_DECREMENT:\r\n                (memory[ptr])--;\r\n                break;\r\n            case OUTPUT:\r\n                putchar(memory[ptr]);\r\n                break;\r\n            case INPUT:\r\n                memory[ptr] = getchar();\r\n                break;\r\n            case LOOP_START:\r\n                loops.push(order_ptr);\r\n                if(memory[ptr] == 0){\r\n                    int depth = 1;\r\n                    while(depth &gt; 0){\r\n                        order_ptr++;\r\n                        if(order_ptr &gt;= order_end){\r\n                            cout &lt;&lt; \"ERROR: Not found \\'\" &lt;&lt; LOOP_END &lt;&lt; \"\\' .\" &lt;&lt;endl;\r\n                            return -1;\r\n                        }\r\n                        switch(source[order_ptr]){\r\n                            case LOOP_START:\r\n                                depth++;\r\n                                break;\r\n                            case LOOP_END:\r\n                                depth--;\r\n                                break;\r\n                        }\r\n                    }\r\n                    loops.pop();\r\n                }\r\n                break;\r\n            case LOOP_END:\r\n                if(loops.empty()){\r\n                    cout &lt;&lt; \"ERROR: Not found \\'\" &lt;&lt; LOOP_START &lt;&lt; \"\\'.\" &lt;&lt;endl;\r\n                    return -1;\r\n                }\r\n                order_ptr = loops.top() - 1;\r\n                loops.pop();\r\n                break;\r\n\r\n            default: \/* characters except the orders are handled as a comment *\/\r\n                break;\r\n        }\r\n        \/* increment the recurrent order pointer *\/\r\n        order_ptr++;\r\n    }\r\n\r\n    delete[] source;\r\n\r\n    return 0;\r\n}<\/pre>\n<p>\u30b3\u30fc\u30c9\u306e\u5192\u982d\u3067\uff0c8\u3064\u306e\u547d\u4ee4\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u308b\u306e\u3067\uff0c\u7c21\u5358\u306b\u597d\u304d\u306a\u3082\u306e\u306b\u5909\u3048\u3089\u308c\u307e\u3059\uff0e<\/p>\n<p>\u30b3\u30fc\u30c9\u3084\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306fGithub\u306b\u3042\u3052\u3066\u3044\u307e\u3059\uff0e<\/p>\n<ol>\n<li><a href=\"https:\/\/github.com\/HiroshiARAKI\/esolang_interpreter\" target=\"_blank\" rel=\"noopener noreferrer\">HiroshiARAKI\/esolang_interpreter: Let\u2019s make your Esolang!<\/a><\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"%E3%81%A8%E3%82%8A%E3%81%82%E3%81%88%E3%81%9ABrainfuck%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B\"><\/span>\u3068\u308a\u3042\u3048\u305aBrainfuck\u3092\u5b9f\u884c\u3057\u3066\u307f\u308b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u5148\u306eGithub\u306e\u30b3\u30fc\u30c9\u306b\u6cbf\u3063\u3066\u3044\u304d\u307e\u3059\uff0e<\/p>\n<p>\u5927\u3057\u305f\u30b3\u30fc\u30c9\u3058\u3083\u306a\u3044\u304f\u305b\u306bCmakeLists\u3092\u7121\u99c4\u306b\u7528\u610f\u3057\u3066\u3044\u308b\u306e\u3067\u4f7f\u3063\u3066\u304f\u3060\u3055\u3044\uff0e\u7b11<br \/>\n(CLion\u304c\u52dd\u624b\u306b\u4f5c\u3063\u3066\u304f\u308c\u308b\u306e\u3067...)<\/p>\n<pre class=\"lang:ps decode:true \" title=\"brtainfuck_hello_world\">$ cd PROJECT_RROOT\r\n$ mkdir build\r\n$ cd build\r\n$ cmake ..\r\n$ make\r\n$ .\/bfi ..\/hello.bf\r\nHello, world!<\/pre>\n<p>\u826f\u3044\u611f\u3058\u3067\u3059\uff0e<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E9%81%A9%E5%BD%93%E3%81%AB%E5%91%BD%E4%BB%A4%E3%82%92%E3%81%84%E3%81%98%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B\"><\/span>\u9069\u5f53\u306b\u547d\u4ee4\u3092\u3044\u3058\u3063\u3066\u307f\u308b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u305d\u308c\u3067\u306f\u4eca\u56de\u306e\u672c\u547d\u3067\u3042\u308b\uff0c\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u96e3\u89e3\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3092\u4f5c\u3063\u3066\u307f\u307e\u3057\u3087\u3046\uff0e<\/p>\n<p>\u305f\u3081\u3057\u306b\uff0c<\/p>\n<pre class=\"lang:c++ decode:true \">#define PTR_INCREMENT   '&gt;'\r\n#define PTR_DECREMENT   '&lt;'\r\n#define BYTE_INCREMENT  '+'\r\n#define BYTE_DECREMENT  '-'\r\n#define OUTPUT          '.'\r\n#define INPUT           ','\r\n#define LOOP_START      '['\r\n#define LOOP_END        ']'<\/pre>\n<p>\u3092<\/p>\n<pre class=\"lang:c++ decode:true \">#define PTR_INCREMENT   'a'\r\n#define PTR_DECREMENT   'b'\r\n#define BYTE_INCREMENT  'c'\r\n#define BYTE_DECREMENT  'd'\r\n#define OUTPUT          'e'\r\n#define INPUT           'f'\r\n#define LOOP_START      'g'\r\n#define LOOP_END        'h'<\/pre>\n<p>\u306b\u3057\u3066\u307f\u307e\u3059\uff0e<\/p>\n<p>\u3059\u308b\u3068\u3055\u3063\u304d\u306e\u300cHello, world\u300d\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u66f8\u304b\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093\uff0e<\/p>\n<pre class=\"lang:c++ decode:true \">cccccccccgdaccccccccacccccccccccacccccbbbhaeacceccccccceeccceadeddddddddd\r\ndddebcccccccceddddddddeccceddddddeddddddddeace<\/pre>\n<p><mark><strong>\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u6697\u53f7 (esolang) \u304c\u3067\u304d\u307e\u3057\u305f\uff01<\/strong><\/mark><\/p>\n<p>\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u76f4\u3057\u3066\u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u306b\u901a\u3059\u3068\uff0c\u3057\u3063\u304b\u308a\u300cHello, world\u300d\u304c\u51fa\u529b\u3055\u308c\u307e\u3059\uff0e<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB\"><\/span>\u304a\u308f\u308a\u306b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u4eca\u56de\u306f\u300c\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u96e3\u89e3\u3067\u5909\u614b\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u4f5c\u308a\u3066\u3047\uff01\u300d\u3068\u3044\u3046\u7686\u3055\u3093\u306b\u8a18\u4e8b\u3092\u66f8\u304d\u307e\u3057\u305f\uff0e<\/p>\n<p>\u3053\u308c\u3067\u7686\u3055\u3093\u3082\u96e3\u89e3\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3092\u4f5c\u308a\u307e\u3057\u3087\u3046\uff0e<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4eca\u56de\u306f\u300c\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u96e3\u89e3\u3067\u5909\u614b\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u4f5c\u308a\u3066\u3047\uff01\u300d\u3068\u3044\u3046\u7686\u3055\u3093\u306b\u8a18\u4e8b\u3092\u66f8\u304d\u307e\u3057\u305f\uff0e\u96e3\u89e3\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e (esolang)\u3068\u306f\uff0c\u305d\u306e\u540d\u306e\u901a\u308a\u3068\u3066\u3082\u8aad\u307f\u3065\u3089\u3044\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3092\u6307\u3057\u307e\u3059\uff0e\u3044\u308f\u3086\u308b\uff0c\u30b8\u30e7\u30fc\u30af\u8a00\u8a9e\u3067\u3059\uff0e\u3053\u306e\u8a18\u4e8b\u3067\u7686\u3055\u3093\u3082\u30aa\u30ea\u30b8\u30ca\u30eb\u8a00\u8a9e\u3092\u4f5c\u308a\u307e\u3057\u3087\u3046\uff01\uff01<\/p>\n","protected":false},"author":1,"featured_media":648,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[35,60],"_links":{"self":[{"href":"https:\/\/hirlab.net\/nblog\/wp-json\/wp\/v2\/posts\/643"}],"collection":[{"href":"https:\/\/hirlab.net\/nblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hirlab.net\/nblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hirlab.net\/nblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hirlab.net\/nblog\/wp-json\/wp\/v2\/comments?post=643"}],"version-history":[{"count":5,"href":"https:\/\/hirlab.net\/nblog\/wp-json\/wp\/v2\/posts\/643\/revisions"}],"predecessor-version":[{"id":649,"href":"https:\/\/hirlab.net\/nblog\/wp-json\/wp\/v2\/posts\/643\/revisions\/649"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hirlab.net\/nblog\/wp-json\/wp\/v2\/media\/648"}],"wp:attachment":[{"href":"https:\/\/hirlab.net\/nblog\/wp-json\/wp\/v2\/media?parent=643"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hirlab.net\/nblog\/wp-json\/wp\/v2\/categories?post=643"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hirlab.net\/nblog\/wp-json\/wp\/v2\/tags?post=643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}