Lucio的小窝 https://static.luciochen.com/ 大概是个正经的网站吧 Tue, 30 Jun 2020 07:36:02 +0000 zh-CN hourly 1 https://wordpress.org/?v=5.4.2 https://i2.wp.com/luciochen.com/wp-content/uploads/2019/06/cropped-7632FAD1-02A0-494B-87CF-A6A50404CBC5.jpeg?fit=32%2C32&ssl=1 Lucio的小窝 https://static.luciochen.com/ 32 32 163695377 康乔的酒谱 https://static.luciochen.com/archives/164 https://static.luciochen.com/archives/164#respond Thu, 11 Jun 2020 20:59:56 +0000 https://static.luciochen.com/?p=164 康乔的酒谱最先出现在Lucio的小窝

]]>

康乔的酒谱最先出现在Lucio的小窝

]]>
https://static.luciochen.com/archives/164/feed 0 164
ZeroTier One 入门指南 https://static.luciochen.com/archives/142 https://static.luciochen.com/archives/142#respond Sat, 06 Jun 2020 02:07:02 +0000 https://static.luciochen.com/?p=142 有些时候,我需要在学校里面控制一下家里的Raspb…

ZeroTier One 入门指南最先出现在Lucio的小窝

]]>
有些时候,我需要在学校里面控制一下家里的Raspberry Pi,更新一下软件然后跑跑指令之类的。为了实现这个,我首先想到的是V2Ray 自带的反向代理。

https://v2ray.com/chapter_02/reverse.html

用这个反向代理真的是十分头疼,当时真的花了两三个小时才调试好。好处是用这个反向代理不止可以访问家里的RPi,也可以访问路由器呀,家里的电脑呀之类的。总之花的两三个小时是十分值得的。用起来也很方便,直接挂一个VPN然后就可以访问家里的网络了。

可是,当设备多了起来,每个设备都需要单独设置一个反向代理。这就变得十分头痛。最多的时候我有三个RPi同时运行着,它们都在不同的网络里面。实在是烦的不行。另外一方面是速度问题,由于所有的流量都要从搭建VPN的服务器走一圈,导致Ping最低也得两百。而且现在我也有远程控制电脑的需求了,数据全都去加州走一圈实在是太慢了。这时候,ZeroTier 走入了我的视野。

ZeroTier大约就是把所有运行这个软件的电脑都连起来组一个局域网。在连接建立之后就换成点对点连接。话不多说,现在就开始建立吧。

首先你需要去ZeroTier创建一个账号

https://my.zerotier.com/login

点那个Log In to ZeroTier, 之后在屏幕下方找register去注册一个账号。
在登陆完之后,右上角去新建一个NetWork

建立完了差不多就是这样。记得把

这时候,其他设备就可以用这个NetworkId来加入到你的“局域网”了。

ZeroTier One 入门指南最先出现在Lucio的小窝

]]>
https://static.luciochen.com/archives/142/feed 0 142
Windows Sandbox error 0x0351000 https://static.luciochen.com/archives/127 https://static.luciochen.com/archives/127#respond Sun, 09 Feb 2020 09:38:43 +0000 https://static.luciochen.com/?p=127 How to install Windows Sandbox

Windows Sandbox error 0x0351000最先出现在Lucio的小窝

]]>
就最近有些时候需要装一些国内的软件,例如YY呀,百度云呀之类的。然而我并不想直接装在自己的电脑里。想着直接装一个Vmware虚拟机算了,结果有一次玩PUBG的时候他竟然不让我用Vmware!这就有点尴尬了,我真的没开挂千万被封我号给我VAC呀。

想着电脑上已经装了WSL了,是不是可以试试最近新出的Windows Sandbox呢。说装就装

直接去控制面板的

选好这几个框框就行了。(好像 Hyper-V 不用选,但我之前已经装过了)。

装好了之后是不是就可以用啦?
当然,要是这么容易就能弄,我肯定就不会写一篇文章来搞他了
我遇到了一个神奇的Error:
Windows 10 打开Windows Sandbox提示找不到虚拟机监控程序,请启用虚拟机监控程序支持

图片

这可咋办呀,有人说要检查一下任务管理器看看虚拟化打没打开:

可我的已经是打开了呀。然后继续搜寻,发现了一个另外的解决方法。
这个解决方法来自于 Guiding Tech:

https://www.guidingtech.com/fix-windows-sandbox-no-hypervisor-was-found-error/

Open an elevated Command Prompt console (type cmd into the Start menu, and then click Run as Administrator). Next, enter the following command into the Command Prompt console, and then press Enter:

BCDEDIT /Set {current} hypervisorlaunchtype auto

https://www.guidingtech.com/fix-windows-sandbox-no-hypervisor-was-found-error/

也就是说,打开CMD(管理员),然后运行

BCDEDIT /Set {current} hypervisorlaunchtype auto

就可以了。记得弄完之后重启电脑。
在重启完电脑之后,用CMD继续运行 BCDEDIT ,你应该会看到

Emmmmm不对,忘了以管理员运行了

最后一行,hypervisorlaunchtype Auto
我们终于可以运行Windows SandBox 啦!

诶嘿!

Windows Sandbox error 0x0351000最先出现在Lucio的小窝

]]>
https://static.luciochen.com/archives/127/feed 0 127
My .zshrc file https://static.luciochen.com/archives/122 https://static.luciochen.com/archives/122#respond Fri, 31 Jan 2020 11:22:19 +0000 https://static.luciochen.com/?p=122 https://static.luciochen.com/wp-…

My .zshrc file最先出现在Lucio的小窝

]]>
https://static.luciochen.com/wp-content/uploads/2020/01/zshrc.txt

对了,如果想要把默认的shell改成Zsh,那么用chsh就可以了:

chsh -s $(which zsh)

My .zshrc file最先出现在Lucio的小窝

]]>
https://static.luciochen.com/archives/122/feed 0 122
MacBook Precision Driver https://static.luciochen.com/archives/117 https://static.luciochen.com/archives/117#respond Thu, 19 Dec 2019 07:11:07 +0000 https://static.luciochen.com/?p=117 https://github.com/imbush…

MacBook Precision Driver最先出现在Lucio的小窝

]]>
https://github.com/imbushuo/mac-precision-touchpad/

真的好用,不信你就试试。

MacBook Precision Driver最先出现在Lucio的小窝

]]>
https://static.luciochen.com/archives/117/feed 0 117
ENL213 link https://static.luciochen.com/archives/97 https://static.luciochen.com/archives/97#respond Tue, 08 Oct 2019 15:06:42 +0000 https://static.luciochen.com/?p=97 https://docs.google.com/p…

ENL213 link最先出现在Lucio的小窝

]]>
https://docs.google.com/presentation/d/1823vvZDXo3n1oiOICftROAv49gq0z-UYZ-9xyqRgKn4/edit?usp=sharing

https://prezi.com/view/6ikCTOFfTO9cyJOiZJCj/

ENL213_11_21.pptx

ENL213 link最先出现在Lucio的小窝

]]>
https://static.luciochen.com/archives/97/feed 0 97
LeetCode 1114. 按序打印 https://static.luciochen.com/archives/91 https://static.luciochen.com/archives/91#respond Mon, 22 Jul 2019 01:58:44 +0000 https://static.luciochen.com/?p=91 来源:力扣(LeetCode)链接:https:/…

LeetCode 1114. 按序打印最先出现在Lucio的小窝

]]>
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/print-in-order
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

我们提供了一个类:

public class Foo {
  public void one() { print("one"); }
  public void two() { print("two"); }
  public void three() { print("three"); }
}

三个不同的线程将会共用一个 Foo 实例。
线程 A 将会调用 one() 方法
线程 B 将会调用 two() 方法
线程 C 将会调用 three() 方法
请设计修改程序,以确保 two() 方法在 one() 方法之后被执行,three() 方法在 two() 方法之后被执行。

示例1:

输入: [1,2,3]
输出: “onetwothree”
解释:
有三个线程会被异步启动。
输入 [1,2,3] 表示线程 A 将会调用 one() 方法,线程 B 将会调用 two() 方法,线程 C 将会调用 three() 方法。
正确的输出是 “onetwothree”。

示例2:

输入: [1,3,2]
输出: “onetwothree”
解释:
输入 [1,3,2] 表示线程 A 将会调用 one() 方法,线程 B 将会调用 three() 方法,线程 C 将会调用 two() 方法。
正确的输出是 “onetwothree”。

题解:

为了让线程之间能够进行同步,我们可以给线程上一个mutex锁。

首先我们要建立两个锁:

mutex mt2;
mutex mt3;

这两个锁也就对应了输出 two 还有输出 three 的两个function。
如果我们在初始化的时候将其锁住,并且在first() 里面打开mt2,在second里面打开mt3。就能够保证无论以任何顺序使用这三个方法,都能以onetwothree的顺序输出。

class Foo {
public:
    mutex mt2; //lock for void second(function<void()> printSecond)
    mutex mt3; //lock for third()
    Foo() {
        mt2.lock();
        mt3.lock();
    }

    void first(function<void()> printFirst) {
        //there's no lock in this function
        // printFirst() outputs "first". Do not change or remove this line.
        printFirst();
        mt2.unlock();
    }

    void second(function<void()> printSecond) {
        mt2.lock(); //lock
        // printSecond() outputs "second". Do not change or remove this line.
        printSecond();
        mt2.unlock();
        mt3.unlock();
    }

    void third(function<void()> printThird) {
        mt3.lock(); //lock
        // printThird() outputs "third". Do not change or remove this line.
        printThird();
        mt3.unlock();
    }
};

LeetCode 1114. 按序打印最先出现在Lucio的小窝

]]>
https://static.luciochen.com/archives/91/feed 0 91
搭建一个Ubuntu 18.04的服务器 https://static.luciochen.com/archives/75 https://static.luciochen.com/archives/75#respond Tue, 02 Jul 2019 08:20:26 +0000 https://static.luciochen.com/?p=75 这篇文章由翻译并简化Justin Ellingwo…

搭建一个Ubuntu 18.04的服务器最先出现在Lucio的小窝

]]>

这篇文章由翻译并简化Justin Ellingwood在Digital Ocean上的文章而来

https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04

第一步:登录

当我们刚刚安装好系统时,服务商会为你提供三个很有用的东西:
服务器的ip地址,ssh的端口,还有root用户的密码
那么第一步就是通过ssh连接到服务器啦

$ ssh -p portnumber root@your_server_ip 

root 账户就是管理员账户,是系统中权利非常高的一个账户,所以在日常使用中并不推荐使用root账户。比较好的解决方法是建立一个可以通过sudo来获取root权限的私人账户。

第二步:新建用户

# adduser lucio

在创建这个账户的时候系统会问你几个问题。你可以选择性的填其他的问题,但是一个复杂的密码是很重要的!想要跳过问题的话,直接按回车就可以了。

第三步:给予管理员权限

为了这个新建的用户也可以做那些root可以做的事情,我们可以给这个用户管理员权限。虽然它平时没有root那么高的权限,但是只要在指令前面加上sudo 就可以有root一样的权限啦。

# usermod -aG sudo lucio

那么以后再用 lucio 这个账户登录,就可以在指令之前加上sudo来通过管理员的权限做事情啦。

第四步:做一个最基本的防火墙

为了在开启防火墙之后也能用SSH,我们最好把SSH添加进防火墙的白名单里面

# ufw app list
Output:
Avaliable applications:
    OpenSSH

那么运行以下的指令就可以把SSH添加进白名单啦

# ufw allow OpenSSH

注意,如果你的端口并不是默认的22,那么我还推荐你把那个端口也添加进ufw里面:

# ufw allow <port>

在这之后呢,你就可以将防火墙设置为启用啦

# ufw enable
# ufw default deny

如何设置ufw我会在以后的帖子里面讲。现在我们要把root账户的登录权限关掉,防止别人暴力破解root密码。

# sudo vim /etc/ssh/sshd_config
//然后输入一个大写的G 这样会跳到最底端
//按o 另起一行开始输入
PermitRootLogin no
//之后按键盘左上角esc键退出编辑模式
//输入 :wq 来保存并退出

这样设置完之后一个服务器就算是基本配置好啦。

搭建一个Ubuntu 18.04的服务器最先出现在Lucio的小窝

]]>
https://static.luciochen.com/archives/75/feed 0 75
如何解决”Updating failed” 的问题 https://static.luciochen.com/archives/69 https://static.luciochen.com/archives/69#respond Tue, 02 Jul 2019 06:52:16 +0000 https://static.luciochen.com/?p=69 在插件里面心血来潮,看到了一个能给wordpres…

如何解决”Updating failed” 的问题最先出现在Lucio的小窝

]]>
在插件里面心血来潮,看到了一个能给wordpress 做 catching 的插件。安装的时候它提示我要用Permalinks才行。简单呀,在设置里面改好了,这下访问速度就快咯~

但是问题也跟随着这个Permalinks的更改来了,我无法添加新的post,也无法发表新的页面。感觉服务器凉凉了?
然后查了一下官方文档

For nginx, a web server aimed at high concurrency, high performance and low memory usage, add the following location block within the server block:

https://wordpress.org/support/article/using-permalinks/
location / {
            try_files $uri $uri/ /index.php?$args;
}

官方文档真好用

如何解决”Updating failed” 的问题最先出现在Lucio的小窝

]]>
https://static.luciochen.com/archives/69/feed 0 69
如何一键添加CloudFlare ip进入UFW https://static.luciochen.com/archives/32 https://static.luciochen.com/archives/32#respond Tue, 25 Jun 2019 10:01:10 +0000 https://static.luciochen.com/?p=32 虽然说是一键,但其实需要运行这个脚本然后复制粘贴到…

如何一键添加CloudFlare ip进入UFW最先出现在Lucio的小窝

]]>
虽然说是一键,但其实需要运行这个脚本然后复制粘贴到terminal才可以用

#!/bin/sh
cd /tmp
wget https://www.cloudflare.com/ips-v4 -O ips-v4-$$.tmp
wget https://www.cloudflare.com/ips-v6 -O ips-v6-$$.tmp

for cfip in `cat ips-v4-$$.tmp`; do echo "sudo ufw allow from $cfip to any port 443"; done
for cfip in `cat ips-v6-$$.tmp`; do echo "sudo ufw allow from $cfip to any port 443"; done

由于我的服务器只开放443端口,并没有开放80端口,所以这里只添加443到白名单。当然如果想要添加80端口的话,改两个数就可以了。

Source:

https://designinterventionsystems.com/plone-blog/configuring-the-ufw-firewall-to-allow-cloudflare-ip-addresses

如何一键添加CloudFlare ip进入UFW最先出现在Lucio的小窝

]]>
https://static.luciochen.com/archives/32/feed 0 32