
A developer's cheat sheet for adding Java/Spring tests
kok202
Learn how to add tests to Spring! Then, learn how to change the Spring design to make testing more natural.
Basic
TDD, Software Test, unittest
Bây giờ bạn đã biết một chút về Spring và JPA, bạn nên học gì và học như thế nào để phát triển trong tương lai? Bạn đang nghiên cứu các mẫu thiết kế và ghi nhớ chúng để nghiên cứu thiết kế? Hãy để tôi giúp bạn!
Sửa các lỗi thường gặp của nhà phát triển cấp dưới
Sửa các lỗi phổ biến mà Junior Developer mắc phải khi sử dụng Spring
Sửa chữa những hiểu lầm không chính xác về các thực thể/phụ thuộc, v.v.
Tóm tắt các khái niệm cần thiết cho thực hành (MSA, ACL, v.v.)
Tóm tắt các khái niệm cơ sở hạ tầng/mạng cần thiết cho nhà phát triển back-end
Cách viết mã hướng đối tượng trong môi trường Spring (TDA, v.v.)
Bạn có phải là một nhà phát triển mới vào nghề đang tìm cách phát triển không?
Sổ tay ghi chép những lỗi sai để lên cấp hiệu quả!
"Tôi nên học gì bây giờ? Nền tảng nào sẽ giúp tôi học tốt?"
"Tôi có nên tìm hiểu sâu về cơ sở hạ tầng không? Tôi có nên học Spring Security không?"
Tôi sẽ giúp bạn tránh việc mua sách một cách mù quáng và học bất kỳ công nghệ hay khái niệm cụ thể nào. Việc học các công nghệ nền tảng như cơ sở hạ tầng (NoSQL, Message Queue, v.v.) hay Spring Security chưa chắc đã cải thiện kỹ năng phát triển của bạn! Khóa học này tập trung vào nội dung thiết thực, thiết yếu, được giải thích ngắn gọn trong thời gian ngắn.
Tôi sẽ giúp bạn sửa những lỗi phát triển thường gặp ở các nhà phát triển mới vào nghề, dựa trên kinh nghiệm xem xét mã trong nhiều năm của tôi!
Bạn có thể giải thích sự khác biệt giữa dependency injection và dependency inversion được không? Để tôi làm rõ một số khái niệm mơ hồ mà tôi đã thuộc lòng.
Tôi sẽ cho bạn biết lý do tại sao bạn cần mã kiểm tra và tại sao việc viết mã kiểm tra lại dẫn đến thiết kế tốt.
Bạn có gặp khó khăn trong việc theo kịp cuộc họp không? Hãy để tôi tóm tắt các khái niệm bạn cần cho công việc thực tế (MSA, ACL, v.v.)
...bằng cách đảo ngược mối quan hệ phụ thuộc truyền thống trong đó các lớp cao hơn (quyết định chính sách) phụ thuộc vào các lớp thấp hơn (chi tiết), các lớp cao hơn có thể trở nên độc lập với việc triển khai các lớp thấp hơn. (Từ Wikipedia, " Nguyên tắc đảo ngược phụ thuộc ")
Vậy điều này có nghĩa là gì? 🙄 Một lời giải thích theo kiểu hỏi đáp bách khoa toàn thư mà không có ý nghĩa gì thì không phải là câu trả lời!
Bạn cần biết khái niệm chính xác để có thể giải thích nó bằng lời của mình.
Trong nhiều năm qua, tôi đã gặp vô số lập trình viên mới vào nghề với tư cách là người cố vấn. Và trong quá trình cố vấn, tôi thường đặt ra cho họ những câu hỏi và câu trả lời giống nhau. Điều này khiến tôi nghĩ rằng sẽ rất tuyệt nếu có một khóa học chuyên sâu về chủ đề này. Khóa học này là tổng hợp những câu hỏi và câu trả lời phổ biến mà tôi nhận được từ các lập trình viên mới vào nghề với tư cách là người cố vấn .
Tình trạng của hầu hết các nhà phát triển mới vào nghề mà tôi từng thấy đều như thế này.
Nhưng tôi không biết bước tiếp theo nên là gì. 🤷♂️ Tuy nhiên, với thời gian rảnh rỗi của mình... tôi cần phải học thêm một cái gì đó, vì vậy tôi đang học NoSQL, Message Queue và RDB, đây là những công nghệ cơ sở hạ tầng được các công ty sử dụng, hoặc học các ngôn ngữ mới đang thịnh hành hiện nay. Tất nhiên, tôi cũng đã làm như vậy!
Có những khái niệm nào bạn biết nhưng lại gặp khó khăn khi giải thích không? Đảo ngược phụ thuộc là gì? Thực thể là gì? Dịch vụ là gì? Sự khác biệt giữa lập trình tuần tự và lập trình thủ tục là gì? Chúng tôi sẽ giúp bạn hiểu những khái niệm này, đồng thời giải thích chúng một cách rõ ràng.
Mấy cái TDD, DDD chết tiệt đó... thật tuyệt vời khi bạn học chúng. Tôi biết chúng là những lý thuyết tuyệt vời, nhưng làm sao để áp dụng chúng vào thực tế? Cụ thể hơn, làm sao để áp dụng TDD và DDD vào Spring Framework?
Tôi đã đọc nhiều sách và tham dự nhiều hội thảo về TDD, nhưng hầu hết đều chỉ đưa ra những ví dụ đơn giản, phù hợp cho người mới bắt đầu. Tôi sẽ chỉ cho bạn cách áp dụng nó vào thực tế .
Nếu bạn quan tâm đến thiết kế, bạn đã bao giờ thử ghi nhớ các mẫu thiết kế với hy vọng tìm hiểu thêm về chúng chưa? Rồi một suy nghĩ chợt nảy ra: Liệu những mã ví dụ này có thực sự áp dụng được trong thực tế không?
Nhưng hóa ra, điều quan trọng trong các mẫu thiết kế không phải là mẫu đó trông như thế nào! Mà là hiểu được các mối phụ thuộc và cách bạn làm suy yếu chúng !
Sau khi tham dự buổi thuyết trình, tôi đã hiểu được định nghĩa, từ nguyên và ý nghĩa của những thuật ngữ tôi thường dùng, cũng như những thuật ngữ tôi đã nghe nhưng chưa thể xác định chính xác. Mặc dù kiến thức này có thể không phải là vấn đề đối với việc phát triển, nhưng nó đã khuyến khích tôi suy nghĩ về hành vi, vai trò của các đối tượng và ý nghĩa của từng lớp, từ đó hình thành nên một cách tiếp cận lập trình hướng đối tượng (OOP) hơn. Buổi thuyết trình đã giải thích những khái niệm mà cá nhân tôi đã cân nhắc, từ góc nhìn của một lập trình viên mới vào nghề, một cách dễ hiểu, khiến việc nghe trở nên hấp dẫn và thoải mái hơn. Giống như tôi, tôi hình dung nhiều lập trình viên backend mới vào nghề thường cảm thấy lạc lõng, không chắc chắn về những điều mình chưa biết hoặc cần biết bao nhiêu. Buổi thuyết trình này đã cung cấp những hướng dẫn quý báu, giúp tôi hiểu mình cần học những gì và còn thiếu những gì. (Lee*Gyu)
Bài giảng này là một nguồn tài liệu tuyệt vời, đề cập đến những lĩnh vực tôi chưa bao giờ thực sự nghĩ đến. Là một lập trình viên mới vào nghề, tôi đã tự hỏi liệu mình có đang phát triển đúng hướng khi cứ lặp đi lặp lại một công việc ở nơi làm việc hay không. Bài giảng này đã giúp tôi định hướng được. (Shin*ho)
Khi mới vào làm tại một công ty, bạn thường lo lắng về việc làm thế nào để phát triển đúng cách và làm thế nào để giảm thiểu sai sót. Khóa học này giải quyết những lo lắng này và cung cấp hướng dẫn tuyệt vời cho các nhà phát triển mới vào nghề để phát triển đúng cách. Ngoài kiến thức thực tế, khóa học còn đề cập đến các chủ đề mà các nhà phát triển mới vào nghề có thể đã từng gặp phải và thắc mắc ít nhất một lần, chẳng hạn như "Tôi nên thiết kế kiến trúc hướng đối tượng như thế nào?", "Làm thế nào để phân biệt giữa DTO, VO và Entity trong thực tế?", và "Tôi có thực sự cần phải viết mã kiểm thử không?" Bạn cũng sẽ được học các thuật ngữ thường dùng, mà tôi tin rằng sẽ vô cùng hữu ích cho việc thích nghi với công việc thực tế. Tôi thực sự khuyến khích khóa học này cho cả các nhà phát triển mới vào nghề và những người đang muốn phát triển. (Lee Chan)
Là một lập trình viên, khóa học này vô cùng hữu ích, giúp tôi nắm vững các khái niệm cốt lõi của lập trình hướng đối tượng được sử dụng trong lĩnh vực của mình. Ngay cả những khái niệm khó cũng được minh họa rõ ràng, giúp tôi dễ hiểu. Hơn nữa, những giải thích đơn giản đã giúp tôi nhớ các khái niệm rất lâu chỉ sau một lần nghe. (Sim*Cheol)
Các bạn sinh viên tương lai ơi, các bạn có biết sự khác biệt giữa lập trình tuần tự và lập trình thủ tục không? Nếu tò mò, hãy xem video hướng dẫn miễn phí để tìm hiểu những gì bạn sẽ học.
Một khi bạn hiểu rõ khái niệm này, bạn sẽ thấy được nhiều điều hơn nữa! Chúng tôi sẽ giải đáp cặn kẽ những thắc mắc của bạn từ góc nhìn của một người mới vào nghề .
Sửa lỗi phát triển thường gặp của các nhà phát triển mới vào nghề
Chúng ta sẽ tìm hiểu những lỗi quy ước thường gặp khi bạn mới vào công ty, đối tượng là gì và những điều bạn cần lưu ý khi viết mã hướng đối tượng. Và để hiểu rõ hơn về thiết kế, chúng ta sẽ cùng tìm hiểu về các phụ thuộc.
Sử dụng Spring theo cách OOP
Để tìm hiểu cách sử dụng Spring theo hướng đối tượng (OOP), hãy cùng xem xét một trường hợp Spring không thể thực hiện được điều đó. Chúng ta cũng sẽ tìm hiểu bản chất của một dịch vụ và mức độ trừu tượng hóa của từng lớp.
Tại sao chúng ta cần phải thử nghiệm?
Mọi người nói rằng bạn cần mã kiểm thử, nhưng bạn không chắc tại sao việc viết mã kiểm thử lại dẫn đến thiết kế tốt? Hãy để tôi giải thích tại sao kiểm thử lại cần thiết từ góc độ thực tế hơn. Và tôi sẽ chỉ cho bạn cách tạo ra các bài kiểm thử trông tự nhiên.
Tổ chức các khái niệm cần thiết cho việc sử dụng thực tế
Có quá nhiều kiến thức về cơ sở hạ tầng xoay quanh Spring để có thể hoàn thành tốt công việc. Khi mạng lưới hoặc cơ sở hạ tầng được đề cập trong các cuộc họp, nhiều người hoặc gặp khó khăn trong việc hiểu chủ đề hoặc chỉ ngồi im một chỗ. Điều đó có nghĩa là bạn cần phải mở sách giáo khoa chỉ để học về cơ sở hạ tầng hoặc mạng lưới? Tôi sẽ tóm tắt lại cho bạn, chỉ ở mức độ bạn cần cho công việc thực tế!
Chúng tôi cung cấp khoảng 20 bài giảng PPT, mỗi bài dài khoảng 15-20 trang, làm tài liệu học tập cho mỗi lớp học . Hơn nữa, bạn không cần không gian thực hành riêng biệt! Các bài giảng được thiết kế để bạn có thể học chỉ trong 20 phút trên tàu điện ngầm trong khi di chuyển.
Hiện tại tôi đang làm việc tại Kakao, và vì đam mê sáng tạo, tôi luôn dành thời gian làm việc sau giờ làm. Có câu nói: "Một chú lùn đứng trên vai người khổng lồ". Tuy chỉ là một chú lùn nhỏ bé, tôi luôn nỗ lực truyền đạt kiến thức của mình để giúp những người khổng lồ phát triển. Sau khi đã hướng dẫn rất nhiều lập trình viên mới vào nghề, tôi tin rằng mình cũng có thể giúp bạn phát triển.
H. Đây có phải là khóa học mà sinh viên không chuyên ngành cũng có thể tham gia không?
Khóa học này yêu cầu bạn phải có kiến thức cơ bản về khoa học máy tính. Tuy nhiên, vì kiến thức chuyên môn yêu cầu còn hạn chế, bạn có thể dễ dàng tham gia khóa học nếu đã có kiến thức cơ bản về Java, Spring và JPA (điều kiện tiên quyết), cũng như nội dung bên dưới.
H. Ông nói rằng ông tránh giải thích chi tiết các khái niệm, vậy chính xác thì ông đang cố nói với chúng tôi điều gì?
Tôi sẽ cố gắng tóm tắt các khái niệm trong ba dòng. Tất nhiên, tôi sẽ giải thích quy trình hoạt động của các khái niệm phức tạp như MSA và OAuth. Tuy nhiên, tôi sẽ không đi sâu vào chi tiết về nguồn gốc, bối cảnh, cũng như phiên bản 1.0 và 2.0 của OAuth, vì dù sao thì chúng ta cũng có thể sẽ sử dụng phiên bản 2.0 trong thực tế. Và từ góc độ của một người thực hành, họ quan tâm nhiều hơn đến dữ liệu được trao đổi thông qua giao tiếp API hơn là mã thông báo và chữ ký.
Tôi sẽ cố gắng giải thích ngay cả những thuật ngữ nhỏ nhặt nhất mà bạn khó hỏi. Ví dụ, khi mới vào công ty, tôi không biết thuật ngữ CS
" và cảm thấy bực bội vì không theo kịp nội dung cuộc họp. Nhưng nếu bạn tìm kiếm "CS" trên Google thì sao? Nó không phải là một thuật ngữ riêng lẻ, không liên quan. Thực ra, đó chỉ là 고객 문의
!
H. Có nhiều video và bài đăng trên blog giải thích các khái niệm, vậy tại sao tôi nên tham gia khóa học này?
Vâng, đúng vậy. Thực tế, đã có rất nhiều bài viết và video hay trên YouTube và blog. Tuy nhiên, việc các lập trình viên mới vào nghề không biết những điều mình không biết lại phổ biến hơn nhiều. Có lẽ bạn vừa mới nhận được việc làm lập trình viên back-end và cảm thấy bối rối mỗi khi nghe đến các thuật ngữ về cơ sở hạ tầng hoặc mạng. Vậy nên, bạn nghĩ, "Mình có nên học cơ sở hạ tầng không?" Bạn mua một cuốn sách dày cộp, dành cho chuyên gia, hoàn toàn không biết gì về nội dung, và miệt mài nghiên cứu mà không hiểu gì cả. Chẳng phải như vậy rất kém hiệu quả sao?
Khóa học này có thể được coi là một gói khởi đầu giúp bạn phát triển nhanh chóng. Hơn nữa, nhiều bài đăng trên blog chứa nội dung ở trình độ đại học được viết về Tistory, vì vậy có rất nhiều trường hợp hiểu lầm. Ví dụ, một số bài đăng trên blog thậm chí còn giải thích rằng DTO là các đối tượng được sử dụng để lưu trữ dữ liệu trong cơ sở dữ liệu bằng DAO!
H. Điều gì làm cho khóa học này trở nên độc đáo?
Hầu hết các bài giảng dường như không đề cập đến thiết kế. Bài giảng này cung cấp định nghĩa riêng của giảng viên về thiết kế tốt.
Tôi tin rằng lý do không có nhiều bài giảng liên quan đến thiết kế là vì các chuyên gia chia sẻ kiến thức còn e ngại. Như bạn đã biết, không có câu trả lời cố định nào cho thiết kế tốt. Tuy nhiên, giảng viên cần truyền đạt kiến thức một cách khách quan và chính xác, nên theo bản năng, họ tránh những chủ đề không có câu trả lời cố định. Đó là lý do tại sao các bài giảng liên quan đến thiết kế thường đi xa đến mức xem xét lại SOLID và các mẫu thiết kế từng bước một. Tôi sẽ giải thích định nghĩa của riêng tôi về thiết kế tốt, vì vậy hãy chia sẻ suy nghĩ của bạn.
H. Nếu bạn không thể định nghĩa thế nào là thiết kế tốt thì làm sao bạn có thể dạy nó?
Vâng, vì tôi không thể định nghĩa thiết kế tốt, nên định nghĩa tôi đưa ra trong bài giảng này chỉ đơn giản là định nghĩa cá nhân của tôi. Tuy nhiên, tôi tin rằng tất cả sách phi hư cấu và bài giảng chỉ đơn giản là một quá trình lắng nghe ý kiến của người khác và chấp nhận chúng nếu chúng phù hợp với bạn. Tuy nhiên, tôi đã cố gắng trình bày điều này một cách khách quan nhất có thể, vì vậy nếu bạn thấy thuyết phục, xin hãy chấp nhận. Nếu không, tôi khuyến khích bạn tự định nghĩa lại thiết kế tốt.
📢 Vui lòng kiểm tra trước khi tham gia lớp học!
Khóa học này dành cho ai?
Những người không thể theo kịp các cuộc họp vì có nhiều khái niệm họ không biết.
Bất cứ ai quan tâm đến thiết kế
Những người đã vào công ty nhưng chưa biết cách phát triển
Bất cứ ai thắc mắc tại sao bài kiểm tra được thiết kế
Người ghi nhớ một cách máy móc đặc tính của lò xo
Có ai thắc mắc liệu tôi có xử lý lò xo đúng cách không
nhân viên mới
Nhà phát triển muốn phát triển
Cần biết trước khi bắt đầu?
Bất cứ ai có thể hiểu được mã Java
Khái niệm cơ bản về Spring (nếu bạn biết Bộ điều khiển/Dịch vụ/Kho lưu trữ là gì)
Bất cứ ai đã sử dụng JPA một thời gian
3,423
Học viên
246
Đánh giá
47
Trả lời
4.9
Xếp hạng
2
Các khóa học
현재 카카오에서 일하고 있고, 만드는 것을 좋아해서, 퇴근 후에도 항상 무언가를 개발하고 있습니다.
"거인의 어깨 위에 선 난쟁이"라는 말이 있습니다. 저 역시 한낱 작은 난쟁이일 뿐이지만, 올라탄 거인의 성장에 도움이 될 수 있도록 지식의 대물림을 위해 노력하고 있습니다. 다수의 주니어 개발자분들을 멘토링 한 경험이 있어서 여러분의 성장을 도와줄 수 있을 거예요.
깃허브 > https://github.com/kok202
블로그 > https://kok202.tistory.com
Tất cả
25 bài giảng ∙ (4giờ 8phút)
Tài liệu khóa học:
Tất cả
76 đánh giá
4.9
76 đánh giá
Đánh giá 5
∙
Đánh giá trung bình 5.0
5
This is a lecture that is like a stepping stone for development skills. Veterans create different results with deeper knowledge and a broader perspective even when doing the same work. I think this is the scary thing about years of experience. This lecture imparts knowledge and techniques that can be accumulated through many years of experience. The instructor kindly introduces valuable information and techniques accumulated through his persistent obsession with development and various experiences to beginners like me. When I first saw it, I was surprised the whole time. I was now able to explain the concepts that felt vague in words, and I immediately studied object-oriented programming and applied it as instructed, and refactored it, and the structure of the project became cleaner. When I first saw the lecture, I was still inexperienced, so I was not able to apply the contents you mentioned in various ways. After that, I thought of this lecture while working on a new project. When I watched the lecture again and applied the contents you mentioned, I felt that the code was incomparably improved compared to before, and my project mentor and team members all praised it for being easy to read and well-written. I think this lecture is a lecture that broadens your perspective. It goes beyond simply correcting mistakes and learning the know-how and knowledge of experts, and I think it is a grateful lecture that shows various choices that beginners cannot see when making a choice.
Đánh giá 24
∙
Đánh giá trung bình 5.0
5
BAD The sample code is too similar to my code 🫣 I'm somehow building a server on my own in an environment without a shooter, but I'm a bit lost when I want to go to the next step 😮💨 I was lost, but after listening to the lecture, I think I'm starting to get the hang of it. Thank you so much 👍🏻 I wish you'd upload more lectures related to design 🙏🏻
Đánh giá 21
∙
Đánh giá trung bình 5.0
5
This was a very helpful lecture for me. I was so happy that you taught me at least what not to do while I was just starting to think about good design. Also, since you provided sources for all quotes, I think it was a better lecture because I learned a lot of good books. Aside from the lecture content, the tone and lecture progress were neat, so I enjoyed listening to the latter half where you explained many terms. Thank you so much for making such a great lecture!
Đánh giá 4
∙
Đánh giá trung bình 5.0
5
I listened carefully. It was good to hear about the parts that I was worried about at the boundary between theory and practice from various perspectives. In particular, as a junior developer, I have to study, but I think it would be good to listen to keywords that are good to throw out when I don't know what to study, so I think it would be good to look at it again once in a while to recall the concepts.
Đánh giá 11
∙
Đánh giá trung bình 4.6
1.255.557 ₫
Hãy khám phá các khóa học khác của giảng viên!
Khám phá các khóa học khác trong cùng lĩnh vực!