有一个人,她五年后想拥有自己的个人专辑并且专辑大卖、拥有个人的工作室、能与许多音乐精英共处,成为一名著名的歌手。
那么,在第五年前的第四年,她要忙于制作自己的个人专辑,从音乐、组织、设计、包装等各方面紧锣密鼓地进行制作。
在第三年里,她要成立自己的个人工作室,接触各种各样的音乐人,开始寻找能与之共处的音乐精英,为专辑的创作组织自己的团队。
在第二年,她要开始创作自己的音乐,东奔西跑,把自己的作品投递给唱片公司或其他音乐人,制定自己的风格,争取每个机会。
在第一年,她要参加各种基本练习:声乐、舞蹈、词曲创作等,还要拥有录音设备,为接下来做准备。
这些安排必须建立在她的音乐天赋、物质基础以及社交能力之上。只有这样,到了第五年,她才能推出自己的专辑并实现自己的愿望。
或许有人说,五年的时间太短了,根本就不可能完成。但是,只要你有想法,并也能像她一样一步步安排好该做什么,怎么做,即使不能如期完成,收获还是很大的。

五年后我想成为什么样的人,应该怎么倒推呢,其实就是没想清楚才想选择一条最危险的路来充实自己……,可是这样对么。。。

回西安的第一天又被发短信催着去面试,介于无聊,所以准备去被鄙视下,两个月的实习会让面试那些东西又忘光了。。在其他人都是链表节点的删除、字符串循环左移一位的题目下。。。我幸运的被问了一句“写个大数乘法吧”,So,只好模拟手算过程,然后想边计算边搞进位,结果写的漏洞百出的被鄙视了,话说成天php的,写变量的时候都老容易写出来$。

任何一个数都可以表示成为  x = a(n) * 10^n + a(n-1)*10(n-1) + … + a(0)的形式,

则 x*y = (a(n) * b(n))*10^(2n) + (a(n)*b(n-1) + a(n-1)*b(n))*10^(2n-1) + … + a(0)*b(0)

程序中可以直接按上述公式乘,乘完的结果再做进位的调整

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void reverse(char *str)
{
     int len = strlen(str);
     int i=0;
     for(i=0;i<len/2;i++)
     {
          char tmp = str[i];
          str[i] = str[len-i-1];
          str[len-i-1] = tmp;
     }
}

void mul(int *ret,char *a,char *b)
{
     int lena = strlen(a);
     int lenb = strlen(b);
     int i,j;
     for(i=0;i<lena;i++)
     {
         for(j=0;j<lenb;j++)
         {
             ret[i+j] = ret[i+j] + (a[i] - '0') * (b[j] - '0');
         }
     }
     for(i=1;i<lena + lenb + 2;i++)
     {
          ret[i] += ret[i-1]/10;
          ret[i-1] = ret[i-1]%10;
     }
}

int main(void)
{
    char a[256],b[256];
    scanf("%s%s",a,b);
    reverse(a);
    reverse(b);
    int lena = strlen(a);
    int lenb = strlen(b);
    int *ret = (int *)malloc(sizeof(int)*(lena + lenb + 2));
    int i=0;
    for(i=0 ; i<lena + lenb + 2;i++)
       ret[i] = 0;
    mul(ret,a,b);
    i = lena + lenb + 1;
    while(ret[i] == 0)
    {
       i--;
       if(i == -1)
         break;
    }
    if(i == -1)
         printf("0\n");
    else
    {
        while(i>=0)
        {
           printf("%d",ret[i]);
           i--;
        }
        printf("\n");
    }
    system("pause");
    return 0;
}

虽然php手册上说fopen和file_get_contents都可以直接给url参数获取内容,但总是会报如下这个错误

Warning: fopen(http://leoncom.org/) [function.readfile]: failed to open stream: HTTP request failed!

采用curl获取url数据就可以避免这种时不时的错误了

[code language="php"]
function geturldata($url)
{
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10);
$content = curl_exec($ch);
return $content;
}
[/code]

, ,

图片是从别人文章弄来的,自己的寄回家了,差点也引发悲剧。。。具体的悲剧请看后文

外包装

阅读全文…

, ,

没事在公司想换个主题,以前的主题太单调了,看到了iblog,结果刚一点启用,整个网页就HTTP  500了,在公司又不能ssh…网络访问各种严格

回到家ssh到主机上一看error_log

Call to undefined function register_nav_menus 以及 Call to undefined function get_template_part

查wp手册,这两个函数都是wp3.0开始支持的,俺还2.9……google了下,还有个wp_nav_menu函数也是since 3.0.0

直接屏蔽调用register_nav_menus的代码就可以进wp-admin了,懒得折腾的就直接别的主题吧。

, ,

bom和上面的?>后有trailing whitespaces都有可能是页面出现异常,导致空白的原因,应该在程序中尽量杜绝,因为这两个错误很难调试,而不像动作未定义之类的访问accesslog会有日志。

为了做检查代码库中php的trailing whitespace,用正则表达式

\?>\s+$

来验证,应该是可以匹配到的,在?>后还有空白,但是跑出来的结果总是明明没有尾部空白也会报告,原来是unix下用vi查看文件的时候会有0d0a(fileformat = doc),或者0a(fileformat = unix),在win没这个问题,那个正则就可以正确匹配php尾部空白。但当这个文件上传到unix下用vi查看的时候就会带上LF,同一个文件用UE在win下看16进制和上传到unix后用vi的xxd模式。

阅读全文…

php文件省略尾端的 ?> 是可选的,但是可能的话,省略它是一个好方法,如果?>后续有空白,就会被当作内容输出,就可能会引起各种错误。。和bom的效果差不多,特别是header之类的。

Note: The closing tag of a PHP block at the end of a file is optional, and in some cases omitting it is helpful when using include() or require(), so unwanted whitespace will not occur at the end of files, and you will still be able to add headers to the response later. It is also handy if you use output buffering, and would not like to see added unwanted whitespace at the end of the parts generated by the included files.

BOM——Byte Order Mark,就是字节序标记。在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE”。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。   
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。Windows就是使用BOM来标记文本文件的编码方式的。

PHP对BOM是不会进行特别处理,只会被原原本本输出的,这就造成比如header之类的函数会报warning–”header has already sent”,session cookie 失效,页面却是一片空白或者在页顶处有一行空白导致页面乱套等各种莫名问题。

因此需要对代码库中的检查并替换bom标记,避免系统不出现异常

function checkBOM ($filename) {
	global $auto;
	$contents=file_get_contents($filename);
	$charset[1]=substr($contents, 0, 1);
	$charset[2]=substr($contents, 1, 1);
	$charset[3]=substr($contents, 2, 1);

	if (ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191) {
			$rest=substr($contents, 3);
			file_put_contents($filename,$rest);
			echo 'WITHBOM,REMOVED';
	}
	else
	{
		echo 'WITHOUT BOM';
	}
}