<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>The Writer At Heart</title><link>https://japananh.github.io/blog/</link><description>Recent content on The Writer At Heart</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Thu, 31 Aug 2023 11:30:05 +0700</lastBuildDate><atom:link href="https://japananh.github.io/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Thương thân</title><link>https://japananh.github.io/blog/p/thuong-than/</link><pubDate>Thu, 31 Aug 2023 11:30:05 +0700</pubDate><guid>https://japananh.github.io/blog/p/thuong-than/</guid><description>&lt;img src="https://japananh.github.io/blog/p/thuong-than/cover.jpg" alt="Featured image of post Thương thân" />&lt;p>Bài thơ viết trong một ngày cuối hè nóng bức cùng sự sầu não dễ hiểu của một tâm hồn ngây thơ.&lt;/p>
&lt;blockquote>
&lt;p>Người thương ở đâu&lt;/p>
&lt;p>Sao chẳng thấy&lt;/p>
&lt;p>Thân này mệt rã&lt;/p>
&lt;p>Có ai hay!&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Bốn năm quen biết&lt;/p>
&lt;p>Thi thoảng gặp&lt;/p>
&lt;p>Mà nay thân quá&lt;/p>
&lt;p>Hoá người dưng&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Cạnh nhau im thít&lt;/p>
&lt;p>Sờ thì thấy&lt;/p>
&lt;p>Mà gần chẳng nổi&lt;/p>
&lt;p>Có lạ không!&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Tưởng thoát âu lo&lt;/p>
&lt;p>Tràn ngập nắng&lt;/p>
&lt;p>Mà khi tỉnh giấc&lt;/p>
&lt;p>Hoá cô đơn&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Thương cái thân tôi&lt;/p>
&lt;p>Giận tím mặt&lt;/p>
&lt;p>Nghĩ người lợi dụng&lt;/p>
&lt;p>Có điên không!&lt;/p>
&lt;/blockquote></description></item><item><title>Trật nhịp</title><link>https://japananh.github.io/blog/p/trat-nhip/</link><pubDate>Tue, 04 Apr 2023 17:44:50 +0700</pubDate><guid>https://japananh.github.io/blog/p/trat-nhip/</guid><description>&lt;img src="https://japananh.github.io/blog/p/trat-nhip/cover.jpg" alt="Featured image of post Trật nhịp" />&lt;p>Tôi hay theo dõi các thông tin của nghệ sỹ Lê Cát Trọng Lý và ngôi trường dễ thương của chị mang tên &lt;a class="link" href="https://www.facebook.com/carnation.artschool" target="_blank" rel="noopener"
>Carnation Art School House - Nhà Nghệ thuật Cẩm Chướng&lt;/a>. Hôm nay, tôi tình cờ thấy form đăng ký khoá học &lt;a class="link" href="" >Hoà hợp với thiên nhiên&lt;/a>. Tôi đặc biệt chú ý tới phần giới thiệu khoá học &lt;a class="link" href="https://www.facebook.com/carnation.artschool/posts/pfbid0D5AYRvyy651BWq2CxGJdc4iJW6iWUB3HiRSfTaakx4gdzkieTE6mrgTtRLvSFAdyl" target="_blank" rel="noopener"
>Hoà hợp với tự nhiên&lt;/a>. Những câu chữ đã chạm vào trái tim tôi, lôi ra nhiều cảm xúc rối bời. Sau đây, tôi xin trích toàn bộ nội dung ấy dưới đây. Hi vọng sẽ chạm được tới ai đó ngoài kia.&lt;/p>
&lt;hr>
&lt;p>Sẽ có những lúc trong cuộc sống, bạn cảm thấy dường như mình đang “trật nhịp” với tất cả mọi thứ. Trật nhịp với một ông sếp hà khắc, trật nhịp với một câu nói đùa vô thưởng vô phạt, trật nhịp với đèn đỏ đèn xanh trên đường về nhà từ cơ quan, trật nhịp với câu chuyện thời thượng của con cái, trật nhịp với cái lạnh đến vội khi mình còn chưa ý thức mùa thu vừa đi qua, trật nhịp với cử chỉ ám chỉ cần một cái ôm từ người mình yêu, trật nhịp với cả chính hơi thở hay mong ước ấu thơ của mình. Và có vẻ trong nhiều lúc “trật nhịp”, mình ghét cái tự nhiên đáng chán này, vì mình muốn một cái tự nhiên tốt đẹp hơn. Trong cơn vội vã hấp hối muốn “hoà nhịp” trở lại, mình lại càng trở nên trật lất hơn bao giờ hết.
Những lúc đó,&lt;/p>
&lt;p>Chúng ta thường muốn đi đâu đó thật xa vài ngày,&lt;/p>
&lt;p>Ngồi trước một mặt hồ phẳng lặng cùng người không phiền mình, hoặc là ngồi một mình.&lt;/p>
&lt;p>Đi bộ vào trong rừng, hay là đi leo núi,&lt;/p>
&lt;p>Phần lớn người thì,&lt;/p>
&lt;p>Đi uống bia,&lt;/p>
&lt;p>Đi hát karaoke,&lt;/p>
&lt;p>Nhậu một bữa thật ngon với bạn bè, không cần chuyện trò sâu sắc gì cả,&lt;/p>
&lt;p>Hay là đi mua sắm, đi spa cho thư giãn,&lt;/p>
&lt;p>Một số ít thì,&lt;/p>
&lt;p>Đọc sách,&lt;/p>
&lt;p>Thiền,&lt;/p>
&lt;p>Tự hỏi “nguyên nhân trật nhịp” đến từ đâu,&lt;/p>
&lt;p>Đi khám bác sỹ,&lt;/p>
&lt;p>Đi học..&lt;/p>
&lt;p>À, đi học,&lt;/p>
&lt;p>Người lớn rồi mà còn phải đi học ư? Có vẻ như nói ra điều đó sẽ xấu hổ với bạn bè hay người quen xung quanh vì chẳng lẽ mình còn ngốc, và làm điều vớ vẩn? Học để làm gì khi đã có công việc tốt rồi, có gia đình rồi, có nhà cửa rồi? Tại sao lại phải học nữa? Có vẻ như, chừng nào còn trật nhịp nhiều, chừng đó còn nhiều niềm vui để khám phá, để học, và cũng để chia sẻ “những loại trật nhịp khác nhau” từ mỗi người.&lt;/p>
&lt;p>Đi học để đối diện với cái “Trật nhịp” của mình, để cùng nhau tìm hiểu, khám phá nguyên nhân của những lần “trật nhịp”, để gợi lại, nhớ lại, làm sâu đậm thêm cảm giác “hoà nhịp” trở lại với chính mình, với tự nhiên xung quanh. Và nếu đủ sự nhận ra, hy vọng chúng ta có thể cùng bước trên con đường trở lại “hoà nhịp” với chính mình, hoà hợp với tự nhiên, với môi trường sống xung quanh. Điều đó thật đáng để chúng ta bỏ công sức đầu tư đào sâu nội tâm của chính mình. Để hạnh phúc hơn, thanh thản hơn.&lt;/p></description></item><item><title>Sầu riêng</title><link>https://japananh.github.io/blog/p/sau-rieng/</link><pubDate>Fri, 24 Feb 2023 11:48:05 +0700</pubDate><guid>https://japananh.github.io/blog/p/sau-rieng/</guid><description>&lt;img src="https://japananh.github.io/blog/p/sau-rieng/cover.jpg" alt="Featured image of post Sầu riêng" />&lt;p>Khi một tâm hồn đẹp đi kèm lòng người u ám xao động thì chúng ta sẽ có một nỗi sầu để thưởng.&lt;/p>
&lt;blockquote>
&lt;p>Liễu yếu đào tơ ta không phải&lt;/p>
&lt;p>Bánh bèo ngay thẳng chính là ta&lt;/p>
&lt;p>Đội trời đạp đất ham không nổi&lt;/p>
&lt;p>Quét nhà rửa bát bao đảm đang.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Lòng này nặng trĩu, thơ lai láng&lt;/p>
&lt;p>Một nỗi sầu riêng, ai thấu cho&lt;/p>
&lt;p>Thôi thì mặc ai, để sầu đó&lt;/p>
&lt;p>Gói tất cả lại, ta đi tu.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Thôi thì thôi đi, giải thích nhiều&lt;/p>
&lt;p>Bực mình chẳng muốn nói gì đâu&lt;/p>
&lt;p>Trăng hoa gẹo bướm mong không phải&lt;/p>
&lt;p>Uyên ương lục đục kéo ta vô.&lt;/p>
&lt;/blockquote></description></item><item><title>Cũ giao lại, mới tiếp lấy</title><link>https://japananh.github.io/blog/p/cu-giao-lai-moi-tiep-lay/</link><pubDate>Sat, 31 Dec 2022 23:45:12 +0700</pubDate><guid>https://japananh.github.io/blog/p/cu-giao-lai-moi-tiep-lay/</guid><description>&lt;img src="https://japananh.github.io/blog/p/cu-giao-lai-moi-tiep-lay/cover.jpg" alt="Featured image of post Cũ giao lại, mới tiếp lấy" />&lt;p>Ngày cuối cùng trong năm kết thúc bằng một trận đau đầu bắt đầu từ lúc nâng set tạ cuối của bài đầu tiên và cơn đau kéo dài tới tận tối khiến tôi gần như không thể thư giãn và tập trung nổi để nghĩ về kế hoạch cho năm tới. Trong lúc cố gắng viết bài cuối cùng của năm 2022, tôi đang thấy tủi thân và cô đơn. Tuy vậy, tôi vẫn rất bình tĩnh vì tôi biết rằng cơn mưa nào rồi cũng sẽ tạnh thôi.&lt;/p>
&lt;p>Một năm cũ “lại” sắp qua và năm mới “lại” tới. Vẫn là những bản nhạc Tết mang cùng thông điệp “về nhà đi”. Vẫn là những món ăn nhà nào cũng làm. Vẫn là những câu năm nào mọi người cũng hỏi nhau. “Bao giờ lấy chồng?” “Lương tháng bao nhiêu rồi?” Chả hiểu sao Tết tây, Tết ta năm nào tôi cũng thấy “chán đời”. Không biết là do “FA lâu năm” hay là do “bình mới rượu cũ” nữa. Chỉ biết là ở khoảnh khắc giao thừa này, tôi muốn viết thứ gì đó động viên bản thân.&lt;/p>
&lt;h2 id="nội-chiến">Nội chiến&lt;/h2>
&lt;p>Những giấc mơ của tôi đều là những cuộc chiến “đẫm máu” giữa tôi và một thế lực huyền bí nào đó. Dù tôi không nhớ chính xác từng chi tiết của giấc mơ, tôi phát hiện ra những giấc mơ của tôi chỉ xuất hiện ở giai đoạn tôi stress và đều mang cùng một thông điệp về sự đấu tranh nội tâm một mất một còn, hết sức khốc liệt.&lt;/p>
&lt;p>&lt;a class="link" href="https://en.wikipedia.org/wiki/Persona" target="_blank" rel="noopener"
>Persona&lt;/a> là từ mà tôi rất thích dùng để ám chỉ hình ảnh công khai về tính cách hoặc vai trò xã hội của một người, gọi cho dễ hình dung là “mặt nạ”. Chúng ta đều mang trong mình nhiều thứ “mặt nạ” khác nhau. Ở nơi công sở, bạn phải đeo mặt nạ “nhân viên ngoan”, “đồng đội ngoan”, good team player. Ở nhà bạn phải đóng vai “con ngoan”, “người bạn đời đúng chuẩn” hay “phụ huynh mẫu mực”.&lt;/p>
&lt;p>Persona khiến chúng ta dễ hoà nhập vào cộng đồng và khiến cuộc sống dễ chịu hơn. Ai chả thích được làm người bạn của muôn người. Sống khéo léo không đồng nghĩa với sống ba phải, lươn lẹo. Về lâu dài, việc lạm dụng persona và sống không đúng với bản chất của mình có thể dẫn tới sự mâu thuẫn về tính cách. Lâu dần, gây ra sai lệch về hành vi, mất kiểm soát và có thể là “tâm thần”.&lt;/p>
&lt;p>Trở lại câu chuyện về những giấc mơ, khi kết nối những mảng ghép trong cuộc sống mà những mẩu trí nhớ còn sót lại sau mỗi giấc mơ, tôi bắt đầu hiểu những thông điệp mà tiềm thức muốn nhắn nhủ. Hãy quyết đoán (không bao giờ quay đầu trong mỗi trận đánh, chiến đấu hết mình) và khéo léo hơn để tránh rắc rối (thể hiện ở việc tìm cách chiến đấu thông minh hơn).&lt;/p>
&lt;h2 id="bi-hoan-hỉ">Bi hoan hỉ&lt;/h2>
&lt;p>Tôi tự thấy mình là một đứa rất chán đời, không có hứng thú kết bạn với ai và chắc cũng chả ai muốn kết bạn với tôi cả. Phần lớn thời gian tôi ở một mình, ngồi học gì đó, đọc sách hoặc chơi với mấy bạn pet. Đôi lúc, tôi thấy không hề thoải mái và thậm chí là hoảng sợ khi ở nơi đông người. May mắn là sau khi biết tới xu hướng này của người hướng nội trong cuốn Quiet của Susan Cain thì tôi đã không còn than phiền về “sự thu lu” của chính mình. Thay vào đó, tôi học cách ôm ấp bản thân mình nhiều hơn.&lt;/p>
&lt;p>Tôi từng vô tình đọc một câu dễ thương như thế này “Cô đơn đầu tiên và cuối cùng”. Những hoạt động “giải trí” của tôi đa phần được xếp vào dạng “học tập, làm việc” của người khác nên phần lớn tôi không dễ kết bạn. Tôi thích bàn luận về những thứ “có não” một tí mới chịu được. Kiến thức có thể nói là một dạng rào cản mà một khi bạn biết càng nhiều thì số người am hiểu thứ bạn biết càng ít. Điều đó đồng nghĩa là ít bạn hơn, cô đơn nhiều hơn. Và nếu may mắn gặp người cùng sở thích với mình thì sẽ chơi được vui hơn và bền hơn.&lt;/p>
&lt;h2 id="tiểu-hành-tinh-va-chạm">Tiểu hành tinh va chạm&lt;/h2>
&lt;p>Hồi bé tôi rất thích cách ví von đời người như một chuyến tàu dài, người lên kẻ xuống. Có những người ở lại với chúng ta từ bến đầu tới bến cuối, có người chỉ ở lại vài bến rồi lại xuống tàu đi một hướng khác. Tôi là một đứa trẻ nhạy cảm. Vì hầu như cuộc chia tay nào với tôi cũng thấy lâm li bi đát nên tôi cứ cố níu bạn mình lại. Thế là, tôi lại thành kẻ vô duyên. Mãi về sau, khi đọc về phong cách tối giản thì tôi mới học cách buông bỏ.&lt;/p>
&lt;p>Người ta lớn lên học cách né nỗi đau. Một trong những chiến lược được nhiều người chọn là giữ cho mối quan hệ “vừa đủ”, không để ai chạm vào bên trong mình. Tôi cũng không ngoại lệ. Chẳng biết họ có buồn không nhưng tôi thì có một dạo buồn và suy nghĩ nhiều lắm.&lt;/p>
&lt;p>Khi hai tiểu hành tinh va chạm thì gây ra những hệ quả khó lường, tuỳ vào vận tốc và kích thước của chúng. Một ví dụ điển hình là vụ việc &lt;a class="link" href="https://dantri.com.vn/khoa-hoc-cong-nghe/tieu-hanh-tinh-va-cham-voi-trai-dat-o-van-toc-gap-46-lan-am-thanh-20220315091432613.htm" target="_blank" rel="noopener"
>Tiểu hành tinh 2022 EB5 rực cháy khi tiến vào bầu khí quyển của Trái Đất, trước khi lao xuống một vùng biển ở phía Bắc Iceland&lt;/a>.&lt;/p>
&lt;p>Là một con người có xu hướng quy đổi mọi thứ thành “con số” cho dễ “tính”, sau khi cân đo một hồi thì giữa việc chọn nỗi buồn khi tiểu hành tinh va chạm mình và nỗi buồn của sự “an toàn” thì về lâu dài, tôi ghét sự “an toàn”.&lt;/p>
&lt;h2 id="dự-báo-thời-tiết">Dự báo thời tiết&lt;/h2>
&lt;p>Đầu năm tôi có truyền thống là viết một cái Resolution để cuối năm nhìn lại xem mình đang ở đâu và làm được những gì. Trong số 9 mục tôi viết ra năm 2022 thì chỉ có duy nhất mục số 3 - Đọc hết 25 cuốn (Finish reading list) và mục số 6 (do thay đổi sự nghiệp) là chưa hoàn thành. Có thể nói tôi hài lòng với các những gì mình đạt được.&lt;/p>
&lt;h3 id="dưới-đây-là-mục-tiêu-cho-năm-2023">Dưới đây là mục tiêu cho năm 2023:&lt;/h3>
&lt;ol>
&lt;li>Tìm hiểu sâu hơn về Khoa học máy tính, cụ thể là &lt;strong>Kiến trúc máy tính&lt;/strong>&lt;/li>
&lt;li>Thử thách bản thân về thể chất và tinh thần&lt;/li>
&lt;li>Cho và nhận yêu thương&lt;/li>
&lt;li>Làm việc có ích và giúp đỡ mọi người&lt;/li>
&lt;li>Ráng vui vẻ và hạn chế nghiêm túc quá&lt;/li>
&lt;/ol>
&lt;h3 id="my-resolutions-for-2023">My resolutions for 2023:&lt;/h3>
&lt;ol>
&lt;li>Dive deep into Computer Science (&lt;strong>Computer Architecture&lt;/strong>)&lt;/li>
&lt;li>Challenge me physically &amp;amp; mentally&lt;/li>
&lt;li>Give love and take love&lt;/li>
&lt;li>Try to be useful + help others&lt;/li>
&lt;li>Have fun + make fun of myself&lt;/li>
&lt;/ol></description></item><item><title>The Road To VPF 2022</title><link>https://japananh.github.io/blog/p/the-road-to-vpf-2022/</link><pubDate>Fri, 25 Nov 2022 08:30:05 +0700</pubDate><guid>https://japananh.github.io/blog/p/the-road-to-vpf-2022/</guid><description>&lt;img src="https://japananh.github.io/blog/p/the-road-to-vpf-2022/cover.jpg" alt="Featured image of post The Road To VPF 2022" />&lt;p>Giải đấu Powerlifting 2022 do Liên đoàn Powerlifting Việt Nam - &lt;a class="link" href="https://www.facebook.com/vietpowerlifting/" target="_blank" rel="noopener"
>VPF&lt;/a>, trực thuộc Liên đoàn Powerlifting thế giới - &lt;a class="link" href="https://www.powerlifting.sport/" target="_blank" rel="noopener"
>IPF&lt;/a>, tổ chức đã trôi qua được mấy ngày nhưng giờ tôi mới có thời gian ngồi xuống và viết vài dòng tâm sự sau giải.&lt;/p>
&lt;p>Đây là một giải đấu quy mô quốc gia, quy tụ rất nhiều những Powerlifters và những influencers nổi tiếng trong ngành fitness nói chung và Powerlifting nói riêng tới tham dự. Thật là một vinh dự cho tôi khi được tham gia giải này.&lt;/p>
&lt;p>Đây là link thành tích thi của các VĐV năm nay: &lt;a class="link" href="https://liftingcast.com/meets/mlpjnhpx2t7p/results" target="_blank" rel="noopener"
>https://liftingcast.com/meets/mlpjnhpx2t7p/results&lt;/a>&lt;/p>
&lt;p>Bạn có thể xem thêm thành tích của các VĐV Việt Nam cũng như các VĐV quốc tế ở các giải Powerlifting khác trên toàn thế giới ở link này: &lt;a class="link" href="https://www.openpowerlifting.org/rankings/all-vietnam" target="_blank" rel="noopener"
>https://www.openpowerlifting.org/rankings/all-vietnam&lt;/a>&lt;/p>
&lt;ul>
&lt;li>Giải thích cho các bạn chưa biết về Powerlifting. Powerlifting là một môn thể thao sức mạnh, thi đấu ba động tác là Squats, Bench Press và Deadlifts bằng cách thực hiện mỗi động tác ba lần. Kết quả thi của thí sinh được tính dựa trên tổng trọng lượng nâng tối đa của ba bài.&lt;/li>
&lt;/ul>
&lt;h2 id="lời-cảm-ơn">Lời cảm ơn&lt;/h2>
&lt;h3 id="bạn-cũ">Bạn &amp;ldquo;cũ&amp;rdquo;&lt;/h3>
&lt;p>Cảm ơn sự cổ vũ của những người bạn &amp;ldquo;cũ&amp;rdquo;. Cảm ơn Khánh vì đã làm bánh quy “ngon mê li” và bánh chuối cho tớ. 🥺 Không có bánh của bạn chắc tớ chết đói vì thi liên tục 6 tiếng mất.&lt;/p>
&lt;p>Cảm ơn người anh Tâm Đỗ đã quay hình rất có tâm nên đứa em về nhà có cái đăng story cho dân tình biết mình đi thi giật “giải rút” như thế nào.&lt;/p>
&lt;p>Cảm ơn tên nhóc đồng nghiệp Trung Nguyên và siêu nhân top 4 U93 Frank Hà đã tới cổ vũ. 😌&lt;/p>
&lt;h3 id="người-lạ">Người &amp;ldquo;lạ&amp;rdquo;&lt;/h3>
&lt;p>Cảm ơn sự giúp đỡ nhiệt tình của những người bạn &amp;ldquo;mới&amp;rdquo; trong ngày thi đấu, bao gồm Bla đã chỉ cho chị quy tắc hôm thi đấu, chị Kim Vy đã giúp em kiếm chỗ hôm đo pin vì các bạn nam chen nhau dữ dội quá, rồi còn support em 2 attempts cuối cùng bài Deadlifts, Lão Hạc và những nhiều người khác mà tôi không tag được tên do không kịp xin contact.&lt;/p>
&lt;p>Cảm ơn BTC và đặc biệt là đội đỡ tạ đã làm việc liên tục suốt từ sáng tới tối trong 2 ngày để bảo đảm an toàn cho thí sinh. Sự chuyên nghiệp và tận tuỵ của các anh/bạn đáng được ghi nhận.&lt;/p>
&lt;h3 id="top-2">Top 2&lt;/h3>
&lt;p>Cảm ơn coach, người dắt em tới bộ môn Powerlifting một cách chính thức, đã rủ em đi thi (nhưng lý do thực sự dẫn tới việc đăng ký thi “ngay lập tức” là do tên “Thầy Giáo Ma” 👻 nói em yếu đuối, đi thi cho vui thôi chứ cạnh tranh sao nổi nên em đi thi để chứng minh hắn sai 🤪). Không có coach để than nên tập trung một mình ngồi chiêm nghiệm cái giải đấu đầu tiên trong đời.&lt;/p>
&lt;p>Thank my coach for bringing me to the Powerlifting game. But the reason behind it was the guy I called “The Ghost Teacher” 👻 told me that if I join the game, I’ll never be on top because I’m too weak. I was annoyed so I enrolled to prove him wrong. (Well, I did it 💪)&lt;/p>
&lt;p>Cảm ơn bản thân đã luôn là &amp;ldquo;cô bé chăm chỉ&amp;rdquo; để tới lúc đi thi “có một mình” vì coach đang &amp;ldquo;đi dạo&amp;rdquo; ở lãnh thổ khác, nhìn thí sinh nhà người ta lo âu trông hài hước quá nên mình vô lo luôn. 🤣 Tôi nghĩ rằng đôi lúc, trong thể thao, dựa vào số liệu, chúng ta có thể dự đoán kết quả dựa vào sự nỗ lực trong một thời gian dài. Sau giải, dành effort đi học lại xác suất thông kê nghe cũng hợp lý nhỉ? 🤔&lt;/p>
&lt;h2 id="tôi-đã-đến-với-bộ-môn-powerlifting-như-thế-nào">Tôi đã đến với bộ môn Powerlifting như thế nào?&lt;/h2>
&lt;h3 id="khởi-đầu-may-mắn">Khởi đầu may mắn&lt;/h3>
&lt;p>Hành trình đến với Powerlifting của tôi không hẳn là một sự ngẫu nhiên. Tôi lớn lên trong một thế giới toàn sách vở (con “mọt sách” mê toán, nghiện màu hồng) và một đám bạn toàn nam thích chơi thể thao đủ môn (đá bóng, đá cầu, chạy bộ, bóng chuyền, cầu lông, …). Có thể nói tập luyện thể thao đã ăn vào máu tôi từ rất lâu rồi.&lt;/p>
&lt;p>Năm 2020, tôi bắt đầu thử nâng tạ vì khu nâng tạ ở phòng tập chỗ tôi luôn vắng. Phụ nữ, người già và người “trẻ” nhưng “có dấu hiệu đang lão hoá não” thường thích những thứ dễ dãi và &amp;ldquo;có vẻ&amp;rdquo; đem lại hiệu quả &amp;ldquo;cao&amp;rdquo; như máy tập và biệt đội PT &amp;ldquo;tri thức&amp;rdquo;. Bên cạnh đó, tôi thấy chán với sự &amp;ldquo;nhẹ nhàng&amp;rdquo; của bộ môn Yoga, không hề muốn quay lại sự &amp;ldquo;mạnh mẽ&amp;rdquo; của Karate và không thích phụ thuộc vào các môn ngoài trời trời như chạy bộ hay môn cần chơi nhóm như cầu lông. Đi một mình thì luôn tiện cho những đứa bận rộn, thích sự tự chủ như tôi.&lt;/p>
&lt;p>Trong vài tháng đầu, như bao thanh niên khác khi bắt đầu tập tạ, Youtube là người bạn thân thiết của tôi. Tôi xem videos hướng dẫn tập của &lt;a class="link" href="https://www.youtube.com/@JeffNippard" target="_blank" rel="noopener"
>Jeff Nippard&lt;/a>, &lt;a class="link" href="https://www.youtube.com/@StephanieButtermore" target="_blank" rel="noopener"
>Stephanie Buttermore&lt;/a>, &lt;a class="link" href="https://www.youtube.com/@JeremyEthier" target="_blank" rel="noopener"
>Jeremy Ethier&lt;/a>&lt;strong>,&lt;/strong> &lt;a class="link" href="https://www.youtube.com/@StreetWorkoutLangHoa" target="_blank" rel="noopener"
>Street Workout làng hoa&lt;/a>, &lt;a class="link" href="https://www.youtube.com/@vantoicalisthenics-style4607" target="_blank" rel="noopener"
>Văn Tới Calisthenics-Style&lt;/a> và rất nhiều người nổi tiếng khác. Nâng tạ thật thú vị. Tôi thiền trong lúc nâng tạ. Vâng, tôi không đùa đâu. Sự tập trung và cảm nhận từng bó cơ riêng biệt hoạt động thay vì lạc vô đủ các suy nghĩ trên trời dưới biển chính là thực hành thiền. Tôi đánh giá cao triết lý thực hành thiền trong cuốn &lt;a class="link" href="https://langmai.org/thien-duong/thien-tap-cho-nguoi-ban-ron/" target="_blank" rel="noopener"
>Thiền tập cho người bận rộn&lt;/a> của Thiền sư Thích Nhất Hạnh.&lt;/p>
&lt;blockquote>
&lt;p>Thở vào, tôi biết là tôi đang thở vào.&lt;/p>
&lt;p>Thở ra, tôi biết là tôi đang thở ra.&lt;/p>
&lt;/blockquote>
&lt;p>Nguồn: &lt;a class="link" href="https://langmai.org/tang-kinh-cac/vien-sach/thien-tap/gieo-trong-hanh-phuc/hoi-tho-y-thuc/" target="_blank" rel="noopener"
>https://langmai.org/tang-kinh-cac/vien-sach/thien-tap/gieo-trong-hanh-phuc/hoi-tho-y-thuc/&lt;/a>&lt;/p>
&lt;p>Khi tôi thực hiện động tác Squats, tôi biết cơ mông, cơ đùi mình đang hoạt động như nào, bên nào lực nhiều hơn, mỏi hơn, gối mở sai thì có cảm giác như nào, đâu là điểm rơi chuẩn của mông khi xuống, &amp;hellip; Cố gắng cân bằng lực, cảm nhận cơ thể chính là thiền.&lt;/p>
&lt;p>Ở thời điểm này, tôi tập những động tác khiến tôi thấy vui. Buổi tập của tôi thuờng kéo dài 60 - 90 phút tuỳ hứng mà không theo bất kỳ một quy tắc nào.&lt;/p>
&lt;h3 id="tập-luyện-có-định-hướng">Tập luyện có định hướng&lt;/h3>
&lt;p>Dần dần, tôi cũng tăng được 1 chút tạ và bắt đầu có chút thời gian rảnh đọc sách về Program. Lý do đơn giản là dân tình nói tới Program nhiều quá, tới mức tôi phải đặc biệt chú ý tới nó. Tôi nhớ là mình đã đọc hơn chục cuốn sách. Hai cuốn sách tôi yêu thích nhất là &lt;strong>Starting Strength&lt;/strong> của &lt;strong>RIP&lt;/strong> (Mark Rippetoe) - sách giáo khoa vỡ lòng Powerlifting và &lt;strong>Strong Curves&lt;/strong> của &lt;strong>Bret Contreras&lt;/strong>. Nếu bạn cũng thích đọc, tôi có viết một bài review về những đầu sách tôi từng đọc ở &lt;a class="link" href="https://japananh.github.io/blog/vi/p/review-nhung-cuon-sach-fitness-toi-tung-doc/" target="_blank" rel="noopener"
>đây&lt;/a>. Hi vọng chúng sẽ giúp ích cho bạn.&lt;/p>
&lt;p>Qua giai đoạn ngâm cứu sách vở, tôi tới giai đoạn thực hành, đây là quãng thời gian tôi thử và sai. RIP là người thầy Powerlifting đầu tiên của tôi. Tôi thích Deadlifts và Squats nhưng không tập Bench Press vì sợ ngực lép. Về sau, khi tập tành tử tế với coach, tôi mới biết là ngực còn không phải là nhóm cơ chính trong chuyển động của Bench Press. Trải qua vài cái program từ &lt;a class="link" href="https://stronglifts.com/5x5/" target="_blank" rel="noopener"
>StrongLifts 5×5&lt;/a> , &lt;a class="link" href="https://startingstrength.com/" target="_blank" rel="noopener"
>Starting Strength&lt;/a> của RIP, cho tới &lt;a class="link" href="https://www.bretcontreras.store/products/strong-curves" target="_blank" rel="noopener"
>Strong Curves&lt;/a> của &lt;a class="link" href="https://bretcontreras.com/" target="_blank" rel="noopener"
>Bret Contreras&lt;/a> thì tôi cũng xây dựng cho mình một nền tảng thể lực cơ bản và nhìn thấy cơ thể mình thay đổi rõ rệt.&lt;/p>
&lt;p>Giai đoạn 2021 - đầu 2022, sau hơn một năm tập hết các Program trong sách của Bret Contreras, tôi bắt đầu có ít thời gian rảnh hơn và muốn tìm coach để giúp tôi tập trung vào giá trị cốt lõi của mình - lập trình. May mắn thay, trong khoảng thời gian này, tôi tìm được một coach thích tìm hiểu, chăm đọc nghiên cứu khoa học chứ không chỉ &amp;ldquo;khoe thân&amp;rdquo; và viết bài không đưa nghiên cứu hay dẫn nguồn như nhiều coach tôi thấy trên mạng. Bốn tháng sau, tôi đi thi giải Powerlifting đầu tiên trong đời và đứng &lt;strong>top 5/7 ở hạng cân 57&lt;/strong>. Một thành tích vượt mong đợi vì ở nhà ai cũng nghĩ tôi sẽ về bét.&lt;/p>
&lt;h3 id="mindset">Mindset&lt;/h3>
&lt;p>Đối với một người mới tiếp xúc bộ môn Powerlifting hay thể thao nói chung, tôi nghĩ điều quan trọng nhất không phải là gen di truyền, coach, giáo trình hay dụng cụ tập mà là &lt;strong>mindset&lt;/strong> (cách tư duy của bạn). Này, tôi không phủ nhận vai trò của những thứ kia, ý tôi là bạn cần xây dựng cho mình mindset trước. Mindset tốt sẽ giúp bạn tự do quyết định, nâng cao khả năng tự nghiên cứu, tránh bị lạc vào mê cung và tránh bị lừa gạt trong một ngành chưa được chuẩn hoá bằng bằng cấp như ở Việt Nam. Chúng ta chưa có nhiều Powerlifters có bằng &lt;a class="link" href="https://www.coursera.org/articles/what-does-phd-stand-for********" target="_blank" rel="noopener"
>PhD&lt;/a> (Doctor of Philosophy - bằng cấp học thuật cao nhất trong một lĩnh vực), làm nghiên cứu hay có những phòng thí nghiệm đủ lớn như ở các nước khác.&lt;/p>
&lt;p>&lt;strong>Hãy trở nên thật linh động.&lt;/strong> Bạn không cần phải chờ tới khi có đủ dụng cụ (một chiếc đai, bó gối, băng cuốn cổ tay, singlet, tất, mũ, &amp;hellip;) đạt chuẩn thi đấu của các hãng như SBD hay Inzer để bắt đầu luyện tập (trừ khi bạn dư dả tài chính). Bạn hoàn toàn có thể bắt đầu tập với đồ ngủ, chân đất và dụng cụ tập bình thường ở các phòng gym bụi. Đó là cách tôi bắt đầu tập ở nhà với rack, bar và vài bánh tạ. Đừng phí tiền vào những thứ xa xỉ và đừng nghĩ rằng đeo nó lên sẽ khiến bạn tăng tạ tức thì. Sự &lt;strong>đơn giản&lt;/strong> luôn mang trong mình sức mạnh.&lt;/p>
&lt;p>&amp;ldquo;Thầy&amp;rdquo; là người dẫn dắt bạn đi những bước đầu tiên. Tôi dùng từ &amp;ldquo;thầy&amp;rdquo; vì tôi nghĩ rằng &amp;ldquo;thầy&amp;rdquo; có thể là bất kỳ thứ gì khiến bạn tốt lên mỗi ngày. Đó có thể là coach của bạn, những cuốn sách bạn đọc, khoá học bạn tham gia. Hãy cẩn trọng và tỉnh táo khi chọn &amp;ldquo;thầy&amp;rdquo; cho mình. Hãy nhìn vào số liệu. Những con số hiếm khi nói dối. Bên cạnh đó, đừng để mức tạ và sự hào nhoáng đánh lừa bạn.&lt;/p>
&lt;p>Chúc bạn may mắn trên hành trình tập luyện!&lt;/p>
&lt;h2 id="review-về-giải-powerlifting-vpf-2022">Review về giải Powerlifting VPF 2022&lt;/h2>
&lt;h3 id="luật-thi-đấu">Luật thi đấu&lt;/h3>
&lt;p>VPF 2022 có lẽ là giải đấu được Powerlifters cả nước mong đợi từ lâu vì chúng ta đã trải qua 2 năm Covid gần như không có giải đấu nào. Tôi gần như không tìm hiểu về cộng đồng Powerlifting trong nước cho tới khi coach rủ tôi đi thi. Lý do là tôi không có nhu cầu thi.&lt;/p>
&lt;p>Ấn tượng đầu tiên khi đọc về giải là &lt;strong>tìm mãi không thấy luật ở đâu&lt;/strong>. Tôi phải inbox trực tiếp fan page của VPF để hỏi về luật thi đấu. Họ xác nhận với tôi rằng luật của VPF tuân theo Technical Rules Book của IPF.&lt;/p>
&lt;p>&lt;img src="https://japananh.github.io/blog/p/the-road-to-vpf-2022/vpf-fanpage-chatbox.png"
width="1492"
height="906"
srcset="https://japananh.github.io/blog/p/the-road-to-vpf-2022/vpf-fanpage-chatbox_hu5cefa75a0abf4685c9bb14b50e2e7095_166600_480x0_resize_box_3.png 480w, https://japananh.github.io/blog/p/the-road-to-vpf-2022/vpf-fanpage-chatbox_hu5cefa75a0abf4685c9bb14b50e2e7095_166600_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="BTC xác nhận VPF tuân theo luật của IPF"
class="gallery-image"
data-flex-grow="164"
data-flex-basis="395px"
>&lt;/p>
&lt;p>4 tuần trước ngày thi, 3 tháng sau khi mở đơn đăng ký (26/10/2022), &lt;a class="link" href="https://www.instagram.com/p/CkKOMX7JDYS/" target="_blank" rel="noopener"
>BTC mới công bố luật thi đấu của VPF 2022 (bằng tiếng việt)&lt;/a>. Tất cả các giải thi đấu thể thao tôi biết đều công bố luật trước lúc mở đơn đăng ký cho thí sinh. Đều này đảm bảo là các thí sinh từ lúc chuẩn bị đi thi cho tới lúc bắt đầu thi đã biết rõ về luật và tránh những lỗi sai không đáng có. Sự sơ xuất do vô tình hay cố ý đăng luật thi đấu muộn này của BTC dẫn tới câu chuyện hài hước là có thí sinh nam tới lúc lên sàn kéo Deadlifts còn không biết luật thi quy định rằng phải đi tất cao tới gần đầu gối nên đi một cái tất cổ ngắn.&lt;/p>
&lt;p>&lt;img src="https://japananh.github.io/blog/p/the-road-to-vpf-2022/knee-sleeve-vi.png"
width="1236"
height="296"
srcset="https://japananh.github.io/blog/p/the-road-to-vpf-2022/knee-sleeve-vi_hufc9a9ac12335427dbd2c1af3fb31257b_86087_480x0_resize_box_3.png 480w, https://japananh.github.io/blog/p/the-road-to-vpf-2022/knee-sleeve-vi_hufc9a9ac12335427dbd2c1af3fb31257b_86087_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="Quy định về tất trong bộ luật của VPF 2022"
class="gallery-image"
data-flex-grow="417"
data-flex-basis="1002px"
>&lt;/p>
&lt;p>&lt;img src="https://japananh.github.io/blog/p/the-road-to-vpf-2022/knee-sleeve.png"
width="1440"
height="534"
srcset="https://japananh.github.io/blog/p/the-road-to-vpf-2022/knee-sleeve_hu2424d06bf300a8fded779ffe462fd1e6_75958_480x0_resize_box_3.png 480w, https://japananh.github.io/blog/p/the-road-to-vpf-2022/knee-sleeve_hu2424d06bf300a8fded779ffe462fd1e6_75958_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="Quy định về tất trong bộ luật của IPF 2022"
class="gallery-image"
data-flex-grow="269"
data-flex-basis="647px"
>&lt;/p>
&lt;p>Hay trong lúc chờ warm-ups, tôi thấy một thí sinh nữ còn &lt;strong>đi xỏ gối theo cách không đúng quy định nhưng không hề bị cảnh báo&lt;/strong> (dùng dây để hỗ trợ kéo bó gối lên trên đùi).&lt;/p>
&lt;p>&lt;img src="https://japananh.github.io/blog/p/the-road-to-vpf-2022/illegal.png"
width="1030"
height="1174"
srcset="https://japananh.github.io/blog/p/the-road-to-vpf-2022/illegal_hu55bf2cb7b6e3016b4de17cac72946916_886241_480x0_resize_box_3.png 480w, https://japananh.github.io/blog/p/the-road-to-vpf-2022/illegal_hu55bf2cb7b6e3016b4de17cac72946916_886241_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="Đây là cách đeo bó gối vi phạm luật IPF 2022 mà thí sinh nữ trong giải VPF 2022 thực hiện."
class="gallery-image"
data-flex-grow="87"
data-flex-basis="210px"
>&lt;/p>
&lt;p>Đây là cách đeo bó gối vi phạm luật IPF 2022 mà thí sinh nữ trong giải VPF 2022 thực hiện.&lt;/p>
&lt;p>Một câu chuyện khác nữa là lúc vào cân trước giờ thi, bạn gái cân thí sinh nữ chỉ bảo một câu rằng “Cân trước giờ thi đấu thì MẶC ĐỒ hay CỞI ĐỒ cũng được ạ”. Điều này hiển nhiên vi phạm luật của IPF “Thí sinh chỉ được mặc đồ lót hoặc không mặc gì lúc lên cân”.&lt;/p>
&lt;h3 id="câu-chuyện-doping">Câu chuyện Doping&lt;/h3>
&lt;p>Liên đoàn Powerlifting Việt Nam - VPF trực thuộc Liên đoàn Powerlifting thế giới - IPF. Theo quy định của IPF, tất cả các liên đoàn con phải tuân thủ luật thi đấu của IPF, tức là giải đấu &lt;strong>BẮT BUỘC&lt;/strong> có kiểm tra doping. Từ bé tới giờ, tôi chưa bao giờ đi thi giải nào cỡ quốc gia nên rất hào hứng xem quá trình kiểm tra doping diễn ra thực tế ở một giải đấu như nào. Thực tế là giải VPF năm nay &lt;strong>không hề có kiểm tra doping&lt;/strong>.&lt;/p>
&lt;p>&lt;img src="https://japananh.github.io/blog/p/the-road-to-vpf-2022/anti-doping-ipf.png"
width="1692"
height="1126"
srcset="https://japananh.github.io/blog/p/the-road-to-vpf-2022/anti-doping-ipf_hu398dc75fa137dd2272aa39f13a7b6d2c_310091_480x0_resize_box_3.png 480w, https://japananh.github.io/blog/p/the-road-to-vpf-2022/anti-doping-ipf_hu398dc75fa137dd2272aa39f13a7b6d2c_310091_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="https://www.powerlifting-oceania.com/anti-doping/ipf-anti-doping-rules"
class="gallery-image"
data-flex-grow="150"
data-flex-basis="360px"
>&lt;/p>
&lt;p>Nguồn: &lt;a class="link" href="https://www.powerlifting-oceania.com/anti-doping/ipf-anti-doping-rules" target="_blank" rel="noopener"
>https://www.powerlifting-oceania.com/anti-doping/ipf-anti-doping-rules&lt;/a>&lt;/p>
&lt;p>Khi về nhà, tôi đã tìm hiểu và hỏi những người bạn làm trong ngành thế thao về quy trình kiểm tra doping trong thể thao. Bạn tôi gửi cho tôi bài viết bằng Tiếng việt của anh &lt;a class="link" href="https://www.facebook.com/at.anhtuan" target="_blank" rel="noopener"
>Nguyễn Ngọc Anh Tuấn&lt;/a> - Founder của AT Sports Therapy. Bài viết nêu rõ ràng quy trình kiểm tra doping ở một giải đấu thể thao có quy định kiểm tra doping.&lt;/p>
&lt;p>Bài viết gốc: &lt;a class="link" href="https://www.facebook.com/at.anhtuan/posts/pfbid0m5mmDUiDrbKb7YJHGSDnEx6F6YEC6akk5iZHcLvcsDtz4uJAhDkZvxERTqQCaVQSl" target="_blank" rel="noopener"
>https://www.facebook.com/at.anhtuan/posts/pfbid0m5mmDUiDrbKb7YJHGSDnEx6F6YEC6akk5iZHcLvcsDtz4uJAhDkZvxERTqQCaVQSl&lt;/a>&lt;/p>
&lt;p>Tôi sẽ tóm tắt lại ý chính của bài viết như sau. Liên đoàn sẽ bốc thăm ra một hoặc vài cá nhân để kiểm tra doping bằng việc lấy mẫu nước tiểu (hoặc mẫu máu tuỳ vào quy định). Vận động viên sẽ đi tiểu trước/lấy máu dưới sự chứng kiến TẬN MẮT của cán bộ kiểm tra doping. Mẫu nước tiểu sau đó được đóng niêm phong và mang tới phòng thí nghiệm đạt chuẩn do Cơ quan phòng chống doping thế giới &lt;a class="link" href="https://www.wada-ama.org/" target="_blank" rel="noopener"
>WADA - World Anti-Doping Agency&lt;/a> công nhận. Tại đây mẫu nước tiểu/máu chia làm hai phần, một phần để test doping, phần còn lại để làm đối chứng nếu có khiếu nại.&lt;/p>
&lt;p>Trong danh sách mới nhất tôi đọc được, tính tới ngày 25/11/2022, ở khu vực Đông Nam Á hiện tại có mỗi Thái Lan là có phòng thí nghiệm đạt chuẩn trong danh sách của WADA.&lt;/p>
&lt;p>&lt;img src="https://japananh.github.io/blog/p/the-road-to-vpf-2022/ipf-doping-agency.png"
width="1540"
height="388"
srcset="https://japananh.github.io/blog/p/the-road-to-vpf-2022/ipf-doping-agency_huc8c3251fb195570f6a0f9ff9d5b4252b_104184_480x0_resize_box_3.png 480w, https://japananh.github.io/blog/p/the-road-to-vpf-2022/ipf-doping-agency_huc8c3251fb195570f6a0f9ff9d5b4252b_104184_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="Tính tới ngày 25/11/2022, ở khu vực Đông Nam Á hiện tại có mỗi Thái Lan là có phòng thí nghiệm đạt chuẩn."
class="gallery-image"
data-flex-grow="396"
data-flex-basis="952px"
>&lt;/p>
&lt;p>Nguồn: &lt;a class="link" href="https://www.wada-ama.org/sites/default/files/2022-01/2020_anti-doping_testing_figures_en.pdf" target="_blank" rel="noopener"
>https://www.wada-ama.org/sites/default/files/2022-01/2020_anti-doping_testing_figures_en.pdf&lt;/a>&lt;/p>
&lt;p>Theo quy định của IPF, đối tượng kiểm tra doping là thành viên của IPF. Nếu bạn đăng ký thi và đóng lệ phí liên đoàn cho VPF - Liên đoàn trực thuộc IPF, thì bạn sẽ là đối tượng cần phải kiểm tra doping. Việc kiểm tra doping diễn ra ở bất kỳ thời điểm nào trong năm, kể cả trong và ngoài thời gian diễn ra giải đấu.&lt;/p>
&lt;p>&lt;img src="https://japananh.github.io/blog/p/the-road-to-vpf-2022/ipf-testing.png"
width="1912"
height="1850"
srcset="https://japananh.github.io/blog/p/the-road-to-vpf-2022/ipf-testing_huf407da96845c235fc92d5525640edd92_922163_480x0_resize_box_3.png 480w, https://japananh.github.io/blog/p/the-road-to-vpf-2022/ipf-testing_huf407da96845c235fc92d5525640edd92_922163_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="https://www.asia-powerlifting.com/anti-doping/testing"
class="gallery-image"
data-flex-grow="103"
data-flex-basis="248px"
>&lt;/p>
&lt;p>Nguồn: &lt;a class="link" href="https://www.asia-powerlifting.com/anti-doping/testing" target="_blank" rel="noopener"
>https://www.asia-powerlifting.com/anti-doping/testing&lt;/a>&lt;/p>
&lt;p>Dưới đây là báo cáo danh sách các VĐV và chất cấm được phát hiện khi kiểm tra doping vào năm 2021.&lt;/p>
&lt;p>&lt;img src="https://japananh.github.io/blog/p/the-road-to-vpf-2022/doping-report.png"
width="2224"
height="1554"
srcset="https://japananh.github.io/blog/p/the-road-to-vpf-2022/doping-report_hu7cb45840c5bfe105c4f77036eaedbf34_494053_480x0_resize_box_3.png 480w, https://japananh.github.io/blog/p/the-road-to-vpf-2022/doping-report_hu7cb45840c5bfe105c4f77036eaedbf34_494053_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="https://www.asia-powerlifting.com/fileadmin/ipf/data/anti-doping/reports/2021-IPF-Anti-Doping_Report.pdf"
class="gallery-image"
data-flex-grow="143"
data-flex-basis="343px"
>&lt;/p>
&lt;p>Nguồn: &lt;a class="link" href="https://www.asia-powerlifting.com/fileadmin/ipf/data/anti-doping/reports/2021-IPF-Anti-Doping_Report.pdf" target="_blank" rel="noopener"
>https://www.asia-powerlifting.com/fileadmin/ipf/data/anti-doping/reports/2021-IPF-Anti-Doping_Report.pdf&lt;/a>&lt;/p>
&lt;p>Việc không rõ ràng trong luật thi đấu của VPF khiến tôi cảm thấy vô cùng khó hiểu và có chút bất bình. Nếu năm sau giải còn tiếp tục tổ chức, hi vọng BTC sẽ làm mọi thứ minh bạch và rõ ràng hơn.&lt;/p>
&lt;h2 id="lời-kết">Lời kết&lt;/h2>
&lt;p>Vậy là mùa giải VPF 2022 đã qua với nhiều niềm vui và bài tâm dự dài dòng này cuối cùng cũng đã tới hồi kết. Chúng ta sẽ gặp lại nhau vào mùa giải sau với &lt;strong>Một mùa giải chuyên nghiệp hơn&lt;/strong> và &lt;strong>Một tinh thần thể thao cao thượng hơn&lt;/strong> và &lt;strong>Một thành tích ấn tượng hơn&lt;/strong>.&lt;/p>
&lt;p>Cảm ơn tất cả các bạn. Tạm biệt và Hẹn gặp lại!&lt;/p></description></item><item><title>Autumn Notes - A Reconsideration of The Real Life</title><link>https://japananh.github.io/blog/p/autumn-notes-a-reconsideration-of-real-life/</link><pubDate>Fri, 11 Nov 2022 00:38:47 +0700</pubDate><guid>https://japananh.github.io/blog/p/autumn-notes-a-reconsideration-of-real-life/</guid><description>&lt;img src="https://japananh.github.io/blog/p/autumn-notes-a-reconsideration-of-real-life/cover.jpeg" alt="Featured image of post Autumn Notes - A Reconsideration of The Real Life" />&lt;p>&lt;strong>Autumn Notes&lt;/strong> is the last note of the series 100 Days of Challenge that I wrote in the Autumn of 2022. This is a random-thought post as usual. The content is about what I learned, how I overcome my difficulties, and why things work.&lt;/p>
&lt;h2 id="dopamine">Dopamine&lt;/h2>
&lt;p>Loss of motivation is the most difficult thing that I need to deal with in the recent year. Working on others’ projects, fixing bugs, following others’ rules, and sometimes dealing with toxic work culture drove me crazy and exhausted. I found myself lost and overwhelmed by almost everything.&lt;/p>
&lt;p>At that time, my English got better and I started to listen to &lt;a class="link" href="https://www.youtube.com/c/AndrewHubermanLab" target="_blank" rel="noopener"
>The Huberman Lab&lt;/a> at their very first episodes. The &lt;a class="link" href="https://www.youtube.com/watch?v=p3JLaF_4Tz8" target="_blank" rel="noopener"
>conversation&lt;/a> between Prof. Huberman (the host) and Dr. Anna Lembke (the guest) about Dopamine enlighten me about why and how all these things happened. I didn&amp;rsquo;t notice that my dopamine level was very low at that time so I have no mood on anything.&lt;/p>
&lt;p>Note:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Dopamine&lt;/strong> is &lt;strong>a feel-good neurotransmitter&lt;/strong> that plays a role in many functions in the body, including motivation, mood, attention, and memory. If your dopamine level is very low, you might have almost no motivation to do anything.&lt;/li>
&lt;li>A &lt;strong>neurotransmitter&lt;/strong> is a chemical messenger that transmits signals in the body. It also acts as a hormone.&lt;/li>
&lt;/ul>
&lt;p>To learn more about Dopamine and how it works to control your mood, I recommend you read the amazing and detailed Dopamine paper: &lt;a class="link" href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4826767/" target="_blank" rel="noopener"
>https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4826767/&lt;/a>.&lt;/p>
&lt;p>After a year of trial and error, here are 3 things that significant improve my mood:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Viewing sunlight in the morning (before 8 AM) and/or in the late afternoon (after 4 PM).&lt;/strong>&lt;/li>
&lt;/ol>
&lt;p>I think the lack of vitamin D (D3) is due to covering my body by wearing like a ninja outside and working indoors all day. In the summer, it seemed reasonable when I protected my body this way. But in the winter, the lack of sunlight decreased my performance at work. I felt tired and low mood all day.&lt;/p>
&lt;p>No one ever told me about the relationship between sunlight (especially blue light) and the alert system in the human brain. Sunlight suspends melatonin in the human brain. Melatonin is a hormone that your brain produces in response to darkness. That way if we feel alert when we view the sunlight.&lt;/p>
&lt;p>For more information, I hightly recommend you watch this episode from The Huberman Lab: &lt;a class="link" href="https://www.youtube.com/watch?v=UF0nqolsNZc" target="_blank" rel="noopener"
>https://www.youtube.com/watch?v=UF0nqolsNZc&lt;/a>.&lt;/p>
&lt;ol start="2">
&lt;li>&lt;strong>Magnesium&lt;/strong>&lt;/li>
&lt;/ol>
&lt;p>Magnesium plays many crucial roles in the body, such as supporting muscle and nerve function and energy production. Huberman mentioned &lt;strong>Magnesium&lt;/strong> as a great supplement for sleep, mood, and exercising in one episode (sorry, I forgot its name). You can read more studies about the benefits of Magnesium in &lt;a class="link" href="https://examine.com/summaries/?filter=supplements&amp;amp;value=magnesium" target="_blank" rel="noopener"
>Examine&lt;/a>.&lt;/p>
&lt;p>I started to use Magnesium supplements 5 months ago. My dose is &lt;strong>400 mg a day&lt;/strong> (an average dose for women my age), &lt;strong>before bed&lt;/strong>. You can use it after your workout session or before bed depending on the way you feel better. I was dealing with sleep quality so I used it before bed. If your priority is improving training, you can use it after training.&lt;/p>
&lt;ol start="3">
&lt;li>&lt;strong>Sleep control&lt;/strong>&lt;/li>
&lt;/ol>
&lt;p>I tracked my sleep quality with a smart band that connected to my phone via Bluetooth. The app analyzed my sleep via some indicators such as the time woke up, the time to bed, regularity of rising time, deep sleep continuity, etc. When all indicators are normal, it means high sleep quality. Trying to improve as many indicators as I can help me feel relaxed and calm the next day.&lt;/p>
&lt;h2 id="the-rules-of-thirds">The rules of thirds&lt;/h2>
&lt;p>I started my powerlifting journey and prepared for my first meet 4 months ago. This sport is not easy for me, an absolute beginner. I was struggling with SBD techniques for the first 2 months (didn&amp;rsquo;t know how to hold the bar and arching in bench, good-morning squat, conven-sumo deadlift, etc). I cried, yelled at myself and thought of quitting it. The rules of thirds by &lt;a class="link" href="https://www.instagram.com/alexipappas" target="_blank" rel="noopener"
>Alexi Pappas&lt;/a>, came into my life as a magic Mantra.&lt;/p>
&lt;p>I couldn&amp;rsquo;t hit my last exercise 2 weeks ago. Then it happened again a week later. 2 weeks left before the meet. I was crying so hard. I didn&amp;rsquo;t know why. My mood was down. Then I thought of the rules of thirds and counted my sessions. 2 crappy days (3.3%) along the 4 months (60 sessions). The ratio is quite good. Well, the number never lies you. No cry, no anxiety.&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;When you are chasing a dream or doing anything hard, you&amp;rsquo;ve meant to feel &lt;strong>GOOD&lt;/strong> a third of the time, &lt;strong>OKAY&lt;/strong> a third of the time, and &lt;strong>CRAPPY&lt;/strong> a third of the time. If the ratio roughly in that range, then you&amp;rsquo;re doing fine. Today was a crappy day, along your dream chasing.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Note: Alexi Pappas is a Greek-American runner, filmmaker, actor, and writer.&lt;/p>
&lt;p>Reference: &lt;a class="link" href="https://www.instagram.com/tv/CgF3hJWlqdM" target="_blank" rel="noopener"
>https://www.instagram.com/tv/CgF3hJWlqdM&lt;/a>&lt;/p>
&lt;h2 id="sleepiness">Sleepiness&lt;/h2>
&lt;p>Beside the loss of motivation, I also deal with the sleepiness in the morning that affected my performance at work.&lt;/p>
&lt;p>First, I started with nutrition as the easiest way to manipulate my sleep. I used to be a high-carbs eater (&amp;gt;= 60%) for a long time. It turned out &lt;strong>reducing carbs down to 50%&lt;/strong> helps reduce sleepiness because my stomach doesn’t need to spend a lot of energy to digest carbs and the insulin level won’t peak too high.&lt;/p>
&lt;p>&lt;strong>Intermittent fasting&lt;/strong> also works well for me, I skip breakfast on the day I do work out in the morning due to no time to cook in the morning. I maintained macros, just no breakfast. After 3 months, I saw some amazing results such as:&lt;/p>
&lt;ul>
&lt;li>My body recomposition improved, my abs decreased from 71 to 68 cm.&lt;/li>
&lt;li>I look leaner and don’t be annoyed because of my full stomach. I started to realize that I love an empty stomach in the morning.&lt;/li>
&lt;li>No sleepiness in the morning and afternoon, except my sleeping period, is too short (below 5 hours) or the sleeping quality is not good.&lt;/li>
&lt;/ul>
&lt;p>As a result, the incredible thing happened that I started to feel hungry at meal time (3 times a day in the morning/noon/night) after a year of no hungry at all. Therefore, I stopped intermittent fasting and my eating routine back to normal. Life always compensate us in some way if we work hard.&lt;/p>
&lt;p>Second, I still fall asleep more quickly on rainy/cloudy days. The greatest way to find a solution of any problem is figuring out why it happened. Here are some reasons that cause sleepiness on rainy/cloudy days.&lt;/p>
&lt;ul>
&lt;li>The increased negative ion content in the air.&lt;/li>
&lt;li>Rainy sounds are lullabies.
&lt;ul>
&lt;li>Studies have found that when rain sounds enter people’s brains, the brain unconsciously relaxes and produces alpha waves, which are very close to the state of the brain when a human sleeps.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Increased secretion of melatonin in the body when it darks
&lt;ul>
&lt;li>&lt;a class="link" href="https://www.sleepfoundation.org/melatonin" target="_blank" rel="noopener"
>Darkness prompts the pineal gland to start producing melatonin while light causes that production to stop.&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Decreased oxygen content in the air.
&lt;ul>
&lt;li>Oxygen can stimulate the brain and make us feel refreshed. When it rains, there is more water vapor in the air, which results in lower air pressure and a relative decrease in oxygen content. In such a situation, the brain begins to slack off, and people will feel sleepy.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>When understood the causes, I didn&amp;rsquo;t found myself lost in negative thoughts that ruined my days. I came up with some solutions.&lt;/p>
&lt;ul>
&lt;li>Make the room as bright as possible (Light suspends the melatonin).&lt;/li>
&lt;li>Take a deep breath (To increase the oxygen content in my body).&lt;/li>
&lt;li>Increase heart rate by exercising or talking to someone (Increases my dopamine level and alert my brain).&lt;/li>
&lt;/ul>
&lt;h2 id="compassion">Compassion&lt;/h2>
&lt;p>&lt;a class="link" href="https://lexfridman.com/" target="_blank" rel="noopener"
>Lex Fridman&lt;/a>, the famous AI researcher, is the first guy to teach me about &lt;strong>compassion&lt;/strong> and &lt;strong>love&lt;/strong> on his podcast, but Q is the guy who motivated me to make my first move. I&amp;rsquo;m quite good at Maths and logic but very bad at learning abstract things and emotions. Compassion requires deep observation, mindfulness, and patience.&lt;/p>
&lt;p>Self-help books taught me to spend most of my time with great people.&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;We are the average of the five people we spend the most time with.&amp;rdquo; - &lt;a class="link" href="jimrohn.com" >Jim Rohn&lt;/a> said.&lt;/p>
&lt;/blockquote>
&lt;p>&amp;ldquo;Great&amp;rdquo; means wealthy, flourishing career, good-looking, blissful relationship, etc. If you don&amp;rsquo;t fall under the criteria, I will ignore you. That mindset caused me a ton of trouble in daily life. I compared myself to others and developed low self-esteem. I also treated people unfairly by their &amp;ldquo;success status&amp;rdquo;.&lt;/p>
&lt;p>How do I know where I am in my success status when I don&amp;rsquo;t compare myself to others?&lt;/p>
&lt;p>When I thought I&amp;rsquo;m on a higher level, I ignored the existence of the &amp;ldquo;lower&amp;rdquo; people. On the other side, I felt &amp;ldquo;motivated&amp;rdquo; to move forward when I see success people. But that motivation was just an illusion. It took me weeks, months, or even years to accomplish my goals. Meanwhile, most time I felt jealous and ashamed by the thought I was not good enough, or people might call it &lt;strong>&amp;ldquo;Imposter syndrome&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>When Q told me about the class hierarchy of wealthy people vs poor people, we debated for an hour and I suspected most of his arguments and reasoning. We didn&amp;rsquo;t discuss more about this topic after that. A few weeks later, I saw a comic named &lt;a class="link" href="https://www.facebook.com/thewokesalaryman/posts/pfbid02MoANmdVSANzPG3TGmmEapui67LQAtpTXMixzD3DWWWZk8FaoT9rqpLZNQFK6KAZTl" target="_blank" rel="noopener"
>Hedonic treadmill&lt;/a> about the way we live our lives by breaking old boxes and fall into more comfortable boxes, do it again until we are satisfied with our lives. I found my Aha! moment.&lt;/p>
&lt;p>When I was in a fresher position, I thought of my career path and saw my coworkers and my friends working so hard to get their dream jobs. They double/triple their salary in the next 2 years and became superman at work. When I compared myself to them, I was distressed. I didn&amp;rsquo;t realize that they have NO personal life. They work all day and hang out with family or friends at weekends or holidays. They don&amp;rsquo;t exercise and don&amp;rsquo;t have a &amp;ldquo;balance work-life&amp;rdquo;. Their body shapes and their health become worse. Some of them fall into the mindset of cold-hearted as I did. I respect their hard-working, and they contribute value to the world but I quite dislike the way they live.&lt;/p>
&lt;p>The way I disliked my family is they were born in a box and lived their whole life in that box. No ambition, no improvement. I blamed them for laziness and backwardness. I felt ashamed of my behaviors. They have their choices. They are satisfied with their boxes. So do I.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>This is the last note of the series &lt;a class="link" href="http://thewriteratheart.com/categories/100-days-of-challenge/" target="_blank" rel="noopener"
>&lt;strong>100 Days of Challenge&lt;/strong>&lt;/a>.&lt;/p>
&lt;p>I started this series just want to write down what I observed in my daily life with the philosophy is &lt;strong>&amp;ldquo;Doing it for fun&amp;rdquo;&lt;/strong>. A year look back, I have a blog with 100 posts and some new friends came into my life unexpectedly. I realize that I love &lt;strong>reading&lt;/strong>, &lt;strong>writing&lt;/strong>, and &lt;strong>sharing&lt;/strong>. The more I write, the more I understand myself and become a better me. Smart brain with a compassionate heart.&lt;/p>
&lt;p>Welcome to my world!&lt;/p></description></item><item><title>Archives</title><link>https://japananh.github.io/blog/archives/</link><pubDate>Sun, 30 Oct 2022 00:00:00 +0000</pubDate><guid>https://japananh.github.io/blog/archives/</guid><description/></item><item><title>Ghi Chép Ngắn Về Huberman Lab Podcast Số 88</title><link>https://japananh.github.io/blog/p/ghi-chep-ngan-ve-huberman-lab-podcast-so-88/</link><pubDate>Wed, 05 Oct 2022 09:00:00 +0700</pubDate><guid>https://japananh.github.io/blog/p/ghi-chep-ngan-ve-huberman-lab-podcast-so-88/</guid><description>&lt;img src="https://japananh.github.io/blog/p/ghi-chep-ngan-ve-huberman-lab-podcast-so-88/cover.jpg" alt="Featured image of post Ghi Chép Ngắn Về Huberman Lab Podcast Số 88" />&lt;p>Lần đầu tiên, tôi nghe trọn vẹn một podcast trong lúc nấu ăn và não không bị lạc đi một phương trời xa xôi nào đấy. Phải nói là có nhiều tools hay và tính áp dụng cao. Tôi thực sự phục bác Huberman vì sự đơn giản trong cách giải thích về cơ chế hoạt động của các chất dẫn truyền thần kinh và các tools áp dụng.&lt;/p>
&lt;p>Dưới đây là ghi chép ngắn của tôi về những thứ tôi thấy thú vị ở &lt;a class="link" href="https://www.youtube.com/watch?v=yb5zpo5WDG4" target="_blank" rel="noopener"
>Podcast số 88 - Optimize your focus&lt;/a>.&lt;/p>
&lt;h2 id="nghiên-cứu-ở-phòng-thí-nghiệm-của-giáo-sư-thần-kinh-học-wendy-suzuki">Nghiên cứu ở phòng thí nghiệm của Giáo sư thần kinh học Wendy Suzuki&lt;/h2>
&lt;p>15 phút thiền trong vòng 30 ngày liên tục cải thiện tập trung và trí nhớ. Bạn có thể xem thêm Giáo sư Wendy Suzuki giải thích lợi ích của thiền ở &lt;a class="link" href="https://www.youtube.com/watch?v=uYaUVNxL_fo" target="_blank" rel="noopener"
>đây&lt;/a>.&lt;/p>
&lt;p>Cá nhân tôi từng vượt qua giai đoạn burnout, phải nghỉ việc trong nhiều tháng liền vì không có một chút hào hứng với cuộc sống xung quanh. Ngồi thiền hàng ngày, nghe bài giảng pháp suốt 6 tháng trời giúp tôi vượt qua nên tôi thấy trải nghiệm này hoàn toàn đáng thử nếu bạn thấy mình khó tập trung.&lt;/p>
&lt;h2 id="nhịn-ăn-gián-đoạn-giúp-tập-trung-và-tăng-năng-suất-khi-làm-việc">Nhịn ăn gián đoạn giúp tập trung và tăng năng suất khi làm việc.&lt;/h2>
&lt;p>Tôi đã trải nghiệm nhịn ăn gián đoạn từ tháng 7, tính tới hiện tại là hơn 3 tháng. Sau 1 năm ép bản thân ăn để tăng cân thì đây là quãng thời gian bụng tôi cảm thấy nhẹ nhàng như kỳ nghỉ. Tôi không ngờ là làm việc với cái bụng &amp;ldquo;rỗng&amp;rdquo; khiến tôi tập trung hơn và không còn cảm giác buồn ngủ hay đầy bụng như hồi tôi cố ép bản thân &amp;ldquo;ăn sáng&amp;rdquo; cho đủ chỉ tiêu.&lt;/p>
&lt;p>Sliding window của tôi bắt đầu từ lúc 8:30 giờ tối hôm trước (khi kết thúc bữa ăn) cho tới 12 giờ sáng hôm sau. Nghĩa là tổng calories và macro không đổi, tôi bỏ bữa sáng, chỉ ăn bữa trưa và tối. Nếu thấy đói nhẹ vào buổi sáng sau khi tỉnh dậy thì tôi sẽ ăn nhẹ với 1 quả trứng/1 lát bánh mỳ/1 chiếc energy bar. Nhưng thú vị là cả tháng tôi chỉ thấy đói chưa tới 5 lần.&lt;/p>
&lt;p>Nếu các bạn dễ tăng cân buồn phiền về cân nặng của mình thì một đứa skinny như tôi cũng ám ảnh không kém về cân nặng của mình. Tôi ép mình ăn tới mức hầu như không thấy đói bụng ở bất kỳ thời điểm nào trong ngày. Mọi sự tính toán, cộng trừ, điều chỉnh, cheat để tăng calories đều chỉ làm tôi tăng lên 1-2 kg trong ngắn hạn (1-3 tháng). Chỉ cần một hôm ốm hay quá stress là tôi lại sụt cân. Bao nhiêu nỗ lực tan hết. Một người bạn nói với tôi rằng có thể cơ thể tôi &amp;ldquo;thích&amp;rdquo; cân nặng đấy.&lt;/p>
&lt;p>Sau vài tuần ngắm mình trong gương và nhìn cơ thể mình từ những video ghi lại quá trình training thì tôi lại thấy thích cái thân hình hiện tại. Tôi nhớ là hồi 2017 tôi đã tập bụng và cardio rất nhiều, mơ một ngày nào đó có cái bụng phẳng lì, tách đôi như hiện tại. Mà giờ tôi còn chả thèm tập bụng cơ. Bạn sẽ thấy nhiều điều bất ngờ lắm khi bạn quan sát bản thân bằng cặp mắt của một người ngoài nhìn vào. Well, có thể anh bạn tôi đã đúng. Tôi bắt đầu hài lòng với cơ thể mình. May quá, không phải ép ăn nữa.&lt;/p>
&lt;h1 id="tác-động-tích-cực-của-ánh-nắng-mặt-trời-trong-đó-có-ánh-sáng-xanh-bluelight-đối-với-hệ-thần-kinh">Tác động tích cực của ánh nắng mặt trời, trong đó có ánh sáng xanh (bluelight) đối với hệ thần kinh.&lt;/h1>
&lt;p>Lợi ích lớn nhất của ánh nắng mặt trời tôi cảm nhận được đó là tình trạng mood của bản thân. Tôi không tài nào giải thích được lý do cả mùa đông năm ngoái tôi đã trì trệ và uể oải dù có chăm chỉ tập, ăn uống và ngủ đúng giờ cho tới khi phát hiện ra lợi ích của ánh sáng mặt trời vào ban ngày thông qua Huberman Lab.&lt;/p>
&lt;p>Nỗi ám ảnh về ung thư da và sự truyền thông sai lệch khiến đa số phụ nữ (trong đó có cả tôi), tin sái cổ vào việc chúng ta cần phải bịt kín mít như ninja để bảo vệ làn da khỏi &amp;ldquo;tác hại&amp;rdquo; của ánh sáng mặt trời. Phải cho tới khi sự uể oải của bản thân giảm nhờ chăm chỉ phơi nắng sáng sớm (trước 8 giờ sáng) và chiều tối sau 4 giờ chiều thì tôi mới thực sự tin vào ích lợi của ánh nắng mặt trời và vai trò của vitamin D tới hệ thần kinh.&lt;/p>
&lt;p>Vitamin D có hai dạng chính là D3 (đây là dạng cơ thể sản sinh dưới ánh sáng mặt trời) và D2 (thực vật sản sinh do tác động của ánh sáng mặt trời). Nên dùng D3 vì đây là dạng cơ thể sản sinh ra, tránh D2 vì cơ thể phải chuyển hoá chúng nên tỷ lệ hấp thụ không cao. Phơi nắng tối thiểu 30 phút mỗi ngày vào sáng sớm (trước 8 giờ) và chiều tối (sau 4 giờ) là lời khuyên cực kỳ hợp lý. Hôm nào, trời âm u thì cứ thấy nắng lúc nào là tôi lao ra phơi bất chấp.&lt;/p>
&lt;p>Bên cạnh đó, những lời khuyên khác cũng cải thiện việc đau đầu và mỏi mắt của tôi khi phải dùng máy tính thường xuyên (9 - 10 tiếng/ngày) đó là &amp;ldquo;Let the bluelight into your eyes in the early morning or late in the afternoon&amp;rdquo; (để mắt tiếp xúc với ánh sáng mặt trời). Và khi nghỉ ngơi, cố gắng tập trung nhìn ra một điểm rất xa (có thể là nhìn lên trời hay nhìn sang một toà nhà cách mình vài trăm mét).&lt;/p>
&lt;h1 id="chế-độ-ăn-keto-keep-eating-the-fat-off">Chế độ ăn Keto (Keep Eating The fat Off)&lt;/h1>
&lt;p>Keto là viết tắt của Keep Eating The fat Off, là chế độ ăn hạn chế tinh bột (carbs), giữ protein vùa phải và tăng cường nhiều chất béo. Nhiều nhà khoa học tôi theo dõi từng nói về lợi ích của Keto, trong đó có cả Lex Fridman và Andrew Huberman. Tôi chưa có trải nghiệm nào với Keto nhưng tôi đã từng trải nghiệm chế độ Low-carb (khá giống Keto ở việc hạn chế tinh bột, chỉ khác tỷ lệ chất béo và protein) trong 1 năm.&lt;/p>
&lt;p>Tôi cắt tinh bột xuống còn 1 bát cơm/ngày (~ 60 - 70 gram gạo trắng). Cơ thể tôi nổi mụn liên tục từ mặt, lưng, ngực, tay, chân. Tình trạng này hoàn toàn chấm dứt khi tôi chuyển sang vegan. Tôi kể ra câu chuyện này chỉ muốn nói rằng chế độ ăn phụ thuộc rất nhiều vào bộ gen và thói quen sinh hoạt của bạn. Nếu nghiên cứu bảo tốt hoặc &amp;ldquo;đa số&amp;rdquo; bảo tốt mà bạn trải nghiệm một thời gian không thấy hiệu quả như vậy. Thì nên thử cách khác.&lt;/p>
&lt;h2 id="non-sleep-deep-rest-nsdr">Non Sleep Deep Rest (NSDR)&lt;/h2>
&lt;p>NSDR là một thuật ngữ được bác Huberman nhắc tới trong nhiều tập podcast khác nhau. Lợi ích của NSDR là giúp cơ thể thư giãn, cải thiện giấc ngủ. Trong tập này, bác Huberman có giới thiệu cách áp dụng NSDR giúp bạn tỉnh táo hơn khi ở trong trạng thái thiếu ngủ mà cần tập trung làm việc. Tôi mới bắt đầu tìm hiểu NSDR vào tháng này và sẽ viết một bài review về trải nghiệm của bản thân.&lt;/p>
&lt;h2 id="thực-phẩm-bổ-sung-supplements">Thực phẩm bổ sung (Supplements)&lt;/h2>
&lt;p>Tôi rất đồng tình với bác Huberman rằng chúng ta nên tập trung vào tools đầu tiên rồi mới tới thực phẩm bổ sung và cuối cùng là đi tham vấn người có chuyên môn hơn (bác sỹ, nhà tâm lý học, &amp;hellip;). Thực phẩm bổ sung là thứ hỗ trợ, chúng không phải là thần dược. Tất cả thực phẩm bổ sung và liều dùng được khuyến nghị trong podcast này đều tập trung vào cải thiện khả năng tập trung.&lt;/p>
&lt;p>Cái tên được nêu đầu bảng là Omega 3, cụ thể là EPA omega 3, dùng với liều lượng 1 - 3 gram/ngày giúp cải thiện khả năng nhận thức. Nếu bạn không chắc chắn mình ăn đủ cá giàu Omega 3 thì nên dùng thực phẩm bổ sung.&lt;/p>
&lt;p>Bên cạnh lợi ích gịúp tăng sự phát triển cơ bắp (dạng Creatine phosphate), Creatine còn có tác dụng cải thiện chức năng thần kinh. Bác Huberman gợi ý 5 gram/ngày (dạng Creatine monohydrate), dạng bột pha với nước uống.&lt;/p>
&lt;h2 id="kết-luận">Kết luận&lt;/h2>
&lt;p>Còn nhiều thứ thú vị được nghe mà tôi chưa nhớ ra được khi ngồi viết bài này. Bác Huberman có để timeline của podcast trong phần description, rất tiện để tra cứu nội dung. Hi vọng những kiến thức khoa học sẽ ngày càng được phổ biến hơn ở Việt Nam.&lt;/p></description></item><item><title>Starting Strength</title><link>https://japananh.github.io/blog/p/starting-strength/</link><pubDate>Sat, 03 Sep 2022 21:51:29 +0700</pubDate><guid>https://japananh.github.io/blog/p/starting-strength/</guid><description>&lt;img src="https://japananh.github.io/blog/p/starting-strength/cover.jpg" alt="Featured image of post Starting Strength" />&lt;p>Trong tháng 8, nhờ có chính sách tốt từ công ty và sự có mặt từ một người bạn rất đặc biệt, tôi đã tổ chức được một buổi &lt;strong>Workshop&lt;/strong> về &lt;strong>TẬP TẠ&lt;/strong> chia sẻ kiến thức cho mọi người. Đồng thời để kỷ niệm hai năm hành trình nỗ lực của mình. Hai năm không phải là một quãng thời gian dài, nhưng nhìn lại, tôi thấy mình đã đi được xa hơn cả dự định ban đầu là nâng tạ để giải trí bớt stress.&lt;/p>
&lt;p>Tên của Workshop là &lt;a class="link" href="https://www.goodreads.com/bg/book/show/20894729-starting-strength" target="_blank" rel="noopener"
>Starting Strength&lt;/a> bởi vì đây là cuốn sách khởi đầu cho tất cả mọi thứ. Từ việc học kỹ thuật 3 động tác trong bộ môn Powerlifting là &lt;strong>Deadlifts&lt;/strong>, &lt;strong>Squats&lt;/strong> và &lt;strong>Bench Press&lt;/strong> cho tới việc nâng trình độ tiếng anh lên một level mới để rồi sau này, tôi đủ level thang gia những buổi phỏng vấn bằng tiếng anh và đọc sách, nghe podcast ít phải tra từ. Giấc mơ làm việc trong môi trường quốc tế với đồng nghiệp từ khắp nơi trên thế giới trở nên thật gần.&lt;/p>
&lt;p>Nội dung chính của Workshop bao gồm 4 phần như sau:&lt;/p>
&lt;ul>
&lt;li>Phần 1 nói về &lt;strong>hành trình tập tạ của tôi&lt;/strong>, bao gồm việc tìm ra chế độ ăn (diet) phù hợp với bản thân, review các giáo trình tập (program) mà tôi đã trải nghiệm và những mặt trái trong ngành công nghiệp thể dục thẩm mỹ.&lt;/li>
&lt;li>Phần 2 do người bạn đặc biệt của tôi là một Powerlifting Coach nói về &lt;strong>Powerlifting ở Việt Nam&lt;/strong>.&lt;/li>
&lt;li>Phần 3 chỉ ra những &lt;strong>lỗi sai tôi hay thấy trong phòng tập và cách sửa chúng&lt;/strong>.&lt;/li>
&lt;li>Phần 4 là &lt;strong>hỏi đáp&lt;/strong>, giải đáp câu hỏi và giao lưu với khán giả.&lt;/li>
&lt;/ul>
&lt;p>Buổi talk kéo dài đúng 60 phút theo dự tính và dù đã chuẩn bị trước scripts nhưng tôi biết là mình sẽ để cảm xúc dẫn lối hành động theo một hướng khác. Đấy là lý do scripts một kiểu nhưng tới lúc nói thì sẽ khác hoàn toàn mà vẫn đảm bảo nội dung trọng tâm. Tôi nhận ra rằng quá gò bó mình nhớ từng câu từng chữ không phải lúc nào cũng là cách hay (trừ khi bạn có trí nhớ thật là tốt). Để sự ngẫu hứng dẫn dắt bản thân và luyện tập khả năng ứng biến trong các tình huống khác nhau là kỹ năng mà tôi muốn học trong năm nay.&lt;/p>
&lt;p>Tôi nghĩ mình không có tham vọng trở thành nhân vật gì đó trong thế giới Powerlifting hay Fitness nói chung. Tôi tham gia môn này với niềm đam mê và tinh thần thể thao vượt qua chính mình. Có nhiều thứ để học hỏi, trải nghiệm và cải thiện kỹ thuật từng ngày khiến tôi vui. Như vậy là quá đủ cho giải trí.&lt;/p></description></item><item><title>Random people make my day</title><link>https://japananh.github.io/blog/p/random-people-make-my-day/</link><pubDate>Sun, 10 Jul 2022 23:09:51 +0700</pubDate><guid>https://japananh.github.io/blog/p/random-people-make-my-day/</guid><description>&lt;img src="https://japananh.github.io/blog/p/random-people-make-my-day/cover.jpg" alt="Featured image of post Random people make my day" />&lt;h2 id="the-blind-pianist">The blind pianist&lt;/h2>
&lt;p>I attended a piano concert this week. The blind girl played a piece by Chopin that was named &lt;a class="link" href="https://www.youtube.com/watch?v=9E6b3swbnWg" target="_blank" rel="noopener"
>Nocturne op .9 No. 2&lt;/a>. The melody was so familiar to me that I guessed its name correctly. I wept tears of joy to see her smile and her performance. Although, she made a few mistakes and her face looked worried a bit but for me, she did a great job. When her dark brighten me, I knew hope never ends.&lt;/p>
&lt;h2 id="ben-hoyt">Ben Hoyt&lt;/h2>
&lt;p>This guy created an &lt;a class="link" href="https://github.com/benhoyt/goawk" target="_blank" rel="noopener"
>AWK interpreter that is written in the Go language&lt;/a>. He was inspired by the book &lt;a class="link" href="https://ia903404.us.archive.org/0/items/pdfy-MgN0H1joIoDVoIC7/The_AWK_Programming_Language.pdf" target="_blank" rel="noopener"
>AWK programming&lt;/a> and his father who taught him coding when he was a kid. I was just wondering if I would make the same story when my kid wrote in his/her blog &amp;ldquo;My mom taught me science and programming when I was a kid. She was my inspiration to create XYZ library&amp;rdquo;. For more info about his work, you can check out his blog &lt;a class="link" href="https://benhoyt.com/" target="_blank" rel="noopener"
>here&lt;/a>.&lt;/p>
&lt;p>Besides his successful career, he also has an amazing life with piano and a fantastic family with his wife and 3 lovely daughters. I enjoy reading their family blog named &lt;a class="link" href="https://aliensintheapple.com/" target="_blank" rel="noopener"
>Alien in the Apple&lt;/a>. I hope I would become a great mother someday.&lt;/p>
&lt;h2 id="the-classical-music-lover">The classical music lover&lt;/h2>
&lt;p>I met T, an introverted technical man with a heart for classical music, in the small tech talk about JavaScript that I was a host in 2019 in Hanoi. We exchanged Facebook contact but didn&amp;rsquo;t talk for a long time. I was a shy girl so I read all of his posts and loved them so much but never texted him. He has been practicing guitar for over 10 years. This year, he decided to learn violin. I wanna try to learn the violin to make sure I love it as much as the feeling when I enjoy the violin expert playing pieces of classical music. So I asked him to try his violin. It turned out, that I did love it. We also had a great conversation about violin, physics, and religion.&lt;/p>
&lt;p>We met again in the Vietnam Museum of Ethnology this week. When he told me about the journey of a woman who bought land in Dalat to live her self-sufficient lifestyle and then realized that her dream was impractical, some pieces of my memories came back. I had a question that I tried to answer for many years since I graduated from high school.&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Why did I turn boring quickly and NOT wanna see people?&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&amp;ldquo;Why did I NOT have any interested in any conversation with anyone for many years?&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>All of his stories were so cute and hilarious with his passion for art and science. &lt;em>He was exactly the type of friend that I usually hung out with when I was in school.&lt;/em>&lt;/p>
&lt;p>Most people grow up and lost their ability to be freedom of mind because of their social responsibilities and their willingness. All the conversations I had with them were about career growth, financial advice, or general topics such as weather, food, traveling, etc. Nothing touched my heart. I felt empty and exhausted after that but didn&amp;rsquo;t know why. We smiled. The place was comfortable. I knew there was something wrong but I didn&amp;rsquo;t know what is it. Today was the best day of my life. I found it. FANTASTIC!&lt;/p></description></item><item><title>Một ngày chủ nhật đẹp trời</title><link>https://japananh.github.io/blog/p/mot-ngay-chu-nhat-dep-troi/</link><pubDate>Sun, 10 Jul 2022 18:07:01 +0700</pubDate><guid>https://japananh.github.io/blog/p/mot-ngay-chu-nhat-dep-troi/</guid><description>&lt;img src="https://japananh.github.io/blog/p/mot-ngay-chu-nhat-dep-troi/cover.jpg" alt="Featured image of post Một ngày chủ nhật đẹp trời" />&lt;h2 id="thử-nghiệm-mới">Thử nghiệm mới&lt;/h2>
&lt;p>Hôm nay là ngày chủ nhật nắng đẹp. Từ tối qua, tôi đã suy nghĩ về nhiều thứ xảy ra trong cuộc sống. Sau đó, tôi đưa ra quyết định là điều chỉnh lịch sinh hoạt để thử nghiệm vài thứ tôi học được từ &lt;a class="link" href="https://hubermanlab.com/" target="_blank" rel="noopener"
>HubermanLab&lt;/a>.&lt;/p>
&lt;p>Có nhiều người than phiền với tôi về vấn đề họ gặp phải trong cuộc sống. Khi tôi gợi ý họ cách xử lý thì họ lại viện hàng tá lý do, từ quá lười, thiếu thời gian, tới tài chính chưa đủ, người yêu, gia đình phản đối hay N cái &amp;ldquo;chướng ngại vật&amp;rdquo; khác, để họ chỉ biết ngày qua ngày đi than với người khác. Họ đang mong chờ cái gì? Sự cảm thông? Một cách để nói chuyện xã giao khi câu chuyện của họ quá nhàm để kể? Dù là gì đi nữa, tôi nhất định sẽ không để mình đóng vai nạn nhân.&lt;/p>
&lt;p>Buổi sáng của tôi bắt đầu lúc 7:30 với việc sửa lại những chỗ bạn tôi góp ý về vị trí của đầu gối và gồng core. Buổi tập sáng của tôi gồm 5 bài, kéo dài trong 70 phút (bao gồm cả thời gian khởi động và dãn cơ). Sau khi tập, tôi không có bất kỳ cảm giác mỏi cơ nào.&lt;/p>
&lt;ol>
&lt;li>Low-bar Back Squats: 3 sets x 5-6 reps x 56 kg&lt;/li>
&lt;li>Chin-ups: 3 sets x 3 reps (không dùng bend để trợ lực để test xem tôi đã hồi phục được bao nhiêu phần trăm thể lực so với hồi trước burnout)&lt;/li>
&lt;li>Conventional Deadlifts: 3 sets x 5-6 reps x 55kg&lt;/li>
&lt;li>Single-leg Hip thrust: 3 sets x 10 reps/chân&lt;/li>
&lt;li>Plank: 1 set x 1 phút&lt;/li>
&lt;/ol>
&lt;p>Khoảng 1 tiếng sau tập thì tôi lại có cảm giác buồn ngủ như các lần tập buổi sáng trước đây. Tôi sẽ thử ăn chút gì đó trước hoặc sau tập xem tình hình có cải thiện gì không. Tôi luôn giữ cho mình quy tắc là phải thử đủ lâu (trên 1 tháng) để thấy hiệu quả. Do đó, tháng sau, tôi sẽ viết lại những gì tôi cảm nhận sau lần điều chỉnh này.&lt;/p>
&lt;h2 id="giấc-mộng-trưa">Giấc mộng trưa&lt;/h2>
&lt;p>Sau bữa trưa tự làm với bánh mỳ đen, thịt hun khói, xà lách và sốt hạt điều, tôi ngả lưng nằm như bao ngày khác. Cuối tuần, tôi hay cho mình được nằm trưa thoải mái nên sẽ không có báo thức và tôi muốn nằm bao lâu tuỳ ý. Một cảm giác lâng lâng khó diễn tả, tôi lạc vào một giấc mộng kỳ lạ nhưng tôi lại có cảm giác như mình đang tỉnh táo và đang điều khiển suy nghĩ, dù chẳng thể nào cử động được chân tay. Câu chuyện bắt đầu như thế này.&lt;/p>
&lt;p>Tôi và anh người yêu phát hiện ra âm mưa nguy hiểm của một người phụ nữ. (Toàn mơ có anh người yêu nhưng đời thực lại chả thấy anh nào :D). Âm mưu là gì thì tôi đã quên sau khi tỉnh dậy, chỉ biết là nếu kế hoạch diễn ra thành công thì nhiều người sẽ phải bỏ mạng. Quay trở lại với người phụ nữ kia. Cô ta có một vẻ đẹp sắc sảo, sống trong căn nhà mái tròn giống kiến trúc nhà ở Điện Kremli. Tường của ngôi nhà là những khung kính được tráng một lớp rất đặc biệt khiến khi nhìn từ bên ngoài, chúng khiến ngôi nhà mang ánh hào quang bí ẩn. Ngôi nhà không có cửa sổ. Bên trong có một cầu thang lớn thiết kế vòng tròn. Lạ thay, cây xanh và đủ loài hoa mọc quanh tường, cửa và cầu thang một cách rất ngăn nắp và màu sắc của chúng mang một vẻ đẹp thật u ám. Chúng đã mọc từ đâu? - Tôi tự hỏi.&lt;/p>
&lt;p>Chúng tôi cần bằng chứng để tố cáo. Sau N cuộc đấu đá và nhiều cảm xúc từ sợ hãi, ngạc nhiên, đau đớn cho tới thanh thản thì tôi chỉ nhớ được rõ nhất về việc chúng tôi đánh cắp được một vật quan trọng của ả. Vật gì, hình thù sao thì tôi quên luôn rồi. Trong lúc chống cự, anh người yêu vì lý do gì đó bị ả tóm được. Còn tôi trúng độc, nhưng may mắn hơn chạy được lên tầng cao nhất rồi không rõ chui vô cái đường ống gì đó, bất tỉnh cho tới khi người ta tìm thấy tôi trong một cái xe rác. Họ đưa tôi vô bệnh viện rồi báo công an. Bác sỹ đã làm việc rất vất vả trong nhiều ngày mới cứu sống được tôi. Khi tỉnh lại, tôi kể toàn bộ câu chuyện về âm mưu và mọi thứ được đưa ra ánh sáng. Sau đó, do quá yếu, tôi lại bất tỉnh. Ả ta bị bắt và trừng phạt như nào thì tôi không tài nào nhớ được. Chỉ nhớ mỗi hình ảnh công an bao vây ngôi nhà, phá cửa đi lên cầu thang tròn.&lt;/p>
&lt;p>Trong lúc này, anh người yêu tôi bị giam cầm, cũng bị trúng độc và thương tích trên người còn nặng hơn tôi. Nhân một lúc sơ hở khi ả đang bận lo lắng tìm kiếm tôi khắp nơi, anh ấy trốn thoát ra ngoài và mang theo một vật quý giá chí mạng khác của ả. Tôi chỉ nhớ được là anh ấy đã cải trang thành người khác, để khỏi bị phát hiện. Anh ấy nhìn tôi nằm đấy, bất động và đau buồn vô cùng rồi cũng ngất luôn vì kiệt sức. Hi vọng là chúng tôi còn sống. Không hiểu tại sao cứ tới đoạn gần hết phim thì tôi tỉnh dậy. Có lần thì báo thức kêu. Thế là luôn có một thứ gì đó tiếc nuối trong lòng.&lt;/p>
&lt;h2 id="tổng-kết">Tổng kết&lt;/h2>
&lt;p>Vậy là một cuối tuần khác lại sắp qua. Tôi hay nghe mọi người nói với nhau khi cuối tuần đến rằng &amp;ldquo;Thứ bảy máu chảy về tim&amp;rdquo;. Gì mà kỳ vậy. Hoạt động của hệ tim mạch chỉ ra rằng máu ngày nào cũng chảy về tim rất nhiều lần. Còn khi máu không chảy về tim thì mình đâu còn sống nữa. Nếu bạn yêu những gì mình làm để ranh giới giữa công việc và sở thích chỉ còn là một thì có phải đi làm cũng vui như đi chơi không?&lt;/p></description></item><item><title>Năm điều khó nhất</title><link>https://japananh.github.io/blog/p/nam-dieu-kho-nhat/</link><pubDate>Sat, 02 Jul 2022 21:08:01 +0700</pubDate><guid>https://japananh.github.io/blog/p/nam-dieu-kho-nhat/</guid><description>&lt;img src="https://japananh.github.io/blog/p/nam-dieu-kho-nhat/cover.jpg" alt="Featured image of post Năm điều khó nhất" />&lt;p>Bài này tôi viết về những điều tôi nghĩ là khó với bản thân để sau này đọc lại xem còn thấy nó còn khó như lúc viết không.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Khó nhất là &lt;strong>ngồi im&lt;/strong>. Không lướt điện thoại, không gõ máy tính, không đọc báo, không xem Youtube, không nói chuyện và cả không để suy nghĩ chạy lung tung trong đầu. Mà ngồi im thì có phải là giải trí không? Và thế nào là giải trí nhỉ?&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Khó nhất là &lt;strong>đi ngủ đúng giờ&lt;/strong>. Ngủ đúng giờ được hiểu là ngủ đúng vào cái thời điểm giúp cơ thể phục hồi một cách tốt nhất. Mỗi người sẽ có một khoảng thời gian khác nhau. Nếu early birds cứ bon chen với hội cú đêm thì kiểu gì dài hạn cũng có vấn đề. Liệu mình có nên tránh xa hội cú đêm hay không? Khi bạn bè đang ở cao trào câu chuyện thì mình xin lui về đi ngủ liệu có ổn không? Đâu sẽ là thứ quan trọng hơn: chất lượng giấc ngủ hay là &amp;ldquo;mối quan hệ&amp;rdquo;? Rốt cuộc thì mối quan hệ ở đây là cái gì?&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Khó nhất là &lt;strong>nói phải đi đôi với làm&lt;/strong>. Liệu những điều bạn viết ra, nói ra có đúng với những gì bạn làm? Liệu lời bạn hứa với người ta, bạn có làm nó đúng và đủ không? Và nếu không làm nổi thì bạn có đủ dũng cảm để xin lỗi và có hành động đền bù xứng đáng?&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Khó nhất là &lt;strong>hài lòng với chính mình&lt;/strong> trong xã hội tiêu dùng và cạnh tranh. Với mỗi sự phấn đấu trong một lĩnh vực là xuất hiện một hoặc nhiều nhu cầu mới. Bạn muốn đi bao xa trong lĩnh vực này hay bạn muốn chi bao nhiêu tiền để nuôi đam mê? Câu nào là câu nên hỏi hơn?&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Khó nhất là &lt;strong>tốt với người vì mình muốn thế và nó không gây hại cho ai&lt;/strong> chứ không phải vì một hoặc vài lợi ích nào đấy. Lòng tốt có bao hàm việc giúp đỡ bạn bè gian lận và trốn thuế không? Về tình thì nhiều người vẫn làm mà?&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>Tôi học được gì trong 6 tháng đầu năm 2022</title><link>https://japananh.github.io/blog/p/toi-hoc-duoc-gi-trong-6-thang-dau-nam-2022/</link><pubDate>Sat, 02 Jul 2022 20:52:01 +0700</pubDate><guid>https://japananh.github.io/blog/p/toi-hoc-duoc-gi-trong-6-thang-dau-nam-2022/</guid><description>&lt;img src="https://japananh.github.io/blog/p/toi-hoc-duoc-gi-trong-6-thang-dau-nam-2022/cover.jpg" alt="Featured image of post Tôi học được gì trong 6 tháng đầu năm 2022" />&lt;p>Hôm nay là một ngày thứ bảy nắng đẹp. Tôi thức dậy khá sớm như mọi ngày rồi cứ nằm mãi cho tới trưa. Một giác trống rỗng, không còn chút sức lực nào. Tôi chỉ còn hứng thú duy nhất với công việc, giải quyết những bài toán ở công ty khiến tôi cảm thấy não mình đang tư duy và tiến bộ. Tôi nghĩ thay vì cứ ủ rũ mãi thì có lẽ tôi nên ngồi viết về những gì tôi học được trong 6 tháng đầu năm. Có lẽ, tôi sẽ thấy khá hơn.&lt;/p>
&lt;h2 id="trở-nên-mạnh-mẽ-hơn">Trở nên mạnh mẽ hơn&lt;/h2>
&lt;p>Lex Fridman có nói một câu đại ý rằng &amp;ldquo;Bạn nên thử làm những thứ khiến mình sợ hãi để vượt ra ngoài vòng tròn thoải mái của mình&amp;rdquo;. Những ai làm việc cùng tôi sẽ có cảm giác như tôi rất &amp;ldquo;giỏi tiếng anh&amp;rdquo; nhưng thực tế là tôi nói rất dở và sợ người khác chê tôi. Đấy là lý do tôi thà nói chuyện với cái app ELSA chứ nhất quyết không chịu tới lớp học nói.&lt;/p>
&lt;p>Một điều tình cờ xảy ra đầu năm nay là tôi lỡ tay bấm gửi resume cho một công ty ở Mỹ trên Linkedin. Một ngày sau thì HR nhắn tin hỏi tôi sắp xếp một buổi phỏng vấn với ông ấy. Tôi đã hãi tới mức nhìn cái tin nhắn đấy cả tiếng đồng hồ, nghĩ xem mình có nên nói thật là chỉ lỡ nghịch thôi. Bao nhiêu suy nghĩ trong đầu tôi như lỡ ổng hỏi mà tôi nghe không hiểu gì, lỡ tôi nói sai? Câu nói của Lex lại vang lên trong đầu. Hừ, tôi nhất định phải vượt qua nỗi sợ này. Tôi đã sợ nó lâu quá rồi.&lt;/p>
&lt;p>Tôi tra google về bí quyết phỏng vấn, rồi viết ra những thứ mình muốn trình bày và những thắc mắc của bản thân về vị trí. Buổi phỏng vấn diễn ra rất ổn với tôi. Người phỏng vấn tôi rất thân thiện và câu chuyện trở nên cởi mở hơn nhiều. Và cũng vì là phỏng vấn với HR để sàng lọc ứng viên nên nó cũng dễ thở hơn phỏng vấn kỹ thuật. Hiển nhiên là vì level tuyển khá cao nên tôi biết chắc mình sẽ rớt. Sau chuyện này, tôi nhận ra mình nói cũng không tệ lắm. Kết quả là tôi phỏng vấn chục công ty tiếp theo mà không một chút lo ngại về tiếng anh của bản thân.&lt;/p>
&lt;h2 id="biết-tự-lượng-sức-mình">Biết tự lượng sức mình&lt;/h2>
&lt;p>Tôi lại burnout theo một cách không thể ngờ tới vào tháng 6.&lt;/p>
&lt;p>Câu chuyện bắt đầu như thế này. Một người bạn hỏi tôi có muốn thử lịch tập anh ấy thiết kế không. Lịch tập này khác nhiều so với tất cả những lịch tập mà tôi từng thử, tập nhiều rep và tăng volume hàng tuần. Vì tò mò nên tôi đã đồng ý.&lt;/p>
&lt;p>Tuần đầu tiên, tôi đau cơ tới mức không tài nào tập trung code được. Cứ gõ phím vài phút thì lại phải ngồi bóp người hoặc đứng lên dãn cơ. Tuần thứ hai, volume tiếp tục tăng nhưng do đã quen hơn nên dù vẫn bị đau như tuần đầu, tôi vẫn tiếp tục tập. Sang tuần thứ ba, tôi thấy mình thật tệ. Tôi khóc ầm lên ở buổi số 3, cảm giác hệ thần kinh không chịu làm việc nữa. Tuần thứ tư, tôi vẫn nghĩ mình sẽ cố được nhưng tôi nhầm to. Vì tôi vẫn đau, vẫn khóc như mưa và performance thì đi xuống.&lt;/p>
&lt;p>Tôi hầu như không thấy huấn luận viên Việt Nam nào nhắc tới cảm xúc và hệ thần kinh trong tập tạ. Anh bạn tôi có vẻ dửng dưng với chuyện này. Với ổng và nhiều người, đau cơ có lẽ là niềm vui và sự tự hào vì &amp;ldquo;No pain, no gain&amp;rdquo;. Trong suy nghĩ của tôi, tất cả những thứ tôi gắn bó lâu dài đều phải &lt;strong>VUI&lt;/strong> khi làm. Tôi đồng ý rằng chúng ta chấp nhận việc &amp;ldquo;đau cơ ngắn hạn&amp;rdquo; &lt;strong>ở một mức nào đấy&lt;/strong> như một phần không thể thiếu trong quá trình luyện tập để đổi lại &amp;ldquo;niềm vui dài hạn&amp;rdquo; khi thấy body mình &amp;ldquo;đẹp&amp;rdquo; hơn. Tuy nhiên, khi niềm vui dài hạn không bù đắp nổi đau cơ ngắn hạn thì bạn có thể sẽ như tôi - &lt;strong>BURNOUT&lt;/strong>.&lt;/p>
&lt;p>Từ bé tới giờ, dù tập tành chăm chỉ nhiều môn thể thao nhưng tôi chưa bao giờ burnout tới mức một tuần sau không recover nổi nên trải nghiệm này thật bất ngờ và hữu ích. Tôi biết giới hạn của mình ở đâu, hiểu rõ mình muốn gì và không muốn gì. Giờ nếu ai nói với tôi hãy &amp;ldquo;cháy hết mình&amp;rdquo; khi tập đi, tôi sẽ nghĩ người đó hoặc là siêu nhân còn không thì là siêu ngu.&lt;/p>
&lt;h2 id="giao-tiếp-có-chọn-lọc">Giao tiếp có chọn lọc&lt;/h2>
&lt;p>Từ bé tới giờ, tôi có rất ít bạn. Càng lớn thì tôi lại càng gặp ít người có cùng sở thích với tôi nên thường thì tôi giải trí một mình với sách hoặc Youtube. Cái ý nghĩ phải từ chối một ai đó vì mình không thích cái gì đấy hay nói ra việc mình cảm thấy bị ai đó xúc phạm khiến tôi vô cùng sợ hãi. Vì tôi sợ người khác sẽ quay lưng với tôi. Tôi sợ cảm giác chỉ có một mình. Tôi thường im lặng hoặc giả vờ rằng nó cũng rất ổn với mình nhưng kỳ thực là tôi đang nói dối một cách xã giao. Sau đó, tôi về nhà, ngồi vài tiếng tự trách bản thân để rồi lần sau lại tiếp tục dối lòng.&lt;/p>
&lt;p>Tôi vẫn nghĩ tôi sẽ ổn thôi cho tới cái ngày tôi cảm thấy hoàn toàn trống rỗng và việc phải mở miệng ra nói chuyện với bất kỳ ai cũng khiến tôi trở nên bấn loạn một cách khó hiểu. Chuyện này cứ liên tục lặp lại khiến tôi phải chú ý đặc biệt tới nó. Tôi không thiếu dinh dưỡng, tập tành chăm chỉ, các số liệu về giấc ngủ cũng ổn và mức lương tăng tốt. Chả có cái áp lực nào đè lên tôi cả. Liệu tôi có đang bỏ sót điều gì không?&lt;/p>
&lt;p>Vào một ngày nọ, sau khi chịu hết nổi, tôi hít một hơi, lịch sự nói với bố mình rằng tôi không thể chịu nổi việc ông chửi bới và dùng bạo lực với tôi. Tôi muốn ông cư xử và nói chuyện lịch sự hơn. Và nếu ông muốn đánh tôi, tôi sẵn sàng nhào vào mà không quan tâm tới chuyện hậu quả. Bố tôi im lặng và từ đó trở đi, ông có vẻ bình tĩnh hơn. Đó thực sự là một cú sốc với tôi và với bố tôi vì tôi đã im lặng rất nhiều năm trong đời mình. Một điều kỳ lạ đã xảy ra, tôi thấy nhẹ nhõm. Tôi bắt đầu tin rằng nếu tiếp tục im lặng và dối lòng, tôi sẽ phát điên và những triệu chứng bất ổn kia sẽ ngày càng nặng lên.&lt;/p>
&lt;p>Tôi ra một quyết định điên rồ là nếu ai đó công kích tôi trực tiếp, tôi sẽ nói thẳng với họ rằng tôi cảm thấy bị xúc phạm. Nếu họ là bạn của tôi và điều này diễn ra nhiều hơn ba lần hoặc khi tôi điên lên, tôi sẽ unfriend họ. Tất nhiên, công sở là chốn duy nhất mà cho dù chuyện gì xảy ra, tôi vẫn phải &amp;ldquo;đeo mặt nạ&amp;rdquo; và &amp;ldquo;chiến đấu&amp;rdquo;. Đấy là giới hạn duy nhất tôi dành cho mình. Ra khỏi công sở, tôi sẽ chỉ giao tiếp vì tôi thấy cuộc hội thoại thú vị chứ không phải ép mình vì một nỗi sợ nào đấy.&lt;/p>
&lt;p>Trong vòng 1 tháng, ngoài đồng nghiệp và gia đình, tôi tránh gặp bất kỳ ai, kể cả bạn thân (trừ khi bạn thật đặc biệt). Tôi thấy mình tập trung hơn và bắt kịp trình độ với đồng đội nhanh hơn vì không bị phân tán bởi việc làm hài lòng nhiều người. Bên cạnh đó, thay vì mệt lử sau khi giao tiếp, tôi có thời gian cho sở thích cá nhân như viết blog, đọc sách và tập đàn.&lt;/p>
&lt;h2 id="tôi-muốn-làm-gì-trong-6-tháng-tới">Tôi muốn làm gì trong 6 tháng tới?&lt;/h2>
&lt;p>Đầu năm tôi có viết một cái resolutions như sau.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1656767879789/y8GudUVb3.png"
loading="lazy"
alt="My 2022 Resolutions"
>&lt;/p>
&lt;p>Đầu tư hay kinh tế nói chung đều là những chủ đề mà tôi cực ít hứng thú. Lý do chính tới từ sự ám ảnh tâm lý xảy ra hồi đại học. Bằng một lý do gì đấy mà hầu hết các ký ức về đại học của tôi đều biến mất. Mỗi khi nhớ lại quãng thời gian đó, tôi đều thấy những bức hình rất mờ, không rõ ràng. Thậm chí, tôi còn không nhớ được tên bạn học cùng, trừ một vài người đặc biệt. Tôi hi vọng mình sẽ tìm ra cách để vượt qua sự ám ảnh này để tầm nhìn của tôi ngày càng rộng lớn hơn. Tôi sẽ có tài chính tốt hơn và bớt thấy bất lực khi có biến cố kinh tế xảy ra với mình.&lt;/p>
&lt;p>Ba cái gạch đầu dòng cuối là ba thứ khó nhất mà hiện giờ tôi vẫn chưa làm được. Tôi vẫn chưa thấy mình vui vẻ và khi không vui thì tôi chỉ thích ở một mình. Thật khó để quan tâm tới người khác khi bên trong tôi còn quá nhiều bất ổn. Tôi hi vọng mình có thể mở lòng hơn. Điều đó đồng nghĩa với việc tôi cần mạnh mẽ hơn để không bị gục ngã trước sóng gió.&lt;/p>
&lt;p>Mấy năm trước, có một người thầy nói với tôi rằng viết là một cách trị liệu tâm lý, giúp bản thân thấy tốt hơn. Tôi nghĩ người đó đã đúng. Ít nhất là giờ tôi đã thấy khá hơn.&lt;/p></description></item><item><title>Cool tricks with goroutine</title><link>https://japananh.github.io/blog/p/cool-tricks-with-goroutine/</link><pubDate>Sun, 26 Jun 2022 09:00:03 +0700</pubDate><guid>https://japananh.github.io/blog/p/cool-tricks-with-goroutine/</guid><description>&lt;img src="https://japananh.github.io/blog/p/cool-tricks-with-goroutine/cover.jpg" alt="Featured image of post Cool tricks with goroutine" />&lt;h2 id="using-runtimegosched-to-force-schedule-goroutines">Using &lt;code>runtime.Gosched()&lt;/code> to force schedule Goroutines&lt;/h2>
&lt;p>A goroutine can run and occupy a thread for a long time. This should be avoided by using &lt;code>runtime.Gosched()&lt;/code> to force schedule Goroutines to switch context.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;time&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">go&lt;/span> &lt;span class="kd">func&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="mi">50&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nx">i&lt;/span>&lt;span class="o">++&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;I am Goroutine 1&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">go&lt;/span> &lt;span class="kd">func&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="mi">50&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nx">i&lt;/span>&lt;span class="o">++&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;I am Goroutine 2&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">time&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Sleep&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">time&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Second&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// The result will look like below,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// one goroutine held the thread for so long.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;runtime&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;time&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">go&lt;/span> &lt;span class="kd">func&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="mi">50&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nx">i&lt;/span>&lt;span class="o">++&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;I am Goroutine 1&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">runtime&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Gosched&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">go&lt;/span> &lt;span class="kd">func&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="mi">50&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nx">i&lt;/span>&lt;span class="o">++&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;I am Goroutine 2&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">runtime&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Gosched&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">time&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Sleep&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">time&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Second&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// The result will look better like below
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// I am Goroutine 2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Xanh rồi sao?</title><link>https://japananh.github.io/blog/p/xanh-roi-sao/</link><pubDate>Sat, 25 Jun 2022 09:26:02 +0700</pubDate><guid>https://japananh.github.io/blog/p/xanh-roi-sao/</guid><description>&lt;img src="https://japananh.github.io/blog/p/xanh-roi-sao/cover.jpg" alt="Featured image of post Xanh rồi sao?" />&lt;p>Tuổi trẻ ai cũng từng xanh. Từ đẻ ra xanh lè tới mặc một món đồ xanh. Cả mái đầu xanh cùng tâm hồn rộng mở.&lt;/p>
&lt;p>Có một số người thích được mãi xanh giống anh chàng Peter Pan mặc bộ đồ xanh trẻ mãi không già ở xứ sở Neverland.&lt;/p>
&lt;p>Đằng sau màu xanh đầy sức sống ấy là nhiều cái giá. Có khi là tiền bỏ ra để sắm một món đồ màu xanh. Khi thì &amp;ldquo;nước mưa nhân tạo&amp;rdquo; có vị muối. Căng thẳng hơn chút là thứ chất lỏng màu rượu vang nhưng vị chả ngon tí nào. Căng nhất là những thứ vi mô, vĩ mô nằm ngoài sự kiểm soát của mô tế bào.&lt;/p>
&lt;p>Chua là điều tất yếu nếu như bạn quá xanh. Có ai nói quả chanh càng xanh càng ngọt chưa nhỉ? Thật tuyệt khi chúng ta thích chua, nhưng có một sự thật là đa số mọi người đều thích đồ ngọt. Do đó, khi một thứ đang xanh, người ta sẽ mong nó chín. Khi sự mong đợi vượt ngoài tầm kiểm soát, bằng những cách khác nhau mà quá trình chín này trở nên nhanh chóng hơn. Cái gì trái với tự nhiên đều đi kèm tác dụng phụ.&lt;/p>
&lt;p>Dịch giả Trịnh Lữ từng nói trong một &lt;a class="link" href="https://www.youtube.com/watch?v=UnsNNu1xgQI" target="_blank" rel="noopener"
>podcast của Vietcetera&lt;/a> rằng nếu bạn trẻ thì nói ra cái xanh của mình là chuyện bình thường, tại sao cứ phải cố gắng chín.&lt;/p>
&lt;p>Tôi rất ấn tượng với một đoạn nói về ích lợi của ánh sáng mặt trời đối với cơ thể ở podcast &lt;a class="link" href="https://youtu.be/ObtW353d5i0?t=1923" target="_blank" rel="noopener"
>Vission&lt;/a> của bác Andrew Hubermen. Khi ngửa mặt lên ngắm bầu trời xanh bát ngát, tôi có cảm giác từng tia sáng xinh đẹp đi xuyên qua mắt, kích thích những sợi thần kinh bé xinh và khiến tôi trở nên tỉnh táo. Một ý nghĩ buồn cười xuất hiện. Này, trời kia có muốn ngả màu chín không?&lt;/p>
&lt;p>P/s: Đây là bài viết của một cô gái mê màu hồng và mơ về màu xanh như thể cô ấy yêu màu xanh như màu hồng. Thực tế là cô ấy thích tất cả các màu.&lt;/p></description></item><item><title>Refactoring - Part 3</title><link>https://japananh.github.io/blog/p/refactoring-part-3/</link><pubDate>Fri, 24 Jun 2022 09:00:01 +0700</pubDate><guid>https://japananh.github.io/blog/p/refactoring-part-3/</guid><description>&lt;img src="https://japananh.github.io/blog/p/refactoring-part-3/cover.jpg" alt="Featured image of post Refactoring - Part 3" />&lt;p>I had a requirement to update an API today. The modified function had 8 parameters that break the &lt;a class="link" href="https://www.sonarqube.org/" target="_blank" rel="noopener"
>SonarQube&lt;/a> rule, so I decided to refactor it. There are some solutions to the problem. They can be applied similarly in other languages. In this post, I will demonstrate some of them in the Go language.&lt;/p>
&lt;ul>
&lt;li>For someone don&amp;rsquo;t know SonarQube: &lt;strong>SonarQube&lt;/strong> is an open-source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, and code smells in 17 programming languages.&lt;/li>
&lt;/ul>
&lt;h2 id="use-parameter-object">Use Parameter Object&lt;/h2>
&lt;p>The most common way I often do this is to replace parameters with a data structure such as &lt;code>struct&lt;/code> in Go or an &lt;code>object&lt;/code> or a &lt;code>class&lt;/code> in other languages such as JavaScript.&lt;/p>
&lt;p>The benefits of it are more readable code and reusable code. Instead of parameters, you see a single object which can be reused somewhere.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Before
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">service&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;context&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;database/sql&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// There are 8 parameters here
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">CreateUser&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">ctx&lt;/span> &lt;span class="nx">context&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Context&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">db&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="nx">sql&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">DB&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">email&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">password&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">firstName&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">lastName&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">addr&lt;/span> &lt;span class="kt">string&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">status&lt;/span> &lt;span class="kt">int&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="kt">error&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// do something
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="kc">nil&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// After
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">service&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;context&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;database/sql&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">type&lt;/span> &lt;span class="nx">CreateUserRequestParams&lt;/span> &lt;span class="kd">struct&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">Status&lt;/span> &lt;span class="kt">int&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">Email&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">Password&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">FirstName&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">LastName&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">Addr&lt;/span> &lt;span class="kt">string&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// The code is readable thanks to fewer parameters
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">CreateUser&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">ctx&lt;/span> &lt;span class="nx">context&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Context&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">db&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="nx">sql&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">DB&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">p&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="nx">CreateUserRequestParams&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="kt">error&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// do something
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="kc">nil&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>The drawback of it is &lt;a class="link" href="https://refactoring.guru/smells/data-class" target="_blank" rel="noopener"
>Data class&lt;/a> - the class defines instance variables but lacks relevant methods. Such classes are very likely being manipulated by other classes heavily.&lt;/p>
&lt;h2 id="use-currying">Use Currying&lt;/h2>
&lt;p>One popular way in Functional programming is to use the &lt;strong>Currying&lt;/strong>. It&amp;rsquo;s named after the guy who invented the technique, &lt;a class="link" href="https://en.wikipedia.org/wiki/Haskell_Curry" target="_blank" rel="noopener"
>Haskell Brooks Curry&lt;/a>. People apply this pattern a lot in JavaScript libraries such as &lt;a class="link" href="https://lodash.com/" target="_blank" rel="noopener"
>lodash&lt;/a>. Currying is a transform that makes &lt;code>f(a,b,c)&lt;/code> callable as &lt;code>f(a)(b)(c)&lt;/code>. One of its benefits is to shorten how many arguments a function requires. You can read more about currying &lt;a class="link" href="https://jessewarden.com/books/real-world-functional-programming/part5/" target="_blank" rel="noopener"
>here&lt;/a>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// After
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">service&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;context&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;database/sql&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">CreateUser&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">ctx&lt;/span> &lt;span class="nx">context&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Context&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">db&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="nx">sql&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">DB&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="kd">func&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">email&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">password&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">firstName&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">lastName&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">addr&lt;/span> &lt;span class="kt">string&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">status&lt;/span> &lt;span class="kt">int&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="kt">error&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kd">func&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">email&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">password&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">firstName&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">lastName&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">addr&lt;/span> &lt;span class="kt">string&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">status&lt;/span> &lt;span class="kt">int&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="kt">error&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// do something
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="kc">nil&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// You can call it like below
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// service.CreateUser(ctx, db)(email, password, firstName, lastName, addr, status)
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="refactor-the-function-with-the-extract-method">Refactor the function with the Extract Method&lt;/h2>
&lt;p>If your function takes too many parameters, it might do too much work and should be broken into smaller functions, consequently, reducing the arguments’ number. The &lt;a class="link" href="https://refactoring.guru/extract-method" target="_blank" rel="noopener"
>Extract Method&lt;/a> technique can be used to achieve this goal.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>In my case, the Parameter Object is the best choice. I just wanna dive deep into how many ways I can apply to reduce the parameters so that&amp;rsquo;s why I mention other solutions here. Hope that can help you.&lt;/p></description></item><item><title>Một vài lỗi tôi gặp phải với Go và Goland</title><link>https://japananh.github.io/blog/p/mot-vai-loi-toi-gap-phai-voi-go-va-goland/</link><pubDate>Mon, 23 May 2022 09:00:03 +0700</pubDate><guid>https://japananh.github.io/blog/p/mot-vai-loi-toi-gap-phai-voi-go-va-goland/</guid><description>&lt;img src="https://japananh.github.io/blog/p/mot-vai-loi-toi-gap-phai-voi-go-va-goland/cover.jpg" alt="Featured image of post Một vài lỗi tôi gặp phải với Go và Goland" />&lt;p>Từ khi chuyển qua xài đồ của nhà Jetbrains (&lt;strong>Goland&lt;/strong>) thì tôi khá lúng túng trong việc dùng cái IDE vì nhiều chức năng hơn. Tuy nhiên, trải nghiệm code đúng là tuyệt vời hơn hẳn VSCode ở việc gợi ý syntax và auto import code.&lt;/p>
&lt;p>Riêng extension &lt;code>vim&lt;/code> tôi chưa dùng nổi vì nhiều phím tắt trong Goland mình chưa thành thạo. Thêm vào đó, nhiều phím tắt cũng bị ghi đề khi dùng với &lt;code>vim&lt;/code> và việc phải config lại chúng và nhớ phím tắt mới khiến việc code trở nên rất khó chịu. Hi vọng trong thời gian tới tôi sẽ thành thạo Goland hơn.&lt;/p>
&lt;p>Sau đây là một vài lỗi tôi đã từng gặp khi code Go bằng Goland. Hi vọng là chúng giúp ích cho bạn.&lt;/p>
&lt;h2 id="how-to-fix-intellij-cannot-resolve-symbol">How to fix IntelliJ cannot resolve symbol&lt;/h2>
&lt;p>Thi thoảng, tôi gặp trường hợp Goland bị làm sao đấy mà không tìm thấy được cái package được import vào ở từng file.&lt;/p>
&lt;p>![Screen Shot 2022-05-22 at 11.50.23 AM.png](&lt;a class="link" href="https://cdn.hashnode.com/res/hashnode/image/upload/v1653238217374/7yjLLYgHc.png" target="_blank" rel="noopener"
>https://cdn.hashnode.com/res/hashnode/image/upload/v1653238217374/7yjLLYgHc.png&lt;/a> align=&amp;ldquo;center&amp;rdquo;)&lt;/p>
&lt;p>Cách tôi fix là chọn &lt;code>File Menu → Invalidate Caches / Restart&lt;/code>. Chờ một vài giây cho IDE restart lại thì lỗi sẽ được fix. Ngoài ra, nếu bạn vẫn còn gặp lỗi thì nên xem cái link &lt;a class="link" href="http://sbytestream.pythonanywhere.com/blog/How-to-fix-IntelliJ-cannot-resolve-symbol" target="_blank" rel="noopener"
>này&lt;/a> để tham khảo các cách giải quyết khác.&lt;/p>
&lt;h2 id="a-fatal-error-has-been-detected-by-the-java-runtime-environment">A fatal error has been detected by the Java Runtime Environment&lt;/h2>
&lt;p>Tôi bị lỗi này sau khi cập nhật Goland lên phiên bản mới. Chạy một lúc là IDE bị dừng lại và restart rồi lại dừng và restart. Google ra thì mới biết là mặc định Goland dùng &lt;strong>JRE&lt;/strong> (Java runtime enviroment) làm JetBrains Runtime. Trường hợp của tôi theo như các issues trên Github chỉ thì do JetBrains Runtime bị lỗi nên cần đổi sang một JRE khác.&lt;/p>
&lt;blockquote>
&lt;p>As a Java application, IntelliJ IDEA requires a Java runtime environment (JRE). By default, IntelliJ IDEA uses &lt;a class="link" href="https://github.com/JetBrains/JetBrainsRuntime" target="_blank" rel="noopener"
>JetBrains Runtime&lt;/a>
 (a fork of &lt;a class="link" href="https://github.com/openjdk/jdk" target="_blank" rel="noopener"
>OpenJDK&lt;/a>
), which is included with the IDE. JetBrains Runtime fixes various known OpenJDK and Oracle JDK bugs, and provides better performance and stability. However, in some cases you may be required to use another Java runtime or a specific version of JetBrains Runtime.&lt;/p>
&lt;/blockquote>
&lt;p>Cách khắc phục là chọn JRE khác như hướng dẫn của JetBrains ở &lt;a class="link" href="https://www.jetbrains.com/help/idea/switching-boot-jdk.html" target="_blank" rel="noopener"
>đây&lt;/a>. Chọn &lt;code>Help | Find Action&lt;/code> → &lt;code>Choose Boot Java Runtime for the IDE&lt;/code> -&amp;gt; &lt;code>OK&lt;/code>&lt;/p>
&lt;h2 id="c-compiler-gcc-not-found-exec-gcc-executable-file-not-found-in-path">C compiler &amp;ldquo;gcc&amp;rdquo; not found: exec: &amp;ldquo;gcc&amp;rdquo;: executable file not found in $PATH&lt;/h2>
&lt;p>Khi run test trong &lt;code>Dockerfile&lt;/code> với cú pháp &lt;code>RUN go test ./...&lt;/code>, có thể bạn sẽ gặp lỗi không tìm thấy package &lt;code>gcc&lt;/code>.&lt;/p>
&lt;p>![Lỗi ko tìm thấy package &lt;code>gcc&lt;/code> khi chạy go test trong &lt;code>Dockerfile&lt;/code>.](&lt;a class="link" href="https://cdn.hashnode.com/res/hashnode/image/upload/v1653238321681/N3L89IVtY.png" target="_blank" rel="noopener"
>https://cdn.hashnode.com/res/hashnode/image/upload/v1653238321681/N3L89IVtY.png&lt;/a> align=&amp;ldquo;center&amp;rdquo;)&lt;/p>
&lt;p>Cách fix là &lt;a class="link" href="https://stackoverflow.com/questions/53479572/how-to-disable-cgo-for-running-tests" target="_blank" rel="noopener"
>disable &lt;code>CGO&lt;/code>&lt;/a> (công cụ hỗ trợ các lời gọi hàm từ C trong Go, nhờ đó, ta có thể sử dụng Go để đưa thư viện động của C (C dynamic libraby) sang các ngôn ngữ khác.) thông qua việc thêm &lt;code>CGO_ENABLED=0&lt;/code>. Bên zalo có một seris bài rất hay về lập trình CGO, bạn có thể đọc để tham khảo thêm ở &lt;a class="link" href="https://zalopay-oss.github.io/go-advanced/ch2-cgo/" target="_blank" rel="noopener"
>đây&lt;/a>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-Docker" data-lang="Docker">&lt;span class="line">&lt;span class="cl">&lt;span class="c">## before: C compiler &amp;#34;gcc&amp;#34; not found: exec: &amp;#34;gcc&amp;#34;: executable file not found in $PATH &lt;/span>&lt;span class="err">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">&lt;/span>&lt;span class="k">RUN&lt;/span> go &lt;span class="nb">test&lt;/span> -v ./....&lt;span class="err">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">&lt;/span>&lt;span class="c">## after: success&lt;/span>&lt;span class="err">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">&lt;/span>&lt;span class="k">RUN&lt;/span> &lt;span class="nv">CGO_ENABLED&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">0&lt;/span> go &lt;span class="nb">test&lt;/span> -v ./...&lt;span class="err">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Lời khuyên cho các bạn chuyển từ các ngành khác qua IT</title><link>https://japananh.github.io/blog/p/loi-khuyen-cho-cac-ban-chuyen-tu-cac-nganh-khac-qua-it/</link><pubDate>Tue, 10 May 2022 11:43:23 +0700</pubDate><guid>https://japananh.github.io/blog/p/loi-khuyen-cho-cac-ban-chuyen-tu-cac-nganh-khac-qua-it/</guid><description>&lt;img src="https://japananh.github.io/blog/p/loi-khuyen-cho-cac-ban-chuyen-tu-cac-nganh-khac-qua-it/cover.jpg" alt="Featured image of post Lời khuyên cho các bạn chuyển từ các ngành khác qua IT" />&lt;p>Một người anh siêu giỏi, code lâu năm nhắn tin hỏi tôi lời khuyên về định hướng cho các bạn chuyển từ các ngành khác qua IT. Phản ứng đầu tiên của tôi là cool quá vì được thần tượng nhắn tin. Sau 4 năm vừa học vừa làm thì tôi cũng có những bài học đắt giá muốn chia sẻ lại cho mọi người. Hi vọng chúng sẽ có ích cho bạn.&lt;/p>
&lt;h2 id="các-rào-cản-của-làm-việc-trái-ngành">Các rào cản của làm việc trái ngành&lt;/h2>
&lt;p>Nhảy ngành là một quyết định lớn trong sự nghiệp của mỗi người. Điều đầu tiên mọi người nên biết khi có ý định nhảy sang ngành IT là xác định các rào cản của việc làm trái ngành.&lt;/p>
&lt;p>Bạn phải mất 1 - 2 năm đi học hoặc vừa học vừa làm không lương hoặc với mức lương không được cao. Thậm chí là thấp hơn nhiều so với công việc trước đó của bạn. Khi bạn có chút kinh nghiệm thì lúc đó lương mới bắt đầu tăng. Nếu bạn là nguồn thu nhập chính trong gia đình, hãy đảm bảo 2 - 3 năm đầu tài chính của bạn dư dả.&lt;/p>
&lt;p>Bạn sẽ phải chấp nhận đồng đội của bạn hay sếp của bạn nhỏ tuổi hơn bạn, trẻ hơn bạn, giỏi hơn bạn và học nhanh hơn bạn. Tôi cũng từng rất áp lực khi đồng đội giỏi hơn mình rất nhiều. Các bạn ấy học lập trình từ hồi cấp 3 lại thêm 5 năm đại học. Mỗi người có một xuất phát điểm khác nhau. Chỉ cần hôm nay bạn đi xa hơn ngày hôm qua thì đó cũng là một thành công lớn.&lt;/p>
&lt;p>Trong một ngành phần lớn người lao động là nam. Nếu bạn là nữ và hỏi xin lời khuyên nên làm gì ví trí gì, tôi cá là kiểu gì cũng có nhiều người khuyên bạn nên làm tester, QA, designer hay những vị trí “dành cho nữ hơn” hay “bớt dùng não hơn”. Bất kể bạn có năng khiếu học toán, thích logic và có khi còn giải quyết vấn đề tốt hơn mấy ông nam. Đây là những định kiến ăn sâu vào tiềm thức của nhiều lập trình viên. Tôi hi vọng trong những năm tới, sẽ có nhiều nữ hơn trong ngành IT ở Việt Nam. Đặc biệt là các vị trí Back-end Engineer, Solution Architect, &amp;hellip;&lt;/p>
&lt;p>Sau 1 năm đi làm thì tôi thấy mình không khác gì con vẹt. Viết code theo hướng dẫn sử dụng của thư viện và copy đoạn code trên Google. Dù có hiểu nghĩa và đọc thêm tài liệu cộng với tiếng anh khá nhưng tôi vẫn không thể nào giải thích được tại sao nó chạy. Lúc này, tôi mới hiểu phần lớn các trung tâm dạy lập trình và bootcamp đều bỏ những môn quan trọng như hệ điều hành, mạng máy tính, bảo mật &amp;hellip; Đây là những kiến thức gốc, rất quan trọng. Họ chủ yếu dạy các bạn kiến thức để làm “thợ code&amp;quot;. Bạn sẽ có việc rất nhanh sau 4 - 12 tháng, học thấy đỡ nản nhưng càng về sau, khi muốn lên ví trí cao hơn đòi hỏi xử lý hệ thống phức tạp hơn thì những môn “không được dạy&amp;quot; kia sẽ giúp bạn tiến xa và tiến sâu hơn rất nhiều. Xa và sâu ở đây cũng ám chỉ cả lương nữa.&lt;/p>
&lt;h2 id="các-bước-nên-làm-để-không-bị-lạc-trong-ngành-it">Các bước nên làm để không bị lạc trong ngành IT&lt;/h2>
&lt;p>IT là một ngành rất rộng, có nhiều hướng để phát triển sự nghiệp và mỗi hướng đi thì đều có một. Vì thế nên khi mới bắt đầu tìm hiểu, bạn sẽ rất dễ bị hoang mang và nản chí. Sau đây là một vài lĩnh vực mà nhu cầu thị trường đang cần trong những năm gần đây (xác định đơn giản bằng số tin tuyển dụng xuất hiện trên các trang tuyển dụng lớn như itviec, linkedin, glassdoor, &amp;hellip;)&lt;/p>
&lt;ul>
&lt;li>Phát triển ứng dụng web (Web development)&lt;/li>
&lt;li>Trí tuệ nhân tạo (Artificial intelligence) và học máy (Machine learning)&lt;/li>
&lt;li>Cyber sercurity&lt;/li>
&lt;li>Điện toán đám mây (cloud computing)&lt;/li>
&lt;li>Phần cứng (Hardware development)&lt;/li>
&lt;li>Vân vân và mây mây&lt;/li>
&lt;/ul>
&lt;p>Ngoài ra, bạn có thể tìm thấy thông tin trên Google và qua các event của các trường đại học lớn hoặc trên Youtube về tổng quan ngành. Tìm một người đang làm trong ngành và hỏi họ về công việc hàng ngày là một ý tưởng hết sức tuyệt vời. Có những thứ bạn đọc khác hoàn toàn với lúc bạn bạn đi làm. Và đôi khi chỉ có trải nghiệm mới biết bạn hợp hay không.&lt;/p>
&lt;p>Tôi xin trích ra ba câu hỏi rất hay trong cuốn &lt;a class="link" href="https://shop.spiderum.com/products/nguoi-trong-muon-nghe-nganh-it-co-gi" target="_blank" rel="noopener"
>Người Trong Muôn Nghề: Ngành IT có gì? - Bức tranh tổng quan ngành Công nghệ thông tin&lt;/a>.&lt;/p>
&lt;ol>
&lt;li>Vì sao bạn học lập trình? Mục đích và mục tiêu của bạn là gì?&lt;/li>
&lt;li>Bạn sẵn sàng bỏ ra bao nhiêu lâu để “phá băng” vào ngành này?&lt;/li>
&lt;li>Cách bạn tự học thường như thế nào?&lt;/li>
&lt;/ol>
&lt;p>Không phải ai cũng thích viết lách. Tuy nhiên, viết ra là cách hữu ích giúp bạn biến những ý tưởng mơ hồ thành rõ ràng hơn. Ví dụ, &amp;ldquo;Tôi thích học lập trình vì thuật toán rất thú vị và tôi có thể áp dụng tạo ra sản phẩm có ích cho xã hội&amp;rdquo; sẽ rõ ràng hơn &amp;ldquo;Tôi thích học lập trình&amp;rdquo;.&lt;/p>
&lt;p>Việc học lập trình cần có một kế hoạch rõ ràng. Tìm hiểu roadmap của lĩnh vực sẽ giúp bạn biết bạn còn thiếu những kiến thức gì, cần bổ sung kiến thức gì. Để tìm roadmap của một vị trí, bạn search với key là &lt;code>&amp;lt;vị trí&amp;gt; roadmap&lt;/code>. Ví dụ, đây là &lt;a class="link" href="https://roadmap.sh/golang" target="_blank" rel="noopener"
>roadmap cho Go Developers&lt;/a>. Bạn không cần học hết tất cả các mục trong roadmap để có được công việc đầu tiên nên đừng vì nhiều mục quá mà nản nhé. Cứ học từ từ theo thứ tự thôi.&lt;/p>
&lt;p>![Screen Shot 2022-05-10 at 5.00.31 AM.png](&lt;a class="link" href="https://cdn.hashnode.com/res/hashnode/image/upload/v1652133681072/4RapsJBwp.png" target="_blank" rel="noopener"
>https://cdn.hashnode.com/res/hashnode/image/upload/v1652133681072/4RapsJBwp.png&lt;/a> align=&amp;ldquo;center&amp;rdquo;)&lt;/p>
&lt;p>Bản roadmap trên mạng thường rất chung chung, chỉ đưa ra từ khoá lớn. Bạn phải Google và tham khảo thêm từ rất nhiều nguồn khác để tự tạo ra roadmap cá nhân. Khi đã có roadmap cho riêng mình, bạn sẽ biết mình nên học gì tiếp theo, ít bị lạc hơn và tập trung hơn. Bạn có thể tham khảo bài &lt;a class="link" href="https://www.facebook.com/groups/1177470863076165/permalink/1191651884991396/" target="_blank" rel="noopener"
>post&lt;/a> viết kỹ về quá trình học và có việc làm đầu tiên của chị Ngoc Le trong group &lt;a class="link" href="https://www.facebook.com/groups/1177470863076165/" target="_blank" rel="noopener"
>Viet Tech&lt;/a> (group chia sẻ kinh nghiệm cho các bạn trong ngành IT, cụ thể là software engineer)&lt;/p>
&lt;p>Đối với các bạn trái ngành, tìm cho mình một cộng đồng tốt giúp bạn có nhiều động lực học tập hơn. Bạn sẽ tìm được rất nhiều người bạn tốt có cùng mục tiêu. Việc học nhóm sẽ tạo điều kiện cho bạn phát triển tư duy làm việc nhóm và các kỹ năng giao tiếp.&lt;/p>
&lt;p>Phim ảnh thường xây dựng hình ảnh lập trình viên là những người “lập dị, thông minh, cả ngày ngồi máy tính”. Nhưng thực tế là ngành IT đòi hỏi giao tiếp và làm việc nhóm khá nhiều. Giải quyết bất đồng quan điểm, làm rõ những điều chưa hiểu trong yêu cầu của khách hàng, thuyết phục khách hàng/đồng đội về giải pháp đưa ra hay làm sao để vượt qua các câu hỏi tình huống tuyển dụng. Những người có kỹ năng giao tiếp và làm việc nhóm hiệu quả sẽ xử lý vấn đề này tốt hơn người chưa biết cách giao tiếp và làm việc nhóm.&lt;/p>
&lt;p>Thầy (mentors) là người không thể thiếu cho dù bạn học bất kỳ cái gì. Thầy có thể là nguời chỉ dẫn cho bạn, có thể là khoá học hoặc sách từ người có kinh nghiệm. Bạn nên chủ động tìm mentors cho bản thân. Khi gặp khó khăn, đừng ngại xin lời khuyên từ họ.&lt;/p>
&lt;p>Tất cả các ngôn ngữ lập trình và tài liệu hướng dẫn sử dụng chúng đều được viết bằng tiếng anh. Phần lớn các lập trình viên trên thế giới đều dùng tiếng anh để trao đổi trong công việc (và cuộc sống). Bạn có thể dùng tiếng anh làm công cụ xây dựng danh tiếng của bản thân và tạo mối quan hệ tốt với các developers giỏi trên thế giới.&lt;/p>
&lt;p>Stackoverflow là trang hỏi đáp lớn nhất về lập trình trên thế giới và ngôn ngữ sử dụng là 100% tiếng anh. Với profile vài nghìn điểm Stackoverflow, bạn sẽ có một ấn tượng tốt với nhà tuyển dụng. Tôi cũng nhận được sự trợ giúp về kỹ thuật từ những người giỏi bằng cách viết email hỏi họ.&lt;/p>
&lt;p>Bên cạnh đó, lập trình viên giao tiếp tiếng anh tốt có mức lương cao hơn 10-20% so với lập trình viên yếu tiếng anh ở cùng level. Bạn còn có cơ hội nhận các job remote từ nước ngoài với range lương cao hơn so với các job trong nước hoặc ra nước ngoài làm việc.&lt;/p>
&lt;p>Một lưu ý nữa là giao tiếp tiếng anh tốt trong công việc khác với học giỏi tiếng anh. Nếu bạn có tiếng anh tốt (IELTS 9.0 chẳng hạn), bạn có lợi thế hơn các bạn học đúng chuyên ngành IT nhưng tiếng anh yếu ở việc xử lý tài liệu tiếng anh nhanh hơn nhưng nó không đồng nghĩa với việc bạn đưa ra hướng giải quyết cho vấn đề nhanh hơn.&lt;/p>
&lt;p>Trong 2 - 3 năm đầu tiên đi làm, thứ bạn quan tâm đầu tiên là môi trường tốt, đồng đội tốt và bản thân bạn học được nhiều thứ nâng trình độ bản thân lên tầm cao mới. Đừng vì công ty A trả cao hơn công ty B nhưng một năm sau nhìn lại, bạn không thấy mình học được nhiều thứ mới, không có kỹ năng gì đặc biệt bỏ vào resume. Tới lúc chán muốn tìm cơ hội mới thì phỏng vấn lại rơi vào thế lưỡng nan là không công ty nào trả lương cao hơn cho mình.&lt;/p>
&lt;p>Câu này bạn sẽ tự hỏi mình khi bạn đã đi làm được vài tháng cho tới vài năm. Như đã viết ở phần hổng kiến thức phía trên. Nếu bạn đã đi theo roadmap cá nhân và vẫn thấy bế tắc. Lời khuyên của tôi là hãy kiên nhẫn và tìm hiểu thêm. Tôi đã phải đọc lại giáo trình hệ điều hành tới lần thứ 2 trong vài tháng liền mới hiểu cơ bản về cách bộ nhớ và CPU hoạt động.&lt;/p>
&lt;p>Eli Weinstock-Herman có viết một bài blog rất hay về &lt;a class="link" href="http://www.tiernok.com/posts/evergreen/mi/defining-developer-career-ladders/#five-paths-for-senior-developers-not-one-" target="_blank" rel="noopener"
>các nấc thang trong sự nghiệp của một lập trình viên&lt;/a>. Bạn có thể tham khảo để tự đánh giá trình độ bản thân và điều chỉnh lại roadmap cá nhân.&lt;/p>
&lt;p>![ladder-research-02.png](&lt;a class="link" href="https://cdn.hashnode.com/res/hashnode/image/upload/v1652135598872/XPYQzVzlV.png" target="_blank" rel="noopener"
>https://cdn.hashnode.com/res/hashnode/image/upload/v1652135598872/XPYQzVzlV.png&lt;/a> align=&amp;ldquo;center&amp;rdquo;)&lt;/p></description></item><item><title>Chuyện tình cảm</title><link>https://japananh.github.io/blog/p/chuyen-tinh-cam/</link><pubDate>Tue, 03 May 2022 10:04:48 +0700</pubDate><guid>https://japananh.github.io/blog/p/chuyen-tinh-cam/</guid><description>&lt;img src="https://japananh.github.io/blog/p/chuyen-tinh-cam/cover.jpg" alt="Featured image of post Chuyện tình cảm" />&lt;p>Bài này viết về quan sát và trải nghiệm cá nhân của tôi trong thời gian qua.&lt;/p>
&lt;h2 id="forever-alone">Forever Alone&lt;/h2>
&lt;p>Cuộc sống có nhiều điều thật trớ trêu. Những người dễ thương đã yên bề gia thất. Người mình thích lại không thích mình. Những người thích mình thì mình không thích. Nếu cứ cố thích người mình không thích thì kiểu gì cuộc tình cũng sẽ tan, không sớm thì muộn. Nếu cứ cố bám lấy người mình thích nhưng không thích mình thì liệu cuộc tình sẽ đi về đâu?&lt;/p>
&lt;p>Sự bất hạnh của những người FA là họ kỳ vọng mình thay đổi được tình cảnh trong khi thực tế họ vẫn đang FA. Do đó, để bớt đau, họ có hai sự lựa chọn. Một là đè nén sự cô đơn. Hai là chịu đau.&lt;/p>
&lt;p>Những người cố quên đi sự cô đơn của mình bằng công việc, sở thích cá nhân hay bất kỳ thứ gì khác có được sự thoả mãn trong ngắn hạn. Về dài hạn, anh ta phải đối mặt với nhiều khủng hoảng. Mọi sự cô đơn bị đè nén đều tích tụ lại cho tới một ngày vỡ ra khi sức chứa của bạn không đủ nữa.&lt;/p>
&lt;p>Những người cố gắng vượt qua cơn đau, chấp nhận nó như một phần của cuộc sống có được sự dũng cảm mà có người gọi đó là &amp;ldquo;dở hơi&amp;rdquo;. Về dài hạn, khả năng thành công (có một cuộc tình bền lâu) của anh ta có thể sẽ cao hơn những người ở nhóm đè nén. Đơn giản là số lần thử của anh ta nhiều hơn và khả năng lỳ đòn của anh ta cao hơn.&lt;/p>
&lt;p>Vậy chúng ta nên chọn phương án một hay hai?&lt;/p>
&lt;h2 id="từ-chối">Từ chối&lt;/h2>
&lt;p>Nếu bạn không thích người kia mà rõ ràng ngay từ đầu rằng &amp;ldquo;Bạn rất tốt nhưng tôi rất tiếc&amp;rdquo; thì nỗi đau bị từ chối sẽ nhẹ nhàng hơn việc người kia đang nhiệt tình bỗng dưng trở nên &amp;ldquo;im lặng&amp;rdquo;. Có khi bạn còn chả thấy đau.&lt;/p>
&lt;p>Sự &amp;ldquo;im lặng&amp;rdquo; có nhiều hình thức khác nhau. Người kia có thể dừng hết tất cả giao tiếp với bạn, biến mất như một con ma (ghosting). Điều này có thể khiến bạn có chút ngỡ ngàng. Thậm chí, tự hỏi trong đầu tại sao. Tuy nhiên, sự phũ phàng ấy trôi qua rất nhanh thôi.&lt;/p>
&lt;p>Khi người đó vẫn tiếp tục trả lời các tin nhắn của bạn nhưng chỉ vì &amp;ldquo;cho vui&amp;rdquo; mà không hề có ý định viết tiếp câu chuyện tình yêu, bạn sẽ nhận ra điều này. Tuy nhiên, điều nguy hiểm là bạn sẽ có chút hi vọng rằng mình vẫn còn cơ hội. Bạn sẽ tìm đủ mọi cách gặp người ấy, được ở bên cạnh người ấy. Khi sự &amp;ldquo;im lặng&amp;rdquo; không đơn thuần là sự im lặng, sự tổn thương trở nên đau đớn hơn nhiều.&lt;/p>
&lt;p>Để tránh làm người đau và làm mình đau, chúng ta cần sự rõ ràng. Tuy nhiên, rõ ràng là một điều rất khó trong chuyện tình cảm. Bạn phải hiểu rất rõ mình, biết mình là ai và muốn gì. Bạn còn cần sự dũng cảm để sẵn sàng từ chối ai đó.&lt;/p>
&lt;h2 id="kết-luận">Kết luận&lt;/h2>
&lt;p>Có những thứ rất dễ hiểu nhưng tôi lại từ chối hiểu. Có những thứ vốn dĩ không thể hiểu nhưng tôi lại cứ lao đầu vào cố hiểu. Thành ra thi thoảng lại bị &amp;ldquo;đau tim&amp;rdquo;. Rút kinh nghiệm là khi nỗi đau là không thể tránh khỏi thì thôi mình cứ lao đầu đi. Sai rồi sửa.&lt;/p></description></item><item><title>Tôi và Tô</title><link>https://japananh.github.io/blog/p/toi-va-to/</link><pubDate>Tue, 19 Apr 2022 23:20:39 +0700</pubDate><guid>https://japananh.github.io/blog/p/toi-va-to/</guid><description>&lt;img src="https://japananh.github.io/blog/p/toi-va-to/cover.jpg" alt="Featured image of post Tôi và Tô" />&lt;p>Khi anh chàng Bi thích khám phá thế giới nhà tôi phát hiện ra cái gì đó màu nâu, nhỏ xíu ở gầm ô tô gần chỗ chúng tôi ở thì trời tối muộn và quanh đó chả có ai. Mẹ tôi thương cậu nhóc bị lạc nên đem về nhà chăm. Rồi chúng tôi đăng tin tìm chủ lên mạng xã hội mà cả tuần chẳng thấy ai liên hệ.&lt;/p>
&lt;p>Lý do tôi gọi cậu ấy là &lt;strong>Tô&lt;/strong> vì tôi nhớ tới cuốn sách yêu thích hồi bé - &lt;strong>Tôi là BêTô&lt;/strong> của nhà văn Nguyễn Nhật Ánh. Còn mẹ tôi thì bảo là cần một cái tên để gọi trong lúc chờ chủ của cậu tới đón về.&lt;/p>
&lt;p>Tô là một cậu bé hiền lành và ấm áp. Từ lúc về nhà tôi, chưa bao giờ thấy cậu sủa câu nào. Phần lớn thời gian cậu ở trong phòng tôi, hết thì nằm trên lòng khi tôi đang việc hay ngủ cùng tôi. Tới cả lúc ngủ cậu cũng phải chọn chỗ để nằm thật sát người tôi, bất kể trời nóng hay se lạnh. Thậm chí, cậu còn đòi cả vào WC ngồi cùng tôi như thể sợ tôi biến mất sau cánh cửa.&lt;/p>
&lt;p>Tô rất quý tôi, dù tôi chả hề dắt cậu đi dạo hay chăm cho cậu ăn như bố và mẹ. Điều này làm tôi vừa mừng, vừa bối rối. Phần vì tôi nhát, phần vì tôi chả biết làm sao để đối xử lại lòng trung thành của cậu ngoài việc vuốt ve lưng cậu và ôm cậu ngủ. Nếu một anh chàng nhảy vào đời tôi và sẵn sàng yêu tôi, liệu tôi có đủ dũng cảm để chui ra khỏi cái vỏ ốc thường ngày?&lt;/p>
&lt;p>Tô không phải tuýp người mà tôi thích. Tôi đam mê các anh chàng trắng trẻo, lông mịn, mũm mĩm và thơm tho. Còn cậu ta thì ngược lại. Lông cậu màu nâu, ngắn, xơ, cùn, mắt lồi và miệng thì &amp;ldquo;bốc mùi&amp;rdquo;, chưa kể bốn chân nhỏ và dài loàng ngoằng. Đôi lúc, trong cuộc sống, &amp;ldquo;cái nét đánh chết cái đẹp&amp;rdquo; và tiêu chuẩn ngoại hình là những thứ thật mong manh. Chẳng phải dù hoàn cảnh gì xảy ra chúng ta đều có thể thích nghi được đó sao.&lt;/p>
&lt;p>Vào một buổi chiều nắng đẹp, tôi dắt Tô xuống khuôn viên dưới nhà phơi nắng. Bầu trời hôm đó thật gần, xanh và thơ mộng, tôi có cảm giác nếu cố gắng với tay, có lẽ tôi sẽ chạm được vào những đám mây bồng bềnh đang trôi kia. Thấy tôi ngồi im ngẩng mặt ngắm trời, cậu nhảy lên ghế đá ngồi cùng tôi như hai người bạn thân lâu năm. Những khoảnh khắc hạnh phúc trong đời tôi đều là những thứ rất đơn giản. Đôi khi là một bông hoa, một cái lá, một cái ôm của mẹ, hay ngắm nhìn anh chàng tôi thích tập thể dục.&lt;/p>
&lt;p>Cuộc sống cứ tiếp diễn theo những cách không thể bình thường hơn. Tô vẫn đam mê ngủ với tôi. Bố mẹ tôi nói là cậu có thể ở lại nếu chúng tôi không tìm được chủ cũ. Tôi không chắc đây là happy ending. Tôi chỉ biết hôm nay là một ngày vui để ngồi viết.&lt;/p></description></item><item><title>Summary of the book "What is blockchain?"</title><link>https://japananh.github.io/blog/p/summary-of-the-book-what-is-blockchain/</link><pubDate>Sun, 27 Feb 2022 22:45:45 +0700</pubDate><guid>https://japananh.github.io/blog/p/summary-of-the-book-what-is-blockchain/</guid><description>&lt;img src="https://japananh.github.io/blog/p/summary-of-the-book-what-is-blockchain/cover.jpg" alt="Featured image of post Summary of the book "What is blockchain?"" />&lt;p>Here is my summary of the book &lt;a class="link" href="https://learning.oreilly.com/library/view/what-is-blockchain" target="_blank" rel="noopener"
>What is blockchain?&lt;/a>&lt;/p>
&lt;ul>
&lt;li>Blockchain principles
&lt;ul>
&lt;li>
&lt;p>Start with the story of Changpeng Zhao - a blockchain billionaire in less than a year.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>He created &lt;strong>Binance&lt;/strong> in 2017 a flatform to transfer bitcoin and altcoins.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Network Effects&lt;/strong>&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>For every user who joins a blockchain, the more valuable that blockchain becomes.&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&amp;hellip; networks that are more open are generally more successful.&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>The sweet spot between &lt;strong>permissioned&lt;/strong> and &lt;strong>permissionless.&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645976339448/imSKEovqB.png"
loading="lazy"
alt="wibc_0113.png"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Eliminate the Intermediaries&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Story of apple juice supplement. The more middleman in the process, the more price customers will pay.&lt;/li>
&lt;li>W&lt;em>here do we have inefficient intermediaries?&lt;/em> Who can we eliminate from our supply chain? “Going direct to the customer” has always been a way to save money for both producers and consumers.&lt;/li>
&lt;li>&lt;em>where can we eliminate steps in our supply chain?&lt;/em> 
Where can we replace a centralized record keeper with a decentralized ledger? Where can we eliminate an intermediary? That’s where a blockchain solution is often hiding.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;strong>Code, Not Contracts&lt;/strong>&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>A contract is paperwork that records a transaction between two or more parties.&lt;/li>
&lt;li>A &lt;strong>smart contract&lt;/strong> is computer code that establishes agreements between parties and then executes the transaction when certain conditions are met, without the need for a third party.&lt;/li>
&lt;li>Still don’t understand the idea of it???&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Forking bitcoin should be avoidable for 2 main reasons&lt;/p>
&lt;ul>
&lt;li>You lose users&lt;/li>
&lt;li>You are more likely to fork again&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645976462753/8Z3Q5vTqm.png"
loading="lazy"
alt="wibc_0119.png"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Four simple principles of a blockchain project: Free, Instant, Scalable, and Trusted.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The story of blockchain in 2017-2018 periods: &lt;strong>&lt;strong>Evolution vs Revolution&lt;/strong>&lt;/strong>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>Viết một cái tool tính tạ</title><link>https://japananh.github.io/blog/p/viet-mot-cai-tool-tinh-ta/</link><pubDate>Sun, 27 Feb 2022 22:24:50 +0700</pubDate><guid>https://japananh.github.io/blog/p/viet-mot-cai-tool-tinh-ta/</guid><description>&lt;img src="https://japananh.github.io/blog/p/viet-mot-cai-tool-tinh-ta/cover.jpg" alt="Featured image of post Viết một cái tool tính tạ" />&lt;p>Cuối tuần rảnh nên tôi có viết một cái &lt;strong>tool tính tạ&lt;/strong> tên là &lt;a class="link" href="https://plate-calculator.herokuapp.com/" target="_blank" rel="noopener"
>Plate Calculator&lt;/a>. Tool này dành cho những ai làm biếng tính nhẩm hoặc tính nhầm toàn sai (như tôi).&lt;/p>
&lt;h2 id="dành-cho-các-bạn-là-dev">Dành cho các bạn là dev&lt;/h2>
&lt;p>Tool nhà dùng nên tôi cố gắng viết càng nhanh càng tốt, bỏ qua việc thiết kế UI lung linh, miễn sao là số thao tác của tôi để tính tạ ở mức nhỏ nhất. Do vậy, code hết sức bình thường: &lt;strong>HTML, Bootstrap, Jquery&lt;/strong>, dùng &lt;strong>Expressjs&lt;/strong> làm server, và host trên &lt;strong>Heroku&lt;/strong>.&lt;/p>
&lt;p>Source code của tool: &lt;a class="link" href="https://github.com/japananh/plate-calculator" target="_blank" rel="noopener"
>https://github.com/japananh/plate-calculator&lt;/a>.&lt;/p>
&lt;h2 id="tool-này-để-làm-gì">Tool này để làm gì?&lt;/h2>
&lt;p>Với những bạn chưa quen tập tạ, tôi sẽ giải thích ngắn gọn như sau. Còn ai biết rồi thì thôi kéo xuống mục sau đọc tiếp nhé.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645433266257/h18myYTnD.jpg"
loading="lazy"
alt="oso-color-collars-web3-1.jpg"
>&lt;/p>
&lt;p>Trong hình là 3 dụng cụ tối thiểu bạn cần có để tập:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Thanh đòn&lt;/strong> (Barbells) có KÍCH CỠ CHUẨN là &lt;strong>15kg (dài 1.8m)&lt;/strong> hoặc &lt;strong>20kg (dài 2.2m)&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Bánh tạ&lt;/strong> (Plates) có khối lượng từ 0.25 kg tới 25 kg, bao gồm &lt;strong>0.25, 0.5, 1, 2, 5, 10, 15, 20, 25&lt;/strong>.
&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645433283159/HGGG2WKtz.jpeg"
loading="lazy"
alt="rogue_competition_plates_kglb__1600274002_9c368352_progressive.jpeg"
>&lt;/li>
&lt;li>&lt;strong>Khóa tạ&lt;/strong> (cái màu xanh dương trên hình) để giữ cho các bánh tạ cố định trên thanh đòn, có khối lượng cỡ 50-150 gram (thường được bỏ qua khi tính khối lượng tạ nên chúng ta sẽ bỏ qua khối lượng của em này).&lt;/li>
&lt;/ul>
&lt;p>Đối với những bạn nâng tạ theo phương pháp Linear Progression (hiểu đơn giản tăng tạ liên tục qua mỗi buổi tập hoặc mỗi tuần tập) thì việc tính toán tạ rất hay bị nhầm. Ví dụ, có hôm tôi lắp nhầm 45 kg thay vì 55 kg và cứ thấy tạ nhẹ thế. :D&lt;/p>
&lt;p>Với cái tool này thì mọi người chỉ cần &lt;strong>cài đặt sẵn số lượng loại bánh tạ&lt;/strong> tôi có, &lt;strong>nhập số tạ mong muốn&lt;/strong> là tool sẽ tự động tính số loại bánh tạ cần thiết cho mức tạ giúp tôi lắp tạ dễ dàng hơn.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645436073871/bMY4ygSxY.png"
loading="lazy"
alt="273905932_929792614406242_1302445064532442680_n.png"
>&lt;/p>
&lt;h2 id="cách-dùng-tool">Cách dùng tool&lt;/h2>
&lt;p>Đường link tới tool: &lt;a class="link" href="https://plate-calculator.herokuapp.com" target="_blank" rel="noopener"
>https://plate-calculator.herokuapp.com&lt;/a>&lt;/p>
&lt;p>Tool này sẽ có 2 chế độ: &lt;strong>Single&lt;/strong> và &lt;strong>Range&lt;/strong>. (Tôi đặt tạm hai cái tên, ai thấy tên nào hay hơn có thể comment nhé.)&lt;/p>
&lt;p>Video hướng dẫn: &lt;a class="link" href="https://www.youtube.com/watch?v=r875bSJjcYo" target="_blank" rel="noopener"
>https://www.youtube.com/watch?v=r875bSJjcYo&lt;/a>&lt;/p>
&lt;p>Chế độ &lt;strong>Single&lt;/strong> dùng để tính cách lắp tạ từ một mức tạ nhất định dựa trên bánh tạ và đĩa tạ bạn có.&lt;/p>
&lt;p>Video hướng dẫn: &lt;a class="link" href="https://www.youtube.com/watch?v=7w1HeyF-AIY" target="_blank" rel="noopener"
>https://www.youtube.com/watch?v=7w1HeyF-AIY&lt;/a>&lt;/p>
&lt;p>Chế độ &lt;strong>Range&lt;/strong> dùng để kiểm tra bánh tạ và đĩa tạ bạn có đủ để lắp một khoảng tạ nào đó không.&lt;/p></description></item><item><title>Suy nghĩ trên mây - Hậu linh tinh</title><link>https://japananh.github.io/blog/p/suy-nghi-tren-may-hau-linh-tinh/</link><pubDate>Sun, 27 Feb 2022 22:12:15 +0700</pubDate><guid>https://japananh.github.io/blog/p/suy-nghi-tren-may-hau-linh-tinh/</guid><description>&lt;img src="https://japananh.github.io/blog/p/suy-nghi-tren-may-hau-linh-tinh/cover.jpg" alt="Featured image of post Suy nghĩ trên mây - Hậu linh tinh" />&lt;p>Tôi đem những việc tôi chả kể được với ai viết thành mấy dòng như này. Viết xong cứ ngồi cười như ngây như dại. Thật là kỳ cục!&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Bình yên bên ngoài
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Bình yên giả tạo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Bình yên bên trong
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Tĩnh lặng mênh mông.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Mua một cái áo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Lại thêm cái quần
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Rồi một mớ đần
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Vậy là nhẵn túi.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Hết chuyện chẳng về
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Cứ ngồi loay hoay
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Tiếp mãi người ta
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Ngàn năm ân hận.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Chuyền bóng nhầm người
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Đối thủ bắt bài
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Tìm cách gài người
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Thành ra mình dại.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Chuyển đống cảm xúc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Thành một mớ thơ
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Một chữ hóa mười
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Thành ra mình lợi.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Kìa anh mét tám
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Mười lăm ký lô
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Nhẵn nhụi bóng trơn
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Về nhà em nhé.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>How to grow glutes</title><link>https://japananh.github.io/blog/p/how-to-grow-glutes/</link><pubDate>Sun, 27 Feb 2022 21:44:27 +0700</pubDate><guid>https://japananh.github.io/blog/p/how-to-grow-glutes/</guid><description>&lt;img src="https://japananh.github.io/blog/p/how-to-grow-glutes/cover.jpg" alt="Featured image of post How to grow glutes" />&lt;h2 id="the-rule-of-thirds">The rule of thirds&lt;/h2>
&lt;p>The rules of thirds are developed by &lt;strong>Bret Contreras&lt;/strong> (aka &lt;strong>The glutes guy&lt;/strong>). He is the &lt;strong>inventor of Hip Thrust&lt;/strong> and a world-leading glute expert.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645959549731/o7mnYz_ev.png"
loading="lazy"
alt="rule-of-third.png"
>&lt;/p>
&lt;p>To maximize the potential of the glutes, the rules of thirds said that&lt;/p>
&lt;blockquote>
&lt;p>In terms of effort, around 1/3 of your sets should be carried out to failure or 1 rep shy of failure, 1/3 of your sets should be performed to 2-3 reps shy of failure, and 1/3 of your sets should be taken nowhere close to failure.&lt;/p>
&lt;/blockquote>
&lt;p>Source: &lt;a class="link" href="https://www.instagram.com/p/BfzRPC2AS_r/?utm_source=ig_embed" target="_blank" rel="noopener"
>https://www.instagram.com/p/BfzRPC2AS_r/?utm_source=ig_embed&lt;/a>&lt;/p>
&lt;h2 id="exercise-categories">Exercise categories&lt;/h2>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645959598661/tQpfnyWzB.jpg"
loading="lazy"
alt="90e6df974fbcbf82053572b091b702b4.jpg"
>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Vertically loaded exercises&lt;/th>
&lt;th>Horizontally loaded exercises&lt;/th>
&lt;th>Lateral/Rotary loaded exercises&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>- Squat &amp;amp; squat variation&lt;!-- raw HTML omitted -->- Deadlift &amp;amp; deadlift variation&lt;!-- raw HTML omitted -->- Leg press&lt;!-- raw HTML omitted -->- Step-ups&lt;!-- raw HTML omitted -->- Lunges&lt;/td>
&lt;td>- Hip thrust and hip thrust variation&lt;!-- raw HTML omitted -->- Bridges&lt;!-- raw HTML omitted -->- Frog pump&lt;!-- raw HTML omitted -->- Back extension&lt;!-- raw HTML omitted -->- Reverse hypers&lt;/td>
&lt;td>- Sidekick exercises&lt;!-- raw HTML omitted -->- Kickback exercises&lt;!-- raw HTML omitted -->- Hip abduction exercises&lt;!-- raw HTML omitted -->- Fire hydrant&lt;!-- raw HTML omitted -->- Lateral band walk&lt;!-- raw HTML omitted -->- Swings&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>- Develop lower glutes&lt;!-- raw HTML omitted -->- Low reps: 3 - 10 reps&lt;/td>
&lt;td>- Develop upper/lower glutes&lt;!-- raw HTML omitted -->- Medium reps: &amp;gt;= 10&lt;/td>
&lt;td>- Develop upper glutes&lt;!-- raw HTML omitted -->- High reps: &amp;gt;= 15 to AMAP (as much as possible)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>Vertically loaded glute exercises are the hardest on the body and work lower than upper glute max fibers.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Horizontal is less taxing overall but highly activates both the upper and lower subdivisions.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Frontal plane lateral exercises completely target the upper subdivision of the glute max, whereas transverse plane hip abduction and hip external rotation exercises work both the upper and lower fibers.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>To make things more complicated, you also have blends and combinations of vectors.&lt;/p>
&lt;/blockquote>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Glute dominant exercises&lt;/th>
&lt;th>Quad dominant exercises&lt;/th>
&lt;th>Hamstring dominant exercises&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>- Hip thrust and hip thrust variation&lt;!-- raw HTML omitted --> - Bridges&lt;!-- raw HTML omitted -->- Frog pump&lt;!-- raw HTML omitted -->- Sidekick exercises&lt;!-- raw HTML omitted -->- Kickback exercises&lt;!-- raw HTML omitted -->- Hip abduction exercises&lt;!-- raw HTML omitted -->- Fire hydrant&lt;!-- raw HTML omitted -->- Lateral band walk&lt;!-- raw HTML omitted -->- RKC plank&lt;/td>
&lt;td>- Squat &amp;amp; squat variation&lt;!-- raw HTML omitted -->- Step-ups&lt;!-- raw HTML omitted -->- Leg press&lt;!-- raw HTML omitted -->- Sled pushes&lt;/td>
&lt;td>- Deadlift &amp;amp; deadlift variation&lt;!-- raw HTML omitted -->- Back extension&lt;!-- raw HTML omitted -->- Reverse hypers&lt;!-- raw HTML omitted -->- Swings&lt;!-- raw HTML omitted -->- Knee flexion exercises&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>- &lt;em>Hip thrust&lt;/em> should be placed at the beginning of your workouts.&lt;!-- raw HTML omitted -->- &lt;em>Hip abduction exercises&lt;/em> are great for burnouts and developing upper glutes. They should be placed at the end of your workouts.&lt;!-- raw HTML omitted -->- &lt;em>RKC plank&lt;/em> is great to work the core and should be the last exercise.&lt;/td>
&lt;td>- &lt;em>Squats&lt;/em> should be placed at the beginning of your workouts.&lt;!-- raw HTML omitted -->- &lt;em>Step-ups&lt;/em>, &lt;em>Leg press&lt;/em> should be placed in the middle of your workouts.&lt;/td>
&lt;td>- &lt;em>Deadlift&lt;/em> should be placed at the beginning of your workouts.&lt;!-- raw HTML omitted -->- &lt;em>Back extension&lt;/em> and &lt;em>Reverse hyper exercises&lt;/em> elicit higher glutes activation than other hamstring-dominant exercises.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="qa">Q&amp;amp;A&lt;/h2>
&lt;p>The glute guy said 3 to 5 depending on the volume. I often train my glutes with heavyweights (around 70 - 80% of 1RM - 1 Rep Max). I can only train my glutes 3 days a week. My lower body will be sore. I need 1 - 2 days to recover. But if you use the medium to lightweights, you can train up to 5 times a week.&lt;/p>
&lt;ul>
&lt;li>Low reps: 3 to 5&lt;/li>
&lt;li>Medium: 8 to 10&lt;/li>
&lt;li>High reps: &amp;gt; 10&lt;/li>
&lt;/ul>
&lt;p>There are no exercises that work for everybody. Everyone is different. I saw a lot of girls with great glutes doing mostly medium/high reps schema. I love low/medium reps schema but I try to keep everything in balance.&lt;/p>
&lt;p>I always start with the low reps exercises: vertically exercises such as Squat or Deadlift or Hip thrust, followed by the medium reps exercises such as squat variation exercises (Split squats, Bulgarian split squats, Step-ups, …) or deadlift variation exercises (single-leg deadlift, back extension, sumo deadlift, …) and finish with the lateral/rotary exercises (15 to AMAP) such as Seated Hip Abduction, Sidekick, Kickback, …&lt;/p>
&lt;p>If your form is not good, please find a mentor, or at least try to firm yourself when you&amp;rsquo;re working out, then compare your form with the correct way that was taught in the book &lt;a class="link" href="https://www.amazon.com/Starting-Strength-Mark-Rippetoe-ebook-dp-B006XJR5ZA/dp/B006XJR5ZA/ref=mt_other?_encoding=UTF8&amp;amp;me=&amp;amp;qid=" target="_blank" rel="noopener"
>Starting strengh&lt;/a>.&lt;/p>
&lt;p>It is not easy for a novice to pick the proper weights for each exercise. If you don&amp;rsquo;t have a mentor. Here is the formula that I use to pick up my weight.&lt;/p>
&lt;p>For example, if you want to do 10 reps of Squats, you should pick a weight that you can do a maximum of 10-12 reps.&lt;/p>
&lt;h2 id="sample-templates">Sample templates&lt;/h2>
&lt;p>This is an example of my one-week workout. My workouts change every month depending on my current physique, my mood, my routines, and my goals.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Monday (reps x sets)&lt;/th>
&lt;th>Wednesday (reps x sets)&lt;/th>
&lt;th>Friday (reps x sets)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1. Barbell back squat 5x4&lt;!-- raw HTML omitted -->2. Hip thrust 10x3&lt;!-- raw HTML omitted -->3. Standing pull through 15x3&lt;!-- raw HTML omitted -->4. Cable sidekick 15/legx4&lt;/td>
&lt;td>1. Conventional Deadlift 5x4&lt;!-- raw HTML omitted -->2. Split squat 10/legx3&lt;!-- raw HTML omitted -->3. Frog Pump 15x3&lt;!-- raw HTML omitted -->4. Seated hip abduction 20x4&lt;/td>
&lt;td>1. Barbell back squat 5x4&lt;!-- raw HTML omitted -->2. Stiff-deadlift 10x3&lt;!-- raw HTML omitted -->3. Cable sidekick 15/legx4&lt;!-- raw HTML omitted -->4. Fire hydrant 20/legx4&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Monday (reps x sets)&lt;/th>
&lt;th>Wednesday (reps x sets)&lt;/th>
&lt;th>Friday (reps x sets)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1. Barbell hip thrust 10x4&lt;!-- raw HTML omitted -->2. Chin-ups 5x4&lt;!-- raw HTML omitted -->3. Barbell back squats 10x4&lt;!-- raw HTML omitted -->4. Lat Pulldown 10x4&lt;!-- raw HTML omitted -->5. Swings 20*4&lt;!-- raw HTML omitted -->6. Cable sidekick 15/legx4&lt;!-- raw HTML omitted -->7. RKC Plank 30sx1&lt;/td>
&lt;td>1. Barbell hip thrust 10x4&lt;!-- raw HTML omitted -->2. Overhead Press 10x4&lt;!-- raw HTML omitted -->3. Split squat 10/legx4&lt;!-- raw HTML omitted -->4. Push-ups 5x4&lt;!-- raw HTML omitted -->5. Frog Pump 10x4&lt;!-- raw HTML omitted -->6. Seated hip abduction 20x4&lt;!-- raw HTML omitted -->7. Landmine 10x1&lt;/td>
&lt;td>1. Conventional Deadlift 5x4&lt;!-- raw HTML omitted -->2. Dumbell shoulder press 10x4&lt;!-- raw HTML omitted -->3. Barbell hip thrust 10x4&lt;!-- raw HTML omitted -->4. Chess press 10x4&lt;!-- raw HTML omitted -->5. Banded hip thrust 20x4&lt;!-- raw HTML omitted -->6. Fire hydrant 20/legx4&lt;!-- raw HTML omitted -->7. Hanging leg raise 15x1&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>You can try sample glute workouts from Bret (aka The Glute Guy - the Hip thrust inventor) &lt;a class="link" href="https://www.instagram.com/p/B3sPLrtA3LL/?igshid=qmlsfjfecddn&amp;amp;epik=dj0yJnU9ZGh1N2hOdmF1QjRrSk5jVWhDSlFfdWUzelNHRTc0ZnAmcD0wJm49LVVpVTVhVmlkX00yUEtZN05NdUp3USZ0PUFBQUFBR0JQWk44" target="_blank" rel="noopener"
>here&lt;/a>.&lt;/p>
&lt;h2 id="references">References&lt;/h2>
&lt;ul>
&lt;li>&lt;a class="link" href="https://www.instagram.com/p/BfzRPC2AS_r/?utm_source=ig_embed&amp;amp;ig_rid=7954bb41-c212-4d37-8df7-28679e1fc9e9" target="_blank" rel="noopener"
>Glute training vectors&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.instagram.com/p/Be-atfPg_Ke/?utm_source=ig_embed" target="_blank" rel="noopener"
>The rule of thirds&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.youtube.com/watch?v=UKNqDd_epnI" target="_blank" rel="noopener"
>https://www.youtube.com/watch?v=UKNqDd_epnI&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Liệu vẻ bề ngoài có quan trọng?</title><link>https://japananh.github.io/blog/p/lieu-ve-be-ngoai-co-quan-trong/</link><pubDate>Thu, 17 Feb 2022 18:37:53 +0700</pubDate><guid>https://japananh.github.io/blog/p/lieu-ve-be-ngoai-co-quan-trong/</guid><description>&lt;img src="https://japananh.github.io/blog/p/lieu-ve-be-ngoai-co-quan-trong/cover.jpg" alt="Featured image of post Liệu vẻ bề ngoài có quan trọng?" />&lt;p>&lt;strong>Keith Ferrazzi&lt;/strong>, tác giả cuốn &lt;strong>Đừng bao giờ đi ăn một mình&lt;/strong> có đưa ra một quan điểm như sau.&lt;/p>
&lt;blockquote>
&lt;p>Người ta nhìn bạn bằng vẻ bề ngoài nhiều hơn.&lt;/p>
&lt;/blockquote>
&lt;p>Dưới đây là những suy nghĩ của tôi về vẻ bề ngoài.&lt;/p>
&lt;p>Vẻ bề ngoài là những thứ gây ấn tượng với người khác khi họ gặp bạn, không chỉ có hình thức mà còn cả cách ăn nói và ngôn ngữ cơ thể. Bị ảnh hưởng bởi tư tưởng &amp;ldquo;Tốt gỗ hơn tốt nước sơn&amp;rdquo; trong nhiều năm khiến tôi trở nên xuề xòa trong hình thức. Điều này cũng lý giải lý do tôi được gán khá nhiều &amp;ldquo;cái mác&amp;rdquo; hồi còn đi học như &amp;ldquo;Mặt mụn&amp;rdquo;, &amp;ldquo;Gầy&amp;rdquo;, &amp;ldquo;Giản dị&amp;rdquo;, &amp;ldquo;Đàn ông&amp;rdquo;, &amp;hellip; Vì không biết điều này nên tôi đã sống rất nhiều năm tự ti về vẻ bề ngoài của mình.&lt;/p>
&lt;p>Trong một &lt;a class="link" href="https://www.youtube.com/watch?v=XGB4l0ZuV2Y" target="_blank" rel="noopener"
>video&lt;/a>, Jordan Petterson kể một câu chuyện bác đã bỏ tiền ra mua một bộ âu phục (suit) mắc nhất từ trước tới giờ và quyết định này khiến bác cảm thấy băn khoăn. Rồi bác nói rằng nó xứng đáng vì hôm đấy bác đã đứng nói trên một sân khấu quan trọng và việc ăn mặc &amp;ldquo;tử tế&amp;rdquo; là một khoản &amp;ldquo;đầu tư&amp;rdquo; xứng đáng. Câu nói đó đã thay đổi tôi. Tôi dọn đi một nửa tủ quần áo và thay vào đó những bộ đồ tử tế, ít nếp nhăn và chỉnh chu hơn. Nhất định mình phải thật gọn gàng và chỉnh chu.&lt;/p>
&lt;p>Chăm chút vẻ bề ngoài không có nghĩa là bạn phải trang điểm hay ăn mặc giống người nổi tiếng. Khi tìm hiểu về ngành công nghiệp làm đẹp thì tôi giật mình nhận thấy nếu cứ chạy theo chuẩn mực cái đẹp và mua đồ theo hứng thì tài khoản của tôi không sớm thì muộn cũng sẽ bốc hơi sạch. Tiền dành cho chăm sóc da hàng tháng của tôi là tầm 700k và 15 phút mỗi ngày cho việc apply 3-5 lọ mỹ phẩm lên mặt. Chí phí và thời gian sẽ đội lên tối thiểu 3 lần nếu tôi trang điểm vì phải thay đổi cả 1 chu trình dưỡng da.&lt;/p>
&lt;p>Tại sao người ta kỳ vọng nhiều vào làn da đến thế? Khái niệm về một là da KHÔNG TỲ VẾT là hão huyền, dù nó thực sự khiến người ta bị mê hoặc. Ý tôi là một vài cái mụn và lỗ chân lông to hay tàn nhang thì ảnh hưởng quái gì chứ? Dù có vẽ lên mặt kiểu gì thì tôi vẫn thấy mặt mình như thế, vẫn V-line, mắt to, môi nhỏ dễ thương. Không một màu son nào tôi thực sự ưng ý giữa cả chục thỏi son tôi từng thử. Chưa kể quá nhiều lớp trang điểm trên da khiến da tôi trở nên yếu hơn và phải chi nhiều tiền hơn vào liệu trình ở thẩm mỹ viện. Đầu tư vào việc học khiến lương tăng, mối quan hệ mở rộng, còn đầu tư vào &amp;ldquo;sắc đẹp&amp;rdquo; thì người yêu chưa thấy, chỉ thấy tiền bay.&lt;/p>
&lt;p>Tôi rất thích một câu của dịch giả Trịnh Lữ trong &lt;a class="link" href="https://youtu.be/UnsNNu1xgQI?t=2289" target="_blank" rel="noopener"
>buổi đối thoại với Vietcetera&lt;/a> rằng &amp;ldquo;Trong bất kỳ tình huống nào mình cũng có lựa chọn&amp;rdquo;. Tôi nghĩ &amp;ldquo;trang điểm&amp;rdquo; hay không và mức độ tùy thuộc vào mỗi người. Bạn có thể đổ thừa rằng công việc buộc bạn phải như thế. Tôi chỉ nghĩ là bạn luôn có nhiều hơn một lựa chọn.&lt;/p></description></item><item><title>Công thức tìm người đỡ đầu</title><link>https://japananh.github.io/blog/p/cong-thuc-tim-nguoi-do-dau/</link><pubDate>Thu, 17 Feb 2022 14:55:17 +0700</pubDate><guid>https://japananh.github.io/blog/p/cong-thuc-tim-nguoi-do-dau/</guid><description>&lt;img src="https://japananh.github.io/blog/p/cong-thuc-tim-nguoi-do-dau/cover.jpg" alt="Featured image of post Công thức tìm người đỡ đầu" />&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Bạn có thể đóng góp được gì cho người đó?
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Làm sao để người đó thích mình?
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Mình có điểm gì đặc biệt?
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Mình có điểm chung gì với người đó?
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Làm sao để thể hiện lòng biết ơn, sự hào hứng và đam mê của bản thân?
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Đây là điều tôi chắc lọc từ chương 22 của cuốn &lt;strong>Đừng bao giờ đi ăn một mình&lt;/strong> của tác giả &lt;strong>Keith Ferrazzi&lt;/strong> và đã áp dụng thành công. Nếu bạn chỉ chơi với những người ngang mình hoặc dưới mình thì khả năng là bạn sẽ giậm chân tại chỗ hoặc đi rất chậm.&lt;/p>
&lt;p>Trong mỗi giai đoạn cuộc đời, bạn cần một (hay nhiều) người thầy hay &lt;strong>Keith Ferrazzi&lt;/strong> gọi là &lt;strong>người đỡ đầu&lt;/strong>. Họ có thể là bất kỳ ai, một người giúp bạn đạt được thành tựu hay một ai đó bạn gặp tình cờ. Một cậu bạn cho tôi trú nhờ lúc trời mưa rồi còn đội mưa mua giúp tôi cái vé tàu dù chả biết tôi là người thế nào khi tôi ngáo ngơ đi du lịch một mình.&lt;/p>
&lt;p>Nếu bạn nói với người mà bạn muốn nhận sự giúp đỡ rằng &amp;ldquo;Tôi đang gặp vấn đề XYZ, liệu bạn có thể giúp đỡ tôi không?&amp;rdquo; thì khả năng bạn bị từ chối khá cao. Tại sao họ phải giúp bạn nếu họ không hứng thú với vấn đề của bạn?&lt;/p>
&lt;p>Câu chuyện sẽ trở nên dễ dàng hơn nếu bạn &lt;strong>có gì đó để trao đổi&lt;/strong>. Giả sử, người bạn cần đang cần tăng cân và bạn lại có nhiều kinh nghiệm về vấn đề này. Bạn có khả năng sẽ thu hút được sự chú ý của người đó.&lt;/p>
&lt;p>Tôi từng nhận được sự giúp đỡ từ nhiều người dù thời điểm ấy, tôi chẳng đóng góp được gì cho họ. Lý do là tôi với họ &lt;strong>có điểm chung&lt;/strong> nào đó hoặc họ thấy được &lt;strong>sự đam mê&lt;/strong> của tôi với những thứ tôi làm hoặc cả hai. Đơn giản là &lt;strong>họ thích tôi&lt;/strong>. Để họ thích bạn là cả một sự sáng tạo và bạn cần động não thôi.&lt;/p></description></item><item><title>Suy nghĩ trên mây - Lữ Na</title><link>https://japananh.github.io/blog/p/suy-nghi-tren-may-lu-na/</link><pubDate>Sun, 13 Feb 2022 17:24:35 +0700</pubDate><guid>https://japananh.github.io/blog/p/suy-nghi-tren-may-lu-na/</guid><description>&lt;img src="https://japananh.github.io/blog/p/suy-nghi-tren-may-lu-na/cover.jpg" alt="Featured image of post Suy nghĩ trên mây - Lữ Na" />&lt;p>Tôi viết bài này lúc 11 giờ tối, đơn giản là ghi lại những hình ảnh xuất hiện trong đầu mình. Mùa xuân Hà Nội âm u nên những câu thơ trở nên thật khó hiểu, rối loạn giống lòng người khi đó.&lt;/p>
&lt;p>Tôi lấy tên bài là &lt;strong>Lữ Na&lt;/strong>. &lt;strong>Lữ&lt;/strong> trong lữ khách, để luôn nhắc nhở mình chỉ là người khách qua đường giữa cuộc đời rộng lớn, luôn cần phải học hỏi, mở mang bản thân. &lt;strong>Na&lt;/strong> là ghép của hai chữ đầu tiên từ tên đệm và tên thật của tôi.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Cô bé tóc xù
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Đi giữa sương mù
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Tiến lui trái phải
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Bước nào cũng ngại
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Đành phải đứng im
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Bỗng thấy lim dim
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Đánh liều đi ngủ
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Trời kia không chủ
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Mặt đất nứt ra
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Ở tận đằng xa
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Kìa ai lạ hoắc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Cặp mắt thật sắc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Thấu tận trong tim
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Cô bé như chìm
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Vào trong giấc mộng
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Ở trong cái động
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Có cái hồ xinh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Trên giường thủy tinh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Bóng ai yên nghỉ.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>[UPDATED] Tối ưu bộ nhớ cho struct trong Go</title><link>https://japananh.github.io/blog/p/toi-uu-bo-nho-cho-struct-trong-go/</link><pubDate>Fri, 11 Feb 2022 10:21:47 +0700</pubDate><guid>https://japananh.github.io/blog/p/toi-uu-bo-nho-cho-struct-trong-go/</guid><description>&lt;img src="https://japananh.github.io/blog/p/toi-uu-bo-nho-cho-struct-trong-go/cover.jpg" alt="Featured image of post [UPDATED] Tối ưu bộ nhớ cho struct trong Go" />&lt;p>Hôm nay, tôi đọc một bài báo khá hay trên &lt;strong>Medium&lt;/strong> về cách tăng tốc cho struct trong ngôn ngữ Go. Sau đây là những ý chính của bài báo. Các bạn có thể đọc bài gốc bằng tiếng anh ở &lt;a class="link" href="https://betterprogramming.pub/how-to-speed-up-your-struct-in-golang-76b846209587" target="_blank" rel="noopener"
>đây&lt;/a>.&lt;/p>
&lt;p>&lt;strong>[UPDATED]&lt;/strong>: Hôm sau, tôi có tình cờ đọc một bài khác có cùng cách giải thích nhưng trình bày kỹ hơn về phần CPU - điều mà tôi thấy hơn khó hiểu ở bài trên. Tôi nghĩ tác giả đã viết tốt hơn. Bạn có thể đọc ở &lt;a class="link" href="https://anandadwirahma.medium.com/save-memory-in-golang-by-compose-struct-correctly-f649d1f457dd" target="_blank" rel="noopener"
>đây&lt;/a>.&lt;/p>
&lt;p>Khác với &lt;code>type&lt;/code> trong &lt;strong>TypeScript&lt;/strong> là thay đổi thứ tự khai báo các trường không ảnh hưởng tới perfomance.&lt;/p>
&lt;p>Ví dụ, &lt;code>FirstObject&lt;/code> và &lt;code>SecondObject&lt;/code> có các trường giống hệt nhau, chỉ thay đổi thứ tự và chúng không hề ảnh hưởng tới performance.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-typescript" data-lang="typescript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">type&lt;/span> &lt;span class="nx">FirstObject&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">age&lt;/span> &lt;span class="kt">number&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">passportNum&lt;/span> &lt;span class="kt">number&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">siblings&lt;/span> &lt;span class="kt">number&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">type&lt;/span> &lt;span class="nx">SecondObject&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">age&lt;/span> &lt;span class="kt">number&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">passportNum&lt;/span> &lt;span class="kt">number&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">siblings&lt;/span> &lt;span class="kt">number&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Trong &lt;strong>Go&lt;/strong>, khi sắp xếp lại thứ tự các trường trong &lt;code>struct&lt;/code>, bạn có thể cải thiện đáng kể tốc độ và mức sử dụng bộ nhớ của chương trình Go của mình.&lt;/p>
&lt;p>Trong ví dụ dưới, &lt;code>BadStruct&lt;/code> chiếm nhiều bộ nhớ hơn &lt;code>GoodStruct&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">type&lt;/span> &lt;span class="nx">BadStruct&lt;/span> &lt;span class="kd">struct&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">age&lt;/span> &lt;span class="kt">uint8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">passportNum&lt;/span> &lt;span class="kt">uint64&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">siblings&lt;/span> &lt;span class="kt">uint16&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">type&lt;/span> &lt;span class="nx">GoodStruct&lt;/span> &lt;span class="kd">struct&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">age&lt;/span> &lt;span class="kt">uint8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">siblings&lt;/span> &lt;span class="kt">uint16&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">passportNum&lt;/span> &lt;span class="kt">uint64&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Lời giải thích nằm trong cách máy tính điều chỉnh cấu trúc dữ liệu (&lt;strong>Data Structure Alignment&lt;/strong>).&lt;/p>
&lt;p>CPU đọc dữ liệu theo kích thước của một word. Trong hệ điều hành 64 bit thì 1 word tương ứng với 8 bytes,còn với hệ điều hành 32 bit thì 1 word tương ứng với 4 bytes.&lt;/p>
&lt;p>Từ đó, ta sẽ có hình ảnh mô tả việc bộ nhớ dùng cho &lt;code>BadStruct&lt;/code> ở hệ điều hành 64 bit như sau.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1644150028818/Au6VqV3yZ.png"
loading="lazy"
alt="1_CZcHPvsxBLAzcSJy3fVshg (1).png"
>&lt;/p>
&lt;p>Để truy cập biến &lt;code>passportNum&lt;/code>, CPU cần phải đọc 2 words. Để chạy hiệu quả hơn thì CPU cần tới data structure alignment. Biến &lt;code>passportNum&lt;/code> giờ nằm trên 1 word.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1644150465749/6-pYRvbJz.png"
loading="lazy"
alt="1_x4iN2ZOCdOHFPAtZsPRi5g.png"
>&lt;/p>
&lt;p>Bằng việc thay đổi thứ tự các trường, việc lưu trữ 13 bytes cần 16 bytes (2 words) thay vì 24 bytes (3 words).&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1644150619128/bLe5A6IWf.png"
loading="lazy"
alt="1_jgC5vTRNDpS-ndq2iiH-ig.png"
>&lt;/p></description></item><item><title>Checklist Mồng 1 Tết</title><link>https://japananh.github.io/blog/p/checklist-mong-1-tet/</link><pubDate>Fri, 04 Feb 2022 23:41:50 +0700</pubDate><guid>https://japananh.github.io/blog/p/checklist-mong-1-tet/</guid><description>&lt;img src="https://japananh.github.io/blog/p/checklist-mong-1-tet/cover.jpg" alt="Featured image of post Checklist Mồng 1 Tết" />&lt;p>Tết thích nhất là được làm những điều mình không có dịp làm trong năm vì thiếu ngủ hoặc quá bận tới bù đầu ra rồi bất đát dĩ phải lãng quên.&lt;/p>
&lt;p>Sau đây là checklist mồng 1 Tết của tôi:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Gọi điện chúc Tết hết những người có trong danh bạ điện thoại của tôi.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Chạy 3 km liên tục&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Sau gần 1 năm không cardio thì trải nghiệm chạy bộ trong thời tiết lạnh buốt thật là tuyệt. Cơ mông và đùi sau (hamstrings) vẫn còn ê do buổi tập trước nên lực bị dồn vào đầu gối và đùi trên (quads). Thi thoảng, tôi lại thích &amp;ldquo;hành xác&amp;rdquo; mình như thế. Thời tiết càng lạnh thì bạn nhớ khởi động kỹ để tránh chấn thương nhé.&lt;/p>
&lt;ul>
&lt;li>Lên xà 10 cái&lt;/li>
&lt;/ul>
&lt;p>Tôi quyết tâm không dùng band trợ lực nên lựa chọn dễ dàng hơn là tập động tác chin-ups thay vì pull-ups.&lt;/p>
&lt;ul>
&lt;li>Gập bụng 100 cái.&lt;/li>
&lt;/ul>
&lt;p>Tuần này, tôi bắt đầu cho một ít bài tập bụng vào trong chương trình luyện tập của mình để xem thành tích có cải thiện gì không. Vài tháng nữa tôi sẽ viết bài update quá trình luyện tập.&lt;/p>
&lt;ul>
&lt;li>Đi ngủ lúc 23 giờ.&lt;/li>
&lt;/ul>
&lt;p>Đi ngủ đúng giờ là thử thách khó khăn nhất trong năm ngoái. Đêm tới khi mọi thứ yên tĩnh là lúc nhiều ý tưởng lóe lên và tôi phải kiếm thứ gì đó để ghi lại khoảng khắc đấy nhanh nhất có thể. Rất nhiều bài viết được hoàn thành vào lúc 2 giờ sáng. Thật là tệ! Tôi vẫn đang cố gắng thích nghi với tiếng ồn nơi công sở và việc bị làm phiền một cách bất thình lình.&lt;/p></description></item><item><title>Where to learn Go?</title><link>https://japananh.github.io/blog/p/where-to-learn-go/</link><pubDate>Thu, 03 Feb 2022 21:49:28 +0700</pubDate><guid>https://japananh.github.io/blog/p/where-to-learn-go/</guid><description>&lt;img src="https://japananh.github.io/blog/p/where-to-learn-go/cover.jpg" alt="Featured image of post Where to learn Go?" />&lt;p>I started to learn Go last year. Go is one of the most popular programming languages and is the trend in recent years. Also, for a JavaScript-based developer like I, Go is considered an easier approach to learning a strong-typed language compared to C and Java.&lt;/p>
&lt;p>This article is about my thoughts on some resources that I used to learn Go. Hope it helps you.&lt;/p>
&lt;h2 id="go-tour-websites">Go tour websites&lt;/h2>
&lt;p>One of the best places to start is the official Go Tour website: &lt;a class="link" href="https://go.dev/tour" target="_blank" rel="noopener"
>https://go.dev/tour&lt;/a>. This is an interactive tutorial that you can use to learn Go by running your own code snippets on the website itself.&lt;/p>
&lt;p>The tour is divided into a set of modules each explaining a different concept with a couple of exercises at the end of each module.&lt;/p>
&lt;h2 id="effective-go">Effective Go&lt;/h2>
&lt;p>Effective Go is another official resource that is available for free from the official Go website &lt;a class="link" href="https://golang.org/doc/effective_go.html" target="_blank" rel="noopener"
>https://golang.org/doc/effective_go.html&lt;/a>. I found it really useful especially because is not just a syntax reference but a more complete description of all the major Go features and constructs and how to use them effectively.&lt;/p>
&lt;h2 id="go-by-example">Go by example&lt;/h2>
&lt;p>If you&amp;rsquo;re already understood the basics of the language, &lt;a class="link" href="https://gobyexample.com" target="_blank" rel="noopener"
>https://gobyexample.com&lt;/a> is another great website where can find a full code implementation.&lt;/p>
&lt;h2 id="200lab">200lab&lt;/h2>
&lt;p>&lt;a class="link" href="https://200lab.io/" target="_blank" rel="noopener"
>200lab&lt;/a> is created by &lt;a class="link" href="https://www.linkedin.com/in/viet-tran-b2b26aa6" target="_blank" rel="noopener"
>Viet Tran&lt;/a>, a solution architect and technical advisor in Vietnam.&lt;/p>
&lt;p>I learned &lt;a class="link" href="https://200lab.io/khoa-hoc/khoa-hoc-golang-food-delivery-backend" target="_blank" rel="noopener"
>Golang for scalable backend course&lt;/a>. I found the course is really helpful. They don&amp;rsquo;t teach you basic syntax where you can google it as Udemy courses, but great APIs architecture and other tricks to improve your backend performance.&lt;/p>
&lt;p>They also have a Q&amp;amp;A group where you can post your questions and get answers within a day.&lt;/p>
&lt;p>They don&amp;rsquo;t teach you how SQL and docker work or their syntax, so you have to google them.&lt;/p>
&lt;p>The only disadvantage is the content is in Vietnamese.&lt;/p>
&lt;h2 id="go101">Go101&lt;/h2>
&lt;p>If you&amp;rsquo;re preparing for a Go interview. Or you just want to broaden your knowledge. &lt;a class="link" href="https://go101.org/" target="_blank" rel="noopener"
>Go101&lt;/a> is definitely for you. They have quizzes, tricks, and great books. They also cover advanced topics such as Go optimizations.&lt;/p>
&lt;h2 id="goexercises">GoExercises&lt;/h2>
&lt;p>&lt;a class="link" href="https://gophercises.com/" target="_blank" rel="noopener"
>GoExercises&lt;/a> is another awesome website to practice Go concepts via mini-projects.&lt;/p></description></item><item><title>Một vài câu nói đáng suy ngẫm</title><link>https://japananh.github.io/blog/p/mot-vai-cau-noi-dang-suy-ngam/</link><pubDate>Mon, 31 Jan 2022 07:24:37 +0700</pubDate><guid>https://japananh.github.io/blog/p/mot-vai-cau-noi-dang-suy-ngam/</guid><description>&lt;img src="https://japananh.github.io/blog/p/mot-vai-cau-noi-dang-suy-ngam/cover.jpg" alt="Featured image of post Một vài câu nói đáng suy ngẫm" />&lt;p>Trích chương đầu cuốn Đừng bao giờ đi ăn một mình của Keith Ferrazzi.&lt;/p>
&lt;blockquote>
&lt;p>Sự nghèo khổ, theo tôi nhận thấy, không chỉ là do nguồn lực tài chính mà còn do chúng ta bị tách biệt khỏi những con người có thể giúp chúng ta phát huy hết khả năng của mình.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>Trích Alice lạc vào xứ sở thần tiên&lt;/p>
&lt;blockquote>
&lt;p>Làm ơn cho tôi biết tôi phải đi theo hướng nào?&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Cái đó tùy thuộc bạn muốn đi đâu nữa cơ. - Chú Mèo trả lời.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Tôi không cần biết nơi nào. - Alice nói.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Vậy thì bạn đi hướng nào cũng có khác gì đâu. - Chú Mèo trả lời.&lt;/p>
&lt;/blockquote>
&lt;p>Đoạn hội thoại này rút ra được hai kết luận.&lt;/p>
&lt;p>Một là nếu bạn không biết đi về đâu, mơ hồ về tương lai thì hãy cân nhắc các phương án và CHỌN ĐẠI ĐI.&lt;/p>
&lt;p>Hai là làm gì cũng phải có mục tiêu, đích đến. Càng hiểu rõ thì càng biết mình cần phải làm gì.&lt;/p>
&lt;hr>
&lt;p>Để không bị mất tập trung trong mỗi cuộc nói chuyện, phải biết rõ mình muốn gì.&lt;/p></description></item><item><title>Đầu năm nghe gì? - Phần 2: The Joe Rogan Experience</title><link>https://japananh.github.io/blog/p/dau-nam-nghe-gi-phan-2-the-joe-rogan-experience/</link><pubDate>Mon, 31 Jan 2022 07:02:32 +0700</pubDate><guid>https://japananh.github.io/blog/p/dau-nam-nghe-gi-phan-2-the-joe-rogan-experience/</guid><description>&lt;img src="https://japananh.github.io/blog/p/dau-nam-nghe-gi-phan-2-the-joe-rogan-experience/cover.jpg" alt="Featured image of post Đầu năm nghe gì? - Phần 2: The Joe Rogan Experience" />&lt;p>Tôi bắt đầu nghe podcast từ năm 2016 vào thời gian rảnh trên xe bus và lúc làm việc nhà như một thú vui giết thời gian. Không ngờ là sau nhiều năm nhìn lại, việc làm này lại đem tới thật nhiều ích lợi.&lt;/p>
&lt;p>Ngoài podcasts của hai nhân vật quen thuộc tôi hay nhắc tới là Nhà khoa học máy tính &lt;a class="link" href="https://lexfridman.com/podcast/" target="_blank" rel="noopener"
>Lex Fridman&lt;/a> và Nhà khoa học thần kinh &lt;a class="link" href="https://hubermanlab.com/" target="_blank" rel="noopener"
>Huberman&lt;/a> ra thì năm nay tôi đã thử một vài podcasts khác cũng rất thú vị. Sau đây, tôi xin chia sẻ nó cho các bạn. Hi vọng là chúng có ích với bạn.&lt;/p>
&lt;p>Các phần tôi đã viết:&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://nanacoder.hashnode.dev/dau-nam-nghe-gi-phan-1-nguyen-phi-vans-podcast" target="_blank" rel="noopener"
>Phần 1: Nguyễn Phi Vân&amp;rsquo;s Podcast&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Joe Rogan&lt;/strong> là một diễn viên hài, bình luận viên UFC và là host của &lt;a class="link" href="https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk" target="_blank" rel="noopener"
>The Joe Rogan Experience&lt;/a>, một trong những podcast có lượt xem nhiều nhất ở Mỹ.&lt;/p>
&lt;p>Dù rất thích Lex Fridman nhưng nghe giọng của anh ấy khá buồn ngủ nên tôi chỉ nghe lúc nào tôi không mệt. Joe Rogan thì lại khác, chú ấy có chất giọng siêu hay, truyền cảm hứng. Chưa kể body nhiều cơ, siêu ngầu luôn.&lt;/p>
&lt;p>Từ ca sỹ, diễn viên, cho tới nhà khoa học, doanh nhân có tầm ảnh hưởng nhất trong ngành như Jordan Petterson, Elson Mask đều có mặt ở show của Joe. Nội dung thì siêu hay với nhiều chủ đề: giải trí, khoa học, triết học, nghệ thuật, võ thuật &amp;hellip;&lt;/p>
&lt;p>Bạn sẽ thấy bất ngờ khi thấy sự đa tài của những vị khách mời. Hôm nay, tôi có nghe một đoạn cuộc thảo luận giữa Joe Rogan và Huấn luận viên võ thuật Firas Zahabi về &lt;a class="link" href="https://www.youtube.com/watch?v=gJHj4BtP9Go" target="_blank" rel="noopener"
>Scientific Truth and Philosophy&lt;/a> trên Youtube. Một huấn luận viên võ thuật có hiểu biết sâu về vật lý và triết học. Thật tuyệt vời! Bạn có thể toàn bộ cuộc nói chuyện ở &lt;a class="link" href="https://open.spotify.com/episode/0AZTuZ16pZyvwQcXl5F7Ee" target="_blank" rel="noopener"
>đây&lt;/a>.&lt;/p>
&lt;p>Bên cạnh đó, ai muốn học kỹ năng critical thinking từ nhiều người giỏi ở nhiều lĩnh vực khác nhau thì đây đúng là một show tuyệt vời. Giọng điệu của người nói, ngôn ngữ cơ thể và cách họ đưa ra luận điểm và phản bác lại luận điểm của đối phương.&lt;/p></description></item><item><title>How does Google search work?</title><link>https://japananh.github.io/blog/p/how-does-google-search-work/</link><pubDate>Mon, 31 Jan 2022 06:42:53 +0700</pubDate><guid>https://japananh.github.io/blog/p/how-does-google-search-work/</guid><description>&lt;img src="https://japananh.github.io/blog/p/how-does-google-search-work/cover.jpg" alt="Featured image of post How does Google search work?" />&lt;p>How does the Google search engine goes through the over 30 trillion web pages on the internet and find the top 10 results in just half a second, on average?&lt;/p>
&lt;p>Google doesn&amp;rsquo;t actually visit every page on the internet every time you ask it something. Google stores information about web pages in databases (table of information, like in Excel), and it uses algorithms that read those databases to decide what to show you.&lt;/p>
&lt;h2 id="crawl-all-web-pages">Crawl all web pages&lt;/h2>
&lt;p>Google&amp;rsquo;s algorithms build a database of every webpage on the internet. Google uses programs called spiders to &amp;ldquo;crawl&amp;rdquo; over web pages until it finds all of them. The spiders start on a few web pages and add those to Google&amp;rsquo;s list of pages, called &amp;ldquo;index&amp;rdquo;. Then, the spiders follow all the outgoing links on those pages and find a new set of pages, which they add to the index. Next, they follow all the links on those pages, and so on, until Google can&amp;rsquo;t find anything else.&lt;/p>
&lt;h2 id="word-search">Word search&lt;/h2>
&lt;p>If you search Google, it grabs your query (the text you typed into the search bar) and looks through its index to find the web pages that are most relevant.&lt;/p>
&lt;p>Google uses keyword density to show the most frequently used words on the current page, then find the page that had the most matches.&lt;/p>
&lt;h2 id="page-rank">Page rank&lt;/h2>
&lt;p>PageRank (PR) is an algorithm used by Google Search to rank web pages in their search engine results. It is named after both the term &amp;ldquo;web page&amp;rdquo; and co-founder Larry Page. According to Google:&lt;/p>
&lt;blockquote>
&lt;p>PageRank works by counting the number and quality of links to a page to determine a rough estimate of how important the website is. The underlying assumption is that more important websites are likely to receive more links from other websites.&lt;/p>
&lt;/blockquote>
&lt;p>For instance, at a party, you know someone is popular when they&amp;rsquo;re surrounded by other popular people. PageRank gives each web page a score that&amp;rsquo;s based on the PageRank scores of every other page that links to that page.&lt;/p>
&lt;h2 id="seo">SEO&lt;/h2>
&lt;p>SEO (Search engine optimization) is the process of improving the quality and quantity of website traffic to a website or a web page from search engines. The most basic form of SEO is getting more pages linked to your page. SEO also includes plenty more techniques, such as putting the right keywords in your page&amp;rsquo;s title and headings or making all of your site&amp;rsquo;s pages link to each other.&lt;/p>
&lt;h2 id="references">References&lt;/h2>
&lt;ul>
&lt;li>&lt;a class="link" href="" >Swipe to unlock&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Tăng cân cho người gầy</title><link>https://japananh.github.io/blog/p/tang-can-cho-nguoi-gay/</link><pubDate>Mon, 31 Jan 2022 06:06:39 +0700</pubDate><guid>https://japananh.github.io/blog/p/tang-can-cho-nguoi-gay/</guid><description>&lt;img src="https://japananh.github.io/blog/p/tang-can-cho-nguoi-gay/cover.jpg" alt="Featured image of post Tăng cân cho người gầy" />&lt;p>Tôi đã từng rất gầy, cố gắng ăn hết mọi thứ có thể nhưng người vẫn gầy và không tài nào tăng cân. Năm ngoái, tôi thử thay đổi chế độ ăn và thật bất ngờ là tôi tăng lên 8kg và giữ nguyên cân nặng cho tới bây giờ.&lt;/p>
&lt;p>Bài này viết về những biện pháp mà tôi đã dùng. Hi vọng chúng có ích với bạn.&lt;/p>
&lt;h2 id="calories-in--calories-out">Calories in &amp;gt; calories out&lt;/h2>
&lt;p>Muốn tăng cân thì bước đầu tiên bạn phải xác định lượng calos mình cần trong một ngày là bao nhiêu. Sau đó, tính toán lượng calories nạp vào thông qua thức ăn. Bắt buộc phải đảm bảo lượng vào phải lớn hơn lượng ra.&lt;/p>
&lt;h2 id="body-fat-quá-thấp">Body fat quá thấp&lt;/h2>
&lt;p>Nếu như bạn đã ăn cả thế giới mà vẫn thấy mình gầy thì có thể bạn cũng như tôi. Đã gầy nhưng lại sợ béo, cắt khá nhiều chất béo ra khỏi chế độ ăn, thành ra cơ thể thiếu chất béo. Dẫn tới không thể tăng cân dù đã ăn rất chuẩn với số liệu.&lt;/p>
&lt;p>Chưa kể 1 gram chất béo chứa 9 calos trong khi 1 gram protein hay carbs chỉ chứa có 4 calos. Tức là bạn phải ăn khối lượng thức ăn nhiều hơn. Và đấy là lý do tôi không thành công với tăng cân bằng chế độ high carbs.&lt;/p>
&lt;p>Mỡ cơ thể được chia làm ba loại: mỡ thiết yếu, mỡ dưới da và mỡ nội tạng.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Mỡ thiết yếu (essential fat) là chất béo mà chúng ta cần để tồn tại, cung cấp cho chúng ta lớp cách nhiệt, bảo vệ các cơ quan và cho phép chúng ta hấp thụ các vitamin quan trọng.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Mỡ dưới da (subcutaneous fat) là chất béo chúng ta thấy nằm ngay dưới da và là loại chất béo chúng ta đề cập đến khi nói về giảm béo.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Mỡ nội tạng (visceral fat) là loại loại chất béo mà chúng ta không thể nhìn thấy. Chất béo này bao quanh các cơ quan của chúng ta và được coi là loại chất béo nguy hiểm có thể gây ra nhiều vấn đề sức khỏe nếu có quá nhiều. Khi chúng ta giảm mỡ trong cơ thể, chúng ta đang mất cả mỡ dưới da và mỡ nội tạng.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Trên 32% chất béo cơ thể đối với phụ nữ và 25% chất béo cơ thể đối với đàn ông được phân loại là béo phì. Còn mức tối thiểu của nữ là 10-13%.&lt;/p>
&lt;p>Tỷ lệ chất béo cơ thể khỏe mạnh của phụ nữ dao động từ 25-31%, được coi là bình thường. Đối với nam giới, phạm vi này là 18-24%.&lt;/p>
&lt;h2 id="ăn-whole-foods">Ăn whole foods&lt;/h2>
&lt;p>Nếu cơ thể bạn chỉ cần calories, protein, fat và carbs việc ăn uống đã vô cùng đơn giản và tiện lợi. Bạn có thể cho bất kỳ thứ gì từ mỳ gói, đồ ăn nhanh, trà sữa, đồ chiên rán vào miệng. Miễn là đảm bảo đủ lượng calories. Tuy nhiên, đời không như là mơ. Bạn còn cần vitamins, chất xơ và một loạt những chất chống oxy hóa khác.&lt;/p>
&lt;p>Đấy là lý do chúng ta cần ăn &lt;strong>whole foods&lt;/strong> là các loại thực phẩm &lt;em>chưa qua chế biến hoặc chế biến 1 cách ít nhất có thể&lt;/em>. Nó bao gồm bột mỳ nguyên cám, gạo lứt, hoa quả, rau và thịt chế biến và ướp với gia vị tự nhiên.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643582880665/zHZh0Jmne.jpeg"
loading="lazy"
alt="whole_foods_vs_processed_pt1_opt.jpg"
>&lt;/p>
&lt;p>Lớp vỏ cám của gạo lứt chứa rất nhiều chất xơ và vitamins. Sẽ cần một thời gian để mọi người hiểu rằng ăn gạo lứt không phải là ăn kiêng. Tôi vẫn ăn gạo lứt để tăng tới 8kg cơ mà.&lt;/p>
&lt;p>Nếu bạn có vấn đề với sữa và đảm bảo đủ lượng protein mỗi ngày, hãy tránh xa whey protein (một trong những protein chính được tìm thấy trong các sản phẩm sữa). Còn nếu vì lý do nào đó bạn cần bổ sung protein có nguồn gốc thực vật, hãy kiểm tra kỹ thành phần xem có mỳ chính và các chất phụ gia có hại không.&lt;/p>
&lt;h2 id="tập-thể-dục">Tập thể dục&lt;/h2>
&lt;p>Nếu không tập thể dục, bạn sẽ tăng cân với cái bụng trông như bà bầu. Đặc biệt là khi bạn tăng lượng khá lớn cân nặng như tôi (8 kg). Phần lớn mọi người sẽ có tỷ lệ tích mỡ không đều nhau. Khi tôi tăng cân, trong vài tháng đầu, mỡ sẽ tập trung hết vào bụng, trong khi tay chân, mông thì kích thước không đổi. Khi tôi tập thể dục, cơ thể tôi cân bằng lại, mỡ bụng ít đi và cơ thể nở nang.&lt;/p>
&lt;p>Nếu bạn đang không biết tập từ đâu, tôi có viết một bài hướng dẫn lên bài tập ở &lt;a class="link" href="https://docs.google.com/document/d/1fn3UzLOJCwLTFjFmirKWbhOH7Vz8Bk6fUbI9vYlKfcE/" target="_blank" rel="noopener"
>đây&lt;/a>.&lt;/p>
&lt;p>Hai cuốn sách &lt;a class="link" href="https://glutelabbook.com/" target="_blank" rel="noopener"
>Glute lab&lt;/a> và &lt;a class="link" href="https://www.bretcontreras.store/products/strong-curves" target="_blank" rel="noopener"
>Strong Curves&lt;/a> của bác Bret Contreras đều là những cuốn sách gối đầu giường của tôi.&lt;/p>
&lt;p>Ngoài ra, tôi còn viết bài review những cuốn sách fitness tôi từng đọc ở &lt;a class="link" href="https://nanacoder.hashnode.dev/review-nhung-cuon-sach-fitness-toi-tung-doc" target="_blank" rel="noopener"
>đây&lt;/a>.&lt;/p>
&lt;h2 id="references">References&lt;/h2>
&lt;ul>
&lt;li>&lt;a class="link" href="https://www.performancelab.com/blogs/fat-loss/what-is-the-lowest-body-fat-percentage#:~:text=We%20also%20have%20something%20called,ever%20go%20below%20these%20percentages" target="_blank" rel="noopener"
>https://www.performancelab.com/blogs/fat-loss/what-is-the-lowest-body-fat-percentage#:~:text=We%20also%20have%20something%20called,ever%20go%20below%20these%20percentages&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Đầu năm nghe gì? - Phần 1: Nguyễn Phi Vân's Podcast</title><link>https://japananh.github.io/blog/p/dau-nam-nghe-gi-phan-1-nguyen-phi-van-s-podcast/</link><pubDate>Mon, 31 Jan 2022 03:32:03 +0700</pubDate><guid>https://japananh.github.io/blog/p/dau-nam-nghe-gi-phan-1-nguyen-phi-van-s-podcast/</guid><description>&lt;img src="https://japananh.github.io/blog/p/dau-nam-nghe-gi-phan-1-nguyen-phi-van-s-podcast/cover.jpg" alt="Featured image of post Đầu năm nghe gì? - Phần 1: Nguyễn Phi Vân's Podcast" />&lt;p>Tôi bắt đầu nghe podcast từ năm 2016 vào thời gian rảnh trên xe bus và lúc làm việc nhà như một thú vui giết thời gian. Không ngờ là sau nhiều năm nhìn lại, việc làm này lại đem tới thật nhiều ích lợi.&lt;/p>
&lt;p>Ngoài podcasts của hai nhân vật quen thuộc tôi hay nhắc tới là Nhà khoa học máy tính &lt;a class="link" href="https://lexfridman.com/podcast/" target="_blank" rel="noopener"
>Lex Fridman&lt;/a> và Nhà khoa học thần kinh &lt;a class="link" href="https://hubermanlab.com/" target="_blank" rel="noopener"
>Huberman&lt;/a> ra thì năm nay tôi đã thử một vài podcasts khác cũng rất thú vị. Sau đây, tôi xin chia sẻ nó cho các bạn. Hi vọng là chúng có ích với bạn.&lt;/p>
&lt;p>Nguyễn Phi Vân&amp;rsquo;s Podcast: &lt;a class="link" href="https://www.nguyenphivan.com/podcast" target="_blank" rel="noopener"
>https://www.nguyenphivan.com/podcast&lt;/a>&lt;/p>
&lt;p>Tôi thường không hứng thú lắm với nghe tiếng việt. Lý do là tôi muốn dành nhiều thời gian phát triển khả năng nghe tiếng anh nhiều hơn. Tuy nhiên, sau lần tình cờ một bài nói chuyện của cô Nguyễn Phi Vân thì tôi phải tìm bằng được podcast của cô để nghe cho bằng hết các lời khuyên nghề nghiệp.&lt;/p>
&lt;p>Mỗi tập đề cập tới một vấn đề khác nhau. Bạn không nhất thiết phải xem theo thứ tự. Cô Vân đưa ra những lời khuyên thiết thực, rõ ràng và cách giải thích khoa học, số liệu cũng có kèm dẫn chứng khiến tôi thấy tin tưởng. Nhờ đó, tôi đã tự mình xử lý một vài khó khăn trong công việc.&lt;/p>
&lt;p>Bên cạnh đó, trang web nguyenphivan.com còn có nhiều khóa học kỹ năng bổ ích cho những bạn độ tuổi đi làm. Bạn có thể tham gia học miễn phí ở &lt;a class="link" href="https://www.nguyenphivan.com/lnd-center" target="_blank" rel="noopener"
>đây&lt;/a>.&lt;/p>
&lt;p>Một điểm đáng chú ý nữa là trang phục, đầu tóc và khuôn mặt của cô. Bộ quần áo đen, lấy điểm nhấn là chiếc khăn lụa. Mái tóc đen, dài, đậm chất phụ nữ Việt Nam, cùng gương mặt trang điểm cực kỳ nhẹ nhàng. Thật là đơn giản và chuyên nghiệp.&lt;/p></description></item><item><title>Đầu năm đọc gì? - Phần 4: Đừng bao giờ đi ăn một mình</title><link>https://japananh.github.io/blog/p/dau-nam-doc-gi-phan-4-dung-bao-gio-di-an-mot-minh/</link><pubDate>Mon, 31 Jan 2022 02:47:22 +0700</pubDate><guid>https://japananh.github.io/blog/p/dau-nam-doc-gi-phan-4-dung-bao-gio-di-an-mot-minh/</guid><description>&lt;img src="https://japananh.github.io/blog/p/dau-nam-doc-gi-phan-4-dung-bao-gio-di-an-mot-minh/cover.jpg" alt="Featured image of post Đầu năm đọc gì? - Phần 4: Đừng bao giờ đi ăn một mình" />&lt;p>&lt;strong>Đầu năm đọc gì?&lt;/strong> là series nhỏ trong thử thách &lt;a class="link" href="https://nanacoder.hashnode.dev/series/100-days-of-challenge" target="_blank" rel="noopener"
>100 ngày viết lách&lt;/a> của tôi. Nội dung viết về những cuốn sách tôi đã đọc trong tháng đầu tiên của năm 2022. Đây là những phần tôi đã viết.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://nanacoder.hashnode.dev/dau-nam-doc-gi-phan-1-toi-ac-va-trung-phat" target="_blank" rel="noopener"
>Phần 1: Tội ác và trừng phạt&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://nanacoder.hashnode.dev/dau-nam-doc-gi-phan-2-swipe-to-unlock" target="_blank" rel="noopener"
>Phần 2: Swipe to unlock&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://nanacoder.hashnode.dev/dau-nam-doc-gi-phan-3-staff-engineers-path" target="_blank" rel="noopener"
>Phần 3: Staff Engineer&amp;rsquo;s Path&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Tôi tình cờ thấy cuốn &lt;a class="link" href="" >Đừng bao giờ đi ăn một mình&lt;/a> trên bàn làm việc của một đồng nghiệp. &amp;ldquo;Lại một cuốn sách self-help về giao tiếp.&amp;rdquo; - Tôi lưỡng lự vài giây rồi vì tò mò nên mở ra được lướt vài chương.&lt;/p>
&lt;p>Nội dung cuốn sách xoay quanh các lời khuyên để mở rộng mạng lưới quan hệ. Keiht Ferrazzi quả là một bậc thầy và những câu chuyện của ông chính xác là những thứ tôi cần vào thời điểm này.&lt;/p>
&lt;p>Mỗi chương sách đều kể những câu chuyện của tác giả và độc lập nhau nên bạn có thể nhảy cóc tới bất kỳ chương nào bạn quan tâm đọc trước. Áp dụng thử một lời khuyên, rồi lại đọc tiếp. Biết đâu chúng lại có ích với bạn.&lt;/p>
&lt;p>Một trong những đặc điểm tôi thích ở cuốn sách self-help là &amp;ldquo;mỳ ăn liền&amp;rdquo;. Có công thức sẵn và bạn sẽ đạt mục tiêu khi thực hành &lt;strong>MỘT CÁCH CHỌN LỌC&lt;/strong> theo chỉ dẫn. Nếu bạn đọc xong và không làm gì, cuốn sách này sẽ vô dụng với bạn.&lt;/p>
&lt;p>Hôm nay là ngày đi làm cuối cùng trong năm của tôi. Thật mừng khi mang được thứ gì có ích về nhà. À mà cuốn sách này có bìa đỏ đấy.&lt;/p></description></item><item><title>Đầu năm đọc gì? - Phần 1: Tội ác và trừng phạt</title><link>https://japananh.github.io/blog/p/dau-nam-doc-gi-phan-1-toi-ac-va-trung-phat/</link><pubDate>Mon, 31 Jan 2022 02:28:13 +0700</pubDate><guid>https://japananh.github.io/blog/p/dau-nam-doc-gi-phan-1-toi-ac-va-trung-phat/</guid><description>&lt;img src="https://japananh.github.io/blog/p/dau-nam-doc-gi-phan-1-toi-ac-va-trung-phat/cover.jpg" alt="Featured image of post Đầu năm đọc gì? - Phần 1: Tội ác và trừng phạt" />&lt;p>&lt;strong>Đầu năm đọc gì?&lt;/strong> là series nhỏ trong thử thách &lt;a class="link" href="https://nanacoder.hashnode.dev/series/100-days-of-challenge" target="_blank" rel="noopener"
>100 ngày viết lách&lt;/a> của tôi. Nội dung viết về những cuốn sách tôi đã đọc trong tháng đầu tiên của năm 2022.&lt;/p>
&lt;p>Năm nay, tôi sẽ chăm chỉ hơn để hoàn thành chỉ tiêu 25 cuốn. &lt;a class="link" href="https://www.goodreads.com/book/show/23288240-t-i-c-v-tr-ng-ph-t" target="_blank" rel="noopener"
>Tội ác và trừng phạt&lt;/a> của nhà văn Dostoevsky là cuốn khởi đầu.&lt;/p>
&lt;p>Ấn tượng của tôi về cuốn sách này không được tốt lắm. Tôi đã nghĩ mình sẽ đọc một cách thư thả. Nhưng cuộc sống luôn chứa nhiều ẩn số. Một ngày cuối tuần, tôi mở sách ra và bị cuốn theo anh bạn Rax cho tới hồi kết của truyện.&lt;/p>
&lt;p>Raxcolnicov vẫn rất cứng đầu, không hề nhận lỗi dù anh bạn có nhiều đấu tranh nội tâm. Tôi mừng là thấy được kết thúc có hậu khi trái tim anh bạn cuối cùng cũng tràn ngập yêu thương nhờ sự chăm sóc của Xonia. Cô em gái xinh đẹp, gan dạ Dunia lấy Razumikhin, cậu bạn thân nhiệt tình và tốt bụng của Raxcolnicov. Những tên xấu xa đều có kết cục đáng phải có.&lt;/p>
&lt;p>Nhiều chi tiết vẫn khiến tôi chưa lý giải được hành vi của nhân vật. Ví dụ, tại sao, sau phát đầu bắn trượt, súng còn đạn mà Dunia không bắn thêm phát vào giữa sọ Xvidrigailov, tên định cưỡng hiếp mình? Tại sao gã Xvidrigailov lại thả Dunia ra rồi sau đó tự tử trong khi lão đã đi một quãng đường dài, mưu tính để chiếm đoạt nàng?&lt;/p>
&lt;p>Tôi không chắc là mình thích cuốn sách này. Chỉ có duy nhất một điều tôi thấy là nội dung thật lôi cuốn. Bạn chỉ có thể hiểu chuyện gì xảy ra khi đọc liên tục từng trang, nhảy cóc sẽ khó đoán được chuyện gì đã, đang và sẽ xảy ra.&lt;/p></description></item><item><title>Đầu năm đọc gì? - Phần 2: Swipe to unlock</title><link>https://japananh.github.io/blog/p/dau-nam-doc-gi-phan-2-swipe-to-unlock/</link><pubDate>Mon, 31 Jan 2022 02:27:42 +0700</pubDate><guid>https://japananh.github.io/blog/p/dau-nam-doc-gi-phan-2-swipe-to-unlock/</guid><description>&lt;img src="https://japananh.github.io/blog/p/dau-nam-doc-gi-phan-2-swipe-to-unlock/cover.jpg" alt="Featured image of post Đầu năm đọc gì? - Phần 2: Swipe to unlock" />&lt;p>&lt;strong>Đầu năm đọc gì?&lt;/strong> là series nhỏ trong thử thách &lt;a class="link" href="https://nanacoder.hashnode.dev/series/100-days-of-challenge" target="_blank" rel="noopener"
>100 ngày viết lách&lt;/a> của tôi. Nội dung viết về những cuốn sách tôi đã đọc trong tháng đầu tiên của năm 2022. Đây là những phần tôi đã viết.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://nanacoder.hashnode.dev/dau-nam-doc-gi-phan-1-toi-ac-va-trung-phat" target="_blank" rel="noopener"
>Phần 1: Tội ác và trừng phạt&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://nanacoder.hashnode.dev/dau-nam-doc-gi-phan-2-swipe-to-unlock" target="_blank" rel="noopener"
>Phần 2: Swipe to unlock&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;a class="link" href="https://www.goodreads.com/book/show/43385933-swipe-to-unlock" target="_blank" rel="noopener"
>&lt;strong>Swipe to unlock&lt;/strong>&lt;/a> là cuốn sách công nghệ thú vị nhất mà tôi từng được đọc. Ba anh chàng PM (Project Manager) từ ba gã khổng lồ (Google, Microsoft và Apple) bắt tay nhau viết nên những câu chuyện công nghệ. Hầu như chương nào tôi cũng thích đọc và đều liên hệ thực tế tới công việc hiện tại của tôi.&lt;/p>
&lt;p>Tôi nhớ mình đã vật vã học môn Networking trong vài tháng nhưng vẫn lơ ngơ các khái niệm cơ bản như IP, domain, &amp;hellip; cho tới khi đọc chương 4 - &lt;strong>The Internet&lt;/strong>. Các tác giả giải thích cách các gói tin được truyền qua Internet thông qua việc kể câu chuyện vận chuyển tương ớt ở Mỹ.&lt;/p>
&lt;p>Một trong những chương tôi thích nhất là chương 5 - &lt;strong>Cloud computing&lt;/strong> (điện toán đám mây). Bằng việc kể câu chuyện giữa người thuê xe và người sở hữu xe rồi ví chúng như điện toán đám mây (cloud computing) và điện toán truyền thống (traditional computing), những khái niệm công nghệ đều trở nên dễ hiểu với một người non-tech.&lt;/p>
&lt;p>Ngoài ra, cuối sách có phần videos về PM mock interviews. Bạn nào có định hướng làm PM có thể tham khảo.&lt;/p>
&lt;p>Tôi vẫn còn đang đọc dở cuốn này. Hi vọng sẽ có thêm nhiều điều hay để chia sẻ với mọi người.&lt;/p></description></item><item><title>Đầu năm đọc gì? - Phần 3: Staff Engineer's Path</title><link>https://japananh.github.io/blog/p/dau-nam-doc-gi-phan-3-staff-engineer-s-path/</link><pubDate>Mon, 31 Jan 2022 02:27:14 +0700</pubDate><guid>https://japananh.github.io/blog/p/dau-nam-doc-gi-phan-3-staff-engineer-s-path/</guid><description>&lt;img src="https://japananh.github.io/blog/p/dau-nam-doc-gi-phan-3-staff-engineer-s-path/cover.jpg" alt="Featured image of post Đầu năm đọc gì? - Phần 3: Staff Engineer's Path" />&lt;p>&lt;strong>Đầu năm đọc gì?&lt;/strong> là series nhỏ trong thử thách &lt;a class="link" href="https://nanacoder.hashnode.dev/series/100-days-of-challenge" target="_blank" rel="noopener"
>100 ngày viết lách&lt;/a> của tôi. Nội dung viết về những cuốn sách tôi đã đọc trong tháng đầu tiên của năm 2022. Đây là những phần tôi đã viết.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://nanacoder.hashnode.dev/dau-nam-doc-gi-phan-1-toi-ac-va-trung-phat" target="_blank" rel="noopener"
>Phần 1: Tội ác và trừng phạt&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://nanacoder.hashnode.dev/dau-nam-doc-gi-phan-2-swipe-to-unlock" target="_blank" rel="noopener"
>Phần 2: Swipe to unlock&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Lúc đầu, tôi định đọc cuốn &lt;a class="link" href="https://staffeng.com/book" target="_blank" rel="noopener"
>Staff Engineer&lt;/a> của Will Larson. Nhưng sau đó, do tình cờ tìm thấy &lt;a class="link" href="https://www.oreilly.com/library/view/the-staff-engineers/9781098118723/" target="_blank" rel="noopener"
>Staff Engineer&amp;rsquo;s Path&lt;/a> trên trang của &lt;strong>Oreilly&lt;/strong> nên tôi đã đọc thử.&lt;/p>
&lt;p>Đây là cuốn sách dành cho những ai đang rất NGHIÊM TÚC với sự nghiệp của mình trong ngành công nghệ. Bạn muốn trở thành ai, lên vị trí nào? Nấc thang thăng tiến trong sự nghiệp của bạn sẽ như nào? Vai trò của từng vị trí trong tổ chức là gì? Những kỹ năng nào bạn nên có? &amp;hellip;&lt;/p>
&lt;p>Tôi nhớ mình đã rất rối bời trong năm đầu tiên đi làm. Tôi chả biết mình sẽ bắt đầu từ đâu và sẽ làm gì tiếp theo. Nếu có thể gửi lời nhắn nhủ gì tới bạn Na quá khứ thì CHẮC CHẮN tôi sẽ nhắn bạn ấy đọc cuốn này.&lt;/p>
&lt;p>Dưới đây là một chút tóm tắt của tôi về nấc thang sự nghiệp của bạn qua bài viết của &lt;a class="link" href="https://www.linkedin.com/in/eliweinstockherman/" target="_blank" rel="noopener"
>Eli Weinstock-Herman&lt;/a>. Bạn có thể đọc toàn bộ bài viết ở &lt;a class="link" href="http://www.tiernok.com/posts/evergreen/mi/defining-developer-career-ladders/#five-paths-for-senior-developers-not-one-" target="_blank" rel="noopener"
>đây&lt;/a>.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643569097073/vU8Azp0CI.png"
loading="lazy"
alt="ladder-research-02.png"
>&lt;/p>
&lt;p>Bạn sẽ bắt đầu từ vị trí &lt;strong>Entry level&lt;/strong> (Inter/Junior) với một ít kiến thức căn bản về khoa học máy tính.&lt;/p>
&lt;p>Lý tưởng là sau 6 - 12 tháng, bạn lên vị trí &lt;strong>Assosiate Level&lt;/strong> (Junior). Với một ít kinh nghiệm, bạn có thể xử lý được những task nhỏ dưới sự quản lý của cấp trên.&lt;/p>
&lt;p>Lên vị trí &lt;strong>Mid-Level&lt;/strong>, bạn có thể làm việc ĐỘC LẬP trên những tính năng/dự án nhỏ và vẫn chịu sự giám sát từ người quản lý. Bạn có hiểu biết sâu về những kiến thức lập trình và làm việc được trên nhiều domain khác nhau như database, apps, APIs, web frontend, &amp;hellip; ), kỹ năng test phần mềm, bảo mật và OO/functional/procedural. Bạn được tham gia vào quá trình thiết kế sản phẩm cùng với các senior developers. Bên cạnh đó, bạn có khả năng hướng dẫn những members yếu hơn trong team.&lt;/p>
&lt;p>Từ &lt;strong>Senior&lt;/strong> trở lên (Senior, Post-Senior Tracks #1 và Post-Senior Tracks #2) là vị trí mà developers nào cũng ao ước. Bạn làm việc và tự chủ trong công việc của mình. Bạn trở nên thành thạo nhiều kỹ năng liên quan và có thể hiểu được xu hướng của ngành. Bạn đóng vai trò vô cùng quan trọng trong tổ chức và là người tạo ra &amp;ldquo;luật&amp;rdquo;.&lt;/p>
&lt;p>Còn rất nhiều nội dung thú vị nữa mà tôi chưa thể kể hết trong bài. Hi vọng những điều tôi chia sẻ sẽ có ích với bạn.&lt;/p></description></item><item><title>Dọn nhà</title><link>https://japananh.github.io/blog/p/don-nha/</link><pubDate>Mon, 31 Jan 2022 00:26:31 +0700</pubDate><guid>https://japananh.github.io/blog/p/don-nha/</guid><description>&lt;img src="https://japananh.github.io/blog/p/don-nha/cover.jpg" alt="Featured image of post Dọn nhà" />&lt;p>Nhà tôi nhỏ nên có nhiều cái lợi. Việc dọn nhà diễn ra rất nhanh gọn. Hút bụi, lau nhà mất có 15 phút. Nhà ai có bé robot thì cứ để cho bé ấy chơi vui vẻ dưới sàn rồi mình chạy đi làm việc khác hấp dẫn hơn.&lt;/p>
&lt;p>Việc nhà thật là ám ảnh, vừa nhàm chán lại vừa tốn thời gian. Trong khi mình có thể để máy móc làm việc với độ chính xác cao hơn và tốc độ nhanh hơn. Chưa cái quần áo nào tôi giặt sạch sẽ, vắt khô và nhanh như máy giặt. Tôi thật mừng vì có nhiều người đam mê việc nhà. Để bù lại cho những đứa ỷ lại vào máy móc như tôi.&lt;/p>
&lt;p>Tôi có những món đồ kỷ niệm nhỏ xinh. Cái lọ đầy sao một người bạn gấp tặng tôi hồi cấp 2. Một chiếc gọt bút chì quà tặng dùng hơn 10 năm vẫn còn rất sắc bén. Và n món đồ khác. Mỗi năm, tôi đều dọn đi một vài món đồ không cần thiết. Có thế là một chiếc áo lâu không mặc tới hay một quyển sách lâu không đọc tới.&lt;/p>
&lt;p>Con người thường sợ mất mát. Có những món đồ ta chả dùng đâu nhưng dọn đi thì lại không nỡ. Ta cứ chần chữ mãi lỡ về sau lại cần. Sau đây là 3 quy tắc tôi áp dụng để khiến căn nhà trở nên không quá tải đồ.&lt;/p>
&lt;p>&lt;strong>Thứ nhất&lt;/strong>, chỉ mua những &lt;strong>hàng hóa thiết yếu&lt;/strong> (những thứ có mục đích rõ ràng, phục vụ nhu cầu thiết yếu). Một chiếc bàn phím cơ êm ái sẽ được coi là phục vụ nhu cầu thiết yếu nếu như công việc của bạn phải dùng tới bàn phím nhiều. Nhưng nếu mua chỉ để ngắm thì tôi sẽ coi đó là một sự phí phạm tài chính.&lt;/p>
&lt;p>&lt;strong>Thứ hai&lt;/strong>, một món vào, một món ra. Nếu tôi mua một cái áo thì phải có một cái áo trong tủ ra đi. Làm sao để đầu năm và cuối năm số mắc trong tủ bằng nhau là đẹp.&lt;/p>
&lt;p>&lt;strong>Thứ ba&lt;/strong>, những món đồ lâu không dùng đến (cỡ trên 1 năm) sẽ được xem xét dọn đi. Tôi có những cuốn sách cất tủ nhiều năm không đọc và cứ tiếc mãi không dọn đi. Tôi thử áp dụng quy tắc này trong cuốn &lt;a class="link" href="https://tiki.vn/loi-song-toi-gian-cua-nguoi-nhat-p576362.html" target="_blank" rel="noopener"
>Lối sống tối giản của người Nhật&lt;/a> là dọn đi những đồ lâu không dùng tới. Nếu cuốn sách đó thực sự quan trọng, tôi sẽ mua lại chúng. Thật bất ngờ là tôi thậm chí đã quên béng tên sách, chứ đừng nói là mua lại.&lt;/p>
&lt;p>Hôm nay, liệu bạn có đủ &amp;ldquo;dũng cảm&amp;rdquo; để dọn nhà?&lt;/p></description></item><item><title>Hàm init trong Go</title><link>https://japananh.github.io/blog/p/ham-init-trong-go/</link><pubDate>Mon, 24 Jan 2022 09:08:51 +0700</pubDate><guid>https://japananh.github.io/blog/p/ham-init-trong-go/</guid><description>&lt;img src="https://japananh.github.io/blog/p/ham-init-trong-go/cover.jpg" alt="Featured image of post Hàm init trong Go" />&lt;p>Bài này ghi lại những thứ tôi hiểu về hàm init trong Go.&lt;/p>
&lt;p>Khi tạo ứng dụng với ngôn ngữ Go, bạn cần khởi tạo biến cùng giá trị của chúng. Một trong những cách để làm điều này là khởi tạo chúng ở đầu hàm &lt;code>main()&lt;/code> hoặc khởi tạo chúng như biến global. Hàm &lt;code>init()&lt;/code> cho phép bạn chạy code trước hàm &lt;code>main()&lt;/code> và sau khi biến global được khởi tạo.&lt;/p>
&lt;h2 id="concepts">Concepts&lt;/h2>
&lt;p>Hàm &lt;code>init()&lt;/code> sẽ được gọi trước hàm &lt;code>main()&lt;/code> theo thứ tự như hình dưới.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1642044098355/G8Kuy4BXi.png"
loading="lazy"
alt="1_IXfNKuWDM_g1xijwpd254w.png"
>&lt;/p>
&lt;h2 id="requirements">Requirements&lt;/h2>
&lt;p>Để chạy được phần code demo, bạn cần cài &lt;a class="link" href="https://go.dev/doc/install" target="_blank" rel="noopener"
>Go&lt;/a> và &lt;a class="link" href="https://www.npmjs.com/package/nodemon" target="_blank" rel="noopener"
>nodemon&lt;/a>. Bạn có thể chọn bất kỳ editor nào. Tôi dùng &lt;a class="link" href="https://code.visualstudio.com/download" target="_blank" rel="noopener"
>Visual Studio Code&lt;/a>.&lt;/p>
&lt;h2 id="demo">Demo&lt;/h2>
&lt;ul>
&lt;li>Hàm &lt;code>init()&lt;/code> chỉ chạy một lần.&lt;/li>
&lt;li>Hàm &lt;code>init()&lt;/code> sẽ chạy sau khi biến global của package được khởi tạo và trước hàm &lt;code>main()&lt;/code>.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;run main&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">init&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;init package main&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;x =&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">x&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">var&lt;/span> &lt;span class="nx">x&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="c1">// biến global
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">nodemon --exec go run main.go --signal SIGTERM
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">init package main
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">run main
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Hàm &lt;code>init()&lt;/code> bên trong package sẽ chạy khi import package bất kể bạn có sử dụng package này hay không.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">_&lt;/span> &lt;span class="s">&amp;#34;learn/internal/collections&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;run main&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">collections&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">init&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;init package collections&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;run main in collections&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">init package collections
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">run main
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Nếu có nhiều hàm &lt;code>init()&lt;/code> trong một file thì thứ tự chạy &lt;code>init()&lt;/code> sẽ từ trên xuống dưới.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">init&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;run init 1&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">init&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;run init 2&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;run main&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">run init &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">run init &lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">run main
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Nếu có nhiều hàm &lt;code>init()&lt;/code> giữa các file trong một package, thứ tự chạy theo &lt;em>tên file tăng dần theo bảng chữ cái tiếng anh&lt;/em>.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">_&lt;/span> &lt;span class="s">&amp;#34;learn/pkg/collections&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">_&lt;/span> &lt;span class="s">&amp;#34;learn/pkg/rabbits&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">init&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;init package main&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;run main&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">collections&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">init&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;init package collections&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">rabbits&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">init&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;init package rabbits&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">init package collections
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">init package rabbits
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">init package main
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="nhược-điểm">Nhược điểm&lt;/h2>
&lt;p>Sau đây là một vài nhược điểm của việc dùng hàm &lt;code>init()&lt;/code>:&lt;/p>
&lt;ul>
&lt;li>Làm chậm thời gian khởi động của ứng dụng.&lt;/li>
&lt;li>Hàm &lt;code>init()&lt;/code> sẽ được gọi ngay khi bạn import package bất kể có cần hay không.&lt;/li>
&lt;li>Nếu hàm &lt;code>init()&lt;/code> sửa giá trị của biến global, nó sẽ không được gọi khi chạy test.&lt;/li>
&lt;/ul>
&lt;h2 id="tài-liệu-tham-khảo">Tài liệu tham khảo&lt;/h2>
&lt;ul>
&lt;li>&lt;a class="link" href="https://david-yappeter.medium.com/init-in-go-programming-31e2c2bc2371" target="_blank" rel="noopener"
>https://david-yappeter.medium.com/init-in-go-programming-31e2c2bc2371&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://go.dev/doc/effective_go#init" target="_blank" rel="noopener"
>https://go.dev/doc/effective_go#init&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>I'm feeling so bad</title><link>https://japananh.github.io/blog/p/i-m-feeling-so-bad/</link><pubDate>Sun, 23 Jan 2022 04:36:17 +0700</pubDate><guid>https://japananh.github.io/blog/p/i-m-feeling-so-bad/</guid><description>&lt;img src="https://japananh.github.io/blog/p/i-m-feeling-so-bad/cover.jpg" alt="Featured image of post I'm feeling so bad" />&lt;p>Tôi nghĩ rằng sẽ có rất nhiều lân trong đời bạn sẽ thốt lên câu &amp;ldquo;Tôi thấy thật tệ&amp;rdquo; (I&amp;rsquo;m feeling so bad). Tệ thường được gán cho cái mác &amp;ldquo;yếu đuối&amp;rdquo;, &amp;ldquo;kém cỏi&amp;rdquo;, &amp;ldquo;hèn&amp;rdquo;. Điều này là không đúng. Hầu hết cảm giác tệ tới từ sự bất ổn kéo dài trong cuộc sống làm cạn kiệt dopamine và nó là tín hiệu cho thấy bạn cần thay đổi.&lt;/p>
&lt;p>Não bộ không phân biệt được trải nghiệm thật hay giả về mặt cảm xúc. Chừng nào hình ảnh tiêu cực còn chạy vòng vòng trong đầu thì chừng đó thời gian bạn sẽ bị nó nuốt chửng. Lúc này, bạn cần kiếm một việc thật dễ, vui vẻ, lành mạnh, thực hiện nó để cho não bạn được nhảy số sang chủ đề khác.&lt;/p>
&lt;p>&lt;strong>Bước một&lt;/strong>, nếu bạn thích xem phim. Điều này chứng tỏ dopamine tăng nhanh khi bạn xem phim. Bạn nên có sẵn 1 list các danh sách các phim có nội dung vui vẻ, hài hước, tránh những phim nhiều cảm xúc tiêu cực. Vì trong lúc rối bời có thể bạn sẽ chọn nhầm một phim có nội dung tệ và nguy cơ thất vọng (tụt dopamine) cao.&lt;/p>
&lt;p>&lt;strong>Bước hai&lt;/strong>, sau khi bình tĩnh hơn, nhờ nạp dopamine từ việc xem phim, bạn nên ngồi xuống và trả lời những câu hỏi sau.&lt;/p>
&lt;blockquote>
&lt;p>Điều gì đã khiến tôi cảm thấy tệ?&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Chuyện này bắt đầu từ khi nào? Giọt nước nào đầu tiên rơi vào cái cốc?&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Tôi làm gì để cải thiện tình hình bây giờ?&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Làm sao để tôi ngăn điều này xảy ra vào lần tới?&lt;/p>
&lt;/blockquote>
&lt;p>Trả lời càng kỹ bao nhiêu thì lần sau khả năng tái lỗi của bạn sẽ thấp hơn hẳn. Với tôi, khi tôi đã phải dùng tới phim để tăng mood thì đấy là lúc tôi thấy TỆ NHẤT. Bạn có thể sẽ có câu trả lời khác với tôi.&lt;/p>
&lt;p>&lt;strong>Bước ba&lt;/strong>, thực hiện những gì bạn đã viết trong &lt;strong>tối thiểu 21 ngày liên tục&lt;/strong> để chúng trở thành thói quen, tự động đi vào tiềm thức. Thiếu bước này, những thứ bạn viết ra ở bước hai sẽ trở nên vô ích. Một số người xây dựng thói quen lâu hơn người khác và việc này có thể lên tới &lt;em>vài tháng cho tới ba năm&lt;/em>. Nếu bạn miss vài ngày, không sao cả. Bạn không phải là siêu nhân.&lt;/p>
&lt;p>Chúng ta thường nghĩ là năng lượng tiêu cực tới từ những người xung quanh. Nếu bạn nghĩ đồng nghiệp lười biếng khiến bạn lười biếng theo, bạn có thể thử đổi môi trường. Biết đâu bạn đúng. Nhưng hãy cẩn thận với chính mình.&lt;/p></description></item><item><title>Khách hàng "khó tính"</title><link>https://japananh.github.io/blog/p/khach-hang-kho-tinh/</link><pubDate>Sun, 23 Jan 2022 03:29:59 +0700</pubDate><guid>https://japananh.github.io/blog/p/khach-hang-kho-tinh/</guid><description>&lt;img src="https://japananh.github.io/blog/p/khach-hang-kho-tinh/cover.jpg" alt="Featured image of post Khách hàng "khó tính"" />&lt;p>Tôi có vài trải nghiệm về dịch vụ khách hàng ở Việt Nam và đa số đều khá tệ. Tôi nghĩ lý do chất lượng dịch vụ của chúng ta chưa được tốt là do phần đông chúng ta đều là khách hàng &amp;ldquo;dễ tính&amp;rdquo;.&lt;/p>
&lt;p>Nếu người ta làm tóc hỏng cho bạn, khả năng cao là bạn sẽ hậm hực ở nhà và lần sau đổi salon khác thay vì tới tận nơi và bắt người ta xử lý hậu quả. Hay nếu đi ăn mà có món ăn dở, bạn sẽ hậm hực trong lòng và thanh toán rồi lần sau tránh xa thay vì thanh toán đánh giá 1 sao.&lt;/p>
&lt;p>Tôi nghĩ tâm lý này đến từ hồi còn bé, người lớn dạy chúng ta phải&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Dĩ hòa vi quý. Một điều nhịn, chín điều lành&amp;rdquo;.&lt;/p>
&lt;/blockquote>
&lt;p>Lời khuyên này đúng đắn vì giúp bạn nghĩ kỹ càng trước khi lao vào cuộc tranh luận nảy lửa và lãng phí thời gian. Nhưng nó không hề đúng đắn trong trường hợp dịch vụ khách hàng và đôi khi là ở công sở hay gia đình.&lt;/p>
&lt;p>Nếu bạn không đánh giá 1 sao, người chủ nhà hàng họ sẽ không biết là nhân viên họ đã từng có lúc làm việc rất tệ hoặc dịch vụ/sản phẩm họ cung cấp đang có vấn đề. Toi biết là nhiều nhà hàng sẽ trừ lương nhân viên nếu khách hàng phàn nàn. Nhưng đây là điều nên làm để nâng cao trách nhiệm lao động.&lt;/p>
&lt;p>Nếu bạn im lặng khi công ty cắt thưởng của mình, bạn sẽ trở thành kẻ đồng lõa cho những con người bóc lột sức lao động. Bạn có thể hậm hực trong lòng vì mất tiền và tháng sau nghỉ việc. Nhưng nếu bạn lên tiếng, biết đâu những anh em khác sẽ hưởng ứng và khi nhiêu người cùng gây sức ép, có thể công ty sẽ xem xét lại quyết định của họ.&lt;/p>
&lt;p>Thế hệ gen Z của tôi có một sự phát triển về cả nhận thức lẫn trí tuệ và tôi lấy làm mừng vì hầu như những người tôi gặp đều coi nam nữ bình đẳng. Tuy nhiên, thế hệ cha ông chúng tôi thì lại không như vậy. Nếu bố bạn còn lên tiếng chửi bới hay coi mình là &amp;ldquo;chúa tể&amp;rdquo; trong nhà, bạn nên lên tiếng nói với ông về quyền bình đẳng và việc tôn trọng những người xung quanh. Tôi biết là việc này sẽ khó khăn và có thể bố bạn sẽ sốc và giận dữ. Nhưng thời gian sẽ chứng minh tất cả.&lt;/p>
&lt;p>Tôi tin rằng một chút &amp;ldquo;khó tính&amp;rdquo; sẽ là một gia vị đặc biệt cho cuộc sống. Biết đâu đấy, sự thay đổi của bạn tạo ảnh hưởng tích cực tới nhiều người.&lt;/p></description></item><item><title>Hôm nay bạn có ĐẸP không?</title><link>https://japananh.github.io/blog/p/hom-nay-ban-co-d%E1%BA%B9p-khong/</link><pubDate>Sun, 23 Jan 2022 02:59:49 +0700</pubDate><guid>https://japananh.github.io/blog/p/hom-nay-ban-co-d%E1%BA%B9p-khong/</guid><description>&lt;img src="https://japananh.github.io/blog/p/hom-nay-ban-co-d%E1%BA%B9p-khong/cover.jpg" alt="Featured image of post Hôm nay bạn có ĐẸP không?" />&lt;p>&amp;ldquo;Đẹp&amp;rdquo; trở thành một áp lực vô hình đè lên cuộc sống của chúng ta, bất kể bạn trẻ hay già, nam hay nữ. Khi những influencers trên mạng xã hội đều coi trang điểm như một chuẩn mực của cái đẹp thì cũng dễ hiểu khi mỹ phẩm trở nên quan trọng chả kém gì đồ ăn và nước uống. Tuy nhiên, đằng sau sự hào nhoáng đấy là những mặt tối mà chúng ta không hề biết.&lt;/p>
&lt;h2 id="mica">Mica&lt;/h2>
&lt;p>Lấp lánh (smikky) trở thành tiêu chuẩn của vẻ đẹp những năm trở lại đây và không lạ gì trong các sản phẩm trang điểm đều có mica, một loại khoáng chất silicat, được nghiền thành bột, tạo ra các màu sắc óng ánh tự nhiên trong nhiều sản phẩm làm đẹp&lt;/p>
&lt;p>Mica được thu mua từ Ấn Độ (đặc biệt là Jharkand và Bihar), dựa trên việc bóc lột sức lao động của trẻ em, có cả những em bé mới 5 tuổi. Chúng không có lựa chọn nào khác hoặc đào mica trong những hầm sâu dưới lòng đất hoặc là nhịn đói. Tất cả những đứa trẻ ấy đều thiếu ăn, gầy gò và không được đến trường.&lt;/p>
&lt;p>Những nhà hoạt động nhân quyền đã đứng lên phản đối và những công ty mỹ phẩm nhận ra họ phải có trách nhiệm trong việc truy vết nguồn nguyên liệu thô của mình. Nhiều công ty mỹ phẩm đã từ chối hợp tác với những công ty sử dụng lao động trẻ em hay tự sản xuất mica.&lt;/p>
&lt;p>Tôi nghĩ chúng ta nên quan tâm hơn tới thành phần của mỹ phẩm. Ít nhất bạn cũng phải biết đâu là thành phần chính làm nên công dụng của nó. Sau một sản phẩm là cả một quá trình, một câu chuyện và có thể là một mạng người.&lt;/p>
&lt;h2 id="chúng-ta-bị-thao-túng">Chúng ta bị thao túng&lt;/h2>
&lt;p>Khi trên mạng xã hội tràn ngập hình ảnh những chàng trai, cô gái với cùng một vẻ bề ngoài, bạn sẽ vô tình ngộ nhận đó là cái đẹp, là chuẩn mực, là hợp thời. Mỗi quốc gia sẽ có một định kiến riêng về cái đẹp. Ở Việt Nam, da trắng, cằm V-line, eo bé, chân thon sẽ được coi là chuẩn mực của cái đẹp. Cô người mẫu nào cũng gầy và cao. Ở Mỹ, có những cô người mẫu đồ lót tập tạ, cơ bắp.&lt;/p>
&lt;p>Sự mịn màng (smooth) của làn da tượng trưng cho sự hoàn hảo. Cho nên, chả lạ gì khi nhiều mỹ phẩm đều cố tình cho những thành phần tạo cảm giác mịn màng khi bạn sờ tay lên da như dimethicone. Vitamin C của hãng The Inkey List là một ví dụ. Tôi dùng sản phẩm này vì nó không phải để tủ lạnh và có nguy cơ oxi hóa nhanh như vitamin C của Timeless.&lt;/p>
&lt;p>Khi cái đẹp không còn là lựa chọn cá nhân mà bị thao túng vì lợi ích của vài nhóm người, chúng ta sẽ thấy thế giới và nhận thức của nhiều người bị bóp méo một cách khủng khiếp. Tôi không nghĩ mình có thể cảm thấy tích cực khi xem video miêu tả trước và sau trang điểm của một cô gái. Thật là buồn khi những nội dung khoa học, giúp cuộc sống tốt đẹp hơn chưa bao giờ thu hút được lượt view nhiều như những nội dung nhảm nhí kia.&lt;/p>
&lt;p>Thay vì cố gắng tạo một chuẩn mực &amp;ldquo;đẹp&amp;rdquo;, tôi nghĩ chúng ta nên học cách trân trọng về bề ngoài của chính mình.&lt;/p>
&lt;h2 id="phần-kết">Phần kết&lt;/h2>
&lt;p>Trước mỗi quyết định mua sắm của mình, tôi đều tự hỏi rằng liệu đây là điều mình THỰC SỰ MUỐN LÀM hay là bị ảnh hưởng bởi chuẩn mực của một ai đó khác. Khi nào bạn đọc lập về mặt tư tưởng thì bạn sẽ khó bị thao túng hơn. Trang điểm giúp bạn trở nên tươi tắn và đó nên là điều có ý nghĩa nhất. Ngoài ra, đằng sau một sản phẩm là một quá trình, một câu chuyện và có thể là một mạng người.&lt;/p>
&lt;h2 id="references">References&lt;/h2>
&lt;ul>
&lt;li>&lt;a class="link" href="https://www.youtube.com/watch?v=IeR-h9C2fgc" target="_blank" rel="noopener"
>https://www.youtube.com/watch?v=IeR-h9C2fgc&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Who has been an influence on you?</title><link>https://japananh.github.io/blog/p/who-has-been-an-influence-on-you/</link><pubDate>Sun, 23 Jan 2022 00:27:52 +0700</pubDate><guid>https://japananh.github.io/blog/p/who-has-been-an-influence-on-you/</guid><description>&lt;img src="https://japananh.github.io/blog/p/who-has-been-an-influence-on-you/cover.jpg" alt="Featured image of post Who has been an influence on you?" />&lt;p>We all have people who have changed our lives. People can change your life in a positive or negative way. Master Thich Nhat Hanh is my inspiration to live a better life.&lt;/p>
&lt;p>His drama talks and his mantras help me overcome my anger. I read this mantra many many times years ago until the anger was gone. If you&amp;rsquo;re dealing with your anger, I hope this helps.&lt;/p>
&lt;p>&lt;a class="link" href="https://langmai.org/cong-tam-quan/thong-bach/cao-pho-thien-su-thich-nhat-hanh-vien-tich/?fbclid=IwAR23iBZz9j5DBOESkZd0UV6hI_f1V3m0VfyGptOTKQRRX-Ctx8EdU-7qPDQ" target="_blank" rel="noopener"
>He left our beautiful world today&lt;/a>. His compassion and his wisdom are still our guides and shell never pass away. &amp;ldquo;I place my faith in Amida Buddha.&amp;rdquo;&lt;/p>
&lt;h2 id="anger-mantra">Anger Mantra&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Breathing in,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">I know that anger is here.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Breathing out,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">I know that the anger is not me.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Breathing in,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">I know that anger is unpleasant.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Breathing out,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">I know this feeling will pass.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Breathing in,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">I am calm.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Breathing out,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">I am strong enough to take care of this anger.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1642869848861/VkrI6wsYF.jpeg"
loading="lazy"
alt="49b6caa5e5704c24aa7aa502164fd9f3.jpg"
>&lt;/p></description></item><item><title>Ghi chú về cuốn Swipe To Unlock - Phần 1</title><link>https://japananh.github.io/blog/p/ghi-chu-ve-cuon-swipe-to-unlock-phan-1/</link><pubDate>Mon, 17 Jan 2022 01:25:23 +0700</pubDate><guid>https://japananh.github.io/blog/p/ghi-chu-ve-cuon-swipe-to-unlock-phan-1/</guid><description>&lt;img src="https://japananh.github.io/blog/p/ghi-chu-ve-cuon-swipe-to-unlock-phan-1/cover.jpg" alt="Featured image of post Ghi chú về cuốn Swipe To Unlock - Phần 1" />&lt;p>Tôi được giới thiệu cuốn Swipe To Unlock trong podcast &lt;a class="link" href="https://open.spotify.com/show/0rbO8LhEBKGx2nsZ8ABCxG" target="_blank" rel="noopener"
>Bốn chấm không&lt;/a>, một podcast truyền cảm hứng về công nghệ. Bằng việc trả lời các câu hỏi về chiến lược kinh doanh của thế giới công nghệ, ba anh chàng PM (Project Manager) tới từ ba gã khổng lồ Facebook, Google và Microsoft đã kể cho người đọc những câu chuyện kinh doanh thú vị.&lt;/p>
&lt;p>Nếu bạn chưa có thời gian nghe thử Bốn chấm không, tôi đã tóm tắt lại những lời khuyên từ các khách mời trong mỗi tập ở &lt;a class="link" href="https://nanacoder.hashnode.dev/bon-cham-khong" target="_blank" rel="noopener"
>đây&lt;/a>.&lt;/p>
&lt;p>Cuốn Swipe to unlock đã có bản tiếng việt, xuất bản tháng 9/2021. Bạn có thể tìm mua trên &lt;a class="link" href="https://tiki.vn/swipe-to-unlock-p130327841.html?spid=130327842" target="_blank" rel="noopener"
>Tiki&lt;/a>.&lt;/p>
&lt;h2 id="pre-installed-apps">Pre-installed Apps&lt;/h2>
&lt;p>Mỗi chiếc điện thoại mới mua đều có cài sẵn một số apps cài trước mà người dùng sẽ không thể xóa (pre-installed apps). Các công ty công nghệ (điển hình là Google) đã phải trả một khoản tiền không nhỏ để nhà sản xuất cài ứng dụng lõi của họ vào. Đó là lý do bạn mở một chiếc điện thoại Android lên và thấy đã cài sẵn nhiều Google&amp;rsquo;s apps như Google Chrome và Google Maps.&lt;/p>
&lt;p>Bên cạnh đó, Google cũng mất một khoản tiền không hề nhỏ trả cho Apple để đưa Google Maps trở thành ứng dụng tìm kiếm địa chỉ mặc định ở IOS.&lt;/p>
&lt;p>Dù rất vô dụng nhưng các apps cài trước chiếm dung lượng bộ nhớ của bạn và làm hao pin khi chúng chạy ngầm. Thi thoảng, chúng còn tự ý cài thêm nhiều ứng dụng vớ vẩn khác nữa.&lt;/p>
&lt;blockquote>
&lt;p>One reviewer found that 37 bloatware apps ate up 12GB of his 64GB of storage as soon as he opened the box.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Sometimes things get truly absurd, like when Verizon once pre-installed a bloatware app on Galaxy S7s that would download other bloatware apps without the user knowing.&lt;/p>
&lt;/blockquote>
&lt;p>Tôi từng dùng một chiếc Xiaomi Redmi 6 Pro. Máy được cài sẵn rất nhiều ứng dụng của xiami, tốn 1/2 dung lượng bộ nhớ và hơn một nửa số app của Xiaomi mà tôi không hề dùng tới. Điều này khiến tôi rất bực. Về sau, tôi đổi sang dùng LG velvet thì tôi xóa được hầu hết các ứng dụng không cần thiết.&lt;/p>
&lt;p>Bài học rút ra từ chương này là khi mua điện thoại phải chú ý cả pre-installed apps, điều mà hầu hết mấy kênh review điện thoại không nói.&lt;/p>
&lt;h2 id="targeting-ads">Targeting ads&lt;/h2>
&lt;blockquote>
&lt;p>If Google notices that you search for &amp;ldquo;guide for choosing a watch&amp;rdquo; or &amp;ldquo;cost of a cheap watch&amp;rdquo;, Google could infer that you&amp;rsquo;re shopping for a wristwatch.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Then they could show you ads for watches when you&amp;rsquo;re doing future searches.&lt;/p>
&lt;/blockquote>
&lt;p>Khi bạn search Google với từ khóa &amp;ldquo;đồng hồ giá rẻ&amp;rdquo;, bạn sẽ thấy sản phẩm đồng hồ sẽ được hiện thì nhiều hơn ở quảng cáo Facebook/Messenger. Họ đã dùng chiến thuật targeting ads để thu thập nội dung tìm kiếm của bạn rồi phân tích và cuối cùng xác định xem loại quảng cáo nào phù hợp với bạn. Lý do Facebook có được thông tin tìm kiếm của bạn là do Facebook đã trả cho Google một khoản tiền.&lt;/p>
&lt;p>&lt;a class="link" href="https://www.rd.com/article/truth-google-incognito-mode/" target="_blank" rel="noopener"
>Chuyển sang Google’s Incognito Mode&lt;/a> và không đăng nhạp vào Google account là một cách hạn chế những loại quảng cáo bạn không thích. Ví dụ, bạn search thông tin thẩm mỹ viện cho bạn gái và sau đó thì lướt web toàn quảng cáo phản cảm như độn mông, độn ngực,&amp;hellip;&lt;/p></description></item><item><title>Một mình</title><link>https://japananh.github.io/blog/p/mot-minh/</link><pubDate>Sun, 16 Jan 2022 23:21:38 +0700</pubDate><guid>https://japananh.github.io/blog/p/mot-minh/</guid><description>&lt;img src="https://japananh.github.io/blog/p/mot-minh/cover.jpg" alt="Featured image of post Một mình" />&lt;p>Một vài ghi chú đầu năm 2022, năm sau tôi sẽ nhìn lại để kiểm chứng những điều tôi đã tin có còn đúng hay không.&lt;/p>
&lt;p>Những người giúp đỡ tôi nhiều nhất và &lt;strong>HIỆU QUẢ NHẤT&lt;/strong> là những người cả năm tôi gặp may ra được một lần. Nhiều người tôi chưa gặp và chỉ biết họ qua Internet.&lt;/p>
&lt;p>Tôi chưa bao giờ thỏa mãn với bất kỳ cuộc nói chuyện nào mình tham gia và thường xuyên mất tập trung. Cường độ mất tập trung tỷ lệ thuận với số người trong nhóm và tỷ lệ nghịch với chất lượng của người nói.&lt;/p>
&lt;p>Những lúc năng suất nhất là lúc tôi &lt;strong>ở một mình và yên lặng&lt;/strong>.&lt;/p>
&lt;p>Tôi vẫn thấy mình cực kỳ mất tập trung và không thoải mái khi học offline, một chút khi học trực tuyến online và rất thoải mái khi học online một mình.&lt;/p>
&lt;p>Chia sẻ nỗi buồn chỉ giúp bản thân thoát ra khỏi sự tệ hại lúc đấy, như cốc cà phê khiến người thiếu ngủ tỉnh táo tức thì. Nhưng melatonine vẫn còn nguyên đó, tích tụ ngày này sang ngày khác, khiến não bộ mệt mỏi và chỉ khi đi ngủ, chúng mới được giải phóng. Nỗi buồn cũng như melatonin, chỉ có bạn mới làm chúng biến mất, người khác bó tay.&lt;/p></description></item><item><title>Tôi tập làm văn</title><link>https://japananh.github.io/blog/p/toi-tap-lam-van/</link><pubDate>Fri, 14 Jan 2022 05:04:15 +0700</pubDate><guid>https://japananh.github.io/blog/p/toi-tap-lam-van/</guid><description>&lt;img src="https://japananh.github.io/blog/p/toi-tap-lam-van/cover.jpg" alt="Featured image of post Tôi tập làm văn" />&lt;p>Vèo cái đã 2 tháng kể từ ngày tôi viết bài đầu tiên. Tôi không nghĩ là mình có thể viết được như vậy. Đặc biệt là những bài tiếng anh. Viết lách khiến tôi tự tin hơn và suy nghĩ mạch lạc hơn.&lt;/p>
&lt;p>Bài này tôi sẽ viết về cách tôi xử lý một ý tưởng mơ hồ và biến chúng thành nhiều chữ như nào.&lt;/p>
&lt;h2 id="bố-cục-bài-viết">Bố cục bài viết&lt;/h2>
&lt;p>Tất cả các bài viết của tôi dù là tiếng anh hay tiếng việt đều follow theo một structure nhất định gồm có 3 phần: mở bài, thân bài và kết bài. Đôi lúc, phần kết bài không cần thiết, có thể lược bỏ. Phần mở bài và thân bài thì luôn có.&lt;/p>
&lt;ul>
&lt;li>Phần 1: &lt;strong>Mở bài&lt;/strong> bao gồm 1 đến 3 đoạn ngắn nói về lý do viết bài và chủ đề của bài viết.&lt;/li>
&lt;li>Phần 2: &lt;strong>Thân bài&lt;/strong> luôn được chia thành các đầu mục lớn nhỏ&lt;/li>
&lt;li>Phần 3: &lt;strong>Kết bài&lt;/strong> bao gồm tài liệu tham khảo, kết luận hoặc một đoạn tái bút.&lt;/li>
&lt;/ul>
&lt;h2 id="phát-triển-ý-tưởng">Phát triển ý tưởng&lt;/h2>
&lt;p>Từ một ý tưởng ban đầu, có thể là một từ, một cụm từ hay một câu hoàn chỉnh, tôi sẽ gạch đầu dòng các ý chính.&lt;/p>
&lt;p>Ví dụ ở bài viết này, ý tưởng ban đầu là &lt;strong>Cách tôi viết một bài blog&lt;/strong>. Sau đó, tôi phát triển một dàn ý sau một hồi tẩy xóa như này.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Mở bài: xxx
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Thân bài:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Bố cục bài viết
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Phát triển ý tưởng
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Nguyên tắc viết của tôi
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">-&lt;/span> Garbage in - garbage out
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">-&lt;/span> Kỹ thuật viết từ cuốn sách dạy writing IELTS
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">-&lt;/span> Mọi số liệu, dẫn chứng phải có nguồn
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Kết bài: chắc không có =))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="nguyên-tắc-viết-của-tôi">Nguyên tắc viết của tôi&lt;/h2>
&lt;p>Tôi sẽ lấy đại một con số để bạn hình dung. Từ 20 bài bất kỳ tôi đọc, 5 ý tưởng được ra đời. Sau 1 hồi tẩy sửa gạch xóa trên giấy thì chỉ còn đúng 1 ý tưởng có thể viết thành bài.&lt;/p>
&lt;p>Chất lượng của bài viết ấy phụ thuộc vào chất lượng của 20 bài mà tôi đọc. Nếu tôi chỉ đọc những bài lá cải, thì bài viết của tôi sẽ không có giá trị. Đúng với quy luật &amp;ldquo;Garbage in - garbage out&amp;rdquo;.&lt;/p>
&lt;p>Tôi nghĩ bố cục bài viết của tôi ảnh hưởng nhiều từ &lt;strong>quy tắc 2552&lt;/strong> trong cuốn &lt;strong>7.5 writing guaranteed&lt;/strong> của tác giả &lt;strong>Kiên Trần&lt;/strong>. Nội dung của quy tắc 2552 nói rằng&lt;/p>
&lt;blockquote>
&lt;p>Đoạn essay nào cũng có 14 câu. Không hơn không kém&amp;hellip;&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>2552 nghĩa là&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>2 câu Intro&lt;/li>
&lt;li>5 câu cho Body 1&lt;/li>
&lt;li>5 câu cho Body 2&lt;/li>
&lt;li>2 câu cho Conclusion&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Tổng 14 câu.&lt;/p>
&lt;/blockquote>
&lt;p>5 câu cho phần body sẽ có chức năng như sau&lt;/p>
&lt;blockquote>
&lt;ol>
&lt;li>Topic sentence&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;ol start="2">
&lt;li>Supporting idea 1&lt;/li>
&lt;li>Example or cause-effect for Sentence 2&lt;/li>
&lt;li>Supporting idea 2&lt;/li>
&lt;li>Example or cause-effect for Sentence 4&lt;/li>
&lt;/ol>
&lt;p>Tôi cải tiến một chút vẫn giữ nguyên 3 phần vì tôi thấy bố cục như vậy rất hợp lý. Phần thân bài sẽ tách nhỏ thành các mục như kiểu Body 1 và Body 2. Thay vì giới hạn 5 câu cho mỗi body thì tôi giới hạn số câu trong một đoạn. Nghĩa là mỗi đoạn văn đều có từ 1 đến 4 câu và phải diễn đạt một ý tưởng nào đó.&lt;/p>
&lt;p>Nói thật là phải tới khi viết cái bài này thì tôi mới nhận ra được điểm chung về câu trong tất cả những bài trước của mình. Khi bạn viết càng nhiều thì mọi thứ diễn ra càng tự động.&lt;/p>
&lt;p>Tôi luôn dẫn nguồn trong tất cả bài viết có chứa quan điểm của người khác. Tôi nghĩ dẫn nguồn là một cách thể hiện mình tôn trọng tác giả, tôn trọng tri thức và bài viết của mình có uy tín hơn.&lt;/p>
&lt;p>Nhiêu tờ báo việt chưa chất lượng vì họ chưa dẫn nguồn cho những bài họ viết. Rất nhiều bài viết về sức khỏe, có dẫn số liệu nói rằng ăn X giúp cải thiện Y tới ZZZ lần nhưng chỉ ghi &amp;ldquo;Nguồn: Internet&amp;rdquo; hoặc &amp;ldquo;Theo báo XXX&amp;rdquo;. Không hề có đường link nào dẫn tới nguồn đáng tin cậy.&lt;/p>
&lt;p>Chúng ta cần có những bài viết chất lượng hơn. Đồng thời, bản thân độc giả cũng nên thay đổi. Hãy &amp;ldquo;khó tính&amp;rdquo; lên, nghi ngờ đi, đừng vội tin vào những thứ không rõ nguồn gốc. Kể cả khi có nguồn. Nếu được hãy kiểm tra cả độ chính xác của nguồn đó. Ai là tác giả? Độ uy tín của tác giả như nào?&lt;/p></description></item><item><title>Để không là “kẻ ngốc” nơi công sở</title><link>https://japananh.github.io/blog/p/de-khong-la-ke-ngoc-noi-cong-so/</link><pubDate>Fri, 14 Jan 2022 03:54:52 +0700</pubDate><guid>https://japananh.github.io/blog/p/de-khong-la-ke-ngoc-noi-cong-so/</guid><description>&lt;img src="https://japananh.github.io/blog/p/de-khong-la-ke-ngoc-noi-cong-so/cover.jpg" alt="Featured image of post Để không là “kẻ ngốc” nơi công sở" />&lt;p>Những năm đầu đi làm bên cạnh những khó khăn về lỗ hổng kiến thức còn có khó khăn về giao tiếp. Tôi nghĩ mình đã mắc phải XXX cái sự cố trước khi có được một chút &amp;ldquo;vững vàng&amp;rdquo; ngày hôm nay.&lt;/p>
&lt;p>Bài này tôi sẽ viết về những cách để không là &amp;ldquo;kẻ ngốc&amp;rdquo; nơi công sở (How not to be a jerk at work?).&lt;/p>
&lt;h2 id="do-your-job">Do your job&lt;/h2>
&lt;p>Thật kỳ lạ khi có những đồng nghiệp được trả lương và &amp;ldquo;chả làm gì cả&amp;rdquo;. Họ tán gẫu, lướt mạng xã hội, rong chơi trên internet và để bạn một mình ôm hết mọi thứ. Làm sao họ tiếp tục công việc trong cái ngành chỉ cần ngồi nghỉ chút thôi là có nguy cơ &amp;ldquo;lạc hậu&amp;rdquo;? Tôi cũng không thể giải thích nổi.&lt;/p>
&lt;p>Tôi có thể chọn sống giống như họ vì họ vẫn được trả lương và sống đó thôi. Hay tôi chọn sống có trách nhiệm hơn, làm công việc của mình và sẵn sàng giúp đồng nghiệp khi cần? Điều này phụ thuộc vào nhâm phẩm.&lt;/p>
&lt;h2 id="dont-gossip">Don’t gossip&lt;/h2>
&lt;p>Có một câu mà tôi rất thích là&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Nếu bạn không nói được lời nào tử tế thì tốt hơn hết là đừng nói gì.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&amp;ldquo;If you can’t say anything nice, don’t say anything at all.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Ở một nơi mà phần lớn thời gian, bạn và đồng nghiệp cần tập trung giải quyết bài toán liên quan tới máy tính thì &lt;strong>giữ trật tự là phép lịch sự tối thiểu&lt;/strong> cần phải có.&lt;/p>
&lt;p>Để điện thoại ở chế độ im lặng, ra chỗ khác nghe điện thoại hay thảo luận nhỏ tiếng đều là những hành vi nên làm.&lt;/p>
&lt;p>Đặc biệt là &lt;strong>hạn chế nói chuyện phiếm&lt;/strong>. (Don&amp;rsquo;t gossip!) Tôi nhớ mình đã vừa làm việc vừa phải nghe chuyện drama suốt vài tiếng đồng hồ. Rồi tôi đã sắm cho mình cái tai nghe, đeo suốt cả buổi, bật nhạc không lời to chút để át tiếng ồn.&lt;/p>
&lt;h2 id="clean-up-your-own-mess">Clean up your own mess&lt;/h2>
&lt;p>Bạn có thể vứt đồ bừa bãi khi ở nhà. Đó là không gian riêng của bạn, vương quốc của bạn. Nhưng nếu đó là ở nơi công cộng và đặc biệt là ở công sở. Tuyệt đối không.&lt;/p>
&lt;p>Nếu công ty không có người dọn rác hoặc không có người rửa cốc, trước khi về bạn nên vứt rác trên bàn và rửa cốc đi. Đừng biến góc làm việc thành bãi rác.&lt;/p>
&lt;p>Trong công việc, hãy làm một cách tử tế. Là người thì ai cũng đều mắc lỗi và bugs là chuyện rất bình thường. Tuy nhiên, mắc đi mắc lại một cái lỗi nhiều lần giống như ngày qua ngày bạn không &amp;ldquo;dọn rác&amp;rdquo; cho cái đầu. Sớm muộn gì nó cũng &amp;ldquo;bốc mùi&amp;rdquo; đấy.&lt;/p>
&lt;h2 id="dont-complain-about-little-things">Don&amp;rsquo;t complain about little things&lt;/h2>
&lt;p>Tôi có tật xấu là hay phàn nàn và hay cáu. Có một thời gian, tôi không hiểu tại sao mọi người xa tôi dần. Mãi sau này tôi mới biết là do mình hay than.&lt;/p>
&lt;p>Than vãn không giúp giải quyết vấn đề. Nó chỉ khiến bạn lo lắng thêm và dễ nổi cáu hơn. Khi cảm xúc lên quá mạnh, não bạn sẽ bị bủa vây bởi ảo ảnh và phán đoán sai. Điều này không tốt trong bất kỳ tình huống nào.&lt;/p>
&lt;p>Với tôi, lời khuyên bình tĩnh trong trường hợp cảm xúc lên quá mạnh là vô dụng. Thay vào đó, hít sâu, thở sâu hay nếu có thể đi dạo thì có hiệu quả hơn. Bên cạnh đó, nếu bạn lỡ có thói xấu này thì thiền và đọc giúp ích rất nhiều.&lt;/p></description></item><item><title>Review những cuốn sách fitness tôi từng đọc</title><link>https://japananh.github.io/blog/p/review-nhung-cuon-sach-fitness-toi-tung-doc/</link><pubDate>Fri, 14 Jan 2022 03:02:49 +0700</pubDate><guid>https://japananh.github.io/blog/p/review-nhung-cuon-sach-fitness-toi-tung-doc/</guid><description>&lt;img src="https://japananh.github.io/blog/p/review-nhung-cuon-sach-fitness-toi-tung-doc/cover.jpg" alt="Featured image of post Review những cuốn sách fitness tôi từng đọc" />&lt;p>Tôi từng gặp nhiều PT (personal trainer) dở. Khi biết cách các trung tâm đào tạo họ cũng chưa ổn và mức phí thì khá cao (500 - vài triệu/giờ) thì tôi đã từ bỏ ý định thuê PT của mình.&lt;/p>
&lt;p>Hầu hết họ đều không được dạy một cách tử tế về dĩnh dưỡng và giải phẫu. Thậm chí, họ còn khá lười và coi thường cơ thể của khác hàng. Tôi chứng kiến một cô bé văn phòng người gầy yếu lại còn bị vẹo cột sống mà anh chàng PT vẫn bắt squat và tập mấy bài dễ tổn thương cột sống.&lt;/p>
&lt;p>Tôi bắt đầu bằng việc google tên các huấn luận viên giỏi, rồi tìm đọc những cuốn sách họ đã xuất bản. Tất cả những cuốn sách fitness tôi đọc đều bằng tiếng anh. Điều đó không có nghĩa là sách tiếng việt không có cuốn nào chất lượng, chỉ là tôi chưa tìm được cuốn nào mà thôi.&lt;/p>
&lt;p>Sau đây là review của tôi về tất cả những cuốn tôi đã từng đọc xếp theo thứ tự cực thích tới chán òm.&lt;/p>
&lt;h2 id="những-cuốn-hay-nhất">Những cuốn hay nhất&lt;/h2>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1642098643316/ehfK5zK5S.png"
loading="lazy"
alt="Screenshot from 2022-01-14 01-30-22.png"
>&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.goodreads.com/book/show/50794275-glute-lab" target="_blank" rel="noopener"
>https://www.goodreads.com/book/show/50794275-glute-lab&lt;/a>&lt;/p>
&lt;p>Tôi không nhớ đã tìm ra cái tên Bret Contreras từ đâu. Đây là người đã khiến tôi tập mông hăng say. Tôi đã đọc lại cuốn này không dưới 7 lần. Ngâm cứu từng chương một và thiết kế thử bài tập. Bạn có thể thấy cuốn này quan trọng và có ích với tôi như nào rồi đó.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1642098721727/GuGDz8SEU.png"
loading="lazy"
alt="Screenshot from 2022-01-14 01-31-42.png"
>&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.goodreads.com/book/show/13588186-strong-curves" target="_blank" rel="noopener"
>https://www.goodreads.com/book/show/13588186-strong-curves&lt;/a>&lt;/p>
&lt;p>Bác Bret viết cuốn này cách cuốn Glute lab cỡ 10 năm nhưng cuốn này hay chả kém gì cuốn Glute lab. Điểm nhấn của cuốn này là hướng dẫn tập toàn thân thay vì chỉ tập trung mỗi mông như Glute lab.&lt;/p>
&lt;p>Điều tạo nên sự khác biệt trong sách của bác Bret so với tác giả khác là giải thích cơ chế hoạt động và cách tự tạo bài tập cho riêng mình. Không phải là cho bạn sẵn một cái lịch tập rồi bảo bạn tập đi.&lt;/p>
&lt;p>Tôi cảm thấy như mình là người làm chủ và cái giá phải trả ban đầu là tốn tiền mua sách và phải hút hết tinh hoa của chúng.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1642099698876/dWkP07DRI.png"
loading="lazy"
alt="Screenshot from 2022-01-14 01-48-04.png"
>&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.goodreads.com/book/show/15746753-starting-strength" target="_blank" rel="noopener"
>https://www.goodreads.com/book/show/15746753-starting-strength&lt;/a>&lt;/p>
&lt;p>Mark Rippetoe là một huấn luận viên powerlifting nổi tiếng của Mỹ. Tất cả những kỹ thuật của 3 động tác chính là Squat, Deadlifts, và Bench press tôi đều học từ cuốn này và các video hướng dẫn kỹ thuật trên &lt;a class="link" href="https://www.youtube.com/c/AasgaardCoStartingStrength" target="_blank" rel="noopener"
>kênh Youtube&lt;/a> của bác Mark Rippetoe. Từ khoảng cách hai chân, cách cầm nắm cho tới cách hít thở đều viết rất chi tiết và dễ hiểu.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1642103634395/gkTV-j6b9.png"
loading="lazy"
alt="Screenshot from 2022-01-14 02-53-40.png"
>&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.goodreads.com/book/show/1677880.Practical_Programming_for_Strength_Training" target="_blank" rel="noopener"
>https://www.goodreads.com/book/show/1677880.Practical_Programming_for_Strength_Training&lt;/a>&lt;/p>
&lt;p>Đây là một cuốn sách viết về cách chia lịch tập và phương pháp tập cho powerlifters. Bạn sẽ chọn được chính xác mức tạ dựa vào công thức trong sách. Tôi không rõ nữ có tập được giáo trình này không và tôi cũng chưa có nhu cầu thử vì tôi không phải powerlifters. Nội dung sách cũng hơi nâng cao so với những gì tôi biết nên tôi đánh giá sách tốt và chắc chắn sẽ giới thiệu cho các bạn nam đọc.&lt;/p>
&lt;h2 id="những-cuốn-tạm-ổn">Những cuốn tạm ổn&lt;/h2>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1642100862970/QGBkwxQ6m.png"
loading="lazy"
alt="Screenshot from 2022-01-14 02-07-25.png"
>&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.goodreads.com/book/show/22716449-cassey-ho-s-hot-body-year-round" target="_blank" rel="noopener"
>https://www.goodreads.com/book/show/22716449-cassey-ho-s-hot-body-year-round&lt;/a>&lt;/p>
&lt;p>Hầu hết các bài thể dục đều có 3 phần: khởi động (warm-up), bài chính, và dãn cơ (cool-down). Cuốn sách này chỉ tất cả các động tác dãn cơ từ đầu tới chân, cách thực hiện chúng đúng kỹ thuật và giải thích các nhóm cơ mà từng động tác nhắm vào. Một cuốn sách hữu ích và có hình ảnh chi tiết.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1642100962989/gMovUhroX.png"
loading="lazy"
alt="Screenshot from 2022-01-14 02-08-42.png"
>&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.goodreads.com/book/show/8473828-running-anatomy" target="_blank" rel="noopener"
>https://www.goodreads.com/book/show/8473828-running-anatomy&lt;/a>&lt;/p>
&lt;p>Đọc sang tới cuốn thứ 3 có từ cuối là &amp;ldquo;Anatomy&amp;rdquo; thì tôi mới hiểu là đa số các cuốn có từ này đều chỉ toàn hình và hình. Có một dạo tôi cũng ham hố chạy marathon nên kiếm cuốn này đọc thử. Về sau, tôi thấy bản thân không hợp những môn thể thao ngoài trời phụ thuộc vào thời tiết khá nhiều vì tôi không thích việc nghỉ tập do trời mưa.&lt;/p>
&lt;p>Ích lợi duy nhất của cuốn này là bổ sung vào kho tàng tri thức của tôi vốn hiểu biết về chạy bộ. Dù tôi cũng quên gần hết nội dung rồi. =)) Khi chạy, toàn bộ cơ thể tham gia vào quá trình chuyển động, chỉ cần một bộ phận bất ổn thì chạy có vấn đề. Đau đầu gối có thể tới từ việc cơ mông nhỡ và cơ mông nhỏ yếu, không đủ sức giữ thăng bằng cho cơ thể lúc chạy khiến đầu gối bị quá tải. Dù bạn chơi môn gì thì đừng nên bỏ qua nhóm cơ lớn như mông nhé.&lt;/p>
&lt;h2 id="những-cuốn-có-hình-vẽ-đẹp">Những cuốn có hình vẽ đẹp&lt;/h2>
&lt;p>Đây là những cuốn sách &amp;ldquo;gỗ xấu nhưng tốt nước sơn&amp;rdquo;, hình vẽ bên trong sách nhưng phần nội dung thì chán và dễ dàng google ra. Nếu đây là một cuốn sách về hội họa thì có lẽ tôi sẽ đánh giá 4 sao.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1642100038342/deklOacnt.png"
loading="lazy"
alt="Screenshot from 2022-01-14 01-53-45.png"
>&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.goodreads.com/book/show/22716449-cassey-ho-s-hot-body-year-round" target="_blank" rel="noopener"
>https://www.goodreads.com/book/show/22716449-cassey-ho-s-hot-body-year-round&lt;/a>&lt;/p>
&lt;p>Cassey Ho là thần tượng suốt những năm tháng cấp 3 và lên đại học của tôi. Cho tới một ngày tôi nhận ra cái tượng nào rồi cũng phải &amp;ldquo;đổ sập&amp;rdquo; theo năm tháng.&lt;/p>
&lt;p>Đây là cuốn sách giấy đầu tiên mua từ Anh của tôi. Chất lượng sách tốt và hình vẽ siêu đẹp, cắt ra trang trí nhà cửa thì lung linh. 2 sao cho hình ảnh và chất lượng sách. 1 sao cho phần công thức món ăn. 0 sao cho phần bài tập.&lt;/p>
&lt;p>Tất cả những bài tập theo hướng không dùng tạ đều khiến cơ bắp phát triển ít và chỉ cải thiện sự dẻo dai và linh hoạt cho cơ thể. Tác dụng chống nhăn nheo, chảy xệ, hay làm cơ thể nở nang gần như bằng 0. Bạn cũng có thể thấy chị này tập cả chục năm mà mông vẫn bé. Trong khi ở lò đào tạo &amp;ldquo;quái vật&amp;rdquo; của bác Bret Contreras, chỉ 2 năm đã biến một cô mông lép thành mông siêu bự. Dù sao thì vẫn có người sẽ đổ lỗi cho gen.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1642099800725/g5t59ZeYd.png"
loading="lazy"
alt="Screenshot from 2022-01-14 01-49-44.png"
>&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.goodreads.com/book/show/22111623-delavier-s-women-s-strength-training-anatomy-workouts" target="_blank" rel="noopener"
>https://www.goodreads.com/book/show/22111623-delavier-s-women-s-strength-training-anatomy-workouts&lt;/a>&lt;/p>
&lt;p>Với sự hiểu biết của mình về cơ thể người và tài năng thiên phú về nghệ thuật, người họa sỹ Frédéric Delavier đã vẽ ra một cuốn sách tỉ mỉ từng chi tiết. Tôi đã thích hình ảnh cuốn này tới mức dành 2 sao cho hình vẽ và 0 sao cho nội dung.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1642101980984/pC_rJOp1N.png"
loading="lazy"
alt="Screenshot from 2022-01-14 02-26-06.png"
>&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.goodreads.com/book/show/12793492-delavier-s-core-training-anatomy" target="_blank" rel="noopener"
>https://www.goodreads.com/book/show/12793492-delavier-s-core-training-anatomy&lt;/a>&lt;/p>
&lt;p>Lại là một cuốn có đuôi &amp;ldquo;Anatomy&amp;rdquo; và của tác giả Delavier. Tôi đã rút kinh nghiệm là cứ thấy cuốn nào có chữ này là kiểu gì cũng nên né. 2 sao cho hình đẹp và 0 sao cho nội dung.&lt;/p>
&lt;h2 id="những-cuốn-dở-nhất">Những cuốn dở nhất&lt;/h2>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1642101631564/RVxRtnjrR.png"
loading="lazy"
alt="Screenshot from 2022-01-14 02-20-16.png"
>&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.goodreads.com/book/show/11115311-which-comes-first-cardio-or-weights" target="_blank" rel="noopener"
>https://www.goodreads.com/book/show/11115311-which-comes-first-cardio-or-weights&lt;/a>&lt;/p>
&lt;p>Một cuốn sách được nhiều trang tung hô và lời giới thiệu có cánh trên goodreads. Kiến thức thì cơ bản, google cái là ra. Các nghiên cứu được dẫn ra đã cũ và có khả năng outdated cao (~20 năm trước). Cuốn sách này sẽ có giá trị với người không biết gì. Còn với tôi thì không.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1642103457367/O8CVaIpUi.png"
loading="lazy"
alt="Screenshot from 2022-01-14 02-50-44.png"
>&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.goodreads.com/book/show/17856078-the-core-training-bible" target="_blank" rel="noopener"
>https://www.goodreads.com/book/show/17856078-the-core-training-bible&lt;/a>&lt;/p>
&lt;p>Cuốn này cũng được tung hô, mở ra đọc thì chỉ là giới thiệu các động tác tập bụng, không có gì đặc biệt hết.&lt;/p></description></item><item><title>Review những websites dạy lập trình tôi từng học</title><link>https://japananh.github.io/blog/p/review-nhung-websites-day-lap-trinh-toi-tung-hoc/</link><pubDate>Fri, 14 Jan 2022 01:26:07 +0700</pubDate><guid>https://japananh.github.io/blog/p/review-nhung-websites-day-lap-trinh-toi-tung-hoc/</guid><description>&lt;img src="https://japananh.github.io/blog/p/review-nhung-websites-day-lap-trinh-toi-tung-hoc/cover.jpg" alt="Featured image of post Review những websites dạy lập trình tôi từng học" />&lt;p>Vốn là dân trái ngành và lại tự học nên tôi đã thử khá nhiều nền tảng trực tuyến. Trả giá 3 năm cuộc đời ở một môi trường học tệ hại khiến tôi luôn cẩn trọng với bất kỳ khóa học và sẵn sàng từ chối học khi mình không hề được trải nghiệm nội dung. Bài này tôi review những websites dạy lập trình tôi từng học. Hi vọng chúng có ích cho bạn.&lt;/p>
&lt;h2 id="những-websites-tôi-thích-nhất-và-hoàn-toàn-miễn-phí">Những websites tôi thích nhất và hoàn toàn miễn phí&lt;/h2>
&lt;ul>
&lt;li>Note: khi tôi nhắc tới HOÀN TOÀN MIỄN PHÍ thì có nghĩa là bạn tham gia bất kỳ hoạt động nào trên websites này đều miễn phí. Nó không phải là kiểu &amp;ldquo;miễn phí nửa vời&amp;rdquo; (monetization strategies) như kiểu chỉ cho miễn phí một phần và muốn học tiếp thì phải trả phí.&lt;/li>
&lt;/ul>
&lt;p>Link: &lt;a class="link" href="https://www.freecodecamp.org/" target="_blank" rel="noopener"
>https://www.freecodecamp.org/&lt;/a>&lt;/p>
&lt;p>Tôi bắt đầu học ở FreeCodeCamp vào năm 2018. Đây một nền tảng học trực tuyến &lt;strong>HOÀN TOÀN MIỄN PHÍ&lt;/strong> và những bài tập trên này &lt;strong>rất chất lượng&lt;/strong>. Các câu hỏi trên diễn đàn đều được trả lời nhiệt tình và cũng đều không cần trả phí.&lt;/p>
&lt;p>Trang này sẽ phù hợp với các bạn muốn &lt;strong>học lập trình Web&lt;/strong>. Ngôn ngữ chủ yếu dùng để làm bài tập là &lt;strong>JavaScript&lt;/strong> và &lt;strong>Python&lt;/strong>. Hầu như các bài tập đều phải viết code và hầu như không thấy câu hỏi trắc nghiệm. Phần bài tập regular expression dạy rất hay và những kiến thức đó có ích nhiều với tôi khi đi làm.&lt;/p>
&lt;p>Một điểm cộng rất lớn của trang này là tất cả bài tập đều làm online và có tests. Bạn phải pass hết tất cả tests thì mới hoàn thành và nhận chứng chỉ online. Chứng chỉ này không có thời hạn và rất thích hợp đính vào resume và Linkedin. Đối với ai học trái ngành như mình thì chứng chỉ này vô cùng có ích.&lt;/p>
&lt;p>Bạn có thể tham khảo chứng chỉ FreeCodeCamp của tôi ở &lt;a class="link" href="https://www.freecodecamp.org/japananh" target="_blank" rel="noopener"
>đây&lt;/a>.&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.hackerrank.com/" target="_blank" rel="noopener"
>https://www.hackerrank.com/&lt;/a>&lt;/p>
&lt;p>HackerRank là nền tảng cho cho các lập trình viên trên toàn thế giới giải những thử thách liên quan nhiều chủ đề trong đó có giải thuật, học máy, trí tuệ nhân tạo, databases &amp;hellip;&lt;/p>
&lt;p>Mỗi chủ đề sẽ có một bộ câu hỏi chia theo level từ easy (dễ), medium (trung bình), và hard (khó). Thứ hạng của bạn (thể hiện bằng số sao) sẽ tăng khi giải xong các thử thách.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1642094152721/KbsaMrHw1.png"
loading="lazy"
alt="Screenshot from 2022-01-14 00-15-23.png"
>&lt;/p>
&lt;p>Gần đây, HackerRank có phát triển một phần là &lt;strong>Skills Certification&lt;/strong>. Bạn viết code để trả lời câu hỏi của đề và sẽ nhận được chứng chỉ nếu đủ điểm pass. Cũng giống với chứng chỉ ở FreeCodeCamp, chứng chỉ của HackerRank không có thời hạn và có thể đính vào resume và Linkedin. Một vài chứng chỉ sẽ được retake (làm lại) 1 lần và có chứng chỉ chỉ được làm đúng 1 lần nên bạn hãy ôn cẩn thận trước khi làm bài. Về dạng câu hỏi thì đa dạng vô cùng nhưng yên tâm là nếu ôn kỹ thì sẽ không khó đâu.&lt;/p>
&lt;p>Bạn có thể tham khảo các chứng chỉ HackerRank của tôi ở &lt;a class="link" href="https://www.hackerrank.com/japananh" target="_blank" rel="noopener"
>đây&lt;/a>.&lt;/p>
&lt;h2 id="những-websites-học-đáng-tiền">Những websites học đáng tiền&lt;/h2>
&lt;p>Link: &lt;a class="link" href="https://frontendmasters.com/" target="_blank" rel="noopener"
>https://frontendmasters.com/&lt;/a>&lt;/p>
&lt;p>Frontendmasters là trang dạy front-end nổi tiếng của bác Kyle Simpson - tác giả bộ sách được giới thiệu bởi rất nhiều thế hệ lập trình viên JavaScript là &lt;a class="link" href="https://github.com/getify/You-Dont-Know-JS" target="_blank" rel="noopener"
>You don&amp;rsquo;t know JS&lt;/a>.&lt;/p>
&lt;p>Giá học trên này cũng khá cao $39/tháng (~ 1 triệu VNĐ) nhưng đổi lại nội dung bài học chất như nước cất. Đặc biệt là những bài giảng của Kyle Simpson, Will Sentance, và Douglas Crockford về JavaScript.&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.edx.org/" target="_blank" rel="noopener"
>https://www.edx.org/&lt;/a>&lt;/p>
&lt;p>Edx đã dẫn tôi tới &lt;a class="link" href="https://www.edx.org/course/introduction-computer-science-harvardx-cs50x" target="_blank" rel="noopener"
>CS50 - Introduction to computer science&lt;/a>. Đây là khóa lập trình đầu tiên tôi học khi còn là tờ giấy trắng.&lt;/p>
&lt;p>Tôi không biết phải nói lời cảm ơn tới người thầy tuyệt vời David J. Malan như nào vì đã mang màu sắc và không khí hào hứng vào mỗi buổi học. Sau nhiều năm mài quần trên giảng đường đại học, ngáp ngắn, ngắp dài không biết tương lai sẽ như nào thì những giờ phút học lớp của David khiến tôi yêu từng dòng code. Tôi nghĩ mình sẽ trở thành lập trình viên. Dù lúc đó chỉ hiểu có 50% nội dung học vì tiếng anh yếu.&lt;/p>
&lt;p>Nhiều khóa học trên Edx được xem nội dung miễn phí và nếu muốn nhận chứng chỉ thì bạn phải trả phí. Có những khóa học chuyên sâu hơn và bạn phải trả phí thì mới xem được nội dung. Phần lớn các khóa học thuộc mọi ngành nghề đến từ các trường đại học hàng đầu trên thế giới như Havard, Standford, MIT &amp;hellip; Nếu bạn hoàn thành tất cả bài kiểm tra đúng hạn và đủ điểm thì bạn sẽ nhận được chứng chỉ, mang đính lên resume và Linkedin sẽ rất có giá trị.&lt;/p>
&lt;p>Một những lý do khiến tôi quyết định dừng việc học đại học ở NEU là thấy bất công khi tôi phải trả tiền để học những nội dung outdated. Thậm chí người ta còn dạy miễn phí chúng trên Edx với công nghệ giảng dạy tốt hơn và cách tiếp cận dễ hiểu hơn. Chưa kể, tôi còn được học bằng tiếng anh với mức phí gần như 0.&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.coursera.org/" target="_blank" rel="noopener"
>https://www.coursera.org/&lt;/a>&lt;/p>
&lt;p>Nhiều khóa học ở trên này chất lượng hơn và họ còn cung cấp cả bằng online ở bậc đại học và sau đại học nữa. Đó cũng là lý do đa số các khóa học đều phải trả mức phí khá cao, từ $100 trở lên (~ 2.4 triệu VNĐ). Những khóa học bậc đại học và sau đại học sẽ có giá lên tới hàng ngàn đô (~ vài chục cho tới vài trăm triệu VNĐ).&lt;/p>
&lt;p>Tôi đã trải nghiệm một vài khóa free và trial (cho học thử 7 ngày). Phần nội dung có khóa khá bình thường, không có gì đặc sắc lắm, có khóa khá thú vị, tôi học được nhiều. Giống như Edx, chứng chỉ Coursera khá uy tín. Dù sao, tôi cũng đánh giá cao trang này.&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.vuemastery.com/" target="_blank" rel="noopener"
>https://www.vuemastery.com/&lt;/a>&lt;/p>
&lt;p>Nếu bạn muốn master Vue thì đây chính là nơi đáng tin cậy. Nhiều mentors ở trang này nằm trong core team của Vue, trong đó có cả người tạo ra chính framework này là &lt;a class="link" href="https://evanyou.me/" target="_blank" rel="noopener"
>Evan You&lt;/a>.&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://200lab.io/" target="_blank" rel="noopener"
>https://200lab.io/&lt;/a>&lt;/p>
&lt;p>Tôi học &lt;a class="link" href="https://200lab.io/khoa-hoc/khoa-hoc-golang-food-delivery-backend" target="_blank" rel="noopener"
>Khóa Golang for scalable backend&lt;/a> ở trang này. Đây là website dạy lập trình dùng tiếng việt thứ hai tôi từng học. Danh tiếng của anh Việt Trần - mentor của khóa tôi học rất lớn và tôi cũng không kiếm được khóa bằng tiếng anh nào tốt hơn nên tôi đã học thử.&lt;/p>
&lt;p>Đây là một khóa học cô đặc nhiều thứ mà tôi đã học từ tháng 9 năm ngoái tới giờ vẫn chưa ngấm hết nội dung. Dù nhiều kiến thức mới với bản thân nhưng tôi vẫn thấy vô cùng hào hứng về những thứ được học. Đó cũng chính là lý do đây là trang dạy lập trình tiếng việt duy nhất tôi thích.&lt;/p>
&lt;h2 id="những-websites-chỉ-nên-học-phần-nội-dung-free">Những websites chỉ nên học phần nội dung free&lt;/h2>
&lt;p>Link: &lt;a class="link" href="https://school.coders-x.com/" target="_blank" rel="noopener"
>https://school.coders-x.com/&lt;/a>&lt;/p>
&lt;p>Tôi học Front-end ở trang này. Nội dung trên &lt;a class="link" href="https://www.youtube.com/channel/UCwczk9A3ITHTZT6W_9nalqg" target="_blank" rel="noopener"
>kênh Youtube&lt;/a> dạy tạm ổn nếu bạn theo hướng Front-end, đặc biệt là kiến thức về CSS. Phần lớn kiến thức mình áp dụng lúc đi làm cũng xoay quanh những thứ được dạy.&lt;/p>
&lt;p>Phần regular expression và toàn bộ mảng back-end dạy khá chán.&lt;/p>
&lt;h2 id="những-websites-phí-tiền-không-bao-giờ-học-lại">Những websites phí tiền không bao giờ học lại&lt;/h2>
&lt;p>Link: &lt;a class="link" href="https://www.pluralsight.com/" target="_blank" rel="noopener"
>https://www.pluralsight.com/&lt;/a>&lt;/p>
&lt;p>Tôi đã xem hết tất cả video bài học có liên quan tới Nodejs và thấy vô cùng thất vọng khi chúng đều dừng ở mức rất cơ bản là giới thiệu cách dùng các thư viện, thứ mọi người đều dễ dàng tìm thấy miến phí trên Google và Youtube. Có người nói với tôi là phần Java dạy hữu ích nhưng tôi chưa làm việc lên quan tới ngôn ngữ này nên không đánh giá được.&lt;/p>
&lt;p>Nếu bạn đã ở mức trên beginners và muốn học sâu về JavaScript thì hãy bỏ qua trang này.&lt;/p>
&lt;p>Link: &lt;a class="link" href="https://www.udemy.com/" target="_blank" rel="noopener"
>https://www.udemy.com/&lt;/a>&lt;/p>
&lt;p>Tôi có học vài khóa Nodejs trên Udemy và cũng thấy tương tự Fluralsight về cách dạy, chỉ khác là bạn trả tiền trên từng khóa học thay vì trả theo tháng. Họ chủ yếu dạy cách dùng thư viện. Và vì chỉ học một vài khóa nên tôi thấy đánh giá như vậy chưa chính xác. Nếu bạn từng học một khóa Udemy và thấy tâm đắc thì hãy comment cho tôi biết nhé.&lt;/p></description></item><item><title>How to create a better morning routine?</title><link>https://japananh.github.io/blog/p/how-to-create-a-better-morning-routine/</link><pubDate>Thu, 13 Jan 2022 23:25:34 +0700</pubDate><guid>https://japananh.github.io/blog/p/how-to-create-a-better-morning-routine/</guid><description>&lt;img src="https://japananh.github.io/blog/p/how-to-create-a-better-morning-routine/cover.jpg" alt="Featured image of post How to create a better morning routine?" />&lt;p>I&amp;rsquo;m a morning person. My most productive time is in the morning, so I try to accomplish as many things as I can before lunch. It took me a while to find my morning routine with trials and errors. Today, I&amp;rsquo;m gonna share with you my morning routines.&lt;/p>
&lt;h2 id="making-your-bed">Making your bed&lt;/h2>
&lt;p>This is the first thing you should do. I got this advice from Tim Ferriss on his channel on Youtube. You can check it out &lt;a class="link" href="https://youtu.be/LHAyE0UC5I4?t=50" target="_blank" rel="noopener"
>here&lt;/a>. He explained that&lt;/p>
&lt;blockquote>
&lt;p>Accomplishing one thing at the beginning of the day no matter what happens with unforeseen variables for the rest of day.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>You will return to a made bed at the end of the day. As a bookmark beginning an end, it sets you up psychologically to be more productive.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>If you work at home, an external mess creates an internal mess.&lt;/p>
&lt;/blockquote>
&lt;h2 id="awake-nervous-system">Awake nervous system&lt;/h2>
&lt;p>The next thing you should do is that awake your nervous system.&lt;/p>
&lt;p>I got this advice from Huberman (an American neuroscientist) in his article. Blue light from sunlight early in the morning can block &lt;strong>melatonin&lt;/strong>, a hormone made in the body to regulate night and day cycles or sleep-wake cycles. It is similar to an alarm that wakes you up in the morning and makes you sleepy in the evening.&lt;/p>
&lt;p>If seeing the blue light is not enough for you, light exercises such as push-ups, pull-ups, or a few minutes of cardio will help. It can increase your heartbeat, increase your blood oxygen level, and put you in an alert state.&lt;/p>
&lt;h2 id="stay-focused">Stay focused&lt;/h2>
&lt;p>Sometimes, you feel alert in the morning but your mind is wandering so you cannot focus on anything. These tips below bring my mind back, so I hope it works for you.&lt;/p>
&lt;p>Tim Ferriss introduced me to this technique. You can read anything that excites you. Just wrap a book or a magazine. This technique is effective because it traps your monkey mind on paper so you can get on with your day. I often look at my daily plan and read it out loud.&lt;/p>
&lt;p>By starting a meditation practice and tuning into your breath and body when you first wake up, you become more aware of your thoughts–and that monkey mind. Some thoughts might make sense while other thoughts seem to come out of nowhere. Especially, when you&amp;rsquo;re wake up after a nightmare.&lt;/p>
&lt;h2 id="breakfast">Breakfast&lt;/h2>
&lt;p>Some people avoid sugar and think it makes them fat. That&amp;rsquo;s a myth. A little sugar (below 3 grams) is just fine. If your brain doesn&amp;rsquo;t have enough &amp;ldquo;sugar&amp;rdquo;, you will start to crave sweet foods. By saying &amp;ldquo;sugar&amp;rdquo;, I mean you should provide enough energy for your brain in the morning. Energy can come from a lot of sources. I highly recommend people to have &lt;em>whole foods with high carbs or high proteins or a mix with both of them&lt;/em>.&lt;/p>
&lt;h2 id="keep-your-mouth-clean">Keep your mouth clean&lt;/h2>
&lt;p>Some people are very busy or lazy so they don&amp;rsquo;t even put a few minutes to clean their mouths. Early meetings make people feel annoyed because of bad breath. Keeping your mouth clean is not only a personal norm but a &lt;strong>SOCIAL&lt;/strong> norm.&lt;/p>
&lt;p>An &lt;a class="link" href="https://www.healthline.com/health/should-you-brush-your-teeth-before-or-after-breakfast#:~:text=Waiting%2030%20minutes%20to%20an,especially%20after%20having%20acidic%20foods." target="_blank" rel="noopener"
>article&lt;/a> in healthlin.com show that&lt;/p>
&lt;blockquote>
&lt;p>Waiting 30 minutes to an hour after eating to brush your teeth is the best way to ensure that you&amp;rsquo;re protecting your teeth and not tampering with your enamel. The American Dental Association recommends you wait 60 minutes after eating before you brush, especially after having acidic foods.&lt;/p>
&lt;/blockquote></description></item><item><title>Lạc lạc</title><link>https://japananh.github.io/blog/p/lac-lac/</link><pubDate>Fri, 07 Jan 2022 23:47:24 +0700</pubDate><guid>https://japananh.github.io/blog/p/lac-lac/</guid><description>&lt;img src="https://japananh.github.io/blog/p/lac-lac/cover.jpg" alt="Featured image of post Lạc lạc" />&lt;p>Hôm nay, tôi nghe podcast &lt;a class="link" href="https://www.youtube.com/watch?v=Wcs2PFz5q6g" target="_blank" rel="noopener"
>The Science of Making &amp;amp; Breaking Habits&lt;/a> của bác Huberman. Ghi lại được vài ý thì kéo xuống đã thấy một comment của Gabriel Surija tóm tắt hết cái video dài gần 2 tiếng. Thôi thì đành like, comment và share để lần sau bạn ấy còn tiếp tục chăm chỉ. Các phương pháp trong video này rất hay và thiết thực. Bạn nào quan tâm mà chưa có thời gian nghe thì có thể đọc phần tóm tắt của bạn kia nhé.&lt;/p>
&lt;p>Nhân chủ đề về thói quen, viết dài quá thì lười nên tốt hơn hết là chọn mấy chữ ngắn gọn. Tập thơ này tên là &lt;strong>Lạc&lt;/strong>. Mỗi đoạn mô tả một thói quen xấu mà tôi hi vọng trong năm 2022 sẽ vượt được. Còn cái title của post là Lạc lạc vì hashnode ko cho tôi đặt tên ngắn có một chữ. Thứ tự các bài đều rất ngẫu hứng.&lt;/p>
&lt;p>Nào thôi nay mình lạc.&lt;/p>
&lt;h2 id="lạc-lạc">Lạc lạc&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Lạc quan, lạc lối đều có lạc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Lạc đà, lạc bồng, lạc đi đâu
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Nếu mà có lạc thì nhớ quay
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Về sau không lạc thì nhớ tưởng.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="lạc-vào-quá-khứ">Lạc vào quá khứ&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Gói lại, cất đi, xưa tan hết
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Trời cao, mây trắng, lối vào tim
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Nguyệt nở, nguyệt tàn, bay theo gió
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Cầm cuốc, cầm xẻng, bới đất lên.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="lạc-vào-thiết-bị-điện-tử">Lạc vào thiết bị điện tử&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Bấm vuốt, kéo kéo, tay mình động
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Liếc liếc, chớp chớp, mắt mình căng
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Hào hứng, hào nào, bay đi mất
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Cuối năm, chỉ biết, khóc tôi ơi.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="lạc-vào-giấc-mộng">Lạc vào giấc mộng&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Ma mộng ma bay lộn tùng phèo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Miên man vật vã giấc mộng thu
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Vạn dặm xa xôi mình lạc lối
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Tỉnh thức bật cười ha ha ha.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="lạc-vào-bản-ngã">Lạc vào bản ngã&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Tôi ơi, tôi cao, tôi hay quá
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Gạch rơi, gạch vãi, ối dồi ôi
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Vườn đâu, nhà đâu, sao chẳng thấy
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Chỉ có mình ta, than vừa thôi.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="lạc-đường">Lạc đường&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Rẽ trái, quẹo phải, chờ đèn đỏ
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Trời nóng, xe kêu, bay cả óc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Lượn mãi chả thấy bóng ở đâu
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Phút cuối, may quá, thấy bờ kia.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Don't ask to ask, just ask</title><link>https://japananh.github.io/blog/p/don-t-ask-to-ask-just-ask/</link><pubDate>Wed, 05 Jan 2022 18:43:04 +0700</pubDate><guid>https://japananh.github.io/blog/p/don-t-ask-to-ask-just-ask/</guid><description>&lt;img src="https://japananh.github.io/blog/p/don-t-ask-to-ask-just-ask/cover.jpg" alt="Featured image of post Don't ask to ask, just ask" />&lt;h2 id="case-1">Case 1&lt;/h2>
&lt;p>In forums or groups on social media, I saw some people pop in and say something like that.&lt;/p>
&lt;blockquote>
&lt;p>Any JavaScript experts around?&lt;/p>
&lt;/blockquote>
&lt;p>This is a bad form, for several reasons. What the person is actually asking here is&lt;/p>
&lt;blockquote>
&lt;p>Any JavaScript experts around who are willing to commit to my problem, whatever that might turn out to be, even if it&amp;rsquo;s not actually related to JavaScript could answer my question?&lt;/p>
&lt;/blockquote>
&lt;p>There are plenty of reasons why people DO have the knowledge would NOT admit to it. The unclear question proves your laziness. Why people should do the work to solve your problem if you&amp;rsquo;re not willing to do it?&lt;/p>
&lt;h2 id="case-2">Case 2&lt;/h2>
&lt;p>Some people send me a message then stop there until I reply.&lt;/p>
&lt;blockquote>
&lt;p>Hey, I have a question.&lt;/p>
&lt;/blockquote>
&lt;p>or&lt;/p>
&lt;blockquote>
&lt;p>Alo, I have a bug.&lt;/p>
&lt;/blockquote>
&lt;p>They only describe their problems until I ask them to clarify them.&lt;/p>
&lt;blockquote>
&lt;p>Hi, what&amp;rsquo;s wrong?&lt;/p>
&lt;/blockquote>
&lt;p>This is also a bad form. Why not jump into your problem so I don&amp;rsquo;t need to ask an extra question.&lt;/p>
&lt;blockquote>
&lt;p>Hey, I&amp;rsquo;m reading [book] and I&amp;rsquo;m confused with the [concept]. Could you have time to explain it to me?&lt;/p>
&lt;/blockquote>
&lt;p>or&lt;/p>
&lt;blockquote>
&lt;p>Alo. I do [problem] with JavaScript and [other relevant info]. I tried [what you did] but it didn&amp;rsquo;t work. Could you help me out?&lt;/p>
&lt;/blockquote>
&lt;p>The point here is &lt;strong>not to ask, just ask&lt;/strong>.&lt;/p></description></item><item><title>Thơ thẩn - Lẩm cẩm - Lão - Phi</title><link>https://japananh.github.io/blog/p/tho-than-lam-cam-lao-phi/</link><pubDate>Tue, 04 Jan 2022 18:30:05 +0700</pubDate><guid>https://japananh.github.io/blog/p/tho-than-lam-cam-lao-phi/</guid><description>&lt;img src="https://japananh.github.io/blog/p/tho-than-lam-cam-lao-phi/cover.jpg" alt="Featured image of post Thơ thẩn - Lẩm cẩm - Lão - Phi" />&lt;p>Viết là cách để lôi ra một con người khác trong mình. Hôm nay tôi lôi ra được một cô thơ thẩn. Không biết mai mốt còn lôi ra được nhân vật nào.&lt;/p>
&lt;p>Tôi có vài cuốn sổ bé, thi thoảng lại lôi ra ghi chép vài chữ, viết rất ngẫu hứng đúng phong cách &amp;ldquo;trên mây&amp;rdquo;. Tính tôi lại lười nên văn phong cụt lủn. Nay xin trích ra vài đoạn ghi chép ấy.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Nhắn người chẳng thấy rep
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Lần sau chắc mình im
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Gõ hoài cửa chẳng mở
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Được lắm thế mình bơ.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Ăn vận lếch thếch
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Trông như con ếch
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Đầu óc rỗng tuếch
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Trèo cao có chết.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Gió ơi nơi đâu mang em về
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Ngồi bên cười sổ cười hê hê
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Tấp nập bon chen mình mặc kệ
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Ôm cún, ôm đàn chẳng cần xê.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Lá rơi xuân vì cũ
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Phủ kín sân trường Chu
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Cô bé đã yên ngủ
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Năm này em mấy thu?
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Nghịch vài con bọ
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Đau hết cả sọ
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Mà bọ vẫn ngọ
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Thì mình ngồi rọ!
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Bốn chân nằm gối
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Hay gào trời tối
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Cả ngày thấy nằm
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Chẳng ai phản đối.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">Viết vài mã Go
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Thấy não mình nâu
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Thì biết còn lâu
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Chương trình mới chạy.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Còn nữa &amp;hellip; Hí hí &amp;hellip;&lt;/p></description></item><item><title>Khi tôi chả muốn viết cái gì</title><link>https://japananh.github.io/blog/p/khi-toi-cha-muon-viet-cai-gi/</link><pubDate>Mon, 03 Jan 2022 21:30:11 +0700</pubDate><guid>https://japananh.github.io/blog/p/khi-toi-cha-muon-viet-cai-gi/</guid><description>&lt;img src="https://japananh.github.io/blog/p/khi-toi-cha-muon-viet-cai-gi/cover.jpg" alt="Featured image of post Khi tôi chả muốn viết cái gì" />&lt;p>Năm mới bắt đầu bằng chuyến du lịch tới thăm nha sỹ, trong lúc chờ đợi tới lượt mình thì tôi đã đọc xong 3 cuốn tạp chí về thời trang. Lâu lắm tôi không đọc tạp chí. Tôi thực sự ấn tượng bởi bộ sưu tập của hãng Uniqlo, từng màu sắc và kiểu dáng đều rất nhã nhặn, đơn giản và hài hòa. Tôi nghĩ có khi nào tôi sẽ từ bỏ màu hồng để chuyển sang một tông màu khác? Màu xanh của bầu trời chẳng hạn.&lt;/p>
&lt;p>Hồi bé tôi lười đánh răng và hậu quả là tôi có nhiều răng sâu. Tôi cũng chả quan tâm lắm cho tới khi trưởng thành, tôi rất hay phải đi nha sỹ vì vấn đề răng. Thật khó cho một đứa trẻ để hiểu rằng một chút bất cẩn tuổi thơ sẽ để lại hậu quả lâu dài suốt cả đời. Nếu ngày nào đó, tôi được chăm sóc một đứa trẻ, nhất định tôi sẽ dạy bé về nhân quả.&lt;/p>
&lt;p>Tôi luôn thích những kỳ thi. Cảm giác hồi hộp ngồi trong phòng thi. Tim đập thình thịch, nhiệt độ cơ thể tăng lên, cả thế giới như hội tụ lại trong một khoảng khắc. Chỉ còn 30 phút, 15 phút, 5 phút &amp;hellip; Tiếng chuông kêu. Rengggg. Hết giờ. Bây giờ, tôi có deadlines. Có lúc từ công việc, có lúc từ chính mình. Nhưng kiểu gì cũng phải có deadlines. Không có thì tôi không tài nào tập trung vào việc gì cả.&lt;/p>
&lt;p>Tôi sợ những ngày Tết, khi mọi người quây quần bên gia đình mình là lúc tôi thấy cô đơn nhất. Năm nào tôi cũng nằm ở nhà, hết đọc sách rồi lại xem Youtube, nghe nhạc. Những lễ nghi và truyền thống vào những ngày này khiến tôi mệt mỏi. Rượu bia, những bữa nhậu liên miên, và vô vàn câu chuyện thâm cung bí sử của họ hàng. &amp;ldquo;Khi nào lấy chồng?&amp;rdquo; Tôi muốn biến mất.&lt;/p></description></item><item><title>Day 50</title><link>https://japananh.github.io/blog/p/day-50/</link><pubDate>Mon, 03 Jan 2022 00:46:52 +0700</pubDate><guid>https://japananh.github.io/blog/p/day-50/</guid><description>&lt;img src="https://japananh.github.io/blog/p/day-50/cover.jpg" alt="Featured image of post Day 50" />&lt;p>Chào mọi người, vèo cái đã tới ngày 50. Vậy là tôi đã đi được một nửa quãng đường rồi.&lt;/p>
&lt;p>Mọi người có gợi ý gì cho thử thách sắp tới thì comment vào bài nhé.&lt;/p>
&lt;p>Trong bài này, tôi sẽ trích ra một vài ghi chú từ cuốn &lt;a class="link" href="https://www.goodreads.com/book/show/23719305-how-emotions-are-made" target="_blank" rel="noopener"
>How emotions are made&lt;/a> của &lt;a class="link" href="https://lisafeldmanbarrett.com/" target="_blank" rel="noopener"
>Lisa Feldman Barrett&lt;/a>. Đây là cuốn sách đầu tiên của năm 2022.&lt;/p>
&lt;p>Tôi đọc cuốn này vì muốn hiểu hơn về cảm xúc. Tôi nghĩ lời khuyên &lt;em>Gác cảm xúc sang một bên&lt;/em> tới từ sự thiếu hiểu biết hơn là từ sự thấu hiểu. Đây là ví dụ điển hình của xu hướng &lt;em>né tránh những thứ mà bản thân chưa rõ và che đậy nó bằng từ ngữ hoa mỹ&lt;/em>.&lt;/p>
&lt;h2 id="the-theory-of-constructed-emotions-vs-the-classical-view">The theory of constructed emotions vs The classical view&lt;/h2>
&lt;p>Tác giả phát triển một lý thuyết kiến tạo xã hội (a social constructionist theory)
tên là &lt;strong>Lý thuyết về cảm xúc được xây dựng&lt;/strong> - &lt;a class="link" href="https://en.wikipedia.org/wiki/Theory_of_constructed_emotion" target="_blank" rel="noopener"
>The theory of constructed emotions&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>Lý thuyết về cảm xúc được xây dựng nói rằng não của bạn tạo nên mọi thứ bạn trải nghiệm, bao gồm cả cảm xúc của bạn.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Your brain invisibly constructs everything you experience, including emotions.&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>The classical view: Sự kiện bên ngoài thế giới kích hoạt cảm xúc của chúng ta.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>The classical view is intuitive - events in the world trigger emotional reactions inside of us.&lt;/p>
&lt;/blockquote>
&lt;h2 id="the-myth-of-universal-emotions">The myth of universal emotions&lt;/h2>
&lt;p>Một trong những luận điểm nêu ra ở The classical view là nhận dạng cảm xúc là phổ biến (universal).&lt;/p>
&lt;blockquote>
&lt;p>Emotion recognition is universal.&lt;/p>
&lt;/blockquote>
&lt;p>Tức là giả sử bạn cho một người Mỹ và một người Việt Nam hay một ai đó từ những nền văn hóa khác nhìn vào bức ảnh có hình một cô gái vẻ mặt &amp;ldquo;buồn&amp;rdquo; thì họ cùng phải nhận thức được rằng là người trong ảnh đang &amp;ldquo;buồn&amp;rdquo;.&lt;/p>
&lt;p>Tuy nhiên, khi thực hiện những thử nghiệm với những nhóm người từ nhiều nền văn hóa khác nhau thì nhóm của Lisa lại nhận thấy tỷ lệ trả lời đúng là 58%, rất thấp. Một vài cảm xúc dễ bị nhầm lẫn với nhau khi chỉ nhìn vào khuôn mặt như sợ hãi, ngạc nhiên, tức giận.&lt;/p>
&lt;p>Họ kết luận rằng nhận dạng cảm xúc phụ thuộc vào cả ngữ cảnh (context) và nhiều yếu tố phức tạp khác chứ không hề &amp;ldquo;universal&amp;rdquo;.&lt;/p>
&lt;h2 id="emotion-concepts">Emotion concepts&lt;/h2>
&lt;p>Não bạn liên tục tạo ra khái niệm cảm xúc (emotion concepts). Khi nhắc tới &amp;ldquo;buồn rầu&amp;rdquo;, các nerouns của bạn sẽ lục tìm những ký ức phù hợp với từ &amp;ldquo;buồn&amp;rdquo;.&lt;/p>
&lt;p>Đối với một đứa trẻ mới sinh (infant), chưa hề có các khái niệm cảm xúc. Việc hình thành các khái niệm của bé tới từ việc quan sát thế giới. Nếu mẹ &amp;ldquo;cười&amp;rdquo; tức là mẹ đang &amp;ldquo;vui&amp;rdquo;. Khi &amp;ldquo;có nước trên mắt mẹ&amp;rdquo; thì chắc là mẹ &amp;ldquo;buồn&amp;rdquo;.&lt;/p>
&lt;p>Khái niệm cảm xúc bị ảnh hưởng bởi nền văn hóa và môi trường sống.&lt;/p></description></item><item><title>Làm sao để quyết đoán?</title><link>https://japananh.github.io/blog/p/lam-sao-de-quyet-doan/</link><pubDate>Sun, 02 Jan 2022 23:25:56 +0700</pubDate><guid>https://japananh.github.io/blog/p/lam-sao-de-quyet-doan/</guid><description>&lt;img src="https://japananh.github.io/blog/p/lam-sao-de-quyet-doan/cover.jpg" alt="Featured image of post Làm sao để quyết đoán?" />&lt;p>Tôi từng luôn thiếu tự tin và thiếu quyết đoán, lại có quá nhiều cảm xúc mạnh mẽ. Tôi dành rất nhiều thời gian để thích nghi với việc làm chủ sức mạnh ấy. Phần lớn kiến thức khoa học giúp tôi giải thích được tại sao tôi lại hành động như vậy. Nhưng những lời khuyên họ đưa ra cần nhiều thời gian để &amp;ldquo;tiêu hóa&amp;rdquo;.&lt;/p>
&lt;p>Việc này giống như bạn bị đau bụng đi viện khám. Bác sỹ giải thích cho bạn cơ chế đau bụng của bạn với hàng tá khái niệm chuyên ngành khiến não bạn muốn nổ tung ra thay vì kê cho bạn đơn thuốc về nhà uống. Giờ thì bạn không những đau bụng mà còn đau cả đầu nữa.&lt;/p>
&lt;p>Tôi không hề nói rằng việc đọc sách là hoàn toàn vô dụng. Về dài hạn, chúng RẤT CÓ ÍCH. Tuy nhiên, việc cố gắng hiểu cơ chế bệnh tật trong lúc bạn bị bệnh là điều RẤT DỞ. Bạn cần phải khỏi bệnh đã rồi sau đấy mới có đủ sức mà tiêu hóa kiến thức để không mắc lại bệnh.&lt;/p>
&lt;p>Nếu có cỗ máy thời gian thì đây là những điều tôi muốn gửi cho mình. Hi vọng là chúng có ích với bạn.&lt;/p>
&lt;h2 id="thử-nghiêng-về-một-phía">Thử nghiêng về một phía&lt;/h2>
&lt;p>Tôi nghĩ cách này là bước ngoặt giúp tôi trở nên tự tin hơn trong việc ra quyết định. Đây là một cách có hơi chút cực đoan vì sự mất cân bằng của nó và nó có thể khiến bạn &amp;ldquo;choáng&amp;rdquo; một chút. Và tôi cũng phải nói trước là có thể nó sẽ không vui tí nào.&lt;/p>
&lt;p>Nguyên tắc của nó là hãy nói &lt;strong>CÓ&lt;/strong> với hầu hết mọi thứ cho tới khi bạn không thể nói &lt;strong>CÓ&lt;/strong> được nữa, rồi sau đó nói &lt;strong>KHÔNG&lt;/strong> với hầu hết mọi thứ cho tới khi bạn không thể nói &lt;strong>KHÔNG&lt;/strong> được nữa.&lt;/p>
&lt;blockquote>
&lt;p>Say &lt;strong>Yes&lt;/strong> to everything until you can&amp;rsquo;t say &lt;strong>Yes&lt;/strong> anymore, then say &lt;strong>No&lt;/strong> to everything until you can&amp;rsquo;t say &lt;strong>No&lt;/strong> anymore&lt;/p>
&lt;/blockquote>
&lt;p>Từ đó, bạn sẽ tìm được điểm cân bằng cho chính mình, khi nào nên nói &lt;strong>CÓ&lt;/strong> và khi nào nên nói &lt;strong>KHÔNG&lt;/strong>.&lt;/p>
&lt;h2 id="viết-ra-những-gì-bạn-nghĩ">Viết ra những gì bạn nghĩ&lt;/h2>
&lt;p>Khi tôi suy nghĩ, những ý tưởng đến trong đầu tôi có thể rất lộn xộn, và nhiều khi nó chỉ là những hình ảnh hoặc từ ngữ ngẫu nhiên. Điều này khiến tôi khó khăn trong việc ra quyết định.&lt;/p>
&lt;p>Viết những suy nghĩ của mình sẽ khiến tôi có cái nhìn rõ ràng hơn về những điều tôi thật sự muốn làm. Khi viết, tôi đang dùng ngôn ngữ để mô tả lại suy nghĩ của mình. Những thứ mông lung trong đầu tôi trở nên rõ ràng hơn.&lt;/p>
&lt;p>Cách này đặc biệt hữu ích khi tôi gặp cảm xúc mạnh. Ví dụ, giận dữ, thất vọng, &amp;hellip; Ban đầu, những suy nghĩ bay với tốc độ phương tiện giao thông trên đường cao tốc. Khi tôi cố gắng nắm bắt chúng thì giống như việc lao mình ra chặn ô tô. Chắc bạn cũng đoán được kết quả như nào ở trường hợp này. 99.9% là thất bại. Tôi chìm vào hố đen suy nghĩ và chả thể tập trung vào bất kỳ công việc gì.&lt;/p>
&lt;p>Đầu tiên là tôi phải nhận biết được cái sự BẤT ỔN này rồi sau đó, tôi sẽ viết ra bất kỳ từ nào tôi có thể tóm được từ bộ não lộn xộn của mình. Tôi dùng Notion, có khi tiện thì dùng giấy bút. Dưới đây là một ví dụ về những gì tôi viết. Rất lộn xộn.&lt;/p>
&lt;blockquote>
&lt;p>Tim tôi đập hơi nhanh, có vẻ cái phòng này hơi nóng. Chắc điều hòa hỏng. Con bug này thật to. Tôi với đứa bạn gọi cho nhau. Tôi chưa kịp chúc mừng năm mới mà bạn ấy đã phủ đầu bằng một tràng tiêu cực về cuộc sống.&lt;/p>
&lt;/blockquote>
&lt;p>Tôi đặt tên cho những bài kiểu này là &lt;strong>Suy nghĩ trên mây&lt;/strong>. Càng viết ra nhiều và kỹ thì tôi nhạn thấy là số lần tôi viết ít dần. Từ một tuần mấy lần xuống còn vài tháng một lần.&lt;/p>
&lt;p>Bên cạnh đó, những ý tưởng trong đầu tôi sẽ được ghi vào một chỗ thay vì để bộ não cố gắng nhớ chúng. Nỗ lực nhớ quá nhiều thông tin sẽ khiến não bị quá tải. Tôi thì liên tưởng ngay tới máy tính tràn RAM.&lt;/p>
&lt;h2 id="kết-luận">Kết luận&lt;/h2>
&lt;p>Tôi nghĩ những bài viết 10 cách, 20 cách, thậm chí là 100 cách giúp bạn quyết đoán hơn đều viết những thứ hết sức TÀO LAO, chủ yếu để câu view. Bạn nên là người tự tìm ra cách giải quyết vấn đề cho mình bằng việc &lt;strong>ĐI VÀO SÂU BÊN TRONG BẢN THÂN&lt;/strong>.&lt;/p>
&lt;p>Tự đặt ra nhiều câu hỏi cho bản thân mình. Trong quá trình lần lượt trả lời từng câu hỏi thì bạn sẽ tìm được câu trả lời cho vấn đề của mình.&lt;/p>
&lt;p>Đừng tin vào lời khuyên của bất kỳ ai nếu bạn thử làm mà nó không hiệu quả.&lt;/p>
&lt;p>Chúc bạn may mắn!&lt;/p></description></item><item><title>My resolutions for 2022</title><link>https://japananh.github.io/blog/p/my-resolutions-for-2022/</link><pubDate>Sat, 01 Jan 2022 23:45:12 +0700</pubDate><guid>https://japananh.github.io/blog/p/my-resolutions-for-2022/</guid><description>&lt;img src="https://japananh.github.io/blog/p/my-resolutions-for-2022/cover.jpg" alt="Featured image of post My resolutions for 2022" />&lt;p>The coronavirus had changed the world and the way we live. I think 2021 was not a challenging year for me. I found it not too difficult to accomplish my career goals and my physical goals. Instead, working from home is pretty cool. I have more spare time to play with my buddies.&lt;/p>
&lt;p>One article of Fobes wrote that 2022 is going to be Malcolm Gladwell’s Tipping Point Year. This article pointed out 22 predictions of the world in 2022. It provides a lot of retrospective ideas for the new year. I highly recommend you read it.&lt;/p>
&lt;p>&lt;a class="link" href="https://www.forbes.com/sites/michaelgale/2022/01/01/22-predictions-for-2022-and-why-this-is-malcolm-gladwells-tipping-point-year/" target="_blank" rel="noopener"
>https://www.forbes.com/sites/michaelgale/2022/01/01/22-predictions-for-2022-and-why-this-is-malcolm-gladwells-tipping-point-year/&lt;/a>&lt;/p>
&lt;p>Here are my resolutions for 2022&lt;/p>
&lt;ol>
&lt;li>Dive deep into backend development&lt;/li>
&lt;li>Dive deep into investing&lt;/li>
&lt;li>Finish reading list&lt;/li>
&lt;li>Challenge me physically &amp;amp; mentally&lt;/li>
&lt;li>Expand my network&lt;/li>
&lt;li>Moving into a new house&lt;/li>
&lt;li>Have fun + make fun of myself&lt;/li>
&lt;li>Try to be useful + help others&lt;/li>
&lt;li>Add a bit of love to the world&lt;/li>
&lt;/ol>
&lt;p>Let&amp;rsquo;s go!&lt;/p></description></item><item><title>Suy nghĩ trên mây - Chờ mãi cũng thấy hết năm</title><link>https://japananh.github.io/blog/p/suy-nghi-tren-may-cho-mai-cung-thay-het-nam/</link><pubDate>Sat, 01 Jan 2022 00:24:55 +0700</pubDate><guid>https://japananh.github.io/blog/p/suy-nghi-tren-may-cho-mai-cung-thay-het-nam/</guid><description>&lt;img src="https://japananh.github.io/blog/p/suy-nghi-tren-may-cho-mai-cung-thay-het-nam/cover.jpg" alt="Featured image of post Suy nghĩ trên mây - Chờ mãi cũng thấy hết năm" />&lt;p>Hôm nay là ngày cuối cùng của năm 2021 và cũng là ngày thích hợp để viết một bài tổng kết lại những điều mình đã làm trong năm 2021.&lt;/p>
&lt;p>Cuộc sống với đại dịch của tôi không khác gì so với lúc bình thường. Việc được WFH khiến tôi vừa code, vừa ôm cún ở nhà. Bên cạnh đó, vì không phải tiếp xúc với khói bụi và tắc đường nên làn da của tôi láng bóng và sáng hẳn ra.&lt;/p>
&lt;p>Năm 2021 có thật nhiều điều bất ngờ.&lt;/p>
&lt;p>Đầu tiên, tôi đã tăng cân sau rất nhiều lần đổi chế độ ăn và tập luyện. Khối lượng tạ và kỹ thuật cũng tăng đáng kể so với năm trước.&lt;/p>
&lt;p>Tôi chuyển sang học Go. Ban đầu, tôi học vì tò mò. Sau thấy &lt;code>goroutine&lt;/code> gần gũi với kiến thức tôi học năm ngoái, cảm giác như gặp lại người bạn cũ vậy.&lt;/p>
&lt;p>Sau 3 năm nhìn lại thì quyết định học lập trình là một quyết định đúng đắn. Việc code hàng ngày và bàn về code với bạn bè khiến tôi thích thú. Trong ngành IT, công nghệ thay đổi một cách chóng mặt và bạn buộc phải học hỏi không ngừng nếu không muốn bị bỏ lại rất xa. Điều này thật tuyệt. Ít nhất là tôi sẽ không bao giờ chán với việc học cái mới.&lt;/p>
&lt;p>Tôi đã vượt qua sự đau đớn về mặt cảm xúc khi đọc những cuốn tiểu thuyết viết về mặt trái của cuộc sống như Tội ác và trừng phạt hay Vết cắt hành xác. Không còn bất kỳ một sự ám ảnh nào từ những hành động tội ác.&lt;/p>
&lt;p>Không thể tin nổi là tôi lại hì hục ngồi vẽ. Một cô bé dễ thương ôm cả thế giới với cái lá trên đầu. Rồi tới một bức khác có cô bé tóc xoăn đối diện với con bạc tuộc khổng lồ. Nhìn thật buồn cười.&lt;/p>
&lt;p>Để kết thúc cái bài viết loằng ngoằng đậm chất &amp;ldquo;Suy nghĩ trên mây&amp;rdquo;, tôi sẽ trích ra mấy dòng thơ tôi viết cho mình nhân cái ngày &amp;ldquo;hớt bờ rếch&amp;rdquo;.&lt;/p>
&lt;p>&amp;ldquo;Cô bé họa sỹ&lt;/p>
&lt;p>Vạn sự như ý&lt;/p>
&lt;p>Được người cùng chí&lt;/p>
&lt;p>Cung hỷ cung hỷ&amp;rdquo;&lt;/p></description></item><item><title>IELTS Speaking Handbook - Chapter 2 - Understand the exam</title><link>https://japananh.github.io/blog/p/ielts-speaking-handbook-chapter-2-understand-the-exam/</link><pubDate>Thu, 30 Dec 2021 04:06:20 +0700</pubDate><guid>https://japananh.github.io/blog/p/ielts-speaking-handbook-chapter-2-understand-the-exam/</guid><description>&lt;img src="https://japananh.github.io/blog/p/ielts-speaking-handbook-chapter-2-understand-the-exam/cover.jpg" alt="Featured image of post IELTS Speaking Handbook - Chapter 2 - Understand the exam" />&lt;p>&lt;a class="link" href="https://www.facebook.com/kientranhandbook" target="_blank" rel="noopener"
>Kiên Trần&lt;/a> là người có ảnh hướng lớn nhất tới lối tư duy học tiếng anh của tôi. Tôi nghĩ muốn giỏi tiếng anh hay bất kỳ lĩnh vực gì, đầu tiên, bạn phải vượt qua được trở ngại niềm tin, tức là bạn phải &lt;strong>THỰC SỰ TIN&lt;/strong> là mình có thể làm được.&lt;/p>
&lt;p>Đọc sách Kiên sẽ giúp bạn &lt;strong>TẨY NÃO&lt;/strong>, khiến bạn tư duy tốt hơn và không còn phải HỌC tiếng anh một ngày nào. Sách không dùng các ví dụ khô khan như các giáo trình tiếng anh thông thường. Với hiểu biết phong phú về nhiều lĩnh vực khác nhau, mỗi cuốn sách của Kiên là một thế giới tràn đầy màu sắc, năng động, và thể hiện rõ tinh thần Bốn chấm không.&lt;/p>
&lt;p>Tôi đã đọc hết tất cả các sách của anh. Tuy nhiên, không phải nhận định nào của tác giả tôi cũng đồng tình, tôi sẽ chắt lọc ra những cái phù hợp với mình và bỏ qua toàn bộ cái còn lại.&lt;/p>
&lt;p>Nào giờ thì chúng ta sẽ cùng nhau thưởng thức một phần chương 2 của cuốn sách số 8 - **IELTS Speaking Handbook - Understand the exam **&lt;/p>
&lt;h2 id="nội-dung-sách">Nội dung sách&lt;/h2>
&lt;p>Thi Speaking sẽ gồm &lt;strong>3 phần&lt;/strong>. Phần 1 phần 2 và phần 3.&lt;/p>
&lt;p>Section 1: Warm-up.&lt;/p>
&lt;p>Tại sao lại có section 1 cho warm up?&lt;/p>
&lt;p>Bởi làm gì có ai sẵn sàng ngay lập tức.&lt;/p>
&lt;p>Trên đời này có 2 người lạ gặp nhau, bạn và giám khảo. Sẽ thật awkward cho cả
bạn và giám khảo nếu như bắt đầu test ngay lập tức.&lt;/p>
&lt;p>Chính vì vậy người ta rất thông minh khi phát minh ra cái section 1 giúp cho bạn và
cả giám khảo bình tĩnh.&lt;/p>
&lt;p>Ơ này, không phải chỉ có mỗi BẠN cần bình tĩnh, &lt;strong>GIÁM KHẢO cũng rất cần bình tĩnh&lt;/strong>.&lt;/p>
&lt;p>Nhân tiện, nếu bạn đang đọc cuốn sách này của mình, khả năng cao bạn là một học sinh “ngoan” – theo nghĩa là overly nice/friendly.&lt;/p>
&lt;p>Bạn biết không, đây là điều làm cho bạn có lợi thế hơn rất nhiều những người khác ở các vùng văn hoá khác. Họ quậy hơn và đôi khi còn annoying. Bạn nice và đó là một lợi thế giúp cho giám khảo bình tĩnh.&lt;/p>
&lt;p>Hãy nhớ nhiệm vụ của bạn là &lt;strong>làm cho giám khảo bình tĩnh&lt;/strong>, thay vì
bạn mong giám khảo làm bạn bình tĩnh.&lt;/p>
&lt;p>Vì bạn muốn bản thân bạn ở thế chủ động, bạn muốn bạn cầm đằng chuôi. Suy nghĩ trong đầu bạn không phải là &lt;em>“Liệu giám khảo có nice với mình không nhỉ?”&lt;/em>. Suy nghĩ trong đầu của bạn nên là &lt;em>“Mình phải làm gì để làm giám khảo bớt lo lắng và bình tĩnh hơn.”&lt;/em>&lt;/p>
&lt;p>Hãy luôn luôn suy nghĩ như vậy trong suốt quá trình thi.&lt;/p>
&lt;p>&lt;em>“Hmm, ông ta có vẻ hơi run, chắc ông ta ngại mình”&lt;/em>&lt;/p>
&lt;p>&lt;em>“Làm thế nào để giám khảo bớt run?”&lt;/em>&lt;/p>
&lt;p>&lt;em>“Làm thế nào để giám khảo bình tĩnh hơn?”&lt;/em>&lt;/p>
&lt;p>&lt;em>“Mình sẽ phải nice và nói chậm lại để giám khảo bớt lo lắng.”&lt;/em>&lt;/p>
&lt;p>Got it?&lt;/p>
&lt;h2 id="bình-luận-về-chương-2">Bình luận về chương 2&lt;/h2>
&lt;p>Ai cũng biết bài thi IELTS Speaking đều có 3 phần. Điều khác biệt làm nên dấu ấn của tác giả ở chương 2 này là cách tư duy &lt;strong>làm cho giám khảo bình tĩnh&lt;/strong>. Một cú lừa bộ não thật khôn khéo rằng bạn đang là người nắm quyền ở đây. Bạn không phải đi thi nữa. Bạn đang ở nhà, chém gió với người ở &lt;em>cửa dưới&lt;/em> của bạn.&lt;/p>
&lt;p>Tôi đã đọc một cuốn sách mô tả rằng chúng ta có thể tự tưởng tượng ra những hình ảnh và tin rằng chúng là những sự kiện có thật.&lt;/p>
&lt;blockquote>
&lt;p>Một người phụ nữ hồi tưởng lại quá khứ rằng mẹ cô ấy mất vì trượt chân xuống hồ bơi khi cô còn bé. Cô đã khẳng định với các nhà khoa học rằng những ký ức đấy hoàn toàn là sự thật. Nhưng rất lâu sau đó, khi tìm được những người chứng kiến cái chết của mẹ cô thì họ phát hiện là bà bị bệnh qua đời chứ không phải như những gì cô gái vẫn tin.&lt;/p>
&lt;/blockquote>
&lt;p>Con người có khả năng bóp méo ký ức và hoàn toàn tin tưởng điều này là sự thật. Tôi cũng hay dùng phương pháp này để khiến bản thân mình làm những điều đúng đắn nhiều hơn.&lt;/p>
&lt;p>Ví dụ, tôi rất lười đọc textbook, vừa dài (cỡ trên 600 trang) và lại khó. Tôi tưởng tượng rằng mình rất quý tác giả, yêu tất cả những gì tác giả làm, ngắm hình tác giả, xem websites, nghĩ về cái bìa sách thật là ngầu&amp;hellip; Kiếm mọi lý do để thích cuốn sách này và vờ như mình rất đam mê nó.&lt;/p>
&lt;p>Lúc đầu, tôi sẽ thấy hơi gượng nhưng sau khi đã luyện tập nó một thời dài thì tôi có thể làm việc này một cách tự động. Tôi đã đọc xong được 2 cuốn textbooks vào năm ngoái nhờ phương pháp này.&lt;/p>
&lt;p>Tôi nghĩ là việc đọc những cuốn trộn lẫn Anh-Việt kiểu này giúp ích cho tôi khá nhiều trong việc tư duy từ vựng. Đây là lối tư duy thông thường của đa số người học tiếng anh. Phải trải qua 2 bước thì thông tin mới tới não để xử lý.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Tiếng anh -&amp;gt; Tiếng việt -&amp;gt; Thông tin trong não
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Còn đây là cách bạn tư duy khi đọc sách của Kiên.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Tiếng anh -&amp;gt; Thông tin trong não
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Giả sử bạn đọc câu&lt;/p>
&lt;blockquote>
&lt;p>Sẽ thật &lt;strong>awkward&lt;/strong> cho cả bạn và giám khảo nếu như bắt đầu test ngay lập tức.&lt;/p>
&lt;/blockquote>
&lt;p>Ồ có một từ tiếng anh và nếu bạn không biết nghĩa của từ thì bạn hoàn toàn có thể đoán được là &amp;ldquo;&lt;strong>bất tiện&lt;/strong>&amp;rdquo;.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">awkward -&amp;gt; Cảm giác lúng túng, xấu hổ trong não
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Thay vì&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">awkward -&amp;gt; Tra nghĩa tiếng việt -&amp;gt; Cảm giác lúng túng, xấu hổ trong não
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>z-index not working?</title><link>https://japananh.github.io/blog/p/z-index-not-working/</link><pubDate>Thu, 30 Dec 2021 02:57:47 +0700</pubDate><guid>https://japananh.github.io/blog/p/z-index-not-working/</guid><description>&lt;img src="https://japananh.github.io/blog/p/z-index-not-working/cover.jpg" alt="Featured image of post z-index not working?" />&lt;h2 id="what-is-z-index">What is &lt;code>z-index&lt;/code>?&lt;/h2>
&lt;p>The &lt;code>z-index&lt;/code> property specifies the stack order of an element.&lt;/p>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>An element with greater stack order is always in front of an element with a lower stack order.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>z-index&lt;/code> only works on positioned elements (position: absolute, position: relative, position: fixed, or position: sticky) and flex items (elements that are direct children of display:flex elements).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>If two positioned elements overlap without a z-index specified, the element positioned last in the HTML code will be shown on top.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640806426481/dp8DGMhBp.png"
loading="lazy"
alt="Screenshot from 2021-12-30 02-33-25.png"
>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!--
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">If two positioned elements overlap without a z-index specified, the element positioned last in the HTML code will be shown on top.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">Box 3 is on top of box 1 because it is positioned last in the HTML.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">Box 2 is on top of box 3 because its z-index is greater than box 3.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">--&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#39;container&amp;#39;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#39;box box1&amp;#39;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>Box 1&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#39;box box2&amp;#39;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>Box 2&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#39;box box3&amp;#39;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>Box 3&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-scss" data-lang="scss">&lt;span class="line">&lt;span class="cl">&lt;span class="nc">.container&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">position&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="ni">relative&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nc">.box&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">width&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">200&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">height&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">200&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nc">.box1&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">background-color&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="no">pink&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">position&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="ni">absolute&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nc">.box2&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">background-color&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="no">yellowgreen&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">position&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="ni">absolute&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">top&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">50&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">left&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">z-index&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nc">.box3&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">background-color&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="no">orange&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">position&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="ni">absolute&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">top&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">left&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">50&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>If two positioned elements overlap, &lt;strong>element 1&lt;/strong> has a child &lt;strong>element A&lt;/strong> (z-index: 3), &lt;strong>element 2&lt;/strong> (&lt;code>z-index: 2&lt;/code>) has a child &lt;strong>element B&lt;/strong> (&lt;code>z-index: 4&lt;/code>). &lt;strong>A&lt;/strong> is on top of &lt;strong>B&lt;/strong> even its &lt;code>z-index&lt;/code> is less than B (3 &amp;lt; 4) due to the &lt;code>z-index&lt;/code> of the parent &lt;strong>element 1&lt;/strong>.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640807718084/LR6QleSKbG.png"
loading="lazy"
alt="Screenshot from 2021-12-30 02-47-23.png"
>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!--
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">If two positioned elements overlap without a z-index specified, the element positioned last in the HTML code will be shown on top.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">Box 3 is on top of box 1 because it is positioned last in the HTML.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">Box 2 is on top of box 3 because its z-index is greater than box 3.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">--&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#39;container&amp;#39;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#39;box box1&amp;#39;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>Box 1&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#39;box box2&amp;#39;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>Box 2&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#39;box box3&amp;#39;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>Box 3&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!--
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">Even box 4 has z-index: 4 is greater than box 2 (z-index: 3), box 2 still on top of box 4 due to z-index of `container2` is 2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">--&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#39;container2&amp;#39;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#39;box box4&amp;#39;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>Box 4&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-scss" data-lang="scss">&lt;span class="line">&lt;span class="cl">&lt;span class="nc">.container&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">position&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="ni">relative&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">height&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">220&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nc">.box&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">width&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">200&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">height&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">200&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">border&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="kt">px&lt;/span> &lt;span class="ni">solid&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">position&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="ni">absolute&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nc">.box1&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">background-color&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="no">pink&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nc">.box2&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">background-color&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="no">yellowgreen&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">top&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">50&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">left&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">z-index&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nc">.box3&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">background-color&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="no">orange&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">top&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">left&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">50&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nc">.container2&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">position&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="ni">relative&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">height&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">220&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">z-index&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nc">.box4&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">background-color&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="no">yellow&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">top&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">left&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">20&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">z-index&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">4&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Code demo: &lt;a class="link" href="https://codepen.io/pen/?template=qBPxjVp" target="_blank" rel="noopener"
>Codepen&lt;/a>&lt;/p></description></item><item><title>Connect the dots</title><link>https://japananh.github.io/blog/p/connect-the-dots/</link><pubDate>Thu, 30 Dec 2021 01:47:00 +0700</pubDate><guid>https://japananh.github.io/blog/p/connect-the-dots/</guid><description>&lt;img src="https://japananh.github.io/blog/p/connect-the-dots/cover.jpg" alt="Featured image of post Connect the dots" />&lt;p>I was a good student. I got high scores at school. I loved sciences, especially Mathematics. But I didn&amp;rsquo;t know what position I was supposed to do in the future.&lt;/p>
&lt;p>My early 20s started by dropping out of university. I found it not for me. Students preferred certificates over knowledge. This wasn&amp;rsquo;t how to I used to think when I was 18. I was disappointed and upset.&lt;/p>
&lt;p>To survive, I became a waitress, then a housekeeper, then a tailor. I live my career on autopilot.&lt;/p>
&lt;p>&amp;ldquo;Life is so boring. How to get out of it?&amp;rdquo; - I wondered.&lt;/p>
&lt;p>In 2017, I made friends with some Uzbeks. They were computer science students at &lt;a class="link" href="https://inha.uz/" target="_blank" rel="noopener"
>Inha University&lt;/a>. I was curious about what they do in their leisure time. So I asked them if they would like to share what they did. A week later, I wrote my first line of code in C++.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">#include &amp;lt;iostream&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">int main() {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> std::cout &amp;lt;&amp;lt; &amp;#34;Hello World!&amp;#34;;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> return 0;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>I continued to learn to code for fun. It was hard. That&amp;rsquo;s why it was so fun.&lt;/p>
&lt;p>&amp;ldquo;Should I become a coder?&amp;rdquo; - I wondered.&lt;/p>
&lt;p>2 years later, I got my first job as a Web Developer. WOW! I did it without applying for an internship. I tripled my income. Awesome!&lt;/p>
&lt;p>Last year, I experienced burnout and quit my job with no plan. Although this seemed terrible at first, I realized that not a bad decision. I started to acknowledge what I really want to become, what mistakes I made. I built some plans to expand my skillsets during this time.&lt;/p>
&lt;p>4 months later, I got my second job.&lt;/p>
&lt;p>Coming from a JavaScript background, I have always wanted to learn a static-typed programming language, this year I picked up &lt;strong>Go&lt;/strong> after reading the reviews about the language.&lt;/p>
&lt;p>Now, 15 months in, I tried to fill the gap between me - an amateur and a professional. I&amp;rsquo;m happy with my career development. I do what I love every day - to build something useful.&lt;/p>
&lt;p>If you asked me what I was supposed to be in my early 20s. I would say I don&amp;rsquo;t know. I wasn&amp;rsquo;t good at anything and not interested in anything. Now, everything has changed.&lt;/p>
&lt;blockquote>
&lt;p>You can’t connect the dots looking forward; you can only connect them looking backward. – Steve Jobs&lt;/p>
&lt;/blockquote></description></item><item><title>Accept Emotions As They Are</title><link>https://japananh.github.io/blog/p/accept-emotions-as-they-are/</link><pubDate>Thu, 30 Dec 2021 00:29:55 +0700</pubDate><guid>https://japananh.github.io/blog/p/accept-emotions-as-they-are/</guid><description>&lt;img src="https://japananh.github.io/blog/p/accept-emotions-as-they-are/cover.jpg" alt="Featured image of post Accept Emotions As They Are" />&lt;p>I live in a country where most people think emotions should be ignored. Especially, negative emotions such as fear, anger, worry, loneliness, &amp;hellip; I had a very hard time trying to hide all my strong emotions and felt ashamed if someone saw them.&lt;/p>
&lt;p>&amp;ldquo;Hey, you should be BRAVE. Don&amp;rsquo;t cry. Don&amp;rsquo;t let people see your stupid face.&amp;rdquo; - I told myself.&lt;/p>
&lt;p>The strong emotion is something like a storm. if you try to hide your feelings, they might be accumulated into strong emotions. And you won&amp;rsquo;t develop a way to recognize your feelings correctly.&lt;/p>
&lt;p>For example, I misunderstood my &lt;strong>disappointment&lt;/strong> and my &lt;strong>sleep deprivation&lt;/strong> with an anxiety disorder. I thought something was wrong with my brain because none of my friends or coworkers behave like that. But in fact, I was just worried about my career path. That was fine for a younger.&lt;/p>
&lt;p>if you &lt;strong>acknowledge&lt;/strong> and &lt;strong>transform&lt;/strong> your emotions instead of ignoring them, you won&amp;rsquo;t be afraid and won&amp;rsquo;t be overwhelmed by them.&lt;/p>
&lt;p>Of course, there are a lot of techniques to help you deal with emotions. Master Thich Nhat Hanh is one of the great people that help me to overcome my existential crisis and my burnout. He had a great &lt;a class="link" href="https://www.youtube.com/watch?v=bAbTMS-WEgM" target="_blank" rel="noopener"
>Dharma talk&lt;/a> about how to deal with strong or difficult emotions. &lt;a class="link" href="https://plumvillage.app/thich-nhat-hanh-on-how-to-deal-with-strong-emotions/" target="_blank" rel="noopener"
>Here&lt;/a> is another great post from Plum Village. You can see that all practices are so simple, you can do it everywhere, every day. I hope it helps.&lt;/p></description></item><item><title>Viết blog trên Medium - Phần 2</title><link>https://japananh.github.io/blog/p/viet-blog-tren-medium-phan-2/</link><pubDate>Wed, 29 Dec 2021 00:40:23 +0700</pubDate><guid>https://japananh.github.io/blog/p/viet-blog-tren-medium-phan-2/</guid><description>&lt;img src="https://japananh.github.io/blog/p/viet-blog-tren-medium-phan-2/cover.jpg" alt="Featured image of post Viết blog trên Medium - Phần 2" />&lt;p>&lt;a class="link" href="https://nanacoder.hashnode.dev/viet-blog-tren-medium-phan-1" target="_blank" rel="noopener"
>Phần 1&lt;/a>, tôi đã viết về cách viết bài dùng markdown trên Medium. Cả 2 cách đều khá tốn công và khó quản lý.&lt;/p>
&lt;p>Hôm nay tôi sẽ giới thiệu một cách hay đó là tạo 1 repository chứa tất cả các bài viết dưới dạng markdown, để trên Github, rồi muốn post bài nào chỉ cần gõ 1 dòng lệnh là xong.&lt;/p>
&lt;p>Và bạn còn có thể post lên được nhiều nền tảng blog khác như &lt;a class="link" href="https://dev.to/" target="_blank" rel="noopener"
>dev.to&lt;/a>.&lt;/p>
&lt;h2 id="mdm">mdm&lt;/h2>
&lt;p>Thư viện tôi dùng là &lt;a class="link" href="https://reposhub.com/nodejs/command-line-apps/pavanjadhaw-mdm.html" target="_blank" rel="noopener"
>mdm&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Bước 1,&lt;/strong> bạn phải cài thư viện mdm.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">npm i -g @pavanjadhaw/mdm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Bước 2&lt;/strong>, tạo intergration token trên Medium ở phần &lt;a class="link" href="https://medium.com/me/settings" target="_blank" rel="noopener"
>setttings&lt;/a>.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640711121441/_zIEjnsDL.png"
loading="lazy"
alt="Screenshot from 2021-12-29 00-04-21.png"
>&lt;/p>
&lt;p>&lt;strong>Bước 3&lt;/strong>, sau khi tạo xong token, bạn copy token, thêm vào cuối file &lt;code>~/.bashrc&lt;/code> hoặc &lt;code>~/.zshrc&lt;/code> như sau.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;## Medium configs&amp;#39;&lt;/span> &amp;gt;&amp;gt; ~/.bashrc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;export MEDIUM_TOKEN=&amp;#34;token here&amp;#34;&amp;#39;&lt;/span> &amp;gt;&amp;gt; ~/.bashrc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">source&lt;/span> ~/.bashrc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Bước 4&lt;/strong>, tạo &lt;code>MEDIUM_ID&lt;/code> bằng lệnh&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">mdm init
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Bước 5&lt;/strong>, thêm &lt;code>MEDIUM_ID&lt;/code> vào &lt;code>~/.bashrc&lt;/code> hoặc &lt;code>~/.zshrc&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;export MEDIUM_ID=&amp;#34;...&amp;#34;&amp;#39;&lt;/span> &amp;gt;&amp;gt; ~/.bashrc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">source&lt;/span> ~/.bashrc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Bước 6&lt;/strong>, publish bài lên Medium&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">mdm publish path/to/markdown.md
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>File markdown của bạn phải theo format ở dưới. &lt;code>status&lt;/code> có thể là &lt;code>draft&lt;/code> (bài nháp) hay là &lt;code>public&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">title: My Awesome Post
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tags: [&amp;#39;some&amp;#39;, &amp;#39;tags&amp;#39;, &amp;#39;here&amp;#39;]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">status: draft
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Và thế là chúng ta đã post bài lên Medium thành công mà không cần phải gõ trên cái editor khó chịu nữa.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640712091761/5nv6bLYZI.png"
loading="lazy"
alt="264435404_241232288150314_668586592651422605_n.png"
>&lt;/p>
&lt;h2 id="post-bài-lên-devto">Post bài lên dev.to&lt;/h2>
&lt;p>Để post bài lên dev.to, bạn cần chạy script sau.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -X POST -H &lt;span class="s2">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> -H &lt;span class="s2">&amp;#34;api-key: &amp;lt;your-api-key&amp;gt;&amp;#34;&lt;/span> -d &lt;span class="s1">&amp;#39;&amp;lt;your-content&amp;gt;&amp;#39;&lt;/span> https://dev.to/api/articlesL161UPYsb&lt;span class="s2">&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Trong đó:&lt;/p>
&lt;ul>
&lt;li>&lt;code>&amp;lt;your-api-key&amp;gt;&lt;/code> bạn lấy ở dev.to phần settings.&lt;/li>
&lt;li>&lt;code>&amp;lt;your-content&amp;gt;&lt;/code> là nội dung bài viết của bạn. Ví dụ&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="o">{&lt;/span>&lt;span class="s2">&amp;#34;article&amp;#34;&lt;/span>:&lt;span class="o">{&lt;/span>&lt;span class="s2">&amp;#34;title&amp;#34;&lt;/span>:&lt;span class="s2">&amp;#34;Title&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;body_markdown&amp;#34;&lt;/span>:&lt;span class="s2">&amp;#34;&amp;lt;h1&amp;gt;Body&amp;lt;/h1&amp;gt;&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;published&amp;#34;&lt;/span>:false,&lt;span class="s2">&amp;#34;tags&amp;#34;&lt;/span>:&lt;span class="o">[&lt;/span>&lt;span class="s2">&amp;#34;discuss&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;javascript&amp;#34;&lt;/span>&lt;span class="o">]}}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="refferences">Refferences&lt;/h2>
&lt;ul>
&lt;li>&lt;a class="link" href="https://reposhub.com/nodejs/command-line-apps/pavanjadhaw-mdm.html" target="_blank" rel="noopener"
>https://reposhub.com/nodejs/command-line-apps/pavanjadhaw-mdm.html&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://developers.forem.com/api#operation/createArticle" target="_blank" rel="noopener"
>https://developers.forem.com/api#operation/createArticle&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Viết blog trên Medium - Phần 1</title><link>https://japananh.github.io/blog/p/viet-blog-tren-medium-phan-1/</link><pubDate>Tue, 28 Dec 2021 01:43:20 +0700</pubDate><guid>https://japananh.github.io/blog/p/viet-blog-tren-medium-phan-1/</guid><description>&lt;img src="https://japananh.github.io/blog/p/viet-blog-tren-medium-phan-1/cover.jpg" alt="Featured image of post Viết blog trên Medium - Phần 1" />&lt;p>Hầu hết bạn bè tôi đều đọc bài trên &lt;strong>Medium&lt;/strong> và chính tôi cũng thấy trang này khá thú vị. Đã quen viết &lt;strong>markdown&lt;/strong> (&lt;strong>md&lt;/strong>) trên &lt;strong>Hashnode&lt;/strong> và &lt;strong>Notion&lt;/strong> nên tôi đã nghĩ chắc editor của Medium cũng hỗ trợ markdown nên copy nguyên text vào và nhấn nút &lt;strong>Publish&lt;/strong>.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640628381610/u7m7BaHtx.png"
loading="lazy"
alt="Screenshot from 2021-12-28 01-04-42.png"
>&lt;/p>
&lt;p>Ai ngờ editor xịn quá lại copy vào ký tự gì là hiện thị giống hệt. Có một sự thất vọng không hề nhẹ. =))&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640628364752/cGNpJS3kN.png"
loading="lazy"
alt="Screenshot from 2021-12-28 01-05-10.png"
>&lt;/p>
&lt;p>Tôi mò lên google search thử thì phát hiện ra hai cách dùng markdown trong Medium.&lt;/p>
&lt;ul>
&lt;li>Cách 1: Tạo 1 file &lt;code>gist&lt;/code> có nội dung bạn mong muốn rồi import vào Medium. Chọn mục &lt;code>Stories -&amp;gt; Import a story&lt;/code> hoặc vào đường dẫn &lt;a class="link" href="https://medium.com/p/import" target="_blank" rel="noopener"
>https://medium.com/p/import&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640629061869/zDOVZ08Oc.png"
loading="lazy"
alt="Screenshot from 2021-12-28 01-17-08.png"
>&lt;/p>
&lt;ul>
&lt;li>Cách 2: Dùng tool convert markdown sang định dạng text của Medium, rồi copy vào editor. Bạn có thể tham khảo tool &lt;a class="link" href="http://markdown-to-medium.surge.sh/" target="_blank" rel="noopener"
>markdown-to-medium&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640630582869/rwDHGBw1l.png"
loading="lazy"
alt="Screenshot from 2021-12-28 01-42-35.png"
>&lt;/p>
&lt;p>Vốn là một đứa lười biếng, tôi ngồi mò tiếp để viết script tự động post bài từ repository trên Github lên Medium. Tôi tìm được 2 thư viện là &lt;a class="link" href="https://github.com/andremueller/md-publisher" target="_blank" rel="noopener"
>md-publisher&lt;/a> và &lt;a class="link" href="https://github.com/fanderzon/markdown-to-medium-tool" target="_blank" rel="noopener"
>mdm&lt;/a>.&lt;/p>
&lt;p>Bài hôm nay tạm dừng ở đây. Mai tôi sẽ viết tiếp về phần chạy hai thư viện này.&lt;/p></description></item><item><title>Bốn chấm không</title><link>https://japananh.github.io/blog/p/bon-cham-khong/</link><pubDate>Mon, 27 Dec 2021 17:54:11 +0700</pubDate><guid>https://japananh.github.io/blog/p/bon-cham-khong/</guid><description>&lt;img src="https://japananh.github.io/blog/p/bon-cham-khong/cover.jpg" alt="Featured image of post Bốn chấm không" />&lt;p>Tôi viết bài này tổng hợp lại những điểm nhấn trong &lt;strong>Bốn Chấm Không&lt;/strong> với mục đích là giúp bản thân mình &lt;strong>dễ dàng tra cứu lại&lt;/strong> sau này. Việc nghe lại một podcast dài gần 1 tiếng dù các hosts đã đính kèm mục lục nhiều khi khá tốn thời gian, trong khi tôi còn một danh sách dài những thứ phải đọc và nghe.&lt;/p>
&lt;p>Podcast được tạo bởi hai bạn nữ tài năng là &lt;strong>Trúc Giang&lt;/strong> và &lt;strong>Thùy Ngân&lt;/strong>. Nội dung podcast chia sẻ câu chuyện từ những người thành công và những lời khuyên về nghề nghiệp và cuộc sống.&lt;/p>
&lt;p>Đây là &lt;a class="link" href="https://open.spotify.com/show/0rbO8LhEBKGx2nsZ8ABCxG" target="_blank" rel="noopener"
>link&lt;/a> playlist nghe các tập trên nền tảng Spotify. Nếu thấy quảng cáo đau tai quá thì bạn có thể nghe trên các nền tảng khác như Apple podcast, Google Podcasts và &lt;a class="link" href="https://www.listennotes.com/podcasts/b%E1%BB%91n-ch%E1%BA%A5m-kh%C3%B4ng-truc-giang-thuy-ngan-K35htWisBGo/" target="_blank" rel="noopener"
>listennotes&lt;/a>.&lt;/p>
&lt;h2 id="profile-khủng-của-hosts-và-speakers">Profile khủng của hosts và speakers&lt;/h2>
&lt;ul>
&lt;li>12&lt;/li>
&lt;/ul>
&lt;p>Bạn Trúc Giang từng học tại UCLA, hiện đang làm ở một công ty khởi nghiệp tại San Francisco, công ty chuyên về mảng công nghệ cho quảng cáo.&lt;/p>
&lt;p>Sở thích: lướt sóng, đi lặn, đi du lịch bụi, đi cắm trại và học ngôn ngữ (Tiếng Nhật và Tiếng Hoa).&lt;/p>
&lt;ul>
&lt;li>12&lt;/li>
&lt;/ul>
&lt;p>Bạn Thùy Ngân từng học tại Yale, hiện đang làm kỹ sư nghiên cứu tại &lt;a class="link" href="https://deepmind.com/" target="_blank" rel="noopener"
>DeepMind&lt;/a>, một công ty nghiên cứu trí tuệ nhân tạo.&lt;/p>
&lt;p>Sở thích: trượt băng nghệ thuật và các bộ môn nghệ thuật thủ công như vẽ, chơi đàn và viết thư pháp.&lt;/p>
&lt;ul>
&lt;li>2&lt;/li>
&lt;/ul>
&lt;p>Chị Liên là kỹ sư phần mềm kiêm nhà sản xuất âm nhạc. &lt;a class="link" href="https://kenh14.vn/doi-song/nu-sinh-viet-gianh-hoc-bong-hang-dau-nuoc-my-20120617061322778.chn" target="_blank" rel="noopener"
>Đây&lt;/a> là bài báo viết về thành tích đáng ngưỡng mộ của chị vào năm 2012.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638896708975/HZKwz-64t.png"
loading="lazy"
alt="Screenshot from 2021-12-08 00-03-31.png"
>&lt;/p>
&lt;ul>
&lt;li>4&lt;/li>
&lt;/ul>
&lt;p>Chị Sunny đang làm Project manager, tốt nghiệp bằng Thạc sỹ Quản trị kinh doanh từ trường Haas tại Đại học Berkeley.&lt;/p>
&lt;p>Tuấn tốt nghiệp cử nhân ngành Khoa học dữ liệu và xác xuất thống kê tạo trường Đại học Yale, đang làm Nhà khoa học dữ liệu tại Quora, một công ty khởi nghiệp tại thung lũng Silicon với nền tảng đặt câu hỏi và trả lời.&lt;/p>
&lt;p>Chị Zoe từng là Content Data Analyst (phân tích dữ liệu nội dung) tại Facebook và Product Manager (quản lý sản phẩm) tại start-up Elsa.&lt;/p>
&lt;p>Anh Chân Lê từng là kỹ sư phần mềm và Tech Lead tại Salesforce, Facebook, Asana, và Misfit.&lt;/p>
&lt;p>Lam hiện đang là kỹ sư phần mềm tại Facebook, Luân Đôn, từng đạt học bổng toàn phần hội thảo Grace Hopper khi còn là sinh viên Đại học công nghệ thông tin TP.HCM.&lt;/p>
&lt;ul>
&lt;li>12&lt;/li>
&lt;/ul>
&lt;p>Hai co-founders của &lt;a class="link" href="https://open.spotify.com/show/0EqIckZgJ5fvURvWFNXeTg" target="_blank" rel="noopener"
>Ta Đi Tây&lt;/a>, một podcast về những câu chuyên thực tế, lời khuyên về đi du học và sống và làm việc ở nước ngoài.&lt;/p>
&lt;h2 id="những-khuôn-mẫu">Những khuôn mẫu&lt;/h2>
&lt;p>Mười ba tập, mỗi tập đều có một khách mời xuất sắc trong ngành công nghệ. Mỗi người một vẻ, ai cũng có những chiến lược và sở thích khác nhau. Tuy nhiên, đây là những điểm chung nổi bật (khuôn mẫu) mà tôi thấy từ họ hay từ bất cứ người giỏi khác mà tôi được biết câu chuyện của họ.&lt;/p>
&lt;p>Tất cả họ đều &lt;strong>bắt đầu từ rất sớm&lt;/strong> (từ cấp 2, cấp 3, đại học) và đều &lt;strong>có định hướng sớm&lt;/strong>. Họ đều là người &lt;strong>tò mò về thế giới xung quanh&lt;/strong>.&lt;/p>
&lt;p>Tôi rút ra hai điều là:&lt;/p>
&lt;ul>
&lt;li>Nếu bạn bắt đầu muộn, giả sử 23 tuổi mới nhận ra mình lãng phí tuổi trẻ chẳng hạn thì đừng có lo vì bạn còn có RẤT RẤT nhiều năm còn lại để phấn đấu. Không có nỗ lực nào là uổng phí cả.&lt;/li>
&lt;/ul>
&lt;p>Tôi từng đọc ở một cuốn sách rằng&lt;/p>
&lt;blockquote>
&lt;p>Giả sử bạn cố gắng học IELST mà không đạt được 8 chấm, thì cái bạn ngã xuống là 7 chấm, 6 chấm. Bạn giỏi hơn số đông rất nhiều.&lt;/p>
&lt;/blockquote>
&lt;p>Đại ý của câu ấy là cứ làm đi đừng hỏi rằng làm bao lâu thì xong vì cứ ngóng mãi cái đích đấy rồi thấy con đường mình đi dài quá nên nản. Cứ làm đi, trải nghiệm đi, sai và sửa thì thành công sẽ đến với bạn.&lt;/p>
&lt;ul>
&lt;li>Trước khi có gia đình hãy nghĩ tới sự phát triển của con cái bạn, hãy học cách nuôi dạy trẻ. Chúng ta không thể đẩy hết trách nhiệm giáo dục con cái mình cho nhà trường và xã hội. Có thể bạn chỉ là người rất bình thường nhưng biết đâu đấy con bạn sẽ thành những thiên tài có ích cho xã hội.&lt;/li>
&lt;/ul>
&lt;p>Họ đều chủ động tìm kiếm những người cộng sự, người thầy giỏi. Mỗi speaker đều nhắn tới ít nhất một vài người đã làm nên sự thành công của họ. Ai cũng đề cao làm việc nhóm.&lt;/p>
&lt;p>Chị Sunny (tập 3) chọn các khóa học mà những bạn học cùng đều có cùng background và cùng chí hướng giống mình với mục đích là &amp;ldquo;Biết đâu đấy sau này chị có thể tìm được co-founder cho một start-up trong tương lai của chị&amp;rdquo;.&lt;/p>
&lt;p>Chị Liên Trần thì nói trong tập 1 rằng&lt;/p>
&lt;blockquote>
&lt;p>Những người thành công nhất là những người có khả năng hợp tác, trao đổi thông tin, lắng nghe, đưa ra quyết định cùng với người khác.&lt;/p>
&lt;/blockquote>
&lt;p>Khi host Ngân nhắc tới từ &lt;strong>Circle of five&lt;/strong> trong tập 11 thì tôi nghĩ ngay tới câu nói nổi tiếng của Jim Rohn.&lt;/p>
&lt;blockquote>
&lt;p>Thu nhập của bạn là trung bình của 5 người bạn tiếp xúc nhiều nhất.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>You are the average of the five people you spend the most time with.&lt;/p>
&lt;/blockquote>
&lt;p>Điểm tôi quan tâm ngoài những bí quyết nghề là cuộc sống của họ sau công việc. &lt;strong>Cuộc sống ấy như thế nào? Đa sắc hay đơn sắc?&lt;/strong> Cô bạn Trúc Giang thích lướt sóng và đi lặn. Cô bạn Thùy Ngân thích trượt băng nghệ thuật và các môn thủ công. Chị Liên Trần vừa là kỹ sư máy tính vừa làm nhà sản xuất âm nhạc. Anh Chân Lê có hiểu biết rộng về lĩnh vực tài chính và có rất nhiều lời khuyên về đầu tư bổ ích cho các bạn software engineer ở tập 9.&lt;/p>
&lt;p>Khi bạn bị vây quanh bởi những con người sống hời hợt, đi làm, đi học để kiếm tiền, không tập thể dục thì những câu chuyện ấy như những tia sáng len lỏi khắp khoảng không u tối ấy. Như anh bạn Raxcolnicov gặp cô bé Xonia trong Tội ác và trừng phạt của Dostoevsky, để rồi tấm lòng trong sáng của cô khiến kẻ giết người thay đổi suy nghĩ.&lt;/p>
&lt;blockquote>
&lt;p>Hope is being able to see that there is light despite all of the darkness.&lt;/p>
&lt;/blockquote>
&lt;p>Anh Dũng Bùi có nói trong tập 11 rằng&lt;/p>
&lt;blockquote>
&lt;p>Ở Mỹ, mọi người không đợi sự cho phép từ bên ngoài để làm điều họ muốn &amp;hellip; Khi mà anh và Linh bắt đầu làm podcast thì anh chưa có kinh nghiệm gì liên quan tới podcast và thu âm. Nếu anh đợi cho tới khi anh đủ kiến thức rồi thì không biết bao giờ Ta đi Tây mới được lên sóng.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Cái gì mình thiếu thì mình không phải đợi người khác cho mình mà mình phải tự tạo ra cho mình.&lt;/p>
&lt;/blockquote>
&lt;h2 id="những-lời-khuyên-dành-cho-các-bạn-trẻ">Những lời khuyên dành cho các bạn trẻ&lt;/h2>
&lt;p>Chị Liên Trần có kể câu chuyện về việc lý do chị lựa chọn giữa &lt;strong>Apple&lt;/strong> (Công ty công nghệ) và &lt;strong>BridgeWater&lt;/strong> (Quỹ quản lý tiền lớn nhất trên thế giới) (ở phút thứ 13 tập 2) vì ở &lt;a class="link" href="https://www.bridgewater.com/" target="_blank" rel="noopener"
>BridgeWater&lt;/a> thì &lt;strong>Quant Trader&lt;/strong> mới là &lt;strong>first-class citizen&lt;/strong> (hiểu là những người &lt;em>tạo ra nhiều giá trị nhất&lt;/em> cho công ty nên sẽ &lt;em>được trân trọng nhiều hơn&lt;/em>), không phải là Engineer.&lt;/p>
&lt;p>Bài học ở đây là chúng ta cần phải &lt;strong>tìm hiểu kỹ về công ty trước khi ứng tuyển&lt;/strong>. Công ty này đang làm gì? Vị trí mình ứng tuyển sẽ làm gì? Liệu công ty này có cho mình những kỹ năng mình muốn không? &amp;hellip;&lt;/p>
&lt;p>Với tôi, đây là cái lời khuyên hay nhất và đúng thời điểm nhất vì nó giúp tôi giải thích những lỗi sai của chính mình trong quá khứ.&lt;/p>
&lt;p>Bài học từ chị Sunny là &lt;strong>nói ra nguyện vọng bản thân, những thứ mình chịu được và không&lt;/strong> &amp;hellip; (Tôi đã không nhớ được là ở phút thứ bao nhiêu ở tập 3 và 4)&lt;/p>
&lt;p>Khi đi làm, tôi thấy rất ít người nói ra mình muốn được hợp tác như nào khi vào một team mới. Đa số sẽ lao ngay vào đọc tài liệu, đọc code. Rồi khi có vấn đề gì sẽ &amp;ldquo;Một điều nhịn, chín điều lành&amp;rdquo;.&lt;/p>
&lt;p>Tôi nghĩ mọi người nên chủ động hơn, đặt ra những giới hạn cho riêng bản thân mình. Chỉ khi có những tiêu chí này thì bạn mới biết đâu là công ty phù hợp, đồng đội phù hợp.&lt;/p>
&lt;p>Sau đây là những lý do mọi người nên cân nhắc nhảy việc từ anh Chân Lê ở tập số 8.&lt;/p>
&lt;ul>
&lt;li>&amp;ldquo;Thời gian trung bình cho một công ty gắn bó với một công ty công nghệ là &lt;strong>1.5 năm&lt;/strong>. Vậy nên 2 năm không nhảy đã là lâu lắm rồi.&amp;rdquo; Tôi không rõ anh ấy lấy số liệu từ đâu. Đây là con số trên tờ &lt;a class="link" href="https://www.businessinsider.com/average-employee-tenure-retention-at-top-tech-companies-2018-4#dropbox-which-just-had-a-giant-ipo-also-struggles-to-retain-talent-the-average-employee-stays-for-21-years-2" target="_blank" rel="noopener"
>Business Insider&lt;/a> ở một vài công ty công nghệ siêu bự. &lt;em>Uber khoảng 1.8 năm, Dropbox khoảng 2.1 năm, Tesla khoảng 2.1 năm&lt;/em>.&lt;/li>
&lt;li>Nâng cao kỹ năng cho bản thân.&lt;/li>
&lt;li>Nhảy lương tốt hơn.&lt;/li>
&lt;/ul>
&lt;p>Sau đây là bí quyết từ host Ngân, một người rất thành công trong việc tạo kết nối với những người giỏi.&lt;/p>
&lt;p>Google những người nổi tiếng nhất trong ngành mà bạn quan tâm, đọc profile của họ, xem họ đã đi con đường như nào, đã học những gì để biết xem liệu họ có những kỹ năng mình mong muốn có không.&lt;/p>
&lt;p>Hãy tìm cách liên lạc với họ qua Linkedin hoặc email hoặc ở các hội thảo. Bạn nên tìm hiểu trước vấn đề của mình trước khi tư vấn tìm lời khuyên. Tránh hỏi các câu chung chung. Ví dụ,&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Anh ơi, em muốn du học Mỹ thì giờ phải làm gì?&amp;rdquo;.&lt;/p>
&lt;/blockquote>
&lt;p>Câu hỏi nên rõ ràng, chi tiết vào vấn đề mình cần hỏi. Ví dụ,&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Chào chị, em đang trong interview loop của Meta cho vị trí Enterprise Engineer Intern ạ. Qua tìm hiểu thì em biết chị đã từng làm vị trí này rồi, chị cho em hỏi vị trí này có khác gì so với SWE Intern không?&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;h2 id="nguồn-tài-liệu-hay">Nguồn tài liệu hay&lt;/h2>
&lt;p>Đây là danh sách một số nguồn tài liệu mà tôi tâm đắc qua chia sẻ của các hosts và speakers. Bạn có thể xem thêm ở phần đính kèm mỗi podcast. Nếu bạn biết những nguồn hữu ích khác xin hãy comment vào bài viết này.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>So good they can&amp;rsquo;t ignore you - Cal Newport&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Deep work - Cal Newport&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Digital minimalism - Cal Newport: cho những người cảm thấy bị cuốn đi bởi thế giới số.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Algorithm to live by - Kyoko Tazawa&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a class="link" href="https://open.spotify.com/show/0eaFZXUh8qys3c0Wr3vrA3" target="_blank" rel="noopener"
>Women in Data science&lt;/a>: podcast phỏng vấn nhiều nhà khoa học dữ liệu, chia sẻ công việc, lời khuyên và bài học kinh nghiệm của họ với Giáo sư Margot Gerritsen từ Đại học Stanford.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a class="link" href="https://podcasts.apple.com/us/podcast/fyi-for-your-innovation/id1271691895" target="_blank" rel="noopener"
>For your innovation (FYI)&lt;/a>: nói về sự giao thoa giữa công nghệ và đầu tư&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a class="link" href="https://lexfridman.com/podcast/" target="_blank" rel="noopener"
>Lex Fridman&lt;/a>: phỏng vấn rất nhiều người giỏi trong nhiều ngành nghề khác nhau, tập trung vào khoa học máy tính. Đây là một trong những kênh yêu thích của tôi và chính anh Lex cũng là nguồn cảm hứng cho tôi tập tạ.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a class="link" href="https://www.youtube.com/c/samharrisorg" target="_blank" rel="noopener"
>Sam Harris&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a class="link" href="https://www.coursera.org/" target="_blank" rel="noopener"
>Coursera&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a class="link" href="https://gradadm.seas.upenn.edu/masters/computer-and-information-technology-mcit/" target="_blank" rel="noopener"
>Chương trình Master of Computer and Information Technology (MCIT) Program tại Đại học Pennsylvania (UPenn)&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a class="link" href="https://www.facebook.com/groups/140855933170209" target="_blank" rel="noopener"
>Intern candidates meet referrers&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a class="link" href="https://www.facebook.com/groups/VietUXPMGroup" target="_blank" rel="noopener"
>Viet UX-PM&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>Để đọc sách không còn là một thói quen xa vời</title><link>https://japananh.github.io/blog/p/de-doc-sach-khong-con-la-mot-thoi-quen-xa-voi/</link><pubDate>Mon, 27 Dec 2021 01:14:54 +0700</pubDate><guid>https://japananh.github.io/blog/p/de-doc-sach-khong-con-la-mot-thoi-quen-xa-voi/</guid><description>&lt;img src="https://japananh.github.io/blog/p/de-doc-sach-khong-con-la-mot-thoi-quen-xa-voi/cover.jpg" alt="Featured image of post Để đọc sách không còn là một thói quen xa vời" />&lt;p>Dạo gần đây tôi tham gia vào một nhóm đọc sách. Cảm giác lúc đầu là rất vui vì mong chờ gặp được những người bạn ham học hỏi và thích tìm tòi cái mới. Theo công thức &lt;strong>Happiness = Reality - Expectation&lt;/strong>, sau vài buổi tham gia thì &lt;strong>Happiness&lt;/strong> của tôi về mức âm. Chắc là do Expectation và mọi người hay chia sẻ lúc 11 giờ đêm - cái giờ tôi đi ngủ.&lt;/p>
&lt;p>Tôi nhận thấy việc đọc đối với phần lớn mọi người đều là thứ gì đó xa vời và khó khăn. Trong khi việc đó đối với tôi đơn giản như ăn vậy. Để lý giải điều này, tôi đã cố nhớ lại chuyện trong quá khứ để tìm hiểu điều gì đã khiến tôi từ một đứa không thích đọc trở thành con người thích đọc của hiện tại.&lt;/p>
&lt;p>Sau đây là một vài lý do của tôi. Hi vọng chúng sẽ giúp ích cho bạn.&lt;/p>
&lt;h2 id="đọc-để-giải-quyết-vấn-đề">Đọc để giải quyết vấn đề&lt;/h2>
&lt;p>Tôi nghĩ mình đã đọc vô định theo kiểu &lt;em>&amp;ldquo;trưởng giả học làm sang&amp;rdquo;&lt;/em> trong rất nhiều năm trời cho tới ngày tôi nảy ra cái ý tưởng &lt;strong>đọc sách để giải quyết vấn đề&lt;/strong>.&lt;/p>
&lt;p>Lý do là tôi quá bận, quá mệt với việc bơi giữa một đại dương sách mà cuốn nào cũng được tung hô là best-seller. Chả biết đọc những cuốn KINH ĐIỂN đó có khiến mình thông minh lên không, tôi chỉ biết là tôi đã thấy rất KINH KHỦNG.&lt;/p>
&lt;p>Tôi bắt đầu nhìn vào quỹ thời gian có hạn của mình và thấy việc trì trệ trong công việc là do mình đã tìm hiểu quá nhiều thứ mà không áp dụng được vào công việc và cuộc sống.&lt;/p>
&lt;p>Ví dụ, đọc một cuốn sách nghiên cứu về lịch sử loài người sẽ giúp ích cho tôi nếu tôi là nhà khảo cổ học nhưng lại chẳng đem lại nhiều ích lợi cho một kỹ sư công nghệ.&lt;/p>
&lt;p>Làm sao tôi có thể bình thản đọc sách khi tôi đang gặp một con bug to siêu to khổng lồ?&lt;/p>
&lt;p>Làm sao tôi có thể bình thản đọc sách khi mà thu nhập của tôi không đủ cho tôi một cuộc sống thoải mái?&lt;/p>
&lt;h2 id="vượt-ra-khỏi-vòng-tròn-thoải-mái">Vượt ra khỏi vòng tròn thoải mái&lt;/h2>
&lt;p>Khi đọc cùng một thể loại sách, tôi rất dễ bị bias và ngộ nhận về thế giới. Thể loại sách yêu thích của tôi là truyện thiếu nhi, có chút lãng mạn, bay bổng như Hoàng tử bé và Khu vườn bí mật. Tôi nghĩ những cuốn sách này rất thích hợp để nuôi dưỡng tình yêu thương trong mỗi con người.&lt;/p>
&lt;p>Tuy nhiên, cuộc sống không chỉ có mỗi màu hồng. Nó có cả thiện và ác. Thậm chí, nhiều khi thiện ác lẫn lội. Và nếu chỉ đọc những cuốn sách êm đềm kia, tôi nghĩ mình sẽ chả bao giờ có đủ linh hoạt để ứng phó với sự phức tạp của cuộc sống hiện đại.&lt;/p>
&lt;p>Việc lao mình vào đọc những cuốn sách mô tả hiện thực khắc nghiệt, nơi cái xấu ở khắp mọi nơi như &lt;strong>Hẹn gặp lại ở trên kia&lt;/strong> hay &lt;strong>Tội ác và trừng phạt&lt;/strong> sẽ khiến tôi có một cái nhìn khác về cuộc sống.&lt;/p>
&lt;p>Lúc đầu, tôi thấy rất khổ sở, khó chịu và chỉ muốn vứt sách đi vì cuộc sống của những nhân vật trong đấy vượt quá sức chịu đựng của mình. Nhưng càng về sau, tôi thấy mình bớt mộng mơ đi và thông cảm cho những ai đã từng làm tổn thương tôi.&lt;/p>
&lt;h2 id="đọc-từ-dễ-lên-khó">Đọc từ dễ lên khó&lt;/h2>
&lt;p>Một trong những quyết định ngu ngốc nhất của tôi khi tìm hiểu một vấn đề, tôi hay mua những cuốn sách phức tạp về đọc thay vì đọc những cuốn dễ hiểu hơn.&lt;/p>
&lt;p>Nếu bạn không biết gì về dinh dưỡng, lao đầu vào đọc cuốn &lt;strong>The China Study&lt;/strong> của Tiến sỹ Colin Campbell và Thomas Campbell sẽ khiến bạn dễ nản chí và bỏ cuộc chỉ sau vài chương sách. Có ba lý do.&lt;/p>
&lt;p>Thứ nhất, cuốn sách này &lt;em>dài hơn 400 trang&lt;/em>.&lt;/p>
&lt;p>Thứ hai, cuốn này có rất nhiều &lt;em>từ ngữ chuyên ngành&lt;/em>, dù bạn có đọc bản tiếng việt thì bạn cũng cần phải tra thêm Google để hiểu.&lt;/p>
&lt;p>Thứ ba, đây là &lt;em>sách kỹ thuật&lt;/em>, không có cảm xúc ở đây, nếu chỉ đọc cho vui không mục đích hay muốn luyện tiếng anh thì bạn sẽ thấy thất vọng vô cùng.&lt;/p>
&lt;p>Tôi nhớ mình đọc cuốn này vì muốn tìm cho ra một chế độ ăn khiến tôi hết viêm lỗ chân lông. Tôi đã đọc bản tiếng anh cuốn này trong vòng 6 tháng (vì lúc đó chưa hề có bản tiếng việt). Tôi phải tra Google tới 40% số từ trong một trang và đọc xong cuốn này thì reading của tôi lên một tầm cao mới. =))&lt;/p>
&lt;p>Tôi không nghĩ bây giờ mình không đủ rảnh để dành vài tiếng một ngày trong vài tháng để đọc một cuốn sách khó nhằn như thế. Nếu có cỗ máy thời gian, tôi sẽ khuyên mình đọc một cuốn dễ hơn là Ruột ơi là ruột của Giulia Enders. Bạn có thể đọc thêm review cuốn này của tôi ở &lt;a class="link" href="https://nanacoder.hashnode.dev/ruot-oi-la-ruot" target="_blank" rel="noopener"
>đây&lt;/a>.&lt;/p>
&lt;h2 id="đọc-bằng-máy-đọc-sách">Đọc bằng máy đọc sách&lt;/h2>
&lt;p>Tôi nghĩ mua Kindle là một quyết định sáng suốt. Thay vì ôm một cuốn sách cỡ 400 trang, nặng chịch, cầm mỏi cả tay và hay gặp tai nạn sách rơi vào mặt mỗi khi nằm đọc sách thì giờ tôi đã có một em Kindle bé xinh, nhỏ gọn, muốn chứa bao nhiêu sách cũng được.&lt;/p>
&lt;p>Một ưu điểm khác của Kindle là đọc sách buổi tối không cần phải bật đèn quá sáng như đọc sách giấy và nhìn màn hình cũng không thấy mỏi mắt. Tôi đã đọc sách bằng Kindle như một liệu pháp vượt qua chứng khó ngủ trong giai đoạn burnout.&lt;/p>
&lt;p>Disclamer: Tôi không hề quảng cáo cho Kindle. Bạn có thể mua máy đọc sách của bất kỳ hãng nào miễn là máy nhẹ và trải nghiệm đọc của bạn tốt.&lt;/p>
&lt;h2 id="audiobookpodcast">Audiobook/Podcast&lt;/h2>
&lt;p>Tôi nghĩ mình có khá nhiều thời gian chết trong ngày. Tính sơ ra thì tôi cũng phải dành cỡ 2-2.5 tiếng một ngày cho việc nhà, vệ sinh cá nhân và nấu ăn. Đó đều là những công việc siêu nhàm chán. Não tôi cứ chạy tung tăng khắp nơi, từ công ty cho tới con bug siêu bự, rồi lại anh chàng dễ thương nào đó.&lt;/p>
&lt;p>Để thấy mình sống có ích hơn và để não thôi không nghĩ lung tung thì tôi cắm headphone vào và nghe audiobook hoặc podcast. Những lúc giải trí như này thì tôi hay nghe những thứ nhẹ nhàng thôi. Ví dụ, &lt;a class="link" href="https://soundcloud.com/radiokientran" target="_blank" rel="noopener"
>Radio Kien Tran&lt;/a>, podcast của anh &lt;a class="link" href="https://lexfridman.com/podcast/" target="_blank" rel="noopener"
>Lex Fridman&lt;/a> hay của bác &lt;a class="link" href="https://www.youtube.com/channel/UC2D2CMWXMOVWx7giW1n3LIg" target="_blank" rel="noopener"
>Huberman&lt;/a>.&lt;/p>
&lt;h2 id="tổng-kết">Tổng kết&lt;/h2>
&lt;p>Ngoài những cách kể trên thì kỹ thuật đọc tốt sẽ giúp bạn tiếp thu kiến thức nhanh hơn. Tôi đã đọc cuốn &lt;a class="link" href="https://www.goodreads.com/book/show/23573651-c-s-ch-si-u-t-c" target="_blank" rel="noopener"
>Đọc Sách Siêu Tốc&lt;/a> và thấy rất hữu ích. Trên thị trường có khá nhiều cuốn có nội dung tương tự nhau, bạn có thể tìm đọc một cuốn bất kỳ.&lt;/p></description></item><item><title>Handbook of thinking smart - Marginal Revenue vs Marginal Cost</title><link>https://japananh.github.io/blog/p/handbook-of-thinking-smart-marginal-revenue-vs-marginal-cost/</link><pubDate>Sun, 26 Dec 2021 01:02:35 +0700</pubDate><guid>https://japananh.github.io/blog/p/handbook-of-thinking-smart-marginal-revenue-vs-marginal-cost/</guid><description>&lt;img src="https://japananh.github.io/blog/p/handbook-of-thinking-smart-marginal-revenue-vs-marginal-cost/cover.jpg" alt="Featured image of post Handbook of thinking smart - Marginal Revenue vs Marginal Cost" />&lt;p>I read &lt;strong>Handbook of thinking smart&lt;/strong>, the third book that was written by a Vietnamese author - &lt;strong>Kien Tran&lt;/strong>. I started to follow him in 2018. His first book - Handbook of IELTS motivated me to learn English from a zero to an intermediate. Although he received a bad reputation due to a fake IELTS certificate and other bad things, I still found a lot of useful advice in his books. Today, I&amp;rsquo;m gonna share the first chapter of this book with you.&lt;/p>
&lt;h2 id="marginal-revenue-vs-marginal-cost-mr-vs-mc">Marginal Revenue vs Marginal Cost (MR vs MC)&lt;/h2>
&lt;p>You make decisions every day. Have you ever considered what you are doing is valuable or not?&lt;/p>
&lt;p>In this chapter, he introduces a famous concept in economics that you can apply immediately.&lt;/p>
&lt;blockquote>
&lt;p>Always compare &lt;strong>Marginal Revenue&lt;/strong> (&lt;strong>MR&lt;/strong>) and &lt;strong>Marginal Cost&lt;/strong> (&lt;strong>MC&lt;/strong>).&lt;/p>
&lt;/blockquote>
&lt;p>MR is a benefit you get after you make a product.&lt;/p>
&lt;p>MC is a cost you pay after you make a product.&lt;/p>
&lt;p>You hesitate to stay up an hour to do some IELTS reading exercises.&lt;/p>
&lt;p>What is MR? It is a benefit you get after an hour of practicing IELTS.&lt;/p>
&lt;p>What is MC? It is a cost you pay after an hour of practicing IETLS.&lt;/p>
&lt;p>It&amp;rsquo;s 9 PM. If you stay up to 10 PM, you might finish 10 exercises. So 10 exercises are your MR.&lt;/p>
&lt;p>Will you lose anything in that hour? Not much. You are not sleepy. You only lose an hour for doing something else. Therefore, MR &amp;gt; MC. You lose an hour to finish 10 exercises. You are happy and satisfied.&lt;/p>
&lt;p>Example 2 is similar to the one above, but instead of 9 PM to 10 PM, it is 3 AM to 4 AM.&lt;/p>
&lt;p>What is MR? It is a benefit you get after an hour of practicing IELTS. You&amp;rsquo;ll be sleepy, so you might not finish 10 exercises. Maybe 7. MR is 7 exercises.&lt;/p>
&lt;p>What is MC? It is a cost you pay after an hour of practicing IETLS. You stay up very late, your cost is very high. You might wake up languidly the next morning and couldn&amp;rsquo;t focus on anything.&lt;/p>
&lt;p>In that situation, you should NOT stay up late to practice IELTS because of MR &amp;lt; MC.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>MR and MC always exist in most situations. To make a better decision, you should determine them quickly.&lt;/p>
&lt;blockquote>
&lt;p>Always compare MR with MC when making decisions on when.&lt;/p>
&lt;/blockquote></description></item><item><title>Generics in Go</title><link>https://japananh.github.io/blog/p/generics-in-go/</link><pubDate>Fri, 24 Dec 2021 17:36:51 +0700</pubDate><guid>https://japananh.github.io/blog/p/generics-in-go/</guid><description>&lt;img src="https://japananh.github.io/blog/p/generics-in-go/cover.jpg" alt="Featured image of post Generics in Go" />&lt;p>Go team released Go 1.18 Beta 1 in December 2021, introducing support for generic programming using type parameters, a much-anticipated feature.&lt;/p>
&lt;p>Note: If you prefer, you can use the &lt;a class="link" href="https://go.dev/play/?v=gotip" target="_blank" rel="noopener"
>Go playground in “Go dev branch” mode&lt;/a> to try new features with generics.&lt;/p>
&lt;h2 id="what-is-new-in-generics">What is new in generics?&lt;/h2>
&lt;p>Type parameter lists look like ordinary parameter lists with square brackets. It is customary to start type parameters with upper-case letters to emphasize that they are types.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">P&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">Q&lt;/span> &lt;span class="nx">constraint1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">R&lt;/span> &lt;span class="nx">constraint2&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Let&amp;rsquo;s take a look at the function &lt;code>min&lt;/code> below.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">min&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">y&lt;/span> &lt;span class="kt">int&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nx">x&lt;/span> &lt;span class="p">&amp;lt;&lt;/span> &lt;span class="nx">y&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nx">x&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nx">y&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">m&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nf">min&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">m&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1">// 2
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>If we want this function to work with other number types such as &lt;code>float64&lt;/code>, we need to declare a new function to handle the new type. To solve that problem, we use generics. The type parameter &lt;code>T&lt;/code>, declared in a type parameter list, takes the place of &lt;code>int&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nx">min&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nx">T&lt;/span> &lt;span class="nx">constraints&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Ordered&lt;/span>&lt;span class="p">](&lt;/span>&lt;span class="nx">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">y&lt;/span> &lt;span class="nx">T&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="nx">T&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nx">x&lt;/span> &lt;span class="p">&amp;lt;&lt;/span> &lt;span class="nx">y&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nx">x&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nx">y&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">m&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nx">min&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="p">](&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">n&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nx">min&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="kt">float64&lt;/span>&lt;span class="p">](&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">m&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">n&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1">// 2 2
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Type parameter lists also have a type for each type parameter. This type defines a set of types. It is called the &lt;strong>type constraint&lt;/strong>. In Go, type constraints must be interfaces.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640333624502/ggVEFQOj9.png"
loading="lazy"
alt="Screen Shot 2021-12-24 at 15.12.32.png"
>&lt;/p>
&lt;p>Let&amp;rsquo;s take a look at the example below.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nx">min&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nx">T&lt;/span> &lt;span class="nx">constraints&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Ordered&lt;/span>&lt;span class="p">](&lt;/span>&lt;span class="nx">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">y&lt;/span> &lt;span class="nx">T&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="nx">T&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;code>constraints.Ordered&lt;/code> is a type constraint. &lt;code>Ordered&lt;/code> defines the set of all integer, floating-point, and string types.&lt;/p>
&lt;p>&lt;code>~T&lt;/code> means the set of all types with the underlying type &lt;code>T&lt;/code>.&lt;/p>
&lt;p>Check this &lt;a class="link" href="https://github.com/golang/go/discussions/47319" target="_blank" rel="noopener"
>discussion&lt;/a> for more information.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Package constraints define a set of useful constraints to be used with type parameters.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="kn">package&lt;/span> &lt;span class="nx">constraints&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">type&lt;/span> &lt;span class="nx">Ordered&lt;/span> &lt;span class="kd">interface&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="kt">float&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="err">~&lt;/span>&lt;span class="kt">string&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>When declaring a variable without specifying an explicit type (either by using the &lt;code>:=&lt;/code> syntax or &lt;code>var =&lt;/code> expression syntax), the variable&amp;rsquo;s type is inferred from the value on the right-hand side.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">var&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="kt">int&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">j&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="c1">// j is an int
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>You can call the &lt;code>min&lt;/code> function without type inference. Sometimes, passing type arguments lead to more verbose code.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nx">min&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nx">T&lt;/span> &lt;span class="nx">constraints&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Ordered&lt;/span>&lt;span class="p">](&lt;/span>&lt;span class="nx">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">y&lt;/span> &lt;span class="nx">T&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="nx">T&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">var&lt;/span> &lt;span class="nx">a&lt;/span> &lt;span class="kt">float64&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="mf">1.1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">var&lt;/span> &lt;span class="nx">b&lt;/span> &lt;span class="kt">float64&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="mf">2.2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">var&lt;/span> &lt;span class="nx">m&lt;/span> &lt;span class="kt">float64&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nf">min&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">b&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1">// not need to pass any type of argument here.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">m&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1">// 1.1
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="references">References&lt;/h2>
&lt;ul>
&lt;li>&lt;a class="link" href="https://go.dev/blog/go1.18beta1" target="_blank" rel="noopener"
>https://go.dev/blog/go1.18beta1&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.youtube.com/watch?v=35eIxI_n5ZM" target="_blank" rel="noopener"
>https://www.youtube.com/watch?v=35eIxI_n5ZM&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Chuyên gia tư vấn tình cảm bất đát dĩ</title><link>https://japananh.github.io/blog/p/chuyen-gia-tu-van-tinh-cam-bat-dat-di/</link><pubDate>Thu, 23 Dec 2021 04:43:21 +0700</pubDate><guid>https://japananh.github.io/blog/p/chuyen-gia-tu-van-tinh-cam-bat-dat-di/</guid><description>&lt;img src="https://japananh.github.io/blog/p/chuyen-gia-tu-van-tinh-cam-bat-dat-di/cover.jpg" alt="Featured image of post Chuyên gia tư vấn tình cảm bất đát dĩ" />&lt;p>Tôi từng học một khóa tâm lý trong tình yêu, đọc các cuốn sách về tình yêu của Elaine N. Aron, nhà tâm lý học người Mỹ và xem các bài nói của Alain de Botton, một nhà Triết học và tác giả người Anh. Tôi nghĩ mình đã làm tất cả để chuẩn bị trước khi bước vào đường tình. Vậy mà tôi vẫn thấy mình rối tung cả lên.&lt;/p>
&lt;p>Tôi nhận ra rằng có nhiều bạn nam xung quanh mình khiến tôi có một lợi thế mà không bạn nam nào có nổi là trở thành &amp;ldquo;chuyên gia tư vấn tâm lý tình cảm&amp;rdquo; mỗi khi bạn bè có chuyện.&lt;/p>
&lt;p>Tôi không nghĩ là mình có nhiều kinh nghiệm tình yêu nhưng việc trả lời câu hỏi của bạn bè và giải thích tâm lý của những người trong cuộc khiến tôi nhận ra những thứ mình đọc lúc xưa đều trở nên có giá trị. Lại thêm một sự kiểm chứng sách viết về những trường hợp mà tôi chưa trải nghiệm.&lt;/p>
&lt;p>Sau đây là một vài điều tôi học được về tình yêu. Hi vọng sẽ giúp đỡ cho ai đó.&lt;/p>
&lt;h2 id="vòng-gửi-xe">Vòng gửi xe&lt;/h2>
&lt;p>Khi yêu, người ta thường cố đưa ra những tiêu chí, ví dụ cô ấy phải cao cỡ mét 6, xinh như này, học thức như kia, giá trị sống &amp;hellip; Tôi nghĩ đưa ra tiêu chí là hoàn toàn hợp lý vì bạn cần phải biết mình muốn gì trước. Cảm xúc là thứ nhất thời, càng về sau bạn sẽ càng thấy giá trị sống và sự hòa hợp mới là thứ khiến tình yêu bền vững.&lt;/p>
&lt;p>Nếu đi vào quá nhiều tiểu tiết, có lẽ bạn sẽ lỡ mất nhiều cơ hội đấy. Mải miết đi tìm cô gái hay anh chàng thoả mãn mọi tiêu chí có thể khiến bạn mệt mỏi. Hoặc giả sử may mắn bạn tìm được người ấy. Câu chuyện tình yêu sẽ ra sao khi hai tháng sau bạn thay đổi tiêu chuẩn của mình hoặc bạn phát hiện bạn đánh giá nhầm và cô ấy không còn phù hợp với tiêu chuẩn nào đó? Ví dụ, bạn bỗng dưng đổi ý thích một cô cao mét 7 và cô ấy chỉ cao có mét 6 thôi.&lt;/p>
&lt;h2 id="tình-yêu-là-cho-đi">Tình yêu là cho đi&lt;/h2>
&lt;p>Để khiến một cô gái có ấn tượng với mình và yêu mình, cách hiệu quả nhất bạn nên làm đó là cho đi tình yêu. Bạn cần cho cô ấy thấy tiềm năng của bạn thông qua sự quan tâm, sự chỉnh chu và một chút tinh tế.&lt;/p>
&lt;p>Những thứ đồ thể hiện sự tinh tế của bạn sẽ gây ấn tượng tốt. Tôi không nghĩ những món quà đắt tiền sẽ khiến cô ấy ấn tượng hơn là một bức tranh bạn vẽ tặng cô ấy. Hay một cuốn sách của tác giả cô ấy yêu thích được gói theo hoa văn cô ấy thích.&lt;/p>
&lt;p>Với những ai &amp;ldquo;được&amp;rdquo; crush từ chối, ngoài việc &amp;ldquo;đi ngủ&amp;rdquo; để cho não được nghỉ ngơi thì một bí quyết nữa tôi thấy rất hiệu quả là thêm chữ CƯỜI vào cuộc sống. Rồi bạn sẽ từ &amp;ldquo;&lt;strong>BUỒN&lt;/strong>&amp;rdquo; thành &amp;ldquo;&lt;strong>BUỒN CƯỜI&lt;/strong>&amp;rdquo; ngay thôi mà.&lt;/p>
&lt;p>Mọi lời từ chối đều chứng tỏ rằng bạn vẫn chưa tìm được người phù hợp hoặc là bạn đã mắc phải sai lầm gì đó. Nhiều khi là cả hai. Một thời gian sau nhìn lại, hẳn là bạn sẽ thấy hài lắm vì mình đã crush một người như này.&lt;/p>
&lt;h2 id="khi-nào-lấy-chồng">Khi nào lấy chồng?&lt;/h2>
&lt;p>Từ khi tôi đủ 18, tết nào họ hàng tôi cũng hỏi &amp;ldquo;Khi nào lấy chồng?&amp;rdquo;. Rồi có một thời gian tôi hoang mang khi nhận ra tôi đang lớn lên và tôi chả yêu ai cả. Tôi tự hỏi liệu mong muốn có người yêu của mình có phải vì để làm tròn bổn phận &amp;ldquo;Trai lớn dựng vợ, gái lớn gả chồng&amp;rdquo; không? Nếu ở một mình mà tôi không tự làm mình vui được thì liệu hai mình có giúp được tôi không? Hiển nhiên là không rồi. Việc phụ thuộc cảm xúc vào người ấy sẽ biến tôi thành con nghiện.&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Nếu không có anh thì em sẽ sống không yên ổn.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;h2 id="xin-hãy-cho-anh-một-cơ-hội">Xin hãy cho anh một cơ hội&lt;/h2>
&lt;p>Dành cho những ai lỡ crush một người có người yêu. Nếu cô ấy từ chối bạn, bạn nên thấy may mắn vì điều này. Cô ấy là một cô gái dễ thương, trung thủy và tôn trọng bạn.&lt;/p>
&lt;p>Bạn có từng nghĩ nếu cô ấy bỏ anh chàng hiện tại mà tới với bạn thì về sau liệu cô ấy có bỏ bạn vì một anh chàng khác tốt hơn không? Tôi không nghĩ bất kỳ anh chàng nghiêm túc nào lại thích điều này cả.&lt;/p>
&lt;h2 id="lời-cuối">Lời cuối&lt;/h2>
&lt;p>Tôi nghĩ rằng khi ai đó dành thời gian cho bạn, bất kể gặp mặt, chat, giúp đỡ mà không cần đòi hỏi nhận lại bất kỳ thứ gì hẳn người đó là người bạn rất tốt. Với những người như thế, tôi chỉ muốn nói một điều là &lt;strong>TÔI YÊU CÁC BẠN&lt;/strong>.&lt;/p></description></item><item><title>Go common mistakes - Part 1</title><link>https://japananh.github.io/blog/p/go-common-mistakes-part-1/</link><pubDate>Thu, 23 Dec 2021 04:16:17 +0700</pubDate><guid>https://japananh.github.io/blog/p/go-common-mistakes-part-1/</guid><description>&lt;img src="https://japananh.github.io/blog/p/go-common-mistakes-part-1/cover.jpg" alt="Featured image of post Go common mistakes - Part 1" />&lt;p>Albert Einstein had a quote&lt;/p>
&lt;blockquote>
&lt;p>Anyone who has never made a mistake has never tried anything new.&lt;/p>
&lt;/blockquote>
&lt;p>But one shouldn&amp;rsquo;t repeat his mistakes. It is best to learn from them and capture them forever.&lt;/p>
&lt;p>Here are the mistakes I have made when I started to learn Go.&lt;/p>
&lt;h2 id="1-import-for-side-effect">1. Import for side effect&lt;/h2>
&lt;p>Issue&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;span class="lnt">73
&lt;/span>&lt;span class="lnt">74
&lt;/span>&lt;span class="lnt">75
&lt;/span>&lt;span class="lnt">76
&lt;/span>&lt;span class="lnt">77
&lt;/span>&lt;span class="lnt">78
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;encoding/base64&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;image&amp;#34;&lt;/span> &lt;span class="c1">// missing import for package image/jpeg
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="s">&amp;#34;log&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;strings&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">reader&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nx">base64&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">NewDecoder&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">base64&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">StdEncoding&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">strings&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">NewReader&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">data&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">m&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">_&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">err&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nx">image&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Decode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">reader&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nx">err&lt;/span> &lt;span class="o">!=&lt;/span> &lt;span class="kc">nil&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">log&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Fatal&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">err&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">m&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">const&lt;/span> &lt;span class="nx">data&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">`
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">/9j/4AAQSkZJRgABAQIAHAAcAAD/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdA
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">SFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2Nj
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Y2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCABnAJYDASIAAhEBAxEB/8QA
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDlwKMD0pwzSiuK57QzGDxS7D6in8Y5ximnAPUfSlcq4m3ilUYp
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">2OKXHvRcVxnTtS7c07HNFK4DQPakC4PNOA+tOx70XAjK/So5gBGP94fzqfvUVx/qxx/EP51UXqRP4WSE
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">cmgjilP3jSEZqS0IO/NGDnpUiocDg/McDjvV6HTPOdVWYgsM5KcfzzQ2JySM2jp6VYu7SWzmMUwG4cgj
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">kMPUVBjjtTGtRu0Zopw+lFFxhinrGzuqqMsxAA9yaXFSRv5cqSEcIwYj6GpuZ30O30fSLKzhUpbpNMv3
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">5XGTn29BV28jt7pPLuIVljPBBFVreYx+VbqAjycgt3x14zRcNOxGyVFHQkIc/wA61exyKLbuzjdZ046d
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">ftEuTEw3Rk9SPT8P8Kpbea3tchbyVae4JkjbbGpGdwOM89Af6ViFTWUtGdcXoM2+woK1JtpNtTcoZt+l
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Jt7ZqTbRtouFyPFRXI/c9D94fzqzioLsfuD/ALw/nVReqIn8LJCOTSY+tSMOTmkIpXLRu+F0t5pJxPHG
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">wjjUAuBjJJz1+laD6Pai+WaK9SBX6puzn6ZP+NV/Dkdtc6ZNbyAFwxLAHDYPv6VoQ21nPNEEiQGEFRtk
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Gf0NaWTOeW7Of8QwGG4MRZnEbYXPJwRnOR0zWNXW+KrqBLUWi5EjbWCgcAA9c/gRXKYqZaGlK/LqMH0F
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">FLtHvRSNiYD2pSDTgpp6p0ywUHoTULXYxcktzrdCf7Xo8LP/AKyEmMNjJ46dfbFWJ5TDGNwB9lFUvDV9
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">YrbfYGbyrjcWG88S57g+vtV26ZIvMlumKwwjLZ6V0WfU54yTvYwtbubea2WNWbzg4bYQeBgj8OtYeKhj
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">u4y2HQxqxOD1xzxmrWAQCCGB6EGsaikndmsJxeiYzBo280/Z7UbayuaXGY5oIp+2lx9KLjIsVDeD/Rj/
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">ALy/zq1t96r3y4tT/vL/ADq4P3kRP4WSleTSFKkkKoCW4GaqNcMxIjXj1pxjKT0FKrGC1Nrw3vGrKkYz
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">5kTAr6455/HH510UdwPtRgWCbzF5+YYUf4Vwun39xpmoR3qASMmQUJwGU9Rnt/8AWrpbrxhb8/ZdOmaQ
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">gAGZwFH5ZJrpVKVlY5ZYhN6kXiu2eO/ikZlIljAAB5yM549OawSOOlPuLqe+umuLqTfM4OSOAo7ADsKh
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">hl/cRsTuJHPv7mlKi3sVTxNtGP20VJhThgSQaK52mnZnUqsWrpkyeUrr5pABOAPU1AGaXUCWJISHGPfP
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">P8qL7BiKnsMg46H3qrbzupbj5mPTPTpXVSglG551SpzSsXJ4/MBUgYIxyKpySyGBYJriV1D7kRpCVH4V
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">bSeNJ4xchni3DeqnBI+td7F4b0mKIRjT45VbktJlzk455+n6VtYzv2PNwFZWBHBGKVJDGVC54/nXQeMN
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">NttLNkba1jgWVWDmM8bhg4/nzXLSSbXVj6fyNKUdNRp21RtIRJGrjuM0u3FQ2DbodvcEkfQmrW2vLqLl
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">k0ejCXNFMj2/jQV9qkxSYNRcsZiq2oI32N2CkhWXJxwOe9XMcVt6hoPn6dFaW0wgRpNzvKDlz6+/0rai
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">ryv2Jm9LHJai+ZRGCBjnr71ErdAxAY9B611t1Y2cunbbaOQ3FvKZI3UqGlZMbiWwfcfhV231iwvLSM3U
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">lt5Uq52TuZG+hGMA12xXJGxxzjzybOQtNOvb5j9ktZJhnBIHyg+5PFX38JayqK/2eLJIBUTgkDA9q7ex
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">itrSHFpGsUbndhRgc+g7VNIyfZJAoJZUbb3I46CtFJMylBo8sdWhmYMuCnylc9wef5VUT7+1chc5NS7h
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">sUZO5RtIPUH3pkBDOxxxmqM9TQtn+WilhHfHaik43KTG3Z4IyPyrNVjGCsZ+dmwv6V3cXhSG8sYpJLud
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">JJIwxChdoJGcYx/Wkg8DafA4knvLiQr/ALqj+VQpKw3FtnFFfvbiSMgZJ6/jXp2n3d9cQRBTFsKD96EP
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">oOxPU/8A68VVtbbRtMVntbePKDLTSHJH/Aj/AEqHTvE66rq72VugMMcbSGTnL4wMAfjT5n0HyW3L+s6b
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">baxaJBdzN+7bcrxkAhun0rz3VNCv7e7lgigknWI43xLu6jjIHTjtXqfkpPGVYsBkghTikgsYIN/lhgXb
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">cxLkknp/ShczQ7xtY8vtEmhkj8yGRBuCnehUcnHcVtmwfJ/fQ8e7f/E12txZW91C0U6b42xlST2OR/Ko
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Bo1gM/uW55/1jf41nOipu7LhV5FZHIGzI6zwj/vr/Ck+yr3uYf8Ax7/CutbQdMb71tn/ALaN/jSf8I/p
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">X/PoP++2/wAan6rAr6wzkWt0II+1Rc/7Lf4Vd1eeCSKBbdZDdShYoiZNoyfY10P/AAj2lf8APmP++2/x
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">oPh/SjKspsozIuNrZORjp3qo0FHYPb3OZt7ae3SzjuItsiRSAgnccl/UA+3Q1yNjKLR4ZZYY5VD7tkv3
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">WwO/+e1evPp9nI257aJm6bioz1z1+tY+s6Hplnot9PbWMMcqwOFcLyOO1bJWMZSTOPHi+9w3mosrlyd2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">9lCj02g9P/1e9a3hzxAbl2ikZRcdQueHHt7j864Y8Z4I4oRzG6urFWU5BHBB7HNJxTFGbR6he6Vpmtgm
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">eLy5zwZI/lb8fX8azIvBUUTHdfSFP4QsYB/HNZ+k+KEnRY75hHOvAk6K/v7H9K6yyvlnQBmDZ6GsnzR0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">N0oy1RzOtaN/Y1tHNFO06u+zYy4I4Jzx9KKveJblXuordSGES5b6n/62PzorKVdp2LjQTVyWz8UWEWlq
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">jSgyxfJt6EgdDzWTdeLIZGO7zHI/hVajGmWWP+PWL8qwlAIURrhpMAHHJA71pRcZrToZzcoEuo6heakA
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">GHk245CZ6/X1qPTLq40q+W5t2QybSpDAkEEc55/zilk5k2r91eKhLDzWz2rpsczbbuemeD76fUNG865I
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">MiysmQMZAAwa3a5j4ftu0ByP+fh/5CulkLLG7INzhSVHqe1Fh3uOoqn9qQQxyhndmHIxwOmSR2xQ13KD
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">KoiBZOV9JBnt707MVy5RWdNdy7wRGf3bfMinnO1jg+vY03WXLaJO3mhQ20b0zwpYf0qlG7S7icrJs08U
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">VwumgC+YiQyeVtZH567hzj8aSL949oGhE/2v5pJCDkksQwBHC4/+vXQ8LZ2uYxxCavY7us/xCcaBfn0h
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">b+VP0bnSrb94ZMJgOecj1rl/GfidUE2k2gy5+SeQjgA/wj3rlas2jdao48qrjLAGkSKPk4Gc1WMj92I+
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">lIJnU8OfxPWo5inBokmtQTmM4OOh71b0q6vbFmWCbaxHyqQGAP0PT8KhSTzVyo5ocSKA5VfTOTmqsmRd
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">pl99XjPzThzK3zOeOSeveirNmkgg/fIpYsTkYORxRXmzlTjJqx6EVUcU7mhkKCzdAK59QI9zYxtG1fYU
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">UVtgtmY4nZEa8Ak9aqFv3rfSiiu1nMeifDv/AJF+T/r4f+QrqqKKQwzQenNFFMCOKFIgNuThdoJ5OPSk
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">ubeK6t3gnXdG4wwziiii/UTKMOg6dbzJLFE4dSCP3rEdeOM8805tDsGMvySgSsS6rM6gk9eAcUUVftZt
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">3uyVGNthuq3Eei6DK8H7sRR7YuMgHtXkc8rzTNLM26RyWY+p70UVnLY0iEsUipG7rhZBlDkc1HgYoorM
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">0HwyBXGeRjmrcUhMg2ghezd//rUUVcTKW5s2jZtY/QDaOKKKK8ip8bPRj8KP/9k=
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">`&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">image: unknown format
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Solution&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;span class="lnt">73
&lt;/span>&lt;span class="lnt">74
&lt;/span>&lt;span class="lnt">75
&lt;/span>&lt;span class="lnt">76
&lt;/span>&lt;span class="lnt">77
&lt;/span>&lt;span class="lnt">78
&lt;/span>&lt;span class="lnt">79
&lt;/span>&lt;span class="lnt">80
&lt;/span>&lt;span class="lnt">81
&lt;/span>&lt;span class="lnt">82
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;encoding/base64&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;image&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;log&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;strings&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Package image/jpeg is not used explicitly in the code below,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// but is imported for its initialization side-effect, which allows
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// image.Decode to understand JPEG formatted images.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="nx">_&lt;/span> &lt;span class="s">&amp;#34;image/jpeg&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">reader&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nx">base64&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">NewDecoder&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">base64&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">StdEncoding&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">strings&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">NewReader&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">data&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">m&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">_&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">err&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nx">image&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Decode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">reader&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nx">err&lt;/span> &lt;span class="o">!=&lt;/span> &lt;span class="kc">nil&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">log&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Fatal&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">err&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">m&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">const&lt;/span> &lt;span class="nx">data&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">`
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">/9j/4AAQSkZJRgABAQIAHAAcAAD/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdA
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">SFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2Nj
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Y2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCABnAJYDASIAAhEBAxEB/8QA
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDlwKMD0pwzSiuK57QzGDxS7D6in8Y5ximnAPUfSlcq4m3ilUYp
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">2OKXHvRcVxnTtS7c07HNFK4DQPakC4PNOA+tOx70XAjK/So5gBGP94fzqfvUVx/qxx/EP51UXqRP4WSE
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">cmgjilP3jSEZqS0IO/NGDnpUiocDg/McDjvV6HTPOdVWYgsM5KcfzzQ2JySM2jp6VYu7SWzmMUwG4cgj
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">kMPUVBjjtTGtRu0Zopw+lFFxhinrGzuqqMsxAA9yaXFSRv5cqSEcIwYj6GpuZ30O30fSLKzhUpbpNMv3
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">5XGTn29BV28jt7pPLuIVljPBBFVreYx+VbqAjycgt3x14zRcNOxGyVFHQkIc/wA61exyKLbuzjdZ046d
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">ftEuTEw3Rk9SPT8P8Kpbea3tchbyVae4JkjbbGpGdwOM89Af6ViFTWUtGdcXoM2+woK1JtpNtTcoZt+l
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Jt7ZqTbRtouFyPFRXI/c9D94fzqzioLsfuD/ALw/nVReqIn8LJCOTSY+tSMOTmkIpXLRu+F0t5pJxPHG
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">wjjUAuBjJJz1+laD6Pai+WaK9SBX6puzn6ZP+NV/Dkdtc6ZNbyAFwxLAHDYPv6VoQ21nPNEEiQGEFRtk
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Gf0NaWTOeW7Of8QwGG4MRZnEbYXPJwRnOR0zWNXW+KrqBLUWi5EjbWCgcAA9c/gRXKYqZaGlK/LqMH0F
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">FLtHvRSNiYD2pSDTgpp6p0ywUHoTULXYxcktzrdCf7Xo8LP/AKyEmMNjJ46dfbFWJ5TDGNwB9lFUvDV9
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">YrbfYGbyrjcWG88S57g+vtV26ZIvMlumKwwjLZ6V0WfU54yTvYwtbubea2WNWbzg4bYQeBgj8OtYeKhj
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">u4y2HQxqxOD1xzxmrWAQCCGB6EGsaikndmsJxeiYzBo280/Z7UbayuaXGY5oIp+2lx9KLjIsVDeD/Rj/
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">ALy/zq1t96r3y4tT/vL/ADq4P3kRP4WSleTSFKkkKoCW4GaqNcMxIjXj1pxjKT0FKrGC1Nrw3vGrKkYz
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">5kTAr6455/HH510UdwPtRgWCbzF5+YYUf4Vwun39xpmoR3qASMmQUJwGU9Rnt/8AWrpbrxhb8/ZdOmaQ
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">gAGZwFH5ZJrpVKVlY5ZYhN6kXiu2eO/ikZlIljAAB5yM549OawSOOlPuLqe+umuLqTfM4OSOAo7ADsKh
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">hl/cRsTuJHPv7mlKi3sVTxNtGP20VJhThgSQaK52mnZnUqsWrpkyeUrr5pABOAPU1AGaXUCWJISHGPfP
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">P8qL7BiKnsMg46H3qrbzupbj5mPTPTpXVSglG551SpzSsXJ4/MBUgYIxyKpySyGBYJriV1D7kRpCVH4V
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">bSeNJ4xchni3DeqnBI+td7F4b0mKIRjT45VbktJlzk455+n6VtYzv2PNwFZWBHBGKVJDGVC54/nXQeMN
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">NttLNkba1jgWVWDmM8bhg4/nzXLSSbXVj6fyNKUdNRp21RtIRJGrjuM0u3FQ2DbodvcEkfQmrW2vLqLl
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">k0ejCXNFMj2/jQV9qkxSYNRcsZiq2oI32N2CkhWXJxwOe9XMcVt6hoPn6dFaW0wgRpNzvKDlz6+/0rai
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">ryv2Jm9LHJai+ZRGCBjnr71ErdAxAY9B611t1Y2cunbbaOQ3FvKZI3UqGlZMbiWwfcfhV231iwvLSM3U
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">lt5Uq52TuZG+hGMA12xXJGxxzjzybOQtNOvb5j9ktZJhnBIHyg+5PFX38JayqK/2eLJIBUTgkDA9q7ex
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">itrSHFpGsUbndhRgc+g7VNIyfZJAoJZUbb3I46CtFJMylBo8sdWhmYMuCnylc9wef5VUT7+1chc5NS7h
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">sUZO5RtIPUH3pkBDOxxxmqM9TQtn+WilhHfHaik43KTG3Z4IyPyrNVjGCsZ+dmwv6V3cXhSG8sYpJLud
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">JJIwxChdoJGcYx/Wkg8DafA4knvLiQr/ALqj+VQpKw3FtnFFfvbiSMgZJ6/jXp2n3d9cQRBTFsKD96EP
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">oOxPU/8A68VVtbbRtMVntbePKDLTSHJH/Aj/AEqHTvE66rq72VugMMcbSGTnL4wMAfjT5n0HyW3L+s6b
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">baxaJBdzN+7bcrxkAhun0rz3VNCv7e7lgigknWI43xLu6jjIHTjtXqfkpPGVYsBkghTikgsYIN/lhgXb
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">cxLkknp/ShczQ7xtY8vtEmhkj8yGRBuCnehUcnHcVtmwfJ/fQ8e7f/E12txZW91C0U6b42xlST2OR/Ko
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Bo1gM/uW55/1jf41nOipu7LhV5FZHIGzI6zwj/vr/Ck+yr3uYf8Ax7/CutbQdMb71tn/ALaN/jSf8I/p
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">X/PoP++2/wAan6rAr6wzkWt0II+1Rc/7Lf4Vd1eeCSKBbdZDdShYoiZNoyfY10P/AAj2lf8APmP++2/x
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">oPh/SjKspsozIuNrZORjp3qo0FHYPb3OZt7ae3SzjuItsiRSAgnccl/UA+3Q1yNjKLR4ZZYY5VD7tkv3
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">WwO/+e1evPp9nI257aJm6bioz1z1+tY+s6Hplnot9PbWMMcqwOFcLyOO1bJWMZSTOPHi+9w3mosrlyd2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">9lCj02g9P/1e9a3hzxAbl2ikZRcdQueHHt7j864Y8Z4I4oRzG6urFWU5BHBB7HNJxTFGbR6he6Vpmtgm
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">eLy5zwZI/lb8fX8azIvBUUTHdfSFP4QsYB/HNZ+k+KEnRY75hHOvAk6K/v7H9K6yyvlnQBmDZ6GsnzR0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">N0oy1RzOtaN/Y1tHNFO06u+zYy4I4Jzx9KKveJblXuordSGES5b6n/62PzorKVdp2LjQTVyWz8UWEWlq
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">jSgyxfJt6EgdDzWTdeLIZGO7zHI/hVajGmWWP+PWL8qwlAIURrhpMAHHJA71pRcZrToZzcoEuo6heakA
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">GHk245CZ6/X1qPTLq40q+W5t2QybSpDAkEEc55/zilk5k2r91eKhLDzWz2rpsczbbuemeD76fUNG865I
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">MiysmQMZAAwa3a5j4ftu0ByP+fh/5CulkLLG7INzhSVHqe1Fh3uOoqn9qQQxyhndmHIxwOmSR2xQ13KD
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">KoiBZOV9JBnt707MVy5RWdNdy7wRGf3bfMinnO1jg+vY03WXLaJO3mhQ20b0zwpYf0qlG7S7icrJs08U
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">VwumgC+YiQyeVtZH567hzj8aSL949oGhE/2v5pJCDkksQwBHC4/+vXQ8LZ2uYxxCavY7us/xCcaBfn0h
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">b+VP0bnSrb94ZMJgOecj1rl/GfidUE2k2gy5+SeQjgA/wj3rlas2jdao48qrjLAGkSKPk4Gc1WMj92I+
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">lIJnU8OfxPWo5inBokmtQTmM4OOh71b0q6vbFmWCbaxHyqQGAP0PT8KhSTzVyo5ocSKA5VfTOTmqsmRd
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">pl99XjPzThzK3zOeOSeveirNmkgg/fIpYsTkYORxRXmzlTjJqx6EVUcU7mhkKCzdAK59QI9zYxtG1fYU
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">UVtgtmY4nZEa8Ak9aqFv3rfSiiu1nMeifDv/AJF+T/r4f+QrqqKKQwzQenNFFMCOKFIgNuThdoJ5OPSk
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">ubeK6t3gnXdG4wwziiii/UTKMOg6dbzJLFE4dSCP3rEdeOM8805tDsGMvySgSsS6rM6gk9eAcUUVftZt
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">3uyVGNthuq3Eei6DK8H7sRR7YuMgHtXkc8rzTNLM26RyWY+p70UVnLY0iEsUipG7rhZBlDkc1HgYoorM
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">0HwyBXGeRjmrcUhMg2ghezd//rUUVcTKW5s2jZtY/QDaOKKKK8ip8bPRj8KP/9k=
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">`&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;amp;&lt;/span>&lt;span class="o">{[&lt;/span>&lt;span class="m">44&lt;/span> &lt;span class="m">44&lt;/span> &lt;span class="m">45&lt;/span> &lt;span class="m">46&lt;/span> &lt;span class="m">46&lt;/span> &lt;span class="m">47&lt;/span> &lt;span class="m">48&lt;/span> &lt;span class="m">48&lt;/span> &lt;span class="m">42&lt;/span> &lt;span class="m">42&lt;/span> &lt;span class="m">42&lt;/span> &lt;span class="m">42&lt;/span> &lt;span class="m">42&lt;/span> &lt;span class="m">42&lt;/span> &lt;span class="m">42&lt;/span> &lt;span class="m">42&lt;/span> &lt;span class="m">42&lt;/span> &lt;span class="m">42&lt;/span> &lt;span class="m">42&lt;/span> &lt;span class="m">43&lt;/span> &lt;span class="m">45&lt;/span> &lt;span class="m">49&lt;/span> &lt;span class="m">52&lt;/span> &lt;span class="m">53&lt;/span> &lt;span class="m">46&lt;/span> &lt;span class="m">46&lt;/span> &lt;span class="m">46&lt;/span> &lt;span class="m">4&lt;/span> ... &lt;span class="m">165&lt;/span> 169&lt;span class="o">]&lt;/span> &lt;span class="m">160&lt;/span> &lt;span class="m">80&lt;/span> YCbCrSubsampleRatio420 &lt;span class="o">(&lt;/span>0,0&lt;span class="o">)&lt;/span>-&lt;span class="o">(&lt;/span>150,103&lt;span class="o">)}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="2-unexpected-new-line">2. Unexpected new-line&lt;/h2>
&lt;p>Issue&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">const&lt;/span> &lt;span class="nx">fruits&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">[]&lt;/span>&lt;span class="kt">string&lt;/span>&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;cherry&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;banana&amp;#34;&lt;/span> &lt;span class="c1">// Missing a comma here `,`
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">fruits&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./model.go:6:17: syntax error: unexpected newline, expecting comma or &lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Solution&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">const&lt;/span> &lt;span class="nx">fruits&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">[]&lt;/span>&lt;span class="kt">string&lt;/span>&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;cherry&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;banana&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">fruits&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1">// [&amp;#34;cherry&amp;#34;, &amp;#34;banana&amp;#34;]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="3-unaltered-strings">3. Unaltered strings&lt;/h2>
&lt;p>Issue: Strings are immutable in Go&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fruit&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="s">&amp;#34;cherry&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fruit&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">&amp;#34;C&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">fruit&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1">// error here
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./model.go:7:14: cannot assign to fruit&lt;span class="o">[&lt;/span>0&lt;span class="o">]&lt;/span> &lt;span class="o">(&lt;/span>strings are immutable&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Solution&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fruit&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="p">[]&lt;/span>&lt;span class="nb">rune&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;cherry&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fruit&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="sc">&amp;#39;C&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">s&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nb">string&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">fruit&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">s&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1">// Cherry
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Burnout - Phần 2</title><link>https://japananh.github.io/blog/p/burnout-phan-2/</link><pubDate>Fri, 17 Dec 2021 02:50:28 +0700</pubDate><guid>https://japananh.github.io/blog/p/burnout-phan-2/</guid><description>&lt;img src="https://japananh.github.io/blog/p/burnout-phan-2/cover.jpg" alt="Featured image of post Burnout - Phần 2" />&lt;p>Trong &lt;a class="link" href="https://nanacoder.hashnode.dev/burnout-phan-1" target="_blank" rel="noopener"
>Burnout - Phần 1&lt;/a>, tôi đã giải thích &lt;strong>12 trạng thái của burnout&lt;/strong>. trong phần 2 này, tôi sẽ viết về cách tôi vượt qua burnout.&lt;/p>
&lt;h2 id="làm-gì-khi-nhận-thấy-bản-thân-có-dấu-hiệu-burnout">Làm gì khi nhận thấy bản thân có dấu hiệu burnout?&lt;/h2>
&lt;p>&lt;strong>Disclaimer&lt;/strong>: Phần này viết về trải nghiệm cá nhân và những thứ trong này hiệu quả với tôi. Bạn nên cân nhắc để biết nó có phù hợp với mình không.&lt;/p>
&lt;p>Những công việc trí óc đòi hỏi rất nhiều năng lượng và một lượng lớn dopamine, một chất dẫn truyền thần kinh tạo cảm giác hưng phấn, thích thú cho cơ thể. Khi nồng độ đường huyết giảm quá thấp thì cơ thể sẽ thèm đồ ngọt để phục hồi đường huyết và năng lượng hoạt động. Các bạn đừng vì thấy người ta bảo giảm đường là giảm béo mà cắt đường nhé. Phải lắng nghe cơ thể mình trước.&lt;/p>
&lt;p>Tôi nhớ mình đã ăn nhiều đồ ngọt (kẹo, bánh, đồ uống có đường và tất cả những thứ có vị ngọt khác) khi tôi làm việc. Mãi về sau tôi mới biết mình bị thiếu năng lượng và cơ thể chỉ đang cố làm công việc của nó mà thôi. Ích lợi của biện pháp này là bạn sẽ thấy dễ chịu rất nhanh khi miếng thức ăn đầu tiên nằm yên vị trong miệng.&lt;/p>
&lt;p>Còn tác hại thì một khi bạn đã phụ thuộc vào một thứ để duy trì trạng thái cảm xúc tích cực của mình, bạn biết rằng ngày nào đó, bạn sẽ trở thành con nghiện và quá trình cai nghiện có khi còn kinh khủng hơn là burnout.&lt;/p>
&lt;p>Bên cạnh đó, lượng đường cùng các chất hóa học khác trong những đồ ăn chế biến tăng một cách đột ngột vào máu sẵn sẽ khiến một vài hormones phải hoạt động nhiều, có thể dẫn tới quá tải và gây bệnh. Tôi nghĩ dùng những từ như thừa cân, béo phì, tiểu đường, máu nhiễm mỡ, huyết áp cao,&amp;hellip; sẽ giúp bạn dễ hình dung hơn về vấn đề.&lt;/p>
&lt;p>Trước những tác hại không thể gánh nổi như vậy thì tôi đã sửa chế độ ăn của mình, &lt;strong>bổ sung thêm đường vào bữa sáng&lt;/strong> và không ngờ là nó lại hiệu quả. Lúc cần đường, tôi sẽ nhấp một ngụm &lt;strong>cacao đường nóng&lt;/strong> trên bàn. Dùng đồ nóng sẽ giúp tôi uống đường ít lại. Từ đó tới nay, tôi không bao giờ phải dùng đồ ngọt để thấy thoải mái nữa.&lt;/p>
&lt;p>Tôi sẽ không bao giờ bỏ bữa sáng vì tôi biết buổi sáng là thời gian tôi làm việc hiệu quả nhất trong ngày. Và tôi cần phải cho mình đủ năng lượng để xử lý phần lớn công việc. Một lưu ý nhỏ là nếu bạn ăn bữa sáng quá nhiều thì sẽ có khả năng bị đầy bụng và điều này khó chịu ngang với&lt;/p>
&lt;p>Tôi nghĩ mình đã thiếu ngủ một thời gian dài trước khi rơi vào trạng thái burnout. Việc trở nên lo lắng, bồn chồn không rõ lý do tại sao đều là hệ quả của việc não bộ không được nghỉ ngơi đủ.&lt;/p>
&lt;p>Nếu bạn muốn tìm hiểu thêm, tôi khuyến khích bạn đọc cuốn &lt;a class="link" href="https://www.goodreads.com/book/show/34466963-why-we-sleep" target="_blank" rel="noopener"
>Why you sleep&lt;/a> của Matt Walker để hiểu thêm về quá trình tái tạo của bộ não khi bạn chìm vào giấc ngủ. Tôi nghĩ đấy được coi là điều kỳ diệu mà mẹ thiên nhiên đã ban tặng cho loài người. Ngoài ra, nếu bạn không có thời gian, bài talk &lt;a class="link" href="https://www.youtube.com/watch?v=5MuIMqhT8DM" target="_blank" rel="noopener"
>Giấc ngủ là siêu năng lực của bạn - Sleep is your superpower&lt;/a> của chú ấy trên Youtube cũng cung cấp khá nhiều thông tin hữu ích. Tôi xem video thấy hay quá nên mới đọc sách.&lt;/p>
&lt;p>Điều mà tôi nhận ra là tôi khó ngủ là do &lt;strong>suy nghĩ trong đầu quá nhiều, tim đập nhanh, hơi thở không đều nhau và hơi nông&lt;/strong>.&lt;/p>
&lt;h1 id="heading">&lt;/h1>
&lt;p>Tôi sẽ kiếm một cuốn sách siêu chán và nội dung đơn giản, mở nó ra đọc khi nào tôi khó ngủ. Cách này là do tôi tự khám phá ra khi nằm mãi không ngủ được và lôi tạm một cuốn sách ra đọc để giết thời gian.&lt;/p>
&lt;p>Ngồi tầm 15-30 phút là tôi có thể tập trung vào cuốn sách. Thay vì suy nghĩ lộn xộn thì giờ thì đầu chỉ có lẩm bẩm nội dung sách thôi. Một quyển sách &lt;strong>trung tính, siêu chán&lt;/strong>. Lý do cần trung tính và siêu chán là để cuốn sách ấy không mang lại bất kỳ cảm xúc nào cho tôi. Mọi cảm xúc dù tiêu cực hay tích cực đều không có lợi cho tôi lúc này. Sau đó, tôi đã đọc nó trong đầu như tụng kinh cho tới khi mình mệt quá không đọc nổi và lăn ra ngủ.&lt;/p>
&lt;h1 id="heading-1">&lt;/h1>
&lt;p>Tôi cũng không nhớ làm cách nào mà tôi lại tìm đến thiền, chắc do tôi từng đọc sách của thầy Thích Nhất Hạnh. Trong lúc đầu óc rối bời như này, tôi không đời nào ép mình phải ngồi khoanh chân, thẳng lưng cả. &lt;strong>Thiền buông thư&lt;/strong> là một trong những sự lựa chọn tuyệt vời. Chỉ cần thả mình trên chiếc giường êm ái, nhắm mắt lại và bật audio hướng dẫn thiền lên là tôi đã thấy mình ổn định hơn. Ngoài ra, còn có thiền hành cũng rất thú vị. Nguồn tư liệu tôi dùng chủ yếu từ Làng Mai và kênh &lt;a class="link" href="https://www.youtube.com/channel/UComQ5oE9MzuGrjfA0DAdmBg" target="_blank" rel="noopener"
>Youtube&lt;/a> của thầy Minh Niệm.&lt;/p>
&lt;p>Nếu bạn đang bận tâm về tài chính, tôi nghĩ bạn nên cho bản thân cơ hội được nghỉ phép vài ngày, thậm chí là cả tuần. Nghỉ việc sẽ được coi như là biện pháp cuối cùng khi bạn đã có một khoản dự trù cho chuyến nghỉ xả hơi dài ngày. Tôi đã chọn nghỉ việc, dành cho bản thân vài tháng nghỉ ngơi, nghĩ lại về trải nghiệm đã qua và lên kế hoạch mới.&lt;/p>
&lt;p>Tôi ước tôi có thể gửi cho bản thân mình điều này vào thời điểm ấy. Tôi đang kiệt sức và phải ép bản thân nhồi vào đầu một đống chữ, mệt lại càng mệt và phần lớn kiến thức ấy khiến tôi choáng ngợp nhiều hơn là giúp tôi tìm ra cách giải quyết vấn đề.&lt;/p>
&lt;p>Nếu có cỗ máy thời gian, tôi sẽ khuyên bản thân đọc những cuốn dễ thương, mang tính nuôi dưỡng tâm hồn như &lt;em>Hoàng tử bé&lt;/em> hay bộ truyện tranh &lt;em>Chuyện Pape và Popo&lt;/em> hay cuốn &lt;em>&lt;a class="link" href="https://www.goodreads.com/vi/book/show/2998.The_Secret_Garden" target="_blank" rel="noopener"
>Khu vườn bí mật&lt;/a>&lt;/em> của nhà viết kịch người Anh - Frances Hodgson Burnett. Một thời gian sau khi đã ổn định trở lại thì mới đọc lên các bài nghiên cứu và sách chuyên sâu sau.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1639681322661/EYSbbSYDv.jpeg"
loading="lazy"
alt="download.jpeg"
>&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1639681340899/lfcpEws0W.jpeg"
loading="lazy"
alt="unnamed (2).jpg"
>&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1639681408947/8iclgLIkp.jpeg"
loading="lazy"
alt="download (3).jpeg"
>&lt;/p></description></item><item><title>Burnout - Phần 1</title><link>https://japananh.github.io/blog/p/burnout-phan-1/</link><pubDate>Fri, 17 Dec 2021 02:45:17 +0700</pubDate><guid>https://japananh.github.io/blog/p/burnout-phan-1/</guid><description>&lt;img src="https://japananh.github.io/blog/p/burnout-phan-1/cover.jpg" alt="Featured image of post Burnout - Phần 1" />&lt;p>Tôi chỉ có thể mô tả bằng hai từ là &lt;strong>KIỆT SỨC&lt;/strong>. Tôi cũng không tài nào lý giải được chuyện gì đã xảy ra. Tôi đã thực sự &lt;strong>HOẢNG LOẠN&lt;/strong>. Tôi đang bị gì thế này?&lt;/p>
&lt;p>Đấy là trải nghiệm đầu tiên của tôi với &lt;strong>burnout&lt;/strong>. Để thoát ra khỏi cái trạng thái điên rồ đấy thì tôi quyết định sẽ đọc hết tất cả những gì tôi có thể tìm thấy về burnout trên Google.&lt;/p>
&lt;h2 id="burnout-là-gì">Burnout là gì?&lt;/h2>
&lt;p>Để không nhầm lẫn giữa mệt khi bạn căng thẳng (stress), burnout và trầm cảm thì bạn cần phải hiểu người ta phân loại chúng như nào.&lt;/p>
&lt;p>Người đầu tiên dùng thuật ngữ Burnout là một &lt;strong>nhà tâm lý học người Mỹ - Herbert Freudenberger&lt;/strong>.&lt;/p>
&lt;p>Tổ chức Y tế thế giới định nghĩa &lt;strong>Burnout&lt;/strong> là một &lt;em>hiện tượng căng thẳng kéo dài xảy ra ở nơi làm việc&lt;/em>, được đặc trưng bởi ba yếu tố:&lt;/p>
&lt;ul>
&lt;li>Cảm giác cạn kiệt năng lượng hoặc kiệt sức&lt;/li>
&lt;li>Cảm giác tiêu cực hoặc hoài nghi lên quan đến công việc&lt;/li>
&lt;li>Giảm hiệu quả công việc&lt;/li>
&lt;/ul>
&lt;p>Nguồn: &lt;a class="link" href="https://www.who.int/news/item/28-05-2019-burn-out-an-occupational-phenomenon-international-classification-of-diseases" target="_blank" rel="noopener"
>https://www.who.int/news/item/28-05-2019-burn-out-an-occupational-phenomenon-international-classification-of-diseases&lt;/a>&lt;/p>
&lt;p>Nói một cách dễ hiểu nhất, burnout là hệ quả của quá trình căng thẳng (stress) kéo dài. Trầm cảm là quá trình khi burnout kéo dài. Một mức độ trầm trọng hơn. Tôi đã từng xem những lá thư của người trầm cảm viết. Họ tuyệt vọng, chỉ muốn tìm tới cái chết và có người còn làm tổn thương bản thân bằng nhiều cách khác nhau như cứa da, làm bản thân bị chảy máu &amp;hellip;&lt;/p>
&lt;h2 id="dấu-hiệu-của-burnout">Dấu hiệu của burnout&lt;/h2>
&lt;p>Nếu bạn có điều kiện, bạn nên đi khám khi thấy có vấn đề. Còn nếu bạn còn nhiều mối lo khác phải xử lý, thì cái thang đo này có thể giúp bạn cân nhắc xem có phải đi khám không và điều chỉnh dần lối sống.&lt;/p>
&lt;p>Sau vụ tôi bị &lt;em>bác sỹ bên Thu Cúc cơ sở Trần Duy Hưng chẩn đoán sai&lt;/em>, suýt nữa bị bế lên bàn phẫu thuật &lt;em>dù không có bệnh gì&lt;/em> thì tôi đã tập cho mình thói quen luôn phải kiểm chứng lại những gì bác sỹ nói.&lt;/p>
&lt;p>Dưới đây là &lt;strong>12 trạng thái của burnout&lt;/strong> theo mô tả của Herbert Freudenberger đi từ nhẹ tới nặng. Tôi nhận ra quá trình burnout của tôi bắt đầu trước cả khi cơ thể tôi thấy mệt mỏi.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Tham vọng nhiều hơn là dấu hiệu đầu tiên.&lt;/strong> &amp;ldquo;Mình phải trở thành người giỏi nhất ở đây. Mình phải cố gắng nỗ hết mình &amp;hellip;&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Làm việc chăm chỉ hơn.&lt;/strong> Nghe vô lý nhỉ? &amp;ldquo;Đã 12h giờ đêm. Cố lên một tí nữa thôi.&amp;rdquo; Và 3 tiếng sau, &amp;ldquo;Ôi may quá xong rồi&amp;rdquo;. Và hôm sau thì bạn có một ngày lờ đờ mệt mỏi và phải cứu vớt tình thế bằng cafein. Bạn có bao giờ ở trong tình trạng đó không?&lt;/li>
&lt;li>&lt;strong>Thờ ơ với nhu cầu của bản thân.&lt;/strong> Tôi thấy rất nhiều anh em trong ngành kể câu chuyện về những ngày tháng &amp;ldquo;bận&amp;rdquo; tới mức ăn mỳ triền miên, &amp;ldquo;bận&amp;rdquo; tới mức mỡ trong máu, gan nhiễm mỡ, xương khớp có vấn đề &amp;hellip; Những thanh niên chưa tới 30 mang trong mình đủ thứ bệnh của bậc trung niên và niềm tự hào rằng tôi đang cống hiến cho tương lai của chính mình và gia đình.&lt;/li>
&lt;li>&lt;strong>Những mâu thuẫn bắt đầu xuất hiện.&lt;/strong> Bạn có thể thấy mất bình tĩnh hơn, hay hoảng sợ hơn và bồn chồn mà không rõ lý do.&lt;/li>
&lt;li>&lt;strong>Bỏ quên các giá trị khác trong cuộc sống.&lt;/strong> Gia đình, bạn bè, sở thích cá nhân sẽ bị gạt sang một bên và công việc trở thành thứ quan trọng duy nhất trong đời bạn.&lt;/li>
&lt;li>&lt;strong>Tìm cách đổ lỗi cho những vấn đề của bản thân.&lt;/strong> Do những người xung quanh, gia đình, bạn bè, đồng nghiệp mà không phải do chính mình.&lt;/li>
&lt;li>&lt;strong>Thu hẹp các mối quan hệ xã hội&lt;/strong>. Bạn sẽ có xu hướng không thích tiếp xúc với mọi người, tim tới chất kích thích như đồ ngọt, rượu bia để giải tỏa.&lt;/li>
&lt;li>&lt;strong>Thay đổi hành vi&lt;/strong>. Những người xung quanh có thể dễ dàng nhận ra sự thay đổi của bạn.&lt;/li>
&lt;li>&lt;strong>Cảm thấy mình vô giá trị, mọi thứ vô nghĩa.&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Cảm thấy trống rỗng&lt;/strong>. Bạn thấy mệt mỏi, chán nản và có xu hướng vượt qua điều này bằng các hoạt động kích thích như ăn quá nhiều, quan hệ tình dục, rượu hoặc ma túy.&lt;/li>
&lt;li>&lt;strong>Phiền muộn&lt;/strong>. Bạn cảm thấy lạc lối, kiệt sức và cuộc sống không không lối thoát.&lt;/li>
&lt;li>&lt;strong>Cháy sạch&lt;/strong> (Burnout) là giai đoạn cuối cùng. Suy sụp toàn bộ về tinh thần và thể chất. Có thể dẫn tới các bệnh lý như trầm cảm, rối loạn lo âu &amp;hellip;&lt;/li>
&lt;/ol>
&lt;p>Nguồn: &lt;a class="link" href="https://www.inc.com/jessica-stillman/the-12-stages-of-burnout-according-to-psychologist.html" target="_blank" rel="noopener"
>https://www.inc.com/jessica-stillman/the-12-stages-of-burnout-according-to-psychologist.html&lt;/a>&lt;/p></description></item><item><title>Ruột ơi là ruột</title><link>https://japananh.github.io/blog/p/ruot-oi-la-ruot/</link><pubDate>Tue, 14 Dec 2021 00:11:31 +0700</pubDate><guid>https://japananh.github.io/blog/p/ruot-oi-la-ruot/</guid><description>&lt;img src="https://japananh.github.io/blog/p/ruot-oi-la-ruot/cover.jpg" alt="Featured image of post Ruột ơi là ruột" />&lt;p>Bài này tôi viết về một số bài học từ cuốn &lt;strong>Ruột ơi là ruột&lt;/strong> của nhà khoa học trẻ người Đức Giulia Enders.&lt;/p>
&lt;h2 id="1-nên-chuyển-dần-sang-ăn-ngũ-cốc-nguyên-cám-gạo-lứt-bột-mỳ-lứt-">1. Nên chuyển dần sang ăn ngũ cốc nguyên cám (gạo lứt, bột mỳ lứt, &amp;hellip;)&lt;/h2>
&lt;p>Lượng đường (sugar) chứa trong bánh mỳ trắng được tiêu hóa khá nhanh bởi các men tiêu hóa. Trong khi đó bánh mỳ ngũ cốc nguyên cám được tiêu hóa chậm hơn và không gây tăng đường huyết tức vì chứa các phân tử đường có cấu tạo phức tạp hơn. Vấn đề của việc tăng đường huyết tức thì là sư gia tăng đột ngột của các hormones để phục hồi trạng thái cân bằng, trong có &lt;strong>insulin&lt;/strong>, khiến cơ thể thấy mệt mỏi. Bạn đã bao giờ thấy mệt mỏi hơn và buồn ngủ hơn sau một bữa ăn chưa? Chính là lý do này đấy.&lt;/p>
&lt;p>Đường còn là thứ chất dễ dàng biến đổi thành mỡ, chỉ cần ghép các phân tử đường và chúng ta dễ dàng có một phân tử mỡ. Bạn có thể xem thêm về carbs và chất béo ở &lt;a class="link" href="https://www.youtube.com/watch?v=LdMOsnILT00" target="_blank" rel="noopener"
>đây&lt;/a>. Chả tự nhiên mà chế độ ăn low-carb ra đời và các chị em thì lại giảm béo bằng cách hạn chế đồ ngọt.&lt;/p>
&lt;h2 id="2-hạn-chế-đồ-chiên-dán-ngập-dầu">2. Hạn chế đồ chiên dán ngập dầu&lt;/h2>
&lt;p>Axit béo trong dầu có thể bị biến đổi cấu trúc hóa học do nhiệt độ cao. Khi rán nên dùng dầu chứa nhiều chất béo bão hòa vì chúng ổn định hơn ở nhiệt độ cao nhưng lại không hề có lợi cho tim mạch. Theo tổ chức tim mạch thế giới, chất béo bão hòa ảnh hưởng tới lượng choresterol, làm gia tăng bệnh tim.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1639413598117/WfMW9ZHjU.png"
loading="lazy"
alt="Screenshot from 2021-12-13 23-39-15.png"
>&lt;/p>
&lt;p>Nguồn: &lt;a class="link" href="https://www.heart.org/en/healthy-living/healthy-eating/eat-smart/fats/saturated-fats" target="_blank" rel="noopener"
>https://www.heart.org/en/healthy-living/healthy-eating/eat-smart/fats/saturated-fats&lt;/a>&lt;/p>
&lt;p>Bên cạnh đó, các loại dầu nguyên chất còn bị oxy hóa nhanh do có khả năng bắt giữ các gốc tự do trong không khí. Các gốc tự do này khi được tiêu hóa sẽ bám vào bất cứ đâu trong cơ thể, gây ra tình trạng viêm nhiễm của mạch máu.&lt;/p>
&lt;h2 id="3-phân-nói-nhiều-về-sức-khỏe-của-bạn">3. Phân nói nhiều về sức khỏe của bạn&lt;/h2>
&lt;p>Tôi có thói quen quan sát phân từ sau khi đọc cuốn này. Cũng phải mấy năm. Nghe thì có vẻ khá buồn cười. Nhưng mỗi lần tôi bị ốm hoặc lo lắng, stress thì phân của tôi cũng &amp;ldquo;có vấn đề&amp;rdquo;.&lt;/p>
&lt;p>Màu tự nhiên của phân người nằm trong khoảng màu từ nâu tới nâu-vàng. Nước tiểu cũng có xu hướng màu vàng. Lý do là một phần của máu chuyển từ màu đỏ -&amp;gt; xanh lá -&amp;gt; vàng, tiếp đó, được bài tiết quá đường nước tiểu, rồi đi qua gan. Ở đó, vi khuẩn làm thay đổi màu thành nâu.&lt;/p>
&lt;p>&lt;strong>Màu nâu nhạt tới vàng&lt;/strong>: có thể bạn đang mắc hội chứng Gilbert. Nguyên nhân là một trong các loại men them gia vào quá trình phân hủy của các tế bào máu chỉ hoạt động 30% công suất. Hội chứng này không nguy hiểm, chỉ có một tác dụng phụ là giảm dung nạp với &lt;strong>acetaminophen&lt;/strong>. Nguyên nhân khác có thể do rối loạn hoạt động các vi khuẩn đường ruột.&lt;/p>
&lt;p>&lt;strong>Màu nâu nhạt tới xám&lt;/strong>: bạn nên đi khám bác sỹ ngay vì có thể các sắc tố không đi được vào phân do tắc nghẽn giữa gan và ruột.&lt;/p>
&lt;p>&lt;strong>Màu đen hoặc đỏ&lt;/strong>: màu sắc của phân không được tạo ra do các sắc tố vi khuẩn chuyển thành màu nâu, mà do có sự hiện diện của huyết cầu toàn phần trong ruột. Bạn nên đi gặp bác sỹ trừ khi bạn ăn phải đồ ăn có màu đỏ ví dụ củ cải đường, củ dền, thanh long ruột đỏ.&lt;/p>
&lt;p>Biểu đồ Bristol đánh giá phân dựa trên độ cứng, chia thành bảy nhóm. &lt;strong>Phân ở nhóm 3 hoặc 4 chứng tỏ hệ tiêu hóa khỏe mạnh&lt;/strong>. Các loại khác đều không tốt.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1639414952502/W_XoCxc_wI.png"
loading="lazy"
alt="BristolStoolChart_(cropped).png"
>&lt;/p>
&lt;p>Cuốn sách này còn nhiều đều thú vị nữa cơ. Nếu bạn thích có thể tìm đọc nhé. Happy reading!&lt;/p></description></item><item><title>Tôi học vẽ</title><link>https://japananh.github.io/blog/p/toi-hoc-ve/</link><pubDate>Sun, 12 Dec 2021 23:45:29 +0700</pubDate><guid>https://japananh.github.io/blog/p/toi-hoc-ve/</guid><description>&lt;img src="https://japananh.github.io/blog/p/toi-hoc-ve/cover.jpg" alt="Featured image of post Tôi học vẽ" />&lt;p>Hồi bé tôi rất thích vẽ vời và viết truyện dù tôi vẽ khá xấu. Nếu không tính môn mỹ thuật ở trường thì lớp vẽ đầu tiên tôi học là vào năm tôi 22 tuổi. Cô giáo của tôi có một khiếu thẩm mỹ rất đặc biệt. Chị hay mặc chân váy chữ A màu xanh dài tới gần mắt cá, bên trên là chiếc áo bra màu tối, khoác ngoài một chiếc áo lưới màu be rộng thùng thình. Trông thật sexy mà lại không hề hở hang. Nếu ai hỏi tôi là sao trang phục của tôi &lt;em>lạ&lt;/em> thế thì câu trả lời là lấy cảm hứng từ người chị này.&lt;/p>
&lt;p>Tôi thường vẽ trong lúc cảm xúc dâng trào nên người khác nhìn vào sẽ thấy mỗi nhân vật tôi vẽ đều có một thế giới nội tâm riêng. Tôi nhớ có lần tôi giận một cậu bạn, chả nhớ hai đứa đã tranh cãi cái gì. Trong lớp học màu nước hôm đó, tôi đã vẽ hai quả chanh cãi nhau.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1639326667214/mhMoaCBfH.png"
loading="lazy"
alt="Screenshot from 2021-12-12 23-15-29.png"
>&lt;/p>
&lt;p>Cô giáo tôi không bao giờ chụp ảnh chính diện, không phải vì chị ấy không đẹp, mà vì không thích. Còn nguyên cớ sao thì tôi không tiện hỏi. Một ngày, tôi vớ được tấm ảnh rất &amp;ldquo;ngầu&amp;rdquo;, khác với vẻ ngoài &amp;ldquo;bánh bèo&amp;rdquo; của chị và đã cao hứng vẽ và thêu lên vải. Nhìn trông thật buồn cười.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1639326928065/UfiMUOf-H.png"
loading="lazy"
alt="Screenshot from 2021-12-12 23-16-48.png"
>&lt;/p>
&lt;p>&amp;ldquo;Đa nhân cách&amp;rdquo; là cái từ mà tôi sẽ gọi mình vào năm 2021. Cảm giác nhảy từ thái cực này sang thái cực khác đối lập khiến tôi nhận ra rằng hóa ra ai cũng có thế thay đổi quan trọng là mình muốn hay không thôi.&lt;/p></description></item><item><title>F-Shaped Pattern</title><link>https://japananh.github.io/blog/p/f-shaped-pattern/</link><pubDate>Sun, 12 Dec 2021 02:11:53 +0700</pubDate><guid>https://japananh.github.io/blog/p/f-shaped-pattern/</guid><description>&lt;img src="https://japananh.github.io/blog/p/f-shaped-pattern/cover.jpg" alt="Featured image of post F-Shaped Pattern" />&lt;h2 id="f-shaped-pattern">F-Shaped Pattern&lt;/h2>
&lt;p>Năm 2006, các nhà khoa học ở Trung tâm Nielsen của Mỹ đã công bố nghiên cứu cho thấy người dùng thường đọc các trang Web theo hình chữ F: hai sọc ngang tiếp theo là một sọc dọc. Từ F là viết tắt của từ &lt;em>fast&lt;/em> (Nhanh).&lt;/p>
&lt;p>Họ ghi hình 232 người nhìn vào hàng ngàng trang web và phát hiện ra mô hình đọc trông giống hình chữ F và có ba yếu tố như sau:&lt;/p>
&lt;ul>
&lt;li>Người dùng bắt đầu đọc theo chiều ngang, thường nằm ở vị trí đầu của nội dung.&lt;/li>
&lt;li>Sau đó, di chuyển mắt xuống một chút, rồi lại di chuyển mắt tạo thành một đường ngang số hai.&lt;/li>
&lt;li>Cuối cùng, người dùng quét mặt trái của nội dung theo chuyển động dọc. Quá trình này có thể diễn ra nhanh hoặc chậm. Chuyển động cuối này tạo thành cái đuôi của chữ F.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1639249891614/K8Pw8dVzt.png"
loading="lazy"
alt="AcrobatScreenSnapz001.png"
>&lt;/p>
&lt;h2 id="hàm-ý-của-f-pattern">Hàm ý của F pattern&lt;/h2>
&lt;ul>
&lt;li>Người dùng không đọc từng chữ một. Họ sẽ cố gắng đọc nhanh nhất có thể để lấy thông tin.&lt;/li>
&lt;li>Hai đoạn văn đầu tiên phải chứa những thông tin quan trọng nhất.&lt;/li>
&lt;li>Bắt đầu các tiêu đề phụ, đoạn văn và gạch đầu dòng bằng các từ mang thông tin mà người dùng sẽ nhận thấy khi quét xuống phía bên trái của nội dung của bạn ở gốc cuối cùng của chữ F. Họ sẽ đọc từ thứ ba trên một dòng ít thường xuyên hơn nhiều so với hai từ đầu tiên.&lt;/li>
&lt;/ul>
&lt;h2 id="tài-liệu-tham-khảo">Tài liệu tham khảo&lt;/h2>
&lt;ul>
&lt;li>&lt;a class="link" href="https://www.nngroup.com/articles/f-shaped-pattern-reading-web-content-discovered/" target="_blank" rel="noopener"
>F-Shaped Pattern For Reading Web Content (original study)&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Go interview questions and answers</title><link>https://japananh.github.io/blog/p/go-interview-questions-and-answers/</link><pubDate>Sun, 12 Dec 2021 01:36:22 +0700</pubDate><guid>https://japananh.github.io/blog/p/go-interview-questions-and-answers/</guid><description>&lt;img src="https://japananh.github.io/blog/p/go-interview-questions-and-answers/cover.jpg" alt="Featured image of post Go interview questions and answers" />&lt;h2 id="1-explain-packages-in-go">1. Explain packages in Go.&lt;/h2>
&lt;p>Every Go program is made up of packages. The program starts running in package &lt;code>main&lt;/code>. This program is using packages with import paths such as &lt;code>fmt&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-mysql" data-lang="mysql">&lt;span class="line">&lt;span class="cl">&lt;span class="n">package&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">main&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nf">import&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">fmt&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">func&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Hello word!&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="2-what-is-gopath">2. What is &lt;code>GOPATH&lt;/code>?&lt;/h2>
&lt;p>The &lt;code>GOPATH&lt;/code> is an environment variable that determines the location of the workspace. It is the only variable that you have to set when developing Go code.&lt;/p>
&lt;h2 id="3-how-to-use-custom-packages">3. How to use custom packages?&lt;/h2>
&lt;p>You have the folder structure and two files as below.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">src/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> myproject/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> mylib/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> mylib.go
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> main.go
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>mylib.go&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">mylib&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">type&lt;/span> &lt;span class="nx">SomeType&lt;/span> &lt;span class="kd">struct&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>main.go&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;mylib&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>If you want to use &lt;code>mylib&lt;/code> in &lt;code>main.go&lt;/code>, you could go like this:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Place the directory with library files under the directory of your project.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>In the rest of your project, refer to the library using its path relative to the root of your workspace containing the project.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>Now, in the top-level main.go, you could import &amp;ldquo;myproject/mylib&amp;rdquo; and it would work.&lt;/p>
&lt;p>&lt;strong>main.go&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;myproject/mylib&amp;#34;&lt;/span> &lt;span class="c1">// WORK
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="4-explain-what-is-goroutine-and-how-to-stop-goroutine">4. Explain what is goroutine and how to stop goroutine?&lt;/h2>
&lt;p>A goroutine is a function that is capable of running concurrently with other functions.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;time&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">say&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">s&lt;/span> &lt;span class="kt">string&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nx">i&lt;/span>&lt;span class="o">++&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">time&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Sleep&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="nx">time&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Millisecond&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">s&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">go&lt;/span> &lt;span class="nf">say&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;world&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nf">say&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;hello&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ go run main.go
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">world
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">hello
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">hello
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">world
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">world
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">hello
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">hello
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">world
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">world
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">hello
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>To stop goroutine, you pass the goroutine a signal channel, that signal channel is used to push a value into when you want the goroutine to stop. The goroutine polls that channel regularly as soon as it detects a signal, it quits.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;time&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">say&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">s&lt;/span> &lt;span class="kt">string&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">quit&lt;/span> &lt;span class="kd">chan&lt;/span> &lt;span class="kt">bool&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">defer&lt;/span> &lt;span class="nb">close&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">quit&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nx">i&lt;/span>&lt;span class="o">++&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">s&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">i&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">quit&lt;/span> &lt;span class="o">&amp;lt;-&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">select&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">case&lt;/span> &lt;span class="o">&amp;lt;-&lt;/span>&lt;span class="nx">quit&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">default&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Do other stuff
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// a channel to signal that it&amp;#39;s stopped
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="nx">quit&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nb">make&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kd">chan&lt;/span> &lt;span class="kt">bool&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">go&lt;/span> &lt;span class="nf">say&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Hello&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">quit&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Sleep the program to avoid go routine is forced to exit because `main()` exits
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="nx">time&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Sleep&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1000&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="nx">time&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Millisecond&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ go run main.go
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Hello &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Hello &lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Hello &lt;span class="m">3&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Vệ sinh răng miệng</title><link>https://japananh.github.io/blog/p/ve-sinh-rang-mieng/</link><pubDate>Sat, 11 Dec 2021 23:44:50 +0700</pubDate><guid>https://japananh.github.io/blog/p/ve-sinh-rang-mieng/</guid><description>&lt;img src="https://japananh.github.io/blog/p/ve-sinh-rang-mieng/cover.jpg" alt="Featured image of post Vệ sinh răng miệng" />&lt;p>Tôi nghĩ vệ sinh răng miệng là chuyện cá nhân nhưng cảm giác khi giao tiếp với một người mà chỉ cần mở miệng ra là &amp;ldquo;hương hoa bay tới cả mét&amp;rdquo; thì thật bối rối. Tôi đã từng làm việc cùng một vài người như vậy và tôi nhớ đã không biết bao lần phải quay mặt ra hoặc đứng xa ra một chút. Tất cả những người đó đều dạy cho tôi bài học quan trọng về cách ứng xử là &lt;strong>&amp;ldquo;Đừng bao giờ để mùi của bạn làm ảnh hưởng tới cuộc sống của người khác&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Nếu bạn gặp phải vấn đề với răng miệng (ví dụ, ê buốt, nhức răng, răng lung lay, hơi thở có mùi, răng bị ố) hoặc không có vấn đề gì những có men răng yếu, thì đây là những lời khuyên có thể giúp ích cho bạn.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Không đánh răng với nước và chỉ dùng nước để súc miệng sau khi chải răng xong.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Chờ khoảng 30 phút mới đánh răng sau ăn và nên đánh răng tối thiểu 2 lần một ngày sau bữa ăn chính. Lý do là sau khi ăn, các vi khuẩn gây mòn men răng sẽ xuất hiện nhiều và răng bạn đang yếu. Nếu đánh răng luôn vào lúc này thì men răng bạn sẽ có nguy cơ bị mòn cao (dental abrasion). Răng của bạn được bao bởi lớp men răng (được cho là cứng hơn cả xương), việc men răng bị mòn sẽ khiến răng mất đi lớp bảo vệ, từ đó vi khuẩn sẽ tấn công khiến răng bị sâu và ra đi vĩnh viễn.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1639240287481/LV_97yfHo.jpeg"
loading="lazy"
alt="Dental-Caries-1568x1176.jpg"
>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Nếu hơi thở bạn có mùi, có thể một vài chiếc răng đang bị sâu hoặc có quá nhiều mảng bám trên răng. Lúc này, bạn cần xem lại cách chải răng của mình, có thể cân nhắc đổi kem đánh răng và bàn chải tốt hơn hoặc sử dụng thêm nước súc miệng. Nếu vấn đề của bạn vẫn không hết sau vài tuần thì nên đến nha sỹ khám.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Nên mua bàn chải đánh răng có đầu nhỏ, mềm, điều quan trọng là bàn chải có thể chải được tất cả mặt răng, giúp bạn loại bỏ thức ăn thừa.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Chuyển sang dùng chỉ nha khoa thay vì dùng tăm. Đầu tăm rất nhọn và cứng nên chúng sẽ làm mòn răng, làm tăng khoảng cách giữa hai răng, từ đó, khiến vụn thức ăn dễ bị tích tụ hơn, dẫn tới sâu răng và viêm lợi. Chỉ nha khoa mềm và có thể len vào giữa hai răng và không làm mòn răng.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Mỗi năm nên đi kiểm tra răng tối thiểu hai lần.&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>How to solve a coding interview question?</title><link>https://japananh.github.io/blog/p/how-to-solve-a-coding-interview-question/</link><pubDate>Thu, 09 Dec 2021 01:28:50 +0700</pubDate><guid>https://japananh.github.io/blog/p/how-to-solve-a-coding-interview-question/</guid><description>&lt;img src="https://japananh.github.io/blog/p/how-to-solve-a-coding-interview-question/cover.jpg" alt="Featured image of post How to solve a coding interview question?" />&lt;p>In this post, I&amp;rsquo;ll analyze an interview question. The purpose of these questions is to test candidates&amp;rsquo; technical knowledge, coding ability, problem-solving skills, and creativity. If you can&amp;rsquo;t find a complete solution, &lt;strong>it might be ok&lt;/strong>.&lt;/p>
&lt;p>You can find all code samples &lt;a class="link" href="https://replit.com/@japananh/dictionary" target="_blank" rel="noopener"
>here&lt;/a>.&lt;/p>
&lt;h2 id="problem">Problem&lt;/h2>
&lt;p>I was given an array of strings and a word. I need to create a function to test whether that word is in the array or not.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">// input: [&amp;#34;car&amp;#34;, &amp;#34;cat&amp;#34;, &amp;#34;bar&amp;#34;]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">isInDict(&amp;#34;car&amp;#34;) // true
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">isInDict(&amp;#34;cat&amp;#34;) // true
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">isInDict(&amp;#34;at&amp;#34;) // false
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="version-1">Version 1&lt;/h2>
&lt;p>&lt;code>Array.includes&lt;/code> in &lt;code>isInDict()&lt;/code> has a time complexity is O(n).&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">class&lt;/span> &lt;span class="nx">Dictionary&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">constructor&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">words&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">dict&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">words&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">word&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="k">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">includes&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">word&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1">// O(n)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">dict&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nx">Dictionary&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="s1">&amp;#39;car&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;cat&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bat&amp;#39;&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;cat&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1">// true
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;car&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1">// true
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;ba&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1">// false
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="version-2">Version 2&lt;/h2>
&lt;p>I can improve the time complexity from &lt;code>O(n)&lt;/code> to &lt;strong>a constant time&lt;/strong> &lt;code>O(1)&lt;/code> by using &lt;code>Set.has()&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">class&lt;/span> &lt;span class="nx">Dictionary2&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">constructor&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">wordArr&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">dict&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nx">Set&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">wordArr&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">word&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="k">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">has&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">word&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1">// O(1)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">dict&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nx">Dictionary&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="s1">&amp;#39;car&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;cat&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bat&amp;#39;&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;cat&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1">// true
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;car&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1">// true
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;ba&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1">// false
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="version-3">Version 3&lt;/h2>
&lt;p>My code will fail if I pass a &lt;strong>regex&lt;/strong> into the &lt;code>isInDict&lt;/code> function.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">dict&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nx">Dictionary&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="s1">&amp;#39;car&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;cat&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bat&amp;#39;&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;cat&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1">// true
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;ca*&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1">// false -&amp;gt; incorrect
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;*at&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1">// false -&amp;gt; incorrect
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>To solve the problem, I create a new data structure. It might look like this.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="nx">Dictionary&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">dict&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">car&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;*ar&amp;#39;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;c*r&amp;#39;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;ca*&amp;#39;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">bar&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;b*r&amp;#39;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;ba*&amp;#39;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">cat&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;*at&amp;#39;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;c*t&amp;#39;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">bat&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;b*t&amp;#39;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>After refactoring the &lt;code>constructor()&lt;/code>, the final code will look like this.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">class&lt;/span> &lt;span class="nx">Dictionary&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">constructor&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">words&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">dict&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">words&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">reduce&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="nx">acc&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">word&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">acc&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nx">word&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">word&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">split&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="nx">forEach&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="nx">letter&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">start&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">word&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">slice&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">i&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">end&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">word&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">slice&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">i&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">partialWord&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sb">`&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nx">start&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="sb">*&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nx">end&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="sb">`&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">acc&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nx">partialWord&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nx">acc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span> &lt;span class="p">{})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">word&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="o">!!&lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nx">word&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">dict&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nx">Dictionary&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="s1">&amp;#39;car&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;cat&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bat&amp;#39;&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;cat&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1">// true
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;ca*&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1">// true
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">dict&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">isInDict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;*at&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1">// true
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Refactoring - Part 2</title><link>https://japananh.github.io/blog/p/refactoring-part-2/</link><pubDate>Mon, 06 Dec 2021 01:32:52 +0700</pubDate><guid>https://japananh.github.io/blog/p/refactoring-part-2/</guid><description>&lt;img src="https://japananh.github.io/blog/p/refactoring-part-2/cover.jpg" alt="Featured image of post Refactoring - Part 2" />&lt;p>in Part 1, we discussed the &lt;a class="link" href="https://nanacoder.hashnode.dev/refactoring-part-1" target="_blank" rel="noopener"
>&lt;strong>Extract function&lt;/strong>&lt;/a> and how to apply it. Today, I&amp;rsquo;ll introduce you to the &lt;strong>Extract variable&lt;/strong>.&lt;/p>
&lt;p>This post was inspired by the book Refactoring, which was written by Martin Fowler and Kent Beck.&lt;/p>
&lt;h2 id="extract-variable">Extract variable&lt;/h2>
&lt;p>For example, you have these pieces of code like below.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="o">...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">return&lt;/span> &lt;span class="nx">order&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">quantity&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="nx">order&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">itemPrice&lt;/span> &lt;span class="o">-&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">math&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">max&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">order&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">quantity&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">500&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="nx">order&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">itemPrice&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="mf">0.05&lt;/span> &lt;span class="o">+&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">math&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">min&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">order&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">quantity&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="nx">order&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">itemPrice&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="mf">0.1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>That code can be broken into local variables as below.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="o">...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">basePrice&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nx">order&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">quantity&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="nx">order&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">item&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Price&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">quantityDiscount&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nx">math&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">max&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">order&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">quantity&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">500&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="nx">order&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">itemPrice&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="mf">0.05&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">shipping&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nx">math&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">min&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">order&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">quantity&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="nx">order&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">itemPrice&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="mf">0.1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">return&lt;/span> &lt;span class="nx">basePrice&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="nx">quantityDiscount&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="nx">shipping&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Expressions can become very complex and hard to read. In such situations, local variables may help break the expression down into something more manageable. This allows us to better understand the purpose of what&amp;rsquo;s happening.&lt;/p>
&lt;p>By extracting a variable, you add a name to the expression in your code. You have to ensure the expression you want to extract does not have side effects and your variable is immutable.&lt;/p></description></item><item><title>Refactoring - Part 1</title><link>https://japananh.github.io/blog/p/refactoring-part-1/</link><pubDate>Mon, 06 Dec 2021 01:07:27 +0700</pubDate><guid>https://japananh.github.io/blog/p/refactoring-part-1/</guid><description>&lt;img src="https://japananh.github.io/blog/p/refactoring-part-1/cover.jpg" alt="Featured image of post Refactoring - Part 1" />&lt;p>This post was inspired by the book &lt;strong>Refactoring&lt;/strong>, which was written by Martin Fowler and Kent Beck.&lt;/p>
&lt;h2 id="extract-function">Extract Function&lt;/h2>
&lt;p>The term &amp;ldquo;function&amp;rdquo; can be interchanged with &amp;ldquo;method&amp;rdquo; in an object-oriented language. The idea behinds it is that you look at a fragment of code, understand what it is doing, then extract it into its own function named after its purpose. With this principle, you can develop a habit of writing very small functions.&lt;/p>
&lt;p>Take a look at the code below. We have a struct &lt;code>Rectangle&lt;/code> and a method &lt;code>PrintInfo()&lt;/code> to log the name and area of it.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">type&lt;/span> &lt;span class="nx">Rectangle&lt;/span> &lt;span class="kd">struct&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">name&lt;/span> &lt;span class="kt">string&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">width&lt;/span> &lt;span class="kt">int&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">height&lt;/span> &lt;span class="kt">int&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">s&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="nx">Rectangle&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="nf">PrintInfo&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;name:&amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nx">s&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">name&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">area&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nx">s&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">height&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="nx">s&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">width&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Area:&amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Sprintf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;%d&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">area&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">rect&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nx">Rectangle&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="s">&amp;#34;Rect 1&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">10&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">rect&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">PrintInfo&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Name:Rect 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// Area:50
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Applying the extract function rule here, we can extract calculation part &lt;code>area := s.height * s.width&lt;/code> into a new method &lt;code>GetArea&lt;/code>. Imagine you have a ton of calculations in &lt;code>PrintInfo()&lt;/code>, the extract function will improve readability in your code.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">type&lt;/span> &lt;span class="nx">Rectangle&lt;/span> &lt;span class="kd">struct&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">name&lt;/span> &lt;span class="kt">string&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">width&lt;/span> &lt;span class="kt">int&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">height&lt;/span> &lt;span class="kt">int&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">s&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="nx">Rectangle&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="nf">PrintInfo&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;name:&amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nx">s&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">name&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Area:&amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Sprintf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;%d&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">s&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">GetArea&lt;/span>&lt;span class="p">()))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">s&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="nx">Rectangle&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="nf">GetArea&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nx">s&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">height&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="nx">s&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">width&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">rect&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nx">Rectangle&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="s">&amp;#34;Rect 1&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">10&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">rect&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">PrintInfo&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Name:Rect 1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// Area:50
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Gia vị và thảo mộc (Spices and herbs)</title><link>https://japananh.github.io/blog/p/gia-vi-va-thao-moc/</link><pubDate>Sun, 05 Dec 2021 22:50:44 +0700</pubDate><guid>https://japananh.github.io/blog/p/gia-vi-va-thao-moc/</guid><description>&lt;img src="https://japananh.github.io/blog/p/gia-vi-va-thao-moc/cover.jpg" alt="Featured image of post Gia vị và thảo mộc (Spices and herbs)" />&lt;p>Ở Việt Nam nếu nhắc tới gia vị, phần lớn mọi người sẽ nghĩ ngay tới bột canh, mỳ chính, bột ngọt, ngũ vị hương, bột cà ri và đủ thứ bột đóng gói với thành phần đầy một đống công thức hóa học được bán trong siêu thị.&lt;/p>
&lt;h2 id="the-china-study">The China Study&lt;/h2>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638634447977/Wx55jvuKx.jpeg"
loading="lazy"
alt="51amHWNAArL.jpg"
>&lt;/p>
&lt;p>Năm 2017, tôi đọc cuốn sách tiếng anh đầu tiên có tên là The China Study của Tiến sỹ T. Colin Campbell và con trai mình là Thomas M. Campbell. Cuốn sách là tâm huyết một đời của hai người học giả này. Nội dung nói về những nghiên cứu dinh dưỡng ở Trung Quốc vào những năm 1940s.&lt;/p>
&lt;p>Cuốn sách ấy không nói về gia vị và thảo nhưng nhờ nó mà tôi lại tìm được nhiều nguời khác truyền cảm hứng. Và câu chuyện học nấu ăn với gia vị và thảo mộc thay vì gia vị hóa học bắt đầu từ đó.&lt;/p>
&lt;p>Tôi đọc bản tiếng anh, bạn nào muốn tìm bản tiếng việt có thể ngó ở link Tiki &lt;a class="link" href="https://tiki.vn/bi-mat-dinh-duong-cho-suc-khoe-toan-dien-the-china-study-tai-ban-lan-thu-2-p13290131.html" target="_blank" rel="noopener"
>này&lt;/a> nhé.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638634471105/95bv-Nd1yb.jpeg"
loading="lazy"
alt="890ca83737cf15e0fd560551387915bd.jpg"
>&lt;/p>
&lt;h2 id="gia-vị-và-thảo-mộc">Gia vị và thảo mộc&lt;/h2>
&lt;p>Tất cả những thứ gì tạo hương vị, màu sắc cho món ăn thì đều là gia vị và thảo mộc. Gia vị được lấy từ hạt, vỏ cây hoặc quả của thực vật, còn thảo mộc lấy từ lá của cây.&lt;/p>
&lt;blockquote>
&lt;p>Spices come from the seeds, bark, berry, or fruit of a plant and herbs come from the green leaves.&lt;/p>
&lt;/blockquote>
&lt;p>Vào năm 2017, gia vị và thảo mộc chủ yếu bán ở các siêu thị cho người nước ngoài tập trung ở khu vực phố cổ và hồ Tây, giờ thì bạn có thể mua nó ở các siêu thị lớn như BigC và Vinmart.&lt;/p>
&lt;p>Hãng tôi hay mua là McCormick. Một phần vì chất lượng của gia vị và một phần bao bì sản phẩm. Họ sản xuất gia vị trong lọ thủy tinh, có nắp chắc chắn và sau khi dùng xong thì những chiếc lọ xinh xắn ấy có thể dùng để cắm hoa trang trí nhà cửa.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638636763729/wZgt568h2.jpeg"
loading="lazy"
alt="f36d146b610fe4adf8f3b6891c09ca33.jpeg"
>&lt;/p>
&lt;h2 id="những-loại-gia-vị-và-thảo-mộc-tôi-hay-dùng-cùng-tác-dụng-của-chúng">Những loại gia vị và thảo mộc tôi hay dùng cùng tác dụng của chúng&lt;/h2>
&lt;p>Hầu hết các gia vị tôi kể dưới tôi đều cho chúng vào ướp với thịt, bỏ vào xào hoặc nướng. Thành phần của chúng đều chứa các chất oxi hóa, giúp giảm huyết áp, tăng khả năng miễn dịch cùng nhiều ích lợi khác nữa.&lt;/p>
&lt;p>Trên internet có rất nhiều tài liệu rác và thiếu dẫn chứng khoa học. Cho đến bây giờ, tôi chưa biết một trang tiếng việt nào nêu thông tin có kèm dẫn chứng. Vì thế, tôi chỉ bạn là đọc bằng tiếng anh. Nếu bạn biết trang tiếng việt về thảo mộc uy tín, xin hãy comment vào bài viết này.&lt;/p>
&lt;p>Cách tôi đọc về tác dụng của một loại thảo mộc là search với từ khóa &lt;strong>Tên gia vị/thảo mộc + research paper&lt;/strong>.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638634824559/rm8Kz3Hq5.png"
loading="lazy"
alt="Screenshot from 2021-12-04 23-19-27.png"
>&lt;/p>
&lt;p>Click vào phần &lt;strong>Scholarly articles for &amp;hellip;&lt;/strong> thì bạn sẽ dẫn tới &lt;strong>Google scholar&lt;/strong> để tìm đọc các nghiên cứu. Tại đây, bạn có thể kéo xuống đọc tiêu đề để xem nghiên cứu nào phù hợp với nhu cầu của bản thân. Happy reading!&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638635119369/LmB06yGr2c.png"
loading="lazy"
alt="Screenshot from 2021-12-04 23-20-41.png"
>&lt;/p>
&lt;p>Đây là gia vị phổ biến ở Việt Nam, rất nhiều món ăn có dùng gừng. Từ ngày thêm gừng vào các món rau củ luộc, tay chân tôi không còn bị lạnh vào mùa đông nữa và thân nhiệt của tôi khá ổn định. Tôi luôn luôn thêm gừng vào bất kỳ món rau luộc nào, từ các loại rau cải, cho tới các loại củ quả như su su, cà rốt, bắp cải &amp;hellip;&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638634283678/M2c55mr4v.jpeg"
loading="lazy"
alt="aztecrub-589e79415f9b58819c47b065.jpg"
>&lt;/p>
&lt;p>Một vài tác dụng nổi bật của cumin là giảm choresterol, giảm đái tháo đường, chứa các chất chống oxi hóa mạnh như flavonoids, viz., apigenin and luteolin.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638627984875/ZJ4N3qTIN.png"
loading="lazy"
alt="Screenshot from 2021-12-04 21-26-05.png"
>&lt;/p>
&lt;p>Cumin trên thị trường có hai loại là đã nghiền thành bột và dạng dầu ép. Tôi ăn loại đã nghiền thành bột, bỏ vào ướp với các món thịt (gà, lợn, bò), sau đó, thì mang đi xào hoặc nướng.&lt;/p>
&lt;p>Một lưu ý nữa là nên dùng trung bình từ &lt;strong>300 - 600g cumin một ngày&lt;/strong> dưới dạng xay hoặc dạng dầu ép.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638634186658/ZSuzOajts.jpeg"
loading="lazy"
alt="unnamed (1).jpg"
>&lt;/p>
&lt;p>Hương thảo có cái tên quyến rũ &lt;strong>rosemary&lt;/strong>, bắt nguồn từ tiếng Latin &lt;em>ros marinus&lt;/em>, nghĩa là &lt;strong>sương của biển&lt;/strong>. Gọi là hương thảo vì chúng rất thơm và có vị rất đặc biệt. Lá khô cho vào làm gia vị, dùng như thì là ai cập, còn lá tươi thì cho vào nước sôi để làm trà.&lt;/p>
&lt;p>Cây rất dễ trồng, có thể sống trong chỗ bóng. Tôi đã trồng hương thảo bằng cách ngắt một đoạn hương thảo bé ở nhà một người bạn và ngâm phần cành vào cốc nước, chờ khoảng 1 tuần (hoặc lâu hơn) cho chúng lên nhiều rễ. Sau đó, cắm chúng xuống đất rồi tưới khi đất khô là chúng sẽ cao lớn nhanh.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638634206675/SIrKNyM2m.jpeg"
loading="lazy"
alt="cay-huong-thao.jpg"
>&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638632769238/PExvTA89C.jpeg"
loading="lazy"
alt="oregano-la-gi-2.jpg"
>&lt;/p>
&lt;p>Tôi hay dùng lá kinh giới khô để nướng khoai tây và mỳ ý. Thi thoảng nổi hứng lên tôi sẽ cho vào ướp với thịt.&lt;/p>
&lt;p>Gần đây tôi mới biết kinh giới có hai loại là loại cay và không cay nên bạn cần chú ý hỏi người bán trước không thì mua lộn là cay lắm đó.&lt;/p>
&lt;h2 id="tổng-kết">Tổng kết&lt;/h2>
&lt;p>Ngoài các gia vị và thảo mộc kể trên thì còn rất nhiều loại nữa mà tôi nghĩ mình sẽ thử trong tương lai ví dụ xạ hương (thyme), húng tây (basil), nguyệt quế (bay leaf) &amp;hellip;&lt;/p>
&lt;p>Điều mà tôi thích ở ẩm thực là bạn có thể phối gia vị và đồ ăn tùy ý dựa trên kiến thức khoa học và khả năng sáng tạo của bạn thân. Happy cooking!&lt;/p>
&lt;h2 id="tài-liệu-tham-khảo">Tài liệu tham khảo&lt;/h2>
&lt;ul>
&lt;li>&lt;a class="link" href="https://www.healthline.com/health/cumin-benefits" target="_blank" rel="noopener"
>https://www.healthline.com/health/cumin-benefits&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Go Tools - Part 1</title><link>https://japananh.github.io/blog/p/go-tools-part-1/</link><pubDate>Thu, 02 Dec 2021 23:47:01 +0700</pubDate><guid>https://japananh.github.io/blog/p/go-tools-part-1/</guid><description>&lt;img src="https://japananh.github.io/blog/p/go-tools-part-1/cover.jpg" alt="Featured image of post Go Tools - Part 1" />&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>Go tools are the great features that exist alongside the language as part of the &lt;code>go&lt;/code> command. Almost Go tools come together with Go installation, but there are some you might install depending on your needs.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>The easiest way to install a Go tool is to run &lt;code>go get -u golang.org/x/tools/...&lt;/code>. Another way to do it is to &lt;code>git clone&lt;/code> the repository to &lt;code>$GOPATH/src/golang.org/x/tools&lt;/code>.&lt;/p>
&lt;p>There are some helpful flags:&lt;/p>
&lt;p>&lt;code>-u&lt;/code> forces the tool to sync with the latest version of the repo.&lt;/p>
&lt;p>&lt;code>-d&lt;/code> if you just want to clone a repo to your GOPATH and skip the building and installation phase.&lt;/p>
&lt;h2 id="tools">Tools&lt;/h2>
&lt;h2 id="go-vet">&lt;code>go vet&lt;/code>&lt;/h2>
&lt;p>The &lt;code>vet&lt;/code> command will check your code for common errors. Let&amp;rsquo;s look at the types of errors &lt;code>vet&lt;/code> can catch:&lt;/p>
&lt;ul>
&lt;li>Bad parameters in Printf-style function calls&lt;/li>
&lt;li>Method signature errors for common method definitions&lt;/li>
&lt;li>Bad struct tags&lt;/li>
&lt;li>Unkeyed composite literals&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Printf calls whose arguments do not align with the format string.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;The quick brown fox jumped over lazy dogs&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">3.14&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">$ go vet main.go
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">main.go:6: no formatting directive in Printf call
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="go-list">&lt;code>go list&lt;/code>&lt;/h2>
&lt;p>It lists the packages named by the import paths, one per line.&lt;/p>
&lt;h2 id="go-env">&lt;code>go env&lt;/code>&lt;/h2>
&lt;p>It prints Go environment information.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">$ go env
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">GO111MODULE=&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">GOARCH=&amp;#34;amd64&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">GOBIN=&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>If there are specific values that you&amp;rsquo;re interested in, you can pass them as arguments to go env.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">$ go env GOPATH GOOS GOARCH
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/home/nana/go
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">linux
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">amd64
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="go-fmt">&lt;code>go fmt&lt;/code>&lt;/h2>
&lt;p>Gofmt is a tool that automatically formats Go source code.&lt;/p>
&lt;p>To format your code, you can use the gofmt tool directly:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">gofmt -w yourcode.go
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Or you can use the “go fmt” command:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">go fmt path/to/your/package
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>It also supports rewrite rules that you can use to help refactor your code.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">var&lt;/span> &lt;span class="nx">foo&lt;/span> &lt;span class="kt">int&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">bar&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">foo&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;foo&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">$ gofmt -d -w -r &amp;#39;foo -&amp;gt; Foo&amp;#39; .
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-var foo int
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+var Foo int
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> func bar() {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- foo = 1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+ Foo = 1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> fmt.Println(&amp;#34;foo&amp;#34;)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Packages in Go - Part 2</title><link>https://japananh.github.io/blog/p/packages-in-go-part-2/</link><pubDate>Wed, 01 Dec 2021 17:25:36 +0700</pubDate><guid>https://japananh.github.io/blog/p/packages-in-go-part-2/</guid><description>&lt;img src="https://japananh.github.io/blog/p/packages-in-go-part-2/cover.jpg" alt="Featured image of post Packages in Go - Part 2" />&lt;h2 id="imports">Imports&lt;/h2>
&lt;p>The &lt;code>import&lt;/code> statement tells the compiler where to look on disk to find the package you want to import.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>To import more than one package, you need to wrap the import statements in an import block.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;strings&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Packages are found on disk based on their relative path to the directories referenced by &lt;code>GOPATH&lt;/code>. If the compiler cannot find the package you&amp;rsquo;ve referenced in your &lt;code>GOPATH&lt;/code>, you&amp;rsquo;ll get an error when trying to run or build your program.&lt;/p>
&lt;p>The Go tooling has built-in support for fetching source code from distributed version control systems (DVCS) such as sharing sites likes Github.&lt;/p>
&lt;p>For example:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="s">&amp;#34;github.com/dgrijalva/jwt-go&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>When an imported path contains a URL, the Go tooling can be used to fetch the package from the DVCS and place the code inside the &lt;code>GOPATH&lt;/code> at the location that matches the URL.&lt;/p>
&lt;p>Packages with the same name can be imported by using &lt;em>named imports&lt;/em>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">myfmt&lt;/span> &lt;span class="s">&amp;#34;mylib/fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Standard library&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">myfmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;My custom library&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>The Go compiler will fail the build and output an error whenever you import a package that you don&amp;rsquo;t use.&lt;/p>
&lt;p>Go doesn&amp;rsquo;t allow any unused variable. Any unused variable can be replaced with the &lt;code>_&lt;/code> (underscore character), known as the &lt;em>blank identifier&lt;/em>. A blank import of a package is used when the imported package is not being used in the current program, but we need the init function in the Go source files belonging to that package can be called and initialization of variables in that package can be done properly.&lt;/p>
&lt;p>As an example mysql package is used as blank import for its side-effect of registering the mysql driver as a database driver in the init() function of mysql package, without importing any other functions.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="nx">_&lt;/span> &lt;span class="s">&amp;#34;github.com/go-sql-driver/mysql&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="init">Init&lt;/h2>
&lt;p>Each package has the ability to provide as many &lt;code>init()&lt;/code> functions. They are automatically executed before the &lt;code>main()&lt;/code> function in the man package is called.&lt;/p>
&lt;p>&lt;code>init()&lt;/code> function is similar to the &lt;code>main()&lt;/code> function. It doesn&amp;rsquo;t take any argument nor return anything. Go can support multiple &lt;code>init()&lt;/code> functions within one file. They are called in their respective order of declaration within the file.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">init&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;init 1&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">init&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;init 2&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;main&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ go run main.go
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">init &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">init &lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">main
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>The &lt;code>init()&lt;/code> functions are great for setting up packages, initializing variables, or performing any other bootstrapping you may need prior to the program running.&lt;/p>
&lt;p>An example of this is database drivers. They register themselves with the SQL package when their init function is executed at startup because the SQL package can’t know about the drivers that exist when it’s compiled. Let’s look at an example of what an init function might do.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">postgres&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;database/sql&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">init&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">sql&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Register&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;postgres&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">new&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">PostgresDriver&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>This code lives inside your pretend database driver for the PostgreSQL database. When a program imports this package, the init function will be called, causing the database driver to be registered with Go’s sql package as an available driver.&lt;/p>
&lt;p>Now we can tell the &lt;code>sql.Open&lt;/code> method to use this driver.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;database/sql&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">_&lt;/span> &lt;span class="s">&amp;#34;https://github.com/goinaction/code/chapter3/dbdriver/postgres&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">sql&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;postgres&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;mydb&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="references">References&lt;/h2>
&lt;ul>
&lt;li>&lt;a class="link" href="https://www.goodreads.com/en/book/show/22727352-go-in-action" target="_blank" rel="noopener"
>Go in action&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Packages in Go - Part 1</title><link>https://japananh.github.io/blog/p/packages-in-go-part-1/</link><pubDate>Tue, 30 Nov 2021 23:35:24 +0700</pubDate><guid>https://japananh.github.io/blog/p/packages-in-go-part-1/</guid><description>&lt;img src="https://japananh.github.io/blog/p/packages-in-go-part-1/cover.jpg" alt="Featured image of post Packages in Go - Part 1" />&lt;h2 id="packages">Packages&lt;/h2>
&lt;p>All Go programs are organized into groups of files called &lt;strong>packages&lt;/strong>, so that the code has the ability to be included in other projects as smaller reusable pieces.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638289452215/QvjsJiOVr.jpeg"
loading="lazy"
alt="go-package-illustration.jpg"
>&lt;/p>
&lt;p>Let’s look at the packages that make up Go’s &lt;code>http&lt;/code> functionality in the standard library which contains a series of related files with the &lt;code>.go&lt;/code> extension.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">net/http/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> cgi/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> cookiejar/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> testdata/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> fcgi/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> httptest/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> httputil/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> pprof/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> testdata/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Every Go source file belongs to a package. The package declaration must be the first line of code in your Go source file. All the functions, types, and variables defined in your Go source file become part of the declared package.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nx">packagename&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>The convention for naming your package is to use the name of the directory containing it.&lt;/p>
&lt;p>When naming your packages and their directories, you should use &lt;strong>short, concise, lowercase names&lt;/strong>, with &lt;strong>no&lt;/strong> &lt;code>under_scores&lt;/code> or &lt;code>mixedCaps&lt;/code>. They are often simple nouns, such as:&lt;/p>
&lt;ul>
&lt;li>&lt;code>time&lt;/code> (provides functionality for measuring and displaying time)&lt;/li>
&lt;li>&lt;code>list&lt;/code> (implements a doubly-linked list)&lt;/li>
&lt;li>&lt;code>http&lt;/code> (provides HTTP client and server implementations)&lt;/li>
&lt;/ul>
&lt;p>Package names may be &lt;strong>abbreviated&lt;/strong> when the abbreviation is familiar to the programmer. Widely-used packages often have compressed names:&lt;/p>
&lt;ul>
&lt;li>&lt;code>strconv&lt;/code> (string conversion)&lt;/li>
&lt;li>&lt;code>syscall&lt;/code> (system call)&lt;/li>
&lt;li>&lt;code>fmt&lt;/code> (formatted I/O)&lt;/li>
&lt;/ul>
&lt;p>Keep in mind that a unique name is not required because you import the package using its full path.&lt;/p>
&lt;p>&lt;code>main&lt;/code> package and &lt;code>main()&lt;/code> function&lt;/p>
&lt;p>Go programs start running in the &lt;code>main&lt;/code> package. It is a special package that is intended to be compiled into a binary executable.&lt;/p>
&lt;p>The main() function is a special function that is the entry point of an executable program. Let’s see an example of an executable program in Go.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Package declaration
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Importing packages
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Hello, world!&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">go run main.go
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">## Output&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Hello, world!
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Tôi đọc gì trong năm 2021?</title><link>https://japananh.github.io/blog/p/toi-doc-gi-trong-nam-2021/</link><pubDate>Tue, 30 Nov 2021 04:08:48 +0700</pubDate><guid>https://japananh.github.io/blog/p/toi-doc-gi-trong-nam-2021/</guid><description>&lt;img src="https://japananh.github.io/blog/p/toi-doc-gi-trong-nam-2021/cover.jpg" alt="Featured image of post Tôi đọc gì trong năm 2021?" />&lt;p>Vậy là đã qua 11 tháng, năm 2021 sắp khép lại. Mỗi năm tôi đều ngó lại những thứ mình đọc để xem mình đã bơi tới đâu và có tiến bộ gì so với năm ngoái không.&lt;/p>
&lt;p>Thay vì lan man từ chủ đề này sang chủ đề khác, không mục đích thì trong năm 2021, tôi tập trung vào 3 mảng chính &lt;strong>gym, lập trình và văn học viễn tưởng&lt;/strong> (literary fiction).&lt;/p>
&lt;p>Tính tới thời điểm hiện tại tôi đã đọc 21 cuốn sách, còn 6 cuốn đang đọc dở. Hi vọng năm nay tôi sẽ hoàn thành được reading challenge trên goodreads.&lt;/p>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638213228556/XCOo39IkF.png"
loading="lazy"
alt="Screenshot from 2021-11-30 02-05-39.png"
>&lt;/p>
&lt;h2 id="cuốn-sách-hay-nhất">Cuốn sách hay nhất&lt;/h2>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638214557322/-FXYsI7uY.png"
loading="lazy"
alt="Screenshot from 2021-11-30 02-35-41.png"
>&lt;/p>
&lt;p>Một người bạn tặng tôi cuốn sách này vào năm ngoái. Tôi đã mở mục lục ra, lướt qua vài chương và cất tủ. Chả hiểu thế nào mà một ngày, tôi mở cuốn sách ấy ra, đọc ngấu nghiến và đầu như bừng tỉnh. Cách đây mấy hôm tôi có viết một bài về &lt;a class="link" href="https://nanacoder.hashnode.dev/ban-ve-su-hoc" target="_blank" rel="noopener"
>sự học&lt;/a>, tôi nghĩ thầy Giản Tư Trung đã đúng khi nói rằng sách là 1 trong 5 con đường đi tới sự khai sáng.&lt;/p>
&lt;p>Peak là cuốn sách mang tính cách mạng về sự học. Tôi đã vui mừng biết bao khi áp dụng những quy tắc trong sách vào việc tập tạ và đạt được nhiều thành tích. Tăng mức tạ max (1RM) từ 20kg lên 120kg cho bài Hip Thrust. Cơ thể cân đối hơn, tăng 7kg, tăng size vòng 3 và vòng 1, giảm size vòng 2. Bên cạnh đó, việc đau mỏi cổ vai gáy cũng hoàn toàn biến mất khi lượng cơ của tôi phát triển. Giờ tôi có thể ngồi lâu hơn mà không hề thấy mỏi. Thật là một công đôi việc.&lt;/p>
&lt;h2 id="cuốn-sách-dở-nhất">Cuốn sách dở nhất&lt;/h2>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638213509069/mLPQRQUbj.png"
loading="lazy"
alt="Screenshot from 2021-11-30 02-16-26.png"
>&lt;/p>
&lt;p>Rắc rối của tôi ở tháng 9 là &lt;strong>mỡ bụng&lt;/strong>. Tôi đã tăng 7kg. Nhờ có tập luyện với tạ nặng, tất cả các phần trên cơ thể tôi đều giảm mỡ, tăng cơ, tôi thấy rõ điều này khi lên cân, tất nhiên, trừ cái bụng ra. Thật là quá thể đáng mà!&lt;/p>
&lt;p>&lt;strong>Body recomposition&lt;/strong> là khái niệm chỉ cơ thể sẽ tăng cơ và giảm mỡ cùng một lúc. Phần lớn mọi người sẽ không đi theo hướng body recomposition và muốn giảm cân vì khi cân nặng giảm thì mỡ cơ thể có thể sẽ giảm theo. Tôi đã tăng tới lượng cân nặng mong muốn (58kg), một tỷ lệ body fat đẹp (22-23%). Không đời nào tôi lại giảm cân chỉ vì cái bụng.&lt;/p>
&lt;p>Tôi đã chú ý ngay vào cái tiêu đề cuốn này trên một trang web liệt kê những cuốn sách hay nhất về tập luyện.&lt;/p>
&lt;blockquote>
&lt;p>Nên tập cardio hay tập tạ trước? - &amp;ldquo;Which Comes First, Cardio or Weights?&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Đọc review về cuốn này trên Goodreads cũng khá tốt nên tôi quyết định đọc thử. Không hài lòng tí nào. Nội dung sơ sài, rất ít tài liệu được trích dẫn. Nếu bạn là người hoàn toàn không biết gì. Tôi nghĩ là nó có lợi một chút cho bạn. Nhưng phần đông thì nội dung cuốn này như tổng hợp kiến thức trên mạng vậy.&lt;/p>
&lt;ul>
&lt;li>Note: Cardio là chỉ những bài tập làm tăng nhịp tim của người tập, trong đó có chạy bộ, đạp xe, nhảy dây &amp;hellip;&lt;/li>
&lt;/ul>
&lt;h2 id="cuốn-sách-ám-ảnh-nhất">Cuốn sách ám ảnh nhất&lt;/h2>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638218677423/4ALwQXsy5.png"
loading="lazy"
alt="Screenshot from 2021-11-30 03-44-15.png"
>&lt;/p>
&lt;p>Đây là cuốn sách mỗi tuần tôi chỉ mở ra đọc có đúng một ngày vì sự thay đổi cảm xúc của bản thân sau khi đọc nó. Tôi nhớ mình đã thấy rất quý Raxcolnicov khi anh một mực ngăn cản cuộc hôn nhân của em gái mình và tên hám danh Lujin. Anh đã đoán ra mưu đồ của tên xấu xa này thông qua những dòng thư mà mẹ anh viết. Tôi còn ngạc nhiên và phải dõi theo họ tới tận mấy hồi sau mới hiểu vấn đề.&lt;/p>
&lt;p>Nhiều nhân vật khiến tôi phát bực. Tại sao Raxcolnicov lại bỏ việc, nằm ở nhà, mơ tưởng làm Napoleon trong khi mẹ và em gái còng lưng kiếm tiền nuôi anh? Tôi thấy anh có nhiều cơ hội để phát triển, người ta thấy anh thông minh, đề bạt anh. Tại sao anh ta lại đi tới nước ấy? Lại còn Xionia nữa. Bố cô và dì ghẻ đâu có coi cô như con người. Một người nát rượu, một kẻ ưa danh. Cô đâu phải hi sinh thân mình vì họ.&lt;/p>
&lt;p>Rất nhiều dấu chấm hỏi và mẫu thuẫn xảy ra trong chuyện và trong cả đầu tôi. Những câu hỏi về giá trị sống và đạo đức cứ bay trong đầu. Liệu những thứ tôi được dạy có phải là đúng? Đâu mới là chân lý thực sự? Đọc tới đây thì hẳn là bạn sẽ hiểu là tại sao tôi chỉ dành nó đọc một ngày. Cảm xúc lên mạnh quá không hề tốt cho sức khỏe tinh thần.&lt;/p>
&lt;h2 id="cuốn-sách-có-nhân-vật-tôi-yêu-thích-nhất">Cuốn sách có nhân vật tôi yêu thích nhất&lt;/h2>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638216946704/uuKLW2SVZ.png"
loading="lazy"
alt="Screenshot from 2021-11-30 03-15-26.png"
>&lt;/p>
&lt;p>Tôi thấy cuốn này trên giá sách của công ty và lấy ra đọc nhân ngày Black Friday. Cuốn sách này không hợp với ai yếu tim vì rất nhiều trẻ em bị giết một cách man rợ. Từ sau khi tranh luận với các luận điểm của Raxcolnicov trong Tội ác và trừng phạt thì tôi đâm ra không còn sợ khi đọc truyện kinh dị như trước nữa. Có lẽ phải cảm ơn Raxcolnicov vì sự cứng đầu của anh ta.&lt;/p>
&lt;p>Truyện xoanh quanh nữ phóng viên Camille Preaker đang trên đường tìm lời giải đáp cho cái chết bí ẩn của nhiều trẻ em tại quê nhà. Những đứa trẻ cư xử thật kỳ cục và mọi người không ai hợp tác để tìm ra hung thủ. Để rồi từng bức màn bí ẩn được vén ra. Thủ phạm chính là mẹ cô và cô em gái cùng mẹ khác cha Amma.&lt;/p>
&lt;p>Amma là cô bé mà tôi ấn tượng nhất. Ai mà chả có lần hờn dỗi bố mẹ mình khi nghĩ rằng bố mẹ đã yêu một ai đó hơn. Cô bé luôn muốn mình trở thành số một trong mắt các bậc phụ huynh. Con muốn cái bàn mới cơ và đập nát chiếc bàn cũ. Cô sẵn sàng giết bạn mình chỉ vì nghĩ rằng mẹ cô quý bé đó. Ôi, một đứa bé, bẻ hết răng, rồi siết cổ bạn mình.&lt;/p>
&lt;p>Bạn có thấy góc tối của mình trong cô bé ấy không? Bạn có thấy tình thương của Camille làm cô bé cảm động và dần thay đổi thái độ không? Tội ác không phải là ngẫu nhiên, nó tích tụ tới một ngày bùng lên thành cơn bão. Hay Dostoevsky có viết rằng:&lt;/p>
&lt;blockquote>
&lt;p>Nó bắt đầu với học thuyết xã hội chủ nghĩa. Bạn biết học thuyết của họ; tội phạm là sự phản kháng chống lại sự bất thường của tổ chức xã hội và không có gì hơn, và không có gì hơn; không có nguyên nhân nào khác được thừa nhận!&lt;/p>
&lt;/blockquote>
&lt;h2 id="cuốn-sách-đọc-mãi-không-xong">Cuốn sách đọc mãi không xong&lt;/h2>
&lt;p>&lt;img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638218510943/N9vYlNDcP.png"
loading="lazy"
alt="Screenshot from 2021-11-30 03-41-28.png"
>&lt;/p>
&lt;p>Tôi đã mua cuốn này vì danh tiếng của nó. Quả thực đây là cuốn sách rất &amp;ldquo;nặng&amp;rdquo; và rất &amp;ldquo;buồn ngủ&amp;rdquo;, theo cả nghĩa đen và nghĩa bóng. Sự lười biếng của bản thân khiến tôi cảm thấy đọc cuốn này còn vất vả hơn cả cuốn giáo trình &lt;a class="link" href="https://www.goodreads.com/en/book/show/17374825" target="_blank" rel="noopener"
>Operating system&lt;/a> năm ngoái. Những người bạn có hiểu biết đều đọc và giới thiệu khiến tôi cảm thấy mình phải có trách nhiệm tiêu hóa em ấy. Hi vọng sắp tới, tôi sẽ nghĩ ra trò để &amp;ldquo;yêu thương&amp;rdquo; em ấy hơn.&lt;/p>
&lt;h2 id="tổng-kết">Tổng kết&lt;/h2>
&lt;p>Một năm với thật nhiều cuốn sách. Nãy giờ tôi không nhắc tới một cuốn sách kỹ thuật nào ở trên, lý do là vì tôi chưa đọc xong chúng. Với những cuốn sách đậm đặc tri thức mà lại không gắn quá nhiều với cảm xúc, tôi thường thích đọc kiểu nhâm nhi, để từ từ áp dụng. Lại đành hi vọng năm sau xúc tiến được nhiều sách kỹ thuật hơn.&lt;/p>
&lt;p>Nếu có cuốn sách nào hay muốn chia sẻ thì đừng ngần ngại comment chúng ở đây. Chúc các bạn đọc vui!&lt;/p></description></item><item><title>Câu chuyện chuyển nhà - Happy New Home</title><link>https://japananh.github.io/blog/p/cau-chuyen-chuyen-nha-happy-new-home/</link><pubDate>Tue, 30 Nov 2021 00:49:38 +0700</pubDate><guid>https://japananh.github.io/blog/p/cau-chuyen-chuyen-nha-happy-new-home/</guid><description>&lt;img src="https://japananh.github.io/blog/p/cau-chuyen-chuyen-nha-happy-new-home/cover.jpg" alt="Featured image of post Câu chuyện chuyển nhà - Happy New Home" />&lt;p>Mến chào các bạn,&lt;/p>
&lt;p>Đáng lẽ bài này sẽ được ra vào hôm chủ nhật 28/11/2021. Nhưng sau khi đau bụng vật vã vì thử món mới của mình thì não tôi đã rỗng như cái lọ thủy tinh, chỉ muốn ngủ.&lt;/p>
&lt;h2 id="làm-sao-phải-chuyển-nhà">Làm sao phải chuyển nhà?&lt;/h2>
&lt;p>Sau 2 tuần viết lách thì tôi đã nhận thấy sự cần thiết phải có một trang blog để nhận được sự bình luận, góp ý và tôi cũng muốn nhiều người đọc hơn. Tôi nghĩ tôi trưởng thành qua những lần vấp ngã. Làm sao người ta biết tới bạn khi bạn im lặng? Làm sao bạn biết mình sai ở đâu nếu người ta không thấy bạn hành động? Đấy là những câu mà tôi hay hỏi mình. Bên cạnh đó, tôi cũng mong muốn gặp được nhiều người có cùng quan điểm với mình, kết bạn và cùng nhau khai sáng.&lt;/p>
&lt;p>Tôi được dạy từ bé rằng dĩ hòa vi quý nhưng phần lớn những vấn đề trong cuộc sống hàng ngày tôi gặp phải là do tôi thường im lặng, đè nén cảm xúc của chính mình. Từ đó, tôi học được rằng mình cần phải biết cách lên tiếng cho chính mình và cho cả những người xunh quanh. Đôi lúc, chúng ta cần sự tĩnh lặng, nhưng cũng có lúc im lặng chính là giết chết mình.&lt;/p>
&lt;p>Để không bị rối khi google tìm những nền tảng cung cấp dịch vụ tạo blog cá nhân, tôi đã đề ra một vài tiêu chí cho riêng mình và những nền tảng nào không đáp ứng được sẽ bị gạt ra không thương tiếc, cho dù có lung linh cỡ nào.&lt;/p>
&lt;h2 id="các-tiêu-chí-của-tôi">Các tiêu chí của tôi&lt;/h2>
&lt;p>Dưới đây là các tiêu chí của tôi, sắp xếp theo thứ tự mức độ quan trọng giảm dần.&lt;/p>
&lt;ul>
&lt;li>Hỗ trợ &lt;a class="link" href="https://www.markdownguide.org/" target="_blank" rel="noopener"
>markdown&lt;/a>, trải nghiệm gõ mượt mà như &lt;a class="link" href="https://www.notion.so/" target="_blank" rel="noopener"
>Notion&lt;/a>&lt;/li>
&lt;li>Hỗ trợ custom domain&lt;/li>
&lt;li>Đồng bộ với Github repository&lt;/li>
&lt;li>Custom UI&lt;/li>
&lt;/ul>
&lt;h2 id="ứng-cử-viên-sáng-giá">Ứng cử viên sáng giá&lt;/h2>
&lt;p>Sau một giờ test với đủ các trang thì ứng cử viên sáng giá nhất là &lt;a class="link" href="https://hashnode.com/" target="_blank" rel="noopener"
>hashnode&lt;/a>&lt;/p>
&lt;p>Và &lt;a class="link" href="https://nanacoder.hashnode.dev/" target="_blank" rel="noopener"
>đây&lt;/a> chính là em blog mới &lt;strong>màu hồng&lt;/strong> với mã là &lt;code>#E045D1&lt;/code>. Bạn sẽ thấy rất nhiều thứ có mã màu này ở trong các bản thiết kế dùng Figma của tôi.&lt;/p>
&lt;p>Series 100 days of challenge sẽ nằm ở link &lt;a class="link" href="https://nanacoder.hashnode.dev/series/100-days-of-challenge" target="_blank" rel="noopener"
>này&lt;/a>. Tôi hi vọng nhận được góp ý từ các bạn.&lt;/p>
&lt;p>&lt;strong>Have fun and Welcome to my home!&lt;/strong>&lt;/p></description></item><item><title>Bàn về sự học</title><link>https://japananh.github.io/blog/p/ban-ve-su-hoc/</link><pubDate>Tue, 30 Nov 2021 00:48:05 +0700</pubDate><guid>https://japananh.github.io/blog/p/ban-ve-su-hoc/</guid><description>&lt;img src="https://japananh.github.io/blog/p/ban-ve-su-hoc/cover.jpg" alt="Featured image of post Bàn về sự học" />&lt;p>Đây là những ý hay mà tôi ghi lại từ một show của kênh &lt;strong>VIETSUCCESS&lt;/strong> với nhà hoạt động giáo dục &lt;strong>Giản Tư Trung&lt;/strong>. Các bạn muốn nghe toàn bộ thì vào &lt;a class="link" href="https://www.youtube.com/watch?v=bQTmY1fFqWg" target="_blank" rel="noopener"
>link&lt;/a> này.&lt;/p>
&lt;h2 id="cách-mạng-thực-học">Cách mạng thực học&lt;/h2>
&lt;p>Sự học bắt đầu bằng niềm tin về cuộc sống. Một trong những nhà khai sáng vĩ đại người Nhật Fukuzawa Yukichi có viết trong cuốn Khuyến học rằng&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Trời không tạo ra người đứng trên người. Mọi người sinh ra đều bình đẳng về quyền lợi. Nếu có khác biệt là do học vấn.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Câu này mang trong mình hai đức tin quan trọng. Đức tin thứ nhất là mình có thể thay đổi được số phận. Nếu chúng ta tin vào điều này thì chúng ta sẽ có động cơ học để nâng cấp bản thân, trở thành con người tốt hơn. Đức tin thứ hai là khi bạn đã tin tưởng rằng mình có thể thay đổi bản thân thì cách bắt đầu là từ &amp;ldquo;thực học&amp;rdquo;.&lt;/p>
&lt;h2 id="thực-học-là-gì">Thực học là gì?&lt;/h2>
&lt;p>Một mô hình của thực học là sự học hướng tới phát triển &lt;strong>một con người tổng thể&lt;/strong>. Một con người tổng thế cần phát triển hài hòa về bốn khía cạnh là &lt;strong>Thân - Tâm - Trí - Thần&lt;/strong> (Body - Heart - Mind - Spirit).&lt;/p>
&lt;p>&lt;strong>Thân&lt;/strong> (Body) là chỉ con người thể chất. Bạn có tập thể dục đều đặn không? Bạn có ăn uống đủ &amp;ldquo;chất&amp;rdquo; không? Bạn có ngủ đủ và ngủ ngon không?&lt;/p>
&lt;p>&lt;strong>Tâm&lt;/strong> (Heart) là chỉ sự yêu thương và được yêu thương (To love and to be love). Lòng trắc ẩn là thứ không phải tự nhiên sinh ra. Điều gì khiến một đứa nhỏ nhường bữa ăn sáng của mình cho một cụ gìa ăn xin mà nó gặp trên đường tới trường? Điều gì khiến người ta sẵn sàng cưu mang một con mèo hoang trên đường, giúp nó vượt qua cơn bạo bệnh dù không được một ai tán dương?&lt;/p>
&lt;p>&lt;strong>Trí&lt;/strong> (Mind) là chỉ sự học kiến thức. Bạn có luôn nâng cấp bộ não của mình không? Bạn có đang học với niềm say mê hay học để trả bài, học để có một công việc? Bạn có dùng những kiến thức mình học vào cuộc sống không?&lt;/p>
&lt;p>&lt;strong>Thần&lt;/strong> (Spirit) là chỉ đời sống tinh thần của bản thân mình. Bạn có đang sống với đúng các giá trị của mình không? Bạn có phải đánh đổi con người của mình để đạt được sự thành công trong công việc không?&lt;/p>
&lt;h2 id="học-để-làm-gì">Học để làm gì?&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>Học để lấy bằng (Learn to get degrees): Tôi học để lấy bằng, có một công việc, không quan tâm tôi đã học cái gì.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Học để trở thành chuyên gia (Learn to be professional): Tôi học để trở thành chuyên gia trong một lĩnh vực, tôi biết nhiều kiến thức trong lĩnh vực của tôi.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Học để giải quyết vấn đề (Learn to be a problem solver): Tôi học để giải quyết vấn đề. Giá trị con người ở chỗ, anh ta giải quyết được vấn đề. Tôi sẵn sàng học bất kỳ lĩnh vực gì để giải quyết vấn đề của tôi.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="tại-sao-chúng-ta-học-làng-nhàng">Tại sao chúng ta học làng nhàng?&lt;/h2>
&lt;p>Thứ nhất, chúng ta được giáo dục bởi những người thầy làng nhàng&lt;/p>
&lt;p>Có 3 cấp độ của người thầy.&lt;/p>
&lt;ul>
&lt;li>Cấp độ 1: &lt;strong>Người thầy bình thường&lt;/strong>, truyền đạt lại những gì mình biết cho học trò.&lt;/li>
&lt;li>Cấp độ 2: &lt;strong>Người thầy giỏi&lt;/strong> vừa truyền đạt những gì mình biết cho học trò và truyền cảm hứng cho học trò tự mình học hỏi.&lt;/li>
&lt;li>Cấp độ 3: &lt;strong>Người thầy vĩ đại&lt;/strong> là người làm được công việc của người thầy giỏi trên một quy mô lớn hơn, thay vì chỉ vài học trò mà là cả một quốc gia, trên toàn thế giới.&lt;/li>
&lt;/ul>
&lt;p>Thứ hai, chúng ta thiếu niềm tin.&lt;/p>
&lt;p>Thứ ba, chúng ta không được học theo cách của riêng mình.&lt;/p>
&lt;h2 id="năm-con-đường-đi-đến-sự-khai-sáng">Năm con đường đi đến sự khai sáng&lt;/h2>
&lt;p>Con đường 1: &lt;strong>Sách&lt;/strong>&lt;/p>
&lt;p>Đọc sách sáng thì mình sẽ sáng, nhưng không phải ai đọc sách cũng sáng.&lt;/p>
&lt;p>Con đường 2: &lt;strong>Thầy&lt;/strong>&lt;/p>
&lt;p>Để tìm được thầy tốt, bản thân phải có khả năng phân bình định.&lt;/p>
&lt;blockquote>
&lt;p>Chân lý thuộc về người có hiểu biết.&lt;/p>
&lt;/blockquote>
&lt;p>Con đường 3: &lt;strong>Trải nghiệm&lt;/strong>&lt;/p>
&lt;p>Chúng ta phải trả giá để học. Cái giá đó có thể là tiền bạc, mồ hôi, nước mắt &amp;hellip; Thất bại cũng là người thầy vĩ đại.&lt;/p>
&lt;p>Con đường 4: &lt;strong>Nhân vật cổ kim đông tây&lt;/strong>&lt;/p>
&lt;p>Chúng ta có thể học hỏi từ họ thông qua rất nhiều tài liệu, sách báo, nghiên cứu khoa học mà không cần phải gặp họ.&lt;/p>
&lt;p>Con đường 5: &lt;strong>Internet&lt;/strong>&lt;/p>
&lt;p>Muốn biết mình là ai, hãy nhìn vào những trang websites mình vào hàng ngày.&lt;/p></description></item><item><title>About</title><link>https://japananh.github.io/blog/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://japananh.github.io/blog/about/</guid><description>&lt;h2 id="about-me">About me&lt;/h2>
&lt;p>Xin chao/Hi 👋, My name is &lt;strong>Anh Nhat Tran (Na)&lt;/strong>.&lt;/p>
&lt;p>I&amp;rsquo;m currently work as a &lt;strong>Backend Developer&lt;/strong> 👩‍💻in Hanoi, Vietnam 🇻🇳.&lt;/p>
&lt;p>My work mostly focused on web development using &lt;strong>Go&lt;/strong>, &lt;strong>Javascript&lt;/strong>, &lt;strong>SQL&lt;/strong>, and &lt;strong>AWS&lt;/strong>.&lt;/p>
&lt;p>Outside work, I&amp;rsquo;m a &lt;strong>Powerlifter&lt;/strong> 🏋🏻‍, and a &lt;strong>Blogger&lt;/strong> 📚.&lt;/p>
&lt;h2 id="connect-with-me-">Connect with me 📫&lt;/h2>
&lt;p>The blog doesn&amp;rsquo;t support comment feature if you find an error or anything interesting, feel free to contact me on &lt;a class="link" href="https://facebook.com/japananh" target="_blank" rel="noopener"
>Facebook&lt;/a> or &lt;a class="link" href="https://linkedin.com/in/japananh" target="_blank" rel="noopener"
>LinkedIn&lt;/a>.&lt;/p>
&lt;p>Happy reading!&lt;/p>
&lt;h2 id="books-im-currently-reading">Books I&amp;rsquo;m currently reading&lt;/h2>
&lt;p>I use &lt;a class="link" href="https://www.goodreads.com/user/show/70171356-anh-tran" target="_blank" rel="noopener"
>goodreads&lt;/a> to track my reading progress and my book review. The list below is the books I&amp;rsquo;m currently reading.&lt;/p>
&lt;!-- raw HTML omitted -->
&lt;ul>
&lt;li>&lt;a class="link" href="https://www.goodreads.com/review/show/4883306717?utm_medium=api&amp;amp;utm_source=rss" target="_blank" rel="noopener"
>Julia Child và cuộc sống ở Pháp&lt;/a> by Julia Child (⭐️4)&lt;/li>
&lt;li>&lt;a class="link" href="https://www.goodreads.com/review/show/4878360149?utm_medium=api&amp;amp;utm_source=rss" target="_blank" rel="noopener"
>Marie Sến&lt;/a> by Phạm Thị Hoài (⭐️3.53)&lt;/li>
&lt;li>&lt;a class="link" href="https://www.goodreads.com/review/show/4782967910?utm_medium=api&amp;amp;utm_source=rss" target="_blank" rel="noopener"
>HTTP/2 in Action&lt;/a> by Barry Pollard (⭐️4.36)&lt;/li>
&lt;li>&lt;a class="link" href="https://www.goodreads.com/review/show/3710904024?utm_medium=api&amp;amp;utm_source=rss" target="_blank" rel="noopener"
>How Emotions Are Made: The Secret Life of the Brain&lt;/a> by Lisa Feldman Barrett (⭐️4.22)&lt;/li>
&lt;li>&lt;a class="link" href="https://www.goodreads.com/review/show/4668866515?utm_medium=api&amp;amp;utm_source=rss" target="_blank" rel="noopener"
>High Performance MySQL&lt;/a> by Silvia Botros (⭐️4.2)&lt;/li>
&lt;li>&lt;a class="link" href="https://www.goodreads.com/review/show/4731418584?utm_medium=api&amp;amp;utm_source=rss" target="_blank" rel="noopener"
>Head First Design Patterns&lt;/a> by Eric Freeman (⭐️4.48)&lt;/li>
&lt;li>&lt;a class="link" href="https://www.goodreads.com/review/show/4730339305?utm_medium=api&amp;amp;utm_source=rss" target="_blank" rel="noopener"
>Cracking the Coding Interview: 189 Programming Questions and Solutions 6th Edition&lt;/a> by Gayle Laakmann McDowell McDowell (⭐️4.51)&lt;/li>
&lt;li>&lt;a class="link" href="https://www.goodreads.com/review/show/4657558222?utm_medium=api&amp;amp;utm_source=rss" target="_blank" rel="noopener"
>Matthew Hussey - How to talk to Men:59 Secret Scripts To Melt His Heart, Unlock What He’s Thinking, And Make Him Want To Be With You Forever&lt;/a> by Matthew Hussey (⭐️3.52)&lt;/li>
&lt;li>&lt;a class="link" href="https://www.goodreads.com/review/show/4423254875?utm_medium=api&amp;amp;utm_source=rss" target="_blank" rel="noopener"
>The Staff Engineer's Path&lt;/a> by Tanya Reilly (⭐️4.2)&lt;/li>
&lt;li>&lt;a class="link" href="https://www.goodreads.com/review/show/4099951622?utm_medium=api&amp;amp;utm_source=rss" target="_blank" rel="noopener"
>Refactoring: Improving the Design of Existing Code&lt;/a> by Martin Fowler (⭐️4.23)&lt;/li>
&lt;/ul>
&lt;!-- raw HTML omitted --></description></item><item><title>Search</title><link>https://japananh.github.io/blog/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://japananh.github.io/blog/search/</guid><description/></item></channel></rss>