<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Blog của Khánh: ✍️ Công nghệ]]></title><description><![CDATA[Các bài viết liên quan đến công nghệ như lập trình, DevOps, Cloud Computing, vv]]></description><link>https://newsletter.lequockhanh.com/s/cong-nghe</link><image><url>https://substackcdn.com/image/fetch/$s_!Om5X!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0318ebe5-ab77-42c4-874c-aa9b62d1cb89_512x512.png</url><title>Blog của Khánh: ✍️ Công nghệ</title><link>https://newsletter.lequockhanh.com/s/cong-nghe</link></image><generator>Substack</generator><lastBuildDate>Sat, 18 Apr 2026 04:33:48 GMT</lastBuildDate><atom:link href="https://newsletter.lequockhanh.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Khanh Le]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[lequockhanh@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[lequockhanh@substack.com]]></itunes:email><itunes:name><![CDATA[Khanh Le]]></itunes:name></itunes:owner><itunes:author><![CDATA[Khanh Le]]></itunes:author><googleplay:owner><![CDATA[lequockhanh@substack.com]]></googleplay:owner><googleplay:email><![CDATA[lequockhanh@substack.com]]></googleplay:email><googleplay:author><![CDATA[Khanh Le]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[My tool stack 2025 🧰]]></title><description><![CDATA[Xin ch&#224;o &#273;&#7897;c gi&#7843; &#128075;,]]></description><link>https://newsletter.lequockhanh.com/p/my-tool-stack-2025</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/my-tool-stack-2025</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Sun, 01 Jun 2025 03:21:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!R0_2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a9b939c-176e-418e-a23b-f4ad538f6153_1724x410.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Xin ch&#224;o &#273;&#7897;c gi&#7843; &#128075;,</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;fe2d8ef0-b50e-482b-ba51-b6dc7c47c9bb&quot;,&quot;caption&quot;:&quot;Xin ch&#224;o &#273;&#7897;c gi&#7843; tr&#234;n trang Blog c&#7911;a Kh&#225;nh &#128075;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;My tool stack 2024 &#129520;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:34992421,&quot;name&quot;:&quot;Khanh Le&quot;,&quot;bio&quot;:&quot;Vi&#7871;t v&#7873; C&#244;ng Ngh&#7879;, Th&#7875; Thao, v&#224; &#272;&#7901;i S&#7889;ng&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/12806944-1ab4-4ff7-ab2a-463b9cc71cee_402x445.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-06-17T04:00:36.604Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22eb6c02-25cf-4da0-86b3-ae8cc5febd9e_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://newsletter.lequockhanh.com/p/my-tool-stack-2024&quot;,&quot;section_name&quot;:&quot;&#9997;&#65039; C&#244;ng ngh&#7879;&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:145671400,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:32,&quot;comment_count&quot;:11,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Blog c&#7911;a Kh&#225;nh&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0318ebe5-ab77-42c4-874c-aa9b62d1cb89_512x512.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>N&#259;m ngo&#225;i sau khi vi&#7871;t b&#224;i &#8220;My tool stack 2024&#8221;, t&#244;i &#273;&#227; t&#7841;o m&#7897;t task nh&#432; th&#7871; n&#224;y tr&#234;n Todoist c&#7911;a t&#244;i:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R0_2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a9b939c-176e-418e-a23b-f4ad538f6153_1724x410.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R0_2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a9b939c-176e-418e-a23b-f4ad538f6153_1724x410.png 424w, https://substackcdn.com/image/fetch/$s_!R0_2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a9b939c-176e-418e-a23b-f4ad538f6153_1724x410.png 848w, https://substackcdn.com/image/fetch/$s_!R0_2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a9b939c-176e-418e-a23b-f4ad538f6153_1724x410.png 1272w, https://substackcdn.com/image/fetch/$s_!R0_2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a9b939c-176e-418e-a23b-f4ad538f6153_1724x410.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R0_2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a9b939c-176e-418e-a23b-f4ad538f6153_1724x410.png" width="1456" height="346" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a9b939c-176e-418e-a23b-f4ad538f6153_1724x410.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:346,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:78401,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.lequockhanh.com/i/164912595?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a9b939c-176e-418e-a23b-f4ad538f6153_1724x410.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!R0_2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a9b939c-176e-418e-a23b-f4ad538f6153_1724x410.png 424w, https://substackcdn.com/image/fetch/$s_!R0_2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a9b939c-176e-418e-a23b-f4ad538f6153_1724x410.png 848w, https://substackcdn.com/image/fetch/$s_!R0_2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a9b939c-176e-418e-a23b-f4ad538f6153_1724x410.png 1272w, https://substackcdn.com/image/fetch/$s_!R0_2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a9b939c-176e-418e-a23b-f4ad538f6153_1724x410.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Tho&#225;ng c&#225;i &#273;&#227; m&#7897;t n&#259;m tr&#244;i qua. B&#224;i vi&#7871;t n&#224;y s&#7869; nh&#7857;m c&#7853;p nh&#7853;t b&#7897; tool stack c&#7911;a t&#244;i xem c&#243; g&#236; th&#234;m, c&#243; g&#236; b&#7899;t kh&#244;ng.</p><div><hr></div><h2><strong>&#128188; Personal Productivity</strong></h2><h3><strong>Bitwarden</strong></h3><p>Bitwarden ho&#224;n to&#224;n mi&#7877;n ph&#237;. T&#237;nh n&#259;ng c&#417; b&#7843;n c&#7911;a m&#7897;t Password Manager c&#361;ng &#273;&#7873;u c&#243;, giao di&#7879;n d&#7877; s&#7917; d&#7909;ng. </p><p>Sau khi s&#7917; d&#7909;ng th&#7917; m&#7897;t th&#225;ng, t&#244;i &#273;&#227; quy&#7871;t &#273;&#7883;nh cancel subscription c&#7911;a Last Pass &#273;&#7875; chuy&#7875;n h&#7859;n sang s&#7917; d&#7909;ng Bitwarden. </p><p>&#272;&#7871;n gi&#7901; sau g&#7847;n 1 n&#259;m chuy&#7875;n nh&#224;, t&#244;i th&#7845;y r&#7845;t happy. </p><h3><strong>Raycast</strong></h3><p>N&#7871;u &#273;&#432;&#7907;c ph&#233;p ch&#7885;n ra m&#7897;t &#8220;game changer&#8221; tool trong n&#259;m v&#7915;a r&#7891;i, th&#236; t&#244;i s&#7869; vote #1 cho Raycast. T&#244;i v&#7889;n l&#224; ng&#432;&#7901;i gh&#233;t chu&#7897;t. </p><p>T&#244;i s&#7869; c&#7889; g&#7855;ng kh&#244;ng &#273;&#7897;ng v&#224;o con chu&#7897;t / trackpad nhi&#7873;u nh&#7845;t c&#243; th&#7875;. </p><p>V&#224; Raycast sinh ra &#273;&#7875; ph&#7909;c v&#7909; vi&#7879;c &#273;&#243;.</p><p>Ngo&#224;i ra h&#7879; sinh th&#225;i v&#7899;i r&#7845;t nhi&#7873;u ti&#7879;n &#237;ch m&#7903; r&#7897;ng c&#361;ng gi&#250;p Raycast ghi &#273;i&#7875;m c&#7921;c m&#7841;nh.</p><p>M&#7897;t trong nh&#7919;ng t&#237;nh n&#259;ng c&#7911;a Raycast &#273;&#243; l&#224; ghi nh&#7899; l&#7883;ch s&#7917; Copy. Do &#273;&#243; t&#244;i &#273;&#227; lo&#7841;i tool Pasty ra kh&#7887;i stack v&#224; s&#7917; d&#7909;ng ho&#224;n to&#224;n Raycast.</p><p>T&#432;&#417;ng t&#7921; nh&#432; v&#7853;y, tool &#273;&#7875; t&#236;m emoji Rocket c&#361;ng b&#7883; cho v&#224;o d&#297; v&#224;ng khi t&#7845;t c&#7843; &#273;&#7873;u c&#243; tr&#234;n Raycast.</p><h3>Arc Browser</h3><p>D&#249; c&#242;n &#273;i&#7875;m y&#7871;u &#7903; ph&#7847;n qu&#7843;n l&#253; bookmark, nh&#432;ng g&#7847;n 1 n&#259;m qua tr&#7843;i nghi&#7879;m c&#7911;a t&#244;i v&#7899;i Arc Browser l&#224; kh&#225; t&#237;ch c&#7921;c.</p><p>T&#244;i &#273;&#7863;c bi&#7879;t th&#237;ch 3 t&#237;nh n&#259;ng sau:</p><ul><li><p>Ctrl + Tab s&#7869; quay l&#7841;i tab m&#7903; g&#7847;n nh&#7845;t. T&#244;i th&#7845;y &#273;i&#7873;u n&#224;y &#273;&#7863;c bi&#7879;t t&#7921; nhi&#234;n. V&#236; khi l&#224;m vi&#7879;c ch&#250;ng ta th&#432;&#7901;ng ch&#7881; l&#224;m v&#7899;i kho&#7843;ng 2-3 tab m&#7897;t l&#250;c. Vi&#7879;c chuy&#7875;n qua chuy&#7875;n l&#7841;i gi&#7919;a 2 tab l&#224; &#273;i&#7873;u t&#244;i r&#7845;t c&#7847;n.</p></li><li><p>Thanh search &#7903; ngay trang hi&#7879;n t&#7841;i. &#7902; Chrome, m&#7895;i khi mu&#7889;n t&#236;m ki&#7871;m c&#225;i g&#236;, t&#244;i ph&#7843;i m&#7903; tab m&#7899;i, r&#7891;i m&#7899;i search &#273;&#432;&#7907;c. Nh&#432;ng v&#7899;i Arc, th&#236; thanh search &#7903; ngay trang hi&#7879;n t&#7841;i. UX l&#224;m t&#244;i th&#7845;y d&#7877; ch&#7883;u h&#417;n r&#7845;t nhi&#7873;u.</p></li><li><p>&#7848;n side bar. &#272;&#244;i khi t&#244;i ch&#7881; mu&#7889;n nh&#236;n c&#225;i trang web hi&#7879;n t&#7841;i, v&#224; kh&#244;ng c&#243; nhu c&#7847;u nh&#236;n nh&#7919;ng th&#244;ng tin th&#7915;a kh&#225;c. Arc s&#7869; cho ph&#233;p ch&#250;ng ta &#7849;n to&#224;n b&#7897; c&#225;c tab, ch&#7881; hi&#7879;n th&#7883; m&#7895;i trang hi&#7879;n t&#7841;i.</p></li></ul><div><hr></div><h2><strong>&#12080; Self-improvement</strong></h2><h3>Obsidian </h3><p>V&#7873; ph&#7847;n note talking th&#236; n&#259;m v&#7915;a qua t&#244;i &#273;&#227; chuy&#7875;n h&#7859;n qua d&#249;ng Obsidian.</p><p>T&#244;i c&#361;ng &#273;&#227; b&#7887; d&#249;ng Mindomo v&#224; chuy&#7875;n ho&#224;n to&#224;n qua Mermaid tr&#234;n Obsidian.</p><div><hr></div><h2><strong>&#9997;&#65039; Content Creator</strong></h2><h3>Screen studio</h3><p>T&#237;nh n&#259;ng mouse tracking c&#7911;a Screen Studio qu&#7843; th&#7921;c l&#224; h&#417;n h&#7859;n t&#7845;t c&#7843; c&#225;c &#273;&#7889;i th&#7911; trong ng&#225;ch ph&#7847;n m&#7873;m quan m&#224;n h&#236;nh. </p><p>N&#7871;u b&#7841;n c&#7847;n ph&#7843;i l&#224;m video demo s&#7843;n ph&#7849;m, th&#236; kh&#244;ng th&#7875; kh&#244;ng d&#249;ng Screen Studio.</p><div><hr></div><h2><strong>&#129489;&#8205;&#128187; Dev Tools</strong></h2><h3>Cursor AI</h3><p>B&#7843;n th&#226;n t&#244;i kh&#244;ng th&#237;ch AI.</p><p>AI l&#224;m cho ph&#7847;n nhi&#7873;u ng&#432;&#7901;i m&#7845;t kh&#7843; n&#259;ng suy ngh&#297; &#273;&#7897;c l&#7853;p.</p><p>AI l&#224;m cho nh&#7919;ng con ng&#432;&#7901;i b&#236;nh th&#432;&#7901;ng, ngh&#297; r&#7857;ng h&#7885; &#273;&#7863;c bi&#7879;t.</p><p>D&#249; kh&#244;ng th&#237;ch nh&#432;ng c&#361;ng ph&#7843;i c&#244;ng nh&#7853;n r&#7857;ng AI &#273;ang gi&#250;p n&#259;ng su&#7845;t lao &#273;&#7897;ng t&#259;ng r&#7845;t nhanh.</p><p>B&#7843;n th&#226;n t&#244;i d&#249;ng Cursor AI nh&#432; m&#7897;t d&#7841;ng Assistant trong vi&#7879;c coding. </p><p>T&#244;i v&#7851;n l&#224; ng&#432;&#7901;i ch&#7881; huy, nh&#432;ng vi&#7879;c th&#7921;c thi th&#236; &#273;&#7875; Cursor l&#224;m.<br></p><div><hr></div><h1>T&#7893;ng k&#7871;t</h1><p>Nh&#432; v&#7853;y toolstack c&#7911;a t&#244;i c&#243; s&#7921; thay &#273;&#7893;i trong m&#7897;t n&#259;m nh&#432; sau.</p><p>B&#7887; kh&#244;ng d&#249;ng: Lastpass, Pasty, Rocket, Mindomo, Lens</p><p>Tool m&#7899;i: Bitwarden, Raycast, Arc Browser, Screen Studio, Cursor AI</p>]]></content:encoded></item><item><title><![CDATA[Cấu trúc lại Todoist]]></title><description><![CDATA[T&#244;i &#273;&#227; b&#7887; Todoist sau h&#417;n 6 n&#259;m s&#7917; d&#7909;ng]]></description><link>https://newsletter.lequockhanh.com/p/cau-truc-lai-todoist</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/cau-truc-lai-todoist</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Sat, 05 Apr 2025 10:04:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Jeva!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F880c1bb9-881f-489b-8029-719923a7e1fd_3546x2714.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>D&#7851;n b&#224;i 1</strong></p><p>L&#224;n s&#243;ng sa th&#7843;i nh&#226;n s&#7921; b&#7855;t ngu&#7891;n t&#7915; kho&#7843;ng n&#259;m 2022 k&#233;o d&#224;i &#273;&#7871;n t&#7853;n b&#226;y gi&#7901;. Khi &#7845;y trong team m&#236;nh lu&#244;n n&#243;i &#273;&#249;a v&#7899;i nhau m&#7897;t c&#226;u vui r&#7857;ng &#8220;Optimize or to be optimized&#8221;.</p><p><strong>D&#7851;n b&#224;i 2</strong></p><p>H&#244;m tr&#432;&#7899;c c&#243; &#273;&#7885;c &#273;&#432;&#7907;c b&#224;i b&#225;o n&#243;i l&#224; <a href="https://cafef.vn/elon-musk-thang-tay-sa-thai-nu-tro-ly-12-nam-kinh-nghiem-vi-doi-tang-luong-bai-hoc-tham-sau-tu-vi-ty-phu-u60-188241015103222381.chn">Elon Musk th&#7859;ng tay sa th&#7843;i n&#7919; tr&#7907; l&#253; 12 n&#259;m kinh nghi&#7879;m v&#236; &#273;&#242;i t&#259;ng l&#432;&#417;ng</a>. Th&#7871; m&#7899;i th&#7845;y s&#7921; hi&#7879;u qu&#7843; v&#224; gi&#225; tr&#7883; mang l&#7841;i m&#7899;i l&#224; &#273;i&#7873;u quan tr&#7885;ng. </p><p><strong>D&#7851;n b&#224;i 3</strong></p><p>T&#7915; h&#7891;i &#273;&#7885;c nhi&#7873;u b&#225;o c&#225;o doanh nghi&#7879;p t&#244;i m&#7899;i bi&#7871;t r&#7857;ng c&#225;c chi ph&#237; &#7843;nh h&#432;&#7903;ng &#273;&#7871;n l&#7907;i nhu&#7853;n c&#7911;a m&#7897;t doanh nghi&#7879;p c&#243; th&#7875; chia th&#224;nh m&#7845;y m&#7909;c sau:</p><ul><li><p>Gi&#225; v&#7889;n h&#224;ng b&#225;n </p></li><li><p>Chi ph&#237; qu&#7843;n l&#253; doanh nghi&#7879;p</p></li><li><p>Chi ph&#237; b&#225;n h&#224;ng</p></li></ul><p>Gi&#225; v&#7889;n h&#224;ng b&#225;n l&#224; th&#7913; kh&#243; gi&#7843;m v&#236; ph&#7909; thu&#7897;c nhi&#7873;u v&#224;o nguy&#234;n li&#7879;u &#273;&#7847;u v&#224;o. Chi ph&#237; b&#225;n h&#224;ng th&#236; c&#361;ng kh&#243; gi&#7843;m n&#7871;u s&#7843;n ph&#7849;m c&#7911;a doanh nghi&#7879;p ch&#432;a c&#243; th&#432;&#417;ng hi&#7879;u l&#7899;n. Th&#7913; c&#243; th&#7875; gi&#7843;m &#273;&#432;&#7907;c l&#224; chi ph&#237; qu&#7843;n l&#253; doanh nghi&#7879;p. &#272;&#7885;c nhi&#7873;u b&#225;o c&#225;o m&#7899;i th&#7845;y c&#243; nh&#7919;ng doanh nghi&#7879;p kh&#225; nh&#7887;, m&#244; h&#236;nh kinh doanh h&#7871;t s&#7913;c &#273;&#417;n gi&#7843;n m&#224; chi ph&#237; qu&#7843;n l&#253; doanh nghi&#7879;p c&#7921;c k&#7923; cao.</p><h2>T&#244;i &#273;&#227; d&#249;ng b&#7843;n tr&#7843; ph&#237; c&#7911;a Todoist &#273;&#432;&#7907;c 6 n&#259;m</h2><p>T&#244;i b&#7855;t &#273;&#7847;u mua b&#7843;n tr&#7843; ph&#237; c&#7911;a Todoist t&#7915; n&#259;m 2020, &#273;&#7871;n nay &#273;&#227; l&#224; 6 n&#259;m. Nh&#236;n l&#7841;i ch&#7863;ng &#273;&#432;&#7901;ng s&#7917; d&#7909;ng c&#361;ng r&#7845;t vui. Th&#7853;m ch&#237; n&#259;m 2021 c&#242;n &#273;&#432;&#7907;c Todoist t&#7863;ng cho m&#7897;t c&#225;i c&#7889;c m&#224; t&#244;i h&#7891;i h&#7897;p nh&#7853;n &#273;&#7907;i c&#7843; 3 th&#225;ng tr&#7901;i m&#7899;i ship v&#7873; &#273;&#7871;n Vi&#7879;t Nam.</p><p>D&#249;ng b&#7843;n tr&#7843; ph&#237; th&#236; &#273;&#432;&#7907;c c&#225;i kh&#244;ng b&#7883; gi&#7899;i h&#7841;n g&#236; c&#7843;, t&#7841;o bao nhi&#234;u project c&#361;ng &#273;&#432;&#7907;c.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jeva!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F880c1bb9-881f-489b-8029-719923a7e1fd_3546x2714.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jeva!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F880c1bb9-881f-489b-8029-719923a7e1fd_3546x2714.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Jeva!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F880c1bb9-881f-489b-8029-719923a7e1fd_3546x2714.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Jeva!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F880c1bb9-881f-489b-8029-719923a7e1fd_3546x2714.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Jeva!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F880c1bb9-881f-489b-8029-719923a7e1fd_3546x2714.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jeva!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F880c1bb9-881f-489b-8029-719923a7e1fd_3546x2714.jpeg" width="3546" height="2714" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/880c1bb9-881f-489b-8029-719923a7e1fd_3546x2714.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2714,&quot;width&quot;:3546,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1204713,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.lequockhanh.com/i/160637834?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f2e581e-2fa6-4901-8b69-35b3fc6fa28f_4032x3024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jeva!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F880c1bb9-881f-489b-8029-719923a7e1fd_3546x2714.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Jeva!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F880c1bb9-881f-489b-8029-719923a7e1fd_3546x2714.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Jeva!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F880c1bb9-881f-489b-8029-719923a7e1fd_3546x2714.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Jeva!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F880c1bb9-881f-489b-8029-719923a7e1fd_3546x2714.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">C&#7889;c t&#244;i &#273;&#432;&#7907;c Todoist t&#7863;ng h&#7891;i 2021, &#273;&#7871;n gi&#7901; v&#7851;n &#273;ang u&#7889;ng m&#7895;i ng&#224;y.</figcaption></figure></div><p>Tuy nhi&#234;n &#8230; d&#432;&#7901;ng nh&#432; t&#244;i &#273;ang d&#249;ng ch&#432;a &#273;&#432;&#7907;c hi&#7879;u qu&#7843; cho l&#7855;m. T&#244;i t&#7841;o kh&#225; nhi&#7873;u nested project, r&#7891;i sau m&#7897;t th&#7901;i gian c&#243; nh&#7919;ng project ch&#7881; c&#242;n m&#7897;t v&#224;i task recurring, c&#243; nh&#7919;ng project th&#236; ch&#7881; c&#242;n backlog. </p><h2>Quy&#7871;t &#273;&#7883;nh c&#7845;u tr&#250;c l&#7841;i Todoist v&#224; b&#7887; thu&#234; bao</h2><p>Sau khi c&#226;n nh&#7855;c, t&#244;i quy&#7871;t &#273;&#7883;nh s&#7869; b&#7887; thu&#234; bao n&#259;m, quay l&#7841;i d&#249;ng b&#7843;n mi&#7877;n ph&#237;, v&#224; ng&#7891;i c&#7845;u tr&#250;c l&#7841;i Todoist. </p><p>6 n&#259;m tr&#432;&#7899;c t&#244;i mua b&#7843;n tr&#7843; ph&#237; v&#236; mu&#7889;n s&#7889; project &#273;&#432;&#7907;c t&#7841;o kh&#244;ng b&#7883; gi&#7899;i h&#7841;n, 6 n&#259;m sau t&#244;i b&#7887; b&#7843;n tr&#7843; ph&#237; v&#236; mu&#7889;n s&#7889; project b&#7883; gi&#7899;i h&#7841;n.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RXj5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a542675-4c51-4690-9a7f-fb05ad664400_412x224.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RXj5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a542675-4c51-4690-9a7f-fb05ad664400_412x224.png 424w, https://substackcdn.com/image/fetch/$s_!RXj5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a542675-4c51-4690-9a7f-fb05ad664400_412x224.png 848w, https://substackcdn.com/image/fetch/$s_!RXj5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a542675-4c51-4690-9a7f-fb05ad664400_412x224.png 1272w, https://substackcdn.com/image/fetch/$s_!RXj5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a542675-4c51-4690-9a7f-fb05ad664400_412x224.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RXj5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a542675-4c51-4690-9a7f-fb05ad664400_412x224.png" width="412" height="224" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a542675-4c51-4690-9a7f-fb05ad664400_412x224.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:224,&quot;width&quot;:412,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17330,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.lequockhanh.com/i/160637834?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a542675-4c51-4690-9a7f-fb05ad664400_412x224.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RXj5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a542675-4c51-4690-9a7f-fb05ad664400_412x224.png 424w, https://substackcdn.com/image/fetch/$s_!RXj5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a542675-4c51-4690-9a7f-fb05ad664400_412x224.png 848w, https://substackcdn.com/image/fetch/$s_!RXj5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a542675-4c51-4690-9a7f-fb05ad664400_412x224.png 1272w, https://substackcdn.com/image/fetch/$s_!RXj5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a542675-4c51-4690-9a7f-fb05ad664400_412x224.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Todoist c&#7911;a t&#244;i sau khi &#273;&#432;&#7907;c c&#7845;u tr&#250;c l&#7841;i gi&#7843;m t&#7915; 30 project v&#224; nested project xu&#7889;ng c&#242;n 5 flatted projects</figcaption></figure></div><p>T&#244;i ngh&#297; s&#7921; h&#7841;n h&#7865;p trong kh&#244;ng gian s&#7869; gi&#250;p ch&#250;ng ta tr&#7903; n&#234;n optimize h&#417;n. Kh&#244;ng ph&#7843;i ng&#7851;u nhi&#234;n m&#224; nh&#7919;ng ch&#432;&#417;ng tr&#236;nh vi&#7871;t t&#7915; thu&#7903; khai thi&#234;n l&#7853;p &#273;&#7883;a v&#7873; l&#7853;p tr&#236;nh l&#7841;i ch&#7841;y t&#7889;t &#273;&#7871;n nh&#432; th&#7871;. H&#224;m grep, h&#224;m find trong Unix l&#224; nh&#7919;ng masterpiece. V&#236; sao v&#7853;y? V&#236; th&#7901;i &#273;&#243; nh&#7919;ng Dennis Ritchie v&#224; Ken Thompson ch&#7881; c&#243; v&#224;i m&#7849;u RAM &#273;&#7875; ch&#7841;y ch&#432;&#417;ng tr&#236;nh c&#7911;a h&#7885;.</p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Obsidian với Git và Vimium]]></title><description><![CDATA[2 plugins cho d&#226;n l&#7853;p tr&#236;nh]]></description><link>https://newsletter.lequockhanh.com/p/obsidian-voi-git-va-vimium</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/obsidian-voi-git-va-vimium</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Wed, 27 Nov 2024 23:57:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vimS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfcf137a-12bd-4104-877c-3adfa9fc8ef4_919x596.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>T&#244;i b&#7855;t &#273;&#7847;u nghe v&#7873; Obsidian kho&#7843;ng hai n&#259;m tr&#432;&#7899;c. M&#7897;t n&#259;m tr&#432;&#7899;c quy&#7871;t &#273;&#7883;nh d&#249;ng th&#7917;, nh&#432;ng b&#7887; v&#236; kh&#244;ng th&#7845;y h&#7907;p. Tuy nhi&#234;n kho&#7843;ng 1 tu&#7847;n nay, khi ph&#225;t hi&#7879;n ra plugin n&#224;y t&#244;i m&#7899;i th&#7921;c s&#7921; d&#249;ng n&#243;.</p><h1>D&#249;ng Git cho vi&#7879;c &#273;&#7891;ng b&#7897;</h1><p>L&#250;c m&#7899;i t&#236;m hi&#7875;u Obsidian, t&#244;i th&#7845;y c&#243; t&#237;nh n&#259;ng &#273;&#7891;ng b&#7897; vault l&#234;n cloud, tuy nhi&#234;n ph&#7843;i tr&#7843; ph&#237;. T&#244;i ngh&#297; l&#224; v&#7853;y c&#361;ng nh&#432; bao app kh&#225;c, kh&#244;ng c&#243; g&#236; &#273;&#7863;c bi&#7879;t. Tuy nhi&#234;n sau khi ph&#225;t hi&#7879;n ra c&#243; th&#7875; d&#249;ng git &#273;&#7875; qu&#7843;n l&#253; vault, t&#244;i &#273;&#227; thay &#273;&#7893;i quan &#273;i&#7875;m.</p><p>V&#237; d&#7909;, t&#244;i mu&#7889;n d&#249;ng git v&#224; GitHub l&#224;m c&#244;ng c&#7909; qu&#7843;n l&#253; v&#224; l&#432;u tr&#7919; d&#7919; li&#7879;u, th&#236; l&#224;m c&#225;c b&#432;&#7899;c nh&#432; sau:</p><p>B&#432;&#7899;c 1: T&#7841;o repo tr&#234;n Github.</p><p>B&#432;&#7899;c 2: Clone repo v&#7873; m&#225;y.</p><p>B&#432;&#7899;c 3: C&#224;i plugin Git tr&#234;n Obsidian.</p><p>B&#432;&#7899;c 4: Ch&#7885;n repo v&#7915;a clone v&#7873; l&#224;m vault.</p><p>B&#432;&#7899;c 5: C&#224;i &#273;&#7863;t th&#7901;i gian interval &#273;&#7875; sync l&#234;n Github.</p><p>V&#7853;y l&#224; xong r&#7891;i, t&#244;i &#273;&#227; c&#243; m&#7897;t vault &#8220;cloud&#8221; ho&#224;n to&#224;n mi&#7877;n ph&#237;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vimS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfcf137a-12bd-4104-877c-3adfa9fc8ef4_919x596.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vimS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfcf137a-12bd-4104-877c-3adfa9fc8ef4_919x596.png 424w, https://substackcdn.com/image/fetch/$s_!vimS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfcf137a-12bd-4104-877c-3adfa9fc8ef4_919x596.png 848w, https://substackcdn.com/image/fetch/$s_!vimS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfcf137a-12bd-4104-877c-3adfa9fc8ef4_919x596.png 1272w, https://substackcdn.com/image/fetch/$s_!vimS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfcf137a-12bd-4104-877c-3adfa9fc8ef4_919x596.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vimS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfcf137a-12bd-4104-877c-3adfa9fc8ef4_919x596.png" width="919" height="596" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cfcf137a-12bd-4104-877c-3adfa9fc8ef4_919x596.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:596,&quot;width&quot;:919,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87638,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vimS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfcf137a-12bd-4104-877c-3adfa9fc8ef4_919x596.png 424w, https://substackcdn.com/image/fetch/$s_!vimS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfcf137a-12bd-4104-877c-3adfa9fc8ef4_919x596.png 848w, https://substackcdn.com/image/fetch/$s_!vimS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfcf137a-12bd-4104-877c-3adfa9fc8ef4_919x596.png 1272w, https://substackcdn.com/image/fetch/$s_!vimS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfcf137a-12bd-4104-877c-3adfa9fc8ef4_919x596.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Commit b&#225; ch&#225;y lu&#244;n</figcaption></figure></div><h1>D&#249;ng Vimium &#273;&#7875; kh&#244;ng ph&#7843;i &#273;&#7897;ng v&#224;o chu&#7897;t</h1><p>N&#7871;u b&#7855;t b&#7841;n ch&#7881; &#273;&#432;&#7907;c d&#249;ng b&#224;n ph&#237;m, m&#224; kh&#244;ng &#273;&#432;&#7907;c d&#249;ng chu&#7897;t hay touchpad, b&#7841;n s&#7869; d&#249;ng c&#225;c ph&#7847;n m&#7873;m tr&#234;n m&#225;y t&#237;nh th&#7871; n&#224;o?</p><p>C&#226;u tr&#7843; l&#7901;i c&#243; th&#7875; l&#224; hotkeys, ho&#7863;c Vimium.</p><p>Vimium n&#7893;i ti&#7871;ng tr&#234;n Chrome bao n&#259;m nay.</p><p>T&#244;i m&#7899;i ph&#225;t hi&#7879;n c&#243; m&#7897;t plugin m&#7899;i &#273;&#432;&#7907;c ph&#225;t tri&#7875;n kho&#7843;ng 1 n&#259;m nay &#273;&#7875; l&#224;m Vimium tr&#234;n Obsidian: <a href="https://github.com/karstenpedersen/obsidian-vimium">https://github.com/karstenpedersen/obsidian-vimium</a></p><p>B&#7841;n c&#243; th&#7875; c&#224;i d&#249;ng th&#7917;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A3Fx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb8a0d8d-f213-4869-bb4b-bec163305829_922x537.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A3Fx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb8a0d8d-f213-4869-bb4b-bec163305829_922x537.png 424w, https://substackcdn.com/image/fetch/$s_!A3Fx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb8a0d8d-f213-4869-bb4b-bec163305829_922x537.png 848w, https://substackcdn.com/image/fetch/$s_!A3Fx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb8a0d8d-f213-4869-bb4b-bec163305829_922x537.png 1272w, https://substackcdn.com/image/fetch/$s_!A3Fx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb8a0d8d-f213-4869-bb4b-bec163305829_922x537.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A3Fx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb8a0d8d-f213-4869-bb4b-bec163305829_922x537.png" width="922" height="537" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb8a0d8d-f213-4869-bb4b-bec163305829_922x537.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:537,&quot;width&quot;:922,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58947,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!A3Fx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb8a0d8d-f213-4869-bb4b-bec163305829_922x537.png 424w, https://substackcdn.com/image/fetch/$s_!A3Fx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb8a0d8d-f213-4869-bb4b-bec163305829_922x537.png 848w, https://substackcdn.com/image/fetch/$s_!A3Fx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb8a0d8d-f213-4869-bb4b-bec163305829_922x537.png 1272w, https://substackcdn.com/image/fetch/$s_!A3Fx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb8a0d8d-f213-4869-bb4b-bec163305829_922x537.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">C&#224;i xong th&#236; b&#7841;n c&#243; th&#7875; click b&#7845;t c&#7913; &#273;&#226;u m&#224; kh&#244;ng c&#7847;n d&#249;ng chu&#7897;t</figcaption></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[Nghỉ việc framework ⚖️]]></title><description><![CDATA[H&#7879; th&#7889;ng ho&#225; chuy&#7879;n ngh&#7881; vi&#7879;c]]></description><link>https://newsletter.lequockhanh.com/p/nghi-viec-framework</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/nghi-viec-framework</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Mon, 01 Jul 2024 04:00:51 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/bd075a9d-6e8d-4cd4-8126-450dfbcc8b7c_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#272;&#432;&#7907;c l&#224;m &#7903; c&#244;ng ty m&#236;nh y&#234;u th&#237;ch l&#224; chuy&#7879;n kh&#243;. Ra quy&#7871;t &#273;&#7883;nh r&#7901;i kh&#7887;i c&#244;ng ty &#273;&#243; c&#242;n kh&#243; h&#417;n.</p><p>Ngh&#7881; vi&#7879;c ch&#432;a bao gi&#7901; l&#224; chuy&#7879;n d&#7877; d&#224;ng v&#7899;i b&#7845;t k&#7923; ai. C&#225; nh&#226;n t&#244;i c&#361;ng ph&#7843;i tr&#7843;i qua c&#7843;m gi&#225;c &#7845;y hai l&#7847;n v&#224;o n&#259;m 2018 v&#224; 2021. Nh&#7899; v&#7873; nh&#7919;ng giai &#273;o&#7841;n &#273;&#243;, t&#244;i th&#7845;y c&#243; r&#7845;t nhi&#7873;u y&#7871;u t&#7889; chi ph&#7889;i quy&#7871;t &#273;&#7883;nh ngh&#7881; vi&#7879;c c&#7911;a b&#7843;n th&#226;n. Nh&#432;ng d&#432;&#7901;ng nh&#432; t&#244;i &#273;&#227; qu&#225; &#273;&#7873; cao m&#7897;t v&#224;i y&#7871;u t&#7889;, m&#224; qu&#234;n &#273;i ho&#7863;c &#273;&#225;nh gi&#225; th&#7845;p nh&#7919;ng y&#7871;u t&#7889; quan tr&#7885;ng kh&#225;c.</p><p>&#272;&#7875; sai l&#7847;m &#273;&#243; kh&#244;ng l&#7863;p l&#7841;i trong t&#432;&#417;ng lai, t&#244;i &#273;&#227; t&#7921; x&#226;y d&#7921;ng cho b&#7843;n th&#226;n m&#7897;t framework c&#243; t&#234;n &#8220;<a href="https://docs.google.com/spreadsheets/d/1v7p6KSOk6TjtHrIa2V7dgnTIyLPiOCyFxXLdxlGK9Ug/edit?gid=1621200593#gid=1621200593">Ngh&#7881; vi&#7879;c framework</a>&#8221; (b&#7841;n b&#7845;m v&#224;o &#273;&#432;&#7901;ng d&#7851;n &#273;&#7875; ra file Google Spreadsheet nh&#233;).</p><p>&#272;&#7875; x&#226;y d&#7921;ng ra &#273;&#432;&#7907;c framework b&#234;n tr&#234;n, t&#244;i l&#224;m theo ba b&#432;&#7899;c nh&#432; sau:</p><ul><li><p><strong>B&#432;&#7899;c 1: X&#225;c &#273;&#7883;nh nh&#7919;ng y&#7871;u t&#7889; then ch&#7889;t &#7843;nh h&#432;&#7903;ng &#273;&#7871;n quy&#7871;t &#273;&#7883;nh ngh&#7881; vi&#7879;c</strong></p></li><li><p><strong>B&#432;&#7899;c 2: &#272;&#225;nh tr&#7885;ng s&#7889; cho c&#225;c y&#7871;u t&#7889;</strong></p></li><li><p><strong>B&#432;&#7899;c 3: &#272;&#7883;nh k&#236; &#273;&#225;nh gi&#225;, ch&#7881;nh s&#7917;a, v&#224; b&#7893; sung cho framework</strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!15tV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a368f31-45c4-48b0-a8e7-3f1ca389f0e2_1063x573.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!15tV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a368f31-45c4-48b0-a8e7-3f1ca389f0e2_1063x573.png 424w, https://substackcdn.com/image/fetch/$s_!15tV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a368f31-45c4-48b0-a8e7-3f1ca389f0e2_1063x573.png 848w, https://substackcdn.com/image/fetch/$s_!15tV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a368f31-45c4-48b0-a8e7-3f1ca389f0e2_1063x573.png 1272w, https://substackcdn.com/image/fetch/$s_!15tV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a368f31-45c4-48b0-a8e7-3f1ca389f0e2_1063x573.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!15tV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a368f31-45c4-48b0-a8e7-3f1ca389f0e2_1063x573.png" width="1063" height="573" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a368f31-45c4-48b0-a8e7-3f1ca389f0e2_1063x573.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:573,&quot;width&quot;:1063,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:113713,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!15tV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a368f31-45c4-48b0-a8e7-3f1ca389f0e2_1063x573.png 424w, https://substackcdn.com/image/fetch/$s_!15tV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a368f31-45c4-48b0-a8e7-3f1ca389f0e2_1063x573.png 848w, https://substackcdn.com/image/fetch/$s_!15tV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a368f31-45c4-48b0-a8e7-3f1ca389f0e2_1063x573.png 1272w, https://substackcdn.com/image/fetch/$s_!15tV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a368f31-45c4-48b0-a8e7-3f1ca389f0e2_1063x573.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>B&#432;&#7899;c 1: X&#225;c &#273;&#7883;nh nh&#7919;ng y&#7871;u t&#7889; then ch&#7889;t &#7843;nh h&#432;&#7903;ng &#273;&#7871;n quy&#7871;t &#273;&#7883;nh ngh&#7881; vi&#7879;c</h2><p>M&#7895;i c&#225; nh&#226;n m&#7895;i ho&#224;n c&#7843;nh, v&#236; th&#7871; m&#224; y&#7871;u t&#7889; then ch&#7889;t &#7843;nh h&#432;&#7903;ng &#273;&#7871;n quy&#7871;t &#273;&#7883;nh ngh&#7881; vi&#7879;c c&#361;ng kh&#225;c nhau. V&#7899;i c&#225; nh&#226;n t&#244;i, t&#244;i b&#7883; &#7843;nh h&#432;&#7903;ng b&#7903;i c&#225;c nh&#243;m y&#7871;u t&#7889; sau:</p><ul><li><p>Benefits (&#273;&#227;i ng&#7897;)&#9;&#9;</p></li><li><p>Grow opportunities (c&#417; h&#7897;i ph&#225;t tri&#7875;n)</p></li><li><p>Culture (v&#259;n ho&#225; c&#244;ng ty)</p></li><li><p>Work-life balance&#9;(c&#226;n b&#7857;ng cu&#7897;c s&#7889;ng - c&#244;ng vi&#7879;c)</p></li><li><p>Feeling (c&#7843;m gi&#225;c)</p></li></ul><h4>Benefits (&#273;&#227;i ng&#7897;)</h4><p>&#272;&#7889;i v&#7899;i nh&#7919;ng ng&#432;&#7901;i tr&#7867; nh&#432; t&#244;i, &#273;&#227;i ng&#7897; t&#7889;t lu&#244;n l&#224; m&#7897;t trong nh&#7919;ng y&#7871;u t&#7889; then ch&#7889;t trong vi&#7879;c quy&#7871;t &#273;&#7883;nh &#273;i hay &#7903; m&#7897;t c&#244;ng ty. &#272;&#227;i ng&#7897; bao g&#7891;m:</p><ul><li><p><strong>Salary (l&#432;&#417;ng th&#432;&#7903;ng): </strong>Trong cu&#7889;n s&#225;ch &#8220;<a href="https://www.goodreads.com/book/show/6452796-drive">Drive: the Surprising Truth About What Motivates Us</a>&#8221;, t&#225;c gi&#7843; Danial Pink cho r&#7857;ng vi&#7879;c &#273;&#432;&#7907;c tr&#7843; l&#432;&#417;ng th&#432;&#7903;ng t&#432;&#417;ng x&#7913;ng v&#7899;i n&#259;ng l&#7921;c l&#224; y&#7871;u t&#7889; ki&#234;n quy&#7871;t &#273;&#7875; gi&#250;p cho m&#7897;t nh&#226;n vi&#234;n y&#234;n t&#226;m l&#224;m t&#7889;t c&#244;ng vi&#7879;c c&#7911;a h&#7885;. </p></li><li><p><strong>Time Flexibility (tho&#7843;i m&#225;i v&#7873; m&#7863;t th&#7901;i gian): </strong>Do t&#7915; tr&#432;&#7899;c gi&#7901; t&#244;i &#273;&#7873;u l&#224;m vi&#7879;c &#7903; nh&#7919;ng c&#244;ng ty tho&#7843;i m&#225;i v&#7873; m&#7863;t th&#7901;i gian n&#234;n &#273;&#226;y c&#361;ng l&#224; y&#7871;u t&#7889; r&#7845;t quan tr&#7885;ng v&#7899;i t&#244;i.</p></li><li><p><strong>Other benefits (c&#225;c ph&#250;c l&#7907;i kh&#225;c): </strong>C&#244;ng ty c&#243; &#273;&#243;ng b&#7843;o hi&#7875;m tr&#234;n l&#432;&#417;ng &#273;&#7847;y &#273;&#7911; kh&#244;ng, c&#243; h&#7895; tr&#7907; h&#7885;c ph&#237; h&#7885;c t&#7853;p hay kh&#244;ng, vv. (V&#7899;i c&#225;c b&#7841;n n&#7919; th&#236; t&#244;i th&#7845;y c&#225;c b&#7841;n &#7845;y r&#7845;t quan t&#226;m &#273;&#7871;n ch&#7871; &#273;&#7897; thai s&#7843;n).</p></li></ul><h4>Grow opportunities (c&#417; h&#7897;i ph&#225;t tri&#7875;n)</h4><p>Quan tr&#7885;ng t&#432;&#417;ng &#273;&#432;&#417;ng v&#7899;i &#273;&#227;i ng&#7897; l&#224; c&#417; h&#7897;i ph&#225;t tri&#7875;n b&#7843;n th&#226;n. V&#7899;i t&#244;i, c&#225;c y&#7871;u t&#7889; then ch&#7889;t trong m&#7909;c n&#224;y l&#224;:</p><ul><li><p><strong>Functional skills (k&#297; n&#259;ng chuy&#234;n m&#244;n):&#9;</strong>V&#7899;i t&#244;i, trong kho&#7843;ng th&#7901;i gian n&#224;y c&#7911;a s&#7921; nghi&#7879;p, k&#297; n&#259;ng chuy&#234;n m&#244;n v&#7851;n l&#224; y&#7871;u t&#7889; c&#243; vai tr&#242; r&#7845;t quan tr&#7885;ng. T&#244;i quan ni&#7879;m r&#7857;ng s&#7869; kh&#244;ng th&#7875; l&#224; m&#7897;t ng&#432;&#7901;i l&#227;nh &#273;&#7841;o t&#7889;t, n&#7871;u ch&#432;a t&#7915;ng l&#224; m&#7897;t nh&#226;n vi&#234;n gi&#7887;i.</p></li><li><p><strong>Leadership (c&#417; h&#7897;i l&#227;nh &#273;&#7841;o): </strong>C&#243; c&#417; h&#7897;i l&#227;nh &#273;&#7841;o s&#7869; gi&#250;p ch&#250;ng ta t&#7841;o ra &#273;&#432;&#7907;c nhi&#7873;u &#7843;nh h&#432;&#7903;ng h&#417;n, do &#273;&#243; n&#226;ng cao &#273;&#432;&#7907;c gi&#225; tr&#7883; b&#7843;n th&#226;n h&#417;n.</p></li><li><p><strong>Ownership (kh&#7843; n&#259;ng t&#7921; ch&#7911;):  </strong>T&#244;i mu&#7889;n &#273;&#432;&#7907;c l&#224;m ch&#7911; nh&#7919;ng c&#244;ng vi&#7879;c c&#7911;a b&#7843;n th&#226;n, ho&#7863;c c&#243; c&#224;ng &#237;t s&#7921; ph&#7909; thu&#7897;c v&#224;o b&#234;n th&#7913; ba c&#224;ng t&#7889;t.</p></li></ul><h4>Culture (v&#259;n ho&#225; c&#244;ng ty)</h4><p>Trong m&#7909;c n&#224;y t&#244;i c&#243; ba y&#7871;u t&#7889; then ch&#7889;t:</p><ul><li><p><strong>Manager (s&#7871;p)</strong>: t&#244;i c&#243; c&#7843;m th&#7845;y tho&#7843;i m&#225;i v&#7899;i ng&#432;&#7901;i s&#7871;p hi&#7879;n t&#7841;i c&#7911;a m&#236;nh hay kh&#244;ng.</p></li><li><p><strong>Co-worker (&#273;&#7891;ng nghi&#7879;p): </strong>&#273;&#7891;ng nghi&#7879;p c&#243; vui v&#7867; ho&#224; &#273;&#7891;ng, c&#243; c&#249;ng chung ch&#237; h&#432;&#7899;ng hay kh&#244;ng.</p></li><li><p><strong>Job chores (vi&#7879;c nh&#224;m ch&#225;n): </strong>l&#224;m vi&#7879;c trong m&#7897;t t&#7893; ch&#7913;c s&#7869; kh&#244;ng th&#7875; tr&#225;nh kh&#7887;i vi&#7879;c ph&#7843;i d&#224;nh th&#7901;i gian cho nh&#7919;ng vi&#7879;c m&#224; t&#244;i c&#7843;m th&#7845;y l&#224; c&#243; ph&#7847;n nh&#224;m ch&#225;n nh&#432; h&#7885;p h&#224;nh, b&#225;o c&#225;o. T&#244;i c&#7847;n x&#225;c &#273;&#7883;nh xem m&#236;nh c&#243; ch&#7845;p nh&#7853;n &#273;&#432;&#7907;c nh&#7919;ng &#273;&#225;nh &#273;&#7893;i n&#224;y hay kh&#244;ng.</p></li></ul><h4>Work-life balance (c&#226;n b&#7857;ng cu&#7897;c s&#7889;ng - c&#244;ng vi&#7879;c)</h4><p>Cu&#7897;c s&#7889;ng c&#243; nhi&#7873;u kh&#237;a c&#7841;nh. V&#237; d&#7909; nh&#432; t&#244;i r&#7845;t th&#237;ch th&#7875; thao, hay th&#237;ch nghi&#234;n c&#7913;u r&#7891;i vi&#7871;t l&#225;ch. N&#234;n n&#7871;u c&#244;ng vi&#7879;c n&#224;o m&#224; d&#224;nh m&#7845;t th&#7901;i gian c&#225;c ho&#7841;t &#273;&#7897;ng &#273;&#243; c&#7911;a t&#244;i th&#236; &#273;&#243; s&#7869; l&#224;m m&#7897;t &#273;i&#7875;m tr&#7915; l&#7899;n. T&#244;i th&#7845;y c&#243; hai y&#7871;u t&#7889; ch&#237;nh trong m&#7909;c n&#224;y:</p><ul><li><p><strong>Overtime (l&#224;m ngo&#224;i gi&#7901;)</strong>: c&#244;ng vi&#7879;c c&#243; y&#234;u c&#7847;u ph&#7843;i l&#224;m ngo&#224;i gi&#7901; nhi&#7873;u hay kh&#244;ng.</p></li><li><p><strong>Location (v&#7883; tr&#237;): </strong>n&#7871;u l&#224; l&#224;m vi&#7879;c onsite, th&#236; t&#244;i c&#243; m&#7845;t nhi&#7873;u th&#7901;i gian &#273;&#7875; di chuy&#7875;n t&#7915; ch&#7895; t&#244;i &#7903; &#273;&#7871;n n&#417;i l&#224;m vi&#7879;c hay kh&#244;ng.</p></li></ul><h4>Feeling (c&#7843;m gi&#225;c)</h4><p>Cu&#7889;i c&#249;ng l&#224; y&#7871;u t&#7889; v&#244; c&#249;ng quan tr&#7885;ng: c&#7843;m gi&#225;c. Nh&#7919;ng l&#7847;n ngh&#7881; vi&#7879;c tr&#432;&#7899;c, t&#244;i h&#7847;u nh&#432; ch&#7881; d&#7921;a v&#224;o y&#7871;u t&#7889; n&#224;y. C&#7843;m gi&#225;c gi&#7889;ng nh&#432; m&#7849;u gi&#7845;y qu&#7923; t&#237;m, gi&#250;p t&#244;i nh&#7853;n ra r&#7857;ng m&#236;nh c&#243; &#273;ang ba &#8220;d&#417;&#8221; hay kh&#244;ng. &#244;i chia c&#7843;m gi&#225;c th&#224;nh ba y&#7871;u t&#7889; nh&#7887; h&#417;n nh&#432; sau:</p><ul><li><p><strong>Proud (t&#7921; h&#224;o)</strong>: t&#244;i c&#243; c&#7843;m th&#7845;y t&#7921; h&#224;o v&#7899;i nh&#7919;ng g&#236; m&#224; c&#244;ng ty &#273;ang l&#224;m hay kh&#244;ng.</p></li><li><p><strong>Confident (t&#7921; tin)</strong>: t&#244;i c&#243; c&#7843;m th&#7845;y t&#7921; tin n&#243;i v&#7899;i m&#7885;i ng&#432;&#7901;i r&#7857;ng t&#244;i &#273;ang l&#224;m &#7903; c&#244;ng ty n&#224;y hay kh&#244;ng. Ho&#7863;c t&#244;i c&#243; t&#7921; tin &#273;&#7875; gi&#7899;i thi&#7879;u m&#7897;t ng&#432;&#7901;i b&#7841;n c&#7911;a t&#244;i v&#224;o l&#224;m vi&#7879;c &#7903; c&#244;ng ty hi&#7879;n t&#7841;i hay kh&#244;ng.</p></li><li><p><strong>Instinct (tr&#7921;c gi&#225;c)</strong>: tr&#7921;c gi&#225;c l&#224; th&#7913; n&#7857;m trong v&#244; th&#7913;c, &#273;&#432;&#7907;c &#8220;l&#7853;p tr&#236;nh&#8221; c&#7843; tri&#7879;u n&#259;m. Do &#273;&#243;, tr&#7921;c gi&#225;c &#273;&#225;nh gi&#225; kh&#244;ng t&#7889;t, th&#236; r&#7845;t c&#243; th&#7875; l&#224; &#273;ang c&#243; v&#7845;n &#273;&#7873;.</p></li></ul><h2>B&#432;&#7899;c 2: &#272;&#225;nh tr&#7885;ng s&#7889; cho c&#225;c y&#7871;u t&#7889;</h2><p>Kh&#244;ng ph&#7843;i y&#7871;u t&#7889; n&#224;o c&#361;ng quan tr&#7885;ng nh&#432; nhau. L&#7845;y v&#237; d&#7909; ph&#7847;n growth opportunities, th&#7901;i &#273;i&#7875;m hi&#7879;n t&#7841;i t&#244;i quan tr&#7885;ng vi&#7879;c &#273;&#432;&#7907;c ph&#225;t tri&#7875;n ph&#7847;n functional skills h&#417;n so v&#7899;i vi&#7879;c ph&#225;t tri&#7875;n k&#297; n&#259;ng leadership.</p><p>Do &#273;&#243; t&#244;i c&#7847;n &#273;&#225;nh tr&#7885;ng s&#7889; d&#7921;a tr&#234;n &#273;&#7897; &#432;u ti&#234;n c&#7911;a t&#7915;ng y&#7871;u t&#7889;, sao cho khi c&#7897;ng t&#7893;ng c&#225;c tr&#7885;ng s&#7889;, ta &#273;&#432;&#7907;c 100%. B&#7841;n c&#243; th&#7875; m&#7903; <a href="https://docs.google.com/spreadsheets/d/1v7p6KSOk6TjtHrIa2V7dgnTIyLPiOCyFxXLdxlGK9Ug/edit?gid=1621200593#gid=1621200593">file Google Spreadsheet</a> ra xem cho d&#7877; h&#236;nh dung nh&#233;. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lY9k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1e4bb9-d1ee-454e-9284-7ee4dfe65746_3840x2596.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lY9k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1e4bb9-d1ee-454e-9284-7ee4dfe65746_3840x2596.png 424w, https://substackcdn.com/image/fetch/$s_!lY9k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1e4bb9-d1ee-454e-9284-7ee4dfe65746_3840x2596.png 848w, https://substackcdn.com/image/fetch/$s_!lY9k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1e4bb9-d1ee-454e-9284-7ee4dfe65746_3840x2596.png 1272w, https://substackcdn.com/image/fetch/$s_!lY9k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1e4bb9-d1ee-454e-9284-7ee4dfe65746_3840x2596.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lY9k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1e4bb9-d1ee-454e-9284-7ee4dfe65746_3840x2596.png" width="1456" height="984" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a1e4bb9-d1ee-454e-9284-7ee4dfe65746_3840x2596.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:984,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1286142,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lY9k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1e4bb9-d1ee-454e-9284-7ee4dfe65746_3840x2596.png 424w, https://substackcdn.com/image/fetch/$s_!lY9k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1e4bb9-d1ee-454e-9284-7ee4dfe65746_3840x2596.png 848w, https://substackcdn.com/image/fetch/$s_!lY9k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1e4bb9-d1ee-454e-9284-7ee4dfe65746_3840x2596.png 1272w, https://substackcdn.com/image/fetch/$s_!lY9k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1e4bb9-d1ee-454e-9284-7ee4dfe65746_3840x2596.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>B&#432;&#7899;c 3: &#272;&#7883;nh k&#236; &#273;&#225;nh gi&#225;, ch&#7881;nh s&#7917;a, v&#224; b&#7893; sung cho framework</h2><p>Gi&#7889;ng vi&#7879;c kh&#225;m s&#7913;c kho&#7867; h&#224;ng n&#259;m, t&#244;i c&#361;ng th&#7921;c hi&#7879;n &#273;&#225;nh gi&#225; &#273;&#7897; h&#7841;nh ph&#250;c c&#7911;a m&#236;nh v&#7899;i c&#244;ng vi&#7879;c hi&#7879;n t&#7841;i h&#224;ng qu&#253;. &#272;&#7891;ng th&#7901;i t&#244;i c&#361;ng ch&#7881;nh s&#7917;a l&#7841;i framework &#273;&#7875; th&#234;m / b&#7899;t y&#7871;u t&#7889;, c&#361;ng nh&#432; ch&#7881;nh l&#7841;i ph&#7847;n tr&#7885;ng s&#7889; sao cho ph&#249; h&#7907;p v&#7899;i nhu c&#7847;u c&#7911;a b&#7843;n th&#226;n.</p><p>M&#7895;i m&#7897;t y&#7871;u t&#7889; s&#7869; &#273;&#432;&#7907;c &#273;&#225;nh gi&#225; tr&#234;n thang &#273;i&#7875;m t&#7915; 0-10. &#272;i&#7875;m s&#7889; cu&#7889;i c&#249;ng s&#7869; l&#224; trung b&#236;nh c&#7911;a tr&#7885;ng s&#7889; nh&#226;n v&#7899;i &#273;i&#7875;m c&#7911;a t&#7915;ng y&#7871;u t&#7889;. K&#7871;t lu&#7853;n cu&#7889;i c&#249;ng &#273;&#432;&#7907;c &#273;&#432;a ra d&#7921;a tr&#234;n thang &#273;i&#7875;m b&#234;n d&#432;&#7899;i.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2qaq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000d29e0-6379-456e-8b8b-403a9edc38d0_1449x494.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2qaq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000d29e0-6379-456e-8b8b-403a9edc38d0_1449x494.png 424w, https://substackcdn.com/image/fetch/$s_!2qaq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000d29e0-6379-456e-8b8b-403a9edc38d0_1449x494.png 848w, https://substackcdn.com/image/fetch/$s_!2qaq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000d29e0-6379-456e-8b8b-403a9edc38d0_1449x494.png 1272w, https://substackcdn.com/image/fetch/$s_!2qaq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000d29e0-6379-456e-8b8b-403a9edc38d0_1449x494.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2qaq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000d29e0-6379-456e-8b8b-403a9edc38d0_1449x494.png" width="1449" height="494" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/000d29e0-6379-456e-8b8b-403a9edc38d0_1449x494.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:494,&quot;width&quot;:1449,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:109489,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2qaq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000d29e0-6379-456e-8b8b-403a9edc38d0_1449x494.png 424w, https://substackcdn.com/image/fetch/$s_!2qaq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000d29e0-6379-456e-8b8b-403a9edc38d0_1449x494.png 848w, https://substackcdn.com/image/fetch/$s_!2qaq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000d29e0-6379-456e-8b8b-403a9edc38d0_1449x494.png 1272w, https://substackcdn.com/image/fetch/$s_!2qaq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000d29e0-6379-456e-8b8b-403a9edc38d0_1449x494.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Thang &#273;i&#7875;m &#273;&#225;nh gi&#225;.</figcaption></figure></div><div><hr></div><h2>K&#7871;t lu&#7853;n</h2><p>Framework b&#234;n tr&#234;n l&#224; m&#7897;t c&#244;ng c&#7909; &#273;&#7855;c l&#7921;c gi&#250;p t&#244;i nh&#7853;n ra nh&#7919;ng v&#7845;n &#273;&#7873; m&#7897;t c&#225;ch s&#7899;m nh&#7845;t c&#243; th&#7875;, t&#7915; &#273;&#243; c&#243; nh&#7919;ng h&#224;nh &#273;&#7897;ng k&#7883;p th&#7901;i &#273;&#7875; kh&#7855;c ph&#7909;c. N&#7871;u sau khi &#273;&#225;nh gi&#225;, t&#244;i th&#7845;y &#273;i&#7875;m &#273;ang &#7903; v&#249;ng warning, t&#244;i c&#243; th&#7875; c&#243; nh&#7919;ng h&#224;nh &#273;&#7897;ng nh&#432; ng&#7891;i v&#7899;i manager &#273;&#7875; th&#7843;o lu&#7853;n v&#7873; ph&#432;&#417;ng h&#432;&#7899;ng. C&#242;n n&#7871;u t&#236;nh tr&#7841;ng dangerous di&#7877;n ra m&#7897;t th&#7901;i gian 1-2 qu&#253; li&#234;n ti&#7871;p m&#224; kh&#244;ng th&#7875; kh&#7855;c ph&#7909;c, c&#243; l&#7869; &#273;&#226;y s&#7869; l&#250;c quy&#7871;t &#273;&#7883;nh ngh&#7881; vi&#7879;c &#273;&#432;&#7907;c c&#226;n nh&#7855;c t&#7899;i.</p><div><hr></div><h3><strong>&#9996;&#65039; T&#7841;m bi&#7879;t</strong></h3><p>Ch&#7911; &#273;&#7873; c&#7911;a tu&#7847;n n&#224;y k&#7871;t th&#250;c &#7903; &#273;&#226;y. H&#7865;n g&#7863;p l&#7841;i &#273;&#7897;c gi&#7843; v&#224;o gi&#7901; n&#224;y tu&#7847;n sau. N&#7871;u b&#7841;n c&#243; b&#7845;t k&#7923; th&#7855;c m&#7855;c n&#224;o v&#7873; b&#224;i vi&#7871;t, h&#227;y &#273;&#7875; l&#7841;i b&#236;nh lu&#7853;n &#7903; b&#234;n d&#432;&#7899;i nh&#233;. B&#7841;n c&#361;ng c&#243; th&#7875; k&#7871;t n&#7889;i v&#7899;i t&#244;i th&#244;ng qua <a href="https://www.linkedin.com/in/khanh96le/">LinkedIn</a> ho&#7863;c <a href="https://twitter.com/khanh96le">Twitter</a>.</p>]]></content:encoded></item><item><title><![CDATA[My tool stack 2024 🧰]]></title><description><![CDATA[Nh&#7919;ng c&#244;ng c&#7909; gi&#250;p t&#244;i h&#7885;c t&#7853;p v&#224; l&#224;m vi&#7879;c m&#7895;i ng&#224;y]]></description><link>https://newsletter.lequockhanh.com/p/my-tool-stack-2024</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/my-tool-stack-2024</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Mon, 17 Jun 2024 04:00:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1Vjk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22eb6c02-25cf-4da0-86b3-ae8cc5febd9e_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Xin ch&#224;o &#273;&#7897;c gi&#7843; tr&#234;n trang Blog c&#7911;a Kh&#225;nh &#128075;</p><p>Trong b&#224;i vi&#7871;t tu&#7847;n n&#224;y, t&#244;i s&#7869; ti&#7871;t l&#7897; <strong>b&#7897; c&#244;ng c&#7909;</strong> (ch&#7911; y&#7871;u l&#224; c&#225;c ph&#7847;n m&#7873;m) m&#224; t&#244;i &#273;ang th&#432;&#7901;ng xuy&#234;n s&#7917; d&#7909;ng trong h&#7885;c t&#7853;p v&#224; l&#224;m vi&#7879;c.</p><p>C&#243; kho&#7843;ng <strong>20 c&#244;ng c&#7909; </strong>s&#7869; &#273;&#432;&#7907;c t&#244;i &#273;&#7873; c&#7853;p t&#7899;i, ch&#250;ng &#273;&#432;&#7907;c chia th&#224;nh 4 m&#7909;c nh&#432; sau:</p><ul><li><p><strong>&#128188; Personal Productivity - </strong>c&#225;c c&#244;ng c&#7909; gi&#250;p n&#226;ng cao hi&#7879;u qu&#7843; l&#224;m vi&#7879;c</p></li><li><p><strong>&#12080; Self-improvement </strong>- c&#225;c c&#244;ng c&#7909; gi&#250;p t&#244;i t&#7921; c&#7843;i thi&#7879;n b&#7843;n th&#226;n m&#7895;i ng&#224;y</p></li><li><p><strong>&#9997;&#65039; Content Creator -</strong> c&#225;c c&#244;ng c&#7909; gi&#250;p vi&#7879;c s&#225;ng t&#7841;o n&#7897;i dung d&#7877; d&#224;ng h&#417;n</p></li><li><p><strong>&#129489;&#8205;&#128187; Dev Tools - </strong>c&#225;c c&#244;ng c&#7909; kh&#244;ng th&#7875; thi&#7871;u c&#7911;a m&#7897;t k&#7929; s&#432; ph&#7847;n m&#7873;m</p></li></ul><p>N&#224;o ch&#250;ng ta c&#249;ng b&#7855;t &#273;&#7847;u&#128071;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1Vjk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22eb6c02-25cf-4da0-86b3-ae8cc5febd9e_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1Vjk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22eb6c02-25cf-4da0-86b3-ae8cc5febd9e_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!1Vjk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22eb6c02-25cf-4da0-86b3-ae8cc5febd9e_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!1Vjk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22eb6c02-25cf-4da0-86b3-ae8cc5febd9e_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!1Vjk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22eb6c02-25cf-4da0-86b3-ae8cc5febd9e_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1Vjk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22eb6c02-25cf-4da0-86b3-ae8cc5febd9e_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22eb6c02-25cf-4da0-86b3-ae8cc5febd9e_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43230,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1Vjk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22eb6c02-25cf-4da0-86b3-ae8cc5febd9e_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!1Vjk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22eb6c02-25cf-4da0-86b3-ae8cc5febd9e_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!1Vjk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22eb6c02-25cf-4da0-86b3-ae8cc5febd9e_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!1Vjk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22eb6c02-25cf-4da0-86b3-ae8cc5febd9e_1920x1080.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2><strong>&#9888;&#65039; &#272;&#7915;ng qu&#225; l&#7841;m d&#7909;ng c&#244;ng c&#7909;</strong></h2><p>Tr&#432;&#7899;c khi &#273;i v&#224;o ph&#7847;n ch&#237;nh c&#7911;a b&#224;i vi&#7871;t, t&#244;i xin &#273;&#432;&#7907;c n&#243;i m&#7897;t ch&#250;t v&#7873; quan &#273;i&#7875;m s&#7917; d&#7909;ng c&#244;ng c&#7909;. </p><blockquote><p><em>As to methods there may be a million and then some, but principles are few. The man who grasps principles can successfully select his own methods. The man who tries methods, ignoring principles, is sure to have trouble. - Ralph Waldo Emerson.</em></p></blockquote><p>C&#243; tri&#7871;t gia ng&#432;&#7901;i M&#7929; &#273;&#227; t&#7915;ng n&#243;i r&#7857;ng m&#7897;t <strong>Principle (nguy&#234;n t&#7855;c) </strong>th&#236; c&#243; th&#7875; c&#243; nhi&#7873;u <strong>Method (ph&#432;&#417;ng ph&#225;p)</strong>. Nay t&#244;i b&#7893; sung th&#234;m m&#7897;t v&#7871; n&#7919;a, l&#224; m&#7897;t Method (ph&#432;&#417;ng ph&#225;p) th&#236; c&#361;ng c&#243; th&#7875; c&#243; nhi&#7873;u <strong>Tool (c&#244;ng c&#7909;).</strong></p><p>Do &#273;&#243;, khi s&#7917; d&#7909;ng m&#7897;t c&#244;ng c&#7909;, &#273;i&#7873;u quan tr&#7885;ng kh&#244;ng ph&#7843;i l&#224; c&#244;ng c&#7909; &#273;&#243; x&#7845;u &#273;&#7865;p th&#7871; n&#224;o, &#273;&#432;&#7907;c ai g&#7907;i &#253;, nhi&#7873;u ng&#432;&#7901;i d&#249;ng kh&#244;ng, m&#224; quan tr&#7885;ng l&#224; c&#244;ng c&#7909; &#273;&#243; &#273;ang &#273;&#432;&#7907;c d&#249;ng trong ph&#432;&#417;ng ph&#225;p n&#224;o, gi&#7843;i quy&#7871;t v&#7845;n &#273;&#7873; g&#236; trong ph&#432;&#417;ng ph&#225;p &#273;&#243;.</p><p>N&#7871;u n&#7855;m &#273;&#432;&#7907;c &#273;i&#7873;u &#273;&#243;, ch&#250;ng ta s&#7869; tr&#225;nh &#273;&#432;&#7907;c vi&#7879;c d&#249;ng qu&#225; nhi&#7873;u c&#244;ng c&#7909; cho c&#249;ng  m&#7897;t vi&#7879;c, ho&#7863;c l&#224; ch&#7859;ng bi&#7871;t m&#7897;t c&#244;ng c&#7909; g&#236; &#273;&#7875; m&#224; d&#249;ng.</p><div><hr></div><h2><strong>&#128188; Personal Productivity</strong></h2><h4>&#127919; Qu&#7843;n l&#253; m&#7909;c ti&#234;u v&#7899;i <strong>Google Spreadsheet</strong></h4><p>S&#7889;ng c&#7847;n c&#243; m&#7909;c ti&#234;u. &#272;&#7845;y l&#224; <strong>nguy&#234;n t&#7855;c</strong>. C&#242;n v&#236; sao l&#7841;i nh&#432; th&#7871;, th&#236; m&#7901;i b&#7841;n &#273;&#7885;c nghe m&#7845;y video c&#7911;a anh Hi&#7871;u Ti Zi &#273;&#227; gi&#7843;i th&#237;ch r&#7845;t c&#7863;n k&#7869;:</p><ul><li><p>#2 <a href="https://youtu.be/WHY29TBLIKU?si=mOF8cn4LJMd_MKCY">Cu&#7897;c s&#7889;ng kh&#244;ng m&#7909;c ti&#234;u</a> </p></li><li><p>#103 <a href="https://youtu.be/AbrpOg-Tj_s?si=KM5KKaiUK_nX3391">C&#242;n m&#7909;c ti&#234;u, c&#242;n h&#7841;nh ph&#250;c</a></p></li><li><p>#148 <a href="https://youtu.be/szLWgM4tTG4?si=P33YB4FM_mH5hgCq">Ch&#7885;n m&#7909;c ti&#234;u &#273;&#7875; theo &#273;u&#7893;i </a></p></li></ul><p>Tuy nhi&#234;n, trong c&#225;c video &#273;&#243; anh Hi&#7871;u kh&#244;ng &#273;&#7873; c&#7853;p &#273;&#7871;n ph&#432;&#417;ng ph&#225;p thi&#7871;t l&#7853;p m&#7909;c ti&#234;u ra sao. V&#7899;i c&#225; nh&#226;n t&#244;i, ph&#432;&#417;ng ph&#225;p thi&#7871;t l&#7853;p m&#7909;c ti&#234;u m&#224; t&#244;i &#273;ang d&#249;ng l&#224; <a href="https://en.wikipedia.org/wiki/Objectives_and_key_results">OKRs</a>. </p><p>V&#224; c&#244;ng c&#7909; t&#244;i &#273;ang d&#249;ng &#273;&#7875; qu&#7843;n l&#253; l&#224; Google Spreadsheet. C&#225;ch n&#224;y c&#361;ng &#273;&#432;&#7907;c ch&#237;nh <a href="https://youtu.be/mJB83EZtAjc?t=12">Google &#225;p d&#7909;ng</a> cho vi&#7879;c thi&#7871;t l&#7853;p m&#7909;c ti&#234;u cho nh&#226;n vi&#234;n v&#224; &#273;&#7897;i nh&#243;m c&#7911;a h&#7885;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xRPs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcd9bdc-b337-47f4-922d-536607d2eb74_802x431.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xRPs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcd9bdc-b337-47f4-922d-536607d2eb74_802x431.png 424w, https://substackcdn.com/image/fetch/$s_!xRPs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcd9bdc-b337-47f4-922d-536607d2eb74_802x431.png 848w, https://substackcdn.com/image/fetch/$s_!xRPs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcd9bdc-b337-47f4-922d-536607d2eb74_802x431.png 1272w, https://substackcdn.com/image/fetch/$s_!xRPs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcd9bdc-b337-47f4-922d-536607d2eb74_802x431.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xRPs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcd9bdc-b337-47f4-922d-536607d2eb74_802x431.png" width="802" height="431" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4bcd9bdc-b337-47f4-922d-536607d2eb74_802x431.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:431,&quot;width&quot;:802,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:59254,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xRPs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcd9bdc-b337-47f4-922d-536607d2eb74_802x431.png 424w, https://substackcdn.com/image/fetch/$s_!xRPs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcd9bdc-b337-47f4-922d-536607d2eb74_802x431.png 848w, https://substackcdn.com/image/fetch/$s_!xRPs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcd9bdc-b337-47f4-922d-536607d2eb74_802x431.png 1272w, https://substackcdn.com/image/fetch/$s_!xRPs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcd9bdc-b337-47f4-922d-536607d2eb74_802x431.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">H&#236;nh 1: M&#7897;t v&#237; d&#7909; v&#7873; c&#225;ch thi&#7871;t l&#7853;p m&#7909;c ti&#234;u s&#7917; d&#7909;ng OKRs. Objective - c&#7847;n ph&#7843;i &#273;&#7911; tham v&#7885;ng. Key Result th&#236; c&#7847;n ph&#7843;i r&#245; r&#224;ng, &#273;o &#273;&#7841;c &#273;&#432;&#7907;c, h&#224;nh &#273;&#7897;ng &#273;&#432;&#7907;c, v&#224; c&#243; th&#7901;i gian c&#7909; th&#7875;.</figcaption></figure></div><h4>&#128203; Qu&#7843;n l&#253; c&#244;ng vi&#7879;c v&#7899;i <strong>Todoist &amp; Google Calendar</strong></h4><p>Th&#432;&#7901;ng th&#236; m&#7897;t ng&#224;y s&#7869; c&#243; 2 lo&#7841;i c&#244;ng vi&#7879;c.</p><p>Lo&#7841;i th&#7913; nh&#7845;t l&#224; c&#243; c&#244;ng vi&#7879;c <strong>c&#243; time boundaries</strong>, v&#237; d&#7909;:</p><ul><li><p>7:00 - 9:00 - L&#234;n l&#7899;p t&#7853;p JiuJitsu</p></li><li><p>10:00 - 10:15 - H&#7885;p m&#7863;t &#273;&#7847;u tu&#7847;n</p></li><li><p>16:30 - 17:30 - H&#7885;p c&#7853;p nh&#7853;t ti&#7871;n &#273;&#7897; d&#7921; &#225;n X</p></li></ul><p>Lo&#7841;i th&#7913; hai l&#224; c&#244;ng vi&#7879;c <strong>kh&#244;ng b&#7883; gi&#7899;i h&#7841;n b&#7903;i time boundaries</strong>, mi&#7877;n l&#224; trong ng&#224;y h&#244;m &#273;&#243; ho&#224;n th&#224;nh l&#224; &#273;&#432;&#7907;c, v&#237; d&#7909;:</p><ul><li><p>C&#224;i &#273;&#7863;t Sentry cho ph&#7847;n code backend</p></li><li><p>&#272;i thay d&#7847;u nh&#7899;t xe m&#225;y &#273;&#7883;nh k&#236;</p></li><li><p>Ch&#250;c m&#7915;ng sinh nh&#7853;t Jon</p></li></ul><p>&#128073; &#272;&#7889;i v&#7899;i lo&#7841;i th&#7913; nh&#7845;t, t&#244;i d&#249;ng <strong>Google Calendar</strong>. C&#242;n v&#7899;i lo&#7841;i th&#7913; hai, t&#244;i d&#249;ng <strong>Todoist</strong>.</p><p>Ngo&#224;i ra, t&#244;i c&#242;n d&#249;ng Todoist cho vi&#7879;c capture th&#244;ng tin. B&#7845;t c&#7913; khi n&#224;o trong &#273;&#7847;u t&#244;i c&#243; m&#7897;t &#253; t&#432;&#7903;ng g&#236; &#273;&#7845;y, hay khi t&#244;i c&#243; m&#7897;t task n&#224;o &#273;&#7845;y, t&#244;i s&#7869; ghi ngay v&#224;o h&#242;m th&#432; Inbox c&#7911;a Todoist. Todoist ch&#237;nh l&#224; c&#244;ng c&#7909; &#273;&#7875; t&#244;i hi&#7879;n th&#7921;c ho&#225; b&#432;&#7899;c <strong>Capture</strong> trong c&#7843; hai ph&#432;&#417;ng ph&#225;p <strong><a href="https://en.wikipedia.org/wiki/Getting_Things_Done">Getting Things Done</a></strong> v&#224; <strong><a href="https://www.buildingasecondbrain.com/">Second Brain</a></strong>.</p><h4>&#9883;&#65039; C&#225;c ph&#7847;n m&#7873;m kh&#225;c</h4><ul><li><p><strong><a href="https://www.lastpass.com/">LastPass</a> - </strong>&#272;&#226;y l&#224; ph&#7847;n m&#7873;m qu&#7843;n l&#253; m&#7853;t kh&#7849;u v&#224; c&#225;c th&#244;ng tin c&#225; nh&#226;n t&#244;i &#273;&#227; d&#249;ng &#273;&#432;&#7907;c kho&#7843;ng h&#417;n 3 n&#259;m nay. N&#7871;u b&#7841;n &#273;&#7885;c ch&#432;a d&#249;ng b&#7845;t k&#7923; m&#7897;t ph&#7847;n m&#7873;m qu&#7843;n l&#253; m&#7853;t kh&#7849;u n&#224;o, th&#236; t&#244;i khuy&#234;n ch&#226;n th&#224;nh b&#226;y gi&#7901; l&#224; l&#250;c d&#249;ng v&#7851;n ch&#432;a mu&#7897;n.</p></li><li><p><strong><a href="https://apps.apple.com/de/app/clipboard-manager-pasty/id1544620654?l=en-GB&amp;mt=12">Pasty</a> </strong>- M&#7897;t trong nh&#7919;ng t&#225;c v&#7909; m&#224; t&#244;i d&#249;ng nhi&#7873;u nh&#7845;t khi l&#224;m vi&#7879;c, &#273;&#7845;y l&#224; copy v&#224; paste. Tuy nhi&#234;n, v&#7899;i t&#237;nh n&#259;ng c&#243; s&#7861;n c&#7911;a h&#7847;u h&#7871;t c&#225;c m&#225;y t&#237;nh, t&#244;i ch&#7881; c&#243; th&#7875; copy &#273;&#432;&#7907;c m&#7897;t n&#7897;i dung duy nh&#7845;t t&#7841;i m&#7897;t th&#7901;i &#273;i&#7875;m. Pasty gi&#250;p t&#244;i c&#243; th&#7875; copy nhi&#7873;u n&#7897;i dung c&#249;ng m&#7897;t l&#250;c.</p></li><li><p><strong><a href="https://matthewpalmer.net/rocket/">Rocket</a> - </strong>Kh&#244;ng bi&#7871;t b&#7841;n &#273;ang t&#236;m Emoij tr&#234;n m&#225;y Mac ki&#7875;u g&#236;? T&#244;i th&#236; c&#243; hai c&#225;ch, ho&#7863;c l&#224; d&#249;ng t&#237;nh n&#259;ng c&#243; s&#7861;n c&#7911;a m&#225;y Mac (t&#7893; h&#7907;p ph&#237;m Ctrl + Alt + Space), ho&#7863;c d&#249;ng ph&#7847;n m&#7873;m Rocket.</p></li><li><p><strong><a href="https://github.com/MonitorControl/MonitorControl">MonitorControl</a> (ch&#7881; c&#243; tr&#234;n MacOS) - </strong>N&#7871;u ai &#273;ang d&#249;ng m&#224;n h&#236;nh r&#7901;i, c&#243; l&#7869; s&#7869; g&#7863;p v&#7845;n &#273;&#7873; trong chuy&#7879;n ch&#7881;nh &#225;nh s&#225;ng. V&#7899;i MonitorControl, vi&#7879;c ch&#7881;nh &#225;nh s&#225;ng tr&#234;n c&#225;c monitor tr&#7903; n&#234;n si&#234;u d&#7877; d&#224;ng.</p></li></ul><h2><strong>&#12080; Self-improvement</strong></h2><h4>&#128214; &#272;&#7885;c s&#225;ch v&#7899;i <strong>Kindle</strong> v&#224; <strong>Raindrop.io</strong></h4><ul><li><p><strong><a href="https://apps.apple.com/us/app/amazon-kindle/id302584613">Kindle</a></strong> - T&#244;i d&#249;ng ph&#7847;n m&#7873;m Kindle &#273;&#7875; &#273;&#7885;c s&#225;ch. T&#244;i c&#224;i Kindle tr&#234;n t&#7845;t c&#7843; c&#225;c thi&#7871;t b&#7883;, &#273;&#7875; b&#7845;t c&#7913; khi n&#224;o, b&#7845;t c&#7913; &#273;&#226;u t&#244;i c&#361;ng c&#243; th&#7875; ti&#7871;p t&#7909;c &#273;&#7885;c &#273;&#432;&#7907;c nh&#7919;ng ph&#7847;n m&#224; t&#244;i &#273;ang &#273;&#7885;c d&#7903;. </p></li><li><p><strong><a href="https://www.goodreads.com/">Goodreads.com</a></strong> - Kindle c&#7911;a Amazon, Goodreads c&#361;ng v&#7853;y. &#272;&#226;y l&#224; n&#417;i &#273;&#7875; vi&#7871;t v&#224; xem review v&#7873; c&#225;c cu&#7889;n s&#225;ch. N&#7871;u b&#7841;n c&#361;ng &#273;ang d&#249;ng GoodReads, th&#236; c&#243; th&#7875; connect v&#7899;i t&#244;i <a href="https://www.goodreads.com/user/show/57596036-l-kh-nh">&#7903; &#273;&#226;y</a> nh&#233;.</p></li><li><p><strong><a href="https://raindrop.io/">Raindrop.io</a></strong> - Khi l&#432;&#7899;i web, &#273;&#244;i khi t&#244;i s&#7869; g&#7863;p m&#7897;t &#253; r&#7845;t t&#226;m &#273;&#7855;c m&#224; t&#244;i mu&#7889;n l&#432;u l&#7841;i. L&#250;c n&#224;y t&#244;i c&#243; 2 l&#7921;a ch&#7885;n. L&#7921;a ch&#7885;n th&#7913; nh&#7845;t, l&#224; t&#244;i m&#7903; Todoist ra v&#224; save v&#224;o h&#242;m th&#432; inbox. C&#225;ch n&#224;y l&#250;c tr&#432;&#7899;c t&#244;i v&#7851;n d&#249;ng. Tuy nhi&#234;n, d&#7841;o g&#7847;n &#273;&#226;y t&#244;i s&#7917; d&#7909;ng th&#234;m m&#7897;t c&#244;ng c&#7909; n&#7919;a, gi&#250;p cho vi&#7879;c l&#432;u highlight d&#7877; h&#417;n nhi&#7873;u, c&#244;ng c&#7909; &#7845;y c&#243; t&#234;n l&#224; raindrop.io. V&#7899;i c&#244;ng c&#7909; n&#224;y, t&#244;i ch&#7881; c&#7847;n b&#244;i highlight &#273;o&#7841;n text, click chu&#7897;t ph&#7843;i r&#7891;i b&#7845;m l&#432;u l&#7841;i l&#224; xong. C&#225;c thao t&#225;c ho&#224;n to&#224;n &#7903; trong tr&#236;nh duy&#7879;t, kh&#244;ng ph&#7843;i m&#7903; app b&#234;n ngo&#224;i.</p></li></ul><h4>&#128221; Ghi nh&#7899; d&#224;i h&#7841;n v&#7899;i Anki</h4><p>Anki l&#224; ph&#7847;n m&#7873;m m&#227; ngu&#7891;n m&#7903;, &#273;&#432;&#7907;c ph&#225;t tri&#7875;n d&#7921;a tr&#234;n ph&#432;&#417;ng ph&#225;p h&#7885;c l&#7863;p l&#7841;i Space Repetition.</p><p>&#272;i&#7875;m v&#432;&#7907;t tr&#7897;i c&#7911;a Anki so v&#7899;i c&#225;c tool kh&#225;c l&#224; kh&#7843; n&#259;ng tu&#7923; ch&#7881;nh g&#7847;n nh&#432; kh&#244;ng gi&#7899;i h&#7841;n. C&#243; h&#7859;n m&#7897;t danh s&#225;ch <a href="https://github.com/tianshanghong/awesome-anki">Anki Awesome</a> ch&#7913;a link &#273;&#7871;n c&#225;c plugins, c&#225;c decks c&#243; s&#7861;n m&#224; b&#7841;n c&#243; th&#7875; s&#7917; d&#7909;ng &#273;&#432;&#7907;c lu&#244;n.</p><p>M&#7897;t s&#7889; plugin m&#224; t&#244;i &#273;ang d&#249;ng:</p><ul><li><p><strong><a href="https://git.foosoft.net/alex/anki-connect">Anki Connect</a></strong> - cung c&#7845;p API cho ph&#233;p t&#432;&#417;ng t&#225;c v&#7899;i d&#7919; li&#7879;u.</p></li><li><p><strong><a href="https://github.com/kerrickstaley/genanki">Genanki</a></strong> - th&#432; vi&#7879;n vi&#7871;t b&#7857;ng Python cho ph&#233;p t&#7841;o Anki decks b&#7857;ng l&#7853;p tr&#236;nh.</p></li></ul><h4>&#129504; S&#417; &#273;&#7891; t&#432; duy v&#7899;i Mindomo</h4><p>T&#244;i c&#242;n nh&#7899; l&#7847;n &#273;&#7847;u bi&#7871;t &#273;&#7871;n s&#417; &#273;&#7891; t&#432; duy l&#224; t&#7915; h&#7891;i c&#242;n h&#7885;c c&#7845;p 2. Khi &#7845;y, anh trai t&#244;i - l&#250;c b&#7845;y gi&#7901; &#273;ang h&#7885;c cao &#273;&#7859;ng tr&#234;n th&#224;nh ph&#7889; - mang v&#7873; cho t&#244;i quy&#7875;n s&#225;ch t&#234;n l&#224; &#8220;T&#244;i t&#224;i gi&#7887;i b&#7841;n c&#361;ng th&#7871;&#8221; &#129315;. </p><p>Qu&#234; t&#244;i h&#7891;i &#7845;y kh&#244;ng c&#243; internet, n&#234;n nh&#7919;ng g&#236; &#273;&#432;&#7907;c mang v&#7873; t&#7915; th&#7871; gi&#7899;i th&#224;nh th&#7883; th&#7921;c s&#7921; l&#224;m t&#244;i c&#7843;m th&#7845;y nh&#432; &#8220;b&#7915;ng n&#7855;ng h&#7841;&#8221;. M&#7863;c d&#249;, th&#7901;i gian qua &#273;i, nh&#7853;n th&#7913;c v&#7873; cu&#7889;n s&#225;ch c&#361;ng kh&#225;c &#273;i, nh&#432;ng &#273;i&#7873;u ch&#432;a bao gi&#7901; thay &#273;&#7893;i trong t&#244;i &#273;&#7845;y l&#224; &#7845;n t&#432;&#7907;ng v&#7873; vi&#7879;c s&#7917; d&#7909;ng s&#417; &#273;&#7891; t&#432; duy.</p><p><strong><a href="https://www.mindomo.com/">Mindomo</a></strong> c&#243; c&#7843; phi&#234;n b&#7843;n web d&#249;ng online, v&#224; app d&#249;ng &#273;&#432;&#7907;c c&#7843; khi offline. Ngo&#224;i ra, c&#242;n c&#243; m&#7897;t tool n&#7919;a t&#432;&#417;ng t&#7921; c&#243; t&#234;n <strong><a href="https://xmind.ai/">XMind</a></strong>, b&#7841;n &#273;&#7885;c c&#361;ng c&#243; th&#7875; tham kh&#7843;o.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ag_o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee3e231-b219-4a85-a069-7e74eeec7e75_1342x701.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ag_o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee3e231-b219-4a85-a069-7e74eeec7e75_1342x701.png 424w, https://substackcdn.com/image/fetch/$s_!Ag_o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee3e231-b219-4a85-a069-7e74eeec7e75_1342x701.png 848w, https://substackcdn.com/image/fetch/$s_!Ag_o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee3e231-b219-4a85-a069-7e74eeec7e75_1342x701.png 1272w, https://substackcdn.com/image/fetch/$s_!Ag_o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee3e231-b219-4a85-a069-7e74eeec7e75_1342x701.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ag_o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee3e231-b219-4a85-a069-7e74eeec7e75_1342x701.png" width="1342" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ee3e231-b219-4a85-a069-7e74eeec7e75_1342x701.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1342,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:97613,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ag_o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee3e231-b219-4a85-a069-7e74eeec7e75_1342x701.png 424w, https://substackcdn.com/image/fetch/$s_!Ag_o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee3e231-b219-4a85-a069-7e74eeec7e75_1342x701.png 848w, https://substackcdn.com/image/fetch/$s_!Ag_o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee3e231-b219-4a85-a069-7e74eeec7e75_1342x701.png 1272w, https://substackcdn.com/image/fetch/$s_!Ag_o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee3e231-b219-4a85-a069-7e74eeec7e75_1342x701.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">H&#236;nh 2: Nh&#7919;ng lo&#7841;i ki&#7871;n th&#7913;c c&#243; t&#237;nh ch&#7845;t h&#7879; th&#7889;ng l&#224; ph&#249; h&#7907;p nh&#7845;t &#273;&#7875; d&#249;ng v&#7899;i s&#417; &#273;&#7891; t&#432; duy.</figcaption></figure></div><p>~~</p><p>1 ph&#250;t l&#7841;c &#273;&#7873;: Kh&#244;ng bi&#7871;t b&#7841;n c&#243; &#273;&#7875; &#253; &#273;&#7871;n c&#225;i emoij (&#12080;) t&#244;i ch&#7885;n cho ph&#7847;n self-improvement n&#224;y kh&#244;ng? N&#243; l&#224; m&#7897;t ch&#7919; trong ti&#7871;ng Trung, b&#237;nh &#226;m l&#224; (j&#464;), &#273;&#7885;c l&#224; K&#7927;, ti&#7871;ng vi&#7879;t ngh&#297;a l&#224; &#8220;s&#7903; h&#7919;u&#8221;, ti&#7871;ng anh l&#224; &#8220;self&#8221;. M&#7845;y t&#7915; nh&#432; t&#7921; k&#7927;, &#237;ch k&#7927; &#273;&#7873;u li&#234;n quan &#273;&#7871;n ch&#7919; n&#224;y. Ngo&#224;i ra, K&#7927; c&#361;ng l&#224; m&#7897;t trong 10 thi&#234;n can. N&#234;n ai c&#243; n&#259;m sinh k&#7871;t th&#250;c b&#7857;ng s&#7889; 9 nh&#432; l&#224; 1999, 1989 th&#236; n&#259;m sinh &#226;m l&#7883;ch c&#361;ng c&#243; ch&#7919; K&#7927;. Tu&#7847;n tr&#432;&#7899;c t&#244;i c&#243; vi&#7871;t m&#7897;t b&#224;i k&#7875; v&#7873; tr&#7843;i nghi&#7879;m c&#7911;a t&#244;i v&#7899;i qu&#225; tr&#236;nh h&#7885;c ti&#7871;ng Trung, c&#361;ng th&#250; v&#7883; l&#7855;m &#273;&#7845;y!</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;86f47ab7-87c0-4627-b307-21e9eab11a77&quot;,&quot;caption&quot;:&quot;D&#432;&#7899;i &#273;&#226;y l&#224; m&#7897;t v&#224;i &#273;i&#7873;u t&#244;i &#273;&#250;c k&#7871;t ra t&#7915; qu&#225; tr&#236;nh 6 th&#225;ng h&#7885;c ti&#7871;ng Trung. Ngu&#7891;n g&#7889;c ti&#7871;ng Vi&#7879;t ph&#7847;n l&#7899;n &#273;&#7871;n t&#7915; ti&#7871;ng Trung N&#432;&#7899;c Vi&#7879;t m&#236;nh n&#7857;m gi&#7919;a hai n&#7873;n v&#259;n ho&#225; l&#7899;n nh&#7845;t ch&#226;u &#193;, l&#224; Trung v&#224; &#7844;n. Do &#273;&#243;, v&#259;n ho&#225; c&#361;ng b&#7883; &#7843;nh h&#432;&#7903;ng nhi&#7873;u b&#7903;i 2 n&#7873;n v&#259;n ho&#225; tr&#234;n.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Ti&#7871;ng Trung v&#224; tr&#7843;i nghi&#7879;m&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:34992421,&quot;name&quot;:&quot;Khanh Le&quot;,&quot;bio&quot;:&quot;Vi&#7871;t v&#7873; C&#244;ng Ngh&#7879;, Th&#7875; Thao, v&#224; &#272;&#7901;i S&#7889;ng&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/418aa81d-4b8d-4704-bece-41c3ba3a3a06_1002x1000.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-06-10T04:01:10.163Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/702a74e1-1a53-4ae6-a8dd-334dbe6c6e20_1029x565.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://newsletter.lequockhanh.com/p/tieng-trung-va-trai-nghiem&quot;,&quot;section_name&quot;:&quot;&#129300; Suy Ng&#7851;m&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:145442707,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:7,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Blog c&#7911;a Kh&#225;nh&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0318ebe5-ab77-42c4-874c-aa9b62d1cb89_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><h2><strong>&#9997;&#65039; Content Creator</strong></h2><p>K&#7875; t&#7915; khi vi&#7871;t b&#224;i &#273;&#7873;u &#273;&#7863;n h&#224;ng tu&#7847;n, t&#244;i &#273;&#227; h&#7885;c &#273;&#432;&#7907;c r&#7845;t nhi&#7873;u k&#297; n&#259;ng m&#7899;i, ph&#432;&#417;ng ph&#225;p m&#7899;i, c&#249;ng v&#7899;i &#273;&#243; l&#224; r&#7845;t nhi&#7873;u c&#244;ng c&#7909; m&#7899;i. D&#432;&#7899;i &#273;&#226;y l&#224; m&#7897;t s&#7889; c&#244;ng c&#7909; m&#224; t&#244;i th&#432;&#7901;ng xuy&#234;n s&#7917; d&#7909;ng:</p><ul><li><p><strong><a href="https://www.canva.com/">Canva.com</a></strong> - L&#224;m thumbnail, l&#224;m &#7843;nh &#273;&#7897;ng gif, l&#224;m hi&#7879;u &#7913;ng animation t&#7845;t c&#7843; t&#244;i &#273;&#7873;u l&#224;m h&#7871;t tr&#234;n Canva. T&#244;i &#273;&#7863;c bi&#7879;t th&#237;ch t&#237;nh n&#259;ng t&#7841;o hi&#7879;u &#7913;ng Morph. B&#7841;n c&#243; th&#7875; xem <a href="https://www.youtube.com/shorts/SQWa5KR2KiY">ch&#7883; n&#224;y h&#432;&#7899;ng d&#7851;n</a>. Ho&#7863;c l&#224; xem <a href="https://youtu.be/dayhGLWqOG8?t=51">t&#244;i thuy&#7871;t tr&#236;nh v&#7873; l&#7883;ch s&#7917; m&#225;y t&#237;nh</a>, c&#361;ng d&#249;ng Canva &#273;&#7875; l&#224;m slide.</p></li><li><p><strong><a href="https://substack.com/">Substack.com</a> </strong>- D&#297; nhi&#234;n r&#7891;i, kh&#244;ng th&#7875; kh&#244;ng nh&#7855;c &#273;&#7871;n Substack. Ngo&#224;i t&#237;nh n&#259;ng ch&#237;nh l&#224; &#273;&#7875; vi&#7871;t, Substack c&#242;n c&#243; nhi&#7873;u t&#237;nh n&#259;ng kh&#225;c nh&#432; ch&#232;n Voice Over, hay l&#224;m Podcast. Trong t&#432;&#417;ng lai, t&#244;i s&#7869; &#273;&#432;a d&#7847;n nh&#7919;ng t&#237;nh n&#259;ng &#273;&#243; v&#224;o trong blog c&#7911;a m&#236;nh.</p></li><li><p><strong><a href="https://www.namecheap.com/">Namecheap.com</a> </strong>- T&#244;i mua t&#234;n mi&#7873;n tr&#234;n Namecheap v&#236; n&#243; r&#7867;. T&#234;n mi&#7873;n lequockhanh.com c&#7911;a t&#244;i c&#361;ng &#273;&#432;&#7907;c mua &#7903; tr&#234;n n&#224;y.</p></li><li><p><strong><a href="https://pages.cloudflare.com/">CloudFlare Page</a></strong> - N&#7871;u b&#7841;n truy c&#7853;p v&#224;o t&#234;n mi&#7873;n <a href="https://lequockhanh.com">lequockhanh.com</a> c&#7911;a t&#244;i, b&#7841;n s&#7869; th&#7845;y m&#7897;t c&#225;i website x&#7845;u ho&#7855;c m&#224; t&#244;i t&#7921; code thu&#7847;n b&#7857;ng HTML. Nh&#7919;ng trang web nh&#432; th&#7871; g&#7885;i l&#224; web t&#297;nh - static web. C&#243; r&#7845;t nhi&#7873;u d&#7883;ch v&#7909; h&#7895; tr&#7907; vi&#7879;c d&#7921;ng l&#234;n m&#7897;t trang web t&#297;nh ho&#224;n to&#224;n mi&#7877;n ph&#237; nh&#432; l&#224; Github Pages, Netlify, Vercel, vv. C&#242;n t&#244;i th&#236; l&#7921;a ch&#7885;n CloudFlare Pages, do t&#244;i c&#242;n d&#249;ng nhi&#7873;u d&#7883;ch v&#7909; kh&#225;c c&#7911;a CloudFlare.</p></li><li><p><strong><a href="https://obsproject.com/download">OBS</a></strong> - Open Boardcaster Software l&#224; m&#7897;t ph&#7847;n m&#7873;m m&#227; ngu&#7891;n m&#7903; gi&#250;p cho vi&#7879;c live stream r&#7845;t d&#7877; d&#224;ng. T&#244;i d&#249;ng OBS &#273;&#7875; ph&#225;t s&#243;ng tr&#7921;c ti&#7871;p l&#234;n Youtube.</p></li></ul><h2>&#129489;&#8205;&#128187; Dev Tools</h2><p>Cu&#7889;i c&#249;ng kh&#244;ng th&#7875; thi&#7871;u l&#224; nh&#7919;ng c&#244;ng c&#7909; ph&#7909;c v&#7909; cho c&#244;ng vi&#7879;c ch&#237;nh c&#7911;a t&#244;i - m&#7897;t k&#7929; s&#432; ph&#7847;n m&#7873;m.</p><ul><li><p><strong><a href="https://code.visualstudio.com/">VSCode</a></strong> - Ph&#7847;n l&#7899;n th&#7901;i gian l&#224; t&#244;i l&#224;m vi&#7879;c tr&#234;n VSCode. Kh&#244;ng nh&#7919;ng mi&#7877;n ph&#237;, VSCode c&#242;n c&#243; b&#7897; th&#432; vi&#7879;n plugin c&#7921;c k&#7923; phong ph&#250;. D&#7841;o g&#7847;n &#273;&#226;y, t&#244;i c&#243; s&#7917; d&#7909;ng 2 plugin l&#224; <a href="https://code.visualstudio.com/docs/remote/ssh">SSH Remote</a>, v&#224; <a href="https://code.visualstudio.com/docs/devcontainers/containers">Dev Container</a>. Hai plugin n&#224;y &#273;&#227; ho&#224;n to&#224;n thay &#273;&#7893;i c&#225;ch t&#244;i l&#7853;p tr&#236;nh b&#7845;y l&#226;u nay.</p></li><li><p><strong><a href="https://github.com/tmux/tmux/wiki">Tmux</a> - </strong>C&#244;ng c&#7909; d&#224;nh nhi&#7873;u th&#7901;i gian th&#7913; hai sau IDE, &#273;&#243; l&#224; terminal. V&#224; ph&#7847;n m&#7873;m t&#244;i &#273;ang s&#7917; d&#7909;ng &#273;&#7875; qu&#7843;n l&#253; terminal &#273;&#243; l&#224; Tmux.</p></li><li><p><strong><a href="https://one.one.one.one/">Cloudflare 1.1.1.1</a></strong> - Nh&#432; t&#244;i &#273;&#227; &#273;&#7873; c&#7853;p &#7903; ph&#7847;n tr&#432;&#7899;c, t&#244;i d&#249;ng kh&#225; nhi&#7873;u s&#7843;n ph&#7849;m c&#7911;a Cloudflare. Cloudflare 1.1.1.1 gi&#250;p bypass vi&#7879;c b&#7883; ch&#7863;n DNS queries t&#7915; c&#225;c nh&#224; m&#7841;ng.</p></li><li><p><strong><a href="https://developers.cloudflare.com/cloudflare-one/">Cloudflare ZeroTrust</a> </strong>- T&#244;i th&#432;&#7901;ng d&#249;ng <a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/get-started/">t&#237;nh n&#259;ng m&#7903; Tunnel</a> c&#7911;a Cloudflare ZeroTrust. Khi &#7845;y t&#244;i c&#243; th&#7875; &#273;&#432;a m&#7897;t service ch&#7841;y d&#432;&#7899;i m&#225;y local c&#243; th&#7875; &#273;&#432;&#7907;c access tr&#234;n internet, nh&#432;ng v&#7851;n &#273;&#7843;m t&#237;nh b&#7843;o m&#7853;t nh&#7901; l&#7899;p x&#225;c th&#7921;c c&#7911;a CloudFlare.</p></li><li><p><strong><a href="https://k8slens.dev/">Lens</a> - </strong>N&#7871;u ai l&#224;m vi&#7879;c nhi&#7873;u v&#7899;i Kubernetes ch&#7855;c h&#7859;n kh&#244;ng c&#242;n xa l&#7841; g&#236; v&#7899;i ph&#7847;n m&#7873;m n&#224;y. Lens cung c&#7845;p giao di&#7879;n tr&#7921;c quan &#273;&#7875; k&#7871;t n&#7889;i &#273;&#7871;n c&#225;c K8S cluster.</p></li></ul><div><hr></div><h3>&#128226; Weekly shoutouts</h3><p>D&#432;&#7899;i &#273;&#226;y l&#224; m&#7897;t v&#224;i b&#224;i vi&#7871;t th&#250; v&#7883; m&#224; t&#244;i &#273;&#227; &#273;&#7885;c &#273;&#432;&#7907;c trong tu&#7847;n v&#7915;a r&#7891;i.</p><ul><li><p><a href="https://tuanmon.com/quan-ly-cong-viec-voi-getting-things-done/">Qu&#7843;n l&#253; c&#244;ng vi&#7879;c v&#7899;i ph&#432;&#417;ng ph&#225;p Gettings Thing Done</a> by Tuanmon on <a href="https://tuanmon.com/">Tuanmon.com</a> - B&#224;i vi&#7871;t c&#243; t&#237;nh th&#7921;c t&#7871; cao trong qu&#225; tr&#236;nh &#225;p d&#7909;ng ph&#432;&#417;ng ph&#225;p Gettings Thing Done trong qu&#7843;n l&#253; c&#244;ng vi&#7879;c.</p></li><li><p><a href="https://miniadult.substack.com/p/cach-di-tich-hoa-lo-lam-truyen-thong">C&#225;ch Di t&#237;ch Nh&#224; t&#249; Ho&#7843; L&#242; l&#224;m truy&#7873;n th&#244;ng</a> by <a href="https://substack.com/@miniadult">Thanh-Huyen Pham</a> on <a href="https://miniadult.substack.com/">minj 4dult</a> - T&#244;i r&#7845;t th&#237;ch nh&#7919;ng h&#236;nh v&#7869; trong b&#224;i vi&#7871;t n&#224;y.</p></li></ul><div><hr></div><h3><strong>&#9996;&#65039; T&#7841;m bi&#7879;t</strong></h3><p>Ch&#7911; &#273;&#7873; c&#7911;a tu&#7847;n n&#224;y k&#7871;t th&#250;c &#7903; &#273;&#226;y. H&#7865;n g&#7863;p l&#7841;i &#273;&#7897;c gi&#7843; v&#224;o gi&#7901; n&#224;y tu&#7847;n sau. N&#7871;u b&#7841;n c&#243; b&#7845;t k&#7923; th&#7855;c m&#7855;c n&#224;o v&#7873; b&#224;i vi&#7871;t, h&#227;y &#273;&#7875; l&#7841;i b&#236;nh lu&#7853;n &#7903; b&#234;n d&#432;&#7899;i nh&#233;. B&#7841;n c&#361;ng c&#243; th&#7875; k&#7871;t n&#7889;i v&#7899;i t&#244;i th&#244;ng qua <a href="https://www.linkedin.com/in/khanh96le/">LinkedIn</a> ho&#7863;c <a href="https://twitter.com/khanh96le">Twitter</a>.</p>]]></content:encoded></item><item><title><![CDATA[Cải thiện năng suất với workflow automation & robotic process automation]]></title><description><![CDATA[C&#225;ch doanh nghi&#7879;p t&#7921; &#273;&#7897;ng ho&#225; c&#225;c quy tr&#236;nh nghi&#7879;p v&#7909;.]]></description><link>https://newsletter.lequockhanh.com/p/cai-thien-nang-suat-voi-workflow</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/cai-thien-nang-suat-voi-workflow</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Mon, 29 Apr 2024 04:01:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CgCG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea94f4b-5295-4162-8f45-4fb16a0f88bb_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>S&#225;ng th&#7913; 6 tu&#7847;n tr&#432;&#7899;c, t&#244;i c&#249;ng m&#7897;t s&#7889; anh em engineer c&#243; tham gia m&#7897;t cu&#7897;c h&#7885;p v&#7899;i team business &#273;&#7875; t&#236;m gi&#7843;i ph&#225;p cho c&#226;u h&#7887;i: &#8220;quick-win solution for biz pain points&#8221;. </p><p>S&#7903; d&#297; c&#243; cu&#7897;c h&#7885;p n&#224;y v&#236; c&#225;c team business c&#243; qu&#225; nhi&#7873;u pain points, h&#7847;u h&#7871;t l&#224; li&#234;n quan &#273;&#7871;n chuy&#7879;n s&#7889; ho&#225;, t&#7921; &#273;&#7897;ng ho&#225; c&#225;c quy tr&#236;nh nghi&#7879;p v&#7909;.</p><p>C&#243; 3 h&#432;&#7899;ng gi&#7843;i ph&#225;p &#273;&#432;&#7907;c &#273;&#432;a ra:</p><ol><li><p>&#193;p d&#7909;ng ERP (Enterprise Resource Planning)</p></li><li><p>S&#7917; d&#7909;ng Workflow automation &amp; RPA (Robotic Process Automation)</p></li><li><p>Chu&#7849;n ho&#225; quy tr&#236;nh nghi&#7879;p v&#7909; v&#7899;i BPMN (Business Process Modeling Notation)</p></li></ol><p>V&#7899;i gi&#7843;i ph&#225;p s&#7889; 1, t&#244;i &#273;&#227; t&#7915;ng vi&#7871;t &#7903; b&#224;i &#8220;<a href="https://newsletter.lequockhanh.com/p/tu-erp-en-frappe?r=ku0bp&amp;utm_campaign=post&amp;utm_medium=web">T&#7915; ERPNext &#273;&#7871;n Frappe framework</a>&#8221;. Gi&#7843;i ph&#225;p s&#7889; 3, l&#224; c&#225;ch &#273;&#7875; chu&#7849;n ho&#225; c&#225;ch d&#249;ng diagram, tham kh&#7843;o t&#7841;i <a href="https://en.wikipedia.org/wiki/Business_Process_Model_and_Notation">&#273;&#226;y</a>. </p><p>Ri&#234;ng gi&#7843;i ph&#225;p s&#7889; 2, ch&#250;ng ta s&#7869; t&#236;m hi&#7875;u k&#297; trong b&#224;i vi&#7871;t tu&#7847;n n&#224;y.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CgCG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea94f4b-5295-4162-8f45-4fb16a0f88bb_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CgCG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea94f4b-5295-4162-8f45-4fb16a0f88bb_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!CgCG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea94f4b-5295-4162-8f45-4fb16a0f88bb_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!CgCG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea94f4b-5295-4162-8f45-4fb16a0f88bb_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!CgCG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea94f4b-5295-4162-8f45-4fb16a0f88bb_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CgCG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea94f4b-5295-4162-8f45-4fb16a0f88bb_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ea94f4b-5295-4162-8f45-4fb16a0f88bb_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:223122,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CgCG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea94f4b-5295-4162-8f45-4fb16a0f88bb_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!CgCG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea94f4b-5295-4162-8f45-4fb16a0f88bb_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!CgCG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea94f4b-5295-4162-8f45-4fb16a0f88bb_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!CgCG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea94f4b-5295-4162-8f45-4fb16a0f88bb_1920x1080.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Automation</h3><p>M&#7885;i th&#7913; b&#7855;t &#273;&#7847;u t&#7915; m&#7897;t nhu c&#7847;u c&#259;n b&#7843;n: <strong>T&#7921; &#273;&#7897;ng ho&#225; (Automation)</strong>.</p><p>C&#243; l&#7869;, ph&#7847;n l&#7899;n b&#224;i to&#225;n v&#7873; optimize c&#7911;a m&#7897;t doanh nghi&#7879;p th&#236; &#273;&#7873;u li&#234;n quan &#273;&#7871;n automation. </p><p>C&#7889;t l&#245;i c&#7911;a t&#7921; &#273;&#7897;ng ho&#225; xoay quanh 2 c&#226;u h&#7887;i ch&#237;nh: Khi n&#224;o (WHEN?) v&#224; L&#224;m g&#236; (THEN do what?).</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D5E-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c0b622-b779-4286-8384-0e8157f8857a_1330x632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D5E-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c0b622-b779-4286-8384-0e8157f8857a_1330x632.png 424w, https://substackcdn.com/image/fetch/$s_!D5E-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c0b622-b779-4286-8384-0e8157f8857a_1330x632.png 848w, https://substackcdn.com/image/fetch/$s_!D5E-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c0b622-b779-4286-8384-0e8157f8857a_1330x632.png 1272w, https://substackcdn.com/image/fetch/$s_!D5E-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c0b622-b779-4286-8384-0e8157f8857a_1330x632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D5E-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c0b622-b779-4286-8384-0e8157f8857a_1330x632.png" width="462" height="219.53684210526316" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2c0b622-b779-4286-8384-0e8157f8857a_1330x632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:632,&quot;width&quot;:1330,&quot;resizeWidth&quot;:462,&quot;bytes&quot;:130737,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!D5E-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c0b622-b779-4286-8384-0e8157f8857a_1330x632.png 424w, https://substackcdn.com/image/fetch/$s_!D5E-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c0b622-b779-4286-8384-0e8157f8857a_1330x632.png 848w, https://substackcdn.com/image/fetch/$s_!D5E-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c0b622-b779-4286-8384-0e8157f8857a_1330x632.png 1272w, https://substackcdn.com/image/fetch/$s_!D5E-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c0b622-b779-4286-8384-0e8157f8857a_1330x632.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3>Workflow</h3><div class="pullquote"><p><strong><a href="https://zapier.com/blog/workflow-management/">A workflow</a></strong> is a repeatable set of steps within an app or apps to accomplish a process</p></div><p>M&#7897;t workflow l&#224; m&#7897;t t&#7853;p h&#7907;p c&#225;c b&#432;&#7899;c c&#7847;n ph&#7843;i th&#7921;c hi&#7879;n &#273;&#7875; ho&#224;n th&#224;nh m&#7897;t quy tr&#236;nh nghi&#7879;p v&#7909; (process). M&#224; khoan, v&#7853;y workflow kh&#225;c g&#236; v&#7899;i process?</p><p>Process tr&#7843; l&#7901;i cho c&#226;u h&#7887;i: k&#7871;t qu&#7843; l&#224; g&#236;. C&#242;n workflow tr&#7843; l&#7901;i cho c&#226;u h&#7887;i: l&#224;m nh&#432; th&#7871; n&#224;o. Khi &#7845;y, n&#243;i &#273;&#7871;n workflow ta th&#432;&#7901;ng ph&#7843;i nh&#7855;c &#273;&#7871;n c&#7909; th&#7875; m&#7897;t c&#244;ng c&#7909; n&#224;o &#273;&#243;.</p><p>H&#227;y nh&#236;n v&#237; d&#7909; b&#234;n d&#432;&#7899;i &#273;&#7875; h&#236;nh dung r&#245; h&#417;n.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qpse!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db56e6e-46c4-4095-9ca3-e1d21aa951f9_1460x744.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qpse!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db56e6e-46c4-4095-9ca3-e1d21aa951f9_1460x744.png 424w, https://substackcdn.com/image/fetch/$s_!qpse!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db56e6e-46c4-4095-9ca3-e1d21aa951f9_1460x744.png 848w, https://substackcdn.com/image/fetch/$s_!qpse!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db56e6e-46c4-4095-9ca3-e1d21aa951f9_1460x744.png 1272w, https://substackcdn.com/image/fetch/$s_!qpse!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db56e6e-46c4-4095-9ca3-e1d21aa951f9_1460x744.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qpse!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db56e6e-46c4-4095-9ca3-e1d21aa951f9_1460x744.png" width="1456" height="742" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6db56e6e-46c4-4095-9ca3-e1d21aa951f9_1460x744.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:158319,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qpse!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db56e6e-46c4-4095-9ca3-e1d21aa951f9_1460x744.png 424w, https://substackcdn.com/image/fetch/$s_!qpse!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db56e6e-46c4-4095-9ca3-e1d21aa951f9_1460x744.png 848w, https://substackcdn.com/image/fetch/$s_!qpse!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db56e6e-46c4-4095-9ca3-e1d21aa951f9_1460x744.png 1272w, https://substackcdn.com/image/fetch/$s_!qpse!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db56e6e-46c4-4095-9ca3-e1d21aa951f9_1460x744.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Workflow Automation</h3><p>Nh&#432; v&#7853;y khi k&#7871;t h&#7907;p &#8220;workflow&#8221; v&#224; &#8220;automation&#8221; ta hi&#7875;u &#273;&#243; l&#224; vi&#7879;c t&#7921; &#273;&#7897;ng ho&#225; workflow c&#7911;a m&#7897;t process.</p><p>C&#243; th&#7875; l&#7845;y m&#7897;t v&#224;i v&#237; d&#7909; v&#7873; workflow automation nh&#432; sau:</p><ul><li><p>Theo d&#245;i brand mentioning tr&#234;n social media tr&#234;n GSheet.</p></li><li><p>T&#7841;o reports h&#224;ng tu&#7847;n v&#7873; ti&#7871;n &#273;&#7897; c&#244;ng vi&#7879;c.</p></li><li><p>G&#7917;i email cho kh&#225;ch h&#224;ng &#273;&#7875; xin review sau khi h&#7885; ho&#224;n th&#224;nh mua m&#7897;t m&#243;n h&#224;ng.</p></li></ul><p>Tr&#234;n th&#7883; tr&#432;&#7901;ng hi&#7879;n t&#7841;i c&#243; m&#7897;t v&#224;i product ti&#234;u bi&#7875;u gi&#7843;i quy&#7871;t b&#224;i to&#225;n workflow automation, c&#243; th&#7875; k&#7875; &#273;&#7871;n nh&#432;:</p><ul><li><p>UIPath </p></li><li><p>Zapier</p></li><li><p>IFTTT</p></li></ul><h3>RPA (Robotic Process Automation)</h3><p>Ai t&#7915;ng xem b&#7897; phim Modern Times c&#7911;a vua h&#7873; S&#7841;c L&#244;, ch&#7855;c s&#7869; nh&#7899; c&#7843;nh v&#7883; vua h&#7873; b&#7883; &#273;&#432;a v&#224;o m&#7897;t c&#225;i m&#225;y cho &#259;n t&#7921; &#273;&#7897;ng (feeding machine). C&#225;i m&#225;y &#273;&#243; s&#7869; l&#7847;n l&#432;&#7907;t cho ng&#432;&#7901;i d&#249;ng &#259;n h&#7871;t m&#243;n n&#224;y &#273;&#7871;n m&#243;n kh&#225;c, r&#7891;i t&#7921; &#273;&#7897;ng lau mi&#7879;ng.</p><div id="youtube2-UwahG1s4dqI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;UwahG1s4dqI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/UwahG1s4dqI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>RPA, in one way or another, c&#361;ng gi&#7889;ng nh&#432; c&#225;i feeding machine.</p><div class="pullquote"><p>Robotic process automation (RPA) is an optimization method that uses <a href="https://zapier.com/blog/best-ai-productivity-tools/">AI</a>, <a href="https://zapier.com/blog/machine-learning-vs-ai">machine learning</a>, or virtual bots to execute basic tasks that humans would otherwise handle.</p></div><p>Kh&#225;c v&#7899;i workflow automation khi logic th&#432;&#7901;ng &#273;&#432;&#7907;c x&#7917; l&#253; &#7903; ph&#237;a backend, RPA th&#236; c&#7847;n c&#243; s&#7921; tham gia c&#7911;a y&#7871;u t&#7889; &#8220;robotic&#8221;. Robotic th&#432;&#7901;ng &#273;&#432;&#7907;c gi&#7843;i quy&#7871;t b&#7857;ng AI, machine learning, bots, vv.</p><p>D&#432;&#7899;i &#273;&#226;y l&#224; m&#7897;t v&#224;i &#7913;ng d&#7909;ng v&#237; d&#7909; v&#7873; RPA:</p><ul><li><p>Chatbot: Chatbot &#273;&#432;&#7907;c t&#7841;o ra &#273;&#7875; tr&#7843; l&#7901;i nh&#7919;ng c&#226;u h&#7887;i th&#432;&#7901;ng g&#7863;p c&#7911;a ng&#432;&#7901;i d&#249;ng. </p></li><li><p>Scan CV c&#7911;a &#7913;ng vi&#234;n: Thay v&#236; c&#7847;n con ng&#432;&#7901;i &#273;&#7875; l&#7885;c c&#225;c CV ti&#7873;m n&#259;ng, c&#225;c c&#244;ng ty c&#243; th&#7875; d&#249;ng RPA &#273;&#7875; scan, tr&#432;&#7899;c khi &#273;&#432;a c&#225;c CV &#273;&#243; v&#224;o trong process c&#7911;a team nh&#226;n s&#7921;.</p></li><li><p>Crawl data: Nh&#7919;ng con bot s&#7869; t&#7921; &#273;&#7897;ng &#273;i thu th&#7853;p d&#7919; li&#7879;u tr&#234;n t&#7853;p c&#225;c website ph&#7909;c v&#7909; cho m&#7909;c &#273;&#237;ch analytics.</p></li></ul><h3>Tham kh&#7843;o </h3><ul><li><p><a href="https://zapier.com/blog/workflow-automation/">Workflow automation: What it is, why it matters, and how you can use it</a></p></li><li><p><a href="https://zapier.com/blog/robotic-process-automation">Robotic process automation: RPA meaning and how to integrate it into your business</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Hiểu về load average trong Linux ]]></title><description><![CDATA[Load average v&#224; vai tr&#242; c&#7911;a n&#243; trong qu&#225; tr&#236;nh troubleshooting Linux performance issue]]></description><link>https://newsletter.lequockhanh.com/p/hieu-ve-load-average-trong-linux</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/hieu-ve-load-average-trong-linux</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Mon, 22 Apr 2024 04:01:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OvUU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9456c1c7-9a25-4373-ad24-a45bf773dcfe_707x448.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>* This file contains the magic bits required to compute the global loadavg<br>* figure. <strong>Its a silly number but people think its important.</strong> We go through<br>* great pains to make it work on big machines and tickless kernels.</p></blockquote><p>Quote ph&#237;a tr&#234;n &#273;&#432;&#7907;c tr&#237;ch t&#7915; file <a href="https://github.com/torvalds/linux/blob/master/kernel/sched/loadavg.c#L5">loadavg.c</a> trong source code c&#7911;a Linux kernel. T&#225;c gi&#7843; mu&#7889;n n&#243;i r&#7857;ng load average l&#224; m&#7897;t con s&#7889; ng&#7899; ng&#7849;n (silly), nh&#432;ng r&#7845;t nhi&#7873;u ng&#432;&#7901;i l&#7841;i ngh&#297; l&#224; n&#243; quan tr&#7885;ng.</p><p>V&#7853;y load average l&#224; g&#236;? V&#224; t&#7841;i sao trong source code c&#7911;a Linux l&#7841;i cho r&#7857;ng n&#243; kh&#244;ng th&#7921;c s&#7921; quan tr&#7885;ng nh&#432; m&#7885;i ng&#432;&#7901;i v&#7851;n ngh&#297;?</p><h3>Load Average l&#224; g&#236;?</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OvUU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9456c1c7-9a25-4373-ad24-a45bf773dcfe_707x448.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OvUU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9456c1c7-9a25-4373-ad24-a45bf773dcfe_707x448.png 424w, https://substackcdn.com/image/fetch/$s_!OvUU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9456c1c7-9a25-4373-ad24-a45bf773dcfe_707x448.png 848w, https://substackcdn.com/image/fetch/$s_!OvUU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9456c1c7-9a25-4373-ad24-a45bf773dcfe_707x448.png 1272w, https://substackcdn.com/image/fetch/$s_!OvUU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9456c1c7-9a25-4373-ad24-a45bf773dcfe_707x448.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OvUU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9456c1c7-9a25-4373-ad24-a45bf773dcfe_707x448.png" width="451" height="285.7821782178218" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9456c1c7-9a25-4373-ad24-a45bf773dcfe_707x448.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:448,&quot;width&quot;:707,&quot;resizeWidth&quot;:451,&quot;bytes&quot;:92547,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OvUU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9456c1c7-9a25-4373-ad24-a45bf773dcfe_707x448.png 424w, https://substackcdn.com/image/fetch/$s_!OvUU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9456c1c7-9a25-4373-ad24-a45bf773dcfe_707x448.png 848w, https://substackcdn.com/image/fetch/$s_!OvUU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9456c1c7-9a25-4373-ad24-a45bf773dcfe_707x448.png 1272w, https://substackcdn.com/image/fetch/$s_!OvUU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9456c1c7-9a25-4373-ad24-a45bf773dcfe_707x448.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Th&#244;ng th&#432;&#7901;ng, khi h&#7879; th&#7889;ng g&#7863;p v&#7845;n &#273;&#7873;, vi&#7879;c &#273;&#7847;u ti&#234;n c&#7847;n l&#224;m l&#224; &#273;i ki&#7875;m tra xem c&#243; b&#7883; thi&#7871;u resources hay kh&#244;ng. V&#224; c&#225;ch d&#7877; nh&#7845;t &#273;&#7875; bi&#7871;t &#273;i&#7873;u &#273;&#243; l&#224; ki&#7875;m tra load average.</p><p>N&#224;o h&#227;y c&#249;ng m&#7903; terminal v&#224; ch&#7841;y c&#226;u l&#7879;nh b&#234;n d&#432;&#7899;i:</p><pre><code>$ uptime
08:31:10 up 60 days, 18:16,  1 user,  load average: 16.55, 8.11, 4.28</code></pre><p>Gi&#7843;i th&#237;ch ph&#7847;n output m&#7897;t ch&#250;t:</p><ul><li><p>08:31:10: gi&#7901; hi&#7879;n t&#7841;i l&#250;c ch&#7841;y c&#226;u l&#7879;nh</p></li><li><p>up 60 days 18:16: th&#7901;i gian h&#7879; th&#7889;ng &#273;&#227; ch&#7841;y (60 ng&#224;y 18 ti&#7871;ng 16 ph&#250;t)</p></li><li><p>1 user: hi&#7879;n t&#7841;i &#273;ang c&#243; 1 ng&#432;&#7901;i d&#249;ng login v&#224;o</p></li><li><p>load average: 16.55, 8.11, 4.28 - th&#7875; hi&#7879;n load average trung b&#236;nh trong 1 ph&#250;t, 5 ph&#250;t, v&#224; 15 ph&#250;t g&#7847;n nh&#7845;t.</p></li></ul><p>Sau khi ki&#7875;m tra t&#244;i th&#7845;y load average trong 1 ph&#250;t g&#7847;n nh&#7845;t c&#243; v&#7867; cao, n&#234;n &#273;&#227; k&#7871;t lu&#7853;n h&#7879; th&#7889;ng b&#7883; ch&#7853;m l&#224; do thi&#7871;u CPU. Tuy nhi&#234;n c&#243; v&#7867; m&#7885;i th&#7913; kh&#244;ng gi&#7889;ng nh&#432; t&#244;i ngh&#297;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w5XX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a6eb91-5ea1-4c7f-8e53-2b805036e9e5_713x573.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w5XX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a6eb91-5ea1-4c7f-8e53-2b805036e9e5_713x573.png 424w, https://substackcdn.com/image/fetch/$s_!w5XX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a6eb91-5ea1-4c7f-8e53-2b805036e9e5_713x573.png 848w, https://substackcdn.com/image/fetch/$s_!w5XX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a6eb91-5ea1-4c7f-8e53-2b805036e9e5_713x573.png 1272w, https://substackcdn.com/image/fetch/$s_!w5XX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a6eb91-5ea1-4c7f-8e53-2b805036e9e5_713x573.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w5XX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a6eb91-5ea1-4c7f-8e53-2b805036e9e5_713x573.png" width="713" height="573" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7a6eb91-5ea1-4c7f-8e53-2b805036e9e5_713x573.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:573,&quot;width&quot;:713,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:120616,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!w5XX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a6eb91-5ea1-4c7f-8e53-2b805036e9e5_713x573.png 424w, https://substackcdn.com/image/fetch/$s_!w5XX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a6eb91-5ea1-4c7f-8e53-2b805036e9e5_713x573.png 848w, https://substackcdn.com/image/fetch/$s_!w5XX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a6eb91-5ea1-4c7f-8e53-2b805036e9e5_713x573.png 1272w, https://substackcdn.com/image/fetch/$s_!w5XX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a6eb91-5ea1-4c7f-8e53-2b805036e9e5_713x573.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>T&#7841;i sao Load Average l&#7841;i kh&#244;ng quan tr&#7885;ng nh&#432; nhi&#7873;u ng&#432;&#7901;i v&#7851;n ngh&#297;?</h3><div class="pullquote"><p>Trong Linux, khi n&#243;i &#273;&#7871;n load average, ta ph&#7843;i hi&#7875;u &#273;&#243; l&#224; system load average, ch&#7913; kh&#244;ng ph&#7843;i CPU load average.</p></div><p>R&#7845;t nhi&#7873;u ng&#432;&#7901;i khi &#273;&#7873; c&#7853;p &#273;&#7871;n load average, h&#7885; s&#7869; ngh&#297; ngay &#273;&#7871;n th&#244;ng s&#7889; c&#7911;a CPU. Tuy nhi&#234;n &#273;i&#7873;u n&#224;y kh&#244;ng ch&#237;nh x&#225;c.</p><p>Trong nh&#7919;ng phi&#234;n b&#7843;n kernel Linux &#273;&#7847;u ti&#234;n, load average &#273;&#250;ng l&#224; CPU load average th&#7853;t. Tuy nhi&#234;n, v&#224;o n&#259;m 1993, sau m&#7897;t b&#7843;n patch &#7903; version 0.99.14, load average &#273;&#227; &#273;&#432;&#7907;c thay &#273;&#7893;i c&#225;ch t&#237;nh &#273;&#7875; tr&#7903; n&#234;n t&#7893;ng qu&#225;t h&#417;n. L&#250;c n&#224;y, n&#243; kh&#244;ng ch&#7881; l&#224; th&#244;ng s&#7889; v&#7873; CPU n&#7919;a, m&#224; c&#242;n ph&#7843;n &#225;nh th&#7921;c tr&#7841;ng c&#7911;a c&#225;c resource kh&#225;c nh&#432; disk I/O, locks.</p><p>Do &#273;&#243;, vi&#7879;c t&#244;i ngay l&#7853;p t&#7913;c k&#7871;t lu&#7853;n load cao l&#224; do thi&#7871;u CPU l&#224; m&#7897;t k&#7871;t lu&#7853;n ch&#432;a &#273;&#7911; c&#259;n c&#7913;, v&#224; th&#7921;c t&#7871; c&#361;ng &#273;&#227; ch&#7913;ng minh nh&#432; v&#7853;y.</p><h3>V&#7853;y c&#243; th&#7875; k&#7871;t lu&#7853;n g&#236; khi nh&#236;n v&#224;o load average?</h3><p>N&#7871;u ch&#7881; nh&#236;n v&#224;o load average, ta ch&#7881; c&#243; th&#7875; tr&#7843; l&#7901;i &#273;&#432;&#7907;c cho hai c&#226;u h&#7887;i:</p><p><strong>C&#226;u h&#7887;i 1: C&#243; ph&#7843;i h&#7879; th&#7889;ng &#273;ang thi&#7871;u resources hay kh&#244;ng?</strong></p><p>&#272;&#7875; tr&#7843; l&#7901;i &#273;&#432;&#7907;c c&#226;u h&#7887;i n&#224;y, ta so s&#225;nh load average c&#7911;a h&#7879; th&#7889;ng l&#250;c c&#243; v&#7845;n &#273;&#7873; v&#7899;i l&#250;c h&#7879; th&#7889;ng ch&#7841;y b&#236;nh th&#432;&#7901;ng. N&#7871;u n&#243; cao h&#417;n, c&#243; ngh&#297;a l&#224; h&#7879; th&#7889;ng &#273;ang qu&#225; t&#7843;i. </p><p><strong>C&#226;u h&#7887;i 2: H&#7879; th&#7889;ng c&#243; v&#7845;n &#273;&#7873; t&#7915; khi n&#224;o?</strong></p><p>&#272;&#7875; tr&#7843; l&#7901;i c&#226;u h&#7887;i n&#224;y, ta c&#7847;n nh&#236;n v&#224;o c&#7843; 3 th&#244;ng s&#7889; 1m, 5m, v&#224; 15m.</p><ul><li><p>N&#7871;u 1m load average l&#7899;n h&#417;n 5m v&#224; 15m load average, kh&#7843; n&#259;ng l&#224; v&#7845;n &#273;&#7873; &#273;ang x&#7843;y ra.</p></li><li><p>N&#7871;u 1m load average th&#7845;p h&#417;n 5m v&#224; 15m load average, kh&#7843; n&#259;ng l&#224; th&#7901;i &#273;i&#7875;m x&#7843;y ra v&#7845;n &#273;&#7873; &#273;&#227; tr&#244;i qua.</p></li></ul><h3>T&#7893;ng k&#7871;t</h3><p>Brendan Gregg - t&#225;c gi&#7843; c&#7911;a nhi&#7873;u cu&#7889;n s&#225;ch n&#7893;i ti&#7871;ng v&#7873; monitoring h&#7879; th&#7889;ng - c&#243; n&#243;i r&#7857;ng: &#8220;Don't spend more than 5 seconds for load average&#8221;. D&#7883;ch ra l&#224; &#8220;Kh&#244;ng d&#224;nh qu&#225; 5 gi&#226;y cho load average&#8221;. Load average n&#234;n ch&#7881; d&#7915;ng l&#7841;i &#7903; m&#7913;c entrypoint cho qu&#225; tr&#236;nh troubleshooting m&#224; th&#244;i. </p><p>V&#7853;y sau khi gi&#224;nh ra 5 gi&#226;y &#273;&#7875; ki&#7875;m tra load average, ch&#250;ng ta c&#7847;n l&#224;m g&#236; ti&#7871;p theo? Xin ph&#233;p &#273;&#432;&#7907;c h&#7865;n b&#7841;n &#273;&#7885;c trong m&#7897;t b&#224;i vi&#7871;t kh&#225;c.</p><h3>Tham kh&#7843;o</h3><ul><li><p>Ph&#7847;n l&#7899;n b&#224;i vi&#7871;t &#273;&#432;&#7907;c tham kh&#7843;o &#7903; <a href="https://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html">Linux Load Averages: Solving the Mystery</a></p></li><li><p>Tool t&#244;i v&#7869; comic d&#249;ng <a href="https://www.canva.com/create/comic-strips/">Canva Comic Strip</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Kiến trúc thị trường chứng khoán (Phần 1)]]></title><description><![CDATA[H&#7879; th&#7889;ng giao d&#7883;ch ch&#7913;ng kho&#225;n &#7903; Vi&#7879;t Nam ho&#7841;t &#273;&#7897;ng ra sao]]></description><link>https://newsletter.lequockhanh.com/p/kien-truc-thi-truong-chung-khoan</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/kien-truc-thi-truong-chung-khoan</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Mon, 08 Apr 2024 04:01:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1gaR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d83294-f633-423a-96e9-6075cb6e7194_3600x2336.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Giao d&#7883;ch ch&#7913;ng kho&#225;n l&#224; m&#7897;t h&#7879; th&#7889;ng r&#7845;t ph&#7913;c t&#7841;p.</p><p>Kh&#244;ng ch&#7881; l&#224; do c&#243; li&#234;n quan &#273;&#7871;n n&#7873;n kinh t&#7871; c&#7911;a m&#7897;t &#273;&#7845;t n&#432;&#7899;c, m&#224; c&#242;n l&#224; v&#244; c&#249;ng nhi&#7873;u th&#225;ch th&#7913;c v&#7873; m&#7863;t c&#244;ng ngh&#7879;.</p><p>Trong chu&#7895;i b&#224;i vi&#7871;t n&#224;y, ch&#250;ng ta c&#249;ng nhau &#273;i t&#236;m hi&#7875;u c&#225;ch th&#7913;c ho&#7841;t &#273;&#7897;ng c&#7911;a th&#7883; tr&#432;&#7901;ng ch&#7913;ng kho&#225;n &#7903; Vi&#7879;t Nam nh&#233;.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lequockhanh.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.lequockhanh.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h3>T&#7893;ng quan th&#7883; tr&#432;&#7901;ng ch&#7913;ng kho&#225;n</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1gaR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d83294-f633-423a-96e9-6075cb6e7194_3600x2336.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1gaR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d83294-f633-423a-96e9-6075cb6e7194_3600x2336.png 424w, https://substackcdn.com/image/fetch/$s_!1gaR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d83294-f633-423a-96e9-6075cb6e7194_3600x2336.png 848w, https://substackcdn.com/image/fetch/$s_!1gaR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d83294-f633-423a-96e9-6075cb6e7194_3600x2336.png 1272w, https://substackcdn.com/image/fetch/$s_!1gaR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d83294-f633-423a-96e9-6075cb6e7194_3600x2336.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1gaR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d83294-f633-423a-96e9-6075cb6e7194_3600x2336.png" width="1456" height="945" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85d83294-f633-423a-96e9-6075cb6e7194_3600x2336.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:945,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:195250,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1gaR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d83294-f633-423a-96e9-6075cb6e7194_3600x2336.png 424w, https://substackcdn.com/image/fetch/$s_!1gaR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d83294-f633-423a-96e9-6075cb6e7194_3600x2336.png 848w, https://substackcdn.com/image/fetch/$s_!1gaR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d83294-f633-423a-96e9-6075cb6e7194_3600x2336.png 1272w, https://substackcdn.com/image/fetch/$s_!1gaR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d83294-f633-423a-96e9-6075cb6e7194_3600x2336.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Th&#7883; tr&#432;&#7901;ng ch&#7913;ng kho&#225;n chia l&#224;m 2 c&#7845;p: <strong>s&#417; c&#7845;p</strong> (primary market) v&#224; <strong>th&#7913; c&#7845;p</strong> (secondary market).</p><p>Th&#7883; tr&#432;&#7901;ng s&#417; c&#7845;p l&#224; n&#417;i c&#225;c doanh nghi&#7879;p huy &#273;&#7897;ng v&#7889;n l&#7847;n &#273;&#7847;u th&#244;ng qua vi&#7879;c IPO (initial public offering). C&#242;n th&#7883; tr&#432;&#7901;ng th&#7913; c&#7845;p l&#224; n&#417;i c&#225;c nh&#224; &#273;&#7847;u t&#432; mua b&#225;n c&#7893; phi&#7871;u &#273;&#227; ph&#225;t h&#224;nh tr&#234;n c&#225;c s&#224;n giao d&#7883;ch ch&#7913;ng kho&#225;n, ho&#7863;c s&#224;n giao d&#7883;ch OTC.</p><p>* S&#224;n OTC l&#224; s&#224;n m&#224; b&#234;n mua v&#224; b&#234;n b&#225;n t&#7921; tho&#7843; thu&#7853;n v&#7899;i nhau, m&#224; kh&#244;ng th&#244;ng qua c&#225;c s&#224;n giao d&#7883;ch ch&#7913;ng kho&#225;n nh&#432; HOSE, hay HNX.</p><h3>C&#225;c t&#225;c nh&#226;n tr&#234;n th&#7883; tr&#432;&#7901;ng ch&#7913;ng kho&#225;n</h3><p>C&#243; 4 t&#225;c nh&#226;n ch&#237;nh tr&#234;n th&#7883; tr&#432;&#7901;ng ch&#7913;ng kho&#225;n, bao g&#7891;m:</p><ul><li><p>Nh&#224; &#273;&#7847;u t&#432; / nh&#224; &#273;&#7847;u c&#417;</p></li><li><p>C&#244;ng ty ch&#7913;ng kho&#225;n. V&#237; d&#7909; VnDirect, SSI, DNSE</p></li><li><p>S&#224;n ch&#7913;ng kho&#225;n. V&#237; d&#7909;: HOSE, HNX, UPCOM</p></li><li><p>U&#7927; ban ch&#7913;ng kho&#225;n nh&#224; n&#432;&#7899;c</p></li></ul><h3>Tr&#432;&#7899;c 2008, ho&#7841;t &#273;&#7897;ng mua b&#225;n di&#7877;n ra nh&#432; th&#7871; n&#224;o?</h3><p>N&#259;m 2008, s&#7903; giao d&#7883;ch ch&#7913;ng kho&#225;n H&#7891; Ch&#237; Minh (HOSE) m&#7899;i ch&#237;nh th&#7913;c tri&#7875;n khai vi&#7879;c k&#7871;t n&#7889;i giao d&#7883;ch tr&#7921;c tuy&#7871;n. V&#7853;y t&#7915; n&#259;m 2000 &#273;&#7871;n n&#259;m 2008, th&#236; giao d&#7883;ch ki&#7875;u g&#236;?</p><p>Khi &#7845;y, c&#225;c nh&#224; &#273;&#7847;u t&#432; ph&#7843;i li&#234;n h&#7879; v&#7899;i m&#244;i gi&#7899;i &#7903; c&#225;c c&#244;ng ty ch&#7913;ng kho&#225;n, r&#7891;i nh&#7901; h&#7885; g&#7885;i &#273;i&#7879;n l&#234;n s&#7903; giao d&#7883;ch ch&#7913;ng kho&#225;n &#273;&#7875; &#273;&#7863;t l&#7879;nh. Khi nhu c&#7847;u giao d&#7883;ch ch&#7913;ng kho&#225;n t&#259;ng l&#234;n nh&#432; nh&#7919;ng n&#259;m 2006-2007, ngh&#7873; m&#244;i gi&#7899;i &#273;&#250;ng l&#224; vua c&#7911;a m&#7885;i ngh&#7873;. Nhi&#7873;u khi &#273;&#7875; &#273;&#432;&#7907;c &#432;u ti&#234;n &#273;&#7863;t l&#7879;nh c&#225;c nh&#224; &#273;&#7847;u t&#432; ph&#7843;i &#8220;b&#7891;i d&#432;&#7905;ng&#8221; th&#234;m cho c&#225;c m&#244;i gi&#7899;i.</p><p>Xem m&#7845;y b&#7897; phim nh&#432; l&#224; S&#243;i gi&#224; ph&#7889; Wall, hay Pursuit of happiness s&#7869; th&#7845;y &#273;i&#7873;u n&#224;y. </p><h3>Lu&#7891;ng ho&#7841;t &#273;&#7897;ng c&#7911;a h&#7879; th&#7889;ng giao d&#7883;ch ch&#7913;ng kho&#225;n</h3><p>K&#7875; t&#7915; n&#259;m 2008, h&#7879; th&#7889;ng giao d&#7883;ch online &#273;i v&#224;o ho&#7841;t &#273;&#7897;ng &#273;&#227; cho ph&#233;p nh&#224; &#273;&#7847;u t&#432; mua b&#225;n tr&#234;n th&#7883; tr&#432;&#7901;ng th&#7913; c&#7845;p d&#7877; d&#224;ng h&#417;n nhi&#7873;u.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!82HS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28ebfad6-248b-476a-b469-505e34e3c987_2430x2016.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!82HS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28ebfad6-248b-476a-b469-505e34e3c987_2430x2016.png 424w, https://substackcdn.com/image/fetch/$s_!82HS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28ebfad6-248b-476a-b469-505e34e3c987_2430x2016.png 848w, https://substackcdn.com/image/fetch/$s_!82HS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28ebfad6-248b-476a-b469-505e34e3c987_2430x2016.png 1272w, https://substackcdn.com/image/fetch/$s_!82HS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28ebfad6-248b-476a-b469-505e34e3c987_2430x2016.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!82HS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28ebfad6-248b-476a-b469-505e34e3c987_2430x2016.png" width="1456" height="1208" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28ebfad6-248b-476a-b469-505e34e3c987_2430x2016.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1208,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:149522,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!82HS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28ebfad6-248b-476a-b469-505e34e3c987_2430x2016.png 424w, https://substackcdn.com/image/fetch/$s_!82HS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28ebfad6-248b-476a-b469-505e34e3c987_2430x2016.png 848w, https://substackcdn.com/image/fetch/$s_!82HS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28ebfad6-248b-476a-b469-505e34e3c987_2430x2016.png 1272w, https://substackcdn.com/image/fetch/$s_!82HS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28ebfad6-248b-476a-b469-505e34e3c987_2430x2016.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Ngo&#224;i 4 t&#225;c nh&#226;n ch&#237;nh t&#244;i &#273;&#227; n&#234;u &#7903; ph&#7847;n tr&#234;n, &#273;&#7875; h&#7879; th&#7889;ng giao d&#7883;ch ch&#7913;ng kho&#225;n ho&#7841;t &#273;&#7897;ng &#273;&#432;&#7907;c, c&#7847;n c&#243; th&#234;m v&#224;i t&#225;c nh&#226;n n&#7919;a, ch&#7859;ng h&#7841;n nh&#432; Trung t&#226;m l&#432;u k&#253; v&#224; b&#249; tr&#7915;, Ng&#226;n h&#224;ng thanh to&#225;n.</p><p>C&#243; th&#7875; m&#244; ph&#7887;ng lu&#7891;ng ho&#7841;t &#273;&#7897;ng b&#7857;ng l&#7901;i nh&#432; sau:</p><p><strong>Khi IPO</strong></p><ul><li><p>C&#244;ng ty t&#432; nh&#226;n &#273;&#259;ng k&#253; v&#7899;i trung t&#226;m l&#432;u k&#253; &#273;&#7875; IPO</p></li><li><p>C&#244;ng ty t&#432; nh&#226;n nh&#7901; m&#7897;t ng&#226;n h&#224;ng &#273;&#7847;u t&#432; n&#224;o &#273;&#243; &#273;&#7875; &#273;i m&#7901;i ch&#224;o b&#225;n c&#7893; ph&#7847;n v&#7899;i gi&#225; cao nh&#7845;t c&#243; th&#7875;</p></li><li><p>Nh&#224; &#273;&#7847;u t&#432; &#273;&#432;&#7907;c m&#7901;i ch&#224;o v&#224; mua c&#7893; ph&#7847;n, tr&#7903; th&#224;nh c&#7893; &#273;&#244;ng</p></li><li><p>T&#7915; l&#250;c IPO &#273;&#7871;n khi ni&#234;m y&#7871;t, c&#7893; &#273;&#244;ng c&#243; th&#7875; mua b&#225;n c&#7893; ph&#7847;n tr&#234;n th&#7883; tr&#432;&#7901;ng OTC</p></li><li><p>C&#244;ng ty ti&#7871;n h&#224;nh ni&#234;m y&#7871;t l&#234;n s&#224;n ch&#7913;ng kho&#225;n, l&#250;c n&#224;y c&#7893; &#273;&#244;ng kh&#244;ng &#273;&#432;&#7907;c mua b&#225;n tr&#234;n OTC n&#7919;a</p></li><li><p>N&#7871;u mu&#7889;n mua b&#225;n, c&#7893; &#273;&#244;ng ph&#7843;i &#273;&#259;ng k&#253; v&#7899;i trung t&#226;m l&#432;u k&#253; &#273;&#7875; &#273;&#432;a c&#7893; ph&#7847;n th&#224;nh c&#7893; phi&#7871;u tr&#234;n s&#224;n ch&#7913;ng kho&#225;n</p></li></ul><p><strong>Khi &#273;&#259;ng k&#253; t&#224;i kho&#7843;n ch&#7913;ng kho&#225;n</strong></p><ul><li><p>Nh&#224; &#273;&#7847;u t&#432; m&#7903; t&#224;i kho&#7843;n ch&#7913;ng kho&#225;n t&#7841;i m&#7897;t c&#244;ng ty ch&#7913;ng kho&#225;n n&#224;o &#273;&#243; </p></li><li><p>C&#244;ng ty ch&#7913;ng kho&#225;n &#273;em th&#244;ng tin c&#7911;a kh&#225;ch h&#224;ng l&#234;n trung t&#226;m l&#432;u k&#253; &#273;&#7875; t&#7841;o t&#224;i kho&#7843;n l&#432;u k&#253;</p></li><li><p>C&#244;ng ty ch&#7913;ng kho&#225;n t&#7841;o t&#224;i kho&#7843;n ng&#226;n h&#224;ng cho nh&#224; &#273;&#7847;u t&#432; t&#7841;i m&#7897;t ng&#226;n h&#224;ng th&#432;&#417;ng m&#7841;i</p></li></ul><p><strong>Khi giao d&#7883;ch ch&#7913;ng kho&#225;n </strong></p><ul><li><p>Nh&#224; &#273;&#7847;u t&#432; n&#7841;p ti&#7873;n v&#224;o t&#224;i kho&#7843;n ch&#7913;ng kho&#225;n, ti&#7873;n sau &#273;&#243; s&#7869; &#273;&#432;&#7907;c chuy&#7875;n v&#224;o t&#224;i kho&#7843;n ng&#226;n h&#224;ng th&#432;&#417;ng m&#7841;i </p></li><li><p>Nh&#224; &#273;&#7847;u t&#432; &#273;&#7863;t l&#7879;nh th&#244;ng qua c&#225;c c&#244;ng ty ch&#7913;ng kho&#225;n</p></li><li><p>C&#244;ng ty ch&#7913;ng kho&#225;n ti&#7871;n h&#224;nh x&#225;c th&#7921;c l&#7879;nh c&#243; h&#7907;p l&#7879; hay kh&#244;ng</p></li><li><p>C&#244;ng ty ch&#7913;ng kho&#225;n g&#7917;i l&#7879;nh l&#234;n s&#224;n giao d&#7883;ch ch&#7913;ng kho&#225;n</p></li><li><p>S&#224;n giao d&#7883;ch th&#7921;c hi&#7879;n kh&#7899;p l&#7879;nh; b&#225;o k&#7871;t qu&#7843; kh&#7899;p l&#7879;nh v&#7873; cho c&#244;ng ty m&#244;i gi&#7899;i ch&#7913;ng kho&#225;n</p></li><li><p>K&#7871;t th&#250;c phi&#234;n giao d&#7883;ch, s&#224;n giao d&#7883;ch ch&#7913;ng kho&#225;n s&#7869; b&#225;o k&#7871;t qu&#7843; kh&#7899;p l&#7879;nh cho trung t&#226;m l&#432;u k&#253; v&#224; ng&#226;n h&#224;ng thanh to&#225;n</p></li><li><p>Trung t&#226;m l&#432;u k&#253; th&#7921;c hi&#7879;n b&#249; tr&#7915; giao d&#7883;ch v&#224; y&#234;u c&#7847;u ng&#226;n h&#224;ng thanh to&#225;n (hi&#7879;n gi&#7901; &#273;ang l&#224; BIDV) th&#7921;c hi&#7879;n giao d&#7883;ch. </p><ul><li><p>N&#243;i m&#7897;t ch&#250;t v&#7873; giao d&#7883;ch b&#249; tr&#7915; (offsetting transaction). M&#7909;c &#273;&#237;ch c&#7911;a n&#243; l&#224; &#273;&#7875; gi&#7843;m s&#7889; l&#432;&#7907;ng thanh to&#225;n kh&#244;ng c&#7847;n thi&#7871;t. V&#237; d&#7909;, nh&#224; &#273;&#7847;u t&#432; A b&#225;n 10 c&#7893; phi&#7871;u. Nh&#224; &#273;&#7847;u t&#432; B &#273;&#432;&#7907;c kh&#7899;p &#273;&#7875; mua 10 c&#7893; phi&#7871;u c&#7911;a nh&#224; &#273;&#7847;u t&#432; A. Sau &#273;&#7845;y B l&#7841;i b&#225;n 6 c&#7893; phi&#7871;u, v&#224; l&#7841;i l&#224; A mua 6 c&#7893; phi&#7871;u &#273;&#243;. Nh&#432; v&#7853;y, sau ng&#224;y giao d&#7883;ch ch&#7881; c&#7847;n th&#7921;c hi&#7879;n 1 thanh to&#225;n cho A s&#7889; ti&#7873;n b&#7857;ng 4 c&#7893; phi&#7871;u l&#224; xong. </p></li></ul></li><li><p>Ng&#226;n h&#224;ng thanh to&#225;n th&#7921;c hi&#7879;n chuy&#7875;n ti&#7873;n cho c&#225;c t&#224;i kho&#7843;n &#7903; ng&#226;n h&#224;ng th&#432;&#417;ng m&#7841;i, v&#224; b&#225;o l&#7841;i cho c&#244;ng ty ch&#7913;ng kho&#225;n l&#224; &#273;&#227; thanh to&#225;n.</p></li></ul><div><hr></div><p>V&#7873; t&#7893;ng quan lu&#7891;ng ho&#7841;t &#273;&#7897;ng l&#224; nh&#432; v&#7853;y. M&#7863;c d&#249; mong mu&#7889;n ban &#273;&#7847;u c&#7911;a t&#244;i l&#224; tr&#236;nh b&#224;y d&#432;&#7899;i d&#7841;ng sequence diagram, nh&#432;ng t&#244;i kh&#244;ng t&#224;i n&#224;o t&#236;m ki&#7871;m &#273;&#432;&#7907;c t&#224;i li&#7879;u &#273;&#7911; r&#245; r&#224;ng &#273;&#7875; c&#243; th&#7875; v&#7869; ra &#273;&#432;&#7907;c m&#7897;t quy tr&#236;nh tu&#7847;n t&#7921; &#273;&#432;&#7907;c. </p><p>Trong b&#224;i ti&#7871;p theo t&#244;i s&#7869; quay l&#7841;i kh&#237;a c&#7841;nh ch&#237;nh, &#273;&#7845;y l&#224; v&#7845;n &#273;&#7873; v&#7873; c&#244;ng ngh&#7879;. &#272;&#7875; tr&#7843; l&#7901;i cho c&#226;u h&#7887;i l&#224;m th&#7871; n&#224;o m&#224; h&#7879; th&#7889;ng giao d&#7883;ch ch&#7913;ng kho&#225;n Vi&#7879;t Nam ch&#7883;u &#273;&#432;&#7907;c t&#7843;i l&#7899;n.</p><p>H&#7865;n g&#7863;p l&#7841;i b&#7841;n &#273;&#7885;c tu&#7847;n sau. </p><p>P/S - C&#7853;p nh&#7853;t ng&#224;y 19/05/2024: Th&#7853;t &#273;&#225;ng ti&#7871;c khi t&#244;i kh&#244;ng th&#7875; vi&#7871;t &#273;&#432;&#7907;c ph&#7847;n 2 cho chu&#7895;i b&#224;i n&#224;y. L&#253; do l&#224; v&#236; t&#244;i kh&#244;ng thu th&#7853;p &#273;&#7911; t&#224;i li&#7879;u &#273;&#7875; vi&#7871;t. C&#225;c ngu&#7891;n m&#224; t&#244;i bi&#7871;t th&#236; &#273;&#7873;u &#273;&#227; qu&#225; c&#361;, n&#234;n c&#243; th&#7875; kh&#244;ng c&#242;n &#273;&#250;ng v&#7899;i cho th&#7901;i &#273;i&#7875;m hi&#7879;n t&#7841;i n&#7919;a. N&#7871;u c&#243; &#273;&#7897;c gi&#7843; n&#224;o n&#7855;m &#273;&#432;&#7907;c kh&#237;a c&#7841;nh v&#7873; c&#244;ng ngh&#7879; c&#7911;a h&#7879; th&#7889;ng GDCK, t&#244;i s&#7869; r&#7845;t vui n&#7871;u &#273;&#432;&#7907;c &#273;&#7897;c gi&#7843; chia s&#7867; th&#234;m.</p>]]></content:encoded></item><item><title><![CDATA[6 lý do mà Postgres database của CloudFlare đã xử lý được 55 triệu RPS]]></title><description><![CDATA[T&#236;m hi&#7875;u c&#225;ch CloudFlare &#273;&#227; thi&#7871;t k&#7871; h&#7879; th&#7889;ng ph&#7909;c v&#7909; t&#7843;i l&#7899;n]]></description><link>https://newsletter.lequockhanh.com/p/6-ly-do-ma-postgres-database-cua</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/6-ly-do-ma-postgres-database-cua</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Mon, 01 Apr 2024 04:00:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5GfE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff90a721-4f0c-44a0-af83-c920e0cb2039_1018x754.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Kho&#7843;ng nh&#7919;ng n&#259;m cu&#7889;i c&#7911;a th&#7853;p ni&#234;n 2000, CDN (Content Delivery Network) n&#7893;i l&#234;n nh&#432; m&#7897;t l&#224;n s&#243;ng c&#244;ng ngh&#7879; m&#7899;i gi&#250;p t&#259;ng t&#7889;c &#273;&#7897; c&#7911;a c&#225;c website.</p><p>N&#7855;m b&#7855;t l&#224;n s&#243;ng &#273;&#243;, v&#224;o th&#225;ng 7 n&#259;m 2009, &#7903; bang California M&#7929;, m&#7897;t nh&#243;m sinh vi&#234;n &#7903; &#273;&#7841;i h&#7885;c Harvard &#273;&#227; c&#249;ng nhau cho ra &#273;&#7901;i m&#7897;t n&#7873;n t&#7843;ng CDN m&#7899;i, t&#234;n l&#224; CloudFlare.</p><p>D&#249; sinh sau &#273;&#7867; mu&#7897;n, nh&#432;ng CloudFlare &#273;&#227; nhanh ch&#243;ng chi&#7871;m l&#297;nh th&#7883; tr&#432;&#7901;ng CDN n&#243;i ri&#234;ng v&#224; traffic m&#7841;ng Internet n&#243;i chung.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5GfE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff90a721-4f0c-44a0-af83-c920e0cb2039_1018x754.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5GfE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff90a721-4f0c-44a0-af83-c920e0cb2039_1018x754.png 424w, https://substackcdn.com/image/fetch/$s_!5GfE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff90a721-4f0c-44a0-af83-c920e0cb2039_1018x754.png 848w, https://substackcdn.com/image/fetch/$s_!5GfE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff90a721-4f0c-44a0-af83-c920e0cb2039_1018x754.png 1272w, https://substackcdn.com/image/fetch/$s_!5GfE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff90a721-4f0c-44a0-af83-c920e0cb2039_1018x754.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5GfE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff90a721-4f0c-44a0-af83-c920e0cb2039_1018x754.png" width="1018" height="754" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ff90a721-4f0c-44a0-af83-c920e0cb2039_1018x754.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:754,&quot;width&quot;:1018,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65452,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5GfE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff90a721-4f0c-44a0-af83-c920e0cb2039_1018x754.png 424w, https://substackcdn.com/image/fetch/$s_!5GfE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff90a721-4f0c-44a0-af83-c920e0cb2039_1018x754.png 848w, https://substackcdn.com/image/fetch/$s_!5GfE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff90a721-4f0c-44a0-af83-c920e0cb2039_1018x754.png 1272w, https://substackcdn.com/image/fetch/$s_!5GfE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff90a721-4f0c-44a0-af83-c920e0cb2039_1018x754.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>T&#237;nh &#273;&#7871;n n&#259;m 2023, c&#243; t&#7899;i 20% traffic tr&#234;n to&#224;n b&#7897; Internet &#273;i qua h&#7879; th&#7889;ng h&#7841; t&#7847;ng c&#7911;a CloudFlare. V&#7899;i s&#7889; l&#432;&#7907;ng Request Per Second (RPS) l&#234;n t&#7899;i 55 tri&#7879;u HTTP requests / gi&#226;y.</p><p>V&#224; th&#7853;t &#273;&#225;ng ng&#7841;c nhi&#234;n khi CloudFlare gi&#7843;i quy&#7871;t b&#224;i to&#225;n OLTP (Online Transaction Processing) ch&#7881; v&#7899;i <strong>15 Postgres clusters. </strong></p><p>M&#7895;i cluster g&#7891;m ba server. M&#7895;i server n&#7857;m &#7903; m&#7897;t khu v&#7921;c kh&#225;c nhau (region) &#273;&#7875; &#273;&#7843;m b&#7843;o kh&#7843; n&#259;ng recovery khi c&#243; disaster.</p><p>V&#7853;y CloudFlare &#273;&#227; tuning nh&#7919;ng g&#236; &#273;&#7875; Postgres c&#243; th&#7875; handle m&#7897;t l&#432;&#7907;ng traffic l&#7899;n &#273;&#7871;n nh&#432; th&#7871;, ch&#250;ng ta c&#249;ng b&#7855;t &#273;&#7847;u t&#236;m hi&#7875;u.</p><div><hr></div><h3>1. Connection Pool</h3><p>Th&#244;ng th&#432;&#7901;ng kh&#7843; n&#259;ng x&#7917; l&#253; c&#7911;a database th&#432;&#7901;ng b&#7883; gi&#7899;i h&#7841;n b&#7903;i c&#225;c resources c&#243; h&#7841;n nh&#432; CPU, Memory. </p><p>M&#7897;t gi&#7899;i h&#7841;n n&#7919;a l&#224; s&#7889; connections, v&#236; sao v&#7853;y?</p><p>Trong Postgres, m&#7895;i request t&#7915; client t&#7899;i s&#7869; t&#7841;o ra m&#7897;t process m&#7899;i. M&#224; s&#7889; l&#432;&#7907;ng process c&#361;ng l&#224; h&#7919;u h&#7841;n (v&#236; ph&#7909; thu&#7897;c v&#224;o CPU, Memory). N&#234;n s&#7889; connections c&#361;ng l&#224; h&#7919;u h&#7841;n. </p><p>V&#7853;y mu&#7889;n t&#259;ng s&#7889; l&#432;&#7907;ng connections l&#234;n n&#7919;a th&#236; ph&#7843;i l&#224;m sao? C&#226;u tr&#7843; l&#7901;i l&#224; d&#249;ng m&#7897;t <strong>connection pool</strong> &#273;&#7913;ng gi&#7919;a.</p><p><strong>Connection pool </strong>l&#224; m&#7897;t technique th&#432;&#7901;ng &#273;&#432;&#7907;c d&#249;ng &#273;&#7875; optimize hi&#7879;u n&#259;ng khi s&#7889; l&#432;&#7907;ng connection v&#432;&#7907;t qu&#225; kh&#7843; n&#259;ng handle c&#7911;a server.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jz7k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c13aed-a802-44a2-ae86-e7873fd367ac_996x510.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jz7k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c13aed-a802-44a2-ae86-e7873fd367ac_996x510.png 424w, https://substackcdn.com/image/fetch/$s_!jz7k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c13aed-a802-44a2-ae86-e7873fd367ac_996x510.png 848w, https://substackcdn.com/image/fetch/$s_!jz7k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c13aed-a802-44a2-ae86-e7873fd367ac_996x510.png 1272w, https://substackcdn.com/image/fetch/$s_!jz7k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c13aed-a802-44a2-ae86-e7873fd367ac_996x510.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jz7k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c13aed-a802-44a2-ae86-e7873fd367ac_996x510.png" width="996" height="510" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/81c13aed-a802-44a2-ae86-e7873fd367ac_996x510.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:510,&quot;width&quot;:996,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:256978,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jz7k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c13aed-a802-44a2-ae86-e7873fd367ac_996x510.png 424w, https://substackcdn.com/image/fetch/$s_!jz7k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c13aed-a802-44a2-ae86-e7873fd367ac_996x510.png 848w, https://substackcdn.com/image/fetch/$s_!jz7k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c13aed-a802-44a2-ae86-e7873fd367ac_996x510.png 1272w, https://substackcdn.com/image/fetch/$s_!jz7k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c13aed-a802-44a2-ae86-e7873fd367ac_996x510.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">PgBouncer &#273;&#432;&#7907;c d&#249;ng nh&#432; m&#7897;t connection pool</figcaption></figure></div><p>PgBouncer, b&#7843;n ch&#7845;t l&#224; TCP Proxy, &#273;&#7913;ng gi&#7919;a &#273;&#7875; qu&#7843;n l&#253; connection t&#7915; ph&#237;a client. Khi n&#224;y client s&#7869; t&#7841;o connection v&#7899;i PgBouncer thay v&#236; Postgres. </p><p>PgBouncer c&#243; v&#224;i t&#225;c d&#7909;ng ch&#237;nh nh&#432;:</p><ul><li><p>B&#7843;o v&#7879; Postgres Server kh&#7887;i connection starvation</p></li><li><p>Ti&#7871;t ki&#7879;m Postgres Server resource khi reuse connection</p></li><li><p>Throttle nh&#7919;ng c&#226;u query ch&#7841;y qu&#225; l&#226;u</p></li></ul><h3>2.  Bare metal </h3><p>&#272;&#7875; tr&#225;nh vi&#7879;c ph&#7843;i ch&#7841;y tr&#234;n nhi&#7873;u t&#7847;ng &#7843;o ho&#225; (virtualization), Cloudflare kh&#244;ng ch&#7841;y Postgres tr&#234;n m&#244;i tr&#432;&#7901;ng cloud.</p><p>Thay v&#224;o &#273;&#243; h&#7885; ch&#7841;y c&#225;c c&#7909;m Postgres server tr&#234;n nh&#7919;ng server v&#7853;t l&#253; (Bare metal).</p><h3>3.  HA Proxy l&#224;m Load Balancer</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9yBT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e6750a-a367-42e2-91ad-1babf6b796af_1702x528.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9yBT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e6750a-a367-42e2-91ad-1babf6b796af_1702x528.png 424w, https://substackcdn.com/image/fetch/$s_!9yBT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e6750a-a367-42e2-91ad-1babf6b796af_1702x528.png 848w, https://substackcdn.com/image/fetch/$s_!9yBT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e6750a-a367-42e2-91ad-1babf6b796af_1702x528.png 1272w, https://substackcdn.com/image/fetch/$s_!9yBT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e6750a-a367-42e2-91ad-1babf6b796af_1702x528.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9yBT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e6750a-a367-42e2-91ad-1babf6b796af_1702x528.png" width="1456" height="452" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68e6750a-a367-42e2-91ad-1babf6b796af_1702x528.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:452,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:328289,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9yBT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e6750a-a367-42e2-91ad-1babf6b796af_1702x528.png 424w, https://substackcdn.com/image/fetch/$s_!9yBT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e6750a-a367-42e2-91ad-1babf6b796af_1702x528.png 848w, https://substackcdn.com/image/fetch/$s_!9yBT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e6750a-a367-42e2-91ad-1babf6b796af_1702x528.png 1272w, https://substackcdn.com/image/fetch/$s_!9yBT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e6750a-a367-42e2-91ad-1babf6b796af_1702x528.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Theo l&#253; thuy&#7871;t th&#236; PgBouncer ho&#224;n to&#224;n c&#243; th&#7875; &#273;&#243;ng vai tr&#242; c&#7911;a load balancer. Tuy nhi&#234;n, load balancer kh&#244;ng ph&#7843;i l&#224; t&#237;nh n&#259;ng ch&#237;nh n&#234;n n&#7871;u d&#249;ng s&#7869; kh&#244;ng t&#7889;t cho hi&#7879;u n&#259;ng (performance).</p><p>Do &#273;&#243;, CloudFlare &#273;&#227; d&#249;ng HAProxy l&#224;m TCP proxy &#273;&#7913;ng gi&#7919;a PgBouncer v&#224; Postgres server. </p><p>&#272;&#7885;c th&#234;m: <a href="https://www.haproxy.com/blog/haproxy-forwards-over-2-million-http-requests-per-second-on-a-single-aws-arm-instance">HAProxy Forwards Over 2 Million HTTP Requests per Second on a Single Arm-based AWS Graviton2 Instance</a></p><h3>4.  Concurrency</h3><p>Congestion (t&#7855;c ngh&#7869;n) l&#224; m&#7897;t v&#7845;n &#273;&#7873; x&#7843;y ra v&#7899;i m&#7885;i m&#244; h&#236;nh client-server. Ch&#7859;ng h&#7841;n nh&#432; TCP, c&#361;ng c&#243; thu&#7853;t to&#225;n ri&#234;ng &#273;&#7875; x&#7917; l&#253; t&#7855;c ngh&#7869;n, g&#7885;i l&#224; TCP <strong>congestion avoidance</strong>.</p><p>PgBouncer v&#224; Postgres Server c&#361;ng &#225;p d&#7909;ng &#253; t&#432;&#7903;ng n&#224;y &#273;&#7875; x&#7917; l&#253; v&#7845;n &#273;&#7873; t&#7855;c ngh&#7869;n. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ujv4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c31f98-0e89-4c7b-9be1-4462db511e65_1466x794.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ujv4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c31f98-0e89-4c7b-9be1-4462db511e65_1466x794.png 424w, https://substackcdn.com/image/fetch/$s_!Ujv4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c31f98-0e89-4c7b-9be1-4462db511e65_1466x794.png 848w, https://substackcdn.com/image/fetch/$s_!Ujv4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c31f98-0e89-4c7b-9be1-4462db511e65_1466x794.png 1272w, https://substackcdn.com/image/fetch/$s_!Ujv4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c31f98-0e89-4c7b-9be1-4462db511e65_1466x794.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ujv4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c31f98-0e89-4c7b-9be1-4462db511e65_1466x794.png" width="1456" height="789" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92c31f98-0e89-4c7b-9be1-4462db511e65_1466x794.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:789,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:104410,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ujv4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c31f98-0e89-4c7b-9be1-4462db511e65_1466x794.png 424w, https://substackcdn.com/image/fetch/$s_!Ujv4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c31f98-0e89-4c7b-9be1-4462db511e65_1466x794.png 848w, https://substackcdn.com/image/fetch/$s_!Ujv4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c31f98-0e89-4c7b-9be1-4462db511e65_1466x794.png 1272w, https://substackcdn.com/image/fetch/$s_!Ujv4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c31f98-0e89-4c7b-9be1-4462db511e65_1466x794.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Khi b&#7855;t &#273;&#7847;u, PgBouncer s&#7869; t&#7841;o m&#7897;t l&#432;&#7907;ng connection pool &#273;&#7911; nh&#7887;. Sau &#273;&#243; s&#7889; l&#432;&#7907;ng connection trong pool t&#259;ng d&#7847;n. PgBouncer s&#7869; &#273;o xem m&#7895;i khi t&#259;ng s&#7889; connection &#273;&#7871;n v&#7899;i server, th&#236; th&#7901;i gian ph&#7843;n h&#7891;i (Round Time Trip - RTT) c&#243; &#273;&#432;&#7907;c &#273;&#7843;m b&#7843;o hay kh&#244;ng. N&#7871;u v&#7851;n &#273;&#432;&#7907;c &#273;&#7843;m b&#7843;o, s&#7889; connection s&#7869; t&#259;ng ti&#7871;p, c&#242;n kh&#244;ng s&#7889; connection s&#7869; gi&#7843;m cho &#273;&#7871;n khi RTT &#273;&#7841;t &#273;&#432;&#7907;c con s&#7889; mong mu&#7889;n.</p><h3>5.  Ordering Queries </h3><p>M&#7895;i c&#226;u query t&#7899;i v&#7899;i PgBouncer s&#7869; &#273;&#432;&#7907;c &#273;&#432;a v&#224;o m&#7897;t prioritized queue. D&#7921;a tr&#234;n y&#7871;u t&#7889; l&#7883;ch s&#7917;, n&#7871;u c&#226;u query ch&#7841;y c&#224;ng l&#226;u th&#236; &#273;&#7897; &#432;u ti&#234;n c&#224;ng th&#7845;p.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!v9Mv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be9979b-07b1-4a1f-b5ab-591d962f3ea7_3026x1402.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v9Mv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be9979b-07b1-4a1f-b5ab-591d962f3ea7_3026x1402.png 424w, https://substackcdn.com/image/fetch/$s_!v9Mv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be9979b-07b1-4a1f-b5ab-591d962f3ea7_3026x1402.png 848w, https://substackcdn.com/image/fetch/$s_!v9Mv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be9979b-07b1-4a1f-b5ab-591d962f3ea7_3026x1402.png 1272w, https://substackcdn.com/image/fetch/$s_!v9Mv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be9979b-07b1-4a1f-b5ab-591d962f3ea7_3026x1402.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!v9Mv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be9979b-07b1-4a1f-b5ab-591d962f3ea7_3026x1402.png" width="1456" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7be9979b-07b1-4a1f-b5ab-591d962f3ea7_3026x1402.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1233909,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!v9Mv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be9979b-07b1-4a1f-b5ab-591d962f3ea7_3026x1402.png 424w, https://substackcdn.com/image/fetch/$s_!v9Mv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be9979b-07b1-4a1f-b5ab-591d962f3ea7_3026x1402.png 848w, https://substackcdn.com/image/fetch/$s_!v9Mv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be9979b-07b1-4a1f-b5ab-591d962f3ea7_3026x1402.png 1272w, https://substackcdn.com/image/fetch/$s_!v9Mv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be9979b-07b1-4a1f-b5ab-591d962f3ea7_3026x1402.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Tuy nhi&#234;n, s&#7869; c&#243; th&#7875; c&#243; tr&#432;&#7901;ng h&#7907;p nh&#7919;ng c&#226;u query c&#243; &#273;&#7897; &#432;u ti&#234;n th&#7845;p h&#417;n s&#7869; kh&#244;ng bao gi&#7901; &#273;&#432;&#7907;c th&#7921;c thi. T&#236;nh tr&#7841;ng n&#224;y g&#7885;i l&#224; <strong>resource starvation</strong>.</p><p>&#272;&#7875; gi&#7843;i quy&#7871;t v&#7845;n &#273;&#7873; n&#224;y, PgBouncer ch&#7881; enable prioritized queue trong peak traffic. T&#7913;c l&#224; khi c&#243; traffic b&#236;nh th&#432;&#7901;ng th&#236; m&#7885;i c&#226;u query s&#7869; &#273;&#7873;u &#273;&#432;&#7907;c execute.</p><h3>6. High availability</h3><p>Th&#244;ng th&#432;&#7901;ng khi n&#243;i v&#7873; t&#237;nh s&#7861;n s&#224;ng c&#7911;a m&#7897;t h&#7879; th&#7889;ng (HA - High Availability), th&#244;ng s&#7889; &#273;&#7841;i di&#7879;n s&#7869; l&#224; uptime - t&#7913;c th&#7901;i gian h&#7879; th&#7889;ng up and running. </p><p>Khi d&#249;ng m&#7897;t SaaS, b&#234;n cung c&#7845;p d&#7883;ch v&#7909; s&#7869; ph&#7843;i &#273;&#432;a ra m&#7897;t c&#225;i SLA (Service Level Agreement) &#273;&#7875; cam k&#7871;t trong m&#7897;t n&#259;m th&#7901;i gian uptime t&#7889;i thi&#7875;u l&#224; bao nhi&#234;u. </p><p>V&#237; d&#7909;, GKE (Google Kubernetes Engine) cam k&#7871;t th&#7901;i gian uptime l&#224; 99,5%. &#272;i&#7873;u &#273;&#243; c&#243; ngh&#297;a trong m&#7897;t n&#259;m, h&#7879; th&#7889;ng c&#7911;a h&#7885; &#8220;&#273;&#432;&#7907;c ph&#233;p&#8221; b&#7883; s&#7853;p kho&#7843;ng 0,5% x 365d = 1d 19h 28m 8.8s, ho&#7863;c m&#7895;i ng&#224;y s&#7869; c&#243; th&#7875; s&#7853;p 7m 12s.</p><p>Quay tr&#7903; l&#7841;i v&#7899;i c&#7909;m Postgres cluster c&#7911;a CloudFlare. H&#7885; d&#249;ng <a href="https://github.com/sorintlab/stolon">Stolon</a> &#273;&#7875; &#273;&#7843;m b&#7843;o t&#237;nh HA.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0Kqh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cbe124a-fe97-47cf-a047-48cb35fb367a_3020x538.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0Kqh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cbe124a-fe97-47cf-a047-48cb35fb367a_3020x538.png 424w, https://substackcdn.com/image/fetch/$s_!0Kqh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cbe124a-fe97-47cf-a047-48cb35fb367a_3020x538.png 848w, https://substackcdn.com/image/fetch/$s_!0Kqh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cbe124a-fe97-47cf-a047-48cb35fb367a_3020x538.png 1272w, https://substackcdn.com/image/fetch/$s_!0Kqh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cbe124a-fe97-47cf-a047-48cb35fb367a_3020x538.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0Kqh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cbe124a-fe97-47cf-a047-48cb35fb367a_3020x538.png" width="1456" height="259" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0cbe124a-fe97-47cf-a047-48cb35fb367a_3020x538.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:259,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:561163,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0Kqh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cbe124a-fe97-47cf-a047-48cb35fb367a_3020x538.png 424w, https://substackcdn.com/image/fetch/$s_!0Kqh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cbe124a-fe97-47cf-a047-48cb35fb367a_3020x538.png 848w, https://substackcdn.com/image/fetch/$s_!0Kqh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cbe124a-fe97-47cf-a047-48cb35fb367a_3020x538.png 1272w, https://substackcdn.com/image/fetch/$s_!0Kqh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cbe124a-fe97-47cf-a047-48cb35fb367a_3020x538.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Stolon c&#243; v&#224;i nhi&#7879;m v&#7909;:</p><ul><li><p>&#272;&#7843;m b&#7843;o data s&#7869; &#273;&#432;&#7907;c replicate sang c&#225;c server trong c&#249;ng cluster m&#224; n&#243; &#273;ang qu&#7843;n l&#253;</p></li><li><p>Th&#7921;c hi&#7879;n failover. T&#7913;c khi leader database g&#7863;p v&#7845;n &#273;&#7873;, stolon s&#7869; &#273;&#7913;ng ra th&#7921;c hi&#7879;n election (b&#7847;u c&#7917;), v&#224; ch&#7885;n ra leader server m&#7899;i t&#7915; nh&#243;m follower server. </p></li></ul><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lequockhanh.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Blog c&#7911;a Kh&#225;nh! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>N&#7871;u b&#7841;n th&#7845;y b&#224;i vi&#7871;t n&#224;y h&#7919;u &#237;ch, h&#227;y nh&#7853;p email &#273;&#7875; &#273;&#259;ng k&#237; th&#224;nh vi&#234;n &#273;&#7875; kh&#244;ng b&#7887; l&#7905; nh&#7919;ng b&#224;i vi&#7871;t m&#7899;i c&#7911;a t&#244;i nh&#233; &#128170;</p><div><hr></div><h2>Tr&#237;ch d&#7851;n</h2><ul><li><p><a href="https://blog.cloudflare.com/performance-isolation-in-a-multi-tenant-database-environment/">Performance isolation in a multi-tenant database environment</a>, blog.cloudflare.com</p></li><li><p><a href="https://www.theregister.com/2023/12/13/cloudflare_internet_traffic_2023/">CloudFlare internet traffic 2023</a>, theregister.com</p></li><li><p><a href="https://newsletter.systemdesign.one/p/postgresql-scalability">PostgresSQL Scalability</a>, Neokim</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Từ ERP đến Frappe]]></title><description><![CDATA[T&#7915; doanh nghi&#7879;p l&#7899;n &#273;&#7871;n d&#7921; &#225;n c&#225; nh&#226;n]]></description><link>https://newsletter.lequockhanh.com/p/tu-erp-en-frappe</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/tu-erp-en-frappe</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Sun, 10 Mar 2024 04:00:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24960bf7-fb15-4d57-b8f6-1eb6d157cb97_1370x1194.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>H&#7891;i m&#7899;i ra tr&#432;&#7901;ng &#273;i t&#236;m vi&#7879;c, t&#244;i c&#243; &#273;i ph&#7887;ng v&#7845;n m&#7845;y c&#244;ng ty, trong &#273;&#7845;y c&#243; v&#224;i c&#244;ng ty l&#224;m v&#7873; ERP. </p><p>L&#250;c &#273;&#243;, t&#244;i c&#361;ng research kh&#225; k&#297; &#273;&#7875; xem ERP l&#224; g&#236;, nh&#432;ng th&#250; th&#7921;c l&#224; t&#244;i c&#361;ng ch&#7859;ng hi&#7875;u m&#7845;y.</p><p>M&#227;i d&#7841;o g&#7847;n &#273;&#226;y, khi c&#243; c&#244;ng vi&#7879;c li&#234;n quan, t&#244;i m&#7899;i b&#7855;t &#273;&#7847;u hi&#7875;u n&#243; l&#224; c&#225;i g&#236;.</p><h2>ERP (Enterprise Resource Planning)</h2><p>&#272;&#7875; hi&#7875;u &#273;&#432;&#7907;c ERP l&#224; g&#236; th&#236; nh&#432; c&#225;i t&#234;n g&#7885;i, ch&#7855;c ph&#7843;i l&#224;m &#7903; m&#7897;t enterprise c&#225;i &#273;&#227;.</p><p>L&#224;m startup th&#236; kh&#243; m&#224; &#273;&#7897;ng &#273;&#7871;n c&#225;i n&#224;y, b&#7903;i startup c&#243; &#237;t ng&#432;&#7901;i, &#237;t team, v&#224; h&#7847;u nh&#432; ch&#7881; xoay quanh chuy&#7879;n l&#224;m ph&#7847;n m&#7873;m. N&#234;n n&#243;i &#273;&#7871;n qu&#7843;n l&#253; resource &#7903; startup, ta th&#432;&#7901;ng n&#243;i &#273;&#7871;n qu&#7843;n l&#253; scope, cost, v&#224; time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SWSr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f07c43-aef0-4409-8b00-2e3de7895709_1056x876.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SWSr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f07c43-aef0-4409-8b00-2e3de7895709_1056x876.png 424w, https://substackcdn.com/image/fetch/$s_!SWSr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f07c43-aef0-4409-8b00-2e3de7895709_1056x876.png 848w, https://substackcdn.com/image/fetch/$s_!SWSr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f07c43-aef0-4409-8b00-2e3de7895709_1056x876.png 1272w, https://substackcdn.com/image/fetch/$s_!SWSr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f07c43-aef0-4409-8b00-2e3de7895709_1056x876.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SWSr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f07c43-aef0-4409-8b00-2e3de7895709_1056x876.png" width="496" height="411.45454545454544" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27f07c43-aef0-4409-8b00-2e3de7895709_1056x876.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:876,&quot;width&quot;:1056,&quot;resizeWidth&quot;:496,&quot;bytes&quot;:76805,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SWSr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f07c43-aef0-4409-8b00-2e3de7895709_1056x876.png 424w, https://substackcdn.com/image/fetch/$s_!SWSr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f07c43-aef0-4409-8b00-2e3de7895709_1056x876.png 848w, https://substackcdn.com/image/fetch/$s_!SWSr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f07c43-aef0-4409-8b00-2e3de7895709_1056x876.png 1272w, https://substackcdn.com/image/fetch/$s_!SWSr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f07c43-aef0-4409-8b00-2e3de7895709_1056x876.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Trong khi &#273;&#243; vi&#7879;c qu&#7843;n l&#253; resource &#7903; m&#7897;t enterprise l&#7841;i l&#224; m&#7897;t c&#226;u chuy&#7879;n ph&#7913;c t&#7841;p h&#417;n nhi&#7873;u. N&#224;o l&#224; qu&#7843;n l&#253; chu&#7895;i cung &#7913;ng (Supply Chain Management), qu&#7843;n l&#253; kh&#225;ch h&#224;ng (Customer Relation Management). N&#224;o l&#224; qu&#7843;n l&#253; nh&#226;n s&#7921; (Human Resource), qu&#7843;n l&#253; t&#224;i ch&#237;nh (Financial Accounting). V&#226;n v&#226;n v&#224; m&#226;y m&#226;y.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MFgp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24960bf7-fb15-4d57-b8f6-1eb6d157cb97_1370x1194.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MFgp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24960bf7-fb15-4d57-b8f6-1eb6d157cb97_1370x1194.png 424w, https://substackcdn.com/image/fetch/$s_!MFgp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24960bf7-fb15-4d57-b8f6-1eb6d157cb97_1370x1194.png 848w, https://substackcdn.com/image/fetch/$s_!MFgp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24960bf7-fb15-4d57-b8f6-1eb6d157cb97_1370x1194.png 1272w, https://substackcdn.com/image/fetch/$s_!MFgp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24960bf7-fb15-4d57-b8f6-1eb6d157cb97_1370x1194.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MFgp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24960bf7-fb15-4d57-b8f6-1eb6d157cb97_1370x1194.png" width="1370" height="1194" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24960bf7-fb15-4d57-b8f6-1eb6d157cb97_1370x1194.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1194,&quot;width&quot;:1370,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:409938,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MFgp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24960bf7-fb15-4d57-b8f6-1eb6d157cb97_1370x1194.png 424w, https://substackcdn.com/image/fetch/$s_!MFgp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24960bf7-fb15-4d57-b8f6-1eb6d157cb97_1370x1194.png 848w, https://substackcdn.com/image/fetch/$s_!MFgp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24960bf7-fb15-4d57-b8f6-1eb6d157cb97_1370x1194.png 1272w, https://substackcdn.com/image/fetch/$s_!MFgp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24960bf7-fb15-4d57-b8f6-1eb6d157cb97_1370x1194.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Khi doanh nghi&#7879;p b&#7855;t &#273;&#7847;u ph&#236;nh ra, c&#225;c ph&#242;ng ban b&#7855;t &#273;&#7847;u t&#259;ng l&#234;n, l&#250;c n&#224;y c&#243; v&#224;i l&#7921;a ch&#7885;n. </p><p>M&#7897;t l&#224; m&#7841;nh ai n&#7845;y l&#224;m. Ph&#242;ng nh&#226;n s&#7921; d&#249;ng Google Sheet qu&#7843;n l&#253; danh s&#225;ch nh&#226;n vi&#234;n. Ph&#242;ng sales th&#236; xin &#273;&#432;&#7907;c budget n&#234;n mua m&#7897;t package nh&#7887; c&#7911;a SalesForce &#273;&#7875; qu&#7843;n l&#253; kh&#225;ch h&#224;ng. Trong khi b&#234;n l&#224;m ph&#7847;n m&#7873;m do bi&#7871;t v&#7873; c&#244;ng ngh&#7879; n&#234;n t&#7921; c&#224;i ph&#7847;n m&#7873;m opensource, kh&#7887;i xin budget. Tuy nhi&#234;n c&#225;ch n&#224;y nh&#236;n qua &#273;&#227; th&#7845;y l&#224; r&#7845;t h&#7895;n lo&#7841;n.</p><p>Hai l&#224; d&#249;ng ERP. ERP th&#432;&#7901;ng l&#224; m&#7897;t ph&#7847;n m&#7873;m, all-in-one, mi&#7877;n ph&#237; ho&#7863;c tr&#7843; ph&#237;. T&#7845;t c&#7843; ph&#242;ng ban chuy&#7875;n h&#7871;t qua d&#249;ng ph&#7847;n m&#7873;m n&#224;y. Mi&#7877;n ph&#237; th&#236; c&#7847;n m&#7897;t &#273;&#7897;i ng&#361; IT c&#243; chuy&#234;n m&#244;n &#273;&#7875; setup, maintain. C&#242;n d&#249;ng tr&#7843; ph&#237; th&#236; ch&#7881; c&#7847;n b&#7887; ti&#7873;n ra, b&#234;n cung c&#7845;p d&#7883;ch v&#7909; lo h&#7871;t. </p><p>B&#7841;n v&#224;o link n&#224;y s&#7869; th&#7845;y danh s&#225;ch c&#225;c ph&#7847;n m&#7873;m ERP ph&#7893; bi&#7871;n hi&#7879;n t&#7841;i: <a href="https://en.wikipedia.org/wiki/List_of_ERP_software_packages">https://en.wikipedia.org/wiki/List_of_ERP_software_packages</a></p><p>N&#7871;u danh s&#225;ch b&#234;n tr&#234;n qu&#225; d&#224;i, b&#7841;n c&#243; th&#7875; nh&#7899; 8 c&#225;i t&#234;n d&#432;&#7899;i &#273;&#226;y th&#244;i c&#361;ng &#273;&#432;&#7907;c:</p><ul><li><p><a href="https://zapier.com/blog/best-erp-software/#oracle">Oracle NetSuite ERP</a> for the best all-around ERP software</p></li><li><p><a href="https://zapier.com/blog/best-erp-software/#odoo">Odoo ERP</a>&nbsp;for custom business processes</p></li><li><p><a href="https://zapier.com/blog/best-erp-software/#sap">SAP Business One</a> for growing companies</p></li><li><p><a href="https://zapier.com/blog/best-erp-software/#erpnext">ERPNext</a> for the best value ERP</p></li><li><p><a href="https://zapier.com/blog/best-erp-software/#dynamics">Microsoft Dynamics 365</a> for dynamic use cases</p></li><li><p><a href="https://zapier.com/blog/best-erp-software/#acumatica">Acumatica Cloud ERP</a> for the best user experience</p></li><li><p><a href="https://zapier.com/blog/best-erp-software/#katana">Katana</a> for inventory management</p></li><li><p><a href="https://zapier.com/blog/best-erp-software/#sage">Sage Intacct</a> for accounting</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_rxr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44411dcb-16f5-4d2d-8aa3-5d921856b3df_1976x1674.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_rxr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44411dcb-16f5-4d2d-8aa3-5d921856b3df_1976x1674.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_rxr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44411dcb-16f5-4d2d-8aa3-5d921856b3df_1976x1674.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_rxr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44411dcb-16f5-4d2d-8aa3-5d921856b3df_1976x1674.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_rxr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44411dcb-16f5-4d2d-8aa3-5d921856b3df_1976x1674.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_rxr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44411dcb-16f5-4d2d-8aa3-5d921856b3df_1976x1674.jpeg" width="1456" height="1233" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44411dcb-16f5-4d2d-8aa3-5d921856b3df_1976x1674.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1233,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:916744,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_rxr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44411dcb-16f5-4d2d-8aa3-5d921856b3df_1976x1674.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_rxr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44411dcb-16f5-4d2d-8aa3-5d921856b3df_1976x1674.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_rxr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44411dcb-16f5-4d2d-8aa3-5d921856b3df_1976x1674.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_rxr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44411dcb-16f5-4d2d-8aa3-5d921856b3df_1976x1674.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Tr&#234;n &#273;&#432;&#7901;ng ra s&#226;n bay T&#226;n S&#417;n Nh&#7845;t t&#244;i c&#243; th&#7845;y c&#225;i bi&#7875;n qu&#7843;ng c&#225;o Odoo</figcaption></figure></div><h2>Frappe - low code platform</h2><p>L&#7841;i &#273;&#7875; &#253; danh s&#225;ch 8 ph&#7847;n m&#7873;m b&#234;n tr&#234;n, b&#7841;n s&#7869; th&#7845;y ERPNext. </p><p>ERPNext &#273;&#432;&#7907;c build tr&#234;n m&#7897;t low-code platform t&#234;n l&#224; Frappe.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ax82!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13fdc45c-4dfb-4fbb-afef-c5918e657bbb_1694x992.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ax82!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13fdc45c-4dfb-4fbb-afef-c5918e657bbb_1694x992.png 424w, https://substackcdn.com/image/fetch/$s_!ax82!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13fdc45c-4dfb-4fbb-afef-c5918e657bbb_1694x992.png 848w, https://substackcdn.com/image/fetch/$s_!ax82!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13fdc45c-4dfb-4fbb-afef-c5918e657bbb_1694x992.png 1272w, https://substackcdn.com/image/fetch/$s_!ax82!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13fdc45c-4dfb-4fbb-afef-c5918e657bbb_1694x992.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ax82!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13fdc45c-4dfb-4fbb-afef-c5918e657bbb_1694x992.png" width="1456" height="853" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/13fdc45c-4dfb-4fbb-afef-c5918e657bbb_1694x992.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:853,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:775516,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ax82!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13fdc45c-4dfb-4fbb-afef-c5918e657bbb_1694x992.png 424w, https://substackcdn.com/image/fetch/$s_!ax82!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13fdc45c-4dfb-4fbb-afef-c5918e657bbb_1694x992.png 848w, https://substackcdn.com/image/fetch/$s_!ax82!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13fdc45c-4dfb-4fbb-afef-c5918e657bbb_1694x992.png 1272w, https://substackcdn.com/image/fetch/$s_!ax82!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13fdc45c-4dfb-4fbb-afef-c5918e657bbb_1694x992.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>L&#224; m&#7897;t engineer, th&#250; th&#7921;c t&#244;i kh&#244;ng quan t&#226;m m&#7845;y &#273;&#7871;n ERP v&#236; c&#417; b&#7843;n n&#243; l&#224; m&#7897;t ph&#7847;n m&#7873;m t&#7853;p h&#7907;p c&#7911;a c&#225;c nghi&#7879;p v&#7909; kh&#225;c nhau trong doanh nghi&#7879;p. C&#225;i t&#244;i quan t&#226;m h&#417;n l&#224; ng&#432;&#7901;i ta d&#249;ng c&#225;i g&#236; &#273;&#7875; l&#224;m ra ph&#7847;n m&#7873;m &#7845;y.</p><p>Frappe c&#243; m&#7897;t v&#224;i y&#7871;u t&#7889; l&#224;m t&#244;i quan t&#226;m.</p><p>M&#7897;t l&#224; Open Source. Frappe c&#243; m&#7897;t c&#226;u &#273;&#7841;i &#253; l&#224; &#8220;Ch&#250;ng t&#244;i s&#7869; cho m&#7845;y c&#244;ng ty l&#224;m ERP thu ph&#237; ra chu&#7891;ng g&#224;&#8221;. Nghe c&#243; v&#7867; h&#417;i drama nh&#432;ng m&#224; t&#244;i th&#237;ch s&#7921; t&#7921; tin nh&#432; th&#7871;.</p><p>Hai l&#224; Low-Code. Frappe s&#7869; lo t&#7845;t c&#7843; c&#225;c kh&#226;u h&#7853;u c&#7847;n &#273;&#7875; l&#224;m m&#7897;t ph&#7847;n m&#7873;m, v&#224; lo&#7841;i b&#7887; h&#7847;u h&#7871;t s&#7921; l&#7863;p l&#7841;i. N&#7871;u ph&#7847;n m&#7873;m ch&#7881; c&#243; m&#7845;y t&#225;c v&#7909; &#273;&#417;n gi&#7843;n, ta kh&#244;ng c&#7847;n ph&#7843;i code, t&#7913;c no-code. C&#242;n n&#7871;u ph&#7913;c t&#7841;p h&#417;n ch&#250;t, th&#236; c&#361;ng ch&#7881; c&#7847;n quan t&#226;m &#273;&#7871;n nh&#7919;ng ph&#7847;n quan tr&#7885;ng, t&#7913;c low-code. </p><p>Ba l&#224; t&#237;nh Flexible. V&#7899;i Frappe v&#224; m&#7897;t ch&#250;t th&#7901;i gian, b&#7845;t k&#236; ai c&#361;ng c&#243; th&#7875; build ra m&#7897;t phi&#234;n b&#7843;n ERP cho ri&#234;ng h&#7885;. Hay nh&#432; trang <a href="https://frappe.school">https://frappe.school</a> n&#224;y, n&#243; &#273;&#432;&#7907;c build ho&#224;n to&#224;n t&#7915; Frappe.</p><h2>T&#7841;m k&#7871;t</h2><p>Trong m&#7897;t b&#224;i vi&#7871;t c&#361; v&#7873; learning framework, t&#244;i c&#243; nh&#7855;c &#273;&#7871;n vi&#7879;c t&#244;i mu&#7889;n n&#226;ng c&#7845;p kh&#7843; n&#259;ng h&#7885;c c&#7911;a m&#236;nh l&#234;n t&#7915; m&#7913;c &#273;&#7897; cao h&#417;n nh&#432; l&#224; &#273;i d&#7841;y c&#225;i m&#236;nh &#273;&#227; bi&#7871;t. </p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;5b00fb11-6493-4b17-8eaf-a72f44e62080&quot;,&quot;caption&quot;:&quot;T&#7915; tr&#432;&#7899;c &#273;&#7871;n nay t&#7921; h&#7885;c lu&#244;n &#273;&#432;&#7907;c coi l&#224; m&#7897;t trong nh&#7919;ng k&#297; n&#259;ng quan tr&#7885;ng nh&#7845;t m&#224; m&#7895;i ng&#432;&#7901;i c&#7847;n ph&#7843;i c&#243;. &#221; th&#7913;c &#273;&#432;&#7907;c &#273;i&#7873;u &#273;&#243;, b&#7843;n th&#226;n t&#244;i c&#361;ng &#273;&#227; &#273;&#7847;u t&#432; r&#7845;t nhi&#7873;u th&#7901;i gian cho vi&#7879;c t&#7921; h&#7885;c. H&#7885;c &#273;i &#273;&#244;i v&#7899;i h&#224;nh, nh&#432;ng &#8220;h&#224;nh&#8221; ra sao th&#236; c&#243; mu&#244;n v&#224;n ph&#432;&#417;ng ph&#225;p. D&#432;&#7899;i &#273;&#226;y l&#224; nh&#7919;ng ph&#432;&#417;ng ph&#225;p m&#224; t&#244;i &#273;ang d&#249;ng m&#7895;i ng&#224;y.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;My learning framework&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:34992421,&quot;name&quot;:&quot;Khanh Le&quot;,&quot;bio&quot;:&quot;Vi&#7871;t v&#7873; C&#244;ng Ngh&#7879;, Th&#7875; Thao, v&#224; &#272;&#7901;i S&#7889;ng&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/418aa81d-4b8d-4704-bece-41c3ba3a3a06_1002x1000.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-01-14T15:34:23.259Z&quot;,&quot;cover_image&quot;:&quot;https://m.media-amazon.com/images/I/51LZNYIfafL._SX342_SY445_QL70_ML2_.jpg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://newsletter.lequockhanh.com/p/my-learning-framework&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:140608535,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Blog c&#7911;a Kh&#225;nh&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0318ebe5-ab77-42c4-874c-aa9b62d1cb89_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>C&#244;ng c&#7909; &#273;&#7875; hi&#7879;n th&#7921;c ho&#225; vi&#7879;c d&#7841;y &#273;&#243; l&#250;c tr&#432;&#7899;c l&#224; Udemy, c&#242;n b&#226;y gi&#7901; th&#236; &#273;&#227; c&#243; th&#234;m Frappe.</p>]]></content:encoded></item><item><title><![CDATA[Scale Kafka consumer với Keda]]></title><description><![CDATA[Ghi ch&#250; nhanh v&#7873; c&#225;ch s&#7917; d&#7909;ng Keda trong vi&#7879;c scale Kafka consumer]]></description><link>https://newsletter.lequockhanh.com/p/scale-kafka-consumer-voi-keda</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/scale-kafka-consumer-voi-keda</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Mon, 05 Feb 2024 17:01:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!G8Gw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013648b2-7f45-4825-9da6-0186efd3132d_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>B&#224;i h&#432;&#7899;ng d&#7851;n d&#432;&#7899;i &#273;&#226;y y&#234;u c&#7847;u b&#7841;n &#273;&#227; c&#224;i &#273;&#432;&#7907;c <a href="https://keda.sh/">Keda</a> tr&#234;n m&#7897;t c&#7909;m K8S Cluster. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G8Gw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013648b2-7f45-4825-9da6-0186efd3132d_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G8Gw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013648b2-7f45-4825-9da6-0186efd3132d_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!G8Gw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013648b2-7f45-4825-9da6-0186efd3132d_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!G8Gw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013648b2-7f45-4825-9da6-0186efd3132d_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!G8Gw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013648b2-7f45-4825-9da6-0186efd3132d_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G8Gw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013648b2-7f45-4825-9da6-0186efd3132d_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/013648b2-7f45-4825-9da6-0186efd3132d_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:78689,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!G8Gw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013648b2-7f45-4825-9da6-0186efd3132d_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!G8Gw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013648b2-7f45-4825-9da6-0186efd3132d_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!G8Gw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013648b2-7f45-4825-9da6-0186efd3132d_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!G8Gw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013648b2-7f45-4825-9da6-0186efd3132d_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#272;&#7847;u ti&#234;n, ta c&#7847;n t&#7841;o m&#7897;t kafka topic m&#7899;i v&#7899;i partitions = s&#7889; kafka broker * h&#7879; s&#7889; t&#7921; ch&#7885;n. N&#7871;u s&#7889; kafka broker l&#224; 3, v&#224; b&#7841;n ch&#7885;n h&#7879; s&#7889; l&#224; 4, th&#236; s&#7869; t&#7841;o topic v&#7899;i partitions l&#224; 12. L&#432;u &#253; con s&#7889; 12 c&#361;ng l&#224; s&#7889; l&#432;&#7907;ng maxReplica m&#224; Keda s&#7869; scale l&#234;n trong qu&#225; tr&#236;nh autoscale. </p><pre><code>./kafka-topics.sh --create --topic kafka-test-topic --partitions 12 --replication-factor 1 --bootstrap-server kafka.kafka:9092</code></pre><p>Sau khi t&#7841;o &#273;&#432;&#7907;c topic, vi&#7879;c c&#7847;n l&#224;m l&#224; produce message v&#224;o trong topic &#273;&#243;. Ta c&#243; th&#7875; s&#7917; d&#7909;ng th&#432; vi&#7879;n opensource <a href="https://github.com/edenhill/kcat">kafkacat</a> &#273;&#7875; ph&#7909;c v&#7909; m&#7909;c &#273;&#237;ch tr&#234;n. B&#234;n d&#432;&#7899;i l&#224; &#273;&#7883;nh ngh&#297;a c&#7911;a m&#7897;t Deployment s&#7917; d&#7909;ng kafkacat.</p><pre><code>apiVersion: apps/v1
kind: Deployment
metadata:
  name: kafkacat-producer
  namespace: keda
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kafkacat-producer
  template:
    metadata:
      labels:
        app: kafkacat-producer
    spec:
      containers:
        - name: kafkacat-producer
          image: confluentinc/cp-kafkacat
          command:
            - "sh"
            - "-c"
            - |
              for i in $(seq 1 1000); do
                echo "Message $i" | kafkacat -b kafka.kafka:9092 -t kafka-test-topic -P
                sleep 0.1
              done
          resources:
            limits:
              cpu: 100m
              memory: 50Mi</code></pre><p>Ti&#7871;p theo ta c&#7847;n t&#7841;o consumer. </p><pre><code>apiVersion: apps/v1
kind: Deployment
metadata:
  name: kafkacat-consumer
  namespace: keda
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kafkacat-consumer
  template:
    metadata:
      labels:
        app: kafkacat-consumer
    spec:
      containers:
        - name: kafkacat-consumer
          image: confluentinc/cp-kafkacat
          command:
            - "sh"
            - "-c"
            - "kafkacat -b kafka.kafka:9092 -G kafka-test-consumer-group kafka-test-topic"
          tty: true</code></pre><p>B&#432;&#7899;c cu&#7889;i c&#249;ng l&#224; t&#7841;o ScaledObject &#273;&#7875; Keda bi&#7871;t r&#7857;ng c&#7847;n ph&#7843;i scale deployment n&#224;o (scaleTargetRef.name), v&#224; scale d&#7921;a v&#224;o input n&#224;o (metadata.lagThreshold).</p><pre><code>apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: kafkacat-consumer-scaledobject
  namespace: keda
spec:
  scaleTargetRef:
    name: kafkacat-consumer
  pollingInterval: 30
  triggers:
  - type: kafka
    metadata:
      bootstrapServers: kafka.kafka:9092
      consumerGroup: kafka-test-consumer-group
      topic: kafka-test-topic
      lagThreshold: "10"
      offsetResetPolicy: latest</code></pre><p>N&#7871;u nh&#432; c&#225;c b&#432;&#7899;c setup kh&#244;ng c&#243; v&#7845;n &#273;&#7873;, kafka consumer gi&#7901; &#273;&#226;y &#273;&#227; autoscale d&#7921;a tr&#234;n s&#7889; lag threshold! </p><p>H&#227;y t&#259;ng gi&#7843;m s&#7889; l&#432;&#7907;ng replicas c&#7911;a producers &#273;&#7875; theo d&#245;i s&#7921; t&#259;ng gi&#7843;m t&#432;&#417;ng &#7913;ng c&#7911;a consumers.</p>]]></content:encoded></item><item><title><![CDATA[Hiểu về Pod và Service trong K8S]]></title><description><![CDATA[Hi&#7875;u v&#7873; 2 th&#224;nh ph&#7847;n c&#417; b&#7843;n nh&#7845;t trong K8S]]></description><link>https://newsletter.lequockhanh.com/p/hieu-ve-pod-va-service-trong-k8s</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/hieu-ve-pod-va-service-trong-k8s</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Tue, 26 Dec 2023 07:01:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fIAm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaea7988-d603-47d7-b4cd-c3ced6044052_3412x1631.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fIAm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaea7988-d603-47d7-b4cd-c3ced6044052_3412x1631.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fIAm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaea7988-d603-47d7-b4cd-c3ced6044052_3412x1631.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fIAm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaea7988-d603-47d7-b4cd-c3ced6044052_3412x1631.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fIAm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaea7988-d603-47d7-b4cd-c3ced6044052_3412x1631.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fIAm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaea7988-d603-47d7-b4cd-c3ced6044052_3412x1631.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fIAm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaea7988-d603-47d7-b4cd-c3ced6044052_3412x1631.jpeg" width="1456" height="696" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aaea7988-d603-47d7-b4cd-c3ced6044052_3412x1631.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:696,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1465097,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fIAm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaea7988-d603-47d7-b4cd-c3ced6044052_3412x1631.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fIAm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaea7988-d603-47d7-b4cd-c3ced6044052_3412x1631.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fIAm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaea7988-d603-47d7-b4cd-c3ced6044052_3412x1631.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fIAm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaea7988-d603-47d7-b4cd-c3ced6044052_3412x1631.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@cecepr?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Cecep Rahmat</a> on <a href="https://unsplash.com/photos/a-bunch-of-tools-are-hanging-on-a-wall-eQjMeEO4BJY?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></figcaption></figure></div><p>N&#7871;u b&#7841;n d&#249;ng K8S h&#7857;ng ng&#224;y, ch&#7855;c ch&#7855;n pod v&#224; service l&#224; hai resource b&#7841;n b&#7855;t g&#7863;p nhi&#7873;u nh&#7845;t. Trong b&#224;i vi&#7871;t n&#224;y, ch&#250;ng ta c&#249;ng nhau t&#236;m hi&#7875;u c&#225;ch th&#7913;c pod v&#224; service ho&#7841;t &#273;&#7897;ng.</p><p>Khi t&#7841;o m&#7897;t Service, c&#243; hai th&#244;ng tin b&#7855;t bu&#7897;c ph&#7843;i &#273;&#432;&#7907;c &#273;&#7883;nh ngh&#297;a</p><ol><li><p>selector, &#273;&#7875; ch&#7881; ra service n&#224;y s&#7869; tr&#7887; &#273;&#7871;n pod n&#224;o</p></li><li><p>targetPort, l&#224; port c&#7911;a pod d&#249;ng &#273;&#7875; nh&#7853;n traffic</p></li></ol><p>D&#432;&#7899;i &#273;&#226;y l&#224; m&#7897;t v&#237; d&#7909; v&#7873; c&#225;ch define service:</p><pre><code># service.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  ports:
  - port: 80
    <strong>targetPort: 3000</strong>
  selector:
    <strong>name: app</strong></code></pre><p>Khi ch&#7841;y l&#7879;nh &#8220;kubectl apply -f service.yaml&#8221;, K8S s&#7869; t&#236;m t&#7845;t c&#7843; c&#225;c pod c&#243; label tr&#249;ng v&#7899;i selector c&#7911;a service (name:app), v&#224; thu th&#7853;p t&#7845;t c&#7843; IP Address c&#7911;a c&#225;c pod &#273;&#243;.</p><p>Ti&#7871;p &#273;&#7871;n, v&#7899;i m&#7895;i IP Address thu th&#7853;p &#273;&#432;&#7907;c, K8S s&#7869; t&#7841;o ra m&#7897;t endpoint t&#432;&#417;ng &#7913;ng.</p><pre><code>IP address + port = endpoint
---------------------------------
10.0.0.3   + 3000 = 10.0.0.3:3000</code></pre><p>Nh&#432; v&#7853;y c&#243; bao nhi&#234;u pod c&#243; label match selector, th&#236; c&#243; b&#7845;y nhi&#234;u endpoint &#273;&#432;&#7907;c t&#7841;o. &#272;&#7871;n &#273;&#226;y, t&#244;i m&#7899;i &#273;&#7863;t c&#226;u h&#7887;i, t&#7841;i sao l&#7841;i c&#7847;n ph&#7843;i c&#243; endpoint? R&#245; r&#224;ng n&#7871;u endpoint ch&#7881; l&#224; t&#7893; h&#7907;p c&#7911;a IP Address v&#224; Port, th&#236; r&#245; r&#224;ng l&#224; ch&#7881; c&#7847;n Service v&#224; Pod l&#224; &#273;&#227; &#273;&#7911; r&#7891;i.</p><p>Ho&#225; ra m&#7889;i quan h&#7879; gi&#7919;a service v&#224; pod kh&#244;ng ph&#7843;i l&#224; 1-n nh&#432; t&#244;i ngh&#297;, m&#224; l&#224; quan h&#7879; n-n. T&#7913;c m&#7897;t service c&#243; th&#7875; g&#7855;n v&#7899;i nhi&#7873;u pod, v&#224; ng&#432;&#7907;c l&#7841;i, m&#7897;t pod c&#243; th&#7875; g&#7855;n v&#7899;i nhi&#7873;u service. Do &#273;&#243; c&#7847;n ph&#7843;i c&#243; m&#7897;t resource trung gian, &#273;&#243; ch&#237;nh l&#224; endpoint.</p><h3>Endpoint &#273;&#432;&#7907;c d&#249;ng v&#224;o nh&#7919;ng vi&#7879;c g&#236;</h3><p>Endpoint &#273;&#432;&#7907;c d&#249;ng trong m&#7897;t s&#7889; th&#224;nh ph&#7847;n c&#7911;a k8s nh&#432;</p><ul><li><p>kube-proxy</p></li><li><p>ingress-controller</p></li><li><p>network policy</p></li></ul><p>Kube-proxy l&#224; th&#224;nh ph&#7847;n d&#249;ng &#273;&#7875; mapping Service IP Address sang Pod IP Address. Vi&#7879;c mapping t&#7915; IP n&#224;y sang IP kh&#225;c nh&#432; v&#7853;y ng&#432;&#7901;i ta g&#7885;i l&#224; <strong>NAT</strong>. C&#7909; th&#7875; h&#417;n trong kube-proxy, vi&#7879;c &#273;&#7893;i IP Address c&#7911;a destination, &#273;&#432;&#7907;c g&#7885;i l&#224; <strong>DNAT</strong>. </p><p>&#272;&#7875; th&#7921;c hi&#7879;n vi&#7879;c mapping, kube-proxy s&#7917; d&#7909;ng iptables c&#7911;a Linux. Ch&#7841;y c&#226;u l&#7879;nh d&#432;&#7899;i &#273;&#7875; xem nh&#7919;ng resources li&#234;n quan &#273;&#7871;n kube-proxy. </p><pre><code>kubectl get all -n kube-system | grep proxy</code></pre><p>Khi th&#7921;c hi&#7879;n xo&#225; pod. Lu&#7891;ng logic s&#7869; nh&#432; sau:</p><ol><li><p>Ch&#7841;y c&#226;u l&#7879;nh &#8220;kubectl delete pod A&#8221;</p></li><li><p>Request &#273;&#432;&#7907;c g&#7917;i &#273;&#7871;n API server</p></li><li><p>API Server forward request &#273;&#7871;n Endpoint Controller</p></li><li><p>Endpoint Controller b&#225;o l&#7841;i cho API server r&#7857;ng c&#7847;n remove endpoint c&#7911;a pod A ra kh&#7887;i list</p></li><li><p>API Server remove endpoint c&#7911;a pod A ra kh&#7887;i etcd</p></li><li><p>API Server b&#225;o cho kubelet &#7903; node m&#224; c&#243; pod v&#7915;a m&#7899;i b&#7883; xo&#225; endpoint</p></li><li><p>kubelet b&#225;o cho kube-proxy, CoreDNS, Ingress Controller, vv r&#7857;ng endpoint c&#7911;a pod A &#273;&#227; b&#7883; xo&#225;</p></li><li><p>kube-proxy nh&#7853;n &#273;&#432;&#7907;c th&#244;ng b&#225;o, li&#7873;n xo&#225; c&#225;c mapping c&#7911;a service v&#7899;i pod A ra kh&#7887;i iptables</p></li></ol><p>&#272;&#7871;n b&#432;&#7899;c n&#224;y b&#7845;t k&#7875; request n&#224;o &#273;&#7871;n service &#273;&#432;&#7907;c v&#7899;i pod A &#273;&#7873;u s&#7869; fail, v&#236; kh&#244;ng t&#236;m th&#7845;y trong iptables n&#7919;a. Tuy nhi&#234;n, &#273;&#7871;n &#273;&#226;y t&#244;i m&#7899;i &#273;&#7863;t c&#226;u h&#7887;i: N&#7871;u Service tr&#7887; &#273;&#7871;n nhi&#7873;u pod, v&#224; m&#7895;i pod l&#7841;i n&#7857;m &#7903; nh&#7919;ng node kh&#225;c nhau th&#236; c&#243; chuy&#7879;n g&#236; x&#7843;y ra hay kh&#244;ng?</p><h3>&#272;i&#7873;u g&#236; x&#7843;y ra khi th&#7921;c hi&#7879;n m&#7897;t request &#273;&#7871;n m&#7897;t K8S service</h3><p>Th&#7921;c ra K8S service kh&#244;ng h&#7873; t&#7891;n t&#7841;i. Th&#7913; m&#224; b&#7841;n th&#7845;y Service IP Address c&#361;ng ch&#7881; l&#224; virtual IP, t&#7913;c kh&#244;ng c&#243; b&#7845;t k&#236; m&#7897;t process n&#224;o listen tr&#234;n IP v&#224; port c&#7911;a Service.</p><p>Gi&#7843; s&#7917; c&#243; 2 pod A v&#224; B, &#273;&#432;&#7907;c deploy tr&#234;n 2 node kh&#225;c nhau nodeA, nodeB. C&#7843; 2 pods &#273;&#432;&#7907;c tr&#7887; v&#224;o b&#7903;i 1 service duy nh&#7845;t, g&#7885;i l&#224; S. Gi&#7901; &#273;&#7913;ng &#7903; m&#7897;t pod n&#224;o &#273;&#243; trong nodeC, th&#7921;c hi&#7879;n m&#7897;t request &#273;&#7871;n service S, chuy&#7879;n g&#236; s&#7869; x&#7843;y ra?</p><ol><li><p>Client th&#7921;c hi&#7879;n m&#7897;t DNS query &#273;&#7871;n kube-dns</p></li><li><p>kube-dns tr&#7843; v&#7873; virtual IP c&#7911;a Service</p></li><li><p>client th&#7921;c hi&#7879;n request &#273;&#7871;n virtual IP c&#7911;a Service</p></li><li><p>kube-proxy &#7903; source node th&#7921;c hi&#7879;n DNAT (ServiceIP &#8594;  Destination PodIP)</p></li><li><p>kube-proxy forward request &#273;&#7871;n Pod IP</p></li><li><p>Pod nh&#7853;n request v&#224; tr&#7843; v&#7873; response</p></li><li><p>kube-proxy &#7903; source node th&#7921;c hi&#7879;n SNAT (Destination PodIP &#8594; ServiceIP)</p></li><li><p>Response tr&#7843; v&#7873; cho client</p></li></ol><p>N&#7871;u suy ng&#7851;m m&#7897;t ch&#250;t &#7903; b&#432;&#7899;c 4, ta s&#7869; c&#243; th&#7875; &#273;&#7863;t m&#7897;t c&#226;u h&#7887;i l&#224;: V&#7853;y ph&#7843;i ch&#259;ng kube-proxy &#7903; m&#7895;i node s&#7869; ph&#7843;i l&#432;u to&#224;n b&#7897; th&#244;ng tin c&#7911;a t&#7845;t c&#7843; c&#225;c Pod? &#272;&#7875; tr&#7843; l&#7901;i c&#226;u h&#7887;i n&#224;y, t&#244;i v&#224;o trong pod kube-proxy v&#224; log ra to&#224;n b&#7897; c&#225;c action tr&#234;n iptables</p><pre><code>kubectl exec -it kube-proxy-pod-name -- sh -c "iptables-save"</code></pre><p>Trong ph&#7847;n log &#273;&#432;&#7907;c in ra, c&#243; th&#7875; th&#7845;y c&#7843; nh&#7919;ng update c&#7911;a c&#225;c endpoint, ho&#7863;c service g&#7855;n v&#7899;i pod n&#7857;m tr&#234;n node kh&#225;c.</p><p>&#7902; gi&#7919;a b&#432;&#7899;c 5 v&#224; b&#432;&#7899;c 6, t&#244;i c&#243; th&#7855;c m&#7855;c l&#224; vi&#7879;c giao ti&#7871;p gi&#7919;a 2 node kh&#225;c nhau &#273;&#432;&#7907;c th&#7921;c hi&#7879;n ra sao, c&#226;u tr&#7843; l&#7901;i l&#224; &#273;&#243; l&#224; ph&#7847;n vi&#7879;c c&#7911;a CNI.</p>]]></content:encoded></item><item><title><![CDATA[Cách đo đạc hiệu suất làm việc của một product team (Phần 2)]]></title><description><![CDATA[Dora, Space, Engineering Metrics, Devlake]]></description><link>https://newsletter.lequockhanh.com/p/cach-o-ac-hieu-suat-lam-viec-cua-d7e</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/cach-o-ac-hieu-suat-lam-viec-cua-d7e</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Mon, 18 Dec 2023 03:43:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Grgf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Grgf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Grgf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 424w, https://substackcdn.com/image/fetch/$s_!Grgf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 848w, https://substackcdn.com/image/fetch/$s_!Grgf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 1272w, https://substackcdn.com/image/fetch/$s_!Grgf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Grgf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png" width="1269" height="594" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ebb22e19-468e-43af-b190-f63f75f150f8_1269x594.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:594,&quot;width&quot;:1269,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:284940,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Grgf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 424w, https://substackcdn.com/image/fetch/$s_!Grgf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 848w, https://substackcdn.com/image/fetch/$s_!Grgf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 1272w, https://substackcdn.com/image/fetch/$s_!Grgf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Peter Drucker, cha &#273;&#7867; c&#7911;a ng&#224;nh qu&#7843;n tr&#7883; kinh doanh t&#7915;ng n&#243;i r&#7857;ng th&#7913; g&#236; kh&#244;ng &#273;o &#273;&#7841;c &#273;&#432;&#7907;c th&#236; kh&#244;ng th&#7875; c&#7843;i thi&#7879;n &#273;&#432;&#7907;c</figcaption></figure></div><p>&#7902; ph&#7847;n tr&#432;&#7899;c ch&#250;ng ta &#273;&#227; l&#7845;y m&#7897;t v&#224;i v&#237; d&#7909; v&#7873; c&#225;c metrics li&#234;n quan &#273;&#7871;n productivity c&#7911;a developer nh&#432; s&#7921; ph&#226;n b&#7893; v&#7873; s&#7889; l&#432;&#7907;ng commits, s&#7889; pull requests theo t&#7915;ng th&#225;ng, hay trung b&#236;nh th&#7901;i gian coding. Trong ph&#7847;n n&#224;y, t&#244;i s&#7869; ti&#7871;p t&#7909;c mang &#273;&#7871;n th&#234;m m&#7897;t v&#224;i v&#237; d&#7909; v&#7873; c&#225;ch &#273;o l&#432;&#7901;ng productivity cho c&#225;c role kh&#225;c nh&#432; Product Manager, QA Engineer, hay c&#7843; m&#7897;t team.</p><h3>Issue Throughput</h3><p>N&#7871;u request throughput c&#243; th&#7875; ph&#7847;n n&#224;o n&#243;i l&#234;n &#273;&#432;&#7907;c hi&#7879;u n&#259;ng c&#7911;a m&#7897;t application, th&#236; issue throughtput c&#361;ng ph&#7847;n n&#224;o mi&#234;u t&#7843; &#273;&#432;&#7907;c hi&#7879;u su&#7845;t c&#7911;a m&#7897;t team. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YxS7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4df3928-d65c-47af-87d9-e4b4d12ea57c_634x458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YxS7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4df3928-d65c-47af-87d9-e4b4d12ea57c_634x458.png 424w, https://substackcdn.com/image/fetch/$s_!YxS7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4df3928-d65c-47af-87d9-e4b4d12ea57c_634x458.png 848w, https://substackcdn.com/image/fetch/$s_!YxS7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4df3928-d65c-47af-87d9-e4b4d12ea57c_634x458.png 1272w, https://substackcdn.com/image/fetch/$s_!YxS7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4df3928-d65c-47af-87d9-e4b4d12ea57c_634x458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YxS7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4df3928-d65c-47af-87d9-e4b4d12ea57c_634x458.png" width="346" height="249.9495268138801" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4df3928-d65c-47af-87d9-e4b4d12ea57c_634x458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:458,&quot;width&quot;:634,&quot;resizeWidth&quot;:346,&quot;bytes&quot;:44230,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YxS7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4df3928-d65c-47af-87d9-e4b4d12ea57c_634x458.png 424w, https://substackcdn.com/image/fetch/$s_!YxS7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4df3928-d65c-47af-87d9-e4b4d12ea57c_634x458.png 848w, https://substackcdn.com/image/fetch/$s_!YxS7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4df3928-d65c-47af-87d9-e4b4d12ea57c_634x458.png 1272w, https://substackcdn.com/image/fetch/$s_!YxS7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4df3928-d65c-47af-87d9-e4b4d12ea57c_634x458.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>B&#234;n tr&#234;n l&#224; v&#237; d&#7909; v&#7873; t&#7881; l&#7879; jira issue &#273;&#432;&#7907;c ho&#224;n th&#224;nh c&#7911;a m&#7897;t team. C&#243; th&#7875; th&#7845;y con s&#7889; ch&#7881; r&#417;i v&#224;o kho&#7843;ng 66%. T&#7913;c n&#7871;u c&#243; 10 issue &#273;&#432;&#7907;c vi&#7871;t ra, th&#236; ch&#7881; c&#243; t&#7915; 6-7 issue &#273;&#432;&#7907;c &#273;&#432;a v&#7873; tr&#7841;ng th&#225;i complete. Nhi&#7879;m v&#7909; c&#7911;a c&#225;c product manager n&#243;i ri&#234;ng v&#224; c&#7843; team n&#243;i chung l&#224; l&#224; c&#7847;n ph&#7843;i t&#236;m ra &#273;&#432;&#7907;c nguy&#234;n nh&#226;n v&#236; sao t&#7881; l&#7879; &#273;&#243; l&#7841;i b&#7883; th&#7845;p nh&#432; v&#7853;y. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LQ-U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a0b772-69be-4f93-bca7-8806d2d2f2ba_1268x456.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LQ-U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a0b772-69be-4f93-bca7-8806d2d2f2ba_1268x456.png 424w, https://substackcdn.com/image/fetch/$s_!LQ-U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a0b772-69be-4f93-bca7-8806d2d2f2ba_1268x456.png 848w, https://substackcdn.com/image/fetch/$s_!LQ-U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a0b772-69be-4f93-bca7-8806d2d2f2ba_1268x456.png 1272w, https://substackcdn.com/image/fetch/$s_!LQ-U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a0b772-69be-4f93-bca7-8806d2d2f2ba_1268x456.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LQ-U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a0b772-69be-4f93-bca7-8806d2d2f2ba_1268x456.png" width="1268" height="456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43a0b772-69be-4f93-bca7-8806d2d2f2ba_1268x456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:456,&quot;width&quot;:1268,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75020,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LQ-U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a0b772-69be-4f93-bca7-8806d2d2f2ba_1268x456.png 424w, https://substackcdn.com/image/fetch/$s_!LQ-U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a0b772-69be-4f93-bca7-8806d2d2f2ba_1268x456.png 848w, https://substackcdn.com/image/fetch/$s_!LQ-U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a0b772-69be-4f93-bca7-8806d2d2f2ba_1268x456.png 1272w, https://substackcdn.com/image/fetch/$s_!LQ-U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a0b772-69be-4f93-bca7-8806d2d2f2ba_1268x456.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">c&#243; nh&#7919;ng th&#225;ng t&#7881; l&#7879; issue throughput c&#242;n th&#7845;p h&#417;n c&#7843; 60%</figcaption></figure></div><h3>Bug Age</h3><p>C&#242;n &#273;&#7889;i v&#7899;i team QA/QC, th&#244;ng s&#7889; v&#7873; th&#7901;i gian k&#7875; t&#7915; khi ph&#225;t hi&#7879;n ra bug cho &#273;&#7871;n khi bug &#273;&#432;&#7907;c fix s&#7869; &#273;&#432;&#7907;c quan t&#226;m h&#417;n c&#7843;. V&#237; d&#7909; b&#234;n d&#432;&#7899;i cho ta th&#7845;y tu&#7847;n v&#7915;a qua team QA/QC &#273;&#227; ph&#225;t hi&#7879;n ra 5 bug m&#7899;i, c&#7843; 5 bug &#273;&#243; &#273;&#227; &#273;&#7873;u &#273;&#432;&#7907;c fix. Trung b&#236;nh m&#7895;i bug m&#7845;t kho&#7843;ng g&#7847;n 5 ng&#224;y &#273;&#7875; &#273;&#432;&#7907;c chuy&#7875;n tr&#7841;ng th&#225;i th&#224;nh fixed. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qYlp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e8b428-577e-4830-9552-84456fc103d8_948x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qYlp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e8b428-577e-4830-9552-84456fc103d8_948x608.png 424w, https://substackcdn.com/image/fetch/$s_!qYlp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e8b428-577e-4830-9552-84456fc103d8_948x608.png 848w, https://substackcdn.com/image/fetch/$s_!qYlp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e8b428-577e-4830-9552-84456fc103d8_948x608.png 1272w, https://substackcdn.com/image/fetch/$s_!qYlp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e8b428-577e-4830-9552-84456fc103d8_948x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qYlp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e8b428-577e-4830-9552-84456fc103d8_948x608.png" width="948" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4e8b428-577e-4830-9552-84456fc103d8_948x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:608,&quot;width&quot;:948,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:71734,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qYlp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e8b428-577e-4830-9552-84456fc103d8_948x608.png 424w, https://substackcdn.com/image/fetch/$s_!qYlp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e8b428-577e-4830-9552-84456fc103d8_948x608.png 848w, https://substackcdn.com/image/fetch/$s_!qYlp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e8b428-577e-4830-9552-84456fc103d8_948x608.png 1272w, https://substackcdn.com/image/fetch/$s_!qYlp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e8b428-577e-4830-9552-84456fc103d8_948x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Ngo&#224;i ra, bi&#7875;u &#273;&#7891; v&#7873; s&#7889; l&#432;&#7907;ng bug t&#237;nh theo tu&#7847;n c&#361;ng c&#243; &#237;ch khi ta c&#243; th&#7875; bi&#7871;t &#273;&#432;&#7907;c trong kho&#7843;ng th&#7901;i gian n&#224;o s&#7843;n ph&#7849;m c&#243; nhi&#7873;u l&#7895;i. T&#7915; &#273;&#243; c&#243; th&#7875; &#273;i&#7873;u tra nguy&#234;n nh&#226;n v&#224; &#273;&#250;c r&#250;t b&#224;i h&#7885;c cho t&#432;&#417;ng lai.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ny-q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9588078b-c4d5-4de7-b046-6b1a90af0a5d_1892x721.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ny-q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9588078b-c4d5-4de7-b046-6b1a90af0a5d_1892x721.png 424w, https://substackcdn.com/image/fetch/$s_!ny-q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9588078b-c4d5-4de7-b046-6b1a90af0a5d_1892x721.png 848w, https://substackcdn.com/image/fetch/$s_!ny-q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9588078b-c4d5-4de7-b046-6b1a90af0a5d_1892x721.png 1272w, https://substackcdn.com/image/fetch/$s_!ny-q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9588078b-c4d5-4de7-b046-6b1a90af0a5d_1892x721.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ny-q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9588078b-c4d5-4de7-b046-6b1a90af0a5d_1892x721.png" width="1456" height="555" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9588078b-c4d5-4de7-b046-6b1a90af0a5d_1892x721.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:555,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:115381,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ny-q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9588078b-c4d5-4de7-b046-6b1a90af0a5d_1892x721.png 424w, https://substackcdn.com/image/fetch/$s_!ny-q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9588078b-c4d5-4de7-b046-6b1a90af0a5d_1892x721.png 848w, https://substackcdn.com/image/fetch/$s_!ny-q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9588078b-c4d5-4de7-b046-6b1a90af0a5d_1892x721.png 1272w, https://substackcdn.com/image/fetch/$s_!ny-q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9588078b-c4d5-4de7-b046-6b1a90af0a5d_1892x721.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>DORA v&#224; SPACE</h3><p>Nh&#7919;ng v&#237; d&#7909; tr&#234;n v&#224; c&#7843; nh&#7919;ng v&#237; d&#7909; trong ph&#7847;n 1 c&#7911;a b&#224;i vi&#7871;t &#273;&#7873;u l&#224; nh&#7919;ng metric r&#7901;i r&#7841;c, n&#7871;u ch&#7881; d&#7921;a v&#224;o t&#7915;ng metric v&#224; &#273;&#432;a ra &#273;&#225;nh gi&#225; s&#7869; c&#243; ph&#7847;n phi&#7871;n di&#7879;n. Do &#273;&#243;, ng&#432;&#7901;i ta ch&#7885;n ra m&#7897;t s&#7889; metrics, v&#224; t&#7893;ng h&#7907;p l&#7841;i th&#224;nh nh&#7919;ng framework, sao cho cu&#7889;i c&#249;ng nh&#7919;ng &#273;&#225;nh gi&#225; &#273;&#243; l&#224; c&#244;ng t&#226;m v&#224; kh&#225;ch quan nh&#7845;t. </p><p>DORA v&#224; SPACE l&#224; hai framework ti&#234;u bi&#7875;u.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TEE-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36ce357c-fe2d-4673-bcf0-5140b7317231_1127x624.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TEE-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36ce357c-fe2d-4673-bcf0-5140b7317231_1127x624.png 424w, https://substackcdn.com/image/fetch/$s_!TEE-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36ce357c-fe2d-4673-bcf0-5140b7317231_1127x624.png 848w, https://substackcdn.com/image/fetch/$s_!TEE-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36ce357c-fe2d-4673-bcf0-5140b7317231_1127x624.png 1272w, https://substackcdn.com/image/fetch/$s_!TEE-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36ce357c-fe2d-4673-bcf0-5140b7317231_1127x624.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TEE-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36ce357c-fe2d-4673-bcf0-5140b7317231_1127x624.png" width="1127" height="624" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36ce357c-fe2d-4673-bcf0-5140b7317231_1127x624.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:624,&quot;width&quot;:1127,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:496341,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TEE-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36ce357c-fe2d-4673-bcf0-5140b7317231_1127x624.png 424w, https://substackcdn.com/image/fetch/$s_!TEE-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36ce357c-fe2d-4673-bcf0-5140b7317231_1127x624.png 848w, https://substackcdn.com/image/fetch/$s_!TEE-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36ce357c-fe2d-4673-bcf0-5140b7317231_1127x624.png 1272w, https://substackcdn.com/image/fetch/$s_!TEE-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36ce357c-fe2d-4673-bcf0-5140b7317231_1127x624.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">DORA framework</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5M5E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c0a628-2217-4596-b05a-35a4e2c88271_1039x484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5M5E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c0a628-2217-4596-b05a-35a4e2c88271_1039x484.png 424w, https://substackcdn.com/image/fetch/$s_!5M5E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c0a628-2217-4596-b05a-35a4e2c88271_1039x484.png 848w, https://substackcdn.com/image/fetch/$s_!5M5E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c0a628-2217-4596-b05a-35a4e2c88271_1039x484.png 1272w, https://substackcdn.com/image/fetch/$s_!5M5E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c0a628-2217-4596-b05a-35a4e2c88271_1039x484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5M5E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c0a628-2217-4596-b05a-35a4e2c88271_1039x484.png" width="1039" height="484" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98c0a628-2217-4596-b05a-35a4e2c88271_1039x484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:484,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:396706,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5M5E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c0a628-2217-4596-b05a-35a4e2c88271_1039x484.png 424w, https://substackcdn.com/image/fetch/$s_!5M5E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c0a628-2217-4596-b05a-35a4e2c88271_1039x484.png 848w, https://substackcdn.com/image/fetch/$s_!5M5E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c0a628-2217-4596-b05a-35a4e2c88271_1039x484.png 1272w, https://substackcdn.com/image/fetch/$s_!5M5E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c0a628-2217-4596-b05a-35a4e2c88271_1039x484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">SPACE framework</figcaption></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[Cách đo đạc hiệu suất làm việc của một product team (Phần 1)]]></title><description><![CDATA[Dora, Space, Engineering Metrics, Devlake]]></description><link>https://newsletter.lequockhanh.com/p/cach-o-ac-hieu-suat-lam-viec-cua</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/cach-o-ac-hieu-suat-lam-viec-cua</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Sun, 10 Dec 2023 16:45:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Grgf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Grgf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Grgf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 424w, https://substackcdn.com/image/fetch/$s_!Grgf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 848w, https://substackcdn.com/image/fetch/$s_!Grgf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 1272w, https://substackcdn.com/image/fetch/$s_!Grgf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Grgf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png" width="1269" height="594" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ebb22e19-468e-43af-b190-f63f75f150f8_1269x594.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:594,&quot;width&quot;:1269,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:284940,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Grgf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 424w, https://substackcdn.com/image/fetch/$s_!Grgf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 848w, https://substackcdn.com/image/fetch/$s_!Grgf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 1272w, https://substackcdn.com/image/fetch/$s_!Grgf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febb22e19-468e-43af-b190-f63f75f150f8_1269x594.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Ng&#224;y th&#7913; 8 c&#7911;a th&#225;ng &#8220;adventofsharing<strong>&#8221; </strong>tr&#234;n Slack <a href="https://www.webuild.community/">c&#7897;ng &#273;&#7891;ng WeBuild</a> c&#243; b&#224;i vi&#7871;t gi&#7899;i thi&#7879;u v&#7873; ch&#7911; &#273;&#7873; &#8220;Developer Productivity&#8221;. Nh&#226;n ti&#7879;n t&#244;i c&#361;ng &#273;ang h&#7895; tr&#7907; d&#7921;ng l&#234;n m&#7897;t h&#7879; th&#7889;ng ph&#7909;c v&#7909; nhu c&#7847;u t&#432;&#417;ng t&#7921;, n&#234;n s&#7869; vi&#7871;t th&#234;m &#273;&#7875; b&#7893; sung &#253; cho b&#224;i vi&#7871;t &#273;&#243;. D&#432;&#7899;i &#273;&#226;y l&#224; b&#224;i vi&#7871;t g&#7889;c.</p><blockquote><p><strong>#adventofsharing B&#224;n v&#7873; developer productivity</strong></p><p>N&#259;ng su&#7845;t lao &#273;&#7897;ng (productivity) lu&#244;n l&#224; m&#7897;t ch&#7911; &#273;&#7873; &#273;&#432;&#7907;c quan t&#226;m. T&#7915; th&#7901;i ti&#7873;n s&#7917; s&#7889;ng trong x&#227; h&#7897;i b&#7847;y &#273;&#224;n, ti&#7871;n l&#234;n x&#227; h&#7897;i hi&#7879;n &#273;&#7841;i v&#7899;i c&#225;ch m&#7841;ng c&#244;ng nghi&#7879;p; r&#7891;i g&#7847;n &#273;&#226;y h&#417;n l&#224; th&#7901;i &#273;&#7841;i c&#7911;a m&#225;y t&#237;nh, internet, block chen, AI,... lo&#224;i ng&#432;&#7901;i lu&#244;n &#225;m &#7843;nh v&#7899;i vi&#7879;c l&#224;m &#273;&#432;&#7907;c nhi&#7873;u h&#417;n, s&#7843;n xu&#7845;t nhi&#7873;u h&#417;n, nhanh h&#417;n. Ng&#224;nh ph&#7847;n m&#7873;m c&#361;ng kh&#244;ng ph&#7843;i ngo&#7841;i l&#7879;. V&#7853;y productivity trong ng&#224;nh ph&#7847;n m&#7873;m &#273;&#432;&#7907;c &#273;&#7883;nh ngh&#297;a nh&#432; th&#7871; n&#224;o? C&#226;u h&#7887;i nghe &#273;&#417;n gi&#7843;n nh&#432;ng c&#226;u tr&#7843; l&#7901;i l&#7841;i kh&#225; ph&#7913;c t&#7841;p. M&#7897;t research g&#7847;n &#273;&#226;y [1] t&#7841;i Microsoft cho th&#7845;y developer c&#243; xu h&#432;&#7899;ng ngh&#297; v&#7873; input: s&#7889; bug/task &#273;&#227; ho&#224;n th&#224;nh, s&#7889; l&#432;&#7907;ng commit, th&#7901;i gian t&#7853;p trung cho deep work, th&#7901;i gian teamwork khi &#273;&#432;&#7907;c h&#7887;i v&#7873; productivity. Trong khi c&#225;c manager c&#243; xu h&#432;&#7899;ng t&#7853;p trung v&#224;o output nh&#432; performance, velocity, c&#361;ng nh&#432; ch&#7845;t l&#432;&#7907;ng c&#7911;a s&#7843;n ph&#7849;m &#273;&#432;&#7907;c t&#7841;o ra. V&#224; n&#7871;u b&#7841;n h&#7887;i nh&#7919;ng ng&#432;&#7901;i &#7903; v&#7883; tr&#237; non-tech nh&#432; CEO, CFO, kh&#7843; n&#259;ng cao h&#7885; ch&#7881; quan t&#226;m team ph&#7847;n m&#7873;m l&#224;m &#273;&#432;&#7907;c ra bao nhi&#234;u ti&#7873;n v&#224; &#273;&#7889;t bao nhi&#234;u v&#224;o qu&#7929; l&#432;&#417;ng.</p><p><br>Nh&#432; r&#7845;t nhi&#7873;u th&#7913; kh&#225;c trong ng&#224;nh ph&#7847;n m&#7873;m, it depends. S&#7869; kh&#244;ng th&#7875; t&#236;m &#273;&#432;&#7907;c m&#7897;t c&#226;u tr&#7843; l&#7901;i chung n&#224;o cho &#273;&#7883;nh ngh&#297;a v&#7873; productivity &#273;&#7875; &#225;p d&#7909;ng cho t&#7845;t c&#7843; c&#225;c team. V&#7853;y th&#236; c&#225;c c&#244;ng ty ph&#7847;n m&#7873;m l&#7899;n nh&#7887; ngo&#224;i kia h&#7885; &#273;ang l&#224;m th&#7871; n&#224;o &#273;&#7875; &#273;o l&#432;&#7901;ng productivity, h&#227;y &#273;i&#7875;m qua m&#7897;t s&#7889; c&#225;ch th&#244;ng th&#432;&#7901;ng.C&#225;ch th&#7913; nh&#7845;t: kh&#244;ng l&#224;m g&#236; c&#7843;. Nghe c&#243; v&#7867; h&#417;i anti-pattern, nh&#432;ng kh&#225; ph&#7893; bi&#7871;n &#7903; c&#225;c team nh&#7887;, &#7903; nh&#7919;ng team n&#224;y manager c&#243; th&#7875; n&#7855;m kh&#225; r&#245; v&#7873; kh&#7889;i l&#432;&#7907;ng c&#244;ng vi&#7879;c c&#361;ng nh&#432; output c&#7911;a t&#7915;ng th&#224;nh vi&#234;n, c&#361;ng nh&#432; c&#7911;a c&#7843; team, vi&#7879;c c&#7909; th&#7875; h&#243;a th&#224;nh con s&#7889; kh&#244;ng c&#243; ngh&#297;a l&#253; v&#224; &#237;t mang l&#7841;i hi&#7879;u qu&#7843;. C&#225;ch th&#7913; hai: v&#7853;y team l&#7899;n th&#236; h&#7885; d&#249;ng g&#236;, hi&#7879;n t&#7841;i trong gi&#7899;i c&#243; hai ti&#234;u chu&#7849;n kh&#225; n&#7893;i l&#224; DORA [2] v&#224; SPACE [3]. DORA &#273;&#7873; ra b&#7889;n metric cho m&#7897;t engineering team, focus ch&#237;nh v&#224;o vi&#7879;c delivery ph&#7847;n m&#7873;m.</p><ul><li><p>Deployment Frequency &#8211; t&#7847;n su&#7845;t release l&#234;n production.</p></li><li><p>Lead Time for Changes &#8211; th&#7901;i gian d&#224;nh ra t&#7915; khi b&#7855;t &#273;&#7847;u &#273;&#7871;n khi release c&#7911;a ticket.</p></li><li><p>Change Failure Rate &#8211; t&#7881; l&#7879; c&#225;c release t&#7841;o l&#7895;i tr&#234;n production.</p></li><li><p>Time to Restore Service &#8211; th&#7901;i gian &#273;&#7875; fix production khi c&#243; release l&#7895;i.</p></li></ul><p>Trong khi SPACE &#273;&#7873; ra n&#259;m ti&#234;u ch&#237;:</p><ul><li><p><strong>S</strong>atisfaction and wellbeing: m&#7913;c &#273;&#7897; h&#7841;nh ph&#250;c v&#224; th&#7887;a m&#227;n c&#7911;a c&#225;c th&#224;nh vi&#234;n trong team.</p></li><li><p><strong>P</strong>erformance: ch&#7845;t l&#432;&#7907;ng &#273;&#7847;u ra c&#7911;a s&#7843;n ph&#7849;m.</p></li><li><p><strong>A</strong>ctivity: s&#7889; l&#432;&#7907;ng output/task ho&#224;n th&#224;nh.</p></li><li><p><strong>C</strong>ommunication and collaboration: m&#7913;c &#273;&#7897; teamwork v&#224; collab gi&#7919;a c&#225;c th&#224;nh vi&#234;n trong team.</p></li><li><p><strong>E</strong>fficiency and flow: th&#7901;i gian focus v&#224;o deep work c&#7911;a team.</p></li></ul><p>&#272;i&#7875;m c&#7897;ng c&#7911;a DORA l&#224; c&#225;c metric &#273;&#432;&#7907;c &#273;&#7883;nh ngh&#297;a r&#245; r&#224;ng, &#273;i&#7875;m tr&#7915; l&#224; t&#7853;p trung qu&#225; nhi&#7873;u v&#224;o vi&#7879;c delivery v&#224; ho&#224;n to&#224;n b&#7887; qua y&#7871;u t&#7889; con ng&#432;&#7901;i. Team c&#7911;a m&#236;nh hi&#7879;n t&#7841;i c&#361;ng &#273;ang d&#249;ng DORA v&#224; t&#225;c d&#7909;ng kh&#225; h&#7841;n ch&#7871;, kh&#243; n&#234;u &#273;&#432;&#7907;c &#273;i&#7875;m y&#7871;u c&#7847;n c&#7843;i thi&#7879;n, v&#224; c&#225;c metric kh&#225; d&#7877; b&#7883; game, c&#243; th&#7875; d&#7851;n &#273;&#7871;n ph&#7843;n t&#225;c d&#7909;ng.<br>SPACE &#273;&#432;&#7907;c ra &#273;&#7901;i &#273;&#7875; kh&#7855;c ph&#7909;c nh&#432;&#7907;c &#273;i&#7875;m c&#7911;a DORA, &#273;&#7873; cao input v&#224; y&#7871;u t&#7889; con ng&#432;&#7901;i, nh&#7845;n m&#7841;nh vi&#7879;c l&#7845;y survey t&#7915; c&#225;c th&#224;nh vi&#234;n trong team, nh&#432;ng nh&#432;&#7907;c &#273;i&#7875;m l&#7841;i l&#224; c&#225;c metric ph&#7913;c t&#7841;p, m&#417; h&#7891; v&#224; c&#361;ng kh&#243; &#273;o &#273;&#7841;c b&#225;o c&#225;o. </p><p>C&#225;ch th&#7913; ba: t&#7921; &#273;&#7863;t ra metric ri&#234;ng cho m&#236;nh, th&#432;&#7901;ng &#273;&#432;&#7907;c &#225;p d&#7909;ng &#7903; c&#225;c big tech, v&#237; d&#7909; nh&#432; Uber [4], Meta, Amazon &#273;&#7873; cao s&#7889; l&#432;&#7907;ng diff (commit),&nbsp; Linkedin [5] d&#249;ng top-down approach, b&#7855;t &#273;&#7847;u v&#7899;i ba key metric Efficiency, Effectiveness, Happiness sau &#273;&#243; &#273;i s&#226;u v&#224;o v&#224; m&#7903; r&#7897;ng ra c&#225;c key metric nh&#7887; h&#417;n nh&#432; time to review, user satisfaction score, commit to publish time, etc. Vi&#7879;c x&#226;y d&#7921;ng h&#7879; th&#7889;ng &#273;&#7875; thu th&#7853;p v&#224; b&#225;o c&#225;o s&#7889; li&#7879;u th&#432;&#7901;ng &#273;&#432;&#7907;c &#273;&#7843;m nhi&#7879;m b&#7903;i m&#7897;t team g&#7885;i l&#224; Developer Experience. </p><p>T&#7841;m k&#7871;t &#7903; &#273;&#226;y &#273;&#227; v&#236; ch&#7911; &#273;&#7873; n&#224;y ph&#7913;c t&#7841;p v&#224; n&#7871;u n&#243;i n&#7919;a th&#236; ch&#7855;c ph&#7843;i vi&#7871;t c&#7843; series, b&#224;i vi&#7871;t c&#361;ng ch&#7881; nh&#7857;m m&#7909;c &#273;&#237;ch gi&#7899;i thi&#7879;u nh&#7919;ng kh&#225;i ni&#7879;m c&#417; b&#7843;n &#7903; b&#7873; m&#7863;t. T&#243;m l&#7841;i th&#236; m&#236;nh th&#7845;y nhu c&#7847;u &#273;o &#273;&#7841;c productivity l&#224; ch&#237;nh &#273;&#225;ng, tuy nhi&#234;n &#273;o th&#7871; n&#224;o v&#224; &#273;o c&#225;i g&#236; l&#224; b&#224;i to&#225;n c&#225;c team ph&#7847;n m&#7873;m s&#7869; ph&#7843;i t&#7921; t&#236;m cho c&#226;u tr&#7843; l&#7901;i c&#7911;a ri&#234;ng m&#236;nh. H&#227;y nh&#7899; r&#7857;ng &#273;&#7857;ng sau c&#225;c metric v&#224; con s&#7889; l&#224; nh&#7919;ng con ng&#432;&#7901;i, h&#7885; c&#361;ng c&#243; bu&#7891;n vui h&#7881; n&#7897; &#225;i &#7889;, v&#224; nh&#7919;ng con s&#7889; th&#236; kh&#243; c&#243; th&#7875; model h&#7871;t h&#224;nh vi c&#7911;a con ng&#432;&#7901;i.</p><p>[1] <a href="https://arxiv.org/pdf/2111.04302.pdf">https://arxiv.org/pdf/2111.04302.pdf</a></p><p>[2] <a href="https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance">https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance</a></p><p>[3]<a href="https://queue.acm.org/detail.cfm?id=3454124"> https://queue.acm.org/detail.cfm?id=3454124</a></p><p>[4] <a href="https://newsletter.pragmaticengineer.com/p/uber-eng-productivity">How Uber Is Measuring Engineering Productivity</a></p><p>[5] <a href="https://newsletter.pragmaticengineer.com/p/linkedin-engineering-efficiency">LinkedIn Engineering Efficiency</a></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NCKt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F595638d9-d0d1-4f54-96b5-30390a812103_809x502.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NCKt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F595638d9-d0d1-4f54-96b5-30390a812103_809x502.png 424w, https://substackcdn.com/image/fetch/$s_!NCKt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F595638d9-d0d1-4f54-96b5-30390a812103_809x502.png 848w, https://substackcdn.com/image/fetch/$s_!NCKt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F595638d9-d0d1-4f54-96b5-30390a812103_809x502.png 1272w, https://substackcdn.com/image/fetch/$s_!NCKt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F595638d9-d0d1-4f54-96b5-30390a812103_809x502.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NCKt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F595638d9-d0d1-4f54-96b5-30390a812103_809x502.png" width="809" height="502" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/595638d9-d0d1-4f54-96b5-30390a812103_809x502.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:502,&quot;width&quot;:809,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:113482,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NCKt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F595638d9-d0d1-4f54-96b5-30390a812103_809x502.png 424w, https://substackcdn.com/image/fetch/$s_!NCKt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F595638d9-d0d1-4f54-96b5-30390a812103_809x502.png 848w, https://substackcdn.com/image/fetch/$s_!NCKt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F595638d9-d0d1-4f54-96b5-30390a812103_809x502.png 1272w, https://substackcdn.com/image/fetch/$s_!NCKt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F595638d9-d0d1-4f54-96b5-30390a812103_809x502.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Nh&#7919;ng t&#7915; kho&#225; &#273;&#225;ng ch&#250; &#253; trong b&#224;i vi&#7871;t n&#224;y</figcaption></figure></div><p>Peter Drucker, cha &#273;&#7867; c&#7911;a ng&#224;nh qu&#7843;n tr&#7883; kinh doanh t&#7915;ng n&#243;i r&#7857;ng th&#7913; g&#236; kh&#244;ng &#273;o &#273;&#7841;c &#273;&#432;&#7907;c th&#236; kh&#244;ng th&#7875; c&#7843;i thi&#7879;n &#273;&#432;&#7907;c. &#272;i&#7873;u n&#224;y c&#243; th&#7875; kh&#244;ng &#273;&#250;ng v&#7899;i t&#7915;ng c&#225; nh&#226;n, khi c&#243; nhi&#7873;u th&#7913; thu&#7897;c v&#7873; c&#7843;m gi&#225;c l&#224; kh&#244;ng th&#7875; &#273;o &#273;&#7841;c nh&#432;ng v&#7851;n c&#243; th&#7875; c&#7843;i thi&#7879;n. Tuy nhi&#234;n v&#7899;i m&#7897;t t&#7893; ch&#7913;c hay m&#7897;t doanh nghi&#7879;p, &#273;o &#273;&#7841;c l&#224; vi&#7879;c b&#7855;t bu&#7897;c ph&#7843;i l&#224;m n&#7871;u nh&#7919;ng ng&#432;&#7901;i qu&#7843;n l&#253; mu&#7889;n bi&#7871;t &#273;&#432;&#7907;c nh&#7919;ng s&#7921; thay &#273;&#7893;i s&#7869; &#273;em l&#7841;i k&#7871;t qu&#7843; ra sao.</p><p>Tr&#7903; l&#7841;i v&#7899;i b&#224;i vi&#7871;t ban &#273;&#7847;u, ta c&#243; th&#7875; th&#7845;y &#273;&#432;&#7907;c m&#7897;t b&#7913;c tranh to&#224;n c&#7843;nh v&#7873; ch&#7911; &#273;&#7873; Developer Productivity . Tuy nhi&#234;n, t&#225;c gi&#7843; b&#224;i vi&#7871;t c&#361;ng &#273;&#227; n&#243;i r&#7857;ng &#273;&#243; m&#7899;i ch&#7881; l&#224; nh&#7919;ng kh&#225;i ni&#7879;m r&#7845;t c&#417; b&#7843;n &#7903; b&#7873; m&#7863;t. C&#242;n r&#7845;t nhi&#7873;u chi ti&#7871;t &#7903; &#273;i s&#226;u v&#224;o b&#234;n d&#432;&#7899;i ch&#432;a &#273;&#432;&#7907;c khai th&#225;c t&#7899;i. V&#224; trong b&#224;i vi&#7871;t d&#432;&#7899;i &#273;&#226;y, t&#244;i s&#7869; &#273;i v&#224;o ph&#7847;n th&#7921;c h&#224;nh, khi cho c&#225;c b&#7841;n th&#7845;y h&#236;nh h&#224;i c&#7911;a nh&#7919;ng kh&#225;i ni&#7879;m tr&#234;n tr&#244;ng s&#7869; nh&#432; th&#7871; n&#224;o.</p><h3>Gi&#7899;i thi&#7879;u v&#7873; Devlake</h3><p><a href="https://devlake.apache.org/zh/">Devlake</a> l&#224; m&#7897;t m&#227; ngu&#7891;n m&#7903; gi&#250;p thu th&#7853;p v&#224; x&#7917; l&#253; data t&#7915; nhi&#7873;u ngu&#7891;n kh&#225;c nhau. C&#225;c ngu&#7891;n &#273;&#243; c&#243; th&#7875; k&#7875; &#273;&#7871;n nh&#432; Github, Gitlab, Jira, Trello, vv. T&#7915; ngu&#7891;n data &#273;&#243;, ta c&#243; th&#7875; visualize th&#224;nh c&#225;c b&#7843;ng bi&#7875;u, c&#225;c metric, gi&#250;p cho qu&#225; tr&#236;nh ph&#225;t hi&#7879;n v&#224; c&#7843;i thi&#7879;n c&#225;c v&#7845;n &#273;&#7873; li&#234;n quan &#273;&#7871;n productivity tr&#7903; n&#234;n tr&#7921;c quan. D&#432;&#7899;i &#273;&#226;y l&#224; h&#236;nh minh ho&#7841; c&#225;ch th&#7913;c Devlake ho&#7841;t &#273;&#7897;ng.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wRph!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fb76a87-d3ab-49cb-a38b-b77afff6df24_1160x657.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wRph!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fb76a87-d3ab-49cb-a38b-b77afff6df24_1160x657.png 424w, https://substackcdn.com/image/fetch/$s_!wRph!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fb76a87-d3ab-49cb-a38b-b77afff6df24_1160x657.png 848w, https://substackcdn.com/image/fetch/$s_!wRph!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fb76a87-d3ab-49cb-a38b-b77afff6df24_1160x657.png 1272w, https://substackcdn.com/image/fetch/$s_!wRph!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fb76a87-d3ab-49cb-a38b-b77afff6df24_1160x657.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wRph!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fb76a87-d3ab-49cb-a38b-b77afff6df24_1160x657.png" width="1160" height="657" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9fb76a87-d3ab-49cb-a38b-b77afff6df24_1160x657.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:657,&quot;width&quot;:1160,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:39313,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wRph!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fb76a87-d3ab-49cb-a38b-b77afff6df24_1160x657.png 424w, https://substackcdn.com/image/fetch/$s_!wRph!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fb76a87-d3ab-49cb-a38b-b77afff6df24_1160x657.png 848w, https://substackcdn.com/image/fetch/$s_!wRph!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fb76a87-d3ab-49cb-a38b-b77afff6df24_1160x657.png 1272w, https://substackcdn.com/image/fetch/$s_!wRph!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fb76a87-d3ab-49cb-a38b-b77afff6df24_1160x657.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Ki&#7871;n tr&#250;c c&#7911;a Devlake</figcaption></figure></div><p>Sau khi ti&#7871;n h&#224;nh config c&#225;c ngu&#7891;n d&#7919; li&#7879;u, Devlake s&#7869; &#273;i thu th&#7853;p data v&#224; l&#432;u ch&#250;ng v&#224;o trong m&#7897;t relational database. Ti&#7871;p &#273;&#243; c&#225;c ph&#7847;n m&#7873;m visualization nh&#432; Grafana s&#7869; &#273;&#7885;c data t&#7915; database ra v&#224; hi&#7875;n th&#7883; th&#224;nh c&#225;c bi&#7875;u &#273;&#7891;.</p><h3>M&#7897;t v&#224;i v&#237; d&#7909; ti&#234;u bi&#7875;u</h3><p>L&#7845;y m&#7897;t v&#237; d&#7909; nh&#432; bi&#7875;u &#273;&#7891; b&#234;n d&#432;&#7899;i, bi&#7875;u th&#7883; s&#7921; ph&#226;n b&#7893; s&#7889; commits c&#7911;a c&#225;c th&#224;nh vi&#234;n v&#224;o c&#225;c ng&#224;y trong tu&#7847;n. D&#7921;a v&#224;o bi&#7875;u &#273;&#7891; ta d&#7877; nh&#7853;n th&#7845;y th&#7913; ba c&#243; v&#7867; l&#224; ng&#224;y m&#224; c&#225;c anh dev ho&#7841;t &#273;&#7897;ng n&#259;ng su&#7845;t nh&#7845;t. Th&#7913; hai n&#259;ng su&#7845;t k&#233;m h&#417;n c&#7843; th&#7913; n&#259;m, c&#361;ng d&#7877; hi&#7875;u v&#236; th&#432;&#7901;ng &#273;&#7847;u tu&#7847;n s&#7869; ph&#7843;i h&#7885;p h&#224;nh nhi&#7873;u. Trong khi th&#7913; 6 l&#224; ng&#224;y c&#243; &#237;t commit nh&#7845;t, c&#243; th&#7875; l&#224; do nh&#7919;ng ph&#7847;n vi&#7879;c quan tr&#7885;ng th&#236; &#273;&#227; &#273;&#432;&#7907;c ho&#224;n th&#224;nh t&#7915; c&#225;c ng&#224;y tr&#432;&#7899;c &#273;&#243;. Ch&#7881; t&#7915; m&#7897;t th&#244;ng s&#7889; &#273;&#417;n gi&#7843;n, ta &#273;&#227; c&#243; th&#7875; suy ra &#273;&#432;&#7907;c m&#7897;t s&#7889; insights kh&#225; l&#224; th&#250; v&#7883;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hzxV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8ce268-7c43-4b82-a2a6-4b77f620d3a7_934x297.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hzxV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8ce268-7c43-4b82-a2a6-4b77f620d3a7_934x297.png 424w, https://substackcdn.com/image/fetch/$s_!hzxV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8ce268-7c43-4b82-a2a6-4b77f620d3a7_934x297.png 848w, https://substackcdn.com/image/fetch/$s_!hzxV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8ce268-7c43-4b82-a2a6-4b77f620d3a7_934x297.png 1272w, https://substackcdn.com/image/fetch/$s_!hzxV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8ce268-7c43-4b82-a2a6-4b77f620d3a7_934x297.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hzxV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8ce268-7c43-4b82-a2a6-4b77f620d3a7_934x297.png" width="934" height="297" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0a8ce268-7c43-4b82-a2a6-4b77f620d3a7_934x297.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:297,&quot;width&quot;:934,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26156,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hzxV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8ce268-7c43-4b82-a2a6-4b77f620d3a7_934x297.png 424w, https://substackcdn.com/image/fetch/$s_!hzxV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8ce268-7c43-4b82-a2a6-4b77f620d3a7_934x297.png 848w, https://substackcdn.com/image/fetch/$s_!hzxV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8ce268-7c43-4b82-a2a6-4b77f620d3a7_934x297.png 1272w, https://substackcdn.com/image/fetch/$s_!hzxV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8ce268-7c43-4b82-a2a6-4b77f620d3a7_934x297.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">L&#432;u &#253; bi&#7875;u &#273;&#7891; n&#224;y ch&#7881; mang t&#237;nh ch&#7845;t tham kh&#7843;o</figcaption></figure></div><p>V&#237; d&#7909; tr&#234;n nghe c&#243; v&#7867; th&#250; v&#7883;, nh&#432;ng ch&#432;a cho ta th&#7845;y &#273;i&#7873;u g&#236; c&#7847;n ph&#7843;i c&#7843;i thi&#7879;n. D&#432;&#7899;i &#273;&#226;y l&#224; m&#7897;t v&#237; d&#7909; kh&#225;c v&#7873; s&#7889; l&#432;&#7907;ng Pull Request (PR) m&#7899;i &#273;&#432;&#7907;c t&#7841;o h&#7857;ng th&#225;ng. Qua bi&#7875;u &#273;&#7891; ta th&#7845;y th&#225;ng 10, l&#432;&#7907;ng PR gi&#7843;m m&#7897;t c&#225;ch &#273;&#225;ng k&#7875; so v&#7899;i c&#225;c th&#225;ng tr&#432;&#7899;c &#273;&#243;, v&#7853;y nguy&#234;n nh&#226;n l&#224; do &#273;&#226;u? Ho&#225; ra th&#225;ng 10 c&#243; m&#7897;t project m&#7899;i v&#224; c&#225;c developer &#273;&#227; t&#7853;p trung v&#224;o vi&#7879;c l&#224;m cho xong b&#7843;n MVP n&#234;n &#273;&#227; kh&#244;ng t&#7841;o PRs. Vi&#7879;c code kh&#244;ng &#273;&#432;&#7907;c review c&#7849;n th&#7853;n c&#243; th&#7875; g&#226;y ra nh&#7919;ng tech debt kh&#244;ng mong mu&#7889;n sau n&#224;y, do &#273;&#243; c&#7847;n c&#243; nh&#7919;ng c&#7843;i thi&#7879;n v&#7873; m&#7863;t quy tr&#236;nh trong y&#234;u c&#7847;u t&#7841;o PR cho nh&#7919;ng d&#7921; &#225;n m&#7899;i ti&#7871;p theo. B&#7841;n th&#7845;y &#273;&#7845;y, c&#243; &#273;o &#273;&#7841;c v&#7851;n h&#417;n ph&#7843;i kh&#244;ng.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZsSf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3f2d94e-b9f3-4566-be8d-36d131aa3362_779x217.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZsSf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3f2d94e-b9f3-4566-be8d-36d131aa3362_779x217.png 424w, https://substackcdn.com/image/fetch/$s_!ZsSf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3f2d94e-b9f3-4566-be8d-36d131aa3362_779x217.png 848w, https://substackcdn.com/image/fetch/$s_!ZsSf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3f2d94e-b9f3-4566-be8d-36d131aa3362_779x217.png 1272w, https://substackcdn.com/image/fetch/$s_!ZsSf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3f2d94e-b9f3-4566-be8d-36d131aa3362_779x217.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZsSf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3f2d94e-b9f3-4566-be8d-36d131aa3362_779x217.png" width="779" height="217" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3f2d94e-b9f3-4566-be8d-36d131aa3362_779x217.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:217,&quot;width&quot;:779,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21366,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZsSf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3f2d94e-b9f3-4566-be8d-36d131aa3362_779x217.png 424w, https://substackcdn.com/image/fetch/$s_!ZsSf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3f2d94e-b9f3-4566-be8d-36d131aa3362_779x217.png 848w, https://substackcdn.com/image/fetch/$s_!ZsSf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3f2d94e-b9f3-4566-be8d-36d131aa3362_779x217.png 1272w, https://substackcdn.com/image/fetch/$s_!ZsSf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3f2d94e-b9f3-4566-be8d-36d131aa3362_779x217.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">L&#432;u &#253; bi&#7875;u &#273;&#7891; n&#224;y ch&#7881; mang t&#237;nh ch&#7845;t tham kh&#7843;o</figcaption></figure></div><p>Ti&#7871;p theo l&#224; m&#7897;t metrics v&#7873; coding day c&#7911;a c&#225;c developers. C&#243; th&#7875; th&#7845;y th&#7901;i gian th&#7921;c t&#7871; m&#7897;t developer ng&#7891;i v&#224; code ch&#7881; chi&#7871;m kho&#7843;ng 40% t&#7893;ng th&#7901;i gian c&#7911;a h&#7885; khi &#273;i l&#224;m. T&#7913;c m&#7897;t ng&#224;y &#273;i l&#224;m 8 ti&#7871;ng th&#236; ch&#7881; t&#7847;m 3 ti&#7871;ng l&#224; d&#224;nh &#273;&#7875; ng&#7891;i code, th&#7901;i gian c&#242;n l&#7841;i s&#7869; d&#224;nh cho nh&#7919;ng vi&#7879;c kh&#225;c nh&#432; l&#224;m l&#224;m r&#245; requirements, h&#7885;p h&#224;nh, hay b&#7843;o tr&#236; h&#7879; th&#7889;ng. N&#7871;u ph&#7847;n tr&#259;m coding days b&#7883; qu&#225; th&#7845;p, ho&#7863;c qu&#225; cao, th&#236; team c&#361;ng s&#7869; c&#7847;n ph&#7843;i t&#236;m hi&#7875;u nguy&#234;n nh&#226;n v&#236; sao v&#224; t&#7915; &#273;&#243; c&#243; nh&#7919;ng action ph&#249; h&#7907;p.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JVCW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9e9386-02c2-4bfa-bdee-59e42b68fbf4_1097x299.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JVCW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9e9386-02c2-4bfa-bdee-59e42b68fbf4_1097x299.png 424w, https://substackcdn.com/image/fetch/$s_!JVCW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9e9386-02c2-4bfa-bdee-59e42b68fbf4_1097x299.png 848w, https://substackcdn.com/image/fetch/$s_!JVCW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9e9386-02c2-4bfa-bdee-59e42b68fbf4_1097x299.png 1272w, https://substackcdn.com/image/fetch/$s_!JVCW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9e9386-02c2-4bfa-bdee-59e42b68fbf4_1097x299.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JVCW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9e9386-02c2-4bfa-bdee-59e42b68fbf4_1097x299.png" width="1097" height="299" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e9e9386-02c2-4bfa-bdee-59e42b68fbf4_1097x299.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:299,&quot;width&quot;:1097,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42088,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JVCW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9e9386-02c2-4bfa-bdee-59e42b68fbf4_1097x299.png 424w, https://substackcdn.com/image/fetch/$s_!JVCW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9e9386-02c2-4bfa-bdee-59e42b68fbf4_1097x299.png 848w, https://substackcdn.com/image/fetch/$s_!JVCW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9e9386-02c2-4bfa-bdee-59e42b68fbf4_1097x299.png 1272w, https://substackcdn.com/image/fetch/$s_!JVCW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9e9386-02c2-4bfa-bdee-59e42b68fbf4_1097x299.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Tr&#234;n &#273;&#226;y l&#224; m&#7897;t v&#224;i v&#237; d&#7909; v&#7873; c&#225;c metric d&#249;ng &#273;&#7875; &#273;o &#273;&#7841;c hi&#7879;u su&#7845;t l&#224;m vi&#7879;c c&#7911;a c&#225;c developer. Tuy nhi&#234;n trong m&#7897;t team l&#224;m s&#7843;n ph&#7849;m, c&#242;n r&#7845;t nhi&#7873;u nh&#7919;ng role kh&#225;c nh&#432; Product Manager, QA, Designer, vv. V&#7853;y l&#224;m sao &#273;&#7875; &#273;o &#273;&#7841;c &#273;&#432;&#7907;c hi&#7879;u su&#7845;t l&#224;m vi&#7879;c c&#7911;a c&#225;c th&#224;nh vi&#234;n &#273;&#243;. Trong ph&#7847;n hai, t&#244;i s&#7869; gi&#7899;i thi&#7879;u th&#234;m m&#7897;t v&#224;i v&#237; d&#7909; ti&#234;u bi&#7875;u &#273;&#7875; tr&#7843; l&#7901;i cho c&#226;u h&#7887;i tr&#234;n.</p>]]></content:encoded></item><item><title><![CDATA[Sự khác nhau giữa client side rendering, server side rendering, SPA, MPA]]></title><description><![CDATA[G&#243;c nh&#236;n c&#7911;a m&#7897;t tay m&#417; v&#7873; m&#7845;y m&#244; h&#236;nh b&#234;n frontend]]></description><link>https://newsletter.lequockhanh.com/p/su-khac-nhau-giua-client-rendering</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/su-khac-nhau-giua-client-rendering</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Sun, 26 Nov 2023 04:26:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!p4Al!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95acce90-984f-4260-9feb-d4fa2d0cfc0a_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p4Al!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95acce90-984f-4260-9feb-d4fa2d0cfc0a_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p4Al!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95acce90-984f-4260-9feb-d4fa2d0cfc0a_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!p4Al!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95acce90-984f-4260-9feb-d4fa2d0cfc0a_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!p4Al!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95acce90-984f-4260-9feb-d4fa2d0cfc0a_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!p4Al!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95acce90-984f-4260-9feb-d4fa2d0cfc0a_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p4Al!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95acce90-984f-4260-9feb-d4fa2d0cfc0a_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95acce90-984f-4260-9feb-d4fa2d0cfc0a_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38967,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!p4Al!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95acce90-984f-4260-9feb-d4fa2d0cfc0a_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!p4Al!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95acce90-984f-4260-9feb-d4fa2d0cfc0a_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!p4Al!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95acce90-984f-4260-9feb-d4fa2d0cfc0a_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!p4Al!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95acce90-984f-4260-9feb-d4fa2d0cfc0a_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>L&#250;c tr&#432;a &#273;i &#259;n, m&#7845;y &#273;&#7891;ng nghi&#7879;p c&#243; n&#243;i chuy&#7879;n v&#7873; s&#7921; kh&#225;c nhau gi&#7919;a client-side rendering v&#224; server-side rendering, v&#224; v&#236; sao NextJS l&#7841;i kh&#244;ng gi&#7889;ng PHP, d&#249; nghe qua th&#236; c&#243; v&#7867; l&#224; c&#417; ch&#7871; ho&#7841;t &#273;&#7897;ng gi&#7889;ng nhau. L&#224; m&#7897;t ng&#432;&#7901;i ngo&#7841;i &#273;&#7841;o ch&#432;a l&#224;m frontend bao gi&#7901;, nh&#432;ng nghe ch&#7911; &#273;&#7873; th&#250; v&#7883; n&#234;n t&#244;i c&#361;ng mu&#7889;n th&#7917; t&#236;m hi&#7875;u xem sao.</p><p>https://vercel.com/blog/understanding-react-server-components</p><p>&#272;&#7875; c&#243; th&#7875; hi&#7875;u s&#226;u s&#7855;c v&#7873; m&#7897;t th&#7913; g&#236; &#273;&#243;, kh&#244;ng g&#236; t&#7889;t h&#417;n vi&#7879;c &#273;i&#7875;m l&#7841;i nh&#7919;ng s&#7921; ki&#7879;n l&#7883;ch s&#7917; ph&#225;t tr&#7875;n c&#7911;a n&#243;. T&#244;i c&#243; hai b&#224;i b&#224;i thuy&#7871;t tr&#236;nh v&#7873; ch&#7911; &#273;&#7873; &#8220;L&#7883;ch s&#7917; Internet&#8221; v&#224; &#8220;L&#7883;ch s&#7917; Computer Chip&#8221;, c&#361;ng &#273;&#7873; c&#7853;p v&#7873; kha kh&#225; c&#225;c m&#7889;c s&#7921; ki&#7879;n &#273;&#225;ng ch&#250; &#253; trong l&#7883;ch s&#7917; ph&#225;t tri&#7875;n c&#7911;a ngh&#224;nh IT ch&#250;ng ta. N&#7871;u c&#243; th&#7901;i gian r&#7843;nh, m&#7901;i b&#7841;n &#273;&#7885;c gh&#233; xem th&#7917;.</p><div id="youtube2-SvCz2UasCts" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;SvCz2UasCts&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/SvCz2UasCts?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-dayhGLWqOG8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;dayhGLWqOG8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/dayhGLWqOG8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Quay tr&#7903; l&#7841;i ch&#7911; &#273;&#7873; ch&#237;nh, c&#249;ng xem &#273;&#7875; c&#243; &#273;&#432;&#7907;c s&#7921; &#273;a d&#7841;ng c&#225;c frontend framework nh&#432; hi&#7879;n nay, th&#236; th&#7871; gi&#7899;i &#273;&#227; tr&#7843;i qua nh&#7919;ng giai &#273;o&#7841;n n&#224;o:</p><h3>1993 - 1996: Ch&#7881; m&#7897;t t&#236;nh y&#234;u ch&#7881; m&#7897;t HTML</h3><p>&#272;&#226;y l&#224; giai &#273;o&#7841;n &#273;&#225;nh d&#7845;u nh&#7919;ng vi&#234;n g&#7841;ch &#273;&#7847;u ti&#234;n &#273;&#432;&#7907;c x&#226;y, &#273;i c&#249;ng v&#7899;i s&#7921; ra &#273;&#7901;i c&#7911;a trang web &#273;&#7847;u ti&#234;n, browser &#273;&#7847;u ti&#234;n, v&#224; HTML. L&#250;c n&#224;y Javascript c&#242;n ch&#432;a ra &#273;&#7901;i, CSS c&#361;ng th&#7871;, n&#234;n c&#225;c trang web &#273;&#7873;u hi&#7875;n th&#7883; d&#432;&#7899;i d&#7841;ng thu&#7847;n HTML. B&#234;n d&#432;&#7899;i l&#224; website &#273;&#7847;u ti&#234;n tr&#234;n th&#7871; gi&#7899;i, vi&#7871;t b&#7903;i Tim Bernes-Lee t&#7841;i vi&#7879;n khoa h&#7885;c CERN, v&#7851;n c&#242;n t&#7891;n t&#7841;i &#273;&#7871;n ng&#224;y nay.</p><p>https://info.cern.ch/hypertext/WWW/TheProject.html</p><h3>1996-2000s: Javascript ra &#273;&#7901;i</h3><p>Javascript ra &#273;&#7901;i trong th&#7901;i gian n&#224;y, vi&#7871;t b&#7903;i &#244;ng Brendan Eich khi &#244;ng &#273;ang l&#224;m vi&#7879;c cho Netscape (c&#361;ng l&#224; m&#7897;t trong nh&#7919;ng browser &#273;&#7847;u ti&#234;n). Javascript ban &#273;&#7847;u &#273;&#432;&#7907;c t&#7841;o ra v&#7899;i c&#225;i t&#234;n l&#224; LiveScript, nh&#432;ng v&#236; l&#250;c b&#7845;y gi&#7901; Java &#273;ang l&#224; ng&#244;n ng&#7919; hot, n&#234;n LiveScript &#273;&#227; &#273;&#7893;i t&#234;n th&#224;nh JavaScript &#273;&#7875; &#273;&#432;&#7907;c ch&#250; &#253; h&#417;n. C&#243; b&#224;i n&#243;i chuy&#7879;n c&#7911;a Lex Fridman v&#224; Brenden Eich <a href="https://www.youtube.com/watch?v=krB0enBeSiE&amp;t=1294s&amp;ab_channel=LexFridman">&#7903; &#273;&#226;y</a>. </p><p>N&#259;m 1996, Internet Explorer c&#7911;a Microsoft c&#361;ng ra &#273;&#7901;i. Sau &#273;&#243; 3 n&#259;m th&#236; h&#7885; gi&#7899;i thi&#7879;u XMLHttpRequest. C&#244;ng ngh&#7879; n&#224;y cho ph&#233;p data &#273;&#432;&#7907;c fetch v&#7873; asynchronous. &#272;&#7871;n &#273;&#226;y t&#244;i c&#243; th&#7855;c m&#7855;c r&#7857;ng &#8220;javascript l&#224; single-threaded language&#8221;, v&#7853;y l&#224;m sao m&#224; XMLHttpRequest c&#243; th&#7875; ch&#7841;y async &#273;&#432;&#7907;c? &#192; th&#236; ho&#225; ra l&#224; do ph&#7847;n callbacks s&#7869; &#273;&#432;&#7907;c browser l&#432;u &#7903; m&#7897;t ch&#7895; kh&#225;c, v&#224; khi callback &#273;&#243; c&#243; k&#7871;t qu&#7843;, single-threaded kia s&#7869; quay l&#7841;i v&#224; execute c&#225;i callback &#273;&#243;. </p><h3>2000s - 2010s: Ajax v&#224; jQuery</h3><p>XMLHttpRequest c&#7843;i ti&#7871;n th&#224;nh Ajax, v&#224; sau &#273;&#243; l&#224; jQuery. <a href="https://designftw.mit.edu/lectures/apis/ajax_adaptive_path.pdf">B&#224;i gi&#7899;i thi&#7879;u v&#7873; Ajax</a> vi&#7871;t n&#259;m 2005 v&#7851;n c&#242;n &#273;&#7871;n ng&#224;y nay.</p><h3>2010s-2015s: Javascript framework</h3><p>B&#7855;t &#273;&#7847;u v&#7899;i s&#7921; ra &#273;&#7901;i c&#7911;a 3 framework l&#7899;n, &#273;&#243; l&#224; BackboneJS, KnockoutJS, v&#224; AngularJS. </p><p>Angular l&#224; s&#7843;n ph&#7849;m c&#7911;a Google. Angular 1 g&#226;y &#273;&#432;&#7907;c ti&#7871;ng vang l&#7899;n v&#224; &#273;&#432;&#7907;c s&#7917; d&#7909;ng r&#7897;ng r&#227;i. Nh&#432;ng do Angular 2 ra &#273;&#7901;i m&#224; l&#7841;i kh&#244;ng t&#432;&#417;ng th&#237;ch v&#7899;i Angular 1, n&#234;n m&#7897;t l&#432;&#7907;ng l&#7899;n l&#7853;p tr&#236;nh vi&#234;n &#273;&#227; c&#7843;m th&#7845;y kh&#244;ng c&#242;n mu&#7889;n g&#7855;n b&#243; v&#7899;i Angular n&#7919;a.</p><p>&#272;&#250;ng l&#250;c n&#224;y, n&#259;m 2013, React c&#7911;a facebook ra &#273;&#7901;i. V&#224; g&#7847;n nh&#432; ngay l&#7853;p t&#7913;c framework n&#224;y chi&#7871;m l&#297;nh th&#7883; tr&#432;&#7901;ng.</p><h3>2016-2020: GraphQL ra &#273;&#7901;i, Next.js ra &#273;&#7901;i</h3><p>C&#249;ng v&#417;i s&#7921; ph&#225;t tri&#7875;n nh&#432; v&#361; b&#227;o c&#7911;a c&#225;c c&#244;ng ngh&#7879; m&#7899;i. Next.js &#273;&#227; &#273;&#7901;i trong th&#7901;i k&#236; n&#224;y.</p><p>Deno &#273;ang d&#7847;n thay th&#7871; Node.js?</p><h3>C&#242;n v&#7873; SPA v&#224; MPA th&#236; sao? </h3><p>Single Page Application (SPA) gi&#7889;ng nh&#432; client-side rendering</p><p>Multiple Page Application (MPA) l&#7841;i gi&#7889;ng nh&#432; server-side rendering</p><h3>V&#236; sao NextJS l&#7841;i kh&#244;ng gi&#7889;ng PHP?</h3><p>Th&#7921;c ra c&#226;u chuy&#7879;n m&#7897;t c&#244;ng ngh&#7879; ra &#273;&#7901;i, sau &#273;&#243; kho&#7843;ng v&#224;i n&#259;m, ng&#432;&#7901;i ta m&#7899;i nh&#7853;n ra c&#244;ng ngh&#7879; &#273;&#243; kh&#244;ng ph&#249; h&#7907;p l&#224; chuy&#7879;n ch&#7859;ng hi&#7871;m g&#7863;p. V&#237; d&#7909; c&#243; th&#7875; k&#7875; &#273;&#7871;n c&#226;u chuy&#7879;n v&#7873; SQL. C&#7913; d&#259;m ba n&#259;m s&#7869; c&#243; m&#7897;t ng&#244;n ng&#7919; truy v&#7845;n n&#224;o &#273;&#243; ra &#273;&#7901;i, n&#243;i r&#7857;ng &#432;u vi&#7879;t h&#417;n SQL. Nh&#432;ng r&#7891;i &#273;&#227; g&#7847;n 40 n&#259;m qua, SQL v&#7851;n l&#224; l&#7921;a ch&#7885;n kh&#244;ng th&#7875; thay th&#7871;. Hay c&#226;u chuy&#7879;n v&#7873; PHP, c&#7913; 5 n&#259;m, s&#7869; c&#243; m&#7897;t ai &#273;&#243; h&#7887;i m&#7897;t c&#226;u &#273;&#7841;i lo&#7841;i nh&#432;: &#8220;Trong v&#242;ng 5 n&#259;m t&#7899;i, PHP c&#243; c&#242;n ai d&#249;ng n&#7919;a kh&#244;ng?&#8221;, d&#297; nhi&#234;n v&#7851;n r&#7845;t nhi&#7873;u ng&#432;&#7901;i &#273;ang d&#249;ng PHP v&#224; s&#7869; c&#242;n d&#249;ng PHP. </p><p>Tuy nhi&#234;n nh&#7919;ng c&#244;ng ngh&#7879; m&#7899;i ra &#273;&#7901;i kh&#244;ng ph&#7843;i ch&#7881; &#273;&#7875; cho vui. Ch&#250;ng ra &#273;&#7901;i &#273;&#7875; gi&#7843;i quy&#7871;t nh&#7919;ng v&#7851;n &#273;&#7873; m&#224; c&#244;ng ngh&#7879; c&#361; kh&#244;ng gi&#7843;i quy&#7871;t &#273;&#432;&#7907;c. V&#237; d&#7909; nh&#432; c&#226;u chuy&#7879;n c&#7911;a Deno &#273;&#432;&#7907;c sinh ra &#273;&#7875; gi&#7843;i quy&#7871;t <a href="https://www.youtube.com/watch?v=M3BM9TB-8yA&amp;ab_channel=JSConf">m&#7897;t s&#7889; v&#7845;n &#273;&#7873; kh&#244;ng th&#7875; gi&#7843;i quy&#7871;t &#273;&#432;&#7907;c c&#7911;a NodeJS</a>.  </p><p>NextJS c&#361;ng v&#7853;y, n&#243; c&#243; m&#7897;t s&#7889; t&#237;nh n&#259;ng m&#224; PHP kh&#244;ng c&#243;, n&#243; ph&#7909;c v&#7909; nh&#7919;ng usecases ri&#234;ng. C&#7909; th&#7875; th&#236; khi n&#224;o d&#249;ng NextJS?</p><ul><li><p>N&#7871;u c&#7847;n c&#7843;i thi&#7879;n SEO</p></li><li><p>N&#7871;u team hi&#7879;n t&#7841;i &#273;ang d&#249;ng React &#7903; ph&#237;a frontend</p></li><li><p>N&#7871;u web y&#234;u c&#7847;u t&#237;nh t&#432;&#417;ng t&#225;c cao v&#7899;i ng&#432;&#7901;i d&#249;ng</p></li><li><p>N&#7871;u mu&#7889;n n&#226;ng cao developer experience (code kh&#244;ng b&#7883; c&#225;u)</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Git merge, squash, rebase]]></title><description><![CDATA[L&#224;m r&#245; m&#7845;y c&#225;i m&#249; m&#7901; v&#7873; git]]></description><link>https://newsletter.lequockhanh.com/p/git-merge-squash-rebase</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/git-merge-squash-rebase</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Sun, 19 Nov 2023 07:28:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xQqK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0317aa22-c271-4465-8dba-81dcde929b82_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xQqK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0317aa22-c271-4465-8dba-81dcde929b82_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xQqK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0317aa22-c271-4465-8dba-81dcde929b82_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!xQqK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0317aa22-c271-4465-8dba-81dcde929b82_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!xQqK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0317aa22-c271-4465-8dba-81dcde929b82_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!xQqK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0317aa22-c271-4465-8dba-81dcde929b82_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xQqK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0317aa22-c271-4465-8dba-81dcde929b82_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0317aa22-c271-4465-8dba-81dcde929b82_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1274235,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xQqK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0317aa22-c271-4465-8dba-81dcde929b82_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!xQqK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0317aa22-c271-4465-8dba-81dcde929b82_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!xQqK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0317aa22-c271-4465-8dba-81dcde929b82_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!xQqK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0317aa22-c271-4465-8dba-81dcde929b82_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@praveentcom?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Praveen Thirumurugan</a> on <a href="https://unsplash.com/photos/a-book-and-a-small-figurine-on-a-desk-KPAQpJYzH0Y?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></figcaption></figure></div><p>Git &#273;&#432;&#7907;c vi&#7871;t b&#7903;i &#244;ng Linus Torvalds, c&#361;ng l&#224; ng&#432;&#7901;i &#273;&#227; vi&#7871;t ra phi&#234;n b&#7843;n &#273;&#7847;u ti&#234;n c&#7911;a nh&#226;n h&#7879; &#273;i&#7873;u h&#224;nh Linux. Linus n&#7893;i ti&#7871;ng l&#224; ng&#432;&#7901;i n&#243;ng t&#237;nh. C&#243; l&#7847;n ngay tr&#234;n s&#243;ng truy&#7873;n h&#236;nh, kh&#244;ng bi&#7871;t v&#236; l&#253; do g&#236; &#244;ng nh&#236;n th&#7859;ng v&#224;o camera, gi&#417; ng&#243;n gi&#7919;a l&#234;n v&#224; n&#243;i: &#8220;Nvidia, Fuck You!&#8221;. Hay c&#243; l&#7847;n kh&#225;c, trong l&#250;c review code &#244;ng comment r&#7857;ng: &#8220;This piece of code is pure and utter shit. It makes me go to bed wanting to kill myself&#8221;, m&#7901;i b&#7841;n &#273;&#7885;c t&#7921; d&#7883;ch.</p><div><hr></div><p>Git ra &#273;&#7901;i n&#259;m 2005, v&#7853;y tr&#432;&#7899;c &#273;&#243; ng&#432;&#7901;i ta d&#249;ng g&#236;?</p><p>Ph&#7847;n m&#7873;m &#273;&#7847;u ti&#234;n d&#249;ng &#273;&#7875; qu&#7843;n l&#253; code &#273;&#432;&#7907;c ghi nh&#7853;n t&#234;n l&#224; Source Code Control System (SCCS). Ph&#7847;n m&#7873;m n&#224;y &#273;&#432;&#7907;c ph&#225;t tri&#7875;n &#7903; Bell Labs cu&#7889;i n&#259;m 1972 &#273;&#7875; ph&#7909;c v&#7909; cho qu&#225; tr&#236;nh ph&#225;t tri&#7875;n h&#7879; &#273;i&#7873;u h&#224;nh Unix. </p><p>Nh&#7919;ng ph&#7847;n m&#7873;m ti&#7871;p theo ra &#273;&#7901;i &#273;&#7875; c&#7843;i ti&#7871;n nh&#7919;ng nh&#432;&#7907;c &#273;i&#7875;m c&#7911;a SCCS c&#243; th&#7875; k&#7875; &#273;&#7871;n nh&#432; Revision Control System (1982), Concurrent Versions System (1986).</p><p>Ti&#7871;p &#273;&#7871;n l&#224; m&#7897;t c&#225;i t&#234;n quen m&#7863;t h&#417;n &#273;&#243; l&#224; Subversion (SVN), &#273;&#432;&#7907;c ph&#225;t tri&#7875;n v&#224;o n&#259;m 2000, v&#224; hi&#7879;n gi&#7901; th&#236; &#273;ang &#273;&#432;&#7907;c qu&#7843;n l&#253; b&#7903;i Apache Foundation.</p><p>SVN c&#361;ng huy ho&#224;ng &#273;&#432;&#7907;c kho&#7843;ng 5 n&#259;m tr&#432;&#7899;c khi git c&#7911;a Linus Torvalds ra &#273;&#7901;i. V&#224; k&#7875; t&#7915; &#7845;y tr&#7903; &#273;i kh&#244;ng th&#7845;y c&#243; ph&#7847;n m&#7873;m n&#224;o n&#7893;i l&#234;n &#273;&#7875; thay th&#7871; git n&#7919;a.</p><div><hr></div><p>Git c&#243; nhi&#7873;u t&#237;nh n&#259;ng, nh&#432;ng n&#7871;u m&#224; n&#243;i s&#7917; d&#7909;ng th&#432;&#7901;ng xuy&#234;n ch&#7855;c ch&#7881; loanh quanh c&#7905; 5 c&#226;u l&#7879;nh:</p><pre><code># kh&#7903;i t&#7841;o 
git init

# ch&#7885;n files &#273;&#7875; commit 
git add &lt;file&gt;

# commit
git commit -m "&lt;commit message&gt;"

# &#273;&#7849;y code &#273;i &#273;&#226;u &#273;&#243;
git push origin &lt;branch&gt;

# l&#7845;y code &#7903; &#273;&#226;u &#273;&#243; v&#7873; 
git pull origin &lt;branch&gt;</code></pre><p>C&#243; ng&#432;&#7901;i l&#224;m bi&#7871;ng &#273;&#7863;t c&#7843; alias, &#273;&#7875; m&#7895;i khi c&#7847;n push, pull, commit, hay checkout th&#236; ch&#7881; c&#7847;n g&#245; v&#224;i ch&#7919; l&#224; xong.</p><pre><code>alias gck='git checkout'
alias gpo='git push origin HEAD'
alias gpl='git pull --rebase'
alias gs='git status'
alias gbr='git branch'</code></pre><div><hr></div><p>D&#297; nhi&#234;n s&#7869; c&#243; nh&#7919;ng v&#7851;n &#273;&#7873; ph&#7913;c t&#7841;p h&#417;n m&#224; m&#7845;y c&#226;u l&#7879;nh ph&#7893; bi&#7871;n b&#234;n tr&#234;n kh&#244;ng gi&#7843;i quy&#7871;t &#273;&#432;&#7907;c. M&#7897;t trong s&#7889; &#273;&#243; l&#224; nhu c&#7847;u v&#7873; vi&#7879;c d&#7885;n d&#7865;p commit. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cG6A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff71e2526-b40a-40c7-9496-9765e20dfbd1_495x168.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cG6A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff71e2526-b40a-40c7-9496-9765e20dfbd1_495x168.png 424w, https://substackcdn.com/image/fetch/$s_!cG6A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff71e2526-b40a-40c7-9496-9765e20dfbd1_495x168.png 848w, https://substackcdn.com/image/fetch/$s_!cG6A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff71e2526-b40a-40c7-9496-9765e20dfbd1_495x168.png 1272w, https://substackcdn.com/image/fetch/$s_!cG6A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff71e2526-b40a-40c7-9496-9765e20dfbd1_495x168.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cG6A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff71e2526-b40a-40c7-9496-9765e20dfbd1_495x168.png" width="495" height="168" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f71e2526-b40a-40c7-9496-9765e20dfbd1_495x168.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:168,&quot;width&quot;:495,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30653,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cG6A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff71e2526-b40a-40c7-9496-9765e20dfbd1_495x168.png 424w, https://substackcdn.com/image/fetch/$s_!cG6A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff71e2526-b40a-40c7-9496-9765e20dfbd1_495x168.png 848w, https://substackcdn.com/image/fetch/$s_!cG6A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff71e2526-b40a-40c7-9496-9765e20dfbd1_495x168.png 1272w, https://substackcdn.com/image/fetch/$s_!cG6A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff71e2526-b40a-40c7-9496-9765e20dfbd1_495x168.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Gi&#7843; s&#7917; c&#243; hai nh&#225;nh: main v&#224; new-feature. Nh&#225;nh new-feature &#273;&#432;&#7907;c t&#7841;o ra t&#7915; nh&#225;nh main.  Trong nh&#225;nh new-feature c&#243; 3 commits theo th&#7913; t&#7921; nh&#432; sau:</p><ul><li><p>Init new feature code</p></li><li><p>Add some configs</p></li><li><p>Finish new feature</p></li></ul><div><hr></div><p>Gi&#7901; mu&#7889;n <strong>merge</strong> nh&#225;nh new-feature v&#224;o nh&#225;nh main th&#236; d&#7877; r&#7891;i.</p><pre><code>$ git checkout main
$ git merge new-feature
$ git log
6ba01da Finish new feature
f67273e Add some configs
dc1f2dd Init new feature code
12783dd Finish MVP
c6fc165 Init commit</code></pre><p>Sau khi merge xong th&#236; nh&#225;nh main gi&#7901; s&#7869; c&#243; &#273;&#7911; c&#7843; 5 commits, 2 c&#243; t&#7915; tr&#432;&#7899;c, v&#224; 3 &#273;&#432;&#7907;c merge t&#7915; new-feature.</p><p>C&#243; m&#7897;t nhu c&#7847;u &#7903; &#273;o&#7841;n merge n&#224;y, &#273;&#7845;y l&#224; l&#224;m sao &#273;&#7875; gom t&#7845;t c&#7843; c&#225;c commit trong nh&#225;nh new-feature th&#224;nh 1 commit duy nh&#7845;t trong nh&#225;nh main. &#7902; nh&#225;nh new-feature c&#243; th&#7875; c&#243; r&#7845;t nhi&#7873;u commit do l&#7853;p tr&#236;nh vi&#234;n th&#7917; nghi&#7879;m &#273;&#7911; th&#7913;, s&#7917;a &#273;&#7911; th&#7913;. Khi merge l&#7841;i v&#224;o nh&#225;nh main, th&#236; nh&#236;n l&#7883;ch s&#7917; commit s&#7869; r&#7845;t h&#7895;n &#273;&#7897;n. </p><p>Trong tr&#432;&#7901;ng h&#7907;p n&#224;y ng&#432;&#7901;i ta d&#249;ng m&#7897;t t&#237;nh n&#259;ng g&#7885;i l&#224; <strong>squash</strong>, t&#7913;c s&#7869; gom nhi&#7873;u commits l&#7841;i th&#224;nh m&#7897;t commit duy nh&#7845;t.</p><pre><code>$ git checkout main
$ git merge <strong>--squash</strong> new-feature
$ git commit -m "Add new feature"
$ git log
3d33fd3 Add new feature
12783dd Finish MVP
c6fc165 Init commit</code></pre><p>L&#250;c n&#224;y m&#7845;y file b&#234;n nh&#225;nh new-feature s&#7869; &#273;&#432;&#7907;c &#8220;git add&#8221; v&#224;o nh&#225;nh main, v&#224; sau git add, d&#297; nhi&#234;n l&#224; &#8220;git commit&#8221; nh&#7919;ng file &#273;&#243; l&#7841;i, k&#7871;t th&#250;c qu&#225; tr&#236;nh squash. Sau qu&#225; tr&#236;nh n&#224;y, nh&#225;nh main ch&#7881; c&#242;n 3 commits, tr&#244;ng g&#7885;n h&#417;n nhi&#7873;u.</p><p>Tuy nhi&#234;n d&#249;ng squash &#273;&#7891;ng ngh&#297;a v&#7899;i vi&#7879;c xo&#225; to&#224;n b&#7897; l&#7883;ch s&#7917; commit ra kh&#7887;i nh&#225;nh main. &#272;i&#7873;u n&#224;y &#273;&#244;i khi l&#7841;i kh&#244;ng &#273;&#432;&#7907;c khuy&#7871;n kh&#237;ch. B&#226;y gi&#7901; gi&#7843; s&#7917; b&#234;n nh&#225;nh new-commit, ta mu&#7889;n b&#7887; &#273;i m&#7897;t s&#7889; commit, nh&#432;ng mu&#7889;n gi&#7919; l&#7841;i m&#7897;t s&#7889; commit th&#236; ph&#7843;i l&#224;m sao?</p><div><hr></div><p>C&#226;u tr&#7843; l&#7901;i l&#224; d&#249;ng &#8220;<strong>git rebase</strong>&#8221;. N&#7871;u d&#7883;ch t&#7915;ng t&#7915; th&#236; c&#243; th&#7875; hi&#7875;u nh&#432; sau: &#8220;re&#8221; ngh&#297;a l&#224; l&#224;m g&#236; &#273;&#243; l&#7841;i, &#8220;base&#8221; l&#224; g&#7889;c, &#8220;rebase&#8221; l&#224; &#8220;l&#224;m l&#7841;i g&#7889;c&#8221;, t&#7913;c c&#243; th&#7875; hi&#7875;u l&#224; ch&#7881;nh l&#7841;i c&#225;c commits. </p><pre><code>$ git checkout new-feature
$ git rebase -i &lt;commit_hash&gt;
$ git rebase --continue</code></pre><p>&#272;&#7875; b&#7855;t &#273;&#7847;u rebase, th&#236; ta c&#7847;n ch&#7885;n m&#7897;t c&#225;i &#8220;base&#8221; &#273;&#7875; c&#243; th&#7875; &#8220;re&#8221;, t&#7913;c l&#224; ch&#7885;n m&#7897;t c&#225;i commit trong qu&#225; kh&#7913; &#273;&#7875; th&#7921;c hi&#7879;n l&#7841;i vi&#7879;c tinh ch&#7881;nh commit. Sau khi ch&#7841;y l&#7879;nh &#8220;rebase -i&#8221;, danh s&#225;ch c&#225;c commit s&#7869; &#273;&#432;&#7907;c hi&#7879;n ra v&#7899;i c&#225;c l&#7921;a ch&#7885;n m&#224; ta c&#243; th&#7875; l&#224;m v&#7899;i m&#7897;t commit c&#7909; th&#7875;. C&#225;c l&#7921;a ch&#7885;n &#273;&#243; r&#7845;t &#273;a d&#7841;ng, t&#7915; vi&#7879;c &#273;&#417;n gi&#7843;n nh&#432; s&#7917;a l&#7895;i typo c&#7911;a m&#7897;t commit message (reword), &#273;&#7871;n vi&#7879;c s&#7917;a l&#7841;i code (edit), t&#7915; vi&#7879;c xo&#225; &#273;i m&#7897;t commit (drop), cho &#273;&#7871;n vi&#7879;c squash nhi&#7873;u commit l&#7841;i v&#7899;i nhau (squash), vv.</p><pre><code># Commands:
# p, pick &lt;commit&gt; = use commit
# r, reword &lt;commit&gt; = use commit, but edit the commit message
# e, edit &lt;commit&gt; = use commit, but stop for amending
# s, squash &lt;commit&gt; = use commit, but meld into previous commit
# f, fixup [-C | -c] &lt;commit&gt; = like "squash" but keep only the previous
#    commit's log message, unless -C is used, in which case keep only #.   #    this commit's message; -c is same as -C but opens the editor
# x, exec &lt;command&gt; = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --
#    continue')
# d, drop &lt;commit&gt; = remove commit
# l, label &lt;label&gt; = label current HEAD with a name
# t, reset &lt;label&gt; = reset HEAD to a label
# m, merge [-C &lt;commit&gt; | -c &lt;commit&gt;] &lt;label&gt; [# &lt;oneline&gt;]
#    create a merge commit using the original merge commit's
#    message (or the oneline, if no original merge commit was
#    specified); use -c &lt;commit&gt; to reword the commit message
# u, update-ref &lt;ref&gt; = track a placeholder for the &lt;ref&gt; to be updated
#    to this position in the new commits. The &lt;ref&gt; is
#    updated at the end of the rebase</code></pre>]]></content:encoded></item><item><title><![CDATA[Bàn phím cơ 5 hàng và tmux]]></title><description><![CDATA[Tmux l&#224; c&#244;ng c&#7909; l&#224;m vi&#7879;c hi&#7879;u qu&#7843; c&#7911;a nhi&#7873;u d&#226;n IT.]]></description><link>https://newsletter.lequockhanh.com/p/ban-phim-co-5-hang-va-tmux</link><guid isPermaLink="false">https://newsletter.lequockhanh.com/p/ban-phim-co-5-hang-va-tmux</guid><dc:creator><![CDATA[Khanh Le]]></dc:creator><pubDate>Sat, 04 Nov 2023 04:02:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Lyyp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f01e004-cbbe-48a6-b4e8-a8b2ffd15a0d_1638x1001.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Tmux l&#224; c&#244;ng c&#7909; l&#224;m vi&#7879;c hi&#7879;u qu&#7843; c&#7911;a nhi&#7873;u d&#226;n IT. Ng&#432;&#7901;i ta vi&#7871;t c&#7843; s&#225;ch &#273;&#7875; h&#432;&#7899;ng d&#7851;n s&#7917; d&#7909;ng Tmux nh&#432; <a href="https://www.amazon.com/tmux-Productive-Development-Brian-Hogan/dp/1934356964">cu&#7889;n n&#224;y</a>, hay <a href="https://pragprog.com/titles/bhtmux2/tmux-2/">cu&#7889;n n&#224;y</a>. </p><p>Ng&#432;&#7901;i d&#249;ng Tmux th&#432;&#7901;ng s&#7869; kh&#244;ng d&#249;ng n&#250;t prefix m&#7863;c &#273;&#7883;nh Ctrl + a, v&#236; r&#245; r&#224;ng nh&#432; v&#7853;y r&#7845;t t&#7889;n c&#244;ng khi ph&#7843;i b&#7845;m gi&#7919; hai ph&#237;m c&#249;ng m&#7897;t l&#250;c. D&#249;ng duy nh&#7845;t m&#7897;t n&#250;t prefix r&#245; r&#224;ng ti&#7879;n l&#7907;i h&#417;n nhi&#7873;u. Th&#432;&#7901;ng ph&#237;m n&#224;o &#237;t &#273;&#432;&#7907;c d&#249;ng nh&#7845;t m&#224; l&#7841;i ti&#7879;n g&#245; nh&#7845;t th&#236; s&#7869; &#273;&#432;&#7907;c ch&#7885;n &#273;&#7875; l&#224;m n&#250;t prefix.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Lyyp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f01e004-cbbe-48a6-b4e8-a8b2ffd15a0d_1638x1001.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Lyyp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f01e004-cbbe-48a6-b4e8-a8b2ffd15a0d_1638x1001.gif 424w, https://substackcdn.com/image/fetch/$s_!Lyyp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f01e004-cbbe-48a6-b4e8-a8b2ffd15a0d_1638x1001.gif 848w, https://substackcdn.com/image/fetch/$s_!Lyyp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f01e004-cbbe-48a6-b4e8-a8b2ffd15a0d_1638x1001.gif 1272w, https://substackcdn.com/image/fetch/$s_!Lyyp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f01e004-cbbe-48a6-b4e8-a8b2ffd15a0d_1638x1001.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Lyyp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f01e004-cbbe-48a6-b4e8-a8b2ffd15a0d_1638x1001.gif" width="1456" height="890" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f01e004-cbbe-48a6-b4e8-a8b2ffd15a0d_1638x1001.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:890,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:338026,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Lyyp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f01e004-cbbe-48a6-b4e8-a8b2ffd15a0d_1638x1001.gif 424w, https://substackcdn.com/image/fetch/$s_!Lyyp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f01e004-cbbe-48a6-b4e8-a8b2ffd15a0d_1638x1001.gif 848w, https://substackcdn.com/image/fetch/$s_!Lyyp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f01e004-cbbe-48a6-b4e8-a8b2ffd15a0d_1638x1001.gif 1272w, https://substackcdn.com/image/fetch/$s_!Lyyp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f01e004-cbbe-48a6-b4e8-a8b2ffd15a0d_1638x1001.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Nhi&#7873;u ng&#432;&#7901;i ch&#7885;n n&#250;t backtick l&#224;m ph&#237;m prefix</figcaption></figure></div><p>Ai c&#243; th&#7855;c m&#7855;c l&#224; c&#225;ch &#273;&#7893;i default prefix nh&#432; n&#224;o th&#236; &#273;&#417;n gi&#7843;n ch&#7881; c&#7847;n v&#224;o file config c&#7911;a tmux &#273;&#7893;i m&#7845;y d&#242;ng sau l&#224; &#273;&#432;&#7907;c:</p><pre><code><code>&gt; vim ~/.tmux.conf
set -g prefix `
unbind C-a
bind ` send-prefix</code></code></pre><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qivb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32cc829-01f0-4264-8ea7-bb95ad337e48_1920x1080.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qivb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32cc829-01f0-4264-8ea7-bb95ad337e48_1920x1080.gif 424w, https://substackcdn.com/image/fetch/$s_!qivb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32cc829-01f0-4264-8ea7-bb95ad337e48_1920x1080.gif 848w, https://substackcdn.com/image/fetch/$s_!qivb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32cc829-01f0-4264-8ea7-bb95ad337e48_1920x1080.gif 1272w, https://substackcdn.com/image/fetch/$s_!qivb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32cc829-01f0-4264-8ea7-bb95ad337e48_1920x1080.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qivb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32cc829-01f0-4264-8ea7-bb95ad337e48_1920x1080.gif" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b32cc829-01f0-4264-8ea7-bb95ad337e48_1920x1080.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:971583,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qivb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32cc829-01f0-4264-8ea7-bb95ad337e48_1920x1080.gif 424w, https://substackcdn.com/image/fetch/$s_!qivb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32cc829-01f0-4264-8ea7-bb95ad337e48_1920x1080.gif 848w, https://substackcdn.com/image/fetch/$s_!qivb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32cc829-01f0-4264-8ea7-bb95ad337e48_1920x1080.gif 1272w, https://substackcdn.com/image/fetch/$s_!qivb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32cc829-01f0-4264-8ea7-bb95ad337e48_1920x1080.gif 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>N&#7871;u l&#224; d&#226;n IT, th&#236; d&#249;ng b&#224;n ph&#237;m c&#417; l&#224; m&#7897;t tr&#7843;i nghi&#7879;m c&#361;ng &#273;&#225;ng &#273;&#7875; th&#7917;. Ti&#7871;ng g&#245; l&#225;ch t&#225;ch v&#224; c&#7843;m gi&#225;c g&#245; ph&#237;m nh&#7865; nh&#224;ng nhi&#7873;u khi l&#224;m cho c&#244;ng vi&#7879;c c&#361;ng tr&#7903; n&#234;n th&#237;ch th&#250; h&#417;n. Ho&#7863;c n&#7871;u l&#432;&#7901;i vi&#7871;t blog qu&#225; th&#236; mua m&#7897;t b&#224;n ph&#237;m c&#417; c&#361;ng l&#224; m&#7897;t c&#225;ch kh&#7855;c ph&#7909;c hi&#7879;u qu&#7843;.</p><p>Nh&#432;ng c&#243; m&#7897;t v&#7845;n &#273;&#7873;. &#272;&#7845;y l&#224; m&#7845;y b&#224;n ph&#237;m c&#417; th&#432;&#7901;ng kh&#244;ng c&#243; ph&#237;m backtick. V&#7853;y ph&#7843;i l&#224;m sao b&#226;y gi&#7901;?</p><p>C&#225;ch &#273;&#417;n gi&#7843;n nh&#7845;t l&#224; &#273;&#7893;i prefix t&#7915; backtick sang m&#7897;t ph&#237;m kh&#225;c. Trong c&#225;c ph&#237;m &#7903; g&#243;c tr&#225;i tr&#234;n c&#7911;a b&#224;n ph&#237;m, ch&#7855;c ch&#7881; c&#243; caps_lock l&#224; ph&#237;m &#237;t &#273;&#432;&#7907;c d&#249;ng h&#417;n c&#7843;, m&#224; v&#7883; tr&#237; c&#7911;a n&#243; c&#361;ng r&#7845;t thu&#7853;n l&#7907;i cho cho ng&#243;n &#250;t c&#243; th&#7875; b&#7845;m &#273;&#432;&#7907;c. Tuy nhi&#234;n c&#225;ch n&#224;y s&#7869; ph&#7843;i hy sinh ch&#7913;c n&#259;ng c&#7911;a ph&#237;m cap_locks, ngh&#297;a l&#224; n&#7871;u d&#249;ng tmux th&#236; kh&#244;ng d&#249;ng &#273;&#432;&#7907;c ph&#237;m caps_lock nh&#432; b&#236;nh th&#432;&#7901;ng. Ho&#7863;c n&#7871;u mu&#7889;n d&#249;ng th&#236; ph&#7843;i b&#7845;m hai l&#7847;n.</p><p>C&#225;ch t&#7889;t h&#417;n &#273;&#7845;y l&#224; &#273;&#7893;i ph&#237;m caps_lock sang m&#7897;t ph&#237;m kh&#225;c c&#242;n &#237;t s&#7917; d&#7909;ng h&#417;n, ho&#7863;c ch&#7859;ng m&#7845;y khi s&#7917; d&#7909;ng, v&#237; d&#7909; nh&#432; ph&#237;m home. C&#225;ch &#273;&#7875; &#273;&#7893;i ch&#7913;c n&#259;ng c&#7911;a c&#225;c ph&#237;m nh&#432; v&#7853;y trong ng&#224;nh ch&#417;i ph&#237;m ng&#432;&#7901;i ta g&#7885;i l&#224; &#8220;custom keymap&#8221;. &#272;&#7875; custom &#273;&#432;&#7907;c keymap th&#236; c&#243; th&#7875; d&#249;ng ph&#7847;m m&#7873;m. V&#237; d&#7909; nh&#432; ph&#7847;n m&#7873;m t&#234;n l&#224; <a href="https://github.com/pqrs-org/Karabiner-Elements">Karabiner-Elements</a> nh&#236;n s&#7889; sao tr&#234;n Github th&#7845;y r&#7845;t uy t&#237;n. Ph&#7847;m m&#7873;m n&#224;y c&#224;i v&#224; d&#249;ng &#273;&#7873;u d&#7877;. Cu&#7889;i c&#249;ng ch&#7881; c&#7847;n c&#224;i &#273;&#7863;t th&#7871; n&#224;y l&#224; &#273;&#227; c&#243; th&#7875; &#273;&#7893;i &#273;&#432;&#7907;c ch&#7913;c n&#259;ng c&#7911;a hai ph&#237;m home v&#224; caps_lock r&#7891;i.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X9Vz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F533d6970-895a-4e76-b34f-ca22f6bade18_1175x758.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X9Vz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F533d6970-895a-4e76-b34f-ca22f6bade18_1175x758.png 424w, https://substackcdn.com/image/fetch/$s_!X9Vz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F533d6970-895a-4e76-b34f-ca22f6bade18_1175x758.png 848w, https://substackcdn.com/image/fetch/$s_!X9Vz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F533d6970-895a-4e76-b34f-ca22f6bade18_1175x758.png 1272w, https://substackcdn.com/image/fetch/$s_!X9Vz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F533d6970-895a-4e76-b34f-ca22f6bade18_1175x758.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X9Vz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F533d6970-895a-4e76-b34f-ca22f6bade18_1175x758.png" width="1175" height="758" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/533d6970-895a-4e76-b34f-ca22f6bade18_1175x758.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:758,&quot;width&quot;:1175,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:281416,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!X9Vz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F533d6970-895a-4e76-b34f-ca22f6bade18_1175x758.png 424w, https://substackcdn.com/image/fetch/$s_!X9Vz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F533d6970-895a-4e76-b34f-ca22f6bade18_1175x758.png 848w, https://substackcdn.com/image/fetch/$s_!X9Vz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F533d6970-895a-4e76-b34f-ca22f6bade18_1175x758.png 1272w, https://substackcdn.com/image/fetch/$s_!X9Vz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F533d6970-895a-4e76-b34f-ca22f6bade18_1175x758.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><p>B&#432;&#7899;c cu&#7889;i c&#249;ng l&#224; &#273;&#7893;i l&#7841;i config trong tmux t&#7915; ph&#237;m backtick v&#7873; ph&#237;m home.</p><pre><code><code>&gt; vim ~/.tmux.conf
set -g prefix Home
unbind C-a
bind Home send-prefix</code></code></pre><p>V&#224; reload l&#7841;i config c&#7911;a tmux l&#224; xong!</p><pre><code>tmux source-file ~/.tmux.conf</code></pre><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lequockhanh.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Khanh&#8217;s Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>