【技术新闻】写给四年前刚开始编程的自己

2009年9月,进入大学的第一天,开始了我正式的软件工程的学习。为什么是正式的呢,因为之前虽然也写过代码,但完全是出于兴趣,想到什么就学什么,毫无章法。后来来到了北交大,进入了据说还不错的软件学院,有了一群志同道合的朋友,一位位用心良苦的老师,踏上了一个“程序员“的冒险旅程。现在,我在美国密苏里大学读计算机硕士,回首自己走过来的这四年,错过了很多,也明白了很多,收获了很多,对软件和计算机渐渐有了自己的认识,更重要的是,发现了自己越来越多的缺陷与不足。有些当年认为用处不大而忽略掉的东西,却成了现在最最重要的东西。有时会后悔地埋怨自己当时不努力,欠下了太多的债,只能后来慢慢偿还。 如果能够给我一次机会与四年前的我通话,我有太多的东西想对他说。然而,也许几年后再次回首,我会有另一番不同的思绪,但此时此景,我能想到这些,至少现在是对的,我不想后悔,把这些写下来,算是一种慰藉吧。 多出去走走,开阔眼界 “世界就像一本书,不旅行的人,只读过这本书里的一页。” 世界之大,无奇不有,不管你是否要做一个技术男,你都应该出去走走,去看更多的风景,去见更多的人,去体会更多的风情。不要做井底之蛙,这个世界到处都是精彩的事物,而有些东西如果不去亲自体会是永远无法得到的。没有人规定程序员就必须整天埋在代码中,上天赋予了程序员自由的职业特性,就一定要利用好它。程序本身就是一种美,你要时刻保持一颗欣赏美、涉猎美的心灵,才能更好地去发现和创造。眼界开阔了,心灵才不会收拘束。真的,这个世界太美好,去发现感动到哭的美。 你要做一个旅行家里代码写得最好的人! 不要沉迷社交网络,线下的生活更加丰富 碎片化的信息正在侵袭着我们的生活,社交网络的发明让我们能够在网上互动和交流。但你要问自己,这些真的对你有用处吗?当你和周围的朋友们沉迷于人人网微博消耗时间时,是否意识时间正在疯狂地消逝,等关闭网页的瞬间,你是否感觉到孤独感重新来袭。 最近刚看了《黑镜》第二季,第一集中男主人公沉迷于社交网络,有一天车祸不幸去世后,有人制作了一个机器人,根据他生前在社交网络上的言行,让他继续虚拟地活下去。当然结局你应该猜到了,是的,这个人没有情感,有些东西是永远无法从社交网络上模拟的。 线下的生活更精彩,你要多参加有益的社团、活动,多交朋友,在真实生活中维持真实的感情。 打好C语言基础,掌握并深入一门编程语言 在后来的学习中,尤其是这几个月来在国外的学习,让我渐渐感受到一些教育上的差异。C语言作为你正式学习的第一门语言,你要做到的不是掌握语法这么简单。语言是指一种工具,帮助你理解程序设计的思想和奥秘。如果有可能的话,我希望你开始研读Linux设计思想和源码,理解其中各种设计模型和理念,因为这些才是根,当你真正了理解了这些,就会发现所有的语言都是互通的,都遵循了一个准则,即使有新的思想,你也会很快接受并融会贯通的。 说到语言是工具,你当然要选择一门语言并试图做到精通。建议你学习C++,因为它更接近软件的底层和实质。掌握并精通它,理解它的一切,并在现有的基础上创新。Java封装的太多,你可以用Java来很好地理解面向对象的设计原则,来快速地开发一些程序,但Java会限制你的提高。当然你可以做一个Java界的大牛,但你想想,除非你特别喜欢这门语言,否则不要被它框住。 一定要学好的课程,一定要读的书,一定要掌握的技术 这几门课程是你一定要认真学习的,因为有一天你会发现它们非常重要:“数学方面的课程”、“数据结构”、“算法设计”、“操作系统”、“数据库”和“系统级编程”等。 这几本书不管你有多忙,都希望你能好好研读:《算法导论》,《代码大全》,《编程珠玑》外加多本文学书籍。 这几个技术一定要用心学习,因为它们真的很有用:Linux(内核+概念+应用),数据库,汇编与编译,调试,算法设计等。 广泛涉猎,但不要丧失重心 技术行业里永远有新的技术,不要让你的大脑僵化,要勇于去尝试新的东西,了解各个细分的行业,了解各项技术,广泛涉猎。因为只有这样,你才能发现什么是你真正喜欢的,真正感兴趣的。当你找到了自己真正的兴趣所在,你的所有研究和工作都将是快乐的。 另外,树立一个榜样,如果你决定要做一个商人,可以选择比尔盖茨、乔布斯,如果你决定要做研究,可以选择Linus,高德纳等技术流。抱着一种学习的心态去看待,不要盲目崇拜。 好好学习一门脚本语言 学习一门脚本语言如Python或Ruby。建议学习Python,并好好掌握它,这样可以让你更快速地与计算机交互,帮你快速解决某些问题。Python也有很多各方面的、优秀的框架,在Server开发、科学计算等方面都有很大的潜力。另外,PHP可以让你快速地架设一个小型网站,而且开源的系统也非常多。所有的这些工具,都可以在你需要的时候帮助到你。 保持一颗好奇心,一颗童心 时刻关注业界信息,关注各个IT公司动态,关注科技新闻,关注创业,向过来人吸取经验。你看得越多,分析的越多,你对业界的信息、发展的感知就会越敏锐。不要盲目跟风网上的言论,学会自己分析。 保持一颗童心,你才能保持一颗创造性的心,不要僵化思维,不要定势思维。这些都是需要训练的,相信你经过这些历练,一定可以有所进步。 最后,珍惜时间,珍惜生命,做最好的自己。 Jhonse技术博客说明: 来源于: http://hackecho.com/2013/03/a-letter-to-myself/

【mysql】phpMyAdmin登录密码忘记的解决方法

首先进入DOS,开一个cmd c:\>sc stop mysql 进到目录里面  cd C:\mysql\bin 解释一下 C:\mysql 路径为MySQL的安装路径 C:\mysql\bin>mysqld –defaults-file="C:\mysql\my.ini" –console –skip-grant-tables 重新开一个cmd 进到目录里面 cd C:\mysql\bin C:\mysql\bin>mysql -uroot mysql mysql>UPDATE user SET Password=PASSWORD('123456') where USER='root'; mysql>FLUSH PRIVILEGES; mysql>quit; C:\mysql\bin>mysqladmin shutdown 之后正常重启MySQL服务就行了。用户名root,密码123456

【php】php内存不够用,出现Allowed memory size of 8388608 bytes exhausted (tried to allocate 1298358 bytes)

最近在写下载文件功能的时候,发现一个问题,就是文件的大小超过8M,就会提示:  php内存不够用,出现Allowed memory size of 8388608 bytes exhausted (tried to allocate 1298358 bytes) 原因在于: hp页面消耗的最大内存默认是为 8M (在PHP的ini件里可以看到) ,如果文件太大 或图片太大 在读取的时候 会发生上述错误。 于是在网上找资料查到该解决方法: 1,修改 php.ini 将memory_limit由 8M 改成 16M(或更大),重启apache服务 2,在PHP 文件中 加入 ini_set(”memory_limit”,”100M”); 3,修改.htaccess 文档(前提是该目录支持.htaccess) 在文档中新增一句:php_value memory_limit 16M(或更大)

【技术新闻】90后大学生开发手机软件毕业一月成千万富翁

据羊城晚报报道,广州“90后”大学生雷浪声,毕业还没满一个月,其所率团队开发的手机软件就被腾讯以6000万人民币的天价全资收购,雷以最快速度成为“千万富翁”。迅速拥有财富后,他在始兴县城给父母买一套最好的房子,自己却依然保持着无房无车的朴素本色。今年,其公司在招聘新人时,部分岗位注明“只招大专生”,体现了其“英雄莫问出处”的用人理念。 腾讯以6000万元收购其公司 雷浪声是一名90后大学生,2009年9月,他入读广东农工商职业技术学院游戏专业,这是学校当年新开的专业。在大学期间,雷浪声对手机软件产生了浓厚的兴趣,常利用课余时间临摹手机桌面,上网浏览最新的技术动态。他在论坛上发的手机评测帖子,曾被太平洋网评为精华帖置顶。雷浪声在学校的交际圈子很小,但是在互联网上却拥有许多资源,他通过互联网认识了创业团队的成员。大二时,他决心毕业后做UI设计(指对软件的人机交互、操作逻辑、界面美观的整体设计)。 2011年暑假,雷浪声与几个在网上结识的80后朋友来到深圳,租了一间终日不见阳光的小民房,组成一个6人团队,开始了手机软件开发之旅。雷浪声说:“那段时间,我们的活动范围不足500米,有时连续加班30多小时。”大二暑假还未过完,团队的第一款产品“刷机精灵”第一版本正式上线测试。当天晚上,6个人在小黑屋附近的烧烤档喝个大醉,压抑的心情释放成泪水。 不久,雷浪声所在团队就得到百万级的天使投资基金。2011年8月中旬,团队注册成立科技有限公司,其中一名队员的网名叫“瓶子”,于是他们就为公司取名为“深圳瓶子科技有限公司”。同年底,雷浪声的团队接受了1800万元投资入股。2012年,百度、盛大、腾讯等互联网巨头开始插足刷机行业,其他的大小竞争对手陆续涌现出来,面对巨大行业竞争压力,团队加速产品更新迭代,持续保持在行业领先位置,赢得国内互联网巨头的青睐和关注。 2012年8月,也就是雷浪声毕业还没到一个月,腾讯CEO亲自出马,以6000万元人民币全资收购雷浪声的公司。团队的每个成员都得到了丰厚的回报,雷浪声说,没有人想到会有这么好的结果,6人再次来到路边的烧烤档庆祝。 用“第一桶金”给父母买最好的房 刚毕业的大学生拿到这笔财富有什么感受?雷浪声只说了一句话;“父母再也不用那么辛苦了。”话还没说完,他又忍不住放声大哭。拿到人生的第一桶金后,雷浪声并没有给自己买房买车,而是在韶关始兴县城买了一套当地最好的房子给父母。他说:“我还年轻,最需要的是沉下心来,车、房那些东西容易使人浮躁。”直到现在,他在深圳还是无房无车一族。 从一个青涩学子摇身变成千万富翁,这条创业路走到今日,雷浪声感触良多。他说:“创业不是靠单打独斗,需要团队的高效分工协作,每个人都要能够独当一面。勇敢挑战困难、担当压力是人生中非常精彩的一部分,不浮躁不虚伪,善于总结失败经验并用心去沉淀,才能获得更多的成长。” 今年年初,公司面向全社会招聘,招聘计划中的11个岗位中,有7个岗位指明要招大专生。看来,这群90后创业团队对人才的概念,不局限于高学历。 Jhonse技术博客说明: 来源于: http://news.mydrivers.com/1/258/258150.htm

【技术新闻】如何学会600多种编程语言

几周前,做为8th Light 公司的实习生,我从 CEO 那里拿到了我的工作成绩报告。在与 CEO 的会见期间,我发现了一个对如何做一个程序员的认识上的盲区。起初我以为,想扩展自己的软件职业道路,那就要学很多各种的语言。我现在就要告诉你,事情不是这样的。 我们一共有多少种编程语言?你只需看一下维基百科上的清单,600 多种!说实话,就我个人的情况,我不相信我能学会数百种语言。因为有太多的文档需要看,它们之间有太多的差异需要注意。它们很多都是相似的,例如那些面向对象的语言:C++,Java,Ruby,Python 等。然而,我们却有一种更高效的方法学习它们,那就是对它们归纳分类。 在美国德锐大学,每个毕业生要接受的一门必修课程教育就是如何有效的学习。我很幸运遇到一位非常好的教授,Sugarman 先生,我才有机会学到学习方法。尽管这个方法非常的基础,但它几乎能应用到任何事情上——不论它们的数量看起来是多么不可思议。 面向对象编程语言的基础理论要点: 学习基础理论要点,例如设计模式/范式,这样你就知道了在所有面向对象的编程语言中共同的知识,而不是只提高了一种语言水平。这是学习编程语言最有效的方法。 编程语言的类型有很多种,例如函数式语言,面向对象语言,面向数据语言(更多)。通过把各种语言归纳分类,这 600 种语言大概可以分成 50 类。通过学习每种分类的基础理论要点,再学习分类中的不同语言就变得容易多了。这里我给出一个例子。 对于面向对象编程语言,有 5 个基本原则能帮助你写出整洁优秀的代码。这些原则由 Bob Martin 总结,叫做 SOLID 原则。这里有一篇文章用图片形式很好的对这些原则进行了解释说明。这些原则是: 一个对象只承担一种责任,所有服务接口只通过它来执行这种任务。 程序实体,比如类和对象,向扩展行为开放,向修改行为关闭。 子类应该可以用来替代它所继承的类。 一个类对另一个类的依赖应该限制在最小化的接口上。 依赖抽象层(接口),而不是具体类。 通过学习这些原则,你可以在所有面向对象语言里更有效的进行编程。当然,你需要学会一门这种类型的语言来练习这些原则,但这是完全值得的。 各种面向对象语言间的不同之处: 同属于面向对象语言,它们之间存在大量不同之处: 语法:了解各种语言在语法句式上的差异有很多好处,其中之一能帮助优化你的编码。通过让一个方法或类跟它的行为在特征是保持相似,这能让程序更容易懂。 独特性:每种编程语言跟其它种比起来都有自己的独特之处。Java 有私有方法和数据自定义上的特点,Ruby 在 Web 应用上有很强的优势。 总之,学习各种语言之间的区别很重要。这种语言可能比那种语言中某些方面更容易使用或更强大。 总结 学习编程语言最有效的方法是学习它们的基础性的模式/范式,这比单独学习每种语言更高效。通过学习这些基础原理,你可以把它们应用到很多其它类似的语言里。学习各种语言之间的差异,这能帮助我们在面对各种情况时选择更合适的语言。 Jhonse技术博客说明: 来源于: What it means to know Programming Languages  

【php】phpExcel读取Excel日期格式

之前用phpExcel读取Excel数据到数据库,没有发现一个问题:就是Excel日期格式读取的问题?一般读取出来的日期为一串数字,如: 1970-1-1是25569 解决方法: //excel日期转换函数 function excelTime($days, $time=false){ if(is_numeric($days)){ //based on 1900-1-1 $jd = GregorianToJD(1, 1, 1970); $gregorian = JDToGregorian($jd+intval($days)-25569); $myDate = explode('/',$gregorian); $myDateStr = str_pad($myDate[2],4,'0', STR_PAD_LEFT) ."-".str_pad($myDate[0],2,'0', STR_PAD_LEFT) ."-".str_pad($myDate[1],2,'0', STR_PAD_LEFT) .($time?" 00:00:00":''); return $myDateStr; } return $days; } 此函数代码来源于网络!

【php】安装程序的制作

写完项目之后,肯定需要一个安装程序来配置数据库,以及其它配置信息。所以制作步骤如下: 1. 检查目录或文件的权限 2. 修改或添加配置文件 3. 检查配置文件正确性 4. 导入数据库 5. 锁定或删除安装文件 根据这些步骤,我自己也试着写了下,请看如下代码: /** * 检查配置文件是否有写的权限 * Enter description here … */ public function index() { $configpath = "./application/config/database.php"; if (is_writeable ( $configpath )) { $this->navto("install/first"); } else { header ( "Content-type: text/html; charset=utf-8" ); echo "<script>alert('{$configpath}文件没有写的权限,请重新设置该文件的权限为777!然后再刷新页面即可!');</script>"; } } /** * 进入第一步(填写配置信息) * Enter description here … Continue reading “【php】安装程序的制作”

【php】图片验证码的制作

在写一个登录界面的时候,需要一个验证码功能,所以就着手写了一个,请看如下代码: PHP代码: /** * 生成验证码 * Enter description here … */ public function verify() { $randstr = ""; for($i = 0; $i < 6; $i ++) { $randstr .= dechex ( rand ( 0, 15 ) ); } /*保存验证码到session中*/ session_start (); $_SESSION [‘verify’] = $randstr; $im = imagecreatetruecolor ( 100, 20 ); $bg = imagecolorallocate … Continue reading “【php】图片验证码的制作”

【php】phpExcel读取Excel数据导入数据库

之前写过用phpExcel把数据库的数据导出到Excel表格中【PHPEXCEL使用实例】,现在刚好反过来,把Excel数据导入到数据库中,看如下代码: /** * 导入excel文件 * Enter description here … * @param unknown_type $filepath */ private function importexcel($filepath) { require_once ('./excel/PHPExcel/IOFactory.php'); $reader = PHPExcel_IOFactory::createReader ( 'Excel5' ); //设置以Excel5格式(Excel97-2003工作簿) $PHPExcel = $reader->load ( $filepath ); // 载入excel文件 $sheet = $PHPExcel->getSheet ( 0 ); // 读取第一個工作表 $highestRow = $sheet->getHighestRow (); // 取得总行数 $highestColumm = $sheet->getHighestColumn (); // 取得总列数 … Continue reading “【php】phpExcel读取Excel数据导入数据库”

【php】urldecode和urlencode函数的使用介绍(避免GET方式中文乱码)

在用CI框架写了一个管理系统,却遇到了一个问题:用Get方式提交数据的时候,假如是中文,就会出现乱码,如以下截图: 这个不得不想到URL编解码问题了,也就的牵扯到urldecode和urlencode函数。 我们先看下这两个函数的定义: urldecode 还原 URL 编码字符串。 语法: string urldecode(string str); 返回值: 字符串 函数种类: 编码处理   内容说明 本函数将 URL 编码后字符串还原成未编码的样子。编码使用 %## 的格式。 urlencode 将字符串以 URL 编码。 语法: string urlencode(string str); 返回值: 字符串 函数种类: 编码处理   内容说明 本函数将字符串以 URL 编码。例如空格就会变成加号。Homepage 中 form 资料传送就是用 urlencode 编码后再送出。   使用范例 本例将中文字符串以 URL 编码过,转给别的 CGI 使用 <?php $EncodeStr=urlencode($ChineseName); echo "<a href=/cgi/personal.cgi?n=$EncodeStr>个人信息</a>"; ?> 解决方法:  还原URL编码字符串 public function test($val){ $val = urldecode($val); echo $val; … Continue reading “【php】urldecode和urlencode函数的使用介绍(避免GET方式中文乱码)”