Vast-stars' Blog

机器学习/算法/


  • 首页

  • 归档

  • 标签

阿里大于短信平台 Python3 初体验

发表于 2016-09-16 | 阅读次数

拿到SKD发现是Py2的代码,Github能查到一堆3的,。

写好测试代码之后,运行。测试代码向A、B2个号码发送长短信。

问题来了,A正常,B号却收到了5条一模一样的短信。上管理界面查报表API alibaba.aliqin.fc.sms.num.send 成功15次 失败0次 日期都是今天。

且今天之前完全没测试过。通过短信发送状态查询:

手机号码 发送时间 接收时间 发送状态
A 2016-09-16 06:07:02 2016-09-16 06:07:02 发送失败
A 2016-09-16 06:07:02 2016-09-16 06:07:02 发送失败
A 2016-09-16 06:07:00 2016-09-16 06:07:05 发送失败
A 2016-09-16 06:06:59 2016-09-16 06:07:05 发送失败
A 2016-09-16 06:07:03 2016-09-16 06:07:03 发送失败
A 2016-09-16 06:07:01 2016-09-16 06:07:08 发送成功
A 2016-09-16 06:06:57 2016-09-16 06:07:02 发送成功
A 2016-09-16 06:07:01 2016-09-16 06:07:05 发送失败
A 2016-09-16 06:06:40 2016-09-16 06:06:51 发送成功
A 2016-09-16 06:06:59 2016-09-16 06:07:05 发送失败
A 2016-09-16 06:07:02 2016-09-16 06:07:02 发送失败
A 2016-09-16 06:23:11 2016-09-16 08:31:49 发送失败
A 2016-09-16 06:07:02 2016-09-16 06:07:02 发送失败
A 2016-09-16 06:07:01 2016-09-16 06:07:09 发送成功
A 2016-09-16 06:07:01 2016-09-16 06:07:06 发送成功

而且倒数第四个我也不知道为什么会延时这么久,发送时间也是诡异。。。

怀疑可能是API接口不稳定的原因,半小时之后再次调试,A号仍正常,B号却没收到。打开管理界面查询,多了一条结果:

手机号码 发送时间 接收时间 发送状态
A 2016-09-16 06:49:41 2016-09-16 06:49:45 发送失败

这是第二次API响应JSON:{‘alibaba_aliqin_fc_sms_num_send_response’: {‘request_id’: ‘11ifpz15bd471’, ‘result’: {‘success’: True, ‘model’: ‘103006048221^0’}}}

后变也再没收到相关信息。

下午去问客服,客服表示不清楚。已经反馈给技术人员了。。

顺便吐槽一下阿里的前端

https://api.alidayu.com/support/create_or_edit_problem.htm?docId=26039&docType=2

img

没有选择框没法提交问题。。也是醉了

参考: https://github.com/yedf/aliyun-[Python](http://lib.csdn.net/base/11)

https://github.com/raptorz/alidayu

VB.NET中使用委托(Delegate)来注册回调(callback)函数

发表于 2016-07-12 | 阅读次数

前些日子捣鼓了下VFW,里面注册回调(callback)函数是通过sendmessage函数实现的,也就是把回调函数的指针作为参数发送给hWnd即可。折腾了不少时间,下面是代码

这是C/C++代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
typedef struct videohdr_tag {
LPBYTE lpData;
DWORD dwBufferLength;
DWORD dwBytesUsed;
DWORD dwTimeCaptured;
DWORD dwUser;
DWORD dwFlags;
DWORD dwReserved[4];
} VIDEOHDR, *PVIDEOHDR, *LPVIDEOHDR;
#define capSetCallbackOnVideoStream(handle, callback)
(safeSendMessage (handle, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, callback))
capSetCallbackOnVideoStream(mhwnd, VideoCallback);
LRESULT CALLBACK VDCaptureDriverVFW::VideoCallback(HWND hwnd, LPVIDEOHDR lpVHdr) {
VDCaptureDriverVFW *pThis = (VDCaptureDriverVFW *)capGetUserData(hwnd);
if (pThis->mpCB && !pThis->mbBlockVideoFrames) {
DO SOMETHING……
}
return 0;
}12345678910111213141516171819202122231234567891011121314151617181920212223

下面是VB.NET的代码,因为.NET里不允许使用指针,就必须使用委托(Delegate)来实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Structure LPVIDEOHDR
Public lpData As IntPtr 'point to the buffer
Public dwBufferLength As UInt32 'length of buffer
Public dwBytesUsed As UInt32 'buffer's Byte
Public dwTimeCaptured As UInt32 'time:ms
Public dwUser As UInt64 '
Public dwFlags As UInt32 '
Public dwReserved() As UInt64 'Reserved for driver.
Public Sub New(ByVal Size As UShort) '
dwReserved = New UInt64(Size) {}
End Sub
End Structure
Public lpVHdr As LPVIDEOHDR = New LPVIDEOHDR(4)
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (
ByVal hWnd As Integer,
ByVal wMsg As Integer,
ByVal wParam As Integer,
ByVal IParam As callback)
Public Delegate Function callback(ByVal whnd As IntPtr, ByVal lpVhdr As IntPtr)
Dim a1 As callback = Function(ByVal whnd As IntPtr, ByVal lpVhdr As IntPtr)
If count < 30 Then
Clipboard.GetImage.Save("D:\" & count & ".bmp")
count = count + 1
End If
Return True
End Function
Public Function fuckcallback(ByVal whnd As IntPtr, ByVal FramePoint As IntPtr) As Boolean
DO SOMETHING
Return True
End Function
Dim a2 As callback = AddressOf fuckcallback
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
'SendMessage(hwnd, Cam.WM_CAP_SET_CALLBACK_FRAME, 0, a2)
'SendMessage(hwnd, Cam.WM_CAP_SET_CALLBACK_FRAME, 0, a1)
'SendMessage(hwnd, Cam.WM_CAP_SET_CALLBACK_FRAME, 0, AddressOf fuckcallback)
'上面3个都行
End Sub1234567891011121314151617181920212223242526272829303132333435363738394041424344454612345678910111213141516171819202122232425262728293031323334353637383940414243444546

上面其实是有问题的,排查了半天,才发现是声明委托的时候,漏了函数返回值
Public Delegate Function callback(ByVal whnd As IntPtr, ByVal lpVhdr As IntPtr) 改成
Public Delegate Function callback(ByVal whnd As IntPtr, ByVal lpVhdr As IntPtr) as integer 即可 。

PS:以后可能不会再用VB.NET了,这篇文章算是个End.

VB.NET中,取出被选中(checked)的按钮(radiobutton)

发表于 2016-06-22 | 阅读次数

这类问题,遇见过不少次,不仅限于radiobutton,还可能有其他MFC组件的判断。
原先我的做法是一大串if……elseif ……elseif……elseif……end if 不但麻烦,而且在添加新radiobutton(或者删除、升级)后,容易忘记添加分支语句,导致bug。
现以radiobutton为例,给出个比较简洁的方法。

阅读全文 »

VBA-EXCEL

发表于 2016-05-07 | 阅读次数

初始设定

1
2
3
4
5
Dim oExcel, oWb, oSheet
Set oExcel = CreateObject("Excel.Application")
Set oWb = GetObject(, "Excel.Application") 使用已打开的文件
'oWb= oExcel.Workbooks.Open("E:\其他\新装电话表.xls") 使用本地文件
Set oSheet = oWb.Sheets("Sheet1")
阅读全文 »
123
Vast-Stars

Vast-Stars

或许是不知梦的缘故,游离之人追逐幻影 https://github.com/vast-stars vast2stars@gmail.com

24 日志
26 标签
© 2018 Vast-Stars
由 Hexo 强力驱动
主题 - NexT.Mist