The Linux Page

Help other users realize that everything is possible, especially avoiding Windows for their own personal use.

Welcome to The Linux Page


Fox Trot by Bill Amend. Click to enlarge.
Click to enlarge

This site is a collection of my own work with Linux. Certain things are easy, others take time to decipher and if I ever need to repeat the work (which usually happens!), then I need to remember everything by memory or... have a site with all the steps taken and to take again.

The following are my most recent posts:

A Telephone post with many lines to the surrounding homes.

I have noticed that quite a few people were trying to create UDP communication and I thought that proposing my class could help them. This is very basic as it does not define anything such as the size of a packet or any protocol to ensure arrival of the packets. However, it can be useful if you want to send a signal from one process to another, which is exactly how I use this implementation (i.e. I send a PING message to wake up a background process whenever the front end adds data to the database.)

This code is part of the Snap! C++ implementation. The latest version can be found in the ...

Issue

I found an interesting concept which is to block a user¹ when they attempt to open too many TCP connections within one minute.

This comes down to a couple of rules:

iptables -A INPUT -p tcp \
    -m recent --update --name synflood --seconds 60 --hitcount 100 \
    -m tcp --syn -j add_to_denylist
iptables -A INPUT -p tcp \
    -m recent --set --name synflood -m tcp --syn

The second rule says to add an entry for the source IP in a table named synflood if the user is attempting to connect using the TCP protocol.

The first rule checks whether the same IP address ...

Duplicated files can cause double the trouble when part of a dependent package.

Today I tried to install a new version of a Debian package I created.

That package, let's call it A, now depends on another new package, let's call it B.

A included a file that was installed under /etc/... I removed that file from A because it is also present in B. In other words, the exact same file was being installed by two packages:

  • A (old version)
  • B

Unbeknownst to me, when you try to do so, dpkg gets confused because A also included:

Depends: B

My idea was that since the new version of A does not include the file, it will get removed and then B gets ...

Istanbul, it's full.

Where Did My Disk Space Go?

I suppose with the title on this page, you already understood that Docker is the culprit... Yep! It's using a lot of disk space to store all of those images. One image can very easily be over 1Gb and if you have a VirtualBox system with many images, you end up eating a lot of your disk space very quicly!

How Did You Discover the Issue?

I ran the following command:

sudo ncdu -qx /

Did some other work for a little while, then checked the results. By default, the largest folder was shown at the top:

/var

You can simply select the folder and hit ...

It is possible to send a command to a running gvim instance.

Here is an example on how to send a Write + Quit:

vim --servername GVIM --remote-send '<C-\><C-N>:wq<CR>'

As we can see, the syntax for the command is very similar to what we usually have in our macros.

The name "GVIM" is what you need to use (i.e. it's not the name of the server on which the gvim editor is running (a.k.a. NOT localhost).

I have not yet tested if I have multiple windows, would the instructions be sent to all or just one. I suppose I should look at the documentation ...

Once in a while, I click on something and the mouse literally dies.

From what I've seen the last time it happened, Opera had a lock issue. It could not create a lock and went on and on about it. Killing Opera did not help, even though the issue happened when I clicked on a button in Opera.

That last click happened in Opera and that's when the mouse froze. This is why I thought killing Opera would help... The good thing, though, is that the keyboard is running.

On that day, I decided to reboot the whole computer anyway because it had been running for over 42 days and so I needed to ...

I have a CMakeLists.txt file and I run a command while building and if one of my libraries has an issue, then it will crash and it becomes close to impossible to debug unless you can run the debugger.

The fact is that I could tweak my CMakeLists.txt to run the command with gdb and get a stacktrace which helped much.

Here is the command I ran:

     add_custom_command(
        OUTPUT
            ${CMAKE_CURRENT_BINARY_DIR}/${ATOMIC_NAMES_BASENAME}.cpp
            ${CMAKE_CURRENT_BINARY_DIR}/${ATOMIC_NAMES_BASENAME}.h

        COMMAND
           "gdb"
                ...

Broken Dockerfile generates this strange error which means roughly nothing.

Docker is still a very strange beast to me and some of the errors it generates are even stranger.

Today I got this one:

failed to solve with frontend dockerfile.v0: failed to solve with frontend gateway.v0: rpc error: code = Unknown desc = failed to create LLB definition: no build stage in current context

which means roughly nothing to a normal human being.

The fact is that it happens when there is an error in the setup.

In my case, I added this line:

ENV BUILDKIT_PROGRESS=plain

before this one:

FROM ...

and as a result got that message as shown above.

I've found a post ...

USB Port Locked between Host & VirtualBox Guest

Today I experience the death of my mice, where my two mice completely stopped working. I tried to unplug and re-plug, but that did not help (once in a while, it helps for one of my mice which has a USB to PS/2 converter).

Restarting X11 may have been a solution, but on Ubuntu 18.04, that has never worked. That is, when I try to do the Ctrl-Alt-F1 to go to text and then come back with Alt-F7 or Alt-F8, the coming back portion doesn't work at all (i.e. it does not come back to X11 anymore, it tries, I can see the screen being switched, but it's not really doing anything).

Then I ...

Sleeping like a dragon is not compatible with most software now a day...

I wrote software that runs a video service. That means I need to have code that handles video frames in realtime. For that purpose, I compute when the next frame is expected to "hit".

More or less, like most such software, I compute the time for the next frame which tells me whether I have time to wait or not.

next-frame = start-frame + interval * frame-number

When you write proper software next-frame is going to be in the future (i.e. you have enough CPU time to idle for a bit). That means you want to wait until that time to then send the next frame.

nanosleep(next-frame - ...

Unfreeze your Mouse when it Froze

Thank you for visiting my website.