作者 herokay 发布的文章

树莓派Nginx + PHP7.3 + mysql


在 Pi 的终端运行以下命令

sudo apt-get update
php扩展可以一个一个安装,缺哪个按如下方式安装即可
sudo apt-get install php7.3-fpm php7.3-cli php7.3-curl php7.3-gd php7.3-cgi
sudo apt-get install php7.3-mysqli
sudo service php7.3-fpm restart

sudo apt-get install nginx
sudo service nginx start

修改nginx配置

sudo nano /etc/nginx/sites-available/default

重启nginx
sudo service nginx restart

安装mysql

sudo apt install mariadb-server
mysql添加用户密码
create user pi@localhost identified by 'raspberry';
grant all privileges on *.* to pi@localhost identified by 'raspberry';
flush privileges; 

参考:http://shumeipai.nxez.com/2018/04/25/install-pi-dashboard-with-nginx-php7-on-pi.html

教育资源公共服务平台验证码识别

只做理论分析,不发实际代码。请勿用于商业用途

验证码的识别一般也就几个步骤:降噪,修正扭曲,二值化,分割,识别。
对于教育资源公共服务平台的验证码,仔细区分研究的话过程没这么复杂。

一、几大特点

1.数字全是红色

2.只有加法

3.数字始终一种字体字号

4.结果提示用白色

5.未做扭曲处理

二、识别方法

1.提取数字,按坐标及颜色提取四个数字的图像

方式:□□+□□=?

2.生成四副图像的特征码和标准结果对比

3.输出计算结果

zw.gif

Typecho插件开发采坑手记(一)

记录踩过的第一个坑addRoute
 /**
 * 增加路由
 *
 * @access public
 * @param string $name 路由名称
 * @param string $url 路由路径
 * @param string $widget 组件名称
 * @param string $action 组件动作
 * @param string $after 在某个路由后面
 * @return integer
 */
public static function addRoute($name, $url, $widget, $action = NULL, $after = NULL)
{
}

一、添加路由

在Plugin.php中找到public static function activate(),添加addRoute

public static function activate()
{
    Helper::addRoute('wx', '/wx', 'WxAssistant_Action', 'action');
    return ('微信助手已经成功激活,请进入设置Token!');
}

二、注销路由

在Plugin.php中找到public static function deactivate(),添加removeRoute

public static function deactivate()
{
    Helper::removeRoute('wx');
}

三、测试路由

浏览器输入http://www.{你的域名>}/index.php/wx
例如:http://127.0.0.1/typecho/index.php/wx

四、坑

addRoute('wx', '/wx', 'WxAssistant_Action', 'action');
第一个参数:路由名称
第二个参数:路由地址
第三个参数:组件名称
第四个参数:组件相应名称(名称千万不要叫index

VBA对话框批量添加按钮

说明:这篇不是原创内容,来自ExcelHome。时间长了也忘了具体网址了,这里摘录下来方面以后查找。

1.插入一个类模块,命名为MyCla,代码如下:

Public WithEvents Butt As MSForms.CommandButton
Private Sub Butt_Click()
    Dim x, y As Integer  
    strs = Split(Butt.Tag, "|")
    x = strs(0)
    y = strs(1)
End Sub

2.插入一个用户窗体UserForm1,代码如下:

Private Sub UserForm_Initialize()
    Dim i, j As Integer
    '画按钮,默认隐藏
    For i = 0 To MAPHEIGHT - 1 '行
        For j = 0 To MAPWIDTH - 1 '列
            Set buttons(i, j).Butt = UserForm1.Controls.Add("Forms.Commandbutton.1")
            With buttons(i, j).Butt
                .Caption = ""
                .Height = 18
                .Width = 18
                .Tag = i & "|" & j
                .PicturePosition = 12
                .Visible = False
                '.Caption = i & j
                If i = 0 Then
                    .Top = 10
                Else
                    .Top = buttons(i - 1, j).Butt.Top + 18
                End If
                If j = 0 Then
                    .Left = 150
                Else
                    .Left = buttons(i, j - 1).Butt.Left + 18
                End If
            End With
        Next
    Next
End Sub

效果图:

VBA入门基础(二)

之前提了一下用VBA做个推箱子游戏,当然这个纯属是拿来练手做教程用的,如果真的用vba来做游戏估计你让你搞到吐,Excel真心不合适做游戏!

一、准备工作(开启Excel宏支持)

说明:因需要通过Excel宏实现相应功能,所以使用前必须确保宏命令可以正常执行。本次通过Excel 2016演示宏命令启动,其他版本office基本相同,可参考执行。


1.启动Excel 2016,打开文件菜单



2.点击选项



3.点击信任中心,打开信任中心设置(T)...



4.点击宏设置,将宏设置选择为启用所有宏(不推荐:可能会运行有潜在危险的代码)(E)。(注意:此处选择为禁用所有宏,并发出通知(D)也可以,在首次启动是手动选择运行宏即可)

二、基本概念

概念解释是根据个人理解解释的,更准确的表示请自行找度娘

Workbook 工作簿

一个打开的Excel相当于一个Workbook,当前workbook可以用ThisWorkBook表示,或者Workbooks("名称")。

worksheet 工作表

每个打开的workbook西方看到的就是sheet,一个workbook至少有一个worksheet。

工作表可以用名称表示,也可以用序号,比如worksheets(“名称”)或worksheet(1)

Range 区域

可以是一个单元个,多个连续单元格或不连续单元格,如Range(“A1”),Range(“A:Z)

Cells 单元格

Cells是指单元格和Range不同的之处在于Cells是用的参数,Cells(行,列)。比如A1单元格表示为Cells(1,1)。

sub,定义一个过程,可以直接运行

比如:

sub test()
    Thisworkbook.Worksheets(1).Range("A1")="A1"
end sub

function,定义一个函数,只能被调用不能直接运行

function test1()
    ThisWorkbook.Worksheets(1).cells(1,1)="A1"
end function

三、开始使用vba。

启动Excel,打开或新建一个Excel文件,按Alt+F11,在左侧工程面板点右键,插入-模块

点击模块1,在下方属性区域可以修改名称。

四,注意事项

1.标点符号请使用英文输入法下的标点符号
2.尽可能给代码添加注释,这个好习惯在代码很长的项目中会让你深有感受
3.vba代码不区分大小写,比如str和Str是一样的,不过为了方便维护,建议统一风格
4.vba默认情况下变量不用声明即可使用,例如:

str = “heollo VBA”
msgbox(str)

如果项目比较大,你会为此付出惨痛代价,比较单词输入错误了,系统不会提示任何错误。建议开启变量要求声明功能。
点击工具,选项,勾选要求变量声明。

开启该功能后,新插入的模块会多出来一句Option Explicit,再运行声明的代码会提示出错。需要改一下:

Option Explicit

Sub test5()
Dim str As String
str = "Hello VBA!"
MsgBox (str)
End Sub

或者

Option Explicit

Sub test5()
Dim str  = "Hello VBA!"
MsgBox (str)
End Sub