- 博客(46)
- 资源 (18)
- 问答 (1)
- 收藏
- 关注
原创 p2p文件传输小工具
使用webRTC的相关技术栈可以很轻松的开发一个p2p文件传输工具,这里主要讲下试用datachannel开的一个文件传输工具client程序的使用。客户端B:可以访问公网,可以和客户端A在同一个局域网内,也可以在不同的网络环境,不同的NAT环境,更能演示P2P穿透。通过在不同的NAT环境下实测,速度能到3.3 ~ 3.5MB/s. 非常不错。客户端A,也就是发送端,需要指定文件,启动之后,等待输入对端的ID信息。注意接收端这里不带-f的参数,这里是接受发送端发送的文件。首先发送文件的客户端A运行。
2024-06-01 14:04:32
683
原创 Android http server
最近在玩Android的盒子,几十块一个,买来随便糟蹋。下面讲讲如何制作Android上的一个http server 并且可以处理post请求。思路如下1. 先找一个轻量的可以部署到Android上的库,这里不打算用native 来完成,jni那些还没玩熟,太耗时了。此外性能也不是关键点。2. 主页是个页面,上面可以放置几个按钮,并且按钮可以点击,最终在Android 后端处理2.1 了解了下ajax的,无法就是http的post请求,并且带上参数。
2024-03-12 19:26:52
1783
原创 如何给beaglebone black狗板扩容
sdimage.img是通过这个脚本最后制作出来的,具体参考genimage的帮助,自行百度。测试了一个1G的分区,可以正常,但是需要挂载,自动挂载可能还要改fstab,太麻烦了。这里调整完了,重启之后,发现分区大小已经调整了,但是df -h还是不正确,需要用resize2fs来调整下。先删除第二个分区,然后再创建,一般start sector会默认正确的,如果不正确要自己先记一下。简单点,就是用fdisk命令先删掉root分区,然后重新创建,把结尾或者size用最大。默认的分区大小已经不够了,需要调整。
2023-12-26 16:32:29
470
原创 beaglebone black狗板,交叉编译Qt5(eglfs)
备注:用系统默认配置,不要参考网上的,网上的很多都是从0开始,可能内核都版本都不对,都不带opengl es,狗板的GPU驱动,这个花费了我很长时间,最终发现默认的配置,就可以支持GPU驱动了。然后编译,出现错误大多数是因为下载不了包,用bing搜索找到放到对应的dl目录下,最终完成编译。设置这三个环境变量后,启动一个Qt的demo看看,正常应该是可以的。备注:为什么要用sdk,不直接用交叉编译工具链编译,试了,没搞成功。可能遇到的问题,虚函数定义,加上下面这个,具体也没去研究。7.解压并且设置环境变量。
2023-12-22 19:16:32
969
原创 vs code ssh 连接远程服务器错误(反复提示输入密码)
查看系统是否安装了cygwin,msys这些环境并且带了ssh。vs code 应该是从环境变量按顺序来的,所以msys或者cygwin 这些如果在PATH里面,默认就不会执行系统的ssh.exe。把msys目录下的ssh重命名下,反正也不经常用。可以通过连接的时候,提示的用户名来观察。错误的现象是:重复提示输入密码。
2023-12-14 16:37:45
808
原创 qemu + busybox + 内核实验环境搭建(2023-11)
主要是参考网上的例子,网上的一些例子可能用的busybox 老旧,编译各种问题,以及rootfs hda的方式或者ramfs的方式。备注:写个sh文件把上面的语句拷贝进去,省的来回的练输入。busybox-1.35.0 #注意网上一些老版本的busybox 可能有各种编译问题,省的麻烦就用新一点的。备注:path-to-Image-file 在arch/arm64/boot下面,Image这个文件。内核编译好,这里就能用qemu启动了,只不过没有rootfs,最终会panic。,参数的含义自行百度。
2023-11-19 20:14:24
340
原创 使用boost.mysql来操作mysql 数据库
2. boost库3. 安装本地的mysql 服务器,boost.mysql对mysql有版本要求最好8.0+,具体参考官方文档。
2023-10-26 08:46:09
1329
原创 利用C++开发一个迷你的英文单词录入和测试小程序-升级版本
我们现在有了一个本地sqlite3的迷你英文单词小测试工具,需求就跟工作当中一样是不断变更的。这里虚构两个场景,并且一步一步的完成最终升级后的小demo。场景:数据不依赖本地sqlite3,需要支持远程访问,用目前的restful api来实现。
2023-10-07 09:06:10
332
原创 利用C++开发一个迷你的英文单词录入和测试小程序-增强功能
小玩具基本完成之后,在日常工作中,记录一些单词,然后定时再复习下,还真的有那么一点点用(毕竟自己做的小玩具)。在使用过程中,遇到不认识的单词,总去翻译软件翻译,然后录入中文,这样的话,太繁琐了。可以在录入英文单词的时候,自动从网上查询单词的中文含义,便于录入,或者直接协助录入。下面我们一步一步来增强小工具的功能。
2023-09-25 15:04:06
490
原创 利用C++开发一个迷你的英文单词录入和测试小程序-源码
备注:enable_if 有更优秀的concept C++ 20替代品,C++11 里面提到的any,variant,再C++17 已经被纳入了标准库。这里完全可以抛弃rapidjson ,直接用std::vector<std::vector<std::any>>> 来通吃sql query的任何结果。首先创建一个question的类,来表现测试题目,有title,有正确的答案,有候选集,也就是4个带答案的选项。接上一篇,有了数据库的查询,再把小测试的功能给补足,小程序的结构就出来了。
2023-09-20 09:45:32
371
原创 关于协程函数调用co_await问题
在看到关于协程的helloworld的时候,发现微软的例子,编译运行总会抛出异常。根本感觉不到在协程函数里面调用co_await会suspend 协程函数,调用函数会继续的场景。其实winrt里面大量的函数都是返回异步操作,可以搞个http来替代SyndicationClient。main函数调用协程函数,如果协程函数suspend,main 函数是调用者,会继续运行。重写ProcessFeedAsync函数,使用http来获取请求。这样就验证了在协程函数里面挂起,调用函数会继续running。
2023-09-12 20:29:37
150
原创 会不会激发对modern c++的新兴趣
还停留在老掉牙的C++的认知上,看了一些C++11的新特性,会不会激发对C++的新兴趣?可变参数好像很厉害的样子,会节省很多手写代码,让编译器自动帮我们生成代码。任意函数包装器,搞个面向切面,代理,信手拈来。
2023-08-30 09:56:36
619
3
原创 std::function 与Queue配合起来
这里用模版,这样就根据函数的签名,定义各种各样的Queu就简单多了,这里只是演示,一般还需要一个线程,或者线程池来取里面的数据,利用条件变量来同步。这里只是简单的演示下,如何去适配函数对象,函数指针,以及成员函数。有的时候对于一些操作会排队,搞个队列,把请求丢到队列里面去,然后一个一个取出来,去执行。如果这些操作可以并发,就可以用多个线程去取队列里面的数据,典型的生产者消费者。了解了一点C++11,发现function 和容器结合起来,一个可重用的异步task就来了。然后取出来,一个一个执行。
2023-08-24 10:59:10
167
2
原创 C++11 简单的Timer
考虑到有的时候需要考察一个函数的耗时,而且精度是可控的,可以是毫秒,微妙,甚至是纳秒。了解了下chrono,可以用chrono很方便的写一个timer。备注:C++20 已经支持 std::cout<<duration这样的操作了。这里为了方便,直接把精度作为一个模版参数参数,这里应该可以用默认版本参数实现,这块还没搞清楚,暂时可以应付手上的工作,并且可以多次计时,最后一把搂出来。//构建milliseconds 精度。
2023-08-14 09:42:39
207
1
原创 std::async 使用
/上述的其实是同步执行的,即使async_function在一个新线程,因为临时变量future析构会等。结合各个方面,简单总结一个自我理解,future要持有另外一个线程的返回值,所以future的生命周期一定比async的异步长,不然不就出现空悬指针或者引用了吗?我相信这个例子可能稍微有点引导作用,这里用到了c++根据系统决策是启动新线程,还是同步执行,并且编码轻松实现了这里的并发。然后构造一个例子,make_good, 一种比较耗时的操作,并且这个操作之间是独立的。毫秒级的计时器来了。
2023-08-11 09:03:23
127
原创 std::set 交叉并补
这里只是简单的列出交的操作,具体参考std::set_xxxx相关函数,以及百度typedef struct taginfo{taginfo(const std::string _s, int _i, float _f):s(_s),ivalue(_i),fvalue(_f){}bool operator {return this->s }std::string s;
2017-03-20 15:24:10
988
原创 scrapy抓取一个电影网站信息
使用scrapy抓取ashvsash电影网站的电影信息。这里只简单的print信息,没有存储到数据库,稍加修改使能pipe,用PyMySQL或者mongdb库,过滤一下数据即可。备注:提取信息的时候有些网页会失败,需要细致调整。直接代码# -*- coding: utf-8 -*-import scrapy#打印函数,方便查看def my_print(a_map):
2017-02-03 11:21:43
1892
原创 Ubuntu16.04 wsgi Django1.10部署问题
默认Ubuntu 16.04安装的django版本是1.8的,从django网站上了解到django已经更新到1.10了于是卸载了老版本的sudo apt remove python-django从网站上下载了1.10 whl文件,直接本地安装。参考其他网站上部署方式,如果用默认版本的1.8一般都是能成功运行的。但是升级过后会提示ImportError: No module named
2017-01-07 20:38:00
616
原创 Windows python必备网站
使用pip,以及whl安装各种python库的时候,总会出现各种依赖问题,下载超时问题。http://www.lfd.uci.edu/~gohlke/pythonlibs/值得拥有
2017-01-03 09:12:51
899
原创 windows 7 Shell_NotifyIcon 使用的问题
在windows 7上,Visual Studio 2012,只想做一个ballon提示,从网上各种百度,效果都不会,最终微软sdk的example找到了完整的例子。使用的工程是vs2005 升级到2012的,重定义宏,不然会有些定义不了#ifdef NTDDI_VERSION#undef NTDDI_VERSION#endif#define NTDDI_VERSION
2016-10-26 16:36:42
1363
原创 51单片机 精确控制舵机pwm
/*实现特定pwm 100级别舵机控制输出,其他级别也很简单,太低了可能不行前提条件:1. 舵机控制频率是 50hz2. 舵机占空比时间是0.5 - 2.5 ms算法:0.5 - 2.5 跨度是2ms (2000 us)要实现精确控制,100级别, 2ms / 100 = 20us,定时器基准时间就是20us内部计数器pwm_cnt 取值范围是25 - 12
2016-09-05 19:13:33
10849
3
原创 51单片机输出pwm波形
#define FOSC 11059200L#define T1MS (65536-FOSC/12/1000)unsigned char count_1;unsigned char count_2;unsigned char duty_cycle_1;unsigned char duty_cycle_2;sbit pwm_out_1 = P1^0;sbit pwm_
2016-08-31 13:52:51
6277
原创 如何在服务程序中监听硬件事件
主要通过RegisterDeviceNotification函数来完成,网上一般能找到都是window程序,很少缺少服务程序的例子。1. 从网上下载一个服务程序的框架。2.svcmain 函数中DEV_BROADCAST_DEVICEINTERFACE dev_broadcast_deviceinterface = {0}; dev_broadcast_devicei
2016-07-12 13:58:11
4966
原创 如何通过api来修改网卡的MTU值
主要用到了Iphlpapi.lib,函数接口请参考msdn。PIP_ADAPTER_ADDRESSES pAddresses = NULL;char *buffer = NULL;ULONG outBufLen = 0; DWORD dwRetVal = 0; MIB_IPINTERFACE_ROW row;NETIOAPI_API ret;GetAd
2016-07-05 10:54:35
960
原创 Visual Studio Build Events 使用脚本python
动机: 使用Visual Studio 开发一些工程的时候,如果使用的库比较多,总会有手工拷贝,压缩等时候。用脚本来处理吧。一般晚上都是执行简单的命令比如copy 和简单的if else,不是很方便。很简单直接调用脚本就可以啦。这里主要需要给脚本传递一些常见的VS环境参数。然后让脚本去处理逻辑吧。import osimport sys#python script.t
2016-05-05 13:18:03
485
原创 WinCE 6.0 Ping等程序支持。
1. WinCE BSP提供了很多的exe源码可以参考学习,正好有个项目要用到ping,默认使用的情况下,控制台和ping程序都是不支持的。解决的原理很简单,自己提取代码,编译输出exe即可。1)添加相关的items支持Catalog Items View里面选择Network Utiltes(IpConfig, Ping, Route)Shell Command Proces
2016-03-23 16:10:59
1245
原创 opencv 简单的例子
#define SHOW_IMG(img) \{ \cv::imshow(#img, img);\}cv::Scalar randomColor(const cv::RNG& rng);cv::Point get_center(cv::Rect rect){return cv::Point(rect.x + rect.width / 2, rect.y + rect.w
2016-03-06 19:30:18
2013
原创 scrapy 单脚本执行 爬去jandan无聊图的gif文件
直接创建工程麻烦,直接用一个脚本文件,python spider.py那样更简单。其实很简单,spider类派生还是跟生成的一样,只需要添加from scrapy.crawler import CrawlerProcess最后生成process对象,执行start即可import scrapyfrom scrapy.spiders import CrawlSpider, R
2016-02-23 19:49:33
717
原创 MFC 简单封装word, office操作。
1.环境VS6.0,office 2003 word, excel Old(类型库文件)2.测试机器,office 2007,windows xp.使用vs6导入的类,word和excel会导致工程重定义的错误。这里用C++名字空间来解决;修改如下://msword.hnamespace word{....原来的代码}//msword.cpp...#ifde
2015-11-10 09:33:17
1855
原创 如何获取windows xp上Modem的串口号
提出问题:使用注册表HKLM\HARDWARE\DEVICEMAP可以枚举出系统的所有串口号,但是想获取那个串口是Modem的不是很方便解决方法:使用SetupAPI函数1.创建device information setHDEVINFO hDevInfo = SetupDiGetClassDevs(&usb_modem, NULL, NULL, DIGCF_PRESENT );
2015-08-14 17:20:31
1830
原创 Scrapy Shell访问jandan被拒解决方法
是用Scrapy Shell调试爬虫,测试jandan的是否发现,煎蛋网好像有简单的防爬功能。各种百度。总结一下1.start_requests(self)添加user-agent字段2.中间件方式。但是上述方式都不能在shell中奏效,调试很不方便。很简单;直接修改scrapy的user-agent默认值搞定。settings/default-setting.py246
2015-07-23 19:20:03
1626
原创 Scrapy 爬取煎蛋网妹子图版本2
import scrapyfrom scrapy.contrib.linkextractors import LinkExtractorfrom scrapy.contrib.spiders import CrawlSpider, Rulefrom myscrapys.items import imgsPipelinefrom scrapy.http import Request
2015-03-29 23:23:30
2365
原创 python scrapy 爬取妹子图的照片
主要描述在windows 上如何用scrapy抓取煎蛋网妹子图所有的图片下载。软件准备:winpython,啥都不说了,ipython很好用。安装scrapy,进入winpython 执行scrapt\env.bat。这样就可以直接pip install scrapy;注意执行的log,好像还要安装一个service_identity,具体什么功能也不清楚。以后慢慢研究。
2015-03-15 09:18:50
3255
原创 Win32 获取进程占用的内存信息
主要用到的函数GetWindowThreadProceddId(m_hWnd, &dwProcessID);HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, dwProcessID);PROCESS_MEMORY_CONTERS process_mem_counters = {0};process_mem_counter
2014-12-31 13:14:23
3218
原创 matlab 二值化;MFC 显示灰度图片方法。
1.matlab计算图片二值化后像素点数目直接求的直方图即可。clear;close all;img = imread('test.bmp');/*测试过程中发现cvSaveImage保存成jpg二值化后的文件,好像不彻底,估计压缩算法影响的。使用bmp后,查看就0,255.*/hist = imhist(img);[row, col] = find(hist>
2014-12-20 21:06:25
1549
原创 Opencv ImlImage 在MFC中显示
原理:ImlImage转成BitMAPINFO,然后调用StretchDIBits就可以了。1.OnInitDialog()m_img = cvLoadImage("test.jpg"); ASSERT(m_img != NULL);memset(&m_bitmapinfoheader, 0, sizeof(m_bitmapinfoheader));m_bitmapinfo
2014-12-19 11:41:17
752
原创 boost hash 与普通查询比较
比较hash查询与std::find算法的差异#include #include #include #include int main(){boost::unordered_set> lv;std::vector vec;boost::posix_time::ptime time_now,time_end;boost::posix_time:
2014-01-28 11:57:55
2000
原创 WinCE usb虚拟串口
1.Usb驱动程序的加载识别到USB设备插入到电脑上(姑且这么认为吧)fRet = LoadDeviceDrivers(pDev, &fLoaded);if(fRet && !fLoaded){//失败了,提示用户对话框,}1.1LoadDeviceDriversLoadUSBClient(pDev, pfLoaded, NULL);if(!*pfLoa
2013-12-20 17:00:37
1819
windows 系统p2p 文件传输小工具
2024-06-04
Android NDK Beginner‘s Guide
2024-03-15
Reactive Programming with RxJava Creating Asynchronous, Event-B
2024-03-11
Reactive Streams in Java- Concurrency with RxJava, Reactor, and
2024-03-11
C++20 Rainer Grimm
2023-09-27
TCP转虚拟串口驱动以及转发程序
2019-07-02
VirtualSerial2um.zip
2019-07-02
360风格的自绘按钮
2012-11-13
MySQLdb unicode问题插入
2015-08-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人