分类 工作备忘 下的文章

要在一个微信页面上实现录音功能,要求不复杂,一个录音按钮按下开始录音,松开停止(并上传保存)。

以为jq本身对移动端的交互事件支持和优化不够 一开始被 jQuery MOBILE 插件给误导了

研究了半天的 .on("tap") 点按和 .on("taphold")长按,但是没有找到手指离开屏幕的事件,而且触发的顺序总是很奇怪

而且jq mobile 很坑的一个绑定的 css 样式,会令我原有的页面样式搞的支离破碎。

绕回原点发现根本没有那么麻烦,用jq自己的 touchstarttouchend 不需要额外的插件。

$("#btn_rec").on("touchstart mousedown",function(){
    rec_start();
});

$("#btn_rec").on("touchend mouseup",function(){
    rec_end();
});

顺带追加一个关于微信 jssdk 录音功能备忘:

文档 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#23

没有难度,照搬代码就能实现上文的业务功能。

执行顺序分别是

  • wx.startRecord() 开始录音(第一次执行会询问授权)
  • wx.stopRecord() 停止录音 或 wx.onVoiceRecordEnd() 超60秒自动停止,获得本地资源id
  • wx.uploadVoice() 上传本地资源,换领微信服务端临时素材资源id (暂存3天)
  • 从微信服务器下载素材文件到本地或自有服务器:官方文档

需要备忘的是:wx.onVoiceRecordEnd() 只有录制达到60秒的时候自动停止才会触发。它并不是主动停止录音 stopRecord 会回调的事件。

总结:

百度害人呐~~

客户要做代发微信红包的活动,无一例外地招来黑产的攻击盗刷作弊。
和黑产斗智斗勇内耗严重。

活动数据始终容易被伪造,所以思路最后还是落在增加他们的违法成本上,让其食之无味知难而退。

主要方式是针对可疑的IP建立黑名单机制,因为更换IP或者找寻特定地理位置的代理的IP成本极高,即使它们在目标地区,更换动态IP也能减缓其速度。

需求前提铺垫到此为止,以下是实现过程。

考虑到这种查库存在误差和过时失效等精确度的问题。IP归属地和 手机号码归属地进行结合判定,提高判断结果的可信程度。


- 阅读剩余部分 -

先说结论:只要文件是同个文件,hash是一致的。

Linux

md5sum filepath

#md5sum 01000.chunk 
ae2056ca156511f3a8223e2a4599b7bf  01000.chunk

PHP

md5_file(filename);

<?php
$file = "01000.chunk";
$md5 = md5_file($file);
var_dump($md5);
//string(32) "ae2056ca156511f3a8223e2a4599b7bf"
?>

Python

这个稍微复杂点,要自己实现,而且执行起来效率貌似也有点低。不清楚为何,按理说所有方法都要读取完整文件效率应该相差不大才对,可能是我方法不对。


import hashlib

fname = "01000.chunk"

def md5_file(filename):
    m = hashlib.md5()   #创建md5对象
    with open(filename,'rb') as fobj:
        while True:
            data = fobj.read(4096)
            if not data:
                break
            m.update(data)  #更新md5对象
    return m.hexdigest()    

hash = md5_file(fname)
print(hash, fname) 

面板底部状态灯闪红色,查看 iLO 系统诊断,提示raid1其中一个盘 FAILD, 阵列状态为 Degraded
按提示关机替换问题的硬盘,并使阵列进入修复模式。再度发现挂载 /dev/sdb1/的 /home/目录下部分目录权限和用户描述变为 ????。
等待阵列自动修复完成后对上述问题进行修复,重启后问题处理完毕。

以下是详细备忘:



- 阅读剩余部分 -