在友播找王菲的《闷》居然排在后面N多页,匪夷所思,友播算是我觉得还行的网站,品味比google music稍微好那么一些,但也好不到哪里去。一个字:真烂!
公司一堆不太熟的人,唱歌实在不是什么好打算,品味差异太大了,听靡靡之音实在烦得很,来点痛快的行不?
2009/03/18
2009/03/17
Notepad++运行python、php
F5弹出运行框
Python:
PHP:
可以保存上述命令为快捷方式,想修改快捷键,在 "设置->管理快捷键->Run Commands" 中修改。
$(FULL_CURRENT_PATH) 的含义是当前文件的完整路径,这是 Notepad++ 的宏定义,更多的相关宏可以参见官方FAQ:Run external tools。注意要用引号括起来,防止路径中间有空格。
更多CMD命令,运行cmd.exe,敲入help命令即可。
EXIT 退出 CMD.EXE 程序(命令解释程序)。
PAUSE 暂停批文件的处理并显示消息。
ECHO.(或ECHO\) 打印换行。
参考:http://arccos.blogspot.com/2009/03/notepad-python.html
Python:
cmd /k C:\Python25\python.exe "$(FULL_CURRENT_PATH)" & ECHO. & PAUSE & EXIT
PHP:
cmd /k D:/server/php/5.2.5/php.exe "$(FULL_CURRENT_PATH)" & ECHO. & PAUSE & EXIT
可以保存上述命令为快捷方式,想修改快捷键,在 "设置->管理快捷键->Run Commands" 中修改。
$(FULL_CURRENT_PATH) 的含义是当前文件的完整路径,这是 Notepad++ 的宏定义,更多的相关宏可以参见官方FAQ:Run external tools。注意要用引号括起来,防止路径中间有空格。
更多CMD命令,运行cmd.exe,敲入help命令即可。
EXIT 退出 CMD.EXE 程序(命令解释程序)。
PAUSE 暂停批文件的处理并显示消息。
ECHO.(或ECHO\) 打印换行。
参考:http://arccos.blogspot.com/2009/03/notepad-python.html
没事做了几道PHP的面试题,传说是新浪的
1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
思路:是标准URL,应该是符合规范的。所以没有考虑复杂的情况。从左边寻找到第一次出现‘?’的位置,然后从此位置向前寻找‘.’号,中间部分既是扩展名。
2.在 HTML 语言中,页面头部的 meta 标记可以用来输出文件的编码格式,以下是一个标准的 meta 语句
<META http-equiv='Content-Type' content='text/html; charset=gbk'>
请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的类似 meta 标记中的 charset 部分值改为 big5
请注意:
(1) 需要处理完整的 html 页面,即不光此 meta 语句
(2) 忽略大小写
(3) ' 和 " 在此处是可以互换的
(4) 'Content-Type' 两侧的引号是可以忽略的,但 'text/html; charset=gbk' 两侧的不行
(5) 注意处理多余空格
思路:这个写的比较弱,就替换而已。
3. 写一个函数,算出两个文件的相对路径
如 $a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
计算出 $b 相对于 $a 的相对路径应该是 ../../c/d将()添上
思路:从两个文件的根目录开始比较,找到不一致的地方,然后计算第一个文件需要返回至此的‘../’步数,再就是打开另一个文件的目录路径。函数返回-1表示两个路径完全一致。
4.简要说明PHP的垃圾回收机制
答:引用计数。引用数为零时即销毁。
5.如何高并发写文件?
答:加锁。一种可以用flock()来操作,还是就写一个xxx.lock的文件或目录作为锁。有锁时等待,写入时加锁,写完释放锁。高并发可以写入副本,再合并文件,这样会比较复杂一点。
6.找猴王。N个猴子围成一圈,从第一开始报数,1、2、3...,报M者退出,然后重新报数,M者退出,重复此操作直到剩下一只猴,此猴为猴王,问猴王的编号?
思路:猴子看成元素值为1,2,3...N的一维数组。M%N求余,余数即本轮退出者,unset()此元素,继续下一轮,直到数组元素为一,此元素的值即为猴王编号。在M%N过程中,N的数目为剩下猴子的总数,每轮递减一。PHP注意点:使用array_splice()而不是unset(),array_splice()的key值会自动计算,而unset()则保持原始的索引。
思路:是标准URL,应该是符合规范的。所以没有考虑复杂的情况。从左边寻找到第一次出现‘?’的位置,然后从此位置向前寻找‘.’号,中间部分既是扩展名。
PHP语言: 从一个标准 url 里取出文件的扩展名
<?php
function findFileTypeFromUrl( $url )
{
if( $url == "" )
return false;
$r = strpos($url, '?');
if( $r != false )
{
$l = strrpos( substr($url, 0, $r), '.');
//echo '1';
return substr($url, $l+1, $r-$l-1);
}
else
{
$l = strrpos($url, '.');
//echo '2';
return substr($url, $l+1);
}
}
?>
function findFileTypeFromUrl( $url )
{
if( $url == "" )
return false;
$r = strpos($url, '?');
if( $r != false )
{
$l = strrpos( substr($url, 0, $r), '.');
//echo '1';
return substr($url, $l+1, $r-$l-1);
}
else
{
$l = strrpos($url, '.');
//echo '2';
return substr($url, $l+1);
}
}
?>
2.在 HTML 语言中,页面头部的 meta 标记可以用来输出文件的编码格式,以下是一个标准的 meta 语句
<META http-equiv='Content-Type' content='text/html; charset=gbk'>
请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的类似 meta 标记中的 charset 部分值改为 big5
请注意:
(1) 需要处理完整的 html 页面,即不光此 meta 语句
(2) 忽略大小写
(3) ' 和 " 在此处是可以互换的
(4) 'Content-Type' 两侧的引号是可以忽略的,但 'text/html; charset=gbk' 两侧的不行
(5) 注意处理多余空格
思路:这个写的比较弱,就替换而已。
<?php
function replaceCharset( $string )
{
echo preg_replace( "/(\<meta\40+http\-equiv\=[\'|\"]?content\-type[\'|\"]?\40+content\=[\'|\"]text\/html;\40*charset\=)(gbk)[\'|\"]\40*\>/i","\${1}big5>",$string );
}
function replaceCharset( $string )
{
echo preg_replace( "/(\<meta\40+http\-equiv\=[\'|\"]?content\-type[\'|\"]?\40+content\=[\'|\"]text\/html;\40*charset\=)(gbk)[\'|\"]\40*\>/i","\${1}big5>",$string );
}
3. 写一个函数,算出两个文件的相对路径
如 $a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
计算出 $b 相对于 $a 的相对路径应该是 ../../c/d将()添上
思路:从两个文件的根目录开始比较,找到不一致的地方,然后计算第一个文件需要返回至此的‘../’步数,再就是打开另一个文件的目录路径。函数返回-1表示两个路径完全一致。
PHP语言: 算出两个文件的相对路径
<?php
function findDirDiff($a, $b)
{
if( $a{0} != '/' || $b{0} != '/' )
{
return false;
}
$a_array = explode('/', $a);
$b_array = explode('/', $b);
$a_size = count($a_array)-1;
$b_size = count($b_array)-1;
for( $i=0 ; $i <= $a_size; $i++)
{
if( (!isset($b_array[$i])) || $a_array[$i] != $b_array[$i] )
{
$i--;
break;
}
}
$a_upSteps = $a_size - $i;
if( $a_upSteps == -1)
{
return -1;
}
for( $i++; $i < $b_size ; $i++ )
{
$b_upDir .= '/'.$b_array[$i];
}
return str_repeat('../', $a_upSteps-1).substr($b_upDir,1);
}
function findDirDiff($a, $b)
{
if( $a{0} != '/' || $b{0} != '/' )
{
return false;
}
$a_array = explode('/', $a);
$b_array = explode('/', $b);
$a_size = count($a_array)-1;
$b_size = count($b_array)-1;
for( $i=0 ; $i <= $a_size; $i++)
{
if( (!isset($b_array[$i])) || $a_array[$i] != $b_array[$i] )
{
$i--;
break;
}
}
$a_upSteps = $a_size - $i;
if( $a_upSteps == -1)
{
return -1;
}
for( $i++; $i < $b_size ; $i++ )
{
$b_upDir .= '/'.$b_array[$i];
}
return str_repeat('../', $a_upSteps-1).substr($b_upDir,1);
}
4.简要说明PHP的垃圾回收机制
答:引用计数。引用数为零时即销毁。
5.如何高并发写文件?
答:加锁。一种可以用flock()来操作,还是就写一个xxx.lock的文件或目录作为锁。有锁时等待,写入时加锁,写完释放锁。高并发可以写入副本,再合并文件,这样会比较复杂一点。
6.找猴王。N个猴子围成一圈,从第一开始报数,1、2、3...,报M者退出,然后重新报数,M者退出,重复此操作直到剩下一只猴,此猴为猴王,问猴王的编号?
思路:猴子看成元素值为1,2,3...N的一维数组。M%N求余,余数即本轮退出者,unset()此元素,继续下一轮,直到数组元素为一,此元素的值即为猴王编号。在M%N过程中,N的数目为剩下猴子的总数,每轮递减一。PHP注意点:使用array_splice()而不是unset(),array_splice()的key值会自动计算,而unset()则保持原始的索引。
PHP语言: 找猴王
<?php
/**
* 找猴王。N个猴子围成一圈,从第一开始报数,1、2、3...,报M者退出,然后重新报数,M者退出,重复此操作直到剩下一只猴,此猴为猴王,问猴王的编号?
*/
function findKing($n, $m)
{
$q = range(1, $n);
while( ($n=count($q)) > 1 )
{
array_splice($q, $m%$n-1, 1);
}
return $q[0];
}
/**
* 找猴王。N个猴子围成一圈,从第一开始报数,1、2、3...,报M者退出,然后重新报数,M者退出,重复此操作直到剩下一只猴,此猴为猴王,问猴王的编号?
*/
function findKing($n, $m)
{
$q = range(1, $n);
while( ($n=count($q)) > 1 )
{
array_splice($q, $m%$n-1, 1);
}
return $q[0];
}
2009/03/06
沉浮的兄弟
《疯狂的赛车》插曲:搞笑黑社会之《沉浮的兄弟》。
《沉浮的兄弟》
词:芊合
曲:戎祥
踏入江湖是我的命
不是甘愿做坏子
做兄弟好过时
打刚(每天)穿金又戴银
有时嘛会手头紧
结拜兄弟逗撒挺(帮忙过难关)
那是遇到垃圾的兄弟
丫撒不鲁归大堆(烂七八糟一大堆)
谁知命运的安排
乎阮(让我)失败一次搁(又)一次
拿出兄弟的勇气
总会等到出头天
简评:
这是一首新创的闽南风格的歌曲,戎祥在电影《疯狂的赛车》中饰演一位台湾黑社会老大,就是那个胖子。为了这部电影,他创作并演唱的了这首风格独特的歌曲,使得其在剧中的人物更具喜剧和搞笑色彩,为电影增添了许多别样的味道,看过之后,依然会为那些镜头,那歌声所征服!
(以上内容均来自互联网)
2009/02/25
cookie读写类
JavaScript语言: cookie操作代码
smartclick_Cookie = {
get: function(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = smartclick_Cookie.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
},
set: function(key, value, ttl, path, domain, secure) {
cookie = [key+'='+ encodeURIComponent(value),
'path='+ ((!path || path=='') ? '/' : path),
'domain='+ ((!domain || domain=='')? window.location.hostname : domain)];
if (ttl) cookie.push( 'expires='+smartclick_Cookie.hoursToExpireDate(ttl));
if (secure) cookie.push('secure');
return document.cookie = cookie.join('; ');
},
//@param integer ttl Time To Live (hours)
hoursToExpireDate: function(ttl) {
if (parseInt(ttl) == 'NaN' ) return '';
else {
now = new Date();
now.setTime(now.getTime() + (parseInt(ttl) * 60 * 60 * 1000));
return now.toGMTString();
}
},
trim: function( text ) {
return (text || "").replace( /^\s+|\s+$/g, "" );
}
}
get: function(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = smartclick_Cookie.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
},
set: function(key, value, ttl, path, domain, secure) {
cookie = [key+'='+ encodeURIComponent(value),
'path='+ ((!path || path=='') ? '/' : path),
'domain='+ ((!domain || domain=='')? window.location.hostname : domain)];
if (ttl) cookie.push( 'expires='+smartclick_Cookie.hoursToExpireDate(ttl));
if (secure) cookie.push('secure');
return document.cookie = cookie.join('; ');
},
//@param integer ttl Time To Live (hours)
hoursToExpireDate: function(ttl) {
if (parseInt(ttl) == 'NaN' ) return '';
else {
now = new Date();
now.setTime(now.getTime() + (parseInt(ttl) * 60 * 60 * 1000));
return now.toGMTString();
}
},
trim: function( text ) {
return (text || "").replace( /^\s+|\s+$/g, "" );
}
}
几点说明:
1.ttl生存期时间单位是小时。
2.get方法的原理是字符串匹配,对[key=]value的中括号部分进行匹配,优于使用正则进行匹配,正则如有特殊字符的情况会很麻烦。
2009/02/21
周末看了两部电影,歌舞青春3和史密斯夫妇
晚上拖着看了看《歌舞青春3》,比较喜欢这部个中文名字,还是比较感慨老美的,能拍出这样的电影。记得大宝曾经说过,青春是要挥霍的。年少时候还是感性一点嘛,这样以后能够多回忆一些东西。
《史密斯夫妇》,恩,属于老早就上映了自己一直没看的电影。08暑假才看《疯狂的石头》,觉得宁浩很NB,所以《疯狂的石头》一上映就看,肯定不后悔。喜欢朱利皮特,好莱坞模范夫妻啊,是不是挺羡慕的?
2009/02/18
最近看了本书《赚钱机器,Money Machine》
笔记
1.财富的定义:停止你现在的工作,能够继续生存多久?
2.做有积累性的工作。无积累性的工作:有十年出租车驾龄的司机和一天驾龄的司机的价格是一样的,别人不会因为你开了十年而多付钱。
3.使用你的钱来赚钱。
4.终极目标:打造属于你的赚钱机器,最终得到财富自由和时间自由。
5.没有捷径,勤奋努力的工作吧(个人想法)。
1.财富的定义:停止你现在的工作,能够继续生存多久?
2.做有积累性的工作。无积累性的工作:有十年出租车驾龄的司机和一天驾龄的司机的价格是一样的,别人不会因为你开了十年而多付钱。
3.使用你的钱来赚钱。
4.终极目标:打造属于你的赚钱机器,最终得到财富自由和时间自由。
5.没有捷径,勤奋努力的工作吧(个人想法)。
订阅:
博文 (Atom)
.%E6%AD%8C%E8%88%9E%E9%9D%92%E6%98%A53%EF%BC%9A%E6%AF%95%E4%B8%9A%E5%AD%A31024x556%E7%89%88.jpg)

