Since Ubuntu 24.04, after installing EasyEDA, we will fail to run it, with this error "Ubuntu has experienced an internal error":

Here is how to fix it.
Open Terminal and go to EasyEDA installation folder, which is /opt/easyeda.
...Since Ubuntu 24.04, after installing EasyEDA, we will fail to run it, with this error "Ubuntu has experienced an internal error":

Here is how to fix it.
Open Terminal and go to EasyEDA installation folder, which is /opt/easyeda.
...Though being a long-time Ubuntu user, I still prefer softwares distributed as deb packages to snap. Every time upgrading to new Ubuntu version, I have to repeat the task of removing Firefox snap and install Firefox from deb.
When installing Firefox from APT repositories (like PPA or Mozilla APT repository), we have to set some configuration to prevent Ubuntu from installing Firefox snap again.
This snippet is introduced on Mozilla help page to do that:
...Trên hành trình đi bụi qua các địa phương miền núi, ghé quán cơm dọc đường, mình thấy một điểm thú vị là các món ăn kèm, nó thể hiện sự đặc sắc vùng miền thấy rõ.
Ví dụ, trên bàn ăn của khắp vùng Tây Nguyên, từ Đắk Nông tới Kon Tum, luôn luôn có chén cà pháo ngâm mắm, miễn phí. Quán cơm dưới xuôi thì thỉnh thoảng mới có cà pháo mắm tôm, nhưng muốn ăn thì phải kêu, và tính tiền thêm. Còn quán trên này thì lúc bưng cơm ra, chủ quán sẽ tự động cho thêm chén cà. Cà ở đây thường được cắt nhỏ, ngâm với loại mắm gì đó mà mình không nhận ra. Mỗi tỉnh thì cách cắt miếng cà và màu mắm có khác nhau một chút. Ăn xong vẫn còn thòm thèm thì cứ việc kêu thêm, không tính tiền. À, tuy cùng là Tây Nguyên, nhưng ở Lâm Đồng thì mình lại không thấy món này trên bàn.

Người Tây Nguyên mê cà pháo thì người miền núi phía Bắc mê măng ngâm ớt. Tây Bắc mình chưa đi nên không rõ, mới đi phía Đông Bắc là Hà Giang và Cao Bằng thôi, thì vô quán nào cũng thấy để sẵn keo măng. Ai ăn bao nhiêu lấy bấy nhiêu, cũng không tính tiền, cũng như Tây Nguyên.
...Thị xã Phú Mỹ (tên cũ "Tân Thành", thuộc tỉnh Bà Rịa - Vũng Tàu) không phải là nơi du lịch nổi tiếng. Tuy nhiên nếu lỡ đến đây rồi, thì cũng phải có món ngon đãi khách chứ nhỉ. Sau đây là một số món ăn / quán ăn đáng để thử.

Gần đây mới biết rằng trong JavaScript, khi truy xuất một phần tử trong mảng sau khi kiểm tra trước độ dài của mảng, thì vẫn không đảm bảo được rằng phần tử đó tồn tại.
Ví dụ trong đoạn code 1, biến "first" tại dòng 3 có thể bị undefined, dẫn đến "tz" tại dòng 4 cũng bị undefined theo. Lý do là mảng trong JS là mảng thưa, cho phép các vị trí phần tử không liên tục. Tức là có thể có phần tử ở vị trí 1 mà không có ở vị trí 0.
function useFirst(items: Date[]) {
if (items.length) {
...
Rust là một ngôn ngữ hiện đại dành cho lập trình hệ thống và rất phù hợp cho việc lập trình nhúng. Nếu bạn làm trong lĩnh vực điện tử, IoT và muốn thử áp dụng Rust mà đang phân vân vì chưa biết có đủ "đồ chơi" hay chưa, có thể tham khảo bài viết dưới đây.

Trước hết, nhắc lại những ưu điểm khiến Rust đáng để thử. Sau khi dùng Rust thì tôi thấy:
I recently upgraded my server to Ubuntu 24.04 (live upgrade). After that, I couldn't view journald logs without using sudo, even though my user has been in adm/systemd-journal group.
Here is how to fix:
sudo dpkg-reconfigure systemd
...
Zoo Tycoon is one of my favourite games. Though I played it the first time around 2003, today, after more than 20 years, I still miss it. It is a Windows game, and I have switch to Linux for more than ten years, I still want to play it. Here is how to play it on Ubuntu.

This article assumes that you already have its two CDs as ISO files. I cannot tell where to download them.
Released in 2001, where PCs are just 32-bit, this game can only run in 32-bit environment. This is a key to remember.
...Let's say you have a source code file on a remote machine (accessed via SSH) and you want to copy a portion of the content to your local machine. There are many ways to do this, but I want to present an effective way, as it will take advantage of Helix's very convenient block selection feature.
For example, in the following image, the window on the left is accessing a remote machine, via SSH, on which I am opening a source code file using Helix. The window on the right is an editor, e.g. Geany, of your local machine. I want to copy the source of the enable_mqtt_on_gsm_modem function to Geany. In the left window, we should use a slightly modern Terminal application, e.g. Kitty, WezTerm, Alacritty because of a feature that I will explain later.

On the source file, we'll move the cursor to any line inside the enable_mqtt_on_gsm_modem body, then press m. Helix will bring up a menu of m command, let's press a to select "Select around object". Helix then shows the menu of m a.
Giả sử bạn có một file source code trên máy ở xa (truy cập qua SSH) và bạn muốn sao chép một phần nội dung sang máy trước mặt. Có nhiều cách để làm, nhưng tôi muốn trình bày một cách hiệu quả, vì sẽ tận dụng tính năng chọn khối rất tiện lợi của Helix.
Ví dụ trong hình sau, cửa sổ bên trái là đang truy cập vào một máy ở xa, qua SSH, trên đó tôi đang mở một file source code bằng Helix. Cửa sổ bên phải là một trình soạn thảo, ví dụ Geany, của máy trước mặt. Tôi muốn sao chép source của hàm enable_mqtt_on_gsm_modem sang Geany. Cửa sổ bên trái, ta nên dùng một ứng dụng Terminal hiện đại một tí, ví dụ Kitty, WezTerm, Alacritty vì một tính năng mà tôi sẽ giải thích sau.

Bên file nguồn, ta sẽ di chuyển con trỏ đến bất cứ dòng nào phía trong thân hàm enable_mqtt_on_gsm_modem, sau đó nhấn m. Helix sẽ hiện ra menu của lệnh m, nhấn a để chọn "Select around object". Sau đó Helix lại hiện ra menu của "m a".