{"id":9,"date":"2016-04-05T10:08:26","date_gmt":"2016-04-05T10:08:26","guid":{"rendered":"https:\/\/dangnhsite.wordpress.com\/home\/"},"modified":"2025-05-19T15:05:41","modified_gmt":"2025-05-19T07:05:41","slug":"home","status":"publish","type":"page","link":"https:\/\/dangnh.cf\/vi\/","title":{"rendered":"My Blog"},"content":{"rendered":"<h5 style=\"text-align: center;\"><em>&#8220;Bugs are your enemies, so you have killed one. <\/em><\/h5>\n<h5 style=\"text-align: center;\"><em>Now your software is having one bug less. <\/em><\/h5>\n<h5 style=\"text-align: center;\"><em>Mistakes are good as long as they are not repeating.<\/em><\/h5>\n<h5 style=\"text-align: center;\"><em>What you learn today, prepares you for tomorrow&#8221;<\/em><\/h5>\n<p style=\"text-align: right;\">&#8211; Developer&#8217;s Best Practice<\/p>\n<style><\/style><div class=\"wplp_outside wplp_widget_252\" style=\"max-width:100%;\"><span class=\"wpcu_block_title\"><\/span><div id=\"wplp_widget_252\" class=\"wplp_widget_default wplp_container vertical swiper wplp-swiper default cols1\" data-theme=\"default\" data-post=\"252\" style=\"\" data-max-elts=\"10\" data-per-page=\"10\"><div class=\"wplp_listposts swiper-wrapper\" id=\"default_252\" style=\"width: 100%;\" ><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_473\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_473\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/11\/05\/ban-dung-cho-developer\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/11\/image-1.png?fit=200%2C300&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"Standing desk &#8211; V\u1eadt trang tr\u00ed \u0111\u1eaft ti\u1ec1n hay m\u1eb9o hack productivity?\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_473\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/11\/05\/ban-dung-cho-developer\/\"  class=\"title\">Standing desk &#8211; V\u1eadt trang tr\u00ed \u0111\u1eaft ti\u1ec1n hay m\u1eb9o hack productivity?<\/a><span class=\"date\">Th\u00e1ng m\u01b0\u1eddi m\u1ed9t 5, 2025<\/span><span class=\"category\">Others<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">Mua c\u00e1i b\u00e0n \u0111\u1ee9ng &#8211; standing desk, t\u00f4i t\u01b0\u1edfng m\u00ecnh s\u1ebd th\u00e0nh si\u00eau nh\u00e2n. Ng\u01b0\u1eddi ta qu\u1ea3ng c\u00e1o b\u1ea3o \u0111\u1ee9ng l\u00e0m vi\u1ec7c s\u1ebd t\u1eadp trung h\u01a1n, kh\u1ecfe l\u01b0ng h\u01a1n, code s\u01b0\u1edbng h\u01a1n. C\u00f2n th\u1ef1c t\u1ebf th\u00ec&#8230; N\u00f3 th\u00e0nh c\u00e1i c\u1edb ho\u00e0n h\u1ea3o \u0111\u1ec3&#8230; kh\u00f4ng ng\u1ed3i y\u00ean. L\u00fac code \u0111\u01b0\u1ee3c, t\u00f4i \u0111\u1ee9ng. L\u00fac debug, t\u00f4i ng\u1ed3i. L\u00fac ch\u00e1n, t\u00f4i n\u1eeda \u0111\u1ee9ng n\u1eeda ng\u1ed3i. L\u00fac b\u00ed qu\u00e1, t\u00f4i n\u1eb1m b\u00f2 ra \u0111\u1ea5t. T\u00ednh ra t\u00f4i \u0111ang c\u00f3 m\u1ed9t chu k\u1ef3 v\u1eadn \u0111\u1ed9ng r\u1ea5t phong ph\u00fa, ch\u1ec9 l\u00e0 kh\u00f4ng li\u00ean quan m\u1ea5y \u0111\u1ebfn c\u00f4ng vi\u1ec7c. C\u00e1i hay c\u1ee7a b\u00e0n \u0111\u1ee9ng l\u00e0 n\u00f3 cho ph\u00e9p t\u00f4i &#8220;l\u00e0m vi\u1ec7c&#8221; m\u1ed9t c\u00e1ch r\u1ea5t ngh\u1ec7 s\u0129. G\u1eb7p function kh\u00f3, t\u00f4i \u0111\u1ee9ng l\u00ean v\u1eb7n v\u1eb9o ng\u01b0\u1eddi, \u0111i t\u1edbi \u0111i lui v\u00e0i b\u01b0\u1edbc, nh\u00ecn ra c\u1eeda s\u1ed5&#8230; th\u00e0nh th\u1eed c\u00f3 v\u1ebb nh\u01b0 t\u00f4i \u0111ang suy t\u01b0 s\u00e2u s\u1eafc l\u1eafm. Th\u1ef1c ra trong \u0111\u1ea7u ch\u1ec9 \u0111ang ngh\u0129 &#8220;sao th\u1eb1ng n\u00e0y ngu th\u1ebf&#8221;. R\u1ed3i nh\u1eefng l\u00fac deploy hay ch\u1ea1y script d\u00e0i, t\u00f4i \u0111\u1ee9ng \u0111\u00f3, tay ch\u1ed1ng n\u1ea1nh, nh\u00ecn m\u00e0n h\u00ecnh terminal ch\u1ea1y t\u1eebng d\u00f2ng. C\u1ea3m gi\u00e1c nh\u01b0 m\u1ed9t v\u1ecb t\u01b0\u1edbng \u0111ang ch\u1ec9 huy tr\u1eadn \u0111\u00e1nh, d\u00f9 ch\u1ea3 l\u00e0m g\u00ec ngo\u00e0i vi\u1ec7c&#8230; \u0111\u1ee3i. S\u1ef1 t\u1eadp trung khi l\u00e0m vi\u1ec7c T\u00f3m l\u1ea1i, t\u00f4i th\u1ea5y b\u00e0n \u0111\u1ee9ng gi\u1ed1ng m\u1ed9t m\u00f3n \u0111\u1ed3 ch\u01a1i gi\u1ea3i tr\u00ed h\u01a1n l\u00e0 d\u1ee5ng c\u1ee5 l\u00e0m vi\u1ec7c. N\u00f3 cho t\u00f4i c\u00e1i c\u1edb \u0111\u1ec3 v\u1eadn \u0111\u1ed9ng, \u0111\u1ec3 thay \u0111\u1ed5i t\u01b0 th\u1ebf, \u0111\u1ec3 \u0111\u1ee1 m\u1ecfi m\u00f4ng&#8230; v\u00e0 quan tr\u1ecdng nh\u1ea5t l\u00e0 \u0111\u1ec3 t\u0103ng s\u1ef1 t\u1eadp trung khi l\u00e0m vi\u1ec7c. B\u1edfi v\u00ec kh\u00f4ng th\u1ea5y nh\u00e0m m\u00e0 switch qua facebook, X&#8230; Gi\u1edd th\u00ec b\u1ea1n hi\u1ec3u v\u00ec sao t\u00f4i recommend mua b\u00e0n \u0111\u1ee9ng r\u1ed3i \u0111\u1ea5y. Kh\u00f4ng ph\u1ea3i \u0111\u1ec3 th\u00e0nh si\u00eau sao n\u0103ng su\u1ea5t, m\u00e0 \u0111\u1ec3&#8230; \u0111\u1ee1 ch\u00e1n! Chia s\u1ebb t\u1eeb m\u1ed9t th\u1eb1ng dev \u0111ang \u0111\u1ee9ng vi\u1ebft nh\u1eefng d\u00f2ng n\u00e0y, v\u00e0 ch\u1eafc ch\u1eafn s\u1ebd ng\u1ed3i xu\u1ed1ng ngay sau khi b\u1ea5m &#8220;\u0110\u0103ng b\u00e0i&#8221;.<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2025\/11\/05\/ban-dung-cho-developer\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_473\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_441\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_441\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/06\/06\/rag-la-gi-va-tai-sao-may-ong-ai-cu-nhac-hoai\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/06\/ai-rag.png?fit=300%2C200&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"RAG l\u00e0 g\u00ec? V\u00e0 t\u1ea1i sao m\u1ea5y \u00f4ng AI c\u1ee9 nh\u1eafc ho\u00e0i?\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_441\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/06\/06\/rag-la-gi-va-tai-sao-may-ong-ai-cu-nhac-hoai\/\"  class=\"title\">RAG l\u00e0 g\u00ec? V\u00e0 t\u1ea1i sao m\u1ea5y \u00f4ng AI c\u1ee9 nh\u1eafc ho\u00e0i?<\/a><span class=\"date\">Th\u00e1ng 6 6, 2025<\/span><span class=\"category\">AI<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">RAG \u2013 vi\u1ebft t\u1eaft c\u1ee7a \u201cRetrieval-Augmented Generation\u201d \u2013 nghe th\u00ec c\u00f3 v\u1ebb ng\u1ea7u, nh\u01b0ng th\u1ef1c ra hi\u1ec3u \u0111\u01a1n gi\u1ea3n th\u00ec n\u00f3 l\u00e0 m\u1ed9t c\u00e1ch gi\u00fap m\u1ea5y con AI\u2026 \u0111\u1ee1 ngu h\u01a1n khi tr\u1ea3 l\u1eddi c\u00e2u h\u1ecfi. N\u1ebfu b\u1ea1n \u0111\u00e3 s\u1eed d\u1ee5ng AI cho c\u00f4ng vi\u1ec7c chuy\u00ean m\u00f4n, ch\u1eafc ch\u1eafn c\u00f3 l\u00fac b\u1ea1n s\u1ebd th\u1ea5y AI &#8220;hallucinate&#8221; ra nh\u1eefng c\u00e2u tr\u1ea3 l\u1eddi r\u1ea5t kh\u00f3 hi\u1ec3u. V\u1ea5n \u0111\u1ec1 c\u1ee7a AI: Hay \u201cn\u00f3i x\u1ea1o\u201d v\u00ec\u2026 qu\u00ean s\u00e1ch gi\u00e1o khoa AI nh\u01b0 ChatGPT, Claude, hay m\u1ea5y con LLM kh\u00e1c \u2013 th\u1eadt ra ch\u1ec9 l\u00e0 m\u1ea5y c\u1ed7 m\u00e1y \u0111o\u00e1n ch\u1eef si\u00eau c\u1ea5p, b\u1ea3n ch\u1ea5t l\u00e0 m\u1ed9t function kh\u1ed5ng l\u1ed3 d\u00e0i d\u1eb1ng d\u1eb7c. &#8220;Function&#8221; (= Model) n\u00e0y \u0111\u01b0\u1ee3c hu\u1ea5n luy\u1ec7n t\u1eeb c\u1ea3 t\u1ea5n d\u1eef li\u1ec7u c\u00f3 s\u1eb5n, nh\u01b0ng sau hu\u1ea5n luy\u1ec7n th\u00ec kh\u00f4ng c\u00f2n truy c\u1eadp \u0111\u01b0\u1ee3c m\u1ea5y d\u1eef li\u1ec7u \u0111\u00f3 n\u1eefa (tr\u1eeb khi update model). Th\u00e0nh ra, h\u1ecfi m\u1ea5y c\u00e2u \u201cki\u1ebfn th\u1ee9c m\u1edbi\u201d, ho\u1eb7c \u201cn\u1ed9i b\u1ed9 c\u00f4ng ty\u201d, th\u00ec n\u00f3 \u0111\u00e0nh b\u1ecba \u0111\u1ea1i ho\u1eb7c xin l\u1ed7i. V\u00ed d\u1ee5:\u2022 H\u1ecfi: \u201cTrong ch\u00ednh s\u00e1ch c\u00f4ng ty m\u00ecnh c\u00f3 bao nhi\u00eau ng\u00e0y ph\u00e9p n\u0103m?\u201d\u2022 AI: \u201cTh\u00f4ng th\u01b0\u1eddng \u1edf Vi\u1ec7t Nam l\u00e0 12 ng\u00e0y\u2026\u201d (h\u00ean xui \u0111\u00fang, m\u00e0 c\u0169ng h\u00ean xui sai b\u00e9t) RAG ra \u0111\u1eddi: Cho AI\u2026 \u0111i tra Google tr\u01b0\u1edbc khi tr\u1ea3 l\u1eddi RAG l\u00e0 k\u1ef9 thu\u1eadt gi\u00fap AI l\u1ea5y th\u00eam ki\u1ebfn th\u1ee9c t\u1ee9c th\u00ec t\u1eeb m\u1ed9t kho d\u1eef li\u1ec7u (VD: t\u00e0i li\u1ec7u c\u00f4ng ty, c\u01a1 s\u1edf tri th\u1ee9c, database s\u1ea3n ph\u1ea9m\u2026). Quy tr\u00ecnh ki\u1ec3u nh\u01b0 n\u00e0y: 1. Nh\u1eadn c\u00e2u h\u1ecfi t\u1eeb ng\u01b0\u1eddi d\u00f9ng 2. \u0110i t\u00ecm t\u00e0i li\u1ec7u li\u00ean quan (g\u1ecdi l\u00e0 b\u01b0\u1edbc \u201cretrieval\u201d \u2013 t\u00ecm ki\u1ebfm) 3. \u0110\u01b0a t\u00e0i li\u1ec7u \u0111\u00f3 v\u00e0o l\u00e0m \u201cb\u00e0i g\u1ee3i \u00fd\u201d cho AI 4. AI d\u1ef1a v\u00e0o t\u00e0i li\u1ec7u \u0111\u00f3 \u0111\u1ec3 vi\u1ebft c\u00e2u tr\u1ea3 l\u1eddi ch\u00ednh x\u00e1c h\u01a1n N\u00f3i d\u1ec5 hi\u1ec3u th\u00ec gi\u1ed1ng nh\u01b0 b\u1ea1n h\u1ecfi tr\u1ee3 l\u00fd c\u1ee7a m\u00ecnh m\u1ed9t c\u00e2u kh\u00f3. Thay v\u00ec \u0111o\u00e1n m\u00f2, n\u00f3 ch\u1ea1y \u0111i l\u1ee5c t\u00e0i li\u1ec7u r\u1ed3i quay l\u1ea1i tr\u1ea3 l\u1eddi c\u1ea9n th\u1eadn h\u01a1n. M\u1ed9t v\u00ed d\u1ee5 d\u1ec5 h\u00ecnh dung B\u1ea1n x\u00e2y m\u1ed9t chatbot cho c\u00f4ng ty b\u1ea3o hi\u1ec3m, kh\u00e1ch v\u00e0o h\u1ecfi: \u201cN\u1ebfu t\u00f4i b\u1ecb tai n\u1ea1n xe \u1edf n\u01b0\u1edbc ngo\u00e0i th\u00ec c\u00f3 \u0111\u01b0\u1ee3c \u0111\u1ec1n kh\u00f4ng?\u201d B\u00ecnh th\u01b0\u1eddng AI s\u1ebd\u2026 \u0111o\u00e1n m\u00f2. Nh\u01b0ng n\u1ebfu b\u1ea1n t\u00edch h\u1ee3p RAG: \u2022 N\u00f3 s\u1ebd t\u00ecm file PDF \u201cCh\u00ednh s\u00e1ch b\u1ea3o hi\u1ec3m du l\u1ecbch 2025\u201d \u2022 L\u1ecdc ra \u0111o\u1ea1n c\u00f3 n\u1ed9i dung li\u00ean quan \u2022 Tr\u1ea3 l\u1eddi: \u201cTheo ch\u00ednh s\u00e1ch n\u0103m 2025, n\u1ebfu b\u1ea1n c\u00f3 g\u00f3i m\u1edf r\u1ed9ng qu\u1ed1c t\u1ebf th\u00ec \u0111\u01b0\u1ee3c b\u1ed3i th\u01b0\u1eddng trong tr\u01b0\u1eddng h\u1ee3p tai n\u1ea1n \u1edf n\u01b0\u1edbc ngo\u00e0i.\u201d Tr\u1ea3 l\u1eddi m\u01b0\u1ee3t, \u0111\u00fang, v\u00e0 \u0111\u00e1ng tin h\u01a1n nhi\u1ec1u! L\u00e0m sao \u0111\u1ec3 x\u00e2y RAG? T\u00f3m t\u1eaft ng\u1eafn g\u1ecdn:\u2022 B\u01b0\u1edbc 1: T\u1ea1o \u201cvector database\u201d t\u1eeb t\u00e0i li\u1ec7u (d\u00f9ng tools nh\u01b0 FAISS, Weaviate, ho\u1eb7c Pinecone)\u2022 B\u01b0\u1edbc 2: Khi c\u00f3 c\u00e2u h\u1ecfi, nh\u00fang (embed) n\u00f3 v\u00e0 t\u00ecm ki\u1ebfm trong vector DB\u2022 B\u01b0\u1edbc 3: L\u1ea5y k\u1ebft qu\u1ea3 v\u00e0 nh\u00e9t v\u00e0o prompt \u0111\u1ec3 AI tr\u1ea3 l\u1eddi N\u1ebfu b\u1ea1n x\u00e0i LangChain ho\u1eb7c LlamaIndex th\u00ec m\u1ea5y b\u01b0\u1edbc n\u00e0y c\u00f3 s\u1eb5n nh\u01b0 block lego, gh\u00e9p l\u00e0 ch\u1ea1y th\u00f4i. T\u1ed5ng k\u1ebft RAG kh\u00f4ng ph\u1ea3i l\u00e0 si\u00eau n\u0103ng l\u1ef1c, nh\u01b0ng l\u00e0 c\u00e1ch c\u1ef1c k\u1ef3 th\u1ef1c t\u1ebf \u0111\u1ec3 gi\u00fap AI:\u2022 Tr\u1ea3 l\u1eddi \u0111\u00fang h\u01a1n, c\u1eadp nh\u1eadt h\u01a1n\u2022 Hi\u1ec3u \u0111\u01b0\u1ee3c \u201cki\u1ebfn th\u1ee9c n\u1ed9i b\u1ed9\u201d\u2022 Tr\u00e1nh n\u00f3i nh\u1ea3m, b\u1ecba chuy\u1ec7n N\u1ebfu b\u1ea1n \u0111ang x\u00e2y AI assistant, chatbot cho c\u00f4ng ty, hay h\u1ec7 th\u1ed1ng h\u1ecfi \u0111\u00e1p \u2013 \u0111\u1eebng b\u1ecf qua RAG. N\u1ebfu b\u1ea1n mu\u1ed1n bi\u1ebft c\u00e1ch implement RAG cho LLM c\u1ee7a m\u00ecnh th\u00ec \u0111\u1ec3 l\u1ea1i comment v\u00e0 m\u00ecnh s\u1ebd l\u00ean b\u00e0i h\u01b0\u1edbng d\u1eabn nh\u00e9! Peace!<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2025\/06\/06\/rag-la-gi-va-tai-sao-may-ong-ai-cu-nhac-hoai\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_441\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_409\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_409\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/05\/19\/huong-dan-setup-ai-blog-to-podcast-agent\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/05\/ai-agent.png?fit=300%2C300&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"H\u01b0\u1edbng D\u1eabn Setup AI Blog to Podcast Agent\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_409\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/05\/19\/huong-dan-setup-ai-blog-to-podcast-agent\/\"  class=\"title\">H\u01b0\u1edbng D\u1eabn Setup AI Blog to Podcast Agent<\/a><span class=\"date\">Th\u00e1ng 5 19, 2025<\/span><span class=\"category\">AI<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">D\u01b0\u1edbi \u0111\u00e2y l\u00e0 b\u00e0i vi\u1ebft gi\u1edbi thi\u1ec7u nhanh v\u1ec1 repo Awesome LLM Apps v\u00e0 h\u01b0\u1edbng d\u1eabn ch\u1ea1y th\u1eed \u201cAI Blog to Podcast Agent\u201d tr\u00ean m\u00e1y Mac c\u1ee7a b\u1ea1n. M\u00ecnh s\u1ebd l\u1ea7n l\u01b0\u1ee3t \u0111i qua: Gi\u1edbi thi\u1ec7u chung v\u1ec1 repo T\u1ea1i sao n\u00ean kh\u00e1m ph\u00e1 \u0110i\u1ec3m nh\u1ea5n \u201cAI Blog to Podcast Agent\u201d H\u01b0\u1edbng d\u1eabn ch\u1ea1y tr\u00ean macOS 1. Gi\u1edbi thi\u1ec7u chung Repo Awesome LLM Apps l\u00e0 m\u1ed9t kho t\u00e0ng t\u1ed5ng h\u1ee3p c\u00e1c \u1ee9ng d\u1ee5ng LLM (Large Language Models) \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng v\u1edbi k\u1ef9 thu\u1eadt Retrieval-Augmented Generation (RAG) v\u00e0 AI Agents. T\u00ednh \u0111\u1ebfn th\u1eddi \u0111i\u1ec3m hi\u1ec7n t\u1ea1i, repo n\u00e0y \u0111\u00e3 thu h\u00fat h\u01a1n 32.2k sao tr\u00ean GitHub, ph\u1ea3n \u00e1nh s\u1ef1 quan t\u00e2m m\u1ea1nh m\u1ebd c\u1ee7a c\u1ed9ng \u0111\u1ed3ng. C\u00e1ch \u0111\u00e2y 3 th\u00e1ng, repo \u0111\u00e3 v\u01b0\u1ee3t m\u1ed1c 15k+ sao, cho th\u1ea5y s\u1ed1 l\u01b0\u1ee3ng stars v\u1eabn \u0111ang t\u0103ng \u0111\u1ec1u \u0111\u1eb7n. 2. T\u1ea1i sao n\u00ean kh\u00e1m ph\u00e1 repo n\u00e0y Retrieval-Augmented Generation (RAG) l\u00e0 k\u1ef9 thu\u1eadt cho ph\u00e9p LLM truy v\u1ea5n v\u00e0 k\u1ebft h\u1ee3p th\u00f4ng tin m\u1edbi t\u1eeb c\u00e1c t\u00e0i li\u1ec7u b\u00ean ngo\u00e0i tr\u01b0\u1edbc khi sinh \u0111\u1ea7u ra, t\u1eeb \u0111\u00f3 gi\u1ea3m thi\u1ec3u t\u00ecnh tr\u1ea1ng \u201challucination\u201d v\u00e0 c\u1eadp nh\u1eadt d\u1eef li\u1ec7u t\u1ee9c th\u00ec. C\u00e1c AI Agents trong repo t\u1eadn d\u1ee5ng RAG v\u00e0 kh\u1ea3 n\u0103ng t\u1ef1 \u0111\u1ed9ng h\u00f3a c\u1ee7a m\u00f4 h\u00ecnh LLM \u0111\u1ec3 th\u1ef1c thi linh ho\u1ea1t c\u00e1c t\u00e1c v\u1ee5 chuy\u00ean bi\u1ec7t, nh\u01b0 x\u1eed l\u00fd email, ph\u00e2n t\u00edch d\u1eef li\u1ec7u, th\u1eadm ch\u00ed t\u1ef1 \u0111\u1ed9ng h\u00f3a quy tr\u00ecnh kinh doanh. 3. \u0110i\u1ec3m nh\u1ea5n: \u201cAI Blog to Podcast Agent\u201d Trong nh\u00f3m Starter AI Agents, project AI Blog to Podcast Agent c\u00f3 nhi\u1ec7m v\u1ee5 chuy\u1ec3n \u0111\u1ed5i t\u1ef1 \u0111\u1ed9ng m\u1ed9t b\u00e0i blog th\u00e0nh t\u1eadp podcast, \u0111\u1ea7y \u0111\u1ee7 \u00e2m thanh v\u00e0 c\u1ea5u tr\u00fac ch\u01b0\u01a1ng tr\u00ecnh. B\u1ea1n c\u00f3 th\u1ec3 d\u00f9ng c\u00f4ng c\u1ee5 n\u00e0y \u0111\u1ec3 \u0111\u01b0a n\u1ed9i dung blog l\u00ean n\u1ec1n t\u1ea3ng audio nh\u01b0 Spotify, Anchor\u2026 m\u00e0 kh\u00f4ng c\u1ea7n th\u1ee7 c\u00f4ng c\u1eaft gh\u00e9p ti\u1ebfng n\u00f3i. 4. H\u01b0\u1edbng d\u1eabn ch\u1ea1y tr\u00ean macOS local D\u01b0\u1edbi \u0111\u00e2y l\u00e0 v\u00ed d\u1ee5 minh h\u1ecda c\u00e1ch ch\u1ea1y \u201cAI Blog to Podcast Agent\u201d ngay tr\u00ean m\u00e1y Mac c\u1ee7a b\u1ea1n: L\u01b0u \u00fd: N\u1ebfu project kh\u00f4ng c\u00f3 file main.py, vui l\u00f2ng ki\u1ec3m tra trong th\u01b0 m\u1ee5c xem t\u00ean script ch\u00ednh l\u00e0 g\u00ec (v\u00ed d\u1ee5 agent.py, app.py) v\u00e0 ch\u1ea1y t\u01b0\u01a1ng \u1ee9ng; th\u00f4ng tin n\u00e0y th\u01b0\u1eddng \u0111\u01b0\u1ee3c ghi trong README c\u1ee7a m\u1ed7i agent. 5. K\u1ebft lu\u1eadn Repo Awesome LLM Apps kh\u00f4ng ch\u1ec9 gi\u00fap b\u1ea1n kh\u00e1m ph\u00e1 c\u00e1c c\u00e1ch \u1ee9ng d\u1ee5ng LLM v\u1edbi RAG v\u00e0 AI Agents, m\u00e0 c\u00f2n cung c\u1ea5p h\u00e0ng ch\u1ee5c tutorial m\u1eabu \u0111\u1ec3 b\u1ea1n t\u1ef1 tay th\u1ef1c h\u00e0nh. Ch\u00fac b\u1ea1n tr\u1ea3i nghi\u1ec7m vui v\u1ebb v\u00e0 s\u00e1ng t\u1ea1o ra nhi\u1ec1u agent h\u1eefu \u00edch! N\u1ebfu b\u1ea1n th\u1ea5y h\u1eefu \u00edch, \u0111\u1eebng qu\u00ean star repo v\u00e0 follow t\u00e1c gi\u1ea3 \u0111\u1ec3 c\u1eadp nh\u1eadt th\u00eam nhi\u1ec1u project m\u1edbi nh\u00e9! Ngu\u1ed3n tham kh\u1ea3o GitHub Repo: Awesome LLM Apps (Shubhamsaboo)\u00a0 Wikipedia:\u00a0Retrieval-Augmented Generation\u00a0 Wikipedia:\u00a0Large Language Model\u00a0<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2025\/05\/19\/huong-dan-setup-ai-blog-to-podcast-agent\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_409\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_406\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_406\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/05\/19\/trait-mixin-in-php-part-2\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2018\/06\/retro-background-3101430_960_720.jpg?fit=300%2C169&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"Trait \u2013 Mixin in PHP? &#8211; PART 2\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_406\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/05\/19\/trait-mixin-in-php-part-2\/\"  class=\"title\">Trait \u2013 Mixin in PHP? &#8211; PART 2<\/a><span class=\"date\">Th\u00e1ng 5 19, 2025<\/span><span class=\"category\">PHP<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">D\u01b0\u1edbi \u0111\u00e2y l\u00e0 ph\u1ea7n 2 (v\u00e0 c\u0169ng l\u00e0 ph\u1ea7n cu\u1ed1i) c\u1ee7a series \u201cTrait \u2013 Mixin trong PHP\u201d. \u1ede ph\u1ea7n n\u00e0y ch\u00fang ta s\u1ebd \u0111i s\u00e2u v\u00e0o c\u00e1ch x\u1eed l\u00fd xung \u0111\u1ed9t, m\u1edf r\u1ed9ng kh\u1ea3 n\u0103ng c\u1ee7a Trait v\u00e0 c\u00e1c v\u00ed d\u1ee5 th\u1ef1c ti\u1ec5n. M\u1eddi c\u00e1c b\u1ea1n xem l\u1ea1i ph\u1ea7n 1 t\u1ea1i \u0111\u00e2y: https:\/\/dangnh.cf\/2018\/06\/01\/trait-mixin-in-php\/ 1. Gi\u1ea3i quy\u1ebft xung \u0111\u1ed9t gi\u1eefa c\u00e1c Trait Khi m\u1ed9t class use nhi\u1ec1u trait v\u00e0 c\u00f3 ph\u01b0\u01a1ng th\u1ee9c tr\u00f9ng t\u00ean, PHP s\u1ebd b\u00e1o l\u1ed7i. \u0110\u1ec3 tr\u00e1nh, ta d\u00f9ng hai t\u1eeb kh\u00f3a: 1.1. insteadof Ch\u1ecdn ph\u01b0\u01a1ng th\u1ee9c c\u1ee7a trait n\u00e0y thay v\u00ec c\u1ee7a trait kia: 1.2. as \u0110\u1ed5i t\u00ean (alias) cho ph\u01b0\u01a1ng th\u1ee9c \u0111\u1ec3 v\u1eabn c\u00f3 th\u1ec3 g\u1ecdi c\u1ea3 hai: 2. C\u00e1c t\u00ednh n\u0103ng n\u00e2ng cao c\u1ee7a Trait 2.1. Abstract method trong Trait B\u1ea1n c\u00f3 th\u1ec3 khai b\u00e1o ph\u01b0\u01a1ng th\u1ee9c abstract trong trait, bu\u1ed9c class k\u1ebf th\u1eeba ph\u1ea3i tri\u1ec3n khai: 2.2. Trait v\u1edbi thu\u1ed9c t\u00ednh static v\u00e0\u00a0const Trait cho ph\u00e9p \u0111\u1ecbnh ngh\u0129a static property v\u00e0 const: 2.3. Thu\u1ed9c t\u00ednh v\u00e0 ph\u01b0\u01a1ng th\u1ee9c private\/protected Trait c\u00f3 th\u1ec3 khai b\u00e1o method private hay protected, ch\u1ec9 class ch\u1ee9a trait bi\u1ebft d\u00f9ng: 2.4. Trait th\u1eeba k\u1ebf Trait Trait c\u0169ng c\u00f3 th\u1ec3 use trait kh\u00e1c: 3. V\u00ed d\u1ee5 th\u1ef1c t\u1ebf 3.1. Trait \u201cSoftDelete\u201d cho Model Gi\u1edd ch\u1ec9 c\u1ea7n use SoftDelete, m\u1ecdi class \u0111\u1ec1u c\u00f3 t\u00ednh n\u0103ng x\u00f3a m\u1ec1m. 3.2. Trait \u201cTimestampable\u201d T\u1ef1 \u0111\u1ed9ng qu\u1ea3n l\u00fd created_at\/updated_at: 4. Best Practices khi d\u00f9ng Trait Gi\u1eef trait nh\u1ecf, chuy\u00ean bi\u1ec7t: M\u1ed7i trait ch\u1ec9 \u0111\u1ea3m nh\u1eadn m\u1ed9t nhi\u1ec7m v\u1ee5 duy nh\u1ea5t. \u0110\u1eb7t t\u00ean r\u00f5 r\u00e0ng: V\u00ed d\u1ee5 Loggable, Notifiable, SoftDeleteable\u2026 Tr\u00e1nh trait qu\u00e1 \u201cn\u1eb7ng\u201d: N\u1ebfu trait ch\u1ee9a qu\u00e1 nhi\u1ec1u logic, c\u00e2n nh\u1eafc t\u00e1ch th\u00e0nh class helper ho\u1eb7c service. T\u00e0i li\u1ec7u \u0111\u1ea7y \u0111\u1ee7: Khai b\u00e1o @method hay @property trong DocBlock n\u1ebfu trait \u201cinject\u201d th\u00eam method hay property cho IDE. 5. K\u1ebft lu\u1eadn Trait l\u00e0 c\u00f4ng c\u1ee5 m\u1ea1nh m\u1ebd gi\u00fap t\u00e1i s\u1eed d\u1ee5ng code v\u00e0 \u201cmixin\u201d behavior v\u00e0o nhi\u1ec1u class kh\u00e1c nhau m\u00e0 kh\u00f4ng c\u1ea7n \u0111a k\u1ebf th\u1eeba. Tuy nhi\u00ean, l\u1ea1m d\u1ee5ng qu\u00e1 nhi\u1ec1u trait c\u00f3 th\u1ec3 l\u00e0m code r\u1ed1i v\u00e0 kh\u00f3 theo d\u00f5i. H\u00e3y thi\u1ebft k\u1ebf trait g\u1ecdn, r\u00f5 r\u00e0ng, v\u00e0 \u00e1p d\u1ee5ng cho nh\u1eefng h\u00e0m th\u1ef1c s\u1ef1 chung nh\u1ea5t. C\u1ea3m \u01a1n b\u1ea1n \u0111\u00e3 theo d\u00f5i series v\u1ec1 Trait trong PHP. Ch\u00fac c\u00e1c b\u1ea1n \u00e1p d\u1ee5ng hi\u1ec7u qu\u1ea3 v\u00e0 happy coding! &nbsp; T\u00e0i li\u1ec7u li\u00ean quan: PHP Manual \u2013 Traits: https:\/\/www.php.net\/manual\/en\/language.oop5.traits.php\u00a0 PHP Manual \u2013 Conflict Resolution: https:\/\/www.php.net\/manual\/en\/language.oop5.traits.php#traits.conflict.resolution<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2025\/05\/19\/trait-mixin-in-php-part-2\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_406\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_367\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_367\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2020\/01\/1_SstfI6yiEWj1mrnFrLTUdA-e1579505803935.jpeg?fit=300%2C200&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"Service Container &#038; DI &#8220;s\u00e0nh \u0111i\u1ec7u&#8221; v\u1edbi Laravel\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_367\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/\"  class=\"title\">Service Container &#038; DI &#8220;s\u00e0nh \u0111i\u1ec7u&#8221; v\u1edbi Laravel<\/a><span class=\"date\">Th\u00e1ng 1 20, 2020<\/span><span class=\"category\">PHP<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">Hi, long time no see \ud83d\ude00 Laravel l\u00e0 m\u1ed9t framework n\u1ed5i ti\u1ebfng nh\u1ea5t trong c\u1ed9ng \u0111\u1ed3ng PHP, 1 ph\u1ea7n l\u00e0 v\u00ec c\u1ea5u tr\u00fac tuy\u1ec7t v\u1eddi c\u1ee7a n\u00f3. Khi n\u00f3i \u0111\u1ebfn architectural concepts c\u1ee7a Laravel, kh\u00f4ng th\u1ec3 kh\u00f4ng nh\u1eafc t\u1edbi Service Container. Khi b\u1ea1n \u0111\u1ee5ng \u0111\u1ebfn 1 b\u00e0i to\u00e1n l\u1edbn h\u01a1n, c\u1ea7n s\u1eed d\u1ee5ng nhi\u1ec1u services, dependencies&#8230; th\u00ec b\u1ea1n s\u1ebd c\u1ea7n hi\u1ec3u v\u00e0 s\u1eed d\u1ee5ng \u0111\u01b0\u1ee3c Service Container.<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_367\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_211\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_211\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2018\/06\/01\/trait-mixin-in-php\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2018\/06\/retro-background-3101430_960_720.jpg?fit=300%2C169&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"Trait &#8211; Mixin in PHP? <p1>\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_211\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2018\/06\/01\/trait-mixin-in-php\/\"  class=\"title\">Trait &#8211; Mixin in PHP? <p1><\/a><span class=\"date\">Th\u00e1ng 6 1, 2018<\/span><span class=\"category\">PHP \/ Web development<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">Hi guys \ud83d\ude42 Nh\u01b0 c\u00e1c b\u1ea1n c\u00f3 l\u1ebd \u0111\u00e3 bi\u1ebft, PHP l\u00e0 1 ng\u00f4n ng\u1eef single inheritance, t\u1ee9c l\u00e0 n\u00f3 s\u1ebd c\u00f3 1 s\u1ed1 nh\u01b0\u1ee3c \u0111i\u1ec3m nh\u01b0: M\u1ea5t th\u1eddi gian &amp; c\u00f4ng s\u1ee9c khi t\u00ecm hi\u1ec3u\/ch\u1ea1y h\u1ec7 th\u1ed1ng. V\u00ed d\u1ee5: 1 class c\u00f3 10 levels c\u00e1c class cha, th\u00ec v\u1ec1 c\u01a1 b\u1ea3n n\u00f3 s\u1ebd ph\u1ea3i ch\u1ea1y qua c\u1ea3 10 levels \u0111\u00f3 \u0111\u1ec3 ch\u1ea1y 1 function m\u00e0 n\u00f3 th\u1eeba k\u1ebf Class cha v\u00e0 class con b\u1ecb r\u00e0ng bu\u1ed9c v\u1edbi nhau. T\u1ee9c l\u00e0 ta kh\u00f4ng th\u1ec3 t\u00e1ch ri\u00eang bi\u1ec7t 1 class n\u00e0o \u0111\u1ec3 s\u1eed d\u1ee5ng \u0111\u01b0\u1ee3c. Theo th\u1eddi gian, th\u00eam, s\u1eeda, x\u00f3a c\u00e1c ch\u1ee9c n\u0103ng c\u1ea7n ph\u1ea3i r\u1ea5t c\u1ea9n th\u1eadn, nhi\u1ec1u tr\u01b0\u1eddng h\u1ee3p l\u00e0 g\u1ea7n nh\u01b0 kh\u00f4ng th\u1ec3 do \u0111\u1ed9 ph\u1ee9c t\u1ea1p c\u1ee7a c\u00e2y th\u1eeba k\u1ebf c\u00e1c class \u0111\u00f3. C\u1ef1c k\u00ec kh\u00f4ng linh ho\u1ea1t trong nhi\u1ec1u tr\u01b0\u1eddng h\u1ee3p. V\u00ed d\u1ee5 b\u1ea1n ch\u1ec9 c\u1ea7n 1 class \u0111\u01a1n gi\u1ea3n, ch\u1ee9a v\u00e0i c\u00e1i functions b\u1ea1n hay s\u1eed d\u1ee5ng trong h\u1ec7 th\u1ed1ng, class n\u00e0y c\u00f3 th\u1ec3 d\u00ednh d\u00e1ng \u0111\u1ebfn nhi\u1ec1u ph\u1ea7n kh\u00e1c nhau trong h\u1ec7 th\u1ed1ng, n\u00ean vi\u1ec7c th\u1eeba k\u1ebf n\u00f3 c\u00f3 v\u1ebb s\u1ebd t\u1ea1o n\u00ean 1 n\u00fat xo\u1eafn c\u1ef1c kh\u00f3 g\u1ee1 trong c\u00e2y th\u1eeba k\u1ebf c\u00e1c class. May m\u1eafn thay, t\u1eeb PHP5.4, ch\u00fang ta \u0111\u00e3 c\u00f3\u00a0Trait \u0111\u1ec3 gi\u1ea3i quy\u1ebft c\u00e1c v\u1ea5n \u0111\u1ec1 n\u00f3i tr\u00ean. Nh\u01b0ng li\u1ec7u Trait c\u00f3 ph\u1ea3i l\u00e0 Holy Grail cho PHP? Li\u1ec7u khi n\u00e0o n\u00ean d\u00f9ng Trait? Khi n\u00e0o th\u00ec ph\u1ea3i tr\u00e1nh? M\u1eddi c\u00e1c b\u1ea1n k\u00e9o xu\u1ed1ng d\u01b0\u1edbi \u0111\u1ec3 t\u00ecm hi\u1ec3u c\u00f9ng m\u00ecnh nh\u00e9 \ud83d\ude09 Trait l\u00e0 g\u00ec? Traits is a mechanism for code reuse in single inheritance languages such as PHP. A Trait is intended to reduce some limitations of single inheritance by enabling a developer to reuse sets of methods freely in several independent classes living in different class hierarchies. Source &#8230; okay&#8230; h\u01a1i l\u1eb1ng nh\u1eb1ng ph\u1ea3i kh\u00f4ng? Ng\u1eafn g\u1ecdn th\u00ec Trait c\u0169ng gi\u1ed1ng nh\u01b0 1 abstract class v\u1eady. B\u1ea1n ch\u1ee9a c\u00e1c methods, properties trong \u0111\u00f3, nh\u01b0ng b\u1ea1n kh\u00f4ng th\u1ec3 instantiate (t\u1ea1o object) n\u00f3 \u0111\u01b0\u1ee3c. N\u00f3i d\u1ec5 hi\u1ec3u, Trait l\u00e0 1 m\u1edb code b\u1ea1n c\u00f3 th\u1ec3 d\u00f9ng b\u1ea5t c\u1ee9 ch\u1ed7 n\u00e0o b\u1ea1n mu\u1ed1n. Simple as that \ud83d\ude42 Nghe th\u00ec \u0111\u01a1n gi\u1ea3n th\u00f4i nh\u01b0ng m\u00e0 h\u01a1i b\u1ecb hay \u0111\u1ea5y. Next, l\u00e0m n\u00e0o \u0111\u1ec3 d\u00f9ng Trait? Ph\u1ea3i cho v\u00ed d\u1ee5 c\u1ee5 th\u1ec3 ng\u01b0\u1eddi ta m\u1edbi hi\u1ec3u \u0111\u01b0\u1ee3c ch\u1ee9, \u0111\u00fang kh\u00f4ng!? S\u1eed d\u1ee5ng Trait th\u1ebf n\u00e0o? \u1ede \u0111\u00e2y m\u00ecnh s\u1ebd tr\u00ecnh b\u00e0y cho c\u00e1c b\u1ea1n c\u00e1ch s\u1eed d\u1ee5ng Trait trong r\u1ea5t nhi\u1ec1u tr\u01b0\u1eddng h\u1ee3p, c\u00f3 th\u1ec3 s\u1ebd h\u01a1i d\u00e0i, ch\u1ecbu kh\u00f3 \u0111\u1ecdc nh\u00e9 \ud83d\ude09 V\u00ed d\u1ee5 \u0111\u01a1n gi\u1ea3n: V\u1ec1 quy\u1ec1n \u01b0u ti\u00ean, n\u1ebfu tr\u00f9ng t\u00ean function c\u1ee7a Trait v\u1edbi function c\u1ee7a Base class, th\u00ec chuy\u1ec7n g\u00ec s\u1ebd x\u1ea3y ra? To be continue&#8230;<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2018\/06\/01\/trait-mixin-in-php\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_211\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_283\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_283\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2018\/01\/12\/setup-nginx-php-mysql-phpmyadmin-macos-high-sierra\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2018\/01\/mac-for-hackers-set-up-homebrew-install-update-open-source-tools.1280x600.jpg?fit=300%2C141&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"Setup Nginx, PHP, MySQL and phpMyAdmin on macOS High Sierra\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_283\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2018\/01\/12\/setup-nginx-php-mysql-phpmyadmin-macos-high-sierra\/\"  class=\"title\">Setup Nginx, PHP, MySQL and phpMyAdmin on macOS High Sierra<\/a><span class=\"date\">Th\u00e1ng 1 12, 2018<\/span><span class=\"category\">Environment \/ Web development<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">Recently I bought a Mac and with all the curiosity, I upgraded to the newest OS which is High Sierra. I heard a lot about the ease of setting up development environment on Mac with package manager like brew Beside, I have used Linux and Windows simultaneously for almost a year, so I thought an OS based on Unix? How hard could it be? WELL I WAS DEAD WRONG! I needed Nginx, PHP 5.6, MySQL version 5.*, phpMyAdmin is optional since I can use MySQL Workbench or Navicat instead. After 2 days of burying myself in bash command, I finally found the Sacred Scroll &#8211; The tutorial of my Lifetime &#8211; The true Saviour. Now that I cleansed my development environment, it is my duty to introduce it to you guys &#8211; The lost Warriors, the SACRED SCROLL!!!!! Link:\u00a0https:\/\/gist.github.com\/johnantoni\/07df65898456ace4307d5bb6cbdc7f51 Just click the link, give it a star, and follow it\u00a0exactly, your development environment should be smell like rose again. Any discussions are welcome! Side note: Dear Apple, stop messing up our homebrew and our development environment. Or I will switch back to Linux. &#8211; A new Apple user.<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2018\/01\/12\/setup-nginx-php-mysql-phpmyadmin-macos-high-sierra\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_283\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_124\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_124\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/25\/stdclass-la-gi-lam-the-nao-de-co-properties-dong-trong-php\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2017\/05\/stdclass-trong-php.png?fit=300%2C220&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"stdClass l\u00e0 g\u00ec? L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 c\u00f3 Dynamic Properties trong PHP?\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_124\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/25\/stdclass-la-gi-lam-the-nao-de-co-properties-dong-trong-php\/\"  class=\"title\">stdClass l\u00e0 g\u00ec? L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 c\u00f3 Dynamic Properties trong PHP?<\/a><span class=\"date\">Th\u00e1ng 5 25, 2017<\/span><span class=\"category\">PHP<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">Ch\u00e0o c\u00e1c b\u1ea1n, m\u00ecnh l\u00e0 \u0110\u0103ng, v\u00e0 m\u00ecnh \u0111\u00e3 tr\u1edf l\u1ea1i r\u1ed3i \u0111\u00e2yy\u00a0 N\u1ebfu b\u1ea1n l\u00e0 1 ng\u01b0\u1eddi r\u1ea5t hay t\u00f2 m\u00f2 ngh\u1ecbch ng\u1ee3m, gi\u1ed1ng t\u00f4i, th\u00ec ch\u1eafc h\u1eb3n b\u1ea1n \u0111\u00e3 t\u1eebng lang thang trong core c\u1ee7a m\u1ea5y th\u1eb1ng PHP framework nh\u01b0 Laravel hay Yii, v\u00e0 ch\u1eafc cmn c\u00fa l\u00e0 c\u00e1c b\u1ea1n c\u0169ng \u0111\u00e3 th\u1ea5y t\u1eeb kh\u00f3a\u00a0stdClass\u00a0quanh qu\u1ea9n trong \u0111\u00f3 v\u00e0i l\u1ea7n r\u1ed3i. Okay v\u1eady b\u00e2y gi\u1edd ch\u00fang ta c\u00f9ng x\u1eafn tay \u00e1o l\u00ean \u0111\u1ec3 t\u00ecm hi\u1ec3u xem n\u00f3 l\u00e0 c\u00e1i qu\u00e1i g\u00ec m\u00e0 b\u1ecdn dev kh\u1ee7ng n\u00f3 th\u00edch d\u00f9ng th\u1ebf nh\u1edf?<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/25\/stdclass-la-gi-lam-the-nao-de-co-properties-dong-trong-php\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_124\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_112\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_112\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/25\/what-is-stdclass-and-dynamic-properties-in-php\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2017\/05\/stdclass-trong-php.png?fit=300%2C220&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"What is stdClass? And Dynamic Properties in PHP?\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_112\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/25\/what-is-stdclass-and-dynamic-properties-in-php\/\"  class=\"title\">What is stdClass? And Dynamic Properties in PHP?<\/a><span class=\"date\">Th\u00e1ng 5 25, 2017<\/span><span class=\"category\">PHP<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">Well hello there, I\u2019m back If you are a curious person, like me, you must have wandered in the core code of PHP frameworks like Laravel or Yii, and you must have seen this\u00a0stdClass here and there. Now, let\u2019s see what is that and how it helps us to code cleaner and more efficient. Okay if you came from or know even just a little Java, you\u2019ll familiar with this concept called\u00a0Dynamic Properties, to create a new object in Java somehow it\u2019ll look like this: Well, before PHP 5.4 object\u2019s properties must be predefined before we can set or get it with the magic method. What a bumper! But luckily, now we can define a new object as quick and dynamic as this: See?\u00a0Sometimes all that is necessary is a property bag to throw key value pairs into. One way is to use array, but this requires quoting all keys.\u00a0Another way is to use dynamic properties on an instance of StdClass. StdClass is a sparsely documented class in PHP which has no predefined properties. You can even cast an array directly to an object in a sec: To conclusion,\u00a0Objects are really useful when you\u2019re working with a large data structure, as you can have an object with nested sub-arrays in it. And\u00a0StdClass\u00a0(std stand for standard)is just a generic \u2019empty bag\u2019 class that\u2019s used when casting other types to objects with what ever properties you want in them. BUT\u00a0despite what the others say, StdClass\u00a0is not the base class for objects in PHP. Please remember that. Next week I\u2019ll be back with you guys to discuss about\u00a0Trait\u00a0 See ya Dang.NH<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/25\/what-is-stdclass-and-dynamic-properties-in-php\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_112\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_66\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_66\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/19\/lam-toan-giai-tri-mot-ti-nhi\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2017\/05\/learning_math-e1459355151809.jpg?fit=300%2C192&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"L\u00e0m to\u00e1n gi\u1ea3i tr\u00ed m\u1ed9t t\u00ed nh\u1ec9?\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_66\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/19\/lam-toan-giai-tri-mot-ti-nhi\/\"  class=\"title\">L\u00e0m to\u00e1n gi\u1ea3i tr\u00ed m\u1ed9t t\u00ed nh\u1ec9?<\/a><span class=\"date\">Th\u00e1ng 5 19, 2017<\/span><span class=\"category\">PHP<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">Ok, ch\u00e0o t\u1ea5t c\u1ea3 anh em Ch\u1ea3 l\u00e0 cu\u1ed1i tu\u1ea7n, \u1edf nh\u00e0 r\u1ea3nh rang, tr\u1eddi th\u00ec se se l\u1ea1nh, m\u0169i h\u01a1i t\u1eafc, ch\u1ec9 mu\u1ed1n co ro qu\u1ea5n ch\u0103n \u00f4m laptop cho \u1ea5m. Lang thang thi c\u00e1i cu\u1ed9c thi l\u1eadp tr\u00ecnh c\u1ee7a b\u1ecdn Top Career g\u00ec \u0111\u00f3 :v v\u00f4 t\u00ecnh v\u1ea5p ph\u1ea3i 1 b\u00e0i test demo, m\u00e0 m\u00ecnh th\u1ea5y kh\u00e1 hay, n\u00ean mu\u1ed1n chia s\u1ebb l\u00ean \u0111\u00e2y cho c\u1ea3 nh\u00e0 \u0110\u1ec1 b\u00e0i: A zero-indexed array A consisting of N integers is given. An equilibrium index of this array is any integer P such that 0 \u2264 P &lt; N and the sum of elements of lower indices is equal to the sum of elements of higher indices, i.e. A[0] + A[1] + &#8230; + A[P\u22121] = A[P+1] + &#8230; + A[N\u22122] + A[N\u22121]. Sum of zero elements is assumed to be equal to 0. This can happen if P = 0 or if P = N\u22121. For example, consider the following array A consisting of N = 8 elements: A[0] = -1 A[1] = 3 A[2] = -4 A[3] = 5 A[4] = 1 A[5] = -6 A[6] = 2 A[7] = 1 P = 1 is an equilibrium index of this array, because: A[0] = \u22121 = A[2] + A[3] + A[4] + A[5] + A[6] + A[7] P = 3 is an equilibrium index of this array, because: A[0] + A[1] + A[2] = \u22122 = A[4] + A[5] + A[6] + A[7] P = 7 is also an equilibrium index, because: A[0] + A[1] + A[2] + A[3] + A[4] + A[5] + A[6] = 0 and there are no elements with indices greater than 7. P = 8 is not an equilibrium index, because it does not fulfill the condition 0 \u2264 P &lt; N. Write a function: function solution($A); that, given a zero-indexed array A consisting of N integers, returns any of its equilibrium indices. The function should return \u22121 if no equilibrium index exists. For example, given array A shown above, the function may return 1, 3 or 7, as explained above. Assume that: N is an integer within the range [0..100,000]; each element of array A is an integer within the range [\u22122,147,483,648..2,147,483,647]. Complexity: expected worst-case time complexity is O(N); expected worst-case space complexity is O(N), beyond input storage (not counting the storage required for input arguments). Elements of input arrays can be modified. D\u1ecbch \u0111\u1ea1i kh\u00e1i l\u00e0: Ta c\u00f3 1 indexed array A g\u1ed3m N ph\u1ea7n t\u1eed l\u00e0 c\u00e1c s\u1ed1 t\u1ef1 nhi\u00ean b\u1ea5t k\u1ef3. T\u00ecm ch\u1ec9 s\u1ed1 c\u00e2n b\u1eb1ng P sao cho P l\u00e0 &#8211; Key c\u1ee7a array A &#8211; Th\u1ecfa m\u00e3n \u0111i\u1ec1u ki\u1ec7n: A[0] + A[1] + &#8230; + A[P\u22121] = A[P+1] + &#8230; + A[N\u22122] + A[N\u22121]. &#8211; P = 0 ho\u1eb7c P= N-1 \u0111\u1ec1u c\u00f3 th\u1ec3 l\u00e0 gi\u00e1 tr\u1ecb \u0111\u00fang &#8211; C\u00f3 th\u1ec3 c\u00f3 nhi\u1ec1u ho\u1eb7c 1 gi\u00e1 tr\u1ecb P &#8211; N\u1ebfu kh\u00f4ng c\u00f3 gi\u00e1 tr\u1ecb n\u00e0o, function c\u1ea7n return -1 C\u00e1c \u0111i\u1ec1u ki\u1ec7n v\u1ec1 complexity, assumption m\u1eddi xem ph\u1ea7n ti\u1ebfng Anh nh\u00e9, l\u01b0\u1eddi d\u1ecbch \ud83d\ude00 R\u1ed3i, \u0111\u1ec1 b\u00e0i l\u00e0 nh\u01b0 v\u1eady, y\u00eau c\u1ea7u vi\u1ebft 1 function d\u01b0\u1edbi ng\u00f4n ng\u1eef n\u00e0o c\u0169ng \u0111\u01b0\u1ee3c, th\u1eddi gian l\u00e0m b\u00e0i l\u00e0\u00a030 ph\u00fat. GI\u1ea2I (\u0110\u00e2y l\u00e0 c\u00e1ch gi\u1ea3i c\u1ee7a m\u00ecnh, ai c\u00f3 c\u00e1ch n\u00e0o hay h\u01a1n th\u00ec comment nh\u00e9 ) H\u01b0\u1edbng gi\u1ea3i c\u1ee7a m\u00ecnh l\u00e0 s\u1ebd chia m\u1ea3ng 1 chi\u1ec1u n\u00e0y th\u00e0nh 2 ph\u1ea7n, T\u1ed5ng\u00a0Tr\u00e1i\u00a0v\u00e0 T\u1ed5ng\u00a0Ph\u1ea3i. Sau \u0111\u00f3 ch\u1ea1y d\u1ea7n t\u1eeb tr\u00e1i qua ph\u1ea3i c\u1ee7a m\u1ea3ng v\u00e0 so s\u00e1nh 2 t\u1ed5ng n\u00e0y v\u1edbi nhau. EZPZ ph\u1ea3i kh\u00f4ng? :)) M\u00ecnh code PHP nh\u00e9, \u0111\u1ea7u ti\u00ean g\u00e1n gi\u00e1 tr\u1ecb default ph\u00e1t\u00a0(th\u00f3i quen th\u00f4i, PHP kh\u00f4ng c\u1ea7n initialize bi\u1ebfn) R\u1ed3i, b\u00e2y gi\u1edd l\u1eb7p qua c\u00e1i array A xem sao nh\u1ec9? B\u1eaft \u0111\u1ea7u so s\u00e1nh, v\u00e0 ph\u1ea3i tr\u1eeb d\u1ea7n\u00a0$sumRight\u00a0 t\u0103ng d\u1ea7n\u00a0$sumLeft\u00a0v\u1edbi gi\u00e1 tr\u1ecb c\u1ee7a m\u1ed7i element Tr\u00f4ng c\u00f3 v\u1ebb \u1ed5n \u1ed5n r\u1ed3i \u0111\u1ea5y nh\u1ec9 :)) Nh\u01b0ng th\u1ef1c ra l\u00e0 \u0111\u1ebfch \u1ed5n, m\u00ecnh c\u00f2n ch\u01b0a check null c\u01a1 m\u00e0 =)) c\u00e1i c\u01a1 b\u1ea3n nh\u1ea5t c\u00f2n su\u1ed1t ng\u00e0y qu\u00ean \u0111\u00e2y Ok done! N\u00e0o, b\u00e2y gi\u1edd test th\u00f4i! Chu\u1ea9n \u0111\u00e9t :)) Test th\u1eed v\u1edbi d\u1eef li\u1ec7u\u00a0kh\u00e1c xem sao Done! Hy v\u1ecdng anh em gi\u1ea3i to\u00e1n vui v\u1ebb :)) c\u00f3 solution n\u00e0o ngon h\u01a1n nh\u1edb comment -_- \u0111\u1eebng c\u00f3 \u00e9m h\u00e0ng<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/19\/lam-toan-giai-tri-mot-ti-nhi\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_66\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><\/div><div class=\"swiper-button-next\"><\/div><div class=\"swiper-button-prev\"><\/div><div class=\"swiper-pagination\"><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;Bugs are your enemies, so you have killed one. Now your software is having one bug less. Mistakes are good as long as they are not repeating. What you learn today, prepares you for tomorrow&#8221; &#8211; Developer&#8217;s Best Practice<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"class_list":["post-9","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>My Blog - Mark&#039;s Blog<\/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:\/\/dangnh.cf\/vi\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"My Blog - Mark&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"&#8220;Bugs are your enemies, so you have killed one. Now your software is having one bug less. Mistakes are good as long as they are not repeating. What you learn today, prepares you for tomorrow&#8221; &#8211; Developer&#8217;s Best Practice\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dangnh.cf\/vi\/\" \/>\n<meta property=\"og:site_name\" content=\"Mark&#039;s Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/dangtute\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-19T07:05:41+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dangnh.cf\\\/\",\"url\":\"https:\\\/\\\/dangnh.cf\\\/\",\"name\":\"My Blog - Mark's Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dangnh.cf\\\/#website\"},\"datePublished\":\"2016-04-05T10:08:26+00:00\",\"dateModified\":\"2025-05-19T07:05:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dangnh.cf\\\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dangnh.cf\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dangnh.cf\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dangnh.cf\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"My Blog\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dangnh.cf\\\/#website\",\"url\":\"https:\\\/\\\/dangnh.cf\\\/\",\"name\":\"Mark's Blog\",\"description\":\"A blog about Programming and Technical Stuffs\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dangnh.cf\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"My Blog - Mark's Blog","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:\/\/dangnh.cf\/vi\/","og_locale":"vi_VN","og_type":"article","og_title":"My Blog - Mark's Blog","og_description":"&#8220;Bugs are your enemies, so you have killed one. Now your software is having one bug less. Mistakes are good as long as they are not repeating. What you learn today, prepares you for tomorrow&#8221; &#8211; Developer&#8217;s Best Practice","og_url":"https:\/\/dangnh.cf\/vi\/","og_site_name":"Mark's Blog","article_publisher":"https:\/\/www.facebook.com\/dangtute","article_modified_time":"2025-05-19T07:05:41+00:00","twitter_card":"summary_large_image","twitter_misc":{"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"1 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dangnh.cf\/","url":"https:\/\/dangnh.cf\/","name":"My Blog - Mark's Blog","isPartOf":{"@id":"https:\/\/dangnh.cf\/#website"},"datePublished":"2016-04-05T10:08:26+00:00","dateModified":"2025-05-19T07:05:41+00:00","breadcrumb":{"@id":"https:\/\/dangnh.cf\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dangnh.cf\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dangnh.cf\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dangnh.cf\/"},{"@type":"ListItem","position":2,"name":"My Blog"}]},{"@type":"WebSite","@id":"https:\/\/dangnh.cf\/#website","url":"https:\/\/dangnh.cf\/","name":"Mark's Blog","description":"A blog about Programming and Technical Stuffs","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dangnh.cf\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"}]}},"jetpack_sharing_enabled":false,"jetpack_shortlink":"https:\/\/wp.me\/P9w3NP-9","jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/pages\/9","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/comments?post=9"}],"version-history":[{"count":13,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/pages\/9\/revisions"}],"predecessor-version":[{"id":426,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/pages\/9\/revisions\/426"}],"wp:attachment":[{"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/media?parent=9"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}