专注于前端开发, 追求更好的用户体验, 更好的开发体验 [长沙前端QQ群:234746733]

工具

  • 删除重复内容行

    / 分类: 工具,实践 / 1 Comment

    由于要处理一个两万多行的数据,但要删除其中内容重复的行,所以找了几个方法:

    1. 用sed替换重复内容,使用命令 -n "G;s/\n/&&/;/^\(.*\n\).*\n\1/d; s/\n//;h;P" "$(FilePath)" (这里是在editplus里的使用,注意$(FilePath)必须是带路径的文件名)。当然sed不需依赖editplus,可以单独使用的。优点:删除重复内容后,顺序结构不变。缺点:不支持UTF-8,处理大文件时(2w多行)就不行了。

    2.使用editplus-工具-排序,勾选"删除重复"。可惜不想把内容排序,却被自动排序了。(勾选"区分位置",好像没用?),这个效率相当快~差不多是瞬间完成的,之所以没放弃editplus,确实它的优点有很多。

    3.使用一个批处理

    @echo off
    :: 删除重复的行,但不能保留空行
    :: 对不符合变量命名规则、变量个数超过限制的文本都无法正确处理
    (echo 清除重复行后的文件内容:& echo.)>str_.txt
    for /f "delims=" %%i in (testText.txt) do (
      if not defined %%i set %%i=A & echo %%i>>str_.txt)
    :: start str_.txt

    当然也不支持utf8,效率也比较慢,处理2w多行用了1分多钟,不过排序没有改变:)。

  • editplus 正则删除 多行注释

    / 分类: 工具 / No Comments

    editplus的正则不能用于多行,这点比较郁闷。css里面的注释,有些内容都是多行的,而且还可能包含html语句,这样的情况editplus批量删除注释就不能用了。研究了一下,提供下我认为目前比较完美的方法:

    editplus删除多行注释:/*......*/的方法:
    1、把全文中的“\n”全都替换成“┓”。
    2、把“[<|/]/”替换成空。(删除注释里面的“</”、“//”类内容,注释里面带有"/"的话,第三步就查不到了)
    3、把“/\*.[^/]*\*/”替换成空。(不加[^/],就会波及到非注释内容)
    4、把"┓"再替换成"\n"。

    以上替换的时候都要勾上“正则表达式”。虽然步骤比较多,但是总算能实现替换多行了。
     

  • editplus SVN 设置

    / 分类: 工具 / No Comments

    SVN在团队开发的时候很强大。VS有VisualSVN插件,但是我不喜欢用VS。vim电脑上也有,虽然很多人说vim也很强大,不过我目前还是习惯editplus。也许以后会去适应vim吧。

    1、首先这里有一篇介绍,edtiplus使用SlikSVN来实现update、commit。当然前提也是要安装TortoiseSVN的。

    2、发现了一个更好的介绍,是deitplus wiki里面的介绍的方法。

    说明:方法1使用的SlikSVN是命令行端,方法2使用的TortoiseProc.exe是GUI端。

    下面我把方法二的实现方法稍微翻译一下:

    Subversion Commit

    说明:用TortoiseSVN校检文件并提交文件到服务器(当然,前提是你安装了TortoiseSVN)
    添加方法:编辑edtiplus 工具-用户工具-添加工具-程序
    菜单文本:SVN Commit
    命令: C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe
    参数: /command:commit /path:"$(FilePath)" /notempfile /closeonend:0
    初始目录: $(FileDir) Check: "Capture output", "Save open files"
    勾上"保存打开文件"。可以不勾"捕获输出",根据个人喜好吧,我是没勾。

    说明:TortoiseSVN 使用临时文件在 shell 扩展和主程序之间传递多个参数,(低于1.5.0版,必须增加/notempfile参数,如果不这样做,该命令将无法正常工作,/path指定的文件将被删除。)从 TortoiseSVN 1.5.0 开始,废弃/notempfile参数,不再需要增加此参数。

    Subversion Update, Delete, Rename, Checkout etc

    说明:SVN的更新、删除、重命名、校检等命令
    方法:只需要把上面的"参数"里的:/command:commit 用下面的替换(例如:/command:about

    :about 显示关于对话框
    :log 打开日志对话框
    :checkout 打开检出对话框
    :import 打开导入对话框
    :update 将工作副本的/path更新到HEAD,如果给定参数/rev,就会弹出一个对话框询问用户需要更新到哪个修订版本。为了避免指定修订版本号/rev:1234的对话框,需要加上/nonrecursive和/ignoreexternals参数(这2个参数我没加,还没遇到上述问题)
    :commit 打开提交对话框
    :add 将/path的文件添加到版本控制
    :revert 撤消一个文件自上次更新后的所有的变更
    :cleanup 递归清理工作拷贝,删除未完成的工作拷贝锁定
    :resolve 将/path指定文件的冲突标示为解决,如果加上/noquestion,将不会提示确认操作。
    :repocreate 在/path创建一个版本库
    :switch 切换至分枝/标记
    :export 将/path的工作副本导出到另一个目录
    :merge 打开合并对话框
    :mergeall 打开合并所有对话框
    :copy 复制工作副本至URL
    :settings 打开设置对话框
    :remove 从版本控制里移除/path中的文件
    :rename 重命名/path的文件
    :diff 启动TortoiseSVN设置的外置比较程序
    :help 打开帮助文件
    :relocate 打开重定位对话框
    :help 打开帮助文件
    :repobrowser 打开版本库浏览器对话框
    :ignore 将/path中的对象加入到忽略列表,仅对文件夹有效。
    :blame 打开文件的追溯对话框
    :createpatch 创建/path下的补丁文件。
    :revisiongraph 显示/path目录下的版本变化图。
    :lock 锁定一个文件,可以输入锁定的原因。
    :rebuildiconcache 重建windows的图标缓存,当系统图标缓存出了问题才需要这样做(会导致桌面的图标会重新排列)
    :properties 显示 /path 给出的路径之属性对话框。

    更多的命令看:tortoisesvn docs

    我只用了update、commit、add、revert、rename、remove、export、lock、unlock、resolve、checkout、blame、merge,后面几个都是不太常用的了。

    另外在editplus wiki,还发现了一个不错的东西:打开当前文件的文件夹(使用svn的话,这个功能就很实用了)。方法,在用户工具里添加-程序:
    菜单文本:Current Location(当前文件的文件夹)
    命令:%systemroot%\explorer.exe /e,/root,\local disk, 参数:$(FileDir)
    初始目录:空着
    勾上:退出时关闭窗口、保存打开文件

  • 用css 写的一个浏览器检测

    / 分类: 开发,工具,实践 / No Comments

    这个用css hacks 判断浏览器大概是上个月写的,其中的hacks基本涵盖了大部分浏览器,本页面经过测试的浏览器:IE5.0、IE5.5、IE6、 IE7、IE8(beta1&beta2)、Opera 9.5, Firefox 3, Safari4、K-Meleon、Google Chrome。 其实用css判断浏览器是没有什么意义的,其主要意义就在于css hack在多浏览器下的使用,及如何用更少的css代码来实现各种主流浏览器的兼容。这个页面里的css hacks基本上囊括了ie系列(ie5.0-IE8)的csshack,同时也加入了不太常用的针对Opera和Safari的css hacks。

    演示可以见:https://xhl.me/demo/html/browser_detector.html

    在css hacks方面,我觉得最好不要用!important来提升指定样式的优先权,我不喜欢这它,因为如果使用它的话,你可能会发现写出的css代码相对较多。当然也不是完全不用它,目的只是当我们加入hacks时,是否要考虑一下如何才能使css的代码更精简?顺便也应该想到,当我们写XHTML代码时,是否考虑某处用div合适,还是ul合适,或者是dl合适?当我们写javascript的时候呢,是否也可以使用最少的代码来实现某一效果?有些人只是写出了div、css代码就很自豪的说自己已经会div、css了,当我问他浏览器兼容和HTML标签语义化时,他却说不出。其实有很多地方值得我们去研究,上次帮公司做的网页,css和js代码基本都被我压缩的不能再压缩了,先手工压缩再机器压缩,很爽很爽:), 不过他们说我变态~。其实这样网站的效率才能达到最高。

    我的做法就是在做网页时,应该以firefox来作为参照,然后再在ie和其他浏览器下测试,这样写出的css代码可能会是最少的。还有就是善用display:inline来解决ie下margin加倍,善用clear:both,有时也可以这样:<!--[if IE]><link rel="stylesheet" type="text/css" href="ie.css" /><![endif]-->,给IE单独做一个css。因为之前做的是门户级的网站,写了很多页面,从中也学到了很多新知识,一时想不起来了,有时间再整理出来。还有只要结构写的好,不需要hack大部分也都能兼容。能不用hack就不用。

  • Mac OS X Leopard 硬盘安装方法

    / 分类: 工具 / 1 Comment

    终于装上了Mac OS X了,界面非常帅,只是可惜目前不能用锐捷上网。下面讲下我的单硬盘安装leopard的方法,无需刻盘安装。我的安装环境是:Windows XP系统、Intel SSE3 CPU。

    1、下载leopard.torrent(下面的压缩包内有提供下载),添加到BT下载,BT任务中只需选leopard-x86.rar这个文件。下载好leopard-x86.rar(2.51GB),解压出里面的leopard-x86-flat-img,如:解压到D:\leopard。注意:leopard-x86-flat-img 是16545MB,约16.1GB,请确保有足够空间。此版为ToH_x86_9A581_RC2(MacOS X 10.5 9a581),虽不是最新的10.5.2,但也足够用了。

    2、用WINPM(压缩包内有)在逻辑分区创建一个20G左右的分区(总之要大于leopard-x86-flat-img的大小并且不要格式化)。还有这个分区要在逻辑分区的第一个分区,比如:主分区为C,逻辑分区为D、E、F,新创建的分区要用WINPM移动到D盘的前面(这样做是为了防止出现tboot不能引导的情况,有些电脑不需移动也可以引导。还有人说还要把此分区设为主分区,我试过后用tboot不能引导,提示:“hfs not found”,而逻辑分区的则能正常引导,所以这里不需设置此分区为主分区。)然后,用WINPM把这个新创建的分区ID设置为“af”,方法:点右键-修改-更改分区ID,输入af。Ps:winpm可以删除、创建、移动、修改分区,自己摸索吧,很简单。如果winpm提示不能移动分区,那就把winpm移动到其他分区运行。

    3、把dd --list.bat 和dd.exe 解压到D:\leopard(leopard-x86-flat-img的文件夹内),运行dd --list.bat ,仔细找会看到如下面的内容 :

    XML/HTML代码
       NT Block Device Objects
        ……
    1. \\?\Device\Harddisk0\Partition2  
    2.   link to \\?\Device\HarddiskVolume2 
    3.   Fixed hard disk media. Block size = 512
        size is 21474836480 bytes

       ……

    如果你在第2步创建的是20GB的分区,那么就是21474836480 bytes。(如果创建的不是整数分区,可以自己去计算:bytes/1024/1024/1024=GB,然后再对比一下你创建的分区的大小)。找到”size is 21474836480 bytes“这句上面的”\\?\Device\Harddisk0\Partition2“,复制这句。(Ps:Harddisk0\Partition2的意思就是第1硬盘第2分区,如果创建的分区在D盘前面那么基本就是Partition2了)。

    4、把write.bat解压到D:\leopard,先不要运行,编辑write.bat,看到如下:

    XML/HTML代码
    1. dd if=leopard-x86-flat-img of=\\?\Device\Harddisk0\Partition2 bs=32256 skip=1 --progress  

    看里面的”\\?\Device\Harddisk0\Partition2“是否和你复制的一样,不一样就替换你复制好的那句并保存。运行write.bat,开始向目标分区写入数据,里面会显示写入数据的情况(命令窗口最后一行会有数字不断地变化),这时千万不要关闭,等大概30分钟左右,直到出现Press any key to contiue,再关闭。

    5、双启动菜单,将压缩包中的tboot文件解压到C:\根目录下。在文件夹选项中,选择”显示所有文件和文件夹“,去掉”隐藏受保护的系统文件“前面的钩。会看到boot.ini,用记事本编辑,在最后添加一行C:\tboot="Mac OS X",保存后即可重启系统。修改后的:

    XML/HTML代码
    1. [boot loader]   
    2. timeout=3  
    3. default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS   
    4. [operating systems]   
    5. multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect   
    6. C:\tboot="Mac OS X"   

      重启后,用键盘上下键选择”Mac OS X“进入。

    6、进入mac后,界面是英文的,还要设置用户名、密码那些,keyboard--选择U.S.,select time zone--选beijing-china,apple id --直接跳过,网络--一般选local network(Ethernet),其他的基本都按默认点continue可以了。进入Mac的桌面后,还要安装中文语言包,可以到迅雷的狗狗里面去搜索”SimplifiedChinese.pkg“,下载23.1M那个(这个21.38M的貌似也可以,有兴趣的可以试试)。安装语言包后,会注销重新进入,在系统设置中,把简体中文拖到最上面,重新注销再登陆就是中文界面了。

    7、其他:输入法可以装Fun Input Toy

    下载:leopard-x86.rar