2024 元旦: 2024 到来了,时间过得飞快,转眼已经毕业十年了。

2023-12-17: 五线小县城平淡而悠闲的一天 。

umi中使用 sass 的相关问题: umi 中默认的 CSS 预处理器是 less,less 比 sass 有太多优势,至少完全由 JS 实现就领先了很多。

在 Docker 镜像构建阶段设置用户来避免文件权限问题: 在我的所有个人应用都使用 Docker 来构建及部署之后,我的服务器管理确实方便了不少,不过也遇到了一个问题,就是文件权限的管理。

第 25 届亚洲宠物展: 2023年,很多大型活动得以恢复,喜欢宠物的人期待的亚洲宠物展也恢复了,是我在炎热的夏季中最期待的一个展会。

umijs 架构下在 root 节点外加载外部 qiankun 微应用: 通常来说,要在 umijs 中加载一个外部 qiankun 微应用,只需要在 .umirc 中配置好对应的 app,然后使用 umi 内置的 MicroApp 加载微应用即可。

将 pinboard 的 JSON 数据转换成标准的 netscape 书签数据: 我的书签都是存放在 espial 应用上,他的导出功能只能导出兼容 pinboard 的 JSON 数据,但是大部分书签应用支持的都是标准的 netscape 书签数据,就是常见的 .html 类型的书签数据。

React 在 useEffect 时会捕获所有 state 的状态: 在接触到 useEffect 的依赖时,很容易产生一个误解,就是 state 必须在依赖中,才能获取到正确的值,但这实际是是错误的理解。

嵊泗 2 日游: 早上 7 点从上海出发 早饭比平时吃的多一些,因为上午行程非常长 沈家湾码头坐船到泗礁岛 沈家湾码头在洋山港的最远端,离上海市区非常远 没有买到车船票,因此坐普通客船出发 很多年没有坐船,虽然天气不好,还是有些兴奋 准备了晕车贴,但发现我们都不晕船 到达泗礁李柱山码头 提前租了车,工作人员把车开到码头,自助取车,非常方便 先到镇区吃饭 靠近码头和镇区的地方相对平坦,路面坡度比较小,租了排量比较大的车,车况还算好,可以应对 午饭在一家大众点评排名靠前的海鲜面疙瘩吃,除了招牌海鲜面疙瘩,另外点了一份花蛤 海鲜面疙瘩更接近炒制的做法,分量很足,可能是因为海鲜都很新鲜,味道也不错,价格比起上海要便宜一些 出发前往泗礁最著名的景点,东海五渔村 开发成旅游景点之后,渔村外围经过了装饰改造,增加了海洋、海洋生物相关的元素,很醒目 渔村内以售卖海鲜产品,经营农家乐、民宿为主,但是和其他比较大的旅游景点相比,特点是当地人的生活很大程度上保持了原状,因此海边渔村的氛围很浓 渔村旁的沙滩比较小,想要捡一些冲到沙滩上的东西,但是基本已经被清理过,没发现特别的东西 天气不好,因此没有体验特色的出海捕鱼的旅游项目,有些遗憾,在不远处的海面上可以看到渔船 前往下一个景点-六井潭 往岛的东部走基本都是山地,路比较窄比较曲折 六井潭最著名的应该是白色灯塔,配合海景适合拍照,可惜天气不好 看到了巨大椅子形状的石头,被称为龙椅 六井潭并没有看到,据说有六个水潭 在白色灯塔处和女朋友一起拍了不少照片 泗礁岛所处的海域泥沙量依旧非常大,因此海水并不是蓝色,更接近绿色,靠近岛屿的海水还有些浑浊,但在六井潭周围的海域能看到比较蓝的海水 然后前往和尚套 和尚套离六井潭并不远,事实上整个泗礁岛都不大 在前往六井潭以及和尚套的途中经过了海岸公路,天气好的时候应该非常漂亮 和尚套据说是为了纪念鉴真东渡,结合之前几次旅游经历,我们已经打卡过多个鉴真东渡的地点,非常有缘 景点内有一个观景平台,视野非常好。

扬州 3 日游: 早上 8 点从上海出发 原本预计 11 点能到扬州,路上车流稍多,等到达扬州市区的时候已经 12 点了 午饭选择了扬州最著名的饭店,扬州宴 淮扬菜的名气不需要多介绍,作为国宴的标准菜式,淮扬菜应该是江苏地区最著名的菜式 淮扬菜中一定要吃的肯定是清炖狮子头 总体上觉得很不错,符合我们对淮扬菜的认知,口味也适合我们 前往第一个景点,大明寺 大明寺是很奇怪的一个景点,名气并不小,但是存在感有些弱,很多时候都忘了扬州还有这个景点 住宿的地方离大明寺很近,步行前往 从寺院结构来说,总体上和其他的没有太大区别,不过寺内区域很大,有一些历史人物相关的建筑 鉴真是寺内很重要的一个纪念人物,有他的事迹介绍、各种真迹,还有相关的文艺表演;扬州是鉴真六次东渡过程中一个很重要的地点 在钟楼撞了钟,在塔顶拜了佛,据说塔顶的舍利子是释迦摩尼的真迹 寺内的樱花开得很好 学到了代表过去的燃灯佛祖,代表现代的如来佛祖,以及代表未来的弥勒佛,还有其他代表健康、事业的佛祖菩萨 游历完大明寺,接着前往瘦西湖 瘦西湖毫无疑问是扬州最著名的景点,俗话说“晴西湖不如雨西湖,雨西湖不如夜西湖”,巧的是刚好下雨,现在雨西湖、夜西湖都看到了 景区内对夜游西湖的路线做了明确提示,跟着提示走,不用担心错过演出 瘦西湖比较特别的是,它内部景点紧凑,都很精致,与其他湖泊景点不太一样,人文景观非常丰富,配合各类演出,观感非常好 在其中一个景点等候演出的时候,路过的人剧透吐槽说“等了半个小时,来两个男的摇摇扇子走了,有什么好看的”,本来我们还不信,结果真和他说的一样,顿时感觉瘦西湖不好玩了 :) 一路上雨时下时停,也别有趣味 最后的水幕演出很有特色,介绍了扬州的历史文化 不过瘦西湖管理方似乎特别喜欢各种五彩灯光,五亭桥装了红绿色的灯光,感觉很奇怪,颜色搭配不敢认同 第二天本来想要早起体验扬州早茶,但是著名的茶楼都要非常早去排队,家人又起不来,就放弃了 第二天的首个景点是大运河博物馆 京杭大运河名气肯定比瘦西湖大,可惜它不算是一个景点 这天还是工作日,我们去博物馆的时间赶上早高峰,车还是比较多的,扬州其实也是一座大城市 京杭大运河历史悠久,扬州段又是其中最古老、最重要的一段,各种历史文物都保存得比较好,馆内的布置、设施比较现代化,确确实实感受到了大运河的历史价值 同时也介绍了大运河沿岸的历史文化,一起了解了扬州的历史 从博物馆出来,去到一家昨日出租车司机介绍的淮阳菜馆吃午饭 这家淮扬菜馆很特别,据说是某个淮扬菜传人的徒弟开的,店内还挂着师徒合影;一些很著名的淮扬菜它都没有,倒有一些家常菜,其中有一道淮扬小炒,做得非常好吃 下午首先去扬州一个有名的私家园林-个园 园内比较有特色的就是四季景观的布置,春夏秋冬四个区域按照季节特色设计,围绕中间主楼,足不出户就可以看到四季,很有意思 园子主人当时是扬州大户人家,因此园子后面住宅区域很大,宅院很多,顺便了解到很多扬州古代大户人家的生活 我们跟着其他旅游团队的导游,听到了很多讲解,感觉人文历史类型的景点,有没有导游讲解还是区别很大的 个园出来看时间还早,便去了汉广陵王墓博物馆 扬州作为历史古城,各种陵墓也不少 汉广陵王墓据说是首个被发现的采用“黄肠题凑”形式的墓葬,也算丰富了我们的见识 陵墓总是有种历史的厚重感,想到里面是 2000 年前的古人,总有种不可思议的感觉 陵墓很深,内部很冷,加上游客很少,还是有点怕的 博物馆内展示的陪葬品也很特别,平时很少能见到这个年代的物品,而且还是比较有价值的贵族物品 接着去了东关街 扬州的街道景点似乎是近些年才发展起来的,一定要比较的话,似乎和其他的古镇老街没什么区别 买了网红饮料,贴着扬州文字的竹筒奶茶,除去特别的包装,口味上没有特殊的 买了桂花糕,新鲜出炉,挺好吃的 买了几份黄桥烧饼,黄桥烧饼其实是扬州隔壁泰州的特产,不过距离不远,也可以说是当地特色了 东关街上的招牌写着还有不少其他老街(如皮市街),看上去都应该差不多 街的尽头是东关城门,是古代扬州城的遗迹 从东关城门出来已经快晚上了,刚好看到了运河码头,就去乘坐了运河景观游轮 游轮沿着运河行进,一路上看到了不少历史景点,有导游讲解,才能认出不同的地方 河上几座桥都进行了装饰,包括两岸沿河建筑,都安装了各色灯光,似乎扬州人特别喜欢五彩灯光 船上有扬州评话的表演者,是一位年轻的女性,讲了一段刘备到江东娶孙尚香的故事(著名的赔了夫人又折兵),以及一段关于厨师的笑话 扬州评话是扬州重要的文化传承,之前在扬州宴吃饭也有表演,对于这样的中国传统文化能够继续传承下去,我也感到很高兴 第三天我们并没有继续呆在扬州,而是去了无锡鼋头渚 早上出发赶到无锡,选了一家无锡本地菜的餐厅,结果后来发现上海也有 点了无锡特色小笼包、糖醋排骨 我对于无锡菜的印象是,“甜”,这一点似乎是共识,你在 Google 搜索无锡菜,出来的第一个结果就是“甜”。

2021年我学到了什么: 团队运营和人际关系管理 本来我想说是团队管理,但是后来想想这个话题太尖锐了,还是改成团队运营和人际关系管理好。

2021年阅读过的书籍推荐: 书是人类进步的阶梯。

2021年我买了哪些东西: 又到了年终总结的时候,我习惯于在春节期间来撰写一年的总结,毕竟对于我来说,这才是一年真正的结束。

Electron 的 Notification 在 Windows 系统下无法正常使用的问题: Electron 需要设置程序 appId 之后,才能正常在 Windows 下使用 Notification 功能 // windows 下需要设置这一项才能正常使用 Notification if (process.platform === 'win32') { if (app.isPackaged) { app.setAppUserModelId('My.App.Id') } else { app.setAppUserModelId(process.execPath) } } 开发环境下,可以直接设置为程序的 exe 文件路径(实际上就是当前 electron.exe 的路径)。

对 rollup-plugin-css-only 生成的 CSS 文件添加 hash 信息: rollup-plugin-css-only 目前还没有支持对生成的文件名添加基于文件内容的 hash 值,而这个操作在 Web 前端中又非常的常见和必要。

2020年我学到了什么: 记账 记账确实是一件令人头疼的事情,枯燥的重复性记录工作很容易就让人放弃了。

2020年我买了哪些东西: 其实我很少写年终总结,不过2020年确实特别的一年,值得记录。

在JS中用更现代化和优雅的方式进行金额的格式化: 今天介绍一种我已经使用了很长时间的,针对现代浏览器的金额文本格式化方法。

arm64 的 Mac 上面使用 fnm 的问题: 注:文中 mac arm64、apple silicon、m1 皆指代采用 Apple 自研芯片的 mac。

新一年代的思考: 首先向大家介绍一位我非常喜欢的 Web 前端工作者,hail2u,没错,一位日本友人。

guchengf.me stride towards Docker: 是的,guchengf.me 所有线上服务已经大步迈向 Docker ! 在即将进行下一次个人服务器搬迁的时候,我终于决定将现在服务器上所有的东西迁移到 Docker 内。

TypeScript 中的 Unknown 类型: TypeScript 3.0 中新增了一种 unknown 类型。

Angular LazyLoad Module 常见问题: 1. BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead. BrowserModule 在整个 Angular 应用中只需要引入一次,通常在 app.module.ts 中引入一次就好了,并且如果引入了 BrowserAnimationsModule 或者 NoopAnimationsModule 就不需要再引入 BrowserModule 了,前两个已经内部引用了。

i18n-render: https://github.com/gucheen/i18n-render tiny i18n solution for tiny projects. Design The i18n-render's structure is key -> translation dictionary. While the translation dict is locale -> text. In short, i18n-render take a key to get the translation dict, then get translated text with locale. Source Configuration const source = { example1: { en: 'I can eat glass and it doesn\'t hurt me.', fr: 'Je peux manger du verre, ça ne me fait pas mal.', de: 'Ich kann Glas essen, ohne mir zu schaden.', 'zh-CN': '我能吞下玻璃而不伤身体。

Mustang taillight spinner: 。

kitty 终端模拟器常见问题: Mac 下 terminfo 的问题(无法正确识别终端) 报错如: terminals database is inaccessible 修复方法: tic /path/to/kitty/terminfo/kitty.terminfo 这样就自动生成了 terminfo,位于 ~/.terminfo 下 SSH 无法使用 tmux 报错如: open terminal failed: missing or unsuitable terminal: xterm-kitty 修复方法 kitty +kitten ssh myserver 通过这种方式连接一次,SSH 就保存了 kitty 的信息,之后 ssh 就可以正常使用 tmux 了 。

The Long Way To Angular - Tabs 组件设计与开发: The Long Way To Angular(下文以 TLWTA代指)系列停更很久,现在考虑继续。

Debian 系统安装 Web CSS 可用字体的正确方法: 方法一: 如果你的字体在 debian 的软件源中直接有维护,比如 Noto Sans CJK,那就可以直接使用 apt 安装: apt install fonts-noto-cjk 方法二: 如果需要手动安装,可以将字体放置到 /usr/local/share/fonts,然后执行 fc-cache -fv(可能需要sudo)。

Webpack 下页面的 2x 图片解决方案: 随着现在高分辨率显示器(2K,4K)的普及,以及移动设备上屏幕的ppi的提高,网页上提供高分辨率的图片显得越来越重要。

Angular 中用 Subject 来做异步逻辑: 举一个例子,在 electron 的 renderer 中,使用 ipcRenderer 来做通信,为了效率起见,一般使用异步的 send 方法. 这种情况下,如果是应答式的通信,main 进程发回的通信是不方便在同一个逻辑中完成的(当然也可以在这里listen channel,但是实现起来很奇怪,并且逻辑也不清晰),因此一般都是统一管理。

Travis 中使用 Node.js child_process.spawn 时的一个文件权限问题: 最近开发一个 Node 的命令行程序,其中会用到 child_process.spawn 来创建子进程做一些事情。

Ubuntu 下 Firefox 无法正常播放 mp3(mpeg)音频的问题: 最近在由于某个开发的移动平台的工作环境变成了 Firefox,在一次重新安装了 Ubuntu 系统之后,mp3 无法正常播放,提示错误大致如下 Warning: Cannot play media. No decoders for requested formats: audio/mpeg 不管是通过是 <audio src></audio> 还是 new Audio() 的方式,都报出这个错误,最后总结出来三条解决方法: 安装 ubuntu-restricted-extras sudo apt-get install ubuntu-restricted-extras 安装 gnash sudo apt-get install gnash (一个 gnu 做的 flash 播放器,其中包含了浏览器插件) 这条比较容易忽略,虽然我也不明白为什么 Firefox 调用解码器还和 flash 有关。

SensibleSideButtons - MAC OS 下鼠标侧键功能完美解决方案: 一直以来,MAC 下鼠标的功能按键(比如侧键)都不能正常工作,罗技自己的驱动对鼠标型号的支持都非常有限,比如我手中的 G500s 和 G502 就不能正常支持,尝试过很多方案,都不能完美解决,最近发现了 SensibleSideButtons 这个应用,完美的解决了这个问题。

Electron 实录: 1. Tray(托盘图片)消失 假如你把 tray 的实例变量定义在了函数内部(比如 app.on('ready', createWindow) 的回调函数内),那么当 JavaScript 引擎进行垃圾回收的时候,这个变量就会被销毁,这样 tray 的实例就没了,托盘图标就消失了。

Unicode 200B (zero width space) 在 Web 环境的问题: 最近处理一些用户录入数据时,发现有一些明明是纯数字的数据,却通过不了类型校验(无法解析成 Int/BigInt)类型,由于一直都是通过日志查看错误,觉得很疑惑,后来找到原始数据,发现因为这个『字符串』带了一个 zero width space,导致程序异常。

The long way to Angular and TypeScript | Part.2: 引言 在一年多之前,我写了一篇文章《The way to Angular 2 | Part.1》介绍 Angular,最初打算持续完成一个系列,然后在我写完文章之后,Angular 和 TypeScript 都发生了相当大的变化,整个系列也搁浅了。

浏览器环境下 JavaScript 生成随机字符串的科学方法(字母数字): 随机数与随机字符串 早前我都使用Math.random()来生成随机数,然后转成16进制字符串来生成随机字符串,后来看到了这个回答(stackoverflow)。

在 neovim 退出时,重设终端(iTerm2)光标: 问题 出于个人习惯,我在终端模拟器(iTerm2 等)中,都是将光标(cursor)设置为 vertical bar,而在 neovim 中则是将 normal 模式的光标设置为 block。

迁移评论系统到 hashover: 鉴于 disqus 在国内访问越来越慢,资源和数据请求量越来越大,严重拖慢了页面加载,而且博客也只需要一个简单的评论对话系统,所以开始考虑进行评论系统的迁移。

当我试图 extends 一个被 connect 装饰过的 React Component 时: 问题 起因是这样的,一开始在项目中写了一个原始的 Popup 组件(通过 react-redux 的 connect 方法接入 redux),后来有了一个更高级的需求,我就想要直接 extends 这个原始的 Popup 组件,然后覆写一些方法。

从零开始的 Web 前端性能优化 – 规则: build delightful, modern, responsive web experiences. — Google Web Fundamentals 引言 前端的性能指标在通常情况下是一个很难量化的指标,面向的用户群体和环境复杂,在现有条件下,网页的绝对性能仍然取决于用户的网络连接。

Grafana 二次开发指南(前端): 前端项目 启动流程 页面载入之后,引入的脚本是 boot.js,由 es2015 的 shim,systemjs,systemjs 的配置文件和 boot.js 组成。

【译】通过 Webpack 实现 AngularJS 的延迟加载: 原文链接:http://michalzalecki.com/lazy-load-angularjs-with-webpack/ 随着你的单页应用扩大,其下载时间也越来越长。

The way to Angular 2 | Part.1: Angular 2 已经进入 beta 通道有一段时间了,也有不少人开始在各种情景中使用 Angular 2。

React Native 的包系统: 介绍 在 React-Native 中,实现了一个类似于 webpack 的包系统,命令行工具提供了一个 bundle 的功能,用来打包整个项目的文件。

angular 1.4.x 以后的 groupBy(angular-filter)的排序问题: 问题: angular 1.4.x 版本开始,<div ng-repeat="(key, value) in myObj"> ... </div> 的方法移除了按照首字母排序的规则,改为使用浏览器默认的方法,也就是for key in myObj。

Google + 风格下拉选择器(pure-javascript): Source code on Github: https://github.com/gucheen/GPDP CODE: Google plus like dropdown selector 。

AngularJS $resource 服务对 http 请求 response 的自动处理引发的一些问题: 默认情况下,$resource 服务会对它进行的 http 请求的 response 默认进行一些处理,它会尝试 map 返回值。

阻止在页面元素内滚动时触发页面滚动: 一般来说,当我们在页面内部一个可滚动元素上使用滚动时,如果滚动距离超过它的顶部或者底部,就会触发页面滚动,但是在一些情况下,我们不希望引起页面滚动,因为这会影响用户操作。

在 VMware 的客户机内使用鼠标的前进/后退等功能键: 在 VMware 的客户机内使用鼠标的前进/后退等功能键 在 VMware 的虚拟磁盘文件夹内,找到 .vmx 配置文件,在其中加入下面这句配置: mouse.vusb.enable = "TRUE" 就可以在客户机内正常使用鼠标的前进、后退等功能键了。

中国地区常用浏览器 UA: 360 极速浏览器 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36 QIHU 360EE" 猎豹安全浏览器 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER" 搜狗浏览器 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 SE 2.X MetaSr 1.0" QQ 浏览器 "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; QQBrowser/8.0.1374.400)" 百度浏览器 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 BIDUBrowser/6.x Safari/537.36" 360 安全浏览器 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36" 傲游浏览器 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.2.2000 Chrome/30.0.1599.101 Safari/537.36" UC 浏览器PC版 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 UBrowser/3.1.1644.29 Safari/537.36" 。

在 Chrome Extension 中使用 Google Closure: 要在 Chrome Extension 中使用 Closure library, 需要将 Closure library 按照需求打包。

Typecho 转 Jekyll markdown 工具: 最近想把博客转到 jekyll ,原本的程序是 typecho 的,手动迁移有些麻烦(虽然 typecho 0.9 已经是默认 markdown 写作的了)。

Google Closure htmlToDocumentFragment 无法正确渲染’tr’标签: 首先看一下 goog.dom.htmlToDocumentFragment 的实现代码: goog.dom.htmlToDocumentFragment_ = function(doc, htmlString) { var tempDiv = doc.createElement('div'); if (goog.dom.BrowserFeature.INNER_HTML_NEEDS_SCOPED_ELEMENT) { tempDiv.innerHTML = ' ' + htmlString; tempDiv.removeChild(tempDiv.firstChild); } else { tempDiv.innerHTML = htmlString; } if (tempDiv.childNodes.length == 1) { return /** @type {!Node} */ (tempDiv.removeChild(tempDiv.firstChild)); } else { var fragment = doc.createDocumentFragment(); while (tempDiv.firstChild) { fragment.appendChild(tempDiv.firstChild); } return fragment; } }; 这个方法利用一个临时 Div 容器来生成 Dom 片段,因为<tr>标签本身不能在<div>标签内使用,所以这个函数不能返回单独地<tr>标签。

Google Closure – goog.require(): 在使用 Google Closure Library 时,要注意一点。

ubuntu 中文本地化之后的中文字体优化: ubuntu 中文本地化之后,默认安装了两个字体 arphic-ukai 和 arphic-uming,导致默认中文字体非常难看,没有很好的渲染,卸载这两个字体就可以改善中文字体效果。

ubuntu安装本地php+mysql+apache测试环境: 1.安装apache。

使用 nodemon 或者 Supervisor 监控 Express 4.x 代码改动进行开发: Update on 2015 现在 nodemon 已经可以直接支持 Express 4.x 的启动,不在需要进行特殊配置 Update on 2014.04.25: 现在我使用 nodemon 来代替 supervisor 来进行监控任务。

【译】从 Express 3.x 迁移到 4.x: Express 3.x 到 4.0 的迁移指南。

【译】Express.js 4.x 新功能: 更多的例子和完整的API文档,请参见Express 4.x 的文档。

express.js 中上传文件的几个注意点: 设置: app.use(express.methodOverride()); app.use(express.bodyParser({uploadDir: "public/images",keepExtensions: true})); bodyParser设置项一定要紧跟在 methodOverride后面,同时 uploadDir参数的目录需要手动创建。

百度 pcs api 使用小记: 利用Implicit Grant授权的模式,在授权认证之后直接从回调链接URL获取access_token,优点是方便,不需要后端,缺点是不能刷新access_token,每一个月需要重新授权一次。

一种jQuery实现区域外点击事件的方法: 在写弹出菜单插件时,需要实现点击弹出菜单以外的区域时关闭菜单的功能。

jQuery 弹出菜单插件 – jQuery.popmenu: 因为自己要用,所以写了一个弹出菜单插件 jQueryPopMenu simple responsive popup menu, it’s a jQuery plugin. Demo http://gucheen.github.io/jQueryPopMenu/ Link https://github.com/gucheen/jQueryPopMenu Intro 这是一个基于 jQuery 的弹出菜单插件。

Ubuntu A卡开源驱动电源管理: Ubuntu下,A卡的开源驱动有一些自带的电源管理功能,对于笔记本用户来说尤其重要,无论是风扇降噪,还是降温,都有不错的效果,下面是使用方法: sudo -i #进入root模式 echo dynpm > /sys/class/drm/card0/device/power_method ## 基于GPU负载的动态调整 echo profile > /sys/class/drm/card0/device/power_method ## 基于Profile(配置文件)的频率切换;这是默认的模式 如果你选择了Profile模式的话,可以有几个不同的配置文件进行切换 echo default > /sys/class/drm/card0/device/power_profile # 默认的模式 echo low > /sys/class/drm/card0/device/power_profile ## 强制使用最低的可用频率; ## 在一些笔记本和显示设备上可能会有一定问题, 因为这是关闭dpms时使用的模式 echo mid > /sys/class/drm/card0/device/power_profile ## 强制GPU使用'mid'的电源状态;在常规情况下,要比'low'更安全 echo high > /sys/class/drm/card0/device/power_profile ## 强制使用最高可用频率 echo auto > /sys/class/drm/card-0/device/power_profile ## 在 'high'和'mid'之前切换,根据系统是否使用电池供电。

tmux 滚动功能设置: 使用tmux之后,原本的鼠标滚动查看历史记录就变成了切换历史命令,不是很习惯。

【译】利用Emmet来提高你的CSS编码速度: 大多数关于Emmet的文章和教程都是在说明它对HTML的处理能力,但是今天我们要来关注一下Emmet的CSS部分。

Ubuntu 安装 Chrome-Beta 提示缺少 libxss1: 今天在 Ubuntu上安装chrome beta,提示缺少libxss1,从软件中心和apt-get安装相应libxss1之后,都无法解决这个问题,上网搜索之后,通过这个包解决了问题。

Shadowsocks + cow 代理方案: 首先搭建Shadowsocks,参见官方使用指南: 官方使用指南(英文) / 官方使用指南(中文) 这里选择了SS的python版本,事实上,cow本身提供了代理方案,但是Shadowsocks的操作空间更大。

Noppoo Choc 系列键盘Mac下键位修复: Noppoo家产的机械键盘,因为其低廉的价格和不错的性能受到不少像我这样没有太多钱烧键盘的人的喜爱。

【译】AngularJS的一些陷阱: 这是对我和 Valerii 在 MoscowJS 2013 上的演讲的一个小的补充。

jQuery 补漏: 版本变动主要影响,从1.4.0开始,.css(), .attr(), .val(), .html(),.text(), .append(), .prepend(), .before(), .after(), .replaceWith(), .wrap(), .wrapInner(), .offset(),.addClass(), .removeClass(), .toggleClass()接受function作为参数值。

Google Closure 学习笔记-1: 基础结构 Closure的库结构和文件夹结构相对应,因此需要查找某个命名空间对应的文件时,可以按照库结构来查找。

扁平化输出含有嵌套的数组-javascript: Given an array that may contain nested arrays, return a flattened array. Input and out put are illustrated as follows. 将含有嵌套的数组转换成扁平化输出。

imagecss翻译完毕: 中文版链接:https://blinktunnel.github.io/imagecss-chinese/ 在两个月时间里,断断续续地翻译了这个网站,去年的时候已经有这个打算,最初只是想给孩子们留一点可以参考的东西,执行力比较差,所以拖延了这么长的时间。

V965W 7.8离线更新包(8773-8858): V965W的7.8离线更新包,包含8873-8858的更新。

Windows 8 下 apploc 的安装: Windows 8 下由于权限问题,直接双击安装 apploc.msi 会失败。

Windows phone 7.5 下截屏临时解决方案 [需解锁]: 目前Windows phone 7.5下还没有系统截屏方法,从8的情况来看,7.8的系统应该会有截屏功能,但是目前还没有推送。

Putty 的 ppk 文件转成 Xshell 使用的 key 文件: 从putty转到了xshell,所以ppk文件没有办法直接使用,需要转换一下。

ConEmu、Mactype 冲突导致无法使用系统命令: 64位系统下,字体渲染工具Mactype可能会与ConEmu发生冲突,导致ConEmu无法正常使用Cmd命令。

让 Chrome 默认使用 Google.com 进行搜索: Chrome的默认Google搜索会根据你的位置进行选择,于是会使用Google.com.hk。

Windows 8 无法安装和升级.net framework 3.5 (0x800F0906): 安装SQL Server 2008时候需要.net 3.5环境,安装一直不成功,出现错误(0x800F0906) 网上搜了个办法,能解决这个问题 打开 win8 安装盘,提取 sourcessxs 文件夹到 x:\sourcessxs (x为任意盘); 打开 c:\windows\system32 文件夹,找到 cmd.exe,右击,选择"Run as administrator"(管理员模式);(或者直接按下 win+x ,选择命令提示符(管理员模式)) 在命令行执行以下命令: Dism.exe /online /enable-feature /featurename:NetFX3 /*All* /Source:E:\sources\sxs /LimitAccess 。

我的 Fedora 上手日记-5【VirtualBox安装相关】: 首先,从 virtualbox.org 上下载最新的RPM包,安装 安装必要的编译器(以下请在管理员权限下操作) yum install -y kernel-headers kernel-devel dkms gcc 打开VirtualBox 服务 /etc/init.d/vboxdrv setup 此处可能会报错,错误情况如下: Trying to register the VirtualBox kernel modules using DKMSError! Bad return status for module build on kernel: 3.5.3-1.fc17.x86_64 (x86_64) Consult /var/lib/dkms/vboxhost/4.1.20/build/make.log for more information.[FAILED] (Failed, trying without DKMS) Recompiling VirtualBox kernel modules [FAILED](Look at /var/log/vbox-install.log to find out what went wrong) 出现这个问题,请检查编译器是否正确安装,尤其是DKMS 将当前用户添加入 vboxusers 组中(请先退出SU,不然用户是root) 查看当前用户whoami 添加当前用户到vboxusers组中 su -c usermod -G vboxusers -a username username自行改成你的用户名 至此,你已经可以正常使用VirtualBox VirtualBox 。

增加wordpress内存限制(WP_MEMORY_LIMIT): 你是否会觉得你的wordpress运行很慢,或者突然显示没有足够内存运行当前脚本: Fatal error: Allowed memory size of 8388608 bytes exhausted. 或者 PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 6233929 bytes) in /home/…/press/wp-includes/cache.php on line 330 还有类似: Allowed memory size of 33554432 bytes exhausted (tried to allocate 368640 bytes) in /wordpress/wp-includes/class-simplepie.php on line 9575 这些都是因为内存不够引起的,解析来讲述如何增加内存的方法: 如果你可以访问php.ini文件,可以把内存限制从32改为64,甚至128等: memory_limit = 64M ; Maximum amount of memory a script may consume (64MB) 如果你没有访问php.ini的存取权限,那么可以更改.htaccess文件: php_value memory_limit 64M 可以在wp-config.php中添加一行关于WP_MEMORY_LIMIT的定义: define('WP_MEMORY_LIMIT', '64M'); 上面三种方法无效,与空间商联系。

我的Fedora上手日记-4【grub2启动顺序改变和清理多余内核】: 一、grub2启动顺序改变 装完Fedora等Linux系统之后,一般来说,grub2默认的启动系统都是Linux,但是有很多体验Linux的人还是以Windows为主,所以需要将Windows设为默认启动项,步骤如下: 首先找到Windows的menuentry.# cat /boot/grub2/grub.cfg | grep Windows 参考输出结果: menuentry “Windows 7 (loader) (on /dev/sda1)”–class windows –class os 可能会不止一个,但是没有关系,知道你平时启动的那一个就可以了,只要确定sda位置。

Ubuntu解决不能调节亮度【方案一】: 注:随着近几次更新,Ubuntu的兼容性提升了很多,这个问题应该比较少出现了。

Win7-A卡用户游戏画面拉伸问题的解决方案: update:新版本的amd催化剂的控制中心界面有所调整,但是调整方法是一样的。

Mactype 渲染火狐时地址栏字体被压缩的解决方法: 现在越来越多人喜欢用Mactype来渲染字体,效果很好,改善了Win下的字体显示效果,如果调整好设置的话,可以和Mac OS相媲美。

“断网法”更新中兴(ZTE)V965W Tania 系统(含7.8): Windows Phone 7.8 终于开始推送更新了,对于不能更新到8的老机器也算是一点点补偿。

我的 Fedora 上手日记-3 [yum 指令详解]: 一. yum是什么 yum = Yellow dog Updater, Modified 主要功能是更方便的添加/删除/更新RPM包. 它能自动解决包的倚赖性问题. 它能便于管理大量系统的更新问题 注:为什么要使用yum而不用apt,最简单的原因,Fedora自带 二. yum特点 可以同时配置多个资源库(Repository) 简洁的配置文件(/etc/yum.conf) 自动解决增加或删除rpm包时遇到的倚赖性问题 使用方便 保持与RPM数据库的一致性 三. yum安装 Fedora自带 #rpm -ivh yum-2.0.4-2.noarch.rpm 四. yum配置 注: 修改和增加配置文件中的资源库,加快下载速度和拥有更多可更新的rpm包 将/etc/yum.conf的内容全部替换为 [main] cachedir=/var/cache/yum debuglevel=2 logfile=/var/log/yum.log pkgpolicy=newest distroverpkg=fedora-release tolerant=1 exactarch=1 [fedora-us-1] name=Fedora Core 1 -- Fedora US mirror baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/os [fedora-us-1-updates] name=Fedora Core 1 updates -- Fedora US mirror baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/updates [fedora-us-1-stable] name=Fedora Linux (stable) for Fedora Core 1 -- Fedora US mirror baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/stable [freshrpms] name=Fedora Linux $releasever - $basearch - freshrpms baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms 五. yum应用 注:当第一次使用yum或yum资源库有更新时,yum会自动下载所有所需的headers放置于/var/cache/yum目录下,所需时间可能较长. 检查有哪些可更新的rpm包 #yum check-update 安装rpm包,使xmms可以播放mp3 #yum install xmms-mp3 安装mplayer,同时自动安装相关的软件 #yum install mplayer 删除licq包,同时删除与该包有倚赖性的包 #yum remove licq 注:同时会提示删除licq-gnome,licq-qt,licq-text,非常方便 系统更新(更新所有可以升级的rpm包,包括kernel) #yum -y update 每天定期执行系统更新 #chkconfig yum on #service yum start 六. yum指令详解 rpm包的更新 检查可更新的rpm包 #yum check-update更新所有的rpm包 #yum update 更新指定的rpm包,如更新kernel和kernel source #yum update kernel kernel-source 大规模的版本升级,与yum update不同的是,连旧的淘汰的包也升级 #yum upgrade rpm包的安装和删除 安装rpm包,如xmms-mp3 #yum install xmms-mp3 删除rpm包,包括与该包有倚赖性的包 #yum remove licq 注:同时会提示删除licq-gnome,licq-qt,licq-text yum暂存(/var/cache/yum/)的相关参数 清除暂存中rpm包文件 #yum clean packages 清除暂存中rpm头文件 #yum clean headers 清除暂存中旧的rpm头文件 #yum clean oldheaders 清除暂存中旧的rpm头文件和包文件 #yum clean 或 #yum clean all 注:相当于yum clean packages+ yum clean oldheaders rpm包列表 列出资源库中所有可以安装或更新的rpm包 #yum list 列出资源库中特定的可以安装或更新以及已经安装的rpm包 #yum list mozilla #yum list mozilla*注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包 列出资源库中所有可以更新的rpm包 #yum list updates 列出已经安装的所有的rpm包 #yum list installed 列出已经安装的但是不包含在资源库中的rpm包 #yum list extras 注:通过其它网站下载安装的rpm包 rpm包信息显示(info参数同list) 列出资源库中所有可以安装或更新的rpm包的信息 #yum info 列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息 #yum info mozilla``#yum info mozilla* 注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包的信息 列出资源库中所有可以更新的rpm包的信息 #yum info updates 列出已经安装的所有的rpm包的信息 #yum info installed 列出已经安装的但是不包含在资源库中的rpm包的信息 #yum info extras 注:通过其它网站下载安装的rpm包的信息 搜索rpm包 搜索匹配特定字符的rpm包 #yum search mozilla 注:在rpm包名,包描述等中搜索 搜索有包含特定文件名的rpm包 #yum provides realplay 七. 安全的更新freshrpms.net的rpm包 安装freshrpms.net的GPG key #rpm --import http://freshrpms.net/packages/RPM-GPG-KEY.txt 编辑/etc/yum.conf,增加以下信息到尾部 [freshrpms] name=Fedora Linux $releasever - $basearch - freshrpms baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms gpgcheck=1 注: 检查GPG Key # rpm -qa gpg-pubkey* 显示Key信息 #rpm -qi gpg-pubkey-e42d547b-3960bdf1 删除Key #rpm -e gpg-pubkey-e42d547b-3960bdf1 最后附上我找到的一份不错的yum教程,虽然比较老,但是基本都是一样的。

我的 Fedora 上手日记-2 [笔记本不能调节亮度]: 用上Fedora之后,真正开始折腾已经是晚上了,关了灯之后,觉得屏幕太亮了,于是想到要调下亮度,便还是用笔记本自带快捷键调节,发现会出现底部的亮度栏,但是不能进行调节,于是到系统设置里边进行更改,发现调节亮度调没有作用,上网搜了很多之后,找到一条可以用的 用yum重装bash : yum reinstall bash 注:此方法使用后还是不能解决不能保存屏幕亮度的问题,即重新启动之后还是最亮的状态。

我的 Fedora 上手日记-1[系统安装]: Update —— 现在推荐使用 UNetbootin 来制作U盘安装盘,之后在系统中选择U盘启动,正常安装即可。

常用CSS缩写语法总结: 使用缩写可以帮助减少你CSS文件的大小,更加容易阅读。

关于Wordpress不能自动更新的解决方法: Wordpress应该是比较热门的一个博客和个人网站程序,但是有时候它会发生不能自动更新的问题,还是比较让人纠结的 下边介绍一个解决这个问题的手动升级Wordpress的方法 1、下载好新版版本的Wordpress程序,删掉里边的wp-content 文件夹(及其子目录),因为wp-config.php 文件默认名问wp-config-sample.php ,所以不用管它 2、备份你原本的数据和数据库!(重要!),停用所有运行的插件 3、首先进入你的服务器Wordpress程序的根目录,将除了 wp-content 文件夹(及其子目录)和 wp-config.php 文件以外的所有东西删掉 4、将你准本好的新版本Wordpress程序上传至服务器Wordpress程序根目录中原本的对应位置,覆盖原文件(如果有的话,一般是没有的) 注:本步骤如果你的服务器支持在线解压缩,建议将Wordpress压缩包上传至服务器再进行解压,不然用FTP上传这么多文件你会很纠结的。

关于Au中去电流噪声的一个小技巧: 不知道有多少人会用Adobe Audition录制音频,应该不多,录视频的估计很多,不管怎样,也是介绍一个Au中去除录音电流噪声的方法(同时对去环境噪音也有一定用处),这是比较简便的一个,而且效果不错,对于一般人来说够了 首先打开Au,好吧,这个界面有点乱,我们随意新建一个录音吧 接着我们来制作噪音样本,点下录音按钮不要说话,过一段时间后点击结束 我们就得到了这样一个电流噪音样本 我们选中这段噪音样本,对的,就是振幅大的这一段,一部分就行,右击选择修剪 这样我们就得到了完整的噪音样本。

把 Android 装到电脑上: 好吧,话不多说,直接上图,基本功能都有,可以上网,版本是2.2.1 其他暂未测试~ 开机画面~ 滑动解锁。

终于开通了自己的blog~: 忙乎了两天,终于把自己的blog搞定了。