luasocket学习ltn12中文版
- 格式:doc
- 大小:113.50 KB
- 文档页数:15
LUACOMLUACOM-IDL-VBS2013-01-31 12:00:18--点击数:57 LUA很好用,在Windows 下COM是老大,如果能结合它们的功能,那会是比较酷的。
LuaCOM库(目前版本1.4)非常好的扮演了这个牵线搭桥的角色,本文不讨论Luacom的各项功能,大家可下载LuaCOM User Manual手册作全面的了解。
这面只是举一个HelloWorld的例子,以及在实现这个例子过程的一点教训。
网上关于这方面的详细例子不多(也可能是本人的搜索方法不是很对),基本上找不着HellowWorld档次的例子,所以感觉有必要写一个博客,与有兴趣的读者共享,也做为自己的笔记。
说废话一向不是本人的风格,现在就开始。
准备必要的工具,如果有安装了VS IDE那是最好的,除了MIDL.exe之外还有Visual Studio Command Prompt (2010)都可以轻松获得。
再就是Lua.exe和LuaCOM.dll,这里有个教训就是Lua.exe和LuaCOM.dll的版本要相适应(LuaCOM.dll最好是1.4版本的,1.3好像测试无法正常通过,也没仔细去研究,用上1.4的就正常了,如果大家能在1.3下通过下边这个例子,请给个跟贴,谢谢)。
准备一个idl 文件,然后使用MIDL.exe生成一个tlb文件,文件名分别为test.idl和test.tlb。
test.idl[cpp] //VBScript and JScript donot support [in,out], use [in,out] or [out,retval] //import "unknwn.idl";[ uuid(991AB5E0-97C4-4ecc-9926-D76038C517A1), version(1.0) ] library TEST{ importlib("STDOLE2.TLB");[ object,uuid(1AB5DCC7-11F7-441f-962C-57A528F85F47), dual, oleautomation, version(1.0), helpstring("luacom interface implement test 1.0") ] interface ITest : IDispatch { voidVersion([in,out]short* major, [in,out]short* minor); }; [uuid(340DFD25-59B2-49b4-A693-A7B19A13FD42)] coclass Test { [default] dispinterfaceITest; } }; 本人不熟悉VBScript和JScript,一开始参数只是指定[out],结果一定得不到正常的返回结果(没有返回结果),在网上搜了搜才知道不支持[out]参数,如果在LuaCOM,这样的参数是能正常返回的。
Intended AudienceThis course is recommended for:–Quality Assurance and Performance Engineers Course ObjectivesAfter completing this course, you should be able to:–Identify the information that you need for load testing –Identify the components of LoadRunner (LR)OverviewThis five-day course introduces students to LoadRunner 12.0. The course covers topics about the Virtual User Generator (VuGen), Controller, and Analysis tools. This course is designed to give you a foundation in basic load testing tasks. You create and run load test scenarios using the Controller. The Analysis tool is used to analyze load test results. You learn to work with the graphs to display data after a test is executed.The hands-on labs are designed to provide you with the knowledge necessary to create scripts in VuGen, execute scenarios in the Controller, and view the results in the Analysis tool. The course consists of focused, task-oriented lectures, text, and a series of detailed hands-on labs to teach the course material to the student. The hands-on labs use version 12.0 of the software.MODULES: CONTROLLER AND ANALYSIS – THREE DAYS Module 1: Course Overview of LoadRunner 12.0 Essentials–Identify the contents and objectives of the course–Define the class schedule and class logistics–Identify the related courses–Discuss the lab environment detailsModule 2: Introduction to HP LoadRunner (LR) 12.0–Explain the need for load testing–Describe various types of performance test objectives–Identify the steps of the LR methodology–Define a scenario in the context of LR–Identify strategies for creating effective scenariosModule 3: What’s New in LR 12.0–Identify the key new features of LR 12.0, including:o Enhanced mobile testingo Continuous testingo Deploying Load Generators (LGs) in the cloudo Building a communityo Communication interface enhancementso User experience and miscellaneous enhancementsModule 4: Planning an Effective Load Test–Define measurable goals for your load test–Gather preliminary information before load testing your system–Organize system information effectively–Use gathered information to plan load testsModule 5: Installing LR Components–Describe the LR architecture–Determine where to install the LR components–Identify the software and hardware required for installation–Troubleshoot LG connectivity issues–Configure the Network Virtualization (NV) settingsModule 6: Introduction to Scenarios–Describe the elements of a LR scenario–Explain the basic steps for creating a scenario–Configure a LG in the scenarioModule 7: Using Run-Time Settings–Define run-time settings for load testing–Describe the difference between run-time settings for scripts and scenarios –Configure run-time settings based on load testing goalsModule 8: Scheduling Scenarios–Configure scenario scheduling–Describe the scheduling by scenario and by group options–Describe the real-world schedule and basic schedule run modes–Manage schedules using the actions grid and the scenario interactive graph –Stop a scenarioModule 9: Using Performance Monitors–Describe the value of performance monitors–Select performance monitors to achieve load test goals–Add measurements for performance-based goalsModule 10: Running a Scenario–Prepare for a scenario run–Define the scenario running process–Identify the best practices for running a scenario efficiently–Run a scenario–Discuss common run-time errorsModule 11: Using the Analysis Tool–Describe the analysis tool and the categories of analysis graphs–Describe the value of analyzing results–Use graphs to display data–Describe graph data and raw data–Apply granularity to many graphs, merge graphs, and perform auto-correlation –Use service-level agreement (SLA) reports–Run report generation utilitiesMODULES: VuGen – TWO DAYSModule 1: Course Overview of Virtual User Generator 12.0 Essentials–Identify the contents and objectives of the course–Define the class schedule and class logistics–Identify the related courses–Discuss the lab environment detailsModule 2: Introduction to Virtual User Generator (VuGen)12.0–Define Virtual User (Vuser) and VuGen–Explore the new look and feel of the VuGen UI–Explain how to use the step navigator and solution explorer–Discuss the script workflow–Create scripts using VuGen–Record business processes with VuGenModule 3: What’s New in VuGen in 12.0–Explore the new look and feel of the VuGen UI–Describe the user experience and protocol enhancements–Build a community and describe the concept of flexible deliveryModule 4: Recording Scripts for Web Applications–Access and use the protocol advisor for recording–Create VuGen scripts by recording user steps–Save scripts in HP Application Lifecycle Management (ALM)–Create a Vuser script template–Create business process reportsModule 5: Replaying the Vuser Scripts–Recognize the debugging tools available in VuGen–Identify and configure the appropriate web run-time settings for replaying scripts –Replay and debug the script in VuGenModule 6: Inserting Transactions into the Script–Explain the use of transactions in a script–Add a transaction into a script during recording–Insert a transaction into a script after recordingModule 7: Parameterizing a Script–Define parameterization–Determine when to parameterize a script–Create and modify parameter lists–Create new parameters–Work with parameter properties–Configure run-time settings for parametersModule 8: Verifying the Vuser Scripts–Identify the need to use verification in scripts–Define verification for scripts–Add text checkpoints during and after recording of scriptsModule 9: Creating Actions for a Web Script–Define an action for a web script–Record a script with multiple actions–Create action blocksModule 10: Using the VuGen Editor–Work with the VuGen Editor–Send customized output messages to the Replay Log–Identify basic C code including statements, variables, and functions–Apply basic debugging techniques in VuGenModule 11: Using the Advanced Scripting Techniques for Vuser Scripts–Explain the general LR functions–Explain the protocol-specific functionsModule 12: Auto Correlation After Recording–Describe correlation–Work with the Correlation Studio–Correlate dynamic values after recording a scriptModule 13: Using Manual Correlation–Explain the manual correlation process–Configure the parameters for correlation–Correlate a script manually by:o Using the WDiff utilityo Adding the web_reg_save_param_ex correlation functiono Parameterizing the dynamic value in the scriptModule 14: Auto Correlation During Recording–Create correlation rules to auto correlate during recording–Regenerate and record scripts–Import and export correlation rules。
第8章ARM ADS 集成开发环境的使用在这一章里,将介绍ARM 开发软件ADS(ARM Developer Suite) 。
通过学习如何在CodeWarrior IDE 集成开发环境下编写,编译一个工程的例子,使读者能够掌握在ADS 软件平台下开发用户应用程序。
本章还描述了如何使用AXD 调试工程,使读者对于调试工程有个初步的理解,为进一步的使用和掌握调试工具起到抛砖引玉的作用。
本章主要内容有:-ADS 软件组成介绍-使用ADS 创建工程-用AXD 进行代码调试8.1 ADS 集成开发环境组成介绍ARM ADS 全称为ARM Developer Suite 。
是ARM 公司推出的新一代ARM 集成开发工具。
现在ADS 的最新版本是 1.2,它取代了早期的ADS1.1 和ADS1.0 。
它除了可以安装在Windows NT4 ,Windows 2000 ,Windows 98 和Windows 95 操作系统下,还支持Windows XP 和Windows Me 操作系统。
ADS 由命令行开发工具,ARM 时实库,GUI 开发环境(Code Warrior 和AXD) ,实用程序和支持软件组成。
有了这些部件,用户就可以为ARM 系列的RISC 处理器编写和调试自己的开发应用程序了。
下面就详细介绍一下ADS 的各个组成部分。
8.1.1 命令行开发工具这些工具完成将源代码编译,链接成可执行代码的功能。
ADS 提供下面的命令行开发工具:armccarmcc 是ARM C 编译器。
这个编译器通过了Plum Hall C Validation Suite 为ANSI C 的一致性测试。
armcc 用于将用ANSI C 编写的程序编译成32 位ARM 指令代码。
因为armcc 是我们最常用的编译器,所以对此作一个详细的介绍。
在命令控制台环境下,输入命令:armcc –help可以查看armcc 的语法格式以及最常用的一些操作选项armcc 最基本的用法为:armcc [options] file1 file2 ... filen这里的option 是编译器所需要的选项,fiel1,file2 file是n 相关的文件名。
soket基础知识WinSock基本知识这里不打算系统地介绍socket或者WinSock 的知识。
首先介绍WinSock API函数,讲解阻塞/非阻塞的概念;然后介绍socket的使用。
1. W inSock APISocket接口是网络编程(通常是TCP/IP协议,也可以是其他协议)的API。
最早的Socket接口是Berkeley接口,在Unxi操作系统中实现。
WinSock也是一个基于Socket模型的API,在MicrosoftWindows操作系统类中使用。
它在Berkeley接口函数的基础之上,还增加了基于消息驱动机制的Windows扩展函数。
Winscok1.1只支持TCP/IP网络,WinSock2.0增加了对更多协议的支持。
这里,讨论TCP/IP网络上的API。
其次,获取远地信息的数据库函数是阻塞函数(因此,WinSock提供了其异步版本);在Berkeley socket函数部分中,不涉及网络I/O、本地端工作的函数是非阻塞函数;在Berkeley socket函数部分中,网络I/O 的函数是可阻塞函数,也就是它们可以阻塞执行,也可以不阻塞执行。
这些函数都使用了一个socket,如果它们使用的socket是阻塞的,则这些函数是阻塞函数;如果它们使用的socket是非阻塞的,则这些函数是非阻塞函数。
创建一个socket时,可以指定它是否阻塞。
在缺省情况下,Berkerley的Socket函数和WinSock都创建“阻塞”的socket。
阻塞socket通过使用select函数或者WSAAsynSelect函数在指定操作下变成非阻塞的。
WSAAsyncSelect函数原型如下。
int WSAAsyncSelect(SOCKET s,HWND hWnd,u_int wMsg,long lEvent);其中,参数1指定了要操作的socket句柄;参数2指定了一个窗口句柄;参数3指定了一个消息,参数4指定了网络事件,可以是多个事件的组合,如:FD_READ 准备读FD_WRITE 准备写FD_OOB 带外数据到达FD_ACCEPT 收到连接FD_CONNECT 完成连接FD_CLOSE 关闭socket。
SocketTool V4.0使用说明版权申明:SocketTool V4.0是基于以往SocketTool基础上开发,Smset唯一拥有完全的版权。
使用者可以免费使用SocketTool,以及基于JavaScript编程进行二次开发,实现定制的测试工具。
使用者无权擅自修改SocketTool在初始启动界面中自带的提示信息,包括:软件名称,软件版本号,开发者名称,技术交流群号等信息。
TCP/UDP Socket调试工具提供了TCP Server,TCP Client,UDP Server,UDP Client,UDP Group五种Socket调试方案。
下面是一份简要的使用流程:TCP通信测试:1)创建TCP Server选中左方的TCP Server,然后点击”创建”按钮,软件弹出监听端口输入框。
输入监听端口后,即创建了一个在指定端口上进行监听的TCP Server Socket。
TCP Server Socket创建时,软件会自动启动TCP Server Socket处于监听状态:2)创建TCP Client选中左方的TCP Client,然后点击”创建”按钮,软件弹出输入框:确认后,软件即创建了一个TCP Client Socket.创建TCP Client Socket时,软件不会自动进行连接Socket的操作.2)连接Socket点击刚创建的TCP Client,右方会出现其相关操作面板,点击“连接”按钮进行Socket连接。
这时,TCP Client就建立了与TCP Server的连接。
在TCP Server下面,自动增加了一个与该连接对应的Socket。
3)数据收发在连接建立成功后,可以进行数据收发的测试:当鼠标点中每个Socket时,软件都会在右方提供操作该Socket的面板.在面板里提供了数据收发的窗口。
其中下面的是数据发送窗口.点中TCP Server方的Socket,然后在操作面板中输入数据12345,然后点击发送:在TCP Client端的Socket即可收到数据,可以点击TCP Client Socket,进行察看.反之,TCP Client也可以向TCP Server发送数据关于十六进制HEX格式的发送:把显示十六进制的选择项选中,然后在数据发送窗口即处于HEX输入模式了,在里面直接输入HEX格式内容:如313233,然后点击发送数据按钮:在TCP Server端的Socket即可收到数据123:UDP通信测试:分别创建UDP Server和UDP Client:UDP Server刚创建成功时,其对方IP及对方端口都是空的.必须要收到UDP Client先发送的数据包后,UDP Server才确定对方IP及对方端口,并进行数据包的发送.UDP Client则在创建的时候及指定了对方IP及对方端口号,因此,两个UDP Client之间也是可以通信的.而UDP Server则必须与UDP Client才行进行通信.先由UDP Client发送数据:UDP Servers收到数据在UDP Server收到过UDP Client的数据后,其对方IP地址和UDP端口均可确定下来,然后UDP Server也可以向UDP Client发送数据了:关于UDP广播的测试:在UDP Client创建时,可以选择是否创建UDP广播:点击广播地址后,软件会自动计算广播地址:点击确定后,创建的UDP Socket发送的就是UDP广播包了.UDP组播测试1)创建UDP组选中左方的UDP Group,然后点击”创建”按钮,软件弹出组播地址即组播端口输入框。
**Enterprise Architect 12 中文用户手册****第一章:简介**Enterprise Architect(简称EA)是一款功能强大的企业级建模和设计工具,支持软件开发的全过程,包括需求分析、系统设计、测试和维护等。
EA 12是其第十二个版本,为用户提供了更为丰富的功能和更优秀的用户体验。
**第二章:安装与启动**1. 从官方网站下载EA 12的安装包。
2. 双击安装包,按照提示完成安装过程。
3. 安装完成后,双击桌面图标启动EA 12。
**第三章:基础功能**1. **项目管理**:用户可以创建新的项目或在已存在的项目中进行工作,还支持多人协同工作。
2. **建模与设计**:EA 12提供了多种建模工具,如UML、BPMN、ERD 等,用户可以根据需要选择合适的工具进行建模和设计。
3. **代码生成**:EA 12可以将用户的设计直接转换成多种编程语言的代码,大大提高了开发效率。
**第四章:高级功能**1. **版本控制**:EA 12内置了版本控制功能,可以追踪模型的变化历史,方便用户进行版本管理和协作。
2. **模板库**:EA 12提供了一系列的模板和模式,可以帮助用户更快速的创建模型和设计。
3. **扩展性**:EA 12支持用户自定义扩展,用户可以根据自己的需要编写插件来扩展EA的功能。
**第五章:操作指南**这一部分会详细地解释如何使用EA 12进行建模、设计、生成代码等操作,包括但不限于创建类图、顺序图、状态图,设置属性,生成代码等。
**第六章:常见问题与解决方案**这一部分会列出用户在使用EA 12过程中可能遇到的问题,以及相应的解决方案。
**第七章:总结与展望**EA 12是一款功能全面、操作简便的企业级建模和设计工具,无论是对于初学者还是对于经验丰富的开发者,都能提供强大的支持。
未来,我们期待EA 能够继续引入更多的创新功能,为用户提供更好的服务。
注意:本手册的内容仅供参考,如有需要,请查阅官方文档或联系官方客服。
R e a l f l o w12中英文对照表v0.01Realflow2012菜单中英文对照表这是主界面(为了截图我把窗口缩小了,不过大概的布局还是能看清的)最上面一排是标题栏,期待补完……从左往右依次是新建、打开、保存,这个跟大部分软件一样。
从左往右依次是选择、移动、旋转、缩放,最后一个是控制被选择物体的轴在世界轴向与自身轴向间切换。
场景缩放与节点目录。
(rf4菜单)从左往右依次为:第一个图标:添加一个新的发射器到场景中。
第二个图标:添加一个场或者消亡区域或者其他东西到场景中。
第三个图标:添加一个新的(多边形)物体到场景中。
第四个图标:添加一个约束到场景中。
第五个图标:添加一个新的网格到场景中。
第六个图标:添加一个新的摄像机到场景中。
第七个图标:添加一个RealWave(真实波浪?)到场景中。
四视图与曲线编辑器窗口Nodes(上左):节点Exclusive Links(上中):独有连接、单独连接Global Links(上右):总体连接、全局连接Node Params(下左):节点参数Messages(下右):信息时间控制区期待补完……动画控制区期待补完……发射器(emitter)篇Circle:圆形发射器Square:矩形发射器Sphere:球形发射器Linear:线形发射器Triangle:三角形发射器Spline:曲线发射器Cylinder:圆柱形发射器Bitmap:位图发射器Object emitter:物体发射器Fill Object:填充物体RW_Splash:RW飞溅RW_Particles:RW粒子Fibers:纤维发射器Binary Loader:NBinary Loader:节点参数菜单:公共参数:Node:节点Simulation:模拟Position:方位 Inactive:无效、不活动Rotation:旋转 Active:有效、活动Scale:缩放Cache:缓存Pivot:枢轴、中心点Parent to:连接到父物体Color:颜色Xform particles:变换粒子 Yes/No:是/否(下文同)Initial state:初始状态Use initial state:使用初始状态Make initial state:生成初始状态Particles:粒子Type:类型 Gas:气体Resolution:分辨率Density:密度Int pressure:内压力Ext pressure:外压力Viscosity:粘性Temperature:温度Ext temperature:表面温度Heat capacity:热能Heat conductivity:热传导Compute vorticity:计算涡流Max particles:最大粒子数量Particles:粒子Type:类型 Liquid:液体Resolution:分辨率Density:密度Int pressure:内压力Ext pressure:外压力Viscosity:粘性Surface tension:表面张力Interpolation:插补None:无Compute vorticity:计算涡流 Local:局部Max particles:最大粒子数量 Global:总体、全局Particles:粒子Type:类型 Dumb:哑、无声Resolution:分辨率Density:密度Max particles:最大粒子数量Particles:粒子Type:类型 Elastics:弹性体、橡皮带Resolution:分辨率Density:密度Spring:弹力Damping:阻尼Elastic limit:Break limit:Max particles:最大粒子数量Particles:粒子Type:类型 Custom:自定义Resolution:分辨率Density:密度Int pressure:内压力Ext pressure:外压力Viscosity:粘性Temperature:温度Max particles:最大粒子数量Edit:编辑Statistics:统计Existent particles:存在粒子数量Emitted particles:发射粒子数量Particle mass:粒子质量V min:V最小值V max:V最大值Display:显示Visible:可见性Point size:粒子点大小Show arrows:显示箭头Arrow length:箭头长度Property:属性Automatic range:自动距离Min range:最小距离 Velocity:速度Min range color:最小距离颜色 Velocity X:速度的X方向Max range:最大距离 Velocity Y:速度的Y方向Max range color:最大距离颜色 Velocity Z:速度的Z方向Pressure:压力Density:密度Vorticity:涡流Temperature:温度Constant:固定独立参数:Circle:圆形发射器Volume:体积Speed:速度V random:V随机H random:H随机Ring ratio:环形比例Side emission:边线发射Square:矩形发射器Volume:体积Speed:速度V random:V随机H random:H随机Side emission:边线发射Sphere:圆形发射器Speed:速度Randomness:随机Fill sphere:填充球体发射器Linear:线形发射器Height:高度Length:长度Speed:速度V random:V随机H random:H随机Triangle:三角形发射器Volume:体积Speed:速度V random:V随机H random:H随机Side emission:边线发射Bitmap:位图发射器Emission mask:发射面具File list:文件目录Single:单帧Number of files:文件数目 Sequence-end:序列末端Affect:影响 Sequence-keep:保持序列Val min:最小值 Sequence-loop:循环序列Val max:最大值Volume:体积Speed:速度V random:V随机 None:无H random:H随机 Viscosity:可见Spline:曲线发射器Affect:影响Creation:创建Speed:速度 Force:力Randomness:随机 Velocity:速度Kill leaving:消除残留Edit:编辑Insert CP:插入CPDelete CP:删除CP@ CP index:CP索引 Axis:轴@ CP axial:CP轴向 Tube:圆管@ CP radial:CP放射 Edge:边@ CP vortex:CP涡流@ CP radius:CP半径@ CP rotation:CP旋转@ CP link:CP连接Cylinder:圆柱形发射器Speed:速度V random:V随机H random:H随机Object emitter:物体发射器Object:物体Parent velocity per:每父物体速度Distance threshold:距离起点Jittering:抖动Speed:速度Randomness:随机Smooth normals:平滑法线Use texture:使用纹理Select Faces:选择面Select Vertex:选择点Clear selection:清除选择Fill Object:填充物体Object:物体Fill Volume:填充体积Fill X radio:填充X半径Fill Y radio:填充Y半径Fill Z radio:填充Z半径Remove # layers:移除层Jittering:抖动@ seed:种子值Particle layer:粒子层RW_Splash:RW飞溅Object:物体Waterline mult:吃水线倍率@ H strength:H强度@ V strength:V强度@ Side emission:边线发射@ Normal speed:法线速度Underwater mult:水下倍率@ Depth threshold:深度起点Speed mult:速度倍率Parent Obj Speed:父物体速度Speed threshold:速度起点Speed variation:速度变化Drying speed:干燥速度RW_Particles:RW粒子Speed:速度Speed variation:速度变化Height for emission:发射高度Speed for emission:发射速度Fibers:纤维发射器Object:物体Length:长度Length variation:长度变化Threshold:起点Stiffness:硬度Fiber damping:纤维阻尼Interpolate:窜改Select Vertex:选择点Clear selection:清除选择Create:创建Mesh tube:网格圆管@ Mesh width:网格宽度@ Mesh width end:网格末端宽度@ Mesh section:网格切片Binary Loader:二进制装入程序BIN sequence:本系列Mode:形式方法Reverse:反向的Number of files:文件数Frame Offset:帧偏移Release particles:释放粒子Load particles:负荷粒子Reset xform:变换重置Subdivisions:分支机构@ Output sequence:输出序列NBinary Loader:****装载机BIN sequences:本序列Load Bin Seq:负载箱序列Remove Bin Seq:删除本条Mode:模式Reverse:反向的Number of files:文件数Frame offset:帧偏移Reset xform:变换重置力场与消亡区域(daemon)篇k Volume:体积消亡k Age:年龄消亡k Speed:速度消亡k Isolated:隔离消亡k Collision:碰撞消亡k Sphere:球形消亡Gravity:重力场Attractor:吸引器DSpline:曲线力场Wind:风力场Vortex:漩涡场Layered Vortex:分层漩涡Limbo:不稳定状态Tractor:牵引器Coriolis:向心力场Ellipsoid force:椭球力场Drag force:拖动力场Surface tension:表面张力Noise field:噪波场Heater:加热器Texture Gizmo:Magic:魔术Object field:物体场Color plane:色彩平面Scripted:脚本节点参数菜单:公共参数:(请参考发射器篇公共参数节点一栏,一模一样,在此省略)独立参数:k Volume:体积消亡Fit to object:适配到物体Fit to scene:适配到场景Inverse:翻转k Age:年龄消亡Iife:生命值Variation:变化Split:分裂@ # child:子物体数量k speed:速度消亡Min speed:最小速度Max speed:最大速度Limit & keep:限制与保持Split:分裂@ # child:子物体数量Bounded:边界Boundary:边界范围k Isolated:隔离消亡Isolated time:隔离时间k Collision:碰撞消亡All objects:所有物体Select objects:选择物体Split:分裂@ # child:子物体数量k Sphere:球形消亡Fit to object:适配到物体Fit to scene:适配到场景Radius:半径Inverse:翻转Gravity:重力场Affect:影响Strength:强度 Force:力Bounded:边界 Velocity:速度Underwater:水下No:无Box:立方体Plane:平面Push:扩展Attractor:吸引器Affect:影响Internal force:内力 Force:力Internal radius:内半径 Velocity:速度External force:外力External radius:外半径Attenuated:衰减Attractor type:吸引类型Planet radius:圆球半径 Spherical:球形Axial strength:轴向强度 Axial:轴向Bounded:边界 Planetary:不定向Dspline:曲线力场Affect:影响Vortex strength:涡流强度Axial strength:轴向强度 force:力Radial strength:辐射强度 velocity:速度Bounded:边界Edit:编辑Insert CP:插入CPDelete CP:删除CP@ CP index:CP索引@ CP axial:CP轴向@ CP radial:CP放射@ CP vortex:CP涡流@ CP radius:CP半径@ CP link:CP连接Wind:风力场Affect:影响Strength:强度Noise strength:噪波强度Noise scale:噪波缩放 Force:力Bounded:边界 Velocity:速度@ radius 1:半径1@ radius 2:半径2@ height:高度Vortex:漩涡场Affect:影响Rot strength:旋转强度 Force:力Central strength:中心强度 Velocity:速度Attenuation:衰减Bounded:边界Boundary:边界范围Vortex type:涡流类型Radius:半径 Linear:线性Bound Sup: Square:平方Bound Inf: Cubic:立方Classic:经典Complex:复合Layered Vortex:分层漩涡Affect:影响Num layers:分层数量Offset:偏移 Force:力Current Layer:当前层 Velocity:速度@ Vortex type:涡流类型@ Strength:强度@ Radius:半径@ Width:宽度 Classic:经典@ Bounded:边界 Complex:复合@ Boundary:边界范围Limbo:不稳定状态Affect:影响Width:宽度Strength 1:强度1 Force:力Attenuate 1:衰减1 Velocity:速度Strength 2:强度2Attenuate 2:衰减2Tractor:牵引器Affect:影响F1 Force:力F2 Velocity:速度F3F4Coriolis:向心力场Affect:影响 Force:力Strength:强度 Velocity:速度Ellipsoid force:椭球力场Min velocity:最小速度Min gain:最小增量Max velocity:最大速度Max gain:最大增量Clamp:钳紧Drag force:拖动力场Drag strength:拖动强度Shield effect:盾效果No:无@ shield inverse:盾翻转 Square:正方形Force limit:力量限制 Sphere:圆形Bounded type:边界类型Attenuation:衰减 No:无Affect vertex:影响点 linear:线性Square:平方Cubic:立方Surface tension:表面张力Strength:强度balanced:平衡Noise field:噪波场Affect:影响Strength:强度 Force:力Scale Factor:缩放系数 Velocity:速度Bounded:边界Radius:半径多边形物体(object)篇Null:点Sphere:球体Hemisphere:半球体Cube:立方体Cylinder:圆柱体Vase:花瓶、杯子、碗Cone:圆锥体Plane:平面Torus:圆环体Rocket:火箭Capsule:胶囊Import:导入节点参数菜单:公共参数:Node:节点Simulation:模拟 Inactive:无效、不活动Dynamics:动力学 Active:有效、活动Position:方位 Cache:缓存Rotation:旋转Scale:缩放Pivot:枢轴、中心点Parent to:连接到父物体Color:颜色No:无SD<->Curve:SD文件与曲线互转 Rigid body:刚体Initial state:初始状态Soft body:柔体Use initial state:使用初始状态Make initial state:生成初始状态Texture:纹理Load Texture:读取纹理WetDry texture:@ resolution:分辨率@ filter loops #:过滤循环@ filter strength:过滤强度@ pixel strength:像素浓度@ ageing:时效Display:显示Visible:可见性Show normals:显示法线Show particles:显示粒子Normal size:法线大小 Face:面Normal type:法线类型 Vertex:点Reverse normals:翻转法线 VtxFace:Show texture:显示纹理独立参数:无约束(constraint)篇Ball_socket:球形槽Hinge:铰链Slider:滑动Fixed:固定Rope:捆绑Path_follow:跟随路径Car_wheel:滚动Limb:网格(mesh)篇节点参数菜单:Mesh:网格Build:创建 Metaballs:变形球Type:类型 Mpolygons:Clone obj:复制物体 Clone obj:复制物体Polygon size:多边形大小@ Num Faces:面数LOD resolution:细节级别分辨率@ Camera:摄像机No:无@ Min distance:最小距离 Camera:摄像机@ Min Polygon size:最小多边形大小@ Max distance:最大距离@ Max Polygon size:最大多边形大小Texture:纹理UVW Mapping:UVW贴图Load texture:读取纹理Tiling:贴砖Appy map now:现在应用贴图Speed info:速度信息 None:无Filters:过滤 UV particle:UV粒子Filter method:过滤方法 UV sprite:UV精灵Relaxation:松弛 Speed:速度Tension:张力、拉紧 Pressure:压力Steps:步数 Temperature:温度Clipping:限制、剪裁Clipping box:限制立方体Clipping objects:限制物体InOut clipping:内外限制Camera clipping:摄像机限制Camera:摄像机 Inside:内部Realwave clipping:Realwave限制 Outside:外部Optimize:优化Optimize:优化Camera:摄像机Merge Iterations:融合迭代次数@ Ite threshold:迭代阈值 No:无Face subdivision:表面细分 Curvature:曲率@ Sub threshold:细分阈值 Camera:摄像机Display:显示Color:颜色Transparency:透明度Back face culling:背面消隐与网格关联的粒子发射器(比如:)节点参数菜单:Field:区域Blend factor:融合系数Radius:半径Subtractive field:负(相反)区域Noise:噪波Fractal noise:分型噪波@ Amplitude:振幅@ Frequency:频率@ Octaves:倍频程Deformation:变形Speed stretching:拉伸速度Min str scale:最小拉伸缩放Max str scale:最大拉伸缩放Speed flattening:压扁速度Min flat scale:最小压扁速度Max flat scale:最大压扁速度Min speed:最小速度Max speed:最大速度摄像机(camera)篇Realwave篇节点参数菜单:显示网格流体菜单范围,领域发射体泡沫飞溅湿泡沫泼溅湿的下雨的泡沫船的吃水线雾水汽每段的飞溅每段的泡沫每段的雾菜单栏第二排(rf2012)1.transformations:变换2.position :位置3.scale :刻度尺度4.shear:剪切5.rotation :旋转6. 最近的侧面7.最近的侧面(拓展)8. 粒子工具9. 粒子的选择10. 测量工具11 创建数组12 破裂13. 回复时间模拟14 设置选定可见15 设置选定的隐藏16. 设置选定的包围盒17. 设置选定的线框18. 设置选定的闪光阴影19. 设置选定的平滑阴影20. 设置选定的活动21. 设置选定的缓存22. 设置选定的无效23.设置选定的出口数据24. 禁用数据输出选择25. 改变分辨率26.计算vorticiy27.正常年龄28. 建立网格右下角控制栏1.建立网格2. 硬化方法3. 可视化细节层次4. 发送给招聘经理5. 去上关键帧6. 去下个关键帧7. 设置一个关键帧中的当前位置图层1.可见物视程2. 模仿模拟3. 层4. 可见的已有的5. 显示模式6.增加新的层与选定的节点7.流体动力学对象的动态显示网格菜单粒子网格粒子网格(标准)网格网格显示的菜单单一的多样的。
localsocket用法详解摘要:1.localsocket简介2.localsocket创建方式3.localsocket通信方式4.localsocket应用案例5.localsocket总结正文:localsocket是Python标准库中的一个模块,它提供了一个在本地计算机上的一个进程与另一个进程进行通信的接口。
localsocket模块主要使用了两个socket类型:AF_UNIX和AF_INET。
AF_UNIX类型的socket主要用于在同一台计算机上的两个进程之间进行通信,而AF_INET类型的socket则用于在Internet上的两个主机之间进行通信。
localsocket的创建方式主要有两种:第一种是使用socket.socket()函数创建一个socket对象,然后通过socket对象的bind()方法绑定到一个本地地址,最后通过socket对象的listen()方法监听连接。
第二种是使用socket.socketpair()函数创建一个已连接的socket对,这个socket对可以立即用于通信,而不需要进行绑定和监听。
localsocket的通信方式主要是通过读写socket对象的recv()方法和send()方法实现的。
在发送数据时,需要将数据转换成字节串,然后通过socket对象的send()方法发送出去。
在接收数据时,需要通过socket对象的recv()方法接收字节串,然后将其转换成原始数据。
localsocket模块在实际应用中有很多案例,比如在多线程或多进程程序中,使用localsocket模块可以方便地进行进程间或线程间的通信。
此外,localsocket模块还可以用于实现本地套接字通信,比如在Python中实现一个本地聊天程序等。
Filters, sources and sinks: design, motivation and examples or Functional programming for the rest of us by DiegoNehab 应用程序有时有太多的信息需要在内存处理,即使现在已经有足够的内存,也会被迫把数据分成小部分处理。,以原子方式处理所有数据可能需要很长的时间,这妨碍了用户与应用程序交互。复杂的数据转换往往可以被定义为一系列简单的操作。几个不同的复杂的转换可以共享相同的更简单的操作,因此,定义一个统一的接口,把他们组合起来,是很好的处理方法。以下概念构成我们对这些问题的解决方案。
Filters是一些函数,接受连续块的输入,并产生连续的输出块。此外,连接所有的输出数据作为输入数据的级联filter应用的结果是相同的。因此,边界是无关紧要的:Filters必须处理由用户任意分割的输入数据。
chain是一个函数,将两个(或更多)的函数连接起来,但其接口和其他函数组件的接口没有什么区别。因此,链式Filters可用于任何一个可以使用原子Filter的地方。然而,其对数据的影响是其组成的filters的综合效果。请注意, chain可以连接其他的chain,创建任意复杂的操作,而像原子操作那样使用。
Filter可以被看作是通过它的数据流在网络内部的节点,并且可能根据不同的filter对数据进行转换。把这些节点链接起来,组成完整的网络数据流图。为此我们需要添加初始和最终的网络节点,分别是source和sink。具体来说,source是一个函数,每次调用时产生新的数据。相应的,sink函数是接收到的数据的最终目的地。source和sink可以使用chain和filter相连。
总的来数,Filter,chain,source和sink,都是被动的实体:他们需要被重复调用以便使系统运行起来。Pumps提供了推动数据流过网络的动力,从一个source到一个sink。
我们希望,通过例子使这些概念将变的清晰。在下面的章节中,我们从一个简单的接口开始,不断的完善这个接口,直到没有明显的缺点。我们做出的演化不是人为强制的:它按部就班,巩固了我们对这些概念的理解。
1 一个具体的例子 一些数据转换操作容易用Filter方式来实现,比如行结束的文本标准化,Base64和Quoted-Printable传输内容的编码,把文本切分成行,SMTP字节填充等等。 2
我们将要定义第一个filter接口,“行结束符标准化”。稍后我们讨论为什么实现起来并不容易。 假设我们得到一个文本,含有未知的行结束符,比如常见的Unix(LF)的Mac操作系统(CR)和DOS(CRLF)(包括可能的混合情况)。我们希望能够编写如下代码:
input = source.chain(source.file(io.stdin), normalize("\r\n")) output = sink.file(io.stdout) pump(input, output)
这个程序从标准输入流中读取数据和行结束标记,用CRLF (MIME标准定义的标记)标准化,最后将结果发送到标准输出流。为此,我们使用一个标准输入:stdin,一个Filter:normalize,组成chain。然后执行pump调用,不断从stdin获取数据,并将其输送到sink:标准输出。 为了使讨论更具体,我们从讨论如何实现一个标准化Filter开始,这个normalize是一个函数,它用于创建一个filter功能。我们初步的filter接口如下:filter接收输入数据块,并返回处理的数据块。在没有更多的输入数据时,用户通知filter,用nil作为参数来调用它。filter返回最后的数据块。 虽然接口极其简单,实现似乎并不那么简单明确。任何遵守此接口的过滤器需要保持某种在调用之间的上下文。这是因为数据块可以越过标记一行的末尾之间的CR和LF字符。这个上下文存储的需求,促成了工厂函数的使用:每个工厂函数被调用时,返回一个filter,具有它自己的上下文,如此使我们可以在同一时间得到多个独立的filter。对于这个normalize filter,我们意识到,简单明了的解决方案是不够的(例如,在产生任何输出之前,把所有输入连接起来放入上下文中),我们将不得不寻找另一种方式。 我们将实现分为两部分:一个低级别的filter,和一个高级别的filter工厂。低级别的filter将在C实现,不会携带任何函数调用之间的上下文。高级别filter的工厂,在Lua中实现,filter工厂将创建并返回高级别的filter,它为低级别的filter提供上下文,但其内部细节对用户隔离。这样,我们利用C的效率优势,进行底层工作,利用lua的简单性做上下文记录。
1.1 Lua 部分的实现 function filter.cycle(low, ctx, extra) return function(chunk) local ret -- ctx上下文只对low底层filter有用处,每次调用通过返回值更新 ret, ctx = low(ctx, chunk, extra) -- 返回处理结果 nil表示处理完毕,没有更多数据了 return ret end end 3
function normalize(marker) return cycle(eol, 0, marker) end normalize工厂函数只是简单地调用一个更加通用的名叫cycle的工厂。这个工厂接收一个低级别的filter,一个初始上下文和一些额外的值,并返回相应的高级别filter。高级别Filer使用一个新的数据块作为参数被调用,它调用低级别的过滤器,传递上一次的上下文,新的数据块和额外的参数。低级别的Filer生成处理过的数据块和一个新的上下文。最后,高级别Filer更新其内部上下文,返回处理过数据块给用户。低级别的过滤器完成了所有的工作。请注意,这个实现,利用了Lua5.0词法作用域规则,在函数调用之间存储本地上下文。 思考一下这个低级别的filter,我们注意到行结束标记标准化问题本身没有完美的解决方案。困难来自一个空行定义,它固有的模糊性。然而,以下的解决方案非常适用于任何情况的输入,以及混合输入的非空行。它作为一个很好的例子,如何实现一个低级别的过滤器。 这是我们所做的:CR和LF被认为是换行符的候选字符。我们认为这样得到得到一个结束标记:如果候选字符是单独的一个,或后面跟着一个不同的候选字符。也就是说,CRCR和LFLF被认为是两个行结束标记,但CR LF和LFCR的被认为只是一个结束标记。这个方法可以照顾到Mac OS,Mac OS X,VMS和Unix,DOS和MIME,以及其他可能更晦涩的约定的系统。
1.2 C部分实现 低级别的filter划分为两个简单的函数。内部函数完成实际的转换,他判断每一个输入字符,并决定了输出什么,以及如何修改上下文。上下文告知最后一个字符是否是候选字符,若是,是哪个候选字符。 #define candidate(c) (c == CR || c == LF) static int process(int c, int last, const char *marker, luaL_Buffer *buffer) { if (candidate(c)) { if (candidate(last)) { //相同候选字符,添加一个标准化maker(CRLF)返回非换行符0 if (c == last) luaL_addstring(buffer, marker); return 0; } else { //不同候选字符,添加一个标准化maker(CRLF)返回是当前换行符字符 luaL_addstring(buffer, marker); return c; } } else { //不是候选字符,读入这个字符,返回非换行符0 luaL_putchar(buffer, c); return 0; } 4
} 内部函数 使用Lua的辅助库的缓冲接口,带来了效率和易用性。外部函数简单地使用Lua交互接口。它接收上下文和输入数据块(以及一个可选的行结束标记),并返回转换后的输出和新的上下文。 static int eol(lua_State *L) { -- 上下文表示得到的最后一个换行符是什么,CR,LF,或者非换行符(用0表示) int ctx = luaL_checkint(L, 1); size_t isize = 0; const char *input = luaL_optlstring(L, 2, NULL, &isize); const char *last = input + isize; const char *marker = luaL_optstring(L, 3, CRLF); luaL_Buffer buffer; luaL_buffinit(L, &buffer); if (!input) { -- 输入块为nil,重置ctx为nil,返回上次的字符为0,表示非换行符 lua_pushnil(L); lua_pushnumber(L, 0); return 2; } while (input < last) -- 逐个字符读入判断,进行标准化 -- ctx 表示上一次读入的字符,CF,LF,非换行符用0表示 ctx = process(*input++, ctx, marker, &buffer); luaL_pushresult(&buffer); lua_pushnumber(L, ctx); return 2; } 请注意,如果输入块是nil,操作将被视为完成。在这种情况下,循环将不会执行并且上下文被重置到初始状态。这使得过滤器可以被被无数次重用。这是一个不错的主意,如果可能就像这样写过滤器。 除了行结束标准化如上所示的过滤器,许多其他过滤器可以按照同样的思路实现。比如Base64和Quoted-Printable的内容传输编码,文本断行,SMTP字节填充等。具有挑战性的部分是决定用什么作为上下文。例如文本断行,它可能是留在当前行的字节数。比如Base64编码,它可能是在输入字节中以3个字节为单位进行分割的字节串。
2 链接起来 chain的概念引入后,Filer变得更加强大。假设你有一个Quoted-Printable编码的Filer,你要编码一些文字。根据要求,文本必须在编码前标准化为标准范式。简化任务的一个很好的接口是创建一个工厂,工厂创建一个组合过滤器,数据经过多个过滤器进行传递,同时还可以作为一种最初的简单过滤器来使用。 local function chain2(f1, f2) return function(chunk)