文章列表
 
您正在查看 "术业有专攻" 分类下的文章

2008/04/02 20:45
做模型降解,要求检测图像边缘。
由于图像有噪声,所以要先用高斯函数进行模糊,之后检测边缘。为了节省时间和空间,对高斯进行降阶~~
废话一堆,看图吧

1. 二荀令君 by 蒸汽海妖

2. 某亮 by somebody...不记得了
(虽然我对他没有爱,不过这张很受。。。)

3. 顾美人
(冒着被顾粉pia死的危险。。。)

4. 33 photoed by 花楚城

一点说明:中上部最显眼的那张是原始图像转成黑白的(太懒了,不想玩彩色的。。),其余的都是模糊或者求边缘的效果。不知道怎么在matlab里调图片长宽的某只飘过。
 
2007/10/06 16:49

昨天考完了block A唯一的一门考试,小小的总结一下。

block A有五门课:Front-End Vision and Multiple Scale, Molecular Imaging, Molecular modelling, 神经网络,生理中的数学建模。其中前两门在A结掉,第一门大作业,第二门考试:先笔试,不过再口试。

这门分子成像荷兰人都听得狂爽:导论性质,几乎没有数学啊计算啊;但我们几个中国人就要疯掉了:各种诡异的单词:angiogensis, apoptosis, cysteine, macrophage, phagocytes, annexin, endothelial, .....这些还是我昨天临考试前背的并且背下来了的,上课时说的几乎就没有能听得懂的= =

最郁闷的是这门课太前沿了,连书都还没有出版,各种标记物配体造影剂查也查不到,只有上课听懂了才能知道。狂看了一个礼拜的课件,终于在昨天考试的时候在75%的题目后面写下了字,至于正确率,不敢说啊,但愿能及格啊。。。囧

本来想圣诞回国的,机票都定好了,就是被这门课打击了,又取消掉:还是乖乖学习吧。。。如果这门课让我过了的话再考虑回国,555

接下来的任务还是很艰巨的:下周要完成FEV的三个大作业,到现在也只做了一道,另外的一点思路也没有;还有去骨头留血管的internship,并且下周又进入block B,分子模拟和神经网络的大作业也要开始了——而这两门课的软件一个完全不认识,另一个只认识名字。。数学建模也要抓紧,那个线性系统非线性系统真要玩死人了。

block B的新课,一个是FEV的后续课程:医学成像分析,还有一个是癌症与放疗。第一个是偶们方向的课,第二个,纯属某对癌症的关注,不过很可能又和分子成像一样是导论性质,完全听不懂,哎,要死了。

刚tk了一下某人的space,上面引用了他人的graduate的衡量标准,很受激励,特转引如下:

You might be a Grad Student if...
1.you actually take the time to compile a “you might be a grad student if...” list and then begin silently crying because it is WAY too personal
2.you think you should be paying rent for your office/library chair instead of your home.
3.you bring alcohol to the lab/library/office.
4.your office is better decorated than your apartment.
5.you have ever brought a scholarly article to a bar.
6.you rate coffee shops by the availability of outlets for your laptop.
7.you have ever discussed academic matters at a sporting event.
8.you regard ibuprofen as a vitamin.
9.you find the bibliographies of books more interesting than the actual text.
10.you find yourself explaining to children that you are in "20th grade".
11.you look forward to taking some time off to do laundry.
12.you have more photocopy cards than credit cards.
13.you wonder if APA style allows you to cite talking to yourself as "personal communication."

 
2007/04/25 10:07

http://www.blueidea.com/tech/program/2004/1556.asp

  多少年来,许多的编程语言和工具都包含对正则表达式的支持,.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类,而且它们也都与未来的Perl 5中的规则表达式兼容。
   
  此外,regexp类还能够完成一些其他的功能,例如从右至左的结合模式和表达式的编辑等。
   
  在这篇文章中,我将简要地介绍System.Text.RegularExpression中的类和方法、一些字符串匹配和替换的例子以及组结构的详细情况,最后,还会介绍一些你可能会用到的常见的表达式。
   
应该掌握的基础知识

  规则表达式的知识可能是不少编程人员“常学常忘”的知识之一。在这篇文章中,我们将假定你已经掌握了规则表达式的用法,尤其是Perl 5中表达式的用法。.NET的regexp类是Perl 5中表达式的一个超集,因此,从理论上说它将作为一个很好的起点。我们还假设你具有了C#的语法和.NET架构的基本知识。
   
  如果你没有规则表达式方面的知识,我建议你从Perl 5的语法着手开始学习。在规则表达式方面的权威书籍是由杰弗里·弗雷德尔编写的《掌握表达式》一书,对于希望深刻理解表达式的读者,我们强烈建议阅读这本书。
   
RegularExpression组合体

  regexp规则类包含在System.Text.RegularExpressions.dll文件中,在对应用软件进行编译时你必须引用这个文件,例如:

csc r:System.Text.RegularExpressions.dll foo.cs

命令将创建foo.exe文件,它就引用了System.Text.RegularExpressions文件。
   
名字空间简介

  在名字空间中仅仅包含着6个类和一个定义,它们是:
   
  Capture: 包含一次匹配的结果;
  CaptureCollection: Capture的序列;
  Group: 一次组记录的结果,由Capture继承而来;
  Match: 一次表达式的匹配结果,由Group继承而来;
  MatchCollection: Match的一个序列;
  MatchEvaluator: 执行替换操作时使用的代理;
  Regex: 编译后的表达式的实例。

  Regex类中还包含一些静态的方法:

  Escape: 对字符串中的regex中的转义符进行转义;
  IsMatch: 如果表达式在字符串中匹配,该方法返回一个布尔值;
  Match: 返回Match的实例;
  Matches: 返回一系列的Match的方法;
  Replace: 用替换字符串替换匹配的表达式;
  Split: 返回一系列由表达式决定的字符串;
  Unescape:不对字符串中的转义字符转义。
   
简单匹配

  我们首先从使用Regex、Match类的简单表达式开始学习。
   
Match m = Regex.Match("abracadabra", "(a|b|r)+");
   
我们现在有了一个可以用于测试的Match类的实例,例如:if (m.Success)...
如果想使用匹配的字符串,可以把它转换成一个字符串:
   
Console.WriteLine("Match="+m.ToString());
   
这个例子可以得到如下的输出: Match=abra。这就是匹配的字符串了。
   
字符串的替换

  简单字符串的替换非常直观。例如下面的语句:
   
string s = Regex.Replace("abracadabra", "abra", "zzzz");
   
它返回字符串zzzzcadzzzz,所有匹配的字符串都被替换成了zzzzz。

  现在我们来看一个比较复杂的字符串替换的例子:
   
string s = Regex.Replace(" abra ", @"^\s*(.*?)\s*$", "$1");
   
这个语句返回字符串abra,其前导和后缀的空格都去掉了。
   
  上面的模式对于删除任意字符串中的前导和后续空格都非常有用。在C#中,我们还经常使用字母字符串,在一个字母字符串中,编译程序不把字符“ \” 作为转义字符处理。在使用字符“\”指定转义字符时,@"..."是非常有用的。另外值得一提的是$1在字符串替换方面的使用,它表明替换字符串只能包含被替换的字符串。
   
匹配引擎的细节

  现在,我们通过一个组结构来理解一个稍微复杂的例子。看下面的例子:
   
string text = "abracadabra1abracadabra2abracadabra3";
   
     string pat = @"
   
       ( # 第一个组的开始
   
        abra # 匹配字符串abra
   
        ( # 第二个组的开始
   
        cad # 匹配字符串cad
   
        )? # 第二个组结束(可选)
   
       ) # 第一个组结束
   
       + # 匹配一次或多次
   
       ";
   
     //利用x修饰符忽略注释
   
     Regex r = new Regex(pat, "x");
   
     //获得组号码的清单
   
     int[] gnums = r.GetGroupNumbers();
   
     //首次匹配
   
     Match m = r.Match(text);
   
     while (m.Success)
   
      {
   
     //从组1开始
   
      for (int i = 1; i < gnums.Length; i++)
   
       {
   
       Group g = m.Group(gnums[i]);
   
     //获得这次匹配的组
   
       Console.WriteLine("Group"+gnums[i]+"=["+g.ToString()+"]");
   
     //计算这个组的起始位置和长度
   
       CaptureCollection cc = g.Captures;
   
       for (int j = 0; j < cc.Count; j++)
   
        {
   
        Capture c = cc[j];
   
        Console.WriteLine(" Capture" + j + "=["+c.ToString()
   
          + "] Index=" + c.Index + " Length=" + c.Length);
   
        }
   
       }
   
     //下一个匹配
   
      m = m.NextMatch();
   
      }

   
这个例子的输出如下所示:
     
     Group1=[abra]
   
         Capture0=[abracad] Index=0 Length=7
   
         Capture1=[abra] Index=7 Length=4
   
     Group2=[cad]
   
         Capture0=[cad] Index=4 Length=3
   
     Group1=[abra]
   
         Capture0=[abracad] Index=12 Length=7
   
         Capture1=[abra] Index=19 Length=4
   
     Group2=[cad]
   
         Capture0=[cad] Index=16 Length=3
   
     Group1=[abra]
   
         Capture0=[abracad] Index=24 Length=7
   
         Capture1=[abra] Index=31 Length=4
   
     Group2=[cad]
   
         Capture0=[cad] Index=28 Length=3

  我们首先从考查字符串pat开始,pat中包含有表达式。第一个capture是从第一个圆括号开始的,然后表达式将匹配到一个abra。第二个capture组从第二个圆括号开始,但第一个capture组还没有结束,这意味着第一个组匹配的结果是abracad ,而第二个组的匹配结果仅仅是cad。因此如果通过使用?符号而使cad成为一项可选的匹配,匹配的结果就可能是abra或abracad。然后,第一个组就会结束,通过指定+符号要求表达式进行多次匹配。
   
  现在我们来看看匹配过程中发生的情况。首先,通过调用Regex的constructor方法建立表达式的一个实例,并在其中指定各种选项。在这个例子中,由于在表达式中有注释,因此选用了x选项,另外还使用了一些空格。打开x选项,表达式将会忽略注释和其中没有转义的空格。
   
  然后,取得表达式中定义的组的编号的清单。你当然可以显性地使用这些编号,在这里使用的是编程的方法。如果使用了命名的组,作为一种建立快速索引的途径这种方法也十分有效。
   
  接下来是完成第一次匹配。通过一个循环测试当前的匹配是否成功,接下来是从group 1开始重复对组清单执行这一操作。在这个例子中没有使用group 0的原因是group 0是一个完全匹配的字符串,如果要通过收集全部匹配的字符串作为一个单一的字符串,就会用到group 0了。
   
  我们跟踪每个group中的CaptureCollection。通常情况下每次匹配、每个group中只能有一个capture,但本例中的Group1则有两个capture:Capture0和Capture1。如果你仅需要Group1的ToString,就会只得到abra,当然它也会与abracad匹配。组中ToString的值就是其CaptureCollection中最后一个Capture的值,这正是我们所需要的。如果你希望整个过程在匹配abra后结束,就应该从表达式中删除+符号,让regex引擎知道我们只需要对表达式进行匹配。
   
基于过程和基于表达式方法的比较

  一般情况下,使用规则表达式的用户可以分为以下二大类:第一类用户尽量不使用规则表达式,而是使用过程来执行一些需要重复的操作;第二类用户则充分利用规则表达式处理引擎的功能和威力,而尽可能少地使用过程。
   
  对于我们大多数用户而言,最好的方案莫过于二者兼而用之了。我希望这篇文章能够说明.NET语言中regexp类的作用以及它在性能和复杂性之间的优、劣点。
   
基于过程的模式

  我们在编程中经常需要用到的一个功能是对字符串中的一部分进行匹配或其他一些对字符串处理,下面是一个对字符串中的单词进行匹配的例子:

string text = "the quick red fox jumped over the lazy brown dog.";
   
     System.Console.WriteLine("text=[" + text + "]");
   
     string result = "";
   
     string pattern = @"\w+|\W+";
   
     foreach (Match m in Regex.Matches(text, pattern))
   
      {
   
     // 取得匹配的字符串
   
      string x = m.ToString();
   
     // 如果第一个字符是小写
   
      if (char.IsLower(x[0]))
   
     // 变成大写
   
       x = char.ToUpper(x[0]) + x.Substring(1, x.Length-1);
   
     // 收集所有的字符
   
      result += x;
   
      }
   
     System.Console.WriteLine("result=[" + result + "]");

   
  正象上面的例子所示,我们使用了C#语言中的foreach语句处理每个匹配的字符,并完成相应的处理,在这个例子中,新创建了一个result字符串。这个例子的输出所下所示:
   
  text=[the quick red fox jumped over the lazy brown dog.]
   
  result=[The Quick Red Fox Jumped Over The Lazy Brown Dog.]
   
基于表达式的模式

  完成上例中的功能的另一条途径是通过一个MatchEvaluator,新的代码如下所示:
   
static string CapText(Match m)
   
       {
   
     //取得匹配的字符串
   
       string x = m.ToString();
   
     // 如果第一个字符是小写
   
       if (char.IsLower(x[0]))
   
     // 转换为大写
   
        return char.ToUpper(x[0]) + x.Substring(1, x.Length-1);
   
       return x;
   
       }
   
       
   
      static void Main()
   
       {
   
       string text = "the quick red fox jumped over the
   
        lazy brown dog.";
   
       System.Console.WriteLine("text=[" + text + "]");
   
       string pattern = @"\w+";
   
       string result = Regex.Replace(text, pattern,
   
      new MatchEvaluator(Test.CapText));
   
       System.Console.WriteLine("result=[" + result + "]");
   
       }

   
  同时需要注意的是,由于仅仅需要对单词进行修改而无需对非单词进行修改,这个模式显得非常简单。

 
2007/04/20 11:29

http://www.3rf.cn/MyWebSite2/web/Web_Javascript_20068523127.html

一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。如:

JScript VBScript 匹配
/^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。
/\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID 号码是否由一个2位数字,一个连字符以及一个5位数字组成。
/<(.*)>.*<\/\1>/ "<(.*)>.*<\/\1>" 匹配一个 HTML 标记。

下表是元字符及其在正则表达式上下文中的行为的一个完整列表:

字符 描述
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} mn 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
(pattern) 匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0$9 属性。要匹配圆括号字符,请使用 '\(' 或 '\)'。
(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
x|y 匹配 xy。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
[xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
\B 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
\cx 匹配由 x 指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
\W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。
\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。.
\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。
\n 标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
\nm 标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 nm 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm
\nml 如果 n 为八进制数字 (0-3),且 ml 均为八进制数字 (0-7),则匹配八进制转义值 nml。
\un 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, \u00A9 匹配版权符号 (©)。


下面看几个例子:
"^The":表示所有以"The"开始的字符串("There","The cat"等);
"of despair$":表示所以以"of despair"结尾的字符串;
"^abc$":表示开始和结尾都是"abc"的字符串——呵呵,只有"abc"自己了;
"notice":表示任何包含"notice"的字符串。

'*','+'和'?'这三个符号,表示一个或一序列字符重复出现的次数。它们分别表示“没有或
更多”,“一次或更多”还有“没有或一次”。下面是几个例子:

"ab*":表示一个字符串有一个a后面跟着零个或若干个b。("a", "ab", "abbb",……);
"ab+":表示一个字符串有一个a后面跟着至少一个b或者更多;
"ab?":表示一个字符串有一个a后面跟着零个或者一个b;
"a?b+$":表示在字符串的末尾有零个或一个a跟着一个或几个b。

也可以使用范围,用大括号括起,用以表示重复次数的范围。

"ab{2}":表示一个字符串有一个a跟着2个b("abb");
"ab{2,}":表示一个字符串有一个a跟着至少2个b;
"ab{3,5}":表示一个字符串有一个a跟着3到5个b。

请注意,你必须指定范围的下限(如:"{0,2}"而不是"{,2}")。还有,你可能注意到了,'*','+'和
'?'相当于"{0,}","{1,}"和"{0,1}"。
还有一个'¦',表示“或”操作:

"hi¦hello":表示一个字符串里有"hi"或者"hello";
"(b¦cd)ef":表示"bef"或"cdef";
"(a¦b)*c":表示一串"a""b"混合的字符串后面跟一个"c";

'.'可以替代任何字符:

"a.[0-9]":表示一个字符串有一个"a"后面跟着一个任意字符和一个数字;
"^.{3}$":表示有任意三个字符的字符串(长度为3个字符);

方括号表示某些字符允许在一个字符串中的某一特定位置出现:

"[ab]":表示一个字符串有一个"a"或"b"(相当于"a¦b");
"[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a¦b¦c¦d"或者"[abcd]");
"^[a-zA-Z]":表示一个以字母开头的字符串;
"[0-9]%":表示一个百分号前有一位的数字;
",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。

你也可以在方括号里用'^'表示不希望出现的字符,'^'应在方括号里的第一位。(如:"%[^a-zA-Z]%"表
示两个百分号中不应该出现字母)。

为了逐字表达,必须在"^.$()¦*+?{\"这些字符前加上转移字符'\'。

请注意在方括号中,不需要转义字符。

 
2007/03/13 22:25

狂搜了一堆阿登,然后发现,有n篇经典文章都要钱。。接着发现,那几篇文章的作者都有一个人,不死心,干脆去搜那个作者,发现:

他早就不甩阿登了。。。

之前看那些文章的发表时间都是90年代初,还以为他这几年已经退休了,谁知是把阿登搞得有眉目后丢给别人,自己去开发更牛更前沿的去了……

可怜偶们就是被丢给的那些“别人”。

这个人偏偏又是哥大的,虽然不是偶们系而是生物信息,但是,叫我怎能不更仰慕哥大呢?愈加yy了。

 
2007/03/12 20:22

上周三下午开始正式进实验室,要求:工作时间不能看非相关网页、不能用下载工具,一切时间都不能看视频、不能玩游戏。

于是每天都盯着那只电脑,看论文,或者电子书;中午休息时看下小说,也不能尽兴。

今天开始看某个诡异的阿登语法,某health level 7想出来的东东。诡异到什么程度呢?就是国内几乎都没有研究,90%的都是英文,而且很多论文都是要付费才能下载,这样能找到的又少了。。

累。

以后估计也会是这样,或者说,只会更累,现在周老师的指导还是很到位的,以后就不知道会怎样了。今天遇见潘mm,她也很感叹我们实验室的好。

不过以后应该会有一点改善,就是付费问题。学校应该会买下来的说——即使撞上他不买这种小概率事件,几十刀咬咬牙偶也勉强忍了- -

 
 
   
 
 
文章存档
 
     
 
最新文章评论
  

能发给我一份吗,谢谢
 

求文。547753994@qq.com
 

为我们喜欢同一部作品顶你一个
 

据最新秘密消息,余秋雨勾结另一些人在挪用国资,其公司若上市,其身价将过亿(全是
 

朱厚照如果真的不理朝政别说当16年皇帝了,就是当16天也不可能!朱厚照实际上是个挺
   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu