用PHP读取MP3的标签信息ID3v1版

读取部分:

PHP代码
  1. $filename = "srkl.mp3";  
  2. $fp = fopen($filename"rb"or die("Unable to open this mp3.");  
  3. fseek($fp,-128,SEEK_END);  
  4.   
  5. $header = fread($fp,3); // Header[3]  
  6. if (‘TAG’!=$headerdie("Unknown Header Information:".$header);  
  7.   
  8. $title = trim(fread($fp,30)); // Title[30]  
  9. $artist = trim(fread($fp,30)); // Artist[30]  
  10. $album = trim(fread($fp,30));   // Album[30]  
  11. $year = fread($fp,4);   // Year[4]  
  12. $comment = trim(fread($fp,28)); // Comment[28]  
  13.   
  14. fseek($fp,1,SEEK_CUR);  // reserve  
  15.   
  16. $track = ord(fread($fp,1)); // Track[1]  
  17. $genre = ord(fread($fp,1)); //Genre[1]  
  18. fclose($fp);  
  19.   
  20.   
  21. echo " 
  22. Title:$title 
  23. Artist:$artist 
  24. Album:$album 
  25. Year:$year 
  26. Comment:$comment 
  27. Track:$track 
  28. Genre:$genre 
  29. ";  

写入:

PHP代码
  1. ////////////////////////////////  
  2. $title = "生日快乐";  
  3. $artist = "小S";  
  4. $album = "旅程";  
  5. $year = "2006";  
  6. $comment = "这是我的第一个专辑哦!";  
  7.   
  8. //fseek($fp,1,SEEK_CUR);    // reserve  
  9.   
  10. $track = "1";  
  11. $genre = "4";  
  12.   
  13. // 规定字节,不足用\0补  
  14. $title = str_padsubstr($title,0,30) ,30,chr(0));  
  15. $artist = str_padsubstr($artist,0,30) ,30,chr(0));  
  16. $album = str_padsubstr($album,0,30) ,30,chr(0));  
  17. $year = str_padsubstr($year,0,4) ,4,chr(0));  
  18. $comment = str_padsubstr($comment,0,28) ,28,chr(0));  
  19. $track = chr(intval($track));  
  20. $genre = chr(intval($genre));  
  21.   
  22. //  
  23. $mp3 = substr(file_get_contents("srkl.mp3"),0,filesize(‘srkl.mp3′)-128);  
  24. $fp = fopen("1.mp3","wb"or die("Unable open.");  
  25. fwrite($fp,$mp3);  
  26. fwrite($fp,"TAG");  
  27. fwrite($fp,$title);  
  28. fwrite($fp,$artist);  
  29. fwrite($fp,$album);  
  30. fwrite($fp,$year);  
  31. fwrite($fp,$comment);  
  32. fseek($fp,1,SEEK_CUR);  
  33. fwrite($fp,$track);  
  34. fwrite($fp,$genre);  
  35. fclose($fp);  

参考资料:
(来自CSDN)
关于Mp3文件的ID3v1标签的格式错误地方指正!首先非常感谢原作者,给我非常大的帮助,有误的地方我给予指正,望这能表达出我是对原作者的一些感谢! 
    原文地址: 
  http://dev.csdn.net/develop/article/14/14798.shtm 
  
    ID3V1比较简单,它是存放在MP3文件的末尾,用16进制的编辑器打开一个MP3文件,查看其末尾的128个顺序存放字节,数据结构定义如下: 
      char   Header[3];         /*标签头必须是”TAG”否则认为没有标签*/ 
    char   Title[30];         /*标题*/ 
    char   Artist[30];       /*作者*/ 
    char   Album[30];         /*专集*/ 
    char   Year[4];         /*出品年代*/ 
    char   Comment[30];       /*备注*/ 
    char   Genre;         /*类型*/ 
      ID3V1的各项信息都是顺序存放,没有任何标识将其分开,比如标题信息不足30个字节,则使用’\0’补足,否则将造成信息错误。 
  
  
  
  结构应该是: 
  char   Header[3];         /*标签头必须是”TAG”否则认为没有标签*/ 
  char   Title[30];         /*标题*/ 
  char   Artist[30];       /*作者*/ 
  char   Album[30];         /*专集*/ 
  char   Year[4];         /*出品年代*/ 
  char   Comment[29];       /*备注*/ 
  byte   track;       /*音轨*/ 
  byte   Genre;         /*类型*/ 
  
  以上仅是个人看法,有误之处,还请指正!

UTF-8转unicode PHP版本+Javascript版本

PHP代码
  1. function uni($str) {  
  2.     $ret = '';  
  3.     for($i=0;$i<mb_strlen($str,'utf-8');$i=$i+1) {  
  4.         $ret .= "&#" . uniord(mb_substr($str$i, 1, 'utf-8')) . ";";  
  5.     }  
  6.     return $ret;  
  7. }  
  8. echo uni("海海家园");  
  9.   function unichr($u) {  
  10.     return mb_convert_encoding(pack("N",$u), mb_internal_encoding(), 'UCS-4BE');  
  11.   }  
  12.     function uniord($u) {  
  13.     $c = unpack("N", mb_convert_encoding($u'UCS-4BE''UTF-8'));  
  14.     return $c[1];  
  15.   }  

 

Read More

从程序员创业谈起

离开雅虎中国后的周鸿袆现在的身份是IDG公司的投资合伙人,手中拿着五亿美金用来做风投的他自然对创业有着说不完的话题。由于周鸿袆出身程序员,也一直是本刊的忠实读者,他希望一方面站在投资商的角度,同时以一种过来人的身份来探讨“程序员创业”这个话题。

一个周五的傍晚,在北京光华路的一个酒吧中,本刊约到周鸿袆进行这次对话。从昌平远道赶来的周鸿袆由于塞车而晚到了半个小时。由于开会讲了一天的话,他的声音有些嘶哑。不过在草草的吃了晚饭后,周鸿袆仍然用其快速的语调表达了自己的观点。


记者:我已经看到您在其它的媒体上接受了一些采访,也谈到了很多关于创业的话题。面对程序员这个群体,讲创业有什么特别的地方呢?

周鸿袆:的确如此,最近由于我的身份,只接受创业方面的话题。关于程序员创业,我之所以愿意谈我的观点,是因为我是程序员出身,也是从小公司做起来的,我自认为对待很多程序员个人包括共享软件作者和一些小网站还是很好的。我希望和他们分享一些经验和体会。

首先,我想说的是聪明人不一定能成功,很多程序员很聪明,但我一看就知道他们不会成功。因为我看到了一些问题,而且现在太多程序员存在很多误解。因此,我希望把我的观点告诉程序员。或许有一些程序员能够清醒,某个人可能因为我的某一句话有了感觉,对他以后的成长产生了帮助,这就足够了。

要知道,程序员总是以为自己优秀所以就能成功,其实不是。中国的程序员大部分是盲目的:看看CSDN的论坛就能够感觉到,要么有一群人自我感觉极端的良好,以专家自居,要么就是一群蓝领埋怨公司和社会环境不行,待遇不好。

应该说,中国程序员创业的成功率也是很低的。放眼望去,中国互联网成功的人士有几个是真正写过十年软件的。事实上,现状和我们所能听到的媒体宣传的故事很不一样。

很多程序员的最高理想就是写一个共享软件,一年可以挣几百万。但我希望谈的不是告诉程序员如何挣钱,挣钱很容易,而是要告诉程序员如何去创业。比如虽然FlashGet的作者收入很高,衣食无忧,但从创业的角度看,它并没有以商业公司的方式创业成功。


记者:那根据您的观察,中国的程序员在创业方面欠缺哪些?

周鸿袆:首先,我看到中国程序员的合作心态非常缺乏,我认为这是中国程序员最大的问题,当然这是有很多原因的。

大家经常说这句话:态度决定一切。但事实上好程序员基本上都比较傲气,因为程序员往往会觉得自己在做世界上一件十分伟大的事情,这就是驱动机器,修改一行代码,机器就能够工作,可以产生各种不同的行为。这很容易会让程序员产生一种错觉,认为自己可以Control Everything。程序员的自信在编程上是非常需要的,但不是适合一切场合。如果我们不说这些,可能很多程序员到现在还不知道自己错在哪里,仍然认为自己是King of the World。

事实上,程序员的能力只是控制了一个机器。但创业仅仅具备了和机器打交道这一种能力是绝对不够的,他还需要和合作伙伴、竞争对手、投资人、员工甚至整个社会环境打交道。很多程序员因为已经习惯了和机器打交道,不善于也不愿意其它的工作。很多程序员会内心认为“营销不是很简单嘛,市场很简单啊,管理也很简单啊,”我认为这种心态是非常害人的。

程序员还是一个很固执的人群,他觉得自己是机器的统帅,因此不会灵活,不会妥协。我当时也喜欢写程序,但我知道如果自己沉迷于写程序,肯定没戏,所以是逼着自己改变角色。


记者:在做公司的过程中,您应该也经常和不同层次的程序员打交道吧?有什么深刻的故事和印象?

周鸿袆:这两天,我收到几封程序员的来信。有一封信中大意说“我是个如此优秀的程序员,为什么我就不能成功呢,请你指点。这里有我的blog地址,看完你就会了解我了。”我想说的是:如果真的希望别人帮忙,就要把情况真实的说出来,而不是上来就说自己很优秀,这种语言就会让别人觉得很不舒服,不是很好的交流方式。我还真看了那个blog,但看完之后,觉得这个程序员就是一个空想狂。

可以说,很多程序员实际上是优秀带来了自负,这种自负使得其不要说创业,可能在在公司中工作也会遇到问题。所以,我甚至认为程序员在创业方面遇到的困难比其它类型的人员更大。如果程序员希望主导一个创业,可能首先就要逼自己不是一个程序员。


记者:所以我们不能只单纯谈程序员创业,而是要从程序员创业谈起。为了避免这些问题,要做哪些转变呢?

周鸿袆:是的,要从创业谈起。程序员首先要学会和别人合作。提到这点,很多程序员都会说“我正在带着其他程序员写程序啊,我会合作啊。”但这种合作是片面的,我所谈的不仅仅是程序员和程序员之间的合作,而是包括了程序员和其它各种角色之间的合作。程序员相亲,他们的语言比较能够容易理解。但作为一个程序员,你能不能商业人员、销售人员很好的合作呢。

我这些年还看到很多这样的例子:程序员动不动就把目标定为比尔·盖茨。其实,比尔盖茨不应该成为程序员崇拜的目标对象,这会让程序员迷失方向,因为微软另外一个创始人保罗·艾伦才是真正的程序员。再看其它一些例子,Google的第20名程序员都可以获得五亿美元。Adobe公司两个创始人也是一个精通技术,一个对商业精通,这样的搭配才能够更好的成功。因此,对于很多程序员来说,一定要找准真正的榜样,不要被外界的故事迷惑了头脑。如果剖开一些故事的外表,你会发现国外很多成功的程序员,背后一定有一个很强大的商业感觉的人或者一个团队。


记者:那也就是说,程序员应该作为一种创业的参与者,而不一定要做主导者了?

周鸿袆:程序员的商业感觉其实并不是很好。即便有商业感觉,其实这只是一个灵感,一个创意,但要要做成、做大还需要一系列的管理、市场、运营,这些对于程序员是不可想象的。程序员要明白,在自己不擅长的领域,找到一个可以弥补自己缺陷的合作团队才是出路。加入一个创业团队,可能个人占10%,但因为更容易成功,而且团队可以做100分的事情。而如果只是一个人做,很可能就失败了。

这方面,国外的程序员对自己的长短比较清楚。在硅谷,很多程序员技术上都很牛,但他们都非常知道自己只是在技术这个领域水平比较高,出了这个领域,自己什么都不是。正因为有了这种心态,他们特别懂得与人合作。我认为国外的程序员已经普遍意识到了这点,他们很愿意成为创业团队中的一员而并非自己创业。

因此,程序员需要调整心态,不要把自己当作精英人物,要承认自己在编程方面是优秀的,但永远有人比自己更优秀,对于其它的领域,很可能自己很无知。要知道,其实程序员的选择其实是最少的,因此抱有开放的心态是最重要的。


记者:你认为国内的程序员在哪些地方还与创业的要求存在一定差距?

周鸿袆:我认为现在的很多程序员经验过于不足,他没有认真踏实做过很多工作就奢谈创业。如果一个程序员没有在编程方面深入过,没有积累,也就是半瓶子醋。这样的程序员我接触过很多,他们自己也不清楚问题出在哪里,让人感觉又爱又恨。我认为程序员既然要凭借自己的技术,那就一定要踏实,要能够实现任何创意。

但现在一些程序员自己没有商业意识,却又很自负,不相信别人,不理解的事情就不做。我遇到过很多程序员,他们对公司做什么方向都质疑。他们希望自己先想清楚,可是一想就浪费了很长时间。很多程序员就可悲在这里,积累的不多,看不到方向,但他也不相信自己的公司和老板,这是一个悖论,需要程序员深刻反省。要知道,每个公司都有懂商业的人。

就这样,一些程序员极端自负,另外有一些程序员碰了很多钉子之后,感觉很自卑,于是便认为国内软件业不行,最后出国或者打工,很少有程序员能对自己能做公正的评价。


记者:您是否认为国内的环境是造成程序员浮躁的因素呢?

周鸿袆:这个倒问住我了,我以前没有仔细考虑过这点。但我想,不管怎样,程序员需要先从自身找问题,因为大环境就是这样了。我承认一个现实:程序员生存状态并不是很好,但程序员很多报怨其实是一种不切实际的期望值和自身的缺陷产生的反差。

首先,产品没有大小,只有市场的大小。很多人总是觉得这也小,那也看不上。认为公司做的产品很无聊,要做就要像CSDN论坛中某些人宣扬那样:做游戏一定要做3D引擎,好像只有这样才够牛。这其实就是一种浮躁。很多程序员写软件总是很多bug,基础知识也不牢固,没有参加几个项目,没有写过十万行代码,就奢谈做大项目,这有价值吗?

而且我还发现有些程序员特别愤青,骂环境,骂老板,其实这只能把自己的心态搞的很坏。很多人刚进公司时做的很差,虽然工资少,但他没有想到给公司增加了很多bug,公司实际上是在给他出学费。论坛上大家都在讨论哪里活干得少钱拿的多。甚至还有人列了一些黑名单。这种做法的结果就是程序员自己将周围环境搞的乌烟瘴气了。

有的程序员还非常喜欢指点江山,指点公司。我个人觉得这不是不可以,但指责别的公司对个人没有什么好处,因为存在就是合理的。如果看不到,恰恰证明是自己看不到。我看到很多程序员也写blog,技术交流的我认为非常好,但有些人是写评论。我是觉得程序员不要做评论家,中国不缺评论家,最缺的是实干家。

总之,程序员一般过于自我。总生活在自我的世界中,就不可能真正了解世界是什么。我很早就意识到了这些问题,也努力的去客服。我的经验就是看别人如何做的好,为什么能够做的好,什么是我所不能理解。程序员要学会慢慢站在别人立场上看问题。


记者:您对希望创业的程序员有哪些建议呢?

周鸿袆:对程序员来说,现在要做的也很简单,这就是需要大量的实践,要慢慢培养对产品,对商业的感觉。我的建议说出来可能有些忠言逆耳。对绝大多数程序员来说,自己一个人成功的机率是很小的,所以我认为加入一个创业的团队可能更为合适。现在有很多初期创业的公司,也需要很多优秀的程序员加盟。如果有理想,可以选择加入一个团队,也有相应的股份,这方面我可以充当一个桥梁。

Read More

陈瑞-白狐

白狐(合唱)
演唱:陈瑞 刚辉
作词:玉镯儿
作曲:枫林
编辑:鸡肋

(女)我是一只修行千年的狐
千年修行 千年孤独
夜深人静时 可有人听见我在哭
灯火阑珊处 可有人看见我跳舞
(男)我是一介书生独醉江湖
十年寒窗 十年苦读
金榜题名时 功名利禄光宗耀祖
洞房花烛后 阴阳相隔人鬼殊途
(女)我爱你时 你正一贫如洗寒窗苦读
离开你时 你正金榜题名洞房花烛
能不能为你再跳一支舞
我是你千百年前放生的白狐
你看衣袂飘飘 衣袂飘飘
海誓山盟都化做虚无
(男)能不能为我再跳一支舞
只为你永别时的那一次回眸
你听仙乐飘飘 仙乐飘飘
今生今世却只能虚度

(男)我是一介书生独醉江湖
十年寒窗 十年苦读
金榜题名时 功名利禄光宗耀祖
洞房花烛后 阴阳相隔人鬼殊途
我爱你时 你是一只千年修行的狐
失去你时 你已烟消云散万劫不复
(女)能不能为你再跳一支舞
我是你千百年前放生的白狐
你看衣袂飘飘 衣袂飘飘
海誓山盟都化做虚无
(男)能不能为我再跳一支舞
只为你永别时的那一次回眸
你听仙乐飘飘 仙乐飘飘
今生今世却只能虚度
(合)能不能为你(我)再跳一支舞
我(你)是你(我)千百年前放生的白狐
看我衣袂(你听仙乐)飘飘衣袂(仙乐)飘飘
天长地久都化做虚无(今生今世却只能虚度)
能不能为你(我)再跳一支舞
只为我(你)永别时的那一次回眸
看我衣袂(你听仙乐)飘飘衣袂(仙乐)飘飘
天长地久都化做虚无(今生今世却只能虚度)
能不能为你(我)再跳一支舞
我(你)是你(我)千百年前放生的白狐
看我衣袂(你听仙乐)飘飘衣袂(仙乐)飘飘
天长地久都化做虚无(今生今世却只能虚度)

Read More

PHP里的图片编码

PHP代码
  1. <?php  
  2. $str=<<<IMGEOF  
  3. GIF89a%12%00%12%00%A2%00%00%FC%FE%D4%C6%C6%C6%84%84%84%00%00%00%FF%FF%FF%00%00%00%00%00%00%00%00%00%21%F9%04%05%14%00%04%00%2C%00%00%00%00%12%00%12%00%00%03HH%B2%DC%F4%F0%09%40%2B%15%23%C2%19%3A%F0S%A6MV%40%0D%A8%B8%7D%9EY%05%AAd%7D%F4%17%2B%AC%D9%B9%F08%CF%BD%08gG%B4%F9%7E%AF%DB%90%D8R%22%93%C7%D7%CE%28%7CR%82%1B%A6V%99%EAz5%E0%B0x%ACI%00%00%3B  
  4. IMGEOF;  
  5. header("Content-Type: image/gif");  
  6. echo urldecode($str);  
  7. ?>  

上面代码将输出一张图片。

大小: 841 bytes
尺寸: 33 x 32
浏览: 0 次
点击打开新窗口浏览全图

Read More

I have a dream &#8211; Martin Luther King 英文原稿 中文翻译

在二十世纪六十年代,美国人逐渐认识到,南北战争所致力解放黑奴运动,并没有产生使美国黑人成为完全平等公民的预效果。十九世纪后期,美国黑人的公民权利 受到州和地方歧视黑人的法规和惯例层层约束和限制。在日常生活中,美国黑人常常被隔离开来,不能与白人同在一个学校上学,乘坐同一公共交通工具,同在一个 地方居住。黑人不能充分参与美国社会生活,甚至在一百年后仍然和奴隶一样被剥夺各种权利,他们生活水准的提高与国家的发展并非完全相称。因此美国黑人的平 等问题成为一个严重的社会问题。

 

 

Read More