由于 SEO 优化或流量统计需要,邮箱订阅或某些网站会对自身 URL 进行处理,在原 URL 后面追加一系列的标签,形如

https://zhuanlan.zhihu.com/p/22545574?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

其原本的 URL 为:

https://zhuanlan.zhihu.com/p/22545574

带有标签后缀的 URL 不够优雅,分享这样的 URL 时会影响观感,需要手动删除无用参数(有点强迫症的感觉)。

好在 @ibingfei 给我找了一个 解决方案,只需将处理 URL 的 JS 脚本存为书签,使用时点击一下该书签即可。下面是经我稍微改动,加入过滤 acm、mtt、cks 三个标签后的 JS 脚本,仅供参考:

javascript:(function(){
var search, params, i, re;
search = location.search.replace( /^\?/, '' ).split( '&' );
params = [];
if (!search) return;
i = search.length;
while( i-- ){
if( !search[i].match( /^utm_|^hmsr|^acm|^mtt|^cks|^fb_action|^fb_source|^action_object_map|^action_type_map|^action_ref_map/ ) ){
params.push( search[i] );
} else {
re = true;
}
}
if (re) {
history.pushState('','',location.pathname + (( params.length ) ? '?' + params.join( '&' ) : '' ));
}
})();

此法的原理是对 URL 中的无用标签进行正则匹配,从而实现过滤。当然你也可以自行添加过滤规则,只需在其中按 !search[i].match( / |^<标签名>/ ) 格式添加标签即可。

举个栗子:如测试后发现 http://yhyy135.github.io?blabla=hahaha 中,删除标签 blabla 后不影响正常访问,则可在上述 JS 脚本的正则规则中添加 |^blabla 即可。整个 URL 减肥过程如此流畅。

RabbitMQ 入门指南 PHP 版系列文章:
RabbitMQ 入门指南 PHP 版(一)
RabbitMQ 入门指南 PHP 版(二)

主题交换机 Topic exchange

为进行更为复杂和高级的路由操作,可通过使用主题交换机来实现。
主题交换机的路由键必须是一个由 . 分隔开的词语列表。绑定键也必须拥有同样的格式。携带特定路由键的消息将被主题交换机投递给绑定键与之相匹配的队列。

阅读全文 »

介绍

RabbitMQ 是一个消息代理。核心原理是接收和发送消息。

生产者

  • 生产 (Producing) 就是发送消息。发送消息的程序就是一个生产者 (producer)。用 “P” 表示

队列

  • 队列 (queue) 就是邮箱的名称。消息存储在一个队列(queue)中通过你的应用程序和 RabbitMQ 进行传输

消费者

  • 消费(Consuming)就是获取消息。等待获取消息的程序就是一个消费者(consumer)。用 “C” 表示

RabbitMQ 使用的是 AMQP 协议,对于 PHP 来说你可以选择 php-amqplib 作为 RabbitMQ 的客户端。

阅读全文 »

转瞬间距离正式入职已经不多不少两个月整。

stereotype 的理解逐渐深刻起来,不再去争辩什么看起来简单的东西,因为那很有可能是思维陷阱,很有可能让自己浮在水上,看不清池底来回游走的鱼。尽量提醒自己不去简单地思考和表达,正如不鸟万如一曾在 一天世界会员通讯:建筑为什么 low?(2016.8.1) 里如是写道:

我们必须承认审美是被论述出来的。同样的结构、图像、风景,用不同的文字描述,会形成截然不同的心理认知和情感冲击。这就是我为什么相当反感中文网络上常见的一种化骨水式的论说方式,姑且称之为「不就是」体。这种文体的爱好者喜欢把任何复杂的现象化解成简单而容易下咽的压缩饼干。「不就是形式大于内容嘛」「不就是钱没给够的问题嘛」「网页版 Apple Pay 不就是支付宝嘛」。很多时候它们或许「是」,但并不「就是」。在理性至上精神和对神秘主义的反感驱使下,人们喜欢用总结中心思想的方式把审美驯服成容易理解的样子——往往也就是某种已经被认可了的旧的样子。这是文化保守主义的体现。

阅读全文 »