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?

Noting!

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:

ssh-keygen

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 id_rsa.pub.

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 id_rsa.pub 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

日本新本格推理代表作《占星术杀人魔法》及《钟表馆事件》评析

最近花了点时间读完了两本日本新本格推理代表作,一本是《占星术杀人魔法》,另一本是《钟表馆事件》。

起因是前阵子逛豆瓣,偶然看到一个书单,号称日本20世纪新本格推理小说十佳作品,排在榜首的二位就是这两本小说。想想自己已经很久没看过推理小说,尤其是日本的推理小说,不如读读这两本代表作,看看会有什么收获。

首先要弄明白的问题是:新本格的“新”到底新在何处?简而言之,在新本格之前的日本推理小说主要着眼点在社会问题上,是比较传统的推理小说,被称为本格推理。而新本格的“新”就新在加入了华丽的包装,比如《占星术杀人魔法》中大量关于占星术的设定,再比如《钟表馆事件》中专门设定了一座时间流逝速度更快的钟馆。

新本格之所以还算推理小说,是因为除了设定之外,仍然是真人真事,也就是现实世界中可以发生的事情,并非是超自然、超能力的魔幻幻想,仅仅只是在选材、设定上加入了新奇的包装,这样做的目的是为了带给读者新鲜感,从而获得市场竞争力。

《占星术杀人魔法》正是作者岛田庄司创建新本格推理派的奠基作品,从此新本格推理在日本文坛大放光彩。岛田庄司还积极挖掘新人,绫辻行人正是其弟子之一,发表了一些列以“馆”作为场景的新本格推理小说,《钟表馆事件》正是其巅峰作品。岛田庄司和绫辻行人基本上是师徒关系,绫辻行人也十分尊敬这位师傅,其作品的主人公“岛田洁”的名字,正是取自师父岛田庄司的姓氏“岛田”和岛田庄司作品主人公“御手洗洁”的名字“洁”组合而成。因此,将这两本小说一并阅读,有助于挖掘新本格推理的本质。

那么首先要说说这两本作品的优点。

《占星术杀人魔法》使用的核心诡计是将五人的尸体通过分尸重新拼凑成六人,这样就造成了凶手其实就是“死者”中的一人,实际上仍然存活于世,就可以掩人耳目。不得不说,这一诡计的设定还是比较精彩的,几十年来一直被借鉴,光是想出这个设定,就非常有价值。

《钟表馆事件》的核心诡计则是借助于一座钟表馆,其内部时间比外部时间快20%,具体实现方法是钟表馆内的时钟走速快20%,并且馆内设计得十分封闭、阴暗,天窗和光线等又做了特殊处理,这样就让人难以发觉其内部流逝的时间。这样做的目的是有利于凶手借助时间差制造不在场证明。整个故事虽然是出于各种意外和疯狂的执念,但也算自圆其说,现实中并非不可能发生。

很可惜,优点基本就是上述这么多,下面讲讲缺点。

虽然全书有着出色的核心诡计,但是在写作上实在是非常繁琐,大有骗稿费之嫌。两本小说的篇幅都是20多万字,十分惊人。《钟表馆事件》的写作中规中矩,还算有传统推理小说的范式,但是《占星术杀人魔法》则异常夸张:全书80%是大段大段的对话,每段对话动辄几百上千字;15%是第一人称的自白书信摘抄,同样每段话动辄几百上千字;剩下的5%才是第三方视角的人物、场景描写。不难想象,这样的写作方式有多么极端,整整20多万字我都不知道自己是怎么看完的。可以说,这两本书完全可以写成几万字的小说,不必如此大费周章。

但是从写作质量上看,虽然《钟表馆事件》写作比较传统,有小说常见的样子,但实际上质量不高。作者处处刻意地传达各种讯息,一切都是那么刚刚好,对于常读推理小说的人来说十分缺乏悬疑感。前期刻意地渲染凶手是光明寺美琴,中期刻意渲染是由季弥,后期则来个翻转是纱世子,但既然读者知道这是一本推理小说,自然不会这么轻易地上当,反而会有厌恶抵触的情绪。这种对凶手的刻意渲染的技巧是比较拙劣的,大大降低了阅读的趣味性。

实际上,就以前期铺垫来说,纱世子的嫌疑就非常大了,因为她竟然半夜三点打来电话,理由仅仅是看到推理小说太激动,亲自打电话来和小说的作者交流,这怎么看都是刻意地制造不在场证明吧?小说中期解谜时,透露书内人物参与进来的各种契机、联系与光明寺美琴有关,但读者应该很容易想到有很大的可能也与纱世子有关。小说到了中后期揭露了密道的存在,纱世子是服务钟表馆几十年的老管家,自然更加熟悉馆内的各种机关、密道,更有作案的可能性。一直到小说的结尾,由季弥的死也和纱世子有关,而且是当场作案,读者更是可以肯定凶手是纱世子。但作者还是要先把凶手归结为由季弥,并且发表了长篇大论来论证由季弥是凶手,这样洋洋洒洒写了十几页后,主角才再度重回钟表馆揭发纱世子是真凶,继续洋洋洒洒地叙述纱世子的全部作案过程,又是洋洋洒洒十几页推理。

而《占星术杀人魔法》的写法虽然剑走偏锋,但反而有一定的悬疑性在其中,给了读者充分的想象和思考空间。案件推进的节奏也十分合理,有古典的味道,也就拥有了经典性。案件本身的质量确实也比较出彩,经得起推敲。两本小说除了核心诡计外,还有辅助诡计,《钟表馆事件》是借助密道、面具,比较平庸,而《占星术杀人魔法》则设计了一个高质量的辅助诡计:女凶手先杀死死者,再伪装成死者与路过的男人发生性关系,随后警方调查死亡时间会发现死亡时间正是发生性关系时期,因此得出杀人凶手即是那个发生性关系的男人。接着凶手利用男人的畏惧心理,威胁男人帮助处理尸体。这种错位式发生性关系的诡计是否是岛田庄司独创我倒是不清楚,但直到东野圭吾的《白夜行》都仍在使用这种诡计。

不过说来惭愧,虽然分尸重组的诡计已经流传了几十年,我倒是不怎么清楚,因此读《占星术杀人魔法》时始终未能想起该诡计。但是作者早已有其他铺垫,比如说梅泽平吉有一个钟情的女模特,会不会就是其女儿中的一个?会不会就是晴子?结果到结尾解谜时,也的确是晴子在做女模特。而尸体无头的晴子一直让我很有疑心,虽然我未能想到诡计是什么,但至少把疑点锁定在晴子的身上。果然,结尾解谜时无头的晴子正是被凭空拼凑出来的那第六个人。虽然岛田庄司对真凶晴子有着一定的暗示,但是这种暗示并不算特别强烈,和作者对其他嫌疑人的暗示程度差不多,因此整体的阅读体验还是不错的。

在人物设定上,两本小说都采用了福尔摩斯和华生的经典双人模式,而且充满了刻板印象。作为福尔摩斯的侦探一定是一个智商较高、性情潇洒、比较自负、会做出神经质举动的人,而作为华生的配角则往往会充当老好人的角色,推动剧情的发展。这个模式的好处是保守,缺点当然是缺乏新意。

所以,这两本一定让我选一本更优秀的,我当然选择《占星术杀人魔法》,不过它的缺点就是篇幅实在太长了,如果能缩短到几万字,就会是更加经典的小说。其写法让我想起了夏目漱石的《心》,但显然《心》的文学价值和悬疑性更为突出,在心理学和社会学上也是十分重要的参考资料。

日本的推理小说热一直不低,这和日本的民族性有很大关系。诞生于20世纪80年代的这两部作品,也算是那个时代的宠儿。新本格推理在90年代的《名侦探柯南》中被继承发展。然而,如今的柯南,推理破案都是次要的,各种魔幻的情节、动作场面才是正戏,不知这究竟是违背了新本格的初衷,还是新本格终究会流于它华丽的包装?但不管怎么说,只有经得起推敲的作案手法,写出读者和观众真正想看到的东西,才是经得起时间考验的东西。

Posted in Uncategorized

开发应与开发环境相适应:Windows下的开发环境最优解

最近尝试各种开发环境后,逐渐明白所谓的开发环境,还是原生态最好。

什么叫原生态呢?

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

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

这原始而又朴素的画风简直欲罢不能,但的确有很多高手当年就是靠这款IDE走上了封神之路

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

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

如果你直接用Linux,一条命令就可以安装GCC,版本直接就是最新的9.0以上(也要看什么发行版,Debian应该是8.0的)。在Windows上安装MinGW64也谈不上顺畅,要下载、安装、配置环境变量等等,较为繁琐。

除了编译器版本老旧外,在Windows写C还会出现一些和Linux环境完全不同的结果。

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

再比如在使用pointer(指针)时,Windows环境下的内存地址并不是0x开头的。

当然,最经典而且最现实的问题是,基本上经典、权威的C语言教程都是基于Linux环境,那么你用Windows编译、运行、调试时往往跟教程讲的不一样,要自己想办法解决。

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

用Windows作为C语言默认系统的教程不是没有,但是基本上都是不值一看的垃圾。教程作者认为在Windows装个IDE更方便学习C语言,其实是作者自己既没有精神和理念的传承,水平也比较低,甚至都不清楚C语言的核心运作原理和操作系统原理,著名代表人物自然是谭浩强了。

所以结论是,直接在Linux上写C是最不折腾的。

但是如果只有一台电脑,又比较依赖图形界面,且兼顾工作、软件生态、娱乐,怎么办呢?

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

VS Code SSH远程连接教程:https://jaylinwu.wordpress.com/2020/12/30/vs-code-ssh-remote-connect-to-linux-server-real-solution/

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

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

除了在实体机上开启虚拟机,有条件可以在本地搭建一台专门跑代码的Linux服务器。

购买一台VPS(云主机)也是不错的选择,然而,国外的云主机常常卡掉线,跑SSH极度不稳定,国内的VPS价格更加昂贵,性价比很低。根据我的初步测算,在实体机上开启本地虚拟机,哪怕只分配单核、1GB内存,其性能应该比Vultr上5美元/月的一款还要强得多。

用远程VPS的好处大概就是24小时不关机且网络条件更好(访问外网,可以开启80端口)。远程VPS当然也不用另外掏电费,但是本地虚拟机的耗电量也非常低(取决于当前任务的负载),就算跑满CPU,也不过是60W而已。除此之外,本地虚拟机使用快照等功能也是完全免费的,而VPS有可能另外收费。

当然,如果你的预算足够充足,购买高配VPS的体验应该是非常好的。

Vultr的价目表。
高配主机的性能很强,但租金价格一样不便宜,自己配一台本地实体机显然划算很多。

不过,整体而言,现在云端远程开发是一个流行的大趋势,倘若云端VPS的价格能一降再降,那么本地虚拟机的优势会被压缩。

Posted in Impression

2020年,我对写博客这件事的一点思考

我们都知道博客衰弱一直是大趋势,尤其是个人博客。

究其原因,写作的根本目的是为了表达,是为了让别人认同。要做到这点,首先是要有人看到。但是博客的运作方式天生有缺陷。

大概在2006年左右个人博客在中国国内是刚刚开始流行的玩意儿,那时候就像现在做自媒体一样,谁做得早,谁质量高,就很容易获得读者。然后经过岁月的沉淀,形成一大批忠实读者,大家主动去上一个博客网站成为习惯,最典型的就是“月光博客”这个网站。现在基本还在活跃的个人博客都是“月光博客”差不多的类型。

为什么会这样呢?因为那时候是搜索引擎的时代,大家上网都要搜索。而那时候互联网不发达,优质网站非常少,很容易就能被搜索引擎收录。这样,多一个个人博客,也就多了一个去处,搜索,访问,搜索,访问,一气呵成。但后来社交媒体兴起,你在社交媒体上写的东西随随便便就能推送给很多人看到。又过了些年,依据大数据的兴趣推送越来越成熟,也就进一步巩固了社交媒体的地位。与此同时,国内的搜索引擎却越发不热衷于收录个人网站,很难被搜索到。

究其原因,和政策有关。总体而言,政府不鼓励个人开设网站(甚至到了后来国内的主机、注册的域名必须备案,不然不给解析上线。论坛类的网站必须先审批,否则云主机提供商直接给你断线),所以搜索引擎也就不去主动收录这些个人网站,算是一种无形的打压。相比之下,国外的搜索引擎就比较开放,就算我这个连域名都只有wordpress.com的博客(免费版不让绑定自己的域名),如果文章质量高,一样可以轻易地在Google的排名占据首页。

当然,社交媒体除了推送广泛外,更有创作者计划支持,通俗点说就是可以直接靠平台赚钱,Youtube、今日头条、微信公众号、抖音都是这套路。既然推送的人多、看的人多、赚的钱多,谁还写博客啊?

除了2006年前后爆发期那一波,大概2013年前后也兴起了一波购买VPS建站的风潮。不过那有点像是现在去Steam购买一大堆怀旧游戏却不玩一样,属于补票性质。很多人是从那时候开始往外网走,突然发现有种东西叫VPS,突然发现VPS还能建立网站而且似乎也不是太难,所以大家都开始活跃起来,想要建立自己的网站。

但是这终究只是一阵风,比如说我自己就先后断断续续用服务器建设过好几个网站,但是基本都没坚持下去。为什么呢?原因前面就已经说过了,在社交媒体面前,自建博客根本费力不讨好,没人看不说,还要自己花钱买服务器和域名,何苦呢?

有人会觉得自己建站自由度高,但问题是只要你人还在国内,你觉得你在外网讲的话和在内网能有区别么?没错,在外网发文章你可以完全不用在乎敏感词,不用在乎被人随便删帖,但是要知道一旦传回内网引起一定的影响,后果是很严重的。所以就算你跑到了外网,你还是要先思想审查一番,确定自己写的东西没有触犯“七条底线”。

但是博客有一条是有绝对优势的:因为互动的人少,推送给各种各样的人少,所以写博客好比树洞,我爱怎么写就怎么写,你就算跑来骂我我也听不见,关键你基本不会跑来骂我。路过的人就算看我不顺眼,也不过是关闭一下浏览器标签,连留言评论的想法都没有。相比而言,社交媒体由于全网推送的属性,很有可能你随手写的东西就不小心触碰了不相干人等的神经,然后他们会组团爆破你的评论区,让你感到十分沮丧和抑郁。

其实这里面的原因就是成本问题。在博客下面留言发评论很麻烦,有事相求不如直接给作者发邮件。而发邮件呢,又属于半正经的写作,还得留意自己的邮箱地址。如果专门为了骂人去注册一个邮箱也十分不划算,因此干脆不骂了。社交媒体转发评论的成本极低,所以想起来就写一条骂骂,过过嘴瘾,这也是如今网上喷子太多的原因之一。如果你认真研究过某些人的社交媒体账号,你会发现他们自己从来不发动态,但是在各种评论区里面是非常活跃的,而且常常出言不逊、出口成脏。

同时,创作者计划是一把双刃剑,好处是创作者有了一定的收入保障,创作更有积极性,但是坏处是创作者会越发迷失本心。很多东西一旦沾染了铜臭味,也就俗不可耐。很多人创作的初衷是为了直抒胸臆,并不在乎能否赚钱;还有一些人是为了坚持信念,只赚自己应该赚的钱。但是滚滚红尘,纸醉金迷,所谓“乱花渐欲迷人眼”,眼瞅着各色人等靠流量发财,自己心里也会痒痒,所以慢慢就丧失了自己的底线,也惹得一身骚味。本来不为赚钱的,开始为了赚钱写作、发帖;本来是为了赚钱的,变得以金钱为导向。

以Youtube为例。Youtube虽然是一个视频上传平台,但是视频是什么从来无人规定。Youtube创始人于2005年在Youtube上发布了一个他在动物园的自拍影片,画质简陋,毫无剪辑,但是它真实、自然,那是YouTube上的第一个视频,从此开启了YouTube时代。那几年的Youtube的视频基本上都是这种比较原始的自拍,主打真情实感、记录生活。后来随着技术的进步,随着创作者计划的开启,YouTuber们纷纷开始剪辑、后期制作,甚至团队化、公司化,题材也以市场为导向。专业是专业了,看起来就像一家家个人电视台,但是真情实感呢,也是很难再找到了。浮夸的表演、炒作的话题,再配上华丽的包装制作,金玉其外、败絮其中,非常得无聊。

如今博客存在的价值是什么呢?那就是偶尔遇到什么问题上搜索引擎一搜,发现某人写了一篇文章,解决问题后就把网页给关了。仅此而已。打个比方,现在的博客网站就像图书馆里的书,有需要的时候去借阅几本,借到手也不过是随手翻阅几页,然后就丢到一边。日常生活大部分时间都是玩手机、玩游戏等等。

但是反过来说,在我们今天这个时代,图书馆存在的价值是什么?答案就是为了更好地保存和展示。

博客也有这样的功能,它展示的信息往往比较纯粹,浏览一个人的博客,可以快速了解这个人的思想和历史。博客的文章不同于社交媒体的短平快,往往有深度。至少对于同一个人而言,他在博客上写的东西肯定要比在微信朋友圈里写的东西质量要高。所以博客可以很好地保存和展示一个人的精神面貌,是个人网站的重要组成部分。或者说博客原来的初衷是为了拓宽个人网站的边界,但最终还是无法跳出个人网站这个范畴。

即使籍籍无名如我辈,查看后台发现,整个2019年访问我博客的人数也有一千余人。虽然他们大多是通过搜索引擎查找到我的文章,但这是否又为他们带来不一样的东西呢?有没有帮到他们呢?

这种萍水相逢、拂袖而去的体验,这种不计名利、行走于江湖的风范,正是现在这个时代个人博客的核心体验。

在过去的时间,我存在过;在现在和未来的时间,我仍然和这个世界发生着交互。

当然,博客社交化不是没人搞过,比如国外的Meduim和国内的简书,它们尝试以博客为核心,附加各种推送、社交圈的功能。然而,社交圈始终追求短平快,没人愿意在社交圈里花费大量时间看长篇大论。长篇大论就算是废话,也是高质量的废话。就算是废话,质量一高,也没人爱听,不如刷个抖音。

WordPress官方其实也搞了很久的社交圈子,但是搞得很一般,主要是官方也不太支持这种行为,反正我日常是看不到任何推送的,也没见我被推送给别人过。什么原因呢?因为Wordpress主打的是建站产品,所以它更强调个人、团体、公司对自己网站的掌控,包括推广在内。也就是说,推广这件事是由网站所有者自行决定的,因此Wordpress就没什么动力搞社交圈了。

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:

#DefaultTimeoutStopSec=90s

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

DefaultTimeoutStopSec=10s

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:

reboot

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软件无法通过v2rayN、Shadowsocks代理

一直使用v2rayN、shadowsocks的朋友一定会发现一个问题:开启全局代理的情况下,UWP软件无法代理,最典型的就是微软商店打开是一片空白。

为什么会这样呢?因为微软为UWP软件预设了沙箱,而这个沙箱默认阻断与本地网络(localhost,或者127.0.0.1)的连接,因此,UWP软件的流量无法通过代理软件(VPN也许有效,因为工作方式有所不同)。

那么如何解决这个问题呢?

既然我们知道了问题的根本,那当然是直接从根本入手:去除UWP的网络保护。

首先,我们需要下载安装一个软件,这款软件的名字叫做Fiddler (https://www.telerik.com/download/fiddler-everywhere)。

打开Fiddler,点击左上角的WinConfig按钮(需要UAC授权)。如果弹出警告,点击No按钮。

在显示出来的列表中勾选你想要解除网络限制的UWP软件,勾选完毕后,注意点击上方的保存按钮以启用更改。

注意:一定要找到一个含有乱码的选项,microsoft.windows.authhost.*******************(一串乱码),此选项必须勾选,否则UWP软件在涉及账户授权的时候仍然无法通过系统代理,会出现非常尴尬的情况。

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

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

整个流程比较简单,而且实测有效。