1. 手动打点的弊端 在很多ios工程师的日常工作中,不但要对接产品提出的功能性需求,还会收到产品出于数据统计分析需求目的而提出的附带的隐形需求:统计打点.大多数公司的基础框架层都会对统计打点功能做高级封装,工程师只需要在某个操作被触发的时候在处理的方法内加入一行函数调用即可完成,例如: - (void)btnCloseClicked:(id)sender { [MCCStatistic logEvent:@"详情页-关闭按钮-点击"]; [self.navigationControl…
1. 源码变换 第一章我们提到过,CLAS的本质是对源码做一次非常简单的变换(有些文章里称作变形),即Source-Source-Transformation,将打点代码精确地插入到目标函数的首部,保存到临时文件,代替原始文件传递到Clang进行编译.这个变换过程对于Clang的编译流程没有侵入,保证了与不同版本Clang一定的兼容性,即使Clang进行小版本升级CLAS仍然可以正常工作无需重新编译(例如Xcode从8.2.1升级为8.3.3).围绕着源码变换可以做出许多非常有创意的工具,大家有…
1. 配置LLVM和Clang 在这篇文章里,我们会基于上一篇所述的方案进行展开,详细讲解如何从0开始创建一个基于Clang LibTooling的编译器前端工具.在开始之前,我们假设你已经基本了解何为抽象语法树AST,我们后面的所有内容都是基于对AST的解析完成的.如果不了解AST,请移步官方文档Introduction to the Clang AST补全基础知识,或者这篇中文文章. 此外我们还需要下载并配置好LLVM和Clang的源码环境.LLVM和Clang的源码都可从llvm.org上…
我们的思路是每天下班后团队各成员在指定的时间(例如下午18:30)之前把各自的代码上传到SVN,然后服务器在指定的时间(例如下午18:30)更新代码.执行ant 打包命令.最后将apk包存放在指定目录(或者上传指定ftp目录).其他部门或者同事可以访问指定的地址来下载最新的APK包.就是在ubuntu系统中创建一个定时任务,这个任务每天会在指定时间执行事先编写好的编译脚本.这个定时任务在ubuntu中可以使用crontab来实现.(还不了解crontab的同学自行脑补啦) 一.环境准备 1.在u…
LuaBind http://www.rasterbar.com/products/luabind.html http://blog.sina.com.cn/s/blog_646817c00100gk99.html 支持函数重载 LuaBridge https://github.com/vinniefalco/LuaBridge 不支持函数重载…
原文地址:https://realpython.com/blog/python/setting-up-sublime-text-3-for-full-stack-python-development/ 原文标题:Setting Up Sublime Text 3 for Full Stack Python Development 翻译:打造基于sublime text 3的全能Python开发环境 Sublime Text 3 (ST3) is lightweight, cross-platfo…
第一种:基于编译的打包 编译工程--找到.app文件--新建Payload文件夹--拷贝.app到Payload文件夹--压缩成zip--更改后缀名为ipa--完成! 第二种(有问题,暂时不需要看) 第一步:打开终端,cd 到脚本所在目录 $ cd /Users/chenxiaonan/Downloads/AutoRelease-master(如何查找自己Mac下python路径,全局搜索) 第二步:执行Configuration.py,配置打包选项 $ python Configuration…
[原创]打造基于Dapper的数据访问层   前言 闲来无事,花几天功夫将之前项目里用到的一个数据访问层整理了出来.实现单个实体的增删改查,可执行存储过程,可输出返回参数,查询结果集可根据实际情况返回DataTable.DataSet和强类型,同时支持不同类型数据库.目前成熟的ORM框架多不胜数,再写一个出来,并非想证明自己写的有多好,一来认为现有成熟的ORM框架并不能灵活适用于大型ERP项目,二来有感于工作多年有必要写下一些东西.虽然有种重复造轮子的感觉,但相信朋友们和我一样,享受造轮子的过程…
http://www.cocoachina.com/ios/20150911/13301.html 代码示例:https://github.com/johnlui/Swift-On-iOS/tree/master/BuildYourOwnHybridDevelopmentFramework/BuildYourOwnHybridDevelopmentFramework 开源项目:BlackHawk,纯 Swift 开发的基于 WKWebView 的高性能 Cordova 替代:https://gi…
打造更好用的 EF 自动审计 Intro 上次基于 EF Core 实现了一个自动审计的功能,详细可以参考 https://www.cnblogs.com/weihanli/p/auto-audit-for-entity-framework.html ,虽然说多数情况下可以适用,但是因为要显式继承于一个 AuditDbContextBase 或 AuditDbContext,所以对代码的侵入性比较强,对于已经无法修改的代码或者已经继承于某一个类了,就无法再继承 AuditDBContext 了,…
1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TCP通讯的文件上传.下载.自动更新的知识点,是作者多年技术生涯的积累,基于开源的Networkcomms3.0框架.NetworkComms框架,是成熟稳定的c#编写的TCP通信框架.作者的多个系统都基于此框架,并在实际项目中使用,一直很稳定.         2.本系统主要实现了3个功能,(1)客户…
一.Spring IOC 容器支持自动装配 Bean,所谓自动装配是指,不需要通过 <property> 或 <constructor-arg> 为 Bean 的属性注入值的过程. 二.配置: 在 <bean> 的 autowire 属性里指定自动装配的模式.默认为 no .可以通过 <beans> 根元素的 default-autowire 属性改变默认值. 三.自动装配的三种模式: 1.byType(根据类型自动装配):若 IOC 容器中出现多个与目标…
在电力电子变流器设备中,常常需要计算发电量,由于电力电子变流器设备一般是高频变流设备,所以发电量的计算几乎时实时功率的积分,此时就会用到一个积分模块.发电量计算的公式如下:Q=∫P. FPGA由于其并行处理的运算方式,使其在电力电子领域的应用越来越广泛,有专家断言,DSP能做的事情,FPGA都可以做. 此外,MATLAB2016bb在图形化设计算法自动生成代码上做了大量优化,使算法开发的时间大大缩小,下面共享一个基于MATLAB2016b图形化设计自动生成Verilog语言的积分模块及其应用.…
ios自动打包使用fastlane 1.首先安装xcode 首先检查是否已经安装 Xcode 命令行工具,fastlane 使用 xcodebuild 命令进行打包,运行 xcode-select --install 命令,根据你的情况进行不同处理. 2.没有弹出提示,命令行提示 xcode-select: note: install requested for command line developer tools, 则需要运行下面命令,指定 Xcode 命令行工具所在的路径. $ xcod…
基于DRL和TORCS的自动驾驶仿真系统 --之环境配置 玩TORCS和DRL差不多有一整年了,开始的摸爬滚打都是不断碰壁过来的,近来在参与CMU的DRL10703课程学习和翻译志愿者工作,也将自己以前的一些工作做一些备忘,以作为有兴趣同学的参考. TORCS仿真器平台安装 仿真器平台主要包括两步:安装TORCS,然后添加锦标赛用的patch. TORCS仿真器的安装 The open racing car simulator(TORCS)主页 仿真器源文件下载地址 支持windows和linu…
前一段时间国内的各大网盘百度云盘,金山快盘,360云盘,华为网盘为争夺用户上演空间容量博弈,网盘商们还固执地以为中国的网民都不懂网络技术,可以像某公司那样用一些数字的手段来忽悠用户,参与到网盘商的数字游戏中的公司都心知肚明. 在不需要增加任何网盘上传下载带宽和硬件设备投入的情况下,又可以用TB级别网盘这样的字眼来夺人眼球,在网络上大肆炒作一番,这比用钱买广告来推广网盘有效得多了.在这场网盘炒作中,率先“挑起事非”的两家百度网盘和360网盘获利最多. 尤其是百度网盘,应该算正式成长为国内网盘界中老…
基于Requests和BeautifulSoup实现“自动登录”实例 自动登录抽屉新热榜 #!/usr/bin/env python # -*- coding:utf-8 -*- import requests # ############## 方式一 ############## """ # ## 1.首先登陆任何页面,获取cookie i1 = requests.get(url="http://dig.chouti.com/help/service")…
基于Photon 的 PUN+ 如何自动实现RPC呼叫的. 简单说函数标记成 RPC 类型的. void Hello() { Debug.Log("Hello"); PhotonView.RPC("DoHello"); } [RPC] void  DoHello() { } 然后通过Static的ServerSettings 在Editor中 来扫描所有标记有RPC的函数 变成 RPCShortcut list .因为版本一致的客户端这个列表顺序才会一致.也就是说才…
在k8s中部署有状态应用时,通常需要做数据持久化存储. 后端存储的方式有以下几种: 1.基于宿主机本地的存储方式: (重启pod时,若pod被调度到其他节点上,尽管原来节点上的数据不会丢失,但是其他节点上没有该应用存储过的数据,所以并不持久化) 2.基于本地过云存储服务的方式,如:(NFS.glusterfs.cephfs.awsElasticBlockStore.azureDisk.gcePersistentDisk等) (在资源清单中指明URL地址和共享挂载卷目录即可实现数据持久化存储) 3…
1  绪论 1.1 课题的研究背景 随着IT行业的不断发展,软件开发的复杂度也随着不断提高.与此同时,软件的开发团队也越来越庞大,而如何更好地协同整个团队进行高效准确的工作,从而确保软件开发的质量已经慢慢成为了开发过程中不可回避的问题. 在软件开发中,不同的功能模块一般由不同的开发成员负责,同一功能模块的各层代码也可能是不同的开发成员编写,经验告诉我们,模块之间的问题是最难解决的,也是最耗费时间的.它需要多个开发人员相互协作找出问题,而协作过程中的沟通所消耗的时间成本是相当高的.而且还可能因为沟…
基于GitLab CI搭建Golang自动构建环境 Golang发布遇到的问题 对于golang的发布,之前一直没有一套规范的发布流程,来看看之前发布流程: 方案一 开发者本地环境需要将环境变量文件改为正式环境配置 编译成可执行文件 发送给运维 (运维)将文件覆盖为线上 (运维)重启进程 (可谓“又臭又长”) 方案二 开发者讲代码commit到gitlab上交给运维同学 (运维)pull代码 (运维)编译成可执行文件 (运维)覆盖线上文件 (运维)重启进程 这种对于运维属于重度依赖,而运维同学又…
之前已经用Git实现了自己博客的提交自动部署,并自动提交到GitHub和coding以备不时之需.平时项目代码都托管在Coding或者GitHub上,也已经用上了coding提供的webhook功能,偶尔个别自己玩玩的项目提交了代码之后再SSH到服务器上去 git pull 一次,刚好一起做成了自动部署,方法记录起来备忘. 实现步骤 在服务器上 以Nginx环境为例,Apache请看OverTrue的教程 生成公钥 公钥有两个:1. git用户公钥,2. 部署公钥: git用户公钥 123 ss…
上一篇我们讲到了dapr提供的bindings,通过绑定可以让我们的程序轻装上阵,在极端情况下几乎不需要集成任何sdk,仅需要通过httpclient+text.json即可完成对外部组件的调用,这样只需要对外暴露一个轻量级的http服务器提供restapi即可作为一个云函数提供对外服务.上一篇我们同时也提到了在serverless框架下的函数还可以按需进行自动扩容缩容的,在极端情况下甚至可以将实例缩容至0,理想情况下serverless在无人访问时不占用系统除磁盘外的任何资源,当有访问时通过自…
[转载]打造基于 Centos 7.X 的 spice 服务器 https://segmentfault.com/a/1190000011991047…
IOS系统(非开源,不可扩展) iphone沙盒机制解释:应用程序位于文件系统的严格限制部分,程序不能直接访问其他应用程序. 1.iOS的编程语言Objective-C 2.IOS采用的是沙盒运行机制 3.IOS中任何第三方程序都不能在后台运行 4.IOS中用于UI指令权限最高,最先响应屏幕 5.清理或不清理后台app,无变化 6.消耗内存,会占用预警,达到操作系统允许最大值,iOS会直接“杀掉”App进程 Android系统(开源可扩展) 基于Linux的自由及开放源代码的操作系统,由Goog…
目录 一.HTML5 - Websocket协议 二.聊天室(IM)系统的设计 2.1.使用者眼中的聊天系统 2.2.开发者眼中的聊天系统 2.3.IM系统的特性 2.4.心跳机制:解决网络的不确定性 2.5.消息的多终端漫游 三.Go语言实现-聊天(IM)系统 四.参考资料 一.HTML5 - Websocket协议 浏览器支持的socket编程,轻松维持服务端的长连接. 基于TCP可靠传输协议之上的协议,无需开发者关心通讯细节. 提供了高度抽象的编程接口,业务开发成本较低. 没有同源限制,客…
决策树在商品购买能力预测案例中的算法实现 作者:白宁超 2016年12月24日22:05:42 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结合视频学习和书籍基础的笔记所得.本系列文章将采用理论结合实践方式编写.首先介绍机器学习和深度学习的范畴,然后介绍关于训练集.测试集等介绍.接着分别介绍机器学习常用算法,分别是监督学习之分类(决策树.临近取样.支持向量机.神经网络算法)监督学习之回归(线性回归.非线性回归)非监督学习(…
iOS开发Swift篇—(三)字符串和数据类型 一.字符串 字符串是String类型的数据,用双引号""包住文字内容  let website = "http://www.wendingding.com" 1.字符串的常见操作 (1)用加号 + 做字符串拼接 let scheme = "http://" let path = “www.wendingding.com” let website = scheme + path // website的…
最近上线了的基于HTML5的燃气3D培训仿真系统,以前的老系统是采用基于C++和OpenGL的OpenSceneGraph引擎设计的,OSG引擎性能和渲染效果各方面还是不错的,但因为这次新产品需求要求能运行多移动终端,多年前基于MFC封装OSG的老系统架构也实在该退休了,这年头找能维护MFC这种古董级GUI的靠谱人也非易事. 系统最终采用HT for Web的3D框架实现,项目中的程序员也很高兴有这样的机会终于摆脱维护MFC老系统的宿命,虽然大家都只有C++的开发经验,对HTML/CSS/JS并…
前言 工业互联网,物联网,可视化等名词在我们现在信息化的大背景下已经是耳熟能详,日常生活的交通,出行,吃穿等可能都可以用信息化的方式来为我们表达,在传统的可视化监控领域,一般都是基于 Web SCADA 的前端技术来实现 2D 可视化监控,本系统采用 Hightopo 的 HT for Web 产品来构造轻量化的 3D 可视化场景,该 3D 场景从正面展示了一个地铁站的现实场景,包括地铁的实时运行情况,地铁上下行情况,视频监控,烟雾报警,电梯运行情况等等,帮助我们直观的了解当前的地铁站. 系统中…