存档

‘技巧’ 分类的存档

redmine生产环境500错误解决方法

2011年7月22日 没有评论
No Gravatar

每次遇到wordpress出现500错误的时候都心情抑郁。这种直接导致没有心情继续发日志。生活点滴无法记录的感觉很差。
下午的时候发现让人更为头疼的问题,redmine出现了500错误。

An error occurred on the page you were trying to access.
If you continue to experience problems please contact your redMine administrator for assistance.

对于这种只显示一行英文字的错误,提供的有用信息基本上没有。而对于Linux来说,最好的办法就是查log。
1. Redmine的系统管理员要看这里:
/var/log/redmine/default/production.log
比如我这次发生的错误是:

Parameters: {"action"=>"index", "controller"=>"welcome"}

ActiveRecord::StatementInvalid (Mysql::Error: Got error 28 from storage engine: SHOW FIELDS FROM `setting
s`):
  /usr/lib/ruby/1.8/active_record/connection_adapters/abstract_adapter.rb:219:in `log'

2. 在mysql里测试:
show fields from `settings`;
果然出现ERROR 1030 (HY000): Got error 28 from storage engine

3. 检查磁盘空间:

$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
...                      96118540  91236092         0 100% /

4. 清理足够的空间,问题解决。

参考:
1. Got error 28 from storage engine
2. redMine 500 error
3.

我自己的相关文章:Redmine on Ubuntu

分类: Linux, Ubuntu, 技巧 标签: , , , ,

Google Maps嵌入参数

2011年5月24日 没有评论
No Gravatar

最近接了个不赚钱的活。需要嵌入Google的地图到网页中。算是有点收获。

关于maps.google.com/maps参数的说明很少。我们在links里生成的链接大概如下所示。但是具体参数的涵义没有说明,对于想要定制显示方式来说,还是有点难度。

http://maps.google.com/maps?

f=d
&source=s_d
&saddr=%E5%A4%A7%E8%BF%9E%E5%B8%82%E9%A9%AC%E6%A0%8F%E5%AD%90
&daddr=38.91975132975439,121.4334236830473+to:%E4%B8%AD%E5%9B%BD%E8%BE%BD%E5%AE%81%E7%9C%81%E5%A4%A7%E8%BF%9E%E6%97%85%E9%A1%BA%E5%8F%A3%E5%8C%BA%E5%A4%A7%E7%9F%B3%E6%B4%9E%E6%9D%91
&hl=en
&geocode=FfTbUQIdeOU-BykxnaYr6mCPNTHVguEj3oZWBw%3BFUfeUQIdT-08ByknRgvPumiPNTGKyUnse2QZBw%3BFU4hUQIdxYE8Byn5i2qrrm-PNTGPGMyTpTQ_zw
&mra=ls
&mrsp=1
&sz=12
&via=1
&sll=38.87509,121.48244
&sspn=0.219706,0.233459
&ie=UTF8
&ll=38.87509,121.48244
&spn=0.219706,0.233459
&output=embed

查了一下,只找到一篇英文的wiki算是比较全。尝试翻译一下。以下是翻译,不完全是翻译。
注:听从@sagasw的建议,将中文和英文内容分开。

Google Map参数


下面是一个关于可以传递给maps.google.com(以及.co.uk/.be等)的一些参数的清单。如果你想通过Google Maps显示驾驶路线,而这些API并没有提供,你就可以使用它们。

一般性的内容


q=
这是最常用的参数。
查询 - 所有被传入这个参数的内容会被象maps.google.com中的查询输入框中所输入的内容一样被处理,特别是:

  • 要查找的精确地址,标记点或者在某个特殊点上显示的信息框。
    • 提示:在附近不能有类似或者著名的地点的查询值才是可靠的。例如,给出一个会议通知,告诉人们去128号门牌号码的地点,但是只能在街区信息中发现一个12-8的位置(比如6/2010,谁会知道它以后会被匹配到什么信息?)
  • 城镇名字,或者前面的部分邮政编码,会显示到标记或者信息框里。
  • 由纬度和经度信息指定的位置,用十进制形式,比如(52.123N,2.456W或52.123,-2.456),或者采用度/分/秒来表示(52 7 22.8N,2 27 21.6W或52 7 22.8,-2 27 21.6),或者度和分(52 7.38N,2 27.36W或52 7.38,-2 27.36)。
  • 在信息窗口和侧边栏中以粗体显示的文本内容,增加括号()。你可以在不希望断行的的时候使用%A0防止断行发生。你还可以在行尾增加足够多的%A0,并在后面跟一个空格(在URL中使用+号)来强制产生断行。例子如原文指出:URL: http://maps.google.com?q=New+York,+NY+(Mapki%A0is%A0a%A0very%A0good%A0Wiki%A0for%A0Google%A0Maps!%A0%A0%A0%A0%A0%A0%A0%A0+The%A0previous%A0line%A0is%A0now%A0sufficiently%A0long!)
  • to和from需要激活驾驶线路规划功能。
  • 关键字near和loc:会激活本地搜索功能。
  • 两个街之前可以用空格&空格形式,但是在URL里需要使用+%26%或%20%26%20,而不是+&+或+&+。
  • 需要指出的是+号,其实它与,号的作用相同。
  • 位置信息也可以由在@符号后的十进制形式来表达,如(@52.123,-2.456)。这个方式应该会自动给出一个较低的缩放比例。使用这种格式会影响到查询的其它参数。@符号,而不是near或者loc:可以形成单一的查询结果。而其它的方式可能返回数以千计的结果。
  • q=10+Downing+Str+is+not+here@51.50335,-0.227721
    可以在指定的地址放置一个自定义的提示标记,比如q=唐宁街10号不在这里@51.50335,-0.227721。 

    • 这个标签不能是国家的名字,或者没有显示出标记的时候。但是当给出座标的情况下,它可以是空白的。
  • 座标之外增加()标签可以为Google地图提供一些提示。
    1. http://maps.google.com/maps?q=24.197611,120.780512
      我们的位置正好在某被错误标识的知名地点附近。读者应该可以注意到正确的绿色箭头。
    2. http://maps.google.com/maps?q=Dan@24.197611,120.780512
      Dan标签可以扩展成为某机场的名字(Danville Regional Airport)
    3. http://maps.google.com/maps?q=24.197611,120.780512+(Dan)
      这种情况会安全一些。但是显示的是一个黄色的标记。
    4. http://maps.google.com/maps?q=loc:24.197611,120.780512这是一个精确的地点表示。
  • 要注意用%表述非ASCII字符,比如(和)还有+是安全的,但是空格必须以%20表示。注意它们可能被用户的浏览器解释错误。
  • sky:前缀用来查询由Sky产生的KML内容。这个参数是被Google Sky使用,并产生KML输出。
  • 包含GeoRSS数据的Google Earth .KML/.KMZ文件或者RSS输出的完整URL,可以被Google Earth使用,里面包含的信息可以被显示在地图上。

near=
可以使用位置信息的一部分,而不是象q=参数那样输入全部信息。

g=
这是一个给q参数提供额外上下文信息的地址或位置。Google Maps在这里自己用来保存上一次运行的搜索。注:如果这是第一次运行,它将包含你所开始的位置信息。所以它有潜在的信息泄露的风险,你需要检查你是否真的明白并且要分享这个参数所对应的信息。

Search Mode/查询模式


  • mrt=指出查询的类型(空白表示所有内容-缺省)
    • mrt=all值为all指出查询所有内容。
    • mrt=loc值为loc指出是进行位置信息查询,它需要q=参数。
    • mrt=yp值为yp指出是商业查询(即:黄页),它也需要q=信息,一般情况下是位置信息。
    • mrt=websearch值为websearh指出映射的web页面。这些网页通过GoogleBot能够指出地理位置信息。
    • mrt=realestate值为realstate为固定资产查询。
    • mrt=ds值为ds时为相关的地图。Google的GeoRSS源索引(可能是KML?)
  • start=start=参数会跳过前(start-1)个匹配结果。
  • num=num=参数显示,最多这个数量的匹配结果。合法的范围是0到20(但是0有点没有用处)。

Location/位置信息


  • ll= 显示地图时中心点的纬度、经度信息。要注意次序。而只接受十进制数值格式才可以。
    如果使用了这个参数但是没有使用查询,那么地图就以这个点为中心点显示,但是没有标记或信息窗口显示。
  • sll=
    商业查询执行时指定的点的纬度和经度。你可以使用它来执行一个偏离中心的商业搜索。Google使用它,所以在执行完一个商业查询后,中心移动后可以使用“链接到此页”来记录地图位置。使用<math>map.getBounds().getSouthWest().toUrlValue()</math>将返回与maps.google.com相同的结果。
  • spn=spn=大致的经纬区域。如果没有指缩放参数z=,那么将调整缩放水平到一个合理的数值。
  • sspn=
    屏幕区域,计算方法:
    <math>new GLatLng(map.getBounds().getNorthEast().lat() – map.getBounds().getSouthWest().lat(), map.getBounds().getNorthEast().lng() – map.getBounds().getSouthWest().lng()).toUrlValue()</math>
  • latlng=这是一个奇怪的参数。它有3个由,号分隔的数字。前两个数字(大概相当于纬度和经度的100000倍)被忽略。第三个数字似乎是Google内部用来处理特殊业务的企业ID。比如latlng=0,0,14944637421527611642代表Blackpool社区教堂。指定此参数会执行一个针对该业务面页的Google搜索,并显示一个小地图。其它参数,特别是q=参数,必须是有效的内容(但不一定涉到目标业务)。
  • cid= Similar to latitude and longitude, but generating a different map size.
    这个值似应该是地点的编号。原文的表述与latlang重复。
  • geocode=
    geocode值似乎是在线路规划时各关键点的编码。每个geocode之间使用%3B来分隔。
  • radius=在指定半径内采用本地化信息。需要sll参数指定信息或者类似中心点位置才能使用。单位会采用英里,但是在公制国家可能会采用公里。这个参数有助预防Google结果远离了结果城市,并让它被限制在指定区域。

Map Display/地图显示


  • t=地图类型。m=>常规地图,k=>卫星地图,h=>混合地图,p=>地域地图,e=>GoogleEarth
  • z=缩放级别,取值范围1~20。1比例尺最大,20比例尺最小。
  • layer=激活图层。目前t表示交通情况。
  • lci=激活可以层叠的图层。用,号分隔。
    • com.panoramio.all 来自Panoromio的图片
    • com.youtube.all来自YouTube的视频
    • org.wikipedia.en维基百科(英文)
    • com.google.ugc.c752d13e87c4fbd7来自Webcams.travel的网络摄像头。
    • transit公共交通
    • bike自行车线路
  • view=这个参数在测试的时候没有看出分别。

Directions/路径规划


  • saddr= 出发点地址。
  • daddr=目标地址。
    “+to:” 可以使用+to:子句增加多地点线路规划时的目标地址信息,比如daddr=大石洞村+to:马栏广场+to:棠梨沟
  • mra ?? 此参数涵义未知,可能的取值:dm/dpe/cc/ls…
  • mrcr ??此参数涵义未知,可能的取值:0
  • mrsp解析座标到街名。
    • mrsp=0打开从座标解析街名
    • mrsp=1关闭从座标解析街名
  • mrad= 附加目标地址。如果你的行程有三个地点,你可以用saddr=,daddr=和mrad=表示,而不采用+to:子句。
  • dirflg 路线类型。
    • dirflg=h避免高速公路。
    • dirflg=t避免收费路段。
    • dirflg=r采用公共交通。仅在一些区域可用。还可以提出附加的时间信息。
    • dirflg=w步行方式。仍在测试状态。
    • dirflg=b骑行方式。仅在某些区域可用,仍在测试状态。
  • via=用,号分隔的经由地址。
  • doflg=距离单位。缺省的是国家的法定标准。
    • doflg=ks ??这个真不知道。
    • doflg=ptk输出距离单位显示为公里。
    • doflg=ptm输出距离单位显示为英里。
  • ttype= 时间类型。在dirflg=r的状况下采用公共交通工具的时候date和time参数的解析类型。 
    • ttype=now现在就出发,这个会忽略date和time参数。
    • ttype=dep 出发时间。
    • ttype=arr 到达时间。
  • date= 出发/到达日期,格式mm/dd/[yy]yy。由ttype决定是哪个日期。
  • time= 出发/到达时间,格式hh:mm am|pm。由ttype决定是哪个时间。
  • sort= 公共交通线路的排序 
    • sort=def缺省的排序方式。最快的行程优先。
    • sort=num最少的换乘优先。
    • sort=walk最少的步行优先。
  • start=与搜索模式很象,选择第n个结果。

Street View/街景


  • cbll= Latitude,longitude for Street View.街景的经纬度信息。
  • cbp= Street View window that accepts 5 parameters街景窗口可以接受5个参数:
    1. 街景/地图安排,11=上半部街景,下半部地图,12=大部分是街景显示,角部为可以调整角度的地图
    2. 移轴角度,范围是-90到90度。
    3. 缩放范围,0~2
    4. 斜度(采用度数表示),-90~90,缺省值是5
  • panoid=这里的ID是附近的全景对象的ID。全景对象采用可以点击的小箭头,你可以移动到下一个对象。

Output Control/输出控制


  • hl=主机语言。仅支持一部分语言,如hl=fr表示法语
  • om=这个参数指定下方缩略图是否显示。如果指定一个1以外的值,缩略图会关闭。(经过测试1,2会显示)。如果参数会被省略或者指定了值1,则显示。
  • ie=指定输入的字符编码,比如ie=UTF8。
  • oe=指定输出的字符编码,比如oe=UTF8。
  • output=指定输出格式,空白(缺省值)是标准的网页格式。 
    • output=html在整合到Google地图前使用旧风格的Google本地页面格式,显示小地图和大的边栏风格。
    • output=js输出Google地图使用的JavaScript对象和函数调用,包括驾驶线路的多边形编码和HTML格式的场景信息。
    • output=kml输出包含当前地图信息的KML文件。
    • output=mobile针对移动设备的格式输出。在地图中央位置显示一个简单的红色图钉。所有的移动基于链接而不是鼠标的移动。
    • output=nl输出Google Earth和Google Maps可以获取NetworkLink信息的KML文件内容。
    • output=embed输出可以嵌入到第三方网站的HTML内容。这个参数仅与加密的s=参数一块工作,据推测可能是阻止显示不可预知的内容。
    • output=dragdir返回JSON对象。此对象包括反向的地理位置编码和针对给定saddr(线路开始点)和daddr(线路结束点)线路的多边形编码。
    • output=georss 针对当前地图(可能仅适用于MyMaps)的GeoRSS输出。
  • f=控制查询表单的显示风格。 
    • f=d显示成路径规划表单(有两个输入框,始点、终点)
    • f=l此参数似乎没有作用了。
    • f=q缺省的显示方式,单一输入框。
  • pw=激活打印模式,初始化打印。与原文不同,pw=1/2两个值均可以。测试环境是Ubuntu 11.04+Google Chrome。
  • v= 如果指定了output=kml,则此参数指定kml的版本。缺省是2.0,如果想指定是2.2,则v=2.2。

提示信息窗口


信息显示窗口就是漫画书中的对话气球框。

我的地图


  • msa=参数目前应该没有意义了。

杂项


  • vp= 这个参数会使Google地图切换到版权服务模式。它以JavaScript格式返回所有者的版权信息而不是返回可以画出地图的html内容。vp参数指出视图位置(即地图的中心位置)。版权服务仅在提供了spn=z=参数的情况下才可以工作。它们分别代表区域和缩放比例。一还有一些可选的参数,比如t=,它用来指出地图的类型,key=用来指出站点用来执行查询时所用到的API key。例如:http://maps.google.com/maps?spn=0.030372,0.068665&z=6&t=h&vp=53.859462,-3.038235
  • ftr=0 这个参数是用来关掉所有Google地图实验室特性的。当你遇到这些特性出现问题或者无法载入地图,这个特性可能提供有用的途径。使用这个参数之后,你需重新激活那些实验室特性。比如访问:http://maps.google.com/maps?ftr=0。这个链接会提示你关掉了哪些特性,并且会提示是否保存这种改变。
  • source= 未知。一个值是s_d,另一个是s_q。
  • noexp= 未知。其中一个值是0。
  • noal= 未知。其中一个可取值是0。
  • oi=nojs 在它合并到Google地图之前使用旧风格的Google本地页面格式,使用小地图和大的边条,就象前面指定output=html选项那样。这个选项需要停止JavaScript的工作。
  • 参考资料:

    1. Google Map Parameters

阅读全文…

Ubuntu开启DNS缓存加速访问

2011年2月26日 没有评论
No Gravatar

有个客户的DNS缓存服务器坏了,重新安装之前准备一些资料,发现本机也可以做做缓存,提高性能。于是就做了下面的测试。这Linux越用越是舒服。

1. 安装dnsmasq
sudo apt-get install dnsmasq

2. 将本机的dns设置成127.0.0.1

3. 修改/etc/dnsmasq.conf文件中的:
resolv-file=/etc/resolv.dnsmasq

4.在/etc/resolv.dnsmasq文件里加入
nameserver 常用的dns服务器地址

5. 重启动dnsmasq服务
sudo /etc/init.d/dnsmasq restart

分类: Linux, Ubuntu, 技巧 标签: ,

Ubuntu下Subversion集成Redmine用户认证

2011年1月16日 8 条评论
No Gravatar

事实上,没有什么事比这件更让人上火。在此之前,一切如此顺利,apt-get和少有的几个小修改就可以解决,而且Google之后可以得来的资料非常丰富。这一件呢?搜索出来的结果居然会导致配置错误。

话说要完成集成认证,首先要安装这个模块libapache2-mod-auth-mysql,因为我安装的Redmine后台使用的是mysql,如果postgresql或sqlite,那就自行找相关的模块吧。

sudo apt-get install libapache2-auth-mysql

创建视图:

CREATE VIEW users_auth_external AS
SELECT u.login AS username,
       u.hashed_password AS passwd,
       GROUP_CONCAT(p.identifier) AS groups
FROM `members` m
INNER JOIN users u ON m.user_id = u.id
INNER JOIN projects p ON m.project_id = p.id
WHERE u.status = 1
GROUP BY username

配置:

下面列出了两种配置方式,新版本是我在Ubuntu 10.10下缺省使用apt-get安装后可用的版本,但是搜索一般得来的结果以第一种居多(最恶的是在这个模块sourceforge的主站上得到的居然是老版本的内容):

# 老版本 新版本
# AuthMySQLEnable On

AuthMySQLHost 192.168.xxx.xxx

AuthMySQLUser redmine

AuthMySQLPassword redmine_password

AuthMySQLDB redmine087

AuthMySQLUserTable “users, members” #注意这儿跟上不一样

AuthMySQLNameField login

AuthMySQLPasswordField hashed_password

AuthMySQLPwEncryption sha1

AuthMySQL On

AuthMySQL_Authoritative on

AuthMySQL_Host localhost

AuthMySQL_DB my_database

AuthMySQL_User my_database_user

AuthMySQL_Password my_database_password

AuthMySQL_Password_Table users_auth_external

AuthMySQL_Group_Table users_auth_external

AuthMySQL_Username_Field username

AuthMySQL_Password_Field passwd

AuthMySQL_Group_Field groups

AuthMySQL_Encryption_Types SHA1Sum

经常搞不懂这种修改有什么意义。因为看起来就是改变了名字而已。也许是开发人员的习惯或者本尊更换以致于见不得不同风格的内容,但是这种变化给人带来的不便却是显而易见的。即便是开源软件,即便是施福于人的东西,这种变更也让人心生不满。虽然渐近不惑,惑日渐多。不过也容易明白,有时候自己也会做错事。或许不惑之说无外乎警醒我们年华已逝,剩下的时间多干点正事儿吧,又或许是说你想怎么干就怎么干,爽才是真正的不惑吧。

参照:

1. 使用Apache为subversion做出认证
2. Authenticate Apache against Redmine with AuthMySQL
3. libapache2-auth-mysql主站

旧电话通讯录的备份方法

2010年7月10日 2 条评论
No Gravatar

要给LP的索爱908C备份通讯录,发现Google Sync仍然可以用于这款老机器。

Google昨天刚刚发布了面向iPhone、BlackBerry、Windows Mobile等手机的Google Sync服务。该服务能够把支持Microsoft Exchange ActiveSync协议或SyncML协议手机的联系人、日历信息(未来应该还支持邮件等更多Google服务的同步)与Google服务器进行同步。 通过Push Mail技术(应该主要针对支持Microsoft Exchange ActiveSync协议的手机),用户在PC上对通讯录和日程安排所做的变动,可以在实时同步到手机上。本文详细介绍了windows mobile、symbian平台手机使用Google Sync的配置方法,并介绍了syncml的基础知识

目前Google Sync主要支持如下一些平台:

iPhone
BlackBerry
Nokia S60
Nokia standard
Sony Ericsson
Windows Mobile
很奇怪,竟然不支持Google自己的Android平台,相信在Android平台,Google Sync的功能更为全面和强大。

值得注意的两则新闻是:

1、Google Takes Patent License to Microsoft Exchange ActiveSync 。

Google获得了Microsoft Exchange ActiveSync 使用授权,因此Google Sync对一些平台(主要是Windows Mobile、iPhone)的同步支持利用了ActiveSync协议,相信这是Google为支持Push Mail功能等其他商务功能从而争取商务人士而采用的一步棋子,毕竟Exchange Server在企业应用还是很广泛的。

2、微软推出移动备份服务My Phone

呵呵,看来没有永远的敌人,只有永远的利益。

1、Symbian平台的Google Sync配置
对于基于Symbian平台的Nokia S60、Nokia  Standard、Sony Ericsson的支持机型,是基于Syncml协议来完成,关于Syncml可以参考后面的介绍。
以N95为例子,配置步骤如下:
1、选择“功能表”->工具->同步处理
2、选择选项 -> 新同步情景模式,填写如下选项
同步情景模式名称:Google Sync
点击“应用程序”,进入设置,填写如下内容
名片夹 是否同步:是 远程数据库:contacts ,注意必须正确拼写 同步类型:双向,可以根据需要选择双向、仅到服务器、仅到手机,具体参考后面的syncml的7种同步方式。 按照官方说明,目前Symbian平台似乎只支持都通信录的同步,因此只需要配置名片夹选项,
3、连接设置
服务器版本:1.2 服务器识别码:Google,注意是大写的G 数据承载方式:互联网 接入点:选择用户定义 -> 移动梦网 主机地址:https://m.google.com/syncml (注意为https) 端口:443 用户名: Gmail帐户名(格式为userid@gmail.com) 密码: Gmail密码 其他选项保持不变 4、点击返回,返回到同步处理界面(选择功能表 -> 连接功能 -> 同步处理) 5、选中Google Sync,开始同步

2、Windows Mobile平台Google Sync配置
对于Windows Mobile平台的支持机型,配置方法如下:

1、打开ActiveSync

2、点击“菜单”->添加源服务器

3、在“输入电子邮件地址”步骤,输入Gmail的电子邮件地址(不要选中“尝试自动检测Exchange Server设置”),点击下一步

4、在“编辑服务器设置”步骤,输入服务器地址m.google.com(选中“服务器需要加密的(SSL)连接”),点击下一步

5、在“用户信息”步骤,填写用户名字段(userid@gmail.com)、密码字段,域字段为空,选中“保存密码”,点击下一步

6、在“编辑服务器设置”步骤,选中要同步的数据,点击完成,开始同步操作

3、其他平台同步配置
对于iPone平台,Google Sync采用了Microsoft Exchange ActiveSync协议,同步设置方式可以参考Google的官方帮助
Sync: Set Up Your iPhone or iPod Touch
对于BlackBerry平台,Google Sync有单独的客户端,可以从用手机访问地址http://m.google.com/sync,然后下载Google Sync客户端,配置后进行同步。具体使用可以参考
对于Motorola、Samsung、天宇(包括一些山寨机)的一些支持Syncml的机型,也可以按照类似步骤进行配置。 Motorola支持Syncml的机型:A1200、A728、A760、A768i、A780、E2、E6、L6、L7、U6、V3、V300、V303、V360、V3i 、V600、V8、Z3  Samsung支持Syncml的机型:SGH-D508、SGH-E728

Google今天推出了强大的Google Sync,如果你在使用Google Contacts或Calendars又有一台智能手机的话,它可以让你的iPhone,Symbian,BlackBerry和WM系统进行信息同步。 可是非智能系统就不能享受Google Sync了吗?非也!只要你的手机支持SyncML协议,就可以通过设置使用Google Sync了!除了Google提及的智能系统外,还支持如下型号:

诺基亚 Symbian S60 第三版 (如 E系列,N系列,6120,6121)
诺基亚 Symbian S60 第二版, Feature Pack 2 or higher (如 6630, 6680, N70, N90, etc.)
大部分索尼爱立信手机

以索尼爱立信的K790c为例(由于不是智能手机无法截图,请见谅):

1. 打开菜单(Menu)——按0或进入管理器(Organizer)——同步(Synchronization)

2. 点击“添加新帐户”(New account),并起名为Google Sync

3. 按照如下填写:

服务器地址: https://m.google.com/syncml (注意为https)
用户名: 你常用的Gmail帐户名
密码: 你的Gmail密码
连接: 选择你常用的Internet接入点 (cmwap应该不可以)
应用程序: 只选择“联系人”,然后确定
程序设置: 打开“联系人”在“数据库名称”中输入:contacts (全小写),其他留空
同步周期: 自定义Google Sync的同步周期间隔
其他留空并保存

点击保存退出,选择刚建立的Google Sync配置文件点击“开始”,即可与Google Contacts同步,然后进入Gmail里的“联系人”,即可看到你的电话本了。

http://nokia.it168.com/thread-942767-1-1.html

分类: 技巧 标签: ,

Test: 在C程序中集成LUA

2010年7月8日 没有评论
No Gravatar

虽然一直对LUA感兴趣,可惜是一直以来对它的兴趣集中在WOW插件上,而且只是使用。因为它在WOW中的精彩,我非常想尝试一下建立一个类似的环境。昨晚做了个很容易查询到的例子,在Ubuntu Linux 10.04下编译通过:
文件清单:
1. test.c


#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"

int main()
{
    int s=0;

    lua_State *L = lua_open();

    // load the libs
    luaL_openlibs(L);

    //run a Lua scrip here
    luaL_dofile(L,"foo.lua");

    printf("\nI am done with Lua in C++.\n");

    lua_close(L);

    return 0;
}

2. foo.lua
[code language="lua"]
print("I am using Lua from within C")
[/code]
编译过程:


gcc test.c -I /usr/include/lua5.1 -llua5.1

执行結果:


I am using Lua from within C

I am done with Lua in C++.

今晨的球,德国0:1西班牙。再看百度贴吧中的预言:

我来自不远的未来,我知道很多人只会把我的话当是个玩笑,我愿意先给大家一点事实的证据。

我给出的的证据很简单,目前世界最关注的世界杯,决赛双方将是荷兰和西班牙,荷兰2:1战胜了西班牙,斯内德和另一个你们猜不出的替补球员进了球。希望我的这番话不要在世界杯决赛前传到南非,否则我担心球员心态受影响,从而改变了历史。

一个月后我会回来,那时候希望你们愿意相信我的所有关于未来的话!
贴吧原址
截图:
如果Android处理LUA足够快,我愿意做一个预言者。
参考:
1. How to embed Lua 5.1 in C++

分类: Coding, Linux, Ubuntu, 技巧 标签: , ,

Switch to our mobile site