Thứ Ba, 25 tháng 7, 2023

NHÌN LẠI SỰ NGHIỆP - TẬP 2

 



Mình làm việc tại Fsoft Đà Nẵng trong 2 năm với vai trò Developer của dự án ERP làm cho khách hàng Nhật.

  Sau đó mình tham gia khoá học BrSE nội bộ công ty, học full time với full lương và tốt nghiệp khoá học với bằng JLPT N2. Đây là khoảng thời gian học hành cao độ nhưng có những kỷ niệm cực kỳ vui và đáng nhớ cùng các anh chị trong lớp BrSE khoá 33. Khó mà có được lần thứ 2 được đi học như còn là học sinh sinh viên trong khi đang đi làm như vậy. Mình đã có những kỷ niệm thật tuyệt vời! Nhớ các anh chị và thầy cô ở trung tâm Lapis rất nhiều.

Mùa hè năm đó lễ tốt nghiệp kết thúc với một bữa tiệc nhỏ cùng hoa và những nụ cười.

Sau đó mình quay về công ty tham gia dự án ở Hà Nội với vai trò Tester cho dự án lập trình cho thiết bị điều khiển của Ô tô.

Khoảng thời gian khá ngắn ngủi nhưng cũng kịp checkin Hà Nội, lượn quanh Hồ Tây và lần đầu tiên ăn chả cá Lã Vọng cùng chị em đồng nghiệp.


———-


I worked at Fsoft Da Nang for 2 years as a Developer in the ERP project for Japanese clients. After that, I joined the internal BrSE course of the company, studying full-time with full salary and graduated with JLPT N2 certificate. It was an intense period of learning, but I have fond and memorable memories with my classmates from BrSE class 33. It's not often that one gets the chance to study while working, almost like being a student again. I had some wonderful experiences! I miss my colleagues and teachers at Lapis center very much.


That summer, the graduation ceremony concluded with a small party, flowers, and laughter. Then, I returned to the company to participate in a project in Hanoi as a Tester for programming projects related to automobile control devices. It was a relatively short period, but I managed to explore Hanoi, stroll around West Lake, and had my first taste of Cha Ca La Vong with my fellow colleagues.

Thứ Hai, 24 tháng 7, 2023

NHÌN LẠI SỰ NGHIỆP - TẬP 1

 


Mình là dân IT - một kỹ sư lập trình phần mềm. Sau khi tốt nghiệp Đại học thì mình đi làm luôn cho công ty phần mềm ở Đà Nẵng. Khi còn năm cuối đại học mình vừa làm khoá luận vừa tham gia khoá fresher của công ty FSoft Đà Nẵng luôn, khoa công nghệ thông tin trường mình cho phép những sinh viên được làm khoá luận có thể thực tập tại khoa nhưng mình xông pha ra Đà Nẵng thực tập với khoá thực chiến luôn, vậy nên giai đoạn đó với mình khá vất vả và áp lực. Tháng 12/2013 mình tốt nghiệp, tháng 1/2014 mình bắt đầu sự nghiệp IT của mình.

I am a software engineer. After graduating from university, I immediately started working for a software company in Da Nang. During my final year at university, I was simultaneously working on my thesis and participating in a fresher course at FSoft Company in Da Nang. My university's IT department allowed students working on their thesis to do an internship within the department, but I decided to challenge myself and intern at FSoft, so that period was quite tough and demanding for me. In December 2013, I graduated, and in January 2014, I began my IT career.

Thứ Năm, 20 tháng 7, 2023

10 Thủ thuật Tối ưu hóa Windows để Tăng Hiệu suất Máy tính



Nếu bạn thường xuyên sử dụng máy tính và cảm thấy hiệu suất của nó không đủ nhanh và mượt mà như trước, hãy đừng lo lắng. Trong bài blog này, chúng ta sẽ khám phá 10 thủ thuật đơn giản và hiệu quả để tối ưu hóa hệ điều hành Windows và giúp máy tính của bạn hoạt động trơn tru hơn.


1. Tắt các chương trình tự khởi động: Hãy kiểm tra danh sách các chương trình tự động chạy cùng Windows khi khởi động và tắt những chương trình không cần thiết, như các ứng dụng chạy nền, để giảm tải cho máy tính.


2. Xóa các tập tin tạm thời: Sử dụng tính năng "Disk Cleanup" để loại bỏ các tập tin tạm thời và rác trên ổ cứng, giúp giải phóng không gian lưu trữ và tăng hiệu suất máy tính.


3. Cập nhật Driver: Hãy đảm bảo bạn cập nhật các trình điều khiển (Driver) mới nhất cho các thành phần phần cứng trong máy tính, như card đồ họa và card âm thanh, để tối ưu hóa hoạt động của chúng.


4. Sử dụng Defragmenter: Chạy công cụ Defragmenter để tối ưu hóa việc sắp xếp dữ liệu trên ổ cứng, giúp truy cập dữ liệu nhanh hơn và tăng tốc độ làm việc của máy tính.


5. Tắt hiệu ứng đồ họa: Vào cài đặt hiệu ứng đồ họa của Windows và tắt các hiệu ứng không cần thiết để giảm tải cho hệ thống.


6. Xóa các ứng dụng không cần thiết: Gỡ bỏ các ứng dụng không cần thiết và không sử dụng thường xuyên để giải phóng không gian lưu trữ và giảm tải cho máy tính.


7. Sử dụng ổ SSD: Nếu có điều kiện, nâng cấp ổ cứng lưu trữ sang ổ SSD sẽ giúp tăng tốc độ truy xuất dữ liệu và làm cho máy tính nhanh hơn đáng kể.


8. Chỉnh cài đặt năng lượng: Điều chỉnh cài đặt quản lý năng lượng để tiết kiệm pin và tối ưu hóa hiệu suất máy tính.


9. Tắt các dịch vụ không cần thiết: Tắt hoặc tạm ngưng một số dịch vụ không cần thiết trong Windows để giảm tải cho hệ thống.


10. Dọn dẹp ổ đĩa: Thực hiện dọn dẹp ổ đĩa và xử lý các lỗi hệ thống thường xuyên để duy trì máy tính ở trạng thái tốt nhất.


Kết luận:

Tối ưu hóa Windows không chỉ giúp máy tính của bạn hoạt động nhanh hơn mà còn kéo dài tuổi thọ và hiệu suất của máy tính.

Chúc các bạn thành công!

Thứ Ba, 27 tháng 6, 2023

Haizz! Mệt gồi! Có những ngày không muốn làm gì cả


Cô đơn trên sofa, cho một ly cô ca, a á a a á a à….

Bạn đã từng trải qua những ngày hoàn toàn không muốn làm gì chưa? Cảm giác lười biếng á. Nhưng đó cũng là những trải nghiệm đáng nhớ và đôi chút hài hước trong những ngày ấy đúng không?


"Haizz! Mệt gòi!" - Khi lười biếng tràn đầy cảm xúc:

   - Thôi thì hôm nay là ngày để tôi tự thưởng cho mình những giờ phút lười biếng tuyệt đỉnh. C'mon!


"Ách! Không làm gì cả, ngày hôm nay làm sao mà qua được!"

   - Trời ơi, tôi thà nằm im một chỗ còn hơn là phải đối mặt với công việc. Help me!


"Nghỉ ngơi là vàng!"

   - Những ngày không muốn làm gì cả cũng có ý nghĩa của nó. Hãy để tôi tận hưởng khoảnh khắc này mà không hối tiếc. Yay! Yay! Yayyyyyyyy!


"Kệ tui, hứ xí!"

   - Lười biếng không phải là tội ác, mà là một cách để cân bằng cuộc sống. Thả lỏng và tận hưởng! Woo-hoo!


Những ngày không muốn làm gì cả đôi khi đáng giá hơn bất cứ điều gì khác. Hãy cho mình những khoảnh khắc thư giãn và cảm nhận niềm vui trong sự lười biếng. Vì cuộc sống cần có những lúc không làm gì cả để giữ cân bằng và cảm nhận hạnh phúc! Yeah!

A Random Walk Down Wall Street



Ngày xưa lúc còn tập tành, mình đã lướt sóng theo sở thích và kết quả là bị sóng đập tơi bời hoa lá hẹ. Và đây là một cuốn sách hay đối với mình.

Cuốn sách"A Random Walk Down Wall Street" (Một Cuộc Đi Bộ Ngẫu Nhiên Trên Phố Wall) của Burton G. Malkiel là một tác phẩm kinh điển về đầu tư chứng khoán. Dưới đây là một tóm tắt những ý hay nhất của cuốn sách:


1. Thị trường chứng khoán không thể dự đoán được: Tác giả đề cao quan điểm rằng thị trường chứng khoán là ngẫu nhiên và không thể đoán trước được xu hướng hay tìm ra cổ phiếu "hot". Việc cố gắng dự đoán thị trường thường chỉ mang lại kết quả không chính xác và gây thua lỗ.


2. Đầu tư theo chiến lược cổ tức: Cuốn sách khuyến nghị đầu tư dựa trên việc chọn những công ty có lợi nhuận ổn định và cung cấp cổ tức ổn định trong thời gian dài. Tác giả cho rằng việc tái đầu tư cổ tức là một cách tạo ra lợi nhuận bền vững và đảm bảo trong đầu tư chứng khoán.


3. Đa dạng hóa đầu tư: Malkiel khuyến nghị việc phân bổ danh mục đầu tư vào nhiều ngành công nghiệp và loại tài sản khác nhau để giảm thiểu rủi ro. Đa dạng hóa giúp ngăn chặn tổn thất lớn khi một ngành hoặc một cổ phiếu bị ảnh hưởng tiêu cực.


4. Chi phí đầu tư ảnh hưởng đáng kể: Tác giả nhấn mạnh rằng việc giảm thiểu chi phí đầu tư là rất quan trọng. Các khoản phí giao dịch, quản lý quỹ và lựa chọn cổ phiếu không hiệu quả có thể làm giảm lợi nhuận cuối cùng. Tìm hiểu và chọn các tùy chọn đầu tư với chi phí hợp lý là một yếu tố quan trọng trong thành công đầu tư.


5. Đầu tư theo chiến lược mua và giữ: Cuốn sách khuyến khích đầu tư dài hạn và không can thiệp quá nhiều vào thị trường. Việc mua cổ phiếu của các công ty lớn, ổn định và giữ chúng trong thời gian dài có thể mang lại lợi nhuận đáng kể.


6. Hãy tránh việc theo đuổi các "số 1" và "hot stock": Tác giả khuyến nghị không nên dùng thời gian và năng lượng để tìm kiếm những cổ phiếu "số 1" hoặc "hot" hiện tại. Thay vào đó, hãy tập trung vào việc xây dựng một danh mục đầu tư cân đối và chất lượng dựa trên các tiêu chí bền vững và phù hợp với mục tiêu đầu tư của bạn.


7. Sử dụng quỹ đầu tư chứng khoán: Malkiel đề xuất việc sử dụng quỹ đầu tư chứng khoán (index funds) thay vì cố gắng chọn lựa các cổ phiếu riêng lẻ. Quỹ đầu tư chứng khoán có thể mang lại lợi nhuận tương đương với chỉ số thị trường và có chi phí thấp hơn so với quỹ quản lý chuyên nghiệp.


8. Hiểu rõ về tâm lý đám đông: Cuốn sách nhấn mạnh tầm quan trọng của việc hiểu và đối phó với tâm lý đám đông trên thị trường chứng khoán. Sự ảnh hưởng của sự hoảng loạn hay sự quá phím trên thị trường có thể tạo ra những cơ hội hoặc rủi ro cho nhà đầu tư thông minh.


9. Hãy tập trung vào việc nắm vững kiến thức và giáo dục đầu tư: Để trở thành một nhà đầu tư thành công, Malkiel khuyến nghị tìm hiểu, đọc sách, theo dõi thông tin thị trường và liên tục cập nhật kiến thức về đầu tư. Sự hiểu biết sâu sắc và quá trình học tập liên tục sẽ giúp bạn đưa ra những quyết định đầu tư thông minh và tự tin.


 Xin lỗi vì sự gián đoạn trước đó. Dưới đây là tiếp tục tóm tắt những ý hay nhất của cuốn sách "A Random Walk Down Wall Street":


10. Luôn đặt mục tiêu lâu dài và kiên nhẫn: Cuối cùng, tác giả nhấn mạnh rằng việc đầu tư chứng khoán là một cuộc hành trình dài hơi. Hãy đặt mục tiêu lâu dài, tuân thủ kế hoạch đầu tư và kiên nhẫn đối mặt với biến động của thị trường. Tránh những phản ứng cảm xúc đột ngột dựa trên sự rung cảm ngắn hạn và tập trung vào việc xây dựng một cơ sở đầu tư vững chắc theo thời gian.


Xin lỗi vì sự gián đoạn trước đó. Dưới đây là tiếp tục tóm tắt những ý hay nhất của cuốn sách "A Random Walk Down Wall Street":


10. Luôn đặt mục tiêu lâu dài và kiên nhẫn: Cuối cùng, tác giả nhấn mạnh rằng việc đầu tư chứng khoán là một cuộc hành trình dài hơi. Hãy đặt mục tiêu lâu dài, tuân thủ kế hoạch đầu tư và kiên nhẫn đối mặt với biến động của thị trường. Tránh những phản ứng cảm xúc đột ngột dựa trên sự rung cảm ngắn hạn và tập trung vào việc xây dựng một cơ sở đầu tư vững chắc theo thời gian.


Cuốn sách "A Random Walk Down Wall Street" cung cấp cho người đọc một cái nhìn toàn diện về đầu tư chứng khoán và những nguyên tắc cơ bản để xây dựng một chiến lược đầu tư thông minh. Bằng cách tuân thủ những nguyên tắc này, bạn có thể cải thiện khả năng đầu tư của mình và gia tăng tiềm năng sinh lợi nhuận trong thị trường chứng khoán.

Thứ Hai, 26 tháng 6, 2023

Design Patterns: Elements of Reusable Object-Oriented Software




Design Patterns: Elements of Reusable Object-Oriented Software"

Tác giả: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (Gang of Four)

Đây là một trong những cuốn sách tôi tâm đắc trong tủ sách lập trình của mình. Tôi đọc cuốn này sau cuốn Clean Code và phải đọc đi đọc lại, vừa đọc vừa thực hành nhiều thì mới vận được “nội công thâm hậu” từ cuốn bí kíp này. Dân lập trình chuyên nghiệp chắc hẳn không thể thiếu Design Patterns. 


Dưới đây là một ví dụ thực tế dễ hiểu cho một số mẫu thiết kế thường gặp:


1. Singleton Pattern:

   Ví dụ: Lớp DatabaseConnectionManager quản lý kết nối đến cơ sở dữ liệu. Với Singleton Pattern, chúng ta có thể đảm bảo rằng chỉ có một đối tượng DatabaseConnectionManager được tạo ra và mọi yêu cầu kết nối sẽ sử dụng đối tượng duy nhất này.


2. Factory Pattern:

   Ví dụ: Lớp ShapeFactory tạo ra các đối tượng hình học như hình vuông (Square), hình chữ nhật (Rectangle) và hình tròn (Circle) dựa trên thông tin đầu vào. Bằng cách sử dụng Factory Pattern, chúng ta có thể tạo ra các đối tượng hình học mà không cần biết chi tiết về cách chúng được tạo ra.


3. Observer Pattern:

   Ví dụ: Hệ thống thông báo sự kiện đăng ký. Khi người dùng đăng ký thông tin, các thành phần quan sát (observers) như gửi email, gửi thông báo trên ứng dụng di động và cập nhật trên giao diện người dùng sẽ được thông báo và cập nhật dựa trên thông tin đăng ký.


4. Strategy Pattern:

   Ví dụ: Bộ lọc ảnh trong ứng dụng xử lý ảnh. Chúng ta có thể áp dụng một loạt các thuật toán bộ lọc như Lọc Màu Xám (Grayscale), Lọc Đỏ (Red Filter), Lọc Xanh (Blue Filter) bằng cách sử dụng Strategy Pattern. Mỗi thuật toán bộ lọc được triển khai trong một lớp riêng biệt và có thể được chọn linh hoạt để áp dụng vào ảnh.


5. Decorator Pattern:

   Ví dụ: Lớp OrderDecorator trong một hệ thống đặt hàng. Chúng ta có thể thêm các tính năng bổ sung như quà tặng, gói quà, hay dịch vụ giao hàng nhanh bằng cách sử dụng Decorator Pattern. Mỗi tính năng bổ sung sẽ được triển khai trong một lớp decorator và có thể được áp dụng linh hoạt cho một đơn hàng cụ thể.

Hy vọng rằng cuốn sách này sẽ cung cấp cho bạn kiến thức thú vị và hữu ích về mẫu thiết kế trong lập trình.

Chủ Nhật, 25 tháng 6, 2023

Hành trình lần đầu làm mẹ

 



Đau đẻ 2 ngày trời vật vã, nước mắt và cảm xúc đan xen trong lòng. Đó là những kỷ niệm đầu tiên khi trở thành một người mẹ. Con gái của mình, Misa, đã chào đời và mở ra một cuộc sống mới đầy hạnh phúc và thách thức.


Ngay từ những ngày đầu tiên, mình đã đối mặt với nhiều khó khăn và thử thách. Misa bị dị ứng với đạm sữa bò, thịt gà, trứng và cà tím. Những cơn nôn thốc, nôn tháo và nhiều lần mình phải đưa Misa đến bệnh viện cấp cứu vì tình trạng khẩn cấp. Đêm ngày mình bóp ngực và hút sữa xuyên đêm vì bị cương sữa. Mình còn phải đối mặt với việc con cắn ti mẹ khi đã mọc răng, khiến mình cảm thấy đau đớn vô cùng mỗi lần cho con ti.


Một trong những thử thách lớn nhất mà mình đã trải qua là khi con gái mình phải chịu hành hạ vì bị viêm phổi. Con sốt cao liên tục 8 ngày mãi cho đến khi vào viện. Con phải điều trị truyền kháng sinh trong một tuần tại bệnh viện. Khi đó con chỉ mới 9 tháng tuổi. Những ngày đó, nỗi lo lắng tràn đầy trong tâm trí của mình. Những ngày nghẹt thở, nhiều nước mắt, mất sữa, mình cũng ốm theo con luôn, sốt ho dữ dội, 2 mắt đỏ lên, trắng đêm…


Trải qua hơn một năm rưỡi, mình phải ngủ nghiêng một bên. Giấc ngủ trở nên quý giá và mình thường gặp khó khăn trong việc nghỉ ngơi.


Nhưng dù có bao nhiêu khó khăn, những tháng ngày đầy mệt mỏi và thử thách, mình không bao giờ thôi cảm ơn Chúa vì đã ban cho mình một thiên thần đáng yêu vô cùng, một sản nghiệp vô giá. Những giọt nước mắt đã trở thành niềm vui và tự hào. Mỗi lần nhìn Misa mỉm cười và khỏe mạnh, mình biết rằng tất cả những vất vả đều xứng đáng. Đó là những khoảnh khắc đáng trân trọng và không thể quên trong cuộc sống của mình.


Đôi khi, khi mình nhìn lại hành trình làm mẹ, mình thấy mình đã trưởng thành và thay đổi nhiều. Misa đã làm mình trở nên mạnh mẽ hơn, kiên nhẫn hơn và biết trân trọng những giây phút hơi ngại nói lên những cảm xúc sâu thẳm này, nhưng mình muốn chia sẻ với các bà mẹ khác rằng không có gì sai khi chúng ta cảm thấy mệt mỏi hay bất lực. Có những ngày mình cảm thấy bị áp lực và không biết phải làm gì để đối mặt với mọi thứ. Nhưng trong những khoảnh khắc như vậy, khi con gái mình mỉm cười hay ôm lấy mình, mình nhận ra rằng tình yêu và sự hi sinh là những gì quan trọng nhất!


Cố lên! Fighting!!

Thứ Bảy, 24 tháng 6, 2023

Misa - Điểm tựa yêu thương và sự tự hào của Mama

 Misa, hay thân thương được gọi là Sa, là tia sáng và niềm tự hào của mama. Mỗi ngày, con mang đến những khoảnh khắc vui vẻ và hạnh phúc cho gia đình chúng ta. Khi papa chọc Sa cười, trái tim mama đầy hạnh phúc.



Mama luôn cảm thấy niềm vui tràn đầy khi nhìn thấy Sa cười tươi. Chúng ta đã tạo nên những kỷ niệm đáng nhớ, làm cho cuộc sống của chúng ta trở nên phong phú và ý nghĩa hơn.

Trong những thử thách và khó khăn của cuộc sống, tình yêu và sự hiện diện của Sa là nguồn động viên và sức mạnh lớn lao. Chúng ta vượt qua mọi khó khăn cùng nhau.

Sa, con yêu thương của mama, hãy luôn giữ nụ cười và niềm tin trong trái tim. Mama sẽ luôn ở bên cạnh con, yêu thương và chăm sóc con cho đến khi nào mama không thể làm điều đó nữa. Con là niềm tự hào và niềm vui lớn nhất của cả nhà. Hãy luôn nhớ rằng ngày con ra đời là ngày một ngôi sao xuống trần gian :)


Yêu thương vô điều kiện,

Mama của Sa

Clean Code: A Handbook of Agile Software Craftsmanship



Clean Code: A Handbook of Agile Software Craftsmanship

Tác giả: Robert C. Martin (Uncle Bob)

Ngày mới chân ướt chân ráo sang Nhật, tôi đã được một anh đồng nghiệp giới thiệu cho một cuốn sách rất hay. Cuốn sách này đã đồng hành cùng tôi trong sự nghiệp lập trình của mình. Đó chính là Clean Code.

"Clean Code" là một cuốn sách kinh điển trong lĩnh vực lập trình. Tác giả Robert C. Martin, hay được gọi là Uncle Bob, đưa ra những nguyên tắc và phương pháp để viết mã code sạch, dễ đọc, dễ hiểu và dễ bảo trì.


Cuốn sách tập trung vào các nguyên tắc thiết kế và các kỹ thuật lập trình chuyên nghiệp, nhằm giúp các lập trình viên cải thiện chất lượng mã nguồn và làm việc hiệu quả hơn trong các dự án phần mềm. Nó bao gồm nhiều ví dụ cụ thể và hướng dẫn chi tiết để minh họa các khía cạnh của mã code sạch.


"Clean Code" là một cuốn sách cần đọc cho bất kỳ lập trình viên nào muốn nâng cao kỹ năng lập trình của mình và trở thành một nhà phát triển phần mềm chuyên nghiệp. Nó không chỉ giúp bạn viết mã code tốt hơn, mà còn giúp bạn hiểu và đáp ứng tốt hơn với yêu cầu và thay đổi trong quá trình phát triển phần mềm.


Dưới đây là một tóm tắt ngắn gọn về những ý hay trong cuốn sách "Clean Code":


1. Mã code nên được viết sao cho dễ đọc, dễ hiểu và dễ bảo trì.

2. Đặt tên biến, hàm và lớp một cách rõ ràng và mô tả chính xác chức năng của chúng.

3. Hạn chế kích thước của các phương thức và lớp, đảm bảo chúng chỉ thực hiện một nhiệm vụ duy nhất.

4. Tuân thủ các nguyên tắc thiết kế như SOLID để xây dựng mã code linh hoạt và dễ mở rộng.

5. Áp dụng các kỹ thuật tái cấu trúc để giảm độ phức tạp và tăng tính tái sử dụng của mã code.

6. Thực hiện các bài kiểm tra và đảm bảo tính ổn định của mã code thông qua việc sử dụng kiểm thử đơn vị và kiểm thử tự động.

7. Đọc và hiểu mã code hiện có trước khi thay đổi hoặc bảo trì, và luôn tuân thủ quy tắc "đừng làm rối mã code hiện có".

8. Đặt chất lượng mã code lên hàng đầu và không chấp nhận sự cẩu thả hay việc bỏ qua các quy tắc lập trình.

Hy vọng rằng cuốn sách này sẽ giúp bạn trở thành một lập trình viên tốt hơn và phát triển các phần mềm chất lượng.

Thứ Sáu, 23 tháng 6, 2023

[Java] Tìm hiểu về việc sắp xếp mảng theo thứ tự tăng dần



Trong lĩnh vực lập trình, sắp xếp mảng là một chủ đề quan trọng và thú vị. Trong bài viết này, chúng ta sẽ phân tích một đoạn code Java đơn giản nhưng mạnh mẽ, giúp chúng ta hiểu cách sắp xếp một mảng theo thứ tự tăng dần.


Đoạn code sau đây thực hiện thuật toán sắp xếp nổi bọt (bubble sort) để sắp xếp một mảng:


public class BubbleSort {

    public static void bubbleSort(int[] arr) {

        int n = arr.length;

        for (int i = 0; i < n - 1; i++) {

            for (int j = 0; j < n - i - 1; j++) {

                if (arr[j] > arr[j + 1]) {

                    // Hoán đổi hai phần tử

                    int temp = arr[j];

                    arr[j] = arr[j + 1];

                    arr[j + 1] = temp;

                }

            }

        }

    }


    public static void main(String[] args) {

        int[] arr = {64, 34, 25, 12, 22, 11, 90};

        bubbleSort(arr);

        System.out.println("Mảng sau khi sắp xếp:");

        for (int i = 0; i < arr.length; i++) {

            System.out.print(arr[i] + " ");

        }

    }

}

```


Trong đoạn code trên, chúng ta định nghĩa một lớp `BubbleSort` với phương thức `bubbleSort` để thực hiện thuật toán sắp xếp nổi bọt. Thuật toán này lặp qua mảng nhiều lần, so sánh các phần tử kề nhau và hoán đổi chúng nếu cần. Quá trình này được thực hiện cho đến khi mảng được sắp xếp hoàn toàn.


Phương thức `main` trong đoạn code chứa một mảng chưa sắp xếp và gọi phương thức `bubbleSort` để sắp xếp mảng đó. Sau đó, chúng ta in ra mảng sau khi đã sắp xếp.


Thuật toán sắp xếp nổi bọt có độ phức tạp thời gian là O(n^2), tuy nhiên, nó dễ hiểu và đơn giản để triển khai.Đoạn code trên là một ví dụ đơn giản nhưng mạnh mẽ về thuật toán sắp xếp nổi bọt. Dưới đây là một số điểm quan trọng để hiểu về đoạn code này:


1. Hai vòng lặp lồng nhau: Đoạn code sử dụng hai vòng lặp lồng nhau để duyệt qua mảng và so sánh các phần tử. Vòng lặp bên ngoài (`for i`) duyệt qua mảng từ phần tử đầu tiên đến phần tử thứ hai từ cuối (vì sau mỗi lần lặp, phần tử cuối cùng sẽ là phần tử lớn nhất đã được đặt đúng vị trí). Vòng lặp bên trong (`for j`) so sánh các phần tử kề nhau và hoán đổi chúng nếu cần.


2. Điều kiện so sánh và hoán đổi: Trong vòng lặp bên trong, đoạn code kiểm tra xem phần tử hiện tại (`arr[j]`) có lớn hơn phần tử tiếp theo (`arr[j + 1]`) hay không. Nếu đúng, hai phần tử này sẽ được hoán đổi vị trí. Điều này đảm bảo rằng phần tử lớn hơn sẽ di chuyển dần về cuối mảng.


3. Độ phức tạp thời gian: Thuật toán sắp xếp nổi bọt có độ phức tạp thời gian là O(n^2), với n là số lượng phần tử trong mảng. Điều này có nghĩa rằng thời gian thực hiện sẽ tăng theo bình phương của số lượng phần tử. Điều này làm cho thuật toán không hiệu quả với các mảng lớn.


4. Đầu vào và kết quả: Đoạn code cung cấp một mảng chưa sắp xếp và sau khi sử dụng phương thức `bubbleSort`, mảng được sắp xếp theo thứ tự tăng dần. Kết quả được in ra màn hình để kiểm tra.


Trên đây là phân tích của đoạn code sắp xếp mảng bằng thuật toán nổi bọt trong Java. Đoạn code này cho chúng ta cái nhìn cơ bản về cách sắp xếp một mảng theo thứ tự tăng dần.



Nếu bạn muốn khám phá sâu hơn về thuật toán sắp xếp nổi bọt và các thuật toán sắp xếp khác, dưới đây là một số điều bạn có thể tìm hiểu:


1. Tối ưu hóa thuật toán: Đoạn code sắp xếp nổi bọt trong ví dụ trên có thể được tối ưu hóa để giảm số lần so sánh và hoán đổi phần tử. Bạn có thể tìm hiểu về các cách tối ưu hóa như cắt bớt số lần lặp, kiểm tra xem mảng đã được sắp xếp hay chưa để kết thúc sớm hơn.


2. Các thuật toán sắp xếp khác: Ngoài thuật toán sắp xếp nổi bọt, có nhiều thuật toán sắp xếp khác có hiệu suất tốt hơn, chẳng hạn như sắp xếp chèn (insertion sort), sắp xếp chọn (selection sort), sắp xếp nhanh (quick sort), và sắp xếp trộn (merge sort). Mỗi thuật toán có cách tiếp cận và độ phức tạp thời gian khác nhau, và nói chung, các thuật toán nhanh hơn sẽ được ưu tiên trong các tình huống lớn hơn.


3. Sử dụng Collection Framework trong Java: Java cung cấp sẵn một số cấu trúc dữ liệu và giao diện sắp xếp trong Collection Framework như `ArrayList`, `LinkedList`, `TreeSet` và `TreeMap`. Các cấu trúc này có khả năng tự động sắp xếp các phần tử và cho phép bạn thực hiện các thao tác sắp xếp một cách dễ dàng.


4. Độ phức tạp thời gian của các thuật toán sắp xếp: Hiểu về độ phức tạp thời gian của các thuật toán sắp xếp là quan trọng để chọn thuật toán phù hợp cho vấn đề của bạn. Ngoài độ phức tạp thời gian O(n^2) của sắp xếp nổi bọt, bạn cũng có thể tìm hiểu về thuật toán sắp xếp O(n log n) như quick sort và merge sort.


Hy vọng rằng bài viết này đã giúp bạn có cái nhìn tổng quan về thuật toán sắp xếp nổi bọt và khám phá thêm về các thuật toán sắp xếp khác trong Java. 

Thứ Sáu, 31 tháng 7, 2020

Hành trình kỷ niệm cùng Anime Nhật Bản

 


Thời đại học là thời kỳ của những kỷ niệm đáng nhớ và những người bạn đặc biệt. Cùng với mấy đứa bạn thân, tôi đã khám phá thế giới phong phú và thú vị của anime Nhật Bản. Những bộ phim hoạt hình này đã trở thành một phần không thể thiếu trong cuộc sống của chúng tôi. Hôm nay, hãy cùng nhau hồi tưởng về những kỷ niệm ngọt ngào và khám phá những tác phẩm anime nổi tiếng mà chúng tôi đã yêu thích.


1. "Spirit Away":

Đây là bộ phim hoạt hình Nhật Bản đầu tiên tôi từng xem. Câu chuyện về cuộc phiêu lưu của cô bé Chihiro trong thế giới linh hồn đã ghi dấu trong trái tim tôi. Đồ hoạ tuyệt đẹp và cốt truyện kỳ ảo đã khiến tôi cảm thấy thật sự hấp dẫn và đặc biệt.


2. "Your Name":

Bộ phim này kể về câu chuyện tình yêu giữa hai người trẻ tuổi, Taki và Mitsuha, mà tình yêu của họ được liên kết bởi một hiện tượng kỳ lạ. Với đồ hoạ tuyệt đẹp và câu chuyện xúc động, "Your Name" đã chinh phục trái tim của rất nhiều người và trở thành một trong những tác phẩm anime nổi tiếng nhất.


3. "Attack on Titan":

Bộ phim này mang đến một thế giới tưởng tượng đầy kịch tính, nơi con người chiến đấu chống lại những sinh vật khổng lồ có tên là Titans. Với cốt truyện gây căng thẳng và hình ảnh đậm chất hành động, "Attack on Titan" đã thu hút sự quan tâm của rất nhiều khán giả trên toàn thế giới.


"Studio Ghibli"

Không thể không nhắc đến hãng phim hoạt hình nổi tiếng Studio Ghibli, với những tác phẩm kinh điển như "My Neighbor Totoro", "Princess Mononoke", và "Spirited Away". Các bộ phim của Studio Ghibli mang đến không chỉ những câu chuyện tuyệt vời mà còn cảm xúc sâu lắng về tình người, tự nhiên và môi trường. Studio Ghibli đã tạo ra những tác phẩm đầy màu sắc và tình cảm, làm say đắm hàng triệu trái tim trên khắp thế giới.


Nhớ thật! Giờ đây, bọn tui đã trưởng thành và mỗi người đều đã có gia đình riêng, có lẽ không còn cơ hội ngồi chung xem phim hoạt hình như trước nữa. Nhưng những kỷ niệm ấy vẫn luôn ấm áp trong lòng chúng tui. Xin chúc mỗi đứa đạt được thành công và hạnh phúc trong cuộc sống dù ở bất kỳ nơi nào. Hãy luôn nhớ nhau và giữ kỷ niệm đáng yêu về những ngày thơ ấu đầy màu sắc và niềm vui. Anime Nhật Bản đã mang đến cho chúng tui nhiều niềm vui và kỷ niệm đáng nhớ, và nó sẽ mãi là một phần không thể thiếu trong cuộc sống của chúng ta.

Thứ Sáu, 27 tháng 9, 2019

Một Ngày Tràn Đầy Niềm Vui





 Hôm nay, là một ngày đặc biệt trong cuộc sống của tôi - một ngày trôi qua thật nhiều niềm vui.


Buổi sáng, khi tôi mở cửa sổ, ánh nắng mặt trời ấm áp chào đón tôi bằng những tia sáng lung linh. Tôi cảm nhận được sự tươi mới và hi vọng trong không khí. Đó là một bắt đầu hoàn hảo cho một ngày đầy niềm vui.


Đầu tiên, tôi đã có một buổi sáng thú vị tại công việc. Cùng đồng nghiệp, chúng tôi đã hoàn thành dự án lớn mà đã làm việc cùng nhau trong thời gian dài. Cảm giác hoàn thành nhiệm vụ và thành công đã tràn đầy niềm vui và động lực cho chúng tôi.


Trưa nay, tôi đã gặp lại nhóm bạn thân của mình. Chúng tôi đã cùng nhau đi ăn trưa và chia sẻ những câu chuyện, cười đùa và gặp gỡ sau một thời gian dài xa cách. Tình bạn và sự gắn kết này mang đến cho tôi niềm vui và sự cảm nhận rằng luôn có những người bạn đáng tin cậy bên cạnh.


Buổi chiều, tôi quyết định dành thời gian cho bản thân. Tôi đi dạo quanh công viên, ngắm nhìn những đóa hoa tươi rực rỡ và thả mình vào không gian yên bình. Cảm giác hòa mình vào thiên nhiên và thư giãn giúp tôi cảm nhận thêm niềm vui đơn giản trong cuộc sống.


Cuối cùng, buổi tối, tôi đã tổ chức một bữa tiệc nhỏ tại nhà với gia đình và người thân yêu. Chúng tôi đã thưởng thức những món ăn ngon, chia sẻ những câu chuyện và tạo ra những kỷ niệm đáng nhớ. Sự ấm áp và tình thân gia đình đã tạo nên không khí hạnh phúc và niềm vui thật sự.



Ngày hôm nay đã kết thúc, và tôi không thể không cảm nhận được sự biết ơn với một ngày tràn đầy niềm vui như vậy. Mỗi khoảnh khắc đều đáng quý và đáng nhớ. Không biết ngày mai sẽ ra sao, nhưng điều quan trọng là hãy cảm nhận và trân trọng những niềm vui nhỏ bé trong cuộc sống hàng ngày.


Đó là một ngày trôi qua thật nhiều niềm vui của tôi. Hy vọng bài viết này đã mang đến cho bạn một chút lạc quan và cảm nhận về những niềm vui trong cuộc sống. Hãy trân trọng những khoảnh khắc nhỏ bé và tìm thấy niềm vui ở những điều đơn giản xung quanh bạn!


Chủ Nhật, 31 tháng 3, 2019

Hôm nay là thứ 22222

Phố cảng yokohama buổi sáng từ tầng 9, woa!

Thích cái khung cảnh này quá!

Nhìn phát rồi vô làm thôi.✌



Thứ Năm, 24 tháng 1, 2019

Lập trình Java Spring: Xây dựng ứng dụng web mạnh mẽ và linh hoạt



 Introduction:

Trong thời đại công nghệ phát triển mạnh mẽ, việc xây dựng các ứng dụng web chất lượng cao đòi hỏi sự linh hoạt và hiệu suất tốt. Trong bài viết này, chúng ta sẽ khám phá về Java Spring - một framework phát triển ứng dụng Java mạnh mẽ và phổ biến. Chúng ta sẽ khám phá các khái niệm cơ bản của Spring, kiến trúc ứng dụng, phát triển ứng dụng web, bảo mật và cơ hội nghề nghiệp trong lĩnh vực lập trình Java Spring.


1. Giới thiệu về Java Spring:

Java Spring là một framework phát triển ứng dụng Java mạnh mẽ và phổ biến. Với sự hỗ trợ của Spring, việc xây dựng các ứng dụng web trở nên dễ dàng hơn và giảm thiểu sự phức tạp của việc quản lý mã nguồn. Spring cung cấp một cách tiếp cận hiệu quả để phát triển các ứng dụng web có khả năng mở rộng và linh hoạt.


2. Khái niệm cơ bản của Java Spring:

- Inversion of Control (IoC): Giải thích khái niệm IoC và cách nó giúp giảm sự phụ thuộc giữa các thành phần trong ứng dụng.

- Dependency Injection (DI): Trình bày về DI và cách nó cho phép chúng ta quản lý các phụ thuộc và tái sử dụng mã nguồn một cách linh hoạt.

- Aspect-Oriented Programming (AOP): Mô tả AOP và cách nó giúp chúng ta xử lý các vấn đề gắn kết chung như ghi nhật ký, kiểm tra ngoại lệ và phân quyền.


3. Kiến trúc ứng dụng Spring:

Trình bày về kiến trúc tổng quan của một ứng dụng Spring, bao gồm các lớp Controller, Service và Repository. Giải thích cách các thành phần này tương tác với nhau thông qua Dependency Injection Container của Spring.


4. Phát triển ứng dụng web với Java Spring:

- Giới thiệu về kiến trúc MVC (Model-View-Controller) của Spring và cách nó giúp chia tách logic và giao diện người dùng.

- Sử dụng Spring Boot để tạo nhanh chóng các ứng dụng


5. Phát triển ứng dụng web với Java Spring (tiếp):

- Hướng dẫn sử dụng Spring MVC để xây dựng các controller và xử lý các yêu cầu từ phía người dùng.

- Giải thích cách sử dụng Spring Data để tương tác với cơ sở dữ liệu và thực hiện các thao tác CRUD (Create, Read, Update, Delete).

- Mô tả cách xây dựng RESTful API sử dụng Spring và cách nó tạo ra các endpoint để truy cập và tương tác với dữ liệu.


6. Bảo mật ứng dụng với Spring Security:

- Giới thiệu về Spring Security và vai trò quan trọng của nó trong bảo vệ ứng dụng web.

- Hướng dẫn cấu hình Spring Security để xác thực người dùng và quản lý vai trò và quyền hạn trong hệ thống.

- Trình bày về cách Spring Security giúp bảo vệ chống lại các cuộc tấn công thông qua cơ chế xác thực và phân quyền.


7. Lợi ích và cơ hội nghề nghiệp của lập trình Java Spring:

- Nêu rõ các lợi ích của việc sử dụng Java Spring trong việc phát triển ứng dụng web, như khả năng tái sử dụng mã nguồn, quản lý phụ thuộc và tăng cường hiệu suất ứng dụng.

- Đề cập đến sự phát triển nhanh chóng của lĩnh vực Java Spring và cơ hội nghề nghiệp mở ra cho lập trình viên. Tính đến năm 2023, lĩnh vực Java Spring vẫn còn rất tiềm năng và đang thu hút sự quan tâm của các công ty công nghệ hàng đầu.


Kết luận:

Trên đây là một cái nhìn tổng quan về lập trình Java Spring và cách nó đóng góp vào việc xây dựng các ứng dụng web mạnh mẽ và linh hoạt. Từ việc tìm hiểu các khái niệm cơ bản của Spring, phát triển ứng dụng web, đến bảo mật và cơ hội nghề nghiệp, Java Spring mang lại những lợi ích rõ rệt cho các nhà phát triển. Nếu bạn quan tâm và đam mê với lĩnh vực công nghệ thông tin, hãy cân nhắc học và khám phá thêm về lập trình Java Spring để khai thác tiềm năng của mình trong ngành này.

Thứ Ba, 27 tháng 6, 2017

[Python] Quick Sort

 

Trong đoạn code trên, chúng ta định nghĩa một hàm `quicksort` để sắp xếp một mảng số nguyên theo thuật toán Quick Sort. Hàm này sử dụng đệ quy để phân chia mảng thành các phần tử nhỏ hơn, bằng nhau và lớn hơn một phần tử chốt (pivot), sau đó kết hợp các mảng con đã sắp xếp lại với nhau.


Chúng ta thực hiện gọi hàm `quicksort` với một mảng số nguyên đầu vào `[4, 2, 1, 6, 3, 5]`. Kết quả là một mảng đã được sắp xếp theo thứ tự tăng dần `[1, 2, 3, 4, 5, 6]`, và nó được in ra màn hình.


Thuật toán Quick Sort là một trong những thuật toán sắp xếp nhanh và phổ biến. Bạn có thể thử áp dụng nó cho các mảng số khác để kiểm tra hiệu suất và đúng đắn của thuật toán.

NHÌN LẠI SỰ NGHIỆP - TẬP 2

  Mình làm việc tại Fsoft Đà Nẵng trong 2 năm với vai trò Developer của dự án ERP làm cho khách hàng Nhật.     Sau đó mình tham gia khoá học...