<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.0">Jekyll</generator><link href="https://codeer.dev/feed.xml" rel="self" type="application/atom+xml" /><link href="https://codeer.dev/" rel="alternate" type="text/html" /><updated>2022-01-06T23:03:54+00:00</updated><id>https://codeer.dev/feed.xml</id><title type="html">Codeer - Programmer’s blog</title><subtitle>Personal blog about programming and technology.  C++, Python and other tools that support the work of developers and engineers.</subtitle><entry><title type="html">How to capture network traffic in Docker container</title><link href="https://codeer.dev/blog/2022/01/06/docker-network-traffic-tcpdump.html" rel="alternate" type="text/html" title="How to capture network traffic in Docker container" /><published>2022-01-06T23:00:00+00:00</published><updated>2022-01-06T23:00:00+00:00</updated><id>https://codeer.dev/blog/2022/01/06/docker-network-traffic-tcpdump</id><author><name></name></author><category term="blog" /><category term="docker" /><category term="wireshark" /><summary type="html">This article shows how to capture Docker container’s network traffic in a few easy steps.</summary></entry><entry><title type="html">Decrypt HTTPS traffic from Java application in Wireshark</title><link href="https://codeer.dev/blog/2022/01/06/decrypt-https-wireshark-java-tcpdump.html" rel="alternate" type="text/html" title="Decrypt HTTPS traffic from Java application in Wireshark" /><published>2022-01-06T11:00:00+00:00</published><updated>2022-01-06T11:00:00+00:00</updated><id>https://codeer.dev/blog/2022/01/06/decrypt-https-wireshark-java-tcpdump</id><author><name></name></author><category term="blog" /><category term="java" /><category term="wireshark" /><summary type="html">You need to read HTTPS traffic from your application, but it is encrypted? I might have a solution for you.</summary></entry><entry><title type="html">Docker without sudo on Linux</title><link href="https://codeer.dev/blog/2021/12/08/docker-without-sudo-linux.html" rel="alternate" type="text/html" title="Docker without sudo on Linux" /><published>2021-12-08T23:00:00+00:00</published><updated>2021-12-08T23:00:00+00:00</updated><id>https://codeer.dev/blog/2021/12/08/docker-without-sudo-linux</id><author><name></name></author><category term="blog" /><category term="docker" /><category term="linux" /><summary type="html">Writing sudo before every docker command could be a pain in the ass. We can get around this by adding our user to the docker group.</summary></entry><entry><title type="html">Docker - login to any container as root</title><link href="https://codeer.dev/blog/2021/11/22/docker-login-as-root.html" rel="alternate" type="text/html" title="Docker - login to any container as root" /><published>2021-11-22T20:00:00+00:00</published><updated>2021-11-22T20:00:00+00:00</updated><id>https://codeer.dev/blog/2021/11/22/docker-login-as-root</id><author><name></name></author><category term="blog" /><category term="docker" /><summary type="html">Many Docker images are set up to run under non-root user accounts. Although it is a solid security practice, we occasionally want root access to a container in order to make modifications for debugging or development purposes. Here are some tips on how to obtain it.</summary></entry><entry><title type="html">C++ multithreaded TCP server</title><link href="https://codeer.dev/blog/2020/07/21/cpp-multithreaded-tcp-server.html" rel="alternate" type="text/html" title="C++ multithreaded TCP server" /><published>2020-07-21T19:00:00+00:00</published><updated>2020-07-21T19:00:00+00:00</updated><id>https://codeer.dev/blog/2020/07/21/cpp-multithreaded-tcp-server</id><author><name></name></author><category term="blog" /><category term="linux" /><category term="c++" /><category term="multithreading" /><summary type="html">The article describes how to implement a concurrent TCP/IP server in C++ for Linux environment. Multithreading provides concurrency in my solution. Thanks to concurrency, clients do not have to wait for their turn and can be served immediately. The server I created has one thread to handle new connections (TCPServer class). After accepting such a connection, a new thread is created which is responsible for all communication with a given client (ConnectionHandler class). Implementation of ConnectionHandler can be freely changed. It may allow any use of the server, for example it could work well as an HTTP server.</summary></entry><entry><title type="html">Git - WSL - Visual Studio Code - fix for ‘unable to write new index file’</title><link href="https://codeer.dev/blog/2020/05/20/vsc-git-wsl-index-error.html" rel="alternate" type="text/html" title="Git - WSL - Visual Studio Code - fix for ‘unable to write new index file’" /><published>2020-05-20T18:00:00+00:00</published><updated>2020-05-20T18:00:00+00:00</updated><id>https://codeer.dev/blog/2020/05/20/vsc-git-wsl-index-error</id><author><name></name></author><category term="blog" /><category term="git" /><category term="wsl" /><category term="visual studio code" /><category term="windows" /><summary type="html">Error in external git client (for example SourceTree, GitKraken): Rename from 'C:/path/to/repository/.git/index.lock' to 'C:/path/to/repository/.git/index' failed. fatal: unable to write new index file OS: Windows Project opened in Visual Studio Code Remote connection type: WSL Visual Studio Code Extension: Remote - WSL</summary></entry><entry><title type="html">std::atomic - C++11 spinlock implementation</title><link href="https://codeer.dev/blog/2020/05/07/atomic-spin-lock.html" rel="alternate" type="text/html" title="std::atomic - C++11 spinlock implementation" /><published>2020-05-07T19:00:00+00:00</published><updated>2020-05-07T19:00:00+00:00</updated><id>https://codeer.dev/blog/2020/05/07/atomic-spin-lock</id><author><name></name></author><category term="blog" /><category term="c++" /><category term="synchronization" /><category term="multithreading" /><summary type="html">Spinlock is a synchronization mechanism that waits in a loop to acquire the lock. This kind of lock is busy waiting. It consumes processor time, doing an empty loop, so it may seem like an inefficient mechanism. In multiprocessor systems, spinlock can sometimes be more efficient than mutexes, because the loop is executing in the userspace context. Time-consuming context switching to system code is avoided. Spinlocks works great when threads are blocked only for short periods.</summary></entry><entry><title type="html">Training an AI bot to play Snake</title><link href="https://codeer.dev/blog/2020/05/03/ai-snake.html" rel="alternate" type="text/html" title="Training an AI bot to play Snake" /><published>2020-05-03T12:00:00+00:00</published><updated>2020-05-03T12:00:00+00:00</updated><id>https://codeer.dev/blog/2020/05/03/ai-snake</id><author><name></name></author><category term="blog" /><category term="python" /><category term="ai" /><category term="game" /><category term="neural network" /><summary type="html">The goal of this project was to train an AI bot to play Snake. The bot didn’t get any information about the rules of the game - it had to guess them by itself. All information it got was snake vision and information about reward or penalty. The game and the bot were written in Python.</summary></entry><entry><title type="html">How to upload mp3 files to Overcast with command line</title><link href="https://codeer.dev/blog/2020/04/25/overcast-uploader.html" rel="alternate" type="text/html" title="How to upload mp3 files to Overcast with command line" /><published>2020-04-25T13:00:00+00:00</published><updated>2020-04-25T13:00:00+00:00</updated><id>https://codeer.dev/blog/2020/04/25/overcast-uploader</id><author><name></name></author><category term="blog" /><category term="python" /><category term="macOS" /><category term="tools" /><category term="command line" /><category term="podcast" /><category term="automation" /><category term="automator" /><summary type="html">I love listening to podcasts and audiobooks. I listen to them in every free moment - while cleaning, travelling by public transport, cooking, etc. Thanks to the audio materials, I feel that I’m learning something all the time and I don’t waste a single moment.</summary></entry><entry><title type="html">cron - How to set periodic tasks on Linux and macOS</title><link href="https://codeer.dev/blog/2020/04/16/crontab.html" rel="alternate" type="text/html" title="cron - How to set periodic tasks on Linux and macOS" /><published>2020-04-16T20:00:00+00:00</published><updated>2020-04-16T20:00:00+00:00</updated><id>https://codeer.dev/blog/2020/04/16/crontab</id><author><name></name></author><category term="blog" /><category term="linux" /><category term="cron" /><category term="macOS" /><summary type="html">Cron is a job scheduler in Unix-like computer systems. You can use it to set schedules for tasks, for example, every 5 minutes or every Monday at 4:23. Cron is most suitable for scheduling repetitive tasks.</summary></entry></feed>