为什么我的Google Map Marker在安卓手机上无法点击?

这两天搞了一个查询大温地区公交信息的网页应用,用了Google Map的JavaScript API来显示用户附近1.5公里以内的公交车站,用户点击车站图标后会有infoWindow弹出来显示公交站详情。

说来有点讽刺,在电脑上、各种iPhone以及Windows Phone上测试都没问题,唯独在Google自家的安卓系统访问网页时,地图上的公交图标是无法点击的。网上搜了一下,最近一篇类似的求助文章发表在4年前。情况不同的是,当时有开发者反映,只有iOS设备在使用Google地图才会有无法点击的问题。我照着大家提供的方法把Marker设置成draggable后问题解决,但我还是不能忍受允许用户随意拖拽图标。

抓耳挠腮想寻求更好的解决办法时,无意中看到了自己网页中的js请求url是下面这种,

https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap

网上有的示例代码会在url中加”v=3.**”,而有的用了”v=2.**”,会不会是版本问题?

于是研究了下Google官方文档在不提供版本变量时,他们会默认提供最新非正式版本(目前是3.exp)。有问题的就是这个版本,我定义了v=3.23后问题解决。不用设置draggable也可以了。

Advertisements

如何自定义 custom post type 的permalink

在WordPress添加custom post type之后,默认的permanlink组织形式是

http://example.com/post-type/post-name

如果想改为

http://example.com/post-type/%post_id%

应该如何做?根据网上搜到的教程,下面这段代码(以post_type=”business”为例)帮我实现了想要的功能。把它放入主题文件夹的functions.php或者专门新建一个插件都可以。插件激活之后要去访问一下后台permalink的设置页,不然新的permalink链接会有“页面无法显示”的错误。

[php]
add_filter(‘post_type_link’, ‘ct_post_type_link’, 1, 3);

function ct_post_type_link( $post_link, $post = 0 ){
$post_type = $post->post_type;

if ( $post_type == ‘business’ ) {
return home_url( "/$post_type/" . $post->ID);
}else {
return $post_link;
}
}

add_action( ‘init’, ‘ct_rewrites_init’ );
function ct_rewrites_init(){
add_rewrite_rule(
‘business/([0-9]+)?$’,
‘index.php?post_type=business&p=$matches[1]’,
‘top’ );
}
[/php]

如何将Array里的空值过滤掉

快速将Array里的NULL, FALSE以及空字符去掉,但同时保留0值,可以用array_filter,以”strlen” 为callback

$result = array_filter( $array, 'strlen' );

如果只需要将Array里的NULL去掉,保留FALSE以及0值,可以用array_filter,以”is_not_null” 为callback

$result = array_filter( $array, 'is_not_null' );

wp_signon之后$current_user仍然为空的解决办法

最近在和国内的团队开发温哥华知道的安卓版本,有个问题困扰了我挺久。今天查出了原因,也学了一点小东西。

由于这是一款新闻资讯应用,开发后端时就借用了WordPress的框架。一来方便小编写文章,二来WordPress出色的模块如标签系统、用户系统、评论系统等,节省不少开发时间。

国内的团队反映用户登录后进行操作时,总是遇到用户未登录或登录过时的错误。使用同样的数据发送请求,我们这边却没有任何问题。

登录使用wp_signon(),var_dump($current_user)时就是已登录用户的详情。国内团队反应$current_user是空。我在使用wp_set_current_user()将登录用户设为$current_user后,问题就解决了。

才怪!哪有那么容易…今天温哥华这边快下班了,国内刚起床的弟兄们试了一下,登录是成功了,但用户进行登录后的操作时依然提示登录过期。

在公司使用Mac机,由于使用Postman未能重现问题,我回家用自己的PC下载了他们使用的Fiddler,终于知道问题所在:应该是cookie的问题。用户登录后,服务器会返回一个wordpress_logged_in_******的cookie,我在手动添加cookie发送新的请求时,问题迎刃而解。和国内团队沟通,才知道他们在客户端并没有保存cookie。

客户端保存cookie信息,每次用户进行登录后相关的操作时,后端可以通过WordPress function wp_set_auth_cookie() 来延长cookie有效期,这样用户也不用一再重复登录了。

同时为iOS和安卓提供后端服务支持,这也让我学了不少东西。iOS下运行正常的接口到安卓时,还得进行部分调整。以后再做类似的事情时也就少走一些弯路了。

 

心中烦闷不已,忽然就想起了这句歌词。半夜睡不着,爬起来写点东西。

我人生的第三个十年在温哥华度过,也结识了不少新朋友,但要让我找一个掏心窝讲烦心事的人,还真找不出来。不是我不把我周遭的朋友当朋友看,而是觉得和大家没有到那种可以和人家叨逼叨吐苦水的地步。以前无话不说的故乡伙伴们,也因分别得太过久远而联系渐少。再加上生活环境的差异太大,能聊得来的话题也越来越少。

人活一辈子,最难的事莫过于认清自己吧?我一直自认是一个有责任心,不管对工作、生活还是对家庭、婚姻都还算愿意付出十分努力的人,但不知为何总觉得压力越来越大,以至于我现在不知应该是要对生活绝望,还是要对自己绝望。这种不安的感觉与日俱增,这难道就是而立之年应该有的状态么?

很怀念自己刚到温哥华时,那段虽然辛苦但很单纯快乐的日子。那时的我住地下室,但依然觉得阳光无比灿烂,每天和室友的集体生活也温馨美好。那时的我喜欢畅想未来,想着自己在温哥华五年、十年以后的生活。现在的我,身处于当时的“未来”,却不知道自己现在是否还如当初所想那样。

越长大越孤单 越长大越不安

也不得不看梦想的翅膀被折断

也不得不收回曾经的话问自己

你纯真的眼睛哪去了

越长大越孤单 越长大越不安

也不得不 打开保护你的降落伞

也突然间 明白未来的路 不平坦

难道说 这改变是 必然

在有中国人聚居的英语国家,碰到中国人互相讲奇怪的英语是常有的事。在我居住的城市Richmond,有多达一半居民为华人。几年前有次在一家超市的停车场听到两个华人用英语吵架,内容让我到现在都记忆犹新。

当时是周日下午,我开车到市中心的佳廉超市(PriceSmart)买东西,停车场车满为患,一位难求。我好不容易找好停车位,下车走向超市入口时,发现入口不远处有两个亚裔面孔的车主因为争一个车位而吵得面红耳赤。走近一听,其中一个大妈应该是香港人,讲一口标准“港式英语”,而另一个小伙儿一听口音就是北方人。俩人都知道对方是华人,但出于某种默契,一直用蹩脚的英语表达着一些愤怒的情绪。

大妈嚷嚷了一会儿,忽然大喊了一句“Go back to your China”,结合当时的语气,翻译成中文应该是“滚回你们中国去!”(很多香港人不认为自己是中国人)

小伙儿也不示弱,回一句“Say hi to your mother!” 这个非常有中国特色,文明点翻译是“替我问候你老母”,说得通俗点就是“ * 你妈的”。不知道旁边的老外听到这句话做啥感想,不过大妈立刻心领神会,反应也挺快,马上接一句“Say hi to your grandma!”就开车走了。

虽然早在3月就成功登陆并拥有了加拿大永久居民身份,但今天终于拿到了枫叶卡,心里的石头终于算是落地了。这是今年到现在最让我开心的一件事,没有之一。值得小庆祝一下。

想起自己刚来加拿大那时定的计划,一路走来虽有坎坷但最终也磕磕绊绊一步步实现了。人生的路还很长,加油吧!

7BDEBA6715BFBB1ABE3B7BDC755983D8_meitu_1

SSH连现时出现「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」解决办法

上周开始试着使用Linode,第一次新建了一个CentOS 7系统image后不知道在装LAMP时哪步出了问题,所以就重装了一下系统。结果在SSH连接时出现如下错误:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is

会出现这样的错误是因为,第一次进行SSH连接时,电脑会生成一个认证储存在客户端中的known_hosts,但如果服务器重新装过以后,认证信息相应地也会发生变化。服务器和客户端的信息不匹配时,就会提示错误。解决办法就是将know_hosts文件里那个无效的记录删除。

Mac系统用户在终端输入
nano ~/.ssh/known_hosts

Windows系统PuTTY用户要在注册表里找如下信息:

HKEY_CURRENT_USERSoftwareSimonTathamPuTTYSshHostKeys

昨天在美食广场买午饭时,听到前面的一哥们跟店主说:“我喝可乐不用吸管,吃牛肉面不喝汤”,说着把店主递给他的一次性勺子和吸管还了回去,只拿了一双筷子和一张餐巾纸就端着热气腾腾的牛肉面走了。这让我想起来之前经历的一件事让我感受到了出国以后对一些东西看法的转变。

5年前我还在送餐的时候(送餐真的是让我经历了不少文化冲突)。我当时打工的日餐馆在温西,那里是温哥华房价最高的地方,寸土寸金,所以相对来说那里的居民收入水平也相对高点。餐馆有几个每周必点外卖的老客户,给小费很大方,见面打招呼也非常和善的那种。我送餐时间长了,发现很多老顾客都在抱怨我们给的寿司酱油和筷子纸巾给太多。我心里还暗自不理解:“多出来的餐具又没问你要钱,抱怨个啥劲儿么。”

餐馆很忙,即使客人在打电话叫外卖时一再强调只要两双筷子两小袋酱油,忙得七手八脚的服务生在打包时才不管那些呢,一把筷子四五双,一把酱油也有四五袋就直接扔进去,包起来了。

有一次,送餐到其中一位老顾客家时,主人说你稍等一下。

一会儿,他从厨房出来,拎了一大袋的一次性筷子和一个装满了袋装酱油的保鲜袋。他说:“每次让你们少给点餐具,你们都不照做!看看这半年来你们光在我身上就浪费了多少东西!这些筷子和酱油我都没用,给你拿回去吧。告诉你们老板,小本经营,这些开支能省就得省啊!”

我说“这些东西你买外卖时已经为它们付过钱了,就留着呗。”

他说“但我留着根本没用啊!还不如你们拿回去用呢!”

他的话给我带来的震撼着实不小。我从小接受的来自长辈和社会的教育就是“不拿白不拿”,在外面吃饭,老板多给了餐具,餐馆发了打火机和火柴,我付了钱在这里吃饭了,不拿白不拿啊。住酒店,酒店提供多余的一次性牙刷牙膏,虽然质量不怎么样,但我在这里花钱住宿了,不拿白不拿啊。结果家里各个角落到处都是来自各个酒店的打火机和火柴,卫生间抽屉里放着10多年来攒到的牙膏牙刷,牙膏已经硬到挤不出来了,牙刷的塑料柄因为放太久已经脆到一掰就断的地步。仔细想想如果所有人都这么做,真的还挺浪费的。

“不拿白不拿”的做法没什么不对的,因为我们是为这些东西付了钱的;但如果有的东西我们拿了也是白拿,那就还不如留着让它们发挥原有的作用。

当初就这么感慨了一下这件事就过去了,其实现在想起来,其实车里备点筷子和酱油,客人需要几个就给几个。一个简单的改进就很好地解决客人抱怨的问题(只是会不会被另外一些客人抱怨太小气,连个筷子都要计较呢?服务业就是这么纠结)。