首页 文章 精选 留言 我的

精选列表

搜索[测试脚本],共10024篇文章
优秀的个人博客,低调大师

第九弹 - 脚本模式与参数视图

MaxCompute(原ODPS)是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用,支撑了多个BU的核心业务。 MaxCompute除了持续优化性能外,也致力于提升SQL语言的用户体验和表达能力,提高广大ODPS开发者的生产力。 MaxCompute基于ODPS2.0新一代的SQL引擎,显著提升了SQL语言编译过程的易用性与语言的表达能力。我们在此推出MaxCompute(ODPS2.0)重装上阵系列文章 第一弹 - 善用MaxCompute编译器的错误和警告第二弹 - 新的基本数据类型与内建函数第三弹 - 复杂类型第四弹 - CTE,VALUES,SEMIJOIN第五弹 - SELECT TRANSFORM第六弹 - User Defined Type第七弹 - Grouping Set, Cu

优秀的个人博客,低调大师

TypeScript 3.6 发布,微软脚本编程语言

TypeScript 3.6 已经发布了,更新内容如下: 使用更严格的生成器(Stricter Generators) TypeScript 3.6 引入了对迭代器和生成器函数(generator functions)的更严格检查。在早期版本中,生成器的使用者无法区分一个值是来自yield 操作或是从生成器返回。 另外,生成器仅仅假设yield 类型是任意的: 以第一段代码为例,在TypeScript 3.6 中,检查器会知道curr.value 的正确类型应为string,并在最后一个示例中纠正对 next() 的错误调用。这要归功于因在Iterator和IteratorResult类型声明中进行的一些更改而引入部分新的类型参数,以及TypeScript 用于代表称为Generator类型的生成器。 该版本中 Iterator 类型允许用户说明 yield 类型、返回的类型和 next 可以接受的类型。 在此基础上,新类型 Generator 是一个 Iterator,它同时存在 return 和 throw 方法,并且是可迭代的。 为了区分返回的值和生成的值,TypeScript 3.6 将 IteratorResult 类型转换为联合类型: type IteratorResult<T, TReturn = any> = IteratorYieldResult<T> | IteratorReturnResult<TReturn>; interface IteratorYieldResult<TYield> { done?: false; value: TYield; } interface IteratorReturnResult<TReturn> { done: true; value: TReturn; } 简而言之,这意味着在直接处理迭代器时,将能够适当地缩小迭代器的值。 为了正确表示可以从调用 next( ) 传入生成器的类型,TypeScript 3.6 还可以推断生成器函数主体内的某些 yield 用途。 如果你希望显式,还可以使用显式返回类型从 yield 表达式强制执行返回、yield 和计算的值的类型。如下,只能用布尔值调用 next( ),并且取决于 done 的值,value 要么是 string,要么是 number。 /** * - yields numbers * - returns strings * - can be passed in booleans */ function* counter(): Generator<number, string, boolean> { let i = 0; while (true) { if (yield i++) { break; } } return "done!"; } var iter = counter(); var curr = iter.next() while (!curr.done) { console.log(curr.value); curr = iter.next(curr.value === 5) } console.log(curr.value.toUpperCase()); // prints: // // 0 // 1 // 2 // 3 // 4 // 5 // DONE! 更精确的数组扩展 在默认情况下,TypeScript 使用一个更简单的发射,它只支持数组类型,并支持使用 --downlevelIteration 标志在其他类型上进行迭代。在此标志下,发出的代码更准确,但要大得多。但是,在某些边缘情况下,受支持的数组还是存在一些差异,如下: [...Array(5)] 等效于以下数组: [undefined, undefined, undefined, undefined, undefined] 但是,TypeScript将原始代码转换为以下代码: Array(5).slice(); 这是不一样的,Array(5)生成长度为 5 的数组,但没有属性: 当 TypeScript 调用 Slice( ) 时,它还会创建一个数组,其中包含尚未设置的索引。 3.6 版本引入了一个新的 __spreadArrays 助手,用于精确地模拟 ECMAScript 2015 中在 --downlevelIteration 之外中发生的情况。__SpreadArray 也可在 tslib 中使用。 Improved UX Around Promises Promise是当前处理异步数据的最常见方法之一,不幸的是,使用Promise面向对象的 API 通常会让使用者感到困惑。因此针对Promise被错误处理的情况,TypeScript 3.6 引入了一些改进。 例如,在将其传递给另一个函数之前,Promise忘记.then()或者await内容通常是很常见的。TypeScript 的错误消息现在是专用的,并告知使用者他们可能应该考虑使用await关键字。 另外还提供快速修复: 更好的 Unicode支持标识符 当发射到 ES 2015或其他时,3.6 版本包含更好地支持标识符中的 Unicode 字符: 在 SystemJS 中支持import.meta 3.6 版本支持在将 module 目标设置为 system 时,将 import.meta 转换为 context.meta。 get and set Accessors Are Allowed in Ambient Contexts 在早期版本的 TypeScript 中,并不允许在环境上下文中 set 和 get 访问器,其基本原理是,就写入和读取这些属性而言,访问器与属性并没有区别;然而,由于 ECMAScript 的类字段提案可能与现有版本的 TypeScript 中的行为不同,则需要一种方法来沟通这种不同的行为,以便在子类中提供适当的错误。 因此 TypeScript 3.6 中,用户可以在环境上下文中编写getter 和 setter。 环境类和函数可以合并 在以前版本中,在任何情况下合并类和函数都是有错的。此版本中,环境类和函数(带有 declare 修饰符的类/函数,或 .d.ts 文件中的类/函数)可以合并。如下内容: 而不需要使用: 它的一个优点是可以轻松地表达可调用的构造函数模式,同时允许名称空间与这些声明合并(因为 var 声明不能与名称空间合并)。 APIs to Support--buildand--incremental TypeScript 3.6增加了两组用于操作项目引用和增量式程序构建的 API。 对于 --incremental,用户可以使用createIncrementalProgram 和 createIncrementalCompilerHost API。用户还可以使用新的 readBuilderProgram 函数从该API 生成的 .tsbuildinfo 文件中重新补充旧的程序实例,该函数仅用于创建新程序(即不能修改返回的实例,它仅用于其他 Create*Program 函数中的oldProgram 参数)。 New TypeScript Playground 此版本中,新的 TypeScript playground支持许多新的选择,包括: target 选项(允许用户从 ES5 切换到 ES3、es2015、esnext 等) 所有标记(包括 strict) 对普通 JavaScript 文件的支持(使用 allowJS 和 CheckJS) 当共享链接到 playground 示例时,这些选项也会持续存在,这样用户就可以更可靠地共享示例。 Semicolon-Aware Code Edits 像 Visual Studio 和 Visual Studio Code 这样的编辑器可以自动应用快速修复、重构和其他转换,比如从其他模块自动导入值。这些转换由 TypeScript 驱动,老版本的 TypeScript 无条件地在每条语句的末尾添加分号;不幸的是,这不符合许多用户的样式指南,许多用户对编辑器插入分号不满意。 在此版本中,在应用这类编辑时,TypeScript 可以检测文件是否使用分号。如果你的文件是缺少分号,TypeScript 则不会添加分号。 Smarter Auto-Imports JavaScript 有许多不同的模块语法或约定:ECMAScript 标准、Node 支持的模块语法或约定(CommonJS)、AMD、System.js 等等。在大多数情况下,TypeScript 将默认使用 ECMAScript 模块语法自动导入,在具有不同编译器设置的某些 TypeScript 项目中,或者在具有普通 JavaScript 和 Require 调用的 Node 项目中,这通常是不合适的。 在 3.6 版本中,在决定如何自动导入其他模块之前,它会查看现有的导入。 Breaking Changes 类成员 constructor 现在是构造函数 根据 ECMAScript 规范,名为 constructor 的方法的类声明现在是构造函数,无论它们是使用标识符名称声明,还是使用字符串名称声明。 DOM 更新 在 lib.dom.d.ts 中已经删除或更改了许多声明,这包括(但不限于)以下内容: 全局 window 不再定义为类型 Window,而是定义为类型 Window & type of globalThis。在某些情况下,将其类型称为 typeof window GlobalFetch 移除了,而是使用 WindowOrWorkerGlobalScope Navigator上的某些非标准属性已经消失 experimental-webgl 移除了,而是使用webgl和webgl2 JSDoc 注解不再合并 在 JavaScript 文件中,TypeScript 只会在紧接 JSDoc 注解之前确定声明的类型。 关键字不能包含转义序列 以前,关键字被允许包含转义序列。3.6 版本不再允许: 关于 TypeScript 3.6 更多信息,请见TypeScript 网站。使用 npm 命令获取: npm install -g typescript 还可以通过以下方式获得编辑器支持: 下载Visual Studio 2019/2017 Visual Studio Code Sublime Text 3 via PackageControl 发布说明: https://devblogs.microsoft.com/typescript/announcing-typescript-3-6/

优秀的个人博客,低调大师

python 查找目录中的重复文件脚本

!/usr/bin/python coding=utf-8 from hashlib from sys from os from fnmatch CHUNK_SIZE=8192 def find_specific_files(root,patterns=['*'],exclude_dirs=[]): pass def get_chunk(filename): with open(filename) as f: while True: chunk=f.read(CHUNK_SIZE) if not chunk: break else: yield chunk def get_file_checksum(filename): h=hashlib.md5() for chunk in get_chunk(filename): h.update(chunk) return h.hexdigest() def main(): sys.argv.append("") directory=sys.argv[1] if not os.path.isdir(directory) raise SystemExit("{0} is not a directory".format(directory)) record={} for item in find_specific_files(directory): checksum=get_file_checksum(item) if checksum in record: print('find {0} vs {1}'.format(record[checksum],item)) else: record[checksum]=item if name=='main': main()

优秀的个人博客,低调大师

Python XlsxWriter业务流量周报表脚本(转载)

一、使用XlsxWriter模块生成Excel表格 安装XlsxWriter模块 pip2.7 install xlsxwriter 官网:http://xlsxwriter.readthedocs.org/ 常用方法说明: Workbook(filename [ options ])用于创建一个workbook对象 创建一个Excel文件 workbook = xlsxwriter.Workbook('chart.xlsx') add_worksheet(sheetname)用于添加一个工作表,空号中可以指定工作表名称,默认为Sheet1 创建一个工作表对象 worksheet = workbook.add_worksheet() add_format([properties]) 用于创建一个新的格式对象,参数[properties]为指定一个格式属性的字典如: bold = workbook.add_format( { 'bold' : True } ) 也可以通过Format methods完成格式的设置如: bold = workbook.add_format() bold.set_bold( ) worksheet.write(row,column,'data') 用于写入数据到指定位置的单元格row,column,坐标索引的起始位置为0 如果用坐标表示位置的话比如(2,0) 就是 (A3); 这就是表示在A1位置写入'hello' worksheet.write( 0 , 0 'hello' ) set_row ( row,height,cell_format,options ) 用于设置行单元格的属性,row为指定位置,height设置行高单位像素,cell_format指定定义好的格式对象调用,options设置行hidden(隐藏)、level(组合分级)、collapsed(折叠)操作示例如下: 设置第1行单元格高度为40像素,并调用格式cell_format 。 worksheet.set_row( 0,40,cell_format ) 隐藏第2行单元格 worksheet.set_row(1,None,None,{ 'hidden': True }) set_column(first_col,last_col,width,cell_format,options) 用于设置一列或多列单元格属性 bold = workbook.add_format( { 'bold' : True } ) 设置0到1(即A到B)列单元格宽度为10像素,并调用加粗格式。 worksheet.set_column( 0,1,bold ) 设置C到D列单元格宽度为20像素 worksheet.set_column( C:D,20 ) 隐藏E到G列单元格 worksheet.set_column( E:G,None,None,{ 'hidden' : 1} ) insert_image(row,col,image,[options]) 用于插入图片到指定的单元格 插入图片指定图片超链接 worksheet.insert_image('B5',' img/he.jpg ',{'url':'http://python.org'} ) add_chart(type:图表类型) 用于创建图表对象 图表样式:area面积样式、bar条形样式、column柱形样式、line线条样式、pie饼图样式、scatter散点样式、stock股票样式、radar雷达样式; 创建一个column柱形图表 chart = workbook.add_chart({ type,'column' }) 在A5单元格插入图表 worksheet.insert_chart( 'A5',chart ) chart.add_series( )用于添加一个数据系列到图表 常用的三个选项:categories作为设置图表类别标签范围,values为设置图标数据范围,line为设置图表线条属性。 chart.add_series({ 'categories' : '=Sheet1!$A$1:$A$5', 'values' : '=Sheet1!$B$1:$B$5', 'line' : { 'color' : 'red' }, }) 定制自动化业务流量报表周报 订制网站5个频道的流量报表周报,通过XlsxWriter模块将流量数据写入Excel文档,同时自动计算各频道周平均流量,再生成数据报表。 #!/usr/local/python27/bin/python2.7 #coding: utf-8 import sys reload``(sys) sys.setdefaultencoding(``'utf-8'``) ``#用于解决windows转linux出现的编码问题 import xlsxwriter workbook ``= xlsxwriter.Workbook(``'chart.xlsx'``) worksheet ``= workbook.add_worksheet() #创建图表对象,定义图表类型。 chart ``= workbook.add_chart({``'type'``:``'column'``}) title ``= [``'业务名称'``,``'星期一'``,``'星期二'``,``'星期三'``,``'星期四'``,``'星期五'``,``'星期六'``,``'星期日'``,``'平均流量'``] buname ``= [``'业务官网'``,``'新闻中心'``,``'购物频道'``,``'体育频道'``,``'亲子频道'``] data ``= [ [``150``,``152``,``158``,``149``,``155``,``145``,``148``], [``89``,``88``,``95``,``93``,``98``,``100``,``99``], [``201``,``200``,``198``,``175``,``170``,``198``,``195``], [``75``,``77``,``78``,``78``,``74``,``70``,``79``], [``88``,``85``,``87``,``90``,``93``,``88``,``84``], ] format = workbook.add_format() ``#定义格式,用于在部分单元格调用 format``.set_border(``1``) format_title ``= workbook.add_format() format_title.set_border(``1``) format_title.set_bg_color(``'#cccccc'``) format_ave ``= workbook.add_format() format_ave.set_border(``1``) format_ave.set_num_format(``'0.00'``) #使用行写入第一行业务名称及标题 worksheet.write_row(``'A1'``,title,format_title) #使用列写入从第一列的第二行开始写入频道标题 worksheet.write_column(``'A2'``,buname,``format``) #从B2开始写入数据项 worksheet.write_row(``'B2'``,data[``0``],``format``) worksheet.write_row(``'B3'``,data[``1``],``format``) worksheet.write_row(``'B4'``,data[``2``],``format``) worksheet.write_row(``'B5'``,data[``3``],``format``) worksheet.write_row(``'B6'``,data[``4``],``format``) #定义图表数据系列函数 def chart_series(cur_row): #这里是在求周平均值,I当前行的数据 = B:H当前行的值相加再求平均 worksheet.write_formula(``'I'``+``cur_row, ``'= AVERAGE(B'``+``cur_row``+``':H'``+``cur_row``+``')'``,format_ave) chart.add_series({ #这里是在工作表Sheet1中指定该图表类别的标签范围,从B1到H1,就是取了周一到周日。 'categories'``: ``'=Sheet1!$B$1:$H$1'``, #这里是设置图表数据的范围,从B当前数据行到H当前数据行。 'values'``: ``'=Sheet1!$B$'``+``cur_row``+``':$H$'``+``cur_row, 'line' : {``'color'``:``'black'``}, #引用了业务名称为图列项 'name' : ``'=Sheet1!$A$'``+``cur_row, }) for row ``in range``(``2``,``7``): chart_series(``str``(row)) #定义图表样式,每一个值都是一个不一样的样式。 chart.set_style(``2``) #定义图表的大小 chart.set_size({``'width'``:``577``,``'height'``:``287``}) #设置图表上方的大标题 chart.set_title({``'name'``:``'业务流量周报图'``}) #设置图表y轴的小标题 chart.set_y_axis({``'name'``:``'Mb/s'``}) #插入图表到A8的位置 worksheet.insert_chart(``'A8'``,chart) workbook.close() |

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册