Skip to main content

Posts

Showing posts with the label C

Đọc code bash xem vì sao echo * không hiện tên file ẩn

glob là gì $ whatis glob glob (7) - globbing pathnames Gõ man 7 glob có viết: NAME glob - globbing pathnames DESCRIPTION Long ago, in UNIX V6, there was a program /etc/glob that would expand wildcard patterns. Soon afterward this became a shell built-in. glob là khái niệm để "match" (chọn) filename sử dụng "pattern", gần giống với Regular Expression. Ví dụ trên shell gõ ls *.py sẽ hiện tên các file có đuôi .py . Điểm khác biệt so với Regular Expression: glob chỉ dùng để match filename, và các ký tự đặc biệt trong glob có ý nghĩa khác so với Regular Expression (ví dụ * có nghĩa khác). Wildcard pattern là gì Một string là 1 wildcard pattern nếu chứa ? * hoặc [ , glob là việc biến wildcard pattern thành list các filename "match" pattern. A '?' (not between brackets) matches any single character. A '*' (not between brackets) matches any string, including the empty string. Ví dụ $ touch error.c ...

Đọc code xem NGINX auto dùng bao nhiêu worker_processes trong container

NGINX là HTTP server phổ biến nhất trên thế giới. NGINX có kiến trúc "master" - "worker", với master process làm nhiệm vụ quản lý, và các worker process sẽ nhận các HTTP request và xử lý. NGINX worker_processes là gì Số lượng worker process được set bằng config directive: worker_processes mặc định là 1, và có thể "tự động" với từ khóa auto . Syntax: worker_processes number | auto; Default: worker_processes 1; Context: main Defines the number of worker processes. The optimal value depends on many factors including (but not limited to) the number of CPU cores, the number of hard disk drives that store data, and load pattern. When one is in doubt, setting it to the number of available CPU cores would be a good start (the value “auto” will try to autodetect it). The auto parameter is supported starting from versions 1.3.8 and 1.2.5. https://nginx.org/en/docs/ngx_core_module.html#worker_processes khi set auto , NGINX sẽ try to autodetect ...

Đọc source code xem systemd chạy chương trình mở được tối đa bao nhiêu file?

Mặc định chương trình trên Linux chỉ mở được giới hạn file nhất định. Nếu chạy từ shell (như bash) giá trị này thường có thể xem từ lệnh $ ulimit -n 1024 giá trị này có thể thay đổi ngay trên shell $ ulimit -n 9999 $ ulimit -n 9999 Set process max open files trên Systemd Khi chạy bằng systemd, các service sẽ kết thừa giá trị limit của systemd hoặc tự set bằng LimitNOFILE $ systemd --version systemd 249 (249.11-0ubuntu3.12) Theo man 2 setrlimit A child process created via fork(2) inherits its parent's resource limits. Resource limits are preserved across execve(2). Xem giá trị theo 2 cách: dùng lệnh systemctl show và xem trên /proc filesystem % systemctl show cron| grep NOFILE LimitNOFILE=524288 LimitNOFILESoft=1024 % systemctl status cron | grep PID Main PID: 464 (cron) % cat /proc/464/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file ...

[Ebook] Tài liệu học lập trình miễn phí

 Tiêu chí: - Miễn phí - Chất - Nhóm theo ngôn ngữ. Bash 🤓 - LinuxCommand - ABS (Advanced Bash Scripting) Python 😘 - hướng dẫn Python Tiếng Việt - Tutorial - Dive into Python - The Hitchhiker’s Guide to Python! - Automate the Boring Stuff with Python - Invent Your Own Computer Games with Python - Hacking Secret Ciphers with Python - How to Think Like a Computer Scientist - SICP Python version - Learn Python the hard way - More ebooks:  http://pythonbooks.org/free-books/ Ruby 🙄 - Poignant Ruby - Learn Ruby the hard way   Haskell 😏 - Learn You a Haskell - Real world Haskell   C - Modern C

Phát hiện giật mình về GCC, gcj, g++...

=)) giật tít kênh14 phải gọi là thánh :3 compiler là gì? trình biên dịch là gì? là một loại phần mềm biến code thành mã máy (thứ mã kỳ diệu để điều khiển máy tính). Ngày xửa ngày xưa, thời học C, có dùng gcc để compile code C, và mình cứ nghĩ nó chỉ để compile C thôi (G là GNU , CC đoán là C compiler). Đến nay mới phát hiện ra bí mật diệu kỳ này: GCC là viết tắt của GNU Compiler Collection - một tâp hợp nhiều compiler cho các ngôn ngữ khác nhau bao gồm: C, C++, Objective-C, Java, Fortran, Ada, golang. Sự thật thì ngày xưa gcc là viết tắt của "GNU C compiler", nhưng đã từ rất lâu rồi, sau khi thêm các compiler khác vào project thì project GCC mới đổi ý nghĩa như vậy. Java??? wth? Chính xác là java, và compiler của nó có tên là GCJ , thế nhưng từ ngày Sun công khai mã nguồn của jdk , project GCJ đã chết và cơ bản giờ chỉ còn ở đó cho đẹp.  (tin update cuối cùng của project này check cách đấy 3 giây là "September 22, 2009") C++? vậy G++ là cái gì?

Những điều nhảm nhí khi học lập trình

Nhảm nhí hay không phụ thuộc vào cách nhìn của bạn đọc, nhưng với mình thì chúng đúng là nhảm nhí, và rất phổ biến :3 1. x++ và ++x khác nhau thế nào? Damn!  bạn không cần quan tâm đến thứ này. Khi nó là một thứ nên tránh thì mọi người hết lượt cắm đầu vào để tìm hiểu, và không chắc liệu có nhớ được lâu không. Trong khi học C , thứ các bạn cần học là  hiểu về con trỏ, quản lý bộ nhớ, sử dụng các thư viện mà hệ điều hành cung cấp, các thư viện  của bên thứ 3... Hãy viết x = x + 1; và đừng bao giờ quan tâm về câu hỏi nhảm nhí này nữa. (trừ khi bạn muốn học viết obfuscated C ) 2. scanf và kiểu chương trình CLI tương tác trực tiếp với người dùng Kiểu như: viết chương trình C cho người dùng nhập vào họ tên, mã sinh viên, điểm, ... blah blah blah. Đại khái là khi viết bạn sẽ phải dùng hàm scanf, fget, gets...

Thư viện trên Linux

UPDATED : thêm lệnh liệt kê tất cả thư viện bài này cung cấp cho bạn hiểu biết cơ bản về Linux library (và nó có thể đúng với các UNIX-like OS khác như BSD, Solaris, ...) Ai nên đọc bài này: C/C++ programmer Sysadmin - để troubleshooting Người thích tìm hiểu về Linux Library ở đây chỉ thư viện dùng trong lập trình (program library), là nơi chưa các hàm, lập trình viên chỉ cần import chúng và dùng. Có 3 loại library:  static libraries  shared libraries dynamically loaded libraries. Một số khái niệm liên quan:

[Ebook] Beej's Guide to Network Programming

http://beej.us/guide/bgnet/ Hey! Socket programming got you down? Is this stuff just a little too difficult to figure out from the man pages? You want to do cool Internet programming, but you don't have time to wade through a gob of struct s trying to figure out if you have to call bind() before you connect() , etc., etc. Well, guess what! I've already done this nasty business, and I'm dying to share the information with everyone! You've come to the right place. This document should give the average competent C programmer the edge s/he needs to get a grip on this networking noise. And check it out: I've finally caught up with the future (just in the nick of time, too!) and have updated the Guide for IPv6! Enjoy! free & good ebook để học lập trình mạng (C/ C++)

[Ebooks] Learn The Hard Way

Các cuốn sách ở đây là những nguồn tài liệu rất tốt cho những ai tự học lập trình. Bắt nguồn từ sự thành công của cuốn Learn Python The Hard Way , tác giả đã sản xuất hàng loạt các cuốn sách khác cùng style với cuốn trên.   Các cuốn sách đều có thể xem online ở dạng HTML. Python Ruby C SQL Regex Với triết lý: "Less Talk, More Code", các cuốn sách này ngày càng trở nên nổi tiếng :D

Chia sẻ code OOP

Như các môn học cần code khác,môn này mọi người cũng phải code bằng C++ để đi thi nên việc gõ code vẫn nên làm :D Tớ viết bài này lên để lấy chỗ mọi người chia sẻ các bài tập THẦY GIÁO CỦA CHÚNG MÌNH cho. Cũng chẳng nhiều nhặn gì, mỗi tuần 1,2 bài, gõ vào cho chạy là được. Để sao đến lúc đi thi, ai cũng được điểm cao , hoặc giả là xấu nhất thì cũng đủ qua. Khuyến khích tất cả mọi người tham gia, code post lên phải chạy được. Có thể paste lên pastebin.com hoặc dùng git , cái này tùy. Tớ sẽ sưu tập lại và đưa lên kho git của FAMILUG. Có gì thắc mắc, cứ thoải mái google rồi hỏi ! Gud week :)) Update danh sách bài tập: Bài 1: Class Complex (số phức) hainam: http://pastebin.com/BP00m7Tk Bài 2: Class String hainam: http://pastebin.com/2UZq98ky Bài 3: Class Vector: hainam: http://pastebin.com/fuFwmQhx

C Programming - fflush function and output stream!

Ai đã từng lập trình C hẳn rất quen thuộc với hàm fflush. Nhưng các bạn thường hiểu nhầm công dụng của nó. fflush là hàm "chỉ" dùng để xóa bộ đệm dòng ra(output stream), khi sử dụng với dòng vào(input stream) thì sẽ gây ra sự vận hành không xác định của các chương trình(behave undefine). Nhưng thường thì chúng ta lại dùng để xóa dòng vào chuẩn(stdin) với suy nghĩ loại bỏ những thứ không mong đợi được đưa vào từ bàn phím khi chạy chương trình.

Name space in C

Thật ra mấy hôm nay ngồi đọc lại quyển Illustrating C mới ngỡ ra là mình đọc thiếu 1 chương >:) Trong này có 1 bài viết về Name Space. Không biết có liên quan đến namespace khai báo trong mỗi file C++ không nhưng khái niệm này sẽ khá mới mẻ với các bạn. Thử ví dụ sau: http://pastebin.com/JAGQgrKR nhận thấy rằng cùng là biến c nhưng ta declare nó nhiều lần, mỗi lần 1 kiểu. Đầu tiên là int, sau đó là float rồi char và cuối cùng là char *(array). Chương trình chạy ngon lành và không có lỗi hay warning gì hết. Bởi trong cùng 1 level of nesting block (Khối lệnh lồng vào nhau) thì các biến chia sẻ cùng 1 name space (dịch thô là không gian tên). MỖi khối lệnh được đánh dấu bắt đầu bằng { và kết thúc bằng }

Format I/O of ...printf function

The ...printf functions The printf and fprintf function write a variable number of data items to an input stream, using a format string to control the appearance of the output. The propertypes for both function end with the … symbol (an ellipsis), which indicates a variable number of additional arguments. Both functions return a number of characters written; a negative return value indicates that an error occurred. The only different between printf and fprintf function is that printf always writes to stdout (the standard output stream), whereas fprintf wirtes to the stream indicated by its the first argument: printf(“abc”); // writes to stdout fprintf(fp,”def”); // writes to fp

Viết một chương trình C đơn giản

Khác với những chương trình được viết bằng một số ngôn ngữ, Chương trình C yêu cầu theo một mẫu - một chương trình hoàn chỉnh có thể chỉ vài dòng. Chương trình: Hiển thị một thông báo lên màn hình (printing a pun) Chương trình đầu tiên trong Kernighan and Ritchie's classic The C Programming Language là rất ngắn. Nó không làm gì cả nhưng hiện ra thông báo “hello, word”. Không giống các tác giả khác, Tôi sẽ không sử dụng chương trình này ở ví dụ đầu tiên. Tôi sẽ nêu cao tính truyền thống của C: the bad pun (chả biết dịch thế nào @@). Thông báo như sau: To C, or not to C: that is the question.

Tham chiếu, tham trị và hàm

Note: các thuật ngữ nào đc chú thích bằng tiếng Anh bên cạnh thì sau đó sẽ đc thay thế bằng tiếng Anh, lý do thói quen!) Tham chiếu ( Pass by Reference ) & Tham trị (pass by value) là 2 thuật ngữ dùng trong lập trình (đặc biệt là C) Tham chiếu là gán cho hàm tham số (argument) là 1 địa chỉ. Tham trị là gán cho hàm tham số là 1 giá trị.

I share for us!

Biết rằng tất cả ở đây, không phải ai cũng hứng thú với lập trình. Thế nên, đừng vì học một tí lập trình ở trường mà nghĩ rằng mình phải trở thành lập trình viên. Đừng nghe mấy thằng vớ vẩn nó bốc phét rằng bạn phải trở thành 1 developer vì đó là điều ít nhất bạn có thể làm khi học khoa toán tin ra :)) Mọi nghề liên quan đến IT đều chủ yếu phải là tự học, những thứ bạn học được ở trường quá ít ỏi và cơ bản để làm được cái gì. Bởi thế nên, nếu còn trong mình đam mê nào đó, hãy theo đuổi nó, bạn có thể học tóan tin nhưng không nghĩa là bạn không thể là 1 designer, 1 quản trị viên... Và hẳn vẫn có nhứng người (như tớ đây) vẫn chưa mãnh liệt tin rằng mình thích thú với cái nghề nào. Thế nên tớ vẫn đang trên con đường tìm kiếm... mong là nó sớm kết thúc! Tớ share ở đây 1 số website hay, có lẽ sẽ có ích cho mọi người tìm kiếm và phát triển đam mê của mình. Một lần nữa nhắc lại: bạn phải học lập trình để ra trường nhưng không có nghĩa là bạn phải trở thành 1 lập trình viên! ...

Chỉ là viết thôi!

Chỉ là thấy muốn viết và muốn có người đọc , cm, like, thanks nên viết thôi. Bài viết thứ 101 của FAMILUG, đánh dấu bằng thành viên thứ 8. Sáng mai thi tư tưởng nhưng mà cả tối ngồi đọc đống sách C :)) Chưa bao giờ nghĩ mình sẽ lập trình bằng C, nghĩ nó phải là Java hay Python cơ. Cuộc đời là vậy, bạn thích thứ gì đó, nhưng cái thích đó là của người ngoài cuộc, hoặc mới chỉ nhúng chân mình vào đấy thôi. Bạn chưa chìm đắm, chưa đầm mình vào đó để đủ biết mình có thật sự thích nó, chấp nhận nó không (cái gì cũng có 2 mặt). Bởi vậy, để tìm ra được sở thích, đam mê của mình... có lẽ bạn hãy chính mình thử và cảm nhận. Đừng đứng ngoài nghe người ta chơi violin mà bảo tôi thích chơi violin, bạn chỉ thích nghe thôi :)) có khi là chỉ thích nghe 1 bài nào đó thôi.

FAMILUG Programming form!

Yêu cầu chuẩn chung với tất cả các code C đưa lên FAMILUG! 1. Phải dùng C chuẩn ANSI (nghĩa là phải được compile bằng GCC, ai dùng C-free thì tự cài GCC rồi chọn trong phần compile của C-free là GCC là đc. Ubuntu thì chuẩn sẵn rồi.) 2. Hàm main luôn phải viết là int main() { return 0; } và không chấp nhận bất kỳchương trình nào viết void main(). Nếu ai đưa code lên nhờ, hãy compile nó với GCC trước. Tôi không chấp nhận sự lộn xộn ở đây. Không ai rảnh mà suốt ngày đi xóa getch() với conio.h cho các bạn! Hãy theo chuẩn chung của xã hộ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