{"id":45372,"date":"2023-11-11T05:08:30","date_gmt":"2023-02-22T06:35:14","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/45372-2\/"},"modified":"2024-05-04T08:26:52","modified_gmt":"2024-05-04T00:26:52","slug":"45372-2","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/45372-2\/","title":{"rendered":""},"content":{"rendered":"<p>\u3053\u306e\u8a18\u4e8b\u306fjupyter notebook Advent Calender 2016 21\u65e5\u76ee\u306e\u8a18\u4e8b\u3067\u3059\u3002<\/p>\n<h1>\u306f\u3058\u3081\u306b<\/h1>\n<p>\u8fd1\u9803\u3001\u541b\u306e\u540d\u306f\u3002\u3068Rust\u306b\u306f\u307e\u3063\u3066\u3044\u307e\u3059\u3002(\u541b\u306e\u540d\u306f\u3002\u306f\u672c\u8a18\u4e8b\u306b\u306f1\u30df\u30ea\u3082\u95a2\u4fc2\u304c\u3042\u308a\u307e\u305b\u3093\u3002)<\/p>\n<p>Rust\u306f\u6700\u8fd1\u59cb\u3081\u305f\u306e\u3067\u3059\u304c\u3001\u304b\u306a\u308a\u9762\u767d\u3044\u3067\u3059\u3002<br \/>\n\u52c9\u5f37\u3057\u3066\u3044\u304f\u4e2d\u3067\u601d\u3063\u305f\u3053\u3068\u3068\u304b\u3092Notebook\u3068\u3057\u3066\u6b8b\u3057\u3066\u3044\u3051\u305f\u3089\u3044\u3044\u306a\u3001\u3068\u601d\u3044\u307e\u3057\u305f\u304c<br \/>\n\u6b8b\u5ff5\u306a\u304c\u3089Rust\u8a00\u8a9e\u306eKernel\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002<\/p>\n<p>\u3068\u3044\u3046\u3053\u3068\u3067\u3001Rust\u7528\u306eJupyter Kernel\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n<h1>\u3084\u3063\u305f\u3053\u3068<\/h1>\n<p>\u4ee5\u4e0b2\u3064\u306e\u4f5c\u696d\u3092\u3059\u308b\u3068\u65b0\u3057\u3044Kernel\u304c\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u308b\u3088\u3046\u3067\u3059\u3002<br \/>\n1.Kernel\u306e\u4f5c\u6210<br \/>\n2.Kernelspec\u3078\u306e\u8ffd\u52a0<\/p>\n<h2>1.Kernel\u306e\u4f5c\u6210<\/h2>\n<p>\u516c\u5f0f\u306eMaking kernels for Jupyter\u3092\u898b\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u69d8\u306b\u3042\u308a\u307e\u3059\u3002<\/p>\n<blockquote><p>There are two options for writing a kernel:<\/p>\n<p>1.You can reuse the IPython kernel machinery to handle the communications, and just describe how to execute your code. This is much simpler if the target language can be driven from Python. See Making simple Python wrapper kernels for details.<br \/>\n2.You can implement the kernel machinery in your target language. This is more work initially, but the people using your kernel might be more likely to contribute to it if it\u2019s in the language they know.<\/p><\/blockquote>\n<p>\u306a\u308b\u307b\u3069\u3002\u308f\u304b\u3089\u3093\u3002<br \/>\n\u3068\u308a\u3042\u3048\u305a\u3001python\u304b\u3089\u547c\u3073\u51fa\u3059\u5f62\u3067\u826f\u3051\u308c\u3070\u3088\u308a\u7c21\u5358\u306b\u4f5c\u308c\u308b\u3088\u3063\u3066\u3053\u3068\u3060\u3068\u7406\u89e3\u3057\u3066<br \/>\n1\u756a\u306e\u300cMaking simple Python wrapper kernels\u300d\u306e\u65b9\u6cd5\u3067\u4f5c\u6210\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n<p>\u3069\u3046\u3084\u3089\u3001ipykernel.kernelbase.Kernel\u306esubclass\u3068\u3057\u3066<br \/>\nMyKernel\u3092\u5b9a\u7fa9\u3057\u3066\u3001\u5b9f\u884c\u3055\u308c\u305f\u5834\u5408\u306b\u547c\u3070\u308c\u308b\u30e1\u30bd\u30c3\u30c9\u7b49\u3092\u4f5c\u6210\u3057\u3066\u304f\u3068\u3067\u304d\u308b\u898b\u305f\u3044\u3067\u3059\u306d\u3002<br \/>\nmuch simpler\u306f\u672c\u5f53\u3060\u3063\u305f\uff01\u3059\u3054\u3044\u30b7\u30f3\u30d7\u30eb\uff01\uff01<\/p>\n<p>C\u8a00\u8a9e\u306eKernel\u5b9f\u88c5\u304c\u307e\u3055\u306b\u3053\u306e\u65b9\u6cd5\u304b\u3064\u3001MIT\u30e9\u30a4\u30bb\u30f3\u30b9\u3067\u516c\u958b\u3057\u3066\u304f\u308c\u3066\u3044\u308b\u306e\u3067\u3001<br \/>\nRust\u7528\u306b\u4e00\u90e8\u5909\u3048\u308b\u3068\u3059\u3050\u306b\u3067\u304d\u305d\u3046\u3067\u3059\u3002<br \/>\n# brendan-rius\u3055\u3093\u3001\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3002<\/p>\n<h2>2.kernelspec \u3078\u306e\u8ffd\u52a0<\/h2>\n<p>\u516c\u5f0f\u306eKernel Spec\u53c2\u7167\u3067\u3059\u3002<\/p>\n<p>\u65b0\u3057\u3044\u8a00\u8a9eKernel\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306fkernelspec\u3078\u306e\u8ffd\u52a0\u304c\u5fc5\u8981\u307f\u305f\u3044\u3067\u3059\u3002<br \/>\njupyter\u306ekernelspec\u30b3\u30de\u30f3\u30c9\u3067\u64cd\u4f5c\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code># jupyter kernelspec help\r\n\r\nManage Jupyter kernel specifications.\r\n\r\nSubcommands\r\n-----------\r\nSubcommands are launched as `jupyter kernelspec cmd [args]`. For information on\r\nusing subcommand 'cmd', do: `jupyter kernelspec cmd -h`.\r\n\r\ninstall-self\r\n    [DEPRECATED] Install the IPython kernel spec directory for this Python.\r\nlist\r\n    List installed kernel specifications.\r\ninstall\r\n    Install a kernel specification directory.\r\nremove\r\n    Remove one or more Jupyter kernelspecs by name.\r\nuninstall\r\n    Alias for remove\r\n<\/code><\/pre>\n<p>help\u306e\u901a\u308a\u3001install\u3067kernelspec\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u3067\u304d\u307e\u3059\u3002<br \/>\n(\u3068\u3044\u3063\u3066\u3082\u3001\u5404OS\u3054\u3068\u306b\u5b9a\u3081\u3089\u308c\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306bkernel.json\u3054\u3068\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u53d6\u308a\u8fbc\u3093\u3067\u3044\u308b\u3060\u3051\u306e\u3088\u3046\u3067\u3059\u3002)<\/p>\n<p>\u5b9f\u969b\u306binstall\u3057\u307e\u3059\u3002<br \/>\n\u4ee5\u4e0b\u306e\u3088\u3046\u306akernel.json\u3092\u4f5c\u6210\u3057<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">{<\/span>\r\n  <span class=\"nl\">\"argv\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span> <span class=\"err\">\/\/Kernel\u8d77\u52d5\u6642\u306b\u5b9f\u884c\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3092\u5b9a\u7fa9\u3059\u308b<\/span>\r\n    <span class=\"s2\">\"python\"<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s2\">\"-m\"<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s2\">\"jupyter_rust_kernel\"<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s2\">\"-f\"<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s2\">\"{connection_file}\"<\/span>\r\n  <span class=\"p\">],<\/span>\r\n  <span class=\"nl\">\"display_name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Rust\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"language\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"rust\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>install\u306e\u5b9f\u884c\u3002<\/p>\n<pre class=\"post-pre\"><code># jupyter kernelspec install rust_spec\r\n[InstallKernelSpec] Installed kernelspec rust_spec in \/usr\/local\/share\/jupyter\/kernels\/rust_spec\r\n<\/code><\/pre>\n<p>lsit\u3092\u898b\u3066\u307f\u308b\u3068\u3001<\/p>\n<pre class=\"post-pre\"><code># jupyter kernelspec list\r\nAvailable kernels:\r\n  python2      \/usr\/local\/lib\/python2.7\/dist-packages\/ipykernel\/resources\r\n  rust_spec    \/usr\/local\/share\/jupyter\/kernels\/rust_spec\r\n<\/code><\/pre>\n<p>\u8a8d\u8b58\u3055\u308c\u305f\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n<h1>\u5b8c\u6210<\/h1>\n<p>\u305d\u3093\u306a\u3053\u3093\u306a\u3067\u5b8c\u6210\u3057\u307e\u3057\u305f\u3002<br \/>\n\u5168\u4f53\u306fgithub\u306b\u3042\u3052\u305f\u306e\u3067\u3053\u3061\u3089\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d5e7a37434c4406cf5655\/27-0.png\" alt=\"rust_notebook.PNG\" \/><\/div>\n<h1>Kernel\u306e\u8a73\u7d30<\/h1>\n<p>\u4eca\u56de\u3001RustKernel\u3092\u4f5c\u6210\u4e00\u90e8\u4fee\u6b63\u3057\u307e\u3057\u305f\u304c\u3001<br \/>\n\u884c\u3063\u3066\u3044\u308b\u3053\u3068\u306f\u3001\u3056\u3063\u304f\u308a\u4ee5\u4e0b\u306e3\u70b9\u3067\u3059\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>jupyter\u306b\u8a18\u8ff0\u3055\u308c\u5b9f\u884c\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3092\u53d7\u3051\u53d6\u308a\u30d5\u30a1\u30a4\u30eb\u306b\u51fa\u529b(do_execute)<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>rustc\u30c7\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>shutdown\u6642\u306b\u306f\u4f5c\u6210\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u4e00\u62ec\u524a\u9664(do_shutdown)<\/ol>\n<p>\u306a\u306e\u3067\u3001\u3069\u306e\u8a00\u8a9e\u3082\u540c\u3058\u65b9\u91dd\u3067\u4f5c\u308b\u3053\u3068\u304c\u3067\u304d\u305d\u3046\u3067\u3059\u3002<br \/>\n\u3057\u304b\u3057\u3001interactive\u306aKernel\u3092\u4f5c\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u3068\u601d\u3046\u306e\u3067\u3001<br \/>\ninteractive\u306aKernel\u306f\u3082\u3046\u4e00\u65b9\u306eKernel\u306e\u4f5c\u308a\u65b9\u3067\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3093\u3067\u3057\u3087\u3046\u304b\u3002<br \/>\n(\u672a\u3060\u3088\u304f\u308f\u304b\u3063\u3066\u306a\u3044\u3002\u3002\u3002)<\/p>\n<p>\u305f\u3060\u3001RustKernel\u3082<br \/>\ndo_complete\u4f7f\u3063\u3066\u3001\u88dc\u5b8c\u3055\u305b\u305f\u308a\u306a\u3069\u3001\u307e\u3060\u307e\u3060\u6539\u826f\u306e\u4f59\u5730\u306f\u3042\u308a\u305d\u3046\u306a\u306e\u3067\u3001<br \/>\n\u5f15\u304d\u7d9a\u304d\u3044\u3058\u3063\u3066\u3044\u3053\u3046\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<h1>\u7d42\u308f\u308a\u306b<\/h1>\n<p>Jupyter\u306e\u52e2\u3044\u3001\u3059\u3054\u3044\u3067\u3059\u306d\uff01<br \/>\n\u79c1\u304cJupyter\u3092\u77e5\u3063\u305f\u306e\u306f\u3001\u4eca\u5e74\u306e5\u6708\u306b\u5148\u8f29\u306b\u3053\u306e\u672c(IPython\u30c7\u30fc\u30bf\u30b5\u30a4\u30a8\u30f3\u30b9\u30af\u30c3\u30af\u30d6\u30c3\u30af)\u3092\u6559\u3048\u3066\u3082\u3089\u3063\u3066\u3067\u3057\u305f\u3002<br \/>\n\u4f55\u3066\u9762\u767d\u305d\u3046\u306a\u3093\u3060\u3001\u3068\u601d\u3044\u3059\u3050\u306b\u672c\u3092\u8cb7\u3044\u3001\u4f7f\u3044\u59cb\u3081\u307e\u3057\u305f\u3002<\/p>\n<p>IPython\u304b\u3089,Jupyter,JupyterLab\u3078\u3068\u3069\u3093\u3069\u3093\u4fbf\u5229\u306b\u306a\u3063\u3066\u3044\u304d\u307e\u3059\u306d\u3002<\/p>\n<p>\u3055\u3089\u306b\u3001\u7686\u3055\u3093\u304c\u69d8\u3005\u306a\u4fbf\u5229\u306a\u4f7f\u3044\u65b9\u7b49\u3092\u66f8\u3044\u3066\u304f\u308c\u3066\u3044\u308b\u306e\u3067\u3001<br \/>\n\u3082\u3063\u3068\u52c9\u5f37\u3057\u3066\u6700\u5927\u9650\u306b\u6d3b\u7528\u3057\u3066\u3044\u304d\u305f\u3044\u3067\u3059\uff01<\/p>\n<p>\u3053\u3053\u307e\u3067\u8aad\u3093\u3067\u3044\u305f\u3060\u304d\u3001\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3057\u305f\uff01\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u306e\u8a18\u4e8b\u306fjupyter notebook Advent Calender 2016 21\u65e5\u76ee\u306e\u8a18\u4e8b\u3067\u3059\u3002 \u306f [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-45372","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>- Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/45372-2\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:description\" content=\"\u3053\u306e\u8a18\u4e8b\u306fjupyter notebook Advent Calender 2016 21\u65e5\u76ee\u306e\u8a18\u4e8b\u3067\u3059\u3002 \u306f [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/45372-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-22T06:35:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-04T00:26:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d5e7a37434c4406cf5655\/27-0.png\" \/>\n<meta name=\"author\" content=\"\u5b87, \u534e\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u5b87, \u534e\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/45372-2\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/45372-2\/\",\"name\":\"- Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-02-22T06:35:14+00:00\",\"dateModified\":\"2024-05-04T00:26:52+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/45372-2\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458\",\"name\":\"\u5b87, \u534e\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g\",\"caption\":\"\u5b87, \u534e\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yuhua\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/45372-2\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"- Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/45372-2\/","og_locale":"zh_CN","og_type":"article","og_description":"\u3053\u306e\u8a18\u4e8b\u306fjupyter notebook Advent Calender 2016 21\u65e5\u76ee\u306e\u8a18\u4e8b\u3067\u3059\u3002 \u306f [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/45372-2\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-02-22T06:35:14+00:00","article_modified_time":"2024-05-04T00:26:52+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d5e7a37434c4406cf5655\/27-0.png"}],"author":"\u5b87, \u534e","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u5b87, \u534e","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"1 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/45372-2\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/45372-2\/","name":"- Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-02-22T06:35:14+00:00","dateModified":"2024-05-04T00:26:52+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/45372-2\/"]}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458","name":"\u5b87, \u534e","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g","caption":"\u5b87, \u534e"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yuhua\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/45372-2\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45372","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=45372"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45372\/revisions"}],"predecessor-version":[{"id":97230,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45372\/revisions\/97230"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=45372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=45372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=45372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}