tag:blogger.com,1999:blog-15200559053649347972024-03-16T08:11:54.086+07:00Lớp học Vi Tínhkhóa học vi tính văn phòng, khóa học lập trình, khoa hoc lap trinh online mien phi, khóa học quản trị mạng, giá điện thoại di động mới nhất, khoa hoc vi tinh van phong online mien phi, microsoft office courses online freedrMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.comBlogger446125tag:blogger.com,1999:blog-1520055905364934797.post-49391395464371085782024-03-09T09:25:00.002+07:002024-03-09T09:25:00.138+07:00TV không lên hình - Monitor không lên hình<p> <table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qgXNkzRZ3v8JVQrminlR451jh9HNQjc1nMC7wlo9adiuxmNnSCyeuU3Y6gsmza0Z-EyiRy8onSNpBLi5yrxuTdcNzc-xOyUJrifNCVWQU2CrzDjpA5KkQyzeVRBz341kEpmc8dDJlbumtQtIsi0bNDiF9HHmmp13Sps9YMhLM6DHUgM8HtsvWYD0ZAM/s594/copilot.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="375" data-original-width="594" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qgXNkzRZ3v8JVQrminlR451jh9HNQjc1nMC7wlo9adiuxmNnSCyeuU3Y6gsmza0Z-EyiRy8onSNpBLi5yrxuTdcNzc-xOyUJrifNCVWQU2CrzDjpA5KkQyzeVRBz341kEpmc8dDJlbumtQtIsi0bNDiF9HHmmp13Sps9YMhLM6DHUgM8HtsvWYD0ZAM/s320/copilot.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><i>By Copilot AI</i></td></tr></tbody></table><br /></p><div aria-description="" class="content" tabindex="0"><div class="ac-container ac-adaptiveCard"><div class="ac-textBlock"><p>Tivi không lên hình có thể gặp nhiều nguyên nhân khác nhau. Dưới đây là một số nguyên nhân phổ biến và cách khắc phục:</p><ol><li><p><strong>Tivi bị mất nguồn</strong>:</p><ul><li><strong>Nguyên nhân</strong>: Thường xuyên tắt tivi bằng Remote mà không rút điện ra, làm cho trong tivi còn lưu điện. Lâu ngày, các linh kiện điện tử của tivi sẽ bị giảm tuổi thọ.</li><li><strong>Khắc phục</strong>: Sau khi tắt tivi bằng Remote, hãy ngắt nguồn điện ngay sau khi xem xong.</li></ul></li><li><p><strong>Tivi bị ẩm không lên hình</strong>:</p><ul><li><strong>Nguyên nhân</strong>: Tivi tiếp xúc với môi trường ẩm (ví dụ như bức tường gần tivi bị ẩm, sàn nhà bị nồm), làm cho vi mạch trong tivi bị ẩm thấp và nấm mốc.</li><li><strong>Khắc phục</strong>: Đặt tivi ở nơi khô ráo và tránh ẩm mốc.</li></ul></li><li><p><strong>Tivi bị hỏng linh kiện bên trong</strong>:</p><ul><li><strong>Nguyên nhân</strong>: Nguồn điện đột nhiên tăng cao (ví dụ như khi bị sét đánh hoặc không rút điện ra sau khi sử dụng) làm hỏng các linh kiện như cầu chì, tụ lọc nguồn, IC công suất nguồn, nguồn cấp trước.</li><li><strong>Khắc phục</strong>: Liên hệ đến trung tâm bảo hành sửa chữa để giúp bạn sửa tivi không lên màn hình một cách nhanh chóng nhất.</li></ul></li></ol><p>Nhớ kiểm tra kỹ các linh kiện và nếu cần, hãy tìm đến dịch vụ sửa chữa tivi để giải quyết vấn đề. Chúc bạn may mắn! 📺</p></div></div><div class="ad-container"><iframe class="frame" name="5400f873-66ee-966e-b27a-5f5daebbd011" src="https://www.bing.com/search?showonlyads=1&codex_conid=51D%7CBingProdUnAuthenticatedUsers%7C97CA8395BDA8CBC213E09151408B11BC16A04D9437D6A4A5F0EB14EDC6E5B47D&codex_summ=%5B%7B%22author%22%3A%22user%22%2C%22text%22%3A%22tivi+kh%C3%B4ng+l%C3%AAn+h%C3%ACnh%22%7D%2C%7B%22author%22%3A%22bot%22%2C%22text%22%3A%22Tivi+kh%C3%B4ng+l%C3%AAn+h%C3%ACnh+c%C3%B3+th%E1%BB%83+g%E1%BA%B7p+nhi%E1%BB%81u+nguy%C3%AAn+nh%C3%A2n+kh%C3%A1c+nhau.+D%C6%B0%E1%BB%9Bi+%C4%91%C3%A2y+l%C3%A0+m%E1%BB%99t+s%E1%BB%91+nguy%C3%AAn+nh%C3%A2n+ph%E1%BB%95+bi%E1%BA%BFn+v%C3%A0+c%C3%A1ch+kh%E1%BA%AFc+ph%E1%BB%A5c%3A%5Cn%5Cn1.+**Tivi+b%E1%BB%8B+m%E1%BA%A5t+ngu%E1%BB%93n**%3A%5Cn+++-+**Nguy%C3%AAn+nh%C3%A2n**%3A+Th%C6%B0%E1%BB%9Dng+xuy%C3%AAn+t%E1%BA%AFt+tivi+b%E1%BA%B1ng+Remote+m%C3%A0+kh%C3%B4ng+r%C3%BAt+%C4%91i%E1%BB%87n+ra%2C+l%C3%A0m+cho+trong+tivi+c%C3%B2n+l%C6%B0u+%C4%91i%E1%BB%87n.+L%C3%A2u+ng%C3%A0y%2C+c%C3%A1c+linh+ki%E1%BB%87n+%C4%91i%E1%BB%87n+t%E1%BB%AD+c%E1%BB%A7a+tivi+s%E1%BA%BD+b%E1%BB%8B+gi%E1%BA%A3m+tu%E1%BB%95i+th%E1%BB%8D.%5Cn+++-+**Kh%E1%BA%AFc+ph%E1%BB%A5c**%3A+Sau+khi+t%E1%BA%AFt+tivi+b%E1%BA%B1ng+Remote%2C+h%C3%A3y+ng%E1%BA%AFt+ngu%E1%BB%93n+%C4%91i%E1%BB%87n+ngay+sau+khi+xem+xong.%5Cn%5Cn2.+**Tivi+b%E1%BB%8B+%E1%BA%A9m+kh%C3%B4ng+l%C3%AAn+h%C3%ACnh**%3A%5Cn+++-+**Nguy%C3%AAn+nh%C3%A2n**%3A+Tivi+ti%E1%BA%BFp+x%C3%BAc+v%E1%BB%9Bi+m%C3%B4i+tr%C6%B0%E1%BB%9Dng+%E1%BA%A9m+%28v%C3%AD+d%E1%BB%A5+nh%C6%B0+b%E1%BB%A9c+t%C6%B0%E1%BB%9Dng+g%E1%BA%A7n+tivi+b%E1%BB%8B+%E1%BA%A9m%2C+s%C3%A0n+nh%C3%A0+b%E1%BB%8B+n%E1%BB%93m%29%2C+l%C3%A0m+cho+vi+m%E1%BA%A1ch+trong+tivi+b%E1%BB%8B+%E1%BA%A9m+th%E1%BA%A5p+v%C3%A0+n%E1%BA%A5m+m%E1%BB%91c.%5Cn+++-+**Kh%E1%BA%AFc+ph%E1%BB%A5c**%3A+%C4%90%E1%BA%B7t+tivi+%E1%BB%9F+n%C6%A1i+kh%C3%B4+r%C3%A1o+v%C3%A0+tr%C3%A1nh+%E1%BA%A9m+m%E1%BB%91c.%5Cn%5Cn3.+**Tivi+b%E1%BB%8B+h%E1%BB%8Fng+linh+ki%E1%BB%87n+b%C3%AAn+trong**%3A%5Cn+++-+**Nguy%C3%AAn+nh%C3%A2n**%3A+Ngu%E1%BB%93n+%C4%91i%E1%BB%87n+%C4%91%E1%BB%99t+nhi%C3%AAn+t%C4%83ng+cao+%28v%C3%AD+d%E1%BB%A5+nh%C6%B0+khi+b%E1%BB%8B+s%C3%A9t+%C4%91%C3%A1nh+ho%E1%BA%B7c+kh%C3%B4ng+r%C3%BAt+%C4%91i%E1%BB%87n+ra+sau+khi+s%E1%BB%AD+d%E1%BB%A5ng%29+l%C3%A0m+h%E1%BB%8Fng+c%C3%A1c+linh+ki%E1%BB%87n+nh%C6%B0+c%E1%BA%A7u+ch%C3%AC%2C+t%E1%BB%A5+l%E1%BB%8Dc+ngu%E1%BB%93n%2C+IC+c%C3%B4ng+su%E1%BA%A5t+ngu%E1%BB%93n%2C+ngu%E1%BB%93n+c%E1%BA%A5p+tr%C6%B0%E1%BB%9Bc.%5Cn+++-+**Kh%E1%BA%AFc+ph%E1%BB%A5c**%3A+Li%C3%AAn+h%E1%BB%87+%C4%91%E1%BA%BFn+trung+t%C3%A2m+b%E1%BA%A3o+h%C3%A0nh+s%E1%BB%ADa+ch%E1%BB%AFa+%C4%91%E1%BB%83+gi%C3%BAp+b%E1%BA%A1n+s%E1%BB%ADa+tivi+kh%C3%B4ng+%22%7D%5D&IG=CCA58949E7724AB8942975A2B6F4721F&IID=SERP.9999&cw=1872&ch=932&form=codexx&dissrchswrite=1&kseed=7000&SFX=&q=tivi+kh%C3%B4ng+l%C3%AAn+h%C3%ACnh&iframeid=5400f873-66ee-966e-b27a-5f5daebbd011&cdxpc=SERP&cdxafr=1&brid=bfbfe9be-f82c-d41e-d363-6fcbd3ea58b8&codex_src=sq" style="height: 0px; width: 100%;"></iframe></div><cib-overlay></cib-overlay></div>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com03 Lý Tự Trọng, Bến Nghé, Quận 1, Thành phố Hồ Chí Minh, Việt Nam10.7824542 106.7053355-17.527779636178845 71.5490855 39.092688036178842 141.8615855tag:blogger.com,1999:blog-1520055905364934797.post-84488773781652651922024-02-29T16:00:00.004+07:002024-02-29T16:24:19.553+07:00Điện thoại không lên hình - iPhone không lên hình<p> Đây là 01 con <b>Android</b> => <b><a href="http://www.lophocvitinh.com/2019/11/khoi-phuc-cai-dat-android-trong-recovery-mode.html" target="_blank">Recovery Mode</a> </b>(nút Tăng/Giảm volume + nút Nguồn + nút Home nếu có) </p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/dTr-E43qzwA" width="320" youtube-src-id="dTr-E43qzwA"></iframe></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Con <b>iPhone 6</b> này vệ sinh chân sạc xong vẫn không màn hình -> thay pin</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/MLuLWBvY_TI" width="320" youtube-src-id="MLuLWBvY_TI"></iframe></div><span><a name='more'></a></span><br /><div class="separator" style="clear: both; text-align: left;">Máy <b>iPhone</b> này bị không lên hình do chơi game -livestream liên tục</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">=> Nhấn nút Nguồn + Home cùng lúc hoặc nút Nguồn + Volume giảm</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Đây là cách thoát khỏi <b>chế độ màn hình đen DFU</b> của iPhone</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/nq3wFnbbXsY" width="320" youtube-src-id="nq3wFnbbXsY"></iframe></div><br /><div class="separator" style="clear: both; text-align: left;"><br /></div>Con <b>iPhone 6s</b> này bị lỏng chân pin do rơi rớt.<div><br /></div><div>Video này chỉ cách tháo màn hình <b>iPhone 6s</b><br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/xPsRotgSr-E" width="320" youtube-src-id="xPsRotgSr-E"></iframe></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Con <b>iPad</b> này không lên hình do xài ốp lưng???</div><div class="separator" style="clear: both; text-align: left;"><br /></div>- Ấn 1 lần nút <b>Volum +</b> , nhả ra<div><br /><div>- Ấn 1 lần nút <b>Volum -</b> , nhả ra</div><div><br /></div><div>- Đè giữ <b>nút nguồn</b> thật lâu đến khi lên táo ,</div><div><div><br /></div>Trường hợp máy treo đứng hình ,thì làm như trên , đợi thiết bị tắt hẳn rồi ấn đè nút mở nguồn lại là xong.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/EnkEZeUmYfk" width="320" youtube-src-id="EnkEZeUmYfk"></iframe></div><br /><div>Con <b>iPad Air </b>này bị rơi từ trên cao => lỏng chân pin</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/bE5eEvbkg3s" width="320" youtube-src-id="bE5eEvbkg3s"></iframe></div><div><br /></div><div>Trên đây chỉ là 01 vài cách khắc phục nhanh -> nếu vẫn không lên hình các bạn nên ra tiêm sửa chữa có uy tín để xử lý tiếp nhé.</div><div><br /></div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk3sbofY3XoX0EJSISUIk0daRqsknuvi8RoWRJ1O5OGvlUHMBMVdi_hj7UvIJ_pEyYSnonmluJveI16N4KnlNLOEXYEJ_YjJ03gkdcXG-2PzmFBqyCh5HUssqzi6LMf3IWpKsujSKB6DNcwTFHuvDcrbBS29x0N_9buUNN4uR7MH0RXyMQKkzqkCm1i1c/s594/copilot.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="375" data-original-width="594" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk3sbofY3XoX0EJSISUIk0daRqsknuvi8RoWRJ1O5OGvlUHMBMVdi_hj7UvIJ_pEyYSnonmluJveI16N4KnlNLOEXYEJ_YjJ03gkdcXG-2PzmFBqyCh5HUssqzi6LMf3IWpKsujSKB6DNcwTFHuvDcrbBS29x0N_9buUNN4uR7MH0RXyMQKkzqkCm1i1c/s320/copilot.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><i>By Copilot AI</i></td></tr></tbody></table><br /><div aria-description="" class="content" tabindex="0"><div class="ac-container ac-adaptiveCard" id="entity-image-top" streaming=""><div aria-hidden="true" class="ac-horizontal-separator"></div><div class="ac-textBlock"><p><strong>iPhone</strong> không lên màn hình có thể gây khó chịu và lo lắng. Dưới đây là một số nguyên nhân phổ biến và cách khắc phục:</p><ol><li><p><strong>Lỗi pin iPhone</strong>:</p><ul><li>Pin bị chai hoặc hỏng, không sạc vào điện.</li><li>Nút nguồn hoặc nút Home bị hỏng, khiến máy không lên nguồn.</li><li>Pin cạn kiệt năng lượng vì lâu không sử dụng hoặc không được sạc.</li><li>Phần cứng bên trong máy gặp vấn đề, có thể do hỏng main.</li></ul></li><li><p><strong>Lỗi hệ thống</strong>:</p><ul><li>Cài đặt ứng dụng không tương thích hoặc xung đột với hệ điều hành iOS.</li><li>Sử dụng cáp sạc hoặc củ sạc không chất lượng.</li><li>Thói quen sạc pin qua đêm.</li><li>Sử dụng phiên bản iOS không còn được hỗ trợ.</li></ul></li></ol><p><strong>Cách khắc phục</strong>:</p><ul><li><p><strong>Hard Reset</strong>:</p><ul><li>Nhấn giữ đồng thời phím nguồn và phím Home trong khoảng 5-10 giây.</li><li>Khi màn hình hiện logo quả táo khuyết của Apple, buông tay ra.</li></ul></li><li><p><strong>Kiểm tra pin và nút nguồn</strong>:</p><ul><li>Đảm bảo pin hoạt động tốt và sạc đầy.</li><li>Kiểm tra nút nguồn và nút Home.</li></ul></li><li><p><strong>Khởi chạy chế độ DFU và Restore lại máy</strong>:</p><ul><li>DFU (Device Firmware Update) là chế độ để khôi phục lại hệ thống.</li><li>Kết nối iPhone với máy tính, mở iTunes, thực hiện theo hướng dẫn để restore lại máy.</li></ul></li><li><p><strong>Đưa thiết bị đến trung tâm sửa chữa uy tín</strong>:</p><ul><li>Nếu các biện pháp trên không giải quyết được, hãy đến cửa hàng hoặc trung tâm sửa chữa để kiểm tra phần cứng và xử lý lỗi.</li></ul></li></ul><p>Hãy thử các cách trên và hy vọng iPhone của bạn sẽ hoạt động trở lại bình thường! 📱</p></div><div aria-hidden="true" class="ac-horizontal-separator"></div></div><div class="ad-container" style="text-align: center;"><iframe class="frame" name="3c17c689-9708-7441-ed6f-b0dd71e96adb" src="https://www.bing.com/search?showonlyads=1&codex_conid=51D%7CBingProdUnAuthenticatedUsers%7CB5F91EBE8EE1C4FA65741FEDDBE2AB99F1675B27CC321D84EA70B590C2B71165&codex_summ=%5B%7B%22author%22%3A%22user%22%2C%22text%22%3A%22iphone+kh%C3%B4ng+l%C3%AAn+h%C3%ACnh%22%7D%2C%7B%22author%22%3A%22bot%22%2C%22text%22%3A%22**iPhone**+kh%C3%B4ng+l%C3%AAn+m%C3%A0n+h%C3%ACnh+c%C3%B3+th%E1%BB%83+g%C3%A2y+kh%C3%B3+ch%E1%BB%8Bu+v%C3%A0+lo+l%E1%BA%AFng.+D%C6%B0%E1%BB%9Bi+%C4%91%C3%A2y+l%C3%A0+m%E1%BB%99t+s%E1%BB%91+nguy%C3%AAn+nh%C3%A2n+ph%E1%BB%95+bi%E1%BA%BFn+v%C3%A0+c%C3%A1ch+kh%E1%BA%AFc+ph%E1%BB%A5c%3A%5Cn%5Cn1.+**L%E1%BB%97i+pin+iPhone**%3A%5Cn++++-+Pin+b%E1%BB%8B+chai+ho%E1%BA%B7c+h%E1%BB%8Fng%2C+kh%C3%B4ng+s%E1%BA%A1c+v%C3%A0o+%C4%91i%E1%BB%87n.%5Cn++++-+N%C3%BAt+ngu%E1%BB%93n+ho%E1%BA%B7c+n%C3%BAt+Home+b%E1%BB%8B+h%E1%BB%8Fng%2C+khi%E1%BA%BFn+m%C3%A1y+kh%C3%B4ng+l%C3%AAn+ngu%E1%BB%93n.%5Cn++++-+Pin+c%E1%BA%A1n+ki%E1%BB%87t+n%C4%83ng+l%C6%B0%E1%BB%A3ng+v%C3%AC+l%C3%A2u+kh%C3%B4ng+s%E1%BB%AD+d%E1%BB%A5ng+ho%E1%BA%B7c+kh%C3%B4ng+%C4%91%C6%B0%E1%BB%A3c+s%E1%BA%A1c.%5Cn++++-+Ph%E1%BA%A7n+c%E1%BB%A9ng+b%C3%AAn+trong+m%C3%A1y+g%E1%BA%B7p+v%E1%BA%A5n+%C4%91%E1%BB%81%2C+c%C3%B3+th%E1%BB%83+do+h%E1%BB%8Fng+main.%5Cn%5Cn2.+**L%E1%BB%97i+h%E1%BB%87+th%E1%BB%91ng**%3A%5Cn++++-+C%C3%A0i+%C4%91%E1%BA%B7t+%E1%BB%A9ng+d%E1%BB%A5ng+kh%C3%B4ng+t%C6%B0%C6%A1ng+th%C3%ADch+ho%E1%BA%B7c+xung+%C4%91%E1%BB%99t+v%E1%BB%9Bi+h%E1%BB%87+%C4%91i%E1%BB%81u+h%C3%A0nh+iOS.%5Cn++++-+S%E1%BB%AD+d%E1%BB%A5ng+c%C3%A1p+s%E1%BA%A1c+ho%E1%BA%B7c+c%E1%BB%A7+s%E1%BA%A1c+kh%C3%B4ng+ch%E1%BA%A5t+l%C6%B0%E1%BB%A3ng.%5Cn++++-+Th%C3%B3i+quen+s%E1%BA%A1c+pin+qua+%C4%91%C3%AAm.%5Cn++++-+S%E1%BB%AD+d%E1%BB%A5ng+phi%C3%AAn+b%E1%BA%A3n+iOS+kh%C3%B4ng+c%C3%B2n+%C4%91%C6%B0%E1%BB%A3c+h%E1%BB%97+tr%E1%BB%A3.%5Cn%5Cn**C%C3%A1ch+kh%E1%BA%AFc+ph%E1%BB%A5c**%3A%5Cn%5Cn-+**Hard+Reset**%3A%5Cn++++-+Nh%E1%BA%A5n+gi%E1%BB%AF+%C4%91%E1%BB%93ng+th%E1%BB%9Di+ph%C3%ADm+ngu%E1%BB%93n+v%C3%A0+ph%C3%ADm+Home+trong+kho%E1%BA%A3ng+5-10+gi%C3%A2y.%5Cn++++-+Khi+m%C3%A0n+h%C3%ACnh+hi%E1%BB%87n+logo+qu%E1%BA%A3+t%C3%A1o+khuy%E1%BA%BFt+c%E1%BB%A7a+Apple%2C+bu%C3%B4ng+tay+ra.%5Cn%5Cn-+**Ki%E1%BB%83m+tra+pin+v%C3%A0+n%C3%BAt+ngu%E1%BB%93n**%3A%5Cn++++-+%C4%90%E1%BA%A3m+b%E1%BA%A3o+pin+ho%E1%BA%A1t+%C4%91%E1%BB%99ng+t%E1%BB%91t+v%C3%A0+s%E1%BA%A1c+%C4%91%E1%BA%A7y.%5Cn++++-+Ki%E1%BB%83m+tra+n%C3%BAt+ngu%E1%BB%93n+v%C3%A0+n%C3%BAt+Home.%5Cn%5Cn-+**Kh%E1%BB%9Fi+ch%E1%BA%A1y+ch%E1%BA%BF+%C4%91%E1%BB%99+DFU+v%C3%A0+Restore+l%E1%BA%A1i+m%C3%A1y**%3A%5Cn++++-+DFU+%28Device+Firmwa%22%7D%5D&IG=5DDC573D2C5E4A20B4835250080F6C0A&IID=SERP.5028&cw=1702&ch=847&form=codexx&dissrchswrite=1&kseed=7000&SFX=&q=iphone+kh%C3%B4ng+l%C3%AAn+h%C3%ACnh&iframeid=3c17c689-9708-7441-ed6f-b0dd71e96adb&cdxpc=SERP&cdxafr=1&brid=6aba399c-a85b-1b23-f515-512f1ddfdcf9&codex_src=sq" style="height: 0px; width: 100%;"></iframe></div><cib-overlay></cib-overlay></div><div><br /></div><h4 style="text-align: left;">Nếu thấy hay và hữu ích đừng quên cho mình 01 LIKE + 01 SHARE để mình tiếp tục ra nhiều nhiều bài viết nữa.</h4><div><a href="http://www.lophocvitinh.com/2024/02/dien-thoai-khong-len-hinh-iphone-khong-len-hinh.html" target="_blank">[Link bài viết gốc]</a></div><div><div style="text-align: right;"><i>Sưu tầm bởi #drM</i></div><div><br /></div></div></div></div>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com01 Lý Tự Trọng, Bến Nghé, Quận 1, Thành phố Hồ Chí Minh, Việt Nam10.7824968 106.705437-17.527737036178845 71.549187 39.092730636178842 141.86168700000002tag:blogger.com,1999:blog-1520055905364934797.post-82929990897314497322024-02-15T09:26:00.013+07:002024-02-29T15:51:54.278+07:00Laptop không lên hình<p>Chúng ta kiểm tra theo thứ tự sau:</p><p>Dây nguồn - Dây sạc - Pin (reset điện bằng cách bấm nút nguồn sau khi tháo) - RAM - reset BIOS - pin CMOS - Card Wifi - ổ cứng - Card màn hình (dùng dây cáp nối vs màn hình TV hoặc PC) - IC nguồn - Bàn phím</p><p><span style="color: #990000;">Từ khóa: "tháo laptop ten thuong hieu model" </span>.</p><p>Ví dụ: "tháo laptop Macbook pro 2015"</p><p><i>p/S: bạn nào tháo lắp laptop của mình nhớ quay video clip đóng góp cho cộng đồng nhé.</i></p><p><i><span style="color: #990000;">trước khi tháo thiết bị nào các bạn nhớ làm các bước sau:</span></i></p><p></p><ol style="text-align: left;"><li><i>tháo dây sạc</i></li><li><i>tháo pin</i></li><li><i>tháo HDD (để tránh lỗi win - hdd)</i></li><li><i>reset điện bằng cách bấm nút nguồn.</i></li></ol><p></p><p><i><br /></i></p><p>Sau đây là video clip chi tiết:</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/a-9fEBCzHQ8" width="320" youtube-src-id="a-9fEBCzHQ8"></iframe></div><span><a name='more'></a></span><br /><p>Clip này có chỉ dùng đồng hồ chuyên dụng đo:</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/Qr-_hA-8zAk" width="320" youtube-src-id="Qr-_hA-8zAk"></iframe></div><br /><p>còn video clip sau chia thành 02 trường hợp lên đèn và không lên đèn:</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/bnmjsMLz_4Y" width="320" youtube-src-id="bnmjsMLz_4Y"></iframe></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><div aria-description="" class="content" tabindex="0"><div class="ac-container ac-adaptiveCard"><div class="ac-textBlock"><p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoNyAT1uAR58FltZ8mW5MQHJAbUj3gFvdRtI5u3e5xFH9l6uh_s_S3POWMTVLMvL6V0jM8tPQQTFDTi_B9HyjIHaCZvXqYBcUeTS9I8XvZMJHY6v_uy6qkk2AnM6h40gK_ZbWtFZjxpPKRAKKCAhx3Nmps-qJzCUB8PzYryEyqunYVMh8HIXDQfipoZB8/s594/copilot.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="375" data-original-width="594" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoNyAT1uAR58FltZ8mW5MQHJAbUj3gFvdRtI5u3e5xFH9l6uh_s_S3POWMTVLMvL6V0jM8tPQQTFDTi_B9HyjIHaCZvXqYBcUeTS9I8XvZMJHY6v_uy6qkk2AnM6h40gK_ZbWtFZjxpPKRAKKCAhx3Nmps-qJzCUB8PzYryEyqunYVMh8HIXDQfipoZB8/s320/copilot.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><i>By Copilot AI</i></td></tr></tbody></table><strong><br /></strong></p><p><strong>Laptop không lên màn hình</strong> có thể gây khó khăn trong việc sử dụng. Dưới đây là một số nguyên nhân và cách khắc phục:</p><ol><li><p><strong>Nguồn điện không ổn định</strong>: Đảm bảo nguồn điện kết nối đầu vào trên máy không bị lỏng hoặc không ổn định. Nếu nguồn không đủ công suất, máy có thể không khởi động.</p></li><li><p><strong>Màn hình bị lỗi</strong>: Nếu máy đã bật nguồn, nhưng màn hình không hiển thị hoặc chỉ nháy sáng mà không hiển thị giao diện, có thể màn hình bị hỏng do quá nhiệt hoặc va đập.</p></li><li><p><strong>Pin laptop bị hư</strong>: Kiểm tra tình trạng pin. Pin hỏng có thể gây ra lỗi không lên màn hình.</p></li><li><p><strong>Mainboard laptop bị hỏng</strong>: Nếu máy vẫn không chạy sau khi kiểm tra nguồn và màn hình, có thể mainboard bị lỗi.</p></li><li><p><strong>Lỗi RAM</strong>: RAM bị lỏng hoặc hỏng cũng có thể gây ra tình trạng không lên màn hình.</p></li><li><p><strong>Hư Card màn hình / Card đồ họa</strong>: Kiểm tra card màn hình. Nếu cần, mang máy đến cửa hàng sửa chữa để kiểm tra và thay thế.</p></li><li><p><strong>Lỗi BIOS</strong>: Cập nhật BIOS hoặc kiểm tra xem có lỗi BIOS nào gây ra tình trạng này không.</p></li><li><p><strong>Máy tính hoạt động quá công suất</strong>: Máy tính hoạt động quá tải có thể gây ra lỗi không lên màn hình. Hạn chế để máy quá nóng khi chơi game.</p></li></ol><p><a class="tooltip-target" data-citationid="660f7212-93c9-bfe0-9ff1-1f97ac9420b5-43-group" h="ID=SERP,5026.1" href="http://lophocvitinh.vn/index.php/?link=https://hoanghamobile.com/tin-tuc/laptop-khong-len-man-hinh/" target="_blank">Nếu sau khi thực hiện các bước trên mà vẫn không giải quyết được vấn đề, bạn nên mang máy đến cửa hàng sửa chữa để kiểm tra và khắc phục lỗi một cách chính xác nhất </a><a aria-label="1: " class="ac-anchor sup-target" data-citationid="660f7212-93c9-bfe0-9ff1-1f97ac9420b5-29" h="ID=SERP,5026.1" href="https://hoanghamobile.com/tin-tuc/laptop-khong-len-man-hinh/" target="_blank"><sup class="citation-sup">1</sup></a><a aria-label="2: " class="ac-anchor sup-target" data-citationid="660f7212-93c9-bfe0-9ff1-1f97ac9420b5-31" h="ID=SERP,5026.1" href="https://bing.com/search?q=laptop+kh%C3%B4ng+l%C3%AAn+h%C3%ACnh" target="_blank"><sup class="citation-sup">2</sup></a><a aria-label="3: " class="ac-anchor sup-target" data-citationid="660f7212-93c9-bfe0-9ff1-1f97ac9420b5-33" h="ID=SERP,5026.1" href="https://thinkpro.vn/noi-dung/chi-tiet-cach-khac-phuc-loi-laptop-khong-len-man-hinh" target="_blank"><sup class="citation-sup">3</sup></a><a aria-label="4: " class="ac-anchor sup-target" data-citationid="660f7212-93c9-bfe0-9ff1-1f97ac9420b5-35" h="ID=SERP,5026.1" href="https://didongviet.vn/dchannel/laptop-khong-len-man-hinh/" target="_blank"><sup class="citation-sup">4</sup></a><a aria-label="5: " class="ac-anchor sup-target" data-citationid="660f7212-93c9-bfe0-9ff1-1f97ac9420b5-37" h="ID=SERP,5026.1" href="https://thanhbinhpc.com/tong-hop-cach-khac-phuc-loi-bat-may-tinh-khong-len-man-hinh.html" target="_blank"><sup class="citation-sup">5</sup></a><a aria-label="6: " class="ac-anchor sup-target" data-citationid="660f7212-93c9-bfe0-9ff1-1f97ac9420b5-39" h="ID=SERP,5026.1" href="https://fptshop.com.vn/tin-tuc/danh-gia/huong-dan-sua-loi-sleep-khong-len-man-hinh-windows-10-125847" target="_blank"><sup class="citation-sup">6</sup></a><a aria-label="7: " class="ac-anchor sup-target" data-citationid="660f7212-93c9-bfe0-9ff1-1f97ac9420b5-41" h="ID=SERP,5026.1" href="https://techzones.vn/laptop-khong-len-man-hinh-nguyen-nhan-va-cach-khac-phuc" target="_blank"><sup class="citation-sup">7</sup></a><a aria-label="8: " class="ac-anchor sup-target" data-citationid="660f7212-93c9-bfe0-9ff1-1f97ac9420b5-43" h="ID=SERP,5026.1" href="https://ben.com.vn/tin-tuc/laptop-khong-len-man-hinh/" target="_blank"><sup class="citation-sup">8</sup></a>.</p></div><div aria-hidden="true" class="ac-horizontal-separator"></div></div><div class="ad-container"></div><cib-overlay></cib-overlay></div></div><h4 style="clear: both; text-align: left;">Nếu thấy hay và hữu ích các bạn nhớ cho mình 01 LIKE và 01 SHARE để mình có động lực viết thêm nhiều nhiều bài viết nữa.</h4><div><a href="http://www.lophocvitinh.com/2024/02/laptop-khong-len-hinh.html" target="_blank">[Link bài viết gốc]</a></div><p style="text-align: right;"><i>By #drM</i></p>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0tag:blogger.com,1999:blog-1520055905364934797.post-66933389807045391462024-02-10T10:37:00.012+07:002024-02-29T15:52:28.648+07:00PC bật không lên hình - không lên đèn - quạt không quay<p>Sau kỳ nghỉ lễ dài, quay lại văn phòng làm việc, bỗng nhiên PC của bạn <b>bật nút POWER</b> nhưng lại không lên hình - không sáng đèn và quạt nguồn cũng không quay (hoặc có quay nhưng không lên hình).</p><p>Sau đây là các bước kiểm tra tuẩn tự.</p><p><i><span style="color: #990000;">p/S: thông thường <b>lỗi nằm ở bộ nguồn </b>(dây - nút nguồn - công tắc nguồn) - <b>bios</b> hoặc <b>pin CMOS</b> (đây là loại <b>pin sạc lithium</b> có tuổi thọ khoảng 02 năm, loại tốt 04-05 năm => xui thì lúc bạn nghỉ dài trùng hợp nó <b>hết date</b> - <b>không sạc được</b>)</span></i></p><p><br /></p><h4 style="text-align: left;">01 - Nút nguồn đã ở vị trí I chưa</h4><p>I là <b><u>I</u>N</b> => có điện</p><p>O là <b><u>O</u>UT</b> => chưa có điện</p><p><br /></p><h4 style="text-align: left;">02 - Cọng dây nguồn</h4><p>cắm vào nồi cơm điện xem có OK không.</p><p><br /></p><h4 style="text-align: left;">03 - Dây nối nút POWER vào main</h4><p>tháo jack có chữ<b> POWER</b> trên mainboard => chọt <b>vật bằng sắt</b> để nối tắt (ví dụ: tuốc vít - bút thử điện - kéo...)</p><p>Các bạn chú ý là <b><span style="color: #990000;">nút POWER có thể hoán đổi bằng nút RESET</span></b></p><p><br /></p><p>Nếu đến đây rồi mà quạt quay (quạt nguồn và CPU) nhưng vẫn không lên hình thì <b>RESET lại BIOS</b> hoặc <b>thay mới pin CMOS</b>.</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnbVW0BaVJNssoayJihQjOllYToom75cSRoXy6krtdQDFN-MxybnBZSfptZugdZbt59tg2RIm38sIe9_QekOJsWxy5_M81DqYJnSAhBnQF6SEzS-IVZovHAZofzbz_ocPJlxsVHhgnAswvotJzzS7QosmEQLNPANbBzi-t9I5gmnVnVtyt_xtehAbMa8I/s500/cmos-battery.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="421" data-original-width="500" height="269" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnbVW0BaVJNssoayJihQjOllYToom75cSRoXy6krtdQDFN-MxybnBZSfptZugdZbt59tg2RIm38sIe9_QekOJsWxy5_M81DqYJnSAhBnQF6SEzS-IVZovHAZofzbz_ocPJlxsVHhgnAswvotJzzS7QosmEQLNPANbBzi-t9I5gmnVnVtyt_xtehAbMa8I/s320/cmos-battery.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><i>Mã pin CR2032</i></td></tr></tbody></table><i><br /></i><div><i>p/S: cục pin mà giá có vài nghìn là bạn hiểu rồi đó => tuổi thọ khoảng 02 năm<span><a name='more'></a></span></i><br /><p>Thay pin xong các bạn nhớ <b>vào BIOS thiết lập lại thời gian</b> nhé.</p><p>Nếu là máy có <b>card màn hình rời </b>(ví dụ <b>máy gaming - đồ họa</b>) hãy thử <b>tháo card đồ họa</b> ra và dùng <b>card onboard </b>(có sẵn)<b> của mainboard</b> để test.</p><p><br /></p><p>Trường hợp mọi thứ vẫn không nhúc nhích thì bạn qua bước tiếp theo:</p><h4 style="text-align: left;">04 - Nối tắt dây cấp nguồn cho main (dây nhiều chân nhất) </h4><p><span style="color: #38761d;"><b>màu xanh</b> <b>lá</b></span> nối với <b>màu đen (</b>dùng cọng dây điện nhỏ<b>)</b></p><p><b><br /></b></p><h4 style="text-align: left;">05 - Thay bộ nguồn mới</h4><p><br /></p><p>Sau đây là video clip minh họa của 01 bạn trên Youtube:</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/x2e9F9sxbmw" width="320" youtube-src-id="x2e9F9sxbmw"></iframe></div><br /><p>và 01 video clip khác chi tiết hơn:</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/YeV7joRh8pU" width="320" youtube-src-id="YeV7joRh8pU"></iframe></div><div><br /></div><i>p/S: các bạn đi làm văn phòng nhớ lưu lại bài viết này phòng khi cần đến (vì 01 năm mình viết rất nhiều, có khi bị trôi bài)</i></div><div><br /></div><div>Trước khi tháo lắp linh kiện máy tính PC các bạn nhớ làm các bước sau:</div><div><ol style="text-align: left;"><li>Rút dây nguồn</li><li>Tháo HDD (tránh lỗi WIN - lỗi HDD do bật tắt nhiều trong thời gian ngắn)</li><li>Reset điện (bấm nút POWER sau khi rút dây) </li></ol></div><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgY6Y4OEY5Ka8gxQ0di-l3C9fVpms5A0Ba5y1kbOSc6yxT4yAaj4eyj3L7lb45WQkOz63KITQnMofvhlxEZYcK_tVmygqauTJOiGJvLZMh7Nt8zHovOCi1Q8qWq0CR0uEYfPTvJc09J_XvpxqnjwqPBD48Sg_WaeUnx9PghznkfpFkhVO8u7JiUA_xaGkk/s594/copilot.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="375" data-original-width="594" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgY6Y4OEY5Ka8gxQ0di-l3C9fVpms5A0Ba5y1kbOSc6yxT4yAaj4eyj3L7lb45WQkOz63KITQnMofvhlxEZYcK_tVmygqauTJOiGJvLZMh7Nt8zHovOCi1Q8qWq0CR0uEYfPTvJc09J_XvpxqnjwqPBD48Sg_WaeUnx9PghznkfpFkhVO8u7JiUA_xaGkk/s320/copilot.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><i>By Copilot AI</i></td></tr></tbody></table><div><br /></div><div><div aria-description="" class="content" tabindex="0"><div class="ac-container ac-adaptiveCard"><div class="ac-textBlock"><p><strong>Lỗi máy tính không lên màn hình</strong> có thể gây khó khăn trong việc sử dụng máy tính. Dưới đây là một số cách để khắc phục tình trạng này:</p><ol><li><p><strong>Tắt máy tính và bật lại</strong>: Đôi khi việc tắt máy và chờ một lúc rồi bật lại có thể giải quyết vấn đề. Hãy thử thực hiện thao tác này.</p></li><li><p><strong>Kiểm tra kết nối cáp</strong>: Đảm bảo cáp kết nối giữa máy tính và màn hình được cắm chặt. Nếu có thể, thử sử dụng một cáp khác để kiểm tra.</p></li><li><p><strong>Kiểm tra nguồn máy tính</strong>: Đảm bảo máy tính vẫn hoạt động bằng cách kiểm tra đèn LED trên case. Nếu đèn vẫn sáng, vấn đề có thể nằm ở màn hình hoặc card đồ họa.</p></li><li><p><strong>Kiểm tra RAM</strong>: Tháo RAM ra và vệ sinh chân RAM, khe gắn RAM. Nếu vẫn không lên được, thử sử dụng một cây RAM khác cùng thông số để kiểm tra.</p></li><li><p><strong>Kiểm tra card đồ họa</strong>: Nếu máy vẫn không lên màn hình, hãy thay thử card đồ họa bằng một card khác để kiểm tra.</p></li></ol><p><a class="tooltip-target" data-citationid="6c2b2ce1-9a3a-4dae-ee5f-d2e76f961bbc-28-group" h="ID=SERP,5026.1" href="http://lophocvitinh.vn/index.php/?link=https://thanhbinhpc.com/tong-hop-cach-khac-phuc-loi-bat-may-tinh-khong-len-man-hinh.html" target="_blank">Nếu sau khi thực hiện các bước trên mà vẫn không giải quyết được vấn đề, bạn nên mang máy tính đến cửa hàng sửa chữa để kiểm tra và khắc phục lỗi một cách chính xác nhất </a><a aria-label="1: " class="ac-anchor sup-target" data-citationid="6c2b2ce1-9a3a-4dae-ee5f-d2e76f961bbc-20" h="ID=SERP,5026.1" href="https://thanhbinhpc.com/tong-hop-cach-khac-phuc-loi-bat-may-tinh-khong-len-man-hinh.html" target="_blank"><sup class="citation-sup">1</sup></a><a aria-label="2: " class="ac-anchor sup-target" data-citationid="6c2b2ce1-9a3a-4dae-ee5f-d2e76f961bbc-22" h="ID=SERP,5026.1" href="https://bing.com/search?q=pc+bat+khong+len+hinh" target="_blank"><sup class="citation-sup">2</sup></a><a aria-label="3: " class="ac-anchor sup-target" data-citationid="6c2b2ce1-9a3a-4dae-ee5f-d2e76f961bbc-24" h="ID=SERP,5026.1" href="https://khoavang.vn/blog/may-tinh-bat-khong-len-man-hinh-p3434.html" target="_blank"><sup class="citation-sup">3</sup></a><a aria-label="4: " class="ac-anchor sup-target" data-citationid="6c2b2ce1-9a3a-4dae-ee5f-d2e76f961bbc-26" h="ID=SERP,5026.1" href="https://itsieuviet.com/loi-may-tinh-bat-khong-len/" target="_blank"><sup class="citation-sup">4</sup></a><a aria-label="5: " class="ac-anchor sup-target" data-citationid="6c2b2ce1-9a3a-4dae-ee5f-d2e76f961bbc-28" h="ID=SERP,5026.1" href="https://pctech.com.vn/nguyen-nhan-va-cach-khac-phuc-may-tinh-bat-khong-len.html" target="_blank"><sup class="citation-sup">5</sup></a>.</p></div><div aria-hidden="true" class="ac-horizontal-separator"></div></div><div class="ad-container"></div><cib-overlay></cib-overlay></div></div><h3 style="text-align: left;">Nếu thấy hay và hữu ích hãy cho mình 01 LIKE và 01 SHARE để mình có động lực viết thêm nhiều nhiều bài viết nữa.</h3><div><a href="http://www.lophocvitinh.com/2024/02/pc-bat-khong-len-hinh-khong-len-den-quat-khong-quay.html" target="_blank">[ Link bài viết gốc ]</a></div><div><div style="text-align: right;"><i>By #drM</i></div></div>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com01 Đ. Lê Thánh Tôn, Bến Nghé, Quận 1, Thành phố Hồ Chí Minh, Việt Nam10.7817083 106.7060772-17.528525536178847 71.5498272 39.091942136178844 141.86232719999998tag:blogger.com,1999:blog-1520055905364934797.post-33511507751785918842023-11-07T11:01:00.011+07:002023-12-06T14:48:00.010+07:00Sửa bóng led 220v - Chuyển đổi bóng led 220v thành 12v<h4 style="text-align: left;"><span style="color: #cc0000;">01 - Sửa bóng led 220v</span></h4><p>Trường hợp bóng led 220v hư mạch led -> thường chỉ hư 1-2 cặp (mỗi cặp là 6v + 6v = 12v)</p><p>=> ta dùng cây hàn chì để test từng cặp led -> cặp nào hư thì hàn nối tắt (bóng vẫn sáng nhưng yếu đi 01 chút)</p><p><br /></p><h4 style="text-align: left;"><span style="color: #cc0000;">02 - Chuyển đổi bóng led 220v thành 12v</span></h4><p>Nối tất cả đầu (+) của từng cặp lại vào dây DƯƠNG của dây nguồn</p><p>Nối tất cả đầu (-) của từng cặp lại vào dây ÂM của dây nguồn.</p><p><br /></p><p>Xem video chi tiết cách làm tại đây:</p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/DvjwsBhTVQg" width="320" youtube-src-id="DvjwsBhTVQg"></iframe></div><div class="separator" style="clear: both; text-align: center;"><br /></div><span><a name='more'></a></span><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Nếu là đèn tuýp thì cứ 4 con led là 3v -> gom 04 x 04 led = 16 led sẽ là 12v</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/F7oMw9ZIH_4" width="320" youtube-src-id="F7oMw9ZIH_4"></iframe></div><h6><span style="color: white;">0972841166-0943999539-0947397983-19000026-0901891999-</span></h6><div class="separator" style="clear: both; text-align: left;"><br /></div><i><div style="text-align: right;"><i><br /></i></div><div style="text-align: right;"><i>Sưu tầm bởi #drM</i></div></i>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com05 Đ. Đồng Khởi, Bến Nghé, Quận 1, Thành phố Hồ Chí Minh, Việt Nam10.7731075 106.7060847-17.537126336178844 71.5498347 39.083341336178847 141.86233470000002tag:blogger.com,1999:blog-1520055905364934797.post-63934968081000376412023-09-30T18:45:00.003+07:002023-09-30T18:54:55.302+07:00Cấu hình Ethernet Properties<p>Bạn nào làm công việc liên quan đến cấu hình mạng chắc hẳn cũng khá quen thuộc với phần này. Mình chỉ nhắc lại để ôn bài.</p><p>Đầu tiên chúng ta vào: <b><span style="color: #cc0000;">Control Panel\Network and Internet\Network and Sharing Center</span></b></p><p><i>p/S: cách vào tắt là Windows + R (Run) - gõ <b><span style="color: #990000;">ncpa.cpl</span></b></i></p><p>Bấm vào link có chữ <b><span style="color: #cc0000;">Ethernet</span></b> (kế bên hình <b>đầu cáp RJ45</b>) -> ra màn hình <b><span style="color: #cc0000;">Ethernet status</span></b></p><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmc1TRaGpXuXRpmmBiCKDnBCv7Oo6yOwy0CXcCE8q3Gg7Z8YcN25tBo85CmlVK6xJ5fyboC0rZ76K9ewhlp_TrIQpi6SrkfSc_hfuxkztMaAJPaPWmvoC97qhdRbT0AKkw3xaNfzc1LqNpMHh6uYluB7zRNUpGW85AGUgDlr9ISsduLgSqAdV2ycItx80/s456/ethernet_status.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="456" data-original-width="369" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmc1TRaGpXuXRpmmBiCKDnBCv7Oo6yOwy0CXcCE8q3Gg7Z8YcN25tBo85CmlVK6xJ5fyboC0rZ76K9ewhlp_TrIQpi6SrkfSc_hfuxkztMaAJPaPWmvoC97qhdRbT0AKkw3xaNfzc1LqNpMHh6uYluB7zRNUpGW85AGUgDlr9ISsduLgSqAdV2ycItx80/s320/ethernet_status.png" width="259" /></a><span><a name='more'></a></span></div><p>Bấm tiếp vào nút <b>Properties</b> -> Ra màn hình <b><span style="color: #cc0000;">Ethernet Properties</span></b></p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-YFVXcF6gi88kwkUgt7FQEZbUsZgMgDkxM9MsKBrhTWh8omhzt_7J21q967oSX4gHCVs0pia287EbGHRwQA3WXFYiD6c4JKT4LOxKevIyoaHKUJd-fiYrt-Q7EJeFICrj5yn4eBqnSVmPS7erryhy8xwFRw_n1mAfnD47z90e2bCowcdxtZU81L4SBCM/s468/ethernet_properties.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="468" data-original-width="363" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-YFVXcF6gi88kwkUgt7FQEZbUsZgMgDkxM9MsKBrhTWh8omhzt_7J21q967oSX4gHCVs0pia287EbGHRwQA3WXFYiD6c4JKT4LOxKevIyoaHKUJd-fiYrt-Q7EJeFICrj5yn4eBqnSVmPS7erryhy8xwFRw_n1mAfnD47z90e2bCowcdxtZU81L4SBCM/s320/ethernet_properties.png" width="248" /></a><span><!--more--></span></div><p></p><p>Để máy tính ra internet được chỉ cần check mỗi mục IPv4 là ĐỦ (bỏ check các mục khác sẽ giảm đi các gói tin trong mạng broadcast lung tung)</p><p>nhưng hôm nay, chúng ta sẽ lần lượt xem qua tất cả mục trong danh sách.</p><p><br /></p><p><b><span style="color: #cc0000;">01 - Client for Microsoft Networks</span></b></p><p><i>Allow your computer to access resources on a Microsoft Network.</i></p><p>Cho phép máy tính này truy cập vào các tài nguyên trong cùng mạng (của Microsoft)</p><p><i>p/S: các tài nguyên ở đây ví dụ như thư mục/tập tin đã Sharing hoặc máy in - scan - fax - photocopy...của máy khác.</i></p><p><br /></p><p><b><span style="color: #cc0000;">02 - File and Printer Sharing for Microsoft Networks</span></b></p><p><i>Allow other computers to access resources on your computer using a Microsoft Network.</i></p><p>Cho phép máy tính khác truy cập đến tài nguyên(các tập tin-thư mục-máy in đã Sharing) trên máy của bạn).</p><p><br /></p><p><b><span style="color: #cc0000;">03 - QoS Packet Scheduler</span></b></p><p><i>Quality of Service Packet Scheduler. This component provides network traffic control, including rate-of-flow and prioritization services.</i></p><p>Mục này cho phép chúng ta kiểm soát lưu lượng mạng - bao gồm tốc độ và mức ưu tiên của các dịch vụ.</p><p>Xem thêm về <a href="https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/hh831679(v=ws.11)" rel="nofollow" target="_blank">QoS tại trang Microsoft</a></p><p><br /></p><p><b><span style="color: #cc0000;">04 - Bridge Driver</span></b></p><p><i>This component provides l2 bridge capability between mbb, wifi, and ethernet networks.</i></p><p>Mục này cung cấp tính năng l2 bridge (layer-2 bridge) giữa mbb (mobile broadband), wifi và các mạng LAN có dây (ethernet).</p><p>Xem thêm về <a href="https://techcommunity.microsoft.com/t5/networking-blog/l2bridge-container-networking/ba-p/1180923" rel="nofollow" target="_blank">l2 bridge tại trang Microsoft</a></p><p>share internet bằng cái này???</p><p><br /></p><p><b><span style="color: #cc0000;">05 - Internet Protocol Version 4 (TCP/IPv4)</span></b></p><p><i>Transmission Control Protocol/Internet Protocol. The default wide area network protocol that provides communication across diverse interconnected networks.</i></p><p>Giao thức mạng diện rộng mặc định cung cấp tính năng liên lạc qua các mạng được kết nối đa dạng.</p><p>Xem thêm về <a href="https://www.ibm.com/docs/en/aix/7.2?topic=management-transmission-control-protocolinternet-protocol" rel="nofollow" target="_blank">giao thức TCP/IP trên trang IBM</a></p><p><br /></p><p><b><span style="color: #cc0000;">06 - Microsoft Network Adapter Multiplexor Protocol</span></b></p><p><i>Provide a platform for network adapter load balancing and fail-over.</i></p><p>Cung cấp 01 nền tảng cho giao tiếp mạng cân bằng tải và chuyển đổi dự phòng.</p><p>Xem thêm về <a href="https://learn.microsoft.com/en-us/windows-server/networking/technologies/network-load-balancing" rel="nofollow" target="_blank">cân bằng tải trên trang Microsoft</a> (Load Balancing)</p><p>hoặc <a href="https://viettelidc.com.vn/tin-tuc/can-bang-tai-load-balancing-la-gi-va-tai-sao-phai-dung-can-bang-tai" rel="nofollow" target="_blank">tài liệu Tiếng Việt về cân bằng tải trên trang của Viettel IDC</a></p><p><br /></p><p><i>p/S: hiểu nôm na là khi đường truyền đến 01 máy chủ bị quá tải (bị đơ) hay rớt mạng -> phương thức cân bằng tải sẽ chuyển đổi sang máy chủ dự phòng để đảm bảo đường truyền luôn thông suốt (đây là tính năng chính). </i></p><p>Ví dụ như mạng doanh nghiệp luôn chạy song song ít nhất 02 đường truyền (khác nhà mạng) để rớt cái này còn cái kia dự phòng. </p><p><br /></p><p><b><span style="color: #cc0000;">07 - Microsoft LLDP Protocol Driver</span></b></p><p><i>IEEE 802.1AB Link-Layer Discovery Protocol (LLDP). Supports Microsoft Data Center Networking (DCN)</i></p><p>Giao thức này dùng để thu thập thông tin của các thiết bị lân cận kết nối tới thiết bị để quảng bá những thông tin về chúng cho những thiết bị khác trên hệ thống (truyền địa chỉ MAC tới switch???). </p><p>Giao thức này hoạt động ở layer 2 (Data Link). </p><p>Hoạt động tương tự như CDP (Cisco Discovery Protocol) của Cisco.</p><p>Xem thêm về <a href="https://vi.wikipedia.org/wiki/Link_Layer_Discovery_Protocol" rel="nofollow" target="_blank">giao thức LLDP</a></p><p><br /></p><p><b><span style="color: #cc0000;">08 - Internet Protocol Version 6 (TCP/IPv6)</span></b></p><p><i>TCP/IP version 6. The latest version of the internet protocol that provides communication across diverse interconnected networks.</i></p><p>Ví dụ: <span face="sans-serif" style="background-color: white; color: #202122; font-size: 14px;">2001:0DC8:1005:2F43:0BCD:FFFF</span></p><p>Xem thêm về <a href="https://vi.wikipedia.org/wiki/IPv6" rel="nofollow" target="_blank">TCP/IP v6</a> tại đây.</p><p><br /></p><p><b><span style="color: #cc0000;">09 - Link-Layer Topology Discovery Responder</span></b></p><p><i>Allows this PC to be discovered and located on the network.</i></p><p>Cho phép thiết bị này được tìm thấy và tồn tại trong mạng (phải ON tính năng Network Discovery trong phần cấu hình mạng mới dùng được). Cho phép truy cập nhanh vào thiết bị thông qua 01 giao diện web</p><p>Xem thêm về <a href="https://learn.microsoft.com/en-us/previous-versions/windows/desktop/qos/link-layer-topology-discovery-protocol" rel="nofollow" target="_blank">LLTD Topology trên trang Microsoft</a></p><p>.</p><p><b><span style="color: #cc0000;">10 - Link-Layer Topology Discovery Mapper I/O driver</span></b></p><p><i>Used to discover and locate other PCs, devices, and network infrastructure components on the network. Also used to determine network bandwidth.</i></p><p>Dùng để tìm và định vị các PC - thiết bị - thành phần cấu trúc mạng khác trên hệ thống.</p><p>Ngoài ra còn dùng để xác định băng thông mạng.</p><p><br /></p><p><b><span style="color: #cc0000;">11 - Hyper-V Extensible Virtual Switch</span></b></p><p><i>Provide network connectivity for virtual machines</i></p><p>Cung cấp kết nối cho các máy ảo Hyper-V (đây là dịch vụ máy ảo có sẵn trong Windows)</p><p><br /></p><p>Nếu thấy hữu ích hãy bấm 01 LIKE để mình có động lực viết thêm nhiều nhiều bài viết nữa.</p><p style="text-align: right;"><i>#drM</i></p>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com01 Đ. Lê Thánh Tôn, Phường Bến Thành, Quận 1, Thành phố Hồ Chí Minh, Việt Nam10.7737946 106.6981284-21.898272819944516 71.5418784 43.445862019944521 141.8543784tag:blogger.com,1999:blog-1520055905364934797.post-39056179493998919972023-07-19T09:46:00.009+07:002024-02-29T16:22:13.922+07:00Cấu hình cài đặt windows 11 - Windows 11 requirements<p>01. <b><span style="color: #cc0000;">CPU</span></b> - tối thiểu 1GHz với 2 lõi hoặc hơn - 64 bits</p><p><br /></p><p>02. <b><span style="color: #cc0000;">Bộ nhớ RAM</span></b> - tối thiểu 4GB</p><p><br /></p><p>03. <b><span style="color: #cc0000;">Ổ cứng</span></b> - tối thiểu 64GB</p><p><br /></p><p>04. <b><span style="color: #cc0000;">Kết nối di động</span></b> - hỗ trợ chuẩn 5G</p><p><br /></p><p>05. <b><span style="color: #cc0000;">Wifi</span></b> - hỗ trợ chuẩn 6E</p><p><br /></p><p><a href="http://lophocvitinh.vn/index.php/?link=https://www.microsoft.com/en-us/windows/windows-11#pchealthcheck" target="_blank">Download PC Health Check App</a> để kiểm tra máy tính phù hợp nâng cấp Windows 11 hay không.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpEhwbAyynNh-hqt-7kcWoHxF73QQMQshZZJQGk0g_FBx8WeH1YUJlFwNIxs7sHRW5uFZ82pGri2QdoNXR2FG0Z-tDJakbssQVofnFc9sK3e3_7q7gnKZiUH89haUsq-gqWmIO2YeWUq_p3zrbSc63JRHNoDlla2F7id7wvMFXl6yGCSrWoZFR8hP133w/s901/PC-Health-Check.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="901" data-original-width="895" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpEhwbAyynNh-hqt-7kcWoHxF73QQMQshZZJQGk0g_FBx8WeH1YUJlFwNIxs7sHRW5uFZ82pGri2QdoNXR2FG0Z-tDJakbssQVofnFc9sK3e3_7q7gnKZiUH89haUsq-gqWmIO2YeWUq_p3zrbSc63JRHNoDlla2F7id7wvMFXl6yGCSrWoZFR8hP133w/s320/PC-Health-Check.png" width="318" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /><span><a name='more'></a></span></div><p>Xem thêm về <a href="http://lophocvitinh.vn/index.php/?link=https://www.microsoft.com/en-us/windows/windows-11-specifications?r=1#primaryArea" target="_blank">các yêu cầu tối thiểu cài đặt Windows 11 tại trang web của Microsoft</a>.</p><p><br /></p><p>Mua <a href="http://lophocvitinh.vn" target="_blank">Windows 11 xinh</a> tại đây (chỉ có key online - không kèm đĩa)</p><p><br /></p><p>Bạn nào gặp khó khăn hay muốn <a href="http://lophocvitinh.vn" target="_blank">hỗ trợ cài đặt Windows</a> có thể nhờ mình giúp.</p><p><br /></p><p>Và cuối cùng đừng quên chia sẻ bài viết này - nếu thấy hay hãy cho mình 01 LIKE nhé!!!</p><p><br /></p><p style="text-align: right;"><i>By #drM</i></p>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0tag:blogger.com,1999:blog-1520055905364934797.post-3896909406704686532023-07-18T09:18:00.013+07:002023-07-21T11:00:47.178+07:00Lỗi Bluetooth 5.0 không tìm thấy thiết bị<p>Lỗi này mình gặp khi gắn <b><span style="color: #cc0000;">USB Bluetooth 5.0</span></b> trên windows 10 và muốn kết nối với <b>thiết bị Bluetooth đời cũ</b>.</p><p><b><span style="color: #cc0000;">Cách xử lý:</span></b></p><p><b>Control Panel</b> - <b>Troubleshooting</b> - <b>Hardware and Sound</b> - Chọn mục <b>Bluetooth</b> và làm theo hướng dẫn.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha8HFJXJkE2rjxcXCd-8zaOfcgreZXOjDkmgz6a5m3XhNsxsbhjljcAwoXKUNxY35pzRpF80mTSf6mbJ2FL31U3KZRzhS7vsDuwxrPnUHiHL_HkFH8taPjUy_dPfJozzw2KCEc2b9AYOL3030OuKB8PDwsS8wV5QKyUnh0VBYX4hx3tYqM3yMWK4PG9Vs/s981/control-panel-hardware-sound.webp" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="394" data-original-width="981" height="129" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha8HFJXJkE2rjxcXCd-8zaOfcgreZXOjDkmgz6a5m3XhNsxsbhjljcAwoXKUNxY35pzRpF80mTSf6mbJ2FL31U3KZRzhS7vsDuwxrPnUHiHL_HkFH8taPjUy_dPfJozzw2KCEc2b9AYOL3030OuKB8PDwsS8wV5QKyUnh0VBYX4hx3tYqM3yMWK4PG9Vs/s320/control-panel-hardware-sound.webp" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div>Sau khi fix xong - đóng cửa sổ <b>Troubleshooting</b> lại và ngắt tất cả <b>kết nối Bluetooth</b> hiện có trên các thiết bị gần bạn (tránh nhiều thiết bị giành quyền truy cập <b>Bluetooth</b>)<p></p><span><a name='more'></a></span><p>Tóm lại chỉ có 02 hướng giải quyết chính khi gặp <b><span style="color: #990000;">sự cố về Bluetooth</span></b>: </p><p></p><ol style="text-align: left;"><li>Chạy <b>Trouble Shooting</b> của windows</li><li>Cài lại <b>Driver</b>.</li></ol><p></p><p><br /></p><p>Xem thêm hướng dẫn trên Microsoft:</p><p><a href="http://lophocvitinh.vn/index.php/?link=https://support.microsoft.com/vi-vn/windows/kh%E1%BA%AFc-ph%E1%BB%A5c-s%E1%BB%B1-c%E1%BB%91-v%E1%BB%9Bi-bluetooth-trong-windows-723e092f-03fa-858b-5c80-131ec3fba75c" target="_blank">https://support.microsoft.com/vi-vn/windows/kh%E1%BA%AFc-ph%E1%BB%A5c-s%E1%BB%B1-c%E1%BB%91-v%E1%BB%9Bi-bluetooth-trong-windows-723e092f-03fa-858b-5c80-131ec3fba75c</a></p><p>và 01 trang khác:</p><p><a href="http://lophocvitinh.vn/index.php/?link=https://suachualaptop24h.com/goc-chia-se/cach-sua-loi-bluetooth-tren-windows-10-nhanh-chong-n7329.html" target="_blank">https://suachualaptop24h.com/goc-chia-se/cach-sua-loi-bluetooth-tren-windows-10-nhanh-chong-n7329.html</a></p><p style="text-align: right;"><i>By #drM</i></p>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0tag:blogger.com,1999:blog-1520055905364934797.post-63311226683209074982023-06-18T11:35:00.008+07:002023-06-18T16:32:53.532+07:00Đối thoại cùng AI - Nước bắt nguồn từ đâu<p>Nước bắt nguồn từ nhiều nguồn khác nhau như nước mưa, nước sông hồ, nước ngầm và nước máy ¹². Nguồn nước máy được sản xuất và cung cấp bởi các nhà máy xử lý nước thải hoặc các trạm xử lý nước ¹. Nguồn nước ngầm được khai thác từ giếng khoan hoặc đào ¹. Nguồn nước mưa được thu thập từ các hệ thống thoát nước và được sử dụng cho mục đích tưới tiêu hoặc sinh hoạt ¹. Nguồn nước sông hồ được khai thác từ các con sông và hồ chứa ¹.</p><p><br /></p><p>Hy vọng thông tin này sẽ giúp bạn hiểu rõ hơn về nguồn nước. Nếu bạn có bất kỳ câu hỏi hoặc yêu cầu gì khác, hãy cho tôi biết nhé.</p><p><br /></p><p>Source: Conversation with Bing, 6/18/2023</p><p>(1) 4 nguồn nước sinh hoạt chính hiện nay, đặc ... - Scimitar. <a href="http://lophocvitinh.vn/index.php/?link=https://bing.com/search?q=ngu%e1%bb%93n+n%c6%b0%e1%bb%9bc" target="_blank">https://bing.com/search?q=ngu%e1%bb%93n+n%c6%b0%e1%bb%9bc</a>.</p><p>(2) Nguồn nước (Water Source) là gì? Qui hoạch nguồn nước. <a href="http://lophocvitinh.vn/index.php/?link=https://vietnambiz.vn/nguon-nuoc-water-source-la-gi-qui-hoach-nguon-nuoc-20200213173902209.htm" target="_blank">https://vietnambiz.vn/nguon-nuoc-water-source-la-gi-qui-hoach-nguon-nuoc-20200213173902209.htm</a>.</p><p>(3) 4 nguồn nước sinh hoạt chính hiện nay, đặc ... - Scimitar. <a href="http://lophocvitinh.vn/index.php/?link=https://shop.scimitar.vn/4-nguon-nuoc-sinh-hoat-chinh-hien-nay/" target="_blank">https://shop.scimitar.vn/4-nguon-nuoc-sinh-hoat-chinh-hien-nay/</a>.</p><p>(4) Nguồn nước mặt là gì? Hiểu sâu hơn về nguồn nước mặt. <a href="http://lophocvitinh.vn/index.php/?link=https://swd.vn/blogs/news/nguon-nuoc-mat-la-gi-hieu-sau-hon-ve-nguon-nuoc-mat" target="_blank">https://swd.vn/blogs/news/nguon-nuoc-mat-la-gi-hieu-sau-hon-ve-nguon-nuoc-mat</a>.</p><p>(5) Tài nguyên nước – Wikipedia tiếng Việt. <a href="http://lophocvitinh.vn/index.php/?link=https://vi.wikipedia.org/wiki/T%C3%A0i_nguy%C3%AAn_n%C6%B0%E1%BB%9Bc" target="_blank">https://vi.wikipedia.org/wiki/T%C3%A0i_nguy%C3%AAn_n%C6%B0%E1%BB%9Bc</a>.</p><p>(6) Vòng đời của nước, The Water Cycle, Vietnamese Completed. <a href="http://lophocvitinh.vn/index.php/?link=https://www.usgs.gov/special-topics/water-science-school/science/vong-doi-cua-nuoc-water-cycle-vietnamese" target="_blank">https://www.usgs.gov/special-topics/water-science-school/science/vong-doi-cua-nuoc-water-cycle-vietnamese</a>.</p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/SCcsIxvyYjA" width="320" youtube-src-id="SCcsIxvyYjA"></iframe></div><span><a name='more'></a></span><div class="separator" style="clear: both; text-align: center;"><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">sự hình thành nước</span></h3><p><span face="-apple-system, Roboto, SegoeUI, Segoe UI, Helvetica Neue, Helvetica, Microsoft YaHei, Meiryo UI, Meiryo, Arial Unicode MS, sans-serif" style="color: #111111;"><span style="font-size: 14px;">Nước được hình thành từ quá trình chu kỳ thủy điện(???) trong đó nước được bay hơi từ các bề mặt nước như đại dương, sông hồ và các hồ chứa ¹. Hơi nước được tạo ra từ quá trình này tạo thành các đám mây và sau đó rơi xuống dưới dạng mưa hoặc tuyết ¹. Nước cũng được hình thành từ các quá trình khác như sông ngòi và nước ngầm ².</span></span></p><p><span face="-apple-system, Roboto, SegoeUI, Segoe UI, Helvetica Neue, Helvetica, Microsoft YaHei, Meiryo UI, Meiryo, Arial Unicode MS, sans-serif" style="color: #111111;"><span style="font-size: 14px;"><br /></span></span></p><p><span face="-apple-system, Roboto, SegoeUI, Segoe UI, Helvetica Neue, Helvetica, Microsoft YaHei, Meiryo UI, Meiryo, Arial Unicode MS, sans-serif" style="color: #111111;"><span style="font-size: 14px;">Hy vọng thông tin này sẽ giúp bạn hiểu rõ hơn về sự hình thành của nước. Nếu bạn có bất kỳ câu hỏi hoặc yêu cầu gì khác, hãy cho tôi biết nhé.</span></span></p><p><span face="-apple-system, Roboto, SegoeUI, Segoe UI, Helvetica Neue, Helvetica, Microsoft YaHei, Meiryo UI, Meiryo, Arial Unicode MS, sans-serif" style="color: #111111;"><span style="font-size: 14px;"><br /></span></span></p><p><span face="-apple-system, Roboto, SegoeUI, Segoe UI, Helvetica Neue, Helvetica, Microsoft YaHei, Meiryo UI, Meiryo, Arial Unicode MS, sans-serif" style="color: #111111;"><span style="font-size: 14px;">Source: Conversation with Bing, 6/18/2023</span></span></p><p><span face="-apple-system, Roboto, SegoeUI, Segoe UI, Helvetica Neue, Helvetica, Microsoft YaHei, Meiryo UI, Meiryo, Arial Unicode MS, sans-serif" style="color: #111111;"><span style="font-size: 14px;">(1) Nước – Wikipedia tiếng Việt. <a href="http://lophocvitinh.vn/index.php/?link=https://vi.wikipedia.org/wiki/N%C6%B0%E1%BB%9Bc" target="_blank">https://vi.wikipedia.org/wiki/N%C6%B0%E1%BB%9Bc</a>.</span></span></p><p><span face="-apple-system, Roboto, SegoeUI, Segoe UI, Helvetica Neue, Helvetica, Microsoft YaHei, Meiryo UI, Meiryo, Arial Unicode MS, sans-serif" style="color: #111111;"><span style="font-size: 14px;">(2) Nước dưới đất – Wikipedia tiếng Việt. <a href="http://lophocvitinh.vn/index.php/?link=https://vi.wikipedia.org/wiki/N%C6%B0%E1%BB%9Bc_d%C6%B0%E1%BB%9Bi_%C4%91%E1%BA%A5t" target="_blank">https://vi.wikipedia.org/wiki/N%C6%B0%E1%BB%9Bc_d%C6%B0%E1%BB%9Bi_%C4%91%E1%BA%A5t</a>.</span></span></p><p><br /></p><p><span face="-apple-system, Roboto, SegoeUI, Segoe UI, Helvetica Neue, Helvetica, Microsoft YaHei, Meiryo UI, Meiryo, Arial Unicode MS, sans-serif" style="color: #111111;"><span style="font-size: 14px;"></span></span></p><div class="separator" style="clear: both; text-align: center;"><span face="-apple-system, Roboto, SegoeUI, Segoe UI, Helvetica Neue, Helvetica, Microsoft YaHei, Meiryo UI, Meiryo, Arial Unicode MS, sans-serif" style="color: #111111;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/9nV2qQUTk0Q" width="320" youtube-src-id="9nV2qQUTk0Q"></iframe></span></div><span face="-apple-system, Roboto, SegoeUI, Segoe UI, Helvetica Neue, Helvetica, Microsoft YaHei, Meiryo UI, Meiryo, Arial Unicode MS, sans-serif" style="color: #111111;"><b><br /></b></span><p></p><h3 style="text-align: left;"><span style="color: #cc0000;">Nước có bao nhiêu loại?</span></h3><div><div>Nước có nhiều loại khác nhau. Tuy nhiên, 5 loại phổ biến nhất là:</div><div><br /></div><div>1. **<b>Nước khoáng</b>**: Nước có chứa các khoáng chất và vi lượng cần thiết cho cơ thể ¹.</div><div>2. **<b>Nước tinh khiết</b>**: Nước được lọc hoàn toàn và không chứa bất kỳ chất gì ¹.</div><div>3. **<b>Nước ion kiềm</b>**: Nước có tính kiềm và được xem là có lợi cho sức khỏe ¹.</div><div>4. **<b>Nước cất</b>**: Nước được lọc và tiệt trùng để sử dụng trong các thí nghiệm khoa học hoặc sản xuất thuốc ¹.</div><div>5. **<b>Nước đun sôi để nguội</b>**: Nước được đun sôi và để nguội trước khi sử dụng ¹.</div><div><br /></div><div>Hy vọng thông tin này giúp bạn hiểu rõ hơn về các loại nước phổ biến nhất. Nếu bạn có bất kỳ câu hỏi hoặc yêu cầu gì khác, hãy cho tôi biết nhé.</div><div><br /></div><div>Source: Conversation with Bing, 6/18/2023</div><div>(1) <b>Nước uống có mấy loại</b>? Cách phân biệt các loại nước uống. <a href="http://lophocvitinh.vn/index.php/?link=https://bing.com/search?q=c%c3%a1c+lo%e1%ba%a1i+n%c6%b0%e1%bb%9bc" target="_blank">https://bing.com/search?q=c%c3%a1c+lo%e1%ba%a1i+n%c6%b0%e1%bb%9bc</a>.</div><div>(2) <b>Nước uống có mấy loại? Cách phân biệt các loại nước uống</b>. <a href="http://lophocvitinh.vn/index.php/?link=https://maxdream.vn/nuoc-uong-co-may-loai-cach-phan-biet-cac-loai-nuoc-uong/" target="_blank">https://maxdream.vn/nuoc-uong-co-may-loai-cach-phan-biet-cac-loai-nuoc-uong/</a>.</div><div>(3) <b>Nước</b> – Wikipedia tiếng Việt. <a href="http://lophocvitinh.vn/index.php/?link=https://vi.wikipedia.org/wiki/N%C6%B0%E1%BB%9Bc" target="_blank">https://vi.wikipedia.org/wiki/N%C6%B0%E1%BB%9Bc</a>.</div><div>(4) <b>10 Công Thức Nước Uống Giải Nhiệt Mùa Hè Thanh Mát, Dễ Làm</b>. <a href="http://lophocvitinh.vn/index.php/?link=https://www.klook.com/vi/blog/nuoc-uong-giai-nhiet/" target="_blank">https://www.klook.com/vi/blog/nuoc-uong-giai-nhiet/</a>.</div><div>(5) <b>Phân biệt các loại nước và tiêu chuẩn/ Quy chuẩn kiểm nghiệm</b>. <a href="http://lophocvitinh.vn/index.php/?link=https://qcvn.com.vn/phan-biet-cac-loai-nuoc/" target="_blank">https://qcvn.com.vn/phan-biet-cac-loai-nuoc/</a>.</div></div><div><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">nước trong cơ thể người</span></h3><div><div>Lượng nước trong cơ thể con người dao động từ **<b>45-75%</b>**, cơ thể người trưởng thành trung bình là **<b>50-65%</b>** nước, trung bình khoảng **<b>57-60%</b>** ¹². </div><div>Tỷ lệ nước ở trẻ sơ sinh cao hơn nhiều, điển hình là khoảng **<b>75-78%</b>** nước, giảm xuống còn **<b>65%</b>** khi trẻ được một tuổi ¹.</div><div><br /></div><div>Nước chiếm phần lớn trọng lượng cơ thể và tham gia vào nhiều chức năng quan trọng như loại bỏ chất thải, điều hòa thân nhiệt và giúp bộ não hoạt động ⁴. </div><div><br /></div><div>Hy vọng thông tin này sẽ giúp bạn hiểu rõ hơn về lượng nước trong cơ thể con người. Nếu bạn có câu hỏi khác, hãy cho tôi biết nhé!</div><div><br /></div><div>Source: Conversation with Bing, 6/18/2023</div><div>(1) Bao nhiêu cơ thể con người là nước? - Greelane.com. <a href="http://lophocvitinh.vn/index.php/?link=https://bing.com/search?q=n%c6%b0%e1%bb%9bc+trong+c%c6%a1+th%e1%bb%83+ng%c6%b0%e1%bb%9di" target="_blank">https://bing.com/search?q=n%c6%b0%e1%bb%9bc+trong+c%c6%a1+th%e1%bb%83+ng%c6%b0%e1%bb%9di</a>.</div><div>(2) Bao nhiêu cơ thể con người là nước? - Greelane.com. <a href="http://lophocvitinh.vn/index.php/?link=https://www.greelane.com/vi/khoa-h%E1%BB%8Dc-c%C3%B4ng-ngh%E1%BB%87-to%C3%A1n/khoa-h%E1%BB%8Dc/how-much-of-your-body-is-water-609406/" target="_blank">https://www.greelane.com/vi/khoa-h%E1%BB%8Dc-c%C3%B4ng-ngh%E1%BB%87-to%C3%A1n/khoa-h%E1%BB%8Dc/how-much-of-your-body-is-water-609406/</a>.</div><div>(3) Chức năng của nước trong cơ thể | Vinmec. <a href="http://lophocvitinh.vn/index.php/?link=https://www.vinmec.com/vi/tin-tuc/thong-tin-suc-khoe/suc-khoe-tong-quat/chuc-nang-cua-nuoc-trong-co/" target="_blank">https://www.vinmec.com/vi/tin-tuc/thong-tin-suc-khoe/suc-khoe-tong-quat/chuc-nang-cua-nuoc-trong-co/</a>.</div><div>(4) Những điều ít người biết về lượng nước trong cơ thể. <a href="http://lophocvitinh.vn/index.php/?link=https://nuocsachhanoi.com/nuoc-trong-co-the.html" target="_blank">https://nuocsachhanoi.com/nuoc-trong-co-the.html</a>.</div><div>(5) Nước phân bố trong cơ thể như thế nào? | Vinmec. <a href="http://lophocvitinh.vn/index.php/?link=https://www.vinmec.com/vi/tin-tuc/thong-tin-suc-khoe/nuoc-phan-bo-trong-co-nhu-nao/" target="_blank">https://www.vinmec.com/vi/tin-tuc/thong-tin-suc-khoe/nuoc-phan-bo-trong-co-nhu-nao/</a>.</div></div><div><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">cách tìm nước trong sa mạc</span></h3><div><div>Cách tìm nước trong sa mạc phụ thuộc vào nhiều yếu tố như địa hình, thực vật và thời tiết. Thực vật, đặc biệt là xương rồng và rễ cây đều chứa nước. Nếu dùng đá đập dập chúng, ví dụ như xương rồng - loài cây thường tìm thấy ở các sa mạc, bạn sẽ có 1 chút nước ¹². Ngoài ra, bạn có thể tìm tới các vùng trũng để tìm nước. Nếu bạn bị lạc trong sa mạc và không biết cách tìm nước, hãy cố gắng giữ bình tĩnh và không tiêu thụ quá nhiều năng lượng. Hãy cố gắng di chuyển đến những khu vực có khả năng có nước như các con sông hoặc hồ ¹.</div><div><br /></div><div>Tuy nhiên, việc tìm kiếm nước trong sa mạc là rất khó khăn và nguy hiểm. Nếu bạn không có kinh nghiệm hoặc không biết cách tìm kiếm nước trong sa mạc, hãy cố gắng tránh xa những khu vực này và mang theo đủ lượng nước để tránh nguy hiểm.</div><div><br /></div><div>Mong rằng thông tin này sẽ giúp ích cho bạn.</div><div><br /></div><div>Source: Conversation with Bing, 6/18/2023</div><div>(1) Làm thế nào để tìm ra nước khi bạn mắc kẹt trên sa mạc?. <a href="http://lophocvitinh.vn/index.php/?link=https://bing.com/search?q=c%c3%a1ch+t%c3%acm+n%c6%b0%e1%bb%9bc+trong+sa+m%e1%ba%a1c" target="_blank">https://bing.com/search?q=c%c3%a1ch+t%c3%acm+n%c6%b0%e1%bb%9bc+trong+sa+m%e1%ba%a1c</a>.</div><div>(2) Làm thế nào để tìm ra nước khi bạn mắc kẹt trên sa mạc?. <a href="http://lophocvitinh.vn/index.php/?link=https://vov.vn/the-gioi/cuoc-song-do-day/lam-the-nao-de-tim-ra-nuoc-khi-ban-mac-ket-tren-sa-mac-970701.vov" target="_blank">https://vov.vn/the-gioi/cuoc-song-do-day/lam-the-nao-de-tim-ra-nuoc-khi-ban-mac-ket-tren-sa-mac-970701.vov</a>.</div><div>(3) BAN NƯỚC TRONG SA MẠC Tiếng anh là gì - trong Tiếng anh Dịch. <a href="http://lophocvitinh.vn/index.php/?link=https://tr-ex.me/d%E1%BB%8Bch/ti%E1%BA%BFng+vi%E1%BB%87t-ti%E1%BA%BFng+anh/ban+n%C6%B0%E1%BB%9Bc+trong+sa+m%E1%BA%A1c" target="_blank">https://tr-ex.me/d%E1%BB%8Bch/ti%E1%BA%BFng+vi%E1%BB%87t-ti%E1%BA%BFng+anh/ban+n%C6%B0%E1%BB%9Bc+trong+sa+m%E1%BA%A1c</a>.</div><div>(4) <b>Kỹ năng tìm kiếm nguồn nước khi bị lạc trong sa mạc</b>. <a href="http://lophocvitinh.vn/index.php/?link=https://www.ohay.tv/view/ky-nang-tim-kiem-nguon-nuoc-khi-bi-lac-trong-sa-mac/A7vF1" target="_blank">https://www.ohay.tv/view/ky-nang-tim-kiem-nguon-nuoc-khi-bi-lac-trong-sa-mac/A7vF1</a>.</div><div>(5) Lấy Nước Trong Sa Mạc - Getting water in the desert. - YouTube. <a href="http://lophocvitinh.vn/index.php/?link=https://www.youtube.com/watch?v=ipV_6hN4ZTw" target="_blank">https://www.youtube.com/watch?v=ipV_6hN4ZTw</a>.</div></div><div><br /></div><div><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">Cách tìm nước uống trong rừng</span></h3><div><br /></div><div><div>Bạn có thể tìm nước uống trong rừng bằng nhiều cách khác nhau. Dưới đây là một số cách tìm nước uống trong rừng:</div><div><br /></div><div>1. <b>Tìm nước uống từ các loại dây leo</b>: Hãy quan sát tìm kiếm dây leo. Nếu bạn thấy một loại dây leo có thể chứa nước, hãy cắt đoạn dây đó và lấy ra nước ¹.</div><div>2. <b>Tìm nước uống từ cây chuối</b>: Loại cây này là cả kho tàng của bạn. Bạn có thể lấy ra nước từ bông hoa của cây chuối hoặc từ trái chuối chín ¹.</div><div>3. <b>Tìm nước uống từ cây tre</b>: Bạn có thể lấy ra nước từ các mầm non của cây tre ¹.</div><div>4. <b>Tìm nước từ sương sớm</b>: Sương sớm có thể được thu thập bằng cách đặt một tấm vải hoặc giấy ẩm vào một vị trí thoáng gió và đợi cho sương ngưng tụ trên bề mặt của chúng ¹.</div><div>5. <b>Tìm nước từ hiện tượng bay hơi</b>: Bạn có thể thu thập nước bằng cách đặt một túi nhựa trên một cành cây và đợi cho hơi nước ngưng tụ trên bề mặt của túi ¹.</div><div>6. <b>Tìm nước từ việc quan sát động vậ</b>t: Nếu bạn quan sát được động vật như con chim hay con khỉ uống nước ở đâu, hãy theo sau chúng để tìm nguồn nước ¹.</div><div><br /></div><div>Tuy nhiên, bạn cần phải cẩn thận khi lấy nước trong rừng để tránh bị ngộ độc hoặc bị bệnh do vi khuẩn trong nước ³. Nếu bạn không chắc chắn về tính an toàn của nguồn nước, hãy luôn luôn đun sôi hoặc sử dụng các sản phẩm lọc nước để làm sạch nước trước khi uống ³.</div><div><br /></div><div>Hy vọng những thông tin này sẽ giúp ích cho bạn trong việc tìm kiếm nguồn nước uống trong rừng! 😊</div><div><br /></div><div>Source: Conversation with Bing, 6/18/2023</div><div>(1) [Kỹ Năng Sinh Tồn] Cách Tìm Nước Uống Trong Rừng. <a href="http://lophocvitinh.vn/index.php/?link=https://bing.com/search?q=c%c3%a1ch+t%c3%acm+n%c6%b0%e1%bb%9bc+u%e1%bb%91ng+trong+r%e1%bb%abng" target="_blank">https://bing.com/search?q=c%c3%a1ch+t%c3%acm+n%c6%b0%e1%bb%9bc+u%e1%bb%91ng+trong+r%e1%bb%abng</a>.</div><div>(2) Cách tìm thức ăn khi bị lạc trong rừng - kĩ năng sinh tồn cần thiết cho .... <a href="http://lophocvitinh.vn/index.php/?link=https://tieudaotu.com/cach-tim-thuc-an-khi-bi-lac-trong-rung/" target="_blank">https://tieudaotu.com/cach-tim-thuc-an-khi-bi-lac-trong-rung/</a>.</div><div>(3) Cách làm trà khổ qua rừng và công dụng tuyệt vời cho người uống. <a href="http://lophocvitinh.vn/index.php/?link=https://www.mudaru.com/vn/tin-tuc/cach-lam-tra-kho-qua-rung-va-cong-dung-tuyet-voi-cho-nguoi-uong.html" target="_blank">https://www.mudaru.com/vn/tin-tuc/cach-lam-tra-kho-qua-rung-va-cong-dung-tuyet-voi-cho-nguoi-uong.html</a>.</div><div>(4) Tìm nước giữa rừng - Kỹ năng sinh tồn cơ bản – FanFan. <a href="http://lophocvitinh.vn/index.php/?link=https://fanfan.vn/blogs/leo-nui-trekking/tim-nuoc-giua-rung-ky-nang-sinh-ton-co-ban" target="_blank">https://fanfan.vn/blogs/leo-nui-trekking/tim-nuoc-giua-rung-ky-nang-sinh-ton-co-ban</a>.</div><div>(5) Cách lấy nước độc đáo, không phải ai cũng biết khi bị đi lạc trong rừng .... <a href="http://lophocvitinh.vn/index.php/?link=https://www.giaiphapthoathiem.com/cach-lay-nuoc-doc-dao-khong-phai-ai-cung-biet-khi-bi-di-lac-trong-rung.html" target="_blank">https://www.giaiphapthoathiem.com/cach-lay-nuoc-doc-dao-khong-phai-ai-cung-biet-khi-bi-di-lac-trong-rung.html</a>.</div></div>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0tag:blogger.com,1999:blog-1520055905364934797.post-37531819334858605672023-06-16T11:12:00.024+07:002024-02-29T16:23:09.301+07:00Đối thoại cùng AI - Dò mạch nước ngầm<p> </p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/rMKf_hkkKqE" width="320" youtube-src-id="rMKf_hkkKqE"></iframe></div><p></p><p></p><p>Có nhiều cách để dò mạch nước ngầm nhưng phổ biến nhất là <b><span style="color: #cc0000;">sử dụng máy dò mạch nước ngầm</span></b>. Máy này sử dụng sóng điện từ để tìm kiếm mạch nước ngầm. Cách sử dụng máy rất đơn giản và ít tốn công sức ¹³.</p><p><i><span style="color: #cc0000;">p/s: mình hiểu nôm na thế này - dòng nước cũng là dòng các electron nên nếu chúng di chuyển có hướng (nước chảy) sẽ tạo ra dòng điện (từ) => dựa vào đó để tìm đường nước chảy???</span></i></p><p><i><span style="color: #cc0000;"><br /></span></i></p><p>Ngoài ra, bạn cũng có thể sử dụng que dò hoặc dây thép buộc để tìm kiếm mạch nước ngầm. Cách này đơn giản và chi phí thấp hơn so với việc sử dụng máy dò mạch nước ngầm ².</p><span><a name='more'></a></span><p><br /></p><p>Hy vọng thông tin này sẽ giúp bạn tìm được mạch nước ngầm một cách dễ dàng và hiệu quả.</p><p><br /></p><p>Source: Conversation with Bing, 6/16/2023</p><p>(1) Cách tìm mạch nước ngầm, cách dò mạch nước ngầm đơn giản nhất. <a href="http://lophocvitinh.vn/index.php/?link=https://thietbichuyendung.com.vn/cach-tim-mach-nuoc-ngam-cach-do-mach-nuoc-ngam-don-gian-nhat/" target="_blank"><i>https://thietbichuyendung.com.vn/cach-tim-mach-nuoc-ngam-cach-do-mach-nuoc-ngam-don-gian-nhat/</i></a>.</p><p>(2) Cách tìm mạch nước ngầm, cách dò mạch nước ngầm để khoan giếng. <a href="http://lophocvitinh.vn/index.php/?link=https://thongtinkythuat.com/cach-tim-mach-nuoc-ngam-cach-do-mach-nuoc-ngam-de-khoan-gieng/" target="_blank"><i>https://thongtinkythuat.com/cach-tim-mach-nuoc-ngam-cach-do-mach-nuoc-ngam-de-khoan-gieng/</i></a>.</p><p>(3) Hướng dẫn làm que dò và cách dò mạch nước ngầm bằng dây thép buộc .... <a href="http://lophocvitinh.vn/index.php/?link=https://www.youtube.com/watch?v=0R8aURzARtE" target="_blank"><i>https://www.youtube.com/watch?v=0R8aURzARtE</i></a>.</p><p><br /></p><h3 style="text-align: left;"><span style="color: #cc0000;">Cách tạo ra suối</span></h3><p>Để tạo ra một con suối nhân tạo trong vườn, bạn có thể thực hiện theo các bước sau:</p><p><br /></p><p>1. Dọn dẹp khu vườn: Bạn cần dọn dẹp sạch sẽ khu vực muốn làm suối nước. Hãy đảm bảo rằng không còn cỏ dại hay rác thải nào trên đó.</p><p>2. Đào hố: Bạn cần đào một hố tại vị trí muốn làm suối nước. Hố này có thể có kích thước và hình dạng tùy ý của bạn.</p><p>3. Lót đá: Sau khi đào hố xong, bạn cần lót đá lên đáy hố để tạo thành một lớp chắn chắn cho suối nước.</p><p>4. Lắp đặt bơm nước: Bạn cần lắp đặt một bơm nước để đẩy nước lên từ đáy hố lên trên.</p><p>5. Tạo dòng chảy: Bạn có thể sử dụng các viên đá hoặc các vật liệu khác để tạo ra một dòng chảy cho suối nước của mình.</p><p>6. Trồng cây xung quanh: Cuối cùng, bạn có thể trồng cây xung quanh suối nước để tạo ra một không gian xanh mát và thoáng đãng.</p><p><br /></p><p>Ngoài ra, bạn cũng có thể xem video này để biết <b>cách tạo điện từ suối</b> ².</p><p><br /></p><p>Hy vọng thông tin này sẽ giúp bạn tạo ra một con suối nhân tạo trong vườn của mình.</p><p><br /></p><p>Source: Conversation with Bing, 6/16/2023</p><p>(1) CÁCH TẠO RA ĐIỆN TỪ SUỐI • Người Rừng • Tập 8 - YouTube. <a href="http://lophocvitinh.vn/index.php/?link=https://www.youtube.com/watch?v=p4txiFMjORU" target="_blank"><i>https://www.youtube.com/watch?v=p4txiFMjORU</i></a>.</p><p>(2) Cách làm suối nhân tạo trong vườn đơn giản tiết kiệm từ A - Z. <a href="http://lophocvitinh.vn/index.php/?link=https://lasc.vn/cach-lam-suoi-nhan-tao/" target="_blank"><i>https://lasc.vn/cach-lam-suoi-nhan-tao/</i></a>.</p><p>(3) Vòng đời của nước, The Water Cycle, Vietnamese. <a href="http://lophocvitinh.vn/index.php/?link=https://www.usgs.gov/special-topics/water-science-school/science/vong-doi-cua-nuoc-water-cycle-vietnamese" target="_blank"><i>https://www.usgs.gov/special-topics/water-science-school/science/vong-doi-cua-nuoc-water-cycle-vietnamese</i></a>.</p><div><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">tổ côn trùng có mạch nước ngầm không?</span></h3><div><div>Các tổ côn trùng thường được xây dựng trên mặt đất hoặc trên các cây và không có mạch nước ngầm ¹. Mạch nước ngầm là các dòng nước chảy dưới đất và không có liên quan gì đến tổ côn trùng.</div><div><br /></div><div>Hy vọng thông tin này sẽ giúp bạn hiểu rõ hơn về tổ côn trùng và mạch nước ngầm.</div><div><br /></div><div>Source: Conversation with Bing, 6/16/2023</div><div>(1) Côn trùng – Wikipedia tiếng Việt. <a href="http://lophocvitinh.vn/index.php/?link=https://vi.wikipedia.org/wiki/C%C3%B4n_tr%C3%B9ng" target="_blank"><i>https://vi.wikipedia.org/wiki/C%C3%B4n_tr%C3%B9ng</i></a>.</div><div>(2) Nước dưới đất – Wikipedia tiếng Việt. <a href="http://lophocvitinh.vn/index.php/?link=https://vi.wikipedia.org/wiki/N%C6%B0%E1%BB%9Bc_d%C6%B0%E1%BB%9Bi_%C4%91%E1%BA%A5t" target="_blank"><i>https://vi.wikipedia.org/wiki/N%C6%B0%E1%BB%9Bc_d%C6%B0%E1%BB%9Bi_%C4%91%E1%BA%A5t</i></a>.</div><div>(3) Mạch nước ngầm là gì? Mạch nước ngầm có sạch không?. <a href="http://lophocvitinh.vn/index.php/?link=https://karofivietnam.com.vn/mach-nuoc-ngam-la-gi.html" target="_blank"><i>https://karofivietnam.com.vn/mach-nuoc-ngam-la-gi.html</i></a>.</div></div><div><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">Mạch nước ngầm</span></h3><div><b>Mạch nước ngầm</b> là một lượng nước lớn được tích trữ trong lòng đất. Cụ thể nó được lưu lại tại những <b>không gian rỗng của đất</b> tạo ra với những <b>lớp đất đá trầm tích</b>¹².</div><div><div><br /></div><div>Source: Conversation with Bing, 6/16/2023</div><div>(1) Mạch nước ngầm là gì? Cách tìm mạch nước ngầm hiệu quả. <a href="http://lophocvitinh.vn/index.php/?link=https://bing.com/search?q=m%e1%ba%a1ch+n%c6%b0%e1%bb%9bc+ng%e1%ba%a7m" target="_blank"><i>https://bing.com/search?q=m%e1%ba%a1ch+n%c6%b0%e1%bb%9bc+ng%e1%ba%a7m</i></a>.</div><div>(2) Mạch nước ngầm là gì? Cách tìm mạch nước ngầm hiệu quả. <a href="http://lophocvitinh.vn/index.php/?link=https://healthywater.com.vn/mach-nuoc-ngam-la.html" target="_blank"><i>https://healthywater.com.vn/mach-nuoc-ngam-la.html</i></a>.</div><div>(3) Mạch nước ngầm cách mặt đất bao nhiêu mét. <a href="http://lophocvitinh.vn/index.php/?link=https://diennuockhanhtrung.com/nuoc-ngam-la-gi" target="_blank"><i>https://diennuockhanhtrung.com/nuoc-ngam-la-gi</i></a>.</div><div>(4) Nước Ngầm Là Gì? Cách Tìm Mạch Nước Ngầm đơn Giản Hiệu Quả. <a href="http://lophocvitinh.vn/index.php/?link=https://tiensinuoc.com/mach-nuoc-ngam/" target="_blank"><i>https://tiensinuoc.com/mach-nuoc-ngam/</i></a>.</div><div>(5) Nước dưới đất – Wikipedia tiếng Việt. <a href="http://lophocvitinh.vn/index.php/?link=https://vi.wikipedia.org/wiki/N%C6%B0%E1%BB%9Bc_d%C6%B0%E1%BB%9Bi_%C4%91%E1%BA%A5t" target="_blank"><i>https://vi.wikipedia.org/wiki/N%C6%B0%E1%BB%9Bc_d%C6%B0%E1%BB%9Bi_%C4%91%E1%BA%A5t</i></a>.</div></div><div><br /></div><div><br /></div><div><div><b><span style="color: #cc0000;">Mạch nước ngầm</span> </b>được hình thành do nước trên mặt đất như ao hồ, sông suối, biển cả tác động của ánh nắng mặt trời khiến nước bốc hơi gặp lạnh tạo thành hơi nước và ngưng tụ thành hạt rơi xuống đất. Khi đó, một phần nước sẽ tiếp tục chảy vào ao hồ, sông suối… một phần sẽ ngấm sâu vào trong lòng đất tạo thành mạch nước ngầm⁴.</div><div><br /></div><div>Source: Conversation with Bing, 6/16/2023</div><div>(1) Mạch nước ngầm cách mặt đất bao nhiêu mét. <a href="http://lophocvitinh.vn/index.php/?link=https://diennuockhanhtrung.com/nuoc-ngam-la-gi" target="_blank"><i>https://diennuockhanhtrung.com/nuoc-ngam-la-gi</i></a>.</div><div>(2) Mạch nước ngầm là gì? Mạch nước ngầm có sạch không?. <a href="http://lophocvitinh.vn/index.php/?link=https://karofivietnam.com.vn/mach-nuoc-ngam-la-gi.html" target="_blank"><i>https://karofivietnam.com.vn/mach-nuoc-ngam-la-gi.html</i></a>.</div><div>(3) Nước ngầm là gì? Cách tìm mạch nước ngầm hiệu quả - DKSmart. <a href="http://lophocvitinh.vn/index.php/?link=https://locnuocdksmart.com/mach-nuoc-ngam-la-gi/" target="_blank"><i>https://locnuocdksmart.com/mach-nuoc-ngam-la-gi/</i></a>.</div><div>(4) Mạch nước ngầm là gì? Cách tìm mạch nước ngầm hiệu quả. <a href="http://lophocvitinh.vn/index.php/?link=https://healthywater.com.vn/mach-nuoc-ngam-la.html" target="_blank"><i>https://healthywater.com.vn/mach-nuoc-ngam-la.html</i></a>.</div></div><div><br /></div><div><br /></div><div><div><b><span style="color: #cc0000;">Các mô hình dự báo khô hạn </span></b>thường được sử dụng bao gồm các mô hình thống kê và mô hình dự báo¹.</div><div>Các mô hình thống kê sử dụng các phương pháp thống kê để phân tích và dự báo khô hạn². </div><div>Các mô hình dự báo sử dụng các phương pháp toán học để xây dựng các mô hình dự báo khô hạn². </div><div>Bạn có thể tìm hiểu thêm về các mô hình này tại các trang web chuyên về nông nghiệp hoặc khí tượng thủy văn.</div><div><br /></div><div>Source: Conversation with Bing, 6/16/2023</div><div>(1) Dự báo là gì? - Giải thích về mô hình dự báo - AWS. <a href="http://lophocvitinh.vn/index.php/?link=https://aws.amazon.com/vi/what-is/forecast/" target="_blank"><i>https://aws.amazon.com/vi/what-is/forecast/</i></a>.</div><div>(2) CÁC MÔ HÌNH DỰ BÁO ĐƠN GIẢN. <a href="http://lophocvitinh.vn/index.php/?link=https://maths.uel.edu.vn/Resources/Docs/SubDomain/maths/TaiLieuHocTap/ToanUngDung/cc_m_hnh_d_bo_n_gin.html" target="_blank"><i>https://maths.uel.edu.vn/Resources/Docs/SubDomain/maths/TaiLieuHocTap/ToanUngDung/cc_m_hnh_d_bo_n_gin.html</i></a>.</div><div>(3) Mô hình dự báo ngắn hạn - Lê Văn Dụy - Tài liệu, Luận văn. <a href="http://lophocvitinh.vn/index.php/?link=https://www.thuvientailieu.vn/tai-lieu/mo-hinh-du-bao-ngan-han-le-van-duy-53438/" target="_blank"><i>https://www.thuvientailieu.vn/tai-lieu/mo-hinh-du-bao-ngan-han-le-van-duy-53438/</i></a>.</div></div><div><br /></div><div><br /></div><div><div><b><span style="color: #cc0000;">Các phương pháp dự báo khô hạn</span></b> thường được sử dụng bao gồm các <b>mô hình thống kê</b> và<b> mô hình dự báo</b>¹. </div><div>Tuy nhiên, việc dự báo khô hạn là một vấn đề phức tạp và cần sự kết hợp của nhiều yếu tố như địa hình, khí hậu, đặc điểm thực vật và động vật, v.v. ². </div><div>Bạn có thể tìm hiểu thêm về các phương pháp dự báo khô hạn tại các trang web chuyên về nông nghiệp hoặc khí tượng thủy văn.</div><div><br /></div><div>Source: Conversation with Bing, 6/16/2023</div><div>(1) Giải pháp ứng phó mùa khô, hạn - Báo Lâm Đồng điện tử. <a href="http://lophocvitinh.vn/index.php/?link=http://baolamdong.vn/toasoan-bandoc/202103/giai-phap-ung-pho-mua-kho-han-3046885/" target="_blank"><i>http://baolamdong.vn/toasoan-bandoc/202103/giai-phap-ung-pho-mua-kho-han-3046885/</i></a>.</div><div>(2) Phương pháp dự báo là gì? Phân loại các phương pháp dự báo?. <a href="http://lophocvitinh.vn/index.php/?link=https://luatduonggia.vn/phuong-phap-du-bao-la-gi-phan-loai-cac-phuong-phap-du-bao/" target="_blank"><i>https://luatduonggia.vn/phuong-phap-du-bao-la-gi-phan-loai-cac-phuong-phap-du-bao/</i></a>.</div><div>(3) Hạn hán | Open Development Vietnam. <a href="http://lophocvitinh.vn/index.php/?link=https://vietnam.opendevelopmentmekong.net/vi/topics/droughts-and-saltwater-intrusion/" target="_blank"><i>https://vietnam.opendevelopmentmekong.net/vi/topics/droughts-and-saltwater-intrusion/</i></a>.</div></div><div><br /></div><div><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">Mình có 01 công cụ dự báo thời tiết ở đây:</span></h3><div><br /></div><div><a href="http://lophocvitinh.vn/index.php/thoi-tiet" target="_blank"><i>http://lophocvitinh.vn/index.php/thoi-tiet</i></a></div>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0tag:blogger.com,1999:blog-1520055905364934797.post-29774594191636331072023-06-15T08:41:00.010+07:002024-02-29T16:21:15.841+07:00Đối thoại cùng AI - Cách tạo ra nước từ không khí<p>Bạn có thể <b><span style="color: #cc0000;">tạo ra nước sạch từ không khí </span></b>bằng một số công nghệ mới. </p><p>Một trong những công nghệ này là <b><span style="color: #cc0000;"><a href="http://www.lophocvitinh.com/2023/06/doi-thoai-cung-ai-cach-tao-ra-nuoc-tu-khong-khi.html">tháp nước Warka</a></span></b> được sáng tạo bởi <b><span style="color: #cc0000;"><a href="http://www.lophocvitinh.com/2023/06/doi-thoai-cung-ai-cach-tao-ra-nuoc-tu-khong-khi.html">Arturo Vittori</a></span></b>, một kiến trúc sư người Ý. </p><p>Tháp này có thể giúp thu thập hơi nước ngưng tụ từ không khí và tạo ra <b><span style="color: #cc0000;">100 lít nước sạch mỗi ngày</span></b> ¹³.</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/oiodY5AC1xE" width="320" youtube-src-id="oiodY5AC1xE"></iframe></div><div class="separator" style="clear: both; text-align: center;"><br /></div><p>Ngoài ra, <a href="http://www.lophocvitinh.com/2023/06/doi-thoai-cung-ai-cach-tao-ra-nuoc-tu-khong-khi.html">máy tạo nước khí quyển <b><span style="color: #cc0000;">AquaBoy ® Pro II</span></b></a> cũng có thể tạo ra tới <b><span style="color: #cc0000;">15 đến 20 lít nước</span></b> mỗi ngày “nước có vị ngon tinh khiết” từ không khí ⁴. (công ty này ở <a href="http://www.lophocvitinh.com/2023/06/doi-thoai-cung-ai-cach-tao-ra-nuoc-tu-khong-khi.html">Số 15 - 17, đường 57A, KP.9, P.Tân Tạo, Q.Bình Tân, TP.Hồ Chí Minh</a>)</p><p>Cái <a href="http://www.lophocvitinh.com/2023/06/doi-thoai-cung-ai-cach-tao-ra-nuoc-tu-khong-khi.html">máy tạo nước từ không khí</a> đó đây các bạn:</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/wT6cDZ1a8XA" width="320" youtube-src-id="wT6cDZ1a8XA"></iframe></div><p>Hy vọng thông tin này sẽ giúp bạn hiểu hơn về cách tạo ra nước từ không khí.</p><span><a name='more'></a></span><p>Source: Conversation with Bing, 6/15/2023</p><p>(1) THÁP NƯỚC WARKA - CÔNG NGHỆ MỚI TẠO RA NƯỚC SẠCH TỪ KHÔNG KHÍ. <a href="http://lophocvitinh.vn/index.php/?link=https://bing.com/search?q=t%e1%ba%a1o+ra+n%c6%b0%e1%bb%9bc+t%e1%bb%ab+kh%c3%b4ng+kh%c3%ad" target="_blank"><i>https://bing.com/search?q=t%e1%ba%a1o+ra+n%c6%b0%e1%bb%9bc+t%e1%bb%ab+kh%c3%b4ng+kh%c3%ad</i></a>.</p><p>(2) THÁP NƯỚC WARKA - CÔNG NGHỆ MỚI TẠO RA NƯỚC SẠCH TỪ KHÔNG KHÍ. <a href="http://lophocvitinh.vn/index.php/?link=https://phongchongthientai.mard.gov.vn/Pages/thap-nuoc-warka--cong-nghe-moi-tao-ra-nuoc-sach-tu-khong-khi.aspx" target="_blank"><i>https://phongchongthientai.mard.gov.vn/Pages/thap-nuoc-warka--cong-nghe-moi-tao-ra-nuoc-sach-tu-khong-khi.aspx</i></a>.</p><p>(3) Trang chủ - Máy Tạo Nước Siêu Sạch Từ Không Khí. <a href="http://lophocvitinh.vn/index.php/?link=https://hgwater.vn/" target="_blank"><i>https://hgwater.vn/</i></a>.</p><p>(4) Con người có thể tạo ra khí Hydro và Oxy, vậy sao chúng ta không thể .... <a href="http://lophocvitinh.vn/index.php/?link=https://khoahoc.tv/con-nguoi-co-the-tao-ra-khi-hydro-va-oxy-vay-sao-chung-ta-khong-the-san-xuat-nuoc-82081" target="_blank"><i>https://khoahoc.tv/con-nguoi-co-the-tao-ra-khi-hydro-va-oxy-vay-sao-chung-ta-khong-the-san-xuat-nuoc-82081</i></a>.</p><p>(5) Máy lọc nước từ không khí là gì? Cách thức hoạt động và vận hành. <a href="http://lophocvitinh.vn/index.php/?link=https://www.cleanipedia.com/vn/trong-nha/may-loc-nuoc-tu-khong-khi.html" target="_blank"><i>https://www.cleanipedia.com/vn/trong-nha/may-loc-nuoc-tu-khong-khi.html</i></a>.</p><p>(6) Tìm hiểu phương pháp thu nước từ không khí và ứng dụng. <a href="http://lophocvitinh.vn/index.php/?link=https://uce.com.vn/vi/tim-hieu-phuong-phap-thu-nuoc-tu-khong-khi-va-ung-dung/" target="_blank"><i>https://uce.com.vn/vi/tim-hieu-phuong-phap-thu-nuoc-tu-khong-khi-va-ung-dung/</i></a>.</p>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com05 Lý Tự Trọng, Bến Nghé, Quận 1, Thành phố Hồ Chí Minh, Việt Nam10.7823753 106.7053356-28.969782215909916 36.3928356 50.534532815909913 177.0178356tag:blogger.com,1999:blog-1520055905364934797.post-88685449114048422092023-05-29T15:21:00.003+07:002023-06-16T16:10:21.571+07:00Mã lỗi - error code 0x80300024 khi cài đặt widows<p>Lỗi này mình gặp khi gắn thêm ổ cứng cho PC.</p><p>Giải pháp:</p><p>Đổi đầu cáp SATA của ổ đĩa muốn cài windows vào vị trí SATA0 là OK.</p>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com05 Đ. Đồng Khởi, Bến Nghé, Quận 1, Thành phố Hồ Chí Minh, Việt Nam10.7731075 106.7060847-17.537126336178844 71.5498347 39.083341336178847 141.86233470000002tag:blogger.com,1999:blog-1520055905364934797.post-68056608234326952652023-05-16T10:05:00.008+07:002023-06-16T16:10:47.084+07:00Cách reset auto-increment id trong php - How to reset auto-increment id in php<p><a href="http://www.lophocvitinh.com/2023/05/cach-reset-auto-increment-id-trong-php.html" target="_blank">[ Link bài viết gốc ]</a></p><p>Vào <b>PhpMyAdmin</b> - chọn <b>Table</b> chứa ID muốn reset - Chọn <b>thẻ Operations</b> như trong hình</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjVO0hfAduXyzFxIjIV3RHZrLqfgrwOBfAAYYtXm0lxR0jf2r94hilNjFYtToodggj4cTwo91yqSNOIHMNPOZ8Q9P9oqQwItU2sMiBpzR9CQrHzuvMAW1d0dpyFrsT2B3G3l4_Akypw7EOFZj6bAX8NgXubu8bp-KEqlZHkHHXqRHToBdc4gdlvNGO/s1014/reset-auto-increment.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="621" data-original-width="1014" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjVO0hfAduXyzFxIjIV3RHZrLqfgrwOBfAAYYtXm0lxR0jf2r94hilNjFYtToodggj4cTwo91yqSNOIHMNPOZ8Q9P9oqQwItU2sMiBpzR9CQrHzuvMAW1d0dpyFrsT2B3G3l4_Akypw7EOFZj6bAX8NgXubu8bp-KEqlZHkHHXqRHToBdc4gdlvNGO/s320/reset-auto-increment.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><i>Reset auto-increment ID</i></td></tr></tbody></table>hoặc dùng lệnh MySQL như sau:<div><br /></div><div><span face="ui-monospace, "Cascadia Mono", "Segoe UI Mono", "Liberation Mono", Menlo, Monaco, Consolas, monospace" style="background-color: #e3e6e8; color: #232629; font-size: 13px; white-space: pre-wrap;">ALTER TABLE tablename AUTO_INCREMENT = value;</span></div><div><span face="ui-monospace, "Cascadia Mono", "Segoe UI Mono", "Liberation Mono", Menlo, Monaco, Consolas, monospace" style="background-color: #e3e6e8; color: #232629; font-size: 13px; white-space: pre-wrap;"><br /></span></div>Xem tài liệu official của MySQL: <i><span style="color: #cc0000;"><a href="http://lophocvitinh.vn/index.php/?link=https://dev.mysql.com/doc/refman/8.0/en/alter-table.html" target="_blank">https://dev.mysql.com/doc/refman/8.0/en/alter-table.html</a></span></i>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0tag:blogger.com,1999:blog-1520055905364934797.post-69326802208656472982023-04-26T15:41:00.010+07:002024-02-29T16:07:57.483+07:00Giới thiệu tool Swagger - Màn hình màu cho JUnit Tests<p><a href="http://www.lophocvitinh.com/2023/04/gioi-thieu-tool-swagger-man-hinh-mau-cho-junit-tests.html" target="_blank">[ Link bài viết gốc ]</a></p><p>Mến chào các bạn lần đầu đến với chủ đề <b><span style="color: #990000;">Java Spring</span></b> trên <a href="http://lopHocViTinh.com">lopHocViTinh.com</a>!</p><p>Hôm nay chúng ta sẽ demo 01 <b><span style="color: #990000;">Restful API Backend</span></b> có gắn thêm đồ chơi <b><span style="color: #990000;">Swagger</span></b> - công cụ tương tự Junit Tests nhưng có màn hình dạng web cực kỳ trực quan - dễ sử dụng.</p><p>Đầu tiên chúng ta <b><span style="color: #990000;">tạo mới 01 <a href="http://www.lophocvitinh.com/p/muc-luc-khoa-hoc-vi-tinh-van-phong.html" target="_blank">project Spring Boot</a></span></b> bằng cách vào trang này:</p><p><span style="color: #990000;"><i><a href="http://lophocvitinh.vn/index.php/?link=https://start.spring.io/" target="_blank">https://start.spring.io/</a></i></span></p><p><i>p/s: các bạn cũng có thể tạo project trong IDE của mình đang có (Ví dụ: <b><span style="color: #990000;"><a href="http://www.lophocvitinh.com/2023/04/gioi-thieu-tool-swagger-man-hinh-mau-cho-junit-tests.html">IntelliJ Idea</a></span></b> hoặc <span style="color: #990000; font-weight: bold;"><a href="http://www.lophocvitinh.com/2023/04/gioi-thieu-tool-swagger-man-hinh-mau-cho-junit-tests.html">VS Code</a></span><span>)</span></i></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWp6GznIZmRWaG7lMKEGXr1A0Dqk8kDQLiXhs2qvHWM86TTtc3XgDWPi_-yWVwE_et7gsNISuX7s2AVgyzxSqrZEFTZzFfTQpU7W_4WrQbXZLmWTU28Xc5M5NwFgU2uXt8SDg7dQA48t5SzH2RhzVKz2trTVmDBwj4k155n9tShF7YzrzbGDPnotcd/s1260/backendAPI.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="754" data-original-width="1260" height="191" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWp6GznIZmRWaG7lMKEGXr1A0Dqk8kDQLiXhs2qvHWM86TTtc3XgDWPi_-yWVwE_et7gsNISuX7s2AVgyzxSqrZEFTZzFfTQpU7W_4WrQbXZLmWTU28Xc5M5NwFgU2uXt8SDg7dQA48t5SzH2RhzVKz2trTVmDBwj4k155n9tShF7YzrzbGDPnotcd/s320/backendAPI.png" width="320" /></a><span><a name='more'></a></span></div><div class="separator" style="clear: both; text-align: center;"><br /></div>Ở đây mình chọn <b><span style="color: #990000;">Gradle</span></b> để có gì chạy offline -> các thư viện vẫn chạy ok.<div><br /></div><div>Sau đây là toàn bộ cài đặt trong file <b><span style="color: #990000;"><i>build.gradle</i></span></b></div><div><br /></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9.8pt;">plugins {<br /> id <span style="color: #6a8759;">'java'<br /></span><span style="color: #6a8759;"> </span>id <span style="color: #6a8759;">'org.springframework.boot' </span>version <span style="color: #6a8759;">'2.7.7'<br /></span><span style="color: #6a8759;"> </span>id <span style="color: #6a8759;">'io.spring.dependency-management' </span>version <span style="color: #6a8759;">'1.0.15.RELEASE'<br /></span>}<br /><br />group = <span style="color: #6a8759;">'com.example'<br /></span>version = <span style="color: #6a8759;">'0.0.1-SNAPSHOT'<br /></span>sourceCompatibility = <span style="color: #6a8759;">'17'<br /></span><span style="color: #6a8759;"><br /></span>repositories {<br /> mavenCentral()<br />}<br /><br />dependencies {<br /><span style="color: grey;">// https://mvnrepository.com/artifact/io.springfox/springfox-swagger2<br /></span><span style="color: grey;"> </span>implementation group: <span style="color: #6a8759;">'io.springfox'</span>, name: <span style="color: #6a8759;">'springfox-swagger2'</span>, version: <span style="color: #6a8759;">'2.9.2'<br /></span><span style="color: grey;">// https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui<br /></span><span style="color: grey;"> </span>implementation group: <span style="color: #6a8759;">'io.springfox'</span>, name: <span style="color: #6a8759;">'springfox-swagger-ui'</span>, version: <span style="color: #6a8759;">'2.9.2'<br /></span><span style="color: #6a8759;"><br /></span><span style="color: grey;">// https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter<br /></span><span style="color: grey;"> //implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0'<br /></span><span style="color: grey;"><br /></span><span style="color: grey;"> </span>implementation <span style="color: #6a8759;">'org.springframework.boot:spring-boot-starter-data-jpa'<br /></span><span style="color: #6a8759;"> </span>implementation <span style="color: #6a8759;">'org.springframework.boot:spring-boot-starter-cache'<br /></span><span style="color: #6a8759;"> </span>implementation <span style="color: #6a8759;">'org.springframework.boot:spring-boot-starter-web'<br /></span><span style="color: #6a8759;"> </span>developmentOnly <span style="color: #6a8759;">'org.springframework.boot:spring-boot-devtools'<br /></span><span style="color: #6a8759;"> </span>runtimeOnly <span style="color: #6a8759;">'com.mysql:mysql-connector-j'<br /></span><span style="color: #6a8759;"> </span>testImplementation <span style="color: #6a8759;">'org.springframework.boot:spring-boot-starter-test'<br /></span>}<br /><br />tasks.named(<span style="color: #6a8759;">'test'</span>) {<br /> useJUnitPlatform()<br />}<br /></pre><p><br /></p><p>Các bạn nào tạo project trên web spring.io theo mình nên né đầu giờ sáng ra (có lẽ vì giờ này lập trình viên vào nhiều chăng???)</p><p>Chúng ta tạo 01 cơ sở dữ liệu tên: <b><i><span style="color: #990000;">db_demo</span></i></b> </p><p>(ở đây mình dùng <b><span style="color: #990000;"><a href="http://www.lophocvitinh.com/p/muc-luc-khoa-hoc-vi-tinh-van-phong.html" target="_blank">MySQL WorkBench</a></span></b> - tool mặc định của <a href="http://www.lophocvitinh.com/p/muc-luc-khoa-hoc-vi-tinh-van-phong.html" target="_blank">Oracle</a>)</p><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9.8pt;"><span style="color: #cc7832;">create </span>database `db_demo`<span style="color: #cc7832;">;<br /></span>use `db_demo`<span style="color: #cc7832;">;</span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">create table </span>`todo`(<br /> <span style="color: #9876aa;">`id` </span><span style="color: #cc7832;">int not null </span>auto_increment<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #9876aa;">name </span><span style="color: #cc7832;">varchar</span>(<span style="color: #6897bb;">128</span>)<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #9876aa;">status </span><span style="color: #cc7832;">int,<br /></span><span style="color: #cc7832;"> primary key</span>(<span style="color: #9876aa;">id</span>)<br />)ENGINE=InnoDB<span style="color: #cc7832;">;</span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">INSERT INTO </span>`db_demo`.`todo` (<span style="color: #9876aa;">`id`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`name`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`status`</span>) <span style="color: #cc7832;">VALUES </span>(<span style="color: #6a8759;">'1'</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">'Hotdog'</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">INSERT INTO </span>`db_demo`.`todo` (<span style="color: #9876aa;">`id`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`name`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`status`</span>) <span style="color: #cc7832;">VALUES </span>(<span style="color: #6a8759;">'2'</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">'Jelly roll'</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">INSERT INTO </span>`db_demo`.`todo` (<span style="color: #9876aa;">`id`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`name`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`status`</span>) <span style="color: #cc7832;">VALUES </span>(<span style="color: #6a8759;">'3'</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">'Croissant'</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">INSERT INTO </span>`db_demo`.`todo` (<span style="color: #9876aa;">`id`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`name`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`status`</span>) <span style="color: #cc7832;">VALUES </span>(<span style="color: #6a8759;">'4'</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">'Hamburger bun'</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">INSERT INTO </span>`db_demo`.`todo` (<span style="color: #9876aa;">`id`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`name`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`status`</span>) <span style="color: #cc7832;">VALUES </span>(<span style="color: #6a8759;">'5'</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">'Bagels'</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">INSERT INTO </span>`db_demo`.`todo` (<span style="color: #9876aa;">`id`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`name`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`status`</span>) <span style="color: #cc7832;">VALUES </span>(<span style="color: #6a8759;">'6'</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">'Donut'</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">INSERT INTO </span>`db_demo`.`todo` (<span style="color: #9876aa;">`id`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`name`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`status`</span>) <span style="color: #cc7832;">VALUES </span>(<span style="color: #6a8759;">'7'</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">'Rolls'</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">INSERT INTO </span>`db_demo`.`todo` (<span style="color: #9876aa;">`id`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`name`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`status`</span>) <span style="color: #cc7832;">VALUES </span>(<span style="color: #6a8759;">'8'</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">'Breadsticks'</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">INSERT INTO </span>`db_demo`.`todo` (<span style="color: #9876aa;">`id`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`name`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`status`</span>) <span style="color: #cc7832;">VALUES </span>(<span style="color: #6a8759;">'9'</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">'Baguette'</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">INSERT INTO </span>`db_demo`.`todo` (<span style="color: #9876aa;">`id`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`name`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`status`</span>) <span style="color: #cc7832;">VALUES </span>(<span style="color: #6a8759;">'10'</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">'Tiramisu'</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">INSERT INTO </span>`db_demo`.`todo` (<span style="color: #9876aa;">`id`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`name`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`status`</span>) <span style="color: #cc7832;">VALUES </span>(<span style="color: #6a8759;">'11'</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">'Biscuit'</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">INSERT INTO </span>`db_demo`.`todo` (<span style="color: #9876aa;">`id`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`name`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`status`</span>) <span style="color: #cc7832;">VALUES </span>(<span style="color: #6a8759;">'12'</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">'Pizza'</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">INSERT INTO </span>`db_demo`.`todo` (<span style="color: #9876aa;">`id`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`name`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`status`</span>) <span style="color: #cc7832;">VALUES </span>(<span style="color: #6a8759;">'13'</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">'Cheese cake'</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">INSERT INTO </span>`db_demo`.`todo` (<span style="color: #9876aa;">`id`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`name`</span><span style="color: #cc7832;">, </span><span style="color: #9876aa;">`status`</span>) <span style="color: #cc7832;">VALUES </span>(<span style="color: #6a8759;">'14'</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">'Pate chaud'</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">//truncate table </span>`todo`<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">//drop table </span>`todo`<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">//drop </span>database `db_demo`<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span></pre><p><i><span style="color: #990000;">Đừng chạy 03 dòng cuối cùng nhé!!!</span></i></p><p>Tiếp theo là file cấu hình kết nối cơ sở dữ liệu: <b><i><span style="color: #990000;">application.properties</span></i></b></p><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9.8pt;"><span style="color: #cc7832;">server.port</span><span style="color: grey;">=</span><span style="color: #6897bb;">8080<br /></span><span style="color: #cc7832;">spring.jpa.hibernate.ddl-auto</span><span style="color: grey;">=</span><span style="color: #ffc66d;">update<br /></span><span style="color: grey;">#install mysql using Docker<br /></span><span style="color: #cc7832;">spring.datasource.url</span><span style="color: grey;">=</span><span style="color: #6a8759;">jdbc:mysql://${</span><span style="color: #cc7832;">MYSQL_HOST</span><span style="color: #6a8759;">:localhost}:3306/db_demo<br /></span><span style="color: #cc7832;">spring.datasource.username</span><span style="color: grey;">=</span><span style="color: #6a8759;">root<br /></span><span style="color: #cc7832;">spring.datasource.password</span><span style="color: grey;">=</span><span style="color: #6a8759;">*****<br /></span><span style="color: grey;">#allow table's name like tblProduct<br /></span><span style="color: #cc7832;">spring.jpa.hibernate.naming.physical-strategy</span><span style="color: grey;">=</span><span style="color: #769aa5;">org</span><span style="color: #6a8759;">.</span><span style="color: #769aa5;">hibernate</span><span style="color: #6a8759;">.</span><span style="color: #769aa5;">boot</span><span style="color: #6a8759;">.</span><span style="color: #769aa5;">model</span><span style="color: #6a8759;">.</span><span style="color: #769aa5;">naming</span><span style="color: #6a8759;">.</span><span style="color: #769aa5;">PhysicalNamingStrategyStandardImpl<br /></span><span style="color: #cc7832;">spring.jpa.properties.hibernate.format_sql</span><span style="color: grey;">=</span><span style="color: #6a8759;">true<br /></span><span style="color: #6a8759;"><br /></span><span style="color: #cc7832;">spring.mvc.pathmatch.matching-strategy</span><span style="color: grey;">=</span><span style="color: #9876aa; font-style: italic;">ant-path-matcher </span></pre>Các bạn chú ý dùm cho dòng cấu hình cuối cùng -> Đây chính là <b><span style="color: #990000;">dòng fix lỗi swagger</span></b> (mình đã mò chỗ này rất lâu mới tìm được)</div><div><br /></div><div>Trong thư mục project <b><span style="color: #990000;">backendapi</span></b> tạo thư mục <b><span style="color: #990000;">config</span></b> chứa file cấu hình: <span style="background-color: #2b2b2b; color: #a9b7c6; font-family: "Segoe UI"; font-size: 9pt;">SwaggerConfig.java</span></div><div><span style="background-color: #2b2b2b; color: #a9b7c6; font-family: "Segoe UI"; font-size: 9pt;"><br /></span></div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9.8pt;"><span style="color: #cc7832;">package </span>backendapi.config<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>org.springframework.context.annotation.<span style="color: #bbb529;">Bean</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.context.annotation.<span style="color: #bbb529;">Configuration</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>springfox.documentation.builders.PathSelectors<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>springfox.documentation.builders.RequestHandlerSelectors<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>springfox.documentation.spi.DocumentationType<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>springfox.documentation.spring.web.plugins.Docket<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>springfox.documentation.swagger2.annotations.<span style="color: #bbb529;">EnableSwagger2</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #bbb529;">@Configuration<br /></span><span style="color: #bbb529;">@EnableSwagger2<br /></span><span style="color: #cc7832;">public class </span>SwaggerConfig {<br /> <span style="color: #bbb529;">@Bean<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">public </span>Docket <span style="color: #ffc66d;">api</span>() {<br /> <span style="color: #cc7832;">return new </span>Docket(DocumentationType.<span style="color: #9876aa; font-style: italic;">SWAGGER_2</span>)<br /> .select()<br /> .apis(RequestHandlerSelectors.<span style="font-style: italic;">any</span>())<br /> .paths(PathSelectors.<span style="font-style: italic;">any</span>())<br /> .build()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br />}</pre><div><br /></div><div>Tạo tiếp <b><span style="color: #990000;">thư mục controller</span></b> chứa 02 file sau:</div><div><br /></div><div><b><span style="color: #990000;"><i>TodoApiController.java</i></span></b></div><div><br /></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9.8pt;"><span style="color: #cc7832;">package </span>backendapi.controller<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>backendapi.model.Todo<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>backendapi.service.ITodoService<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.beans.factory.annotation.<span style="color: #bbb529;">Autowired</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.http.HttpStatus<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.http.ResponseEntity<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.web.bind.annotation.*<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>java.util.List<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>java.util.Optional<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #bbb529;">@RestController<br /></span><span style="color: #bbb529;">@RequestMapping</span>(<span style="color: #6a8759;">"/api/todo"</span>)<br /><span style="color: #bbb529;">@CrossOrigin </span><span style="color: grey;">//phải có cái này lúc truy xuất bằng JS mới cho phép<br /></span><span style="color: #cc7832;">public class </span>TodoApiController {<br /> <span style="color: #bbb529;">@Autowired<br /></span><span style="color: #bbb529;"> </span>ITodoService <span style="color: #9876aa;">todoService</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span><span style="color: #bbb529;">@GetMapping</span>()<br /> <span style="color: #cc7832;">public </span>ResponseEntity<Iterable<Todo>> <span style="color: #ffc66d;">findAllTodo</span>() {<br /> List<Todo> todos = (List<Todo>) <span style="color: #9876aa;">todoService</span>.findAll()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> if</span>(todos.isEmpty()){<br /> <span style="color: #cc7832;">return new </span>ResponseEntity<>(HttpStatus.<span style="color: #9876aa; font-style: italic;">NO_CONTENT</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /> <span style="color: #cc7832;">return new </span>ResponseEntity<>(todos<span style="color: #cc7832;">, </span>HttpStatus.<span style="color: #9876aa; font-style: italic;">OK</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /><br /> <span style="color: #bbb529;">@PostMapping<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">public </span>ResponseEntity<Todo> <span style="color: #ffc66d;">saveTodo</span>(<span style="color: #bbb529;">@RequestBody </span>Todo todo) {<br /> <span style="color: #cc7832;">return new </span>ResponseEntity<>(<span style="color: #9876aa;">todoService</span>.save(todo)<span style="color: #cc7832;">, </span>HttpStatus.<span style="color: #9876aa; font-style: italic;">CREATED</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /><br /> <span style="color: #bbb529;">@PutMapping</span>(<span style="color: #6a8759;">"/{id}"</span>)<br /> <span style="color: #cc7832;">public </span>ResponseEntity<Todo> <span style="color: #ffc66d;">updateTodo</span>(<span style="color: #bbb529;">@PathVariable </span>Long id<span style="color: #cc7832;">, </span><span style="color: #bbb529;">@RequestBody </span>Todo todo) {<br /> Optional<Todo> todoOptional = <span style="color: #9876aa;">todoService</span>.findById(id)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> if</span>(!todoOptional.isPresent()) {<br /> <span style="color: #cc7832;">return new </span>ResponseEntity<>(HttpStatus.<span style="color: #9876aa; font-style: italic;">NOT_FOUND</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /> todo.setId(todoOptional.get().getId())<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> return new </span>ResponseEntity<>(<span style="color: #9876aa;">todoService</span>.save(todo)<span style="color: #cc7832;">, </span>HttpStatus.<span style="color: #9876aa; font-style: italic;">OK</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /><br /> <span style="color: #bbb529;">@DeleteMapping</span>(<span style="color: #6a8759;">"/{id}"</span>)<br /> <span style="color: #cc7832;">public </span>ResponseEntity<Todo> <span style="color: #ffc66d;">deleteTodo</span>(<span style="color: #bbb529;">@PathVariable </span>Long id) {<br /> Optional<Todo> todoOptional = <span style="color: #9876aa;">todoService</span>.findById(id)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> if</span>(!todoOptional.isPresent()){<br /> <span style="color: #cc7832;">return new </span>ResponseEntity<>(HttpStatus.<span style="color: #9876aa; font-style: italic;">NOT_FOUND</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /> <span style="color: #9876aa;">todoService</span>.remove(id)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> return new </span>ResponseEntity<>(todoOptional.get()<span style="color: #cc7832;">, </span>HttpStatus.<span style="color: #9876aa; font-style: italic;">NO_CONTENT</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br />}</pre><br />Và <b><span style="color: #990000;"><i>CachingController.java</i></span></b> (bài này mình tạo thêm tính năng Cache và Clear Cache để load dữ liệu từ API cho nhanh)<br /></div><div><br /></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9.8pt;"><span style="color: #cc7832;">package </span>backendapi.controller<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>backendapi.service.CachingService<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.beans.factory.annotation.<span style="color: #bbb529;">Autowired</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.web.bind.annotation.<span style="color: #bbb529;">GetMapping</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.web.bind.annotation.<span style="color: #bbb529;">RestController</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #bbb529;">@RestController<br /></span><span style="color: #cc7832;">public class </span>CachingController {<br /><br /> <span style="color: #bbb529;">@Autowired<br /></span><span style="color: #bbb529;"> </span>CachingService <span style="color: #9876aa;">cachingService</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span><span style="color: #bbb529;">@GetMapping</span>(<span style="color: #6a8759;">"clearAllCaches"</span>)<br /> <span style="color: #cc7832;">public void </span><span style="color: #ffc66d;">clearAllCaches</span>() {<br /> <span style="color: #9876aa;">cachingService</span>.evictAllCaches()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br />}<br /></pre><div><br /></div>Thư mục tạo tiếp theo là <b><span style="color: #990000;">model</span></b> chứa file:<i> <b><span style="color: #990000;">Todo.java</span></b></i></div><div><br /></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9.8pt;"><span style="color: #cc7832;">package </span>backendapi.model<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>javax.persistence.*<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>java.io.Serializable<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #bbb529;">@Entity<br /></span><span style="color: #bbb529;">@Table</span>(name=<span style="color: #6a8759;">"todo"</span>)<br /><span style="color: #cc7832;">public class </span>Todo <span style="color: #cc7832;">implements </span>Serializable {<br /> <span style="color: #cc7832;">private static final long </span>serialVersionUID = <span style="color: #6897bb;">1L</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span>@Id<br /> @GeneratedValue(strategy = GenerationType.IDENTITY)<br /> <span style="color: #cc7832;">private </span>Long id<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span>@Column(name=<span style="color: #6a8759;">"name"</span>)<br /> <span style="color: #cc7832;">private </span>String name<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span>@Column(name=<span style="color: #6a8759;">"status"</span>)<br /> <span style="color: #cc7832;">private int </span>status<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> public </span>Todo() {}<br /><br /> <span style="color: #cc7832;">public </span>Todo(String name<span style="color: #cc7832;">, int </span>status) {<br /> <span style="color: #cc7832;">this</span>.name = name<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> this</span>.status = status<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /><br /> <span style="color: #bbb529;">@Override<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">public </span>String <span style="color: #ffc66d;">toString</span>() {<br /> <span style="color: #cc7832;">return </span><span style="color: #6a8759;">"Todo{" </span>+<br /> <span style="color: #6a8759;">"id=" </span>+ <span style="color: #9876aa;">id </span>+<br /> <span style="color: #6a8759;">", name='" </span>+ <span style="color: #9876aa;">name </span>+ <span style="color: #6a8759;">'</span><span style="color: #cc7832;">\'</span><span style="color: #6a8759;">' </span>+<br /> <span style="color: #6a8759;">", status=" </span>+ <span style="color: #9876aa;">status </span>+<br /> <span style="color: #6a8759;">'}'</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /><br /> <span style="color: #cc7832;">public </span>Long <span style="color: #ffc66d;">getId</span>() {<br /> <span style="color: #cc7832;">return </span><span style="color: #9876aa;">id</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /><br /> <span style="color: #cc7832;">public void </span><span style="color: #ffc66d;">setId</span>(Long id) {<br /> <span style="color: #cc7832;">this</span>.<span style="color: #9876aa;">id </span>= id<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /><br /> <span style="color: #cc7832;">public </span>String <span style="color: #ffc66d;">getName</span>() {<br /> <span style="color: #cc7832;">return </span><span style="color: #9876aa;">name</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /><br /> <span style="color: #cc7832;">public void </span><span style="color: #ffc66d;">setName</span>(String name) {<br /> <span style="color: #cc7832;">this</span>.<span style="color: #9876aa;">name </span>= name<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /><br /> <span style="color: #cc7832;">public int </span><span style="color: #ffc66d;">getStatus</span>() {<br /> <span style="color: #cc7832;">return </span><span style="color: #9876aa;">status</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /><br /> <span style="color: #cc7832;">public void </span>setStatus(<span style="color: #cc7832;">int </span>status) {<br /> <span style="color: #cc7832;">this</span>.status = status<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br />}<br /></pre><br />Tạo <b><span style="color: #990000;">thư mục repository</span></b> chứa file: <b><span style="color: #990000;"><i>ITodoRepository.java</i></span></b><br /></div><div><br /></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9.8pt;"><span style="color: #cc7832;">package </span>backendapi.repository<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>backendapi.model.Todo<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.data.repository.PagingAndSortingRepository<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">public interface </span>ITodoRepository <span style="color: #cc7832;">extends </span>PagingAndSortingRepository<Todo<span style="color: #cc7832;">, </span>Long> {<br />}<br /></pre><br />Cuối cùng là <b><span style="color: #990000;">thư mục service</span></b> chứa các file như sau:</div><div><br /></div><div><b><span style="color: #990000;"><i>CachingService.java</i></span></b></div><div><br /></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9.8pt;"><span style="color: #cc7832;">package </span>backendapi.service<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>org.springframework.beans.factory.annotation.<span style="color: #bbb529;">Autowired</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.cache.CacheManager<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.stereotype.<span style="color: #bbb529;">Service</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #bbb529;">@Service<br /></span><span style="color: #cc7832;">public class </span>CachingService {<br /> <span style="color: #bbb529;">@Autowired<br /></span><span style="color: #bbb529;"> </span>CacheManager <span style="color: #9876aa;">cacheManager</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> public void </span><span style="color: #ffc66d;">evictAllCaches</span>() {<br /> System.<span style="color: #9876aa; font-style: italic;">out</span>.println(<span style="color: #9876aa;">cacheManager</span>.getCacheNames())<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span><span style="color: #9876aa;">cacheManager</span>.getCacheNames().stream()<br /> .forEach(cacheName -> <span style="color: #9876aa;">cacheManager</span>.getCache(cacheName).clear())<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span>System.<span style="color: #9876aa; font-style: italic;">out</span>.println(<span style="color: #9876aa;">cacheManager</span>.getCacheNames())<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br />}<br /></pre><br /><i><b><span style="color: #990000;">ITodoService.java</span></b></i><br /></div><div><br /></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9.8pt;"><span style="color: #cc7832;">package </span>backendapi.service<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>backendapi.model.Todo<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">public interface </span>ITodoService <span style="color: #cc7832;">extends </span>IGeneralService<Todo<span style="color: #cc7832;">, </span>Long>{<br />}</pre><div><br /></div><b><i><span style="color: #990000;">TodoService.java</span></i></b></div><div><br /></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9.8pt;"><span style="color: #cc7832;">package </span>backendapi.service<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>backendapi.model.Todo<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>backendapi.repository.ITodoRepository<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.beans.factory.annotation.<span style="color: #bbb529;">Autowired</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.cache.annotation.<span style="color: #bbb529;">Cacheable</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.stereotype.<span style="color: #bbb529;">Service</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>java.util.Optional<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #bbb529;">@Service<br /></span><span style="color: #cc7832;">public class </span>TodoService <span style="color: #cc7832;">implements </span>ITodoService {<br /> <span style="color: #bbb529;">@Autowired<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">private </span>ITodoRepository <span style="color: #9876aa;">todoRepository</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span><span style="color: #bbb529;">@Override<br /></span><span style="color: #bbb529;"> @Cacheable</span>(<span style="color: #6a8759;">"todos"</span>)<br /> <span style="color: #cc7832;">public </span>Iterable<Todo> <span style="color: #ffc66d;">findAll</span>(){<span style="color: #cc7832;">return </span><span style="color: #9876aa;">todoRepository</span>.findAll()<span style="color: #cc7832;">; </span>}<br /><br /> <span style="color: #bbb529;">@Override<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">public </span>Optional<Todo> <span style="color: #ffc66d;">findById</span>(Long id){ <span style="color: #cc7832;">return </span><span style="color: #9876aa;">todoRepository</span>.findById(id)<span style="color: #cc7832;">; </span>}<br /><br /> <span style="color: #bbb529;">@Override<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">public </span>Todo <span style="color: #ffc66d;">save</span>(Todo todo){ <span style="color: #cc7832;">return </span><span style="color: #9876aa;">todoRepository</span>.save(todo)<span style="color: #cc7832;">; </span>}<br /><br /> <span style="color: #bbb529;">@Override<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">public void </span><span style="color: #ffc66d;">remove</span>(Long id){ <span style="color: #9876aa;">todoRepository</span>.deleteById(id)<span style="color: #cc7832;">;</span>}<br />}<br /></pre><div><br /></div><div><br /></div>File chạy của chương trình: <b><i><span style="color: #990000;">BackendapiApplication.java</span></i></b></div><div><br /></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9.8pt;"><span style="color: #cc7832;">package </span>backendapi<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>org.springframework.boot.SpringApplication<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.boot.autoconfigure.<span style="color: #bbb529;">SpringBootApplication</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.cache.annotation.<span style="color: #bbb529;">EnableCaching</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #bbb529;">@SpringBootApplication<br /></span><span style="color: #bbb529;">@EnableCaching<br /></span><span style="color: grey;">//@EnableSwagger2<br /></span><span style="color: #cc7832;">public class </span>BackendapiApplication {<br /><br /> <span style="color: #cc7832;">public static void </span><span style="color: #ffc66d;">main</span>(String[] args) {<br /> SpringApplication.<span style="font-style: italic;">run</span>(BackendapiApplication.<span style="color: #cc7832;">class, </span>args)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /><br />}<br /><span style="color: grey;">/*<br /></span><span style="color: grey;">link test Swagger2:<br /></span><span style="color: grey;">http://localhost:8080/swagger-ui.html<br /></span><span style="color: grey;"> */</span></pre><div><br /></div>Bạn nào vẫn thích xài <b><span style="color: #990000;">JUnit Tests</span></b> thì...của bạn đây:</div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9.8pt;"><span style="color: #cc7832;">package </span>backendapi<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>backendapi.controller.CategoryApiController<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>backendapi.service.CategoryService<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.junit.jupiter.api.Test<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.beans.factory.annotation.<span style="color: #bbb529;">Autowired</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.boot.test.context.SpringBootTest<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>org.springframework.test.web.servlet.MockMvc<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import static </span>org.assertj.core.api.Assertions.assertThat<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import static </span>org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import static </span>org.springframework.test.web.servlet.result.MockMvcResultHandlers.print<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import static </span>org.springframework.test.web.servlet.result.MockMvcResultMatchers.status<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span>@SpringBootTest<br />@AutoConfigureMockMvc<br /><span style="color: #cc7832;">public class </span>NullTests {<br /> <span style="color: #bbb529;">@Autowired<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">private </span>CategoryApiController <span style="color: #9876aa;">categoryApiController</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span><span style="color: #bbb529;">@Autowired<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">private </span>CategoryService <span style="color: #9876aa;">categoryService</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span><span style="color: #bbb529;">@Autowired<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">private </span>MockMvc <span style="color: #9876aa;">mockMvc</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span>@Test<br /> <span style="color: #cc7832;">void </span><span style="color: #ffc66d;">contextLoads</span>(){<span style="color: grey;">//đảm bảo có dữ liệu trong 02 khu vực quan trọng-> kết nối success<br /></span><span style="color: grey;"> </span>assertThat(<span style="color: #9876aa;">categoryApiController</span>).isNotNull()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>assertThat(<span style="color: #9876aa;">categoryService</span>).isNotNull()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /><br /> @Test<br /> <span style="color: #cc7832;">public void </span><span style="color: #ffc66d;">shouldReturnStatusOK</span>() <span style="color: #cc7832;">throws </span>Exception{<span style="color: grey;">//test status 200<br /></span><span style="color: grey;"> </span><span style="color: #cc7832;">this</span>.<span style="color: #9876aa;">mockMvc</span>.perform(get(<span style="color: #6a8759;">"/api/category"</span>)).andDo(print()).andExpect(status().isOk())<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br />}<br /></pre><br /><i>p/s: ví dụ này mình dùng cho controller category -> sửa lại thành <b><span style="color: #990000;">TodoApiController</span></b> dùm mình.<br /></i></div><div><br /></div><div><br /></div><div>Cuối cùng, chúng ta chạy chương trình <b><span style="color: #990000;">BackendApiApplication</span></b> -> Mở trình duyệt, vào liên kết sau để xem thành quả: </div><div><i><span style="color: #990000;">http://localhost:8080/swagger-ui.html</span></i></div><div><i><span style="color: #990000;"><br /></span></i></div><div><i><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH2R59dpzQTughEB_HaM0PCc2bHok1Zqnmr5G4Dqty7eE4bAGWxl4W4MKm0DYRh_c2AwPMEDNXg5_t55Hr8MPb7QE7Ie2pZrePoKreBP_JD-rj5S0m6GJXwYs5RlzrHwN8gQRjB79bRKR_w_RTHjotNCFBpywwKVOYdLpgdKF41OTkVJWv2LS7Lk7j/s1321/try-it-out.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="696" data-original-width="1321" height="169" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH2R59dpzQTughEB_HaM0PCc2bHok1Zqnmr5G4Dqty7eE4bAGWxl4W4MKm0DYRh_c2AwPMEDNXg5_t55Hr8MPb7QE7Ie2pZrePoKreBP_JD-rj5S0m6GJXwYs5RlzrHwN8gQRjB79bRKR_w_RTHjotNCFBpywwKVOYdLpgdKF41OTkVJWv2LS7Lk7j/s320/try-it-out.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><i>Bấm Try it out</i></td></tr></tbody></table></i></div><div><br /></div><div>Các tính năng chính của chương trình:</div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8SDc9p3I_RDpIrgH4rjRH-wOseV2Az5GiyeRcr9tS39RK7menzKbDtvSqha32Z7SjTE1ZnAGNq2eRccmCwuN6LkgNI8vZU5xWkbhP1C9KqTiF3HnZsnZiQO9Nm1UWwL1Hqdvby0PSAm1mgI8WGwUToAmfUWvKLTuRzcgL57s7PxaeQ9t6QscFD1b8/s1361/tinh-nang-backendapi.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="622" data-original-width="1361" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8SDc9p3I_RDpIrgH4rjRH-wOseV2Az5GiyeRcr9tS39RK7menzKbDtvSqha32Z7SjTE1ZnAGNq2eRccmCwuN6LkgNI8vZU5xWkbhP1C9KqTiF3HnZsnZiQO9Nm1UWwL1Hqdvby0PSAm1mgI8WGwUToAmfUWvKLTuRzcgL57s7PxaeQ9t6QscFD1b8/s320/tinh-nang-backendapi.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><i>Màn hình file Readme</i></td></tr></tbody></table><br /><a href="http://www.lophocvitinh.com/2023/04/gioi-thieu-tool-swagger-man-hinh-mau-cho-junit-tests.html" target="_blank">[ Link bài viết gốc ]</a><br /><div style="text-align: right;"><i>Tác giả #drM</i></div><div><br /></div>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0151/1 Đ. Đồng Khởi, Bến Nghé, Quận 1, Thành phố Hồ Chí Minh, Việt Nam10.7760445 106.703465-17.534189336178848 71.547215 39.086278336178843 141.859715tag:blogger.com,1999:blog-1520055905364934797.post-38875991821849136882023-04-19T11:58:00.039+07:002024-02-29T16:08:09.867+07:00Thuộc tính position trong CSS - 2023<p><a href="http://www.lophocvitinh.com/2023/04/thuoc-tinh-position-trong-css-2023.html" target="_blank">[ Link bài viết gốc ]</a></p><p>+ Thuộc tính <b><span style="color: #cc0000;">position</span></b> dùng xác định vị trí của 01 phần tử HTML trên màn hình trình duyệt (viewport)</p><p>+ Thuộc tính <b><span style="color: #cc0000;">position</span></b> rất dễ gây nhầm lẫn trong css.</p><p>+ Bây giờ, chúng ta...dzô!!!</p><p>+ Tạo ngay 01 file html với 02 thẻ div lồng nhau như sau:</p><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9pt;"><span style="color: #e8bf6a;"><div </span><span style="color: #bababa;">class</span><span style="color: #a5c261;">="container"</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"> <br /></span><span style="color: #e8bf6a;"> <div </span><span style="color: #bababa;">class</span><span style="color: #a5c261;">="child"</span><span style="color: #e8bf6a;">></span>Nhân vật CHÍNH là tui đây<span style="color: #e8bf6a;"></div><br /></span><span style="color: #e8bf6a;"> <br /></span><span style="color: #e8bf6a;"></div></span></pre><p><span></span></p><a name='more'></a>Trong cặp thẻ <i><span style="color: #cc0000;"><style></style></span></i> chúng ta định dạng màu mè 01 chút cho thẻ div container<p></p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUlAmUVORJ0VDtdd2PUhfThKYlcuNW3sd0Ckcd1VnIG6_S7oT-0iBmXcMuU8jgq6eboBjk8a97u0qh_c4H-shnLmj4IokahY76INZkurkBnbK2V3CVYikNeN8d341eu2WbIRt171We-qKoiBLUf06WDd90w3iX7GJA1iVJMB8xkAD2K1bv6NSuN-0L/s1351/01.png" style="margin-left: auto; margin-right: auto;"><i><img border="0" data-original-height="444" data-original-width="1351" height="105" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUlAmUVORJ0VDtdd2PUhfThKYlcuNW3sd0Ckcd1VnIG6_S7oT-0iBmXcMuU8jgq6eboBjk8a97u0qh_c4H-shnLmj4IokahY76INZkurkBnbK2V3CVYikNeN8d341eu2WbIRt171We-qKoiBLUf06WDd90w3iX7GJA1iVJMB8xkAD2K1bv6NSuN-0L/s320/01.png" width="320" /></i></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><i>Định dạng thẻ div container</i></td></tr></tbody></table><br /><p></p><div class="separator" style="clear: both; text-align: left;">+ Hình ảnh trên là mình -> Nhấp phải chuột lên nội dung - <b><span style="color: #cc0000;">Inspect...</span></b> - chọn thẻ container</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">+ Chúng ta thấy lần lượt từ Ngoài vào Trong có 04 khung vs 04 màu sắc:</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Hồng - Cam - Xanh lá - Xanh dương (chính là thẻ chúng ta đang chọn) trong đó:<br /><ol style="text-align: left;"><li><span style="color: #ea9999;"><b>Hồng</b></span> - <span style="color: #ea9999;"><b>margin</b></span> - có số 200 do chúng ta mới khai báo trong lớp .container (200 là so vs viewport)</li><li><span style="color: #f6b26b;"><b>Cam</b></span> - <b><span style="color: #f6b26b;">border</span></b> - chỉ có dấu (-) nghĩa là =0 do chưa khai báo gì.</li><li><span style="color: #38761d;"><b>Xanh lá</b></span> -<span style="color: #38761d;"> <b>padding</b></span> - chỉ có dấu (-) nghĩa là =0 do chưa khai báo gì.</li><li><span style="color: #45818e;"><b>Xanh dương</b></span> - <span style="color: #76a5af;"><b>width x height</b></span> - kích thước hiện tại theo<b><span style="color: #cc0000;"> chiều ngang x dọc</span></b> của phần tử đang chọn (<b><span style="color: #cc0000;">div container</span></b>)</li></ol></div><p><i><span style="color: #cc0000;">Ghi chú: nhấp chuột lần lượt vào 04 khung màu sẽ thấy các phần tử được chọn thay đổi tương ứng...</span></i> </p>Tương tự vs thẻ div child:<p></p><p><br /></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAgHK72rjlGqHazM1qBXwTDv4NprTfcfGr29p4hOXAfgOVpDMJhF_3S2MYkORnC3h_H07J8p5AqnyX-EWAF6l3x_ndeoaA4f_KqsdlBjXRiH2-YXK2SOSgZBn8IUW2TqtzfjP8niqGdq6104aCFMMBc3I-xxb2v6oGLKdS_c0jX0ukXroRTSr-O5H1/s1015/child.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="471" data-original-width="1015" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAgHK72rjlGqHazM1qBXwTDv4NprTfcfGr29p4hOXAfgOVpDMJhF_3S2MYkORnC3h_H07J8p5AqnyX-EWAF6l3x_ndeoaA4f_KqsdlBjXRiH2-YXK2SOSgZBn8IUW2TqtzfjP8niqGdq6104aCFMMBc3I-xxb2v6oGLKdS_c0jX0ukXroRTSr-O5H1/s320/child.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><i>Định dạng thẻ child</i></td></tr></tbody></table><p><br /></p><p>Thuộc tính position hay ăn kèm vs 02 món rau: <b><span style="color: #cc0000;">top và left</span></b> -> tọa độ vị trí của phần tử.</p><p><br /></p><p>Mình có 05 điều cần đề cập trong bài viết này:</p><p></p><ol style="text-align: left;"><li><b><span style="color: #cc0000; font-size: medium;">static (mặc định)</span></b><br />Nếu không khai báo gì cho thuộc tính position => css sẽ tự hiểu là <span style="color: #cc0000;"><i>position: static</i></span><br />-> chẳng có gì để nói ở trường hợp này.<br /><br /></li><li><b><span style="color: #cc0000; font-size: medium;">relative</span></b><br />Khai báo phần tử div child là <i><span style="color: #cc0000;">position: relative; top: 20px; left: 50px;</span></i><br />-> phần tử child sẽ cách ra 01 khoảng tương ứng (xem 04 khung màu có thêm 01 <b><span style="color: #cc0000;">khung thứ 05 position bao ngoài</span></b>)<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-C4YnGKTBewy8pWdf32dhCH_AEsaREso4qnQtGyd_7xhbqjMpnny1KiS024ouzpIFYG7yOgz2NYJbMXAq5C340tYU2I1mYsTSeM5r4IWfaLNu2WmpiPq7cBThaCluDlGF3f9wkH1r2AYOR-6Fv3KqPR7AexHZs1H_2p2WhxRSNwGS68bP5atqRRmM/s1004/relative.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="467" data-original-width="1004" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-C4YnGKTBewy8pWdf32dhCH_AEsaREso4qnQtGyd_7xhbqjMpnny1KiS024ouzpIFYG7yOgz2NYJbMXAq5C340tYU2I1mYsTSeM5r4IWfaLNu2WmpiPq7cBThaCluDlGF3f9wkH1r2AYOR-6Fv3KqPR7AexHZs1H_2p2WhxRSNwGS68bP5atqRRmM/s320/relative.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><i>position relative</i></td></tr></tbody></table><br /></li><li><b><span style="color: #cc0000; font-size: medium;">absolute</span></b><br />Khai báo phần tử div child là <span style="color: #cc0000;"><i>position: absolute; top: 20px; left: 50px;</i></span><br />-> em bé child nhảy ra ngoài thẻ container luôn (do nó k biết ai là CHA -thẻ chứa - nên xem màn hình viewport là CHA)<br /><br />thêm position: relative cho thẻ div container -> em bé child đã biết div container là CHA nên nhày vào trong - Bây giờ nó nằm vị trí giống trường hợp relative khi nãy.<br /><br /><i><span style="color: #cc0000;">Kết luận: nếu muốn xài position absolute phải khai báo cả phần tử CON và CHA.</span></i><br /><br /></li><li><b><span style="color: #cc0000; font-size: medium;">fixed</span></b><br />Khai báo phần tử div child là <i><span style="color: #cc0000;">position: fixed; top: 20px; left: 50px;</span></i><br />-> cho dù cuộn chuột xuống dưới em bé child vẫn nằm yên 01 vị trí<br /><br /><i><u><b><span style="color: #cc0000;">Kết luận</span></b></u>: xài <b><span style="color: #cc0000;">position fixed</span></b> khi cần <b><span style="color: #cc0000;">giữ yên phần tử 01 vị trí cố định</span></b> (ví dụ link Top quay về đầu trang web - vào trang <a href="http://lophocvitinh.vn">lophocvitinh.vn</a> để xem ví dụ thực tế)</i><br /><br /></li><li><b><span style="color: #cc0000; font-size: medium;">z-index</span></b> (chồng lấn - overlapping - ai nằm trên, ai nằm dưới)<br />Khai báo phần tử div child là <span style="color: #cc0000;">z-index: -999;</span><br /><br />Cuộn chuột xuống dưới sẽ thấy nó bị div container <b><span style="color: #cc0000;">che mất.</span></b><br />-> đổi <span style="color: #cc0000;">z-index: 999;</span><br /><br />Cuộn chuột xuống để thấy em bé child <b><span style="color: #cc0000;">nằm đè lên trên</span></b>.<br /><br /><br /></li><li><b><span style="color: #cc0000; font-size: medium;">Mở rộng: position dùng trong Bootstrap thì làm sao?</span></b><br />Nó chỉ dùng được 02 trường hợp <br />+ sticky-top hay fixed-top để cố định phần tử ở trên.<br />+ sticky-bottom hay fixed-bottom để cố định phần tử ở dưới.<br /><i>-> tóm lại nên <b><span style="color: #cc0000;">hạn chế dùng Bootstrap để khai báo position</span></b> do không linh hoạt.</i><br /><br />Nếu bạn vẫn muốn dùng thì...của bạn đây:<br /><br /><i><span style="color: #cc0000;">https://getbootstrap.com/docs/5.3/helpers/position/</span></i><br /><br /></li></ol><div>Vẫn chưa rõ vui lòng xem thêm video clip sau:</div><div><br /></div><div>Bài này mình làm thêm phần <b><span style="color: #cc0000;"><a href="http://www.lophocvitinh.com/p/go.html?url=https://forms.gle/rb42tAoheJgdtyVT7" target="_blank">CÂU HỎI TRẮC NGHIỆM</a></span></b> để các bạn nhớ kiến thức hơn.</div><div><br /></div><div>Xem thêm <a href="http://lophocvitinh.vn/index.php/trac-nghiem" target="_blank">[ Ngân Hàng Câu Hỏi Trắc Nghiệm ]</a> tại đây.</div><div><br /></div><div><a href="http://www.lophocvitinh.com/2023/04/thuoc-tinh-position-trong-css-2023.html" target="_blank">[ Link bài viết gốc ]</a></div><div><h6><span style="color: white;">19001549-0939496022-0979540147-0974795207-0902133948-0906629079-0945823926-02836221063-0886426100-0934862792</span></h6><h6><span style="color: white; font-size: 10.72px;">0909208610-0773058071-0944518424-0944518424-0932955682-0944531867-02888822879-0702678910-0838966996-0862419420-0975579548-0973888371-</span></h6></div><div style="text-align: right;"><i>Tác giả #drM</i></div><p></p>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com05 Lý Tự Trọng, Bến Nghé, Quận 1, Thành phố Hồ Chí Minh, Việt Nam10.7823753 106.7053356-30.2779843062689 36.3928356 51.842734906268895 177.0178356tag:blogger.com,1999:blog-1520055905364934797.post-43032451529240459082023-03-04T10:59:00.007+07:002023-06-16T16:12:10.741+07:00Câu hỏi thường gặp với Windows 11 pro 64bit<h3 style="text-align: left;"><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; font-size: 18px; text-align: justify;"><span style="color: #990000;">Phiên bản Windows 11 Pro khác gì so với Windows 11 Home?</span></span></h3><p><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; color: #444b52; font-size: 18px; text-align: justify;">Trả lời:</span></p><p><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; color: #444b52; font-size: 18px; text-align: justify;">Windows 11 Pro phù hợp với mức cấu hình tối đa cao hơn, nền tảng này được thiết kế để vận hành tốt với 2 CPU, hỗ trợ CPU gồm 128 lõi, có thể phát huy sức mạnh của bộ RAM lên đến 2TB. Ngoài ra, phiên bản Pro còn sở hữu những tính năng không có trên bản Home như: Dynamic Provisioning, Kiosk hay Active Directory/Azure AD.</span></p><p><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; color: #444b52; font-size: 18px; text-align: justify;"><br /></span></p><h3 style="text-align: left;"><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: white; font-size: 18px; text-align: justify;"><span style="color: #990000;">Quyền lợi khi kích hoạt bản quyền cho Windows 11 Pro?</span></span></h3><p><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; color: #444b52; font-size: 18px; text-align: justify;">Trả lời:</span></p><p><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; color: #444b52; font-size: 18px; text-align: justify;">Sử dụng Key-online để kích hoạt bản quyền cho Windows 11 Pro, bạn sẽ có thể thoải mái cập nhật các bản cập nhật bảo mật, giúp máy tính của mình an toàn hơn, chuyên nghiệp hơn, đồng thời không bị làm phiền bởi nhắc nhở cập nhật bản quyền từ Microsoft khi sử dụng.</span></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbhRurAsYCX8XUe90xeuy7I1pNox3Z0qPYpiiAJH2gJe9uG-qWaalBrB1emrHOzAV7EkWOddvH_CLRQOPlnZ77EbDQxp7mnxBuPk3zGnhR19TOi_TS4W59_cXQZcjymvUmMIg3wcpVBwh9tQB_NkSnj0N0qJjMd-mVFVLGZ0hvfmLZQGWm13cjSJ1X/s600/w11pro.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="600" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbhRurAsYCX8XUe90xeuy7I1pNox3Z0qPYpiiAJH2gJe9uG-qWaalBrB1emrHOzAV7EkWOddvH_CLRQOPlnZ77EbDQxp7mnxBuPk3zGnhR19TOi_TS4W59_cXQZcjymvUmMIg3wcpVBwh9tQB_NkSnj0N0qJjMd-mVFVLGZ0hvfmLZQGWm13cjSJ1X/s320/w11pro.jpg" width="320" /></a><span><a name='more'></a></span></div><p></p><h3 style="text-align: left;"><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: white; font-size: 18px; text-align: justify;"><span style="color: #990000;">Windows 11 Pro phù hợp cho máy tính cá nhân hay máy tính dùng tại nơi làm việc?</span></span></h3><p><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; color: #444b52; font-size: 18px; text-align: justify;">Trả lời:</span></p><p><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; color: #444b52; font-size: 18px; text-align: justify;">Tính năng nâng cao và khả năng bảo mật cực tốt, Windows 11 Pro phù hợp cho máy tính công việc, cơ quan, doanh nghiệp để đảm bảo khả năng hỗ trợ ổn định tối đa khi làm việc.</span></p><p><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; color: #444b52; font-size: 18px; text-align: justify;"><br /></span></p><h3 style="text-align: left;"><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: white; font-size: 18px; text-align: justify;"><span style="color: #990000;">Dung lượng ổ cứng tối thiểu để cài đặt Windows 11 Pro là bao nhiêu, nền tảng này có ngốn bộ nhớ nhiều hơn Windows 10 trước kia hay không?</span></span></h3><p><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; font-size: 18px; text-align: justify;"><span style="color: #444b52;">Trả lời:</span></span></p><p><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; font-size: 18px; text-align: justify;"><span style="color: #444b52;">Windows 11 Pro chiếm dụng dung lượng tương đương với Windows 10. Để tải về, thiết lập và cài đặt, máy tính của bạn nên sẵn sàng:</span></span></p><p></p><ol style="text-align: left;"><li><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; font-size: 18px; text-align: justify;"><span style="color: #444b52;">Ổ cứng với dung lượng từ </span><b><span style="color: #cc0000;">64GB</span></b><span style="color: #444b52;">. </span></span></li><li><span face="Arial, Helvetica, sans-serif" style="background-color: white; font-size: 16px;"><span style="color: #333333;">Bộ vi xử lý </span><b><span style="color: #cc0000;">1 GHz.</span></b><span style="color: #333333;"> </span></span></li><li><span face="Arial, Helvetica, sans-serif" style="background-color: white; font-size: 16px;"><span style="color: #333333;">RAM từ </span><b><span style="color: #cc0000;">4 GB</span></b><span style="color: #333333;"> trở lên.</span></span></li></ol><p></p><p><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; color: #444b52; font-size: 18px; text-align: justify;"><br /></span></p><h3 style="text-align: left;"><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; font-size: 18px; text-align: justify;"><span style="color: #990000;">Mỗi key-online của Windows 11 Pro có thể kích hoạt bản quyền cho mấy PC?</span></span></h3><p><span face="Roboto, Helvetica, Arial, sans-serif" style="background-color: #f8f9fa; color: #444b52; font-size: 18px; text-align: justify;">Trả lời:</span></p><ul style="background-color: white; box-sizing: border-box; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 14px; list-style: none; margin: 0px; padding: 0px 10px;"><li style="border: none; box-sizing: border-box; display: block; line-height: 25px; margin: 0px; padding: 0px;">Bản quyền vĩnh viễn cho 01 thiết bị: Cài đặt cho 01 máy tính bàn hoặc 01 laptop.</li><li style="border: none; box-sizing: border-box; display: block; line-height: 25px; margin: 0px; padding: 0px;">Được cập nhật những tính năng mới nhất, miễn phí trong suốt thời gian sử dụng.</li><li style="border: none; box-sizing: border-box; display: block; line-height: 25px; margin: 0px; padding: 0px;">Có thể chuyển đổi sang máy tính mới sau khi gỡ bỏ Windows trên máy cũ.</li><li style="border: none; box-sizing: border-box; display: block; line-height: 25px; margin: 0px; padding: 0px;">Key bán ra dưới dạng mã in sẵn, không đi kèm hộp.</li></ul><div><span face="Arial, Helvetica, sans-serif" style="color: #333333;"><span style="font-size: 14px;"><br /></span></span></div><h3 style="text-align: left;"><span style="color: #990000;">Mua và tải Windows 11 Pro tại trang web chính thức của Microsoft (rẻ hơn mua tại Việt Nam)</span></h3><div><span face="Arial, Helvetica, sans-serif" style="color: #333333; font-size: 14px;">https://www.microsoft.com/en-us/d/windows-11-pro/dg7gmgf0d8h4?rtc=2</span></div><h3 style="text-align: left;"><span style="color: #990000;">Tổng đài hỗ trợ Microsoft Việt Nam:</span> </h3><div><div>https://support.microsoft.com/vi-vn/contactus.</div></div><br /><span style="color: white;">02499997777-0903939683-</span>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0tag:blogger.com,1999:blog-1520055905364934797.post-62372667445848873582023-02-22T04:45:00.008+07:002023-06-16T16:12:22.032+07:00NPM là gì? What is npm?<span style="font-family: Quicksand;"><b><span style="color: #cc0000;"> NPM</span></b> (<u>N</u>ode <u>P</u>ackage <u>M</u>anager?) là chương trình quản lý thư viện ngầm định (có sẵn) trong môi trường <b><span style="color: #cc0000;">Node.js</span></b></span><div><span style="font-family: Quicksand;"><br /></span></div><div><span style="font-family: Quicksand;">Nó bao gồm một trình gọi dòng lệnh từ máy khách Client với tên gọi là <b><span style="color: #cc0000;">npm</span></b>, và cơ sở dữ liệu trực tuyến chứa các gói public và private còn được gọi là <b><span style="color: #cc0000;">npm registry</span></b>. </span></div><div><span style="font-family: Quicksand;"><br /></span></div><div><span style="font-family: Quicksand;"><b><span style="color: #cc0000;">Npm registry</span></b> được gọi từ <b><span style="color: #cc0000;">npm client</span></b> và trên <b><span style="color: #cc0000;">trình duyệt web</span></b>.</span></div><div><span style="font-family: Quicksand;"><br /></span></div><div><span style="font-family: Quicksand;">Tóm lại, <b><span style="color: #cc0000;">npm là 01 packages manager.</span></b></span></div><div><span style="font-family: Quicksand;"><b><span style="color: #cc0000;"><br /></span></b></span></div><h3 style="text-align: left;"><span style="font-family: Quicksand;"><b><span style="color: #cc0000;">Lệnh xem phiên bản của npm (khác với node)</span></b></span></h3><div><span style="font-family: Quicksand;">npm -v</span></div><div><span style="font-family: Quicksand;"><br /></span></div><h3 style="text-align: left;"><span style="color: #cc0000; font-family: Quicksand;">Trang web official của npm là gì?</span></h3><div><span style="font-family: Quicksand;">https://www.npmjs.com/</span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinEPRkvR31vs8wvQuKMyrFcdFLkFsgE7MJnlsxTH8Vfm2pREc3viwnQ-nyFT9KV87q_7neUpWLWRU4VDVPI1Ih7JQR0LtoC0dJVMok34ab17WzTKF04em0K_RBUxKPJGk9JZ7bKWdPViWmem0TNM-zXGki3CqgGxGXKeA_IWyRG00Ymnmuel7_lHjk/s360/npm.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="140" data-original-width="360" height="124" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinEPRkvR31vs8wvQuKMyrFcdFLkFsgE7MJnlsxTH8Vfm2pREc3viwnQ-nyFT9KV87q_7neUpWLWRU4VDVPI1Ih7JQR0LtoC0dJVMok34ab17WzTKF04em0K_RBUxKPJGk9JZ7bKWdPViWmem0TNM-zXGki3CqgGxGXKeA_IWyRG00Ymnmuel7_lHjk/s320/npm.png" width="320" /></a></div><h3 style="clear: both; text-align: left;"><span style="color: #cc0000;">01 số thư viện npmjs hay dùng:</span></h3><br /><span style="font-family: Quicksand;"><br /></span></div>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0tag:blogger.com,1999:blog-1520055905364934797.post-42137369840026326262023-02-21T16:37:00.004+07:002023-06-16T16:12:34.286+07:00Kubernetes là gì? What is Kubernetes?<span style="font-family: Quicksand;"><b><span style="color: #cc0000;">Kubernetes</span></b> là một nền tảng nguồn mở, có khả năng chuyển đổi và có thể mở rộng để quản lý các ứng dụng được đóng gói và các service, giúp thuận lợi trong việc cấu hình và tự động hoá việc triển khai ứng dụng.<br /><br /><b><span style="color: #cc0000;"> Kubernetes</span></b> là một hệ sinh thái lớn và phát triển nhanh chóng. Các dịch vụ, sự hỗ trợ và công cụ có sẵn khắp nơi.<br /><br /><b><span style="color: #cc0000;">Tên gọi Kubernetes</span></b> có nguồn gốc từ tiếng Hy Lạp, có ý nghĩa là người lái tàu hoặc hoa tiêu. </span><div><span style="font-family: Quicksand;"><br /></span></div><div><span style="font-family: Quicksand;">Google mở mã nguồn <b><span style="color: #cc0000;">Kubernetes </span></b>từ năm 2014. </span></div><div><span style="font-family: Quicksand;"><br /></span></div><div><span style="font-family: Quicksand;"><b><span style="color: #cc0000;">Kubernetes</span></b> xây dựng dựa trên một thập kỷ rưỡi kinh nghiệm mà Google có được với việc vận hành một khối lượng lớn workload trong thực tế, kết hợp với các ý tưởng và thực tiễn tốt nhất từ cộng đồng.</span><p></p></div><div><span style="color: #cc0000; font-family: Quicksand;">Xem câu trả lời chính thức Kubernetes là gì từ trang official:</span></div><div><span style="font-family: Quicksand;">https://kubernetes.io/vi/docs/concepts/overview/what-is-kubernetes/</span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguq1fQmth9isz67H2zit0RrYl6660wNBdKS0g0byVjawSEOtleN5NtMaAQ8tRyH4U_SfzGhY-kvBs6gQy3kKb-4KSAbZeCebyP599H_r_K4-fW6jI_daK2VU_fDbt-0kRMeB46pAj7Otu1mpdVkStFS-1IdPpSt7_zjTBGZd6OPDcGaOatzPBdMTy8/s987/kubernetes.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="266" data-original-width="987" height="86" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguq1fQmth9isz67H2zit0RrYl6660wNBdKS0g0byVjawSEOtleN5NtMaAQ8tRyH4U_SfzGhY-kvBs6gQy3kKb-4KSAbZeCebyP599H_r_K4-fW6jI_daK2VU_fDbt-0kRMeB46pAj7Otu1mpdVkStFS-1IdPpSt7_zjTBGZd6OPDcGaOatzPBdMTy8/s320/kubernetes.png" width="320" /></a><span><a name='more'></a></span></div></div><h3 style="text-align: left;"><span style="color: #cc0000; font-family: Quicksand;">Các ưu điểm của Kubernetes:</span></h3><div><ul style="background-color: white; box-sizing: border-box; color: #222222; font-size: 16px; margin-bottom: 1rem; margin-top: 0px; max-width: 80%;"><li style="box-sizing: border-box; margin-bottom: 0.25rem;"><span style="font-family: Quicksand;"><span style="box-sizing: border-box; font-weight: 700;">Service discovery và cân bằng tải</span><br style="box-sizing: border-box;" />Kubernetes có thể expose một container sử dụng DNS hoặc địa chỉ IP của riêng nó. Nếu lượng traffic truy cập đến một container cao, Kubernetes có thể cân bằng tải và phân phối lưu lượng mạng (network traffic) để việc triển khai được ổn định.</span></li><li style="box-sizing: border-box; margin-bottom: 0.25rem;"><span style="font-family: Quicksand;"><span style="box-sizing: border-box; font-weight: 700;">Điều phối bộ nhớ</span><br style="box-sizing: border-box;" />Kubernetes cho phép bạn tự động mount một hệ thống lưu trữ mà bạn chọn, như local storages, public cloud providers, v.v.</span></li><li style="box-sizing: border-box; margin-bottom: 0.25rem;"><span style="font-family: Quicksand;"><span style="box-sizing: border-box; font-weight: 700;">Tự động rollouts và rollbacks</span><br style="box-sizing: border-box;" />Bạn có thể mô tả trạng thái mong muốn cho các container được triển khai dùng Kubernetes và nó có thể thay đổi trạng thái thực tế sang trạng thái mong muốn với tần suất được kiểm soát. Ví dụ, bạn có thể tự động hoá Kubernetes để tạo mới các container cho việc triển khai của bạn, xoá các container hiện có và áp dụng tất cả các resource của chúng vào container mới.</span></li><li style="box-sizing: border-box; margin-bottom: 0.25rem;"><span style="font-family: Quicksand;"><span style="box-sizing: border-box; font-weight: 700;">Đóng gói tự động</span><br style="box-sizing: border-box;" />Bạn cung cấp cho Kubernetes một cluster gồm các node mà nó có thể sử dụng để chạy các tác vụ được đóng gói (containerized task). Bạn cho Kubernetes biết mỗi container cần bao nhiêu CPU và bộ nhớ (RAM). Kubernetes có thể điều phối các container đến các node để tận dụng tốt nhất các resource của bạn.</span></li><li style="box-sizing: border-box; margin-bottom: 0.25rem;"><span style="font-family: Quicksand;"><span style="box-sizing: border-box; font-weight: 700;">Tự phục hồi</span><br style="box-sizing: border-box;" />Kubernetes khởi động lại các containers bị lỗi, thay thế các container, xoá các container không phản hồi lại cấu hình health check do người dùng xác định và không cho các client biết đến chúng cho đến khi chúng sẵn sàng hoạt động.</span></li><li style="box-sizing: border-box; margin-bottom: 0.25rem;"><span style="font-family: Quicksand;"><span style="box-sizing: border-box; font-weight: 700;">Quản lý cấu hình và bảo mật</span><br style="box-sizing: border-box;" />Kubernetes cho phép bạn lưu trữ và quản lý các thông tin nhạy cảm như: password, OAuth token và SSH key. Bạn có thể triển khai và cập nhật lại secret và cấu hình ứng dụng mà không cần build lại các container image và không để lộ secret trong cấu hình stack của bạn.</span></li></ul><h3 style="text-align: left;"><span style="color: #cc0000; font-family: Quicksand;"><br /></span><span style="color: #cc0000; font-family: Quicksand;">Xem thêm về Kubernetes:</span></h3></div><div><span style="color: #222222; font-family: Quicksand;">https://bizflycloud.vn/tin-tuc/kubernetes-la-gi-vai-tro-cua-kubernetes-la-gi-20181015094513924.htm</span></div><div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/H06qrNmGqyE" width="320" youtube-src-id="H06qrNmGqyE"></iframe></div><span style="color: #222222; font-family: Quicksand;"><br /></span></div><h3 style="text-align: left;"><span style="color: #cc0000; font-family: Quicksand;">Bài demo Kubernetes:</span></h3><div><span style="color: #222222; font-family: Quicksand;"><br /></span></div><div style="text-align: right;"><span style="color: #222222; font-family: Quicksand;"><i>Sưu tầm bởi #drM</i></span></div>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0tag:blogger.com,1999:blog-1520055905364934797.post-11459008785649948042023-02-19T07:03:00.096+07:002023-06-16T16:12:48.716+07:00AppDynamics là gì? What is AppDynamics?<p><b>+ AppDynamics</b> là phần mềm giám sát theo thời gian thực tính năng của nhiều loại ứng dụng web như Java hay .NET…</p><p><b>+ AppDynamics</b> là 01 APM Tool (<b><u>A</u></b>pplication <b><u>P</u></b>erformance <b><u>M</u></b>anagement) dùng để kiểm tra hiệu năng thời gian phản hồi (response) của web service có bị chậm không trước khi đưa vào sử dụng thực tế.</p><b><span style="color: #cc0000;">+ Hiệu suất ứng dụng</span></b> được xác định tốt hay xấu dựa vào các yếu tố như: Hệ thống phản hồi, dung lượng băng thông, số lượng người dùng truy cập vào web, giao thức ứng dụng.<div><br /></div><div>+ <b><span style="color: #cc0000;">AppDynamics</span></b> là 01 sản phẩm đến từ <b><span style="color: #cc0000;">tập đoàn Cisco</span></b></div><div>https://www.appdynamics.com/</div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxxjqO9OPwxRv3k829aST2KR1wYFhxcwXdtW-SZCWBx55aVpNIJRo_Aj4W938TTP-ymGUMoR6DozItNy5DYvy41tQXXoVGP8cwQZt4Zrtn4x339fb604SDPDO-1UcJnOagtGgJ26gTZKyP9I2MXZpOwjnH5sorcVKoKQXapmig0WqG4_18fA0yg24Y/s223/AppDynamics.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="81" data-original-width="223" height="81" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxxjqO9OPwxRv3k829aST2KR1wYFhxcwXdtW-SZCWBx55aVpNIJRo_Aj4W938TTP-ymGUMoR6DozItNy5DYvy41tQXXoVGP8cwQZt4Zrtn4x339fb604SDPDO-1UcJnOagtGgJ26gTZKyP9I2MXZpOwjnH5sorcVKoKQXapmig0WqG4_18fA0yg24Y/s1600/AppDynamics.png" width="223" /></a></div><span><a name='more'></a></span></div><div><h3 style="text-align: left;"><span style="color: #cc0000;">01 số APM Tools thông dụng:</span></h3><h3 style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 1.75em; line-height: 1.2; margin: 1.5em 0px 0.6em; text-align: left;">AppDynamics</h3><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 0.5em; overflow-wrap: break-word; word-break: break-word;">AppDynamics là software giám sát real time tính năng của nhiều loại web application như Java hay .NET…</p><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;">Nó là một hệ thống giám sát hầu như không gây ảnh hưởng đến môi trường hệ thống được giám sát đang hoạt động và đồng thời cũng có thể giám sát được cả tình trạng xử lí của các service liên kết bên ngoài.<br style="box-sizing: border-box;" />Màn hình console được thiết kế trực quan dễ hiểu, đồng thời từ các dữ liệu thống kê tool này cũng tự động tạo ra map về tình trạng sử dụng của hệ thống nên khi có vấn đề gì của hệ thống có thể dễ dàng xử lí một cách nhanh chóng.</p><h3 style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 1.75em; line-height: 1.2; margin: 1.5em 0px 0.6em; text-align: left;">dynaTrace</h3><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 0.5em; overflow-wrap: break-word; word-break: break-word;">dynaTrace 1 APM tool của thời đại mới, có thể giúp phát triển ra nguyên nhân trực tiếp và nguyên nhân sâu xa của các vấn đề phát sinh trong hệ thống trong thời gian ngắn. Việc đưa vào sử dụng cũng rất đơn giản, không cần thiết phải thêm gì vào program sẵn có.</p><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;">Tool này sẽ lưu lại xử lí của transaction từ khi bắt đầu đến khi kết thúc và giám sát tình trạng performance. Nhờ đó có thể nhanh chóng tìm ra những vấn đề của hệ thống và nguyên nhân để giải quyết.</p><p style="background-color: white; box-sizing: border-box; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;"><span face="Open Sans, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol" style="color: #1b1b1b;"><span style="font-size: 18px; letter-spacing: -0.054px;">https://www.dynatrace.com/</span></span></p><h3 style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 1.75em; line-height: 1.2; margin: 1.5em 0px 0.6em; text-align: left;">CA Application Performance Management(CA APM)</h3><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 0.5em; overflow-wrap: break-word; word-break: break-word;">CA APM là một monitoring solution mang tính bao quát, giám sát từ user mobile đến main frame.</p><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;">Tool này sẽ giúp phát hiện nhanh chóng những vấn đề gây chậm tính năng của application hay network trước khi các vấn đề gây hại cho khách hàng xảy ra.</p><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;">Những vấn đề này và nguyên nhân của chúng được gửi tới người quản lí real time, đồng thời chỉ ra một cách rõ ràng những điểm cần phải sửa theo tình hình thực tế của hệ thống.</p><p style="background-color: white; box-sizing: border-box; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;"><span face="Open Sans, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol" style="color: #1b1b1b;"><span style="font-size: 18px; letter-spacing: -0.054px;">https://github.com/CA-APM</span></span></p><h3 style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 1.75em; line-height: 1.2; margin: 1.5em 0px 0.6em; text-align: left;">New Relic</h3><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 0.5em; overflow-wrap: break-word; word-break: break-word;">New Relic là một dịch vụ cung cấp môi trường giám sát application và network như một cloud service. Nó không cần setup mà có thể ngay lập tức giám sát hệ thống.</p><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;">Những dữ liệu thu thập được sẽ tự động được hiển thị và có thể nhanh chóng xác định được những điểm có vấn đề trong hệ thống.</p><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;">Bằng việc sử dụng tool này chúng ta có thể quản lí giám sát được toàn bộ môi trường application thường xuyên thay đổi, từ đó đưa ra được những xử lí hay sizing nhanh chóng và hợp lí.</p><p style="background-color: white; box-sizing: border-box; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;"><span face="Open Sans, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol" style="color: #1b1b1b;"><span style="font-size: 18px; letter-spacing: -0.054px;">Trang web official của New Relic: https://newrelic.com/</span></span></p><h3 style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 1.75em; line-height: 1.2; margin: 1.5em 0px 0.6em; text-align: left;">JENNIFER</h3><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 0.5em; overflow-wrap: break-word; word-break: break-word;">+ JENNIFER là 1 APM tool để giám sát web application server. Vì nó sẽ giám sát trực tiếp xử lí bên trong của từng application nên có thể phát hiện và giải quyết vấn đề một cách nhanh chóng.</p><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;">+ Bằng việc giám sát thời gian response của page request cũng như cuat DB đối với query, tool này giúp cho chúng ta nhận biế được vấn đề và nguyên nhân của nó ở giai đoạn sớm cũng như nắm được xu hướng độ tại của service một cách cụ thể.</p><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;">+ Hỗ trợ các nền tảng platform sau: Java-.NET-PHP-Python</p><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;">+ Trang web official của Jennifer APM:</p><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;">https://jennifersoft.com/en/product/</p><p style="background-color: white; box-sizing: border-box; color: #1b1b1b; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;"><br /></p><h3 style="background-color: white; box-sizing: border-box; font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 18px; letter-spacing: -0.003em; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; text-align: left; word-break: break-word;"><span style="color: #cc0000;">Xem thêm về APM tại đây:</span></h3><p style="background-color: white; box-sizing: border-box; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; word-break: break-word;"><span face="Open Sans, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol" style="color: #1b1b1b;"><span style="font-size: 18px; letter-spacing: -0.054px;">https://vietnetco.vn/application-performance-hieu-suat-ung-dung/10844.html</span></span></p><h3 style="background-color: white; box-sizing: border-box; margin-bottom: 0px; margin-top: 1.5em; overflow-wrap: break-word; text-align: left; word-break: break-word;"><span style="font-size: 18px; letter-spacing: -0.054px;"><span style="color: #cc0000;">Xem bài demo AppDynamics:</span></span></h3></div>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0tag:blogger.com,1999:blog-1520055905364934797.post-15934417954787738862023-02-18T09:44:00.062+07:002024-02-29T16:08:30.014+07:00AWS là gì? What is AWS?<div style="text-align: left;"><span style="color: #cc0000;"><b>+ AWS - Amazon Web Services</b> </span>là dịch vụ điện toán đám mây trên web của công ty Amazon</div><div style="text-align: left;"><span style="color: #cc0000;"><br /></span></div><div style="text-align: left;">+ Xem câu trả lời chính thức <b><span style="color: #cc0000;">AWS là gì</span></b> từ Amazon tại đây: https://aws.amazon.com/vi/what-is-aws/</div><div style="text-align: left;"><span style="color: #cc0000;"><br /></span></div><div style="text-align: left;">+ 03 phút giới thiệu từ Amazon official:</div><div style="text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/a9__D53WsUs" width="320" youtube-src-id="a9__D53WsUs"></iframe></div><span><a name='more'></a></span><h3 style="text-align: left;"><span style="color: #cc0000;">Những dịch vụ cơ bản của AWS</span></h3><ul style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: white; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; color: #333333; font-family: Roboto; font-size: 16px; list-style: none; margin: 10px 0px 30px; padding-bottom: 0px; padding-left: 36px !important; padding-right: 0px; padding-top: 0px; word-break: break-word;"><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 6px; word-break: break-word;">Compute: Tính toán.</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 6px; word-break: break-word;">Storage: Lưu trữ.</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 6px; word-break: break-word;">Networking & Content Delivery: Mạng lưới phân phối nội dung.</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 6px; word-break: break-word;">Analysis: Phân tích dữ liệu.</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 6px; word-break: break-word;">Management Tools: Công cụ quản lý.</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 6px; word-break: break-word;">Developer Tools: Công cụ phát triển.</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 6px; word-break: break-word;">Business Productivity: Năng suất nghiệp vụ.</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 6px; word-break: break-word;">Customer Engagement: Cam kết khách hàng.</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 6px; word-break: break-word;">Application Integration: Tích hợp ứng dụng.</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 6px; word-break: break-word;">Công nghệ thực tế ảo (AR & VR).</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 6px; word-break: break-word;">Machine Learning: Máy học.</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 0px; word-break: break-word;">Desktop & App Streaming: Ứng dụng máy tính & Streaming.</li></ul><p style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: white; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; color: #333333; font-family: Roboto; font-size: 16px; line-height: 1.8; margin: 0px 0px 18px; padding-top: 6px; word-break: break-word;">Các dịch vụ này lại được phân chia thành các dịch vụ nhỏ hơn tùy ứng với yêu cầu công việc, ví dụ:</p><ul style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: white; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; color: #333333; font-family: Roboto; font-size: 16px; list-style: none; margin: 10px 0px 30px; padding-bottom: 0px; padding-left: 36px !important; padding-right: 0px; padding-top: 0px; word-break: break-word;"><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 6px; word-break: break-word;">Dịch vụ Amazon EC2 (máy chủ đám mây).</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 6px; word-break: break-word;">Dịch vụ lưu trữ bao gồm Amazon Simple Storage Services S3, lưu trữ khối EBS, lưu trữ file EFS.</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(228, 230, 234); box-sizing: border-box; line-height: 1.7; list-style: disc; margin-bottom: 10px; padding-bottom: 0px; word-break: break-word;">Dịch vụ Amazon Elastic Load Balancing giúp cân bằng tải.</li></ul><span style="color: #333333; font-family: Roboto;"><span style="background-color: white;"><div><span style="color: #333333; font-family: Roboto;"><span style="background-color: white;"><br /></span></span></div>+ Mình chưa đăng ký thử nhưng thấy tạo tài khoản miễn phí:</span></span><div><span style="color: #333333; font-family: Roboto;"><br /></span><div><span style="color: #333333; font-family: Roboto;">https://portal.aws.amazon.com/billing/signup?pg=WIAWS#/start/email</span></div></div><div><span style="color: #333333; font-family: Roboto;"><br /></span></div><div><span style="color: #333333; font-family: Roboto;">+ Xem thêm về AWS:</span></div><div><span style="color: #333333; font-family: Roboto;"><br /></span></div><div><span style="color: #333333; font-family: Roboto;">https://vietnix.vn/aws-la-gi/?gclid=Cj0KCQiAxbefBhDfARIsAL4XLRoaLldaDKWlCFlnrNw_zmtj5U47CJCwCi_Cc2uzp7i_lt6wyv5d840aApOfEALw_wcB</span></div><div><span style="color: #333333; font-family: Roboto;"><br /></span></div><h3 style="text-align: left;"><span style="color: #cc0000; font-family: Roboto;">+ Bài demo về AWS:</span></h3><div><span style="color: #333333; font-family: Roboto;"><br /></span></div>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0tag:blogger.com,1999:blog-1520055905364934797.post-41228075836048356692023-02-17T08:44:00.155+07:002024-02-29T16:08:44.995+07:00Top 10 công ty outsourcing software hàng đầu ở Việt Nam<p></p><ol style="text-align: left;"><li><b><a href="http://www.lophocvitinh.com/">FPT Software</a></b><br />https://career.fpt-software.com/vi/</li><li><b><a href="http://www.lophocvitinh.com/">Tập đoàn CMC</a></b><br />https://cmcglobal.com.vn/career/</li><li><b><a href="http://www.lophocvitinh.com/">Công ty TMA Solutions</a></b><br />https://www.tma.vn/Viec-lam/ </li><li><b><a href="http://www.lophocvitinh.com/">Công ty Tinh Vân Group</a></b><br />https://tuyendung.tinhvan.com/</li><li><b><a href="http://www.lophocvitinh.com/">Công ty Groove Technology</a></b><br />https://career.groovetechnology.com/</li><li><b><a href="http://www.lophocvitinh.com/">Glass Egg Digital Media</a></b><br />https://www.glassegg.com/co-hoi-nghe-nghiep/ </li><li><b><a href="http://www.lophocvitinh.com/">Công ty Mona Media</a></b><br />https://mona.media/</li><li><b><a href="http://www.lophocvitinh.com/">Công ty Global CyberSoft</a> (<a href="http://www.lophocvitinh.com/">Hitachi Vantara</a> since 2020)</b><br />https://www.hitachivantara.com/go/ve/home/</li><li><b><a href="http://www.lophocvitinh.com/">Công ty Harvey Nash</a></b><br />https://harveynash.anphabe.com/big-jobs</li><li><b><a href="http://www.lophocvitinh.com/">Công ty MISA</a></b><br />https://www.misa.vn/tuyen-dung</li></ol><div><i>p/S: danh sách này chỉ là tham khảo, có thể thay đổi theo từng năm.</i></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHwJ7fO1XwvPhcOeqyOdRylhN07Fp746PPPdU3T1LOm3RyiSNhTvlomIuSb6Y-n0GnhxKzUG2Qx-SI-rs66TChgsUrUVlkk5eBvMS6ZNtnafgowtvpa4zXpxliZPnZYsozO3QULTYFmmcEYXZs75qkGIOju0WET8ypxd2IieWEWtjPPuc1BFeqN5rN/s2401/software.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1261" data-original-width="2401" height="168" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHwJ7fO1XwvPhcOeqyOdRylhN07Fp746PPPdU3T1LOm3RyiSNhTvlomIuSb6Y-n0GnhxKzUG2Qx-SI-rs66TChgsUrUVlkk5eBvMS6ZNtnafgowtvpa4zXpxliZPnZYsozO3QULTYFmmcEYXZs75qkGIOju0WET8ypxd2IieWEWtjPPuc1BFeqN5rN/s320/software.png" width="320" /></a></div><span><a name='more'></a></span></div><h3 style="text-align: left;"><span style="color: #cc0000;">Tên gọi 01 số vị trí cơ bản trong ngành sản xuất phần mềm:</span></h3><div><br /></div><div>Giai đoạn 01:</div><div><ul style="text-align: left;"><li><b>Product Manager (PM)</b> -> đưa ra chiến lược sản phẩm.</li><li><b>Product Owner (PO)</b> -> chuyển chiến lược thành các task cụ thể.</li></ul></div><div><br /></div><div>Giai đoạn 02:</div><div><ul style="text-align: left;"><li><b>UX/UI Designer</b>: thiết kế trải nghiệm người dùng - giao diện sản phẩm.</li></ul></div><div><br /></div><div>Giai đoạn 03:</div><div><ul style="text-align: left;"><li><b>Front-end Dev</b> / <b>Mobile Dev</b>: lập trình giao diện lên thiết bị mobile hoặc website.</li><li><b>Backend Dev</b>: thiết kế hệ thống.</li></ul></div><div><br /></div><div>Giai đoạn 04:</div><div><ul style="text-align: left;"><li><b>DevOps</b>: đưa hệ thống lên cloud.</li></ul></div><div><br /></div><div>Giai đoạn 05:</div><div><ul style="text-align: left;"><li><b>QA Analyst</b>: quản lý chất lượng (Quality Assurance)</li><li><b>Cyber Security Engineer</b>: vấn đề bảo mật.</li></ul></div><div><br /></div><div>Giai đoạn 06:</div><div><ul style="text-align: left;"><li><b>DB Administrator</b></li></ul><div><i>P/s: tùy vào tính chất dự án mà số vị trí - giai đoạn có thể thay đổi tăng lên hoặc giảm xuống.</i></div></div><div><span style="color: #202124; font-family: consolas, lucida console, courier new, monospace;"><span style="font-size: 12px; white-space: pre-wrap;"><br /></span></span><div><i><br /></i></div><div style="text-align: right;"><i>Sưu tầm bởi #drM</i></div><span style="color: white;">(+84) 243 768 9048 - (028) 38912532 - +84 24 3212 3396<br />(028) 3868 0888 - +84 28 7109 9982 - 1900636648 - +84 28 3943 1389<br />+84 24 3232 3430 - +44 (0)20 7333 0033 +84 24 3 974 6227 +844-3926-3000(028) 3925 3789 - 1900633641 - (408) 765-8080 - 024.7300.5656</span><div style="text-align: right;"><span face="CiscoSans, Arial, sans-serif" style="background-color: white; color: #4d4c4c; font-size: 18px; text-align: left;"><br /></span></div><p></p></div>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0tag:blogger.com,1999:blog-1520055905364934797.post-61353081087617586962023-02-16T09:00:00.098+07:002024-02-29T16:09:17.614+07:00Demo ứng dụng giỏ hàng shopping cart bằng KnockoutJS<h3 style="text-align: left;"><span style="color: #cc0000;">01. index.html</span></h3><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9pt;"><span style="color: #e8bf6a;"><!DOCTYPE </span><span style="color: #bababa;">html</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"><html </span><span style="color: #bababa;">lang</span><span style="color: #a5c261;">="en"</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"><head><br /></span><span style="color: #e8bf6a;"> <meta </span><span style="color: #bababa;">charset</span><span style="color: #a5c261;">="UTF-8"</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"> <title></span>Includes nested dropdowns and a string formatting function<span style="color: #e8bf6a;"></title><br /></span><span style="color: #e8bf6a;"> <script </span><span style="color: #bababa;">src</span><span style="color: #a5c261;">="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout-latest.js"</span><span style="color: #e8bf6a;">></script><br /></span><span style="color: #e8bf6a;"> <script </span><span style="color: #bababa;">src</span><span style="color: #a5c261;">="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"</span><span style="color: #e8bf6a;">></script><br /></span><span style="color: #e8bf6a;"> <script </span><span style="color: #bababa;">type</span><span style="color: #a5c261;">="text/javascript" </span><span style="color: #bababa;">src</span><span style="color: #a5c261;">="sample.js"</span><span style="color: #e8bf6a;">></script><br /></span><span style="color: #e8bf6a;"> <link </span><span style="color: #bababa;">rel</span><span style="color: #a5c261;">="stylesheet" </span><span style="color: #bababa;">type</span><span style="color: #a5c261;">="text/css" </span><span style="color: #bababa;">href</span><span style="color: #a5c261;">="style.css"</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"></head><span><a name='more'></a></span><br /></span><span style="color: #e8bf6a;"><body><br /></span><span style="color: #e8bf6a;"><table </span><span style="color: #bababa;">width</span><span style="color: #a5c261;">='100%'</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"> <thead><br /></span><span style="color: #e8bf6a;"> <tr><br /></span><span style="color: #e8bf6a;"> <th </span><span style="color: #bababa;">width</span><span style="color: #a5c261;">='25%'</span><span style="color: #e8bf6a;">></span>Category<span style="color: #e8bf6a;"></th><br /></span><span style="color: #e8bf6a;"> <th </span><span style="color: #bababa;">width</span><span style="color: #a5c261;">='25%'</span><span style="color: #e8bf6a;">></span>Product<span style="color: #e8bf6a;"></th><br /></span><span style="color: #e8bf6a;"> <th </span><span style="color: #bababa;">class</span><span style="color: #a5c261;">='price' </span><span style="color: #bababa;">width</span><span style="color: #a5c261;">='15%'</span><span style="color: #e8bf6a;">></span>Price<span style="color: #e8bf6a;"></th><br /></span><span style="color: #e8bf6a;"> <th </span><span style="color: #bababa;">class</span><span style="color: #a5c261;">='quantity' </span><span style="color: #bababa;">width</span><span style="color: #a5c261;">='10%'</span><span style="color: #e8bf6a;">></span>Quantity<span style="color: #e8bf6a;"></th><br /></span><span style="color: #e8bf6a;"> <th </span><span style="color: #bababa;">class</span><span style="color: #a5c261;">='price' </span><span style="color: #bababa;">width</span><span style="color: #a5c261;">='15%'</span><span style="color: #e8bf6a;">></span>Subtotal<span style="color: #e8bf6a;"></th><br /></span><span style="color: #e8bf6a;"> <th </span><span style="color: #bababa;">width</span><span style="color: #a5c261;">='10%'</span><span style="color: #e8bf6a;">> </th><br /></span><span style="color: #e8bf6a;"> </tr><br /></span><span style="color: #e8bf6a;"> </thead><br /></span><span style="color: #e8bf6a;"> <tbody </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">='foreach: lines'</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"> <tr><br /></span><span style="color: #e8bf6a;"> <td><br /></span><span style="color: #e8bf6a;"> <select </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">='options: sampleProductCategories, optionsText: "name", optionsCaption: "Select...", value: category'</span><span style="color: #e8bf6a;">> </select><br /></span><span style="color: #e8bf6a;"> </td><br /></span><span style="color: #e8bf6a;"> <td </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">="with: category"</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"> <select </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">='options: products, optionsText: "name", optionsCaption: "Select...", value: $parent.product'</span><span style="color: #e8bf6a;">> </select><br /></span><span style="color: #e8bf6a;"> </td><br /></span><span style="color: #e8bf6a;"> <td </span><span style="color: #bababa;">class</span><span style="color: #a5c261;">='price' </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">='with: product'</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"> <span </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">='text: formatCurrency(price)'</span><span style="color: #e8bf6a;">> </span><br /></span><span style="color: #e8bf6a;"> </td><br /></span><span style="color: #e8bf6a;"> <td </span><span style="color: #bababa;">class</span><span style="color: #a5c261;">='quantity'</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"> <input </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">='visible: product, value: quantity, valueUpdate: "afterkeydown"' </span><span style="color: #e8bf6a;">/><br /></span><span style="color: #e8bf6a;"> </td><br /></span><span style="color: #e8bf6a;"> <td </span><span style="color: #bababa;">class</span><span style="color: #a5c261;">='price'</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"> <span </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">='visible: product, text: formatCurrency(subtotal())' </span><span style="color: #e8bf6a;">> </span><br /></span><span style="color: #e8bf6a;"> </td><br /></span><span style="color: #e8bf6a;"> <td><br /></span><span style="color: #e8bf6a;"> <a </span><span style="color: #bababa;">href</span><span style="color: #a5c261;">='#' </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">='click: $parent.removeLine'</span><span style="color: #e8bf6a;">></span>Remove<span style="color: #e8bf6a;"></a><br /></span><span style="color: #e8bf6a;"> </td><br /></span><span style="color: #e8bf6a;"> </tr><br /></span><span style="color: #e8bf6a;"> </tbody><br /></span><span style="color: #e8bf6a;"></table><br /></span><span style="color: #e8bf6a;"><p </span><span style="color: #bababa;">class</span><span style="color: #a5c261;">='grandTotal'</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"> </span>Total value: <span style="color: #e8bf6a;"><span </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">='text: formatCurrency(grandTotal())'</span><span style="color: #e8bf6a;">> </span><br /></span><span style="color: #e8bf6a;"></p><br /></span><span style="color: #e8bf6a;"><button </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">='click: addLine'</span><span style="color: #e8bf6a;">></span>Add product<span style="color: #e8bf6a;"></button><br /></span><span style="color: #e8bf6a;"><button </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">='click: save'</span><span style="color: #e8bf6a;">></span>Submit order<span style="color: #e8bf6a;"></button><br /></span><span style="color: #e8bf6a;"><br /></span><span style="color: #e8bf6a;"><script><br /></span><span style="color: #e8bf6a;"><br /></span><span style="color: #e8bf6a;"> </span><span style="color: #cc7832;">function </span><span style="color: #ffc66d;">formatCurrency</span>(value) {<br /> <span style="color: #cc7832;">return </span><span style="color: #6a8759;">"$" </span>+ value.<span style="color: #ffc66d;">toFixed</span>(<span style="color: #6897bb;">2</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /><br /> <span style="color: #cc7832;">var </span><span style="color: #ffc66d;">CartLine </span>= <span style="color: #cc7832;">function</span>() {<span style="color: grey;">//chưa có data???<br /></span><span style="color: grey;"> </span><span style="color: #cc7832;">var </span>self = <span style="color: #cc7832;">this;<br /></span><span style="color: #cc7832;"> </span>self.<span style="color: #9876aa;">category </span>= ko.observable()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>self.<span style="color: #9876aa;">product </span>= ko.observable()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>self.<span style="color: #9876aa;">quantity </span>= ko.observable(<span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>self.<span style="color: #9876aa;">subtotal </span>= ko.pureComputed(<span style="color: #cc7832;">function</span>() {<br /> <span style="color: #cc7832;">return </span>self.<span style="color: #9876aa;">product</span>() ? self.<span style="color: #9876aa;">product</span>().<span style="color: #9876aa;">price </span>* <span style="color: #ffc66d;">parseInt</span>(<span style="color: #6a8759;">"0" </span>+ self.<span style="color: #9876aa;">quantity</span>()<span style="color: #cc7832;">, </span><span style="color: #6897bb;">10</span>) : <span style="color: #6897bb;">0</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>})<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span><span style="color: grey;">// Whenever the category changes, reset the product selection<br /></span><span style="color: grey;"> </span>self.<span style="color: #9876aa;">category</span>.<span style="color: #ffc66d;">subscribe</span>(<span style="color: #cc7832;">function</span>() {<br /> self.<span style="color: #9876aa;">product</span>(<span style="color: #cc7832;">undefined</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>})<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> var </span><span style="color: #ffc66d;">Cart </span>= <span style="color: #cc7832;">function</span>() {<br /> <span style="color: grey;">// Stores an array of lines, and from these, can work out the grandTotal<br /></span><span style="color: grey;"> </span><span style="color: #cc7832;">var </span>self = <span style="color: #cc7832;">this;<br /></span><span style="color: #cc7832;"> </span>self.<span style="color: #9876aa;">lines </span>= ko.observableArray([<span style="color: #cc7832;">new </span><span style="color: #ffc66d;">CartLine</span>()])<span style="color: #cc7832;">; </span><span style="color: grey;">// Put one line in by default<br /></span><span style="color: grey;"> </span>self.<span style="color: #9876aa;">grandTotal </span>= ko.pureComputed(<span style="color: #cc7832;">function</span>() {<br /> <span style="color: #cc7832;">var </span>total = <span style="color: #6897bb;">0</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>$.each(self.<span style="color: #9876aa;">lines</span>()<span style="color: #cc7832;">, function</span>() { total += <span style="color: #cc7832;">this</span>.<span style="color: #9876aa;">subtotal</span>() })<br /> <span style="color: #cc7832;">return </span>total<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>})<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span><span style="color: grey;">// Operations<br /></span><span style="color: grey;"> </span>self.<span style="color: #ffc66d;">addLine </span>= <span style="color: #cc7832;">function</span>() { self.<span style="color: #9876aa;">lines</span>.<span style="color: #9876aa;">push</span>(<span style="color: #cc7832;">new </span><span style="color: #ffc66d;">CartLine</span>()) }<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>self.<span style="color: #ffc66d;">removeLine </span>= <span style="color: #cc7832;">function</span>(line) { self.<span style="color: #9876aa;">lines</span>.<span style="color: #ffc66d;">remove</span>(line) }<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>self.<span style="color: #ffc66d;">save </span>= <span style="color: #cc7832;">function</span>() {<br /> <span style="color: #cc7832;">var </span>dataToSave = $.<span style="color: #ffc66d;">map</span>(self.<span style="color: #9876aa;">lines</span>()<span style="color: #cc7832;">, function</span>(line) {<br /> <span style="color: #cc7832;">return </span>line.<span style="color: #9876aa;">product</span>() ? {<br /> <span style="color: #9876aa;">productName</span>: line.<span style="color: #9876aa;">product</span>().<span style="color: #9876aa;">name</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #9876aa;">quantity</span>: line.<span style="color: #9876aa;">quantity</span>()<br /> } : <span style="color: #cc7832;">undefined<br /></span><span style="color: #cc7832;"> </span>})<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span><span style="color: #ffc66d;">alert</span>(<span style="color: #6a8759;">"Could now send this to server: " </span>+ <span style="color: #9876aa; font-style: italic; font-weight: bold;">JSON</span>.<span style="color: #ffc66d;">stringify</span>(dataToSave))<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span>ko.applyBindings(<span style="color: #cc7832;">new </span><span style="color: #ffc66d;">Cart</span>())<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #e8bf6a;"></script><br /></span><span style="color: #e8bf6a;"></body><br /></span><span style="color: #e8bf6a;"></html></span></pre><span><!--more--></span><div><br /></div><div><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">02. sample.js</span></h3><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9pt;"><span style="color: #cc7832;">var </span><span style="color: #9876aa; font-style: italic; font-weight: bold;">sampleProductCategories </span>= [<br /> {<br /> <span style="color: #6a8759;">"products"</span>: [<br /> {<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1948 Porsche 356-A Roadster"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">53.9<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1948 Porsche Type 356 Roadster"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">62.16<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1949 Jaguar XK 120"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">47.25<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1952 Alpine Renault 1300"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">98.58<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1952 Citroen-15CV"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">72.82<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1956 Porsche 356A Coupe"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">98.3<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1957 Corvette Convertible"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">69.93<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1957 Ford Thunderbird"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">34.21<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1958 Chevy Corvette Limited Edition"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">15.91<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1961 Chevrolet Impala"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">32.33<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1962 LanciaA Delta 16V"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">103.42<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1965 Aston Martin DB5"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">65.96<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1966 Shelby Cobra 427 S/C"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">29.18<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1968 Dodge Charger"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">75.16<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1968 Ford Mustang"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">95.34<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1969 Chevrolet Camaro Z28"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">50.51<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1969 Corvair Monza"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">89.14<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1969 Dodge Charger"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">58.73<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1969 Dodge Super Bee"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">49.05<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1969 Ford Falcon"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">83.05<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1970 Chevy Chevelle SS 454"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">49.24<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1970 Dodge Coronet"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">32.37<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1970 Plymouth Hemi Cuda"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">31.92<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1970 Triumph Spitfire"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">91.92<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1971 Alpine Renault 1600s"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">38.58<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1972 Alfa Romeo GTA"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">85.68<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1976 Ford Gran Torino"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">73.49<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1982 Camaro Z28"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">46.53<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1982 Lamborghini Diablo"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">16.24<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1985 Toyota Supra"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">57.01<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1992 Ferrari 360 Spider red"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">77.9<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1992 Porsche Cayenne Turbo Silver"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">69.78<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1993 Mazda RX-7"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">83.51<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1995 Honda Civic"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">93.89<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1998 Chrysler Plymouth Prowler"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">101.51<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1999 Indy 500 Monte Carlo SS"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">56.76<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"2001 Ferrari Enzo"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">95.59<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"2002 Chevy Corvette"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">62.11<br /></span><span style="color: #6897bb;"> </span>}<br /> ]<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"Classic Cars"<br /></span><span style="color: #6a8759;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"products"</span>: [<br /> {<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1936 Harley Davidson El Knucklehead"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">24.23<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1957 Vespa GS150"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">32.95<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1960 BSA Gold Star DBD34"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">37.32<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1969 Harley Davidson Ultimate Chopper"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">48.81<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1974 Ducati 350 Mk3 Desmo"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">56.13<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1982 Ducati 900 Monster"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">47.1<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1982 Ducati 996 R"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">24.14<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1996 Moto Guzzi 1100i"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">68.99<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1997 BMW F650 ST"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">66.92<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1997 BMW R 1100 S"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">60.86<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"2002 Suzuki XREO"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">66.27<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"2002 Yamaha YZR M1"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">34.17<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"2003 Harley-Davidson Eagle Drag Bike"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">91.02<br /></span><span style="color: #6897bb;"> </span>}<br /> ]<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"Motorcycles"<br /></span><span style="color: #6a8759;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"products"</span>: [<br /> {<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1900s Vintage Bi-Plane"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">34.25<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1900s Vintage Tri-Plane"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">36.23<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1928 British Royal Navy Airplane"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">66.74<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1980s Black Hawk Helicopter"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">77.27<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"ATA: B757-300"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">59.33<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"America West Airlines B757-200"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">68.8<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"American Airlines: B767-300"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">51.15<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"American Airlines: MD-11S"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">36.27<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"Boeing X-32A JSF"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">32.77<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"Corsair F4U ( Bird Cage)"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">29.34<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"F/A 18 Hornet 1/72"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">54.4<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"P-51-D Mustang"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">49.0<br /></span><span style="color: #6897bb;"> </span>}<br /> ]<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"Planes"<br /></span><span style="color: #6a8759;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"products"</span>: [<br /> {<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"18th century schooner"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">82.34<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1999 Yamaha Speed Boat"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">51.61<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"HMS Bounty"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">39.83<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"Pont Yacht"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">33.3<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"The Mayflower"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">43.3<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"The Queen Mary"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">53.63<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"The Schooner Bluenose"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">34.0<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"The Titanic"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">51.09<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"The USS Constitution Ship"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">33.97<br /></span><span style="color: #6897bb;"> </span>}<br /> ]<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"Ships"<br /></span><span style="color: #6a8759;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"products"</span>: [<br /> {<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1950's Chicago Surface Lines Streetcar"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">26.72<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1962 City of Detroit Streetcar"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">37.49<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"Collectable Wooden Train"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">67.56<br /></span><span style="color: #6897bb;"> </span>}<br /> ]<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"Trains"<br /></span><span style="color: #6a8759;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"products"</span>: [<br /> {<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1926 Ford Fire Engine"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">24.92<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1940 Ford Pickup Truck"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">58.33<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1940s Ford truck"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">84.76<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1954 Greyhound Scenicruiser"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">25.98<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1957 Chevy Pickup"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">55.7<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1958 Setra Bus"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">77.9<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1962 Volkswagen Microbus"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">61.34<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1964 Mercedes Tour Bus"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">74.86<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1980’s GM Manhattan Express"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">53.93<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1996 Peterbilt 379 Stake Bed with Outrigger"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">33.61<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"Diamond T620 Semi-Skirted Tanker"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">68.29<br /></span><span style="color: #6897bb;"> </span>}<br /> ]<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"Trucks and Buses"<br /></span><span style="color: #6a8759;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"products"</span>: [<br /> {<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"18th Century Vintage Horse Carriage"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">60.74<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1903 Ford Model A"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">68.3<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1904 Buick Runabout"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">52.66<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1911 Ford Town Car"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">33.3<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1912 Ford Model T Delivery Wagon"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">46.91<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1913 Ford Model T Speedster"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">60.78<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1917 Grand Touring Sedan"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">86.7<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1917 Maxwell Touring Car"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">57.54<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1928 Ford Phaeton Deluxe"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">33.02<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1928 Mercedes-Benz SSK"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">72.56<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1930 Buick Marquette Phaeton"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">27.06<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1932 Alfa Romeo 8C2300 Spider Sport"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">43.26<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1932 Model A Ford J-Coupe"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">58.48<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1934 Ford V8 Coupe"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">34.35<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1936 Chrysler Airflow"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">57.46<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1936 Mercedes Benz 500k Roadster"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">21.75<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1936 Mercedes-Benz 500K Special Roadster"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">24.26<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1937 Horch 930V Limousine"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">26.3<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1937 Lincoln Berline"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">60.62<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1938 Cadillac V-16 Presidential Limousine"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">20.61<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1939 Cadillac Limousine"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">23.14<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1939 Chevrolet Deluxe Coupe"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">22.57<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1940 Ford Delivery Sedan"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">48.64<br /></span><span style="color: #6897bb;"> </span>}<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span>{<br /> <span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"1941 Chevrolet Special Deluxe Cabriolet"</span><span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"price"</span>: <span style="color: #6897bb;">64.58<br /></span><span style="color: #6897bb;"> </span>}<br /> ]<span style="color: #cc7832;">,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"name"</span>: <span style="color: #6a8759;">"Vintage Cars"<br /></span><span style="color: #6a8759;"> </span>}<br />]<span style="color: #cc7832;">;</span></pre></div><div><br /></div><div><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">03. style.css</span></h3><div><br /></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9pt;"><span style="color: #e8bf6a;">body </span>{ <span style="color: #bababa;">font-family</span>: <span style="color: #e8bf6a;">arial</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">font-size</span>: <span style="color: #6897bb;">14</span><span style="color: #a5c261;">px</span><span style="color: #cc7832;">; </span>}<br /><br />.<span style="color: #e8bf6a;">liveExample </span>{ <span style="color: #bababa;">padding</span>: <span style="color: #6897bb;">1</span><span style="color: #a5c261;">em</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">background-color</span>: <span style="color: #6897bb;">#EEEEDD</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">border</span>: <span style="color: #6897bb;">1</span><span style="color: #a5c261;">px solid </span><span style="color: #6897bb;">#CCC</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">max-width</span>: <span style="color: #6897bb;">655</span><span style="color: #a5c261;">px</span><span style="color: #cc7832;">; </span>}<br />.<span style="color: #e8bf6a;">liveExample input </span>{ <span style="color: #bababa;">font-family</span>: <span style="color: #e8bf6a;">Arial</span><span style="color: #cc7832;">; </span>}<br />.<span style="color: #e8bf6a;">liveExample b </span>{ <span style="color: #bababa;">font-weight</span>: <span style="color: #a5c261;">bold</span><span style="color: #cc7832;">; </span>}<br />.<span style="color: #e8bf6a;">liveExample p </span>{ <span style="color: #bababa;">margin-top</span>: <span style="color: #6897bb;">0.9</span><span style="color: #a5c261;">em</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">margin-bottom</span>: <span style="color: #6897bb;">0.9</span><span style="color: #a5c261;">em</span><span style="color: #cc7832;">; </span>}<br />.<span style="color: #e8bf6a;">liveExample select</span>[<span style="color: #e8bf6a;">multiple</span>] { <span style="color: #bababa;">width</span>: <span style="color: #6897bb;">100</span>%<span style="color: #cc7832;">; </span><span style="color: #bababa;">height</span>: <span style="color: #6897bb;">8</span><span style="color: #a5c261;">em</span><span style="color: #cc7832;">; </span>}<br />.<span style="color: #e8bf6a;">liveExample h2 </span>{ <span style="color: #bababa;">margin-top</span>: <span style="color: #6897bb;">0.4</span><span style="color: #a5c261;">em</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">font-weight</span>: <span style="color: #a5c261;">bold</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">font-size</span>: <span style="color: #6897bb;">1.2</span><span style="color: #a5c261;">em</span><span style="color: #cc7832;">; </span>}<br /><br />.<span style="color: #e8bf6a;">liveExample th </span>{ <span style="color: #bababa;">text-align</span>: <span style="color: #a5c261;">left</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">font-weight</span>: <span style="color: #a5c261;">bold</span><span style="color: #cc7832;">; </span>}<br />.<span style="color: #e8bf6a;">liveExample </span>.<span style="color: #e8bf6a;">price </span>{ <span style="color: #bababa;">text-align</span>: <span style="color: #a5c261;">right</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">padding-right</span>: <span style="color: #6897bb;">2</span><span style="color: #a5c261;">em</span><span style="color: #cc7832;">; </span>}<br />.<span style="color: #e8bf6a;">liveExample </span>.<span style="color: #e8bf6a;">grandTotal </span>{ <span style="color: #bababa;">border-top</span>: <span style="color: #6897bb;">1</span><span style="color: #a5c261;">px solid silver</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">padding-top</span>: <span style="color: #6897bb;">0.5</span><span style="color: #a5c261;">em</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">font-size</span>: <span style="color: #6897bb;">1.2</span><span style="color: #a5c261;">em</span><span style="color: #cc7832;">; </span>}<br />.<span style="color: #e8bf6a;">liveExample </span>.<span style="color: #e8bf6a;">grandTotal SPAN </span>{ <span style="color: #bababa;">font-weight</span>: <span style="color: #a5c261;">bold</span><span style="color: #cc7832;">; </span>}<br /><br />.<span style="color: #e8bf6a;">liveExample table</span><span style="color: #cc7832;">, </span>.<span style="color: #e8bf6a;">liveExample td</span><span style="color: #cc7832;">, </span>.<span style="color: #e8bf6a;">liveExample th </span>{ <span style="color: #bababa;">padding</span>: <span style="color: #6897bb;">0.2</span><span style="color: #a5c261;">em</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">border-width</span>: <span style="color: #6897bb;">0</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">margin</span>: <span style="color: #6897bb;">0</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">vertical-align</span>: <span style="color: #a5c261;">top</span><span style="color: #cc7832;">; </span>}<br />.<span style="color: #e8bf6a;">liveExample td input</span><span style="color: #cc7832;">, </span>.<span style="color: #e8bf6a;">liveExample td select </span>{ <span style="color: #bababa;">width</span>: <span style="color: #6897bb;">8</span><span style="color: #a5c261;">em</span><span style="color: #cc7832;">; </span>}<br />.<span style="color: #e8bf6a;">liveExample td</span>.<span style="color: #e8bf6a;">quantity input </span>{ <span style="color: #bababa;">width</span>: <span style="color: #6897bb;">4</span><span style="color: #a5c261;">em</span><span style="color: #cc7832;">; </span>}<br />.<span style="color: #e8bf6a;">liveExample td select </span>{ <span style="color: #bababa;">height</span>: <span style="color: #6897bb;">1.8</span><span style="color: #a5c261;">em</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">white-space</span>: <span style="color: #a5c261;">nowrap</span><span style="color: #cc7832;">; </span>}<br /><br /><br /><span style="color: #e8bf6a;">li </span>{ <span style="color: #bababa;">list-style-type</span>: <span style="color: #a5c261;">disc</span><span style="color: #cc7832;">; </span><span style="color: #bababa;">margin-left</span>: <span style="color: #6897bb;">20</span><span style="color: #a5c261;">px</span><span style="color: #cc7832;">; </span>}</pre><div><br /></div><div><br /></div>Kết quả cuối cùng trên trình duyệt:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhb2H-3AULs_V7ynHsq6P5sNG3oPqD76shyW_8G4dcUAgY3oaNghBGgsEKe3fPugE03oY0EbZPnX9Yt_LfKLO31LhUPA8-BeI8xP5un-1dwnNXio_3bdy-yhksHkGoxErNv4s76Kyx38zbdfPTV8Y8B40e9wdyywBouWJRrdzVA4hhj9QHqU3-AKoXz" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="154" data-original-width="1321" height="37" src="https://blogger.googleusercontent.com/img/a/AVvXsEhb2H-3AULs_V7ynHsq6P5sNG3oPqD76shyW_8G4dcUAgY3oaNghBGgsEKe3fPugE03oY0EbZPnX9Yt_LfKLO31LhUPA8-BeI8xP5un-1dwnNXio_3bdy-yhksHkGoxErNv4s76Kyx38zbdfPTV8Y8B40e9wdyywBouWJRrdzVA4hhj9QHqU3-AKoXz" width="320" /></a></div><div><br /></div><div><br /></div><div>Thấy có ích cho mình 01 THÍCH:</div><div><br /></div><h4 style="text-align: left;">https://www.facebook.com/lophocvitinhcom</h4><div><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">Danh sách 12 bài demo chi tiết KnockoutJS (có bảo hành code)</span></h3><div>(liên hệ riêng vs mình nhé)</div><div><ol style="text-align: left;"><li>hello (form vs data-binding)</li><li>click counter</li><li>simple list</li><li>better list</li><li>page grid</li><li>editable grid</li><li>shopping cart</li><li>control types</li><li>contacts editor</li><li>collections</li><li>animated transitions</li><li>model to form binding</li></ol></div><div><br /></div><i><div style="text-align: right;"><i>Sưu tầm bởi #drM</i></div></i><br /></div>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0tag:blogger.com,1999:blog-1520055905364934797.post-30444103077034181732023-02-15T10:16:00.046+07:002023-06-16T16:13:45.649+07:00NestJS là gì? What is NestJS?<p><span face="arial, sans-serif" style="background-color: white; font-size: 16px;"><b><span style="color: #cc0000;">+ NestJS</span></b><span style="color: #202124;"> </span></span><b style="background-color: white; color: #202124; font-family: arial, sans-serif; font-size: 16px;">là một NodeJS framework dùng để phát triển ứng dụng phía server hiệu quả, đáng tin cậy và có thể mở rộng</b><span face="arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px;">.</span></p><p><span face="arial, sans-serif" style="background-color: white; font-size: 16px;"><b><span style="color: #cc0000;">+ NestJS</span></b><span style="color: #202124;"> là sự kết hợp bởi OOP(Object Oriented Programming), FP(Functional Programming), FRP(Functional Reactive Programming). </span></span></p><p><span face="arial, sans-serif" style="background-color: white; font-size: 16px;"><b><span style="color: #cc0000;">+ NestJS</span></b><span style="color: #202124;"> sử dụng </span><b><span style="color: #cc0000;">TypeScript</span></b><span style="color: #202124;"> để phát triển nhưng nó cũng hỗ trợ cả </span><b><span style="color: #cc0000;">Javascript</span></b><span style="color: #202124;">.</span></span></p>A progressive Node.js framework for building efficient, reliable and scalable server-side applications.<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiadjDRM_wYGSO8g4Tcgim7p-rRHDzs3FtkmdBhVSng1yQGE_ZkiPJ0H_q6ZM1IT_GTE1LOIMLFTwX7A3ckcbGbIPziHb3WkhBRatF4N3Bg8QvTsncUCoqgFmszhdj8POFIAvQwivq7I3G-UuJT3FCkTsr-OgQLgaG2QZAXeqmKCr4Lx7vkWxZVPze3/s1920/nestjs-cat-dark-night.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="820" data-original-width="1920" height="137" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiadjDRM_wYGSO8g4Tcgim7p-rRHDzs3FtkmdBhVSng1yQGE_ZkiPJ0H_q6ZM1IT_GTE1LOIMLFTwX7A3ckcbGbIPziHb3WkhBRatF4N3Bg8QvTsncUCoqgFmszhdj8POFIAvQwivq7I3G-UuJT3FCkTsr-OgQLgaG2QZAXeqmKCr4Lx7vkWxZVPze3/s320/nestjs-cat-dark-night.png" width="320" /></a><span><a name='more'></a></span></div><br /><div>Thêm 01 thành viên thuộc gia tộc đại học MIT (Huê Kỳ)</div><div><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">Trang web official của NestJS: </span></h3><div>https://nestjs.com/</div><div><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">Cài đặt và tạo mới project Nest:</span></h3><div><div>$ npm i -g @nestjs/cli</div><div>$ nest new project-name</div><div><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">Xem bài demo Hello World từ trang chủ NestJS:</span></h3><div>https://docs.nestjs.com/first-steps</div><div><br /></div><div><br /></div><div><br /></div></div>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0Hồ Than Thở, Phường 12, Tp. Đà Lạt, Lâm Đồng, Việt Nam11.9568368 108.4789797-16.353397036178848 73.3227297 40.267070636178843 143.6352297tag:blogger.com,1999:blog-1520055905364934797.post-47556458506126678762023-02-14T10:06:00.008+07:002023-06-16T16:13:58.702+07:00Kafka là gì? What is Kafka?<p><b><span style="color: #cc0000;">Apache Kafka</span></b> là một nền tảng streaming sự kiện phân tán mã nguồn mở được hàng nghìn công ty sử dụng cho các đường dẫn dữ liệu hiệu suất cao, phân tích streaming, tích hợp dữ liệu và các ứng dụng quan trọng.</p><p><b>Apache Kafka</b> is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.</p><h3 style="text-align: left;">Trang web official của Kafka:</h3>https://kafka.apache.org/<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8WMumdO-if4vEU5ekTsG0q5C9e8qidY9aGj9CSGi3iP2kntbutUGx7pEbKILzSliF-m2sJYI2XNkCb6Imzyn0JpVoR9JOP2hnUxCOQxUS_NPAR77OAYepb2pW1ZrUGknT8ywlkcOpb5Hcc3ni9y9eqYyWIY0cITksSCuivUwdEk2qGflkLxYXv39N/s117/kafka_logo.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="65" data-original-width="117" height="65" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8WMumdO-if4vEU5ekTsG0q5C9e8qidY9aGj9CSGi3iP2kntbutUGx7pEbKILzSliF-m2sJYI2XNkCb6Imzyn0JpVoR9JOP2hnUxCOQxUS_NPAR77OAYepb2pW1ZrUGknT8ywlkcOpb5Hcc3ni9y9eqYyWIY0cITksSCuivUwdEk2qGflkLxYXv39N/s1600/kafka_logo.png" width="117" /></a><span><a name='more'></a></span></div><h3 style="text-align: left;"><span style="color: #cc0000;">01 định nghĩa khác:</span></h3><div><strong style="background-color: white; box-sizing: border-box; font-family: Verdana, BlinkMacSystemFont, -apple-system, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; font-size: 15px;"><span style="color: #cc0000;">Kafka</span></strong><span face="Verdana, BlinkMacSystemFont, -apple-system, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif" style="background-color: white; color: #222222; font-size: 15px;"> là hệ thống message pub/sub phân tán (distributed messaging system). Bên pulbic dữ liệu được gọi là <b>producer</b>, bên subscribe nhận dữ liệu theo topic được gọi là <b>consumer</b>. </span></div><div><span face="Verdana, BlinkMacSystemFont, -apple-system, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif" style="background-color: white; font-size: 15px;"><b><span style="color: #cc0000;">Kafka</span></b><span style="color: #222222;"> có khả năng truyền một lượng lớn message theo thời gian thực, trong trường hợp bên nhận chưa nhận message vẫn được lưu trữ sao lưu trên một hàng đợi và cả trên ổ đĩa bảo đảm an toàn. Đồng thời nó cũng được replicate trong cluster giúp phòng tránh mất dữ liệu.</span></span><br /><p><br /></p><h3 style="text-align: left;"><span style="color: #cc0000;">01 số khái niệm trong Kafka:</span></h3><ul style="background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, BlinkMacSystemFont, -apple-system, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; font-size: 15px; margin-bottom: 26px; padding: 0px; text-align: left;"><li style="box-sizing: border-box; line-height: inherit; margin-bottom: 10px; margin-left: 21px;"><strong style="box-sizing: border-box;">PRODUCER</strong>: Kafka lưu, phân loại message theo <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">topic</span></code>, sử dụng <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">producer</span></code> để publish message vào các <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">topic</span></code>. Dữ liệu được gửi đển partition của topic lưu trữ trên Broker.<br /><br /></li><li style="box-sizing: border-box; line-height: inherit; margin-bottom: 10px; margin-left: 21px;"><strong style="box-sizing: border-box;">CONSUMER</strong>: Kafka sử dụng <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">consumer</span></code> để subscribe vào topic, các <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">consumer</span></code> được định danh bằng các group name. Nhiều <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">consumer</span></code> có thể cùng đọc một topic.<br /><br /></li><li style="box-sizing: border-box; line-height: inherit; margin-bottom: 10px; margin-left: 21px;"><strong style="box-sizing: border-box;">TOPIC</strong>: Dữ liệu truyền trong Kafka theo topic, khi cần truyền dữ liệu cho các ứng dụng khác nhau thì sẽ tạo ra cá topic khác nhau.<br /><br /></li><li style="box-sizing: border-box; line-height: inherit; margin-bottom: 10px; margin-left: 21px;"><strong style="box-sizing: border-box;">PARTITION</strong>: Đây là nơi dữ liệu cho một <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">topic</span></code> được lưu trữ. Một <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">topic</span></code> có thể có một hay nhiều <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">partition</span></code>. Trên mỗi <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">partition</span></code> thì dữ liệu lưu trữ cố định và được gán cho một ID gọi là <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">offset</span></code>. Trong một Kafka cluster thì một partition có thể replicate (sao chép) ra nhiều bản. Trong đó có một bản <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">leader</span></code> chịu trách nhiệm đọc ghi dữ liệu và các bản còn lại gọi là <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">follower</span></code>. Khi bản <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">leader</span></code> bị lỗi thì sẽ có một bản <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">follower</span></code> lên làm <code class="prettyprinted" style="background-color: #f1f1f1; border: none; box-sizing: border-box; font-family: monospace, monospace; font-size: 1em; padding: 2px 6px; position: relative; top: -1px;"><span class="pln" style="box-sizing: border-box;">leader</span></code> thay thế. Nếu muốn dùng nhiều consumer đọc song song dữ liệu của một topic thì topic đó cần phải có nhiều partition.<br /><br /></li><li style="box-sizing: border-box; line-height: inherit; margin-bottom: 10px; margin-left: 21px;"><strong style="box-sizing: border-box;">BROKER</strong>: Kafka cluster là một set các server, mỗi một set này được gọi là 1 broker.<br /><br /></li><li style="box-sizing: border-box; line-height: inherit; margin-bottom: 0px; margin-left: 21px;"><strong style="box-sizing: border-box;">ZOOKEEPER</strong><span face="Verdana, BlinkMacSystemFont, -apple-system, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif" style="color: #222222;">: được dùng để quản lý và bố trí các broker.</span></li></ul><br style="background-color: white; color: #222222; font-family: Verdana, BlinkMacSystemFont, -apple-system, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; font-size: 15px;" /><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="background-color: white; font-family: Verdana, BlinkMacSystemFont, -apple-system, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; margin-left: auto; margin-right: auto; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBEJa1bST5c7G8_V-n2tqk6MTWbl4Vtp1kFLK3ZSXbVciwZWsZSzZIjwqgu8UXAZIH1Mu9wPfrrEF5i7XlrajM_X5GZpj3Mat_eGdNIPcLh3hAYZURd8F8ojdzZzKftmqHIo8HY1rE_in0-1xdY_2LoPX6jQRZSztq-jV_3NCdJnO2F_Pksd5CQTia/s825/kafka-structure.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="445" data-original-width="825" height="173" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBEJa1bST5c7G8_V-n2tqk6MTWbl4Vtp1kFLK3ZSXbVciwZWsZSzZIjwqgu8UXAZIH1Mu9wPfrrEF5i7XlrajM_X5GZpj3Mat_eGdNIPcLh3hAYZURd8F8ojdzZzKftmqHIo8HY1rE_in0-1xdY_2LoPX6jQRZSztq-jV_3NCdJnO2F_Pksd5CQTia/s320/kafka-structure.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Cấu trúc Kafka</td></tr></tbody></table><br style="background-color: white; color: #222222; font-family: Verdana, BlinkMacSystemFont, -apple-system, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; font-size: 15px;" /><h3 style="text-align: left;"><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="background-color: white; font-family: Verdana, BlinkMacSystemFont, -apple-system, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; margin-left: auto; margin-right: auto; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1pk5uWbFz0qXPTHvlvxdZq7af0DwBiB6-thbonUnX_VRG5JIm8H2-LmdSSjiP7FSREYfYZdDwWlCPmBsJFC3qrC6MrnOgSch_Wa2kdmLdi1lRfFot6YeeZZvy1AdaGkxCvp76J52xUMDBFGzNIgIFr8yyfRrKauQAxXrRaPCayZDzV8li54aPoFkO/s1024/Kafka-Cluster-springboot.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="402" data-original-width="1024" height="126" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1pk5uWbFz0qXPTHvlvxdZq7af0DwBiB6-thbonUnX_VRG5JIm8H2-LmdSSjiP7FSREYfYZdDwWlCPmBsJFC3qrC6MrnOgSch_Wa2kdmLdi1lRfFot6YeeZZvy1AdaGkxCvp76J52xUMDBFGzNIgIFr8yyfRrKauQAxXrRaPCayZDzV8li54aPoFkO/s320/Kafka-Cluster-springboot.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Kafka vs Spring Boot</td></tr></tbody></table><span style="color: #cc0000;">Sử dụng Kafka</span></h3><ul style="background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, BlinkMacSystemFont, -apple-system, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; font-size: 15px; margin-bottom: 26px; padding: 0px;"><li style="box-sizing: border-box; line-height: inherit; margin-bottom: 10px; margin-left: 21px;">Sử dụng như một hệ thống message queue thay thế cho ActiveMQ hay <b><a href="http://www.lophocvitinh.com/2023/01/rabbimq-la-giwhat-is-rabbitmq.html" target="_blank">RabbitMQ</a></b></li><li style="box-sizing: border-box; line-height: inherit; margin-bottom: 10px; margin-left: 21px;">Website Activity Monitoring: theo dõi hoạt động của website</li><li style="box-sizing: border-box; line-height: inherit; margin-bottom: 10px; margin-left: 21px;"><b>Stream Processing</b>: Kafka là một hệ thống rất thích hợp cho việc xử lý dòng dữ liệu trong thời gian thực. Khi dữ liệu của một topic được thêm mới ngay lập tức được ghi vào hệ thống và truyền đến cho bên nhận. Ngoài ra Kafka còn là một hệ thống có đặc tính <strong style="box-sizing: border-box;">duribility</strong> dữ liệu có thể được lưu trữ an toàn cho đến khi bên nhận sẵn sàng nhận nó.</li><li style="box-sizing: border-box; line-height: inherit; margin-bottom: 10px; margin-left: 21px;">Log Aggregation: tổng hợp log</li><li style="box-sizing: border-box; line-height: inherit; margin-bottom: 10px; margin-left: 21px;">Metrics Collection: thu thập dữ liệu, tracking hành động người dùng như các thông số như page view, search action của user sẽ được publish vào một topic và sẽ được xử lý sau</li><li style="box-sizing: border-box; line-height: inherit; margin-bottom: 0px; margin-left: 21px;">Event-Sourcing: Lưu lại <strong style="box-sizing: border-box;">trạng thái</strong> của hệ thống để có thể tái hiện trong trường hợp system bị down.</li></ul><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuTZKmodaFquOijMjONBlneyUdA5jmEU7V9FRcdJ0mPeqs9NAVQqURK6rOrjZ5oHyBS3WHXIL60o2aEZAhJ2sQrqbZdsaAMvI2wCRBwDB8fKTYil65xpkC2jWGPEHYO7mtZngbJJIK5Owln6aZki6nPQb3ijHVBlxUxyVSQtdyRXacaudvKiczVwHl/s602/kafka-ecomerce.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="338" data-original-width="602" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuTZKmodaFquOijMjONBlneyUdA5jmEU7V9FRcdJ0mPeqs9NAVQqURK6rOrjZ5oHyBS3WHXIL60o2aEZAhJ2sQrqbZdsaAMvI2wCRBwDB8fKTYil65xpkC2jWGPEHYO7mtZngbJJIK5Owln6aZki6nPQb3ijHVBlxUxyVSQtdyRXacaudvKiczVwHl/s320/kafka-ecomerce.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Kafka trong thương mại điện tử</td></tr></tbody></table><h3><span style="color: #cc0000;">Xem bài demo 10 phút về Kafka (hệ thống UNIX?)</span>:</h3><div>https://kafka.apache.org/quickstart</div><div><br /></div><div>Trong bài demo này chúng ta sẽ thấy 01 tấm hình </div><div><br /></div><div>-> Bấm vào đó sẽ tự động load về video Youtube thật sự </div><div>(trang web sẽ tải nhanh hơn so với cách nhúng video Youtube thông thường)</div><div><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">Xem thêm về Kafka:</span></h3><div>https://bizflycloud.vn/tin-tuc/kafka-la-gi-gioi-thieu-tong-quan-ve-kafka-20220810160652162.htm</div><div><br /></div><div><br /></div><div>P/S: </div><div>+ k liên quan gì nhưng lúc mình tìm hình Kafka trên mạng thì thấy ông nhà văn này: <b><span style="color: #cc0000;">Franz Kafka</span></b></div><div><span style="color: #cc0000;"><b>https://en.wikipedia.org/wiki/Franz_Kafka</b></span></div><div><br /></div><div>+ Đây là nhà văn người Cộng Hòa Séc gốc Đức sống trong thời kỳ thế chiến thứ 1 (<span face="sans-serif" style="background-color: white; color: #202122; font-size: 14px;">3 July 1883 – 3 June 1924</span>).</div><div><br /></div><div>+ Ông nhà văn này rất nổi tiếng trong cộng đồng nói tiếng Đức với tiểu thuyết <b>The Trial</b>.</div><div><br /></div><div>+ Ông hành nghề luật sư và mất vì bệnh lao khi còn trẻ.</div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO6BnqaUaQqxOzqLm4DE_Q01q_t3Dma-eN-y12TpoYQ_1_PGnYKC4oJZGuWljB7rR_aALkxta8ThCzZiqOBcmw3O98vgEa9Rz3LS2g8o5OwD2y_Fc8lpK65muvgmxpq2xURGxt2fXOh7j7QlmFRJtvuw_tnJqRHjiKLTSHqz07Nw2yZVqwbmdcGRXH/s323/TrialKafka.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="323" data-original-width="220" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO6BnqaUaQqxOzqLm4DE_Q01q_t3Dma-eN-y12TpoYQ_1_PGnYKC4oJZGuWljB7rR_aALkxta8ThCzZiqOBcmw3O98vgEa9Rz3LS2g8o5OwD2y_Fc8lpK65muvgmxpq2xURGxt2fXOh7j7QlmFRJtvuw_tnJqRHjiKLTSHqz07Nw2yZVqwbmdcGRXH/s320/TrialKafka.jpg" width="218" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><span style="color: red;">The Trial - Franz Kafka</span></td></tr></tbody></table><br /><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikyS8UsRMzJ31yYG35_dnc9KGF_xlpQpO5bYnpvDi4gqVrGQV6UCojlojicsEg97dILc6BzlwyyWFVs1vDNrxZDpmfeUW_xefyf3CeZI5cqap7nKhxR_bHsH8DY1LaOohP3nrVVs3rAdpCERh63IiaUi5krc8xBmPBUE7F2E6Qrfn-xil196WzUYSL/s1577/Kafka_Der_Prozess_1925.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1577" data-original-width="1132" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikyS8UsRMzJ31yYG35_dnc9KGF_xlpQpO5bYnpvDi4gqVrGQV6UCojlojicsEg97dILc6BzlwyyWFVs1vDNrxZDpmfeUW_xefyf3CeZI5cqap7nKhxR_bHsH8DY1LaOohP3nrVVs3rAdpCERh63IiaUi5krc8xBmPBUE7F2E6Qrfn-xil196WzUYSL/s320/Kafka_Der_Prozess_1925.jpg" width="230" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><span style="color: #cc0000;">Bản thảo viết tay - The Trial</span></td></tr></tbody></table><br />drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0Thung Lũng Tình Yêu, Phường 8, Tp. Đà Lạt, Lâm Đồng, Việt Nam11.9800858 108.4502591-16.330148036178848 73.2940091 40.290319636178843 143.60650909999998tag:blogger.com,1999:blog-1520055905364934797.post-27146590769485936842023-02-13T15:10:00.007+07:002024-02-29T16:09:33.525+07:00KnockoutJS là gì? What is KnockoutJS?<p>+ <b><span style="color: #cc0000;">KnockoutJS</span></b> là 01 <b><span style="color: #cc0000;">thư viện JavaScript</span></b> đơn giản hoạt động theo mô hình <b>Model-View-ViewModel</b> (MVVM)</p><p>+ <b><span style="color: #cc0000;">KnockoutJS</span></b> xuất thân từ đại gia đình danh giá (đại học MIT - Huê Kỳ)</p><p>+ Trang web <b><span style="color: #e06666;">official của </span><span style="color: #cc0000;">KnockoutJS</span></b>: https://knockoutjs.com/</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzs1VCGyezTYHsfDxXxbg9Mgaw3NuaizRckxFyrZXYj_uxQQ2IOoFrRqjGE_ayBJhhAzcngGi_DVU1o5PsRYsOF2sJyvEomQV5PAqb90JjwvwCjfE3UHtnJDhUrU74X-AWOWgfeQsO7Ugc0_YsiJ8fCKsGgBRGrB0SB0xjX4LCV3SOD7Ldg7q7jIWa/s395/ko-logo.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="115" data-original-width="395" height="93" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzs1VCGyezTYHsfDxXxbg9Mgaw3NuaizRckxFyrZXYj_uxQQ2IOoFrRqjGE_ayBJhhAzcngGi_DVU1o5PsRYsOF2sJyvEomQV5PAqb90JjwvwCjfE3UHtnJDhUrU74X-AWOWgfeQsO7Ugc0_YsiJ8fCKsGgBRGrB0SB0xjX4LCV3SOD7Ldg7q7jIWa/s320/ko-logo.png" width="320" /></a><span><a name='more'></a></span></div><h3 style="text-align: left;"><span style="color: #cc0000;">Ưu điểm của KnockoutJS:</span></h3><p>+ Dễ dàng liên kết các phần tử DOM với data model bằng cú pháp ngắn gọn, dễ đọc (<b>Declarative Bindings</b>)</p><p>+ Khi trạng thái (<b>state</b>) <b>data model </b>của bạn thay đổi, giao diện người dùng của bạn sẽ tự động cập nhật (<b>Automatic UI Refresh</b>)</p><p>+ Thiết lập hoàn toàn các chuỗi quan hệ giữa <b>data model</b>, để chuyển đổi và kết hợp nó (<b>Dependency Tracking</b>).</p><p>+ Nhanh chóng tạo các giao diện người dùng phức tạp, lồng nhau như một <b>hàm</b> trong <b>data model</b> của bạn (<b>Templating</b>)</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6HS1ng93ZSuFhexoH_JpTtFW7H9xzqLd--MNgqc3COtBaBAZ9QhUGiCf9-NaWyLfAiceTEQzYrriXYOI3soJXhPTKw6BkiCjIFFfU2dBGzOLmF1GSChVj_6-bWgeMFjhpGUJ0nCNSJhQPdvLr9ABak8p7Vr3HhrvHaLiiUq6F7LPdn3oS8fNyUejs/s992/KnockoutJS.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="261" data-original-width="992" height="84" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6HS1ng93ZSuFhexoH_JpTtFW7H9xzqLd--MNgqc3COtBaBAZ9QhUGiCf9-NaWyLfAiceTEQzYrriXYOI3soJXhPTKw6BkiCjIFFfU2dBGzOLmF1GSChVj_6-bWgeMFjhpGUJ0nCNSJhQPdvLr9ABak8p7Vr3HhrvHaLiiUq6F7LPdn3oS8fNyUejs/s320/KnockoutJS.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Thêm điểm nữa là: <b><span style="color: #cc0000;">KnockoutJS</span></b> có thể nạp<b> dữ liệu dạng JSON</b> vào <b>data model</b> và trả về <b>dữ liệu dạng JSON</b> rất dễ dàng (data-binding)</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Mình sẽ có bài demo về chủ đề này sau.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><h3 style="text-align: left;"><span style="color: #cc0000;">Cách cài đặt KnockoutJS:</span></h3><p>giống y hệt <a href="http://www.lophocvitinh.com/2017/01/tu-hoc-jquery-co-ban-bai-1-gioi-thieu.html" target="_blank">cài đặt JQuery</a>, ở đây mình cài từ cdnjs cho tiện:</p><p><span style="color: #cc0000; font-family: courier;"><script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout-latest.js"></script></span></p><p>Chú ý: nên dùng kèm <b><a href="http://www.lophocvitinh.com/p/muc-luc-lap-trinh-jquery.html" target="_blank">JQuery</a></b>.</p><p><br /></p><h3 style="text-align: left;"><span style="color: #cc0000;">Bài demo Hello World của KnockoutJS:</span></h3>+ Tạo tập tin <span style="color: #cc0000;">index.html</span><div><span style="color: #cc0000;"><br /></span></div>+ Trong cặp thẻ<span style="color: red;"> <head>...</head></span> chèn đoạn mã sau:<div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9pt;"><span style="color: #e8bf6a;"><script </span><span style="color: #bababa;">src</span><span style="color: #a5c261;">="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout-latest.js"</span><span style="color: #e8bf6a;">></script><br /></span><span style="color: #e8bf6a;"><script </span><span style="color: #bababa;">src</span><span style="color: #a5c261;">="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"</span><span style="color: #e8bf6a;">></script></span></pre>+ Trong cặp thẻ <span style="color: red;"><body>...</body></span> thêm vào đoạn mã sau:</div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "JetBrains Mono", monospace; font-size: 9pt;"><span style="color: #e8bf6a;"><p></span>First name: <span style="color: #e8bf6a;"><input </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">="value: firstName" </span><span style="color: #e8bf6a;">/></p><br /></span><span style="color: #e8bf6a;"><p></span>Last name: <span style="color: #e8bf6a;"><input </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">="value: lastName" </span><span style="color: #e8bf6a;">/></p><br /></span><span style="color: #e8bf6a;"><h2></span>Hello, <span style="color: #e8bf6a;"><span </span><span style="color: #bababa;">data-bind</span><span style="color: #a5c261;">="text: fullName"</span><span style="color: #e8bf6a;">> </span></span>!<span style="color: #e8bf6a;"></h2><br /></span><span style="color: #e8bf6a;"><br /></span><span style="color: #e8bf6a;"><script><br /></span><span style="color: #e8bf6a;"> </span><span style="color: grey;">// Đây là data model<br /></span><span style="color: grey;"> </span><span style="color: #cc7832;">var </span><span style="color: #ffc66d;">ViewModel </span>= <span style="color: #cc7832;">function</span>(first<span style="color: #cc7832;">, </span>last) {<br /> <span style="color: #cc7832;">this</span>.<span style="color: #9876aa;">firstName </span>= ko.observable(first)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> this</span>.<span style="color: #9876aa;">lastName </span>= ko.observable(last)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> this</span>.<span style="color: #9876aa;">fullName </span>= ko.pureComputed(<span style="color: #cc7832;">function</span>() {<br /> <span style="color: grey;">// Knockout tự động lần theo vết của các dependencies. KO nghĩa là Key Observing (quan sát sự thay đổi theo key)<br /></span><span style="color: grey;"> // Nó biết hàm fullName() thay đổi theo firstName và lastName, bỏi vì các biến này đươc gọi khi tính toán fullName.<br /></span><span style="color: grey;"> </span><span style="color: #cc7832;">return this</span>.<span style="color: #9876aa;">firstName</span>() + <span style="color: #6a8759;">" " </span>+ <span style="color: #cc7832;">this</span>.<span style="color: #9876aa;">lastName</span>()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<span style="color: #cc7832;">, this</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span>ko.applyBindings(<span style="color: #cc7832;">new </span><span style="color: #ffc66d;">ViewModel</span>(<span style="color: #6a8759;">"Lophocvitinh.com"</span><span style="color: #cc7832;">, </span><span style="color: #6a8759;">"drM"</span>))<span style="color: #cc7832;">; </span><span style="color: grey;">// Knockout hoạt động nhờ cái này<br /></span><span style="color: #e8bf6a;"></script></span></pre><div><br /></div>Bài tiếp theo : <a href="http://www.lophocvitinh.com/2023/02/demo-ung-dung-gio-hang-shopping-cart-bang-knockoutjs.html">Demo ứng dụng giỏ hàng shopping cart bằng KnockoutJS</a></div><div><br /></div><div style="text-align: right;"><i>Sưu tầm bởi #drM</i></div>drMhttp://www.blogger.com/profile/12231987233431173720noreply@blogger.com0