

{"id":125,"date":"2025-08-24T13:41:32","date_gmt":"2025-08-24T13:41:32","guid":{"rendered":"https:\/\/blog.yangminha.com\/?p=125"},"modified":"2025-08-24T13:41:32","modified_gmt":"2025-08-24T13:41:32","slug":"mariadb-openframeworks-%ec%97%b0%eb%8f%99","status":"publish","type":"post","link":"https:\/\/blog.yangminha.com\/?p=125","title":{"rendered":"MariaDB OpenFrameWorks \uc5f0\ub3d9"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>MariaDB\ub294 \ucd5c\uadfc \ubc84\uc804\uc740 \ubaa8\ub450 64bit\ub85c \uc81c\uacf5\ub418\uace0 \uc788\uc5b4\uc11c OpenFrameWorks 0.9.8\uc744 \uae30\ubc18\uc73c\ub85c 32bit\ub85c \uc8fc\ub85c \uac1c\ubc1c\uc744 \ud558\ub294 \ub0b4 \uc785\uc7a5\uc5d0\uc11c\ub294 \ubd88\ud3b8\ud560 \uc218 \ubc16\uc5d0 \uc5c6\ub2e4. \uac8c\ub2e4\uac00 Compute Shader\ub97c \ub9ce\uc774 \uc0ac\uc6a9\ud558\ub294 \ub0b4 \uac1c\ubc1c\uc5d0\uc11c\ub294 \ubd80\ub4dd\ubd88 \ubaa8\ub4e0 \ucf54\ub4dc\ub97c 0.12.1\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc\ud574\uc57c \ud558\ub294 \uc774 \uc0c1\ud669\uc774 \ub9c8\ub729\uc9c0 \uc54a\ub2e4. \uc815\ub9d0 \ub9e4\uc6b0 \ub9e4\uc6b0 \ubd88\ud3b8\ud558\uc9c0\ub9cc \uadf8\ub798\ub3c4 \ud560 \uac74 \ud574\uc57c\uc9c0.<\/p>\n\n\n\n<p>\uc77c\ub2e8 MariaDB\ub97c \uc124\uce58\ud558\uace0 \uc124\uce58\ud55c \ud6c4\uc5d0\ub294 lib\uc640 include\uac00 Program Files\/MariaDB\u2026 \/ \uc548\uc5d0 \ub2e4 \ub4e4\uc5b4\uac00 \uc788\uc73c\ub2c8 \uadf8\uac78 \ub0b4 \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc5f0\uacb0\ud574\uc900\ub2e4. \ub2f9\uc5f0\ud788 dll\uc740 \ub0b4 \ud504\ub85c\uc81d\ud2b8 \ubc14\uc774\ub108\ub9ac \ud3f4\ub354\uc5d0 \uc62e\uaca8\uc900\ub2e4. \uc544\ub798 \uadf8\ub9bc 4\uac1c \ucc38\uace0.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"438\" src=\"https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223453-1024x438.png\" alt=\"\" class=\"wp-image-128\" srcset=\"https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223453-1024x438.png 1024w, https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223453-300x128.png 300w, https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223453-768x328.png 768w, https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223453-1536x657.png 1536w, https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223453-2048x875.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"442\" src=\"https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223442-1024x442.png\" alt=\"\" class=\"wp-image-127\" srcset=\"https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223442-1024x442.png 1024w, https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223442-300x129.png 300w, https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223442-768x331.png 768w, https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223442-1536x663.png 1536w, https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223442-2048x884.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"439\" src=\"https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223508-1024x439.png\" alt=\"\" class=\"wp-image-126\" srcset=\"https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223508-1024x439.png 1024w, https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223508-300x129.png 300w, https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223508-768x329.png 768w, https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223508-1536x658.png 1536w, https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223508-2048x878.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1003\" height=\"514\" src=\"https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223651.png\" alt=\"\" class=\"wp-image-129\" srcset=\"https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223651.png 1003w, https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223651-300x154.png 300w, https:\/\/blog.yangminha.com\/wp-content\/uploads\/2025\/08\/\uc2a4\ud06c\ub9b0\uc0f7-2025-08-24-223651-768x394.png 768w\" sizes=\"auto, (max-width: 1003px) 100vw, 1003px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>MariaDB\uc6a9 DB\ub3c4 \ub9cc\ub4e4\uc5b4\uc8fc\uace0, \uc0ac\uc6a9\uc790\ub3c4 \ub9cc\ub4e4\uc5b4\uc8fc\uace0, \ud14c\uc2a4\ud2b8\uc6a9 \ud14c\uc774\ube14\ub3c4 \ud558\ub098 \ub9cc\ub4e4\uc5b4\uc900\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>>> DB\ub9cc\ub4e4\uace0 \uc0ac\uc6a9\uc790 \ub9cc\ub4dc\ub294 \ubd80\ubd84.\n>> \uc5ec\uae30\ubd80\ud130\ub294 mysql cli \ucf58\uc194 \ub4e4\uc5b4\uac00\uc11c \ub123\uc5b4\uc8fc\uba74 \ub41c\ub2e4.\ncreate database llmactivity default character set utf8 collate utf8_general_ci;\ncreate user 'llm'@'localhost' identified by '43348098';\ncreate user 'llm'@'%' identified by '43348098';\ngrant all privileges on llmactivity.* to 'llm'@'localhost';\ngrant all privileges on llmactivity.* to 'llm'@'%';\nflush privileges;\n\n>> DB \ud14c\uc774\ube14 \ub9cc\ub4dc\ub294 \ubd80\ubd84.  \nCREATE TABLE talktalk (\n\tidx int(11) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,\n\tquestion varchar(250) NOT NULL,\n\tanswer text,\n\tlanguage varchar(15),\n\tfilename text,\n\tvoice varchar(50),\n\tdate int(10) unsigned NOT NULL DEFAULT '0'\n) ENGINE=MyISAM DEFAULT CHARSET=utf8;<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>ofApp.h\uc5d0 \uc704\uc5d0 include \ud558\ub098 \ucd94\uac00\ud574\uc8fc\uace0, MySQL \ud3ec\uc778\ud130 \ud558\ub098 \ub9cc\ub4e4\uc5b4\uc900\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>#pragma once\n\n#include &lt;mysql.h>\n\n#include \"ofMain.h\"\n\nclass ofApp : public ofBaseApp{\n\n\tpublic:\n\t\tvoid setup();\n\t\tvoid update();\n\t\tvoid draw();\n\n\t\tvoid keyPressed(int key);\n\t\tvoid keyReleased(int key);\n\t\tvoid mouseMoved(int x, int y );\n\t\tvoid mouseDragged(int x, int y, int button);\n\t\tvoid mousePressed(int x, int y, int button);\n\t\tvoid mouseReleased(int x, int y, int button);\n\t\tvoid mouseEntered(int x, int y);\n\t\tvoid mouseExited(int x, int y);\n\t\tvoid windowResized(int w, int h);\n\t\tvoid dragEvent(ofDragInfo dragInfo);\n\t\tvoid gotMessage(ofMessage msg);\n\n\t\t<mark style=\"background-color:rgba(0, 0, 0, 0);color:#000000\" class=\"has-inline-color\"><strong><em>MYSQL* con;<\/em><\/strong><\/mark>\n\n\n\t\tauto execSQLQuery(MYSQL* connection, string query)\n\t\t{\n\t\t\tstruct result\n\t\t\t{\n\t\t\t\tbool success;\n\t\t\t\tMYSQL_RES* res;\n\t\t\t};\n\n\t\t\tbool success = true;\n\t\t\tif (mysql_query(connection, query.c_str()))\n\t\t\t{\n\t\t\t\tcout &lt;&lt; \"MySQL Query Error : \" &lt;&lt; mysql_error(connection) &lt;&lt; endl;\n\t\t\t\tsuccess = false;\n\t\t\t}\n\t\t\treturn result\n\t\t\t{\n\t\t\t\tsuccess,\n\t\t\t\tmysql_use_result(connection)\n\t\t\t};\n\t\t}\n\n};\n<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>execSQLQuery \ud568\uc218\ub294 \uc798 \uc9dc\ub193\uc740 \ucf54\ub4dc\uac00 \uc788\uc5b4 \uc774 \uacf3\uc5d0\uc11c \uac00\uc838\ub2e4 \ucd94\uac00\ud588\ub2e4.<\/p>\n\n\n\n<p><a href=\"https:\/\/ajdxjdrnfld.tistory.com\/12\">https:\/\/ajdxjdrnfld.tistory.com\/12<\/a><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>ofApp.cpp \uc5d0\uc11c setup\ud568\uc218\uc5d0\uc11c\ub9cc \uc544\ub798 \ud14c\uc2a4\ud2b8\ub97c \uc2e4\ud589\ud574\ubcf8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void ofApp::setup(){\n\tcon = mysql_init(NULL);\n\tif (!mysql_real_connect(con, \"localhost\", \"\uc0ac\uc6a9\uc790\uba85\", \"\ube44\ubc88\", \"DB\uba85\", 0, NULL, 0))\n\t{\n\t\tcout &lt;&lt; \" Connection Error : \" &lt;&lt; mysql_error(con) &lt;&lt; endl;\n\t}\n\telse {\n\t\tcout &lt;&lt; \"MariaDB Connection Success \" &lt;&lt; endl;\n\t}\n\n\n\tMYSQL_ROW row;\n\tif (con->status == mysql_status::MYSQL_STATUS_READY) {\n\n\t\tauto result = execSQLQuery(con, \"insert into talktalk (question, answer) values ('hello3', 'world3');\");\n\n\t\tif (!result.success)\n\t\t{\n\t\t\tcout &lt;&lt; \"fail to input to talktalk\" &lt;&lt; endl;\n\t\t}\n\n\t}\n\n\tif (con->status == mysql_status::MYSQL_STATUS_READY) {\n\n\n\t\tauto result = execSQLQuery(con, \"select * from talktalk;\");\n\n\t\tif (!result.success)\n\t\t{\n\t\t\tcout &lt;&lt; \"fail to access talktalk\" &lt;&lt; endl;\n\t\t}\n\n\t\tcout &lt;&lt; \"Database Output : \\n\" &lt;&lt; endl;\n\n\t\twhile ((row = mysql_fetch_row(result.res)) != NULL)\n\t\t{\n\t\t\tcout &lt;&lt; \"result fields num : \" &lt;&lt; mysql_num_fields(result.res) &lt;&lt; endl;\n\t\t\tcout &lt;&lt; \"result row num : \" &lt;&lt; mysql_num_rows(result.res) &lt;&lt; endl;\n\n\t\t\tcout &lt;&lt; row&#91;0] &lt;&lt; \" | \" &lt;&lt; row&#91;1] &lt;&lt; endl;\n\t\t}\n\n\t}\n\n\n\tif (con->status == mysql_status::MYSQL_STATUS_READY) {\n\n\t\tauto result = execSQLQuery(con, \"update talktalk set question='minha1', answer='babo1' where idx='1';\");\n\n\t\tif (!result.success)\n\t\t{\n\t\t\tcout &lt;&lt; \"fail to update to talktalk\" &lt;&lt; endl;\n\t\t}\n\n\t}\n\n\n\tif (con->status == mysql_status::MYSQL_STATUS_READY) {\n\n\n\t\tauto result = execSQLQuery(con, \"select * from talktalk;\");\n\n\t\tif (!result.success)\n\t\t{\n\t\t\tcout &lt;&lt; \"fail to access talktalk\" &lt;&lt; endl;\n\t\t}\n\n\t\tcout &lt;&lt; \"Database Output v2 : \\n\" &lt;&lt; endl;\n\n\t\twhile ((row = mysql_fetch_row(result.res)) != NULL)\n\t\t{\n\t\t\tcout &lt;&lt; \"result fields num : \" &lt;&lt; mysql_num_fields(result.res) &lt;&lt; endl;\n\t\t\tcout &lt;&lt; \"result row num : \" &lt;&lt; mysql_num_rows(result.res) &lt;&lt; endl;\n\n\t\t\tcout &lt;&lt; row&#91;0] &lt;&lt; \" | \" &lt;&lt; row&#91;1] &lt;&lt; endl;\n\t\t}\n\n\t}\n\n\n\tif (con->status == mysql_status::MYSQL_STATUS_READY) {\n\n\t\tauto result = execSQLQuery(con, \"delete from talktalk where answer='babo1';\");\n\n\t\tif (!result.success)\n\t\t{\n\t\t\tcout &lt;&lt; \"fail to update to talktalk\" &lt;&lt; endl;\n\t\t}\n\n\t}\n\n\tif (con->status == mysql_status::MYSQL_STATUS_READY) {\n\n\n\t\tauto result = execSQLQuery(con, \"select * from talktalk;\");\n\n\t\tif (!result.success)\n\t\t{\n\t\t\tcout &lt;&lt; \"fail to access talktalk\" &lt;&lt; endl;\n\t\t}\n\n\t\tcout &lt;&lt; \"Database Output v3 : \\n\" &lt;&lt; endl;\n\n\t\twhile ((row = mysql_fetch_row(result.res)) != NULL)\n\t\t{\n\t\t\tcout &lt;&lt; \"result fields num : \" &lt;&lt; mysql_num_fields(result.res) &lt;&lt; endl;\n\t\t\tcout &lt;&lt; \"result row num : \" &lt;&lt; mysql_num_rows(result.res) &lt;&lt; endl;\n\n\t\t\tcout &lt;&lt; row&#91;0] &lt;&lt; \" | \" &lt;&lt; row&#91;1] &lt;&lt; endl;\n\t\t}\n\n\t}\n\n}<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>\uc798\ub41c\ub2e4 \ub2f9\uc5f0\ud788.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>MariaDB\ub294 \ucd5c\uadfc \ubc84\uc804\uc740 \ubaa8\ub450 64bit\ub85c \uc81c\uacf5\ub418\uace0 \uc788\uc5b4\uc11c OpenFrameWorks 0.9.8\uc744 \uae30\ubc18\uc73c\ub85c 32bit\ub85c \uc8fc\ub85c \uac1c\ubc1c\uc744 \ud558\ub294 \ub0b4 \uc785\uc7a5\uc5d0\uc11c\ub294 \ubd88\ud3b8\ud560 \uc218 \ubc16\uc5d0 \uc5c6\ub2e4. \uac8c\ub2e4\uac00 Compute Shader\ub97c \ub9ce\uc774 \uc0ac\uc6a9\ud558\ub294 \ub0b4 \uac1c\ubc1c\uc5d0\uc11c\ub294 \ubd80\ub4dd\ubd88 \ubaa8\ub4e0 \ucf54\ub4dc\ub97c 0.12.1\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc\ud574\uc57c \ud558\ub294 \uc774 \uc0c1\ud669\uc774 \ub9c8\ub729\uc9c0 \uc54a\ub2e4. \uc815\ub9d0 \ub9e4\uc6b0 \ub9e4\uc6b0 \ubd88\ud3b8\ud558\uc9c0\ub9cc \uadf8\ub798\ub3c4 \ud560 \uac74 \ud574\uc57c\uc9c0. \uc77c\ub2e8 MariaDB\ub97c \uc124\uce58\ud558\uace0 \uc124\uce58\ud55c \ud6c4\uc5d0\ub294 lib\uc640 include\uac00 Program Files\/MariaDB\u2026 \/ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-125","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/blog.yangminha.com\/index.php?rest_route=\/wp\/v2\/posts\/125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.yangminha.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.yangminha.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.yangminha.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.yangminha.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=125"}],"version-history":[{"count":1,"href":"https:\/\/blog.yangminha.com\/index.php?rest_route=\/wp\/v2\/posts\/125\/revisions"}],"predecessor-version":[{"id":130,"href":"https:\/\/blog.yangminha.com\/index.php?rest_route=\/wp\/v2\/posts\/125\/revisions\/130"}],"wp:attachment":[{"href":"https:\/\/blog.yangminha.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.yangminha.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.yangminha.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}