- Tips 13
- Life 4
- Go 3
- Cloud 3
- Docker 2
- Dart 2
- Outsource 2
- TIL 2
- Javascript 1
- Linux 1
- Infrastructure 1
- Laravel 1
- Rails 1
- Meetup 1
- Migration 1
- Data-Pipeline 1
Tips
Làm thế nào để override 3rd typescript types được khai báo bởi install package trong node modules
Hiện tại mình đang sử dụng thư viện openai-node. Tuy nhiên khi implement code theo sample trong Document (Uploading Your Batch Input File) của thư viện thì phát sinh lỗi:
Tại sao nên dùng String Union Types thay cho String Enums trong Typescript
Khi sử dụng TypeScript, chúng ta thường gặp phải trường hợp xác định kiểu của một biến mà giá trị của nó rơi vào một hay nhiều khả năng khác nhau.
Mở ứng dụng Local trên Internet bằng tính năng VSCode - Local Port Forwarding
Trong quá trình phát triển ứng dụng, web/app chắc hẳn mỗi chúng ta đều đã từng gặp bài toán cần chia sẻ ứng dụng của mình cho một bên khác thông qua internet. Ví dụ:
- Bạn muốn demo website đang code cho khách hàng truy cập từ xa
- Bạn cần trỏ mobile app > backend API endpoint tới server trên máy cá nhân cho tiện debug
- Bạn muốn test tính năng webhook từ một service bên thứ 3 tới endpoint trỏ tới server trên localhost
- …
Tổng hợp các mẫu tin nhắn xin nghỉ thông dụng gửi cho khách hàng Nhật
Trong khoảng thời gian làm việc với khác hàng là người Nhật Bản, việc đứng ở vị trí trung gian giữa đội phát triển và khách hàng nên mình phải sử dụng tiếng Nhật hằng ngày để truyền tải thông tin. Do có khác biệt về nền văn hoá và phong tục tập quán giữa hai bên nên ngày nghỉ phép, nghỉ lễ giữa phía đội Việt Nam và Nhật Bản cũng khác nhau.
Tuỳ biến phím tắt trên Slack và Mac với Karabiner
Thiết lập ESLint cho dự án React sử dụng Typescript và tự động định dạng mã trên VSCode
Mỗi lần khởi tạo một dự án Javascript và Typescript thì công việc cài đặt bộ Linting (Xác minh chất lượng mã, tự động định dạng lại source code cho đẹp, …), thiết lập rules cho Linting Tool là việc cần làm ngay từ thời điểm bắt đầu code.
Nâng cấp Node.js lên phiên bản chỉ định hoặc mới nhất trên Unix/Linux
Nay có việc phải code React.js mà Node trong máy hơi cũ, không xài được Typescript do dính lỗi:\
The engine "node" is incompatible with this module. Expected version "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0".
Check phiên bản node hiện tại trong máy thì thấy đang chạy v14.3.0
. Lên ngay phiên bản lastest stable version bằng cách chạy lần lượt 3 câu lệnh đơn giản sau:
- Clear npm cache trên máy
Điều khiển từ xa máy tính Ubuntu qua máy Mac
Hiện tại do nhu cầu công việc nên mình bắt buộc phải dùng 2 máy tính có 2 hệ điều hành khác nhau là Ubuntu 16.04 / Linux và MacOS High Sierra. Do máy Mac là máy làm việc chính nên khi phát sinh nhu cầu cần làm việc trên máy Ubuntu để tiết kiệm thời gian di chuyển chỗ ngồi 😏 mình thường xuyên sử dụng phần mềm remote giúp truy cập sang máy Ubuntu từ máy Mac một cách gọn lẹ 🤗
Sử dụng Google Spreadsheet hiệu quả hơn với Google Apps Script
Làm thế nào để tải video từ các trang web sử dụng giao thứ HLS với m3u8 file
Trước hết, HLS
là viết tắt của chữ HTTP Live Streaming
, là một giao thức streaming bitrate được phát triển bởi Apple. Không giống như các kỹ thuật thông thường, HLS
sử dụng cách chia tệp tin video ra làm nhiều file nhỏ, các file này thường có đuôi .ts
và được stream tuần tự về phía player của người dùng.
Testing service workers trên HTTPS sử dụng self signed certificates
Gần đây mình đang phát triển một ứng dụng web app (PWA). Tuy nhiên, khi debug service worker trên local với địa chỉ https://localhost:8500
(Mình hết cổng trên máy nên dùng tạm cổng này ) mình gặp phải lỗi sau:
Mẹo vặt giúp code nhanh hơn với IntelliJ IDEA
Dạo gần đây mình bắt đầu code Dart trên Intellij IDEA. Cảm giác đầu tiên khi chuyển từ Vim/Sublime sang là giao diện khá phức tạp và một mớ hỗn độn tính năng chưa dùng tới. Choáng cmnl
Hướng dẫn cách tải về tệp .ipa bất kỳ phiên bản nào của ứng dụng trên App Store
Nếu bạn đang dùng iOS device (iPhone, iPad) thì bài viết này sẽ rất hữu ích.
Life
Mô tả trực quan về virus Corona ở Vũ Hán - Trung Quốc
(Cập nhật: 30/01/2020) Hôm nay là mùng 4 Tết, vậy là chỉ còn 2 ngày nữa là mọi người sẽ đều trở lại với công việc bộn bề hàng ngày, mặc dù là những ngày nghỉ nhưng thông tin về bệnh dịch viêm phổi lạ, do virus Corona được cho là xuất phát từ thành phố Vũ Hán (thành phố đông dân nhất ở miền Trung Trung Quốc) gây ra liên tục xuất hiện trên báo chí, TV, … Ban đầu cá nhân mình cũng không để ý nhiều, nhưng khi con số người bị nhiễm và số ca tử vong tăng theo cấp số nhân thì tâm lý lo lắng bắt đầu xuất hiện. 😥
Hãy cứ đam mê, hãy cứ ước mơ, ngày mai sẽ khác
#Chém_gió #For_fun
Làm việc để trưởng thành
Tính tới thời điểm hiện tại, mình cũng đi làm được gần 5 năm, chuyển qua 3 công ty. Sự nghiệp làm dev đó nói ngắn thì ngắn mà dài thì cũng chẳng dài, biết bao nhiêu chuyện, bao nhiêu bài học quý giá mà công việc đã dạy cho mình. Hôm nay, một ngày đẹp trời mình xin phép chia sẻ một suy nghĩ của cá nhân mình, đó là “công việc là nơi giúp bản thân tự trưởng thành”. Làm việc không chỉ để kiếm tiền mà còn giúp bản thân trưởng thành hơn. Trưởng thành ở đây không chỉ là học thêm kỹ năng mới mà còn là sự lớn lên về nhận thức và nhân cách (mặc dù kỹ năng vẫn là điều quan trọng).
Cùi Bắp’s blog
Từ hôm nay mình sẽ viết lại những gì mình học được trong một ngày vào đây.
Go
Hướng dẫn debug code Go trên Visual Studio Code / Terminal
Trong bài viết này mình sẽ chia sẻ về cách debug Go code trên Visual Studio Code. Trước hết, chúng ta hãy tạo 1 đoạn code sample về tính số Fibonacci từ một danh sách các số cho trước trong Go như sau:
Áp dụng design patterns với Go
Design Pattern (Mẫu thiết kế) giúp chúng ta giải quyết vấn đề một cách tối ưu nhất, có thể coi nó như là kim chỉ nam giúp các lập trình viên giải quyết vấn đề thay vì tự tìm kiếm giải pháp cho một vấn đề đã được chứng minh. Design patterns không phải là ngôn ngữ cụ thể nào cả, và có thể thực hiện được ở phần lớn các ngôn ngữ lập trình. Nhưng thường gặp nó nhất trong lập trình OOP, mà đại diện chính là Java (Một ngôn ngữ OOP quốc dân).
[Go] Tránh start một program đang chạy với Flock
Hiện tại mình đang làm một dự án thực hiện xử lý bên dưới server (background processing). Hệ thống được viết toàn bộ bằng Go để tận dụng hết tốc độ cũng như sức mạnh của xử lý bất đồng bộ Goroutines. Cách đây gần một năm mình cũng từng code một dự án Go cho khách để xử lý cỡ ~100Gb
dữ liệu, nhưng mà thời gian trôi qua “Nước đổ lá khoai”
kiến thức trôi về nơi xa vắng hết.
Cloud
Ngăn chặn truy cập tới ứng dụng web đặt sau AWS CloudFront theo Client IP
Trong bài viết này mình mô tả một sự cố gần đây xảy ra trong hệ thống mà mình gặp phải khiến RDS Database CPU/Memory luôn gặp phải tình trạng quá tải, ảnh hưởng tới trải nghiệm người dùng. Đồng thời chia sẻ về các giải pháp khả thi mà các thành viên trong đội dự án đã thử triển khai thành công. Thực tế, còn có nhiều giải pháp xịn hơn, nếu bạn đã từng gặp phải vấn đề này, hãy để lại comment chia sẻ nhé 🚀
Khó khăn gặp phải khi xác định AWS IAM Policy và cách khắc phục
Tiêu đề bài viết khá dài, hiện tại mình vẫn chưa nghĩ ra được cái nào ngắn gọn mà đầy đủ ý hơn 😆
The Principle of Least Privilege - Nguyên tắc đặc quyền tối thiểu
Một số kiến thức cơ bản mà Cloud Engineer cần nắm được
Trong bài viêt này mình muốn giới thiệu với các bạn các kiến thức cần thiết khi làm việc như một Cloud Engineer hay Solution Architect trong dự án mà mình cảm thấy là cần phải biết và hiểu. Đôi khi chỉ đa phần là kiến thức cơ bản, nhưng nếu không hiểu rõ thì sẽ rất dễ nhầm lẫn và đưa ra quyết định sai khi đứng trước những lựa chọn.
Docker
[Docker Swarm] Services hoạt động như thế nào?
Tiếp tục cho chuỗi series giải thích hoạt động của Swarm mode trong Docker. Bài viết này mình xin được giới thiệu về cách thức hoạt động của một service trong Docker Swarm mode.
[Docker Swarm] Nodes hoạt động như thế nào?
Mở đầu cho chuỗi series giải thích hoạt động của Swarm mode trong Docker. Bài viết này mình xin được giới thiệu về cách thức hoạt động của một node trong Docker Swarm mode.
Dart
[Programing] Những điểm cần lưu ý trong ngôn ngữ Dart 2
Trong bài viết [trước] mình đã hướng dẫn các bạn cài đặt môi trường và setup các kiểu dự án Dart trên Intellij IDEA. Ở bài viết này mình sẽ mô tả chi tiết về cú pháp cũng như các tính năng của Dart .
[Programing] Bắt đầu lập trình với Dart 2
Cách đây 4 năm mình đã từng code thử Dart, và thực sự thấy nó chẳng có gì nổi trội, nên quyết định từ bỏ và ko học. Một thời gian bẵng đi, sau sự kiện Google I/O diễn ra vào tháng 6 năm 2018, khi Google chính thức release bản beta#3
của Flutter thì Dart
đã quay trở lại và ăn hại gấp đôi Thời thế thay đổi, mà dù ngôn ngữ chỉ là công cụ nhưng không học thì không biết nên quyết định đầu tư thời gian học Dart với hi vọng một ngày không xa sẽ build được app cho Android/iOS trên Flutter.
Outsource
Hướng dẫn sử dụng Namecheap domain với AWS Route53 và AWS EC2
Nếu bạn đang đọc bài viết này, thì rất có thể bạn đang gặp khó khăn khi di chuyển (transfer) tên miền (domain) từ các nhà cung cấp tên miền (domain providers) như Namecheap, GoDaddy, Porkbun, Domain.com … về Amazon Web Service (AWS) Route53.
Chuyện encoding tiếng Nhật và format khi export CSV trong PHP với fputcsv
Nếu ai đã từng join các dự án outsource cho khách hàng Nhật thì đều gặp bài toán phổ thông lấy dữ liệu từ database và xuất ra report .csv
cho người dùng. Nghe rất đơn giản, ta chỉ cần dùng hàm có sẵn của PHP
:
TIL
Bypass internet packages với SSL/TLS Tunnel và SNI/DNS giả
Gần đây mình có nhận được một số quảng cáo về việc hack 4G data, ban đầu mình cũng không tin việc đó, vì đơn giản cũng làm trong nghề, nên không nghĩ là cả một nhà mạng với bao nhiêu con người tài năng lại dễ dàng để xảy ra lỗ hổng như vậy. Mặt khác vào mấy trang bán gói 4G giá siêu rẻ chỉ 10/20K 1 tháng cho mình cảm giác như kiểu web lập ra để scam người dùng nạp tiền 😂
Phát hiện tình cờ về timezone của Việt Nam
Nửa đêm ngồi code function chuyển đổi hiển thị thời gian cho người dùng trên nhiều vị trí địa lý mới phát hiện 1 sự thú vị không hề nhẹ 😂.
Javascript
[List.js] Thêm mới và xoá bỏ row trong table
Trong lúc dịch tài liệu dự án, mình bắt gặp 1 yêu cầu nhỏ. Cụ thể là ở màn hình create (tạo mới) cần tạo ra một danh sách input động, các row
trong table
có thể tăng giảm dựa vào button hoặc . Thực tế, đây là bài toán khá quen thuộc và dễ dàng thực hiện với các framework hỗ trợ data-binding như React, Angular hay VueJs. Tuy nhiên do đặc thù là maintaince một tool khá cũ của khách nên cũng không muốn add thêm mấy cái đao to búa lớn quá.
Linux
[Capacity Planning] Đo lường và khắc phục sự cố sử dụng tài nguyên
Có rất nhiều thành phần trong một hệ điều hành Linux có thể gây ảnh hưởng tới hiệu năng của hệ thống. Việc chủ động giám sát các (monitoring) components, sẽ là cách duy nhất để bảo vệ hệ thống của bạn. Bài viết này tôi sẽ đề cập tới các công cụ và tiện ích giúp bạn có thể giám sát hệ thống dễ dàng.
Infrastructure
[Elasticsearch] Sao lưu, phục hồi và đánh lại chỉ mục trong Elasticsearch
Cấp cứu, code lỗi đi cmn hết dữ liệu Elasticsearch trên production rồi anh
Laravel
[Laravel] Generate mix javascript bundle file hoạt động trên IE 11
Hiện tại bên mình đang có 1 dự án code = Laravel Framework 5.6. Hôm nay bị khách hàng feedback về vụ Sweetalert2 không hoạt động được trên IE 11
, trong khi Chrome, Firefox thì vẫn ngon lành cành đào. Khách hàng toàn dùng Chrome
cơ mà tự nhiên hôm nay đến ngày nên dùng IE 11
Rails
Sử dụng rails console generator và rails migration độc lập cho dự án (non-Rails)
Khi lập trình với Go thì mình không có gì để phàn nàn ngoài 1 điều là Go không support sẵn các thư viện hỗ trợ lập trình viên tiết kiệm thời gian cho việc tạo migration/schema
.
Meetup
Vietnam Kubernetes Community - First meetup
Trong những năm gần đây meetup giữa những người làm công nghệ ngày càng trở nên phổ biến. Rất nhiều hoạt động meetup của cộng đồng các kỹ sư thuộc các mảng công nghệ được tổ chức.
Migration
Nâng cấp phiên bản AWS RDS MySQL từ 5.7 lên 8.0
Đã hơn 5 tháng trời trôi qua không viết một bài nào trên Blog, và mình đã quay trở lại rồi đây 😂
Data-Pipeline
Xây dựng serverless data stream pipeline bằng AWS Kinesis, Lambda, S3 cho Snowflake
Trong bài viết này mình sẽ chia sẻ về một mô hình mà mình sử dụng để đề xuất khách hàng trong quá trình thực hiện estimate một dự án trong bộ phận, mà trên thực tế bản thân cũng chưa từng sử dụng (liều ăn nhiều ) nên có thể sẽ phát sinh khá nhiều issue 😂.