Akawa

ETY001的博客

  CSS网页布局,说难,其实很简单。说它容易,往往有很多问题困扰着新手,介绍了非常多的技巧,这些小技巧与知识能事半功倍的给大家以帮助。然而更多的时候,我们往往被一些小问题缠着不能轻松。今天向大家介绍八个技巧,这些技巧显得很有用。

  一、若有疑问立即检测

  在出错时若能对原始代码做简单检测可以省去很多头痛问题。W3C对于XHTML与CSS 都有检测工具可用,请见 http://validator.w3.org 。请注意,在文件开头的错误,可能因为不当的结构等因素造成更多错误;我们建议先修正一些最明显的错误之后重新检测,这样也许会让错误数量爆减。

  二、使用浮动功能时记得适当清除指令

  浮动是个危险的功能,未必会产生您所期望的结果。如果您遇到浮动元素延伸到外围容器的边框或者其他不正常情况,请先确定您的做法是正确的。

  三、边界重合时利用padding或border来避免

  您可能会为了一点不应该出现的空间而焦头烂额,或者您需要一点点空间时,怎样都挤不出来。如果您有用到margin,那么很容易产生边界的重合。

  四、尝试避免同时对元素指定padding/border以及高度或宽度

  Windows版IE经常导致width与height的计算问题。有些方法可以解决此问题,但如果母元素需要指定高度与宽度时,最好能够在母元素之内的子元素套用margin,或者当子元素需要指定高度与宽度时,在母元素套用padding以达效果。

  五、不要依赖min-width/min-height

  Windows版IE并不支援两种语法。但是在某种程度下,windows版IE可以达到相当于min-width/min-height的效果,所以只要对IE做点过滤功能,即可达到您想要的结果。

  六、若有疑问,先减少百分比

  有时候某些错误会使50%+50%成为100.1%,使网页出现问题。这时请尝试将这些值改为49%,甚至49.9%。

  七、记住“TRBL”写法

  border,margin与padding的简写语法有特定顺序,从上方开始顺时针方向转动:top,right,bottom,left. 所以margin:0 1px 3px 5px;的结果是上方无边界,右边1像素,以此类推。记住“TRBL”,您就不会弄错次序了。

  八、只要不是零的值,都要指定单位

  这需要特别注意,很多新手朋友往往忽视这个问题。不止一只强调这个问题了。

如果在用CSS设计布局时遇到BUG,请认真阅读以下内容,非常容易记忆的,不知道哪位高人把CSS BUG编成了顺口溜了!看看好不好记住呢?

一、IE边框若显若无,须注意,定是高度设置已忘记;

二、浮动产生有缘故,若要父层包含住,紧跟浮动要清除,容器自然显其中;

三、三像素文本慢移不必慌,高度设置帮你忙;

四、兼容各个浏览须注意,默认设置行高可能是杀手;

五、独立清除浮动须铭记,行高设无,高设零,设计效果兼浏览;

六、学布局须思路,路随布局原理自然直,轻松驾驭html,流水布局少hack,代码清爽,兼容好,友好引擎喜欢迎。

七、所有标签皆有源,只是默认各不同,span是无极,无极生两仪—内联和块级,img较特殊,但也遵法理,其他只是改造各不同,一个*号全归原,层叠样式理须多练习,万物皆规律。

八、图片链接排版须小心,图片链接文字链接若对齐,padding和vertical-align:middle要设定,虽差微细倒无妨。

九、IE浮动双边距,请用display:inline拘。

十、列表横向排版,列表代码须紧靠,空隙自消须铭记。

标题的意思是:用一套WordPress源程序来驱动多个域名的WordPress博客。( Multiple WordPress Blogs with a Single Installation)

工具:wp-hive插件

好处:1.不用每次WordPress升级时都多个博客分开升级,费时。

2.节省空间,一套wp解压后也要4兆多呢,再加上插件,主题等。

3.充分利用一个数据库。

4.没想好。用这个插件的朋友给我们说说吧。

阅读全文 »

由于工作需要在godaddy上买了最便宜的那款centos系统的VDS,没想到,把预装的apache,mysql,php,sendmail干掉后,居然内存占用仅9M多,真神奇。

下面就说下怎么手动卸载,首先要rpm -qa|grep mysql,这条命令可以找出安装的mysql的包,然后根据返回的信息,一个包一个包的用rpm -e 这条命令卸载即可。

exec函数族的函数说明如下:

1
2
3
4
5
6
7
#include <unistd.h>
int execl(const char *pathname,const char *arg, ...);
int execlp(const char *filename,const char *arg, ...);
int execle(const char *pathname,const char *arg, ... , char *const envp[]);
int execv(const char *pathname,char *const argv[]);
int execvp(const char *filename,char *const argv[]);
int execve(const char *pathname,char *const argv[],char *const envp[]);

函数名中含有字母“ l ”的函数,其参数个数不定。其参数由所谓调用程序的命令行参数列表组成,最后一个NULL表示结束。函数名中含有字母“ v ”的函数,则是使用一个字符串数组指针argv指向参数列表,这一字符串数组和含有“ l ”的函数中的参数列表完全相同,也同样以NULL结束。

函数名中含有字母“ p ”的函数可以自动在环境变量PATH指定的路径中搜索要执行的程序。因此它的第一个参数为filename表示可执行函数的文件名。而其他函数则需要用户在参数列表中指定该程序路径,其第一个参数pathname是路径名。路径的指定可以是绝对路径,也可以是相对路径。但出于对系统安全的考虑,建议使用绝对路径而尽量避免使用相对路径。

函数名中含有字母“ e ”的函数,比其他函数多含有一个参数envp。该参数是字符串数组指针,用于制定环境变量。调用这两个函数时,可以由用户自行设定子进程的环境变量,存放在参数envp所指向的字符串数组中。这个字符串数组也必须由NULL结束。其他函数则是接收当前环境变量。

今天需要在服务器上配置两个ftp账户a和b,两个账户需要在同一个组,并且a允许ssh登陆,而b不允许ssh登陆。两个用户登陆ftp的时候都必须要限制在自己的家目录内。

具体配置不详说,只说一下几个关键点:

1、b用户因为不具备ssh登陆权限,所以在proftpd的配置文件里要加下面这行配置
RequireValidShell off
这个配置的作用就是允许没有ssh登陆权限的用户登陆ftp

2、限制某个用户组只能访问自己家目录的配置:
DefaultRoot ~ groupname
其中 ~指的是家目录,groupname指的是你要限制的用户组。

这是一个基于记事狗微博的插件,
目的在于实现121部落积分商城的功能。
项目地址:https://github.com/ety001/hi121_shop

别的不多说,这是个开源的项目,自己随意编写代码取用吧,但是还是希望大家能共享一下。

如有疑问,请在这个页面下面留言。

这是一个基于记事狗微博的插件,
目的在于实现邀请长时间未登录微博的用户进行回访。

项目地址:https://github.com/ety001/hi121_backhome

注意:请谨慎使用该插件,该插件的使用过程具有危险性。

  • 使用方法:

    1. 把plugin目录下的hi121_backhome复制到你的网站plugin目录下,把templates/default/plugin目录下的hi121_backhome目录复制到你网站的templates/default/plugin目录下;
    2. 进入网站后台插件面板进行安装;
    3. 安装后,第一次使用之前,请先设置插件参数(必须!);
    4. 插件参数配置说明详见设置面板的各参数具体说明,其中发送方式一项当前版本可以不用选,默认使用PHP方式;
    5. 使用测试模式进行测试;
    6. 测试成功后,即可开始正常使用。
  • 参数设置样例:
    发送内容模板地址:/tpl/1/mail.html (默认模板)
    件每批发送人数:25 (测试时可以把该值调大,这样可以减少发送批次)
    间隔时间(天):15
    邮件标题:亲121部落欢迎您再次回来
    发送批次间隔时间:20 (如果你用的是免费邮箱,请尽量调大这里的时间,因为过密集的发送邮件,会导致你使用的免费邮件服务提供商屏蔽你)
    执行方式:php方式执行
    测试模式:开启 (平时不用该插件时,请选择开启项,或者直接关闭这个插件,防止误操作)
    日志名称:test_log (由于该文件记录了用户邮箱地址,防止被他人恶意采集,请使用者输入不易被猜到的名字)

  • 测试方法:

    1. 请在参数设置里,把每批发送人数调大,并把发送批次间隔时间调到0.1,这样可以节省测试时间。
    2. 测试模式一栏选择“开启”,这样插件只会进行一个发送的流程,但不会真正的发信。
    3. 在控制面板里点击“开始”前,请先确认发送总量和发送批次数以及总时间,根据发送总量和你的配置参数自己再计算下总时间看看是否一致,然后点击“开始”即可。
    4. 结束后,请检查核对日志中的发送批次数和开始前程序显示的发送批次数是否一致。如果一致,则说明测试通过,如果不一致则说明插件运转不正常。
    5. 如果不正常,基本上你现在的空间就无法使用该插件了。(另外注意:nginx用户,请查看你的nginx配置文件中的worker_processes 值是否大于1,如果等于1的话,当你执行插件的时候,整个网站将不可访问,因为php进程只有一条,还被插件给sleep掉了)
  • 关于模板:
    请自行制作模板,模板只支持且必须要有用户名和天数的预留位置,并且要先出现用户名,后出现天数。在模板中用%s代替用户名,%d代替天数。请参见自带的一个模板。

如有疑问,请在这个页面留言。

转自:http://www.vpser.net/opt/unixbench.html

UnixBench是一款不错的Linux下的VPS性能测试软件,现在说一下具体用法。

UnixBench 4.10 下载地址:http://soft.vpser.net/test/unixbench/unixbench-4.1.0-wht.tar.gz

[root@noc ~]# wget http://soft.vpser.net/test/unixbench/unixbench-4.1.0-wht.tar.gz

[root@noc ~]# tar xzf unixbench-4.1.0-wht.tar.gz
[root@noc ~]# ls
unixbench-4.1.0-wht-2  unixbench-4.1.0-wht.tar.gz

[root@noc ~]# cd unixbench-4.1.0-wht-2/
[root@noc unixbench-4.1.0-wht-2]# make
如果遇到 Error: Please install /usr/bin/time. 错误提示
centos/fedora 下运行 yum install time
ubuntu/debian 下运行 apt-get install time

[root@noc unixbench-4.1.0-wht-2]# ./Run

———————–以上为转载内容———————–

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
-----------------------下面是我现在博客用vps性能测试-----------------------

==============================================================
BYTE UNIX Benchmarks (Version 4.1-wht.2)
System -- Linux MyVPS1128 2.6.18-274.17.1.el5xen #1 SMP Tue Jan 10 18:45:09 EST 2012 i686 i686 i386 GNU/Linux
16061852 3311812 11922776 22% /

Start Benchmark Run: Thu Mar 15 14:46:20 CST 2012
14:46:20 up 25 days, 16:12, 2 users, load average: 0.00, 0.00, 0.00

End Benchmark Run: Thu Mar 15 14:57:03 CST 2012
14:57:03 up 25 days, 16:22, 1 user, load average: 15.58, 6.74, 2.98


INDEX VALUES
TEST BASELINE RESULT INDEX

Dhrystone 2 using register variables 376783.7 10077205.9 267.5
Double-Precision Whetstone 83.1 1262.3 151.9
Execl Throughput 188.3 2721.0 144.5
File Copy 1024 bufsize 2000 maxblocks 2672.0 87593.0 327.8
File Copy 256 bufsize 500 maxblocks 1077.0 27004.0 250.7
File Read 4096 bufsize 8000 maxblocks 15382.0 641324.0 416.9
Pipe-based Context Switching 15448.6 138134.4 89.4
Pipe Throughput 111814.6 851785.8 76.2
Process Creation 569.3 3992.0 70.1
Shell Scripts (8 concurrent) 44.8 553.8 123.6
System Call Overhead 114433.5 558929.2 48.8
=========
FINAL SCORE 144.7

昨天用shell脚本实现了(akawa.ink/2012/03/08/use-mv-replace-rm-without-params.html),把rm替换为mv,今天我又尝试了下写个简单的C程序来实现,也顺便练习下vim写代码,gcc编译。直接贴代码,不废话~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <string.h>
#define LANG 1000
char *file_path = "/home/ety001/.trash/";
int main(int argc, char* argv[])
{
int i;
char str[LANG] = "mv ";
for(i=1;i<argc;i++)
{
if(argv[i][0]!='-')
{
strcat(str,argv[i]);
strcat(str," ");
}
}
strcat(str,file_path);
system(str);
return 0;
}

另外需要注意的是strcat这个函数,之前,第八行一直写的是char* str = “mv “; 然后运行总是报错(段错误),原因就是因为这句如果写成这样,就已经把str指向的空间长度指定的了,这样strcat函数再向这个字符串后面加字符串的时候肯定就会溢出了。详细的说明看这里:http://topic.csdn.net/t/20030525/20/1832507.html,所以说写这种跟指针打交道的代码还是要小心呀。

0%