{"id":6657,"date":"2024-02-09T02:05:51","date_gmt":"2024-02-08T17:05:51","guid":{"rendered":"https:\/\/stevenoh0908.kro.kr\/blog\/?p=6657"},"modified":"2024-02-09T02:06:31","modified_gmt":"2024-02-08T17:06:31","slug":"bad-apple-on-terminal","status":"publish","type":"post","link":"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/","title":{"rendered":"Bad Apple!! on Terminal"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\uc7a5\ucc3d 6\uc2dc\uac04 \ub3d9\uc548 \uc5b4\uc81c \ubb54\uac00 \uc798\ubabb\ub41c \uac83\uc744 \uc54c\uc544\ucc28\ub9b0 \uc11c\uc6b8\ub300\ud559\uad50 \uc218\uce58\ubaa8\ub378\uc5f0\uad6c\uc2e4\uc758 \ub370\uc774\ud130\ub97c \ubcf4\ub2e4\uac00, \uc124 \uc5f0\ud734 \uc55e\uc784\uc5d0\ub3c4 \ub0b4\uac00 \ubb58 \ud558\uace0 \uc788\ub294 \uac83\uc778\uac00 \ud558\uace0 \uc9c0\uccd0\ubc84\ub9ac\uac8c \ub418\uc5c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc9c0\ucce4\uc744 \ub54c\ub294 \uc57d\uac04\uc758 \uc804\ud658\uc774 \ud544\uc694\ud55c \ubc95\uc774\ub77c, Youtube\ub97c \uc880 \ub4a4\uc801\uac70\ub9ac\ub2e4\uac00 \uc678\uad6d \uc0ac\ub78c\ub4e4\uc740 \uc628\uac16 \uc7a5\uce58\ub4e4\uacfc \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub4e4\uc744 \uc774\uc6a9\ud574 \ub3d9\ubc29 \ud504\ub85c\uc81d\ud2b8\uc758 \uc0ac\uc6b4\ub4dc\ud2b8\ub799\uc744 nomico\uac00 \ub9ac\ubbf9\uc2a4\ud55c Bad Apple!!\uc744 \uac00\uc9c0\uac01\uc0c9\uc5d0\uc11c \ub3cc\ub824\ubcf8\ub2e4\ub294 \uac83\uc744 \uc54c\uac8c \ub418\uc5c8\ub2e4. \ud328\ubbf8\ucef4\uc5d0\uc11c \ub3cc\ub9b0 \uc0ac\ub78c\ub3c4 \uc788\uace0, \ud14c\uc2ac\ub77c \ucf54\uc77c\uc744 \uc774\uc6a9\ud574 \uc5f0\uc8fc\ud558\uba74\uc11c \ub3d9\uc2dc\uc5d0 \ub808\uc774\uc800\ub85c \uc724\uacfd\uc120 \ud615\ud0dc\ub85c \ube44\ub514\uc624\ub97c \uc7ac\ud604\ud55c \uc0ac\ub78c\ub3c4 \uc788\uace0, \uc2ec\uc9c0\uc5b4\ub294 Minecraft\uc758 \ucca0 \ub2e4\ub77d\ubb38\uc774\ub098 \uc591\uc744 \uc774\uc6a9\ud558\uc5ec \uc7ac\ud604\ud55c \uacbd\uc6b0\ub3c4 \uc788\uace0&#8230;&#8230;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc2e4 <a href=\"https:\/\/www.nicovideo.jp\/watch\/nm3601701\" target=\"_blank\" rel=\"noopener\" title=\"2009\ub144\uc5d0 \uc77c\ubcf8 \ub2c8\ucf54\ub3d9\uc5d0\uc11c \ud22c\uace0\ub418\uc5b4 \ub192\uc740 \uc778\uae30\ub97c \ub048 \ud574\ub2f9 \ubba4\uc9c1 \ube44\ub514\uc624\">2009\ub144\uc5d0 \uc77c\ubcf8 \ub2c8\ucf54\ub3d9\uc5d0\uc11c \ud22c\uace0\ub418\uc5b4 \ub192\uc740 \uc778\uae30\ub97c \ub048 \ud574\ub2f9 \ubba4\uc9c1 \ube44\ub514\uc624<\/a>\uac00 \uc778\uae30\ub97c \ub04c \uc218 \uc788\uc5c8\uace0 \ubcc4\uc758\ubcc4 Machine\ub4e4\uc5d0\uc11c \ub3cc\ub9b4 \uc218 \uc788\uc5c8\ub358 \uc5f0\uc720\ub294 \ube44\ub514\uc624\uac00 \ub2e8\uc21c\ud55c B&amp;W(\ud751\ubc31) \ube44\ub514\uc624 \ud615\ud0dc\uc758, \uadf8\uac83\ub3c4 \ubaa8\uc158 \uadf8\ub798\ud53d \ud615\ud0dc\uc600\uae30 \ub54c\ubb38\uc774 \uc544\ub2d0\uae4c \uc2f6\uc5c8\ub2e4. \uc774\ubbf8\uc9c0 \uc0c1\uc73c\ub85c\ub3c4 \uc724\uacfd\uc120 \ubf51\uae30\ub3c4 \ud3b8\ub9ac\ud558\uace0, \uac01 \ud504\ub808\uc784\uc744 \uc800\uc7a5\ud558\uac70\ub098 \ub514\uc2a4\ud50c\ub808\uc774\uc5d0 \ucd9c\ub825\ud558\ub294\ub370 \uc788\uc5b4\uc11c \uadf8\ub2e4\uc9c0 \ub9ce\uc740 \uc6a9\ub7c9\uc774 \ud544\uc694\ud558\uc9c0\ub3c4 \uc54a\uace0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c \uc57d\uac04 \ub178\ub2e5\uac70\ub9ac\ub294 \uae40\uc5d0, \ub300\ucda9 OpenCV\uc640 Python\uc744 \uc774\uc6a9\ud558\uba74 Terminal\uc774\ub098 Shell\uc5d0\uc11c \uc774 \ube44\ub514\uc624\ub97c \uc7ac\ud604\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\uc9c0 \uc54a\uc744\uae4c \uc2f6\uc5b4\uc11c \ub300\ucda9 \ub9cc\ub4e4\uc5c8\ub2e4. \uadf8 \uacb0\uacfc\ubb3c\uc774 \uc544\ub798\uc5d0 \uc788\ub294\ub370, \ubb50&#8230;&#8230; \uad73\uc774 \uc624\ub798 \uac78\ub9ac\uc9c0\ub3c4 \uc54a\uc558\uace0 \uc7ac\ubbf8 \uc0bc\uc544\uc11c \ub9cc\ub4e4\uc5c8\uc73c\ub2c8 \uc18c\uc2a4 \ucf54\ub4dc\ub294 \uc544\ub798\uc5d0 \uacf5\uac1c\ud574\ub454\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/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-4'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/#%EA%B2%B0%EA%B3%BC%EB%AC%BC\" >\uacb0\uacfc\ubb3c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/#%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\" >\uc18c\uc2a4 \ucf54\ub4dc<\/a><\/li><\/ul><\/nav><\/div>\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%EA%B2%B0%EA%B3%BC%EB%AC%BC\"><\/span>\uacb0\uacfc\ubb3c<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Bad Apple!! on Terminal\" width=\"1140\" height=\"641\" src=\"https:\/\/www.youtube.com\/embed\/QCpvwJwDdhU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">\ub178\ub2e5\uac70\ub9b0 \uacb0\uacfc\ubb3c. Standard Output\uc744 \ud130\ubbf8\ub110\uc5d0 \ucd9c\ub825\ud558\ub294\ub370 \uac78\ub9ac\ub294 \uc2dc\uac04 \uc9c0\uc5f0 \ub54c\ubb38\uc5d0 \uc57d\uac04 \uae5c\ube61\uac70\ub9b0\ub2e4.<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%EC%86%8C%EC%8A%A4_%EC%BD%94%EB%93%9C\"><\/span>\uc18c\uc2a4 \ucf54\ub4dc<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># -----------------------------------------\n# videoplayer.py\n# -----------------------------------------\n# * Created on 8 Feb 2024\n# * Created by Stephen Oh (stevenoh0908@gmail.com)\n# -----------------------------------------\n# this videoplayer plays video files, using opencv-python, in terminal.\n# only black-and-white video can be played.\n\nimport cv2, pygame\nimport os, sys, time\nimport numpy as np\n\nclass Video:\n\t# Variables\n\tpath = None\n\tobject = None\n\tlength = None\n\twidth = None\n\theight = None\n\tframecount = None\n\tfps = None\n\tframes = None\n\n\tdef __init__(self, path=None):\n\t\tself.path = None\n\t\tself.object = None\n\t\tself.length = None\n\t\tself.width = None\n\t\tself.height = None\n\t\tself.framecount = None\n\t\tself.fps = None\n\t\tself.frames = None\n\t\tif path != None:\n\t\t\tself.load(path)\n\t\t\tpass\n\t\treturn\n\n\tdef getPath(self):\n\t\tif self.path == None:\n\t\t\traise Exception(\"The video is not opened yet.\")\n\t\t\treturn\n\t\treturn self.path\n\n\tdef getObject(self):\n\t\tif self.object == None:\n\t\t\traise Exception(\"The video is not opened yet.\")\n\t\t\treturn\n\t\treturn self.object\n\n\tdef getLength(self):\n\t\tif self.length == None:\n\t\t\traise Exception(\"The video is not opened yet.\")\n\t\t\treturn\n\t\treturn self.length\n\n\tdef getWidth(self):\n\t\tif self.width == None:\n\t\t\traise Exception(\"The video is not opened yet.\")\n\t\t\treturn\n\t\treturn self.width\n\n\tdef getHeight(self):\n\t\tif self.height == None:\n\t\t\traise Exception(\"The video is not opened yet.\")\n\t\t\treturn\n\t\treturn self.height\n\n\tdef getResolution(self):\n\t\treturn (self.getWidth(), self.getHeight())\n\n\tdef getFPS(self):\n\t\tif self.fps == None:\n\t\t\traise Exception(\"The video is not opened yet.\")\n\t\t\treturn\n\t\treturn self.fps\n\n\tdef getFramecount(self):\n\t\tif self.framecount == None:\n\t\t\traise Exception(\"The video is not opened yet.\")\n\t\t\treturn\n\t\treturn self.framecount\n\n\tdef setPath(self, path):\n\t\tif not os.path.exists(path):\n\t\t\traise FileNotFoundError(\"The specified path was not found.\")\n\t\t\treturn\n\t\tself.path = path\n\t\treturn\n\n\tdef updateMetainfo(self):\n\t\tif self.object == None:\n\t\t\traise Exception(\"The Video is not loaded.\")\n\t\t\treturn\n\t\tself.framecount = int(self.object.get(cv2.CAP_PROP_FRAME_COUNT))\n\t\tself.width = int(self.object.get(cv2.CAP_PROP_FRAME_WIDTH))\n\t\tself.height = int(self.object.get(cv2.CAP_PROP_FRAME_HEIGHT))\n\t\tself.fps = self.object.get(cv2.CAP_PROP_FPS)\n\t\tself.length = int(self.framecount \/ self.fps)\n\t\treturn\n\n\tdef load(self, path=None):\n\t\tif path != None:\n\t\t\tself.setPath(path)\n\t\t\tpass\n\t\tself.object = cv2.VideoCapture(self.path)\n\t\tif not self.object.isOpened():\n\t\t\traise Exception(\"Video was not opened successfully.\")\n\t\t\tself.object = None\n\t\t\treturn\n\t\tself.updateMetainfo()\n\t\treturn\n\n\tdef loadAllFrames(self):\n\t\tif self.object == None or not self.object.isOpened():\n\t\t\traise Exception(\"The Video is not loaded.\")\n\t\t\treturn\n\t\t# init frames\n\t\tself.frames = np.ndarray((self.getFramecount(), self.getHeight(), self.getWidth(), 3), dtype=np.uint8)\n\t\tfor i in range(self.getFramecount()):\n\t\t\tret, frame = self.object.read()\n\t\t\tif ret:\n\t\t\t\tself.frames[i,:,:,:] = frame\n\t\t\t\tpass\n\t\t\tpass\n\t\treturn\n\n\tdef release(self):\n\t\tself.object.release()\n\t\treturn\n\n\tdef getFrame(self, frameno):\n\t\tif type(self.frames) == type(None):\n\t\t\traise Exception(\"The Video is not loaded.\")\n\t\t\treturn\n\t\tif not (0 &lt;= frameno &lt; self.getFramecount()):\n\t\t\traise Exception(f\"Invalid Frame No. Maximum Frame: {self.framecount-1}\")\n\t\t\treturn\n\t\treturn self.frames[frameno,:,:,:]\n\n\tdef getGrayFrame(self, frameno):\n\t\tframe = self.getFrame(frameno)\n\t\tgrayframe = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)\n\t\treturn grayframe\n\n\tdef getBlackAndWhiteFrame(self, frameno):\n\t\tgrayframe = self.getGrayFrame(frameno)\n\t\tthresh, blacknwhiteframe = cv2.threshold(grayframe, 127, 255, cv2.THRESH_BINARY)\n\t\treturn blacknwhiteframe\n\n\tpass\n\ndef printFrame(video, frameno, width=100, whiteChar='oo', blackChar='  '):\n\torig_width, orig_height = video.getResolution()\n\tr = width \/ orig_width\n\theight = int(orig_height * r)\n\tframe = video.getBlackAndWhiteFrame(frameno)\n\tresizedFrame = cv2.resize(frame, dsize=(width,height))\n\tprint_str = ''\n\tfor row in range(height):\n\t\tfor col in range(width):\n\t\t\tprint_str +=  blackChar if resizedFrame[row,col] == 0 else whiteChar\n\t\t\tpass\n\t\tprint_str += '\\n'\n\t\tpass\n\tprint(print_str)\n\treturn\n\ndef printVideo(path, width=100, whiteChar='o', blackChar=' ', timeOffset=0, audio_path='0'):\n\tvideo = Video(path=path)\n\tvideo.loadAllFrames()\n\tframecounts = video.getFramecount()\n\tframeoffset = 0\n\tif audio_path != '0':\n\t\tpygame.mixer.init()\n\t\tpygame.mixer.music.load(audio_path)\n\t\tpygame.mixer.music.play()\n\t\tpass\n\tstime = time.time()\n\tfor frameno in range(framecounts):\n\t\tos.system('cls')\n\t\tprintFrame(video, frameno, width=width, whiteChar=whiteChar, blackChar=blackChar)\n\t\tsleeptime = 1.0\/video.getFPS() - (time.time() - stime) + frameoffset + timeOffset\n\t\tif sleeptime > 0:\n\t\t\tframeoffset = 0\n\t\t\ttime.sleep(sleeptime)\n\t\t\tpass\n\t\telse:\n\t\t\tframeoffset = sleeptime\n\t\t\tpass\n\t\tstime = time.time()\n\t\tpass\n\tvideo.release()\n\treturn\n\nif __name__ == '__main__':\n\twidth = 100\n\twhiteChar = 'o'\n\tblackChar = ' '\n\trepeatCount = 1\n\ttimeOffset = 0\n\tif len(sys.argv) not in [2, 3, 4, 5, 6, 7, 8]:\n\t\tprint(\"Invalid Usage.\")\n\t\texit()\n\tif len(sys.argv) >= 2: path = sys.argv[1]\n\tif len(sys.argv) >= 3: audio_path = sys.argv[2]\n\tif len(sys.argv) >= 4: width = int(sys.argv[3])\n\tif len(sys.argv) >= 5: timeOffset = float(sys.argv[4])\n\tif len(sys.argv) >= 6: repeatCount = int(sys.argv[5])\n\tif len(sys.argv) >= 7: whiteChar = sys.argv[6]\n\tif len(sys.argv) >= 8: blackChar = sys.argv[7]\n\tprintVideo(path, width=width, whiteChar=whiteChar*repeatCount, blackChar=blackChar*repeatCount, timeOffset=timeOffset, audio_path=audio_path)\n\texit()<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\uc7a5\ucc3d 6\uc2dc\uac04 \ub3d9\uc548 \uc5b4\uc81c \ubb54\uac00 \uc798\ubabb\ub41c \uac83\uc744 \uc54c\uc544\ucc28\ub9b0 \uc11c\uc6b8\ub300\ud559\uad50 \uc218\uce58\ubaa8\ub378\uc5f0\uad6c\uc2e4\uc758 \ub370\uc774\ud130\ub97c \ubcf4\ub2e4\uac00, \uc124 \uc5f0\ud734 \uc55e\uc784\uc5d0\ub3c4 \ub0b4\uac00 \ubb58 \ud558\uace0 \uc788\ub294 \uac83\uc778\uac00 \ud558\uace0 \uc9c0\uccd0\ubc84\ub9ac\uac8c \ub418\uc5c8\ub2e4. \uc9c0\ucce4\uc744 \ub54c\ub294 \uc57d\uac04\uc758 \uc804\ud658\uc774 \ud544\uc694\ud55c \ubc95\uc774\ub77c, Youtube\ub97c \uc880 \ub4a4\uc801\uac70\ub9ac\ub2e4\uac00 \uc678\uad6d \uc0ac\ub78c\ub4e4\uc740 \uc628\uac16 \uc7a5\uce58\ub4e4\uacfc \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub4e4\uc744 \uc774\uc6a9\ud574 \ub3d9\ubc29 \ud504\ub85c\uc81d\ud2b8\uc758 \uc0ac\uc6b4\ub4dc\ud2b8\ub799\uc744 nomico\uac00 \ub9ac\ubbf9\uc2a4\ud55c Bad Apple!! <a class=\"read-more\" href=\"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":18,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_share_on_mastodon":"0","_share_on_mastodon_status":"%title%\r\n\r\n%excerpt%\r\n\r\n%permalink%"},"categories":[45],"tags":[],"series":[],"class_list":["post-6657","post","type-post","status-publish","format-standard","hentry","category-chalkboard"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\uc7a5\ucc3d 6\uc2dc\uac04 \ub3d9\uc548 \uc5b4\uc81c \ubb54\uac00 \uc798\ubabb\ub41c \uac83\uc744 \uc54c\uc544\ucc28\ub9b0 \uc11c\uc6b8\ub300\ud559\uad50 \uc218\uce58\ubaa8\ub378\uc5f0\uad6c\uc2e4\uc758 \ub370\uc774\ud130\ub97c \ubcf4\ub2e4\uac00, \uc124 \uc5f0\ud734 \uc55e\uc784\uc5d0\ub3c4 \ub0b4\uac00 \ubb58 \ud558\uace0 \uc788\ub294 \uac83\uc778\uac00 \ud558\uace0 \uc9c0\uccd0\ubc84\ub9ac\uac8c \ub418\uc5c8\ub2e4. \uc9c0\ucce4\uc744 \ub54c\ub294 \uc57d\uac04\uc758 \uc804\ud658\uc774 \ud544\uc694\ud55c \ubc95\uc774\ub77c, Youtube\ub97c \uc880 \ub4a4\uc801\uac70\ub9ac\ub2e4\uac00 \uc678\uad6d \uc0ac\ub78c\ub4e4\uc740 \uc628\uac16 \uc7a5\uce58\ub4e4\uacfc \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub4e4\uc744 \uc774\uc6a9\ud574 \ub3d9\ubc29 \ud504\ub85c\uc81d\ud2b8\uc758 \uc0ac\uc6b4\ub4dc\ud2b8\ub799\uc744 nomico\uac00 \ub9ac\ubbf9\uc2a4\ud55c Bad Apple!!\uc744 \uac00\uc9c0\uac01\uc0c9\uc5d0\uc11c \ub3cc\ub824\ubcf8\ub2e4\ub294 \uac83\uc744 \uc54c\uac8c \ub418\uc5c8\ub2e4. \ud328\ubbf8\ucef4\uc5d0\uc11c \ub3cc\ub9b0 \uc0ac\ub78c\ub3c4 \uc788\uace0, \ud14c\uc2ac\ub77c\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"\ucee4\ud53c\uc0ac\uc720\"\/>\n\t<meta name=\"keywords\" content=\"chalkboard\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_GB\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Cafe \ucee4\ud53c\uc0ac\uc720 | \uce74\ud398\uc9c0\uae30 \ucee4\ud53c\uc0ac\uc720\uc758 \ucee4\ud53c\uc640 \uc0ac\uc720(\u601d\u60df)\uac00 \uc788\ub294 \uacf5\uac04.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Bad Apple!! on Terminal | Cafe \ucee4\ud53c\uc0ac\uc720\" \/>\n\t\t<meta property=\"og:description\" content=\"\uc7a5\ucc3d 6\uc2dc\uac04 \ub3d9\uc548 \uc5b4\uc81c \ubb54\uac00 \uc798\ubabb\ub41c \uac83\uc744 \uc54c\uc544\ucc28\ub9b0 \uc11c\uc6b8\ub300\ud559\uad50 \uc218\uce58\ubaa8\ub378\uc5f0\uad6c\uc2e4\uc758 \ub370\uc774\ud130\ub97c \ubcf4\ub2e4\uac00, \uc124 \uc5f0\ud734 \uc55e\uc784\uc5d0\ub3c4 \ub0b4\uac00 \ubb58 \ud558\uace0 \uc788\ub294 \uac83\uc778\uac00 \ud558\uace0 \uc9c0\uccd0\ubc84\ub9ac\uac8c \ub418\uc5c8\ub2e4. \uc9c0\ucce4\uc744 \ub54c\ub294 \uc57d\uac04\uc758 \uc804\ud658\uc774 \ud544\uc694\ud55c \ubc95\uc774\ub77c, Youtube\ub97c \uc880 \ub4a4\uc801\uac70\ub9ac\ub2e4\uac00 \uc678\uad6d \uc0ac\ub78c\ub4e4\uc740 \uc628\uac16 \uc7a5\uce58\ub4e4\uacfc \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub4e4\uc744 \uc774\uc6a9\ud574 \ub3d9\ubc29 \ud504\ub85c\uc81d\ud2b8\uc758 \uc0ac\uc6b4\ub4dc\ud2b8\ub799\uc744 nomico\uac00 \ub9ac\ubbf9\uc2a4\ud55c Bad Apple!!\uc744 \uac00\uc9c0\uac01\uc0c9\uc5d0\uc11c \ub3cc\ub824\ubcf8\ub2e4\ub294 \uac83\uc744 \uc54c\uac8c \ub418\uc5c8\ub2e4. \ud328\ubbf8\ucef4\uc5d0\uc11c \ub3cc\ub9b0 \uc0ac\ub78c\ub3c4 \uc788\uace0, \ud14c\uc2ac\ub77c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/stevenoh0908.pe.kr\/blog\/wp-content\/uploads\/2021\/08\/cropped-favicon-1.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/stevenoh0908.pe.kr\/blog\/wp-content\/uploads\/2021\/08\/cropped-favicon-1.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2024-02-08T17:05:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2024-02-08T17:06:31+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/stevenoh0908\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@stevenoh0908\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Bad Apple!! on Terminal | Cafe \ucee4\ud53c\uc0ac\uc720\" \/>\n\t\t<meta name=\"twitter:description\" content=\"\uc7a5\ucc3d 6\uc2dc\uac04 \ub3d9\uc548 \uc5b4\uc81c \ubb54\uac00 \uc798\ubabb\ub41c \uac83\uc744 \uc54c\uc544\ucc28\ub9b0 \uc11c\uc6b8\ub300\ud559\uad50 \uc218\uce58\ubaa8\ub378\uc5f0\uad6c\uc2e4\uc758 \ub370\uc774\ud130\ub97c \ubcf4\ub2e4\uac00, \uc124 \uc5f0\ud734 \uc55e\uc784\uc5d0\ub3c4 \ub0b4\uac00 \ubb58 \ud558\uace0 \uc788\ub294 \uac83\uc778\uac00 \ud558\uace0 \uc9c0\uccd0\ubc84\ub9ac\uac8c \ub418\uc5c8\ub2e4. \uc9c0\ucce4\uc744 \ub54c\ub294 \uc57d\uac04\uc758 \uc804\ud658\uc774 \ud544\uc694\ud55c \ubc95\uc774\ub77c, Youtube\ub97c \uc880 \ub4a4\uc801\uac70\ub9ac\ub2e4\uac00 \uc678\uad6d \uc0ac\ub78c\ub4e4\uc740 \uc628\uac16 \uc7a5\uce58\ub4e4\uacfc \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub4e4\uc744 \uc774\uc6a9\ud574 \ub3d9\ubc29 \ud504\ub85c\uc81d\ud2b8\uc758 \uc0ac\uc6b4\ub4dc\ud2b8\ub799\uc744 nomico\uac00 \ub9ac\ubbf9\uc2a4\ud55c Bad Apple!!\uc744 \uac00\uc9c0\uac01\uc0c9\uc5d0\uc11c \ub3cc\ub824\ubcf8\ub2e4\ub294 \uac83\uc744 \uc54c\uac8c \ub418\uc5c8\ub2e4. \ud328\ubbf8\ucef4\uc5d0\uc11c \ub3cc\ub9b0 \uc0ac\ub78c\ub3c4 \uc788\uace0, \ud14c\uc2ac\ub77c\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@stevenoh0908\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/stevenoh0908.pe.kr\/blog\/wp-content\/uploads\/2021\/08\/cropped-favicon-1.png\" \/>\n\t\t<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t\t<meta name=\"twitter:data1\" content=\"\ucee4\ud53c\uc0ac\uc720\" \/>\n\t\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/chalkboard\\\/bad-apple-on-terminal\\\/#article\",\"name\":\"Bad Apple!! on Terminal | Cafe \\ucee4\\ud53c\\uc0ac\\uc720\",\"headline\":\"Bad Apple!! on Terminal\",\"author\":{\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/author\\\/stevenoh0908\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/chalkboard\\\/bad-apple-on-terminal\\\/#articleImage\",\"url\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Stephen-Oh_New_Avatar_2021_Remaster_Circle_Cropped-150x150.png\",\"width\":96,\"height\":96,\"caption\":\"\\ucee4\\ud53c\\uc0ac\\uc720\"},\"datePublished\":\"2024-02-09T02:05:51+09:00\",\"dateModified\":\"2024-02-09T02:06:31+09:00\",\"inLanguage\":\"en-GB\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/chalkboard\\\/bad-apple-on-terminal\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/chalkboard\\\/bad-apple-on-terminal\\\/#webpage\"},\"articleSection\":\"Chalkboard\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/chalkboard\\\/bad-apple-on-terminal\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/category\\\/chalkboard\\\/#listItem\",\"name\":\"Chalkboard\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/category\\\/chalkboard\\\/#listItem\",\"position\":2,\"name\":\"Chalkboard\",\"item\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/category\\\/chalkboard\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/chalkboard\\\/bad-apple-on-terminal\\\/#listItem\",\"name\":\"Bad Apple!! on Terminal\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/chalkboard\\\/bad-apple-on-terminal\\\/#listItem\",\"position\":3,\"name\":\"Bad Apple!! on Terminal\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/category\\\/chalkboard\\\/#listItem\",\"name\":\"Chalkboard\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/#person\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/author\\\/stevenoh0908\\\/#author\",\"url\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/author\\\/stevenoh0908\\\/\",\"name\":\"\\ucee4\\ud53c\\uc0ac\\uc720\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/chalkboard\\\/bad-apple-on-terminal\\\/#authorImage\",\"url\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Stephen-Oh_New_Avatar_2021_Remaster_Circle_Cropped-150x150.png\",\"width\":96,\"height\":96,\"caption\":\"\\ucee4\\ud53c\\uc0ac\\uc720\"},\"sameAs\":[\"https:\\\/\\\/twingyeo.kr\\\/@stevenoh0908\",\"https:\\\/\\\/github.com\\\/stevenoh0908\"]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/chalkboard\\\/bad-apple-on-terminal\\\/#webpage\",\"url\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/chalkboard\\\/bad-apple-on-terminal\\\/\",\"name\":\"Bad Apple!! on Terminal | Cafe \\ucee4\\ud53c\\uc0ac\\uc720\",\"description\":\"\\uc7a5\\ucc3d 6\\uc2dc\\uac04 \\ub3d9\\uc548 \\uc5b4\\uc81c \\ubb54\\uac00 \\uc798\\ubabb\\ub41c \\uac83\\uc744 \\uc54c\\uc544\\ucc28\\ub9b0 \\uc11c\\uc6b8\\ub300\\ud559\\uad50 \\uc218\\uce58\\ubaa8\\ub378\\uc5f0\\uad6c\\uc2e4\\uc758 \\ub370\\uc774\\ud130\\ub97c \\ubcf4\\ub2e4\\uac00, \\uc124 \\uc5f0\\ud734 \\uc55e\\uc784\\uc5d0\\ub3c4 \\ub0b4\\uac00 \\ubb58 \\ud558\\uace0 \\uc788\\ub294 \\uac83\\uc778\\uac00 \\ud558\\uace0 \\uc9c0\\uccd0\\ubc84\\ub9ac\\uac8c \\ub418\\uc5c8\\ub2e4. \\uc9c0\\ucce4\\uc744 \\ub54c\\ub294 \\uc57d\\uac04\\uc758 \\uc804\\ud658\\uc774 \\ud544\\uc694\\ud55c \\ubc95\\uc774\\ub77c, Youtube\\ub97c \\uc880 \\ub4a4\\uc801\\uac70\\ub9ac\\ub2e4\\uac00 \\uc678\\uad6d \\uc0ac\\ub78c\\ub4e4\\uc740 \\uc628\\uac16 \\uc7a5\\uce58\\ub4e4\\uacfc \\uc18c\\ud504\\ud2b8\\uc6e8\\uc5b4\\ub4e4\\uc744 \\uc774\\uc6a9\\ud574 \\ub3d9\\ubc29 \\ud504\\ub85c\\uc81d\\ud2b8\\uc758 \\uc0ac\\uc6b4\\ub4dc\\ud2b8\\ub799\\uc744 nomico\\uac00 \\ub9ac\\ubbf9\\uc2a4\\ud55c Bad Apple!!\\uc744 \\uac00\\uc9c0\\uac01\\uc0c9\\uc5d0\\uc11c \\ub3cc\\ub824\\ubcf8\\ub2e4\\ub294 \\uac83\\uc744 \\uc54c\\uac8c \\ub418\\uc5c8\\ub2e4. \\ud328\\ubbf8\\ucef4\\uc5d0\\uc11c \\ub3cc\\ub9b0 \\uc0ac\\ub78c\\ub3c4 \\uc788\\uace0, \\ud14c\\uc2ac\\ub77c\",\"inLanguage\":\"en-GB\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/chalkboard\\\/bad-apple-on-terminal\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/author\\\/stevenoh0908\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/author\\\/stevenoh0908\\\/#author\"},\"datePublished\":\"2024-02-09T02:05:51+09:00\",\"dateModified\":\"2024-02-09T02:06:31+09:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/\",\"name\":\"Cafe \\ucee4\\ud53c\\uc0ac\\uc720\",\"alternateName\":\"\\ucee4\\ud53c\\uc0ac\\uc720\",\"description\":\"\\uce74\\ud398\\uc9c0\\uae30 \\ucee4\\ud53c\\uc0ac\\uc720\\uc758 \\ucee4\\ud53c\\uc640 \\uc0ac\\uc720(\\u601d\\u60df)\\uac00 \\uc788\\ub294 \\uacf5\\uac04.\",\"inLanguage\":\"en-GB\",\"publisher\":{\"@id\":\"https:\\\/\\\/stevenoh0908.pe.kr\\\/blog\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Bad Apple!! on Terminal | Cafe \ucee4\ud53c\uc0ac\uc720","description":"\uc7a5\ucc3d 6\uc2dc\uac04 \ub3d9\uc548 \uc5b4\uc81c \ubb54\uac00 \uc798\ubabb\ub41c \uac83\uc744 \uc54c\uc544\ucc28\ub9b0 \uc11c\uc6b8\ub300\ud559\uad50 \uc218\uce58\ubaa8\ub378\uc5f0\uad6c\uc2e4\uc758 \ub370\uc774\ud130\ub97c \ubcf4\ub2e4\uac00, \uc124 \uc5f0\ud734 \uc55e\uc784\uc5d0\ub3c4 \ub0b4\uac00 \ubb58 \ud558\uace0 \uc788\ub294 \uac83\uc778\uac00 \ud558\uace0 \uc9c0\uccd0\ubc84\ub9ac\uac8c \ub418\uc5c8\ub2e4. \uc9c0\ucce4\uc744 \ub54c\ub294 \uc57d\uac04\uc758 \uc804\ud658\uc774 \ud544\uc694\ud55c \ubc95\uc774\ub77c, Youtube\ub97c \uc880 \ub4a4\uc801\uac70\ub9ac\ub2e4\uac00 \uc678\uad6d \uc0ac\ub78c\ub4e4\uc740 \uc628\uac16 \uc7a5\uce58\ub4e4\uacfc \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub4e4\uc744 \uc774\uc6a9\ud574 \ub3d9\ubc29 \ud504\ub85c\uc81d\ud2b8\uc758 \uc0ac\uc6b4\ub4dc\ud2b8\ub799\uc744 nomico\uac00 \ub9ac\ubbf9\uc2a4\ud55c Bad Apple!!\uc744 \uac00\uc9c0\uac01\uc0c9\uc5d0\uc11c \ub3cc\ub824\ubcf8\ub2e4\ub294 \uac83\uc744 \uc54c\uac8c \ub418\uc5c8\ub2e4. \ud328\ubbf8\ucef4\uc5d0\uc11c \ub3cc\ub9b0 \uc0ac\ub78c\ub3c4 \uc788\uace0, \ud14c\uc2ac\ub77c","canonical_url":"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/","robots":"max-image-preview:large","keywords":"chalkboard","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/#article","name":"Bad Apple!! on Terminal | Cafe \ucee4\ud53c\uc0ac\uc720","headline":"Bad Apple!! on Terminal","author":{"@id":"https:\/\/stevenoh0908.pe.kr\/blog\/author\/stevenoh0908\/#author"},"publisher":{"@id":"https:\/\/stevenoh0908.pe.kr\/blog\/#person"},"image":{"@type":"ImageObject","@id":"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/#articleImage","url":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-content\/uploads\/2025\/08\/Stephen-Oh_New_Avatar_2021_Remaster_Circle_Cropped-150x150.png","width":96,"height":96,"caption":"\ucee4\ud53c\uc0ac\uc720"},"datePublished":"2024-02-09T02:05:51+09:00","dateModified":"2024-02-09T02:06:31+09:00","inLanguage":"en-GB","mainEntityOfPage":{"@id":"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/#webpage"},"isPartOf":{"@id":"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/#webpage"},"articleSection":"Chalkboard"},{"@type":"BreadcrumbList","@id":"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/stevenoh0908.pe.kr\/blog#listItem","position":1,"name":"Home","item":"https:\/\/stevenoh0908.pe.kr\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/stevenoh0908.pe.kr\/blog\/category\/chalkboard\/#listItem","name":"Chalkboard"}},{"@type":"ListItem","@id":"https:\/\/stevenoh0908.pe.kr\/blog\/category\/chalkboard\/#listItem","position":2,"name":"Chalkboard","item":"https:\/\/stevenoh0908.pe.kr\/blog\/category\/chalkboard\/","nextItem":{"@type":"ListItem","@id":"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/#listItem","name":"Bad Apple!! on Terminal"},"previousItem":{"@type":"ListItem","@id":"https:\/\/stevenoh0908.pe.kr\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/#listItem","position":3,"name":"Bad Apple!! on Terminal","previousItem":{"@type":"ListItem","@id":"https:\/\/stevenoh0908.pe.kr\/blog\/category\/chalkboard\/#listItem","name":"Chalkboard"}}]},{"@type":"Person","@id":"https:\/\/stevenoh0908.pe.kr\/blog\/#person"},{"@type":"Person","@id":"https:\/\/stevenoh0908.pe.kr\/blog\/author\/stevenoh0908\/#author","url":"https:\/\/stevenoh0908.pe.kr\/blog\/author\/stevenoh0908\/","name":"\ucee4\ud53c\uc0ac\uc720","image":{"@type":"ImageObject","@id":"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/#authorImage","url":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-content\/uploads\/2025\/08\/Stephen-Oh_New_Avatar_2021_Remaster_Circle_Cropped-150x150.png","width":96,"height":96,"caption":"\ucee4\ud53c\uc0ac\uc720"},"sameAs":["https:\/\/twingyeo.kr\/@stevenoh0908","https:\/\/github.com\/stevenoh0908"]},{"@type":"WebPage","@id":"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/#webpage","url":"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/","name":"Bad Apple!! on Terminal | Cafe \ucee4\ud53c\uc0ac\uc720","description":"\uc7a5\ucc3d 6\uc2dc\uac04 \ub3d9\uc548 \uc5b4\uc81c \ubb54\uac00 \uc798\ubabb\ub41c \uac83\uc744 \uc54c\uc544\ucc28\ub9b0 \uc11c\uc6b8\ub300\ud559\uad50 \uc218\uce58\ubaa8\ub378\uc5f0\uad6c\uc2e4\uc758 \ub370\uc774\ud130\ub97c \ubcf4\ub2e4\uac00, \uc124 \uc5f0\ud734 \uc55e\uc784\uc5d0\ub3c4 \ub0b4\uac00 \ubb58 \ud558\uace0 \uc788\ub294 \uac83\uc778\uac00 \ud558\uace0 \uc9c0\uccd0\ubc84\ub9ac\uac8c \ub418\uc5c8\ub2e4. \uc9c0\ucce4\uc744 \ub54c\ub294 \uc57d\uac04\uc758 \uc804\ud658\uc774 \ud544\uc694\ud55c \ubc95\uc774\ub77c, Youtube\ub97c \uc880 \ub4a4\uc801\uac70\ub9ac\ub2e4\uac00 \uc678\uad6d \uc0ac\ub78c\ub4e4\uc740 \uc628\uac16 \uc7a5\uce58\ub4e4\uacfc \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub4e4\uc744 \uc774\uc6a9\ud574 \ub3d9\ubc29 \ud504\ub85c\uc81d\ud2b8\uc758 \uc0ac\uc6b4\ub4dc\ud2b8\ub799\uc744 nomico\uac00 \ub9ac\ubbf9\uc2a4\ud55c Bad Apple!!\uc744 \uac00\uc9c0\uac01\uc0c9\uc5d0\uc11c \ub3cc\ub824\ubcf8\ub2e4\ub294 \uac83\uc744 \uc54c\uac8c \ub418\uc5c8\ub2e4. \ud328\ubbf8\ucef4\uc5d0\uc11c \ub3cc\ub9b0 \uc0ac\ub78c\ub3c4 \uc788\uace0, \ud14c\uc2ac\ub77c","inLanguage":"en-GB","isPartOf":{"@id":"https:\/\/stevenoh0908.pe.kr\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/#breadcrumblist"},"author":{"@id":"https:\/\/stevenoh0908.pe.kr\/blog\/author\/stevenoh0908\/#author"},"creator":{"@id":"https:\/\/stevenoh0908.pe.kr\/blog\/author\/stevenoh0908\/#author"},"datePublished":"2024-02-09T02:05:51+09:00","dateModified":"2024-02-09T02:06:31+09:00"},{"@type":"WebSite","@id":"https:\/\/stevenoh0908.pe.kr\/blog\/#website","url":"https:\/\/stevenoh0908.pe.kr\/blog\/","name":"Cafe \ucee4\ud53c\uc0ac\uc720","alternateName":"\ucee4\ud53c\uc0ac\uc720","description":"\uce74\ud398\uc9c0\uae30 \ucee4\ud53c\uc0ac\uc720\uc758 \ucee4\ud53c\uc640 \uc0ac\uc720(\u601d\u60df)\uac00 \uc788\ub294 \uacf5\uac04.","inLanguage":"en-GB","publisher":{"@id":"https:\/\/stevenoh0908.pe.kr\/blog\/#person"}}]},"og:locale":"en_GB","og:site_name":"Cafe \ucee4\ud53c\uc0ac\uc720 | \uce74\ud398\uc9c0\uae30 \ucee4\ud53c\uc0ac\uc720\uc758 \ucee4\ud53c\uc640 \uc0ac\uc720(\u601d\u60df)\uac00 \uc788\ub294 \uacf5\uac04.","og:type":"article","og:title":"Bad Apple!! on Terminal | Cafe \ucee4\ud53c\uc0ac\uc720","og:description":"\uc7a5\ucc3d 6\uc2dc\uac04 \ub3d9\uc548 \uc5b4\uc81c \ubb54\uac00 \uc798\ubabb\ub41c \uac83\uc744 \uc54c\uc544\ucc28\ub9b0 \uc11c\uc6b8\ub300\ud559\uad50 \uc218\uce58\ubaa8\ub378\uc5f0\uad6c\uc2e4\uc758 \ub370\uc774\ud130\ub97c \ubcf4\ub2e4\uac00, \uc124 \uc5f0\ud734 \uc55e\uc784\uc5d0\ub3c4 \ub0b4\uac00 \ubb58 \ud558\uace0 \uc788\ub294 \uac83\uc778\uac00 \ud558\uace0 \uc9c0\uccd0\ubc84\ub9ac\uac8c \ub418\uc5c8\ub2e4. \uc9c0\ucce4\uc744 \ub54c\ub294 \uc57d\uac04\uc758 \uc804\ud658\uc774 \ud544\uc694\ud55c \ubc95\uc774\ub77c, Youtube\ub97c \uc880 \ub4a4\uc801\uac70\ub9ac\ub2e4\uac00 \uc678\uad6d \uc0ac\ub78c\ub4e4\uc740 \uc628\uac16 \uc7a5\uce58\ub4e4\uacfc \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub4e4\uc744 \uc774\uc6a9\ud574 \ub3d9\ubc29 \ud504\ub85c\uc81d\ud2b8\uc758 \uc0ac\uc6b4\ub4dc\ud2b8\ub799\uc744 nomico\uac00 \ub9ac\ubbf9\uc2a4\ud55c Bad Apple!!\uc744 \uac00\uc9c0\uac01\uc0c9\uc5d0\uc11c \ub3cc\ub824\ubcf8\ub2e4\ub294 \uac83\uc744 \uc54c\uac8c \ub418\uc5c8\ub2e4. \ud328\ubbf8\ucef4\uc5d0\uc11c \ub3cc\ub9b0 \uc0ac\ub78c\ub3c4 \uc788\uace0, \ud14c\uc2ac\ub77c","og:url":"https:\/\/stevenoh0908.pe.kr\/blog\/chalkboard\/bad-apple-on-terminal\/","og:image":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-content\/uploads\/2021\/08\/cropped-favicon-1.png","og:image:secure_url":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-content\/uploads\/2021\/08\/cropped-favicon-1.png","og:image:width":512,"og:image:height":512,"article:published_time":"2024-02-08T17:05:51+00:00","article:modified_time":"2024-02-08T17:06:31+00:00","article:publisher":"https:\/\/facebook.com\/stevenoh0908","twitter:card":"summary","twitter:site":"@stevenoh0908","twitter:title":"Bad Apple!! on Terminal | Cafe \ucee4\ud53c\uc0ac\uc720","twitter:description":"\uc7a5\ucc3d 6\uc2dc\uac04 \ub3d9\uc548 \uc5b4\uc81c \ubb54\uac00 \uc798\ubabb\ub41c \uac83\uc744 \uc54c\uc544\ucc28\ub9b0 \uc11c\uc6b8\ub300\ud559\uad50 \uc218\uce58\ubaa8\ub378\uc5f0\uad6c\uc2e4\uc758 \ub370\uc774\ud130\ub97c \ubcf4\ub2e4\uac00, \uc124 \uc5f0\ud734 \uc55e\uc784\uc5d0\ub3c4 \ub0b4\uac00 \ubb58 \ud558\uace0 \uc788\ub294 \uac83\uc778\uac00 \ud558\uace0 \uc9c0\uccd0\ubc84\ub9ac\uac8c \ub418\uc5c8\ub2e4. \uc9c0\ucce4\uc744 \ub54c\ub294 \uc57d\uac04\uc758 \uc804\ud658\uc774 \ud544\uc694\ud55c \ubc95\uc774\ub77c, Youtube\ub97c \uc880 \ub4a4\uc801\uac70\ub9ac\ub2e4\uac00 \uc678\uad6d \uc0ac\ub78c\ub4e4\uc740 \uc628\uac16 \uc7a5\uce58\ub4e4\uacfc \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub4e4\uc744 \uc774\uc6a9\ud574 \ub3d9\ubc29 \ud504\ub85c\uc81d\ud2b8\uc758 \uc0ac\uc6b4\ub4dc\ud2b8\ub799\uc744 nomico\uac00 \ub9ac\ubbf9\uc2a4\ud55c Bad Apple!!\uc744 \uac00\uc9c0\uac01\uc0c9\uc5d0\uc11c \ub3cc\ub824\ubcf8\ub2e4\ub294 \uac83\uc744 \uc54c\uac8c \ub418\uc5c8\ub2e4. \ud328\ubbf8\ucef4\uc5d0\uc11c \ub3cc\ub9b0 \uc0ac\ub78c\ub3c4 \uc788\uace0, \ud14c\uc2ac\ub77c","twitter:creator":"@stevenoh0908","twitter:image":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-content\/uploads\/2021\/08\/cropped-favicon-1.png","twitter:label1":"Written by","twitter:data1":"\ucee4\ud53c\uc0ac\uc720","twitter:label2":"Est. reading time","twitter:data2":"4 minutes"},"aioseo_meta_data":{"post_id":"6657","title":null,"description":null,"keywords":[],"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2024-02-08 16:55:16","updated":"2024-02-08 17:06:31","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"share_on_mastodon":{"url":"","error":""},"_links":{"self":[{"href":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-json\/wp\/v2\/posts\/6657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-json\/wp\/v2\/comments?post=6657"}],"version-history":[{"count":3,"href":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-json\/wp\/v2\/posts\/6657\/revisions"}],"predecessor-version":[{"id":6661,"href":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-json\/wp\/v2\/posts\/6657\/revisions\/6661"}],"wp:attachment":[{"href":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-json\/wp\/v2\/media?parent=6657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-json\/wp\/v2\/categories?post=6657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-json\/wp\/v2\/tags?post=6657"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/stevenoh0908.pe.kr\/blog\/wp-json\/wp\/v2\/series?post=6657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}