tag:blogger.com,1999:blog-77405088046140293692024-03-22T10:05:34.386+07:00Love CodingI love coding. I have a bug, I fix it and I note it on my blog. We can use my coding experience to solve your issues! Hope this help!Unknownnoreply@blogger.comBlogger777125tag:blogger.com,1999:blog-7740508804614029369.post-56524466885608187802024-02-03T17:19:00.005+07:002024-02-03T17:19:43.512+07:00Reload hay restart nginx sau khi thay đổi config Đang dùng nginx trên Windows, chạy dạng service với NSSM để chia tải tới các node của ứng dụngCần phải thay đổi config. Sau khi thay đổi không biết nên reload hay restart nginx thì đây là lời khuyên cho bạnNên reload thay vì restart. Restart các client đang request tới hoặc chờ nhận response sẽ bị mất kết nối và báo lỗi. Còn reload nó sẽ vẫn phục vụ nốt các client cũ còn đang "dang dở"Thêm Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-64948741208262840892023-11-21T17:40:00.001+07:002023-11-21T17:40:12.825+07:00nginx timeout 499 vs 504Phân tải api tới các node bằng nginxserver { listen 8899; location / { proxy_pass http://allbackend; add_header Real-NodeInfo $upstream_addr always; }}upstream allbackend {least_conn;server 127.0.0.1:8801;server 127.0.0.1:8802;server 127.0.0.1:8803;}Nếu client cài timeout là 5 giây. Khi nginx chia vào node 8803 xử lý mất 8 giây thì client sẽ ko nhận được Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-30993175552268785362023-07-13T17:06:00.000+07:002023-07-13T17:06:03.195+07:00Có cần nohup khi chạy ứng dụng ngầm không Chạy lệnhjava -jar app.jar &với nohup java -jar app.jar &thì khác nhau thế nào?Lệnh ko có nohup thì output sẽ tiếp tục văng ra trên màn hình terminal phiên đăng nhập hiện tại (pts - pseudo terminal slave). Thế nên sau khi chạy lệnh đấy, bạn làm vài thứ mà vẫn thấy log văng ra lại tưởng ma làm hay lỗi gì :))Còn lệnh có nohup thì output sẽ đẩy ra file nohup.out ở cùng thư mục (hoặc Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-77653773712659886772023-06-02T10:48:00.003+07:002023-06-02T10:48:25.349+07:00Chia nhỏ file để gửi mailServer không có kết nối internet, không được cắm USB, có thể nhận file qua mail nhưng mỗi file không quá 50M thì phải làm sao?Chia file to ra các file con rồi gửi qua mail. Sau đó gộp các file con lại là dùng đượcĐiều kiện: Đã có git bash trên client và serverChia bằng lệnh split ở máy clientsplit -b 50M big.zip bigPrefixGửi mail điTrên server gộp file bằng lệnhcat bigPrefix* > big.zipUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-88856003106261516092023-05-29T16:46:00.004+07:002023-05-29T16:46:37.613+07:00invalid source release 11 gradle buildVấn đề: Có project code trên IDE Spring Tool Suite, lúc chạy Debug As - Spring Boot App thì ứng dụng vẫn okie. Nhưng khi build, chạy command: .\gradlew clean build thì bị báo lỗiTask :compileJava FAILEDFAILURE: Build failed with exception.What went wrong:Execution failed for task ':compileJava'.> invalid source release: 11Nguyên nhân: gradle đang dùng java 8 để build (bạn chạy .\graldew -Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-12589181531922941642023-03-20T22:35:00.000+07:002023-03-20T22:35:08.399+07:00Sửa lỗi nginx Too many open files Áp dụng trên server linux của mình thì như sau là được:Bước 1:sudo systemctl edit nginx.serviceThêm dòng[Service]LimitNOFILE=10001Bước 2: Thêm/sửa trong file config của nginxworker_rlimit_nofile 10001;events { worker_connections 4096;}Restart nginx (reload không ăn)Bước 3: Xác nhận kết quảcat /etc/systemd/system/nginx.service.d/override.confcat /proc/$(cat /var/run/Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-7740508804614029369.post-546123122046407092022-09-05T14:22:00.000+07:002022-09-05T14:22:11.096+07:00Chạy PerfMon Server Agent trên windows bị lỗi EXCEPTION_ACCESS_VIOLATIONĐang vọc vạch test tải server với JMeter trên Windows (môi trường cụ thể cá nhân đang dùng là Windows 11 Pro, JMeter 5.5). Để theo dõi RAM với CPU của server trong quá trình test thì dùng plugin này:PerfMon (Servers Performance Monitoring)Vendor: JMeter-Plugins.orgAllows collecting target server resource metrics. You need to start ServerAgent on a target machine.Documentation: https://Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-38617190016740632092022-08-25T14:03:00.007+07:002022-08-25T14:03:38.018+07:00Chạy lệnh với vai trò user khác trên WindowsKhi cài đặt Jenkins trên Windows thì lúc chạy service nó khuyến cáo tạo tài khoản độc lập để chạy. Okie tạo thêm 1 tài khoản là jenkins để cài đặt điVậy muốn test 1 số lệnh khi build có chạy được không thì làm thế nào? Ví dụ "php -v" hay "java --version"Vì có thể PATH chỉ set ở level user chứ ko set ở level system. Nên nếu ko chạy thì phải gõ câu lệnh với đường dẫn đầy đủTrên linux có lệnh su (Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-7740508804614029369.post-74470091156858482952022-07-04T09:24:00.000+07:002022-07-04T09:24:48.889+07:00Chạy https cho nginx trong docker Tạo chứng chỉ ssl cho tên miền huypv.docker thu được 2 file .key và .crtdocker-compose.ymlversion: '3'services: webserver: image: nginx:latest ports: - 80:80 - 443:443 restart: always volumes: - ./conf/:/etc/nginx/conf.d/:ro - ./webroot/:/usr/share/nginx/Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-86767896417409966592022-06-23T15:32:00.000+07:002022-06-23T15:32:07.244+07:00Triển khai nhanh sign in with apple trên webNghe tới Apple là nghe tới mùi tiền rồi. Không như Google Play, để đưa mobile app lên Apple Store thì phải mất khá nhiều xèng. Apple Developer Program - US$ 99. Mà lại là còn theo năm nữa -_-
Nếu triển khai Sign in with Google thì miễn phí, còn ông Apple thì... Chưa kể còn phải đầu tư con Mac nữa, chát... Cũng vì thế mà lương của lập trình viên iOS cao hơn Android :))Sau khi tiêu tiền và trở Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-67754057046822702582022-04-20T09:07:00.003+07:002022-04-20T09:07:29.483+07:00PHP set_time_limit rồi nhưng 503 là script bị dừngCó 2 đoạn code PHP giống nhau nhưng trên 1 server thì chạy được, 1 server thì bị 503 và không có logset_time_limit(180);sleep(50);Log::info('Van chay duoc den het script');Kiểm tra thì đều chạy php-fpm, cấu hình php.ini giống nhau max_execution_time trong php.ini đều chỉ là 30 giâyNhư vậy phải có 1 thông số cấu hình nào đó của web server đang khác nhau. Kiểm tra thì tòi ra kết quả:1 anh Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-13523430684352313132021-11-12T16:08:00.002+07:002021-11-12T16:08:28.102+07:00Setup Zipkin lấy log từ queue của RabbitMQĐợt này làm về tracing: mục đích là xem các API gọi nhau lâu không, ràng buộc thế nào (cái nào gọi tới cái nào), cái nào bị tắc còn tối ưu, 1 đơn hàng từ lúc bắt đầu đến lúc kết thúc mất bao nhiêu thời gian... Ngắm được thằng Zipkin, làm các bước triển khai demo xem thế nào. Chọn kiểu chạy file JAR cho nó đơn giảnMặc định chạy nó sẽ lưu log lên RAM, nên sẽ thay đổi để nó lưu log vào MySQL. À Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-10268009568385731972021-08-24T14:14:00.003+07:002021-08-24T14:14:43.613+07:00Lưu tiền trong DB MySQL là int, decimal, float hay doubleLàm về ví điện tử, các giao dịch có vnd và usd. Lưu giá trị đơn hàng kiểu số như thế nào cho phù hợp/chuẩn nhất. int, decimal, float hay double?Lưu là double nhéUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-84784865055374108462021-08-18T14:54:00.002+07:002021-08-18T14:54:45.907+07:00Hiểu rõ hơn về bảo mật dữ liệu qua API với mã hóa RSAMã hóa RSA là mã hóa bất đối xứng. Mã hóa đối xứng là dùng chung KEY để mã hóa và giải mã. Mã hóa bất đối xứng là mã hóa bằng 1 KEY, giải mã bằng 1 KEY khác.Mã hóa đối xứng mà anh em dev thường gặp khi làm việc với các API là DES, 3DES và AES. Trong đó AES là tân tiến nhất.Thuật toán mã hóa bị coi là không an toàn khi có máy tính (siêu máy tính) giải mã được trong thời gian ngắn (5 năm cũng là Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-43566609427706959852021-06-29T11:08:00.002+07:002021-06-29T11:08:46.034+07:00PHP kiểm tra URL đang chạy là http hay httpsĐang code PHP và muốn tự động phát hiện xem link chạy đang là http hay https thì làm thế nào? Kiểm tra biến $_SERVER$_SERVER["SERVER_PORT"] = 80 thì là http, 443 thì là https => sai nhé. Nếu chạy qua HA, proxy thì check thế này ko đúng URL trên trình duyệt https nhưng SERVER_PORT vẫn chỉ là 80 Dùng REQUEST_SCHEME xem http hay https => cũng éo đúng khi server chạy qua proxyQua proxy thìUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-16205316356181642402021-05-31T14:58:00.003+07:002021-05-31T14:58:39.500+07:00Lỗi SQL sau khi xóa bảng MySQL không dùngCó thời gian nên review lại DB để xóa bớt các bảng không dùng đến nữa. Đầu tiên là lấy ra các bảng ko có dữ liệuSELECT * FROM information_schema.`TABLES` WHERE TABLE_ROWS = 0 AND TABLE_SCHEMA = 'your_db';Rà soát code để đảm bảo ko có phần nào dùng đế bảng đó nữa (select, insert, update)OK, sau đó xóa đi và lướt qua hệ thống, theo dõi log xem có phát sinh vấn đề gì ko.Mọi thứ tưởng êm xuôi nhưng Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-85145351779554859922021-05-12T16:26:00.001+07:002021-05-12T16:26:16.373+07:00Bật cache bằng redis cho Lumen Dự án cũ dùng Lumen 5.4, có cache đang dùng file. Nay hí hoáy cho sang redis xem sao thì bị lỗi dù đã cấu hình ở .ENV và app.phpỞ .ENV có dòng:CACHE_DRIVER=redisỞ app.php có khai báo:$app->register(Illuminate\Redis\RedisServiceProvider::class);(nếu ko khai báo thì sẽ bị lỗi Argument 1 passed to Illuminate\Cache\RedisStore::__construct() must be an instance of Illuminate\Contracts\Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-12828422706345566072020-09-17T14:52:00.003+07:002020-09-17T14:52:50.317+07:00Cài đặt FTP trên server Debian Có việc liên quan tới đối tác, phải cấp FTP cho đối tác upload file đối soát vào. SFTP sẵn nhưng cứ bắt phải FTP cơ, thích thì chiều thôi# Cài FTP serverapt-get install vsftpd# Thiết lập cấu hình: đảm bảo chỉ những user được khai báo trong /etc/vsftpd/user_list mới có quyền vào FTP. User vpbank vào FTP sẽ làm việc trên thư mục /home/vpbank tuy nhiên chỉ nhìn thấy / và / này ứng với /Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-89247711664955887022020-09-16T09:55:00.005+07:002020-09-16T09:55:50.803+07:00Cài đặt Netbeans đang dùng code PHP để code thêm Java Là PHP web developer sử dụng chủ yếu PHP nên đợt tải Netbeans chỉ chọn "Supported technologies" là PHP. Giờ vợ chơi Pikachu trên ipad hay bị đơ, mình to mồm bảo là để anh code riêng hẳn 1 app cho em chơi - đảm bảo không giật lag hay treo cứng :)) thành ra phải cài thêm trên Netbeans để code Java, test thử thuật toán Pikachu lượm được ở trên mạngOk, có 2 việc chính phải làm để Netbeans đang Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-66942881277461040512020-09-01T14:23:00.000+07:002020-09-01T14:23:14.083+07:00Xử lý lại nhiều đơn hàng bị lỗi APIDo sự cố mạng hoặc truyền sai tham số nên gọi API xử lý hàng trăm đơn hàng bị lỗi, cần phải gọi lại. Làm sao để không phải làm thủ công từng đơn nhỉ?Cụ thể hơn nhé: Sau khi khách thanh toán thành công để mua thẻ điện thoại, thì phải gọi API để gửi SMS mã thẻ và mã seri cho khách. Năm tháng qua đi, chẳng thấy SMS bị lỗi bao giờ. Bỗng một ngày đẹp trời bị lỗi và phải gọi lại hàng trăm SMS. Trên Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-83004712247410962792020-08-27T10:11:00.001+07:002020-08-27T10:11:12.185+07:00Generate HMAC signature for GRAB Integration Just check your code in any programming language to have following result(Output: base64 encoded)plain text = inputsecret key = secretoutput must be: jYmF0Et6vTLLqjd5o9qgGeDSaaIq7BWvjnKW9wLMaMY=I use PHP, and here is my code =))base64_encode(hash_hmac('SHA256', 'input', 'secret', true));Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-3408373678895270592020-08-12T09:32:00.002+07:002020-08-12T09:32:23.089+07:00Lỗi MongoDB insert nhưng mất dữ liệu Team system thông báo đêm ngày 11/08, rạng sáng ngày 12/08 cần off server 45 phút để làm gì đó liên quan tới sửa lỗi hệ thống. Ok, và đêm đó mọi chuyện diễn ra bình thường cho đến khi system báo đã on lại serverHuyPV kiểm tra dịch vụ, toang! Check log, không gọi được API, curl báo lỗi 6 - Could not resolve hostSSH vào gọi thử mấy link ra ngoài thấy đều không được. DNS trên server có vấn đề.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-27466278540125113222020-07-30T16:45:00.001+07:002020-07-30T16:45:13.310+07:00Dump và import dữ liệu MySQL thật nhanhDump từ trên server về, ra file SQL hơn 200MB, mất tầm 3 phút. Lúc import vào DB ở local thì ôi thôi lâu vlllll gần 1 tiếng đồng hồSau học cách trên mạng thử lại thì ôi nhanh vlllllllBước 1: Export dữ liệu bằng mysqldumpE:\data>mysqldump -uhuypv -pPASSKHONGCHE -h172.16.69.69 --single-transaction --quick --no-create-info --compact huyshop mobilecards > E:\bak\mobilecards.sqlBước 2: Tạo bảng Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7740508804614029369.post-69270255995614231992020-07-28T15:34:00.001+07:002020-07-28T15:34:36.971+07:00Tôi đã cài những gì để làm việc lập trình ở công tyỔ cứng bị bad trong, dữ liệu đi tong, công ty cấp cho ổ cứng mới. Phải cài lại một đống phần mềm để làm việc. Cùng điểm danh thử xem có giống của ai đó không nhé:- Internet Download Manager (bản quyền xịn, he he)- Telegram (chát chính)- Sluck (chát hỗ trợ đối tác)- KeePass (quản lý mật khẩu)- WinSCP (vào FTP, SFTP)- Navicat (thao tác dữ liệu MySQL)- XShell (SSH đi muôn nơi)- Authy Desktop (lấy mãUnknownnoreply@blogger.com2tag:blogger.com,1999:blog-7740508804614029369.post-74923082926692469322020-07-28T11:15:00.001+07:002020-07-28T11:15:48.470+07:00Start Apache trong Xampp không lênBạn cài Xampp, start Apache không lên, không biết lỗi ở đâu thì phải làm sao? Đầu tiên là kiểm tra xem đang chạy dạng Service hay không, nếu đang chạy dạng Service thì bỏ chuyển sang chạy thường đã. Sau đó check syntax của file cấu hình virtual host xem có vấn đề gì koxampp\apache\bin>httpd.exe -t -D ..\conf\extra\httpd-vhosts.confNếu "Syntax error on line..." thì tìm đến dòng đó mà kiểm tra Unknownnoreply@blogger.com0