其实我也希望遵守 80 字符,但是 Django 官方的配置文件中就存在超过 80 个字符的行,这就没办法了,只好扩大要求。

我的 VSCode 使用的是 Pylint,所以可以通过在编辑器设置中,添加如下代码实现。
"python.linting.pylintArgs": [
"--max-line-length=100"
],将限制放宽到 100 个字符,不会太影响视觉,也能很好的符合规范。
其实我也希望遵守 80 字符,但是 Django 官方的配置文件中就存在超过 80 个字符的行,这就没办法了,只好扩大要求。

我的 VSCode 使用的是 Pylint,所以可以通过在编辑器设置中,添加如下代码实现。
"python.linting.pylintArgs": [
"--max-line-length=100"
],将限制放宽到 100 个字符,不会太影响视觉,也能很好的符合规范。
前段时间承接了 李长太老师的博客,由于我惯用 PHP 7 ,所以李老师的博客也被我放在了 PHP 7 的站点上,但是由于使用的主题是第三方仿的,在使用中出现了非常多的问题。
比如:无法正常加载主题设置项、开启 Debug 后显示非常多的报错。在这里记录一下,以备后用。
这是因为使用的函数调用的是传统的 1,2,3来表示权限,但是用户等级早已弃用,将其中的用户等级修改为权限名即可。
add_menu_page("主题设置", "主题设置", '10', 'sevenstar_theme', array(&$this,'sevenStar_Theme_Options_Form'),'dashicons-carrot','777');
// 改为
add_menu_page("主题设置", "主题设置", 'manage_options', 'sevenstar_theme', array(&$this,'sevenStar_Theme_Options_Form'),'dashicons-carrot','777');
这一块主要是渲染表单出了问题,所以这里就只需要将对应的用法改为 php7 的即可。
$this->$option['type']( $option )
// 改为
{$option['type']}( $option );这个更为简单,只需将类名对应的构造函数改为 __construct即可

更新密码这是一个非常常用的功能,我们需要为用户提供一个更改密码的方式。安全一些的方式是通过验证旧密码,再更新密码,以免由于“记住我”功能导致的密码被盗改。
一般来说,Laravel 的更改密码都是通过 RestPassword Email 来实现的,但是我更倾向用户可以在后台更改。所以,便在这里贴下相关的代码,借助下方的代码,可以实现验证用户密码,旧密码验证通过后,再进行新的密码的更新。
在 App\Providers\AppServiceProvider 中的 Boot 方法中添加如下代码。
Validator::extend('password_hash_check', function($attribute, $value, $parameters, $validator) {
return Hash::check($value , $parameters[0]) ;
});在对应的表单请求中,添加如下的调用。
use Auth;
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$password = Auth::user()->password;
return [
'old_password' => "required|password_hash_check:" . $password,
"password" => "required|min:6|max:25|confirmed",
];
}(上述代码采用的是表单请求的方式来进行验证的,使用方法参看:Validation)

加载的状态可以让用户在等待过程中,减少焦虑感。

只需要在你的代码中加入一行简单的代码,就可以让顶部状态栏出现加载图标。
UIApplication.shared.isNetworkActivityIndicatorVisible = true

SnapKit 是 Swift 下的一个 AutoLayout 布局框架,非常好用,语法也很简单,这里推荐给大家。同时也给出一些不错的阅读文章。
库地址:https://github.com/SnapKit/SnapKit
航歌网的教程:
ffmpeg -c copy output.mp4 -ss 10 -t 20 -i input.mp4从第10秒剪辑到第20秒

首先来说一下这个问题是源于什么:这个问题是由于设置的 key 无法被 识别为一个 class。毕竟大的可能一般是由于你在创建了一个 Outlet 后,又手动修改了代码。导致在运行时,StoryBoard 无法正常和 ViewController 连接,故而报错。

问题的修复方法也很简单:
打开 StoryBoard ,点击报错的元件,点击右侧边栏中的 Show Connection Inspector ,找到下方的 outlet ,删除其中的不用的 Outlet 即可。

如果你找不到对应出错的原价,可以将报错信息中的 Key 放在搜索框内搜索找到。


一切都源自于一个红包,下午,朋友发消息给我说,让我领个红包。

打开后,看到红包,我不禁笑了。想我国家普通话水平等级测试一级乙等的水平,岂会怕一个小小的语音口令?

我清了清嗓子,以纯正的“播音腔”,念了“四十是四十,十四是屎拾”,小程序冷笑了一声,返回给我了个“再接再厉,再录一次”。

我以为是自己没说好,站起身,气沉丹田,再次念了一次“四十是四十,十四是屎拾”,旁人纷纷对我传来了异样的眼光.....然而异样的眼光也并没有
我灰溜溜的走出房间,找了一处无人的地方,一次次的尝试去读“四十是四十,十四是屎拾”。然而努力是没有结果的,每次都是武功而返。

既然无法抢到红包,气急败坏的我开始想,为什么我这么纯正的普通话,还抢不到红包?
作为一个普通话一乙的北方人,如果我都领不了红包,岂不是只有一甲的播音员们才能抢到?问题肯定不在此。于是,我开始动用我身为程序员的本能,开始分析小程序背后的技术。
终于,我想到了,它之所以能够做到读对口令才能抢到红包,完全是依赖于背后的一项技术——“语音识别”
语音识别背后有非常多的技术,我这里尽量简单的给你说明什么是语音识别。

首先,用户在 App 中按下按钮,录制语音,然后 App 会将音频上传到后台的服务器,后台的服务器对声音进行特征提取,传递给下个阶段的处理器,这个时候,我们的声音信号已经由声音信号转变为处理后的特征信号。

然后处理器再通过接入 “声学模型”,来获取不同的特征信号可能代表的字词;再由“语言模型”,实现对所有可能字词的选择,得出最可能的结果。
最终,经过一系列的处理,我们说话的一段语音信号,就变成了一句话 “你今天吃饭了么?”
英语流利说的语音识别功能是非常厉害的,就如其广告中所说“会打分的人工智能英语老师”,英语流利说的依仗,便是其比别人更加优秀的”声学模型“和”语言模型“

学员在手机上录音,录音经过上传,到云端进行特征提取,再由“模特声音训练过”的“声学模型”进行处理(这里的模特声音训练过非常重要,训练材料的不同会导致模型的天差地别),声学模型处理过后,文字会传递给语言模型,组合成句。在完成两处处理后,对声音信号和文字信号进行打分,如果你的准确率比较高,你就能够获得一个Nice!
语音上传部分我打了问号,是因为流利说本身也有离线打分引擎,所以可能我们的语音没有上传到云端,在本地就直接进行处理了。
更细致的信息你可以到 「英语流利说」是如何进行比对评分的? - 林晖的回答 - 知乎去看,林晖先生解释的很细致。
由于“我要说口令”小程序本身的功能要比英语流利说更为简单一些,不需要进行特殊模型训练,可以借助一些云计算服务商提供的 API 来实现功能。这里,我们拿“阿里云 ET 智能语音交互”服务 来举例。
此处仅代表我个人针对“我要说口令”小程序的分析,不代表其官方架构。
小程序在手机上进行录音,然后将录音上传至开发者的服务器,服务器上的后台程序再将声音信号通过 API 传递给** 阿里云 ET 智能语音交互**,并调用其中的 智能语音识别接口,接口对语音信号进行处理后,返回识别的文字,比如在刚刚那个红包中,识别出来的文字是“四十是四十是四是屎拾”。开发者的服务器在受到服务器传回的文字后,和发红包的人设置的文字对比,看看两个文字是否相同。如果文字相同,就说明读对了,用户就可以拿到红包;如果文字不同,就要告诉用户“再接再励”了。

当然,实际上在对比的标准中可能不会这么简单,因为在这种情况下,声学模型和语言模型识别出来的文字可能会非常奇葩,用户能够匹配上设置的文字的可能性就会非常小,这时,程序员可能就会在这方面设置一个“冗余度”,如果内容中有80%的文字是对的上,就能拿到红包。

想到这里,我不禁悲从中来,由于“声学模型”和“语言模型”的性能,计算我读的再好,可能也无法被很完美的识别出来。特别是这种几乎是无序的内容,语言模型根本无法很好的处理,我总是抢不到红包也是正常的了。以我的运气,这辈子怕是都抢不到语音红包了,我还是去群里抢普通运气红包吧!
不过,虽然我不能抢红包,但是我可以去做一个抢红包的小程序!有了“阿里云 ET 智能语音交互”,无需自主建立语音识别的系统,轻松实现语音识别!
阿里云智能语音交互地址:https://data.aliyun.com/product/nls
写在最后:
谁认识阿里云的语音交互的运营小姐姐,帮忙问问,我这么卖力,给我个鸡腿吃好不好!

首先要安装 jpgoptim
brew install jpgoptim然后把下述代码保存为单独的脚本,放在目标文件夹下执行即可。
#!/bin/sh
# 压缩当前目录下所有*.jpg文件
# 有损压缩50%
for i in *.jpg; do jpegoptim -m50 -p "$i"; done参考阅读:https://linux.cn/article-5440-1.html
继续阅读

每个人心中都有创造的冲动。