Skip to main content

Posts

Showing posts from October, 2022

GitLab CE tự host không như GitLab.com

Một đoạn code đơn giản, đã chạy ít nhất 5 năm trên gitlab.com, khi mang về gitlab CE tự host, dùng cùng gitlab CI runner, chạy CICD job lại fail. $ git diff --name-only origin/master...HEAD ... fatal: ambiguous argument 'origin/master...HEAD': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' ... Không có origin/master, kể cả master cũng không có. Photo by Abdulaziz Alfawzan on Unsplash Hóa ra bên trên output của GitLab CI job có 1 dòng Fetching changes with git depth set to 20... Config trên GitLab > CICD Settings của project, mặc định sau khi cài GitLab CE 15.4.2, giá trị Git shallow clone là 20. Trên GitLab.com, giá trị này mặc định là không set (blank). The number of changes to fetch from GitLab when cloning a repository. Lower values can speed up pipeline execution. Set to 0 or blank to fetch all branches and tags for eac...

Tạm biệt VirtualBox, chào Debian trên libvirt thêm lần nữa

Có 3 giải pháp tạo máy ảo phổ biến: vmware, virtualbox và kvm (linux only). Bắt đầu với Virtualbox từ khi dùng Windows, đi làm dùng Ubuntu chuyển qua kvm vì các dòng lệnh & công việc (openstack) dùng hàng ngày, rồi lại quay lại VirtualBox khi đó là lựa chọn duy nhất trên MacOs. Ngày nay, lại quay lại với kvm: vì open-source. Mặc dùng VirtualBox là open-source, một số tính năng trong extension-pack lại chỉ của riêng Oracle và chỉ được dùng cho mục đích cá nhân, tức không thể dùng trên máy công ty/trong công việc. Nếu công ty đủ lớn, lỡ dùng trong công việc có thể bị kiện , đặc biệt là khi làm công ty nước ngoài. Trên MacOS ngày nay có thể dùng UTM . Cài đặt libvirt virt-manager là chương trình giao diện đồ họa. sudo apt install libvirt-daemon libvirt-clients virt-manager Thêm user hiện tại vào group libvirt: sudo usermod -a -G libvirt $(whoami) Tải debian vagrant box Vào https://app.vagrantup.com/debian/boxes/bullseye64 tải file libvirt, ví dụ: https://app.vagrantup.com...

[AWS][SQS] Queue service dễ dùng, mà toàn trap

Trong ba vạn sáu ngàn chín trăm service của AWS cung cấp, mỗi cái một kiểu, có this có that. EC2, ALB, RDS, S3, SQS, Lambda là những cái tên "cơ bản" nhất, cũng là phổ biến nhất. Đặc điểm chung là dễ dùng, đắt, và cũng dễ dính trap!!! Let's go. SQS là viết tắt của chữ Simple Queue Service , một dịch vụ cloud khá tương đương với các phần mềm message queue dưới đất như: RabbitMQ ActiveMQ IronMQ Photo by Nick Fewings on Unsplash Nếu bạn chưa nghe tên cả 3, thì nó giống như 1 cái ống nước, một đầu gửi thư, đầu kia nhận thư, nếu không ai nhận thì nó nằm trong cái ống. Vì chỉ đơn giản có vậy, nên sau khi tạo 1 cái queue, thì dùng nó chỉ có 3 thao tác: gửi message nhận message xóa message message có thể là 1 đoạn text format JSON. PS: bài viết không yêu cầu code Python, chỉ dùng minh họa. Sử dụng Python lib boto3, mọi chuyện đơn giản đúng như nói. Ví dụ lấy từ tutorial của boto3 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/sqs.html Tạo SQS...

Hello world dùng x64 assembly

Assembly (asm) ở Việt Nam được gọi là "hợp ngữ cũng có thể được gọi là mã máy tượng trưng" , là một ngôn ngữ lập trình cấp thấp, thường tương ứng 1 lệnh với 1 lệnh của CPU. Lập trình assembly ngày nay không còn phổ biến như trước khi có C. C/Zig/Rust... được dùng để viết code "low level", nhưng khi cần tốc độ tối đa, lập trình nhúng, viết driver, hay thực hiện reverse engineering, binary exploitation, asm là ngôn ngữ được ưa chuộng. Photo by Olivier Collet on Unsplash Code Rust ---compile -> binary Code C ---compile -> binary Code ASM ---compile -> binary Loạt bài viết này giới thiệu vài chương trình assembly đơn giản, cách compile, chạy, các tool dùng để tìm hiểu file binary. Assembly đơn giản (giới hạn không nhiều lệnh, luật lệ rõ ràng), nhưng không dễ (mất rất nhiều bước để làm một việc, rất thủ công). Hello world Là một chương trình in ra màn hình dòng chữ "hello world". Code Python: print("Hello,world") Code C: #in...

Đọc một quyển sách 400 nghìn tốn bao nhiêu?

Sách là một người bạn Sách là trí tuệ Sách là một hình thức giải trí như film ... blah blah blah ... Đối với mỗi người sách là một thứ khác nhau. Nếu mua một cuốn sách giá 400.000 VND, thì đọc nó tốn bao nhiêu? Câu trả lời không thực sự dễ dàng. Photo by 🇸🇮 Janko Ferlič on Unsplash Lấy vị dụ cuốn 1Q84 của Haruki Murakami bản tiếng Anh dày 1328 , với tốc độ đọc 3 phút 1 trang, thì mất >>> 1328*3 3984 phút >>> 1328*3 / 60 66.4 giờ 66 tiếng (nếu mỗi ngày dành 1 tiếng đọc thì sau 2 tháng sẽ đọc xong, 1 năm đọc được 6 quyển). Một tháng, 1 người lao động văn phòng đi làm ~168 tiếng. Với mức lương trung bình 2021 của 1 lập trình viên Python có ~ 5 năm kinh nghiệm ở VN là ~1000 USD, 23 triệu/tháng . Thì thời gian để đọc hết cuốn sách này trị giá: >>> usd_rate = 24000 >>> 66/168 * 1000 * usd_rate 9428571.428571427 Tức khoảng 9.5 triệu VND tại thời điểm hiện tại. Như vậy, trừ khi thời gian là miễn phí, việc mua 1 cuốn sách chỉ tốn một phầ...

Tạm biệt Ubuntu, chào Debian

Ubuntu là distro đầu tiên đưa mình vào thế giới Linux, thế giới không Windows, với phiên bản 8.04. Nó cũng đi cùng luôn sự nghiệp khi đa phần server đều dùng Ubuntu. https://pymi.vn ra đời năm 2015, chạy trên Ubuntu 14.04, sau 3 lần upgrade sang 16.04, thay toàn bộ Upstart init file bằng systemd sang 18.04, thay Python2 bằng Python3 thì lần này, mình quyết định chuyển sang dùng Debian. Debian không mới, nó là distro mà chính Ubuntu dựa trên, chỉ có một cộng đồng rất lớn, không có công ty đứng sau. Lý do vì ở phía server, ngày nay không có gì chỉ chạy trên Ubuntu mà ko chạy trên Debian cả. Debian cũng không có câu chuyện đáng sợ về motd luôn gọi về server của Ubuntu để chạy quảng cáo . Mà nếu để ý, các docker file chính thức đều dùng Debian, điển hình như Python bullseye Việc sử dụng server debian thì gần như không khác gì Ubuntu, cấu trúc thư mục vẫn vậy, apt vẫn vậy. Không phải toàn màu hồng năm 2021, đã từng thử cài debian trên desktop, mà lần bật lên đầu tiên bị lỗi ...

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG