Sandy 的个人资料别青丝 照片日志列表 工具 帮助

别青丝 

远行 彼岸 梦境

Lu Sandy

职业
地点
兴趣

访问量

web counters
第 1 张,共 4 张
2009/11/12

共享目录 磁盘空间不足 问题

想用一台XP作为备份目录,访问时报磁盘空间不足的警告。

空间还有80多G怎么会有这个问题。

网上搜了搜是irpstacksize默认太小,改成50,Ok了。

http://support.microsoft.com/kb/177078/en-us

2009/11/11

回归

最近好像有点找到以前写code的激情了。

随便说两句近况:

工作的机器硬盘挂了。

顺便装了windows 7 64bit.

总体感觉没啥特殊的,内存才2G看不出什么。

64位应用比较少,当然也没必要。小程序难道还要访问超过4G ? 只是浪费硬盘空间而已。

-----

送老婆一份礼物,她很开心,我也开心。比起俺的40d 17-40  亏欠太多了。。

------

Porting 比较辛苦,也很有挑战,对native东西了解多了些。

------

according to the plan  <corpse bride>…

2009/4/20

这几日

继续喝着中药 多少有些习惯了

生活方式的改变的确很难

但我尝试去做 为自己也为家人

每天晚饭黄瓜生菜 虽然肚子会饿 担心里挺踏实

工作还是老样子 虽然不是自己想要的氛围 但人不能过于理想化

达到目标 就Ok 知道自己为什么在这里才是最重要的 好在我明白

人就应该给自己找点乐子 生活的压力不能过于看重

羡慕杉哥的生活 呵呵 真是一种轻松 希望回去也能像他一样

不知道漂的生活还要到多久 希望带给家人的是以后的幸福 而不是更多的牵挂
 



2009/3/23

向老婆道歉 和 遗传算法

昨天惹老婆生气了,实在不应该了。
老婆在天津吃苦受罪我这还光气她,该死该死。。希望老婆大人大量了。请老婆再次相信我可以痛改前非为做好爸爸做准备。
 
正想怎么表达对老婆的歉意时看到CB上一篇关于遗传算法绘制Firefox图标的文章 深受启发,试验如下。
 
目标 生成一句话 "HuaHua I Love You".
过程 首先随机生成与目标等长的随机字符串,每一个字符串作为一个生物,共N只。
每两只生物可以产生n只生物后死亡(这里只是任意两只 没考虑公母-____-),新一代生物必须经过选择后才可以生存并繁衍。
这里的选择就是靠近目标那句话,n>=2 也就是说种群不会越来越少。  为了保持种群数量不变 n>时 所有子代(N / 2 * n) 都会被排序。
其中最近似目标的N个予以保留 其他就被淘汰掉,周而复始子代越来越靠近目标,这就是整个过程。理论上需要90^17 = 1.6677181699666569e+33才会随机出现目标。。。 那遗传算法呢?
测试后结果如下。
初始种群数N      子代个数n      年代        匹配度(运行200次后平均值)
100                 4                100        0.588
100                 2                100        0.118
100                 8                100        0.647
100                 20               100       0.529
200                 2                100        0.118
200                 4                 100       0.823
200                 8                100        0.882
100                 4                 200       0.588
100                 4                 400       0.588
200                 4                 400       0.823
自己机器不咋滴没敢算太大的数 子代20 的那个已经是算了半天了。
从结果看种群数和子代数对结果影响比较大,但年代从200到400结果没有任何变化。
问题在于我使用的子代产生的算法比较简单没有增加“突变”在这里,父母直接遗传给子代。
导致若干年后子代之间没有任何差距,生物也就不再进化了。
结果里面 子代数20 时 匹配度降低不太容易解释可能是“近亲结婚”的原因,以后再研究。
现在的算法基本 种群数400 子代4 年代100  匹配度就可以达到0.9了。
 
代码如下:
 
import java.util.Random;
public class Life {
 public int familySize = 100;
 public int chindren_count = 4;
 public int era = 100;
 public char[][] families = null;
 public String result = "HuaHua I Love You";
 public Random gods = new Random(System.currentTimeMillis());
 private int max_match = 0;
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int results = 0;
  long t = System.currentTimeMillis();
  for (int i = 0; i < 200;i++) {
   Life l = new Life(200,4, 200);
   l.start();
   l.outputResult();
   results += l.max_match;
  }
  System.out.println((System.currentTimeMillis() - t )/1000);
  System.out.println((double)(results/200)/17);
 }
 public Life(int familySize, int chindren_count, int era) {
  this.familySize = familySize;
  this.chindren_count = chindren_count;
  this.era = era;
 }
 public void outputResult() {
  System.out.println("Init " + familySize);
  System.out.println("Run " + era + " years");
  System.out.println("Chindren " + chindren_count);
  System.out.println("Result " + max_match);
 }
 public void dump(char[][] f) {
  int i = 0;
  for (char[] s : f) {
   System.out.println((i++) + " " + new String(s));
  }
 }
 public void dump(int[] f) {
  int i = 0;
  for (int s : f) {
   System.out.println((i++) + " " + s);
  }
 }
 public void start() {
  families = new char[familySize][result.length()];
  char[] sb = new char[result.length()];
  // init family
  for (int i = 0; i < familySize; i++) {
   for (int j = 0; j < result.length(); j++) {
    char c = (char) (gods.nextInt(90) + ' ');
    sb[j] = c;
   }
   families[i] = sb.clone();
  }
  char[][] children = new char[families.length * chindren_count / 2][result
    .length()];
  int[] matchResult = new int[families.length * chindren_count / 2];
  int g = 0;
  boolean found = false;
  while (g++ < era && !found) {
   disorder(families);
   for (int i = 0; i < familySize / 2; i++) {
    char[] f = families[i];
    char[] m = families[familySize / 2 + i];
    for (int j = 0; j < chindren_count; j++) {
     children[i * chindren_count + j] = markChild(f, m);
    }
   }
   for (int i = 0; i < children.length; i++) {
    matchResult[i] = match(children[i]);
    if (max_match < matchResult[i]) {
     max_match = matchResult[i];
    }
    if (matchResult[i] == result.length()) {
     found = true;
    }
   }
   markChoice(matchResult, children);
   System.arraycopy(children, 0, families, 0, families.length);
  }
  // dump(families);
  // dump(matchResult);
  if (found) {
   System.out.println("got! " + g);
  }
 }
 public void markChoice(int[] data, char[][] strs) {
  int temp;
  char[] t = null;
  for (int i = 0; i < data.length - 1; i++) {
   for (int j = i + 1; j < data.length; j++) {
    if (data[i] < data[j]) {
     temp = data[j];
     t = strs[j];
     data[j] = data[i];
     strs[j] = strs[i];
     data[i] = temp;
     strs[i] = t;
    }
   }
  }
 }
 public int match(char[] s) {
  int v = 0;
  for (int i = 0; i < s.length; i++) {
   if (s[i] == result.charAt(i)) {
    v++;
   }
  }
  return v;
 }
 public void disorder(char[][] type) {
  int size = type.length;
  int p1 = 0;
  int p2 = 0;
  char[] temp;
  for (int i = 0; i < size * 4; i++) {
   p1 = gods.nextInt(size);
   p2 = gods.nextInt(size);
   temp = type[p1];
   type[p1] = type[p2];
   type[p2] = temp;
  }
 }
 public char[] markChild(char[] f, char[] m) {
  char[] son = new char[f.length];
  for (int i = 0; i < son.length; i++) {
   if (son[i] == 0) {
    int j = gods.nextInt(2);
    if (j == 1) {
     son[i] = f[i];
    } else {
     son[i] = m[i];
    }
   }
  }
  return son;
 }
}
 
 
 
 
 
 
 
 
 
 
 
 
 
2009/3/14

关于分享和交流的一点想法

 Team之间,team内部需要一种乐于share的氛围.每个人都知道其他人在做什么,遇到什么问题,如何解决问题。
如何做到分享和交流从技术上来说需要一些手段,如讨论会、mail、知识库,论坛等但这样做的成本是非常高的,会占用太多的时间。

首先 讨论会需要计划时间,人员未必都能到齐。

第二 知识库,论坛,有意识主动去填充知识库的人很少很少。就算建立知识库最后也都是不了了之,没有多少价值。当然归根结底是人的问题,人的惰性。

第三 mail,按理说mail是最直接的方法。有问题mail直接发到一个大的group内。没错,每个人都会收到。但mail过于正式,发信回复时有时会考虑很多。往往会不及时回复,或者想想就算了。mail也不利于收集管理知识。

那么如何才能解决上面的问题呢?

忽然想到 饭否,Twitter这类应用。可以轻松做到让别人知道自己在做什么。别人如果对你话题感兴趣,即可参加讨论。
是否可以把这个理念带到应用到team 交流上? 我觉得是可以的。

优点:
1.反应快 可以讲信息及时发给其他人
2.人都比较懒惰或者说工作比较忙,不容易主动去pull。例如去刷新论坛。
3.客户端简单,直接使用IM即可。

缺点:知识/讨论 没有有效的分类管理以便日后查询。

如何解决这个问题呢?我想可以参考baidu知道和csdn的方式。
讨论结束后,讨论的发起人可以关闭这个讨论,系统可以将其归类存档以便日后查询。

虽然算不上真正的协作,只是一种轻巧的沟通工具,但我觉得这套机制能够改善和加强团队间的沟通。