我看过的书:
-
近期文章
近期评论
文章归档
友链
链接表
分类目录
功能
作者归档:allenm
chrome.tabs.create 的 callback 不执行?
在写 chrome 插件的过程中,不知道你有没有遇到使用 chrome.tabs.create 创建一个新的 tab,但是这个方法的 callback 却不执行,具体说来,在调试的时候是可以执行的,关掉 chrome 的 DEBUG 工具后,就不可以了。 前几天我也遇到了这个麻烦,可能出现这种问题的情况为:在点击浏览器上插件的图标后,打开一个 popup 的页面,在这个页面里点击某按钮后执行 chrome.tabs.create 方法新建一个新的 tab 页,关掉 DEBUG 工具后,此方法的 callback 函数就无法执行。 我们先来观察这种 popup 的页面的行为,随便找一个会 popup 页面的扩展,点击,让页面弹出,然后你切换下浏览器上已经打开的 tab 页,看看发生了什么?是不是这个 popup 出来的页面会关闭掉?然后在那个扩展上右键,选择“审查弹出内容”,再切换下 tab,发现了什么?是不是这个弹出的页面依然打开? 这就是问题所在了,默认情况下,chrome.tabs.create 创建新的 tab 后,会自动切换到那个新建的 tab,在不打开 DEBUG 工具的情况下,原先弹出的页面会关闭,也就是被 … 继续阅读
Hello,2011
2011年的第一天马上就要结束了,和以前一样,现在要做个2010年的总结和对 2011 的展望。 2010年,角色发生了较大的变化,离开了学校,开始了工作。从头开始回忆2010发生的一些点点滴滴吧。 2010年一月份,开始做毕业设计了吧,是一个Android程序,拿到了导师买来的智器Q5,这个算是第一次和Android亲密接触。虽然这个MID很差劲,但是刚拿到手的时候还是觉得很好玩。为了完成毕设,开始看Android的开发文档,开始学习JAVA。同时,因为已经签了前端的工作,而2009年才开始走上前端这个路,所以基础还差的远,所以也利用在学校的这段时间多看看书,买回来了 《javascript 权威指南》,开始看这部大部头。 二月,应该是过年的时候吧,洗澡的时候发现肚子越来越挺了,是该要注意自己的饮食了。同时,寒假的空余时间比较多,可以用来专心看权威指南,在寒假看完了这本书,收获颇丰。 三月-五月,来到了杭州,开始了我的实习生涯,很庆幸有个非常和气的导师,和一群非常热心的同事,这段时间是我感觉进步最快的时间,在师父和同事,特别是邻座的同事的帮助下,从一个菜鸟,到可以独立完成任务。 六月,回学校搞毕设,以及和大家道别。毕设最后我没选择 JAVA,因为对我来说,这东西太不熟悉,用的很别扭,于是,就使用了 PhoneGap 这个框架把 WEB APP 封装成原生 APP。然后很轻松的过了毕设,而且拿到了较高的分数,只是这个时候,什么分数对我来说都是浮云,我只想和大家过完最后一段时间。 六月,是个伤感的季节,喝酒,叙旧,谈自己的心里话,虽然知道有讲不完的话,但是还想尽量多讲点,因为大家都知道以后再见就不容易了。一群爷们,晚上在楼道喝酒,可以喝的个个都嚎啕大哭,大家这四年都有遗憾的事情,大家都有很多事情没来得及,可是,哥们们,人生不可能完美,这我们都知道,擦干泪水,让我们都好好努力吧。 毕业总是有太多太多想说的,一直到最后一天,大家拥抱,挨个送别,知道吗?坐上出租车从学校走的时候,心都要碎了,真想时间能停下来,让我再看看这个学校,再看看这里每个可爱熟悉的面孔。现在回想起来,还是鼻子一阵酸,这是我人生最难忘的回忆。这里也有三篇纪念文(1,2,3),相信多年后,翻起来看看,颇有意思。 七月,正式入职了,入职培训,拓展训练是给我印象最深的东西,也给了我很多感触,我也专门写过一篇博文。 八月到年末,不断的做需求、项目,然后慢慢的成长。中间在方凳会上分享了3次,这些都是非常高兴的事情,不过分享质量有待提高,以后我也会准备更精彩的内容和大家分享,我喜欢这种氛围,并愿意去为之做点事情。 夏天,和小帅和袁帅见过两次面,在这么远的地方和朋友见面是一件很高兴的事情,尤其是在这个城市,没有一个以前的朋友的时候,这种感觉更是强烈。 十一的时候,苗苗也来杭州玩了,也是同样的感觉,而且特容易勾起关于学校的回忆。元旦,苗苗也在杭州,3号去见面。 最后两个月,获得了提前转正的机会,然后又在 2010 年最后几天,从现在的运营组调到平台产品组。这些都是对我的信任,其实我自己知道,自己的能力还很不够,但是我会一直努力让自己去提高的。这次换组,对我来说挑战蛮大的,新的小组做的产品比运营组做的产品会复杂很多,不过我喜欢这些挑战。 2010年,没有什么积蓄,也只买了一个手机,算是比较大件的东西,开始体会到了生活的不易。 2010年,依然木有女朋友。 好了,该说说我期望的2011 了。 先说说工作上,我依然要在前端开发这条路上走下去,要去学习更多的东西。在这一年,不止从工龄上不再是新人,从能力上,也要摆脱新人,调整好心态,和团队共同进步。同时,要慢慢学会高调做事,低调做人。现在做事和做人都蛮高调 ,要改改了。 工作外的事情: 买一台新笔记本,现在这台差不多不能用了,最好是 MAC。 要有一些积蓄,改考虑考虑以后的生活了,不能像现在这样月光,以后怎么样都懒的想。 多读一些书,不仅仅是技术类的,社科类的也要多读。 多锻炼身体,每周至少一次(是的,我知道很难,但是我就是要写出来提醒自己) 每月至少两篇技术博客,多做分享总是对的。 能获得自己想要的感情。 … 继续阅读
使用SVN hook 让前端BUG少一点
你有没有发生过,发布的代码中含有 console ,然后在 IE 下报错?或者代码中有调试用的alert,用户点击某个东西后,就会弹出来? 这种错误 ,我相信前端开发者或多或少都会犯,要避免这类的BUG ,需要非常非常小心,但是人总会有疏忽的时候,这样的事情交给机器办比较合适,因为机器会按照指定的规则来检查你提交的代码,每次都完全按照规则来。 版本管理软件一般都有预置的hook,我们可以写一些脚本在我们对代码仓库做操作的时候来执行,这里,我将给出一个 TortoiseSVN 可以使用的 client side hook 脚本来做这种检测。 这个是目前我在实际生产环境使用过一段时间的,因为我们这里使用的 SVN 做版本控制,SVN 标准只需要 server 端实现 hook script,客户端不需要,由于大公司server端不那么容易去更改,恰巧 TortoiseSVN 实现了 clientside hook ,那就用这个来实现吧。 按照官方文档给的 pre commit hook script 修改而来,使用前,先要检查你的windows 是否用 WScript 关联了 .js 文件,绝大部分前端开发人员都关联了某个编辑器吧。 检测方法:随便新建一个 … 继续阅读
阿里巴巴中国站大力招聘前端工程师以及视觉、交互
欢迎各位自荐或者推荐,简历请发送到 i [at] allenm.me, 下面是各职位的 JD 地点:杭州 前端开发工程师: We build the web, making the world and ideas in our dream come true. 职位描述: 1、根据产品原型开发前端代码, 并配合我们的后端工程师完成后端数据的接口; 2、解决主流浏览器及其不同版本之间的兼容性问题; 3、优化网站的前端性能, 保证网站的高质高速; 职位要求: 1、熟悉掌握各种Web前端技术基础: (x)HTML、CSS、JavaScript、ActionScript等, 有JavaScript|| ActionScript高级应用经验的尤佳; 2、理解Web标准,对可用性、可访问性等相关知识有实际的了解和实践经验; 3、了解一门后端语言(如Java、PHP、C++、Python、Ruby), 并能将其和前端语言进行配合; 4、个性乐观开朗, 思维逻辑性强, 善于和各种背景的人合作; 5、专业不限,其中计算机、数学、自动化等相关专业优先考虑; 6、富有创业精神, 充满激情, 乐于接受挑战. 在以上要求基础上,有以下任意一点将优先考虑: 1、参加过开源项目 2、喜欢混迹各大技术社区,并有自己的声音 3、互联网重度使用者 4、了解相关前沿技术 如果你有 twitter, facebook, 个人blog 等一些社会化的东东,麻烦告知我们,另外可以告诉我们为什么要成为一名前端攻城师 如果你想更多的了解我们,可以登陆我们UED的博客:www.aliued.cn 交互设计师: 职位描述: 参与网站产品前期的规划构思,完善产品概念。 根据产品需求制定交互方案,输出产品原型和设计说明文档。 对产品进行持续的设计优化,提升用户体验。 职位要求: Nice,open,有同理心,擅于换位思考,对新鲜事物充满好奇,擅于发现。 对交互和用户体验设计有深刻理解,具备自己完整的知识和理论体系,掌握基本的UED设计方法。 2年以上互联网体验设计经验,熟悉网站设计流程,至少独立完成过一个大型完整项目中的交互设计工作。 具备较强的逻辑思维能力和表达沟通能力。擅于说服和达成共识。 丰富的知识和阅历,对用户习惯有研究,具备一定的设计前瞻性。一定的视觉设计和html技能。 工业设计、计算机、视觉传达、心理学、信息学相关背景;资深网虫。 … 继续阅读
chrome extension的content script 无法读取页面中的iframe内容的解决方法
chrome插件中的 content script 是运行在一个被称为isolated world 的运行环境里,和页面上的脚本互不干扰,因为不在一个运行环境里,所以也无法调用页面上脚本定义的方法了,当然google也给出了解决方法:http://code.google.com/chrome/extensions/content_scripts.html 除了这些以外,在最近写插件的过程中,发现content scirpt 也不能读取到页面中的 iframe 内的内容(同域),这个被人报告为BUG,也许会在以后的版本中解决。当然,你可以通过设置manifest 中的 all_frames = true,来让脚本在 iframe里也运行。不过更简单的方法是,载入外部脚本到页面。 chrome插件有权限更改页面的DOM(如果这都没权限,这个插件系统也就没什么用处了),所以我们只要往页面中插入script节点,引入自己写的脚本,这个脚本的运行环境就和页面中的脚本是同一个环境了,于是页面中脚本有权限做的事情,我们自己写的脚本也有权限做,当然这样做一定要把自己的脚本放在一个大的闭包中,以防和页面上的脚本冲突。这样插件中的脚本就相当于一个加载器,只用做在页面中加载自己写的脚本就可以了。 这样做还有一个好处是,我们可以轻松移植这样的插件到 firefox 下的 greasemonkey 的 user script 中,也可以轻松制作成 Bookmarklets,也就是可以很方便移植到各种浏览器下。
Magic canvas & PNG
用 canvas 配合 PNG 可以做出什么好玩的东西呢? 昨天阿里中文站的方凳会,我为大家分享了这个主题。这是我第一次在方凳会上做大分享,也算迈出了这一步,以后会努力多在这个舞台上表现。 主要讲了运用 canvas 来做动态 favicon 和用 PNG 来打包字符串(js) 然后前端通过 js 对这个图片解码。 PPT 在 http://share.allenm.me/fd/ ,有兴趣的同学可以来看,我就不在这里重复一遍内容了。
adb通过wifi连接 milestone
如果你有安装 Android SDK,应该会知道有一个 ADB 工具,这个工具可以在命令行下控制、调试你的Android 设备,这个工具不仅支持通过 USB 链接,而且可以通过 TCP/IP 来连接,也就是说不需要数据线,通过 wifi 就可以连接了。但是在默认情况下,是无法连接 milestone的。下面来讲怎么设置通过 wifi 来连接ADB。 第一种方法: 在菜场里找一个Android 的终端工具,我用的是 Terminal Emulator ,然后在终端里,依次输入 setprop service.adb.tcp.port 5555 stop adbd start adbd 然后,在你的电脑(WIN/LINUX) 里命令行启动 adb,输入 adb connect your-phone-ip 手机的 ip 地址可以安装 NetInfo 这个 android软件查看。 … 继续阅读
SyntaxHighlighter 3.0.8 重复加载 brush 的解决方法
我使用 syntaxhighlighter 来做我的博客代码高亮,使用 autoloader 来自动加载需要的 brush。但是使用后,发现,如果页面中存在两个地方使用相同的 brush,这个 brush 文件会被加载两次。如果电脑中有缓存只会加载一次,但是第一次访问的用户,是会加载两次的。这个应该算是BUG吧,等会儿我尝试反馈给作者试试看。 于是我稍微修改了下 autoloader.js 的源码,现在不会加载两次了。源码放在 http://api.allenm.me/syntaxhighlighter/src/shAutoloader.js ,需要的来拿。注意,处了这个文件在 src 下面放着,其他文件有使用 scripts 文件夹下的,要不然会报错。 中秋节的3天假期马上就过去了,我算是一直在玩,一直在放松。第一天去看了山楂树之恋,打了电玩,吃了火锅。第二天约了朋友来我这里做饭吃。第三天就在家宅着,蛮不错的,明天上班应该精神十足,然后再等待十一假期。目前还没有十一假期的安排。
发表在 javascript
一条评论
使用google closure 压缩合并 js 文件的 python 脚本
google很早就推出了 google closure ,但是是JAVA的,你需要安装 JAVA的运行环境、配置等等。另外虽然google 也推出了WEB版的closure,但是用起来也是比较麻烦的,操作步骤比较多。如果你想使用 google closure,又懒得配置,又喜欢命令行的方便,现在有了另外的选择,google closure 提供了 API,这样我们就可以用其他的方式来压缩合并文件了。 我根据google 的python 事例,做了一些小修改,来方便压缩合并文件。这基本上算是我第一次写python,并放出来让人使用,python我只懂皮毛,大家看了代码不要笑话我。 项目地址:http://github.com/allenm/js-css-compressor 使用方式详见README 目前默认压缩级别是:SIMPLE_OPTIMIZATIONS 将来会有选项让用户选择压缩级别。 另外项目名称虽然是 js-css-compressor。但是目前没有 css 压缩的功能,因为 closure 不提供CSS的压缩,这个将来我会使用其他方式实现。 我把这个脚本放在VPS上来压缩合并我博客上的JS文件,准备一步步的优化这个博客的性能,拿这个作为试验田。 欢迎给我提意见和建议,联系方式在博客的About me 页面。
博客域名更改通知
本博客的域名 http://allenm.cn 正式更改为 http://allenm.me。 请RSS订阅的用户更改订阅地址: 使用 feedsky 烧录后的RSS地址的用户不需要更改,feed地址仍然为http://feed.feedsky.com/allenm 直接订阅的用户请更改 feed 地址为 http://allenm.me/feed/ 或者更换为上面 feedsky 的地址。 目前访问 http://allenm.cn 会自动跳转到 http://allenm.me 已经做了域名 301 跳转。 博文中的某些链接可能已经失效,如果有需要者可以联系我。
