作者:wdc63

使用Google Drive自动备份网站数据

VPS商提供的自动备份往往是需要收费的,许多站点程序都没有较好的自动备份插件,譬如我使用的wordpress就有updraft备份插件,可以很好将wordpress的数据定时备份到多种远程云服务或通过邮件发送。但wikipedia就找不到那么好的备份插件了,这时候我们可以使用Google Drive 的API来完成类似于updraft插件的功能(GITHUB上有不少的七牛云备份程序,但这样不便和其他站点统一管理),网上的相关教程较少,因此在此记录,方便各位参照。 首先创建google api凭据 1 移步https://console.developers.google.com/flows/enableapi?apiid=drive 如果已经有应用选择一项,没有创建一个新的应用。 2 点击启用API,跳转到“凭据”页面,这里直接取消。 3 点击“OAuth同意屏幕”,填写电子邮件地址和产品名称 4 点击“凭据”,创建凭据,选择第二项:OAuth 2.0 客户端 ID。 5 记下你的客户端... Read More | Share it now!

作者:wdc63

面向设计师的Python基础教程 —第五课函数 & 面向过程编程

一 函数 在编程语言当中,函数通常是指一段具有特定语法,能够完成特定功能,并且在一定范围内能够重用的程序段。函数功能的出现是计算机语言历史上的一个重大转折,函数给编程带来了模块化、可复用性、可读性、适合并行和易于维护等特点,更重要的是,在我们前面所讲的三种基本程序结构上,函数给程序带来了更为灵活的组织方式,是当代高级计算机语言具备的最基本特征之一。目前仍有很多被广泛使用的计算机语言是基于纯函数思想的例如lisp、Haskell、Erlang等,这些语言只有纯函数,没有类似其他语言的变量和对象。函数式语言和函数式编程思想广泛用于科学研究领域,但并不适合编写与用户互动的应用程序开发。 1函数的定义 在Python中我们已经大量的接触过函数了,例如print()就是一个函数,不过这些函数属于自带的标准函数或第三方库内部函数,除此之外,我们可以在Python 中自定义函数。 在Python中我们使用def关键字来定义一个函数。 def 函数名(参数列表): 表达式 一个函数包含函数名,参数(可为空),函数主体部分,返回值。起语法结构如下,例如我们定义一个求平方函数和一个没有返回值的函数: def square(x): return x**2 def helloworld(): print(‘Hello World’) 其中参数和返回值可以为空,实际上Python传入值和返回值都是None,但是函数的表达式部分不能为空,如果什么也不做用一句pass即可,例如以下为定义一个最小化无任何功能的函数: def a(): pass 2 调用函数 在Python中调用函数一般形式如下,如果函数有返回值,可以给变量赋值。 函数名(参数列表) 变量 = 函数名(参数列表) >>> def square(x): return x**2 print(x**2) >>> square(5) 25 >>> b =... Read More | Share it now!

作者:wdc63

第四课 循环 & 图灵完备系统

一 循环 我们学了前两种程序执行结构,现在来看第三种:循环。循环是一段在程序中只出现一次,但可能会连续运行多次的代码或代码组。正是由于“循环”的存在,计算机的快速计算能力才真正有了用武之地,否则算法的每一行都需要人工敲进去,那和在纸上进行计算有何异? 通常来讲,程序语言中的循环有两种结构形式:当型、直到型、遍历型循环。Python中没有直到型循环(一般为Do  loop  Until结构,这里就不详讲,请各位自查资料),Python中的当型循环和遍历型循环分别对应为w.hile语句和For语句。 1.1 当型循环 当型循环是在执行循环体前首先进行判断,当条件满足时进入循环,否则结束循环,当型循环也叫“前测试型”循环。在Python当中, 进行当型循环的语句为while语句。其语法形式如下: while 判断表达式: 语句体 注意while为小写,另外while语句也可以带有else字句,当while内的条件不满足时且循环体内没有break语句,会执行else字句内的内容,但这种方法不太常用。 while 判断表达式: 语句体1(不包含break句) else: 语句体2 while语句的执行流程图如下: 注意使用while循环时要思考好判断条件,如果判断条件如果恒为真而在执行语句体内又没有满足某条件跳出的语句时会形成一个死循环,也就是程序将无限循环下去,来看一个使用while循环的简单例子,在屏幕上打印出我们熟悉的斐波那契数列。 我们知道斐波那契数列是一个从数列第三项开始,每一项都等于前两项之和的数列。即A=A+A,这里我们顺便复习一下列表的知识,使用列表来放置这一系列数列,使用list.append()方法来向数组内添加一个元素。代码如下:(1_shulie.py): An_2 = 1 An_1 = 1 shulie = while 1: An = An_2 + An_1 An_2 = An_1 An_1 =... Read More | Share it now!

作者:wdc63

第三课 Python 基础语法规则 & 条件控制

一 Python基础语法规则 基础语法规则前面已经悉数介绍了一些,这里我们来做一个总结,当然也包含一些前面没有讲到的部分。 1 注释规则 你已经知道了,注释是用于对源代码的解释,再好的编程语言如Python这种可读性极强的语言都是需要在代码内作注释的,注释部分的内容在程序运行时会忽略。Python中注释有两种方法,一种是使用#进行一行注释,另一种是使用””” “””的多行注释。后一种注释一般会用在某个代码文件的开头,用来解释整个代码文件所包含的大致内容。在上节课内容接触很多了,不再举例。 2 语句分行与合行 根据PEP的代码规范,一行代码只能描述一个语句,Python中也提供了将多句代码放于一行,或者将一句较长的代码分成多行编写。 • 多行句子(必须处于同一个层级内,阅读完下面的代码缩进你就懂了)可以用;(分号)隔开放在同一行当中。(其他语言中也有类似方法,例如VB中使用冒号) • 一句太长的句子可用 \ 反斜杠符号分解成多行。 • 用()[]{}这个几个括号扩起来的语句可以跨行 a = 1 ; b = 2 ; c\ =3 a = if (a == b and c == d) 尽管这个方法存在,前者一般不推荐,后者实在句子太长不得已才使用,因为这种方法是不利于代码理解的。有些程序员就是喜欢搞怪,专写混乱的代码,例如下面这个例子,是一个完全可以运行的代码。结果生成一个拼花图案。这样的代码你能读懂么? _ =\ “””if! 1:”e,V=100 0,(0j-1)**-.2; v,S=.5/ V.real, ;w=1 -v”def! E(T,A, B,C):P ,Q,R=B*w+ A*v,B*w+C *v,A*w+B*v;retur n*T+*(1-T)”f or!i!in!_:S =sum(,[])”imp ort!cair o!as!O; s=O.Ima geSurfac e(1,e,e) ;c=O.Con text(s); M,L,G=c. move_to ,c.line_to,c.s et_sour ce_rgb... Read More | Share it now!

作者:wdc63

Rhino.python实时动态显示与鼠标捕捉 —像玩Processing一样玩Rhino.Python?

Rhino.Python平台是以静态建模为主的算法三维建模工具,很少有人会用它来作一些动态效果,因为在一般情况下使用Rhino.Python进行动态效果显示需要首先生成模型然后再删除之,这个过程会极大的影响速度,而且一般只能依靠写好的算法自动运行,与即时的鼠标或键盘事件互动也很困难。 不过还是有方法可循,虽然与Processing、cinder。openframwork等工具完全不可比拟。 最初从自带案例中的CustomGetPoint.py得到相关线索。Rhinocommon SDK可查询到Rhino.Display类下的DisplayPipeline类型可以在Rhino中进行比较简单的即时显示,虽说简单,就模型类型而言还是比较全面,点、线、面和基本曲面几何体都可不生成模型的情况下即时显示。Rhino本身的显示依靠OpenGL,因此速度尚可。缺陷便是这里面无法进行阴影、纹理着色和光源等高级显示效果。 DisplayPipeline类型可借助.net编程中的事件与委托(event,delegate)来调用DynamicDraw(动态显示)方法。DynamicDraw方法的第二个参数只能是Rhino.Input.Custom. GetPointDrawEventArgs。 在Rhinocommon SDK中可以查到Rhino.Input.Custom.GetPointDrawEventArgs类有Display方法,Rhino.Input.Custom.GetPointDrawEventArgs属于Rhino.Display.DisplayPipeline的成员。 因此就可以使用以下语法在Rhino视窗内进行即时显示: point = Rhino.Input.Custom.GetPoint() def func(sender,args):   args.Display.DrawPoint(args.CurrentPoint,System.Drawing.Color.Blue) point.DynamicDraw += func point.Get() 以上point.DynamicDraw += func一句便是将gp.DynamicDraw方法与func函数进行事件委托,如果要取消委托可以用point.DynamicDraw -= func。 由于DynamicDraw方法只能向函数内传递一个参数,即GetPointDrawEventArgs,可以定义一个类来达到传递多个参数的方法,如以下例子 gp = Rhino.Input.Custom.GetPoint() mypt =... Read More | Share it now!

作者:wdc63

第二课 初识Python & 变量的故事

一 Python与PyCharm的安装 1 关于版本 学习Python目前有两个版本可选,Python 2.x和Python 3.x(http://wiki.python.org/moin/Python2orPython3上有较详细的介绍),Python 2.x已经停止开发,最后一个版本为Python 2.7.5,虽然已经停止开发,但这个版本目前应用得最为广泛,Rhino5上的Python版本便是Python 2.7.x(因为IronPython还没有更新到Python 3.x)。Python 3.x的开发代号为Python 3000,相对于Python 2.x有较大的升级,而且并不向下兼容(有一个2to3的脚本,但大部分情况下都不太好用) ,是Python社区目前主要维护的版本和未来的开发方向。虽然Python 3.x目前的第三方库并不丰富,但Python 3.x的改变是朝向更为简洁、更易理解和更为准确的方向,而且相对于最新的Python 2.7.x如Rhino5上的Python 2.7.x,语法和基本库上矛盾的地方不多(从Python 2.6.x开始,开发组就考虑了用户向Python 3.x的过渡),本教程以Python基于目前最新版Python 3.3.2(2013.07.**),因为很多同学学习Python的目的是使用Rhino.Python,因此遇到语法特别之处我会指出。 2 下载和安装Python 如果你使用的是今年发布的Mac OS X操作系统的苹果电脑或者Ubuntu、Red Hat、openSUSE等主流的Linux操作系统,系统里已经预装好了Python 3.x,如果你使用的是Windows 操作系统,你需要下载一个Python副本安装到系统当中,如果你想在Android平板或者Ipad上学习Python那也是可以的,你可以下载Python for IOS和Python for Android。同样还有Sun Solaris、AS/400、BeOS等非主流平台上的版本。因此Python是一个跨平台的计算机语言,一次编写,随处可用,但本教程将基于Windows 7系统。Windows、Mac OS... Read More | Share it now!

作者:wdc63

面向设计师的Python基础教程 — 第一课 为什么学编程&为什么学Python

一、关于本系列教程 Rhino5时代McNeel推出了Rhino.Python,McNeel不仅老老实实的将原RhinoScript语法全部移植了过去,而且Rhino.Python本身就基于IronPython平台,大有推新除陈之势。IronPython是为了实现在微软.net平台使用Python语言而开发的一个平台,我们知道传统的RhinoSDK工具RhinoCommon便是基于.net平台,因此Rhino.Python不仅能进行类似Rhinoscript的外层建模工具的参数化编程,而且能使用Rhino底层的开发库进行Rhino插件一类的程序开发。因此作为准备以Rhino为主要参数化应用平台的同学们,在掌握Grasshopper之外还想掌握一门代码式编程语言的话,Rhino.Python无疑是你最好的选择。 目前Rhino.Python网络上已经有一些教程,例如原厂出的《RhnioPython101》 ,shaper3d的jorin同学的“跟我读 【RhinoPython 101】系列视频教程”等。但我觉得已有的教程并没有从涉及语言本身的基础性知识开始,一开始就在Rhino平台上进行形态建模的编程,例如《RhnioPython101》只是对《Rhinoscript101》的简单改写。这或许无助与你遇到其他一些算法问题需要解决时的思维问题。 学习编程一定不要眼光只放在一个语言平台上,尤其是学习你第一门计算机语言时,你更需要学习的是算法思维/计算机科学家的思维,这样你学习这门知识才是对你一生有帮助的,保不住明天更为强大一款针对建筑师的参数化平台产生。 因此我的这系列教程打算分成这几个部分,第一部分不会接触Rhino.Python,直接从原生的Pyhton平台和一个优秀IDE(编程平台,具有高亮语法、错误识别、debug等功能)JetBrains... Read More | Share it now!

作者:wdc63

New Book,NanJing Hill 及其他

有半年没有更新博客,实在惭愧。业已本科毕业,但除却与朋友同学告别有所伤感之外,其他方面未曾感到有何改变,毕竟还将作为学子继续在原来的象牙塔呆下去。本科的最后一个学期主要做成了两件事(毕业设计太烂,不算之一)1 与曾旭东教授和陈辉合作,以及在李憬君同学、周宏伟学长、郭璐瑛同学帮助下完成的《Rhinoceros & Grasshopper 参数化建模》8月份已经出版,不过这仍然是一本偏重于入门级别的基础知识教材,所以还望高手勿喷。就Rhino部分而言,这本教材中的主要讲解逻辑还是沿用我之前电子书中的Rhinoceros介绍逻辑,比较重要的工具都配上了具体操作案例和使用范畴的介绍,重新梳理了NURBS原理部分。不过整本书的图像印刷质量实在不敢恭维,请各位还是对照文字和光盘中给的每个文件来进行学习。 感谢天津大学的Hunter兄给我原来的那本电子教程加上了文档结构图以及章节链接,这里提供下载,这个版本是docx格式,《犀牛建模入门》发布以来,几个原始链接下载次数超过6000次,许多同学给我来信告诉我这本小教程对他有帮助,我也希望能更新此电子书的新版本,但个人精力和时间实在有限,若各位有心帮助他人的话,不妨在这本小资料中添加您自己的东西,您在发布新版本时只要不要将其商业化使用、以相同方式共享并且提到前面作者的名字即可,若您觉得您在这本资料中做了非常重要的工作,请将您排在第一作者。下载地址:https://skydrive.live.com/view.aspx/.Public/%e5%a4%a7%e5%b7%9d%e7%9a%84%e7%8a%80%e7%89%9b%e5%85%a5%e9%97%a8%e6%95%99%e7%a8%8b%5E_%5E_%e5%b8%a6%e6%96%87%e6%a1%a3%e7%bb%93%e6%9e%84%e5%9b%be.docx?cid=d3cc97d2718ad514&sc=documents 2 . 7月至8月与陈辉、秦媛媛和余琪完成了Nangjing... Read More | Share it now!

作者:wdc63

建筑院校数字年会上的Cryengine3技术演示

以下是重庆大学举办的建筑院校数字年会上的Cryengine3的一个简短技术演示,由于比较匆忙,只是简单的表现了一下cryengine3用于建筑虚拟现实的技术特性。 http://www.tudou.com/programs/view/OlKubZ7KXg0/ 建筑虚拟现实技术正在从制作预设的游览动画向参与者直接沉浸到虚拟建筑中去,与虚拟场景中的各个对象进行交互。 这是一项综合性的技术,简单来讲,可以从硬件层面和软件层面来看,硬件方面,各种体感或者视感设备正逐渐应用进来,从软件层面,场景真实氛围的营造和物理互动的实现需要好的软件引擎与硬件设备进行接口支持。不可否认,在表达场景真实性的实时渲染技术和物理特效方面,游戏领域是走在最前端的。 长期以来,游戏公司为了保持技术领先,优秀的引擎都是处于闭源状态,Crytec公司率先开放了其顶尖的游戏引擎:Cryengine,并提供在教育等一些非商用领域的免费使用授权,这给了我们提供了在虚拟现实技术方面向游戏借鉴和学习的机会。Hill Nangjing项目便使用Cryengine3这方面进行了尝试,从中可看到这类实时渲染引擎在建筑虚拟现实应用上的潜力。得到的作品也作为展品放置在门外的计算机上各位可以进行尝试。 经过我们的研究和总结,Cryengine3在建筑虚拟现实上具有以下的一些技术优势。 1. 作为顶尖的游戏引擎,Cryengine3得到的实时渲染画面公认具有非常真实的效果。 2.... Read More | Share it now!

作者:wdc63

Grasshopper动态渲染工具集(家里电脑渲染不给力,求人做个演示视频)

原始脚本在http://www.grasshopper3d.com/forum/topics/vray-animation发现,这个GH动态渲染脚本最初是在google group上的一个grasshopper论坛上由众人共同演绎而成。但gh0.7版本之后原脚本不在适用,因为新的GH版本简化、删除了rhino common中的某些类和函数标签。我差不多花了一个星期研究这几个脚本,结果的确令人兴奋,目前实现了将rhino中的任何一个静帧插件渲染器(vray、flamingo、penguin、rhino render等(很遗憾不包括hypershot和keyshot这两者都是独立渲染器))变为动态渲染器。包括GH动态效果的渲染、摄像机路径漫游渲染以及动态效果与路径漫游两者相结合的动画渲染。这个脚本集中主要包含了四组vb.net和dotnet... Read More | Share it now!