Monthly Archives: 03月 2011

解一道SQL问题:找出成绩优秀的学生

今天中午,珠三角技术沙龙官方群(103903642)的Crazy同学给大家出了一道SQL的题目,据说来自某个微群: “SQL开发的一道小问题,一个学校的老师需要评选一组学生作为优秀学生,条件为最多只有2个科目在80-85之间,其他科目在85分以上或者所有科目成绩都在85分以上,表中包含StuId,SubjectId,Score,求最简单且效率最高的语句。 ” 我有点无聊加手欠,就试着解了一下,建立测试用数据表及数据如下,一共有5位同学,4个科目,共20条数据。我的测试环境是老式macbook 402,4G内存,mysql 5.1.42,MyISAM引擎。 我们首先把非优秀学生的条件重新整理一下: 1、凡有一科分数低于80分的,都不能称为优秀学生 2、凡有两科以上分数在80至85分之间的,也不能称为优秀学生 这两个条件是或的关系。 同时整理一下优秀学生的条件: 1、称得上优秀学生的,必须至少所有科目都在80以上。 2、称得上优秀学生的,分数在80至85分的科目必须小于2科。 这两个条件是与的关系。 先找出非优秀学生还是先找出优秀学生,是两种不同的解题思路,下面我分别从这两种思路出发解决问题: 思路一:先找出非优秀的学生,反过来得到优秀的学生 1、首先找出有个别科目分数低于80分的学生 select StuID,count(*) from tb_score where Score < 80 group by StuID 2、然后找出有科目分数在80至85分超过两科的学生 select StuID,count(*) from tb_score where Score between 80 and 85 group by StuID having count(*) >2 … Continue reading

Posted in 技术 | Tagged , | 18 Comments

Show出我的Dock

好吧,今晚暴发了,这篇博客是为了响应osxToy的《Show出你的Dock活动》,我也来Show一下我的Dock。支持一下老甘! 基本上是谋生用的家伙啊。老板你看我多努力工作。 3个Browser(FireFox、Safari、Chrome)、3个IDE(Xcode、Eclipse、FlashBuilder),不过我用得更多的是vim,看见右边的终端了没有!!!!然后3个沟通工具(Mail、扣扣、adium),然后还有: QuickSliver,你不会不知道。 iCal和GrageBand,基本上摆设。 Gitbox,因为太常使用命令行,基本上被边缘化。 金山词霸,你懂的。 R,数据分析和挖掘利器,最近常被我用来替代python console,充当计算器。 Adobe五个哥儿们,除了flashCs4和FlashBuilder,其本上是用来装饰(or装B)。 豆瓣电台,前段时间出的Mac版,不错,荣获本Dock长驻权。 OmniFocus,驱动哥做事的好搭档,把Things从本Dock挤掉。 最后,把算在珠三角技术沙龙3月份的Linux专场,向海明老湿学习Emac神器,以后请Emac长驻本Dock,更显V5与牛X。卡卡。

Posted in 其他 | 3 Comments

给Geek们的音乐课

这又是我在上一期珠三角技术沙龙现场给Geek们上的一堂音乐课,主要讲基础乐理背后的典故及相关的数据结构。Geek果然是Geek,很多同学纷纷表示听懂了,所以,我这个吉他老师不容易啊!!!!!有木有!!!!! 上Slide了,录音有现场演奏的,但录音的touch一直被同事征用着,木有办法导出来,不过我现场演奏的那首曲,醒目的你,在俺的博客里很快就能找到的。 给Geek们的音乐课 View more presentations from jeff kit 更新:录音来了。

Posted in 技术, 音乐 | Tagged , , | 6 Comments

iOS开发漫游指南

这是我在2011年2月份珠三角技术沙龙iOS专场上面使用的暖场讲稿。附ios+tutor录音。 当天很多精彩的Topic,沙龙以后还会继续推出移动应用开发的专场,请保持关注 :)。 漫游iOS开发指南 View more presentations from jeff kit

Posted in 技术 | Tagged , | 1 Comment

如何避免误删除代码带来的灾难

下午,一位同事急匆匆找我,说他在操作TotoriseGit时不小心点击了删除菜单,导致本地的项目整个被删,问我有没办法恢复。我看了看他的提交历史,最后一次提交居然是在几天前,基本上可以认为,这几天做的修改可能都要打水漂了。因为Git对代码版本控制的最小粒度是Commit,即一次提交。这几天下来积累的未提交代码没有被Git管理起来,一旦删除,将无法通过Git的手段来恢复。 发生这种灾难性的结果,不能只怪TotoriseGit没有做好删除确认这一步,更应该检讨自己没有养成良好的提交习惯。 关于良好的提交习惯,我在之前的文章中已有说明,其中一点就是控制好提交粒度,也就是提交的原子性,在此,我需要再补充一点,就是尽量使用小粒度的提交,用频繁的小粒度提交来代替较少的大粒度提交,即一天可以提交3次的话不可等三天再提交1次,因为累积的未提交代码越多越容易出问题: 误删除的灾难,正如这一次我同事遇到的意外一样,累积的未提交代码无法恢复,损失惨重。 提交粒度太大不方便回滚,一次提交里如果包含了登录、首页、甚至是用户管理等功能点,临时发现首页的修改有误,要恢复到上个版本时无法实现快速回滚,因为一回滚,登录和用户管理功能也随即回到了从前。 按理说啊,程序员同学们应该享受提交代码的乐趣才对,该提交时就提交,别太腼腆了啊! 所幸的是,该同事几天来做的修改大都是新增代码文件,没有加入版本管理,TotoriseGit删除文件的时候没有把这些文件一起删除,解决办法就是checkout一次HEAD的版本再把新文件加进去,补充少量丢失的修改,也算是不幸中的大幸吧。但建议不要因此而抱侥幸心理,以后继续累积几天下来再提交一次代码。这次的教训值得深省了!呵。 另,为防止同类事故继续发生,我另一位同事给出了不在TotoriseGit菜单里显示删除功能的设置方法: 使用windows git的GUI的同志请注意,由于delete命令没有确认窗口,为了防止手震点到导致误删除,请空白处右键菜单进入setting,选set Extend Menu Item,勾选上delete和delete(keep local)。就可以屏蔽菜单里的删除(需要用到这两项的时候按住shift然后点右键就可以看到他们出来了)。  

Posted in 技术, 软件 | Tagged , | Leave a comment

iSign+iPicWall=技术沙龙的小玩具

上个月筹备技术沙龙2月份的iOS专场,突发其想,既然是iOS专场,那手上这些iOS设备应该最大化的利用起来,于家有了这样一个想法:在iPad上开发一个签名应用,让到场的每个人用手指在上面画上自己的名字,然后马上同步到连接着投影仪的电脑上,电脑就把刚收到的签名显示出来,让全场的人都看到。 我花了一点业余时间完成了签名应用的第一个版本,项目名叫iSign,然后让网易的双木小神童同学给快速做了个Web展现界面,项目名叫iPicWall。我们当天在沙龙即将开始的前几分钟完成了预演。接下来就开始使用iPad签到了: 签名后,按一下同步按钮,马上在投影上出现自己的签名了。 有意思吧?反正我和双木都觉得非常好玩。以后我们还会继续把这个小玩意完善。 其实沙龙就是这样才好玩。

Posted in 技术, 软件 | Tagged , , | 8 Comments