Tech Articles

cover of post: High-Precision Timing in Node.js: The Best Practices

High-Precision Timing in Node.js: The Best Practices

Jan 09, 2025

How to achieve nanosecond precision in Node.js for accurate time measurement.

By Wenhao Wang#Engineering
cover of post: Sharp.js: The Best Node.js Image Framework Ever

Sharp.js: The Best Node.js Image Framework Ever

Jan 08, 2025

Through an in-depth exploration of the Sharp module, we have not only witnessed its outstanding performance in the field of image processing but also seen how it has greatly improved development efficiency and user experience through a series of practical functions, such as the conversion of JPEG, PNG, WebP, and AVIF formats, image resizing and cropping, rotation and flipping. Statistical data shows that the average file size of pictures processed by Sharp is reduced by about 60%, and during peak hours, the service based on Sharp can process more than 1,000 pictures per minute. These achievements not only reflect the strong strength of Sharp in performance optimization but also provide solid technical support for various application scenarios. Whether it is the image compression and upload needs of start-up e-commerce platforms or the dynamic image processing services of social media platforms, Sharp can handle them well and exceed expectations. In the future, as more developers master and use the advanced functions of Sharp, we have reason to believe that it will show unlimited potential in more fields and promote the creation of visual content to new heights.

By Emily Parker#javascript
cover of post: 30 Ways to Optimize Your SQL

30 Ways to Optimize Your SQL

Jan 07, 2025

Boost SQL efficiency with indexing, JOINs, partitions, and advanced techniques for faster queries and scalable systems.

By Emily Parker#Engineering
cover of post: Hono.js: The Next-Gen Node.js Framework

Hono.js: The Next-Gen Node.js Framework

Jan 06, 2025

There are already many backend libraries and frameworks for Node.js on the market. I've used Nest.js for some small projects before. It has comprehensive functions and enables rapid project implementation. However, for my small projects, many of its features are really overkill, and it has a high level of encapsulation, leaving little freedom when writing code.

By Wenhao Wang#javascript
cover of post: Designing RBAC Permission System with NestJS: A Step-by-Step Guide

Designing RBAC Permission System with NestJS: A Step-by-Step Guide

Jan 05, 2025

Step-by-step guide to implementing RBAC permission control using Nest.js with database setup and entity relationships.

By Takashi Yamamoto#Engineering
cover of post: Mastering Express.js: A Deep Dive

Mastering Express.js: A Deep Dive

Jan 04, 2025

Express is an extremely commonly used web server application framework in Node.js. Essentially, a framework is a code structure that adheres to specific rules and has two key characteristics: - It encapsulates APIs, enabling developers to concentrate more on writing business code. - It has established processes and standard specifications.

By James Reed#javascript
cover of post: Deep Dive into Go Struct

Deep Dive into Go Struct

Jan 02, 2025

Let’s dive into all aspects of Go structs.

By Daniel Hayes#Engineering
cover of post: 2024 in Review: Key Highlights in Cloud Databases

2024 in Review: Key Highlights in Cloud Databases

Jan 02, 2025

A 2024 review of cloud database innovations, highlighting vector databases, AI integration, key trends, and industry developments.

By Grace Collins#Engineering
cover of post: How to Get the Goroutine ID?

How to Get the Goroutine ID?

Dec 31, 2024

In an operating system, each process has a unique process ID, and each thread has its own unique thread ID. Similarly, in the Go language, each Goroutine has its own unique Go routine ID, which is often encountered in scenarios like `panic`. Although Goroutines have inherent IDs, the Go language deliberately does not provide an interface to obtain this ID. This time, we will attempt to obtain the Goroutine ID through the Go assembly language.

By Takashi Yamamoto#golang
cover of post: Fun Facts About Ghostty

Fun Facts About Ghostty

Dec 30, 2024

How does Mitchell Hashimoto think of Ghostty?

By Olivia Novak#Engineering
cover of post: Go Generics: A Deep Dive

Go Generics: A Deep Dive

Dec 30, 2024

Overall, the benefits of generics can be summarized in three aspects: 1. Types are determined during the compilation period, ensuring type safety. What is put in is what is taken out. 2. Readability is improved. The actual data type is explicitly known from the coding stage. 3. Generics merge the processing code for the same type, improving the code reuse rate and increasing the general flexibility of the program. However, generics are not a necessity for general data types. It is still necessary to carefully consider whether to use generics according to the actual usage situation.

By Grace Collins#golang
cover of post: How to Run Puppeteer in the Cloud for Free: Solutions Compared

How to Run Puppeteer in the Cloud for Free: Solutions Compared

Dec 29, 2024

Comparison of serverless platforms for Puppeteer: how to use them to accomplish a typical Puppeteer task, and their pros and cons.

By James Reed#Engineering
cover of post: A Deep Dive into Gin: Golang's Leading Framework

A Deep Dive into Gin: Golang's Leading Framework

Dec 28, 2024

Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API, but with performance up to 40 times faster than Martini. If you need smashing performance, get yourself some Gin.

By Min-jun Kim#golang
cover of post: High-Performance Python: Asyncio

High-Performance Python: Asyncio

Dec 27, 2024

Unlike multithreading, `asyncio` is single-threaded, but the mechanism of its internal event loop allows it to run multiple different tasks concurrently and has greater autonomous control than multithreading.Tasks in `asyncio` will not be interrupted during operation, so the situation of race condition will not occur.Especially in scenarios with heavy I/O operations, `asyncio` has higher operating efficiency than multithreading. Because the cost of task switching in `asyncio` is much smaller than that of thread switching, and the number of tasks that `asyncio` can start is much larger than the number of threads in multithreading. However, it should be noted that in many cases, using `asyncio` requires the support of specific third-party libraries, such as `aiohttp` in the previous example. And if the I/O operations are fast and not heavy, using multithreading can also effectively solve the problem.

By Takashi Yamamoto#python
cover of post: Mastering Python Async IO with FastAPI

Mastering Python Async IO with FastAPI

Dec 27, 2024

Asynchronous I/O is implemented at the bottom layer using "coroutines" and "event loops". "Coroutines" ensure that when the thread encounters marked I/O operations during execution, it doesn't have to wait for the I/O to complete but can pause and let the thread execute other tasks without blocking. "Event loops" use the I/O multiplexing technology, constantly cycling to monitor I/O events. When a certain I/O event is completed, the corresponding callback is triggered, allowing the coroutine to continue execution.

By Emily Parker#python
cover of post: The Secret Behind FastAPI’s Speed

The Secret Behind FastAPI’s Speed

Dec 26, 2024

What’s the secret sauce behind FastAPI’s speed? Why does it leave others eating its digital dust?

By Ethan Miller#Engineering
cover of post: Is Flask Dead? Is FastAPI the Future?

Is Flask Dead? Is FastAPI the Future?

Dec 25, 2024

The article mainly discusses the current situation and development of Flask and FastAPI in the Python framework field. By comparing the adoption of new projects, the number of GitHub stars, and the proportion in official surveys, it shows that FastAPI's popularity has risen and exceeded that of Flask. Looking back at the development of web frameworks, although Flask once had advantages, it is limited by issues like plugin maintenance. FastAPI stands out with its asynchronous design, Pydantic data validation, and ASGI support. It also explains the decline of Flask's popularity from aspects such as community activity and discussion frequency. Finally, it introduces the advantages of the Leapcell platform suitable for deploying both.

By Daniel Hayes#python
cover of post: WTH Is Synthetic Testing?

WTH Is Synthetic Testing?

Dec 24, 2024

A brief and friendly introduction to synthetic testing.

By Olivia Novak#Testing
cover of post: Will Your Marketing Email End Up in Spam? We Built a Tool to Find Out

Will Your Marketing Email End Up in Spam? We Built a Tool to Find Out

Dec 18, 2024

This article discusses how to use Apache SpamAssassin, an open-source spam detection tool, to evaluate email spam scores and deploy it as an API for seamless integration into workflows.

By Grace Collins#Marketing