![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javascript/vbs/lua/python
文章平均质量分 72
章志强
资深软件工程师,C/C++全栈技术专家,证券金融科技行业专家,mdb、zqdb、mytrader作者
展开
-
Python调用C++函数(SWIG,VS2013使用numpy.i完成Numpy与C++数组转换)
最近尝试使用Python调用C++函数,发现网上都是一些简单的例子,涉及到Python Numpy数组与C++数组转换的例子比较少,所以花费了一些时间,搞懂了SWIG使用numpy.i接口文件完成Numpy与C++数组转换。相比于其它几种方式,使用SWIG接口文件编写比较简单,编译也很方便,主要是不太好调试,因为是编译成.dll或者.so才能在Python中调用。1.安装SWIGwindows:官网下载,解压到D盘,将swig.exe所在文件夹添加到系统路径,如:D:\swigwin-3.0.12\...转载 2020-06-24 12:29:29 · 703 阅读 · 0 评论 -
XIndicator-使用XIndicatorApi快速集成XIndicator系统
XIndicatorApiXIndicatorApi分为XPlatfromApi和XIndicatorApiXPlatformApi提供了加载启动XIndicator系统的Api以及和XIndicator系统交互的Api接口XIndicatorApi提供了访问行情指标/策略数据和交易接口的Api以及用户自定义行情交易Api接口等快速集成XIndicatorApi可以参考下面几步:首先,定义XPla...原创 2018-02-11 16:13:04 · 558 阅读 · 0 评论 -
XIndicator-使用Lua编写指标和策略交易系统
LuaLua是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展...原创 2018-02-11 16:16:43 · 1085 阅读 · 0 评论 -
gRPC vs Thrift
简单分布式架构基本问题 传输什么样的数据,用哪种协议哪种方式数据交换的效率好服务端如何处理请求需要扩展服务端时当你的服务超过最简单结构时,你想要 灵活性可扩展低延迟当然,你更想要简单应该用这些协议吗SOAP XML, XML还是XMLCORBA 美好的想法,糟糕的实现过渡设计和臃肿DCOM, COM+主要用于windows平台HTTP/TCP/Socket/Whatever 久经考验的但是缺少协议...转载 2018-02-11 15:39:58 · 2618 阅读 · 0 评论 -
swig入门
最近发现有些漏洞不能扫描,原来是没有需要的库,这些库原来是用SWIG生成的一些接口程序,于是顺便小研究了下这个SWIG是怎么回事。下面是摘于SWIG中文网:http://swig.minidx.com/SWIG是个帮助使用C或者C++编写的软件能与其它各种高级编程语言进行嵌入联接的开发工具。SWIG能应用于各种不同类型的语言包括常用脚本编译语言例如Perl, PHP, Python转载 2017-12-18 19:38:26 · 5136 阅读 · 0 评论 -
python如何调用C, 如何注册成C的回调函数(python后台程序常用方法)
其实是python后台程序常用方法:C开发完成底层的功能,python直接把C当做python模块进行调用。需要做两个工作:python能调用C语言的函数;python通过调用C函数,并注册python的回调函数,C代码通过python回调函数告诉Python当前实时进度和状态;1,python如何调用C语言主转载 2017-12-06 10:23:47 · 3379 阅读 · 1 评论 -
C++对Lua中table进行读取、修改和创建
C++代码:[cpp] view plain copy// LuaAndC.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using namespace std; extern "C"转载 2017-11-13 12:56:35 · 2001 阅读 · 0 评论 -
Lua: 在C++中将table如何传入到lua中
[cpp] view plain copy例一是参考别人的: [cpp] view plain copy//定义函数(返回table) int func_return_table(lua_State *L) { lua_newtable(L);//创建一个表格,放在栈顶 lua转载 2017-11-13 12:42:52 · 1776 阅读 · 0 评论 -
python通过get方式,post方式发送http请求和接收http响应-urllib urllib2
import urllib模块,urllib2模块, httplib模块 测试用CGI,名字为test.py,放在apache的cgi-bin目录下:#!/usr/bin/Pythonimport cgidef main(): print "Content-type: text/html\n" form = cgi.FieldStorage()转载 2017-11-02 09:43:59 · 487 阅读 · 0 评论 -
用LuaBridge为Lua绑定C/C++对象
最近为了总结Lua绑定C/C++对象的各种方法、第三方库和原理,学习了LuaBridge库为Lua绑定C/C++对象,下面是学习笔记,实质是对该库的 Reference Manual 基本上翻译了一遍,学习过程中测试代码,放在 我的github 上。LuaBridge的主要特点 源码只有头文件,没有.cpp文件,没有MakeFile,使用时只需一个#include即可。转载 2017-11-09 16:30:26 · 632 阅读 · 0 评论 -
C++和Lua交互教程(基于LuaBridge)
最近公司需要做向日葵远程控制软件跨平台项目,为了代码的可复用性,需嵌入跨平台脚本语言,我们选择了Lua,理由是Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,今天就跟大家分享下c++与Lua交互的一些问题。为了方便c++和lua的交互,我引进了LuaBridge。因为它源码简单易用,只有头文件,没转载 2017-10-31 17:18:46 · 1591 阅读 · 0 评论 -
C/C++读取Lua中的变量及调用Lua函数
config.luaprint('--In Lua--')local a = -10print('--math.abs(a)--',math.abs(a))width = 1080height = 720name = "iphone"numStr = 12345function test1() print('--function test1--')endfu转载 2017-11-09 09:15:45 · 1009 阅读 · 0 评论 -
使用 AngularJS 和 Electron 构建桌面应用
使用 AngularJS 和 Electron 构建桌面应用 GitHub 的 Electron 框架(以前叫做 Atom Shell)允许你使用 HTML, CSS 和JavaScript 编写跨平台的桌面应用。它是 io.js 运行时的衍生,专注于桌面应用而不是 web 服务端。Electron 丰富的原生 API 使我们能够在页面中直接使用转载 2017-06-11 19:53:32 · 1293 阅读 · 0 评论 -
RESTful API设计技巧经验总结
简单说一下代码重用记得在Ken Rogers的Medium博客里曾经见过这么一句话(原文出自海明威):我们都是手艺学徒,没有人会成为大师。在我写这篇文章的时候,我不禁笑了起来,因为从这件事情的背后看到了一个伟大的类比,那就是从其他人那里引用了海明威的话。也就是说,我不需要为了得到类似的功能和结果而花费精力自己去创建一个与众不同的东西,上面提到的海明威的话正是代码重用在文转载 2017-06-07 12:39:44 · 697 阅读 · 0 评论 -
前端模块化发展简史
前端发展日新月异,短短不过 10 年已经从原始走向现代,甚至引领潮流。网站逐渐变成了互联网应用程序,代码量飞速增长,为了支撑这种需求和变化,同时兼顾代码质量、降低开发成本,接入模块化势在必行。伴随这一变化的是相对应的构建工具的快速成长,或是为了优化、或是为了转义,都离不开这类工具。所谓温故而知新,本篇回顾总结下前端模块化的发展历程及辅助工具。在回顾中可以更清晰的看到当前我们用的方案所处的位转载 2017-06-07 12:36:56 · 3090 阅读 · 0 评论 -
Python使用CFFI调用C动态库
初始化from cffi import FFIffi = FFI()加载C动态库lib_IOTCAPIs = ffi.dlopen("./tutk_lib/libIOTCAPIs.so")这种方法加载动态库若是多个库之间有交错调用,则会报错,若多个库之间存在交错调用,可使用下面的方法lib_IOTCAPIs = ffi.dlopen("./tutk_lib/libIOTCAPIs.so", fl...转载 2018-02-22 16:48:13 · 2300 阅读 · 0 评论 -
利用Boost.Python实现Python C/C++混合编程
学习中如果碰到问题,参考官网例子:D:\boost_1_61_0\libs\python\test参考:Boost.Python 中英文文档。利用Boost.Python实现Python C/C++混合编程导出函数#include<string>#include<boost/python.hpp>using namespace std;using namespace...转载 2018-02-22 17:04:28 · 452 阅读 · 0 评论 -
利用Boost.Python实现Python C/C++混合编程
关于python与C++混合编程,事实上有两个部分extending 所谓python 程序中调用c/c++代码, 其实是先处理c++代码, 预先生成的动态链接库, 如example.so, 而在python代码中import example;即可使用c/c++的函数 .embedding c++代码中调用 python 代码.两者都可以用 python c 转换api,解决,具体可以去py...转载 2019-05-06 16:44:07 · 886 阅读 · 1 评论 -
Python和C/C++互相调用(embedding extending)
你将学到什么如何在Python中调用C++代码 如何在C++中调用Python代码在Python中调用C++代码首先定义一个动物类(include/animal.h)#pragma once#include <string>class Animal{public: Animal(std::string name); virtual ~Animal(...转载 2019-05-02 11:07:19 · 438 阅读 · 1 评论 -
scratch3 Getting Started
[Smokey needs Your help to keep this documentation up to date!]The staging version of the Scratch GUI, a.k.a. the to-be-released Scratch 3.0 Editor, can be viewed at https://llk.github.io/scratch-gu...转载 2018-12-18 11:06:04 · 2069 阅读 · 0 评论 -
npm link 命令的作用浅析
npm link命令可以将一个任意位置的npm包链接到全局执行环境,从而在任意位置使用命令行都可以直接运行该npm包。那么,当运行npm link时发生了什么?下面就以Windows平台为例来展示它的处理过程。简要地讲,这个命令主要做了两件事:为npm包目录创建软链接,将其链到{prefix}/lib/node_modules/<package>为可执行文件(bin)...转载 2018-12-15 16:24:46 · 3599 阅读 · 0 评论 -
Scratch Blocks本地环境搭建
Scratch-Blockly配置过程由于Blockly案例库开发项目需添加Scratch Blocks的相关内容,故结合Github上开源项目,进行Scratch Blocks相关环境的配置。如果你想对Scratch Blocks有进一步的了解,或者想在自己的电脑或服务器上搭建Scratch Blocks的环境,供教学和研究使用,您可以参照下面的内容,进行Scratch Blocks相关环境...转载 2018-12-15 16:15:10 · 1431 阅读 · 0 评论 -
Scratch 3.0 Extensions Specification
Annotated examplevar SomeBlocks = function (runtimeProxy) { /** * A proxy to communicate with the Scratch 3.0 runtime across a worker boundary. * @type {Runtime} */ this.runt...转载 2018-12-15 12:47:04 · 1252 阅读 · 0 评论 -
ERROR in [copy-webpack-plugin] unable to locate解决
ERROR in [copy-webpack-plugin] unable to locate 'node_modules/scratch-svg-renderer/dist/web' at '/mnt/d/work/mylecon/scratch/scratch-vm/node_modules/scratch-svg-renderer/dist/web如果你遇到上面的错误,可以尝试手动建立d...原创 2018-12-14 09:56:21 · 17377 阅读 · 0 评论 -
Protobuf使用手册
Protobuf使用手册第1章 定义.proto 文件首先我们需要编写一个 proto 文件,定义我们程序中需要处理的结构化数据,在 protobuf 的术语中,结构化数据被称为 Message。proto 文件非常类似 java 或者 C 语言的数据定义,可以使用C或C++风格的注释。下面是一个proto文件的例子。 package tutorial; op...转载 2018-10-10 17:07:51 · 1504 阅读 · 0 评论 -
lua ffi.string
缘起使用ffi给lua包一个rsa算法, 刚刚学习ffi,连文档都没仔细看过,当返回加密结果时,如果直接返回CDATA,则解密没有问题,如果转为lua string(使用ffi.string) ,则后续无法解密调试直接在lua中调试基本无法凑效重新编译openssl的libcrypt库,加入调试信息,先是祭出gdb,调的晕乎乎的;然后,则可以地方修改C代码,打印调试信息发现,使用ffi.strin...转载 2018-06-07 09:11:02 · 4346 阅读 · 1 评论 -
Lua —— Coroutines
Q:什么是”Coroutine”?A:有些类似于多线程,但他们之间也有区别, 1、从概念上来看,多线程是同一时间所有的线程同时都在运行。而一组”Coroutines”在同一时间只有一个”Coroutine”在运行。 2、从应用场景来看,多线程一般起到分流的作用,每个线程专注做自己的事情,线程之间合作的关系较弱。而一组”Coroutines”之间合作的关系就比较强,他们都是在做同一件事情,他们分摊了...转载 2018-05-17 13:00:47 · 319 阅读 · 0 评论 -
gRPC基础:C++
原文地址:http://doc.oschina.net/grpc?t=57966gRPC基础:C++本教程提供了C++程序员如何使用gRPC的指南。通过学习教程中例子,你可以学会如何:在一个 .proto 文件内定义服务.用 protocol buffer 编译器生成服务器和客户端代码.使用 gRPC 的 C++ API 为你的服务实现一个简单的客户端和服务器.假设你已经阅读了概览并且熟悉prot...转载 2018-03-27 12:21:48 · 12302 阅读 · 2 评论 -
SSLError: [SSL: SSLV3_ALERT_BAD_RECORD_MAC] sslv3 alert bad record mac (_ssl.c:1864)
主要问题:SSLError: [SSL: SSLV3_ALERT_BAD_RECORD_MAC] sslv3 alert bad record mac (_ssl.c:1864)解决方案:import requests.packages.urllib3.util.ssl_requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'ALL'参考链接...原创 2018-03-31 21:48:51 · 9098 阅读 · 1 评论 -
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:748) Pytorch下载VGG时的错误
主要问题:ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:748)解决方案 pip install incremental参考链接 https://github.com/pypa/pip/issues/4205转载 2018-03-31 21:39:37 · 7245 阅读 · 0 评论 -
c++使用grpc生成helloworld服务器程序
c++生成helloworld服务器程序1.定义proto(详细见:grpc\examples\protos\helloworld.proto)syntax = "proto3";option java_multiple_files = true;option java_package = "io.grpc.examples.helloworld";option java_outer_cl...转载 2018-03-25 14:12:20 · 9930 阅读 · 0 评论 -
C/C++ Windwos VS2015 gRPC protobuf 编译
gRPC是什么就不介绍了,下面直接进入如何正确编译gRPC一、准备和获取源码:Builds gRPC C and C++ with boringssl.Install Visual Studio 2015 or 2017 (Visual C++ compiler will be used).Install Git.Install CMake.Install Active State Perl (c...原创 2018-03-25 13:30:07 · 1883 阅读 · 0 评论 -
[Lua基础]包package——模块开发
包是一种组织代码的方式。很多语言专门提供了某种机制组织全局变量的命名,比如Modula的modules,Java和Perl的packages,C++的namespaces。每一种机制对在package中声明的元素的可见性以及其他一些细节的使用都有不同的规则。但是他们都提供了一种避免不同库中命名冲突的问题的机制。每一个程序库创建自己的命名空间,在这个命名空间中定义的名字和其他命名空间中定义的名字互不...转载 2018-03-03 20:41:47 · 1086 阅读 · 0 评论 -
C++调用Python浅析
C++调用Python浅析 环境VS2005Python2.5.4 Windows XP SP3 简述一般开发过游戏的都知道Lua和C++可以很好的结合在一起,取长补短,把Lua脚本当成类似动态链接库来使用,很好的利用了脚本开发的灵活性。而作为一门流行的通用型脚本语言Python,也是可以做到的。在一个C++应用程序中,我们可以用一组插件来实现一些具有统一接口的转载 2017-03-24 16:33:59 · 619 阅读 · 0 评论 -
HTTPS 与 HTTP2 协议分析
HTTPS协议原理分析HTTPS协议需要解决的问题HTTPS作为安全协议而诞生,那么就不得不面对以下两大安全问题:身份验证确保通信双方身份的真实性。直白一些,A希望与B通信,A如何确认B的身份不是由C伪造的。(由C伪造B的身份与A通信,称为中间人攻击)通信加密通信的机密性、完整性依赖于算法与密钥,通信双方是如何选择算法与密钥的。能同时解决转载 2017-03-22 12:39:36 · 7031 阅读 · 0 评论 -
使用 CEFPython 打造自己的浏览器视图
1. CEFPython是什么东西CEFPython 是 CEF 的 Python 绑定实现。CEF https://bitbucket.org/chromiumembedded/cef ,是 Chromium 的一套嵌入式实现。简单来说, CEF 实现了浏览器外在的简单功能,可以直接渲染一个全功能的页面。它包含了页面布局渲染的引擎,也包含了执行 JS 的引擎(V8)。但是转载 2016-12-21 14:23:40 · 18768 阅读 · 4 评论 -
Create Blocks ~ Extending Ardublockly
(This is a stub of the documentation for the functionality included to easily extend Ardublockly to support new blocks)(Introductory paragraph should go here)(Top view description of the exten转载 2016-12-21 12:55:41 · 652 阅读 · 0 评论 -
Adding a New Language to Ardublockly
Adding a New Language to Ardublockly(Work in Progress: This page should describe how to add new languages to Ardublockly)While Blockly has been translated to a large number of languages using转载 2016-12-21 12:58:25 · 647 阅读 · 0 评论 -
Adding a New Arduino Board to Ardublockly
Adding a New Arduino Board to ArdublocklyAs long as the board you would like to add is supported by the Arduino IDE, adding support within Ardublockly is a simple task that only required two files转载 2016-12-21 12:57:57 · 802 阅读 · 0 评论 -
Ardublockly Git Settings
Git SettingsThis page lists the general git settings used to maintain this repository. Not everything described here needs to be configured for local development, but it might be useful to at leas转载 2016-12-21 12:54:55 · 598 阅读 · 0 评论