Python2 vs Python3 trong chớp mắt

Một chú lịch sử Python 2 ra mắt năm 2000, phiên bản mới nhất của Python 2 là 2.7, ra mắt 2010. Python 3 ra mắt 2008, bản mới nhất là 3.6, phát hành 2016, bản 3.7 đang phát triển (tới thời điểm dịch bài này thì bản 3.7 chạy rồi) Mặc dù python 2.7 hiện vẫn được sử dụng rất rộng rãi nhưng python 3 cũng phát triển rất nhanh. 2016, 71.9% các dự án sử dụng python2.7, sang tới 2017, tỉ lệ đó giảm còn 63.7%. Tín hiệu này cho thấy cộng đồng lập trình đang chuyển dần sang bản 3. ...

May 26, 2019 · Phi Hong Thai

Cấu hình nginx để tạo proxy server tới API Gateway

sửa file config của server thành thế này là được: server { listen 80 default_server; listen [::]:80 default_server; server_name _; location / { proxy_set_header Host $proxy_host; proxy_pass_request_headers on; #proxy_ignore_headers Set-Cookie; #proxy_set_header Host $host; proxy_pass https://...execute-api.us-east-1.amazonaws.com; } } Bình luận (1) root — 2019-04-22 09:12 thêm option này nếu bị lỗi SSL_do_handshake() failed proxy_ssl_server_name on;

April 20, 2019 · Phi Hong Thai

Nhật ký xử lý sự cố

Thứ đã cứu vãn cuộc đời mình For everyone having the same issue. I have found a solution that works for me. None of the other solutions here and in the web helped me. Follow the following steps in this solution: https://stackoverflow.com/questions/39144688/aws-lambda-invoke-not-calling-another-lambda-function-node-js Additional to that do the following: VPC Dashboard > Route Tables > click on one of your Route Table > click on Subnet Associations > click Edit > for each of your Route Table (public, or private) select the appropriate subnet (public, or private) and save. Do this step for each of your 2 Route Table. Go to your lambda function, then configure the Subnets in Configuration to your private Subnet. This is the only one you need. And you are now able to invoke the other lambda function outside the vpc. Chém vậy thôi nhưng thực ra là cũng gần như thế, không làm được là bị (anh Phương) quẩy tưng bừng. Mà đọc hướng dẫn các kiểu làm theo, không thấy hiệu quả gì cả. Ban đầu, hệ thống có mysql, redis. Redis ở AWS bắt buộc phải ở trong VPC mới kết nối được, thế là Lambda trong cùng VPC với Redis thì ok, nằm ở VPC khác hoặc No VPC là timeout. Mình cấu hình mãi không sao cho Lambda đâm ra ngoài internet để kết nối sang mysql được. Bực quá, quẫn chí, tạo luôn mysql khác, nằm cùng VPC với Redis, thế là kết nối ngon. Sang ngày hôm sau, sếp yêu cầu kết nối tới SNS để gửi SMS tới điện thoại, mysql và SNS để No VPC thì ok rồi. Lại thêm SES để gửi email, No VPC vẫn ok. Vậy là 3 ông mysql, SNS, SES để No VPC là ngon lành. Sếp yêu cầu kết nối thêm cả Redis vào, hì hục cấu hình, đọc đi đọc lại hướng dẫn, tài liệu. Éo làm sao kết nối được, toàn timeout. Điên hết người. Thôi bảo sếp: anh muốn nhanh thì làm 2 lambda đi, một cái kết nối tới Redis và mysql, để ở trong VPC, check xong thì gọi sang cai lambda thứ hai, để ở ngoài VPC để gọi tới SNS và SES. Sếp bảo ĐẾU, phức tạp thế ai mà làm. Ờ cũng phải. Thôi thử tạo VPC mới đúng theo chúng nó hướng dẫn xem có ăn không nào (mình trước giờ là sửa đổi cái VPC hiện tại đã có sẵn). Tạo mới VPC rồi cấu hình thì lại kết nối được VPC ra ngoài internet mới ghê. Ah đây rồi, vậy là hướng dẫn nó đúng đắn, có tương lai rồi, không phải là hướng dẫn bố láo (hoặc AWS đã đổi). Hì hục quan sát kĩ hai cái VPC xem khác nhau ở chỗ khỉ nào mà sao cái cũ không ra internet được, cái mới lại ra được. Rút cục thì cũng tìm ra chân trời. Vi diệu đừng hỏi luôn. Thôi không nói đâu. Cái gì mình giỏi thì không làm miễn phí – Tùng Hà bảo thế = )) ...

October 9, 2017 · kanishi

How to backup your last time with Xiaomi camera

I bought a Xiaomi camera, with 32GB microSD, it can record about 10 days, but it saves data to many folders, per folder has many files, the length of file less than 60 seconds. When I backup data from microSD to hard disk, it is difficult to watch because I must open file many many time. So, I want to merge all file in the folder to one file and upload to youtube to easy to access. I have to code something. The first, I install FFmpeg to my Mac, it is not easy as installing FFmpeg on Ubuntu, but I did. That’s ok, FFmpeg saves my life :p. This is my code: https://gist.github.com/hongthaiphi/3aa09c91988313ba72adfd76772e88af ...

April 25, 2017 · kanishi

Gán quyền một bucket cho một user

Gán quyền loằng ngoằng trên giao diện (console), thấy nó ghi full quyền rồi mà khi làm việc với thư mục con lại lỗi, hoá ra full quyền trên giao diện mới được như này: { “Version”: “2012-10-17”, “Statement”: [ { “Sid”: “Stmt1491906008000”, “Effect”: “Allow”, “Action”: [ “s3:*” ], “Resource”: [ “arn:aws:s3:::kamaxuta” ] } ] } Phải sửa thành như này mới thực sự full quyền: { “Version”: “2012-10-17”, “Statement”: [ { “Sid”: “statement1”, “Effect”: “Allow”, “Action”: [ “s3:GetBucketLocation”, “s3:ListAllMyBuckets” ], “Resource”: “arn:aws:s3:::*” }, { “Sid”: “Stmt1491906008000”, “Effect”: “Allow”, “Action”: [ “s3:*” ], “Resource”: [ “arn:aws:s3:::kamaxuta”, “arn:aws:s3:::kamaxuta/*” ] } ] } ...

April 12, 2017 · kanishi

Thay đổi kiến trúc hệ thống

Nghe có vẻ hầm hố, chả là hồi trước mình có viết một cái chrome extention để mỗi lần mở tab mới sẽ hiện ảnh một em gái xinh xinh. Hồi ấy làm ở VP9 nên dùng chùa server của VP9, sau đó nghỉ VP9 thì mua một cái VPS ở azdigi giá 170k/tháng để làm server crawl cũng như nghịch linh tinh. Hồi ở VP9 học code nodejs nên dùng nodejs để code cái back-end cho extention, kiến trúc đại loại thế này: ...

April 9, 2017 · kanishi

Update row in mongodb

Database TEST có một COLLECTION tên là IMAGES Có một trường dữ liệu là URL, các url bắt đầu với 65.media và 67.media bị lỗi, phải sửa thành 66.media thì mới show được ảnh ra. Với oracle hay mysql thì 30s là xong ngay. Nhưng với ông mongodb này thì phải mày mò gần 30p, rút cục cũng update được: db.images.find({url:/65.media/i}).forEach(function(e,i){ e.url=e.url.replace(“//65.media”,”//66.media”); db.images.save(e); }); Bình luận (1) Tú béo — 2017-02-04 15:07 ...

February 3, 2017 · kanishi

Build a service with AWS Lambda and API Gateway

https://gofore.com/en/going-serverless-with-amazon-s3-and-lambda/ Using AWS Lambda and API Gateway to create a serverless schedule https://blog.mitocgroup.com/building-scalable-web-apps-with-aws-lambda-and-home-grown-serverless-web-framework-e04c912d08f0#.pu0eolxh0 https://cloudofficer.co/adding-dynamic-functionality-to-your-static-website-using-aws-lambda-and-api-gateway/ https://medium.com/@danilop/aws-lambda-calling-functions-from-a-web-browser-338fbcb6a44d#.32o80xuux Bài hay: https://kennbrodhagen.net/2016/01/31/how-to-return-html-from-aws-api-gateway-lambda/ https://neo4j.com/blog/neo4j-aws-lambda-api-gateway-recommendation-engine/ http://blog.michaelschmatz.com/2016/04/02/how-to-build-an-image-host-using-aws-lambda-s3-and-dynamo/ http://readwrite.com/2015/11/16/how-to-build-an-api-amazon-lambda/ https://cloudnative.io/blog/2015/05/lambda-chat/ AWS Lambda Tutorial: Step by step instructions to create a scalable web application – Part 2 http://www.bebetterdeveloper.com/coding/architecture/serverless-system-architecture-using-aws.html

December 20, 2016 · kanishi

Thành tựu

Thành tựu số 01: Hôm nay mình đã thực hiện buổi học đầu tiên với giáo viên tiếng anh người … Ukraina. Chuyện học ở Preply.com: Tiếc tiền nên search ra một loạt các giáo viên 2$/h rồi gửi request, nhắn nhủ kiểu “hey, tao muốn học tiếng anh”. Cắm đầu cắm cổ không để ý một checkbox rất bé có nội dung là “cc cho tất cả các giáo viên nội dung tin nhắn này”. Thế là nhận được hàng loạt lời mời học của các giáo viên 10, 13, 15$/h, huhu, thích lắm cơ mà học giá đó tiếc quá. Phải vào từ chối cả loạt. Cơ mà có một cô giáo ở Kiev lại nhắn tin khá tận tình, bảo là “mày chê 10$ đắt thì mấy $ mầy học?” Mình nhắn lại là “5$ thì tao sẽ học”. Cô giáo bảo “ok, thế tao đặt giá cho mày 4$, học thử đi”. Ngon, tiến hành luôn. Hẹn cô giáo từ hôm qua, hồi hộp phết, nhưng hóa ra cũng không đáng sợ như mình tưởng. Học mới thấy vốn từ kém quá, muốn hỏi mà không nghĩ ra từ mà hỏi, nói chuyện thời tiết thì không nghĩ ra từ “tuyết” là gì để khoe là Việt Nam cũng có tuyết :)) Phát âm thì tệ không tả nổi :)) Ok ok, cố lên. Đi được bước đầu tiên rồi, chăm chỉ học từ và tập phát âm từng từ một, học tầm 10 buổi chắc là khá khẩm hơn, 20 buổi chắc là sẽ đủ dũng khí đi phỏng vấn bằng tiếng anh :)) **Thành tựu số 02:**Viết thêm được một extension nữa :v Do nhu cầu học từ vựng để đọc sách, nói chuyện, đọc tài liệu, thi TOEIC, mình tìm các extension cho chrome xem có cái nào giúp học từ tiện lợi. Vì sao cứ chrome extension hoài vậy? Một ngày 10 tiếng ở cty thì khoảng 6 tiếng mình nhìn vào màn hình chrome, new tab khoảng 100 lần hoặc hơn. Thế nên chrome và newtab gần như thế giới của mình :)) Mỗi lần newtab nhìn thấy một từ mới chả hơn là nhìn thấy cái ô facebook (recent tab) à? À nhìn các em xinh thì cũng thích đấy nhưng thời điểm này anh phải tập trung nguồn lực để lấy số với đời các em nhé, đợi anh có thông thạo tiếng anh thì sẽ lại dùng random beautiful girls. PS: Tại sao nên dùng chrome? Vì chrome dùng đa tiến trình (multi process), tận dụng được các cpu đa nhân, firefox trời ơi vẫn dùng đơn tiến trình, hôm nọ đọc báo mới biết điều đó, thảo nào chrome tuy tốn ram nhưng mượt hơn firefox. PS2: Cái newtab newword này lấy cảm hứng từ Magoosh Vocabulary, thiết kế của nó rất tinh tế dễ chịu, lại có cả phát âm, mình chưa đạt tới trình độ đó, nhưng có ưu điểm là có nghĩa tiếng Việt, hê hê. Dễ nhớ hơn. Thôi đi ngủ cái đã. ...

June 14, 2016 · kanishi

Bash không phải tiếng người

Sáng nay, à, cả ngày hôm nay hì hục, rút cục cũng xong cái task “Run file sh from file”. Bài toán thế này: Cho file A, trong file có nhiều dòng, mỗi dòng gồm nhiều tham số, mỗi tham số cách nhau bởi dấu chấm phẩy (;), đọc từng dòng và tách các tham số để tạo thành một câu lệnh và chạy câu lệnh đó. Tất cả viết bằng bash script. ...

June 8, 2016 · kanishi

Mỗi tab một em

Mình rất ấn tượng với cái extention Momentum, ảnh của nó đẹp quá đi, nhìn rất phê. Nhưng ngoài ngắm cảnh mình còn thích ngắm các em gái xinh, cũng có sẵn vài chrome extention như Hot girls hoặc Bikini, nhưng toàn là gái châu Âu, không hợp gu mình, nhìn không hợp mắt cho lắm. Quyết định là phải tự viết một cái extention cho Chrome, mỗi lần new tab là hiện ra một em gái Việt Nam. Sau nhiều cố gắng thì cũng có một bản nháp dùng được, tải về tại đây Giải nén ra có thư mục newtab, paste vào trình duyệt Chrome dòng chrome://extensions/ rồi tích chọn Developer mode. Sau đó click vào Load unpack extention… rồi chọn thư mục newtab, open. Thế là xong, mỗi lần ctrl T sẽ hiện lên một ảnh ngẫu nhiên từ xkcn.info Hoặc đơn giản là tải về từ Google Chrome Store ...

May 25, 2016 · kanishi

Viết API để gửi tin nhắn với telegram bot

Có hai việc chính: – Tạo một con bot bằng cách chat với BotFather – Viết api Các công cụ cần thiết: – Tài khoản telegram – Nodejs và các gói liên quan, trong đó có gói telegram-node-bot – Server để deploy api chạy ngày chạy đêm. Tham khảo từ: https://core.telegram.org/bots https://www.npmjs.com/package/telegram-node-bot Bắt đầu: Tạo bot bằng cách chat với BotFather, đáng ra phải là BotMother chứ nhỉ :)) /start /newbot Chọn tên cho bot, không bắt buộc có chữ bot ở trong tên này Chọn username cho bot, bắt buộc có chữ bot trong tên này. Ok xong, bạn sẽ thấy một cái token để ném vào trong code. Tạo file ping.js https://gist.github.com/hongthaiphi/6c57265b73ef55644b9c1cb432752f59 Nhớ thay chỗ YOUR_TOKEN bằng token mà BotFather gửi cho bạn. Ok, cho chạy đê node ping.js Chat với bot, gõ ping gửi cho bot, log sẽ xuất hiện thông tin của user_id hoặc group_id mà bạn đang chat, tóm lấy nó – chính là cái chatId Giờ mới đến phần chính, tạo file my_api.js https://gist.github.com/hongthaiphi/d73c3f9be2707788c1cebcb21e70759d Chạy nào: node my_api.js Paste link này vào trình duyệt: http://localhost:3000/toTelegram?msg=tinnhan Trên telegram bạn sẽ nhận được tin nhắn với nội dung tinnhan. Xong. ...

May 20, 2016 · kanishi

tumblr tool to download image

Download toàn bộ ảnh trên một trang tumblr nào đó chỉ với một câu lệnh: tumblr-dl xxx.tumblr.com Ah trước đó phải cài gói này: npm install -g tumblr-downloader http://65.media.tumblr.com/cd9b14caf79bf213f9927f7f10c01acf/tumblr_o79mrv7K3E1qbd81ro1_1280.jpg Bình luận (4) Tú béo — 2016-05-21 14:03 Cho xin vài link nguồn mát mẻ nào ;)) ThaiPH — 2016-05-22 03:25 xkch.tumblr.com mantinh.tumblr wanimal1983.tumblr thichanthit.tumblr Tú béo — 2016-05-22 10:37 Hardcore cơ à, nặng đô vãi nhỉ :)) ...

May 20, 2016 · kanishi

Hiển thị code định dạng đẹp

Mình rất bực tức và ghen tị mỗi khi vào một blog nào đó, thấy nó hiển thị code trong bài viết rõ là đẹp đẽ tuyệt vời như này: https://gist.github.com/hongthaiphi/da74a34fc48ec867e4462d158fa35ee4 trong khi code trong blog của mình thì xấu như này /** * User object contains user ID as an integer, and 5 fields of generic object * In this example, 5 fields of generic objects are associate with some primitive types */ static class User { // userID is a number private Integer userID; // generic type of float number private Float field1; // generic type of integer number private Short field2; // generic type of boolean number private Boolean field3; // generic type of byte number private Byte field4; // generic type of long number private Long field5; } Giải pháp hóa ra đơn giản đến không ngờ, vào https://gist.github.com/ – tất nhiên phải đăng nhập, sau đó paste đoạn code của bạn vào, chọn tên file với đuôi đúng loại, ví dụ java, js…, save lại, rồi copy cái link Share, paste thẳng vào wordpress, thế là xong con ong. ...

May 19, 2016 · kanishi

Có ai đi bán sim không? Hướng dẫn viết chat bot cho facebook

Xin chào. Hôm nay các bạn có khỏe không ? Bạn có muốn đi bán sim không ? Hay muốn unfriend bằng cách nhắn tin chửi hết mọi người trong friend list hoặc là bạn muốn bán sim để ra đường bị đánh chết. Đúng rồi đấy, hôm nay chúng ta sẽ cùng xây một công cụ như vậy – Facebook Chat Bot. Mình đang học nodejs, có một cái thư viện để viết chatbot cho facebook khá hay, có thể dùng để spam cho toàn bộ friend list =)) Đọc hướng dẫn ở đây funny phết. Code thì đơn giản thôi https://gist.github.com/hongthaiphi/f2a093e168ef6f959f7e38fbc2e8cc14 Thế là xong. Toàn bộ 2000 bạn bè mình sẽ nhận được tin bán sim, và sau đó 1999 người sẽ unfriend mình :)) Ngoài ra mình đang viết code lấy toàn bộ log chat facebook về file. Có vẻ loằng ngoằng hơn một chút. ...

May 19, 2016 · kanishi