存档

作者存档

Run Faster

2011年5月8日 2 条评论

曰:刘郎已恨蓬山远,更隔蓬山一万重

昨天跟张志桐探讨了一下OJ某页面的SQL优化的问题。为防遗忘,特此记录。

测试的SQL

Query #1

  1. SELECT
  2.         Problems.Proid,Title,ACproblem.Totalsubmit
  3. FROM
  4.         Problems,
  5.         (SELECT Proid , count(*) AS Totalsubmit FROM Status
  6.                 WHERE Contestid = 0 AND Author = "patrick1234"
  7.                 GROUP BY Proid
  8.                 HAVING Proid in
  9.                         (SELECT Proid FROM Status WHERE Contestid = 0 AND Author = "patrick1234" AND JudgeStatus = -1002)
  10.         )
  11.         AS ACproblem
  12. WHERE Problems.Proid = ACproblem.Proid;

Query #2

  1. SELECT
  2.         Status.Proid,Title,count(*) as Totalsubmit
  3. FROM
  4.         `Status` , `Problems`
  5. WHERE Problems.Contestid = 0 AND Status.Proid = Problems.Proid AND `Author` = "patrick1234"
  6. GROUP BY Status.Proid
  7. HAVING Proid in
  8.         (SELECT Proid FROM Status WHERE Contestid = 0 AND `Author` = "patrick1234" AND JudgeStatus = -1002)
  9. ORDER BY Status.Proid;

Query #3

  1. SELECT p.Proid, Title, ac.ac, ac.total FROM
  2. (SELECT Proid, COUNT(CASE WHEN JudgeStatus = -1002 THEN 1 ELSE NULL END) AS ac, COUNT(*) AS total
  3.         FROM Status WHERE Author = "patrick1234" and Contestid = 0 GROUP BY Proid) AS ac
  4. LEFT JOIN Problems AS p ON p.Proid = ac.Proid
  5. WHERE ac.ac > 0

执行时间比较

QueryTime(seconds)
#10.12727000
#20.08309100
#30.03952900

Profile 信息

Query #1

Status Duration
starting0.000031
checking query cache for query0.000165
Opening tables0.000049
System lock0.000007
Table lock0.000141
optimizing0.000025
statistics0.000177
preparing0.000026
Creating tmp table0.000030
executing0.000005
Copying to tmp table0.048290
Sorting result0.000038
optimizing0.000024
statistics0.000133
preparing0.075577
Sending data0.000100
removing tmp table0.000009
Sending data0.000029
init0.000026
optimizing0.000010
statistics0.000026
preparing0.000013
executing0.000002
Sending data0.002261
end0.000008
query end0.000003
freeing items0.000042
storing result in query cache0.000003
removing tmp table0.000008
closing tables0.000006
logging slow query0.000002
cleaning up0.000004

Query #2

Status Duration
starting0.000030
checking query cache for query0.000168
Opening tables0.000025
System lock0.000007
Table lock0.000061
init0.000097
optimizing0.000029
statistics0.003208
preparing0.000060
Creating tmp table0.000058
executing0.000025
Copying to tmp table0.015100
Sorting result0.000056
optimizing0.000030
statistics0.000764
preparing0.063109
Sending data0.000185
end0.000003
removing tmp table0.000010
end0.000006
query end0.000003
freeing items0.000042
storing result in query cache0.000008
logging slow query0.000002
cleaning up0.000005

Query #3

Status Duration
starting0.000030
checking query cache for query0.000173
Opening tables0.000025
System lock0.000006
Table lock0.000115
optimizing0.000023
statistics0.000178
preparing0.000025
Creating tmp table0.000030
executing0.000005
Copying to tmp table0.037741
Sorting result0.000069
Sending data0.000101
removing tmp table0.000008
Sending data0.000023
init0.000032
optimizing0.000012
statistics0.000024
preparing0.000015
executing0.000002
Sending data0.000834
end0.000004
query end0.000003
freeing items0.000032
storing result in query cache0.000003
removing tmp table0.000005
closing tables0.000005
logging slow query0.000002
cleaning up0.000004

程序设计与实践2结课

2011年5月7日 2 条评论

曰:悠悠长路暂别过,漫漫征途再启程

程序设计与实践2顺利结课了。今天下午跟学生们唠叨了一下项目开发的一些琐事,估计学生们也是云里雾里的。以后这种不伦不类的说教得完全抛弃了,原本以为自己能真正的言之有物的,结果发现离开了代码和项目的土壤,扯这些闲淡实在是不给力。

总体上来讲这学期的课程效果还算是可以,几个参与项目的学生都还是令人满意的。而且还有王芳同学,这个所有作业全部完成的女生。应该说课程的基本目标是达到了。但是还是有很多的遗憾,在此罗列一下,下学期要有针对性的改进。

一、作业还不够精

我非常赞同sunner的“淡讲课,精作业”的理念,在这学期得课程里也在尝试去模仿,不过看起来现在还是有点蹒跚学步,不够老道。一共布置了3次作业,一个HTML+CSS的作业,一个算命程序,一个Mini WOW。前两次作业的提交情况还是让人满意的,效果也不错,不过最后一次的作业效果不好。

作业的几个问题:量小、难度低、没有体系。这些都要好好的加强一下。如果作业不够有挑战性,就无法显著的提升教学效果。本学期的作业还是侧重于让学生能够完成,免得太难吓跑了大家。下个学期应该适当的调整。目前在跟老杨讨论建立习题库的想法。

二、课堂讲授内容不够充实

有几节课的内容太过干瘪,言之无物。没有能够传达尽量多的信息量。课堂也显得枯燥无味,与我最开始“有意思”的定位相去甚远。在这一点上,可能还要多下一点功夫。课堂上的内容应该既有趣,又有代表性。下学期会考虑把本学期的学生遇到的问题整理汇总一下,作为素材用到下学期的讲授中。结合实例进行剖析,不能再这样光靠唾沫星子作战了。

三、知识缺乏系统性和条理性

原本计划本学期的课程要把Web开发的入门步骤整理一个有条理的系统出来,但是由于种种原因这件事情到现在还没有完成。尽管我自己已经在脑海中反复的构思过这个东西,但一直没能落实成文字和一个可执行的规划出来。这件事情一定得在下学期开学前搞出来。否则这个硬伤肯定会影响到下学期的教学效果。

美事儿不过如此

2011年5月6日 9 条评论

曰:知足常乐,不求惊天动地;随遇而安,但愿寡欲清心

HOJ基本开发得差不多了,还剩一些细节在调整,下周跟Judge联合调试一下。都测试过了之后就上线之。第一阶段就算告一段落了。接下来开发一个易用的后台,一周时间应该也差不多。到本月中旬OJ的新版就可以全面上线了。

Proposal Tool v2.0终于进入尾声了,下周末是deadline,时间还算充裕。

曾国藩的传记终于看完了,开始看《大海战》。

新布置了每日功课:

  • 背诵《唐诗三百首》中的一首
  • 钢笔字A4纸两页
  • 读书50页

下雨,带伞了;有活儿,干完了;吃得饱,穿的暖;做自己喜欢的事,充满成就感。这种生活,应该感到美滋滋的吧?

分类: 流水账 标签:

我们需要更多的交换

2011年5月5日 没有评论

kinslover同学的《不能膜拜更多》让我感到高兴,是的,我并不对这些工大和港大的差距和感到沮丧,相反,我感到非常的高兴。

差距是人为造成的,我们的学生一样年轻、一样有朝气、一样努力,只是他们被一些不合理不科学的制度束缚住了,从而不能够充分的将他们的才智施展出来。

我喜欢听学生对现行制度的抱怨,因为坐而思是起而行的先决条件。不满,才会想着去改变。况且,不满本身也是推动制度进步的一个很重要的因素,如果所有工大的同学都有着与kinslover同学一样的不满,舆论的力量就会对体制产生影响,推着它不得不向前走。

我相信我们有能力改变操蛋的制度,sunner那句“尤其是那些有机会改变工大的人”毫无疑问的包含我们每一个人。

分类: 大智若愚, 大X若X 标签:

打扮

2011年5月4日 2 条评论

曰:花正当春,人亦年少

尝鲜了一下Gnome 3.0,挺不错的。但跟强大的Awesome比起来,还是更喜欢后者。

今天有新衣服穿,挺美的。老早就想打扮打扮自己,老也没打扮成。这个事情应该列入日程。

春天来了,小小都发过第一次春了。趁还没老,抓紧得瑟吧。

分类: 流水账 标签:

PureWeber Blogs草稿

2011年5月3日 没有评论

曰:生前何必久睡,死后自当长眠

给PureWeber Blogs设计了一个简单的首页,计划明天把它上上去。

之前的计划没有彻底的执行,Proposal Tools的工作还剩下一大堆。惭愧的是今天下午又偷懒睡了一觉。勤奋还不够,毅力仍欠缺。

今日流水

2011年5月2日 没有评论

曰:流水不腐,户枢不蠹

OJ的雏形快出来了。09的两个学生也不错,基本让人满意。本周应该能够看到OJ的新版。

日课不可一日不作。还有一刻钟,今天就过去了,再不赶快写,就落下功课了。刚猛易练,阴力难成;冲劲易得,耐心难求。重在坚持,与诸君共勉。

 

分类: 流水账 标签:

计算机系的小圈子

2011年5月1日 11 条评论

曰:高门阔院非莫测,大神牛逼亦凡人

下学期想招一些动手能力比较强且有兴趣的同学进来,因此要设置一定的门槛,就此事跟张雄聊了一下,有点感触。

张雄提到了一个“小圈子“的问题。就是说计算机学院的开发气氛普遍不浓,仅有的一些初窥开发门路的学生都在某个小圈子里,而他们的交流、影响也仅限于这些小圈子。圈外人要进去,难;圈内的人对外面的影响也很有限。

更大的问题是,这种“小圈子“打击了圈外人的积极性,让他们形成了“开发是那些圈内人的特长,我没有这种特长,所以不可能把开发做的那么好“的想法。

张雄认为我的“设置门槛“的方式容易落入“小圈子“的窠臼。

我基本赞同张雄的看法。如何打破圈子的界限的确是一个应该认真思考的问题。事实上我们学校的教学对开发的要求太低了。据张雄说,清华的学生在大一的时候就已经要开始做聊天工具和写图形化的程序了,反观我们工大,这种东西要到大三才要求。我认为这绝不是我们的学生太笨,而是我们的要求太低。也正是因为此,让很多学生对开发了解的少,了解的少就多了神秘感,觉得开发这个东西莫测高深,不敢轻易尝试;越不尝试,了解的越少。如此往复。

从我的角度,没有条件去改善现有的教学,但是还是有一些事情可以做。我的大致思路是这样的:

  1. “小圈子“应该主动将影响扩展到圈外
  2. 打破圈子界限,应该从形式上的开放开始
  3. 一个组织严密的核心是有必要的
  4. 圈子的门槛应该是可见的

针对第一点,应该鼓励圈子内的学生将他们正在作的事情与其他学生分享。将圈子内的现状传播出去。而且这些分享和传播应该客观,避免诸如“大神”,“大牛”,“膜拜”之类的字眼。这种溢美之词尽管可能是一种发自内心的称赞和认同,但是并不客观,也不利于打破圈子界限,反而容易让圈外人产生距离感。这一点我将会在课堂上跟学生们说明。

针对第二点,小圈子应该放得更开,像技术讨论、讲座、分享会之类的活动,应该允许圈子外面的人自由参与。因为这种思想碰撞类的活动,参与的人多只有好处没有坏处。不仅让圈外人更容易了解圈内事,也让圈内人产生更大的成就感。这一点我会将PureWeber的分享会全面开放,随意旁听和讨论。

针对第三点,完全松散的结构没有执行力,因此有必要维持一个组织严密的核心。骨干成员们投入更多的精力作一些需要长期坚持的事情。例如项目开发、文档建设之类的工作。这就是我目前正在做的事情,培养一批核心成员。

针对第四点,应该将加入圈子的门槛公之于众,让想加入的人有一个清晰的目标。很多学生是听说某个小圈子要招人了,就跑过去面试,结果去了被拒绝,打击了积极性。如果从一开始他就知道门槛在哪里,也就有机会去准备,而这个准备的过程,也就是一个学习的过程。在这个过程中,学生能够学到东西,小圈子也更容易吸收到更多的优质成员,可谓一举多得。我准备在今年的暑假尝试这种形式,组织一系列的任务,公布出来,让想加入的学生在暑假期间去自己做,通过挑战的,即可吸收进来。

 

分类: 流水账 标签:

搬家了

2011年4月30日 没有评论

新住处很令人满意。室友不在,还没问如何上网。今晚要把网连好。

晚上得早点睡,明天开始奋战。

五一的假期原来就比双休日多一天。让孩子们歇歇吧。假期过后再安排任务给他们。

累了,到这里。

 

分类: 流水账 标签:

又是一年五一

2011年4月29日 没有评论

曰:只道时光不瘦,怎奈指缝太宽。

今天忙了一天的校赛主页。在09年Regional网站的基础上改的。用的就是当年的AC-Poster的代码。今天回头一看,小刚和俊丞当年都很青涩。

现在再看AC-Poster的设计,依然很满意。除了主体部分有点窄之外,都还挺顺眼的。苹果风格的设计,就是经得起考验。

今年五一不回家,得忙几件事情。

  1. 搬家。
  2. Proposal Tool v2.0 要搞定,计划用3天,每天12小时的工作量,不知道能不能挺住
  3. HOJ的大部分功能争取在5月7号之前完成,30日晚上,要给学生们指派好假期任务
  4. 4日一天,把Diarr的基本功能实现,然后把这几天的流水帐都转记到Diarr上。接着再写一下要给Diarr添加的各种功能的清单
  5. 5日,休息一天。(前四天要时刻铭记,务必完成任务,否则5日的休息就告吹了)一些重要的大事放在这一天集中思考。

时间宝贵,有些正经事得勤做。今天让张雄和张志桐练打字,这个功课我自己也应该做一做。

 

分类: 流水账 标签:

Page optimized by WP Minify WordPress Plugin