about 6 days ago - No comments
非关系数据库在现在网络以及一些特殊应用中逐渐被接受和认可,其中Kyoto Cabinet是其中的佼佼者。 Kyoto Cabinet是跨平台的NOSQL数据库,支持Linux/Windows等平台,可以以静态库或者动态库形式使用,遵循GPL协议。 Kyoto Cabinet支持多种数据存储方式,包括内存型与文件型。 内存型包括ProtoHashDB、ProtoTreeDB、StashDB、CacheDB、GrassDB,文件型包括HashDB、TreeDB、DirDB、ForestDB、TextDB。另外PolyDB可以动态绑定上述各种数据库形式。具体的规格参数以及性能可以参考官方文档http://fallabs.com/kyotocabinet/spex.html#features。 Kyoto Cabinet官方提供了makefile,可以直接在windows平台上编译。但由于使用了ISO C9x的标准,官方默认使用VS2010,如果使用vs2008编译,需要手动修改几个地方: (1) 补充stdint.h头文件(http://msinttypes.googlecode.com/svn/trunk/stdint.h) (2) std空间中的unordered_map,hash,regexsmatch等位于std::tr1空间 (3) 修改VCmakefile, VCPATH = C:\Program Files\Microsoft Visual Studio 9.0\VCSDKPATH = C:\Program Files\Microsoft SDKs\Windows\v6.0A 性能测试后续再补充。
about 1 month ago - No comments
2011年专业技术回顾-Q1 2011年专业技术回顾-Q2 2011年专业技术回顾-Q3 10. 2011年10月 国庆节只休息了3天,4号上班。 10月6日,乔布斯走了,一个传奇。 在9月的时候,有很多的进展。经过了地毯式的测试,有限元这一部分功能基本上完善,也很稳定。后面基本上是专题性质的专项计算的深入调优,包括了施工模拟分析、随机活荷载不利布置分析、局部人防模型分析,整体上不错。 其他的内容大体上有这几个,都做得非常好。 一个是上部结构刚度传递到基础计算中,这一块涉及到上部结构和基础两个模型的计算,我们做得非常巧妙,很智能。上部刚度的凝聚支持动态的凝聚参数判断,对于超大底盘的结构,能动态减少出口数量,在牺牲较小精度的条件下大量减少计算量。 在基础模型计算,也用了了很妙的机制,进行上部刚度矩阵凝聚结果的自动拆分为合适的MATRIX单元。 第二个是有限元程序自动支持进程内计算与子进程计算,可以混用。这样可以隔离一些管理和内存上的问题。两种模式下的进度log,数据管理等都完全不需要变化,这里又再一次很骄傲地受益于精良的程序架构。子进程方式下采用异步的log控制器,而且支持很先进的中断计算。 还有一个,在ICF中增加了一种模式,称为Transaction。 和经典的数据库一致,在开启Transaction后,读写性能会大幅度提高,而且Transaction是自治的,只需要开启关闭,其他的不需要有任何变化。 然后开始进行大规模题目的测试,上限已经达到100w自由度,很领先。 ——————————— 10月也是一个很好的月份,都很开心。 11. 2011年11月 这个月还是测试,测试,不提。 这个月又被要求加一个新的功能,基础计算中后浇带的模拟计算,很罗嗦。但是我们有先进的储备,死活单元+自动单元分组,很简单的处理就好了,抽象了一个局部模型分析出来,取名PartialModelAnalysis,很稳定。 然后还是继续改进,改进无止境。重构了下命令行参数的解析,定义通用的规则,后面的增加参数也不用逐个解析。 ICF逐渐成为了后处理的瓶颈,查到原因是频繁的缓冲交换,于是增加了一个多并发的Turbo模式,根据系统内存智能适应,效果很好。 目标总是一步一步被提高,从最初的要求能计算30w自由度,逐渐被要求到50w、70w、100w。而且随着多塔的要求,还要适应越来越多的振型。原先的有些设计是针对50w的优化设计,100w再加100个振型是不能承受之重。好在,谁让咱们的设计牛呢。加入内存映射,ICF同步支持,只需要局部的小量代码就可以了。 11月就这么多啰嗦事情。相对前两个月来说,这个月有时候并不是非常开心,难免有些低谷起伏,但是我是小强,我喜欢向前,喜欢努力,加油。 12. 2011年12月 资源是一点一点省出来的,就像钱要开源,更要节流。 除去优化之外,本月逐渐增加竖向地震的计算,这一部分由于以前糟糕的代码,加一点东西都会引入错误和不兼容。找到一个肯动脑筋水平又好的人真的很难很难。 由于Midas building和etabs的特点,本月决定把原计划下一版本的功能提前,就是根据振型参与质量来自动决断振型个数,Midas building的这个功能很赞,于是我们也有了。 ETABS的RITZ向量法在很多情况下会是一个比较好的手段,于是我们有了。 —————- 2011年要结束了,12月开心。 感谢2011。
about 1 month ago - No comments
在前一段时间考虑云服务的时候,大致整理了一个系统架构。只是业余工作,和公司工作无关。 借用了一下云服务的概念,目前通过服务端的程序为用户提供对应的数据服务。而整个架构是在满足工程计算方面的实际需求,而不进行过度设计。 1. 整体特点 UcoCloud架构如下图所示,主要包括web前端、Master主控服务以及一系列的Worker工作机。 UcoCloud以Master服务为核心,负责任务队列、调度以及Worker的管理,不涉及具体业务。这里的Master服务不同与Gate服务,如果后来业务需要可以增加Gate服务,从而支持多个Master。 Worker承担具体业务,可以不同类型,可以随时增加更多worker来增强计算能力。 Web前端只是一个Master服务交互的界面,与用户进行交互。 必要时可以增加专门的File Server。 2. Master服务 Master服务主要功能有3个,维护Task队列和Worker在线列表,同时负责Task的调度。Master采用简单授权,以JSON格式数据交换;Master建议用Python开发,为有状态服务。 任务队列 /Task 包括以下接口服务: •Add: 增加任务 (ROLE_USER) •View: 查看任务 (ROLE_USER) •Delete: 删除任务 (ROLE_USER) •List: 任务列表(ROLE_USER) •Result: 任务结果(ROLE_USER) •Get: 获取任务(ROLE_WORKER) •Update: 更新任务(ROLE_WORKER) Worker列表 /Worker 包括以下接口服务: •Register : 注册worker(ROLE_WORKER) •Exit : 退出worker(ROLE_WORKER) •Check : 心跳消息,获取任务列表 •调度器 /Scheduler •Update : 调度器更新(如果是有状态服务,应该自起线程自动维护) 关于调度机制: (主要涉及调度任务的分配、已分配任务的检测和重新分配等,待补充完善) 3. web前端 Web前端为Master服务的前端,Web前端不维护具体数据。Web前端从Master服务获取信息;Web与Master之间使用JSON数据交流。…
about 1 month ago - No comments
无聊的技术笔记: 环境:VS2008 sp1 调试机(A):win7 32bit 被调试机(B): xp 32bit 即在B机上运行程序,A机上进行调试。 ———————————— 最简单的步骤如下: B机上 (1) B机上的建立一个与A机当前账户相同的用户名,密码相同,管理员权限。 (2) 在B机安装rdbgsetup.exe,位于VS2008安装光盘上,选择对应的OS类型。 (3) 在B机上打开组策略(gpedit.msc),修改“网络访问:本地账户的共享与安全模式”,选择“经典-本地账户以自己身份验证” (4) B机上打开Remote Debuging Monitor A机上 选择Debug-Attach to Process Qualifier: 通过浏览找到对应B机。 注意 需要注意防火墙要对相关端口放行。 其他的就和本机调试一致。
about 2 years ago - 2 comments
TAR(Type And Run)是我一直以来所用的快速启动软件,最喜欢的是它那个快捷键呼出的超级简洁的命令行,而且TAR支持自动提取系统中已经注册的别名,比如excel就可以打开excel,mspaint打开画图。另外TAR支持插件,最常用的就是tar_math,可以对输入命令行的计算式进行计算,给出结果。 当然tar_math也存在缺点,那就是对大整数不支持,而且函数也不够丰富。另外还想增加一个查字典的功能。于是决定给TAR做个插件,取名叫tar_pytar。tar_pytar不只是个插件,而是一个python的接口插件。有了这个插件之后,就可以直接用python给TAR增加功能,而不是重新编译。 官方网站上有插件接口文件找不到了,于是给作者-=GaLaN=-发邮件要来了接口。TAR是拿Delphi写的,不过没关系。 时间紧张,只说明一下tar_pytar通过python接口提供的功能: 完整的math功能,完全可以取代tar_math。因为背后是python嘛。 词典功能,输入查询的英文单词,可以返回中文解释。(从dict.cn查询,同样感谢python的强大) 以后: 作为一个工作的中心,就是一些人对待emacs/tc的态度。
about 3 years ago - 1 comment
有一段接近1000行的Fortran77程序,需要在一个新程序中重用,而且非常不想编译新程序的时候还需要fortran编译器,而且为了日后维护方便,也不想把它弄成静态lib。于是决定把它转换成C程序。 以往都是手动转或者看懂后重写,不过这段计算复杂,而且有不少隐含变量,还有equivalence语句,于是找到了f2c这个工具,使用效果非常好。转换后的结果可以直接编译,而且通过简单的处理也可以去掉对f2c.h的依赖。 f2c的主页在:http://www.netlib.org/f2c/,提供源代码和二进制文件下载。 f2c完整源代码(126KB) f2c的mswin平台命令行(131KB) f2c使用说明 f2c更新记录 其实f2c的使用方法非常简单: f2c [ option ... ] file … 一般option取默认即可,如 f2c romform.f 。 需要注意的是,fortran的文件后缀必须是.f或者.F,.for是不认的,而且严格执行72列的限制。
about 3 years ago - 1 comment
单纯的增加UNICODE,_UNICODE宏,很容易出现链接错误,故笔记如下: 修改C++\Preprocessor :添加_UNICODE和UNICODE Link\Output: Entry-Point Symbol 填入指定入口 UNICODE Windows : wWinMainCRTStartup UNICODE Console : wmainCRTStartup (如果转换会MBCS,若编译错误,则指定入口) 非 UNICODE Windows: WinMainCRTStartup 非 UNICODE Console: mainCRTStartup 如果原先程序为main函数,则需要修改为_tmian。另外如果原先程序中存在__FILE__宏,则出现编译错误,因为__FILE__ 是ANSI字符串,可以如下定义 __WFILE__ : #define WT2(x) L ## x #define WT(x) WT2(x) #define __WFILE__ WT(__FILE__)
about 3 years ago - No comments
很多名词火了很久了,自己后知后觉。 XP、TDD、结对编程、敏捷开发… 这里面的核心是Test-first Design,是一种思想。就像从面向过程转向面向对象一样,是另外的一种考虑问题的思路。 所以,体会如下: TDD很重要,但是TDD的用意并不是保证没有bug,而是让程序员明白,首先关注的应该是做成什么效果,而不是先去考虑该怎么做。
about 4 years ago - 51 comments
由shirouzu开发的IP Messenger,也就是IPMsg,可以说是当前公司局域网中应用最广的LAN IM软件。它不需要服务器,可以很方便的发送消息以及传送文件和文件夹,非常方便。当前IPMsg的主流版本是2.06,由“azhi”汉化制作,并取了一个响亮的中文名字”飞鸽传书“。不过其在网站上提供的源代码中并未包含中文资源。 我在“IPMsg2.50Alpha 4发布”中提到了,在沉寂多年后,IPMsg的作者终于决定开始更新IP Messenger(IPMsg),最新的版本已经是2.50 Alpha 7。主要的改动有: 增加了对Vista的支持 支持Windows XP的主题风格 增加了收到消息时候的托盘区的气球提示(Balloon Notice) 支持UTF-8编码 文本的编辑框改用RichEdit,可以粘贴复制富文本RTF格式内容。(不过传递之后仍只保留文本) 另外,通过阅读程序,发现作者似乎有增加插件(Plugin)功能的打算。 现在程序有的日文版和英文版两个版本,本人以前提过,会制作一个中文版出来。现在释放一个,如果有bug,欢迎留言或者发邮件告知。(IPMsg作者抱怨收到过很多中文邮件,并且是真正的IPMSG用户发的,但是看不懂。所以有问题在这里提比较有效 ;)) 2008.11.26 更新:修正了原先没有密码的时候设定密码提示“验证失败的问题” (Daniel) 下载链接: [本地下载IPMsg-20090105] (2009.01.05更新) [源代码下载] (vc6工程,包含了英文、日文、中文资源)(20081127更新)
about 4 years ago - No comments
今天从水木上得知Visual.Assist.X终于更新了,而且BRD的patch也很好用。我用VA已经很多年,特别是对从10.3.1555开始增加的Refact功能尤其爱不释手。但是在10.3.1555版本中有个低级的bug,就是在Debug时候,如果直接用鼠标拖动变量到Watch窗口,代码编辑窗口会自动的将改行滚动末尾,让人恼火不已。 经过测试1469版本已经消除了这些bug,并且图标也更换了。 下载地址: Visual.Assist.X.v10.4.1619: A.官方地址 Patch: A.NewSmth B.satwe.com