Today I received a work order from my R&D colleague, the content is: I need to copy the files to the server and request help to install the scp program.
I tried to execute scp command on that server, but the result is -bash: scp: command not found, but ssh is working fine. In this case the openssh-clients were deleted.
The scp command is based on the ssh protocol, so why bother with scp when you can use ssh?
Google Releases Flutter 3
Google announced the launch of Flutter 3. Flutter 3 completes Google’s roadmap from a mobile-centric to a multi-platform framework, providing macOS and Linux desktop application support, as well as improvements to Firebase integration, new productivity and performance features, and support for Apple Silicon.
The announcement notes that Flutter 3 is the culmination of Google’s journey to refine the platforms supported by Flutter; stable support for macOS and Linux applications has been added to Flutter 3, which is now complete with stable support for six major platforms.
Introduction to the Linux file system inode
Normally when we use a computer, our intuition is that the computer is divided into two kinds of things: folders and files. But in fact, in the operating system’s file system, folders can also be thought of as files that store special content; “everything is a file”. And the file system doesn’t use file names to distinguish files, but rather a string of non-repeating numbers. In this article, we will introduce some concepts and principles of the file system.
A dynamic linking dependency problem in Golang
Recently I was rebuilding a very old build process, the program was written by golang, and after building out the binary and running it on the server, there was an exception.
1 2 root@c2a4d003e0d6:/workspace/.build# ./spex_linux_amd64 ./spex_linux_amd64: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by ./spex_linux_amd64) This is interesting, doesn’t Golang have all its dependencies static linked? How come there is a dynamic link of Glibc dependency?
1 2 3 4 5 6 7 8 root@c2a4d003e0d6:/workspace/.
TileLink Bus Protocol Analysis
Background Recently, I have been working on some cache implementations that support cache coherency, such as the rocket-chip implementation and the sifive implementation, so I need to study some TileLink protocols. This article assumes that the reader has some knowledge of AXI, so much of the content will refer directly to AXI.
Signals According to TileLink Spec 1.8.0, TileLink is divided into the following Three types.
TL-UL: Read/write only, no burst support, analogous to AXI-Lite TL-UH: read/write support, atomic instruction, prefetch, burst support, analogous to AXI+ATOP (atomic operation introduced by AXI5) TL-C: support cache coherency protocol based on TL-UH, analogous to AXI+ACE/CHI TileLink Uncached TileLink Uncached (TL-UL and TL-UH) consists of two channels.
Use vmagent instead of Prometheus to collect monitoring metrics
vmagent can help us collect metrics from various sources and store them in VMs or any other Prometheus-compatible storage system that supports the remote write protocol. Features vmagent has more flexibility than Prometheus for scraping metrics, such as the ability to push metrics in addition to pull metrics, and many other features. Can replace the scraping target of prometheus Support for reading and writing data from Kafka Supports adding, removing,
Svelte Native VS React Native
There are many mobile application development frameworks out there, but it’s best not to be too arbitrary before choosing one, and it’s better to compare them in detail.
This article provides a detailed comparison between React Native and Svelte Native to help you make your choice.
What is Svelte Native? Svelte Native is based on the Svelte front-end framework, which allows Svelte developers to easily build native Android and iOS apps.
Using Git LFS to Store Large Binary Files in a gitlab Project Repository
Git LFS (Git Large File Storage) is used to solve the problem of storing large binary files that are committed to a git repository.
Based on git’s versioning mechanism, when frequent changes are made and large binary files are committed to the repository, the size of the repository expands rapidly, causing problems such as slow repository pulls and commits.
Git LFS puts the specified type of file versioning on the LFS large file server according to a set of rules, and the git repository only uses the index index to point to the corresponding file on the LFS large file server.
In-depth analysis of split locks, i++ can lead to disaster
Split lock is a memory bus lock supported by the CPU to support atomic memory accesses across a cache line. Some processors like ARM and RISC-V do not allow unaligned memory accesses and do not generate atomic accesses across cache lines, so split lock is not generated, while X86 supports it. Split lock is convenient for developers because there is no need to consider unaligned memory access, but it also
Basic usage of std::expected
When I looked at the compiler support for cppreference recently, I found that libstdc++ already implements <expected>, but unfortunately I didn’t find much information about it on the web. What is std::expected? It is similar to std::optional, but std::optional can only indicate a normal value or std::nullopt, i.e. a null value. In contrast, std::expected can indicate an expected value and an error value, which is equivalent to the two-member std::variant,
const in C++
C++ identifies a type as immutable with the keyword const. This is actually quite easy to understand. However, for C++, there is a lot to discuss about simple concepts. Let’s look at a problem.
Problem We know that const can be used to modify a member function to indicate that the function cannot modify the data of the class. Suppose a class has a member T *p of type pointer, and we want to get a reference to the object pointed to by p using the get() method.
Celery/Kombu MongoDB connection exception investigation log
Background The product component JobCenter uses Celery to implement an asynchronous task center, running both job-center-worker (celery worker) and job-center-scheduler (celery beat) processes, using MongoDB as the Backend to store messages, etc. (Celery has officially stated that it no longer maintains support for MongoDB). MongoDB is configured with ReplicaSet to ensure high availability.
Recently, we encountered the problem of no free channel ids in Celery/Kombu. After troubleshooting, the issue was solved in this PR.
Goscript: Rust implementation of the Go language specification
Anaconda developers recently released PyScript, a framework that allows developers to mix Python code into HTML, which some have called “JSP for Python”. In fact, PyScript uses WebAssembly for its underlying layer, as it is built on Pyodide, which consists of a CPython 3.8 interpreter compiled into WebAssembly that allows Python to be run in a web browser.
It’s no coincidence that the developers have adopted the same idea to make Go run smoothly on the browser as well.
Connecting to remote nodes using Docker Context
Prior to Docker v19.03, we could use the DOCKER_HOST environment variable to configure and connect to remote Docker hosts. Since Docker v19.03, Docker’s command line interface (CLI) has added a subcommand: context, which is used to manage docker clients connecting to multiple contexts.
The context command allows you to connect and manage multiple Docker hosts remotely by configuring contexts for the SSH protocol, as well as exporting a context environment from a machine with the Docker CLI installed and importing it on another machine with the Docker CLI installed.
In-depth look at the caching mechanism of http
By reusing previously acquired resources, you can significantly improve the performance of your website and applications. Web caching reduces wait times and network traffic. By using HTTP caching, it becomes more responsive. Typically http caching is divided into strong caching and negotiated caching. 1. Strong caching Use browser local cache directly within the agreed fixed time. This approach is suitable for resources that are not updated frequently, such as js,css,image
VictoriaMetrics Source Code Analysis - Bloom Filter
VictoriaMetrics’ vmstorage component receives metrics passed upstream, and in real-world scenarios, the order of magnitude of metrics or transient metrics can be so horrific that if the size of the cache is not limited, there is a risk of excessive slow inserts due to cache misses.
For this purpose, vmstorage provides two parameters: maxHourlySeries and maxDailySeries, which are used to limit the unique series added to the cache per hour/day. uniqueSeries means a unique time series, such as metrics{label1="value1",label2="value2"} belonging to a time series.
What exactly is TTY?
Let’s start with an interview question: We know that there are some common shortcuts in the terminal, Ctrl+E to move to the end of a line, Ctrl+W to delete a word, Ctrl+B to move a letter forward, and pressing the up key to bring up the last shell command used. Among these 4 shortcuts, there is one that is implemented differently from the others, which one is it?
The answer is Ctrl+W.
Two years in the making, Microsoft VS Code PowerShell gets a major update
The Microsoft development team recently updated the PowerShell extension for Visual Studio Code, a major update about two years in the making, driven by users who submitted feedback via GitHub issues.
Sydney Smith, a Microsoft official, stated in a blog post that
This update represents a complete overhaul of the PowerShell engine at the heart of PowerShell Editor Services, designed to create a more reliable and stable user experience. This release represents nearly two years of work, and it is our response to many of the issues that users have raised over the past few years.
The story of /bin /usr/bin and /usr/local/bin
The $PATH variable on Linux systems usually contains /bin, /usr/bin, and /usr/local/bin. All three of these directories have binary programs in them, and there are a lot of misconceptions on the web about the differences. (Just like the question of what is the difference between HTTP GET and POST). This article tries to explain this, based on my understanding and the Linux documentation. (In this article, we are talking about Linux, or more precisely, Unix systems)
Introduction to Hard Drive Partitioning
This article introduces the knowledge and concepts related to hard drive partitioning. I think the content related to this is difficult to understand because part of it is a hardware concept and part of it is software (file system), and a lot of information is introduced without putting it together for comparison, so the reader will be very vague about some concepts when he sees it. For example, hard disk