- 博客(40)
- 资源 (1)
- 收藏
- 关注
原创 阿里云函数计算(fc)使用体验
经过最近几年容器化和Devops的发展,程序员已经变得越来越“懒惰”了——对于部署环境,开发能不管理尽量不管理。于是乎,Docker,Kubenetes等等一系列部署环境应运而生。但是,无论容器化再怎么对环境进行封装,开发和运维人员始终无法摆脱对服务器的管理工作,即便使用了可视化的容器管理平台,...
2020-10-20 23:06:14 2903
原创 尝试用大一统的计算几何库CGAL解决BIM的算法问题(三)——图形的布尔运算
几何图形布尔运算简介布尔运算在计算机领域是一个多含义的概念,包括逻辑上布尔类型的与并否操作,而在计算机几何上,它代表的是多边形或多面体之间的集合与并或非等操作。我们也可以粗暴地将图形布尔运算理解为多面体或多边形的加剪法运算,下图展示了多边形间的布尔运算。布尔运算在BIM领域的应用几何图形的布尔运算在BIM中很经常会用到,常见的有(1)梁柱之间的连接部位剪切、(2)现浇结构体与预制结构之间的扣减倒模、(3)绿化区域不同植被的面积计算等。上述的1、2种情况属于**多面体(polyhedra)**的布尔
2020-10-07 14:15:54 4496
原创 尝试用大一统的计算几何库CGAL解决BIM的算法问题(二)——C#接口实现
关于CGAL的介绍可以参考上一篇文章: 尝试用大一统的计算几何库CGAL解决BIM的算法问题(一)通过高级程序开发语言调用CGAL在了解如何新建C++项目使用CGAL之后,我们希望把CGAL的算法能力提供给开发效率更高的高级语言。由于我们在做BIM开发的时候总是无法绕开Revit和Autocad,所以需要考虑C#语言的封装。CGAL的C#版本封装把C++的函数封装成C#版本一般有两种做法,一种是通过C++/CLI封装,另外一种是通过P/Invoke进行封装。C++/CLI是微软提供的一种胶水语言,
2020-10-05 13:54:02 2199 2
原创 尝试用大一统的计算几何库CGAL解决BIM的算法问题(一)
这里写自定义目录标题CGAL简介CGAL 安装(Windows版本)使用CGAL配置CGAL项目编写测试代码编译调试CGAL简介The Computational Geometry Algorithms Library(CGAL)是一个开源的计算几何算法软件库。CGAL是用原生C++语言开发的,通过SWIG绑定,目前可以对Python和JAVA有一定程度的支持。CGAL项目从1996年开始开发,到目前已经超过25年历史了,内容模块涵盖算术基础、数据类型、多项式求解器、2/3D线性几何基础、多边形算法、
2020-10-05 12:50:56 2106
原创 利用docker部署jupyterhub接入ldap
最近新增了一台显卡性能强劲的服务器,但由于训练任务不多,还处理闲置状态,跟公司领导商量了一下后决定在上面部署一个jupyter notebook,以便开放机器算力让更多同事可以把这台计算机利用起来。对比了一下jupyter生态圈的几个产品后,我们决定用jupyterhub+ldap的方式对待部署,以便达到以下效果:用户拥有个人notebook服务及文件空间(虚拟化);直接利用AD账号登录。...
2020-04-07 10:02:25 2598 7
原创 自然语言处理文本标注工具——Doccano介绍
背景最近公司有项目用到了自然语言处理技术,利用google 发布的BERT框架和Tensorflow,我们可以快速对模型进行训练与发布。但是在这个过程中,有一项看起来“技术含量稍低”但却非常重要的工作却不太容易实现,那就是文本标注了。工具调研为了解决文本标注的问题,我先在网上搜索了一轮,发现市场上有一些(不多)文本标注类产品,例如tagtog/LightTAG。但是这类产品一来需要收费,二来...
2020-02-10 17:33:42 4905 7
原创 组合数算法的非递归实现
问题描述前段时间有位新员工同事遇到了对象组合问题,使用递归的方式实现,在代码审阅的过程中发现,该方法在实现上存在业务逻辑与算法逻辑耦合度过高、使用不便于调试的非尾递归等问题,而数组元素组合在我们开发的产品会被很多模块使用,讨论后决定尝试使用非递归的方式得到数组元素组合。算法是否是是否开始初始化组合将当前指针设定为最后一位指针位元素自增指针位是否超过数组长度指针位前移一位自增结束从指针位后一位...
2019-10-08 11:27:33 1056 1
原创 在Windows上通过公钥验证登录Linux服务器
背景最近在做一个Windows桌面应用(基于net fx)的开发,在做持续集成的时候,需要通过CI Runner在Windows机器上构建程序后推送到Linux服务器上(下载页面在Linux机器上),这个过程就涉及了从windows上通过执行脚本自动地通过scp把文件复制到SSH服务器(Linux)上。解决方案工作环境客户端:1. windows 102. chocolatey3. ...
2019-09-25 13:38:57 1440 1
原创 用Innosetup打包发布基于Devexpress的WPF应用
背景报错,找不到dll以及XamlParseException过程中遇到的问题解决方案记录
2019-09-24 17:37:37 840
原创 通过Docker部署.net core单页应用
项目结构SolutionDir //解决方案文件夹├── Solution.sln //解决方案文件├── config├── Dockerfile //Docker镜像描述├── ProjectDir //项目文件夹│ ├── ...
2019-09-09 18:41:49 152
原创 Revit二次开发入门教程一(工具篇)
前言BIM诞生的背景Revit在BIM中扮演的角色1. Revit在BIM设计中的角色2. Revit在BIM开发中的角色3. Revit在BIM社区的角色Revit二次开发入门开发前准备1. 订购并安装Autodesk Revit(或安装试用版)2. 安装Visual Studio3. 安装Revit AddIn-Manager安装步骤:4. 安装...
2019-09-07 21:33:03 9370
原创 什么是BIM开发?这篇文章可以告诉你
谈到BIM,估计很多程序员的反应是“你确定你不是想说IBM?”对,不是IBM。Building Information Modelling,简称BIM,中文多被译为“建筑信息化模型”,是利用计算机技术对建筑生命全周期进行管理的一种手段,也是目前建筑业与软件行业结合的最好的交叉领域。什么是全建筑生命周期全建筑生命周期即BLM,全称Building Lifecycle Management...
2019-08-30 13:32:31 17172 4
原创 BIM开发会用到哪些技术
1. 编程语言常用的编程语言,其中以C#为主。C#语言是Windows平台下的旗舰级开发语言,BIM应用程序主要的存在形态是桌面应用,因而C#被多数BIM开发公司作为首选开发语言。除了可以进行高效的桌面程序开发,C#还被多数应用软件和开发平台作为首选开发语言进行支持,如Autodesk公司的Autocad,Revit二次开发接口,open design Alliance的teigha.NET,t...
2019-08-29 13:33:15 6764 1
原创 通过项目导出制作VisualStudio项目模板
1. 创建项目模板先创建一个空白项目为项目添加必须的文件夹、引用及文件点击菜单栏项目->导出模板选择项目模板,并选择需要从哪个模板创建选择下一步,填写模板名称、图片等信息。点击完成生成模板。2. 项目模板的使用把导出来的项目模板(zip文件)放到 我的文档\Visual Studio 2017\Templates\ProjectTemplates内...
2019-08-28 17:08:43 1008
原创 构建docker镜像时使用代理服务器
背景介绍最近需要在公司内网通过docker部署一个.net core 应用,在花费一些时间解决内网服务器访问外网的问题后,我把代码放到服务器上,并且准备通过docker-cli构建应用镜像,但当构建步骤到restore时,命令一直卡着,原来是docker build时没有走系统代理。DockerfileFROM microsoft/dotnet:sdk AS build-envWORKDI...
2019-08-21 14:20:34 1672
原创 通过网络代理进行内网服务器的docker安装及镜像下载
背景介绍我司测试服务器位于内网,对于需要网络下载的应用场景非常不友好,因此需要为其设置网络代理进行互联网访问。首先可参考以下文章利用Fiddler作为网络代理环境介绍客户端:Windows10Fiddler v5.0.20182.28034 for .NET 4.6.1Chocolateyssh client服务器:Centos 7.4操作步骤1. yum添加dock...
2019-08-20 12:03:48 1884
原创 利用Fiddler作为网络代理
使用背景公司内部测试服务器只开通了内网访问,而且在公司内网没有部署任何镜像仓库,一旦需要在服务器上进行一些新的应用部署,例如docker镜像下载,通过软件源安装一些应用都需要申请临时开通网络,作为测试环境,这样的网络要求未免过于严苛。由于测试机与客户端PC可以进行网络连接,因此考虑在客户端PC通过Fiddler给测试服务器搭一个网络代理(Proxy)。环境介绍客户端:Windows10...
2019-08-19 18:13:27 10936
原创 Revit二次开发教程提纲
本文提供Revit二次开发教程提纲,教程内容包括下列部分.NET及C#的基本介绍1.1 基本语法1.2 版本介绍1.3 Visual Studio1.4 CLR的介绍1.5 异常处理1.6 XML/Json的介绍及操作方法1.7 数据库简介1.8 委托与事件1.9 WPF介绍1.9.1 WPF简介1.9.2 MVVM的介绍1.9.3 WPF例子Revit API入门...
2019-07-12 09:51:12 1279 2
原创 autocad2010二次开发踩坑记录
坑多梯少CustomToolBase.CreateStockTool()方法 此方法需要打开“工具选项板”后调用才有返回值,否则返回null Acad.exe调试 需要把Acad.exe作为项目添加到解决方案,并设为启动项目进行调试,否则卡死 ...
2018-05-11 18:09:54 2978
原创 Javascript 在循环中使用Promise对象
先看一个生成Promise对象的方法 function createPromise() { var promise; promise = new Promise(function(resolve, reject) { var elapse = Math.random() * 2000; setTimeout(resolv
2017-07-15 12:33:28 12183 2
原创 关于ORM的一些体会
最近项目用到SQLite数据库,嫌麻烦做了个根据数据库表结构生成C# 代码的工具,把表结构和Entity类进行一一对应,也算是一个小的ORM框架。本想再做的彻底一点,在Entity上再封一层Model类,把外键关系(当然表上没有 体现)也关联起来,并通过一个Context类把Model的操作托管起来,使其能够记录哪些实体被增删改查,从而,从而实现自动增量持久化。 但总体设计下来感觉想把整套ORM
2017-03-09 18:44:11 561
原创 利用树莓派搭建http git服务器
1.服务器上的githttps://git-scm.com/book/tr/v2/Git-on-the-Server-The-Protocols官网上指出git支持4种协议通信: 1.本地协议 本地协议的仓库在本机,优点是协议简单,缺点是难以通过网络访问; 2.HTTP协议 通过HTTP进行访问,优点是网络适应性强,容易通过互联网访问,缺点是配置复杂,其次对于局域网内应用,会比SSH协议具有
2017-02-25 22:27:16 2494
原创 场景漫谈:软件过程的升级
最近从一个较为无序的开发环境转到了专业的软件公司工作,刚过来就接到一个较为紧急又让人抓狂的任务,经过几天的努力自我感觉还算过得去,回想完成任务的经历,虽然还有很多不足,但也有一定的收获,整理出来一个小场景,博君一笑尔。背景:公司某部门需要把一堆EXCEL表格(数万行)数据按一定的规则输出到Xml文件,经公司领导研究,该研发部门可以提供程序员Brook帮助该部门开发一个转换小程序,开发过程中需求部门提
2016-10-12 22:23:32 399
原创 Unity运行时读取FBX文件插件
Unity没有开放直接读取FBX文件的接口,想要在进行时加载FBX模型文件还得费一翻苦工夫,之前做了一个跨平台的托管FBX文件读取接口,由于没有时间做太多完善,我就直接放代码出来好了 https://github.com/dreamhunter007/ManagedFbxSDK.git Windows的编译环境搭建不多说,直接FBX官网找吧,OSX 和iOS的Unity本地插件制作方法可以参考在
2016-07-10 15:53:48 6238
原创 C#委托和事件
委托是C#第一个版本就引入的特性,特点如下1. 类似于C++中的函数指针; 2. 允许方法像变量一样赋值; 3. 用以作回调操作; 4. 委托以链表的方式记录委托实例; 5. 委托实例中使用的类型并不需要与委托声明中的类型完全吻合;6. 在C#2.0中引入了匿名委托,C#3.0引入了Lambda表达式作为委托实例。
2016-06-16 11:08:32 3158
原创 HTC VIVE开发初体验
之前在Unity用HIDAS设计的模式搭过一个场景,最近拿到VIVE,就在该场景上加上SteamVR插件重新发布了一次,遇到一些问题,也有一些收获,在这里分享给大家。 之前发布的Windows Stand Alone应用在屏幕上显示非常流畅没有问题,但发布到VIVE之后,一切就变样了,戴上头控观看场景,遇到需要渲染的模型面多的时候画面就开始出现严重的画面闪烁现象。 通过联系客服排
2016-06-02 16:15:35 2400
原创 再谈利用SharpShell实现Windows Shell扩展
之前写过一篇文章介绍过如何用SharpShell提供的接口去实现Windows PreviewHandler的扩展功能,但用的方法是先实现SharpShell中的各类接口编译DLL,再手动给注册表安装和注册相关内容,但发现这种方法有点折腾,而且不便于部署,后来发现SharpShell本来就自带注册表管理器,使用起来非常方便,而且可以避免自己写注册表出现疏忽。Windows PreviewHandle
2016-06-02 12:38:19 4653 3
原创 DevExpress Winform控件颜色主题机制
DevExpress控件使用了一套新的外观控制机制,也就是LookAndFeel Mechanism,通过LookAndFeel,用户可以对控件风格进行统一化的控制。 在引用LookAndFeel Mechanism之后,原来的WinForm控件中使用的Appearance机制将被停用,如果用户希望更改某个控件的外观,例如RibbonStatusBar的颜色,那么只是去改变RibbonStatus
2016-05-19 15:31:03 10563
原创 C++类内存实验(一)
闲来无事写了一个简单的类做个内存测试,类定义如下:class testtype{public: testtype() :a(1), b(2), c('f'), d(3) { ap = &a; } int a; long b; char c; short d; int* ap; void testFunc(){
2016-05-17 17:35:28 862
原创 OSX下编译framework bundle
bundle是OSX和iOS中常用的一种文件组织格式,根据用途的不同,可以分为 1. Application bundle——应用bundle把应用所需的二进制文件和其他资源文件打包在一起,使它们可以捆绑发布,OSX中的应用实质上也是一种bundle,只是使用了.app作为后缀; 2. Framework bundle——框架bundle打包了一些可被其他应用使用的动态库以及其他资源(包括与动
2016-03-28 22:31:20 2307
原创 在OSX上开发UNITY本地插件的经验分享
相信做过Unity开发的同学都知道Unity本地插件是什么,本篇文章中,博主使用的是C#脚本,Javascript不作讨论。 在大多数情况下,使用托管语言脚本进行开发是能够满足业务需求的,但在一些必须用到遗留代码或供应商只提供了C++版本SDK的情况下,我们难免要对Unity进行一些本地插件的开发,先引用一段官方对本地插件的描述: Unity has extensive support for
2016-03-26 21:46:09 6362 3
原创 C#实现Windows资源管理器文件预览
上一篇文章大致介绍了一下C++实现Windows文件预览的方法,这里介绍一下通过.NET方式实现文件预览。其实原理还是一样,需要通过实现系统定义的COM接口,包括 IInitializeWithFile,IObjectWithSite, IOleWindow,IPreviewHandler 等 而C#并没有定义这些接口,因此我们需要把这些接口通过System.Runtime.InteropS
2016-03-18 17:54:43 14422
原创 自定义Windows资源管理器预览的实现
在Windows中,资源管理器对文件的预览是通过系统PreviewHandler组件实现的,因此,想要实现自定义的PreviewHandler就需要实现一个定义了预览接口COM组件。 从Microsoft文档我们可以看到,自定义PreviewHandler需要实现以下COM接口: A preview handler must implement the following interfaces
2016-03-18 17:47:45 7729 1
原创 C#利用预处理指令进行条件编译
Unity引擎使用Mono虚拟机作为它的脚本处理环境,因此大部分使用C#编写的程序可以直接移植到Unity中,使用Unity .net Class Libraries编程框架对它进行编译,就可直接在Unity中使用。 但有Mono对C#的编译执行与微软并不是完全一样,例如在调用本地语言时,VS编译器需要为方法添加特性标签[DllImport("Win32Project1.dll")]来寻找寻找本地
2016-03-07 17:34:04 1901
原创 使用iphone作为远程仓库的方案
最近用到一些代码需要在多平台编译,一套代码需要在不同的机器不同平台上,或者相同机器的不同路径上使用,这种情况下,如果没有协同工具进行代码管理,用不了多久,每套代码都会混乱得不堪入目。 由于项目不想开源,而公司的服务器没有公网IP,因此将代码放到Github上或者放到公司服务器上都不太能满足我的需求,想来想去,手头上有一台越狱过的iphone,便试试能不能把它作为远程仓库,结果证明想法可行,现在把手
2016-03-07 16:03:20 855
原创 .net字符集转换
一直用着.net做应用开发,而且比较少跟网络传输打太多交道,因此虽然知道字符编码转换一堆的坑,但还是没有遇到太多障碍,但今天为了让文件名支持中文,着实费了一把劲。在.net框架下,字符串并不是以某种特定的编码格式编码的,而是根据你的代码文档编码格式确定。例如你的代码文件保存为GBK编码,那么字符串就是以GBK格式编码的(总的来说GBK是Windows系统下最大的坑),如果是UTF8,那应该很幸运,不需要做太多的转换就可以支持大部分的SDK和文件
2016-02-18 19:50:43 1551
原创 Fbx SDK 的.NET封装
官方提供的Fbx Sdk只有C++和Python版本,但我的项目用的是.Net 4.0,因此需要一个Fbx Sdk的托管版本。恰巧在Github上找到一个基础版本:https://github.com/returnString/ManagedFBX小作了一下修改,把它改成2015.1版本的sdk,项目基于VS2013,并添加了64位版本,有需要的朋友可以下载使用https://github
2016-01-07 09:48:32 3300 1
原创 FBX文件简述
1. 关于FBXAutodesk FBX是Autodesk公司出品的一款用于跨平台的免费三维创作与交换格式的软件,通过FBX用户能访问大多数三维供应商的三维文件。FBX 文件格式支持所有主要的三维数据元素以及二维、音频和视频媒体元素。FBX由Kaydara开发并于2006年被AUTODESK收购。参考 https://en.wikipedia.org/wiki/FBX
2016-01-07 09:33:53 39515
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人