Android 屏幕尺寸
Nov 19th
你也许刚好在找这个:
* QVGA — 240 x 320, low density (120 dpi)
* HVGA — 320 x 480, medium density (160 dpi)
* WVGA800 — 480 x 800, high density (240 dpi)
* WVGA854 — 480 x 854, high density (240 dpi)
Ubuntu报boot空间不足怎么办?
Nov 7th
Ubuntu升级N次后,更新了多次内核,最近一次更新完后,系统就报“boot空间不足”的警告。
如何解决这个问题呢?
首先备份/boot目录下initrd.img-* 和 vmlinuz-*文件,然后在把最高版本的两个文件移回/boot目录,最后运行命令
sudo update-grub
就可以了
如何更改WordPress的静态文件地址
Nov 5th
我给朋友装了一个Wordpress,按照的时候是我的二级域名,现在朋友买了玉米了,网站服务器配置好了,但由于加载不到JS,进不了后台修改静态图片地址,在这样的情况下可以通过下面的方式解决。
update ${博客的表名前缀}options set option_value = '${新的域名}' where option_id = 1;
如何得到每天某时刻的时间戳
Nov 1st
public static long getDaybreakTime() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTimeInMillis();
}
其实代码是比较简单的,相信这段代码还是有很多用处的。
可以使用到的场景有:
- 设置在某一时刻之前,必须更新缓存里的数据;
- 在Quartz中,统计和分析昨天的数据;
- 合并某一天内发生的动态;
- ……
如何在Java中使用枚举
Oct 22nd
枚举(pascal) 随着计算机的不断普及,程序不仅只用于数值计算,还更广泛地用于处理非数值的数据。例如:性别、月份、星期几、颜色、单位名、学历、职业等,都不是数值数据。在其它程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。如果能在程序中用自然语言中有相应含义的单词来代表某一状态,则程序就很容易阅读和理解。也就是说,事先考虑到某一变量可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,这种方法称为枚举方法,用这种方法定义的类型称枚举类型。
在没有使用枚举之前,我们可能会这样来定义变量:
private static final int GIRL = 0; private static final int BOY= 1;
这样一种实现的方式,看似好像很清晰,但是如果类型一多,类型的值就较难管理,而且在判断不同类型时,有较多的丑陋的代码,代码自然不够优雅。
下面来看下如何使用枚举。
可以这样来定义:
public enum GenderType {
Girl, Boy
}
利用枚举传递值:
public void updateGrade(long userId,GenderType gender);
这样传递的好处是,可以是参数的传入一定是正确的,是真实存在的类型值。
递归枚举:
for (GenderType g : GenderType.values()) {
System.out.println(g.name()); //得到枚举的名字
System.out.println(g.ordinal()); //得到枚举的序号
}
枚举和switch可以说是绝配:
for (GenderType g : GenderType.values()) {
System.out.println(g.name());
System.out.println(g.ordinal());
switch(g){
case Girl:
break;
case Man:
break;
}
}
比如:表示层传递参数值0,进入控制层,如何使用枚举呢?
if(GenderType.values().length>i){
GenderType.values()[i] //这样就得到了枚举类型
}
如果传递的是字符串”Girl”,就可以这样得到数据枚举:
GenderType.valueOf("Girl")
在eclipse中查看Android SDK源代码
Sep 23rd
首先是下载你使用的Android SDK相对应的源代码
下面这个网站有各种版本的源代码:
http://rgruet.free.fr/public/
android-1.5-cupcake-src.zip 04-Oct-2009 03:07 21.6M
android-1.6_r1-donut-src.zip 04-Oct-2009 03:02 22.9M
android-2.0-eclair-src.zip 21-Nov-2009 01:21 24.4M
android-2.1-eclair-src.zip 06-Jul-2010 13:08 30.2M
android-2.2-froyo-src.zip 06-Jul-2010 12:59 33.4M
然后在对应的SDK版本下目录下建立sources目录,在把代码解压到sources目录下,这样Eclipse就可以直接识别源代码了。
为什么是这个目录呢?
查看 Windows –> Preferences –> Java Build Path –> Libraries –> Android 2.X – > android.jar –> Source attachment
我的步骤:
下载:
http://rgruet.free.fr/public/android-2.1-eclair-src.zip
我的SDK_HOME 是:/home/app/android-sdk/
建立source目录:/home/app/android-sdk/platforms/android-2.1_r01-linux/sources
下面是我的目录结构:
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/android
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/com
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/dalvik
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/dasm
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/data
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/dex
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/dot
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/dxc
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/dxconvext
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/jar
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/java
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/java_cup
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/javax
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/jdiff
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/jp
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/junit
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/mock_android
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/org
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/other
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/otherpackage
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/otherpkg
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/proguard
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/signature
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/spechelper
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/SQLite
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/src
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/sun
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/targets
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/testprogress2
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/tests
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/util
/home/app/android-sdk/platforms/android-2.1_r01-linux/sources/LICENSE
把wordpress搬到nginx环境
Sep 9th
这次并不是换了博客的宿主,而是更换了博客的主机(VPS)。换到国外的服务器去了,虽然响应时间慢了点,但整体的速度要比以前的虚拟主机要快。
这次搬家的过程中,碰到了些容易出现的问题。
比如MySQL数据库的编码问题,这个配置MySQL的时候,要注意增加配置
[client] default-character-set = utf8 [mysqld] default-character-set = utf8
下面的这些语句可能对你有用:
alter database blog character set utf8; create database mydb character set utf-8; SHOW VARIABLES LIKE 'character_set_%'; SHOW VARIABLES LIKE 'collation_%';
当然在配置Nginx上也要注意一个地方,这样就支持了wordpress的伪静态
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
server {
listen 80;
server_name www.herbertyang.com;
access_log logs/blog.access.log main;
location / {
add_header Content-Type "text/html; charset=UTF-8";
add_header Content-Encoding "gzip";
try_files $uri $uri/ /index.php?q=$uri&$args;
root /home/app/phproot/wordpress;
index index.php index.html index.htm;
}
location ~* \.(jpg|jpeg|png|gif|css|js|swf|mp3|avi|flv|xml|zip|rar)$ {
expires 30d;
gzip on;
gzip_types text/plain application/x-javascript text/css application/xml;
root /home/app/phproot/wordpress;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/app/phproot/wordpress$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
最后也把Wordpress加上了Memcached,速度还是快了一点,响应的速度有点慢,不过感觉流畅很多。
参考网址:
http://blog.s135.com/nginx_php_v6/
http://www.23day.com/html/22890.html
http://www.nonabyte.net/nginx-wordpress-rewrite/
ubuntu字符集/SVN UP的字符问题
Sep 8th
首先利用命令
cat /usr/share/i18n/SUPPORTED
找到自己需要的字符集
然后找到文件
/var/lib/locales/supported.d/zh
很有可能你没有这个文件,可以创建一个,然后在文件里增加你需要的字符集
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8
zh_CN GB2312
zh_HK.UTF-8 UTF-8
最后就
sudo locale-gen #或者 dpkg-reconfigure
还要记得修改用户的配置,增加用户使用的字符集
export TZ='Asia/Shanghai' export LANG=zh_CN.UTF-8
如果是Windows下的话,还需要修改SSH客户端的字符编码。
2010系统架构师大会
Sep 1st
2010年8月27、28日,由IT168、ChinaUnix、ITPUB、IXPUB共同主办的SACC2010系统架构师大会在北京永泰福朋·喜来登大酒店成功举行。两天的盛会以七个技术专场为平台,内容涵盖从系统架构、网络、安全、存储、数据库、移动互联、云计算等与架构师相关的方方面面。
相关地址:
http://sacc.it168.com/
部分PPT下载地址:
1、架构师大会-架构设计专场
http://linux.chinaunix.net/SACC2010/topic1.zip
2、架构师大会-架构设计与存储管理专场
http://linux.chinaunix.net/SACC2010/topic2.zip
3、架构师大会-应用系统优化与流量管理
http://linux.chinaunix.net/SACC2010/topic3.zip
4、架构师大会-可扩展数据库架构
http://linux.chinaunix.net/SACC2010/topic4.zip
5、架构师大会-移动互联网产品架构设计
http://linux.chinaunix.net/SACC2010/topic5.zip
6、架构师大会-系统安全与服务监控
http://linux.chinaunix.net/SACC2010/topic6.zip
7、架构师大会-云计算分布式应用实践
http://linux.chinaunix.net/SACC2010/topic7.zip
微博客输入框jQuery插件
Aug 29th
自己开发的一个类似微博客输入框的一个jQuery插件,也可以让大家学习下怎么开发一个简单的jQuery插件。
(function($){
$.fn.extend({
speaker:function(countId){
var intervalId = jQuery.data(this, 'intervalId');
this.focus(function(){
if(intervalId==null||intervalId!=0){
intervalId = setInterval("jQuery.speaker.check('"+this.id+"','"+countId+"')",50);
jQuery.data(this, 'intervalId', intervalId);
}
});
this.blur(function(){
var intervalId = jQuery.data(this, 'intervalId');
jQuery.data(this, 'intervalId', 0);
clearInterval(intervalId);
});
}
});
jQuery.extend({
speaker: {
check:function(id,countId){
var str = $("#"+id).val();
var count = 140-str.length;
$("#"+countId).html(count);
if(count>10){
$("#"+countId).attr("style","color:#000000;");
}else if(count>=0){
$("#"+countId).attr("style","color:#085879;");
}else{
$("#"+countId).attr("style","color:#BA2636;");
}
}
}
});
})(jQuery);