About neohope

一直在努力,还没想过要放弃...

div被activex控件遮住的处理方法

不知什么时候,自己成了写JS的人了

说实话,用过很多种编程语言,但至今发现,最佩服的莫过于JS程序员,调试那叫个烦人啊,写出JQuery的那些人,要么有更好的调试工具,要么就是真正的牛人吧。
JS的调试工具,IE下,直接用IE的调试工具(IE7及以上)或者是Companion.JS
在FF下,自然是FireBug老兄了

现在,主界面上已经集成了JQuery,JQueryUI,JX,SuperFish
还记得当初把JX放到JQuery中,以及修改JX.Tree增加叶子节点的ID等属性,加起来痛苦了有一周左右,终于把JX删的删,改的改,满足了需求。

这两天呢,又遇到了SuperFish的菜单,被一个第三方ActiveX控件遮住的问题,让大家痛苦了许久。
网上找呢,也全是关于flash的东西,只要设个参数就好了。

没办法,只好去修改SuperFish的代码咯。
具体的思路是:

在菜单弹出后,弹出菜单的下方,生成一个同样大小的iframe,

var mydoc=window.frames["FrameId"].document;
var objiframe = mydoc.createElement("iframe");
objiframe.id ="IFuLeU";
objiframe.style.visibility = 'hidden';
objiframe.style.top = 0;
objiframe.style.left = 0;
objiframe.style.width = 0;
objiframe.style.height = 0;
mydoc.body.appendChild(objiframe);

objiframe.style.position = "absolute";
objiframe.style.top = 0;
objiframe.style.left = this.offset().left-1;
objiframe.style.width = this.width();
objiframe.style.height = this.height()-2;
objiframe.style.visibility = 'visible';

在菜单隐藏时,将iframe销毁,

var mydoc=window.frames["FrameId"].document;
var objiframe = mydoc.getElementById("IFuLeU");
mydoc.body.removeChild(objiframe);

但这样呢,还会有个小问题
就是在菜单弹出后,会有个较为明显的先被ActiveX遮住,然后菜单又将Activex遮住的过程。

语法插件WP-Syntax

WP-SYNTAX插件很不错,但经常找语言代码就不好了,
下面是它的语言表,希望对大家有用:)

$lookup = array(
    '6502acme' => array( 'a', 's', 'asm', 'inc' ),
    '6502tasm' => array( 'a', 's', 'asm', 'inc' ),
    '6502kickass' => array( 'a', 's', 'asm', 'inc' ),
    '68000devpac' => array( 'a', 's', 'asm', 'inc' ),
    'abap' => array('abap'),
    'actionscript' => array('as'),
    'ada' => array('a', 'ada', 'adb', 'ads'),
    'apache' => array('conf'),
    'asm' => array('ash', 'asm', 'inc'),
    'asp' => array('asp'),
    'bash' => array('sh'),
    'bf' => array('bf'),
    'c' => array('c', 'h'),
    'c_mac' => array('c', 'h'),
    'caddcl' => array(),
    'cadlisp' => array(),
    'cdfg' => array('cdfg'),
    'cobol' => array('cbl'),
    'cpp' => array('cpp', 'hpp', 'C', 'H', 'CPP', 'HPP'),
    'csharp' => array('cs'),
    'css' => array('css'),
    'd' => array('d'),
    'delphi' => array('dpk', 'dpr', 'pp', 'pas'),
    'diff' => array('diff', 'patch'),
    'dos' => array('bat', 'cmd'),
    'gdb' => array('kcrash', 'crash', 'bt'),
    'gettext' => array('po', 'pot'),
    'gml' => array('gml'),
    'gnuplot' => array('plt'),
    'groovy' => array('groovy'),
    'haskell' => array('hs'),
    'html4strict' => array('html', 'htm'),
    'ini' => array('ini', 'desktop'),
    'java' => array('java'),
    'javascript' => array('js'),
    'klonec' => array('kl1'),
    'klonecpp' => array('klx'),
    'latex' => array('tex'),
    'lisp' => array('lisp'),
    'lua' => array('lua'),
    'matlab' => array('m'),
    'mpasm' => array(),
    'mysql' => array('sql'),
    'nsis' => array(),
    'objc' => array(),
    'oobas' => array(),
    'oracle8' => array(),
    'oracle10' => array(),
    'pascal' => array('pas'),
    'perl' => array('pl', 'pm'),
    'php' => array('php', 'php5', 'phtml', 'phps'),
    'povray' => array('pov'),
    'providex' => array('pvc', 'pvx'),
    'prolog' => array('pl'),
    'python' => array('py'),
    'qbasic' => array('bi'),
    'reg' => array('reg'),
    'ruby' => array('rb'),
    'sas' => array('sas'),
    'scala' => array('scala'),
    'scheme' => array('scm'),
    'scilab' => array('sci'),
    'smalltalk' => array('st'),
    'smarty' => array(),
    'tcl' => array('tcl'),
    'vb' => array('bas'),
    'vbnet' => array(),
    'visualfoxpro' => array(),
    'whitespace' => array('ws'),
    'xml' => array('xml', 'svg', 'xrc'),
    'z80' => array('z80', 'asm', 'inc')
);

c语言测试

//lang="c"
int main(int argc,char** argv)
{
    printf("Hello World\n");
    return 0;
}

c++语言测试

//lang="cpp"
using namespace std;
int main(int argc,char** argv)
{
    cout<<"Hello World"<<endl;
    return 0;
}
&#91;/code&#93;

Objective-C语言测试
&#91;code lang="objc"&#93;
#import <Foundation/Foundation.h>

int main(int argc, char**argv)
{
	NSString *hello = @"Hello World\n";
	NSLog(hello);
	[hello release];
	return 0;
}

java语言测试

//lang="java"
public static void main(String[] args)
{
    System.out.println("Hello World!");
}

bash脚本测试

#!/bin/bash
#lang="bash"
HI="Hello World!"
echo $HI

bat脚本测试

REM lang="bash"
echo "Hello World!"

Linux常用命令09tar压缩解压文件

1、压缩文件

#只归档不压缩
tar –cf OUT_FILE_NAME.tar PATH_TO_FOLDER
#归档后用gzip压缩
tar –czf OUT_FILE_NAME.tar.gz PATH_TO_FOLDER
#归档后用bzip2压缩
tar –cjf OUT_FILE_NAME.tar.bz2 PATH_TO_FOLDER
#归档后用compress压缩
tar –cZf OUT_FILE_NAME.tar.Z PATH_TO_FOLDER

2、解压文件

#解压tar
tar –xvf IN_FILE_NAME.tar
#解压tar.gz
tar -xzvf IN_FILE_NAME.tar.gz
#解压tar.bz2
tar -xjvf IN_FILE_NAME.tar.bz2
#解压tar.Z
tar -xZvf IN_FILE_NAME.tar.Z

VBS枚举硬盘信息

1、GetHDInfo.vbs
这个脚本,是Google后找到的,虽然是VBS,但比网上绝大多数的代码,靠谱的多得多

'---------------------------------------------------
'Get the properties of all partitions on all drives, 
'including USB drives.
'Core code from the Scripting Guy
'7.1.2012 FNL
'---------------------------------------------------
Set oWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set cDiskDrives = oWMIService.ExecQuery("SELECT * FROM Win32_DiskDrive")

For Each oDrive In cDiskDrives
	WScript.echo "Disk #" & oDrive.Index & "(" & oDrive.InterfaceType & "): " _
		& oDrive.Caption & ", Size=" & Format(oDrive.Size, False) & " MBytes"
	WScript.echo "Part.  Drive          F/S   Size(MBytes)  Free(MBytes)  Active  Primary"
	WScript.echo String(71, "-")

	'WScript.Echo "ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" & Replace(oDrive.DeviceID, "\", "\\") & """} WHERE AssocClass = " & "Win32_DiskDriveToDiskPartition"

	Set cPartitions = oWMIService.ExecQuery("ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" _
		& Replace(oDrive.DeviceID, "\", "\\") & """} WHERE AssocClass = " & "Win32_DiskDriveToDiskPartition")
 
	For Each oPartition In cPartitions
		aPartition = Split(oPartition.DeviceID)
		Set cLogicalDisks = oWMIService.ExecQuery _
	 		("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & oPartition.DeviceID _
			& """} WHERE AssocClass = Win32_LogicalDiskToPartition")
 		if oPartition.Bootable         then sActive  = "Yes" Else sActive  = "No "
 		if oPartition.PrimaryPartition then sPrimary = "Yes" Else sPrimary = "No "
		For Each oLogicalDisk In cLogicalDisks
			For Each oVolume In cLogicalDisks
				sLabel = Left(oVolume.VolumeName & Space(12), 12)
			Next
			With oLogicalDisk
				sSpacer = Space(8 - Len(.FileSystem))
	 	   		WScript.Echo " " & aPartition(3) & "    " & .DeviceID & " " & sLabel _
				& .FileSystem & sSpacer & Format(.Size, True) & "       " _
				& Format(.FreeSpace, True) & "     " & sActive & "     " & sPrimary
			End With
		Next
	Next
	WScript.Echo
Next

Function Format(n, bPad)
	n = FormatNumber(n/1000000, 0, -1, 0, -1)
	if bPad then Format = Space(7-Len(n)) & n Else Format = n
End Function

2、运行

@REM do not use wscript GetHDInfo.vbs
@cscript GetHDInfo.vbs

Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

Disk #1(IDE): Hitachi HTS545032B9A302 ATA Device, Size=320,070 MBytes
Part.  Drive          F/S   Size(MBytes)  Free(MBytes)  Active  Primary
-----------------------------------------------------------------------
 #1    D: WinAPP      NTFS    319,862       182,455     No      Yes

Disk #0(IDE): Samsung SSD 850 EVO 500GB ATA Device, Size=500,105 MBytes
Part.  Drive          F/S   Size(MBytes)  Free(MBytes)  Active  Primary
-----------------------------------------------------------------------
 #1    E: MacSSD      HFS     256,114        89,747     No      Yes
 #3    C: BOOTCAMP    NTFS    242,999        45,934     Yes     Yes

Press any key to continue . . .

Spring01事务管理

一、事务传播

事务 说明
@Transactional(propagation=Propagation.REQUIRED) 如果有事务,那么加入事务,没有的话新建一个(默认情况)
@Transactional(propagation=Propagation.NOT_SUPPORTED) 不为这个方法开启事务
@Transactional(propagation=Propagation.REQUIRES_NEW) 不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
@Transactional(propagation=Propagation.MANDATORY) 必须在一个已有的事务中执行,否则抛出异常
@Transactional(propagation=Propagation.NEVER) 必须在一个没有的事务中执行,否则抛出异常
@Transactional(propagation=Propagation.SUPPORTS) 如果其他bean调用这个方法,在其他bean中声明事务,那就用事务。如果其他bean没有声明事务,那就不用事务

二、事务隔离级别

事务隔离级别 说明
@Transactional(isolation=Isolation.READ_UNCOMMITTED) 读取未提交数据(会出现脏读,不可重复读),基本不使用
@Transactional(isolation=Isolation.READ_COMMITED 读取已提交数据(会出现不可重复读和幻读)
@Transactional(isolation=Isolation.REPEATABLE_READ 可重复读(会出现幻读)
@Transactional(isolation=Isolation.SERIALIZABLE 串行化

三、@Transactional的属性

属性 类型 描述
value String 可选的限定描述符,指定使用的事务管理器
propagation enum:Propagation 可选的事务传播行为设置
isolation enum:Isolation 可选的事务隔离级别设置
readOnly boolean 读写或只读事务,默认读写
timeout int(in seconds granularity) 事务超时时间设置
rollbackFor Class对象数组,必须继承自Throwable 导致事务回滚的异常类数组
rollbackForClassName 类名数组,必须继承自Throwable 导致事务回滚的异常类名字数组
noRollbackFor Class对象数组,必须继承自Throwable 不会导致事务回滚的异常类数组
noRollbackForClassName 类名数组,必须继承自Throwable 不会导致事务回滚的异常类名字数组

Linux常用命令08cp命令强制覆盖文件

最近,用cp命令拷贝文件夹时,发现即使用了-f选项,覆盖文件夹时,仍然要一个文件一个文件的确认,吐血啊。

后来发现,我调用的cp命令其实是一个别名,用alias命令就可以看到了。

alias cp=’cp -i’

额,系统为了安全,默认强制大家在覆盖前,逐个进行确认。知道了原因,那解决问题就简单了。

方法一、用管道,对每个提醒直接进行确认

yes|cp -fr src dest

方法二、取消别名

unaslias cp 

方法三、强制使用cp命令,而不是使用别名

\cp -fr src dest