raspberrypi

Raspberrypi + VNC远程桌面访问

Raspberrypi只是主板部分,如果要显示,可以用HDMI外接显示器或者电视,也可以直接安装VNC,然后用电脑连远程桌面。设置VNC:$ sudo apt update $ sudo apt install tightvncserver # 设置密码,会让输入2次相同的密码,再加一次询问你是否需要设置一个view only的密码 # 可以根据自己的需要来设置,如果只想共享桌面给其他人看你的神操作, # 那么可以设置一个view only的密码给他 $ vncpasswd # 设置完成后,启动 $ vncserver在输入vncserver之后,系统会为VNC服务分配一个数字,在通过其他设备连接时需要用到该数字。回到自己的Mac或者Windows,第一步先现在VNC Viewer的软件:https://www.realvnc.

  • Bo
    Bo
2 min read
python

Python类里的method, classmethod, staticmethod

Class ExampleClass Example 普通的method属于instance,第一个参数self是instance自己,所以可以被instance调用;因为self.__class__指向class本身,所以此method内可以访问所有的instance变量和方法,也可以访问所属的class的变量和方法。 classmethod属于class,第一个参数cls是class自己,所以可以被class调用。又因为instance本身的self,可以使用self.__class__访问到class本身,所以也可以被instance调用;因为有cls指针但没有self指针,所以此method内只能访问class的变量和方法, staticmethod属于class,虽然没有cls做参数,但可以被class调用,此时class相当于一个命名空间的作用。既然能被class调用,因为self里有self.__class__,所以也能被instance调用;因为没有cls和self指针,所以此method内既不能访问class的变量和方法,也不能访问instance的变量和方法。 例子:

  • Bo
    Bo
2 min read
cors

Exchange Info Across Domain with CORS

假设你拥有两个站点,a.com和b.com,用户在b.com登录之后,在访问a.com时,需要自动检测到用户已经在b.com登录了,进而a.com可以根据用户的登录状态显示不一样的信息。 一种方法是使用jsonp,另一种是使用CORS,两种都是访问非同源网站获取信息时的解决方案,这里介绍CORS。 当a.com的代码中有ajax访问b.com的接口时,浏览器自动会带上Origin这个header在HTTP请求里,当b.com接收到这个请求后,可以从header中读取这个Origin字段,判断是不是来自a.com,然后返回当前登录用户的信息。要实现这个需要做到三点: b.com允许Origin是来自a.com的请求 b.com允许来自a.com的ajax请求带上b.

  • Bo
    Bo
2 min read
python

CodeCompiler3小结

趁刚写完这个项目,把一些学到的东西写一下。 Python的socketserver是个写服务端TCP程序的神器,ThreadingTCPServer非常方便好用。 Python的selectors模块是多路复用的神器,DefaultSelector解决了好多问题。 使用selector来监听Popen的进程的stdout和stderr时,需要把stdout和stderr用fcntl模块设置成非阻塞的:fcntl.fcntl(proc.stdout, fcntl.F_SETFL, os.O_NONBLOCK) 自己启动的子进程,如果不是daemon mode,记得用wait函数或者os.waitpid(pid, os.WNOHANG)来回收。 strace用来分析程序运行时做的系统调用非常有帮助,strace -p <pid>

  • Bo
    Bo
5 min read
ssl

使用Let's Encrypt提供的免费SSL

Let’s Encrypt提供免费的SSL已经有一段时间了,现在他们网站也推荐使用CertBot了,这里以Ubuntu + Apache为例:1)Go to https://certbot.eff.org/, 服务器选择Apache,操作系统Ubuntu,页面会显示安装的instruction.2)根据提示用wget下载下来certbot,在当前目录户有一个可运行的程序 certbot-auto3)把certbot-auto拷贝到系统bin目录,以便之后调用 /usr/local/bin/certbot-auto4)指定domain生成ssl证书:$ certbot-auto --apache -d example.com -d

  • Bo
    Bo
2 min read