FireFox 充分自定义

故事的起因,是这样的。不知道什么原因,我突然发现火狐的标签页字体变了, 如下图。 那个苹果的苹字明显不是雅黑字体。但是却又不知道是什么原因,而且地址栏的字体也和标签栏一样。都是一个巨丑无比的字体。作为一个对字体有着一定偏执的人来说,这明显是不能忍的。于是 bing 了一下,据说是修改系统默认字体就好了。 于是我就改了 Mac 的自带字体。但是第一次,失误了。导致了所有的文字都无法显示。无奈之下,备份系统之后,重新重置了。 但是,很快发现,并不是系统字体的问题,因为就算是系统自带的 Helvetica, 苹果的苹也不是那个样子,于是就开始了苦逼的查文档之旅。 后来发现了几篇排版乱七八糟的文章: 这, 这 还有这。 但是他们有个共同的特点,就是说话说一半。 而且在最新的48.0.1里,已经没有那个 chrome 文件夹了。 所以,这边只好找官方文档了。…

Java URL 规则解释器

接上文《Java 自定义 URL 规则解析》,这次,我们来写这个结构的解释器。 上文的描述中,我们得到了这样的一个数据结构: S: start E: end loop: loop BS: branch start BE: branch end — http —…

Java 自定义 URL 规则解析

正如上文说的,最近再写一个 Proxy 的爬取工具。那么有个问题就接着来了。如何快速的定义一个方便的 URL 配制方法。 举个简单的例子。我们可以看到: public final static String VPS_LIST_URL[] = { “http://www.cz88.utils/proxy/[|http_[2-3|7-9].shtml]”, “http://www.site-digger.com/html/articles/20110516/proxieslist.html”, “http://www.kuaidaili.com/proxylist/[0-10]” }; 这边在 cz88 这个站点,他的路径是比较奇怪的。页码为1的时候,他是直接根目录访问,但是从之后就是…

一个爬虫引发的 Java AES 问题

写在开头,为什么有这一篇文章呢?因为,最近我开始了一个项目组,就是 HTTP Proxy 的信息采集。因为之前一直有个写爬虫的习惯,但是因为一直没有一个稳定的 Proxy 的提供渠道,或者说,并没有限制的资金购买这个服务。导致了我之前的刷某些服务器,被封了 IP (也是因为懒)。 所以,为了避免以上的悲剧不再发生,就开始了这个项目组。那么,这个项目和 AES 加密有什么关系呢。其实,我的计划里,并没有关系。但是,在写爬虫爬取各个网站上的 Proxy 的时候,遇到了这么个情况。有些网站本身也是通过提供 VPS 盈利的,所以他们会在前端显示的时候,做一些加密处理。 比如: http://www.site-digger.com/html/articles/20110516/proxieslist.html 当时,我很简单的以为,他和其他的网站一样,直接脱光了等我爬。想都没想,直接通用爬虫上去爬。发现结果是空。就很奇怪啊。然后就看了他的源码: <tr> <td><script>document.write(decrypt(“4A41BUVh2nIx3Ubh9RoGWtowBUlFhSM0jiG6UMvLR68=”));</script></td>…

Hexo 博客加密插件简述

众所周知,Hexo 是一个很赞的静态博客系统。但是,他有一个很大的缺陷,就是无法对文章进行加密处理。比如,我想对一篇文章做权限控制,例如提问回答可见等等。所以,这就产生了一个这样的需求。 虽然我不是一个 Hexo 用户,但是,看到这样的知乎问答: 我只想说,不想一想实现就直接说不可以的,都不是程序员,一点创造性都没有。顺便吐槽下知乎这个社交平台。 说正事。这个插件的主要用途就是为博客加密,使用方法很简单,这边就不详细描述,因为还有一些没有完善的地方,先期的文档在这:GITHUB 原理 其实说穿了,也很简单。因为 Hexo 是纯静态博客系统,所以不可能采用后台密码校验的方式进行处理。所以这个校验就落到了前端上。但是,如果直接 js 进行密码校验,这就好像,我把钥匙放在钥匙孔里,然后对小偷说,你看,我锁好了。 所以这边只可能采用密文的方式,这边感谢开源,这边我使用的是 brix / crypto-js 项目,进行博客加密。加密方式选用的 AES,这个基本可以确保拦截住 99%…

Laravel ORM 的一个优化场景

评论中 forehalo 提供了一个更 Laravel 的实现方式:https://laravel.com/docs/5.0/eloquent#eager-loading Laravel 的 Eloquent 可能是最好的 PHP ORM 之一。不过,他也有所有 ORM 框架的通病,就是技术人员在不熟悉框架的情况下进行编码,很容易造成性能问题。之前遇到的一个应用场景。现在简化出来。 有两张表,一张暂定为 user 表,一张为 userinfo 表,现在有个需求是将特定用户抽取出来,然后从 userinfo…

B 站动漫数据汇总

这是我很早之前就想做的一个项目。因为,作为一个非动漫骨灰级玩家,或者说是一个刚刚接触这个领域的人来说。尝试下口碑较好的作品是比较好的入门方式。所以,我找了个专家 May 咨询了下,并且得到了一个动漫的列表吧。 然后就开始看了。很大程度上,很多的作品都是直接从 B 站上看的,因为有个好处,就是 B 站上有弹幕,而且往往好玩的并不是作品本身,而是弹幕引发的二次讨论。所以,我想对动漫的好看程度或者说是槽点进行一个排名。通常情况下,B 站上都是只提供几种简单的排序,比如播放数,弹幕数,硬币数,收藏数来进行。而且通过分析他的请求,可以发现他的数据都是通过离线计算出来的。 比如说,我希望得到 2016.08.01 ~ 2016.08.12 中弹幕最多的完结动漫,所以,这个请求是: http://www.bilibili.com/list/damku-32-1-2016-08-06~2016-08-12.html,其中,damku 是按照弹幕数排序,32表示完结动漫分类,1表示页码,2016-08-06~2016-08-12表示时间周期。所以很容易的就可以找到规律。 所以,很容易的就能理解 B 站的 cache…

Android 开发总结

忙碌的一个月终于结束了,因为老板觉得我天天在公司就负责扫地,有点物过其用。就让我接手了一个同事离职的安卓代码。因为这个属于外包吧,有明确的时间要求,所以就只能天天加班来实现。 不过,在实现的过程中,确实找到了一些共性的东西。这边拿出来分享下。 选用的设计模式 MVP 首先就是安卓项目的代码划分。之前的说法,都是MVC式的划分方式,所以会出现一个问题。Activity 中代码杂糅。所以之后就出现了 MVP 的设计模式,也算是在 MVVM 成熟之前的一个过渡方案吧。 所以这样的代码设计起来是这样的: Ξ src/main git:(master) ▶ tree . ├── java │  …