数学老师的福利——windows自带可手写输入公式的软件

数学老师在编写电子教案、课件、试卷的时候难免少不了要编写大量的数学公式,公式编辑器编辑虽然专业美观,但是却非常繁琐,网上虽然有少数公式识别软件,要么有次数限制,要么就是伪识别或者识别精度不高。

今天和同行们分享一款微软系统(windows10系统,其他系统是否自带就不得而知了)自带的公式输入软件——math input panel,可以直接用鼠标写入自己想要键入的公式,尤其是对于有手写设备或者用触摸屏的老师,其优势就更明显了。手写公式能够直接识别并和Word无缝接洽。唯一不足的是输入的公式是Word自带公式编辑器输入的格式,在公式美观上比mathtype输入的稍差。

打开方式:开始>Windows附件>math input pancel

有关word的几条使用技巧

自己需要,所以总结了几条:

1、弹出提示“Word在试图打开文件时遇到错误”:打开一个空word(ctrl+N),找到文件选项->信任中心->视图相关选项(受保护的视图)->把那几个勾都去掉

2、全屏快捷键:“ALT+U+V”这三个键盘按键同时按下

3、如何选中相同格式内容:在我们处理Word文件的时候,常常会因为修改了标题后,想要同下格式就会一个一个的找到并进行修改,然而这样不仅耽误时间,而且容易漏,这时你可以点击【开始】—【编辑】选择所有各式类型,即可快速的找到并进行修改

4、如何制作联合文件:在很多的政府结构文件,标题头部都会有双行合并那种效果,这种效果标题其实非常好做,只需要点击【开始】—【段落】—【中文版本】—【双行合一】即可完成

5、如何在Word中快速输入带圈字符:只需要在Word中输入数字“2611”按住alt+X键即可完成√圈字符,同理输入“2612”按住alt+X键即可完成×圈字符

6、删除word默认模板:C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates   删除Normal.dot或者Normal.dotx

记录vps安装过程中的错误解决办法

一键BBRPLUS脚本(CentOS):wget "https://github.com/cx9208/bbrplus/raw/master/ok_bbrplus_centos.sh" && chmod +x ok_bbrplus_centos.sh && ./ok_bbrplus_centos.sh
安装后,执行uname -r,显示4.14.89则切换内核成功
执行lsmod | grep bbr,显示有bbrplus则开启成功

一,rpmdb open failed

首先清除掉缓存,之后再重建就可以了:rm -f /var/lib/rpm/__db*
rpm --rebuilddb   //第二步的重建可以不做,估计yum会自动生成
之后再执行 yum update

二,Another app is currently holding the yum lock

yum在锁定状态中,已经有一个yum进程在运行了,(可以先重启试试),使用kill干掉它:
# kill -s 9 25960   (对应你的pid值)
如果kill对付不了它,那怎么办呢?可以通过强制关掉yum进程:#rm -f /var/run/yum.pid

Oneindex教程和设置

程序下载:https://github.com/donwa/oneindex/archive/master.zip

绑定域名,上传程序到网站目录,解压,直接打开绑定的域名就可以安装了,一般不用设置权限,会有提示。

点击下一步后出现如下界面,借用原程序作者的 gif 图展示:

至此程序基本安装完毕,此时访问自己的域名,就可以看到 OneDrive 目录下的所有文件。进去之后先修改密码,然后重建所有缓存。

伪静态下载(我在宝塔面板设置)https://github.com/donwa/oneindex/blob/master/.htaccess

代码如下:

RewriteEngine On

RewriteCond %{HTTPS} !=on

RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*) index.php?/$1 [L]

第2,3句是强制https的,如果不开启可以不用添加。

再次重建所有缓存就可以了。

如果要更改title,只需要找到controller目录下的IndexController.php里面的title就可以了。

具体如下图所示:

至于如何设置crontab定时刷新缓存,可以参考:

找到后台显示的命令,复制下来。然后进入cPanel面板,在高级里面找到Cron作业

选一个时间,把命令复制过来,注意要把前面的*/10 * * * * 删掉哦,点击添加新Cron作业就可以了。

文件夹加密的用法如下:

在onedrive里面的文件夹下面放入.password的文件,.password里面写入密码就可以了。

如果使用的不是个人版Onedrive,所以我们可以修改文件管理的链接。

具体更改如下图所示:把https://onedrive.live.com/改成自己企业的登录地址,比如说是https://XXX-my.sharepoint.com

文件在view/admin下的layout.php

至此大功告成。

WordPress 发布/更新文章、提交/审核评论自动清理腾讯云CDN缓存

本站使用WordPress 博客系统,腾讯云CDN+云解析 ,为追求速度,全站静态缓存。

但在发布和更新文章、提交及审核评论后,CDN缓存导致首页不能及时显示更新,在张戈博客发现了这段“自动清理腾讯云CDN缓存”的代码,马上用上——网络高手们确实多啊。

完整的 php 代码如下:

/**
* WordPress 发布/更新文章、提交/审核评论自动清理腾讯云CDN缓存(首页和当前文章) By 张戈博客
* 文章地址:https://zhangge.net/5089.html
* 转载请保留出处,谢谢合作!
**/

/* 需要填写你的密钥,访问 https://console.qcloud.com/capi 获取 SecretId 及 $secretKey */
$secretKey = '此处填写SECRET_KEY';
$secretId  = '此处填写SECRET_ID';

//更新或发布文章清理本文和首页CDN缓存
add_action('publish_post', 'Clean_By_Publish', 0);

//提交评论更新本文CDN缓存
add_action('comment_post', 'Clean_By_Comments',0);

//评论被审核更新本文CDN缓存
add_action('comment_unapproved_to_approved', 'Clean_By_Approved',0);

//发布文章更新CDN缓存函数
function Clean_By_Publish($post_ID){
    global $secretKey,$secretId;
    $url = get_permalink($post_ID);
    $action='RefreshCdnUrl';
    /*要清理的页面,默认包含首页和文章页面,需要清理其他页面请自行发挥*/
    $PRIVATE_PARAMS = array(
                    'urls.0' => home_url(),
                    'urls.1' => $url ,
                    );
    $HttpUrl="cdn.api.qcloud.com";
    /*除非有特殊说明,如MultipartUploadVodFile,其它接口都支持GET及POST*/
    $HttpMethod="POST";
    /*是否https协议,大部分接口都必须为https,只有少部分接口除外(如MultipartUploadVodFile)*/
    $isHttps =true;
    /*下面这五个参数为所有接口的 公共参数;对于某些接口没有地域概念,则不用传递Region(如DescribeDeals)*/
    $COMMON_PARAMS = array(
                    'Nonce' => rand(),
                    'Timestamp' =>time(NULL),
                    'Action' =>$action,
                    'SecretId' => $secretId,
                    );
    /***********************************************************************************/
    CreateRequest($HttpUrl,$HttpMethod,$COMMON_PARAMS,$secretKey, $PRIVATE_PARAMS, $isHttps);
}

//提交评论清理文章CDN函数
function Clean_By_Comments($comment_id) 
{
    global $secretKey,$secretId;
    $comment = get_comment($comment_id);
    $url = get_permalink($comment->comment_post_ID);
    $action='RefreshCdnUrl';
    /*参数*/
    $PRIVATE_PARAMS = array(
                    'urls.0' => $url,
                    );
    $HttpUrl="cdn.api.qcloud.com";
    /*除非有特殊说明,如MultipartUploadVodFile,其它接口都支持GET及POST*/
    $HttpMethod="POST";
    /*是否https协议,大部分接口都必须为https,只有少部分接口除外(如MultipartUploadVodFile)*/
    $isHttps =true;
    /*下面这五个参数为所有接口的 公共参数;对于某些接口没有地域概念,则不用传递Region(如DescribeDeals)*/
    $COMMON_PARAMS = array(
                    'Nonce' => rand(),
                    'Timestamp' =>time(NULL),
                    'Action' =>$action,
                    'SecretId' => $secretId,
                    );
    /***********************************************************************************/
    CreateRequest($HttpUrl,$HttpMethod,$COMMON_PARAMS,$secretKey, $PRIVATE_PARAMS, $isHttps);
}

//评论被审核清理CDN缓存函数
function Clean_By_Approved($comment)
{
    global $secretKey,$secretId;
    $url = get_permalink($comment->comment_post_ID);
    $action='RefreshCdnUrl';
    /*参数*/
    $PRIVATE_PARAMS = array(
                    'urls.0' => $url,
                    );
    $HttpUrl="cdn.api.qcloud.com";
    /*除非有特殊说明,如MultipartUploadVodFile,其它接口都支持GET及POST*/
    $HttpMethod="POST";
    /*是否https协议,大部分接口都必须为https,只有少部分接口除外(如MultipartUploadVodFile)*/
    $isHttps =true;
    /*下面这五个参数为所有接口的 公共参数;对于某些接口没有地域概念,则不用传递Region(如DescribeDeals)*/
    $COMMON_PARAMS = array(
                    'Nonce' => rand(),
                    'Timestamp' =>time(NULL),
                    'Action' =>$action,
                    'SecretId' => $secretId,
                    );
    /***********************************************************************************/
    CreateRequest($HttpUrl,$HttpMethod,$COMMON_PARAMS,$secretKey, $PRIVATE_PARAMS, $isHttps);
}

//请求主函数,无需改动
function CreateRequest($HttpUrl,$HttpMethod,$COMMON_PARAMS,$secretKey, $PRIVATE_PARAMS, $isHttps)
{
        $FullHttpUrl = $HttpUrl."/v2/index.php";
        /***************对请求参数 按参数名 做字典序升序排列,注意此排序区分大小写*************/
        $ReqParaArray = array_merge($COMMON_PARAMS, $PRIVATE_PARAMS);
        ksort($ReqParaArray);
        /**********************************生成签名原文**********************************
         * 将 请求方法, URI地址,及排序好的请求参数  按照下面格式  拼接在一起, 生成签名原文,此请求中的原文为 
         * GETcvm.api.qcloud.com/v2/index.php?Action=DescribeInstances&Nonce=345122&Region=gz
         * &SecretId=AKIDz8krbsJ5yKBZQ    ·1pn74WFkmLPx3gnPhESA&Timestamp=1408704141
         * &instanceIds.0=qcvm12345&instanceIds.1=qcvm56789
         * ****************************************************************************/
        $SigTxt = $HttpMethod.$FullHttpUrl."?";
        $isFirst = true;
        foreach ($ReqParaArray as $key => $value)
        {
                if (!$isFirst) 
                {
                        $SigTxt = $SigTxt."&";
                }
                $isFirst= false;
                /*拼接签名原文时,如果参数名称中携带_,需要替换成.*/
                if(strpos($key, '_'))
                {
                        $key = str_replace('_', '.', $key);
                }
                $SigTxt=$SigTxt.$key."=".$value;
        }
        /*********************根据签名原文字符串 $SigTxt,生成签名 Signature******************/
        $Signature = base64_encode(hash_hmac('sha1', $SigTxt, $secretKey, true));
        /***************拼接请求串,对于请求参数及签名,需要进行urlencode编码********************/
        $Req = "Signature=".urlencode($Signature);
        foreach ($ReqParaArray as $key => $value)
        {
                $Req=$Req."&".$key."=".urlencode($value);
        }
        /*********************************发送请求********************************/
        if($HttpMethod === 'GET')
        {
                if($isHttps === true)
                {
                        $Req="https://".$FullHttpUrl."?".$Req;
                }
                else
                {
                        $Req="http://".$FullHttpUrl."?".$Req;
                }
                $Rsp = file_get_contents($Req);
        }
        else
        {
                if($isHttps === true)
                {
                        $Rsp= SendPost("https://".$FullHttpUrl,$Req,$isHttps);
                }
                else
                {
                        $Rsp= SendPost("http://".$FullHttpUrl,$Req,$isHttps);
                }
        }
        //var_export(json_decode($Rsp,true));
        return json_decode($Rsp,true);
}
function SendPost($FullHttpUrl, $Req, $isHttps)
{
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $Req);
        curl_setopt($ch, CURLOPT_URL, $FullHttpUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 1 );
        if ($isHttps === true) {
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,  false);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  false);
        }
        $result = curl_exec($ch);
        return $result;

先访问 腾讯云的 API 密钥 创建或获取你在腾讯云的 API 密钥:

然后正确替换上述代码中的8,9行的 secretKey 和 secretId 值,比如:

/* 需要填写你的密钥,访问 https://console.qcloud.com/capi 获取 SecretId 及 $secretKey */
$secretKey = 'ABCD123CSDFSBSDFDSF';
$secretId  = 'CDAABBBSDFA683N23423N4';

部署后,博客发布或更新文章、评论的提交或审核都会调用 API 去清理 CDN 缓存,其中文章和评论的提交可能会比没有部署略微卡一点,评论的审核是异步提交,所以感知不到什么。

一行js代码破解百度云大文件下载限制

技术博主“凤凰山笔记”做的一个直接在下载百度云大文件、而不用启动百度云客户端的chrome插件,插件核心代码只有一行,分享一下。

大家知道,百度网盘里面的小文件,直接用浏览器和下载工具就行,但是大文件、还有文件夹就只能使用客户端了。因为百度云的PC页面会默认要求你使用客户端进行下载…

这个很烦:
1.百度云客户端下载很慢,而且故意限速
2.我使用的chrome浏览器,经常启动不了百度云客户端

看到一篇文章,里面有人通过开发人员工具(按F12),在console里面输入:Object.defineProperty(this , ‘navigator’ , {value: { platform: “” }}) ;就可以直接使用浏览器下载百度云的大文件以及文件夹了,于是我想这个直接做成chrome插件就行了,直接在百度云PC端界面注入这段js即可。

插件使用效果

一番捣腾之后,这个插件终于做出来了,实际运行效果如图:
插件使用效果1

很大的一个文件夹直接就获取了下载地址….,把这个链接复制到迅雷就可以很快的把文件下载下来了。

插件已开源:
https://github.com/cloudroc/baidu-nolimit

插件下载地址:
链接: https://pan.baidu.com/s/1eSDTUDW 密码: tehm
(crx文件安装方法请自行百度)

WordPress 500错误的原因和解决方法

WordPress前台不显示,一般的错误都是没有主题,可以直接从后台切换下主题,然后再换回去就可以了。如果后台都不显示了,并500报错解决办法,则错误可能有两点(咱就是第二个错误,花了几天时间才解决):

1、伪静态错误。如果可以直接操作数据库的话,就把数据库里面的伪静态规则的内容给删除了。具体数据库表位wp_options(wp_为数据表前缀,不一样的请自行替换,修改地点为下图红框内的),删除option_value的值(我的是自定义规则,默认的是http://域名/?p=123),删除值后便可以恢复到初始的伪静态(固定链接)http://域名/?p=123了。现在就可以尝试打开后台了。如果还不可以打开的话,请再做第二步。【可以显示的话,那么就恭喜你了,现在可以重新改会原来的伪静态而不会不显示了】

2、插件不兼容。同样,操作数据库,就把数据库里面的已启用插件全部取消了。具体数据库表位wp_options(wp_为数据表前缀,不一样的请自行替换,具体修改内容为下图红框内的),删除option_value的值。现在就可以尝试打开后台了。然后尝试启用插件,看看到底是哪个插件不兼容,然后禁用或者升级插件。