精华内容
下载资源
问答
  • 描述:项目使用了Cucumber,着 feature 文件内部右键运行的时候,时候会出现右键菜单不可用且无法消除的情况,必须切换窗口消除这个菜单。这个不知道是 IDEA 还是它自带的 Gherkin 插件的一个bug,不是一个大...

    描述:

    项目使用了Cucumber,对着 feature 文件内部右键运行的时候,有时候会出现右键菜单不可用且无法消除的情况,必须切换窗口来消除这个菜单。

    这个不知道是 IDEA 还是它自带的 Gherkin 插件的一个bug,不是一个大问题,但是总是会误操作点出来。

    bug复现:

    当在 feature(gherkin 语法)文件中,如果对着非 Example 的一个数据右键:

    d5777a92704a29c1990c40dc16e3688b.png

    就会弹出以下提示,说找到两个Handler,要你选择一个,随便选择,OK 还是 Cancel 也随便:

    1f6ac93ad7fe6595d25902c0e696e1d3.png

    然后又会弹出一次,也随便选:

    图:略

    然后就会弹出这个右键菜单:

    这个菜单是消除不了的,除非你切换程序再切回来,它才会消失。

    而且这个菜单你可以点击,但没有高亮提示你当前鼠标是处于哪个选项。

    5084da0068fabf9324ebd194d02e1968.png

    解决:

    先说怎么解决,这个解决方法治标不治本,除非你去修改 IDEA 的源码。

    想给 IDEA 提 Issue,不过好像并不是直接能在 Github 上面提,有点麻烦就暂时算了。

    通过对 IDEA 源码远程 Debug 发现这两个 Handler 的作用:

    GherkinStepRenameHandler 是用来重命名 Step 的

    GherkinInplaceRenameHandler 是用来重命名 Example 中的变量的

    一般重命名都是使用 Shift + F6 操作的,但也支持右键菜单操作。

    解决方法就是,把其中一个去掉,就不会弹出确认框,也就不会导致后续菜单卡画面。

    只要在 gherkin.jar 中的 plugin.xml 中去掉其中一个即可。

    1 找到插件位置

    Community 版本:~\.IdeaIC2019.2\plugins\gherkin\lib

    or

    Ultimate 版本:[IDEA 安装路径]\plugins\gherkin\lib

    注意:两个版本的插件位置是不一样的。

    0223e395f1c7f235f35248b09c4fc117.png

    2 提取 jar 中的 META-INF/plugin.xml

    jar xf gherkin.jar META-INF/plugin.xml

    3 修改 META-INF/plugin.xml

    删掉其中的一个 Handler:

    我平时用不到 Example 的变量重命名,所以就选择删掉 GherkinInplaceRenameHandler。

    fd145d86ad76c179e6eead7ecad118ce.png

    4 将 META-INF/plugin.xml 更新回 jar中

    jar uf gherkin.jar META-INF/plugin.xml

    注意:这一步需要关闭 IDEA,不然 jar 会被程序占用而导致更新失败。

    最好将 gherkin.jar 备份一下。

    最后记得删掉提取出来的文件。

    5 查看是否解决

    对者一个数据右键,可以看到,直接就弹出右键菜单了,并且可以选择和取消:

    1d8b8e9b3aa42cfbb318acd9020c89d9.png

    原文:https://www.cnblogs.com/demojie/p/12286071.html

    展开全文
  • in文件其实就是一个文本文档,也没有要求文件名或者后缀名中必须“in”字样,用任何文件名均可运行。 in文件里的代码是按照编写的顺序进行解释执行,对于大部分命令行来说,前后顺序影响并不是很大,但是,对于...

    lammps软件只是一个求解器,没有可视化的前处理和后处理软件,所有的命令只能通过代码的方式输入到求解器进行求解计算。

    所有的命令都被写到一个称为“in”的文件里,对于初学者来说,熟悉in文件的编写是一个难点。

    in文件其实就是一个文本文档,也没有要求文件名或者后缀名中必须带有“in”字样,用任何文件名均可运行。

    in文件里的代码是按照编写的顺序进行解释执行,对于大部分命令行来说,前后顺序影响并不是很大,但是,对于一些命令,在执行过程中需要某个参数,则这个参数的定义和计算必须写在命令执行之前。

    例如,对晶体使用fix deform命令进行拉伸时,应变速率代码必须写到fix deform命令行的前面。

    lammps命令非常丰富,官方给出的说明手册就达2000多页,我们也不可能记住和使用所有的命令。

    对于某一个研究方向来说,常用的命令可能也就那么几十个,只要我们掌握这几十个命令基本上能够满足模拟要求。

    in文件按照模块,大体可以分为以下几类:

    (1)模拟环境参数设置

    这一部分主要设置一些模拟参数,比如模拟体系的单位(units)、边界条件(boundary)、原子类型(atom_style)、邻居列表的定义(neighbor)、时间步长(timestep)等。

    (2)体系模型的建立

    这一部分的功能就是建立体系的原子模型,通常有两种方式。

    第一种方式是使用lammps自带的建模命令建模,比如使用region命令划分区域,create_box命令生成模拟盒子,lattcie确定原子晶格常数,create_atoms生成原子。

    使用命令行建模比较抽象,建模过程不是“所见即所得”,为了验证所建模型是否符合要求,可以在建模代码的后面使用write_data命令把模型保持为data文件,在lammps中运行in文件,用ovito观察一下模型是否正确。

    第二种建模方式是使用其他软件进行可视化的建模,例如Material studio、Atomsk等软件,建模完成后转换为lammps可以识别data文件,使用read_data命令读入到lammps中。

    (3)力场的设置
    模型建好之后,需要设置力场参数,也就是常说的势函数设置。

    力场的设置分两步,首先设置力场类型,如pair_style、bond_style、angle_style、dihedral_style、improper_style。

    之后,设置与之相对于的参数,分别使用pair_coeff、bond_coeff、angle_coeff、dihedral_coeff、improper_coeff。

    (4)能量最小化

    在正式模拟之前,一般都需要进行能量最小化,消除模型不合理的结构。
    能量最小化要在温度初始化之前进行,min_style确定能量最小化类型,minimize命令设置相关参数。

    (5)温度初始化

    能量最小化之后,就可以进行温度初始化。体系的温度是根据原子的速度计算得到的,因此,温度初始化也就是对原子进行速度初始化。

    使用velocity命令按照设定的规律随机设定原子速度,使体系温度设定为一个固定值。

    (6)弛豫

    在npt、nvt等系综下,对体系进行充分的弛豫,使体系的能量达到最低,获得平衡态的结构。

    前面这6部分是模拟准备过程,到此为止,体系已经达到平衡,可以进行下一步模拟。这6部分的代码在大部分的模拟中都是通用的。

    (7)具体模拟设置

    这一部分代码与模拟的具体内容有关,比如拉伸、剪切、结晶、吸附等等。设置输出轨迹文件、热力学数据等等,便于后期统计分析。

    对于不同的模拟过程,lammps模拟in文件可能会有区别,总体结构类似,大部分代码是重复的。

    下面分享一个in文件模板,大家可以根据自己的科研课题修改使用。

    #in文件模板
    #----------1 模拟参数--------------------
    units           metal
    boundary        p p p
    atom_style      atomic
    timestep        0.001
    neighbor        2.0 bin
    neigh_modify    delay 0 every 5 check yes
    
    #----------2 体系模型的建立----------------
    variable        xbox index 100         
    variable        ybox index 100         
    variable        zbox index 100         
    
    region          simulationbox block 0 ${xbox} 0 ${ybox}  0  ${zbox}  units box   
    create_box      1 simulationbox    
         
    lattice         fcc 3.61
    region          cu  block ${xstbox} ${xtbox} ${ystbox} ${ytbox} ${zstbox} ${ztbox} units box 
    create_atoms    1 region cu         
    mass            1   64     
    
    #输出原子初始结构
    write_data 	test.data                    
    
    #----------3 力场的设置-------
    pair_style 	eam/fs
    pair_coeff 	* * Cu.eam.fs Cu
    #----------4 能量最小化-------
    thermo		100
    thermo_style	custom step press pe temp ke
    dump		1 all atom 100 mini.lammpstrj
    min_style	cg
    minimize	1e-15 1e-15 5000 5000
    undump		1
    reset_timestep	0
    
    #-----------5 温度初始化--------
    velocity	all create 300 321456 rot yes dist gaussian 
    
    #-----------6 弛豫-------------
    thermo		100
    thermo_style	custom step press pe temp ke
    dump		1 all atom 100 mini.lammpstrj
    fix		1 all nvt temp 300 300 0.1 
    run		10000
    unfix		1
    undump		1
    reset_timestep 0
    #-------7 具体模拟设置-------
    thermo		100
    thermo_style	custom step press pe temp ke
    dump		1 all atom 100 mini.lammpstrj
    
    fix		1 all npt temp 300 300 1 y 0 0 1 z 0 0 1 drag 1
    variable	srate equal 1.0e10
    variable	srate1 equal "-v_srate / 1.0e12"
    fix		2 all deform 1 x erate ${srate1} units box remap x
    run		100000
    

    总结一个适合自己的in文件模板,可以极大地提高代码编写效率,毕竟重复的代码就不用再编写了,希望这个in文件模板对大家能有所帮助。

    近期将陆续推出lammps基础教程,更多lammps源代码和案例请关注微信公众号:lammps加油站
    在这里插入图片描述

    展开全文
  • 一个基于HTML5的文件异步上传控件

    千次阅读 2015-03-24 17:11:09
    要说缺点也只有一个,加载的文件很多(举例的这个光js就4个,这服务器来说是负担),通常在web开发中不需要这么多功能,本这前端开发的优化,在加上现在html5的普及,自己写一个适合自己的控件非常必要。...

    现在文件上传控件有很多,比如JQuery的jQuery File Upload等等。功能必须说,非常强大,官方文档写的也很清楚。要说缺点也只有一个,加载的文件很多(举例的这个光js就有4个,这对服务器来说是负担),通常在web开发中不需要这么多功能,本这对前端开发的优化,在加上现在html5的普及,自己写一个适合自己的控件非常有必要。

    废话不多说,直接上代码

    前端代码,其中已经有了注释了

    <body>
    <form id="upload">
    <input type="file" id="files">
    <input type="submit" name="submit">
    </form>
    <table>
    <tr><td>文件名</td><td>上传进度</td></tr>
    </table>
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript" src="upload.js"></script>
    <script type="text/javascript">
    //执行upload函数就开始上传了,假如要自动上传就改成$('input[type=file]').change(function(){//xhrData = upload({这里是各种参数});//});$('form').submit(function(){//注意 第一个是input file表单xhrData = upload($('#files'),{//上传地址url:'http://localhost/test/index.php',//准备上传触发函数 第一个基本没用 第二个是文件信息 第三个是文件的keyonStart:function(event,file,fileKey){var tpl = '<tr class="'+fileKey+'"><td>'+file.name+'</td><td>'+0+'</td><td><button class="abortBtn">中断上传</button></td></tr>';$('table').append(tpl);},//进度条显示 第一个参数存储了上传进度 第二个是文件信息 第三个存储了文件的keyprogress:function(event,file,key){if (event.lengthComputable) {var complete = Math.floor(event.loaded / event.total * 100);var progress = $('.'+key);progress.find('td:eq(1)').html(complete);}else{alert('无法确定上传文件的大小');}},//额外的参数 $_POST['name'] = 'testFile';data:{name:'testFile',id:'123',source:'ok'},//大小验证 size是大小 单位字节 后面的是超过大小的触发函数 文件信息 文件key//maxSize:{size:1000000,error:function(file,key){// alert('文件太大');// }},//文件类型验证 type是允许上传的类型数组 后面是不允许的文件上传时候 的触发函数 文件信息 文件key//fileType:{type:['jpg','iso','doc','doc'],error:function(file,key){// alert('文件类型不允许'+type);//}},//文件完成上传的触发函数 response是服务器响应内容(TEXT) file是文件信息 key是文件keycomplete:function(response,file,key){alert(response);},//文件上传失败触发函数error:function(file,key){alert('上传失败');},//中断按钮 这个必须被key元素包裹abortBtn:'.abortBtn',//当中断发生之后触发onAbort:function(file,key){alert(file.name+'已经停止上传')},});//假如input是在form里面需要return false;return false;});</script></body>


    upload.js代码

    var upload = function(input){
    	if(window.FormData)
    	{
    		if(input.val() == '' || input.val() == 'undefined')
    			return false;
    		
    		var files = input[0].files;//保存要上传的文件
    		var formData = new FormData();//文件上传通道
    		var fileReader = new FileReader();
    		
    		var getFileType = function(filename){
    			var extStart  = filename.lastIndexOf(".")+1;
    			return filename.substring(extStart,filename.length).toUpperCase();
    		};
    		
    		var clearInput = function(){
    			input.val('');
    		};
    		
    		var getKey = function(){//获得一个key  10位数字  这样可以保证几率比较小了  假如还想要几率小  可以计算md5
    			return Math.floor(Math.random()*10000000000);
    		};
    		
    		var key = getKey();//保存文件的唯一key
    		var url = input.attr('data-url')||arguments[1].url;//上传地址
    		var progress = arguments[1].progress;//上传进度条
    		var complete = arguments[1].complete;//上传完成
    		var error = arguments[1].error;//上传失败
    		var maxSize = arguments[1].maxSize;//文件大小  单位字节  过滤器
    		var fileType = arguments[1].fileType;//文件类型  过滤器
    		var data = arguments[1].data;//额外数据
    		var onStart = arguments[1].onStart;//准备上传
    		var abortBtn = arguments[1].abortBtn;//中断上传按钮
    		var onAbort = arguments[1].onAbort;//中断函数
    		//文件类型验证
    		var type = getFileType(files[0].name);//获得文件类型
    		var typeAllow = false;
    		if(typeof fileType == 'object')
    		{
    			var arrayType = fileType.type;
    			$.each(arrayType,function(index,value){
    				if(value.toUpperCase() == type)
    				{
    					typeAllow = true;
    					return false;//相当于break
    				}
    			});
    			if(!typeAllow)
    			{
    				fileType.error(files[0],key);
    				return false;
    			}
    		}
    		//文件大小验证
    		if(typeof maxSize == 'number')
    		{
    			if(files[0].size >= maxSize)
    			{
    				maxSize.error(files[0],key);
    				return false;
    			}
    		}
    		else if(typeof maxSize == 'object')
    		{
    			if(files[0].size >= maxSize.size)
    			{
    				maxSize.error(files[0],key);
    				return false;
    			}
    		}
    		//将文件加入到上传通道
    		formData.append(input.attr('name')||'files', files[0]);
    		var xhr = new XMLHttpRequest();
    		//附加额外的数据
    		if(data != '' && data != 'undefined')
    		{
    			$.each(data,function(index,value){
    				formData.append(index,value);
    			});
    		}
    		//开始上传
    		xhr.open('POST',url,true);
    		xhr.onload = function(){
    			if(xhr.status == 200 && xhr.readyState == 4)
    			{
    				if(typeof complete == 'function')
    					complete(xhr.response,files[0],key);
    				//clearInput();
    			}
    			else
    			{
    				if(typeof error == 'function')
    					error(files[0],key);
    			}
    		};
    		xhr.upload.onprogress = function(event){
    			progress(event,files[0],key);
    		};
    		xhr.onloadstart = function(event){
    			onStart(event,files[0],key);
    		};
    		xhr.send(formData);
    		//添加中断
    		$('.'+key).find(abortBtn).click(function(){
    			xhr.abort();
    			onAbort(files[0],key);
    		});
    		return {key:key,xhr:xhr};
    	}
    	else
    	{
    		alert('浏览器版本过低');
    		return null;
    	}
    }


    暂时input元素中不支持multiple属性,我尝试过,js没办法获取到多个文件的信息,只能获取到一个,假如有知道的请给我留言,我随时改进

    以上代码在chrome中测试通过

    后台获取方式和正常的一样,对文件大小没有限制,假如有限制也是服务器软件或者后台语言的限制,在初始化参数中你可以设立上传的大小限制,


    展开全文
  • 关于文件格式,引用一下百度百科的定义: ...对于硬盘机或任何电脑存储来说,有效的信息只有0和1两种。所以电脑必须设计相应的方式进行信息-位元的转换。对于不同的信息不同的存储格式。文件格式也意味

    关于文件格式,引用一下百度百科的定义:

    文件格式(或文件类型)是指电脑为了存储信息而使用的对信息的特殊编码方式,是用于识别内部储存的资料。比如有的储存图片,有的储存程序,有的储存文字信息。每一类信息,都可以一种或多种文件格式保存在电脑存储中。每一种文件格式通常会有一种或多种扩展名可以用来识别,但也可能没有扩展名。扩展名可以帮助应用程序识别的文件格式。

    对于硬盘机或任何电脑存储来说,有效的信息只有0和1两种。所以电脑必须设计有相应的方式进行信息-位元的转换。对于不同的信息有不同的存储格式。文件格式也意味着文件的用途。

    关于上面一段话,个人觉得比较重要的是:对于所有的文件,对于计算机来说还是二进制流(0和1)。

    一、规定二进制流协议

    所有的文件对于计算机来说都是二进制流,那么我们需要去规定一下二进制协议:

    1. 文件类型(1:xxx文件,2:yyy文件)

    2. 文件类型所占长度(1字节)

    3. 版本号(1,2,3...)

    4. 版本号所占长度(1字节)

    5. 文件二进制流所占长度(4个字节)

    6. 其他拓展文件所占长度(json字符串,图像等2个字节)

    二、按照规定协议写入二进制流

    File targetFile = new File(targetFilePath);
    if(!targetFile.getParentFile().exists()){
        targetFile.getParentFile().mkdirs();
    }
    OutputStream out = new FileOutputStream(targetFile);
    // 写入文件类型
    out.write(fileType);
    // 写入文件协议版本号
    out.write(version);

    文件首先base64,然后计算base64之后的byte长度,然后写入:

    String fileBase64Str = Base64Util.encodeBase64File(srcFilePath);
    out.write(ByteUtil.intToBytes(fileBase64Str.getBytes().length));

    拓展部分长度写入,也是首先base64之后计算长度,然后写入:

    // 写入拓展部分大小
    String encodedText = encoder.encodeToString(configJson.getBytes("UTF-8"));
    byte[] configJsonBytes = encodedText.getBytes("UTF-8");
    byte[] configJsonByteLength = ByteUtil.intToByte2(configJsonBytes.length);
    out.write(configJsonByteLength);

    文件二进制流写入:

    out.write(fileBase64Str.getBytes());

    拓展部分二进制流写入:

    out.write(configJsonBytes);
    out.close();

    写入之后的结果如下:

    用pdf打开之后的结果如下:

    ps:荣耀的背后总是刻着一道孤独!

    展开全文
  • RINEX文件说明

    2015-05-21 22:32:45
    个文件都由一个字头块(HEADER SECTION)和一个包含实际数据的主体部分(DATA SECTION)组成。字头块中每行的第61~80列为字头标识符,这些标识符具有强制性,有关说明和例子中必须正确显示。这种格式通过在字头...
  • 5、Replicate source tree structure in output paths通常是为输出部分建立一个子目录结构,这里可以2种选择,可以选择Parallel to Source Structure为源代码建立一个平行的目录结构,或者选择Sub-path to each ...
  • Archlinux的配置文件详细说明

    千次阅读 2012-07-18 11:35:54
    archlinux的配置文件详细说明 ArchLinux是一个针对i686的Cpu优化过得linux发行版,同时作者的在制作过程中保持“KISS”的设计...新手有一个难关,那就是必须要亲自配置archlinux的主要文件,设计者,这样可
  • 我们在编译QT的工程的时候,一般都会让qmake自动生成,但有时我们需要定制我们的工程,那么就必须改写pro文件...例如你有一个工程目录为backup,那么在这个目录下就会生成backup.pro文件一般的工程,我们
  • 时候从网络上下载的电视剧或者动漫,名字上都会...闲没事写了小程序,用来这样统一格式的文件进行批量重命名,当然,必须是这种统一格式的命名方式,如上图所显示的那样,废话不多,直接贴代码,简单易懂...
  • 经济在发展,社会在进步,在商业产品琳琅满目的今天,商标就是商业产品竞争力的最强体现。...企业法人在注册商标时,必须提供主体资格证明文件,这主体资格证明文件企业来说,就是营业执照...
  • 2、添加系统目录下的一个可执行文件: C:\windows\system32\mmc.exe 如图: 3、添加一个端口,用于OPCClient需要的RPC服务。 三、如果通过网络可以访问到opcserver,也能看到数据点,但数据点不随服务器...
  • 必须知道的495C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 声明问题 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 *1.26 main的正确定义是什么...
  • 我的网站不是最好看的,但来说已经足够了。我将尝试改善我的网站,并在此过程中也学习新事物! :open_book:细节 该网站以HTML,JS和CSS编写。为什么我没有使用PHP或其他语言?仅仅是因为:
  • 以前写了一个java的正规表达式的java工具类,分享一下,用到的欢迎下载使用。 如果你常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 ...
  • 这即是我们的电脑硬碟(简化来说。其实只是硬碟的部份)。试着click这行最右边,并键入dir。 dir是DOS的command,意思是--显示目录,此时就会看到的字,其中有个桌面,试着键入---cd桌面。 这时出现\...
  • 对于一个非程序员来说为PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不困难。 - 面向对象编程 PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP支持构造器、提取类等。 - 可...
  • 一些小伙伴来说这可是大难题,难倒了很多人没有!今天我就跟大家分享几Word转PDF小技巧,帮助大家提高办公效率!方法:另存为法其实很多人都不知道,Word就能够转换PDF文档,但必须是Word2013及以上版本。...
  • 横瓜硬盘搜索,可全盘所有文件实现检索,全盘每一个文件的路径名和文件名都要被分词索引。 横瓜硬盘搜索,是基于Windows平台的搜索引擎,最大容量可检索2000万硬盘文件的路径名和文件名。 对于存10万个文件规模...
  • 《你必须知道的495C语言问题》

    热门讨论 2010-03-20 16:41:18
    1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 13 声明问题 14 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 14 *1.26 main的正确...
  • 我可能错了,但来说:模块基本上是一个python文件。包是一个文件夹,其中包含一组模块(python文件)。要被视为包,该文件夹必须包含一个__init__.py文件。@LC2817:这是最常见的情况,但不需要从文件系统加载模块...
  • Java IO作为一个开发者来说文件的输入/输出是个必须要面对的问题,更是个必须要攻克的难题。因为不仅各种I/O端和接收端,还要与之通信(按顺序读写,随机读写、按行、按字符、按字节);不仅本地I/O,还有缓冲、...
  • 1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 13 声明问题 14 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 14 *1.26 main的正确...
  • 1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 声明问题 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 1.26 main的正确定义是什么?void ...
  • 1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小?  声明问题  1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。  *1.26 main的正确定义是...
  • 一个文件之前,每份文件都已被打开、读取并经过处理。 处理包括读取文件,将其分成一行行的文字,然后将每行 解析成零或更多的符号。然后用已找到的符号字符串变量值 调用 For 循环。以默认方式,/F 通过每个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,805
精华内容 722
关键字:

对一个文件来说必须有