vB·流水账

生命在于折腾。

RouterOS 升级服务器IP

2017-1-5 vibbow

RouterOS的升级服务器用的是Amazon CloudFront的CDN。在国外用效果很好,然而到了中国,效果就只能呵呵了。无法检测升级,下载更新包缓慢是常事。

把Amazon CloudFront所有数据中心的IP都ping了一遍,发现还是日本服务器到中国的速度最好。下面是日本CloudFront的IP列表,随便选一个,在 IP\DNS 里新建一个static dns,指向upgrade.mikrotik.com 即可。

54.230.108.133
54.230.108.219
54.230.108.10
54.230.108.163
54.230.108.33
54.230.108.141
54.230.108.64
54.230.108.70

评论(0) 浏览(140)

Piwik切换到中文后一些挂件无法正常显示的解决方案

2016-12-9 vibbow

由于Piwik代码的缺陷,导致Piwik在切换到中文语言后,一部分挂件(比如说访客地图)无法正常显示。

问题原因:
Piwik的语言模块有一个功能:把单词的首字母自动大写。但是这个功能(使用的ucfirst函数)并没有考虑到多字节字符的存在,导致对中文字符使用ucfirst后产生了非法字符。

解决方案:
修改 plugins/API/ProcessedReport.php 文件
找到
$name = ucfirst($name);
把他用以下 if 语句包围起来
if (substr($name, 0, 1) === mb_substr($name, 0, 1)


#使用此修正方法需要服务器启用了mbstring系列函数
#同时不能启用mbstring重载功能 http://php.net/manual/de/mbstring.overload.php

评论(0) 浏览(147)

用于加速微软technet网站的adblock过滤器

2016-6-6 vibbow

||dc.services.visualstudio.com/v2/track
||web.vortex.data.microsoft.com/collect/v1/*
||webtrends.com^
||c.microsoft.com/ms.js
||c1.microsoft.com/c.gif

评论(0) 浏览(1291)

iWebShop配置使用CDN加速图片教程

2016-6-2 vibbow

好久没有写博客了,今天就来随便写点东西把。
iWebShop并没有官方支持将图片URL重写到第三方CDN的功能,所以只能对源代码进行修改了。虽然以下修改方法并不完美,不过好歹算是可用了。

以下教程均假设图片cdn的域名为:cdn.example.com。总共有三个文件要修改。

\lib\core\file_class.php
这个文件主要禁用了文件名混淆功能。在使用cdn的情况下属于完全然并卵的功能,只会造成无效缓存。

修改点:
function dirExplodeEncode
注释掉以下代码
$code = $code ? $code : ICrypt::encode($dir,IWeb::$app->config['encryptKey']);
在注释掉的代码后面新增一行
$dir = $code;

function dirExplodeDecode
注释掉以下代码
$dir = ICrypt::decode($code,IWeb::$app->config['encryptKey']);
在注释掉的代码后面新增一行
$dir = $code;


\lib\core\util\urlmanager_class.php
这个文件在生成缩略图路径时,直接将baseDir指向cdn的域名

修改点:
function createUrl
找到
if(strpos($url,'pic/thumb/') !== false)
在其内新增一行
$baseDir = '//cdn.example.com/';


\views\default\site\products.html
这里以修改默认模板为例。其实我还是想以修改模板为主。修改模板实在无法达成的部分,才会修改内核文件。

修改点:
229行
<a href='javascript:void(0);' rel="{gallery:'goodsPhoto',smallimage:'{webroot:}{echo:Thumb::get($item['img'],435,435)}',largeimage:'{webroot:$item[img]}'}">
修改为
<a href='javascript:void(0);' rel="{gallery:'goodsPhoto',smallimage:'//cdn.example.com/{echo:Thumb::get($item['img'],435,435)}',largeimage:'//cdn.example.com/{$item[img]}'}">

321行产品描述下新增一行
{set:str_replace('src="/upload/', 'src="//cdn.example.com/upload/', $content)}

523 - 531行
//图片初始化
var goodsSmallPic = "{skin:images/front/nopic_435_435.gif}";
var goodsBigPic   = "{skin:images/front/nopic_435_435.gif}";

//存在图片数据时候
{if:isset($photo) && $photo}
goodsSmallPic = "{webroot:}{echo:Thumb::get($photo[0]['img'],435,435)}";
goodsBigPic   = "{webroot:$photo[0]['img']}";
{/if}
修改为
//图片初始化
var goodsSmallPic = "//cdn.example.com/images/front/nopic_435_435.gif";
var goodsBigPic   = "//cdn.example.com/images/front/nopic_435_435.gif";

//存在图片数据时候
{if:isset($photo) && $photo}
goodsSmallPic = "//cdn.example.com/{echo:Thumb::get($photo[0]['img'],435,435)}";
goodsBigPic   = "//cdn.example.com/{$photo[0]['img']}";
{/if}

评论(0) 浏览(1760)

RouterOS笔记 - Interface -> CPU/Bridge/Switch

2016-2-12 vibbow

以下记录均是讨论逻辑结构,而非硬件结构。如有错误,欢迎留言提出。

在RouterO里,有三个地方可以连接Interface,包括CPU, Bridge(桥接), Switch(交换芯片) 。

CPU 和 Bridge 均为软件实现,Switch是硬件实现。
Bridge和Switch均为二层交换,CPU是三层交换。

Switch只能连接“物理上连到这个switch的接口”(芯片设计角度上的)。在RouterOS里,当把一个物理接口的Master Port设为了另一个物理接口时,则可以认为这几个接口是直接连到同一个Switch上的,他们之间通信直接在Switch内部完成,不需要经过Bridge或者CPU。也可以把Master Port和Slave Port整体看成一个独立的交换机。

Bridge的功能和Switch比较类似,只不过是由软件实现的。因此Bridge可以桥接多个不同的物理接口/虚拟接口。在有Wifi功能的RouterOS里,默认是把wlan接口和switch master port桥接到一起的,因此wifi和有线接口之间可以进行二层交换。

CPU和Bridge在硬件上是平级的,但是在逻辑上是Bridge的上级。当一个接口(无论是物理接口还是虚拟接口)即没有连到Switch上,也没有连到Bridge上时,这个接口就是直接连到CPU上的。直接连到CPU的接口可以使用三层协议(IP地址)和其他接口通信,但是不能使用二层协议(MAC地址)和其他接口通信。

小结:
从逻辑关系上讲,三者的连接关系是 CPU - Bridge - Switch (可以去掉Bridge,如果是CHR设备则没有Switch)。
从性能关系上讲:Switch > Bridge ≈ CPU

#以上笔记来自纠结Router VLAN设置时的理解。

评论(0) 浏览(2216)