在redhat上装cx_Oracle,运行完 python setup.py build python setuo.py install 之后,在python脚本中执行 import cx_Oracle 出现了下面的错误 ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory 在网上找了一下,解决办法如下: cd ~ vi .bash_profile 在.bash_profile中添加 LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib export LD_LIBRARY_PATH 然后保存。再执行: source .bash_profile Bravo~问题解决了~
Read More前几天重装了系统,JDK重装了,今天用Tomcat就出现各种问题。其中“null password given; logon denied”问题还是第一次遇到。主要表现问连不上数据库,好像是连接时密码为空(实际上我打断点发现密码并不为空)。然而我用Python连接数据库时没有出现异常,看来问题并不出在数据库上。 我在网上搜了很多解决方案,都不靠谱。后来在用HmacSHA1加密是发现也出了问题,后来有人指出:这是JRE配置出了问题。 然后我就把JRE的路径修改了一下,所有的就都好了。 操作步骤: 1. Windows->Preferences->Java->Installed JREs->修改……
Read More列表是Android最普遍的控件之一,而在加载列表时,需要在header或footer处加入新的数据,这样刷新列表就是一件很常见的事情。 过去最普遍的刷新列表的做法就是在header处添加“刷新”,在footer处添加“更多”。这样做简单易行,但是用户体验不是很好,特别是对于iPhone的下拉刷新来讲,Android的界面似乎没有那么强大。 前一阵子,Johan Nilsson在他的博客上发布了Android下拉刷新的实现效果,致使大家纷纷效仿。这是他博客的原文: http://johannilsson.com/2011/03/13/android-pull-to-refresh-update.html 这是该实现的源码: http……
Read More虽然我一直觉得算法非常重要,但是一直没有时间坐下来学习和总结一下。 大学的时候学的很多重要的东西都忘得差不多了,其中就包括算法这样的重要的知识。以前每次面试的时候一到算法这部分我就发懵,因为我确实对算法没什么研究。 前一阵子买了一本算法书看了看,发现里面讲的很多东西都看不懂!本来我以为算法这个东西应该很简单才对,至少哪些基本算法应该很好理解。 这段时间一直在总结以前所学的知识,也算是“温故而知新”。 今天在网上看了一篇算法文章,感觉还不错,决定分享一下。 算法来源:http://www.lfyzjck.com/2011-05-1……
Read More以下是常用到的Intent的URI及其示例,包含了大部分应用中用到的共用Intent。 一、打开一个网页,类别是Intent.ACTION_VIEW Uri uri = Uri.parse(“http://wubotao.com/”); Intent intent = new Intent(Intent.ACTION_VIEW, uri); 二、打开地图并定位到一个点 Uri uri = Uri.parse(“geo:52.76,-79.0342″); Intent intent = new Intent(Intent.ACTION_VIEW, uri); 三、打开拨号界面 ,类型是Intent.ACTION_DIAL Uri uri = Uri.parse(“tel:10086″); Intent intent = new Intent(Intent.ACTION_DIAL, uri); 四、直接拨打电话,与三不同的……
Read More其实很久都决定学习Android底层方面的知识,看一看底层方面的代码,弥补自己在基础知识方面的不足。但苦于我对C++并不是很熟悉,源代码看起来很困难,而且对一切驱动方面的知识更是了解的少之又少,所以这件事一直都耽搁了。 这段时间静下心来,准备把以前所学的知识梳理一下,然后好好的学习一下C++,研究一下Android底层代码的一些实现。我觉得这些知识以后会非常有用,让我真正成为一个多面手。 这个过程可能会比较长,少则半年,多则一到两年。我打算从长计议,先把基础部分学好,一步一步来。 在十一之后可能会办一张Visa信用卡,……
Read More最近在看代码时我想起这个问题,虽然以前也曾经遇到过,不过一直没有时间总结,今天就把一些想法写到这里。 在Python中,一切皆对象,一切值皆引用,这是Python不同于Java的一个重要区别(在Java中有八种基本类型不是引用类型,但这不是本文要讨论的)。 比较两个对象通常有两种方法,一种是比较这两个对象指向的内存地址是否相同,另一种就是两个对象的字面值是否相同,例如两个字符串可以比较它们字符值,两个整形可以比较数值。 在Java中这两种比较方法分别对应“==”和对象的“equals()”方法,在Python中分别对应“is”和“==”。……
Read More上次在做火车时刻表抓取时用到一个程序,里面有几个地方比较好,让我觉得印象比较深刻的就有这么一段,使用Python的logging部分来记录日志。 这个跟Java中的log4j比较类似,可以定制打印日志的格式,可以将日志写到文件中,这在解决一些复杂的问题时很有用。 说明: 1. filemode filemode=’r',只读,清除原有内容(默认方式) filemode=’r+’,读写,清除原有内容 filemode=’w',只写,创建一个新的文件覆盖旧的 filemode=’w+’,读写,创建一个新的文件覆盖旧的 filemode=’a',只写,追加 filemo……
Read More20. “That’s weird…” 很奇怪…… 19. “It’s never done that before.” 以前没这样过的。 18. “It worked yesterday.” 昨天还好好的。 17. “How is that possible?” 那怎么可能?(怎么会出问题?) 16. “It must be a hardware problem.” 这一定是硬件问题。 15. “What did you type in wrong to get it to crash?” 你输入什么东西后才崩溃的? 14. “There is something funky in your data.” 你的数据有问题。 13. “I haven’t touched that module in weeks!” 我好几个礼拜没动那个程序了! 12. “You must have ……
Read More安装好Apache之后,无法开启服务器,查看错误日志后显示: error (OS 10038) : Child 3356: Encountered too many errors accepting client connections. Possible causes: dynamic address renewal, or incompatible VPN or firewall software. Try using the Win32DisableAcceptEx directive. 上网找到解决方法: 编辑httpd.conf 在文件尾加入下面一行 Win32DisableAcceptEx 重启apache 可是新问题出现了: [Fri May 27 10:15:27 2011] [notice] Apache/2.2.3 (Win32) PHP/5.1.4 configured — resuming normal operations [Fri May ……
Read MoreAndroid如果ListView不需要通过点击Header或者Footer来增加新数据,那还比较简单。有一种情况是需要通过点击Header和Footer来向ListView中添加新的数据,这在理论上就是可以包含无限元素的ListView。 我在经历的两个项目中都遇到过这种情况,在做第一个项目时,因为经验不足,走了很多弯路,写出来的代码也相当复杂。在我做第二个项目的时候,我对前一次的代码进行了优化,在满足要求和性能的同时,代码量大大减少。 下面就是包含Header和Footer的无限ListView的一个实现,通过点击Header或者Footer,可以向ListView中添加数据,这是第……
Read MoreURL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 URL 之间的通信链接。程序可以通过URLConnection实例向该URL发送请求、读取URL引用的资源。 通常创建一个和 URL 的连接,并发送请求、读取此 URL 引用的资源需要如下几个步骤: (1)通过调用URL对象openConnection()方法来创建URLConnection对象。 (2)设置URLConnection的参数和普通请求属性。 (3)如果只是发送GET方式请求,使用connect方法建立和远程资源之间的实际连接即可;如果需要发送POST方式的请求,需要获取URLConnection实例对应的输出流来……
Read More第一次用Django做项目,遇到了很多问题。 今天遇到的问题是Django在处理post请求时多次出现403错误,我弄了好久才把问题解决。 我先描述一下问题出现的环境:我用Django写了一个web服务端,姑且称它为API吧。我在实际测试中发现,通过get方式可以从API中获得数据,但是post方式却无法获取数据,客户端显示服务器端出现403错误。 我找不出什么原因,只好新建了一个表单来测试post请求,我发现通过表单发送post请求时,页面显示403错误:Forbidden CSRF verification failed. Request aborted. 我在网上查了一下,大多数人的解决方式是……
Read More我决定写一些技术类的文章,一方面可以跟大家分享知识,另一方面也可以提高自己。 另外,这也算是我工作以来学习和工作的一个总结。 我设想了一下文章的范围,大概包括以下几个大类: Java Python Javascript Database Web Server 其中Java部分包括: Java SE Java EE Android Python部分包括: Python 2 Python 3 Django Web.py Javascript部分包括: CSS Jquery Extjs Openlayers Database部分包括: Oracle/Mysql的安装使用 SQL语句的优化 数据库出现的一些常见问题 数据库性能优化 Web Server部分主要包括: Tomcat Ngi……
Read More本文作者:叶正盛,阿里巴巴数据库技术专家,专注于数据库应用性能量化。 再次写给我们这些刚入行浮躁的程序员,如何成长,以下是列出了一些成长的心得,我们不必每条都去实践,但是优秀的程序员成长过程中总会实践里面的几条。 多做项目,多思考 不要害怕做事,刚毕业的同学最缺的就是工作经验,乱七八糟的项目能让你很快就了解了一个公司的业务与使用的技术,并且可以多接触同事与客户。 当你毕业后刚进一家公司时,如果主管没有把你安排到项目组工作,那真的很杯具,因为他认为你还不能胜任工作或者你的加入会让项目组更糟。 还有人……
Read More原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务、生物技术、房地产、医疗、保险和公用事业。正如乔纳森在文中所言,本文适合刚毕业的大学生和刚入门的程序员。如果你已是高级开发人员,或许你在本文中看到自己的身影。 从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些艰难又容易的经验。作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友。 我会持续更新这些经验,我可能还会有更多的感想,但就……
Read More应用程序的组件为了告诉Android自己能响应、处理哪些隐式Intent请求,可以声明一个甚至多个Intent Filter。每个Intent Filter描述该组件所能响应Intent请求的能力——组件希望接收什么类型的请求行为,什么类型的请求数据。比如之前请求网页浏览器这个例子中,网 页浏览器程序的Intent Filter就应该声明它所希望接收的Intent Action是WEB_SEARCH_ACTION,以及与之相关的请求数据是网页地址URI格式。如何为组件声明自己的Intent Filter? 常见的方法是在AndroidManifest.xml文件中用属性<Intent-Filter>描述组件的Intent Filte……
Read Moredip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。 px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320×480像素,这个用的比较多。 pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用; sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。 由此,根据 google 的建议,TextView 的字号最好使用 sp 做单位,而且查看TextView的源码可知 Android 默认使用 sp 作为字……
Read More昨天去参加了摩托罗拉开发者大会,听了一些报告,主要是android 3.0方面的东西,感觉还是蛮有收获的。 我觉得从长远角度来看,android的市场份额会越来越大,影响也会越来越大。 而且我对移动开发还是比较感兴趣的,早在2010年3月份,我就决定做一些手机开发的东西,而且最终也实现了这个想法。今年也换了一个全职性的android开发工作,现在一切都还刚刚开始。 我希望在移动开发这个领域能够一直做下去,能够有所成就。 昨天去开会的时候竟然走错了,本来是在北京JW万豪酒店,我去了北京万豪酒店。后来又打车过去,好容易才找到。 我去……
Read More原文地址:How to advance your career? Read the Passionate Programmer! 我刚看完Chad Fowler的Passionate Programmer(中文版《我编程,我快乐:程序员职业规划之道》),这本书讲的是如何在软件开发行业中取得非凡的成就。 以下是根据这本书总结的,作为程序员,要取得非凡成就需要记住的15件事。 1、走一条不一样的路 在有利于自己的市场中竞争,如果你满足于“泯然众人矣”,那恐怕就得跟那些低工资国家的程序员们同场竞技了。 2、了解自己的公司 以我在医院、咨询公司、物流企业以及大技术公司工作的经验来看,这一点所言不虚。……
Read More