分类目录归档:技术

fd4a959f23df

如何解决 Xcode 的 “this Class is not Key Value Coding-Compliant for the Key” 报错

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

egq3d

问题的修复方法也很简单:

打开 StoryBoard ,点击报错的元件,点击右侧边栏中的 Show Connection Inspector ,找到下方的 outlet ,删除其中的不用的 Outlet 即可。

lpn0s
 

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

m0nyk

表情包

为啥你总是抢不到微信里的语音红包?

总也抢不到的红包

一切都源自于一个红包,下午,朋友发消息给我说,让我领个红包。
9k4jt
打开后,看到红包,我不禁笑了。想我国家普通话水平等级测试一级乙等的水平,岂会怕一个小小的语音口令?

我清了清嗓子,以纯正的“播音腔”,念了“四十是四十,十四是屎拾”,小程序冷笑了一声,返回给我了个“再接再厉,再录一次”。
diq1j
我以为是自己没说好,站起身,气沉丹田,再次念了一次“四十是四十,十四是屎拾”,旁人纷纷对我传来了异样的眼光…..然而异样的眼光也并没有
我灰溜溜的走出房间,找了一处无人的地方,一次次的尝试去读“四十是四十,十四是屎拾”。然而努力是没有结果的,每次都是武功而返。
n2t0l

“我要说口令”背后的秘密

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

什么是语音识别?

语音识别背后有非常多的技术,我这里尽量简单的给你说明什么是语音识别。
mmrs4
首先,用户在 App 中按下按钮,录制语音,然后 App 会将音频上传到后台的服务器,后台的服务器对声音进行特征提取,传递给下个阶段的处理器,这个时候,我们的声音信号已经由声音信号转变为处理后的特征信号
3dt7m
然后处理器再通过接入 “声学模型”,来获取不同的特征信号可能代表的字词;再由“语言模型”,实现对所有可能字词的选择,得出最可能的结果。
最终,经过一系列的处理,我们说话的一段语音信号,就变成了一句话 “你今天吃饭了么?”

英语流利说的语音识别

英语流利说的语音识别功能是非常厉害的,就如其广告中所说“会打分的人工智能英语老师”,英语流利说的依仗,便是其比别人更加优秀的”声学模型“”语言模型“
iyitj
学员在手机上录音,录音经过上传,到云端进行特征提取,再由“模特声音训练过”的“声学模型”进行处理(这里的模特声音训练过非常重要,训练材料的不同会导致模型的天差地别),声学模型处理过后,文字会传递给语言模型,组合成句。在完成两处处理后,对声音信号和文字信号进行打分,如果你的准确率比较高,你就能够获得一个Nice!

语音上传部分我打了问号,是因为流利说本身也有离线打分引擎,所以可能我们的语音没有上传到云端,在本地就直接进行处理了。

更细致的信息你可以到 「英语流利说」是如何进行比对评分的? – 林晖的回答 – 知乎去看,林晖先生解释的很细致。

“我要说口令” 如何实现读口令抢红包的功能?

由于“我要说口令”小程序本身的功能要比英语流利说更为简单一些,不需要进行特殊模型训练,可以借助一些云计算服务商提供的 API 来实现功能。这里,我们拿“阿里云 ET 智能语音交互”服务 来举例。

此处仅代表我个人针对“我要说口令”小程序的分析,不代表其官方架构。

小程序在手机上进行录音,然后将录音上传至开发者的服务器,服务器上的后台程序再将声音信号通过 API 传递给** 阿里云 ET 智能语音交互**,并调用其中的 智能语音识别接口接口对语音信号进行处理后,返回识别的文字,比如在刚刚那个红包中,识别出来的文字是“四十是四十是四是屎拾”。开发者的服务器在受到服务器传回的文字后,和发红包的人设置的文字对比,看看两个文字是否相同。如果文字相同,就说明读对了,用户就可以拿到红包;如果文字不同,就要告诉用户“再接再励”了。
8wo9r
当然,实际上在对比的标准中可能不会这么简单,因为在这种情况下,声学模型和语言模型识别出来的文字可能会非常奇葩,用户能够匹配上设置的文字的可能性就会非常小,这时,程序员可能就会在这方面设置一个“冗余度”,如果内容中有80%的文字是对的上,就能拿到红包。

这个红包,我不要了!

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


写在最后:
谁认识阿里云的语音交互的运营小姐姐,帮忙问问,我这么卖力,给我个鸡腿吃好不好!

icon tag node js 16b5599d3c86c2b8617a80711a8abc8bc30947ca399ae4151ce1f8ca33e257cc

快速清空腾讯云Cos对象存储内部文件的代码

这段代码杀伤力巨大,会删除所有文件,请谨慎使用!

快速清空 Cos 文件的代码


var COS = require('cos-nodejs-sdk-v5');
var params = {
    AppId: 'appid',
    SecretId: 'SecretId',
    SecretKey: 'SecretKey'
};
var cos = new COS(params);
var params2 = {
    Bucket: 'bucket',        /* 必须 */
    Region: 'ap-shanghai',        /* 必须 */
};
cos.getBucket(params2, function (err, data) {
    if (err) {
        console.log(err);
    } else {
        data.Contents.forEach(function (e) {
            var deleteParams = {
                Bucket: 'bucket',                        /* 必须 */
                Region: 'ap-shanghai',                        /* 必须 */
                Key: e.Key                            /* 必须 */
            };
            cos.deleteObject(deleteParams, function (err, data) {
                if (err) {
                    console.log(err);
                } else {
                    console.log(data);
                }
            });
        }, this);
    }
});

Code language: JavaScript (javascript)

 
使用方法:

  1. 首先引入 cos sdk npm i cos-nodejs-sdk-v5 --save,
  2. 修改上述代码的 4-6,12-13,23-24行处的配置,并保存为index.js
  3. 执行 node index.js 即可

 
阿里云怎么办?可以直接下载官方放出的管理工具—> Windows && macOS

globe 895580 640

LinkShare 插件用到的国际化代码

// 初始化代码
function i10n(){
    $current_locale = get_locale();
    if(!empty($current_locale)){
        $mo_file = dirname(__FILE__).'/languages/'.$current_locale.".mo";
        if (@file_exists($mo_file)&& is_readable($mo_file))
            load_textdomain('link-share',$mo_file);
    }
}
add_action('init','i10n');

上述代码为帮助插件读取 .mo 的语言文件

Text Domain: link-share
Domain Path: /languages

上述代码设置插件默认的文本域标识和默认的语言文件路径

// 返回值,不输出
__( 'New','link-share')
// 直接输出
_e( 'New','link-share')

上述代码为输出翻译后的结果的代码

wechat pay

微商是个好东西

微商是个好东西

微商,大家都不陌生,关于定义,我就不再赘述,如果还有不了解,可以看看来自维基百科的解释
说微商是个好东西,我主要基于以下两点:

  1. 微商降低了开店的成本:在过去的很多年里,我们想要售卖货物,就想要到街边租一间商铺,来摆上我们的货物,去售卖我们的商品;后来,淘宝的出现让我们的开店成本近一步降低,一部电脑就是一个店铺;再后来,微商的出现,借助于有赞等平台,我们将开店的成本再一次的降低,现在,一部手机,便可以开店。
  2. 微商合理的利用了用户的个人信用:在淘宝、天猫这样的平台上,你基本上是赚陌生人的钱,这让你很难和客户建立起良好的联系和信任。而依托于朋友圈的微商则可以通过不断的在朋友间口口相传来获取流量,赚取身边人的钱。从某种意义上来讲,实现了购物的分布化。

希望微商可以好好活下去。