Recently, the topic of AI agents has been very hot. I’ve been learning about it too and made a summary of several agents I’ve used.
Models
The most popular models across the internet are still those from Anthropic, Google, and OpenAI. However, since their servers are overseas, it’s a bit troublesome to use them in China. Additionally, overseas models are quite expensive. So I’ve been using the GLM Coding Plan, which is much more affordable.
I’ve tried many browsers over the years, but I keep coming back to Firefox. The deciding features for me were simple: opening bookmarks in a new tab and showing search results in a new tab. I was surprised that mainstream browsers like Chrome and Edge don’t provide these small conveniences, so Firefox became the obvious choice. This article documents some of the Firefox settings and tweaks I use.
Feature Customization
Enable Vertical Tabs
Right-click on an empty area of the Firefox toolbar and choose “Customize Toolbar” — this lets you heavily customize the browser’s UI to your taste. Arrange the toolbar and other UI elements however you prefer.
One of the most criticized aspects of Windows 11 is its context menu, which splits the original menu functions into a secondary menu, making operations more cumbersome. As a result, many people choose to revert the context menu to the traditional style. However, some users prefer the Windows 11 context menu. So, is it possible to add items directly to the Windows 11 context menu? Of course! Today, I want to introduce ContextMenuForWindows11, a tool that allows you to customize the Windows 11 context menu and set it up just the way you like.
When installing Fedora 42 Workstation on a physical machine or virtual machine, you need to enable third-party repositories during the installation process. After installation, you can follow this guide to further configure your system. If you are using a different version of Fedora, some configurations in this article may not apply.
System Configuration
No Password sudo
By default, running sudo commands requires entering a password. If you don’t want to enter your password every time you use sudo, you can run the following command:
Today, I’ll introduce how to use asynchronous programming in Python. This article focuses on the usage of asynchronous programming, so it won’t delve too much into underlying concepts.
Brief Introduction to Concepts
Coroutine: A special function marked with async that can execute code asynchronously.
Event Loop: The core of Python asynchronous programming, responsible for scheduling coroutines.
Future: A low-level object representing the eventual result of an asynchronous operation.
Task: A wrapper for Future that can encapsulate coroutines and supports operations like cancellation.
We all know that in operating systems, creating and switching processes and threads is very resource-intensive, making it prone to performance bottlenecks under high loads. Coroutines, on the other hand, are smaller execution units defined within the program. Since they don’t involve the overhead of process and thread context switching, coroutines are much lighter. We can easily create and run thousands of coroutines in a program—something that would be impossible with processes and threads.
Variance is a concept in programming that is prone to mistakes. I used to have only a vague understanding of it, so this time I specifically looked up a lot of information online to thoroughly study the issue. I also took the opportunity to write a blog post introducing it, so that if I forget in the future, I can quickly recall it.
Here, we’ll use the classic Java as the primary language to briefly explore this issue.