20071225

我将永不再使用QQ

以此纪念soff。
我对soff审判的结果不再关注,
正如不再关注当年为什么YTHT会关闭,
正如不再关注当年为什么SMTH会倒掉。

我只想转载一个故事。

古时候,阿跋斯哈里发王朝的第四代哈里发叫阿尔・马蒙。他有匹千里马。一次,一个叫奥玛的商人路过巴格达,他看到阿尔・马蒙的马,羡慕不已,提出用十个金币来换,但阿尔・马蒙说就是给一百个金币,他也不换。奥玛恼羞成怒,决定用诡计把千里马骗到手。

奥玛打探到阿尔・马蒙每天独自溜马的路线,选择了一个离城门最远,人迹罕至的地方,乔装成病重的流浪汉,躺在路边。果然,善良的阿尔・马蒙看到有人病倒路边,赶紧把他扶上千里马,打算带他进城治病。奥玛装作有气无力的样子指了指地上的包袱,阿尔・马蒙把他的包袱拾起来,系在马背上。奥玛又指了指远处的木棒,阿尔・马蒙以为这是流浪汉的木棒,忙转身去捡。奥玛趁机夺过缰绳,纵马逃走。

阿尔・马蒙追在后面追了很久,终于跑不动了。奥玛知道奸计得逞,便想奚落奚落阿尔・马蒙。他勒住马,得意洋洋对阿尔・马蒙说:"你丢了千里马,连一个铜子也没有得到,都是因为太慈悲了。你还有什么好说的?"

"马可以归你,但我有个要求," 阿尔・马蒙大声说,"别告诉别人你骗走千里马的方法。"

奥玛哈哈大笑说:"原来哈里发也怕别人嘲笑!"

"不,"阿尔・马蒙喘着粗气说,"我是担心人们听说这个骗局后,会怀疑昏倒在路边的都是骗子、强盗。说不定哪一天你我也会染疾,倒卧路边,那时谁来帮助我们呢?"

20071206

[原创]校医院joke



 
 

Gift 通过 Google 阅读器发送给您的内容:

 
 

于 07-12-5 通过 水木社区 Joke/笑话连篇 保留区 作者:fishparrot

发信人: fishparrot (吃鱼的鹦鹉), 信区: Joke
标 题: [原创]校医院joke
发信站: 水木社区 (Wed Dec 5 16:57:26 2007), 站内

真实故事,主人公BigLi是实验室同学。

BigLi: 医生,我眼睛痛。
医生:多喝水就好了。
BigLi: 为啥要喝水捏?
医生:多喝水就能多上厕所,多上厕所就能多休息眼睛。。。。。
BigLi: !@#$$^%


--

※ 来源:·水木社区 newsmth.net·[FROM: 211.99.222.*]

 
 

可从此处完成的操作:

 
 

20071129

二猫出生纪念

今天,2007年11月29日15:05,我的女儿 二猫 出生了。母女平安。
二猫重5.5斤。
大鼻子,像我;大眼睛双眼皮像我老婆;白净得很,头发已经挺长了,黑发;小嘴小下颏都很精致漂亮。
刚刚出生,叫她二猫的时候,就会转过眼睛来看我了。
特此纪念。

20070912

Google Reader (1000+) - 使用 Google 工具栏进行发送

Google Reader (1000+)

转载:关于夫妻同专业

发信人: wangmeng006 (wangmeng), 信区: Joke
标 题: 转载:关于夫妻同专业
发信站: 水木社区 (Mon Sep 10 20:07:56 2007), 站内



如果男方不如女方能干的话,更容易被鄙视一些。
还有就是没办法用专业原因作借口来缓和一些矛盾了,比如男说"我晚上要做个Yb晶体沿倍频方向的生长实验,要晚点回家",结果女的一个嘴巴就甩过去了"这个实验Yabecoski 1998年就做过了,你还做个P,是不是晚上要会你初恋情人去?!"

【 在 byseawave (工作不忘学习) 的大作中提到: 】
: 大家好,我想问一下,两个人都是学一样的专业,毕业后做同样的工作,这样的男女朋友是不是不太好啊?
: 如题,谢谢。

20070909

英语数字听力练习

用excel生成一定范围的随机数字。2位的和million的
  方案1:=int(rand()*100)
  方案2:=randbetween(0,100)
粘贴在DSPEECH [http://dimio.altervista.org/eng/]中,另存为mp3
  可调节语速、朗诵者性别
dictation again and again,直到熟练

Emacs FAQ from GNU, comment by young

for programming environment.
高亮了我常用的命令。加入一些常用命令。
供与我一样的初学者参考,备忘。
谢谢高手指点。
[http://www.newsmth.net/att.php?p.573.60815.335.pdf]

Emacs用于编程环境(修正)

修正。
尤其是用于C++,在Windows下。
根据网上的资料总结的,请指正。

排版困难,请见附件。
[http://www.newsmth.net/att.php?s.573.60814.491.html]

20070823

The C++ Standard Libary, A Tutorial and Reference:笔记

Nicolai M. Josuttis(侯捷,孟岩译):The C++ Standard Libary, A Tutorial and Reference,华中科技大学出版 ,2002年9月
2007-08-21 13:53:50

pp.10 Nontype Template
bitset<32> flag32;

pp.11 typename
template <class T>
class MyClass {
    typename T::subtype* ptr;
    ...    //此处如无typename,编译器会识别subtype为T的static成员
};
MyClass<Q> X;
Class Q{
    typedef int subtype;
};


pp.16 如果声明一个空白异常规格,那就表明该函数不会抛出任何异常
void f() throw();
违反异常规格,会导致(pp.27) -> unexpected() -> terminate()

pp.17 namespace定义的是逻辑模块,
而非实质模块,模块在UML中是package
namespace可在不同文件中扩展

pp.20 constant static members
class MyClass {
    static const int num = 100;
    int a[num];
};
const int MyClass::num;

pp.36 make_pair()隐式指定type
make_pair(42, 7.77)
=> pair<int, double>(42,7.77)

pp.38 auto_ptr的
主要动机是避免异常造成的memory leak

pp.39 auto_ptr的限制
1.无指针算术( 包括++)
2.禁止assign初始化
std::auto_ptr<ClassA> ptr1(new ClassA); //ok
std::auto_ptr<ClassA> ptr2 = new ClassA; //error

pp.40 auto_ptr ownership
初始化赋值,参数传递,返回值,会有owership转移
pp.42指出,[auto_ptr的语义本身就包含了拥用权。所以如果你无意转交你的拥有权,就不要在参数列中使用auto_ptr,也不要以它作为返回值。]
pp.39指出,[auto_ptr要求一个对象只能有一个拥有者,严禁一物二主。]

pp.44 const auto_ptr;
成员变量可用之避免ownership转移。
可更改auto_ptr所拥有的对象,
不可更改auto_potr的拥有权。
const std::auto_ptr<int> p(new int);
std::auto_ptr<int> q(new int);
*p=42;    //change value to which p refers.
bad(p);    //compiler error
*p=*q;    //change value to which p refers.
p=q;        //compiler error
return p;    //compiler error

p.49 不能以赋值操作初始化auto_ptr
std::auto_ptr<int> p (new int(42)); //ok
std::auto_ptr<int> p (new int(42)); //error

pp.64 number_limits<>的使用
cout << number_limits<short>::max();

pp.69 比较操作符
std::rel_ops::operat
!=, >, <=, >=
基于==和<完成

pp.75 container
sequence,排列次序和置入次序一致
associative,位置取决于元素值,与插入次序无关
可使用二分法查找,自动排序是一个(有用的)副作用。

pp.81 关联式容器
在实现中,关联式容器由二叉树实现
左子 <= 父 <= 右子
二叉查找树

pp.94 算法...是一种搭配迭代器使用的全局函数。

pp.106 inserter(container, pos),
其中pos仅供提示。从什么地方开始搜索正确的安插位置。在关联式容器中,元素位置由key决定。

pp.113 移除元素,置新区间
list<int>::iterator end = remove(coll.begin(), coll.end(), 3);
coll.erase(end, end());

pp.115 删除关联容器的元素,用成员函数
set<int> coll;
int num = coll.erase(3);

pp.127 funcotr的优点
1.初始化
√2.每个functor都有自己的类型,即使signatures相同
pp.130
    AddValue addx(x);
    Addvalue addy(y);
for_each(coll.begin(), coll.end(), addx);
for_each(coll.begin(), coll.end(), addy);
3.functor函数快
因为先完成初始化,template class可在编译时进行

pp.133 bind2nd(equal_to<int>(), 70)
以70作为第二参数,调用二元谓词equal_to,
从而定义出一个一元谓bind2nd,处理coll内的每一个元素
replace_if(coll.begin, coll.end()),
    bind2nd(equal_to<int>(), 70),
    42);

pp.136 STL容器中的元素为value,不是reference
存放指针时,比较动作的对象是指针,而非指针指向的对象

pp.147 以标准输入完成初始化操作
    std::deque<int>
        c( ( std::istream_iterator<int>(std::cin) ),
        (std::istream_iterator<int>() ) );
无此括号,c被视为函数

pp.149 reverse()为vector保留容量

pp.150 临时变量调用non-const成员函数
std::vector<T>(v).swap(v);
会shrink capacity

pp.171 list特殊变动性操作
c.unique(),移除相邻重复元素,只留下一个。
c1.splice(pos, c2),把c2中所有元素移到c1中,post前。

pp.176 红黑树
节点安插时最多做2个重新连接,
最大路径深度是最短路径深度2倍

pp.182 set, vector等的插入, remove
1.由于set改变元素值会引起元素位置改变,因此不能使用remove算法, 只能使用成员c.remove(elem)
iterator是const
2.vector插入、移除会导致iterator失效

pp.180 set搜寻函数
find(elem) 第一个元素elem
lower_bound(elem) 第一个可安插位置
  1    2    4    5    6
            -    -    -
            |    |    |
            |    |    +---------upper_bound(5)
            |    +-----------------lower_bound(5)
            +-------------------------upper_bound(3)
equal_range(elem)
pair(5,6)

pp.203 value_type
    std::map<std::string, float> coll;
    coll.insert(std::map<std::string, float>::value_type("otto", 22.3));
等价于
    coll.insert(std::make_pair("otto", 22.3));

pp.228 排序速度
hash table(未标准化)通常比binary tree快5-10倍
关联式容器每次插入都要排序,有时不如 vector全插入,然后调用排序算法 速度快

pp.258 vector::iterator递增的编译错误,string::iterator
sort(++coll.begin(), coll.end());
如果vector::iterator被实现为指针,编译会出错,
因为C++禁止修改任何类型(含指针)的临时值

pp.273 back_insert_iterator<vector<int> > iter(coll);
                      ----
                       +-------------push_back
    front_insert_iterator
        => insert_iterator<set<int> > iter(coll, coll.begin())    //任意位置

2007-08-23 14:18:18整理

pp.267 逆向迭代器位置
rbegin()指向最后元素的后一个位置rend()指向最首位的元素。
reverse_iterator rpos(pos);
        +----pos
1 2 3 4 5 6 7 8 9
      +------rpos

pp.280 end_of_stream iterator
用istream迭代器的默认构造函数生成
pp.283 if(cinpos!=istream_iterator<string>())

pp.288 iterator_traits
    namespace std{
        template <class T>
        struct iterator_traits {
            typedef typename T::value_type value_type;
            typedef typename T::difference_type difference_type;
            typedef typename T::iterator_category iterator_category;
            typedef typename T::pointer pointer;
            typedef typename T::reference reference;
        };
    }
    pp.288
    class Myiterator
        : public std::iterator <std::bidirectional_iterator_tag, type, std::ptrdiff_t, type*, type&>
    {...}

pp.304 谓词functor的要求
不应传递"行为取决于被拷贝次数或被调用次数"的functor
谓词应总是返回相同结果,对于相同参数;即谓词不应有可观察的状态

pp.307 成员函数的函数配接器
for_each(coll.begin(), coll.end()
    mem_fun_ref(&Person::print));    //const成员
pp.310 ptr_fun //一般函数
可以与bind2nd配合,实现单参函数调用

pp.311 自定义functor使用函数配接器
template <class T1, class T2>
struct fopow::public std::binary_function<T1, T2, T1>
{
    T1 operator() (T1 base, T2 exp) const( return std::pow(base, exp);)
}
...
transform (coll.begin(), coll.end(),
    ostream_iterator<int>(count, " "),
    bind2nd(fopow<float, int>(), 3));


pp.329 排序算法
sort        quicksort    nlog(n)
partial_sort    heapsort    nlog(n)    //多数时间慢于quicksort 2~5倍
stable_sort    mergesort

p.331 已序区间的算法
binary_search
includes
lower_bound, upper_bound, equal_bound
merge,复制到新位置
set_union, set_intersection, set_difference, set_symmetric_difference (只出现于两区间之一的元素集合)
inplace_imerge,位置在前区间开始处

pp.325 for_each与transform的不同
for_each, by reference,改变原值
transform,改变后的值复制到目标区间(可与原值相同)

pp.349 search "偶,奇,偶"子序列
bool checkEvenArgs[3] = {true, false, true};
pos = second( coll.begin(), coll.end(),
    checkEvenArgs, checkEvenArgs + 3,
    checkEven );
    ---------
       +-----------全局函数

pp.366 copy_backward
copy_backward(c2.begin()+10, c2.begin()+16,
    c2.begin()+9 );
    ------------
         +---------------目标区间终止位置之后
source: ..........abcdef..........
c2:     ..........abcabcdef
                  +     +  +
                  10    16 19

pp.369 transform
1.调用者必须保证第二源区间有足够空间;
2.调用者必须保证目标区间有足够空间,否则使用插入型迭代器。

pp.378 remove
-remove不可应用于关联容器,使用erase
-list使用成员函数remove
-移除后使用新终点

pp.389 rotate
类似于循环左移(或右移)

pp.459 priority_queue::top() 返回优先级最高元素

pp.459,238 front,返回首元素

pp.462 bitset
bitset<numeric_limits<unsigned long>::digits>(267);
bitset<24>(1e7); //十进10,000,000用24位二进制表示
bitset<100>(string("1010101")); ( pp.464)

pp.485, 487 string函数在non-const函数后失效
non-const函数:s+="ext";
失效:
const char* p=s.c_str();    //在not-const前取得的值
char& r=s[2];        //non-const后失效


pp.484 c-string
data()后返回字符数组,不含'\0'
copy(),复制到目标字符数组,不含'\0'
c_str(),返回c-string,含'\0'

pp.496 npos
if(s.find ("hi")==std::string::npos)
不使用临时变量,避免unsigned short/unsigned long的-1值不同
static const size_type npos = -1;

pp.517 避免二义性
s.insert((std::string::size_type)0, 1, ' ')
指出0不是iterator(可能实现为char*)

pp.592 iostream提速
static ios_base::sync_with_stdio(false);
在IO前调用,禁止与c标准库中相应文件stdio,stdout,stderr同步

pp.594 <<
只代表输出次序,不代表计算次序。

pp.599 clear
1.fail后要明确清除错误标记
strm.clear()
2.置位。检查failbit,如是,则清除
strm.clear(strm.rdstate() & ~std::ios::failbit)

pp.600 while(cin)
stream定义了可用于bool表达式的函数
operator void* () => !fail()
operator !()    => fail()

pp.618 对齐,宽度
执行了格式化I/0操作后,width恢复为默认值;fill不变,除非明确修改
width对于输出是最小宽度,不截尾
width对于输入是最多读入的宽度

pp.626 ios::nounitbuf
每次写出后,不清空output缓冲区

pp.634     basic_istream<>::tellg()
get
    basic_ostream<>::tellp()
put

pp.636 file.clear ()
清除fail/eof等,以便继续读写

pp.637 tie
每个stream只能tie一个output stream指针
保证在输入/输出前,先清空output stream
std::cin.tie(&std::cout);
及std::cin.tie(static_cast<std::ostream*>(o))

pp.639 共用buffer
ostream hexout(cout, rdbuf());
hexout.setf(ios::hex, ios::basefield);
hexout.setf(ios::showbase);
hexout << ...
cout << ...
共用缓冲,不共用格式

pp.642 重定向
ostream file ("something.txt");
old = cout.rdbuf(file.rdbuf);
...
cout.rdbuf(old); //记住恢复buffer

pp.649 string stream
-strstream是旧标准,仅用于向下兼容
-新:
    include <sstream>
    istringstream
    ostringstream
    stringstream
    stringbuf
    stringstream::str()
    stringstream::str(string)

pp.657 以辅助函数完成I/O(建议方案)
如使用 继承+friend 缺点:
friend不能成员虚函数
如果基类指针指向派生类,并作为input操作符参数,则被调用的是基类的操作符

pp.727 allocator
作为template参数传入
用于分配容器的内存空间,初始化elements
1.tempalte<class T, class Allocator=allocator<T> >
    class vector{
        private:
        Allocator alloc;
        T* elems;}
2.一个vector构造:
    template <class T, class Allocator>
    vector <T, Allocator>::vector
        (size_type num, const T& val,
        const Allocator& a)
        :alloc(a)
    {...
        elems = alloc.allocate(num);
        ...           --------
        for(...)    +
        {               +->基本的空间分配:分配,生成,销毁,回收
                  __+______
            alloc.construct(&elems[i], val);
        }
    } //根据元素个数num及数值val初始化vector

pp.728 非缺省Allocator
不同Alloctor配置出的元素不是同一类型,可用下面代码比较类型:
if(mymap.get_allocator()==s.get_allocator())

pp.* 缓冲
1.pp.682 sync_with_stdio(false)
不同C标准库同步
须在所有I/O前调用
2.p;683 unitbuf,每次输出后,stream清空缓冲
flush,endl
默认除cerr,weer外,nounitbuf

pp.* 国际化
未看

pp.668 自定义stream buffer
output:
putbase     put_pointer      end_of..
pbase()     pptr()           epptr()
 |           |                |
 V           V                V
+-+---------+-+-------------- +-+
| |         | |              | |
+-+---------+-+--------------+-+
input:
+-+---------+-+--------------+-+
| |         | |              | |
+-+---------+-+--------------+-+
 |           |                |
 V           V                V
eback()     gptr()           egetptr()
end back

pp.667 stream buffer iterator
    istream_iterator<char> inpos(cin);
    istream_iterator<char> endpos; //end of 调用iterator构造

    ostream_iterator<char> outpos(cout);
    while(inpos!=endpos)
    {
        *outputs = *inputs;
        ++inpos;
        ++outpos;
    }
    典型的filter framework。输出所有读入字符

笔记 2007年08月11日 16:59

20070820

排课程表软件

 
 

via Freeware Home -- new additions on Aug 17, 2007

FET is an Open Source, evolutionary program (using a genetic algoritm) for automatically generating the timetable of a school, high-school or university. It aims to have the same functionality as expensive scheduling programs. Features include: multi-lingual; automatic generation algorithm also allows semi-automatic or manual allocations; view the currently generated timetable without stopping the ongoing simulation; very flexible students structure in years, groups and subgroups - allows overlapping years and groups and non-overlapping subgroups. (in Education)

 
 

Things you can do from here:

 
 

试用wink20录屏软件

试用wink20,录屏软件。
输出为sfw格式,每帧可以单独修改,加入简单图形,指定每帧停留时间。可以录声音。
timed catpure或输入设备驱动。输入设备驱动很方便,但是未记录时间,所以播放时速度很快。
如果长时间录课的话,可能不方便。

20070814

能力进阶

[水木社区]

Sourceforge.net上,注册一个用户,然后可以填写自己的技术能力。每一种语言可以选这么几项:

Want to Learn
Competent
Wizard
Wrote The Book
Wrote It

20070629

电影

《终极细胞战》(Osmosis.Jones)

--
重剑无锋,大巧不工。

20070623

火神

小说《火神》在[http://gift.young.googlepages.com/%E7%81%AB%E7%A5%9E]存档。

我是一个什么样的程序员

在[http://www.doolwind.com/index.php?page=11]测试的。
Your programmer personality type is:

PLTC

You're a Planner.
You may be slow, but you'll usually find the best solution. If
something's worth doing, it's worth doing right.


You like coding at a Low level.
You're from the old school of programming and believe that you should
have an intimate relationship with the computer. You don't mind
juggling registers around and spending hours getting a 5% performance
increase in an algorithm.


You work best in a Team.
A good group is better than the sum of it's parts. The only thing
better than a genius programmer is a cohesive group of genius
programmers.


You are a Conservative programmer.
The less code you write, the less chance there is of it containing a
bug. You write short and to the point code that gets the job done
efficiently.

20070622

帮忙与责任(转发)

发信人: j2k (没有开始,也没有结束,只有道路在消失), 信区: RunningLife
标 题: 帮忙与责任
发信站: 水木社区 (Fri Jun 8 00:53:18 2007), 站内

协会例会开完,泛泛而谈,若心有所动,反躬自省

常常喜欢把帮忙挂在嘴边,比如找老同学帮忙办个事情,比如找辅导员帮忙联系工作,比如找老师帮忙高抬贵手,当然被别人找上门也不少,比如帮忙到图书馆借个书,比如帮忙到邮局寄封信,比如帮忙买个礼物送回家,比如……

很多吧,数不清楚了。

不过还有很多时候,不是用帮忙这个词,而是用责任,或者另外相近的,例如工作、要求、任务……不过我喜欢"责任",工作好像太宽泛了,工作还可以打盹呢,要求似乎有些机械,是别人的要求,和自己没有关系,任务就更夸张了点,极端反感这样的说法,那还是用"责任"吧。"责任"是近代才有的,古代
"责"的意思是"差事",估计和"任务"类似,"任"的意思是"职责",偏重担当。

这个例子也很多,比如今天打扫卫生是我的责任,比如明天升旗是我的责任,还有比如晚会的灯光是我的责任等等。很多,也数不清。

认真想想,"帮忙"大概重于关系,血缘、地缘、人缘都算,简单说就是人际关系,处好了,别人给你帮忙,处不好,当然就不帮忙。想起以前看过《乡土中国》,费孝通的一本薄薄的册子,极白话,其中提到中国传统社会是"差序格局",有一个很形象的比喻就是"以己为中心,像在水中投入的石子,水的波纹一圈一圈推出去,越远越薄"正好在《说文》中对于"伦"的解释是"伦也,水文相次有伦理也",多么形象。大概帮忙就是这个层面的意思了,你靠石子近,就容易帮忙,否则就越远越薄嘛。不过既然是水的波纹一样,你就不知道到底有没有波及到你,振幅虽然不断削减,不过总还是有那么点点微波,这个远和近太模糊了,
"帮忙"的界限就很模糊,到底他会不会帮忙呢?我忐忑不安中,也许明天就不帮忙了也说不定。

"责任"好像和这个一点关系都没有,"责任"就是一种权利和义务的匹配关系,你有你的责任,他有他的责任,不在乎他离开你远就没有责任了,也不在乎离你近这个责任就大了一些,等间距的,就好像一捆木头,有的承担多一点的捆绑压力,有的少一些,不过总是明确的。不过这个"责任"往往是有界限的,正如一捆木头,总是在这个捆的范围内,譬如我的责任是打扫教室,那隔壁就不是我的范围,甚至就今天,明天也不是我的范围了。虽然也许你要我来打扫你家不可得,也许会扫你的兴,不过教室我可认认真真打扫干净了。

一个团队,可以是"帮忙"的,也可以是"责任"的,比如我的好朋友组成个团队,那我们就是互相帮忙的性质,谁也没有必然的责任,不过谁都可以付出很大的"帮忙",如果两个恋人,那更是一个"帮忙"为主的团队。公司里面,好像大多数是"责任",很难听说老板让员工"帮忙"完成工作的,也许有时候话语上不免温柔体贴,不过试试如果你超过一定期限不干活,照样炒鱿鱼,当然不排除家族企业里面裙带之风,那你不上班都没有关系,此为另话。

一块石子再大,波纹也会很快消失到无法振动其他水花,这是常识,当然太阳可以不断掀起潮汐巨浪,不过太阳估计也管不到天狼星的潮汐吧。一捆木头则不然,你可以捆多一点,多捆几把然后再扎起来,堆垛起来,甚至是堆成小山,恐怕都是可以的,木头不用太粗,也不必一定都是实心木头,空心都无妨,巧妙的捆绑堆垛,还是可以承受很大压力的吧。

团队就是这样,也许开始后创业就两个好兄弟,发展到一定程度,还是要亲兄弟明算账,中苏关系够铁吧,还不是倒戈相向;太宗兄弟够亲吧,还不是玄武门血溅当场;希望集团五兄弟够意思吧,最后也分开各干各的了。要壮大起来,靠几块石子是做不来的,还得靠一捆一捆的木头。
--
炎炎夏夜皎皎明月心烦意乱无心睡眠 浩浩队伍盈盈笑语跑步健身吃瓜联欢
┌┬┐┌┬┐┌┬┐┌┬┐ ˇ ● ˇ┌┬┐┌┬┐┌┬┐┌┬┐
○ ├夜┤├间┤├跑┤├步┤� � ├有┤├氧┤├健┤├身┤ ▲
<�- └┴┘└┴┘└┴┘└┴┘ └┴┘└┴┘└┴┘└┴┘ �\●
/> 清华马协2007夏季夜间跑步活动 RunningLife/跑道人生 ∧■


※ 修改:・j2k 于 Jun 8 08:16:19 修改本文・[FROM: 202.108.12.*]
※ 来源:・水木社区 newsmth.net・[FROM: 202.108.12.*]

20070619

Re: 有没有doxygen的扩展?

 
 

Sent to you by Gift via Google Reader:

 
 

Re: 有没有doxygen的扩展?

via 水木社区 Emacs/Emacs编辑器 文摘区 by PKubuntu on Jun 15, 2007

发信人: PKubuntu (Hello, Ubuntu!), 信区: Emacs
标 题: Re: 有没有doxygen的扩展?
发信站: 水木社区 (Fri Jun 15 14:41:13 2007), 转信

找到了,这个

http://doxymacs.sourceforge.net

【 在 PKubuntu (Hello, Ubuntu!) 的大作中提到: 】
: 手动的敲那些@para什么的挺麻烦的,问一声~


--
std::_Vector_base(3) -- 3 Mar 2007 -- libstdc++
NAME
std::_Vector_base -
SYNOPSIS
Inherited by vector [protected].


※ 来源:・水木社区 newsmth.net・[FROM: 211.151.89.*]

 
 

Things you can do from here:

 
 

20070612

根据分隔符按列cut(转载)

cut

使用 cut 工具,我们可以将构成文件中数据域的各个列分隔开来。默认的分隔符是制表符,-f 选项可以用来指定希望显示的域。

举例来说,假设一个文本文件 "sample" 有三列,其内容如下所示:

one    two    three
four five six
seven eight nine
ten eleven twelve

现在执行下面的命令:

# cut -f2 sample 

这会返回:

two
five
eight
eleven

如果将这个命令修改成:

# cut -f1, 3 sample 

这会返回下面的不同结果:

one    three
four six
seven nine
ten twelve

这个命令有几个命令行选项。除了 -f 之外,我们还应该熟悉下面两个选项:

  • -c ―― 允许我们指定字符而不是域。
  • -d ―― 允许我们指定其他分隔符,而不是制表符。
____________________________________

cut:两个实际例子

ls -l 命令可以显示某个目录中所有文件的权限、链接个数、属主、组、大小、日期和文件名 ―― 这些都是以空格分隔开的。如果我们对大部分域都不感兴趣,而是只希望了解文件属主的信息,可以使用下面的命令:

# ls -l | cut -d" " -f5
root
562
root
root
root
root
root
root

这个命令只会显示文件属主(第 5 个域),而会忽略其他域。

如果您知道文件属主信息开始的第一个字符的确切位置,可以使用 -c 选项来显示文件属主的第一个字符。假设它是从第 16 个字符开始的,下面这个命令就返回第 16 个字符,这是文件属主名的第一个字符。

# ls -l | cut -c16
r

r
r
r
r
r
r

如果我们再假设大部分用户都使用最多 8 个字符作为自己的用户名,那么我们就可以使用下面的命令:

# ls -l | cut -c16-24 

这会返回用户名域的那些项。

现在假设文件名是从第 55 个字符开始的,但是我们无法确定文件名会连续占用多少个字符,因为有些文件名可能会比其他文件名长很多。解决方案是从第 55 个字符开始,但却不指定结束字符(这意味着我们要截取该行中所有剩余的内容),如下所示:

# ls -l | cut -c55-
a.out
cscope-15.5
cscope-15.5.tar
cscope.out
memo
search_items
test.c
test.s

现在我们来考虑另外一种情况。为了获得系统中所有用户的清单,我们可以从前面使用过的 /etc/passwd 文件中提取第一个域:

# cut -d":" -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator

要搜集用户名及其对应的主目录,我们可以提取第 1 个和第 6 个域的内容:

# cut -d":" -f1,6 /etc/passwd
root:/root
bin:/bin
daemon:/sbin
adm:/var/adm
lp:/var/spool/lpd
sync:/sbin
shutdown:/sbin
halt:/sbin
mail:/var/spool/mail
news:/etc/news
uucp:/var/spool/uucp
operator:/root

cut(转载)

cut的使用方法

  名称:cut

  使用权限:所有使用者

  用法:cut -cnum1 -num2 filename

  说明:显示每行从开头算起 num1 到 num2 的文字。

  范例:

  shell>> cat example

  test2

  this is test1

  shell>> cut -c0 -6 example ## print 开头算起前 6 个字节

  test2

  this i

npipe

E:\temp>npipe
Usage: npipe [OPTIONS] [INPUT] [OUTPUTS] [FILE FLAGS] [CONVERSIONS]
Input parameters can appear in any order, file flags affect only the next
file/flag/handle/section/object specified on the command line
-t, --tee
        Copy INPUT to STDOUT
-s, --stderrtee
        Copy INPUT to STDERR
-n handle-num, --handle handle-num
        Copy INPUT to handle: handle-num
-e error-file, --error-file error-file
        Send errors to file: error-file
-a append-file, --append-file append-file
        Append INPUT to file: append-file
-i input-file, --input-file input-file
        Read INPUT from file: input-file
-N handle-num, --input-handle handle-num
        Read INPUT from handle: handle-num
-D ntapi-file, --device-input ntapi-file
        Read INPUT from native api/kernel file: ntapi-file
-d ntapi-file, --device-output ntapi-file
        Copy INPUT to native api/kernel file: ntapi-file
-V, -VV, -VVV, -VVVV
        Increasing verbosity, by default only parameter error info
-b buffer-length, --buffer-length buffer-length
        Set the IO buffer size (default is 64k, unless console handle IO
        is taking place, in which case it is 256)
-w, --wait
        Wait for all pipes to be connected to before starting transfer
-B, --block-read
        Read an entire buffer before writing
        Likely only affects pipes or other communication handles
-m max-bytes, --maximum max-bytes
        Read a maximum of max-bytes from INPUT
-c conversion-function, --convert conversion-function
        Converts the buffer using one of the following functions:
        All output commands after this point will be processed after the
        conversion, those before will be unaffected.
        l       ANSI To Lower Case
        L       Unicode To Lower Case
        u       ANSI To Upper Case
        U       Unicode To Upper Case
        c       Clean non-ASCII to space
        c:l     Clean non-ASCII to letter l
        cnum    Clean non-ASCII to ASCII char num
        c-      Delete non-ASCII
        O       ANSI to OEM
        A       OEM to ANSI
        w       ANSI to Unicode
        W       ANSI to Unicode, with BOM
        a       Unicode to ANSI
        s[num]  Swap order of every num bytes, default 2, where num is a power
                of two
        hb[+][-]Binary to Hex by byte [with text dump] [without address dump]
        hw[+][-]Binary to Hex by word [with text dump] [without address dump]
        hd[+][-]Binary to Hex by dword [with text dump] [without address dump]
        hr[+]   Binary to Hex by byte raw dump [with spaces]
-h, -?, --help
        Display this help
-v, --version
        Display version info
--credits
        Display program credits
-P, --progress
        Displays a progress bar on the active console screen buffer (not STDOUT
        or STDERR)
-R, --report
        Print a status report to the error handle (default STDERR, set with -e)
        This is overriden by the progress-bar flag (-P).
-O [queue length], --overlapped [queue length]
        Reads from the input file (not file mapping) using asynchronous
        overlapped IO.
        This will probably improve the overall read/process speed
        This is incompatible with the block-read flag (-B), and file mapping
        inputs (-F)
        'Queue length' defaults to 16, and must be between 1 and 64.
-Q, --overlapped-output
        Outputs to the last output handle in the chain using asynchronous
        overlapped IO.
        This is incompatible with file mapping outputs
        This activates overlapped read IO (-O above)
-X, --always-read
        Read input even if no output specified

Flags which affect the next file on the command line
  -W, --file-share-write
        Open with FILE_SHARE_WRITE
  -F, --file-mapping
        Treat as a named file mapping object (cannot be a pipe)
        For best performance: ensure that the buffer size and the skip offset
        are a multiple of the page size, usually 4k.
  -p, --persistent
        Continue writing to next handle, even if write errors occur
        Read unmapable/unreadable sections as blank
  -S skip-bytes, --skip skip-bytes
        Skip the first skip-bytes bytes of the file, (not pipe)
Flags which affect the next file on the command line (pipe only)
  -z    Force connection to existing pipes rather than create a new pipe
  -Z    Force creation of new pipes rather than connection to existing pipe

Pipe names must be in the format: \\.\pipe\[[path\]name]
INPUT defaults to STDIN
/ may be used instead of -
Number may be prefixed with 0x for hexadecimal, and postfixed with the following
 SI prefixes: k,M,G,T,P,E
These stand for increasing powers of 2^10 (1024) and can be used to specify kilo
bytes, megabytes, etc.
One letter arguments may be clumped, however only the last argument in the clump
 may have an argument.
eg. -V -V -t -s -b64k <--> -VVtsb64k

Example: npipe -tsVVVVwm64k -FpD \Device\PhysicalMemory out -chr -a outputfile -
Z \\.\pipe\pipe1
Outputs to STDOUT,STDERR. Very verbosely. Waits for all pipes. Read max 64kB (65
536 bytes). Opens \Device\PhysicalMemory as a ntapi file mapping object and pers
istently reads from it. Outputs to file: 'out'. Converts output to a raw hexdump
, affects following two output commands. Appends to file: 'outputfile'. Always c
reates, and outputs on pipe: 'pipe1'.

E:\temp>npipe -c hr+ -i writer.exe outputs


数钱

Google Reader (100+)

拷,你们太悠闲了吧 (转载)

发信人: shujia2003 (好多牛虱啊), 信区: Joke
标 题: 拷,你们太悠闲了吧
发信站: 水木社区 (Sat Jun 9 11:10:57 2007), 站内

【 以下文字转载自 WorkLife 讨论区 】
发信人: yellowalert (香烧小静静), 信区: WorkLife
标 题: 拷,你们太悠闲了吧
发信站: 水木社区 (Sat Jun 9 11:10:01 2007), 站内

我的一天

7:00 起床
8:00-11:00 数钱
11:00-12:00吃饭、保养指关节
1:00-4:00 数钱
4:00-5:00 发现钱不是自己的,痛苦一小时

20070611

TotalCmd支持ftp服务上的搜索了

Google Reader (100+)

更新22:在FTP服务器上搜索

  TC的搜索功能超强,但对FTP的搜索则弱很多,未能做到FTP和本地内容一视同仁。TC7中此项改进,为经常用FTP功能的用户提供了极大方便。

20070606

OA,MIS,ERP(转载)

转载自[smth]

如果客户随便给点钱,他们把自己的产品称作财务系统
如果钱给得多些,就改名叫OA或者MIS
如果钱给得非常多,就改名叫ERP

其实都是一个东西。

他们的理由很简单,客户反正不懂,能忽悠就忽悠。。

拒绝

[(XYS20070606)]一个充分尊重患者知情权的中医师,不仅要告诉患者自己诊断不了癌
症,也治不了癌症,而且应该要求患者必须拿着现代医学的检验单来看病,否则
就拒绝治疗;如果是确知得了癌症的患者来要求治病,也应拒绝,而不能因为患 者坚决要求采用中医方法治疗就以为自己没有责任、可以放心开药了。

教师何尝不应如此?

ACM ICPC的魔鬼训练方案修正案

根据队员要求,[ACM ICPC的魔鬼训练方案]修改如下:
任务模式中,原版本教学模式为每次不过关切手指一个,现改为切手指一节,以延长队员的编程生命和痛苦。

20070605

我为你们骄傲

作为教练率队参加ACM ICPC东北地区赛。
两个队都获得了二等奖。
同时,参加吉林省高教厅赛的三个队,两个二等奖,一个三等奖。
我为你们骄傲。

ACM ICPC的魔鬼训练方案

注意,以下内容需要较强心理承受能力,可能导致某些人不舒服。
0.教学关
  要求在规定时间内,如5分钟内完成事先告知的题目,包括读题时间。
  题目包括语法、常用函数、一般算法、一般数据结构、动态规划、贪心等。
  不提供任何参考资料。题目为英文。
  不能在规定时间内完成的不能进入正式关--这是为了队员着想,向下看你就明白了。

1.任务模式
  要求队员在 规定时间内 完成 一定数量的 指定题目。到规定时间,凡未完成题目的,切手指一个。
  直至过关为止。
  手指数少于1的队员将光荣退役--这是为了队员着想,向下看你就明白了。

2.PK模式
  要求队员两人一组结对。同组内的两人分别完成题目。两台计算机上都连接有枪枝指向对方,先完成全部题目者的枪枝击毙对方。
  后完成,不,未完成题目的另一队员自动退役。

3.死斗模式
  要求队员十余人一组。同组内的所有计算机共同接有机枪。先完成题目的激活机枪,"突突突突突突...."。
  除唯一胜利者外,其余队员自动退役。

我自己也觉得恐怖。

20070525

隔直通交,电容(转载)

勇揭品牌机的内幕:所谓高保真音箱的猫腻 台式机-计世网

通常情况下,电脑有源音箱采用的2分频方式,即音频信号的高频成分和低频成分,分别由高音扬声器和低频扬声器来表现。这是由扬声器的分工决定的,高频扬声器适合重放较高频率的声音成分,而低频扬声器则适合于重放低频率的声音成分。低档的有源音箱中,往往只采用一个分频电容来进行分频,由于分频电容具有"阻低通高"的特性,因此高音扬声器往往串联着一个分频电容,造成低音与高音混在一起,效果令人难以接受。

中国互联网的未来(转载)

阅读文章

发信人: smokering (少年阿凡提), 信区: SF
标  题: [合集] 中国互联网的未来
发信站: 水木社区 (Fri May 25 01:20:37 2007), 站内

☆─────────────────────────────────────☆
   slli (老良) 于  (Sun Mar 25 23:17:55 2007)  提到:

发信人: shaoly (磊立凤行・宝宝执宝宝猪之手.与宝宝猪偕老), 信区: News
标  题: 中国互联网的未来
发信站: 水木社区 (Sun Mar 25 13:54:15 2007), 站内


[发表评论] [字体:大 中 小] [打印] [进入博客] [进入论坛] [推荐给朋友]
 
中国互联网真正的未来在于由娱乐的转向商务的,由娱乐消费品变成生活必需品。

月初,谷歌在北京举办了"互联网世纪论坛",并请到了被誉为"互联网之父"的Vinton G.Cerf博士与中国的业内人士见面。

这样的一个场合,除了要向Vinton频频抛出各种互联网的历史和现状相关的问题之外,我想大多数人都想从这位互联网之父的口中得到这样一个答案:互联网的未来是什么?

Vinton给出的答案足够震撼:星际互联网。Vinton目前在美国喷气推进实验室担任访问科学家,在那里从事星际互联网标准的设计。正是在1973年,Vinton和同伴Bob Kahn联合发明了互联网基础协议"TCP/IP",奠定了互联网技术的基础。

这样的答案对目前的中国互联网而言,恐怕实际的意义并不是很大。但是趁着谷歌营造的这个氛围,我倒是好好思考了一番:中国互联网的未来到底是什么?我想这样的答案还是得从历史中去寻找。中国互联网已经走过十年多的时间,我们到底取得了什么样的成就呢?

长久以来我们总是以财务数字来界定互联网公司的价值。如果我们抛却财务,改用价值的视角来看待我们的互联网公司,扪心自问,现存的中国互联网公司中,哪些公司是我们这些身处高科技革命时代的人群所不能或缺的呢?新浪也许算一个,腾讯也许是另一个,携程恐怕是最后一个。剩下的那些做网络游戏、 无线增值以及各种提供Web2.0服务的公司,它们真的已经不可或缺了么?

经常听到一些人士对中美互联网的对比:中国互联网是娱乐的,而美国互联网是商业的。甚至还有些业内人士以此为傲,我们在娱乐应用上超越了美国。但事实真是如此么?且不说中国互联网在商业价值上和美国互联网有天壤之别,即使从创新性和公司治理水准上来比较,中国互联网公司也是很难堪的。为什么会造成现在的局面呢?

我想先讲一个故事。我的一个朋友最近空降为一个医药公司的高管。前段时间他和我分享了自己在公司的惊讶发现:从公司治理的角度看,这个老牌的医药公司简直不堪入目,每年近亿元的广告费不知投向何处,公司10年间竟然没有推出一款新药,团队也极其臃肿效率低下;但是从财务角度看,这个公司却又好得让人惊讶,每年数亿元人民币的收入,公司账户上也存有数亿元人民币的现金,而且公司本身也没有任何贷款和欠债。这个朋友最后总结的原因是,行业暴利让这个公司在极其不规范的状态下持续赢利,但身在其中的人已经感受到重重危机。

实际上中国互联网恰恰和医药行业走了类似的轨迹。无线增值和网络游戏带来的暴利机会,为中国互联网掩盖了很多问题。不需要创新,不需要高水准的公司治理,中国大多数互联网公司总是能够依靠这两个暴利收入管道,打动投资商,打动资本市场。最近几年的采访中,我曾数次向那些雄心勃勃的创业者们问询这样一个问题:公司如何盈利?得到的回答多数是广告或者无线。中国互联网已经成为一个没有技术含量的行业,而当无线和网络游戏的暴利泡沫破灭后,这些身在其中的公司将为此埋单。

回到开始的那个问题:中国互联网的未来到底在哪里呢?我想真正的未来不是Web2.0,不是视频,也不是其他什么让人眼花缭乱的技术或者概念。真正的未来在于中国互联网由娱乐的转向商务的,由娱乐消费品变成生活必需品。

值得注意的是,这个趋势已经开始显现。从去年开始已经有很多的中国概念股开始向这方面努力,包括腾讯、新浪、Tom在线等,这些公司2007年在这方面都有着雄心勃勃的计划。此外,越来越多的创业者也正在瞄准这个方向,比如易趣创始人邵亦波和谷歌前亚洲首席市场官王怀南便在近期开通了一个以母婴为核心的网站。(n105)



 



☆─────────────────────────────────────☆
   smokering (少年阿凡提) 于  (Mon Mar 26 10:33:29 2007)  提到:


【 在 slli (老良) 的大作中提到: 】
: 【 以下文字转载自 News 讨论区 】
: 发信人: shaoly (磊立凤行・宝宝执宝宝猪之手.与宝宝猪偕老), 信区: News
: 标  题: 中国互联网的未来
: ...................

说实话,我觉得本贴的贴主对经济学不是很了解,娱乐应用就不是王道了?
影视业、餐饮业、洗浴中心,bbs......

互联网以前没有能够成为生活必需品,是因为缺乏基础,以前的NC、维纳斯、
都是在向着这个方向努力,提供一种低廉的终端作为应用基础,培养用户的
使用习惯。这个问题会随着电脑的普及和新一代人登上舞台得到解决。



☆─────────────────────────────────────☆
   MSC0NFIG (加油加油!) 于  (Mon Mar 26 10:34:28 2007)  提到:

        电脑的意义在于提供人机接口,其它的都可以用服务器解决

【 在 smokering (少年阿凡提) 的大作中提到: 】
: 说实话,我觉得本贴的贴主对经济学不是很了解,娱乐应用就不是王道了?
: 影视业、餐饮业、洗浴中心,bbs......
: 互联网以前没有能够成为生活必需品,是因为缺乏基础,以前的NC、维纳斯、
: ...................



☆─────────────────────────────────────☆
   Jungle (自由的荆棘~~十年树木) 于  (Mon Mar 26 10:45:09 2007)  提到:

手机啊,这个是以后的最现成的终端

【 在 smokering (少年阿凡提) 的大作中提到: 】
: 说实话,我觉得本贴的贴主对经济学不是很了解,娱乐应用就不是王道了?
: 影视业、餐饮业、洗浴中心,bbs......
: 互联网以前没有能够成为生活必需品,是因为缺乏基础,以前的NC、维纳斯、
: ...................



☆─────────────────────────────────────☆
   slli (老良) 于  (Mon Mar 26 12:07:50 2007)  提到:

        这个问题比较复杂
        我主要是看到个星际互联网
【 在 smokering (少年阿凡提) 的大作中提到: 】
: 说实话,我觉得本贴的贴主对经济学不是很了解,娱乐应用就不是王道了?
: 影视业、餐饮业、洗浴中心,bbs......
: 互联网以前没有能够成为生活必需品,是因为缺乏基础,以前的NC、维纳斯、

20070524

Matlab, maple, matlab, matcad等数学工具的对比(转载)

我搞计算物理的,说说我机子上常用的东东吧(有些不是GNU的,呵呵)
1.Mathematica 5.0
从大三见到它开始就喜欢上了,以前学高数的时候怎么没见到这个软件呢?Maxima可以
代替Mathematica的部分功能,不过习惯了Mathematica,也就不想再学新的东西了。
Mathematica现在在功能与界面上都要比Maxima要强,至少我觉得是这样的。
现在Mathematica 5.0 for linux的盗版已经有了,用linux还要盗版,hehe;
2.PGI 4.0
Fortran & C 的编译器,据说有些程序它编译出来的比g77快好几倍。做计算的对计算
效率可是很挑剔的,所以一直在用它而没用g77;
3.Emacs
终于有了GNU软件了,Emacs可以同时编译很多的文件,还能对算出来的数据做后期加工
(以前我曾经要取出一个数据文件的奇数行,Emacs轻松搞定)。Emacs是很灵活的东东,
习惯了以后就会发现是个极好用的工具;
4.Xmgr(grace)
xmgr 2.0以后就叫grace了,基本可以代替Origin的功能,一般的数据拟合,变换都
都可以胜任,我们实验室用了很久了。功能更强一点的是gnuplot,可以画xmgr不能画的
三维图,不过是命令行的,不易上手;

几点个人偏见:
1.Matlab学工科的人可能用的比较多,不过强度比较大的计算它的效率很低,还是不如
Fortran,小规模的演算Mathematica完全可以胜任。
2.为什么用Fortran而不用C:
(1) 科学计算用Fortran很久了,大量的程序都是Fortran写的,即使你不用Fortran
计算,至少也得看的懂Fortran.何况现在Fortran的数值计算性能上还是优于C;
(2) C功能上比Fortran强,但是也更容易出错。做计算的整天忙着处理跟计算不相关
的语法问题是很浪费时间的事情。实际上我现在的工作用Fortran 77就可以,Fortran 90
比77更好用,主要是矩阵运算有了专门的函数。没有类,对象,指针,科学计算照样可以
进行。

-------------------

若干数学软件的应用比较

目前,在科技和工程界上著名的数学软件主要有: MatLab、MathematicaMaple和MathCAD,它们各自针对的不同目标,有不同的特色。在学习和研究工作中,我接触比较多的是前三者。

1.MatLab――The Language of Technical Computing

MatLab V是我最先学习的计算软件,目前最新版本是MatLab 6.5。MatLab原是Matrix Laboratory在70年代用来提供Linpack和Eispack软件包的接口程序,采用C语言编写。从80年代出现3.0的DOS版本,逐渐成为科技计算、视图交互系统和程序语言。MatLab可以运行于多个操作平台上,如Windows 9X/NT、OS/2、Macintosh、Unix、Linux等。

MatLab程序主要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数, 工具包则包括复杂系统仿真、信号处理工具包、神经网络工具包、图像处理工具包、统计工具包等。MatLab是数值计算的先锋,它以矩阵作为基本数据单位, 在应用线性代数、数理统计、自动控制、数字信号处理、动态系统仿真方面已经成为首选工具,同时也是科研工作人员和大学生、研究生进行科学研究的得力工具。

MatLab的功能非常强大,可编程,支持C、Fortran等程序语言,附带Editor编辑器、图片处理等应用程序,和数百兆的帮助说明文档,使用相当方便。但是占据的系统资源也相当惊人;因此,我主要用它来完成后期计算、以及数据、图形的进一步处理。

2.Mathematica――The way the world calculates

Mathematica是由美国物理学家Stephen Wolfram领导的Wolfram Research开发的数学系统软件。它拥有强大的数值计算和符号计算能力,目前最新版本是Mathematica 4.2。

Mathematica的基本系统主要是用C语言开发的,因而可以比较容易地移植到各种平台上,如Mac OS、Linux等,Mathematica是一个交互式的计算系统,所接受的命令被称作表达式,系统在接受了一个表达式之后就对它进行处理,然后再把计算结果返回。Mathematica对于输入形式有非常严格的规定,虽然给使用者造成一些不便,一点微妙的输入差别就会出现完全出乎用意的结果,但这恰恰是其魅力所在,Mathematica的输入与输出格式也更让我们习惯。

鉴于Mathematica强大的符号运算能力,我主要用它来验证我的公式推导和做一些尝试性的推测,同时配合MatLab的数值计算功能。在实际工作中,我发现Mathematica的计算结果与计算机的性能有很大关系,不仅体现在速度方面;某些运算繁琐的题,在低档机上是得不到结果的;此外,它往往不能简化为我们所希望的表达式,因此,经常需要观察比较甚至更改计算结果的形式。

3.Maple――A comprehensive computer system for advanced mathematics

Maple是由Waterloo大学开发的数学系统软件,目前最新版本为8.0,它不但具有精确的数值处理功能,而且具有很好的符号计算功能,是MatLab和Mathematica的很好的折中选择,包括代数、分析、离散数学、图形处理、数值计算等领域的工具包;Maple提供了三千多种嵌入函数,支持丰富的运算符号,提供快速的编程处理环境,使用非常方便。

所以,我主要利用Maple来迅速完成一些简单的任务,尤其是在学习、作业的过程中。

4.MathCAD――A broad collection of numerical and symbolic calculation and visualization tools in a familiar scratchpad interface.

MathCAD是美国Mathsoft公司推出的一个交互式的数学系统软件。从早期的DOS下的1.0和Windows下的4.0版本,到引用Maple强大的符号计算能力,到今日的MathCAD 2001i,功能也从简单的数值计算,有了了质的飞跃。

MathCAD是集文本编辑、数学计算、程序编辑和仿真于一体的软件,界面友好、方便灵活,与Microsoft Office等兼容性较好,也适合普通用户使用,做一些简单计算。

比较而言,Maple和MathCAD是两种比较灵活、能干的软件,使用方便、兼容性高;Mathematica具有很强的符号运算、处理能力,能完成许多其它软件不能完成的工作如某些积分、求极限等;MatLab在图形处理、矩阵计算方面占优势;在计算精度和编程方面,可以选择Mathe
-------------------
Maple、MATLAB、MathCAD和Mathematica


数学软件四大家 ---Maple、MATLAB、MathCAD和Mathematica

  目前在科技和工程界上比较流行和著名的数学软件主要有四个,分别是Maple、MATLAB、MathCAD和Mathematica。它们在各自针对的目标都有不同的特色。

  一、Maple V 系统
  Maple V是由Waterloo大学开发的数学系统软件,它不但具有精确的数值处理功能,而且具有无以伦比的符号计算功能。Maple V的符号计算能力还是MathCAD和MATLAB等软件的符号处理的核心。Maple提供了2000余种数学函数,涉及范围包括:普通数学、高等数学、 线性代数、数论、离散数学、图形学。它还提供了一套内置的编程语言,用户可以开发自己的应用程序,而且Maple自身的2000多种函数,基本上是用此语 言开发的。
  Maple采用字符行输入方式,输入时需要按照规定的格式输入,虽然与一般常见的数学格式不同,但灵活方便,也很容易理解。输出则可以选择字符方式和图形方式,产生的图形结果可以很方便地剪贴到Windows应用程序内。

  二、MATLAB 系统
  MATLAB原是矩阵实验室(Matrix Laboratory)在70年代用来提供Linpack和Eispack软件包的接口程序,采用C语言编写。从80年代出现3.0的DOS版本,逐渐成 为科技计算、视图交互系统和程序语言。MATLAB可以运行在十几个操作平台上,比较常见的有基于Windows 9X/NT、OS/2、Macintosh、Sun、Unix、Linux等平台的系统。
  MATLAB程序主要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数,工具包则包括复杂系统仿真、信号处理工具包、系统识别工具包、优 化工具包、神经网络工具包、控制系统工具包、μ分析和综合工具包、样条工具包、符号数学工具包、图像处理工具包、统计工具包等。而且5.x版本还包含一套 几十个的PDF文件,从MATLAB的使用入门到其他专题应用均有详细的介绍。
  MATLAB是数值计算的先锋,它以矩阵作为基本数据单位,在应用线性代数、数理统计、自动控制、数字信号处理、动态系统仿真方面已经成为首选工具, 同时也是科研工作人员和大学生、研究生进行科学研究的得力工具。MATLAB在输入方面也很方便,可以使用内部的Editor或者其他任何字符处理器,同 时它还可以与Word6.0/7.0结合在一起,在Word的页面里直接调用MATLAB的大部分功能,使Word具有特殊的计算能力。

  三、MathCAD 系统
  MathCAD是美国Mathsoft公司推出的一个交互式的数学系统软件。从早期的DOS下的1.0和Windows下的4.0版本,到今日的8.0版本,功能也从简单的数值计算,直至引用Maple强大的符号计算能力,使得它发生了一个质的飞跃。
  MathCAD是集文本编辑、数学计算、程序编辑和仿真于一体的软件。MathCAD7.0 Professional(专业版)运行在Win9X/NT下,它的主要特点是输入格式与人们习惯的数学书写格式很近似,采用WYSWYG(所见所得)界 面,特别适合一般无须进行复杂编程或要求比较特殊的计算。MathCAD 7.0 Professional 还带有一个程序编辑器,对于一般比较短小,或者要求计算速度比较低时,采用它也是可以的。这个程序编辑器的优点是语法特别简单。
  MathCAD可以看作是一个功能强大的计算器,没有很复杂的规则;同时它也可以和Word、Lotus、WPS2000等字处理软件很好地配合使用,可以把它当作一个出色的全屏幕数学公式编辑器。

  四、Mathematica 系统
  Mathematica是由美国物理学家Stephen Wolfram领导的Wolfram Research开发的数学系统软件。它拥有强大的数值计算和符号计算能力,在这一方面与Maple类似,但它的符号计算不是基于Maple上的,而是自己开发的。
  Mathematica的基本系统主要是用C语言开发的,因而可以比较容易地移植到各种平台上,Mathematica是一个交互式的计算系统,计算 是在用户和Mathematica互相交换、传递信息数据的过程中完成的。Mathematica系统所接受的命令都被称作表达式,系统在接受了一个表达 式之后就对它进行处理,然后再把计算结果返回。Mathematica对于输入形式有比较严格的规定,用户必须按照系统规定的数学格式输入,系统才能正确 地处理,不过由于3.0版本引入输入面板,并且可以修改、重组输入面板,因此以前版本输入指令时需要不断切换大小写字符的繁琐方式得到很好的改善。3.0 版本可以用各种格式保存文件和剪贴内容,包括RTF、HTML、BMP等格式。

  五、四种软件的比较
  选用何种数学软件?如果仅仅是要求一般的计算或者是普通用户日常使用,首选的是MathCAD,它在高等数学方面所具有的能力,足够一般客户的要求, 而且它的输入界面也特别友好。如果要求计算精度、符号计算和编程方面的话,最好同时使用Maple和Mathematica,它们在符号处理方面各具特 色,有些Maple不能处理的,Mathematica却能处理,诸如某些积分、求极限等方面,这些都是比较特殊的。如果要求进行矩阵方面或图形方面的处 理,则选择MATLAB,它的矩阵计算和图形处理方面则是它的强项,同时利用MATLAB的NoteBook功能,结合Word6.0/7.0的编辑功 能,可以很方便地处理科技文章。



mathematica 值得信赖,国外很多著名的大学都在用它作解析计算和公式的推导,证明,算法的研究, 非常好的数学研究软件,我个人认为是No.1。它的数学分析可视化无与伦比。综合性能和另一个著名的软件Maple相比,又过之而无不及,要知道世界上绝 大部分的量子物理,天体物理论文中的公式推导都由它完成。绝对高端但又易用,是数学,力学,物理研究人员的好帮手,甚至它的数值计算也完全可以应付学术研 究。mathematica 和 Maple 的最新版本在用户公式的输入上都有很大改进,更加方便,随意。

北美不少Top大学的弹性力学,板壳理论,有限元等数学力学理论课的作业和Project都要求用它来完成。 我个人认为, 作为计算力学的工作者,从掌握语言的角度来讲, 只要掌握3种计算语言足够了,mathematica用来作解析法和数学模型的研究,Matlab用来实现数值算法(当然仍然可以还用 mathematica), Fortran用来写可执行源代码。没必要把自己陷入众多的语言和计算软件之中,没有意义的。

20070521

算法训练

刘先毅提到 现在的成绩与最初选拔时有很大的进步,练习是有意义的。
1.从有语法错语,无法调通程序到可以AC题目;
2.对提高工程能力有作用;
3.对其他科目实验有作用。

关怡然提到 应该如何训练。
关健问题不在于理解与否,而在于速度。
1.反复做同一道典型题,直至可以在规定时间内完成某个算法。
  如在半小时写出最小生成树算法。
2.对比
  1)大量语法错误,需要实验语法;
  2)不知道某功能应用何种函数实现,函数的参数表,需要实验函数的执行效果(作用);
  3)不知道经典算法,需要现场考虑算法;
  4)不能熟练写出经典算法,需要现场调试。