QUESTIONS? CALL: (+84) 24 666 026 12

HiveTech Vietnam (Technology Solutions - Original Ideas - Shared Expertise)

HiveTech Vietnam (Technology Solutions - Original Ideas - Shared Expertise)

HiveTech is a technology company focus on AI and big data technologies for educational purposes.

T (+84) 24 666 026 12
Email: contact@hivetech.vn

HiveTech JSC
No. 3 Thanh Cong, Ba Dinh, Ha Noi

Open in Google Maps
  • HOME
  • SERVICES
  • OUR COMPANY
  • PARTNERS
  • CONTACT
  • RECRUITMENT
FREEQUOTE
  • Home
  • Uncategorized
  • Archive from category "Uncategorized"
2021-01-19

File upload trong Spring

Wednesday, 30 December 2020 by Thao Nguyen















Trong quá trình xây dựng một ứng dụng web nói chung. Việc lưu trữ, xử lý các tệp tin từ các request của người dùng là một tác vụ cơ bản cần phải có. Trong các ứng dụng Java web cũng không là ngoại lệ. Bài viết này mình xin giới thiệu cách xây dựng một ứng dụng Spring Web MCV có khả năng xử lý và lưu trữ các tệp tin được gửi lên thông qua giao thức HTTP.

Bài viết này sẽ tập trung vào cách Xư lý file được upload multilpart-form cùng một số phương pháp lưu trữ cơ bản.

Cấu hình

Xây dựng bằng Spring MVC

Spring cho phép ta xử lý file thông qua một đối tượng MultipartResolver mà Spring cung cấp, Và để nó có thể hoạt động, ta cần phải cấu hình chúng.

Đầu tiên chúng ta cần 1 dependency sau 

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>

Tiếp sau đó ta cần định nghĩa CommonsMultipartResolver Bean vào trong file cấu hình Spring của chúng ta

Java class annotation config

@Configuration
@EnableWebMvc
@ComponentScan(“hivetech.sang.*”)
public class MutilpartFileConfig {
   
    @Bean(name = “multipartResolver”)
    public CommonsMultipartResolver multipartResolver() {
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        multipartResolver.setMaxUploadSize(100000);
        return multipartResolver;
    }
   
}

XML config

<beans xmlns=”https://www.springframework.org/schema/beans”
       xmlns:xsi=”https://www.w3.org/2001/XMLSchema-instance”
       xmlns:context=”https://www.springframework.org/schema/context”
       xsi:schemaLocation=”https://www.springframework.org/schema/beans
       https://www.springframework.org/schema/beans/spring-beans.xsd
       https://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd”>
 
    <context:component-scan base-package=”hivetech.sang.*”/>
    <bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”>
        <property name=”maxUploadSize” value=”1000000″/>
    </bean>
</beans>

Đối tượng CommonsMultipartResolver có nhiều các property khác nhau như: uploadTempDir, defaultEncoding, maxUploadFilePerSize,… Tuỳ vào nhu cầu ta có thể thêm các trường này để config như mong muốn

Vậy là ta đã cấu hình xong. Bây giờ ứng dụng Spring WebMVC của chúng ta đã có thể hỗ trợ upload file như mong muốn.

Xây dựng bằng Spring boot

Với một ứng dụng Spring Boot. Mọi thứ ở trên đều được hỗ trợ. Thậm chí Spring Boot còn khiến nó trở nên dễ dàng hơn nữa khi mà ta không cần phải thực hiện bất cứ công đoạn cấu hình nào. Mọi thứ đã được Spring tự động thêm vào khi chúng ta thêm Web module của ứng dụng Spring boot

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>

 Việc còn lại ta cần làm là tuỳ chỉnh các thông số tương tự như với cách mà Spring MVC làm. Tất cả sẽ được định nghĩa trong file application.properties

spring.servlet.multipart.max-file-size=128KBspring.servlet.multipart.max-request-size=128KB
 #We can also control whether file uploading is enabled, and the location for temp file upload:
spring.servlet.multipart.enabled=true
#define the upload location by variable so that we can use the temporary location for different operating systems.spring.servlet.multipart.location=${java.io.tmpdir}

Các cách lưu trữ file

Lưu trữ file có nhiều phương pháp khác nhau, Tuỳ từng trường hợp ta có thể lựa chọn các cách lưu trữ phù hợp, Các cách lưu trữ phổ biến nhất hiện nay ta có thể kể tới:

  • Lưu trữ trực tiếp vào bộ nhớ của server và lưu tên file vào cơ sở dữ liệu
  • Lưu trữ thẳng vào database dưới dạng binary 
  • Lưu trữ trên các nền tảng đám mây, các server lưu trữ chuyên biệt như GoogleDrive, MinIO, AWS S3,… thông qua các API được cung cấp

Lưu trữ trực tiếp

Đây là phương pháp thường thấy trong các ứng dụng nhỏ, dung lượng các file không lớn do sự đơn giản của nó. Tuy nhiên phương pháp này có nhiều nhược điểm khi mà dữ liệu được lưu trực tiếp sẽ gây tốn cho tài nguyên máy chủ, cùng với đó sẽ khó nâng cấp được khi hệ thống  mở rộng

Ta tạo một đối tượng để có thể lấy ra thông tin về các custom setting được chúng ta tự định nghĩa trong file application.properties

Spring.servlet.multipart.max-file-size=128KB
spring.servlet.multipart.max-request-size=128KB
storage.location=D:/storage
mimes.type=image/jpg,image/png

Tạo một object để đọc config ở trên

@ConfigurationProperties(prefix = “storage”)
public class FileStoreConfig {
    /**
     * Folder location for storing files
     */
    private String location;
 
    public String getLocation() {
        return location;
    }
 
    public void setLocation(String location) {
        this.location = location;
    }
}

Tiếp đó ta sẽ tạo một đối tượng Service gồm các function cơ bản như lưu file, hiển thị

@Configuration
@EnableWebMvc
@ComponentScan("hivetech.sang.*")
public class MutilpartFileConfig {
   
    @Bean(name = "multipartResolver")
    public CommonsMultipartResolver multipartResolver() {
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        multipartResolver.setMaxUploadSize(100000);
        return multipartResolver;
    }
   
}

Tiếp đó ta sẽ tạo một Controller để xử lý request

@RestController
public class FileManagerLocal {
 
    @Autowired
    private FileManagerLocalService fileManagerLocalService;
 
    @GetMapping(“/hello”)
    public String hello() {
        return “hello”;
    }
 
    @GetMapping(“/list-file”)
    public List<Object> listUploadedFiles() throws IOException {
        return Arrays.asList(fileManagerLocalService.loadAll().toArray());
    }
 
    @GetMapping(“/files/{filename:.+}”)
    public ResponseEntity<Resource> serveFile(@PathVariable String filename) {
 
        Resource file = fileManagerLocalService.loadAsResource(filename);
        return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION,
                “attachment; filename=\”” + file.getFilename() + “\””).body(file);
    }
 
    @PostMapping(“/add-file”)
    public ResponseEntity handleFileUpload(@RequestParam(“file”) MultipartFile[] file, @RequestParam(“description”) String desc) {
        return ResponseEntity.ok().body(fileManagerLocalService.store(file));
    }
 
    @ExceptionHandler(FileStoreException.class)
    public ResponseEntity<?> handleStorageFileNotFound(FileStoreException exc) {
        return new ResponseEntity(exc.getMessage(), HttpStatus.I_AM_A_TEAPOT);
    }
}

Ta sẽ test ứng dụng bằng Postman như sau 

Lưu trữ trực tiếp vào database dưới dạng binary

Đây là phương pháp ít được sử dụng hơn do có nhiều nhược điểm như giới hạn về dung lượng, gây khó khăn trong truy xuất dữ liệu,… Tuy nhiên nếu như các tệp tin nhỏ có thể sử dụng phương pháp này nhưng không khuyến khích

Đầu tiên ta tạo một Entity với một trường annotation Lob với kiểu dữ liệu byte[]

@Table(name = "file_entity")public class FileEntity {
@Id
@GeneratedValue
@Column(name = "id")private Long id; 
private String name; 
private String type;
@Lob
private byte[] content;
}

Tiếp đó ta tạo một Repository để thao tác với CSDL

@Repository
public interface FileDBRepo extends JpaRepository<FileEntity, Long> {
    FileEntity findByNameEquals(String filename);
    void deleteByNameEquals(String fileName);
}

Rồi sau đó ta cũng tạo một đối tượng Service cùng một số function cơ bản

@Service
public class FileManagerDBServiceIlpm implements FileManagerDBService {
    @Autowired
    FileDBRepo fileDBRepo;
 
    @Override
    public FileEntity store(MultipartFile file) {
        String fileName = StringUtils.cleanPath(file.getOriginalFilename());
        try {
            FileEntity FileDB = FileEntity.builder()
                    .name(fileName)
                    .type(file.getContentType())
                    .content(file.getBytes())
                    .build();
            return fileDBRepo.save(FileDB);
        } catch (IOException e) {
            throw new FileStoreException(“Cant save file with cause “+e.getMessage(), e);
        }
    }
 
    @Override
    public List<FileEntity> store(MultipartFile[] files) {
        return Arrays.asList(files).stream().map(this::store).collect(Collectors.toList());
    }
 
    @Override
    public void delete(String filename) {
        fileDBRepo.deleteByNameEquals(filename);
    }
 
    @Override
    public Resource loadAsResource(String filename) {
        return new ByteArrayResource(fileDBRepo.findByNameEquals(filename).getContent());
    }
}

Tạo Controller để xử lý Request 

@RestController()
@RequestMapping(path = “/db-manager”)
public class FileManagerDB {
    @Autowired
    FileManagerDBService fileManagerDBService;
 
    @GetMapping(“/hello”)
    public String hello() {
        return “hello”;
    }
 
    @GetMapping(“/files/{filename:.+}”)
    public ResponseEntity<Resource> serveFile(@PathVariable String filename) {
 
        Resource file = fileManagerDBService.loadAsResource(filename);
        return ResponseEntity.ok().body(file);
    }
 
    @PostMapping(“/add-file”)
    public ResponseEntity handleFileUpload(@RequestParam(“file”) MultipartFile[] file, @RequestParam(“description”) String desc) {
        return ResponseEntity.ok().body(fileManagerDBService.store(file));
    }
}
 

Ta tiến hành upload một ảnh 

Dữ liệu đã được lưu trong database dưới dạng nhị phân

Kiểu dữ liệu Blob trong mySQL có dung lượng lưu trữ lên tới 4GB (LONGBLOB)

Kết luận

Từ các ví dụ trên ta có thể thấy các cách lưu trữ khác nhau và tự rút ra được ưu nhược điểm. Cùng với đó là cách khởi tạo mà triển khai một ứng dụng Spring web hỗ trợ thao tác và xử lý file.

Ngoài ra chủ đề về upload và lưu trữ file trên các nền tảng đám mây sẽ được bổ sung trong 1 chủ đề khác.

Phần code chi tiết có thể xem tại đây Link

Phạm Đức Sang

#Spring_MVC
Read more
  • Published in Uncategorized
No Comments

HiveTech có yêu cầu bằng cấp trong tuyển dụng ??!!

Monday, 27 July 2020 by Thao Nguyen













Gần đây, nhiều bạn thường inbox hỏi HR của HiveTech về việc chúng mình có yêu cầu bắt buộc về bằng cấp trong tuyển dụng và phỏng vấn không? Hôm nay, chúng mình sẽ chia sẻ góc nhìn về câu chuyện bằng cấp trong tuyển dụng tại HiveTech dưới đây:

📜 Với HiveTech, bằng cấp chỉ là yếu tố ban đầu nhưng không phải yếu tố bắt buộc, còn điều quyết định có tuyển dụng hay không là năng lực của cá nhân ứng viên. Có thể bằng cấp của bạn không có hoặc không đẹp nhưng qua vòng CV chúng tớ nhận thấy bạn thực sự có tư chất và thái độ tốt phù hợp với công việc thì bạn hoàn toàn có cơ hội được chứng minh năng lực qua vòng phỏng vấn tại HiveTech.

🙆‍♂️ Nếu bạn không có lợi thế về bằng cấp, không sao, hãy chọn lọc những ưu điểm về cá nhân bạn (những gì bạn đã nỗ lực, đã học hoặc làm…) để làm điểm sáng trong CV cũng như vòng phỏng vấn của mình. Chỉ cần chúng tớ thấy được “bạn biết mình muốn gì và luôn trong tâm thế sẵn sàng học hỏi, hoàn thiện bản thân” phù hợp với giá trị của HiveTech, bạn chắc chắn sẽ được tuyển chọn.

👨‍🎓 Bằng cấp là điều rất cần trong thời đại hiện nay, nhưng vẫn chưa phải là tất cả. Một tấm bằng không thể nào đảm bảo về kỹ năng làm việc và tác phong của một người nhân viên. Bằng cấp chỉ là chứng nhận cho biết bạn có kiến thức và kỹ năng để bước vào nghề, nhưng những điều này không hoàn toàn đảm bảo bạn sẽ phù hợp với nghề cũng môi trường làm việc của ngành.

👉 Mặc kệ rào cản về bằng cấp, miễn là bạn biết là bạn muốn đi bao xa trong nghề và hiện tại đã có gì (kiến thức, kỹ năng, thái độ,….), hãy cứ tự tin gửi CV về mail: hrd@hivetech.vn để chúng ta có sớm cơ hội trở thành đồng nghiệp của nhau nhé!

Tuyển_dụng
Read more
  • Published in Uncategorized
No Comments

Pseudocode & Diagram – SUPER EASY MADE ??!!

Monday, 27 July 2020 by Thao Nguyen













Câu hỏi “WHAT THE HECK??” LOL

– Đa phần các bạn tôi phỏng vấn vào công ty hoặc các bạn thực tập sẽ có suy nghĩ như vậy.

– Theo tôi 2 thứ đó là phần tất yếu & là kĩ năng quan trong của lập trình viên. Nếu như không biết, thì thôi khỏi nói > BẠN ĐÃ TỤT HẬU RỒI.

– Khi tôi vào đại học được học C++, Algorithm and data structure, về sau được học UML. Thầy/cô đều dạy Pseudocode, flow chart, diagram. NHƯNG có một điều tôi thấy nó quá nhàm chán và làm theo qua môn, đối phó.

Nhưng khi vào thực tập, anh trainer hỏi nhóm tôi về 3 thứ đó, cả ba trả lời không biết & anh ấy nói rằng: “Hãy vẽ thứ đó khi giải quyết một vấn đề!”

Kinh khủng thay do những thói quen từ xưa xưa, chúng tôi cắm đầu viết code luôn. SỰ THẬT ĐÁNG BUỒN: chúng tôi luôn bị tắc (dù task đó khá đơn giản), suy nghĩ không thông. Cứ như vậy trong một tháng không làm theo bước đó, các bạn biết không? Chúng tôi thu được con số 0 tròn trĩnh, chả biết thứ gì. Chúng tôi chợt nhận ra đã thiếu sót thứ gì, đúng là CÁ KHÔNG ĂN MUỐI CÁ ƯƠN.

– Tôi, Kiên, An bắt đầu viết những đoạn pseudocode, diagram đầu tiên. Có thể nói rằng chúng tôi đã giải quyết được bài toán đó ở một cách chập nhận được.

Lặp đi lặp lại, ngày qua ngày, chúng tôi đều bắt đầu quen tay hơn.

Khó khăn à, nhiều ấy chứ, do chúng tôi quen tay code luôn nên mất thời gian thích nghi với cách tiếp cận “MỚI” này.

– BÂY GIỜ & Ở ĐÂY, chúng tôi luôn thực hiện nó & là style của chúng tôi nói riêng và công ty nói chung.

– Task tích hợp hệ thống tôi & Kiên nhận, chúng tôi dùng khá nhiều thời gian để vẽ diagram & pseudocode, review nhiều lần mới được kết quả như mong muốn.

– Cách làm như nào ư, rất đơn giản, 1 quyển vở 5k, 1 cây bút và thực hiện những nét viết đầu tiên.

Ví dụ ” Hello Java ” ROFL, just kidding.

– Bắt đầu các em ơi.

Một task khá là “đơn giản”:

Đồng bộ hóa danh sách user từ hệ thống B vào hệ thống A:
nếu A -> B trùng: giữ nguyên nếu A có, B không: thêm vào B nếu B có, A không: Xóa B nếu user trên B là GUEST thì không làm gì

– Tôi sẽ giải quyết như sau, vẽ 2 quả trứng. BÙM tôi đã có sơ đồ:

Pseudocode
– lấy danh sách User A
– lấy danh sách User B
– Cho 2 thứ đó giao với nhau, ta được hình tròn & eclip
– Tự nội suy phần mầu hồng là gì
– Chấm đỏ là GUEST
– Thêm right pink vào B (dùng một list để lưu right pink)
– Ktra chấm đỏ thì bỏ qua
– Xóa left pink (dùng một list để lưu left pink)
OMG vấn đề được giải quyết

– Các ngôn ngữ như C#, JS, Java Python đều có Collections, thao tác giao list, lấy phần dôi, đã hỗ trợ sẵn chỉ cần google.

– Nhưng để làm như trên cần thời gian dùi mài kinh sử viết Pseudocode & chart hết 3 quyển hồng hà đó LOL

– Tôi giao task đó cho bạn fresher làm, mất 3 ngày vẫn tắc, các bạn biết lỗi ở đâu rồi đó. Không làm 2 bước trên mặc dù tôi & Kiên đã chỉ. Nhìn code đó 3 sau 3 ngày cậu ấy làm mà tôi ngao ngán, có làm 1 tuần thì cũng vẫn vậy, 3 lớp lồng nhau, vài cái biến đếm tính số user, flag các kiểu.

– Nhiều trường hợp funny nữa: một task chỉ cần làm trong 30p, 1h, 2h là có kết quả, nhưng làm mất 3 ngày, 5 ngày.

– Tôi và Kiên đã quán triệt rằng: “thực hiện hay không tùy chú, muốn nói chuyện với anh thì hãy vẽ đi!!”.

CLICK TO OPEN TREASURE /klik/ /to͞o/ /ōpən/ /ˈtreZHər/

Trần Mạnh Chung

DiagramHiveTech_sharingKinh_Nghiệm_Làm_ViệcPseudocode
Read more
  • Published in Uncategorized
No Comments

KINH NGHIỆM KHI ĐI LÀM VIỆC ONSITE

Wednesday, 22 July 2020 by Thao Nguyen











Onsite là một trải nghiệm lý thú trong hành trình phát triển của mỗi lập trình viên. Sau đây hãy cùng nghe một chia sẻ thực tế từ một anh lập trình viên đi onsite tại HiveTech, hãy xem bạn ấy có những trải nghiệm như thế nào nha…

Bạn hãy giới thiệu đôi chút về bản thân

Xin chào, mình tên là Tùng, sinh năm 1994, hiện mình đang sinh sống và làm việc tại Hà Nội. Mình là một Frontend Developer đang đi onsite cho một dự án tại HiveTech.

Cơ duyên nào đã dẫn đến việc bạn đi onsite tại HiveTech ?

 Thực ra việc mình đi làm việc onsite tại HiveTech cũng khá là tình cờ. Lúc đó mình mới vào công ty chính được khoảng vài ngày. Anh sếp cũng giới thiệu và muốn cho mình đi onsite luôn. Hồi đó mới vào, sếp bảo gì là mình làm theo thôi. Anh sếp có bảo hiện công ty có một số đối tác đang muốn thuê người về làm. Trong các dự án anh giới thiệu,  mình ấn tượng với một dự án mà anh bảo là em sẽ được làm việc với người nước ngoài giúp tăng khả năng giao tiếp tiếng anh. Nghe có vẻ hấp dẫn nên mình nhận lời luôn.

Thế là chiều hôm đấy mình đi phỏng vấn tại công ty đó. Ấn tượng của mình về công ty lúc đó là công ty khá nhỏ, ít người khác xa so với tưởng tượng của mình. Trước khi đến phỏng vấn mình cũng tìm hiểu trước về công ty mình sẽ làm việc trông như nào. Phỏng vấn mình là hai anh trông khá lớn tuổi và chững chạc. Buổi phỏng vấn diễn ra khá nhanh, vui vẻ và thoải mái.

Sau đó vài ngày mình có nhận được mail bảo rằng mình chưa phù hợp với vị trí hiện tại của công ty. Thực sự lúc đó cũng có hơi chút buồn. Anh sếp có động viên và bảo mình tiếp tục tham gia một số dự án công ty đang làm để học hỏi thêm kinh nghiệm. Vậy là mình ở lại làm công ty chính khoảng hai tuần. Rồi bỗng nhiên tới một hôm anh sếp bảo rằng chỗ đối tác kia muốn thuê em về làm việc. Mình có chút bất ngờ, bối rối nhưng rồi cũng nhận lời luôn. Còn sau đó thì là những trải nghiệm tuyệt vời không thể nào quên…..

Anh Tùng, hàng đầu thứ 3 bên phải

Khó khăn mình gặp phải trong quá trình làm việc

Lúc mình sang bên này làm thì mình cũng đã khá quen với môi trường ở công ty chính, được nói chuyện và làm việc với mọi người ở đó nên mình cũng thực sự không muốn đi đâu cả. Sang làm việc cho đối tác là mình lại phải bắt đầu làm lại từ đầu, từ làm quen với đồng nghiệp mới, tìm hiểu quy trình làm việc mới và cả những kiến thức mới. Lúc đó mình mới chỉ trải qua 6 tháng kinh nghiệm làm React Js nên mình có hơi chút lo lắng liệu không biết mình có làm được việc không. Hơn nữa, dự án này lại chỉ có mỗi mình là làm Frontend nên về giao diện gần như mình phải tự mình làm hết, không ai có thể support mình cả. Lúc mới vào anh leader có bảo mình overview source code và update các kiến thức mới. Hôm sau anh giao cho mình làm thử một task nhỏ.

Mình bắt đầu tiến hành làm nhưng khổ nỗi dự án này trước đó đã có một người làm để lại, code của anh ấy viết khá rối và không có rõ ràng nên mình mất rất nhiều thời gian chỉ để đọc hiểu những gì anh ấy đã viết. Thú thực cũng có những lúc mình rất chán nản, suy nghĩ về cuộc đời bản thân và muốn buông xuôi tất cả. Nhưng nghĩ đến những đồng tiền sắp kiếm được, nghĩ đến bố mẹ đang trông mong ở nhà mà mình đã cố gắng suy nghĩ bình tâm lại và tự nhắn nhủ bản thân mình sẽ làm được. Mưa dầm thấm lâu, trời không phụ sự cố gắng của mình nên cuối cùng mình cũng đã hiểu ra và hoàn thành được first task. Tuy mất tới tận 3 ngày nhưng đó là bước đệm đầu tiên giúp mình tự tin hơn để hoàn thành những công việc sau này.

Không chỉ có khó khăn về mặt chuyên môn, chuyện đi lại cũng khiến mình gặp một chút khó khăn. Địa chỉ công ty đối tác xa hơn công ty mình thêm khoảng 1, 2 km nên mình phải dậy sớm hơn để đi làm cho kịp giờ, hơn nữa trên đường đi lại có rất nhiều anh công an luôn nhăm nhe bắt mình. Có một lần mình đang đi lúc rẽ trái mình có đi vào làn đường BRT, thì tự nhiên có một anh công an xuất hiện. Lúc đó trong đầu mình nghĩ thôi xong rồi, kiểu gì cũng sẽ mất tiền. Nhưng không, thật là may mắn ông trời có mắt vẫn thương mình. Do mình vẫn bật xi nhan trái nên anh ấy ko bắt mình mà bắt anh bên cạnh. Mình hú hồn, thở phào nhẹ nhõm. Đúng là ở hiền thì gặp lành. Sau vụ đó mình rút kinh nghiêm thay vì phải chạy lên trên để rẽ trái thì mình sang trái trước đó một đoạn, mặc dù đi trái đường nhưng các anh ấy ko thể bắt mình được nữa vì các anh ấy chỉ bắt phía trên thôi ( cười ) !!!

Kỷ niệm đáng nhớ nhất?

Khi làm việc tại đây mình có rất nhiều kỷ niệm vui nhưng đáng nhớ nhất có lẽ là chuyến đi du lịch 2 ngày 1 đêm tại Vịnh Hạ Long, Quảng Ninh. Bọn mình đã cùng nhau đi thăm quan động Mê Cung, bảo tàng Quảng Ninh, chèo thuyền, chơi các trò chơi tại Sun World. Khi về homestay bọn mình lại cùng nhau nướng thịt, chuẩn bị đồ ăn và party. Những hoạt động như vậy giúp mình và cả team xả stress sau những ngày làm việc căng thẳng cũng như tăng thêm sự gắn bó tình cảm thân thiết giữa các thành viên. Đó là những trải nghiệm thú vị, bổ ích mà mình sẽ không bao giờ quên.

Anh Tùng, hàng cuối ngoài cùng bên phải

Sai lầm đáng nhớ nhất và bài học bạn rút ra được?

Có một lần anh leader có đăng trên nhóm chat bảo tại sao chức năng chuyển tiền không hoạt động. Lúc đó là sau giờ làm, khoảng 7h tối, mình đang ở nhà và có tình cờ đọc được. Thế là mình mở máy lên xem. Sau khi check một lượt không thấy có vấn đề gì, mình có nhắn lại cho anh leader. Anh ấy bảo mình nếu đã thấy ok về mặt technical thì thử chuẩn bị test chức năng chuyển tiền đó luôn. Nhưng anh dặn chỉ được phép thử đối với trường hợp số tiền nhỏ là X$ do bên đối tác tự tạo ra để test, chứ không được phép ấn chuyển tiền đối với giao dịch của khách hàng. Mình nhớ lời anh dặn và thực hiện test.

Sau khi làm xong mình có gửi ảnh chụp lại việc mình thực hiện thành công. Đợi một lúc sau, tự nhiên anh Leader hỏi tại sao chưa thấy có chuyện gì xảy ra và hỏi mình có ấn nhầm gì không. Lúc đầu mình bảo là không có nhầm lẫn gì cả nhưng lúc sau mình mới phát hiện là thì ra mình đã ấn nhầm chuyển tiền đối với giao dịch có trị giá tận XXX$ thay vì là giao dịch trị giá X$. Anh leader cũng tá hỏa lên rồi mắng mình tại sao không check kỹ rồi mới thực hiện.

Cuối cùng, anh ấy phải nhờ bên đối tác can thiệp để xử lý. Sau sự cố đó, mình rút ra được bài học là trước khi test một cái gì đó thì phải kiểm tra thật kỹ trước khi thực hiên nếu không sẽ gây ra hậu quả nghiêm trọng nhất là khi mình đang test trên sản phẩm đang vận hành có chứa rất nhiều thông tin của khách hàng thì mình cần phải cẩn thận hơn nữa. Và nếu như chẳng may xảy ra vấn đề phát sinh thì cần chụp lại các bước mình mình đã thực hiện làm kết quả đối chiếu. Trong cuộc đời thì ai cũng có thể mắc sai lầm, quan trọng là cách mình đối diện và khắc phục nó.

Những điều gì bạn học được ?

Trong quá trình làm việc tại đây, mình đã học và hoàn thiện được rất nhiều kỹ năng chuyên môn. Một phần cũng do chỉ có mình làm Frontend, phải tự làm, tự trải nghiệm, tự vấp ngã, tự sửa nên đã giúp mình có thêm rất nhiều kinh nghiệm quý báu. Hồi mới vào, mình còn chưa nắm rõ React Hooks là gì hoạt động ra sao, nhưng sau một vài tháng tự mày mò mình đã hiểu hết được các công dụng của chúng. Ngoài kiến thức chuyên môn, mình cũng đã học được thêm kỹ năng giải quyết vấn đề, kỹ năng phân tích. Có thể nói quá trình đi onsite đã giúp mình có bước chuyển lớn từ một fresher bình thường thành một junior có nhiều kinh nghiệm.

Đi làm onsite cũng giúp mình có thêm thu nhập vì khi đi làm onsite mình được công ty chính hỗ trợ thêm tiền mỗi ngày. Khoản tiền tuy không quá lớn nhưng giúp mình trang trải thêm chi phí sinh hoạt hằng ngày. Vì mình làm cho cả 2 công ty nên bất cứ sự kiện tổ chức nào mình đều có quyền được tham gia. Mình được đi year end party 2 lần, sắp tới còn được đi du lịch 2 lần nữa.

Quá trình đi onsite cũng giúp mình gặp thêm nhiều bạn mới, cùng nhau làm việc, cùng nhau vui chơi, chia sẻ những tâm sự, buồn vui trong cuộc sống.

Anh Tùng, hàng cuối thứ 1 bên phải

Kế hoạch sắp tới của bạn là gì ?

Do dự án hiện tại vẫn đang được phát triển nên mình vẫn sẽ tiếp tục làm ở đây cho tới khi dự án hoàn thành. Vì mình cũng đã làm Frontend được một thời gian rồi nên mình cũng đang có mong muốn học thêm Java nhằm đạt được mục tiêu trở thành Fullstack Web Developer. Thật may mắn khi tại HiveTech có rất nhiều anh làm Java giỏi và họ cũng rất sẵn sàng giúp đỡ, chỉ bảo tận tình. Hy vọng sắp tới mình có thể đạt được mục tiêu của mình.

Lời khuyên cho các bạn đi muốn onsite ?

Một khi bạn đã đi onsite thì có nghĩa là bạn đã đại diện cho hình công ty vậy nên hãy chuẩn bị thật kỹ những kiến thức, kỹ năng để giúp quá trình đi onsite được diễn ra tốt đẹp. Thêm nữa, bạn cũng nên chuẩn bị một tinh thần thật tốt, vững vàng để khi gặp bất cứ tình huống nào thì cũng sẽ không bị nản chí. Mình chúc các bạn onsite sẽ luôn hết mình vì công việc, luôn luôn có trách nhiệm hoàn thành tốt các công việc được giao. Chúc cho biệt đội đánh thuê sẽ ngày càng lớn mạnh và gặt hái được nhiều thành tích tốt hơn nữa!!!

P/s: Hiện nay HiveTech chúng mình đang tuyển dụng nhiều vị trí. Hãy click để xem chi tiết.

Lê Duy Tùng

Dev_OnsiteKinh_nghiệm-OnsiteOnsite
Read more
  • Published in Posts, Uncategorized
No Comments

THỰC TẬP SINH TẠI HIVETECH

Tuesday, 21 July 2020 by Thao Nguyen

 









Những chương trình thực tập dạng “pha trà và photocopy” thực sự đã lỗi thời, gây lãng phí và không còn xuất hiện ở các doanh nghiệp năng động. Còn đối với HiveTech, mùa Hè là lúc mà chúng mình được hân hoan chào đón các bạn sinh viên tới trải nghiệm chương trình thực tập Hè tại công ty. Sau đây là những điều cần biết về chương trình thực tập sinh tại HiveTech chúng mình, hy vọng giúp các bạn nằm lòng các thông tin, và biết đâu chúng ta lại có duyên với nhau trong mùa hè nào đó thì sao?

1. Yêu cầu dành cho các bạn thực tập sinh      

– Tốt nghiệp/sắp tốt nghiệp đại học hoặc cao đẳng  ngành CNTT;

– Có tư duy logic tốt;

– Có kiến thức cơ bản về lập trình WEB JAVA(JAVA / HTML5/ CSS3/ JavaScript/ JQuery);

– Có thái độ cầu tiến,  luôn sẵn sàng học hỏi các công nghệ, ngôn ngữ lập trình mới;

– Có khả năng đọc hiểu tài liệu kỹ thuật bằng tiếng anh tốt.    

2. Các công việc của thực tập sinh    

– Tham gia phân tích, thiết kế, và cải tiến chức năng cho các sản phẩm của công ty;

– Phối hợp làm việc với team, đưa ra ý tưởng cải tiến sản phẩm;

– Nghiên cứu sâu, tìm hiểu kỹ các công nghệ mới, giúp đỡ các team members;

– Tham gia vào các hoạt động và chương trình training của Công ty.     

3. Những việc cần chuẩn bị trước khi đi thực tập       

– Củng cố lại kiến thức chuyên môn đã học để đi sâu nghiên cứu, thực hành tại HiveTech;

– Tìm hiểu về văn hóa HiveTech để có cách ứng xử và thái độ tác phong phù hợp        

4. Những việc nên làm trong khi thực tập    

– Trau dồi và rèn luyện kỹ năng mềm như kỹ năng giao tiếp, kỹ năng làm việc nhóm,…

– Thực hiện đúng nội quy tại HiveTech, đảm bảo kỷ luật, có trách nhiệm trong công việc;

– Chủ động tiếp cận công việc, sẵn sàng hỗ trợ các anh chị đồng nghiệp để có thể hoàn thành các công việc chung, tự khẳng định năng lực bản thân.    

5. Điều cần tránh trong quá trình thực tập        

– Nghỉ thực tập không có phép hoặc tự ý thay đổi chỗ thực tập;     

– Không vi phạm thỏa thuận bảo mật thông tin của HiveTech.       

6. Kết luận  

Cuối cùng, chúng mình mong muốn được tạo điều kiện cho sinh viên có cơ hội cọ xát với thực tế, gắn kết những lý thuyết đã học với môi trường làm việc tại Công ty. Từ đó, xây dựng định hướng dài hạn nếu muốn phát triển bền vững trong nghề. Vì vậy:

– Hãy luôn đặt mình vào vị trí như một nhân viên chính thức để có cái nhìn đúng đắn về quá trình thực tập và có sự chuẩn bị tốt nhất sau khi ra trường;

– Hãy xem đây là khoảng thời gian quý báu để bạn rèn luyện bản thân và có một trải nghiệm thực thi nghề nghiệp thú vị nha.      

Các bạn sinh viên ơi, các bạn sinh viên à, hè này các bạn có kế hoạch gì chưa? Nếu chưa hãy, nhanh chóng gửi CV qua email: hrd@hivetech.vn để được trải nghiệm kỳ thực tập thực chiến tại HiveTech nha.

internshipIT_internThực_tập_sinh
Read more
  • Published in Uncategorized
No Comments

ĐI THỰC TẬP SỚM, TẠI SAO KHÔNG?

Monday, 13 July 2020 by Thao Nguyen














1. Tại sao tôi cần phải đi thực tập ở thời điểm hiện tại

Xin chào mọi người, mình tên là Hiếu, hiện tại là sinh viên năm 3 ngành công nghệ thông tin, trường Đại Học Xây Dựng. Sau gần 3 năm học tại trường, mình đã học được 1 số môn nền tảng cho ngành như Tin học đại cương, Thuật toán và Cấu trúc dữ liệu, Cơ sở dữ liệu, Lập trình C++, Lập trình hướng đối tượng, lập trình Assembly, … 

Tuy nhiên, nhắc đến sinh viên Xây Dựng mọi người thường liên tưởng tới những công trình, tòa nhà, con đường cao cao mãi, chứ mấy ai nghĩ rằng học CNTT lại vào ĐH Xây dựng? Vì thế mình thường xuyên được hỏi kiểu: “học Xây Dựng ngành CNTT ra có làm được việc không, sao mà bằng các trường top 1 được…” Nhưng mình tin rằng môi trường học là nơi bổ trợ 1 phần kiến thức nền cho nghề, chứ không thể quyết định năng lực làm việc của mình được. 

  Đó là lý do tại sao mình lại muốn tìm chỗ thực tập, để được trải nghiệm kiến thức thực tế bên ngoài, tìm kiếm kinh nghiệm cho bản thân về ngành nghề mình theo đuổi, từ đó đưa ra những quyết định sáng suốt cho hành trình tương lai. Mình cứ nung nấu ý định học hỏi bên ngoài và tìm cơ hội thực tập trong suốt những tháng đầu của năm 3 cho tới một ngày….


2. Kỳ thực tập tại HiveTech 

Trong thời gian mình ra ngoài học hỏi, trải nghiệm, mình may mắn gặp được thầy Lê, một người có nhiều năm kinh nghiệm trong ngành và luôn kiên nhẫn chỉ ra những thiếu sót của mình.  Do đó mình luôn mong muốn trong suy nghĩ là giá như được đi theo thầy để học hỏi, được thực tập ở chỗ thầy giáo thì thật tuyệt vời.  May mắn thay, sau 1 kỳ tuyển chọn thực tập sinh, thì mình trúng tuyển tại công ty. Vậy là mình chính thức trở thành thực tập sinh tại HiveTech.

Từ khi thực tập tại HiveTech, mình đã trang bị được thêm rất nhiều kiến thức nền tảng cho ngành và có định hướng rõ ràng hơn chứ không còn mơ hồ như xưa nữa.

Trải nghiệm tạo nên kinh nghiệm

Tại HiveTech, mọi người làm việc thực sự năng động và chuyên nghiệp. Mỗi sáng tại 1 khung giờ cố định, mọi người từ các đội sẽ cùng DAILY để nói về những việc đã làm hôm qua và những việc dự định trong hôm nay, và đó là mô hình hoạt động Scrum mà HiveTech sử dụng hàng ngày.

Qua chia sẻ của các anh chị, mình nhận ra khi đi thực tập không nên suy nghĩ là đi để học, mà phải suy nghĩ là đi để làm. Mà đã làm việc là phải có trách nhiệm, tuân thủ các quy trình, quy định chung của tổ chức. 

Khi đi thực tập, chúng ta sẽ được học cách làm việc từ các anh chị trong tổ chức, những kiến thức từ việc mình giải quyết vấn đề, hay kể cả từ những task mà chúng ta được giao, chúng ta cũng học hỏi được nhiều thứ từ những task đó.

Bên cạnh đó, mình cũng rất thích văn hóa công ty, ngoài thời gian tập trung cho công việc còn có những khoảng thời gian nghỉ giữa giờ, tập thể dục và  các buổi “talk sharing” về một kiến thức nào đó trong cuộc sống, cách hoạt động, tương tác sao cho chuyên nghiệp trong tổ chức. 

Học và làm việc với công nghệ mới, kiến thức mới

Mình đã được học cách phân chia từng bước để giải quyết một task được giao và rút ra được bài học rằng: “Cứ cắm đầu vào code luôn, thì không thể nào mà giải quyết được vấn đề, hay thậm chí là làm nó phức tạp hơn. Nên tìm ra keyword, học cách search thông tin và biết sử dụng kết quả của người khác sao cho hiệu quả nhất.”

Khi gặp các vấn đề và kiến thức mới, mình sẽ ghi lại và làm một bài thuyết trình, đây là cơ hội tìm để mình tìm hiểu sâu hơn và chia sẻ lại cách hiểu của mình cho các anh chị góp ý thêm.

Khi đi thực tập tại HiveTech mình được tiếp cận sâu hơn các khái niệm và ứng dụng của Java Spring, Spring Core, Spring MVC, Spring Boot, Spring Data, Spring Security, Design Pattern… hay các loại cơ sở dữ liệu SQL và NoSQL, …. Khi đi học chúng ta thấy các thuật toán rất khó, và không cần thiết, giống như học toán cấp 3 vậy hoặc đôi khi hỏi các anh/chị đi trước, họ có thể nói sau này đi làm không bao giờ cần. Nhưng mình không nghĩ vậy, trong quá trình thực tập, mình càng thấy rằng thuật toán thực sự quan trọng. Mặc dù chúng có thể không dùng nhiều, nhưng nó có thể làm  tăng độ nhạy của tư duy,  giảm bớt số lượng code, làm cho một sản phẩm hoạt động nhanh và ổn định. 

Giải quyết vấn đề, ứng phó với những thách thức ngoài tầm

Khi vừa đi học, vừa đi làm, bạn sẽ học được cách phân chia thời gian và sắp xếp công việc để có thể đảm bảo đúng tiến độ, và vượt qua những áp lực.

Ngoài ra, từ xưa mình đã quá quen với tư duy xuôi , nhưng tại HiveTech mình đã được học và rèn luyện thói quen tư duy ngược để giải quyết vấn đề.


3. Kinh nghiệm rút ra cho mình và các bạn sinh viên muốn đi thực tập sớm

Vậy đi thực tập sớm liệu có phải lựa chọn đúng. Sau gần nửa năm thực tế mình rút ra được như lợi ích và khó khăn như sau.

Lợi ích của việc đi thực tập sớm song song với đi học:

– Mình sẽ học được cách làm việc chuyên nghiệp vì bạn phải thay đổi để thích nghi với 1 tổ chức chuyên nghiệp như các quy tắc khi làm việc, cách tương tác với mọi người trong đội, …

– Mình sẽ nắm bắt được nhiều kiến thức thực sự cần khi đi làm thực tế.

– Được tiếp xúc với những anh chị đi trước, họ có nhiều kinh nghiệm và có thể dạy cho mình nhiều thứ.

– Sau này mình tự tin để ghi những trải nghiệm đó vào CV làm điểm nhấn cho hồ sơ của mình. 

Khó khăn khi đi thực tập sớm song song với đi học:

– Mình sẽ phải làm nhiều việc hơn, cả thực tập và trên trường, đồng nghĩa thời gian dành cho bản thân sẽ ít đi, từ nghỉ ngơi, đến chơi bời, học hành (bạn nào có gấu thì lại càng cân não hơn giữa chọn việc hay chọn em…)

– Thời gian học ít hơn, nếu lơ là bỏ quên việc học là ôi thôi xong điểm kém và học lại sẽ vẫy gọi bạn ngay và luôn. Nhưng nếu để ý và tập trung 1 chút là ổn áp sẽ oki ngay, việc học – thi – làm đồ án như hổ mọc thêm cánh, học ít nhớ lâu, áp dụng thực tế linh hoạt. 

– Trong quá trình làm việc, nhiều kiến thức mới chưa được học phải ngồi mày mò tìm tòi từng vấn đề rồi sắp xếp lại mà vẫn phải hoàn thành nhiệm vụ đúng deadline.

 Cuối cùng mình chỉ muốn nhắn nhủ rằng đi thực tập sớm hay dành thời gian toàn tâm cho việc học là lựa chọn của mỗi người.  Hãy xác định rõ hướng đi của mình để đưa ra lựa chọn phù hợp. Còn nếu bạn đã chọn đi thực tập sớm như mình, hãy cố gắng tận dụng khoảng thời gian này để có thể tiếp nhận được nhiều kiến thức nhất có thể. 

Chúc các bạn có những kỳ thực tập giá trị!

Phan Văn Hiếu

Read more
  • Published in Uncategorized
No Comments

HIVETECH-ER WAY OF LIVE

Wednesday, 24 June 2020 by Thao Nguyen












Tại HiveTech mỗi nhân sự khi đến với chúng mình đều được chia sẻ rất kỹ về văn hóa doanh nghiệp, đặc biệt là phần giá trị sống. Vậy Tại sao chúng mình lựa chọn “Self-motivation + Self-discipline” là giá trị sống mà chúng mình theo đuổi?

Các nghiên cứu chỉ ra rằng sự phát triển của cá nhân nếu xuất phát từ nội lực tự thân thì sẽ đi rất bền vững, mà động lực và kỷ luật tự thân lại là những thành tố quan trọng tạo nên nội lực tự thân. Sau đây chúng mình sẽ chia sẻ cụ thể hơn về hai thành tố này.

Đầu tiên là Self motivation – Động lực tự thân, khởi nguồn những ý nghĩ sâu sắc về chính mình

HiveTech tin rằng người có động lực tự thân là người có khả năng làm việc gì cần phải làm, luôn tìm thấy được một lý do và sức mạnh để tiếp tục tiến lên ngay cả khi đối mặt với những khó khăn, biết nắm bắt cơ hội và thể hiện cam kết với những gì muốn đạt được.

Bốn yếu tố tạo nên động lực động lực tự thân mà chúng mình luôn nhắc nhở là: 

– Personal drive to achieve: mong muốn cải thiện hoặc đáp ứng các tiêu chuẩn nhất định;

– Commitment: cam kết với các mục tiêu cá nhân hoặc tổ chức; 

– Initiative: sẵn sàng hành động theo cơ hội  

– Optimism: khả năng tiếp tục và theo đuổi mục tiêu khi đối mặt với thất bại hay còn được gọi là khả năng phục hồi.

Thứ hai là Self discipline – Kỷ luật tự thân, tạo ra những hành động có tính cam kết để hiện thực những ý nghĩ muốn đạt được cho bản thân mình 

 Chúng mình coi kỷ luật tự thân là biểu hiện của sức mạnh nội tâm và sức mạnh bền bỉ, thực hiện có điều độ trong những gì cần làm, trở nên kiên nhẫn hơn, khoan dung, hiểu biết và cẩn trọng hơn mọi việc. Chính vì vậy, kỷ luật tự thân sẽ giúp HiveTech-er chịu được áp lực và ảnh hưởng bên ngoài để có khả năng kiểm soát cuộc sống của chính mình, đặt ra các kế hoạch và thực hiện từng bước cụ thể để đạt được mục tiêu đã đề ra. 

 Sáu yếu tố để tạo nên một người có kỷ luật tự thân: 

– Acknowledge Your Weaknesses: chấp nhận điểm yếu của bản thân 

– Establish a Clear Plan: thiết lập mục tiêu rõ ràng 

– Remove the Temptations When Necessary: loại bỏ các cám dỗ khi không cần thiết

– Practice Tolerating Emotional Discomfort: thực hành chịu đựng (chấp nhận/ khoan dung) những cảm xúc khó chịu 

– Visualize the Long-Term Rewards: Hình dung (tưởng tượng) phần thưởng trong dài hạn  

– Recover From Mistakes Effectively: Phục hồi (Khắc phục) một cách hiệu quả những sai lầm 

HiveTech luôn coi con người là chìa khóa quan trọng của sự phát triển trong tổ chức, vì vậy chúng mình lựa chọn giá trị sống tuy rất chiều sâu nhưng vô lại cùng thách thức. Nếu các bạn cũng đang tìm một tổ chức như vậy để tôi rèn năng lực làm việc, nghị lực cá nhân thì hãy đến và khám phá ngôi nhà HiveTech cùng chúng mình nhé!

CultureHiveTechSefl_motivaition
Read more
  • Published in Uncategorized
No Comments

MỐI QUAN HỆ BIỆN CHỨNG GIỮA JAVASCRIPT VÀ JAVA?

Monday, 01 June 2020 by Thao Nguyen











Phần I: Nguồn gốc của các câu chuyện: nơi tất cả bắt đầu

1. Nguồn gốc hình thành

Dự án cho Java bắt đầu vào năm 1991 và ban đầu được gọi là Oak. Tuy nhiên, tên này lại được đăng ký cho một công ty khác, vì vậy những người sáng tạo đã thay thế gọi nó là Java (mang nghĩa như trong cà phê, có nghĩa là được tiêu thụ với số lượng lớn) và phát hành phiên bản đầu tiên vào năm 1995. Java hiện được sử dụng để viết ứng dụng nhúng, ứng dụng web, ứng dụng doanh nghiệp và là nền tảng được sử dụng rộng rãi nhất thế giới.

JavaScript là ngôn ngữ Run on Client’s Browser được Brendan Eich và Netscape phát triển vào năm 1995 với mục đích ban đầu như là 1 file script để giúp làm linh hoạt hơn các chức năng giao diện và xử lý thông tin từ phía khách hàng trước khi gửi về Server. JavaScript với tên ban đầu là Mocha, nhưng vì lý do marketing mà vào phiên bản Netscape 2.0 thì Mocha xuất hiện với tên là JavaScript.

2. Sử dụng khi nào và ở đâu?

Là một ngôn ngữ của mục đích chung, Java sẽ là lựa chọn đầu tiên nếu bạn đang tìm cách tạo phần mềm và ứng dụng doanh nghiệp cho các hệ thống Android. Nó khá phổ biến trong lĩnh vực tài chính và thương mại, cũng như các ứng dụng khoa học và dữ liệu lớn. Ví dụ, các hệ thống xử lý ngôn ngữ tự nhiên thường được viết bằng Java. Nguyên tắc WORA cũng khiến nó hoàn hảo trong các hệ thống nhúng, chẳng hạn như thẻ Java được sử dụng trong thẻ SIM.

JavaScript được tạo ra cho web và mục đích chính của nó là giúp bạn tạo các trang đông, mang tính tương tác. JavaScript vẫn là sự lựa chọn tốt nhất cho nhu cầu front-end, phù hợp với thương mại điện tử, tùy chỉnh giao diện người dùng (UI) và tạo các công cụ đơn giản khác nhau.

Như vậy, chúng ta có thể khẳng định Java và JavaScript hoàn toàn không có chung nguồn gốc, với vai trò và tính năng riêng biệt. Vì thế chúng chắc chắn không phải anh em song sinh như chúng ta nghi ngờ, nhưng liệu chúng có những mối liên hệ khác không? Hãy cùng tìm hiểu phần 2 nhé!

Phần II: Mối quan hệ khác?

1. Điểm tương đồng

Tuy hoàn toàn khác nhau nhưng Java và JavaScript vẫn có số nét giống nhau ở cả 2 ngôn ngữ lập trình này như sau:

  • Cả Java và JavaScript thường được sử dụng nhiều nhất trong các ứng dụng phía máy khách
  • Cả Java và JavaScript đều sử dụng cú pháp C
  • JavaScript sao chép một số quy ước đặt tên của Java.

2. Tính độc lập

Một điểm khác biệt lớn giữa Java và JavaScript là Java là ngôn ngữ lập trình hoàn toàn độc lập. Điều này có nghĩa là nó có thể được sử dụng một mình trên bất kỳ hệ điều hành nào: tất cả những gì bạn cần là một máy ảo Java virtual machine. Bạn có thể tải xuống và cài đặt nó trên máy tính miễn phí. Không có nó, bạn không thể chạy được Java trên máy tính của mình.

JavaScript, mặt khác, được sử dụng trên các trình duyệt web. Ngày nay, không có máy tính nào là không có trình duyệt web cả. Tuy nhiên, điều này cũng có nghĩa là hiệu suất của JavaScript phụ thuộc rất nhiều vào HTML và CSS. Về cơ bản, HTML chứa cấu trúc của một trang web, CSS cho phép bạn thao tác tạo kiểu và JavaScript giúp tạo các chức năng. Một cấu trúc phi chức năng là vô dụng, và các chức năng không có bất kỳ cấu trúc nào, cũng là một mớ hỗn độn.

Bạn có thể chạy Java trong trình duyệt không? Có và không. Nếu bạn đã sử dụng web hơn một vài năm, bạn có thể nhớ thời gian bạn phải tải xuống và cài đặt một trình duyệt Java để xem bất kỳ yếu tố tương tác hoặc động nào. Chúng được gọi là Java applet và được sử dụng tương đối rộng rãi. Tuy nhiên, bây giờ chúng gần như tuyệt chủng. Vì HTML5 cung cấp cơ hội để nhúng phương tiện trực tiếp vào trang web của bạn, nên không cần các applet của bên thứ ba mà còn có thể không an toàn. Do đó, Java không bao giờ thiếu đối với người dùng trình duyệt.

3. Khía cạnh hiệu suất

Khi bàn luận về Java và JavaScript về khía cạnh hiệu suất, điều đầu tiên chúng ta cần nắm bắt không phải là tốc độ. Có một sự khác biệt trong chính cách chúng thực hiện. Cả Java và JavaScript đều hướng đối tượng. Điều này có nghĩa là nhà phát triển phải giải quyết các đối tượng và mối quan hệ của chúng – giả sử, tính kế thừa. Tuy nhiên, nguyên tắc khác biệt chính: Java là ngôn ngữ được biên dịch (complied) và JavaScript là ngôn ngữ được diễn giải (interpreted).

Trần Đức Anh



Read more
  • Published in Uncategorized
No Comments

Recent Posts

  • FRONT END DEVELOPER (HTML/CSS)

    1. Mô Tả Công Việc Cắt giao diện website từ fil...
  • File upload trong Spring

    Trong quá trình xây dựng một ứng dụng web nói c...
  • (Fresher/Junior) NodeJS/Fullstack (NodeJS/ReactJS)

    1. Mô Tả Công Việc Tham gia các dự án outsourci...
  • Hệ cơ sở dữ liệu – MariaDB

        Trong bài viết tôi giới thiệ...
  • [Junior/Senior] Automation Tester

    1. Mô Tả Công Việc Xây dựng dụng cụ cho automat...

Recent Comments

  • hivequeen on [Tuyển Dụng] Junior/Fresher Frontend Developers (jQuery, Angular, VueJS, ReactJS) Full-time 2019
  • nguyễn viết đạt on [Tuyển Dụng] Junior/Fresher Frontend Developers (jQuery, Angular, VueJS, ReactJS) Full-time 2019

Archives

  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • September 2019
  • July 2019
  • June 2019

Categories

  • Networking
  • Posts
  • Recruitment
  • Sale
  • Technology
  • Uncategorized

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org

Featured Posts

  • FRONT END DEVELOPER (HTML/CSS)

    0 comments
  • File upload trong Spring

    0 comments
  • (Fresher/Junior) NodeJS/Fullstack (NodeJS/ReactJS)

    0 comments
  • Hệ cơ sở dữ liệu – MariaDB

    0 comments
  • [Junior/Senior] Automation Tester

    0 comments
  • DISCLAIMER
  • SUPPORT POLICY
  • LEGAL
HiveTech Vietnam (Technology Solutions - Original Ideas - Shared Expertise)

© HiveTech 2019 All rights reserved

TOP