首先,源码需要在开头添加:
-- coding: utf-8 --
表示已UTF-8作为编码格式
在使用字串时
myString = u”Hello 中文”
print myString.encode(“utf-8″)
即可。
追寻梦想
首先,源码需要在开头添加:
表示已UTF-8作为编码格式
在使用字串时
myString = u”Hello 中文”
print myString.encode(“utf-8″)
即可。
转自:http://scalagroup.group.javaeye.com/group/topic/19125
项目早期采用BlazeDS+Spring+Hibernate的模式开发,开发过程中写服务的时候感觉用Spring的HibernateTemplate不是很方便,虽然spring很好的替你处理了Hibernate的Session生命周期管理和事务,但是象下面这样的代码
更新用户信息
user.UPDATE
new Q_Task {
因为scala是新生事物,不敢贸然大规模使用,开始尝试一两个小服务用scala来写,借助于scala语法的便利性,原来java 十句话可以完成的逻辑,scala三四句就可以搞定了。初期是java服务和scala服务共存的方式,运行过一段时间后,感觉scala写的服务也比较稳定,不存在系能上的问题,开始大面积用scala来写服务,包括把原有的一些用java写的服务重构为Scala实现(用scala写的比较精简,便于以后维护)。现在,几乎不愿意用java来写服务代码了,语法太罗嗦,开发效率也不高。包括一些底层的框架,能不用java就尽量用scala来写,写起来还是比较省心的。
说一些scala使用过程的碰到的问题以及一些可能解决办法
1 比较高的学习曲线,没有接触过函数式编程概念一上来很容易被scala那些怪异的操作符和语法搞晕,而且又多出来很多新概念,消化吸收需要花费一段时间。语法太过灵活,用好了事半功倍,用烂了祸患无穷。个人感觉值的投入精力学一下,用好了,会带来开发效率的提升。
2 与原有的java类库不象宣传中的那样可以完全方便的互操作,scala中的集合框架自成一套体系,当访问java集合类的时候需要转换一下才能方便使用,因为大量的java第三方库都是使用的java的集合框架,这一点用起来还是比较麻烦的,不过scala2.8通过隐式转换已经很好的解决了这个问题,使用2.7的话,自己封装一下做一下隐式转换也是可以解决这个问题。
3 序列化支持的不好,在远程服务调用模式下,需要把服务端的一些模型类序列化到客户端,标准的javabean没有任何问题,用scala写模型的话,会用到一些scala的集合类,这些都不太好序列化。在和BlazeDS集成的时候,通过扩展BlazeDS的序列化能力,碰到scala集合类,转换为java的标准集合类可以解决这个问题。
4 编译器的编译速度还有待提升,做一个小项目,写几十个scala类还感觉不到编译速度慢的问题,如果是上百上千个scala类,编译速度就成大问题了,可以把项目按依赖关系拆成几小块,单独编译,只编译变化的部分。
5 ide的开发环境还不是很成熟,官网推荐的那三个ide各有所长,但总的来说离成熟的标准还有一段距离。早期用eclipse很长一段时间,后因内存耗用和频繁的界面卡死等问题,改用IDEA Community版,代码提示没有eclipse的全,但比较稳定,可以自动导入,重构,格式化,这些都是eclipse欠缺的。对netbean不太感冒,没有正经用过,代码提示,重构等做的也可以,因项目比较大,scala类比较多,netbean用ant脚本来编译,改动一处,所有的类都要重新编译一遍(也可能是对netbean不熟,或许有选项可以支持增量编译吧),速度实在不能忍受。
6 scala中大量使用闭包,而scala闭包是通过java内部匿名类的方式来实现的,由于java虚拟机的限制,内部匿名类的名称是根据代码行号变化的。开发期间如果想通过字节码热部署的方式,来不重启虚拟机,实现快速开发是不太可能了,除非你的逻辑里面不使用闭包,这几乎是不可能的。
7 scala 和 spring的集成还是比较顺畅的,scala写的服务类中,通过@autowire方式可以方便的注入java的服务类,需要spring3.0版本
8 scala 中还没找到比较好用orm框架,目前还是依赖hibernate,又对其做了一下封装。lift略了解了一点,感觉作者封装orm的思路和自己想法相去甚远,也就没有在深入了解下去,有实际用过的可以发表一下感受。
9 因为scala过于灵活,对于同一个项目组来说,最好约定一个通用的规范,否则真会天下大乱了。
10 scala还没有完全实现内置的反射机制,想利用反射来做一些高级特性方面的应用,还比较困难。
11 scala2.8 不兼容2.7编译后的字节码,即便2.7的代码想用2.8来编译一下,由于语法上的一些差异,有些地方还需要做一些重构,现在想把2.7的代码升级的2.8就比较头疼。
12 如果做一个新项目,建议还是完全用scala来做,java+scala混合编程的方式感觉还是不太方便,java能做的,scala完全都可以做到。用scala会牺牲一点性能,但差距不是太大,况且性能的问题,需要的是合理的系统架构,有效的利用缓存机制,而不仅仅只靠语言本身的执行速度。
做原型或者PPT时,英文的涂鸦字体有很多选择,中文的涂鸦式手写字体,很漂亮的比较少。
今天推荐两个,一个是华康娃娃体,一个是方正喵呜体。
[caption id=”attachment_294” align=”left” width=”219” caption=”华康娃娃体”] [/caption] | [caption id=”attachment_295” align=”left” width=”216” caption=”方正喵呜体”][/caption] |
昨天看到有文章说到 .me 域名具贵的续期费用可以通过Godaddy的策略性购买方式达到节省的目的。
于是,上Godaddy一试,果然如此,单独续费.me域名19.99$,当增加一项其他任意的服务后,变成了1.99$,挑了另外一个虚拟主机的产品,加上20%的优惠码,最后,花了56¥就把一年的续费搞定。前两天居然花了170¥续费了一年,真是亏了啊,都有3年的价格了。
不过Godaddy的虚拟主机真是不怎么样,速度太慢,绝对不值7.99$/Mo。要不是为了域名,这个真不会买了。
不管怎么说,现在我的域名已经续期到 2022/03了。
状态还在移转中,据说要5天。
用Apache2没有碰到这个问题,WordPress可以自动配置。到了Nginx,虽然在WordPress里设置了重写规则,单实际却没有起效,文章链接直接就失效了。
应该是rewrite规则的问题。
在server部分加入
[php] try_files $uri $uri/ /index.php?q=$uri&$args;[/php]
意思是把所有不存在的文件和目录,全都转到 index.php 处理
这样,我要求的效果就达到了。
不过这样一直会出现 /index.php
如果用rewrite方式可以这样写
[php]
rewrite ^./files/(.)$ /wp-includes/ms-files.php?file=$1 last;
if (!-e $request_filename) {
rewrite ^.+?(/wp-.*) $1 last;
rewrite ^.+?(/.*.php)$ $1 last;
rewrite ^ /index.php last;
}
[/php]
Ubuntu+apache2的配置刚开始是使用默认的,对apache2稍加配置,两个域名下的服务基本都可以用了,不过占用了300M内存,感觉有点多了。总共才可怜的512M。于是开始折腾,将apache2改为worker的方式,只开启一个进程,不过占用资源更多了,逼近500M,当然,配置肯定能够再优化,不过不太了解具体改修改哪里的配置,比如把线程数调小,该调到多小呢?
后来看到一篇张宴的文章Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器),居然已经写到第6版,而且,还有另外一篇关于小内存服务器的配置介绍,心里开始痒痒,所以又开始折腾。
先是做备份,这个是习惯了。然后,放心大胆的开始重新安装CentOs, 启动。起始的占用的内存少多了,才17M而已。默认配置了sendmail,apache,ssh。把apache先干掉。然后,按照文章的内容,一步步做下来,碰到不少问题,然后查网页,查书。反正折腾了几个晚上。终于,今天小功告成。不过配置上的东西真是要花时间啊。
本文介绍了linux下如何备份与恢复mysql数据库。
数据库备份是非常重要的。如果定期做好备份,这样就可以在发生系统崩溃时恢复数据到最后一次正常的状态,把损失减小到最少。
一、 用命令实现备份
MySQLl提供了一个mysqldump命令,我们可以用它进行数据备份。
按提示输入密码,这就把tm数据库所有的表结构和# mysqldump -u root -p tm > tm_050519.sql数据备份到tm_050519.sql了,因为要总进行备份工作,如果数据量大会占用很大空间,这时可以利用gzip压缩数据,命令如下:
# mysqldump -u root -p tm | gzip > tm_050519.sql.gz
系统崩溃,重建系统时,可以这样恢复数据:
# mysqldump -u root -p tm < tm_050519.sql
从压缩文件直接恢复:
#gzip < tm_050519.sql.gz | mysqldump -u root -p tm
当然,有很多MySQL工具提供更直观的备份恢复功能,比如用phpMyAdmin就很方便。但我认为,mysqldump是最基本、最通用的。
二、利用crontab,系统每天定时备份mysql数据库
利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。
1、创建保存备份文件的路径/var/backup/mysqlbak
# mkdir -p /var/backup/mysqlbak
2、创建/usr/sbin/bakmysql文件
#vi /usr/sbin/bakmysql.sh
#!/bin/bash # mysql备份脚本 cd /var/backup/mysqlbak/ dateDIR=`date +"%y-%m-%d"` mkdir -p $dateDIR/data for i in `/usr/local/www/mysql/bin/mysql -uroot -plin31415926 -e "show databases" | grep -v "Database" | grep -v "information_schema"` do /usr/local/www/mysql/bin/mysqldump -uroot -plin31415926 $i | gzip > /var/backup/mysqlbak/$dateDIR/${i}_${dateDIR}.gz done
3、修改文件属性,使其可执行
# chmod +x /usr/sbin/bakmysql
4、修改/etc/crontab
# crontab -e 在下面添加 01 3 * * * root /usr/sbin/bakmysql
#表示每天3点钟执行备份
这样每天就可以在/var/backup/mysqlbak下看到备份的sql文件 了!
只要用Mobipocket Creator 4.2 Publisher版来转换你的pdf文件。
Mobipocket Creator 4.2 Publisher 可以在这里下载。
对于.xls、.rtm等等,现在只要你能转成pdf格式,按上面介绍的方法你都有能转到Kindle上了。转成pdf你可在windows、linux和OSX上面用pdf生成软件就行。我用的是免费的PDFcreator软件。它在你的windows系统上安装了一个虚拟打印机可以让任何支持打印功能的软件生成PDF文件。只要简单地安装了PDFcreator只要在你平常用来阅读它们的软件中打开这些文档,在打印时选择PDFcreator的虚拟打印机来打印它们就行了。它会为你转换成PDF格式的文件,并问你保存在什么地方。你再把.pdf的文件导入到Mobipocket Creator转换成.prc文件,最后你只要把.prc文件用usb线连接上传到你的Kindle的documents文件夹.