29 Dec 2011

密码泄露查询

收藏到CSDN网摘

密码泄露事件持续发酵,当当,多家银行用户资料均遭泄露,虽未得到最终证实,但是仍然让用户无法放心.

密码资料是否泄露查询网站:
http://lucky.anquanbao.com/

26 Dec 2011

拿什么拯救你,我的密码?天涯论坛4000万用户资料泄露

收藏到CSDN网摘

这些所谓的全球之"最"的网站真的总给人惊喜:先是全球最大的IT中文社区csdn600万用户资料泄密,csdn官方又是公告,又是报警,又是删帖忙了个不亦乐乎,到了也没个说法.随后人人网,多玩,开心...多家知名网站用户资料均遭泄密.

今天全球最大的中文社区天涯论坛4,000万用户资料又被泄露,让人不得不认真考虑个人信息的保密和这些顶着"最"光环的网站的安全问题了!

下载下来看看自己的账号有没有被泄露.所有信息均系网络收集,请于下载后24小时自觉删除.

http://goo.gl/CZlxP

21 Dec 2011

2012年真实愚人节提前上演:csdn600万用户资料泄露

收藏到CSDN网摘

update:
目前已经证实,多家国内知名网站用户资料均遭泄露.CSDN删除了论坛中关于密码泄露的帖子,人人网登录已经提示用户修改密码了.7k7k 2000W 人人网500W 嘟嘟牛66277 178网1000W帐户确证 已泄露,Alipay泄密,图中惊现alipay.com20100908.sql,您的支付宝密码安全吗????


CSDN你不是一个人在战斗.....


作为中国最大的"程序员"网站,csdn竟然明文保存用户密码(可能是有其他用途),今日,包含600万用户资料的文件泄露.

今日下午,有媒体报道称,CSDN的安全系统遭到黑客攻击,600万用户的登录名、密码及邮箱遭到泄漏,且密码都是明文保存,为进行任何加密操作。获取泄露出的文件的人只需要用文本编辑软件打开即可查看所有用户的信息。

CSDN对此表示,将临时关闭CSDN用户登录,针对网络上面泄露出来的帐号数据库进行验证,凡是没有修改过密码的泄露帐号,全部重置密码。




是否泄密查询网站: http://csdn.aspx2.com/


19 Dec 2011

修正Firefox邮件提醒插件webmail notifier的hotmail邮箱问题

收藏到CSDN网摘

firefox的webmail notifier插件非常好用.但是这2天突然发现hotmail邮箱提醒不能用了,gmail还是可以的.
google后找到的解决办法如下:

更新hotmail.js文件的105行.
找到这个js文件的方法:firefox的help菜单,trouble shooting,然后找到profile文件夹,hotmail.js文件就在下面这个路径下:
<firefoxprofile>/extensions\{37fa1426-b82d-11db-8314-0800200c9a66}\components\scripts

105行 :
var fnd=aData.match(/<ul\s+?class="List FolderList.+?>([\s\S]+?)<\/ul>/g);

改为:
var fnd=aData.match(/<ul\s+id="folderListControlUl"\s+class="List FolderList.+?>([\s\S]+?)<\/ul>/g);

17 Nov 2011

python tip - 截取google docs的pdf地址

收藏到CSDN网摘



截取google docs的pdf地址 import urllib2

s = raw_input('please input url:\n')
while len(s.strip())>0:
if 'cache:' in s:
st = s.find('cache:')+len('cache:')
ss = s[st:]
ss = ss[ss.find(':')+1:]
elif 'url=' in s:
st = s.find('url=')+len('url=')
ss = s[st:]
ed = ss.find('.pdf')+len('.pdf')
ss = ss[:ed]
if 'http' in ss:
print urllib2.unquote(ss)
else:
print 'http://'+ss
s = raw_input('\nplease input url:\n')

6 Nov 2011

记事本保存时光标乱跑的问题解决

收藏到CSDN网摘

在实际工作中几乎天天要用到Windows系统中的记事本,比如用它来修改文本文件、修改网站代码、修改系统文件等,可是不知细心的朋友有没有发现,每次保存的时候就会发现光标会莫名其妙地后退几格,或者直接跳到了上一行。没注意到的话,继续编辑就会把内容搞乱了。经过研究终于找到了解决方法。

解决:用记事本打开文件后什么也不操作,先保存一下(文件→保存;或者按Ctrl+S),这样以后在编辑内容时保存就不会出现输入光标乱跳格的现象了。

17 Oct 2011

Matlab P文件——加快Matlab程序,保护你的算法

收藏到CSDN网摘


P文件是对应M文件的一种预解析版本(preparsed version)。因为当你第一次执行M文件时,Matlab需要将其解析(parse)一次(第一次执行后的已解析内容会放入内存作第二次执行时使用,即第二次执行时无需再解析),这无形中增加了执行时间。所以我们就预先作解释,那么以后再使用该M文件时,便会直接执行对应的已解析版本,即P文件。但又因为Matlab的解析速度非常快,一般不用自己作预解析。只有当一些程序要调用到非常多的M文件时,如GUI应用程序时,才会作预解析,以增加以后的调用速度。
P文件可以用来作保密代码之用,如果你给别人一个M文件,别人可以打开来看到你所有的代码和算法。如果你的代码不想被别人看到,那可以给他P文件。
pcode函数也可以应用在M函数文件。

Matlab命令:pcode

pcode fun
pcode *.m
pcode fun1 fun2 ...
pcode... -inplace



Description

pcode fun obfuscates (i.e., shrouds) M-file fun.m for the purpose of protecting its proprietary source code. The encrypted M-code is written to P-file fun.pin the current directory. The original M-file can be anywhere on the search path.

If the input file resides within a package and/or class directory, then the same package and class directories are applied to the output file. See example 2, below.

pcode *.m creates P-files for all the M-files in the current directory.

pcode fun1 fun2 ... creates P-files for the listed functions.

pcode... -inplace creates P-files in the same directory as the M-files. An error occurs if the files cannot be created.

4 Oct 2011

Javascript:显示鼠标点击位置坐标

收藏到CSDN网摘




临时需要检测鼠标点击位置在图片中的坐标,javascript,firefox不响应offset函数,仅ie有效.

<script>
function getcoords()
{
document.getElementById("ids").value += event.offsetX+","+event.offsetY+"\n";
}
</script>

<img src= "a.jpg" width=1200 height=800 onclick= "getcoords();">

<textarea id="ids" rows=100 cols=100>
</textarea>

20 Sept 2011

Euler Project 12 欧拉工程12

收藏到CSDN网摘


The sequence of triangle numbers is generated by adding the natural numbers. So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be:

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

Let us list the factors of the first seven triangle numbers:

1: 1
3: 1,3
6: 1,2,3,6
10: 1,2,5,10
15: 1,3,5,15
21: 1,3,7,21
28: 1,2,4,7,14,28

We can see that 28 is the first triangle number to have over five divisors.

What is the value of the first triangle number to have over five hundred divisors?

翻译:

三角数序列可通过连续自然数求和得到.第7个三角数是1 + 2 + 3 + 4 + 5 + 6 + 7 = 28.前10个三角数是:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

列出前7个三角数的因子:

1: 1
3: 1,3
6: 1,2,3,6
10: 1,2,5,10
15: 1,3,5,15
21: 1,3,7,21
28: 1,2,4,7,14,28

可以发现28是第一个有超过5个因子的三角数.

找到第一个有500个因子的三角数.

29 Aug 2011

c++调用help provider提供帮助文档

收藏到CSDN网摘

c++调用help provider提供帮助文档 private void mnuContentsHelp_Click(object sender, System.EventArgs e)
{
// Show the contents of the help file.
Help.ShowHelp(this, hpAdvancedCHM.HelpNamespace);
}

private void mnuIndexHelp_Click(object sender, System.EventArgs e)
{
// Show index of the help file.
Help.ShowHelpIndex(this, hpAdvancedCHM.HelpNamespace);
}

private void mnuSearchHelp_Click(object sender, System.EventArgs e)
{
// Show the search tab of the help file.
Help.ShowHelp(this, hpAdvancedCHM.HelpNamespace, HelpNavigator.Find, "");
}

15 Aug 2011

Python调用ie提交form

收藏到CSDN网摘



利用python提交网页 import win32com.client
import time
ie6=win32com.client.Dispatch("InternetExplorer.Application")
ie6.Navigate("http://localhost/skyenet/")
ie6.Visible=1
while ie6.Busy:
time.sleep(1)

document=ie6.Document
document.getElementById("username").value="alibaba"
document.getElementById("password").value="zhimakamen"
document.forms[0].submit()

14 Aug 2011

真实与谎言:《三毛真相》

收藏到CSDN网摘

旅行家马中欣于1996年4月自西班牙首都马德里追寻三毛生前游踪,经非洲撒哈拉到加纳利群岛,遍访三毛生前亲友知交邻里,试图以“确凿的证据”还读者一个真实的三毛。在《三毛真相》一书中,三毛是一个怪僻、自恋、神经质、白日做梦的女人,死缠赖追荷西,婚姻生活亦不幸福,如该书标题之一即为(三毛)坏脾气,不顺就骂(荷西),闷葫芦有屈则逃。

   另外,书中还指出了三毛文中一些不真实的风土人情,如《沙漠观浴记》中所说的沙哈拉威女人洗澡用石头刮污垢,用皮管通到身体里用海水灌肠等。

  马中欣在三毛生前曾与她有过交往,他自称那时就对三毛有看法,认为她作人不真实,好夸张渲染,因此怀疑其在书中自述的种种美好生活爱情神话的真实性,比如有无荷西其人,以及两人真实状况如何等等。这次他万里追踪采访并出书的目的是“以正传言,以了我的探奇之心”。

  国内一位非常著名的当代文学评论家对此表示,他本人也怀疑过三毛的真实世界和艺术世界之间的距离,认为一个自我封闭、有自恋倾向、过于理想化的女性作家,面对冷冰冰、硬梆梆的现实世界时,很可能“向内转”,退回到内心编造神话,并有意无意地以神话代替“惨淡的人生”,以自欺的方式自娱和自我满足。在这个意义上,万里追踪采访三毛生前生活真相,以对比其笔下的生活,对了解三毛其人其文是有很大意义的,这也是传统文论中所谓的“知人论世”。

下载地址:(解压密码为本博短网址↑↑↑↑↑看最上面)
下载马中欣- 三毛真相 西苑出版社1998年版-21M.7z

31 Jul 2011

VIM一键编译c/c++源文件[zt]




此文转载链接:http://www.vimer.cn/2009/10/11.html
具体功能如下:
具体功能如下:
1.按F5编译单个文件,支持C,C++,C#,也可以支持java。
2.获取编译器错误描述,在错误描述上回车,可以直接跳转到错误行。
先贴上代码,可以看出,我把C#相关的注释掉了,实际上C#也是支持的,只是后来由于不再做C#相关开发,有需要的朋友可以去掉注释,还是可以编译C#的。

23 Jul 2011

解决firefox下hotmail无法上传附件




hotmail无法上传附件,表现为上传那一排按钮无法点击.
解决办法:


firefox,附件组件,插件,禁用silverlight plug in即可.

21 Jul 2011

解决Word2007无法使用插入页码



在Office 2007中,如果你试图插入页码,会发现下拉菜单中的选项都是呈灰色的(见图),根本无法使用。当然,我们可以首先在Office 2003中插入页码,然后再在Office 2007中重新打开文档,但你会发现仍然无法使用页码功能,这是怎么一回事呢?

找到一个办法说跟Building Blocks.dotx文件有关,删除了也无法解决问题.

正确解决方法:
单击Word 2007的开始按钮,打开“Word选项→加载项”窗口




在“管理”下拉列表框中选择“模板”,然后单击右侧的“转到”按钮,单击“添加”按钮,找到C:\Program Files\Microsoft Office\OFFICE12\Document Parts\2052\Building Blocks.dotx这个文件,当然不要忘记将“Building Blocks.dotx”打上勾,加载后会出现在图5所示的列表框中,确认后关闭退出。



OK

16 Jul 2011

Euler Project 11 欧拉工程11



In the 20×20 grid below, four numbers along a diagonal line have been marked in red.

08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48

The product of these numbers is 26 × 63 × 78 × 14 = 1788696.

What is the greatest product of four adjacent numbers in any direction (up, down, left, right, or diagonally) in the 20×20 grid?

计算上面矩阵中横竖斜相邻的4个数的最大乘积.

Euler Project10 欧拉工程10




The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.
Find the sum of all the primes below two million.

10以内的素数之和为2+3+5+7 = 17
计算2,000,000(两百万)以内的素数之和.
此题的要快速需要用素数筛生成素数列表,然后求和即可.
好在matlab提供了primes函数,因此可以大大省事.下面注释掉的代码使用的是循环+判断.
时间差别是巨大的: 45s对0.08s. %% Find the sum of all the primes below two million.
% ========use loop================
% Elapsed time is 45.486655 seconds.
% ans =
% 142913828922
% ========use primes=============
% Elapsed time is 0.087248 seconds.
% ans =
% 142913828922
function result = euler10()
tic;
result = sum(primes(2000000));
% a = 2:2000000;
% b = isprime(a);
% result = sum(a(b));
toc;
end

13 Jul 2011

Python tips - 模拟大数乘法



python内置了大数运算,非常方便,这是个模拟竖式乘法的小程序,可以计算任意位数乘法.

运行结果如下:

2 Jul 2011

Euler Project9 欧拉工程9



寻找和为1000的勾股数之积.

勾股数定义为: 自然数a<b<c且a^2+b^2=c^2.例如3^2+4^2=9+16=25=5^2. 所以3,4,5就是一组勾股数.

存在一组勾股数满足a+b+c=1000.请计算abc之积.

27 Jun 2011

Free C and C++ books


Copy from: http://www.lighthouse3d.com/2011/06/free-c-and-c-books/




Some freely available books, some out of print, some still available in online stores, others in plain HTML.






Thinking in C++ 2nd Edition (2 Volumes) by Bruce Eckel - This is probably the most famous one. There is also a printed version on sale.






An Introduction to GCC, by Richard M. Stallman - A GNU C and C++ manual for those who want ot get started with the GNU compilers, gcc and g++.






Nectarine City Handbook of C Programming Style by Joseph Miklojcik – A book on writing clear code.






The C Book by Mike Banahanm Declan Brady and Mark Doran – The online version of “The C Book”, published by Addison Wesley in 1991 (no longer in print)






Introduction to C Programming by Rob Miles – A online introductory C book.






C Elements of Style by Steve Oualline – Building good programming style






C++ Annotations
by Frank B. Broken – Moving from C to C++


12 Jun 2011

.NETstring^到char*的转换

.NETstring^到char*的转换 .net中都是string^类型,如果要使用旧版c++的char*,可以如下转换 // convert from string to char*
char *str2chars(String ^s)
{
char *pHead, *pInd;
pHead = pInd = new char[s->Length+1];
for (int i=0;i<s->Length;++i)
*pInd++ = s[i];
*pInd = '\0';
return pHead;
}

10 Jun 2011

Euler Project8 欧拉工程第八题




Find the greatest product of five consecutive digits in the 1000-digit number.

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450



计算上面100位数中,连续5个数字的最大乘积.
只有100位数字,暴力循环即可.每次取5个数,如果包含0,乘积是0,直接跳过;如果这5个数中max-min大于4,则这5个数不连续.

代码:
%% greatest product of five consecutive digits
% Elapsed time is 0.042594 seconds.
% ans =
% 40824
function result = euler8()
tic;
s = '7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450';
result = 0;
for i=5:length(s)
temp = s(i-4:i);
if ismember(0,temp) || max(temp)-min(temp)>4 % 0 or not consecutive digits
continue;
end
result = max([result,prod(str2num(temp(:)))]);
end
toc;
end

9 Jun 2011

hhc.exe制作chm



反编译chm后,如果修改了内容,需要编译成chm,按照如下方法即可: 制作chm帮助文件,很多软件制作CHM都是调用hhc.exe,比如国产软件QuickCHM,就是调用了hhc.exe
微软的HTML Help Workshop也是调用了hhc.exe,比如我们安装完HTML Help Workshop之后,
在它的安装目录就会看到,有hhc.exe和hha.dll这两个文件。

hhc.exe可以用命令行操作,非常简单,只需要一个参数

hhc.exe C:\makechm\aa.hhp

hhp这个文件是工程文件,hhc是目录文件,hhk是index目文件。
hhp文件可自己新建,按照如下格式写好路径:

[OPTIONS]
Compiled file=C:\Documents and Settings\Administrator\桌面\test.chm
Contents file=test.hhc
Index file=test.hhk
Title=test
[FILES]
mark.htm
C:\fkchm\compile_date.htm
C:\fkchm\scanner_camera_add.htm
C:\fkchm\scanner_camera_deletepix.htm

用命令行反编译CHM文档



现在很多电子书都是CHM格式的,它们是HTML打包生成的。网上有很多的生成CHM和反编译CHM的工具,有很多还是收费的。而最近我发现了一个命令,是Windows自带的一个反编译Chm的命令。

命令行格式输入:

hh -decompile X:\A Y:\B.chm

其中 X:\A是反编译后储存文件的路径, Y:\B.chm是CHM文件的路径。

回车即可在X:\A中找到反编译的文件,连hhc和hhk都有!hhc是CHM的目录结构文件,hhk是CHM的元数据文件。。

Euler Project7 欧拉工程7



By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.

What is the 10001st prime number?

寻找第10001个素数. %% find 10001's prime number
% ======use primes==========
% Elapsed time is 0.008245 seconds.
% ans =
% 104743
function result = euler7()
tic;
x = primes(200000);
result = x(10001);
toc;
end


用循环的办法:

% ======use loop===========
% Elapsed time is 5.486655 seconds.
% ans =
% 104743
function result = euler7()
n = 0;
result = 1;
while n<10001
result = result+1;
if isprime(result)
n = n+1;
end
end
end

Euler Project6 欧拉工程6



The sum of the squares of the first ten natural numbers is,
1^2 + 2^2 + ... + 10^2 = 385

The square of the sum of the first ten natural numbers is,
(1 + 2 + ... + 10)^2 = 552 = 3025

Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025 − 385 = 2640.

Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.

计算前100个自然数"和的平方"与"平方的和"的差值.
%% Find the difference between the sum of the squares of 1:100 and the square of the sum.
% Elapsed time is 0.000032 seconds.
% ans =
% 25164150
function result = euler6()
tic;
x = 1:100;
result = sum(x).^2-sum(x.^2);
toc;
end

7 Jun 2011

windows添加右键在此处打开命令行

在右键菜单里添加"在此处打开命令行"

python tips - 转分数为小数



UPDATE: 新函数cmpfrac()可以用来求循环节长度.

将分数转换为循环小数,默认处理1/d的情况,输出50位.稍加修改,可以变成处理互质的a/b的程序.

代码如下:

5 Jun 2011

python模仿matlab的tic/toc计时



python模仿matlab的tic/toc计时

python有自己的timeit模块,但是用惯了matlab的tic/toc,模仿了一个,需要用到globals()函数.实现方法如下:

4 Jun 2011

每次打开Office2007都要重新配置解决办法



每次打开word2007都要重新配置解决办法如下:


1,最简单: win+R(或者开始-运行),输入: reg add HKCU\Software\Microsoft\Office\12.0\Word\Options /v NoReReg /t REG_DWORD /d 1
然后回车即可.



2.打开电脑C盘路径,C:\Program Files\Common Files\microsoft shared\OFFICE12\Office Setup Controller里面的SETUP改成SETUPa就可以了.



经验证,1只可解决word问题,如果excel也一样的问题,即使修改注册表那行把word改成excel还是不行;
2可以直接解决所有问题.推荐第二个办法.



2 Jun 2011

xp删除"拒绝访问"的文件夹



删除"拒绝访问"的文件夹 方法如下:

在XP中的“文件夹选项”的“查看”选项卡下去掉“使用简单文件共享(推荐)”复选框。
"拒绝访问"文件夹的“属性”->“安全”->“高级”-〉“所有者”-〉“目前该项目的所有者”
如果类似是"S-1-5-21-1528117516-2020809315-3846545974-1000"的代码,“将所有者改为”当前管理员账户,勾选“替换子容器及对象的所有者”,“确定”。
打开“高级安全设置”的“权限”选项卡下,勾选“从父项继承....,..明确定义的项目”复选框和“用在此显示的可以应用到子对象的项目...............”复选框,“确定”。
完成后就可以直接删除"拒绝访问"的文件夹了,包括Vista的。

30 May 2011

NURBS



degree (度)

linear = 1
quadratic = 2
cubic = 3
quintic = 5
连续性和度数是有关系的。一个度数为3的等式能产生C2连续性曲线

order (阶)

degree表示的是曲线的数学方程的度数,而order则是曲线的阶数,两者相差1
order表示对曲线上的任意一点,有几个控制点会影响它

每order个相邻的控制点形成一个span,所以span可以由控制点数和order来定义: span = cv - order + 1

control points (控制点)

控制点数量应该>=order,所以对于一条直线,至少有两个控制点
每个控制点可以有权重(weight),所有控制点权重相同(1)称为非有理(non-rational)
Nurbs中r表示rational,即可以有理,而不是一定有理。实际中,大多数curve都是非有理的,只有少数如circle,ellipse是有理的。(cricle的控制点权重不同)
一个控制点可以同时控制order个个数的曲线段

knots vector(节点向量)

节点向量是一组个数为(degree+num_of_control_point-1)的
节点向量需要符合两个条件
数字需升序排列
相同的数字重复次数不超过degree
相同数字的重复的次数称为multiplicity,multiplicity为1的knot value成为simple knot;multiplicity为degree的knot value称为full-multiplicity knot.
如一个degree为3的curve的节点可能为:(0, 0, 0, 1, 2, 2, 2, 7, 7, 9, 9)
度为3,有7个控制点,knot vector为(0,0,0,1,2,3,4,4,4),此处该knot vector是uniform的(均匀的)
首尾是full multiplicity knot
中间是simple knot
knot value是平均分布的

Nurbs中的Nu是指Non-Uniform,就是Nurbs允许非均匀的节点向量。

均匀与非均匀的主要区别在于节点向量的值。如果适当设定节点向量,可以生成一种开放均匀样条,它是均匀与非均匀的交叉部分。开放样条在两端的节点值会重复d次,其节点间距是均匀的。

中间的multiplicity knot会使曲线不平滑
控制点与节点向量是成组配对的:每 2 * degree个knots与degree+1个控制点对应
knot span: The range of parameter values between two successive knots in a spline.

Fit Point (插值点)

曲线上的点,点之间由插值计算而来

basis function

Nurbs中的bs表示basis function
Nurbs可以看做一个函数:(x, y, z) = bs_degree_knots_control_points(t),输入一个参数,输出一个点

样条

样条通常是指分段定义的多项式参数曲线
B-样条是样条曲线一种特殊的表示形式,使用basis function为其样条函数
样条插值通常比多项式插值好用, 用低阶的样条插值能产生和高阶的多项式插值类似的效果
B-spline frequently refers to a spline curve parametrized by spline functions that are expressed as linear combinations of B-splines (in the mathematical sense above)

Questions

什么是样条
什么是B样条
B样条和样条有什么区别

References
http://www.pinxue.net/OpenGL/nurbs/NURBS.htm
http://en.wikipedia.org/wiki/Non-uniform_rational_B-spline
http://www.rhino3d.com/nurbs.htm
http://ibiblio.org/e-notes/Splines/Intro.htm
http://zh.wikipedia.org/zh/%E6%A0%B7%E6%9D%A1%E5%87%BD%E6%95%B0
http://zh.wikipedia.org/zh/B%E6%A0%B7%E6%9D%A1
http://www.opengl.org/sdk/docs/man/xhtml/gluNurbsCurve.xml
http://docs.google.com/viewer?url=http://www.cs.duke.edu/courses/fall05/cps124/notes/10_curves/opengl_nurbs.pdf

27 May 2011

python的vim IDE环境搭建



python的vim IDE环境搭建
VIM安装,配色,插件...讲解文章遍地都是,就不写了,随便放狗一搜就行.
简单记录下针对python的几个东东

1.自动完成

虽然full vim已经自带了Python的omnifunction了,但是实在是单薄了点。这时就需要pydiction这个神器了。这家伙有3个组成部分。一个是插件本身python_pydiction.vim,另外一个是生成diction文件的python脚本pydiction.py,最后是一个自带的complete-dict文件

如果你是windows,就把python_pydiction.vim放在vim runtimepath路径下的ftplugin目录下,然后在vimrc中加入“filetype plugin on”,最后,设定一个全局变量指向需要的字典文件
let g:pydiction_location = ‘C:/vim/vimfiles/ftplugin/pydiction/complete-dict’

如果你发现你要的python模块没有加入到字典文件中,比方说web.py就没有加入,那就跑到放complete-dict的目录下,执行
python pydiction.py web

2.F5自动运行

只要在vimrc里写上
au BufRead *.py map <buffer> <f5> :w<cr>:!python % <cr>
这句话很简单,就是在Buffer Read的时候,如果是python文件,就把F5键映射为先保存,然后用Python运行本Buffer的文件.

3.函数帮助

如果你用VIM编写过C语言,就会知道可以通过Shift+K(就是大写的K啦),来调用man命令来查询光标下的函数的解释,这个真是非常方便。Python编程也可以这样就爽了。其实这并非难事,只要这个插件:pydoc.vim

4.debug功能
目前还未找到好用的

csdn签名插件



CSDN论坛的签名插件, 原作者Tim(q107770540).
使用方法:
去下面地址下载,然后用记事本修改内容后,上传到你自己的空间,csdn加载一下就行了.http://my-own-blog-file.googlecode.com/files/CsdnPersonalSignaturePicEdited.js

23 May 2011

.NET使多行文本框滚动到最后一行

.NET使多行文本框滚动到最后一行 在 .Net Full Framework中,要想使多行文本框滚动到最新插入的那一行,非常简单, txt->AppendText("Last line");
txt->ScrollToCaret();

21 May 2011

查看OpenGL版本号


如何查看系统当期OpenGL版本号?
OpenGL 版本:
char *Version = (char *)glGetString(GL_VERSION);
取得字串,此字串便是版本号。

OpenGL extension 版本可如下获取
char *Extension = (char *)glGetString(GL_EXTENSIONS); 

gluPerspective和glFrustum的转换



gluPerspective使用右手坐标系,跟opengl一样.(x/y/z分别是右/上/屏幕往外);glFrustum使用eye coordinate system(相机坐标系,或者眼睛坐标系),x/y与gluPerspective相同,但是z轴反向,是顺着视线方向的(x/y/z分别是右/上屏幕往里),所以转换时需要注意zFar的值(zFar是最后2个参数中比较大的那个.如果原来zFar是负值,则需要反向).

下图2个坐标系分别是gluPerspective使用的坐标系和glFrustum使用的坐标系.


这2个函数的参数转换原理如下图:

下面是个转换函数:(仅限于显示区域对称的情况)
测试用参数: fovy = 45.0, zNear = 50.0, zFar = -1000.0;
void Perspective2Frustum(double fovy, double fAspect, double zNear, double zFar)
{
const double DEG2RAD = 3.1415926/180;
double ymin, ymax, xmin, xmax, tangent;

tangent = tan(fovy/2 * DEG2RAD);
ymax = zNear * tangent;
xmax = ymax * fAspect;

ymin = -ymax;
xmin = -xmax;

glFrustum(xmin,xmax,ymin,ymax,zNear,-zFar);
}


对于显示区域不对称的情况,gluPerspective就无能为力了,必须分别指定glFrustum的各个参数来实现透视投影变换.还有一种情况是使用多个显示器来显示时,对于每个显示区域可以分别指定glFrustum的参数来拼接场景.

参考资料:http://www.songho.ca/opengl/gl_transform.html

特征值与特征向量


特征值和特征向量是一种数据的处理方法,可以简化数据。
矩阵乘特征向量就是在其方向的投影。这点类似于向量点积既是投影。

通过求特征值和向量,把矩阵数据投影在一个正交的空间,而投影的大小就是特征值。这样就直观体现了数据的基本特征。
最大特征值并不是说数据在所有方向的投影的最大值,而仅限于正交空间的某一方向(属于那个特征向量的方向)。
一般矩阵,满足满秩,只有一个这样的正交空间。
或许有更好的空间来体现数据的特征,但一般来说,正交空间就很好,不排除特殊应用需要非正交的空间,可能会更好。

至于为什么正交矩阵属于不同特征值的特征向量一定正交,可以证明如下:

约定:
a)复数λ的共轭复数记为λ′。
b)矩阵(包括向量)A的共轭转置矩阵(向量)记为A*

A是正交矩阵,A*=A^(-1),

设λ1,λ2是A的两个不同特征值,则λ1λ2′≠1
(如果λ2′=1/λ2.如果λ1λ2′=1,则λ1=λ2)

λ1X1=AX.
λ2X2=AX2.λ2′X2*=X2*A*

λ1λ2′X2*X1=X2*A*AX1=X2*X1.
(λ1λ2′-1)X2*X1=0

λ1λ2′≠1,
∴X2*X1=0,X2与X1正交.

18 May 2011

CMD命令中空格的解决办法


有的时候产品容易被默认安装到c:\Program Files\这样包含空格的路径下,那么在命令行中输入一个带空格的file path作为参数往往会出错。所以大家都流传着这样一种说法:产品安装的时候选择的目录千万不要包含空格。

但是,一个那么大的产品装好了,使用命令行配置的时候发现path带空格命令过不去,而卸载重装太恐怖了,怎么办?

现在有两个办法来解决这个问题



1)用缩写。比如c:\Program Files缩写为c:\Progra~1
再来刨根问底查查这个命名是否有规则,于是找到:
文件夹(sub-directry)名称,以前是不允许带空白的,后来允许带空白,但由于有了空白,许多命令出现二义性,于是采用双引号括起来的办法。例如:
cd Documents and Settings
按老定义 等于 CD Documents, CD 命令找不到名叫Documents 的 directry
于是采用双引号:
cd “Documents and Settings“
但用到 set PATH 时很麻烦,名字太长,双引号时常括错。于是采用8个字符缩写,即写头六个字母(略去空白),另加波浪号和1。例如:
"Documents and Settings“ -- DOCUME~1
"Local Settings" -- LOCALS~1 (注意略去空白,用了第二个词的字母,凑成六个,再加波浪号和1)。
于是,这种方法成了规定。
再来个十万个为什么的下一个,如果多个文件前6字符一样怎么办?为什么最后是1而不是0或者其他数字呢?看看这个例子
假设下面是你的C盘根目录中的文件夹:
Program Files
Progra file
Progra zhang
则三个目录分别表示为:C:\Progra~1; C:\Progra~2; C:\Progra~3;
2)绕过去,创建一个镜像。例如在cmd中输入 subst w: "C:\Documents and Settings\hopeshared"。然后就可以直接用w:\替代C:\Documents and Settings\hopeshared了

17 May 2011

Euler Project5 欧拉工程5



2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

找到可以整除1-20的最小正整数. 分析过程:

% 整除1-20,其实就是1-20的最小公倍数,计算时可以精简:
% 1-20只需要求[2,3,4,5,6,7,11,13,17,19]的最小公倍数即可
% 其余的
% 1不用计算
% 8 = 2*4
% 9 = 3*3(第二个3来自6=2*3)
% 10 = 2*5
% 12 = 3*4
% 14 = 2*7
% 16 = 2*8
% 18 = 2*9 = 2*3*3(第二个3来自6=2*3)
% 20 = 2*10 = 2*5*2(第二个2来自4=2*2)

==============
代码:
function result = euler5()
tic;
result = prod([2,3,4,5,6,7,11,13,17,19]); % => 8,9(3*3),10,12,14,15,16(2*4*2),18,20
toc;
end

运行时间及结果:
% Elapsed time is 0.000012 seconds.
% ans =
% 232792560

16 May 2011

Euler Project4 欧拉工程4



如果一个数字正写和反写结果一样,就称为回文数,请找到可以表示为2个三位数乘积的最大回文数.
%% 3 digital number which remains same from both direction, like 9009
% == from small to big
% Elapsed time is 43.379476 seconds.
% ans =
% 906609
% == from big to small
% Elapsed time is 5.504064 seconds.
% ans =
% 906609
function result = euler4()
tic;
result = 0;
for i=999*999:-1:100*100 % ends with 0, jump over
if mod(i,10)==0
continue;
end
n = num2str(i);
if strcmp(n,n(end:-1:1))
flag = 0;
for j=999:-1:900 % max, so from 999 to 900, try
if i/j<=999 && i==fix(i/j)*j % i/j must be smaller than 999, and i/j must be integer flag = j; break; end end if flag~=0 result = i; break; end end end [j,result/j] toc; end

结果
% Elapsed time is 5.504064 seconds.
% ans =
% 906609

14 May 2011

Euler Project3 欧拉工程3



求600851475143的最大质因数
%% 600851475143's biggest prime factor
% Elapsed time is 55.277722 seconds.
% ans =
% 6857
function result = euler3()
tic;
result = 0;
n = 600851475143;
for i=fix(sqrt(n)):-1:3
if isprime(i)==1 && mod(n,i)==0
result = i;
break;
end
end
toc;
end

13 May 2011

Euler Project2 欧拉工程2



Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

求斐波那契数列中小于4,000,000的值中的偶数项之和.
%% sum of even value elements from fibonacci list smaller than 4,000,000
% Elapsed time is 0.000011 seconds.
% ans =
% 4613732
function result = euler2()
tic;
a = 1;
b = 2;
result = 2;
while (a<4000000 && b<4000000) a = a+b; if mod(a,2)==0 result = result+a; end b = a+b; if mod(b,2)==0 result = result+b; end end toc; end

10 May 2011

Euler Project1 欧拉工程1



欧拉工程是一个用编程来解决一连串数学问题的项目。发现它对训练数学及编程挺有作用的。网上也有许多人做上面的题目并发布自己的算法。

上面共有337题,分几个等级,一级比一级难。完成它绝对是时间及精力及耐力及智力的较量。

解决问题的代码贴在这里.主要用matlab,偶尔python,很少c/c++.有时会matlab调python解决,只为快速解决问题. Question 1:
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.
解决
%% sum of number below 1000 and can be divided by 3 or 5
% Elapsed time is 0.002665 seconds.
% ans =
% 233168
function result = euler1()
tic
result = sum(unique([3:3:1000,5:5:999]))
toc;
end

21 Apr 2011

11 Apr 2011

Pentadactyl-vim like Firefox





Pentadactyl 是由 Vimperator 项目最活跃的开发者 Kris Maglione、Doug Kearns、Martin Stubenschrott维护的针对 Firefox4的一个分支。有了它,你就可以双手操纵浏览器,而无需鼠标的帮助.大大提高浏览速度和简化日常工作.非常推荐.

官方介绍:
http://dactyl.sourceforge.net/pentadactyl/

Pentadactyl is a free browser add-on for Firefox, designed to make browsing more efficient and especially more keyboard accessible. Largely inspired by the Vim text editor, the appearance and finger feel of Pentadactyl should be familiar to Vim users.

Dactyl is a fork of the Vimperator project by most of its primary developers.

有几个很好的说明
1.http://www.hksilicon.com/kb/cn/articles/13775/FirefoxVimVimperatorPentadactyl?mobi=true

2. http://pchu.blogbus.com/logs/148008347.html



9 Apr 2011

blogger显示代码





25 May 2011 Update
new style from HERE
CODE {
white-space: pre;
font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace;
color: #000000;
background-color: #eee;
font-size: 12px;
border: 1px dashed #999999;
line-height: 14px;
padding: 10px 10px 10px 21px; /* 內距綜合設定 依序為上右下左 */
margin: 5px 20px 5px 20px ; /* 邊界綜合設定 依序為上右下左 */
overflow:auto; /* 超出顯示範圍處理 全部顯示:visible 隱藏:hidden 捲軸:scroll 瀏覽器自動選擇:auto */
width: 90%;
}


另一个blogger显示代码的办法,更好看点,本文使用的正是这个css.


1. 给blogger设计添加高级css

CODE {
display: block; /* fixes a strange ie margin bug */
font-family: Courier New;
font-size: 8pt;
overflow:auto;
background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y;
border: 1px solid #ccc;
padding: 10px 10px 10px 21px;
max-height:200px;
height:200px; // for IE6
line-height: 1.2em;
}


2.需要贴代码的地方写入(把《和》换成<和>
《code》代码《/code》


8 Apr 2011

优秀的编程字体[zt]




好字体的标准:
1.非常清晰(Crisp clear characters)
2.支持扩展字符集(Extended characterset)
3.对空白把握的很好
4.可轻易区分’l', ‘1′ 和 ‘i’
5.可轻易区分’0′, ‘o’ 和 ‘O’
6.可轻易区分左右引号 - 最好是对称的
7.清晰的标点符号,特别是大括号小括号和中括号



UPDATE:
monaco号称来自Mac,但是不支持中文.这里有个修改过的monaco字体,支持中文的.来自 这里. 向作者表示感谢.

下载: >>请猛击这里

效果预览(点击查看大图)







详细介绍请看这篇blog:Finding the Best Programmer’s Font

里面提到的22个常用的font依次为:

1. Bitstream Vera Sans Mono

2. ti92pluspc

3. Crystal

4. Monaco

5. Anonymous

6. Andale Mono

7. Raize

8. ProFontWindows

9. Sheldon


10. BSU Kermit

11. Lucida Sans Typewriter Regula Java 2 SDK附带

12. Courier New

13. Courier, Windows自带

14. Lucida Consolev

15. ProggyTiny


16. ProggyClean

17. Fixedsys

18. Topaz-8

19. Free Monospaced

20. MS Mincho, Windows / Office自带

21. Hyperfont


22. Squareshooter Mono


呵呵,光说不看,没意思,这里有个对比图,可以参考一下(点击看大图),或者点击下面这个链接查看:

http://www.lowing.org/fonts/allfonts.htm

来自这里,略有编辑.