树莓派 Web服务器 LNSP

采用LNSP配置(Linux + Nginx + Sqlite + PHP)

1. Nginx

sudo apt-get install nginx,安装

sudo /etc/init.d/nginx start,启动服务

修改 sudo vim /etc/nginx/sites-available/default 其中的部分内容,其他保持不变。

  1. listen 改为8080端口(为了防止和80端口冲突)
  2. index 增加 index.php
  3. 去除php段落的部分注释
  4. html 所在默认路径, root /var/www/html;
server {
    listen 8080 default_server;
    #listen [::]:8080 default_server;    
 
    root /var/www/html; 

    # Add index.php to the list if you are using PHP 
    index index.php index.html index.htm index.nginx-debian.html; 

    server_name _; 

    location / { 
            # First attempt to serve request as file, then 
            # as directory, then fall back to displaying a 404. 
            try_files $uri $uri/ =404; 
    } 

    # pass PHP scripts to FastCGI server 
    # 
    location ~ \.php$ { 
            include snippets/fastcgi-php.conf; 
    # 
    #       # With php-fpm (or other unix sockets): 
            fastcgi_pass unix:/run/php/php7.3-fpm.sock; 
    #       # With php-cgi (or other tcp sockets): 
    #       fastcgi_pass 127.0.0.1:9000; 
    } 

    # deny access to .htaccess files, if Apache's document root 
    # concurs with nginx's one 
    # 
    #location ~ /\.ht { 
    #       deny all; 
    #} 
}

sudo /etc/init.d/nginx reload,重载。

这时通过系统自带的浏览器访问127.0.0.1:8080,可以看见nginx初始页面。

2. php和sqlite

sudo apt-get install php-fpm php-sqlite3,安装php和sqlite3。

注意使用 php-fpm 和 php-sqlite3 作为默认参数,可以安装最新版本。

在html所在默认路径,新建文件index.php

<?php echo phpinfo(); ?>

期间遇到了一些问题,最初以为是ngnix和php配置的问题,最后发现是因为最初index.php文件里的语法问题,返回HTTP 500的错误。
通过修改sudo vim /etc/php/7.3/fpm/php.ini 文件中 display_errors = On,可以显示出错误所在,进行修正。

3. 反向代理

使用frp作为内网穿透,因为没有多余的域名,只能通过IP访问,所以在frpc.ini 中添加

[Web]
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port = [remote_port]

使用frp的 server_IP:[remote_port]即可以从外网访问处于内网上的树莓派。

4. nginx和php相关指令

/etc/init.d/php-fpm7.3 {start|stop|status|restart|reload|force-reload}
nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}

树莓派 操作记录

1. 更换源

运行 lsb_release -c,查看对应版本,我的为buster。

运行 sudo nano /etc/apt/sources.list,增加中科大和阿里的镜像。

deb http://mirrors.aliyun.com/raspbian/raspbian/ buster main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ buster main non-free contrib
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi

运行 sudo apt-get update,更新索引

运行 sudo apt-get upgrade,更新软件

运行 sudo apt-get dist-upgrade,

2. SSH Connection closed by foreign host

  1. 修改该文件 /etc/ssh/sshd_config
  2. ClientAliveInterval 60
    ClientAliveCountMax 3
  3. 重启SSH服务,
    /etc/init.d/ssh restart
    systemctl restart sshd

这个问题最初是在使用 sudo apt-get upgrade 时,ssh断开连接。

解决方法:使用GNU屏幕。屏幕提供了一个虚拟终端,即使您的ssh连接丢失,该终端也可以继续运行。

sudo apt-get install screen,安装屏幕

screen,启动屏幕

ctrl+a+d,暂时离开screen,

screen r,重新连接screen

3. 更改时区

date,查看当前系统时间

sudo dpkg-reconfigure tzdata,选择Asia,Shanghai

4. 安装vim

sudo apt-get install vim

配置参考 https://www.francis67.cc/archives/51

5. 使用windows 远程桌面连接

sudo apt-get install xrdp,安装xdrp服务

使用windows自带的远程桌面连接即可登录。(前提是安装了
Raspberry Pi OS (32-bit) with desktop,其中包括桌面软件)

6. frp

使用命令行下载并解压frp最新版本

wget https://github.com/fatedier/frp/releases/download/v0.34.0/frp_0.34.0_linux_amd.tar.gz
tar -zxvf frp_0.34.0_linux_amd.tar.gz
cd frp_0.34.0_linux_amd
修改客户端配置 frpc.ini,可参考https://blog.francis67.cc/archives/537

[common]为具有公网IP的VPS的配置,同时为树莓派增加了[SSH]连接

通过 frpc -c /etc/frpc.ini 启动,并使用systemctl将frp添加到服务实现开机自启动。

sudo vim /lib/systemd/system/frps.service

[Unit]
Description=frps service

[Service]
Type=simple
Restart=always
RestartSec=20s
# specific file path
ExecStart=/xxx/frpc -c /xxx/frpc.ini
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

使用 sudo systemctl start frps 启动服务,并添加下次重启自启动 sudo systemctl enable frps

树莓派 安装和连接

1 安装

从官网下载镜像 https://www.raspberrypi.org/downloads/raspberry-pi-os/,使用Win32 Disk Imager (https://sourceforge.net/projects/win32diskimager/) 向SD卡写入镜像。 插入树莓派中并且上电即启动。

在SD卡根目录新建名为SSH 无后缀文件,启用SSH。

在SD卡根目录找到 config.txt 文件,增加 enable_uart=1,启用串口。

2 连接

提供两种方法,包括在有网络和无网络的环境。默认用户名:pi,密码:raspberry。

  1. 使树莓派和电脑连入同一局域网,查到树莓派IP,通过Xshell连接树莓派。
  2. 使用USB-TTL,USB端连入电脑,TTL通过杜邦线与树莓派相应连引脚连接。
    GPIO14(TXD)-USB RXD, GPIO15(RXD)-USB TXD, Ground-GND, 5V Power-VCC(或USB端自己短接,不连接树莓派)
    通过PuTTY连接树莓派。
gpios

2020 年江苏高考作文

根据以下材料,选取角度,自拟题目,写一篇不少于800字的文章;除诗歌外,文体自选。

同声相应,同气相求。人们总是关注自己喜爱的人和事,久而久之,就会被同类信息所环绕、所塑造。智能互联网时代,这种环绕更加紧密,这种塑造更加可感。你未来的样子,也许就开始于当下一次从心所欲的浏览,一串惺惺相惜的点赞,一回情不自禁的分享,一场突如其来的感动。

frp 安装

起因

最近teamviewer又作妖,被商业,连不上。给服务器安装了frp,方面内网穿透进行远程连接

服务器端

使用一键脚本进行安装。【参考 https://github.com/MvsCode/frps-onekey

安装完毕,对于centos7,使用 firewall-cmd 命令开放相关端口。【参考 https://wangchujiang.com/linux-command/c/firewall-cmd.html 端口管理章节】

成功打开 [vps_ip] : [dashboard_port],如下图,确认服务器端安装完毕。

dashboard.png

客户端

客户端以window10为例,在 [控制面板\所有控制面板项\系统] 里开放远程桌面相关权限。

下载https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_windows_amd64.zip ,解压并将文件夹命名为 [frp],复制到C盘根目录下。

编辑 [frpc.ini] 配置文件

[common]
server_addr = [vps_ip]
server_port = [BindPort]
token = [user_defined_token]

[APP_NAME_1]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 [windows 远程桌面的服务端口]
remote_port = [user_defined_port_1]

[APP_NAME_2]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 [windows 远程桌面的服务端口]
remote_port = [user_defined_port_2]

使用 winsw 小工具 将frp客户端打包成windows服务。【参考 https://sspai.com/post/60852


下载 [WinSW.NET461.exe] 和 [sample-minimal.xml] 并分别改名为 [winsw.exe] 和 [winsw.xml],复制到 C:\frp。编辑 winsw.xml 配置文件。

<service>
  <id>frp</id>
  <name>frp</name>
  <description>frp service</description>
  <executable>frpc.exe</executable>
  <arguments>-c frpc.ini</arguments>
  <onfailure action="restart" delay="60 sec"/>
  <onfailure action="restart" delay="120 sec"/>
  <logmode>reset</logmode>
</service>

powershell运行:

.\winsw install 安装服务
.\winsw start 启动服务

此时可以在dashboard看到对应tcp连接。

使用远程桌面连接,输入 [vps_ip] : [user_defined_port],即可远程登陆相应计算机。

Trojan + wordpress 安装

自从去年十月以来,SS和SSR都不太好用了,使用新的玩具:V2ray。

但是疫情期间,尤其是在工作单位,使用V2ray仍然不能顺利翻墙,这段时间则是靠chrome插件(setupVPN,AdGuard VPN,Astart,各种谷歌服务助手等)撑了一段时间。

今天尝试安装了Trojan,但是发现原来的Wordpress博客被顶掉了。搜索后参考网络跳跃 的几篇教程,完成了Trojan和Wordpress的安装,再次成功翻墙。

但是由于Vultr 的原因,google 学术不能顺利登陆,其他的速度还是非常可以的。

常用操作

1. 查看trojan运行状态/配置:bash <(curl -sL https://raw.githubusercontent.com/hijkpw/scripts/master/trojan.sh) info

2. trojan管理命令:启动:systemctl start trojan,停止:systemctl stop trojan,重启:systemctl restart trojan

3. 更新trojan到最新版:bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"

4. 查看SSL证书:certbot certificates,更新证书:systemctl stop nginx; certbot renew; systemctl restart nginx

5. 卸载: bash <(curl -sL https://raw.githubusercontent.com/hijkpw/scripts/master/trojan.sh) uninstall

主要参考:
https://www.hijk.pw/trojan-one-click-scrip/
https://www.hijk.pw/trojan-windows-client-tutorial/
https://www.hijk.pw/build-website-with-trojan/

酒馆战棋,运气游戏

最近没有打天梯,沉迷于酒馆战棋,炉石也成为了战棋启动器。

已经是一个有惯性操作的游戏了,常规英雄的节奏都是,买怪、升本,买、买、升本买,买买,升买,然后可以顺利的在就费达到四本,算是真真的开是游戏。然而在这之前,如果几回合买不到高质量的怪被连续掉血,速八的几率都很大,但是通过五本和六本的怪补强战力,也可以吃到烂分。

虽然选怪,刷新都是可控的操作,然而每次刷出来的怪都有很大的随机性,被鲍勃制裁了,只能滚出酒馆了。另一方面战斗的时候也是随机的,我有过运气超好的时候,比如大螺丝技能秒掉对面机械阵容的两学徒,伐木机掉落卡德后配合瑞文加超展开。

但终究是个运气游戏,享受游戏带来的随机性。但是看直播的时候,会长冲13000分,被弹幕调侃分高都是靠时间打上去的,但是会长说分数的确是要靠时间打,然而也要看技术,因为你打10个小时,别人也打10个小时,你在努力的时候,别人也在努力,这个时候也就体现出技术的差距了。

炉石传说500胜金头进度

炉石传说大概在大二下学期入坑,大三刚开学战歌指挥官就被削了。
一开始没看攻略,也不看直播,纯属自己寻找卡牌游戏的乐趣(瞎玩),也没有氪金的需求,自然卡牌也很少。
后来氪了一点,加上日积月累,也有了很多卡牌之后,可以抄一些主流卡组,学学主播的玩法。
玩了这么久,遗憾没空抽出精力冲上传说,最高打到三级满星。
但是每天做任务,竟也刷出了八个金色头像,目前还差牧师的。

2017-03-08 术士

2017-05-20 猎人

2017-10-01 萨满

2018-02-11 德鲁伊

2018-09-24 法师

2018-10-04 战士

2018-10-13 盗贼

2018-11-4 骑士

2020-03-06

最后一个职业,牧师也500胜了,然而现在1000胜都出了。

Rsoft 入门

科研向的光学仿真通常使用以Lumerical和COMSOL,分别基于 时域有限差分 (Finite-difference time-domain method, FDTD) 和 有限单元法( Finite Element Method,FEM)。

对于计算周期性结构的散射场,采用 严格耦合波分析法(Rigorous Coupled Wave Analysis, RCWA) 更具优势,是一种结合了 传输矩阵法(Transfer Matrix Method, TMM) 和 平面波展开发(Plane Wave Expansion Method, PWEM) 的半解析方法。 也被称为 傅里叶模式法(Fourier Modal Method, FMM) 。

Rsoft中diffractMOD采用了RCWA算法,所以又开了一个新坑,学习Rsoft。

在Youtube上发现了 CYBERNET SYSTEMS TAIWAN 思渤科技 的相关视频,并向B站搬运了其中两个播放列表,分别是 基础教学,和 Hologram AR Design(包括diffractMOD + MOST 这两个模块的教学)。

除了商业的软件,还有一些基于MATLAB 编写的程序,用于RCWA的计算。

注意点

Rsoft总体的使用并不难,在Symbol Table Editor中输入参数,在CAD绘制图形。注意点是材料参数的选取,和仿真的设置。所用的版本为8.0.2.1。

材料参数

在Material Editor 采用了解析的方式,通过拟合Drude-Lorentzian-Debye Resonance 描述材料性质,但是十分繁琐。
可以采用从已有文本文件中导入,需要遵循Standard RSoft File Format,详见Appendix B:File Formats。

示例:这一段包含两列数据,分别表示 实部和虚部 ,自变量范围为0~1,共11个点。

/rn,a,b/nx0/ls1
 11 0 1 0 OUTPUT_REAL_IMAG
 0.00 0.000
 0.01 0.001
 0.04 0.008
 0.09 0.027
 0.16 0.064
 0.25 0.125
 0.36 0.216
 0.49 0.343
 0.64 0.512
 0.89 0.729
 1.00 1.000

仿真设置

Rsoft仿真设置在Perform Simulation中,通过Output options选择输出观察的物理量。通过prefix修改文件名,可以在同一个CAD模型下,进行不同仿真。

参考:

  1. Wikipedia/Rigorous coupled-wave analysis
  2. EMpy Electromagnetic Python
  3. zhaonat/Python Rigorous-Coupled-Wave-Analysis PACKAGE