Hôm nay thứ 6, lại cuối tuần rồi và chị Châu demo code bài cờ caro tictactoe. Có thể nói bài code vận dụng tổng hợp rất nhiều điều đã học từ trước đến giờ, đặc biệt là js và html, những phần cộng chuỗi sinh ra từ js, phần mảng, phần mở rộng hàm, phần this.id …Và mình càng thấm nhuần hơn một điều code được build từ trong ra ngoài, từ nhỏ phình ra hai bên, nên nếu …
Month: February 2020
list-product.component.ts import { Component, OnInit } from ‘@angular/core’; import {Product} from ‘../../model/product’; import {ProductService} from ‘../../service/product.service’; @Component({ selector: ‘app-list-product’, templateUrl: ‘./list-product.component.html’, styleUrls: [‘./list-product.component.css’] }) export class ListProductComponent implements OnInit { productList: Product[] = []; constructor(private productService: ProductService) { } ngOnInit() { this.getProductList(); } getProductList() { this.productService.listProduct().subscribe(result => { this.productList = result; }); } } list-product.component.html <div class=”text-center text-uppercase font-weight-bold”> <span style=”font-size: 24px”>Danh sách sản phẩm</span> …
Bài viết này mình sẽ hướng dẫn mọi người cách CRUD trong Angular với 2 bảng trở lên Đầu tiên khởi tạo dự án Angular Tạo interface Product như sau: Category: Tạo file ProductService Chúng ta tạo lần lượt các component CreateProduct, UpdateProduct, ListProduct, DeleteProduct create-product.component.ts import {Component, OnInit} from ‘@angular/core’; import {FormControl, FormGroup} from ‘@angular/forms’; import {Product} from ‘../../model/product’; import {ProductService} from ‘../../service/product.service’; import {Category} from ‘../../model/category’; import {CategoryService} from ‘../../service/category.service’; @Component({ selector: ‘app-create-product’, templateUrl: ‘./create-product.component.html’, …
Phần này đối với lập trình viên Fresher/Junior hay học ở CodeGym thì không quan trọng lắm vì thương không phải xử lý đến ngoại lệ. Nhưng muốn lên cao hơn như Senior hay Technical Leader thì minh nghĩ là cần phải biết. Nên mình sẽ chia sẻ để mọi người có thể tìm hiểu trước nhé. Throw và throws là 2 từ khá giống nhau, khác nhau ở chữ ‘s’ thôi vậy thì chúng ta cùng tìm hiểu xem …
Khi chúng ta viết các API thì chúng ta thường sử dụng phương thức POST để tạo dữ liệu còn PUT thì để cập nhật lại dữ liệu. Chúng ta cứ biết vậy và cứ code như thế rồi thấy nó chạy được. Nhưng có lần mình có viết nhầm tạo dữ liệu mình dùng PUT và vẫn thấy tạo được dữ liệu. Nên mình mới tìm hiểu tại sao chúng ta không dùng 1 trong 2 thôi mà phải …
Danh sách được sử dụng rất nhiều trong quá trình chúng ta lập trình và mảng là kiểu mà chúng ta hay sử dụng nhất. Nhưng đôi khi mảng thông thường không thể đáp ứng được hết nhu cầu sử dụng của chúng ta như kích thước không thể thay đổi chẳng hạn. Vì thế có 2 loại vê cấu trúc dữ liệu mà chúng ta thường dùng để thay thế đó chính là ArrayList và LinkedList. Cả 2 đều …
Trong khi chúng ta lập trình, chúng ta thường phải sử dụng các toán tử so sánh để kiểm tra một điều kiện logic nào đó. Khi so sánh lớn hơn hay nhỏ hơn thì rất đơn giản đúng ko nhỉ. Nhưng khi chúng ta muốn so sánh bằng nhau thi chúng ta lúc thi sử dụng == lúc thì sử dụng phương thức equals(). Vậy tại sao lại như vậy? Không phải chúng đều dùng để so sánh bằng …
Ngày cuối tuần kết thúc, 1 phiên support của Coach. Những thao tác demo nó xem đều hiểu, tại sao lúc nó làm bài lại không nghĩ được ra ? Chăc nó cần nghiền ngẫm thật nhiều những dòng mẫu ấy… Sau phiên support đó là bài Seminar mang nhiều nội dung có ích cho nó trong các bài đang học. Những thông tin tưởng chừng như sinple, basic, nhưng nếu nắm không tốt thì nó có thể là nguyên …
Bài trước mình đã hướng dẫn phần cấu hình để sử dụng gmail xong xong, bài viết này mình sẽ hướng dẫn các bạn sử dụng gmail để gửi tin nhắn xác thực tài khoản Các bạn tạo một class có tên là EmailService đặt ở trong package Service Entity User UserRepository UserService UserServiceImpl package com.codegym.quiz.service.impl; import com.codegym.quiz.model.User; import com.codegym.quiz.model.UserPrinciple; import com.codegym.quiz.repository.UserRepository; import com.codegym.quiz.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Optional; @Service public class UserServiceImpl …
Thư viên: Các bạn hãy thêm thư viện sau vào trong file build.gradle https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail compile group: ‘org.springframework.boot’, name: ‘spring-boot-starter-mail’, version: ‘1.2.0.RELEASE’ Sau đó các bạn truy cập đường dẫn sau: https://myaccount.google.com và chọn security Và bên trong phần security, các bạn kéo xuống phần Less secure app access và bật nó lên Sau đó các bạn vào file application.properties trong dự án của mình và thêm đoạn cấu hình như sau (ở đây mình dùng biến môi trường để cấu …
Vậy là quay đi quay lại đã hết tuần học đầu tiên tại codegym.Cảm giác thời gian trôi thật nhanh, mà mình vẫn chưa học được gì nhièu giữa 1 núi kiến thức tại codegym. Dù còn nhiều khó khăn , nhưng mình cũng vui vì tiếp xúc và làm quen được với mọi người cùng lớp.Mình phải tận dụng 2 ngày nghỉ để ôn lại kiến thức đã học và nắm bắt lại những vấn đề mình chưa thạo …
Nếu như Corona đã mang đến cho cả thế giới này một ân huệ: được trải nghiệm cảm giác bất lực. Thì CodeGym cũng sẽ vậy, bạn sẽ được trải nghiệm cảm giác cực kỳ bất lực. Thôi không cần kể lể, nếu bạn nào muốn được trải nghiệm thì cứ xin hãy tự chính bản thân được khám phá nó.Ơ thế mà tôi cùng cả lớp cũng đã đi cùng nhau gần 20 ngày thì phải, mọi thứ chưa …
Nửa vui, nửa thất vọng. Vui vì những điều mình đã biết suy thay đổi, vui vì sau tất cả những điều mình tưởng tượng cũng có một chút điều làm mình có hi vọng, tích cực. Vui vì đã giải quyết được các vấn đề mà mình định giải quyết, không phải để tâm đến nó quá nhiều nữa. Thất vọng vì mình chưa thay đổi được nhiều, bản thân vẫn bị chi phối quá nhiều vào những thói …
Thế là tuần học đầu tiên cũng trôi qua khá suôn sẻ. Tuy phải nghỉ học mất 1 buổi, nhưng hôm nay được luyện tập để ôn lại kiến thức, nên vẫn theo kịp tiến độ của lớp. …
Haizz!! Vậy là tôi đã học được 3 tuần tại codegym, thời gian trôi qua nhanh quá. Mới đầu tuần xong hôm nay đã hết tuần rồi. Mỗi tuần trôi qua tôi nghĩ lại thấy mình lại học được nhiều điều mới mẻ, thú vị hơn. Cảm thấy trình độ của mình có sự tiến bộ rõ dàng. Các kiến thức tuần vừa rồi rất cơ bản. Cẩn phải nắm vững để làm cơ sở học tiếp. Sau khi làm …
Ngày hôm nay tôi và các bạn đã trải qua 3 tuần làm việc, Cảm xúc vẫn vậy đặc biệt hôm nay được các bạn nhắc lại được nhiều kiến thức rất hay giúp tôi rất nhiều, mong mọi việc sẽ thuận lợi cho tất cả mọi người trong lớp, Chúc tất cả ae em bạn bè trong lớp C0220H1 có 2 ngày nghỉ vui vẻ , và chuẩn bị bài mới thật tốt cho tuần tới ,kk …
Viết thực sự là một hình thức giải trí hiệu quả, hơn thế nữa, nó còn đem lại cho ta nhiều điều. Kết thúc một tuần làm việc mệt mỏi, tranh tự thương cho mình một không gian, chiêm nghiệm lại những gì đã trải, cũng là để tiếp tục series tâm đắc còn dang dở… Sẽ chẳng còn so sánh, càng không bàn về lựa chọn “enough” or “more” nữa. Hôm nay tôi xin phép bày tỏ quan điểm, …
Học được định nghĩa về hàm Cách sử dụng hàm Cách truyền tham số vào hàm Chia vấn đề lớn thành nhiều vấn để nhỏ, xử dụng hàm để xử lý vấn đề nhỏ . Tái sử dụng hàm …
làm xong hết các bài tập trừ code.org …
Bài viết này mình sẽ hướng dẫn các bạn sử dụng Spring Boot Actuator để theo dõi ứng dụng của mình Vậy Spring Boot Actuator là gì? Mình đã tìm đọc một số khái niệm ở trên mạng và thấy khái niệm sau đó là Spring Boot Actuator là một dự án con trong Spring Boot. Nó được xây dựng để thu thập , giám sát các thông tin về ứng dụng. Và để sử dụng nó trong Spring Boot …
Ở những bài viết trước nếu các bạn để ý mình hay sử dụng @Data ở các entity, có thể nhiều người sẽ thắc mắc và lên google để tìm hiểu xem annoutation này để làm gì. Vậy nên ở bài viết này mình sẽ hướng dẫn sử dụng Lombok, một thư viện, một plugin giúp chúng ta giảm thiểu được khá nhiều thời gian trong lúc code bằng cách tự động sinh ra get, set, constructor qua các annoutation …
Sử dụng Lombok Chúng ta cùng xem tác dụng của @Data qua ví dụ sau: Nếu như ta không sử dụng @Data thì đoạn code của chúng ta sẽ phải có đầy đủ get, set, constructor như sau: Còn khi sử dụng @Data đoạn code của chúng ta sẽ được rút ngắn đi rất nhiều: @Data sẽ có tác dụng tự tạo ra constructor không đối, các getter, setter, hàm equals, hashCode và toString() @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor @NoArgsConstructor sẽ tự …
Bài viết này mình sẽ giới thiệu đến mọi người một công cụ có tên là Swagger Swagger là gì? Swagger là một phần mềm mã nguồn mở được sử dụng để phát triển thiết kế và làm các document cho các restapi và còn có một số tính năng khác các bạn có thể vào link sau để xem https://swagger.io/docs/specification/2-0/what-is-swagger/ Có một số phần mềm swagger như Swagger Editor, Swagger Codegen, Swagger Inspector, Swagger UI. Trong đó swagger UI …
Mình đã giới thiệu cho các bạn khái niệm về swagger và lý do tại sao nên sử dụng swagger ở bài trước. Hôm nay mình sẽ hướng dẫn mọi người cách tích hợp swagger vào trong ứng dụng Spring Boot. Các bạn thêm thư viện sau vào trong file build.gradle // https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 compile group: ‘io.springfox’, name: ‘springfox-swagger2’, version: ‘2.9.2’ Tạo một entity có tên là Category CategoryRepository: CategoryService và CategoryServiceImpl Sau đó chúng ta tạo một file có tên …
Bài viết này mình sẽ hướng dẫn mọi người deploy ứng dụng angular lên server của netlify Đầu tiên các bạn tạo ứng dụng Angular bằng cách mở terminal và gõ lệnh ng new tên project Các bạn bật cửa sổ terminal của webstorm lên và gõ lệnh ng build Và các bạn vào file .gitignore và xóa dòng /dist Sau đó các bạn vào github tạo một repository mới Sau khi tạo xong các bạn hãy push dự án …
Hôm nay tâm trạng mình khá tốt. Hà Nội đang bắt đầu bước vào những ngày nắng nóng đầu tiên. Cảm giác được cởi bỏ những lớp áo khoác sau mùa đông dài thật sự rất thoải mái. Không biết từ bao h mỗi lần đi qua con phố Hàm Nghi mình đều hướng mắt tìm về hướng Codegym, hướng về con đường TT04 này dần trở nên quen thuộc hơn . Khi cái gì đó đã trên nên quen …
Những thanh niên đọc bài viết này,… các bạn học code vì mục đích gì ? Sở thích ? Học cho biết ? Học theo phong trào ? Học để sống ? … Dù sao, dù là vì mục đích gì ? Hay là bạn ở một công ty lớn/nhỏ, freelancer… Tôi nói bạn chỉ là người làm thuê, code thuê, bạn có tin không ? Làm thuê cho khách hàng, cho dự án, cho ông chủ trả cho bạn …
Cập nhật cho ae codegym mải mê cày quốc, dịch covid-19 đang có nguy cơ bùng phát trở lại việt nam với hàng nghìn người đang trong diện nghị ngờ cần cách li. Cơ sở thiếu thốn, kinh phí hạn hẹp, người dân chung tay ngăn cản dịch bệnh, trong khi đó thì vài anh hàn xẻng sáng ăn bánh mì thịt, trưa ăn cơm kim chi, chiều ngồi quạt mát, tối nằm lướt wifi vẫn báo cáo với truyền …
Trước giờ, chơi mấy trò trẻ con như cờ caro, chỉ nghĩ đơn giản là vẽ mấy cái ô vuông ra rồi tích vào đấy, ai đủ 5 thì ăn. Nhưng bây giờ mới hiểu không phải ai cũng có thể tạo ra những thứ tưởng chừng đơn giản ấy, với một newbie như tôi, làm tic tac toe có 9 ô thôi cũng mất rất nhiều thời gian rồi, chứ đừng nói cả 1 bàn cờ caro to đùng. …