Skip to content
Showing 1-50 of 207 items.
@renovate
Admin 01/05/2021 00:30
Tổng quan về GCD trong Swift

Multithreading trong IOS Mỗi một ứng dụng IOS khi được chạy đều có một Main Thread. Thread này được sử dụng để xử lý các task liên quan đến UI như cập nhật giao diện, xử lý các tương tác của người dùng như scroll, zoom, ... Nếu Thread này bị block thì app của bạn sẽ rơi vào 1 trạng thái mà dân gian vẫn gọi là bị "đơ". Đây chính là lúc chúng ta cần đến multithreading Nguyên nhân của...

Multi Threading May Fest
@renovate
Admin 01/05/2021 03:50
Một số thuật toán sắp xếp

Chắc hẳn ngồi trên ghế giảng đường đại học thì ai cũng sẽ được làm quen với thuật toán. Nghe thì thật là trừu tượng và mơ hồ, nhưng để tối ưu hóa những bài toán đặt ra thì bắt buộc các bạn phải học đến nó. Mình xin chia sẻ 1 chút lí thuyết mà mình học được về các thuật toán sắp xếp đơn giản, mong là có thể giúp các bạn áp dụng vào bài toán thực tế của mình! 1. Thuật...

MobileTeam Education May Fest
@renovate
Admin 01/05/2021 03:50
Áp dụng SOLID trong Android

1. SOLID là gì Thử tưởng tượng bạn đang ở trong một thư viện sách. Bạn muốn tìm một cuốn sách nào đó. Nếu như thư viện được sắp xếp gọn gàng, phân loại sách tốt thì bạn sẽ dễ dàng tìm được cuốn mình cần. Ngoài ra, nếu như thư viện mà được thiết kế nội thất tốt, bạn sẽ có hứng thú hơn khi đọc sách. Cũng giống như ví dụ trên, khi bạn xây dựng một ứng dụng, bạn phải...

android kotlin SOLID MobileTeam Education May Fest
@renovate
Admin 01/05/2021 03:50
ReactiveX - Những khái niệm cơ bản

1. Đặt vấn đề Một trong số những task khá phổ biến trong Android chính là thực thi một tác vụ nào đó ở background và update kết quả lên UI. Ví dụ khi các bạn call API, server thường sẽ trả về kết quả dưới dạng Json và chúng ta sẽ convert từ Json sang object và sau đó hiển thị thông tin lên UI. Với task này thì chúng ta thường sử dụng AsyncTask, hàm doInBackground() sẽ thực hiện request và trả...

MobileTeam Education May Fest ReactiveX
@renovate
Admin 01/05/2021 09:30
Mysql issue: Too many connections

Trong quá trình làm việc với hệ quản trị cơ sơ sở dữ liệu(Mysql, Postgres, Oracle...) rất nhiều khi gặp lỗi "Too many connections". Tại thời điểm đó, database không thể tiếp tục nhận các kết nối đến. Bạn không thể connect dùng GUI. Các service và application không hoạt động. -> Giải pháp đơn giản nhất là reset lại database, để đóng các connections hiện tại. Ưu điểm: Nhanh, dễ...

MySQL Optimization database performance MayFest May Fest
@renovate
Admin 01/05/2021 11:50
Writeup Crypto

Mình sẽ tiếp tục writeup với chuỗi bài crypto và cụ thể là RSA. Khi đụng đến RSA thì thường sẽ liên quan đến rất nhiều toán. Tổng quan về RSA: Chọn 2 số nguyên tố rất lớn đặt là p và q là private key. Lấy n = p*q. Ta có hàm phi Euler của n, đặt là phi(n)=(p−1)∗(q−1)=xphi(n) = (p-1)*(q-1) = xphi(n)=(p−1)∗(q−1)=x và với mọi số a bất kỳ, có a∗∗(k∗x+1)=a[modn]a**(k*x + 1) = a [mod...

May Fest
@renovate
Admin 01/05/2021 16:00
Webpack từ A đến Á: HTML Webpack Plugin

Bài hôm nay chúng ta sẽ học về plugin html-webpack-plugin được dùng để sắp xếp các file html theo một trật tự nhất định, giúp tối ưu nội dung file html hơn. 1. Cài đặt Link plugin: https://github.com/jantimon/html-webpack-plugin Cài cho Webpack 5 npm i --save-dev html-webpack-plugin Cài cho Webpack 4 npm i --save-dev [email protected] 2. Chuẩn bị file Để bài học được dễ dàng theo dõi chúng ta nên xóa các file trong...

HTML JavaScript CSS May Fest Webpack
@renovate
Admin 01/05/2021 16:10
HikariCP - Best Practice in Manage Connection Pool

1. Giới thiệu HikariCP Ở bài trước, mình có nói về max_connections. Bài viết này, mình sẽ nói chi tiết hơn vấn đề mà mình đã gặp phải, cách khắc phục nó. Để hiểu về HikariCP là gì có thể tham khảo 1 bài viết này Trong bài viết này, mình sẽ giải thích chi tiết từng tham số trong đó, những ảnh hưởng của tham số qua các ví dụ thực tế. Trong ví dụ của mình, mình sẽ sử dụng Project Spring...

Java Spring boot MayFest May Fest Database Connection Pool HikariCP
@renovate
Admin 01/05/2021 21:40
Vanilla JS: Preview image file upload

1. Yêu cầu Yêu cầu bài toán là khi người dùng chọn ảnh từ máy tính thì chúng ta sẽ hiển thị hình ảnh preview để xem trước mà không cần phải upload lên server. Đây là một trong những bài tập vanilla Javascript ở mức cơ bản giúp các bạn làm quen, chủ yếu giải thích về Javascript nên phần giao diện sẽ không phân tích nhiều. Hi vọng với bài tập này các bạn sẽ thấy thích thú khi học...

HTML javascipt CSS vanilla js May Fest
@renovate
Admin 01/05/2021 21:40
Thực hành mã hóa và giải mã thuật toán Simplified AES

Tương tự bài viết trước về thuật toán Simplified AES, mình sẽ không thảo luận về lý thuyết của tiêu chuẩn mã hóa dữ liệu Advanced Encryption Standard - AES, hay cụ thể là Simplified AES. Thay vào đó, mình sẽ thực hành mã hóa và giải mã bằng tay từng bước thuật toán Simplified AES. Cùng bắt tay thực hiện nào! Task 1: Thực hiện mã hóa Simplified AES (Encryption) bằng tay để tìm ciphertext Mình sẽ sử...

MayFest May Fest Cryptography Encryption
@renovate
Admin 02/05/2021 10:20
Thực hành mã hóa và giải mã thuật toán Simplified DES

Ở bài viết này, mình sẽ không thảo luận về lý thuyết của tiêu chuẩn mã hóa dữ liệu (Data Encryption Standard - DES), hay cụ thể là Simplified DES. Thay vào đó, mình sẽ thực hành mã hóa bằng tay từng bước thuật toán Simplified DES và thực hiện giải mã thông qua công cụ SageMath để kiểm tra xem có đúng Plaintext trước đó hay không. Cùng bắt tay thực hiện nào! Task 1: Thực hiện mã hóa Simplified DES...

MayFest May Fest Cryptography Encryption
@renovate
Admin 02/05/2021 11:20
Nguyên lý hoạt động về ứng dụng hàm băm

Trong bài viết này, mình sẽ trình bày về nguyên lý hoạt động về ứng dụng hàm băm cho việc xác thực thông tin và cho chữ ký số, giải thích, cũng như so sánh ưu, khuyết điểm của mỗi loại. 1. Nguyên lý hoạt động về ứng dụng hàm băm cho việc xác thực thông tin Chú thích: M: message – nội dung thông điệp cần mã hóa H(M): hash - hàm hash message M E(M): encrypt - hàm mã hóa message M D(M):...

MayFest May Fest cryptographic hash Hash Functions
@renovate
Admin 02/05/2021 11:30
Kubernetes - deployment.yaml explained

Trong bài trước, mình có giới thiệu chạy các câu lệnh K8S bằng Command Line Để tạo 1 deloyment đơn giản chỉ cần chạy lệnh kubectl create deployment hello-app --image=nginx:latest Trong câu lệnh trên đã lược bỏ hầu như hết các thuộc tính không bắt buộc, nó chạy được, nhưng muốn mở rộng thì khó hơn nhiều. Khi đó phải truyền thêm các điều kiện vào command line khiến nó rất rồi mắt. Chính vì...

Kubernetes K8s MayFest May Fest Kubernetes Deployment
@renovate
Admin 02/05/2021 11:40
URLSession Networking trong Swift

Qua bài này, các bạn sẽ nắm được: Khi nào cần dùng URLSession URLSession là gì Fetch data dùng URLSession qua ví dụ đơn giản Khi nào cần dùng URLSession Rất đơn giản, bạn muốn "chiếc" app của bạn tương tác với Internet, nghĩa là bạn đang muốn tạo HTTP request, URLSession là 1 lựa chọn URLSession là 1 framework được chính Apple phát triển và implement sẵn trong iOS. Rất nhiều developer dùng thư viện từ...

API May Fest URLSession
@renovate
Admin 02/05/2021 12:10
Khi có source code rồi thì hack có dễ không?

Đợt vừa rồi mình có tham gia giải CTF Cyber Apocalypse 2021, mình chủ yếu là care phần web một ít bài misc vì web là thế mạnh. Team mình cũng chỉ xếp 157/4740 và giải hầu hết bài web, chủ yếu tham gia để cọ xát. Nhưng điều khiến mình khá thích thú là có đến hơn 80% trong số các challenge web là review source code (cái này là còn thế mạnh của mình hơn nữa), các bài web cũng rất thực tế. Hôm nay, tự...

Hack May Fest hack web web ctf review source code
@renovate
Admin 02/05/2021 20:50
Data Class hay Builder Design Pattern?

Như chúng ta đã biết, Builder pattern là một trong những Design Pattern thuộc về nhóm Creational Pattern - những mẫu thiếu kế cho việc khởi tạo đối tượng của lớp. Design Pattern này sẽ giúp chúng ta tạo mới một đối tượng từ class một cách rõ ràng, linh hoạt. Bên cạnh đó, Data Class là một từ khóa không còn xa lạ với chúng ta ở trong Kotlin. Khi sử dụng Data Class, với từ khóa này, trình biên dịch...

Kotlin Design Pattern May Fest data
@renovate
Admin 02/05/2021 21:00
Thuật toán tìm kiếm 2 con trỏ - Liệu binary search đã là nhanh nhất ?

Để giải quyết một bài toán trong lập trình, chúng ta có thể có nhiều cách, thuật toán để giải quyết. Tuy nhiên, không phải bài toán nào cũng có thể tối ưu trong 1 thuật toán nhất định. Trong bài viết này, chúng ta hãy cùng nhau nhìn qua các cách để giải quyết một bài toán tìm kiếm nho nhỏ và so sánh ưu nhược điểm giữa chúng nhé. **Bài toán ** Cho một dãy số gồm N số nguyên khác nhau đã...

Java Algorithm May Fest
@renovate
Admin 03/05/2021 14:30
Vanilla JS: Preview image when drag and drop

1. Yêu cầu Yêu cầu bài toán là khi người dùng kéo thả ảnh từ máy tính vào vùng chỉ định thì chúng ta sẽ hiển thị hình ảnh preview để xem trước mà không cần phải upload lên server. Đây là một trong những bài tập vanilla Javascript ở mức cơ bản giúp các bạn làm quen, chủ yếu giải thích về Javascript nên phần giao diện sẽ không phân tích nhiều. Hi vọng với bài tập này các bạn sẽ thấy...

HTML javascipt CSS vanilla js May Fest
@renovate
Admin 03/05/2021 21:40
Function

Function là một khái niệm quan trọng trong nhiều ngôn ngữ lập trình bậc cao. Theo định nghĩa từ toán học thì function là những expression, rules,laws được sử dụng để định nghĩa những relation giữa nhiều dependant variables (biến độc lập). Nói một cách khó hiểu hơn, là một mapping (ánh xạ) từ một giá trị ở miền giá trị này sang một giá trị khác ở miền giá trị khác. Khi làm việc với các...

JavaScript May Fest
@renovate
Admin 04/05/2021 02:30
Event Loops

Javascript là một ngôn ngữ lập trình duy nhất ở thời điểm hiện tại có thể chạy trên trình duyệt web ( WA - Web assembly có thể chạy trên browser, web assembly khiến cho binary code có thể chạy trên nền web). Duy nhất ở đây không phải là không thể tạo ra ngôn ngữ nào khác thay thế mà là không cần thiết vì Javascript đã quá trở nên phổ biến (ở đây tập trung nói về client-side Javascript). Javascript...

JavaScript May Fest
@renovate
Admin 04/05/2021 11:00
Cách dùng Docker để phát triển ứng dụng Wordpress

Trong bài này, mình sẽ hướng dẫn cách dựng môi trường phát triển cho ứng dụng Wordpress một cách nhanh chóng bằng Docker thông qua một boilerplate có sẵn đó là sun-asterisk-research/docker-php-development. Lần trước mình cũng đã làm một bài giới thiệu chung https://viblo.asia/p/dung-moi-truong-phat-trien-nhanh-chong-voi-sun-asterisk-researchdocker-php-development-maGK7329Kj2, hôm nay chúng ta sẽ focus vào việc dựng môi trường...

Wordpress Docker May Fest
@renovate
Admin 04/05/2021 16:50
OkHttp - Performance issues - Lưu ý khi sử dụng

Giới thiệu vấn đề Gần đây bạn mình có gặp 1 vấn đề liên quan đến việc sử dụng Okhttp, bạn ấy và mình cùng tìm hiểu và đã tìm ra nguyên nhân. Mình viết bài này để tổng hợp lại và chia sẻ mọi người để tránh gặp phải vấn đề này. OkHttp là gì Nó là một http client rất dễ để sử dụng và được sử dụng rộng rãi. Tất cả các thông tin có thể xem trên trang chủ Code mẫu rất...

HTTP High Performance May Fest OkHttp Okhttp3
@renovate
Admin 04/05/2021 18:30
Phạm vi biến cực dị của Javascript

Thuở ban đầu: Ban đầu lúc được thiết kế thì Javascript chỉ có 2 phạm vi duy nhất là phạm vị toàn cục (global scope) và phạm vi địa phương (local scope). Global scope: Các biến có phạm vi toàn cục sẽ có thể truy xuất ở bất kì đâu. Ví dụ đơn giản: var a = 10; function doSomething(){ console.log(a); // có thể truy cập a } function doAnotherThing(){ console.log(a); // có thể truy cập...

JavaScript May Fest
@renovate
Admin 04/05/2021 18:30
Những tính năng chính mới được bổ sung trong ES8

EcmaScript8 hay EcmaScript2017 đã được phát hành vào cuối tháng 6 bởi TC39. Bài viết này sẽ giới thiệu các tính năng chính, mới được thêm vào trong ES8 thông qua các ví dụ String padding Phần này bổ sung thêm 2 function tới đối tượng String: padStart & padEnd. Như tên gọi, mục đích của các function này là để pad (độn) thêm vào đầu hoặc cuối chuỗi, chuỗi kết quả sẽ có độ dài như chúng ta cung...

JavaScript May Fest ES8
@renovate
Admin 04/05/2021 18:40
Xử lý ngày tháng trong JavaScript

Thao tác và hiển thị ngày tháng gần như xuất hiện trong tất cả các ứng dụng JavaScript. Trình duyệt và NodeJS cung cấp lớp Date để thể hiện kiểu dữ liệu này, nhưng các phương thức của lớp này lại khá giới hạn. May mắn thay, cộng đồng JavaScript đã phát triển những công cụ giúp cho việc xử lý ngày tháng trở nên dễ dàng và bớt nhàm chán hơn. moment.js npm install --save moment moment.js có lẽ...

JavaScript May Fest
@renovate
Admin 04/05/2021 22:30
Dynamic Routing trong NGINX

Tiếp nối bài viết trước, Cấu hình Nginx Server như thế nào?. Trong bài viết này, mình sẽ giới thiệu về Dynamic Routing trong NGINX. 1. Prefix match Mình sẽ cấu hình file nginx.conf như sau: events { } http { include /etc/nginx/mime.types; server { listen 80; server_name nginx-tutorial.test; location /user { return 200 "Hello User!\n"; } } } Và hãy nhớ rằng, mỗi khi cấu...

nginx May Fest routing
@renovate
Admin 05/05/2021 10:10
Một số lý thuyết trong kiểm thử luồng dữ liệu

Định nghĩa biến(Variable definition) Một biến của chương trình được định nghĩa(DEFINED) khi giá trị của nó được thay đổi. Bao gồm các trường hợp sau: Nằm ở vế bên trái trong câu lệnh gán, ví dụ: y = 20 Trong câu lệnh nhập đầu vào, ví dụ getInput(y) Được sử dụng với vai trò là tham số tham chiếu của một hàm, ví dụ update(x, &y) Sử dụng biến(Variable Use) Một biến của chương trình...

Testing flow May Fest data
@renovate
Admin 05/05/2021 12:00
Tạo nhanh ảnh 1x, 2x, 3x và giải thích tại sao cần chúng trong Swift

Đặt vấn đề Khi bạn mở Asset Catalog trong Xcode, bạn chắc chắn sẽ nhìn thấy yêu cầu hình ảnh 1x, 2x, 3x. Điều đó có ý nghĩa gì? Các mẫu đời Iphone và Ipad có độ phân giải màn hình và kích thước màn hình khác nhau, thế UI được render ra có bị ảnh hướng gì không? Ở bài viết này, các bạn sẽ được tìm hiểu : Sự khác biết giữa points và pixels Khi nào dùng tỉ lệ ảnh 1x, 2x, 3x Cách...

May Fest asset catalog
@renovate
Admin 05/05/2021 12:00
Edx1 - Tính cấp thiết của đào tạo trực tuyến

1. Tính cấp thiết của đào tạo trực tuyến 1.1 Đặt vấn đề Trước ngưỡng cửa của Chuyển đổi số, giáo dục đại học, đặc biệt tại các trường đại học kỹ thuật – công nghệ lớn, chắc chắn sẽ diễn ra sự chuyển biến mạnh mẽ trong sứ mệnh đào tạo: bên cạnh nhiệm vụ (i) đào tạo, còn cần hướng đến sự đóng góp cho cộng đồng thông qua (ii) đào tạo chuyển đổi, trong đó...

Education May Fest MOOC Open edX
@renovate
Admin 05/05/2021 13:20
Cách cấu hình NGINX thành Reverse Proxy

Tiếp nối bài viết trước Dynamic Routing trong NGINX, trong bài viết này mình sẽ hướng dẫn các bạn cách cấu hình NGINX thành Reverse Proxy. Reverse Proxy là một server trung gian giữa Client và Server. Nó kiểm soát các request từ Client, và điều phối những request đó tới Server phù hợp, để Server xử lí request đó. Khi Server xử lí xong, sẽ trả về response cho Reverse Proxy, và Reverse Proxy có trả về response đó...

nginx May Fest Reverse Proxy
@renovate
Admin 05/05/2021 14:40
Bạn cần gì để có thể trở thành một hacker mũ trắng?

Tổng quan Trong quá trình làm việc cũng như tham gia giảng dạy các khóa học, mình thưỡng xuyên nhận được những câu hỏi của các bạn như: Làm sao bắt đầu học bảo mật vậy anh? Hay làm hacker thì cần bắt học cái gì vậy anh? Làm bảo mật là làm công việc gì vậy anh? Làm bảo mật có khó không vậy?.. Rất nhiều câu hỏi được đặt ra và trong thời gian ngắn thì mình cũng chỉ có thể đưa ra...

May Fest Information security sharing Sharing pentester Secuiry
@renovate
Admin 05/05/2021 15:00
Java Performance Tool Part 1: VisualVM

Giới thiệu VisualVM tool VisualVm là 1 công cụ hữu ích giúp chúng ta quan sát thông tin của các ứng dụng JAVA chạy trên local hay trên các máy khác. VisualVM tích hợp rất nhiều tools: Jmap, Jstack, JConsolem, Jstat và Jinfo. Giúp chúng ta quan sát, theo dõi (monitoring): Memory leaks Anlyze heap data, Monitor GC (garbage collector) CPU profiling Nó cũng giúp cải tiến hiệu suất ứng dụng và đảm bảo bộ nhớ được sử dụng 1...

Java High Performance May Fest monitoring JVisualVM
@renovate
Admin 05/05/2021 15:10
Đừng validation bằng tay trong Spring Boot (phần 1)

Bài hôm nay mình sẽ trình bày một khái niệm cực kì quan trọng với mọi hệ thống backend. Hẳn mọi người đã từng nghe điều này. Đừng tin tưởng dữ liệu cho người dùng nhập vào. Câu trên có thể mở rộng ra phạm vi với các nguồn dữ liệu khác được coi là không tin cậy, gồm database, client,... Trong trường hợp cần nhận data từ các nguồn đó, nhất thiết phải thực hiện Validation. 1....

Java Spring Boot MayFest May Fest validation
@renovate
Admin 05/05/2021 15:40
Edx2 - Ưu nhược điểm của các mô hình trực tuyến hiện tại

2. Ưu nhược điểm của các mô hình trực tuyến hiện tại Học trực tuyến chắc chắn sẽ là một lựa chọn phù hợp, nhưng bản thân mô hình đào tạo trực tuyến này sau vài chục năm phát triển cũng đã tồn tại dưới nhiều mô hình khác nhau. Dưới đây là 2 mô hình đào tạo trực tuyến phổ biến hiện tại: Mô hình đào tạo trực tuyến Moodle (Modular Object-Oriented Dynamic Learning Environment) Mô hình...

Education May Fest MOOC Open edX
@renovate
Admin 05/05/2021 16:20
Lần này vẫn có source code, nhưng hack thì dễ hơn

Bài trước (Đây là bài trước: https://viblo.asia/p/khi-co-source-code-roi-thi-hack-co-de-khong-maGK7G8AKj2), mình có đưa một câu hỏi là Khi có source code rồi thì hack có dễ không?. Tuy nhiên bài đó thì có vẻ cũng hơi phức tạp, nên nay mình quyết định ra một bài mới Vẫn là có source code, nhưng hack dễ hơn, để viết về một bài nhưng nó đỡ phức tạp hơn bài trước. Cho bạn nào mới tiếp cận review source...

CTF MayFest May Fest hack web review source code
@renovate
Admin 05/05/2021 17:10
Navigation Component and example

I. Navigation Component 1. Navigation Component là gì? Hiểu đơn giản navigation component là thành phần cho phép user điều hướng qua lại giữa các thành phần(activity, fragment) trong ứng dụng (thay thế cho việc sử dụng intent) 2. Các nguyên lý trong navigation component Fixed start destination Theo nguyên lý này, tất cả các app đều phải có 1 start destination cố định. Đây là màn hình đầu tiên khi user nhìn lúc họ mở...

Android May Fest
@renovate
Admin 05/05/2021 17:10
Tìm hiểu về Kotlin Coroutine

1. Coroutine là gì ? Về cơ bản thì coroutines là 1 thuật toán có khả năng dừng (suspend) và tiếp tục (resume) việc thực thi code nằm trong nó mà không làm cho thread bị block. Trong Android, nếu bạn chạy 1 hàm phức tạp nào đó trên main thread thì nó sẽ block UI cho đến khi hàm chạy xong. Block UI sẽ làm cho app rơi vào trạng thái ANR và khả năng lớn là user sẽ uninstall app của bạn. Ngược lại, suspend tỏ ra...

Kotlin Android May Fest Coroutine
@renovate
Admin 05/05/2021 17:10
Android Architect Component - Paging Library

I. Tổng quan về Paging 1. Paging labrary là gì? Paging library là một component của Android Jetpack Sử dụng để tải và hiển thị một lượng nhỏ dữ liệu từ tập dữ liệu (local storage hoặc server api). Bằng cách đó, làm giảm việc sử dụng băng thông mạng. Hỗ trợ với LiveData hoặc RxJava cho việc quan sát dữ liệu mới trên UI. Thêm Paging libary vào ứng dụng Android dependencies { def paging_version = "2.1.2" ...

Android May Fest Paging
@renovate
Admin 05/05/2021 17:10
RxSwift: Transforming Operators

1. Transforming Elements a, toArray Observables emit các phần tử riêng biệt, nhưng bạn muốn làm việc với tập hợp các collections. Chẳng hạn khi bạn muốn binding một observaleb vào table hoặc collection view.Có một cách thuận tiện để bạn chuyển đổi một element thành một mảng elements bằng cách dùng toArray. Nó sẽ convert 1 chuỗi các element thành một mảng và emit bằng event .next Ví dụ: func example() { let...

May Fest RxSwift
@renovate
Admin 05/05/2021 17:10
Custom Property binding with Rxswift.

Khi mới bắt đầu học RxSwift , mình từng gặp source code kiểu custom Property dùng Binder mình cũng không hiểu nó là gì , mình cũng thử tìm hiểu và hôm nay viết 1 bài để giới thiệu và cách dùng Binder trong Rx. 1. Custome property như thế nào ? Khi bạn dùng RxCocoa binding, rất dễ dàng bind value của 1 Observable được emit tới các view trên màn hình var myObservalbe = PublishSubject<Void>() myObservalbe.map{...

iOS May Fest
@renovate
Admin 05/05/2021 17:10
Prototype trong javascript

Problem with creating objects with the constructor function: Xem xét hàm constructor ở dưới đây : function Human(firstName, lastName) { this.firstName = firstName, this.lastName = lastName, this.fullName = function() { return this.firstName + " " + this.lastName; } } var person1 = new Human("Virat", "Kohli"); console.log(person1) Hãy tạo object person1 và person2 bằng Human function constructor Human: var person1 = new...

javascipt May Fest
@renovate
Admin 05/05/2021 22:00
Edx3 - Open edx là gì?

Open edx là gì? Open edX là một mã nguồn mở có sẵn các chức năng đáp ứng một mô hình đào tạo từ xa MOOC hoàn chỉnh. Là một nền tảng cho mọi nhu cầu học tập của bạn. 3.1 Tổng quan về Open edX Open edX được xây dựng để đem lại những gì mới nhất trong khoa học nghiên cứu, thiết kế giảng dạy. Nền tảng Open edX được cải thiện từng ngày bởi cộng đồng các nhà phát triển, nhà cung cấp...

Education May Fest MOOC Open edX
@renovate
Admin 05/05/2021 22:20
Liệu bạn đã sử dụng thành thạo thẻ <script> trong html

Giới thiệu về thẻ <script> Như chúng ta đã biết một website hiện nay không thể thiếu 3 thành phần là HTML, CSS và Javascript. Chúng ta thường import file javascript bằng thẻ <script> với cách sử dụng như sau <script src="index.js"><script/> Ô vậy thì thẻ script chỉ có 1 attribute đơn thuần là src thôi ư? Chúng ta hãy cùng nhau tìm hiểu trong bài viết này nhé Cách thẻ <script> hoạt động Chúng...

May Fest
@renovate
Admin 05/05/2021 23:10
Tìm hiểu cơ bản về Props trong VueJS

1. Props là gì? Theo tài liệu của VueJS có viết: Props are custom attributes you can register on a component. When a value is passed to a prop attribute, it becomes a property on that component instance. Hiểu đơn giản đó là props là cách ta truyền dữ liệu giữa các components, từ component cha đến component con. Trong bài này chúng ta sẽ xem xét một vài khái niệm về props trong VueJS 2. Cách định nghĩa 1 prop Để 1 component định...

May Fest Vue js
@renovate
Admin 05/05/2021 23:10
Tìm hiểu cơ bản về Vuex Store

1. Creating a Store Vuex đã cung cấp sẵn class Store, vì vậy ta có thể sử dụng bằng cách import vào để lấy đối tượng Vuex và tạo một Store mới import Vuex from 'vuex'; // Create a new store: const store = new Vuex.Store({ state: { count: 0 } }); Hoặc có thể load Vuex thông qua CDN như sau: <script src="https://unpkg.com/vuex/dist/vuex.js"></script> <script> const store = new Vuex.Store({ state: { ...

Vuex May Fest Vue js
@renovate
Admin 05/05/2021 23:10
Tạo contact form đơn giản bằng VueJS và Firebase

1.Seting up Firebase Truy cập vào firebase cloud console và tiến hành thiết lập project và đây sẽ là nơi lưu trữ database project của bạn. Tiếp theo, cài đặt firebase tools vào local bằng lệnh: npm i -g firebase-tools. Bây giờ, trong thư mục chính của dự án, tiến hành cài đặt và khởi tạo firebase: npm install firebase --save firebase login firebase init Khi cài đặt firebase thành công, mở file src/main.js và import các thư...

Firebase May Fest Vue js
@renovate
Admin 06/05/2021 04:10
Hướng dẫn cơ bản về Unit test trong swift

Đợt này trong dự án của công ty mình đang chuẩn bị triển khai việc dùng Unit Test. Unit Test thì không còn xa lạ gì với anh em Dev, ngay cả bản thân mình hồi học đại học thì cũng đã từng học qua môn quản lý dự án liên quan Unit Test nhưng để áp dụng vào thực tế thì không phải chuyện dễ. Hôm nay , mình cũng thử vọc vặt bước đầu xem Unit Test nó có tác dụng gì, lý do nên viết Unit Test.Dưới...

Swift May Fest
@renovate
Admin 06/05/2021 10:40
Tìm hiểu các kiểu khởi tạo của Swift

Các kiểu khởi tạo trong Swift là câu hỏi quen thuộc trong buổi phỏng vấn. Khái niệm này tương đối dễ hiểu khi làm việc với Struct, nhưng sẽ gặp chút khó khăn khi hỏi các câu liên quan đến việc khởi tạo Class. Swift định nghĩa 2 cơ chế khởi tạo cho các Class là Designated Initializers và Convenience Initializers. Trong bài viết này, mình sẽ chia sẻ một số câu hỏi về nội dung này mà mình tìm hiểu...

Swift May Fest
@renovate
Admin 06/05/2021 10:40
Một số Global Functions hữu dụng trong Swift

Global functions hay còn gọi là các hàm toàn cục là các functions có thể truy cập ở bất kì đâu mà không nhất thiết phải quy định một scope cụ thể. Đây là khái niệm quen thuộc với các ngôn ngữ cũ như C hay Objective-C, nhưng không được khuyến khích sử dụng trong Swift. Vì một vài lý do mà thư viện chuẩn Swift vẫn hỗ trợ một số Global Functions và vẫn rất hữu dụng ở thời điểm hiện nay....

May Fest Swift Basic
@renovate
Admin 06/05/2021 11:20
Kinh Nghiệm Build App IOS bằng flutter

1. Sau khi create project Flutter bằng Android Studio, thì mở thư mục ios run pod init và pod install để tạo pod , sau đó thêm đoạn code sau vào để setting pod : # Uncomment this line to define a global platform for your project platform :ios, '11.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' project 'Runner', { 'Debug' => :debug, 'Profile' => :release, 'Release' =>...

Flutter May Fest Build