- 博客(255)
- 资源 (63)
- 问答 (1)
- 收藏
- 关注
原创 WebRTC -- 流媒体基础概念
流媒体协议 名称 推出机构 传输协议 客户端 RTSP+RTP IETF TCP+UDP VLC, WMP RTMP Adobe Inc. TCP Flash RTMFP Adobe Inc. UDP Flash MMS Microsoft Inc. TCP/UDP WMP HTTP...
2019-10-24 11:08:32 93002
原创 Lua语法快速回忆
一、基础Lua区分大小写注释格式-- 行注释--[[exp--]]局部变量local, 其他的为全局变量,变量默认值为nil只有false和nil为假Lua中字符串是不可变的常量“ … ”是字符串连接操作符Lua没有整形,都是实数在字符串前放置操作符"#"来获取字符串长度,某些情况下对table也适用关系操作符: < > == ~= >= <...
2019-09-04 09:56:29 423
原创 Windows注册自定义URL协议
原理:在注册表HKEY_CLASSES_ROOT项下加入对应的子项,内容如下:Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\test]@="URL:test protocol""URL Protocol"=""[HKEY_CLASSES_ROOT\test\DefaultIcon]@="mytest.exe"[H...
2019-08-29 11:03:14 3515
原创 Windows资源管理器图标覆盖优先级设定
我们在安装了TortoiseSVN或TortoiseGit后,会自动在资源管理器的文件夹和文件图标上显示覆盖图标(Icon Overlay),这样会比较方便的查看文件的状态。但有时候我们安装的其他软件,如Dropbox等,也会在资源管理器中显示覆盖图标,多个软件都显示时,会由于优先级问题导致覆盖图标不显示等问题。本文主要讲述如何调整软件覆盖图标的优先级。打开注册表:HKEY_LOCAL_MA...
2019-08-23 11:57:36 1553
原创 Windows批处理请求UAC管理员权限
@echo offcd /d "%~dp0"cacls.exe "%SystemDrive%\System Volume Information" >nul 2>nulif %errorlevel%==0 goto Adminif exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"echo Set Reque...
2019-08-05 17:35:36 1715
原创 CEF的那点事 -- CEF源码编译
本文以CEF 3626版本为例,其他版本的编译可以用其作为参考。另,本文只是简略的记录了CEF编译过程的大致步骤,并没有事无巨细的记录可能遇到的任何问题,毕竟编译CEF是一个繁琐的事情,需要一定的独立解决问题的能力。假设:我们已经将automate-git.py下载到E:\sourcecode\cef\automate-git.py我们已经将depot_tools下载到d:\souc...
2019-07-13 21:45:55 1412
原创 Fiddler抓包指南:结合Proxifier工具
本文介绍如何使用Fiddler抓取HTTP和HTTPS协议的包,同时还介绍了如何结合Proxifier工具来处理Filddler无法抓取到包的情况。一、HTTP基本抓包Fiddler官网下载安装:https://www.telerik.com/fiddler对浏览器的抓包,就不再赘述,打开这个软件就一目了然了,本文主要讲对普通Windows桌面应用程序的抓包,点击左下角的两个小图标,让Fi...
2019-06-20 11:44:47 46418 3
原创 WebRTC -- Windows平台编译
写作本文时使用的webrtc版本为:branch heads/67一、 准备工作1.0 科学上网工具如果你不知道什么是“科学上网”或者没有“科学上网”的工具,那么请止步吧。 因为源码都是在命令行中下载,为了防止全局代理对命令行无效,可以设置如下环境变量:netsh winhttp set proxy 127.0.0.1:1080 # 还原命令为:netsh...
2019-06-20 10:01:46 86130 1
原创 Windows Console彩色进度条
我们在进行命令行程序开发的时候,经常会遇到显示一个进度条,如下载进度等,现在提供一个封装好的在命令行中显示彩色进度条的函数:#include <windows.h>void ShowConsoleProcess(double percentage) { const char* PBSTR = "========================================...
2019-05-30 11:12:28 903
原创 Windows驱动开发入门 --WDM inf文件模板
本文介绍在安装WDM驱动时如何编写inf文件。由于inf文件的规则比较负责,写法也比多,故本文介绍的是通过Visual Studio开发WDM驱动时的inf模板文件的通用写法。模板文件如下:; ; 用于Visual Studio的inf模板;[Version]; 固定写法Signature="$WINDOWS NT$"; %ClassName% 类似C语言中的宏,值定义在[Stri...
2019-04-13 18:16:51 1439 1
原创 Python瑞士军刀 --Python2与Python3共存
虽然Python3已经出来了有些年头了,且主流的模块均已支持Python3了,但难免有些脚本和模块由于历史原因还只能使用Python2,所以在电脑上还是会出现Python2和Python3共存的情况。在这种情况下,如何确定我们使用python命令调起的是Python2还是3了?如何确保使用pip命令安装的模块是安装到Python2还是Python3了?如何运行Py脚本我们在安装Python3(...
2019-03-26 15:06:50 373
原创 Windows驱动开发入门 -- HelloWorld
一、驱动开发环境搭建在Download the Windows Driver Kit (WDK)页面中下载最新版本的Visual Studio和WDK进行安装。如果要下载老版本可以到Other WDK downloads下载。本文演示环境为:Visual Studio 2017版本,WDK for Windows 10 17740。其他版本亦可。二、Hello Word工程在Visual ...
2019-03-13 09:34:11 15786 11
原创 用户界面特权隔离
写这篇文章源于本人在开发过程中遇到向某个进程发送消息失败而起。一、用户界面特权隔离在早期的Windows操作系统中,在同一用户下运行的所有进程有着相同的安全等级,拥有相同的权限。例如,一个进程可以自由地发送一个Windows消息到另外一个进程的窗口。从Windows Vista开始,当然也包括Windows 7、Windows 10,对于某些Windows消息,这一方式再也行不通了。进程(...
2019-03-06 11:25:10 1850
原创 Windows驱动开发入门 -- 理清基本概念
一、DDK、WDM、WDF、WDK我们知道开发Windows平台的应用程序离不开微软提供的SDK,同样开发Windows驱动也离不开微软提供的类似SDK的开发包。但是驱动模型的发展经历了几个过程,每个过程都有不同的驱动开发包,所以导致很多初学者容易弄混。下面通过图表的形式列出各种驱动开发包的名称和区别:驱动模型驱动开发包驱动扩展名支持的系统备注VxdWindows...
2019-01-15 16:09:01 1094 1
原创 使用NuGet管理C++项目的依赖库
一、NuGet介绍使用C++进行开发的同学,一定很羡慕Python的pip、Java的Maven等包管理器,只需要一个命令就可以将工程需要的依赖库安装到位。由于C++的大多数库都是系统、编译环境强相关联的,所以在开发中我们会针对不同的操作系统(Win32、Win64等)、编译器(MSVC140、MSVC120等)编译出对应的静态库或者动态库,然后配置头文件包含目录、库引用目录、预编译宏等等。...
2019-01-10 18:40:25 8751
原创 NSIS教程(10): MUI跳过某些安装步骤
在正常情况下安装包会有“欢迎界面”,“安装目录选择界面”等等。假如现在安装包支持通过命令行参数传入“安装目录”(如setup.exe /installdir F:\test),在检测到命令行参数中已经指定了安装目录的情况下,则跳过“欢迎界面”和“安装目录选择界面”。HOW TO DO?在页面插入宏之前通过MUI_PAGE_CUSTOMFUNCTION_PRE来指定pre处理函数,在该函数中来判...
2018-11-14 10:47:11 2066 1
原创 如何使软件适应高dpi显示环境
一、dpi介绍dpi是“Dots Per Inch”的缩写,表示每英寸的像素点个数,也就是像素点的密集度。dpi = 总像素点 / 总面积比如一个32寸的显示,但分辨率只有19201440,而一个24寸的显示器,分辨率却达到38402160,很明显后面这个显示器的每英寸的像素点的个数多,显示的画面更加细腻。所以:高分辨率不等于高dpi。苹果的视网膜屏幕的核心就是高dpi:屏幕面积小,却分...
2018-11-09 12:42:32 9480
原创 Qt实现HTTP的Get/Post请求
借助Qt的NetWork模块,可以轻松的实现HTTP的Get/Post请求,而不需要再次引用像libcurl这样的第三方库。头文件#include &amp;amp;lt;QNetworkRequest&amp;amp;gt;#include &amp;amp;lt;QNetworkReply&amp;amp;gt;#include &amp;amp;lt;QNetworkAccessManager&am
2018-10-21 22:21:39 51223 13
原创 拨开字符编码的迷雾--Qt字符编码
在使用Qt开发的过程中,我们经常会遇到中文乱码的问题,虽然网上提供了有很多方法都可以用来解决这个问题,但他们都没有从原理上进行讲解。本文力求从原理上来讲解清楚Qt字符编码的问题。在阅读本文之前,需要先掌握编码的基础知识以及编译器如何处理字符编码,建议先阅读之前的几篇文章:拨开字符编码的迷雾–字符编码概述拨开字符编码的迷雾–编译器如何处理文件编码我们以“测试字符串-보고싶다-Test St...
2018-10-21 20:33:04 543
原创 Qt无边框窗体模仿Win32标准窗体鼠标拖拽效果
本文介绍如何针对Qt的无边框窗体(即setWindowFlags(Qt::FramelessWindowHint);)实现鼠标拖拽标题栏移动窗体位置、鼠标拖拽窗体四周边框改变窗体大小的行为。一、为所有控件添加MouseTracking在Qt中,控件默认只有在至少有一个鼠标按键被按下的情况下,控件才能捕获鼠标的移动事件。针对我们想要模拟“鼠标拖拽窗体四周边框改变窗体大小的行为”,需要能够实时获得...
2018-10-21 20:03:06 736
原创 Fiddler常见用法
Fiddler官网: https://www.telerik.com/fiddler一、会话过滤器选中【Filters】–&amp;gt; 【Use Filters】开启过滤功能。二、抓取HTTPS请求【Tools】–&amp;gt; 【Options】–&amp;gt;【HTTPS】 三、网速模拟功能【Rules】–&amp;gt; 【Customize Rules】打开自定义规则脚本...
2018-10-15 15:01:15 592
原创 Qt静态库编译指南
本文编译环境为: VS2013 + Qt5.5.1一、准备安装VS2013及下载Qt5.5.1源码。安装ActivePerl,并且将安装目录添加到PATH环境变量。安装Python,并且将安装目录添加到PATH环境变量。安装GPerf,并且将安装目录/gnuwin32/bin目录添加到PATH环境变量。下载地址:http://gnuwin32.sourceforge.net/...
2018-10-08 16:59:37 1369
原创 使用C++生成条形码
一、条形码介绍条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案。条码种类很多,常见的大概有二十多种码制,其中包括:Code39码(标准39码)、Codabar码(库德巴码)、Code25码(标准25码)、ITF25码(交叉25码)、Matrix25码(矩阵...
2018-09-21 12:57:31 9086 3
原创 Git/TortoiseSVN/TortoiseGit常用配置
TortoiseSVN/TortoiseGit 内置的文件比对工具是 TortoiseMerge,用于文件比对和解决冲突合并,TortoiseGit 还支持外部的比对工具使用,比如 Beyond Compare。配置如下:Diff ViewerC:\Program Files (x86)\Beyond Compare 3\BComp.exe %base %mine /title1=%b...
2018-07-30 21:27:02 2591
原创 Windows平台“路径”相关API汇总
#include <Shlwapi.h>#pragma comment(lib, "shlwapi.lib")路径截断与合并函数PathRemoveArgs 去除路径后面的参数PathRemoveBackslash 去除路径最后的反斜杠“\”PathAddBackslash 在路径最后加上反斜...
2018-07-27 09:39:13 917
原创 Git使用问题汇总
假设test项目之前托管在github上,现在需要在oschina上也托管一份。然后,在本地开发目录执行push命令的时候可以同时push到这两个仓库。如何实现?答:使用git remote set-url --add --push命令可以实现上面的需求。具体步骤如下:1). 在oschina上新建一个空项目。假设项目git地址为:git@gitee.com:china_jeffe...
2018-07-20 13:19:57 515
原创 【利器】常用软件分享
工欲善其事,必先利其器 Everything软件功能:文件/文件夹快速搜索 适用平台:Windows 软件性质:免费 下载地址:https://www.voidtools.com/Ditto软件功能:剪切板管理 适用平台:Windows 软件性质:免费 下载地址:https://ditto-cp.sourceforge.io/UltraMon软件...
2018-07-02 12:08:57 1328 1
原创 谷歌CEO:没有这项能力,再牛的程序员也不要!
究竟是编程能力重要还是学习能力重要,一直是困扰企业的一个难题。你是需要一个立即能解决问题的老司机,还是要一个未来无限的潜力股,确实也很令人头疼。不过关于这个问题,谷歌的CEO给出了一个答案。那就是持续学习。笔者最近看到一篇报道,谷歌 CEO 桑达尔 · 皮查伊(Sundar Pichai)在一篇发表在NBCNews 上的文章中提到一个观点:比工作能力更重要的是学习能力。 皮查伊...
2018-06-22 11:38:48 3376 18
原创 C++11 Lamada表达式
Lamada表达式是C++11最重要也是最常用的特性之一。Lamada来源于函数式编程的概念,也是现代编程语言的一个特点。Lamada表达式定义下图展示出了C++ Lamada表示的组成部分: 其中: ① 指明捕获列表 ② 指明参数列表 ③ mutable可选项。和常规的mutable用法类似,即当lamada表达式参数是const时,使用mutable可以取消这种cons...
2018-06-22 11:17:25 913
原创 C++内存池技术
一、为什么需要使用内存池在C/C++中我们通常使用malloc,free或new,delete来动态分配内存。 一方面,因为这些函数涉及到了系统调用,所以频繁的调用必然会导致程序性能的损耗;另一方面,频繁的分配和释放小块内存会导致大量的内存碎片的产生,当碎片积累到一定的量之后,将无法分配到连续的内存空间,系统不得不进行碎片整理来满足分配到连续的空间,这样不仅会导致系统性能损耗,而且会导致...
2018-06-20 18:04:03 12038 2
原创 关爱程序员的生活 -- 巴氏刷牙法
最近牙齿出问题,心情很不好,去医院检查得知是由于刷牙方法不科学导致的。哎~~~俗话说“牙好胃口就好”,还有一句话“牙疼要人命”,从这些话都可以看到牙齿对于高质量生活的重要性。对于程序员来说,有一口好牙才能胃口好、心情好,身体更加健康,从而更有可能写出高质量的代码。下面介绍科学的刷牙方法–巴氏刷牙法:1刷上排牙齿时,将刷毛朝上与牙齿呈 45 ~ 60 度角;刷下排牙时,将刷毛朝下...
2018-06-09 23:07:15 11783
原创 windows平台libcurl+openssl编译备忘
一、环境准备Visual Studio 2015(其他版本也可以)GitPerlCMake二、开始编译2.1 获取curl源码:git clone --branch curl-7_60_0 https://github.com/curl/curl.git2.2 获取openssl源码:Git获取指定版本的源码,因为7_60_0版本libcurl自带的bui...
2018-06-06 00:39:41 13565 1
原创 Qt --常见问题解决方案
Qt官网目前已经不提供离线安装包的下载入口,但可以通过下面的网址下载离线安装包:http://download.qt.io/archive/qt/
2018-05-02 23:19:48 22012
原创 WebRTC -- WAVE编码
一. WAVE简介WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持。WAVE是录音时用的标准的WINDOWS文件格式,文件的扩展名为“WAV”,数据本身的格式为PCM或其他压缩数据,属于无损音乐格式的一...
2018-04-28 15:50:27 20091
原创 WebRTC -- 官方apprtc示例搭建
系统环境Ubuntu 16.04 在搭建之前建议关闭系统防火墙,参考:Ubuntu使用Ufw管理防火墙一. 房间服务器搭建1.1 安装依赖程序apt-get install git unzip lrzsz nodejs npm automake autoconf libtool nodejs-legacy python-webtest golang –...
2018-04-26 12:41:05 4920
原创 WebRTC -- 在VS工程中使用WebRTC
写作本文时使用的webrtc版本为:branch heads/67虽然使用gn gen --ide=vs out/Debug这样的命令可以生成vs解决方案,但是其内部仍然是使用ninja来编译生成的。如果我们在开发中需要使用msvc来编译生成项目,需要包含哪些目录、引用哪些文件了?一. 预定义宏_CRT_NONSTDC_NO_DEPRECATEV8_DEPRECATI...
2018-04-24 10:54:03 22473 2
原创 WebRTC -- 认识WebRTC
WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。它...
2018-04-19 11:13:55 33627
原创 WebRTC -- SDP格式解析
如果将WebRTC SDP从语义上分解成不同组件来描述一个多媒体会话信息,那么WebRTC SDP由如下几部分组成: +---------------------+ | v= ...
2018-04-18 16:00:03 37289
原创 一个老程序员的忠告:千万不要一辈子靠技术生存
我现在是自己做,但我此前有多年在从事软件开发工作,当回过头来想一想自己,觉得特别想对那些初学JAVA/.NET技术的朋友说点心里话,希望你们能从我们的体会中,多少受点启发(也许我说的不好,你不赞同但看在我真心的份上别扔砖头啊)。一、在中国你千万不要因为学习技术就可以换来稳定的生活和高的薪水待遇,你更不要认为那些从事市场开发,跑腿的人,没有前途。不清楚你是不是知道,咱们中国有相当...
2018-04-17 10:31:10 37862 41
原创 Windows注入与拦截(6) -- 从内存中加载DLL
Windows提供的API(LoadLibrary, LoadLibraryEx)只支持从文件系统上加载DLL文件,我们无法使用这些API从内存中加载DLL。但是有些时候,我们的确需要从内存中加载DLL,比如:对发布的文件数量有限制。我们可以将DLL打包到exe的资源中,程序运行时从调用LoadResource等API读取DLL文件到内存中,然后从内存中加载DLL。需要对DLL进行压缩...
2018-04-09 18:01:03 43899 10
基于NSIS Modern界面制作的网易云音乐安装包
2018-01-18
基于NSIS传统界面制作的网易云音乐安装包
2018-01-18
NSIS用户手册 中文版
2018-01-17
automate-git.zip
2019-07-13
ffmpeg-20180427-4833050-win64-static
2018-04-28
区块链技术解决方案和安全性方面的问题
2017-12-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人