斯里兰卡工作日记(第八天)

前面几天懒得写了~ 不管在哪里生活都一样,时间长了也就只剩下平淡了,我想习惯品尝平淡生活也许会更好吧!

昨天是回家的日子,这次回程整整花来 24 小时以上,回到家又累又难受,洗个澡就睡了! 此文成于回来后第一天.

回顾这几天的旅行,有刚开始的兴奋,到后来的平淡. 工作由刚开始的紧张,到后来的随性而发. 从这过程中我学到了很多东西. 积累了一定的海外工作经验. 我想这是此行最大的收获了吧.

当然也遇到了很多问题.这些问题也是由于我工作疏忽不仔细,看轻问题所造成的. 经理安慰了我,责任不全在我.但如果我能把工作做好,让客户找不到岔那不是更好嘛!看了平时的工作我还不够仔细,也看轻了此任务的难度.后面工作开始,我要争取克服这些毛病,全面推进这个项目的进行.

抛开公司间合作的问题.此项目作为我人生第一个国际项目,推进它知道成功,我责无旁贷.虽然能力有限,但会继续努力的~

斯里兰卡工作日记(第三天)

今天上午被告知,下午要跟SLT讲解我们ESB产品相关知识.但一想到偶悲剧的英语就心里没底,好在有印度同事可以帮我分担一部分解释工作.

中午我们在住所对面的中国餐馆(毛家菜)吃了顿饭.好像花了4000RS,差不多200多人民币,还是挺贵的.而且还收什么服务费,虽然在斯里兰卡收这费用很正常,但也不看在中国同胞的份上便宜点,以后尽量不去吃了,还是自己做来吃好了.

下午1:30 四人做两辆Tuktuk去了SLT. 今天主要都是技术在场,所以问题很多,没10多页的PPT,一直讲到了4点的样子. 偶尔我也能流利的说了一串英文,我想这是1年来在这个项目上最大的飞跃了.暗暗庆幸下 大笑

晚上再次有Mr Huang做了菜,不过当地菜材料实在糟糕,可惜了Mr Huang的手艺

斯里兰卡工作日记(第二天)

今天是到斯里兰卡的第二天,也是正式工作的第一天.

今天凌晨另一个印度同事也从印度飞了过来.

早上斯里兰卡的CIO Wijeweera开车来接我们,可惜车小了点,4个大男人挤在一起.难受…..

住所离SLT只有2公里,路上也挺堵的.不过比杭州好多了冷酷

上午跟Geneva和Clarity的厂商介绍了我们的产品(CRM/ESB)

中午吃了顿当地的饭菜(辣死了)

下午分两组,我和Geneva负责人Ranjeeva就前段时间的技术问题进行了讨论,并解决了问题.一切按照计划进行

很”佩服”SLT的管理者,5点l另一组还讨论激烈着 SLT的负责人竟一个个走光了,原来是没加班的习惯.⊙﹏⊙b汗

晚上做Tuktuk(残疾车)回的住所. 到附近逛了一圈,奇迹的事又在那边遇到了个中国妇女,竟然也是做小姐的….同样很坦诚的承认,还鼓励我们去附近的赌场.无语…..

在超市购物遇到了个漂亮的姑娘,这次是正常的了,在当地和丈夫开中国海鲜餐馆,应该弄的不错,住所里我们住的别墅很近,同一条街(Colombo 3是富人区)

斯里兰卡工作日记(第一天)

昨天凌晨下的飞机,由于时差+生物钟影响,当地时间4点就醒了(北京时间6:30),只睡了3小时,再睡也睡不着了.

今天没有具体事情,休养为主.

晚上在斯里兰卡做了一顿中国餐,在超市遇到几个中国小姐,让我无语的是她们很坦然的承认是在这里做妈妈桑兼小姐. 看来出了国小姐都不一样了

由Mr Huang亲自操刀的一桌菜

 

斯里兰卡工作日记(前记)

北京时间12号早上6点就起床收拾行李,虽然前一天晚上已整理的差不多了,但以防万一,还是在仔细的看了下.确认没有错处了才除了门,因为今天是一个不简单的出差,将前往斯里兰卡为当地国家电信的CRM/ESB工作.

今天的简单行程(时间都在左右):

8:00 公司集合

10:00 到底杭州萧山国际机场

10:45 登机前往香港国际机场

12:30 飞机起飞(由于上海到香港空中管制,延迟了1个多小时)

14:30 到达香港国际机场

15:50 登机前往斯里兰卡飞机,中途需要停留新加坡

0:20 下机.时差开始2.5小时

1:00 到安排的别墅.

睡了~~

…… 睡觉了

住所位置

300万凑齐小怡帆赴美 王为念认作干女儿

不久前的消息,不放弃,不抛弃~ 感人呐

期待手术成功~

django邮件发送(支持模板)

项目里一个模块,重新封装了python的smtplib和django的template

主要功能:

  1. 支持多用户接受

  2. 支持模板

  3. 良好的处理了中文问题

代码如下:


				#!/usr/bin/env python

				# -*- coding: UTF-8 -*-

				#

				#

				__author__="Fred"

				__date__ ="$2010-5-31 17:15:35$"

				import smtplib, base64

				from django.template import loader, Context

				CHARSET = 'utf-8'

				FROM_ADD = 'xxxxxx@163.com'

				SMTP_SERVER = 'smtp.163.com'

				SMTP_USER = 'xxxxx'

				SMTP_PASS = 'xxxxx'

				class SendMail:

				u'''

				邮件发送模块,此模块运行使用django模块来发送邮件

				参数介绍(*必填):

				subject *邮件主题

				template *邮件模板位置

				context *邮件模板上下文

				to_addr *目的地址,允许发给多人,格式为['test@examp.com','test2@example',......]

				smtp_server 发件服务器地址

				smtp_server_port 发件服务器端口号

				from_addr 发信地址

				from_addr_name 发信人名称

				user 发件箱登录用户名

				pass 发件箱登录密码

				e.g:

				from ureg.helper import SendMail

				mail = SendMail('test','email/register.html',{'tmp_code':'123'},['ad@fengsage.cn'])

				mail.send_mail()

				u'''

				def __init__(self,subject,template,context,to_addr,smtp_server=SMTP_SERVER, smtp_server_port = 25 ,from_addr=FROM_ADD,from_addr_name=u'Mytut视频网',user=SMTP_USER, passwd=SMTP_PASS):

				self.subject = subject

				self.template = template

				self.context = context

				self.to_addr  = to_addr

				self.from_addr = from_addr

				self.from_addr_name = from_addr_name

				self.username = user

				self.password = passwd

				self.smtp_server_port = smtp_server_port

				self.mailserver = smtp_server

				def send_mail(self):

				from email.mime.text import MIMEText

				from email.mime.multipart import MIMEMultipart

				from email import Utils

				msgRoot = MIMEMultipart('related')

				msgRoot['Subject'] = self.subject

				msgRoot['From'] =  self.named(self.from_addr, self.from_addr_name)

				if len(self.to_addr) == 1:

				msgRoot['To'] = self.to_addr[0]

				else:

				msgRoot['To'] = Utils.COMMASPACE.join(self.to_addr)

				pass

				msgRoot['Date'] = Utils.formatdate()

				# Encapsulate the plain and HTML versions of the message body in an

				# 'alternative' part, so message agents can decide which they want to display.

				msgAlternative = MIMEMultipart('alternative')

				msgRoot.attach(msgAlternative)

				#根据模板生成html

				html = self.render(self.template, self.context).encode('utf-8')

				msgText = MIMEText(html,'html',_charset='utf-8')

				msgAlternative.attach(msgText)

				smtp = smtplib.SMTP(self.mailserver,self.smtp_server_port)

				smtp.login(self.username, self.password)

				result = smtp.sendmail(self.from_addr, self.to_addr, msgRoot.as_string())

				smtp.quit()

				def render(self,template,context):

				u'''

				读取模板内容,并赋值

				u'''

				if template:

				t = loader.get_template(template)

				return t.render(Context(context))

				return context

				def named(self,mail,name):

				u'''

				格式化右键发信/收信格式

				e.g fredzhu <me@fengsage.cn>

				u'''

				if name:

				return '%s <%s>' % (name,mail)

				return mail

				

使用方法:


				mail = SendMail(USER_REGISTER,'email/register.html',{'tmp_code':tmp_code,'tmp_user':username},[email])

				mail.send_mail()

 

micolog自动slug(修正)

核心代码

def autoSlug(str):
    translate_url = ‘http://translate.google.com/translate_a/t?client=t&text=%s&hl=en&sl=zh-CN&tl=en&pc=0′%str.replace(‘ ‘,‘-‘).encode(“utf-8”)
    translate_result = urlfetch.fetch(translate_url,None,urlfetch.GET,HEADERS)
   
    if translate_result.status_code == 200:
        trans_reg = u'”trans”:”([^”]*)”‘
        translate_content = re.findall(trans_reg, translate_result.content)[0]

        translate_content = translate_content  
                        .replace(‘ ‘,‘-‘)  
                        .replace(\,‘-‘)

        translate_content = re.sub(u'[^a-zA-Zd_]’,‘-‘, translate_content)

        logging.info(“*********”+translate_content)
        return translate_content

效果可以看我每篇文章的url,懒人必备,呵呵

补充. 上述代码需插入admin.py,并修改admin_entry类的entry.slug=entry_slug.replace(” “,”-“)为entry.slug=autoSlug(title) 即可。 但这样做会增加提交文章时额外的时间. 在GAE找个不稳定的环境下,及容易崩溃.因此可以用下面方法代替上述方法.

  1. 找到micolog/views/admin/entry.html页面.
  2. 找到大概288行,有段<input type=”text” value=”{{entry.slug|escape}}” tabindex=”1″ size=”30″ name=”slug”/></br>.在</br>换行标记前插入<input id=”auto_translate” type=”button” value=”auto”>标签.
  3. 然后回滚到该页面最上面,随便找一行空白,加入下面代码
JavaScript语言: 临时自用代码
<script type=“text/javascript” src=“http://www.google.com/jsapi”></script>
<script type=“text/javascript”>
    google.load(“language”, “1”);
    $(function(){
        $(‘#auto_translate’).click(function(){
            var title = $(“#title”).val();
            if(title!=“”){
                google.language.translate(title,“zh-CN”,“en”,function(result) {
                    res = result.translation.replace(/s{1,}/g,‘-‘);
                    $(“input[name=’slug’][type=’text’]”).val(res);
                  });

            }else{
                alert(‘请先输入标题!’);
            }
        });
    });
</script>

最终效果如图,

Micolog高级RSS采集器

更新日志:

v0.1

1、支持utf-8、gbk、gbk2312三种编码
2、支持RSS1.0和RSS2.0
3、支持链接、图片过滤、文本替换
4、自动slug构建,根据标题自动生成slug

v0.2
1、新增时间同步,需提交表达式
2、修改过滤选择模式,允许多选,用户自定义选择
3、修复slug的标题的编码问题

v0.3
1、移除RSS1.0支持
2、新增同步用户名
3、新增同步分类
4、改变同步时间方式

功能截图:

价格:100RMB

搬家完毕!

终于把百度空间上的文章搬过来了,删除了很多无用的文章,这里只保留技术方面的.

micolog没什么baidu搬家工具,就自己写了一个,分2部:

1、自己写了个爬虫,爬下百度空间上的所有博文,并输出到rss2.0文件.   下载地址

2、使用micolog的rss2.0采集器把输出的baidu博文同步进micolog. 可以使用micolog的开源插件,也可付费使用本人开发的rss采集插件,功能更齐全,跟稳定.