Skip to content

Instantly share code, notes, and snippets.

View evakili's full-sized avatar

Esmaeil Vakili evakili

View GitHub Profile

Libuv and libev, two I/O libraries with similar names, recently had the privilege to use both libraries to write something. Now let's talk about my own subjective expression of common and different points.

The topic of high-performance network programming has been discussed. Asynchronous, asynchronous, or asynchronous. Whether it is epoll or kqueue, it is always indispensable to the asynchronous topic.

Libuv is asynchronous, and libev is synchronous multiplexing IO multiplexing.

Libev is a simple encapsulation of system I/O reuse. Basically, it solves the problem of different APIs between epoll and kqueuq. Ensure that programs written using livev's API can run on most *nix platforms. However, the disadvantages of libev are also obvious. Because it basically just encapsulates the Event Library, it is inconvenient to use. For example, accept(3) requires manual setnonblocking after connection. EAGAIN, EWOULDBLOCK, and EINTER need to be detected when reading from a socket. This is a

@jakoch
jakoch / unzip.iss
Created August 28, 2015 10:34
Unzip Helper for executing 7zip without blocking the InnoSetup GUI
{
Unzip Helper for executing 7zip without blocking the InnoSetup GUI
----
The main procedure is the non-blocking Unzip().
Your GUI will remain responsive during the unzip operation.
Written by Rik and Jens A. Koch (@jakoch) on StackOverflow:
http://stackoverflow.com/questions/32256432/how-to-execute-7zip-without-blocking-the-innosetup-ui
@soarez
soarez / ca.md
Last active April 24, 2025 12:51
How to setup your own CA with OpenSSL

How to setup your own CA with OpenSSL

For educational reasons I've decided to create my own CA. Here is what I learned.

First things first

Lets get some context first.