Chuyển đến nội dung chính

TÂN SINH VIÊN NÊN LỰA CHỌN LAPTOP NHƯ THẾ NÀO? (CỰC CHI TIẾT)

  TÂN SINH VIÊN NÊN LỰA CHỌN LAPTOP NHƯ THẾ NÀO (CỰC CHI TIẾT)? Mùa tựu trường cũng đã đến gần, và đây cũng là lúc các bạn sinh viên nhập học chuẩn bị sắm sửa cho mình một chiếc laptop cá nhân, phục vụ cho quãng thời gian học đại học của bạn. Tuy nhiên, vì là tân sinh viên nên bạn chưa hề có bất kỳ kinh nghiệm gì trong việc lựa chọn chiếc laptop phù hợp. Bản thân mình không phải là một tay chơi laptop, tuy nhiên mình có đủ kiến thức cơ bản để tìm kiếm và lựa chọn chiếc laptop phù hợp với bản thân mình. Hy vọng bài viết này sẽ phần nào giúp bạn, có thể là một tân sinh viên, hoặc có thể là một ai đó bất kỳ, tìm ra cho mình một chiếc laptop ưng ý nhất. Trước khi đi thẳng vào việc lựa chọn laptop, mình sẽ đưa ra rõ từ bối cảnh bản thân cho đến thông tin về thị trường laptop. Từ bối cảnh này bạn sẽ có cơ sở lựa chọn và đưa ra quyết định đúng đắn, phù hợp với bản thân hơn. Tiểu sử mua laptop của bản thân mình (tâm lý sinh viên khi mới mua) Vào khoảng thời gian này tầm 7 năm về trước (ngh...

Deploy project Springboot MIỄN PHÍ sử dụng Render

   Deploy project spring boot MIỄN PHÍ sử dụng render

Đối với những bạn sử dụng Spring boot vì mục đích học tập, nghiên cứu, thì việc chi nhiều tiền để chạy một server là không cần thiết. Trước đó, việc deploy miễn phí trên heroku là lựa chọn của rất nhiều học sinh, sinh viên. Tuy nhiên, công ty này đã cắt đi gói miễn phí vào ngày 28/11/2022, buộc người dùng phải trả phí để sử dụng. Ở bài viết này, mình sẽ hướng dẫn các bạn chạy một project spring boot nhỏ trên Render miễn phí. Cùng tìm hiểu nhé.


Yêu cầu và mô tả: 

- Sử dụng IDE Intellij để dễ dàng package

- Tài khoản git 

- Tài khoản render.

- Sử dụng MySQL và Mybatis để thực hiện tạo lập và quản lý CSDL.



1. Tạo một project spring boot

Truy cập vào trang https://start.spring.io/ và tạo một project spring boot như sau:
Group – com.8techblog
Artifact – App 
Package name – com.8techblog.App 
Packaging – Jar 
Java – 17
Project  Gradle - Groovy (ở đây mình hướng dẫn build dùng gradle)
Language - Java

Đồng thời ở mục ADD DEPENDENCIES thêm một số thành phần
Spring Web
Lombok
Mybatis Framework
MySQL Driver
(Có thể thêm Thymeleaf hoặc Angular cho front end, ở đây mình chỉ dùng REST API để hiện thông tin)

Sau đó nhấn GENERATE.




Tải về, giải nén và mở bằng intellij.
(Trong project tại build.gralde nhớ thêm dòng  trong 
dependencies{
...

runtimeOnly 'com.mysql:mysql-connector-j'} nếu MySQL Driver chạy không được)

2. Tạo một database MySQL online

Sử dụng trang https://freedb.tech/ để tạo MySQL online miễn phí.
Dùng lệnh MySQL để tạo:

CREATE TABLE Users (
    username varchar(255),
    password varchar(255)
);
INSERT INTO Users VALUE('8TECHBLOG','12345678');

3. Thiết lập thư viện mybatis trên project
Điều chỉnh và tạo các file sau.

AppApplication.java
package com.techblog.App;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

@SpringBootApplication(exclude= DataSourceAutoConfiguration.class)
public class AppApplication {

public static void main(String[] args) {
SpringApplication.run(AppApplication.class, args);
}

}
Tạo file mybatis-config.xml trong thư mục main/resources như sau.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias = "Users" type = "com.techblog.App.models.Users"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://sql.freedb.tech:3306/freedb_8techblog?allowPublicKeyRetrieval=true&amp;useSSL=false"/>
<property name="username" value="freedb_techblog"/>
<property name="password" value="X$CaRNU5Qa%7YvW"/>
</dataSource>

</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/sql/UsersMapper.xml"/>

</mappers>

</configuration>

Với url, username và password theo database mình tạo.

Tạo UserMapper.xml
 trong thư mục main/resources như sau.

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.techblog.App.mappers.UserMapper" >
<resultMap id = "result" type = "com.techblog.App.models.Users">
<result property = "username" column = "username"/>
<result property = "password" column = "password"/>
</resultMap>
<select id="getUserByUsernameAndPassword" resultMap="result">
SELECT * FROM Users WHERE username = #{username} AND password = #{password};
</select>
</mapper>

Tạo hai thư mục models và mappers 


Với interface UserMapper như sau
package com.techblog.App.mappers;


import com.techblog.App.models.Users;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
@Component
@Mapper
public interface UserMapper {
public Users getUserByUsernameAndPassword(@Param("username") String username, @Param("password") String password);
}





Với class Users như sau
package com.techblog.App.models;

import lombok.Data;

@Data
public class Users {
String username;
String password;

}

Với class MySqlSessionFactory như sau

package com.techblog.App.mappers;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.io.IOException;
import java.io.InputStream;


@Configuration
public class MySqlSessionFactory {

@Bean
public SqlSessionFactory startSqlSession() {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory;
}


}




Tạo class TechBlogController trong thư mục controller như sau:
package com.techblog.App.controller;


import com.techblog.App.mappers.MySqlSessionFactory;
import com.techblog.App.mappers.UserMapper;
import com.techblog.App.models.Users;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("8techblog/users")
public class TechBlogController {

@GetMapping
public Users findAllCustomers(){
MySqlSessionFactory msf = new MySqlSessionFactory();
SqlSessionFactory sessionFactory = msf.startSqlSession();
Users user = null;
try(SqlSession session = sessionFactory.openSession()){
UserMapper userMapper = session.getMapper(UserMapper.class);
user = userMapper.getUserByUsernameAndPassword("8techblog", "12345678");
}

return user;
}

}
Chương trình sẽ lấy user có username là 8techblog và password là 12345678 để trả về kết quả.
Cấu trúc thư mục sẽ như sau



4. Package thành file jar và chạy kiểm thử
IDE Intellij hỗ trợ sẵn cho chúng ta công cụ giúp package một project maven hoặc gradle thành dạng .jar (Bạn vẫn có thể tải mvn hoặc gradle rồi dùng terminal thực thi để build file .jar, tuy nhiên sẽ dễ bị lỗi)
Bạn chọn App > build > build


File jar chúng ta sau khi build được sẽ là App/build/libs/App-0.0.1-SNAPSHOT.jar

Chúng ta mở terminal (Alt + F12) và thực thi lệnh để chạy kiểm thử file jar
java -jar build/libs/App-0.0.1-SNAPSHOT.jar
Mở trình duyệt và truy cập localhost:8080/8techblog/users để kiểm tra kết quả.

Như vậy ta đã hoàn thành build file jar

5. Tạo Dockerfile 

Vì Render chạy trên Docker, nên ta cần tạo một Dockerfile để yêu cầu render thiết lập một image cho file jar.
Tại root của project, tạo file tên Dockerfile và ghi nội dung setup như sau.
FROM eclipse-temurin:17-jdk-alpine
VOLUME /tmp
COPY build/libs/*.jar App-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","/App-0.0.1-SNAPSHOT.jar"]
EXPOSE 8080
6. Đẩy project lên Github 

Sử dụng git hoặc github desktop để đẩy project của bạn lên Github. Ở đây mình hướng dẫn dùng git với terminal trên Intellij.
Mở .gitignore và xóa dòng sau để github có thể đưa file jar vào git 
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/


Sau đó tại terminal (Alt + F12), nhập lệnh git như sau.
git remote rm origin
git remote add origin https://github.com/lecongdien2000/8techblog-springbot.git
git branch -M main
git push -u origin main
Với đường dẫn https là đường dẫn github trống bạn đã tạo trước đó



7. Deploy project trên Render
 Tạo tài khoản render.com, liên kết với tài khoản Github, và thực hiện deploy.
Chọn New > Web Service

Chọn Build and deploy from a Git repository

Chọn repo bạn đã tạo. Ở đây mình chọn 8techblog-springbot (gõ nhanh nên sai chính tả thông cảm nhé :>)
Nhập vài thông tin cơ bản, và bắt đầu tạo


Chờ một lát và server đã deploy thành công.

Và đây là kết quả:

Lời kết: Như vậy là mọi người đã tìm hiểu được cách tạo project spring boot miễn phí. Hy vọng bài viết này sẽ hỗ trợ các bạn, đặc biệt là các bạn sinh viên trong quá trình học và làm project. ^^ Cảm ơn các bạn đã đọc.

Người viết: Lê Công Diễn

Mang đi nhớ ghi nguồn









Nhận xét

Bài đăng phổ biến từ blog này

TÔI ĐÁNH GIÁ THỊ TRƯỜNG CNTT NĂM 2025 CHO BẠN

  TÔI ĐÁNH GIÁ THỊ TRƯỜNG CNTT NĂM 2025 Cũng như năm 2024, thị trường ngành CNTT trong năm 2025 không có quá nhiều khởi sắc. Tuy nhiên, mình sẽ phân tích một số điểm lưu ý để các bạn nắm bắt được thị trường, đặc biệt đối với các bạn sinh viên đang chuẩn bị ra trường có cơ hội tốt hơn.  Trước khi đi vào bài đọc, các bạn có thể tham khảo hai bài trước để nắm rõ thị trường trong những năm gần đây như thế nào nhé: Bài viết 1: Vì sao xuất hiện tình trạng layoff trong ngành CNTT? Bài viết 2: TÔI DÀNH 3 NGÀY ĐÁNH GIÁ THỊ TRƯỜNG CNTT CUỐI NĂM 2024 CHO BẠN. Mở đầu bài viết, ta cùng tìm hiểu về trending trên TrueUP xem như thế nào nhé (Nhắc lại cho các bạn thì TrueUp crawl các data từ các bài tuyển dụng của các tập đoàn công nghệ lớn) Như các bạn thấy thì sau đợt layoff vào năm 2023, xu hướng tuyển dụng đang dần phục hồi, tuy nhiên vẫn không quá lớn. Theo dữ liệu của Gartner, vốn đầu tư vào ngành IT sẽ tăng 57.4 tỷ đô, tương ứng 9.3% tăng trưởng so với cùng kỳ năm 2024.  Về nguyên ...

TÂN SINH VIÊN NÊN LỰA CHỌN LAPTOP NHƯ THẾ NÀO? (CỰC CHI TIẾT)

  TÂN SINH VIÊN NÊN LỰA CHỌN LAPTOP NHƯ THẾ NÀO (CỰC CHI TIẾT)? Mùa tựu trường cũng đã đến gần, và đây cũng là lúc các bạn sinh viên nhập học chuẩn bị sắm sửa cho mình một chiếc laptop cá nhân, phục vụ cho quãng thời gian học đại học của bạn. Tuy nhiên, vì là tân sinh viên nên bạn chưa hề có bất kỳ kinh nghiệm gì trong việc lựa chọn chiếc laptop phù hợp. Bản thân mình không phải là một tay chơi laptop, tuy nhiên mình có đủ kiến thức cơ bản để tìm kiếm và lựa chọn chiếc laptop phù hợp với bản thân mình. Hy vọng bài viết này sẽ phần nào giúp bạn, có thể là một tân sinh viên, hoặc có thể là một ai đó bất kỳ, tìm ra cho mình một chiếc laptop ưng ý nhất. Trước khi đi thẳng vào việc lựa chọn laptop, mình sẽ đưa ra rõ từ bối cảnh bản thân cho đến thông tin về thị trường laptop. Từ bối cảnh này bạn sẽ có cơ sở lựa chọn và đưa ra quyết định đúng đắn, phù hợp với bản thân hơn. Tiểu sử mua laptop của bản thân mình (tâm lý sinh viên khi mới mua) Vào khoảng thời gian này tầm 7 năm về trước (ngh...

TÔI DÀNH 3 NGÀY ĐÁNH GIÁ THỊ TRƯỜNG CNTT CUỐI NĂM 2024 CHO BẠN.

  TÔI DÀNH 3 NGÀY ĐÁNH GIÁ THỊ TRƯỜNG CNTT CUỐI NĂM 2024 CHO BẠN.   CNTT là một ngành được xem là “xu thế” trong thời đại hiện nay, với lượng nhu cầu công việc nhiều cũng như mức lương trung bình cao hơn so với các ngành khác. Tuy nhiên trong những năm trở lại đây, ngành đang có nhiều dấu hiệu tụt dốc, tiêu biểu như làn sóng layoff (sa thải) trong năm 2023 cực lớn. Chúng ta cùng đánh giá thị trường hiện nay để đưa ra hướng đi phù hợp nhé.