Nov 26 2008

flash的crossdomain

Category: 技术ssmax @ 18:24:33

用flash写了一个测试网络质量的小东东,类似于js的http request了,flash的crossdomain没有js限制得这么严格,只要在目标地址根目录下面加一个crossdomain.xml就好了,记录一下要点:

要点1:不能出现style=”display: none” ,只要在这个里面,flash就不会运行

要点2:跨域访问,如果swf和html不在同一个域下面,以前只要通过html的域就可以了,但是现在连swf所在的域都要在corssdomain.xml中通过才行,要不还是访问不了。

要点3:crossdomain中的通配符,*.sample.com,就匹配了多级子域的了,不需要每一级都设置。

附上corssdomain.xml 的普通格式

<?xml version=”1.0″?>
<!DOCTYPE cross-domain-policy SYSTEM
http://www.adobe.com/xml/dtds/cross-domain-policy.dtd“>

<cross-domain-policy>
        <site-control permitted-cross-domain-policies=”master-only”/>
        <allow-access-from domain=”*.xxx.com”/>
        <allow-access-from domain=”*.oooxxx.com”/>
</cross-domain-policy>


Nov 25 2008

IIS 的免费 Rewrite 反盗链

Category: 技术ssmax @ 20:51:16

IIS有个免费的IIRF,rewriter,就像apache的mod_rewrite,基本上规则都一样,正则表达式是用pcre库,perl兼容的正则表达式,十分简单。

http://cheeso.members.winisp.net/IIRF.aspx

一个反盗链的例子

RewriteLogLevel 0

RewriteCond %{HTTP_REFERER} ^(?!HTTP_REFERER)
RewriteCond %{HTTP_REFERER} ^(?!https?://(?:.*\.)yourdomain\.com) [I]
RewriteRule ^.*$ /blocked.html [NF]

第一行的大概意思就是有REFERER头的请求才处理,NF就表示not found 404响应


Nov 25 2008

idc

Category: 乱up当秘笈ssmax @ 17:32:56

这几天在找地方托管,价钱真tmd相差很大啊,从3k多到1w多都有。。。外省的普遍便宜,不过把服务器寄到这么远都要花个好几百的了。。。

现在暂时就是两个方案

汕头双线托管,单ip,BGP路由

江西九江双线租用,双ip,自己做智能dns

看看如果租用服务器的价钱能谈下来,直接就租用算了,和托管差不多价钱。懒得把服务器寄来寄去。


Nov 24 2008

抢钱的雅虎

Category: 乱up当秘笈ssmax @ 17:45:56

好像之前雅虎有个一美金一个域名的活动,那个时候一班sb去注册了,现在续费要35美金一年,汗啊,这是赤裸裸的抢劫啊,帮comx和howeil把域名都转移到godaddy了,才7美金一年,tnnd。


Nov 23 2008

one piece

Category: 乱up当秘笈ssmax @ 14:22:44

这两天把几个月的one piece动画煲完了,真tmd好看,布鲁克和拉布那条200多集之前的伏笔,还是那么令人感动,从37x开始听说换了制作,画风又回来了,主题曲也换成了第一首主题曲的remix版,现在都差不多10首主题曲了,怀念啊。。。

377话佐罗最后那一幕【什么都没有发生】太man了,音乐和配音,在漫画里面表达不出来啊。


Nov 19 2008

varnish 一个很灵活的加速器

Category: 乱up当秘笈ssmax @ 15:28:51

nginx和lighttpd都没有应用级cache,而且对ssi支持不好,试了几个星期之后终于放弃了,还是用回squid吧,省心啊。

今天有看到一个比较火的加速器varnish,发展得很快,配置文件很灵活,基本什么规则都可以自己定义好了,想到什么就定义什么,很爽的样子,但是还是不支持dns backend,像我们这种超大型的网站,后台都几十台,不可能全部定义到配置文件里面,最好还是直接用dns透传过去。不过看到已经准备开发这个了,隔一段时间再来看看有没有吧,哈哈。


Nov 18 2008

lsof命令查看打开文件

Category: 技术ssmax @ 20:01:12

  一般root用户才能执行lsof命令,普通用户可以看见/usr/sbin/lsof命令,但是普通用户执行会显示“permission denied”

  我总结一下lsof指令的用法:

  lsof abc.txt 显示开启文件abc.txt的进程

  lsof -i :22 知道22端口现在运行什么程序

  lsof -c abc 显示abc进程现在打开的文件

  lsof -g gid 显示归属gid的进程情况

  lsof +d /usr/local/ 显示目录下被进程开启的文件

  lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长

  lsof -d 4 显示使用fd为4的进程

  lsof -i 用以显示符合条件的进程情况

  语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]

  46 –> IPv4 or IPv6

  protocol –> TCP or UDP

  hostname –> Internet host name

  hostaddr –> IPv4位置

  service –> /etc/service中的 service name (可以不只一个)

  port –> 端口号 (可以不只一个)

  例子: TCP:25 – TCP and port 25

  @1.2.3.4 – Internet IPv4 host address 1.2.3.4

  tcp@ohaha.ks.edu.tw:ftp – TCP protocol hosthaha.ks.edu.tw service name:ftp

  lsof -n 不将IP转换为hostname,缺省是不加上-n参数

  例子: lsof -i tcp@ohaha.ks.edu.tw:ftp -n

  lsof -p 12 看进程号为12的进程打开了哪些文件

  lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新

  -r,lsof会永远不断的执行,直到收到中断信号

  +r,lsof会一直执行,直到没有档案被显示

  例子:不断查看目前ftp连接的情况:lsof -i tcp@ohaha.ks.edu.tw:ftp -r

  lsof -s 列出打开文件的大小,如果没有大小,则留下空白

  lsof -u username 以UID,列出打开的文件

  一般root用户才能执行lsof命令,普通用户可以看见/usr/sbin/lsof命令,但是普通用户执行会显示“permission denied”

  我总结一下lsof指令的用法:

  lsof abc.txt 显示开启文件abc.txt的进程

  lsof -i :22 知道22端口现在运行什么程序

  lsof -c abc 显示abc进程现在打开的文件

  lsof -g gid 显示归属gid的进程情况

  lsof +d /usr/local/ 显示目录下被进程开启的文件

  lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长

  lsof -d 4 显示使用fd为4的进程

  lsof -i 用以显示符合条件的进程情况

  语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]

  46 –> IPv4 or IPv6

  protocol –> TCP or UDP

  hostname –> Internet host name

  hostaddr –> IPv4位置

  service –> /etc/service中的 service name (可以不只一个)

  port –> 端口号 (可以不只一个)

  例子: TCP:25 – TCP and port 25

  @1.2.3.4 – Internet IPv4 host address 1.2.3.4

  tcp@ohaha.ks.edu.tw:ftp – TCP protocol hosthaha.ks.edu.tw service name:ftp

  lsof -n 不将IP转换为hostname,缺省是不加上-n参数

  例子: lsof -i tcp@ohaha.ks.edu.tw:ftp -n

  lsof -p 12 看进程号为12的进程打开了哪些文件

  lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新

  -r,lsof会永远不断的执行,直到收到中断信号

  +r,lsof会一直执行,直到没有档案被显示

  例子:不断查看目前ftp连接的情况:lsof -i tcp@ohaha.ks.edu.tw:ftp -r

  lsof -s 列出打开文件的大小,如果没有大小,则留下空白

  lsof -u username 以UID,列出打开的文件

[root@tcx160 FILES]# lsof -i tcp:22
COMMAND  PID USER  FD  TYPE DEVICE SIZE NODE NAME
sshd   3261 root  3u IPv6  7301    TCP *:ssh (LISTEN)
sshd  19692 root  3u IPv6 348642    TCP 9.186.96.160:ssh->9.186.96.117:32914 (ESTABLISHED)


Nov 18 2008

syslog-ng 的 MSGONLY

Category: 技术ssmax @ 11:25:57

nginx不支持直接用unix stream的syslog,所以只能mkfifo一个pipe,然后让syslog-ng去读了,但是syslog-ng的默认log格式是

program[pid]: message

如果log对象的template直接记录 MSGONLY 的话,syslog-ng会从第一个冒号那里开始切开,造成web的log全部都有问题,只能在log前面按syslog的格式写死一下,就好了。


Nov 17 2008

nginx 的 tcp_nopush 和 tcp_nodelay

Category: 技术ssmax @ 17:06:52

nginx的 tcp_nopush 就相当于freebsd下面的TCP_NOPUSH 或者 linux 下面的TCP_CORK

这个东东和tcp_nodelay是互斥的。下面是详细的解释。

 

TCP_NODELAY 和 TCP_CORK,
这两个选项都对网络连接的行为具有重要的作用。许多UNIX系统都实现了TCP_NODELAY选项,但是,TCP_CORK则是Linux系统所独有的而且相对较新;它首先在内核版本2.4上得以实现。此外,其他UNIX系统版本也有功能类似的选项,值得注意的是,在某种由BSD派生的系统上的TCP_NOPUSH选项其实就是TCP_CORK的一部分具体实现。
TCP_NODELAY和TCP_CORK基本上控制了包的“Nagle化”,Nagle化在这里的含义是采用Nagle算法把较小的包组装为更大的帧。John Nagle是Nagle算法的发明人,后者就是用他的名字来命名的,他在1984年首次用这种方法来尝试解决福特汽车公司的网络拥塞问题(欲了解详情请参看IETF RFC 896)。他解决的问题就是所谓的silly window syndrome ,中文称“愚蠢窗口症候群”,具体含义是,因为普遍终端应用程序每产生一次击键操作就会发送一个包,而典型情况下一个包会拥有一个字节的数据载荷以及40个字节长的包头,于是产生4000%的过载,很轻易地就能令网络发生拥塞,。 Nagle化后来成了一种标准并且立即在因特网上得以实现。它现在已经成为缺省配置了,但在我们看来,有些场合下把这一选项关掉也是合乎需要的。
现在让我们假设某个应用程序发出了一个请求,希望发送小块数据。我们可以选择立即发送数据或者等待产生更多的数据然后再一次发送两种策略。如果我们马上发送数据,那么交互性的以及客户/服务器型的应用程序将极大地受益。例如,当我们正在发送一个较短的请求并且等候较大的响应时,相关过载与传输的数据总量相比就会比较低,而且,如果请求立即发出那么响应时间也会快一些。以上操作可以通过设置套接字的TCP_NODELAY选项来完成,这样就禁用了Nagle算法。
另外一种情况则需要我们等到数据量达到最大时才通过网络一次发送全部数据,这种数据传输方式有益于大量数据的通信性能,典型的应用就是文件服务器。应用Nagle算法在这种情况下就会产生问题。但是,如果你正在发送大量数据,你可以设置TCP_CORK选项禁用Nagle化,其方式正好同TCP_NODELAY相反(TCP_CORK 和 TCP_NODELAY 是互相排斥的)。下面就让我们仔细分析下其工作原理。
假设应用程序使用sendfile()函数来转移大量数据。应用协议通常要求发送某些信息来预先解释数据,这些信息其实就是报头内容。典型情况下报头很小,而且套接字上设置了TCP_NODELAY。有报头的包将被立即传输,在某些情况下(取决于内部的包计数器),因为这个包成功地被对方收到后需要请求对方确认。这样,大量数据的传输就会被推迟而且产生了不必要的网络流量交换。
但是,如果我们在套接字上设置了TCP_CORK(可以比喻为在管道上插入“塞子”)选项,具有报头的包就会填补大量的数据,所有的数据都根据大小自动地通过包传输出去。当数据传输完成时,最好取消TCP_CORK 选项设置给连接“拔去塞子”以便任一部分的帧都能发送出去。这同“塞住”网络连接同等重要。
总而言之,如果你肯定能一起发送多个数据集合(例如HTTP响应的头和正文),那么我们建议你设置TCP_CORK选项,这样在这些数据之间不存在延迟。能极大地有益于WWW、FTP以及文件服务器的性能,同时也简化了你的工作。示例代码如下:

intfd, on = 1;

/* 此处是创建套接字等操作,出于篇幅的考虑省略*/

setsockopt (fd, SOL_TCP, TCP_CORK, &on, sizeof (on)); /* cork */
write (fd, …);
fprintf (fd, …);
sendfile (fd, …);
write (fd, …);
sendfile (fd, …);

on = 0;
setsockopt (fd, SOL_TCP, TCP_CORK, &on, sizeof (on)); /* 拔去塞子 */

不幸的是,许多常用的程序并没有考虑到以上问题。例如,Eric Allman编写的sendmail就没有对其套接字设置任何选项。

Apache HTTPD是因特网上最流行的Web服务器,它的所有套接字就都设置了TCP_NODELAY选项,而且其性能也深受大多数用户的满意。这是为什么呢?答案就在于实现的差别之上。由BSD衍生的TCP/IP协议栈(值得注意的是FreeBSD)在这种状况下的操作就不同。当在TCP_NODELAY 模式下提交大量小数据块传输时,大量信息将按照一次write()函数调用发送一块数据的方式发送出去。然而,因为负责请求交付确认的记数器是面向字节而非面向包(在Linux上)的,所以引入延迟的概率就降低了很多。结果仅仅和全部数据的大小有关系。而 Linux 在第一包到达之后就要求确认,FreeBSD则在进行如此操作之前会等待好几百个包。

在Linux系统上,TCP_NODELAY的效果同习惯于BSD TCP/IP协议栈的开发者所期望的效果有很大不同,而且在Linux上的Apache性能表现也会更差些。其他在Linux上频繁采用TCP_NODELAY的应用程序也有同样的问题。


Nov 13 2008

锒铛入狱

Category: 乱up当秘笈ssmax @ 19:45:44

风光一时的阿扁终于进去了,进去之前还叫嚣了一把,见过无耻的,没见过这么无耻的。。。


« Previous PageNext Page »