Posted in Politics

The Congress occupied: the new history of America to fight against bureaucracy

I am glad to see after 250 years, Americans got into the Congress. This is their first time did this.

Why this is the first time?

Because they believe in the Constitution. The believe that the Congressmen will do as the followings and people only do their own things. By that division of labor collaboration, the country will run as well as possible.

But recently they have known that the whole bureaucracy system are corrupted and even the Congress representatives voted by themselves won’t listen to them. When Mitch McConnell stands with the Democrats and prevents the vote fraud challenging. When Mike Pence lied and betrayed them many times, American people get tired of those bullshit.

The power of the Congress are generated under the Constitution and the power of the Constitution are granted by people. Some people says those people who crashed into the Congress are committing treason. But in fact, they are using the power of the Constitution and under the protection of the Constitution.

I need to point out that I condemn those who smashed and broke things in the Congress, some evidences show that they are BLM and Antifa members. Those who just stepped into the Congress peacefully, they should be free judge of crimes.

Sadly, I heard some from the people died due to gunshot when they tried to get into the Congress. One of them is a brave woman once served the US as military. While in the year 1932, Bonus Army also hurt the hearts of the veterans. The dilemma of that time is the same as now.

When we look back to the history of the world, people around the world over periods had once occupied their Congress. Why? Because they know the bureaucracy are corrupted. Because they want their voices to be heard. They want to change something.

After the long term of 250 years, Americans have reached this moment. They find themselves are in a delicate lie and nightmare are falling.

Mike Pence said “Today was a dark day in the history of the United States Capitol.” But as we know, the real darkness is the corrupted bureaucracy, including Mike Pence.

Politicians in Washington DC should consider their future, American people’s future and the world’s future.

Jan 6th is the beginning, not the end. America has a new history to fight against bureaucracy.

Posted in Politics

Will America to be new South Africa? The real problem is not only that simple.

Due to this unfair election, many people say that America will be a new South Africa. It sounds like a racist idea but that is not exact because many people misunderstand the real meaning of it.

To be a new South Africa means the tyranny of the majority, especially the anti-wisdom majority. A country may be prosperous before but then the anti-wisdom and corrupted majority seized the regim and then spare the whole country’s source to the majority and then the country will begin to lose vigor. Why? Because due to the bad human characteristics, people would tend to be lazy and want to get food for free.

Sound familiar? Maybe the Americans know the history of Soviet Union very well. And when you try to examine the Democrats’ political ideas and theories, it’s the same.

I don’t think Trump is a savior but he is a real patriot. He doesn’t want to see America falling down. He doesn’t want to see the world falling down. But four years later, what we see is a cruel world surrounded by evils.

Even today I don’t know what will happen to make Trump win the election. I heard that millions of people will appear in the Washington DC on Jan 6th to support Trump and guard the Constitution. I hope they will succeed.

But even Trump win the election, so what?

You see the whole administration system highly corrupted, including the Congress and the Supreme Judge and the Media. The fathers of the US referenced Roman Republic to design the US administration system. However, after nearly 250 years, the system doesn’t work. The Congress representants don’t listen to their voters’ voice. The Supreme Judge loses its individual rights to keep the balance and find out the fraud.

So can you tell me if the president is still Trump, so what?


Once Obama the liar said ‘change has come to America.’ Yes, the America goes into the darkest era.

Rome Republic fell apart into two parts. I think if the chaos cannot be dealt within the US, the US will fall apart into two parts too. Although one half and the other half cannot rule the country together, two parts will be good: a good part and a bad part, that will make sure not the whole country be a bad one.

Due to the US is federalism, it is easy to make things happen. The last resort to keep the remaining civilization. You will never wake up a person who pretends to be asleep. So if it gets tense, just go away, just move. When the first bath of Americans arrived in Plymouth, they have determined their minds. They prayed to God for blessing.

Time is young, but we are not old enough. The civilization of humans is nothing indeed. It’s delicate and easy to be broken.

I love studying history, but the more I know, the more I understand that the history of human is just a joke.

Posted in Linux, Network, Visual Studio Code, Windows

VS Code SSH remote connect to Linux Server (Real Solution)

First of all, forget the one who told you using Putty to generate the key, it’s outdated now.

Why? Because in the past, only Linux supports SSH so that Windows should use third party tool to realize SSH remote connection. But now Windows 10 supports native SSH Client, so you must get used to this one and avoid strange errors or wrongs.

Then, let’s see how to generate SSH key by native SSH Client. It’s easy. Open your local terminal (Linux or Windows) and execute:


In fact, though there is many options can be added, I only recommend one:

ssh-keygen -C username

Must be uppercase C and you can change the username to be any name you want to use, but that should be used to log in your Linux Server as its username later. It should be the same as your Linux username.

After you execute the command, you just follow the instructions on the screen. If you want not to overwrite the existing key files, change the default directory. If it suggests you to input Phrase, that can be empty, just enter directly.

When done, remember the default directory in the instruction just now? For Windows, you can cd into C:\Users\your_username\.ssh\; for Linux, you can cd into home/username/.ssh/.

Now you can see two files: id_rsa and

pub means public, so its a public key. For the other with no extension, it’s a private key.

Here is the annoying question: where should I put them?

Well, if you look up on the internet and you will find too much information about that but you will be more confused.

Exactly, ssh-keygen is just a tool to generate keys, that’s all. It’s not about how to connect. So whatever you generate on Windows or Linux, Client or Server, that’s fine, don’t care about it. You just use a tool to generate two files.

But then the following question again is: So where should I put them indeed?

Well, maybe there is many theories behind the scene, but let me tell you the simple truth: client stores the private key and server stores the public key.

For example, you have PC A and PC B, you want to use PC A connect to PC B, so you should store the private key on PC A and store the public key on PC B.

But you should always make sure they are in a pair because you may have generated many key pairs before or later.

Now let’s move on.

Now that we have known we should upload our public key on the server, let’s do it. If your client is Linux, thats easy, using:

 $ ssh-copy-id user@host

But if you are using Windows, ssh-copy-id should not work. So we need to understand what ssh-copy-id does.

Okay, we find a new file called authorized_keys. Go to your Linux server (use shell, SFTP or GUI), create that authorized_keys file under home/user/.ssh/ and copy the pub file contents (you can open it by VS Code) and paste into the new empty file. Save it.

In fact, id_rsa and is not necessary here

In case, reboot your Linux server now.

And now we should care about our path to store the private key. If you generate the keys on Windows directly, you should store it under C:\Users\username\.ssh\. If you generate it on Linux but you want to let it be stored on your Windows, you should download it from the Linux first. How to download it? I think SFTP is the best way. Use your SFTP tool to download it from Linux path home/username/.ssh and then store it under the same path on Windows.

Now we should check what we have done before we go on:

  1. we generate SSH Keys in a pair using ssh-keygen
  2. we store the private key on our client Windows PC (under C:\Users\your_username\.ssh\)
  3. we store the public key on our server Linux PC (under home/username/.ssh/authorized_keys)

Now let’s move on.

Open your VS Code, install SSH extensions in Extension Store. After installation, you will find a new icon on the side bar. Click it.

You can add new connection by “+” button. Follow the instruction on the top popped out dialog. After done, click ⚙ button. It will let you choose the path where SSH key files store. Then you will open a config file.

You can edit something here:

Host will change the UI display on the panel.

Hostname: the IP address or URL of your server.

User: should be the same as ssh-keygen -C username.

Port: the SSH port. Default is 22.

If you are using Virtual Machine like VirtualBox, you need to forward your Virtual Machine port (like 22) to the Host Machine port (like 12345).

IdentityFile: if you don’t add this option, VS Code will use the default ssh path (C:\Users\username\.ssh). But if you have many SSH key files to store in different paths, you should tell VS Code where is that file. On Windows, the “\” should be changed to “\\”.

Edit this file as your condition and save it.

Before we go, a small thing we need to deal with: go to C:\Users\username\.ssh, you will find a file called known_hosts. Delete it, it will be regenerated itself.

Return your VS Code panel, move your cursor on the server you want to connect, an icon will be shown on the right. Click it and you will begin connection in the new window. Follow the instruction on the top pop out dialog, then everything should be done.

Enjoy it!

Posted in Impression

















Posted in Book Review



















Posted in Uncategorized




比如C语言在Linux上就叫原生态,在Windows上就不叫原生态。最典型的例子是Visual Studio一直不支持C语言,直到最近一两年才终于开始支持C语言的开发。

在Windows上用C语言编程,可以选择的IDE少之又少,无论是界面还是功能,都不尽然如人意,甚至不乏很多老古董,比如Turbo C/C++(如图)。


老手应该都知道通过编译器配合VS Code会有比较现代化的C语言编程体验,但是在Windows上找编译器那叫一个困难。

在Windows上最受欢迎的编译器是MinGW64,但是它内置的GCC版本是8.1.0,上GCC官网一查这是2018年的版本。GCC 9.0早就出了,MinGW64卡在8.0也就算了,但好歹得升级到最新的8.4吧?没办法,MinGW64的升级进度就卡在8.1不动了,基本不怎么更新。



比如用VS Code编译运行C文件,即便不加”\n”在string的结尾,最终printf()出来的结果仍然是自动换行的。但是在Linux下编译运行,结果会被忠实地还原,不加”\n”就不会换行。这样一来,在Windows下写C,一方面不利于养成添加“\n”的习惯,另一方面自己也很难排查出实际结果,以为自己当初写的时候并没有问题。



可能有人比较好奇,为什么教程是基于Linux的呢?因为C语言本来就是为Unix系统而生的,C语言之父同时也是Unix系统之父,而Linux和MacOS都是基于Unix开发的,但是只有Linux是开源免费的,所以自然用Linux教学了。另一方面,如今C语言使用的场景除了教学和嵌入式开发以及Linux系统开发外,使用场景有限,真有需求都转Python和C++了,所以C语言有点old school的感觉,而old school的专家学者都很钟情Linux,说是情怀也好,但更多的是一种精神和理念的认同与传承。




最好的解决方案是主系统仍然为Windows,然后开启一台Linux虚拟机(使用Server版本即可),然后在Windows上通过VS Code、Terminal等连接那台虚拟机。VS Code现在对SSH远程开发的支持非常好,所以我非常推荐使用这一方式进行开发。

VS Code SSH远程连接教程:

长期开启虚拟机,其实对CPU的要求不算太高,一般最近几年生产的CPU都能轻松搞定。主要是宿主机内存要大,磁盘IO性能要好。内存建议16G起步,磁盘至少是SATA SSD且创建虚拟机时把虚拟硬盘存放在SSD上。

如果是跨平台的编程语言,则对开发环境要求没那么高,比如Java、Python,可以直接在Windows上用IDE或者VS Code。在这种情况下,我倒是比较愿意直接在Windows上跑,因为这样可以节省下开启虚拟机的资源,且代码直接在实体机上跑性能也会更好。此外,同时打开的窗口数量更少,系统UI更为统一,操作和切换的体验较好。







Posted in Impression























Posted in Linux

A stop job is running for Snap daemon on Ubuntu [Soulution and Thinking]

Ubuntu has a snap service built in, sometimes it is hard to kill when reboot or shutdown. If the progress cannot be killed easily, system will handle some time (default value is 90s).

So one solution is change the killing time for progress.

First, we need to have Administrator Permission on Linux. Execute the command:

sudo su

Then follow the message on screen to enter your passwords.

Next we need to edit system files:

“Nano” is a text editor built in Ubuntu, so we can use it. Execute the command:

nano /etc/systemd/system.conf

Don’t be fear because you will find nearly all the text is blue. Why? Because they all comment out with “#” so that no line is effective for the system. What we need to do is uncomment a line and let that line effect.

Use your keyboard arrow keys to move cursor down to find a line called:


Delete the # and change the time to be 10s, like below:


You’ll find the color becomes white because it will be effective for the system.

Then press your keyboard with Ctrl+X, you will see the message on the screen to remind you to save changes. We press Y on the keyboard. Then it shows that you can change the file name, but we do nothing, just press Enter key directly.

Use cat command to see the contents of the edited file.

cat /etc/systemd/system.conf

If you are sure there is no error of that file, then you can reboot your system to see the effect, but may be only the second time to reboot will see the effect. You will see the kill time when shutdown will only be 10s. That’s fine.

To reboot quickly, use command:


But why Snap cannot be stopped as usual? If you’re using Virtual Machine, I think the answer should be there: maybe the snap service in Ubuntu has conflict with Virtual Machine software.

For example, while using VirtualBox, I just use snapshot function restored a snapshot for my Ubuntu server, the conflict will be there. If you just use the console to normally shut down several times, the problem will be gone. To normally shut down, just close the VM window and choose the second option to shut down.

I have changed the system config to 10s once before but I have never seen stuck any more after I normally shut down the machine.

Good luck to you!

Posted in Network






首先,我们需要下载安装一个软件,这款软件的名字叫做Fiddler (。




  • 典型场景:UWP版本的Outlook无法添加Gmail账号,原因就是没有让*******************(一串乱码)通过代理。

备注: Clash客户端自带的Loopback插件就是截取自Fiddler的,如果你下载安装了Clash,就不用再另外安装Fiddler了。