石头博客-专注于web程序开发-web网站后台架构-php项目开发http://www.stou.info/STONE BLOG's BB BLOG SYSTEM 1.0zh-CN本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.Sun, 05 February 2012 14:08:04 +0800V2主题如何添加新年快乐banneri@stou.info(stone)http://www.stou.info/theme-plugins/187.htmlTue, 17 January 2012 11:12:51 +0800http://www.stou.info/theme-plugins/187.html 有好长一段时间没有写博客了,但每天至少都会来博客上看看,前几天查看流量发现石头博客的流量已经基本全靠搜索引擎和几个朋友支持着,倍感凄凉。不过,看到有些老朋友依然时不时来来关注,很是感动,回访以前经常访问的朋友们,好多也已物是人非。大猪那家伙都没听说有女朋友,前几天竟然都结婚了!桶哥没有怎么更新博客了;天边鱼的博客依然如初:总能看到真诚的东西;HP怕是放弃Zblog了,社区也没有看到什么新的东西……

费话多了点,今天给博客加了个新年快乐的banner,是女友设计的哦~现在把如何实现跟大家分享。注:此方案只适用于石头博客专用主题V2,V3。

上传banner图片至博客附件(点此下载banner图片),然后取得图片在你空间的URL地址。修改主题当前样式default.css/twiiter.css,找到popbg这样类,并将其样式替换为以下内容:

CSS代码
  1. clear:both;  
  2. display:block;  
  3. width:950px;  
  4. height:153px;  
  5. background:url('你的BANNERURL'rightright no-repeat;  
  6. position:absolute;  
  7. top:0px;  
  8. left:50%;  
  9. margin-left:-475px;  
  10. _background:none;  
  11. _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=crop,src='你的BANNERURL');  
  12. _margin-left:-290px;  

 保存,刷新前台即可。

继续阅读《V2主题如何添加新年快乐banner》的全文内容...

分类: 模板插件 | Tags: 主题 | 添加评论(14)

相关文章:

]]>
模板插件http://www.stou.info/theme-plugins/187.html#comment
重庆难得的冬日蓝天i@stou.info(stone)http://www.stou.info/photo/186.htmlSun, 18 December 2011 16:45:22 +0800http://www.stou.info/photo/186.html

继续阅读《重庆难得的冬日蓝天》的全文内容...

分类: 我的相册 | Tags: 生活 | 添加评论(19)

相关文章:

]]>
我的相册http://www.stou.info/photo/186.html#comment
案例:云森设计i@stou.info(stone)http://www.stou.info/life-fragment/185.htmlFri, 18 November 2011 18:13:36 +0800http://www.stou.info/life-fragment/185.html云森设计是我以前一个设计师同事自己开的设计公司的品牌,前段时间他找到我说希望我为他做一个网站,他自己设计了PSD,需要我将其转为html并植入程序,要求结构简单,利于SEO。此网站也是基于Zblog的,但是在Zblog的基础上做了部分调整,添加了以下比较实用但Zblog1.8没有功能:

1.不同的分类调用不同的模板;

2.不同的内容页调用不同的模板,相同的分类的内容页可以共用一个模板,也可单独指定,单独指定为顶级;

3.不同的分类可调用不同的列表模板。目前Zblog只能调用一个列表的模板文件,不够灵活,我更改后可实现不同的分类调用不同的列表模板。

发几张缩略图:

 

网站地址:http://www.ysbrand.cn/

继续阅读《案例:云森设计》的全文内容...

分类: 生活片段 | Tags: 案例 | 添加评论(24)

相关文章:

]]>
生活片段http://www.stou.info/life-fragment/185.html#comment
博客换上VPSi@stou.info(stone)http://www.stou.info/life-fragment/184.htmlThu, 20 October 2011 08:57:40 +0800http://www.stou.info/life-fragment/184.html用过猴子好久的空间了,一直猴总都在辛勤默默地奉献着,为石头博客提供着强大的后台硬件支持。但由于与猴子远隔一方,从来没有机会能当面表示感谢!最近鉴于自己对Linux小有熟悉,于是决定购买VPS,将博客独立出来单独管理,一来增加Linux的平台操作经验,二来是也希望减少猴总的麻烦。

这个VPS是同事介绍的美国VPS服务商,还是比较稳定,环境本来是想使用CentOS 5.6,但那时看到网上对于CentOS 6.0的优点的宣传,心动了就决定试一试。大约20小时,VPS就开通了,收到邮件以后SSH进入系统后,就开始搭建平台啦,Nginx+PHP5。

使用过后感触较深的就是中国的网速与国外的网速实在没法比,12M大小的tar.gz我在公司得下10几分钟,而VPS上却只用了1秒。我当时就震惊了!yum install也是一路直奔!

大家有意购买国外VPS的可以试试哈,便宜又快速的VPS:http://www.photonvps.com/billing/aff.php?aff=2160

继续阅读《博客换上VPS》的全文内容...

分类: 生活片段 | Tags: linux | 添加评论(40)

相关文章:

]]>
生活片段http://www.stou.info/life-fragment/184.html#comment
diyselect:一款select美化jQuery插件i@stou.info(stone)http://www.stou.info/theme-plugins/jquery.diyselect.htmlSun, 09 October 2011 20:31:20 +0800http://www.stou.info/theme-plugins/jquery.diyselect.htmlHTML中的select元素是一个可以进行下拉选择的容器,但是由于select元素并不能用CSS进行有效的外观设计,造成在许多追求一体效果的网页中必须要使用下拉框时非常麻烦。diyselect是一款可以自动将网页中的select元素改变为可以输入、可下拉选择、自动补全、美观的jquery插件,可以方便快速的替换网页中的select元素。

一个正常的select按钮如下:

而通过diyselect插件美化后效果如下:

diyselect具有以下特性:

1.将select转化为可输入、可下拉选择的容器;

2.对象缓存提高运行效果; 

3.输入匹配补全(试试在上面输入“中”看看);

4.事件克隆(可将原select的OnChange事件克隆并同步触发);

5.小巧方便(仅4K)。

如何使用:

下载diyselect插件,并将jquery.diyselect.js与diyselect.gif一并传到网站目录中,并在网页中插入以下代码:

JavaScript代码
  1. <script language="javascript" src="jquery.diyselect.js"></script>   
  2. <script language="javascript">   
  3. $(document).ready(function(){   
  4.     $('select').diyselect();   
  5. });   
  6. </script>  

注意:diyselect.gif要与jquery.diyselect.js在一个目录内!

欢迎大家下载使用!下载地址:http://diyselect.googlecode.com/

继续阅读《diyselect:一款select美化jQuery插件》的全文内容...

分类: 模板插件 | Tags: jQuery | 添加评论(15)

相关文章:

]]>
模板插件http://www.stou.info/theme-plugins/jquery.diyselect.html#comment
图文列表插件代码放送i@stou.info(stone)http://www.stou.info/life-fragment/182.htmlSat, 03 September 2011 09:48:17 +0800http://www.stou.info/life-fragment/182.htmlZblog图文列表插件是我去年的时候在Zblog的基础上生产的一款简单的按条件生成图文列表的插件,由于那会Zblog上还没有类似的这样的插件,所以不管是在抢楼活动中的发送,还是以50元/份的方式进行的出售,都受到了大家热情的关注,但是直到现在还是有许多人一直在向我索取。其实1.0版本的功能很简单,只是生成了最新和各个分类的图文列表以及一个固定的flash图文轮播,缺陷很多,本来一直也希望能够改进再发2.0,可惜因为工作和生活的事情一拖再拖,加上最近沉迷于linux和php,asp更是很少动刀了。

本来是想把1.0的图文列表插件免费共享算了,不过觉得对于以前收费购买过的用户很不公平,思考过于决定将图文列表插件的核心源代码分享出来,大家可以任意复制和使用。

ASP/Visual Basic代码
  1. <%   
  2. '///////////////////////////////////////////////////////////////////////////////   
  3. '//              Z-Blog   
  4. '// 作    者:   石头   
  5. '// 版权所有:    www.stou.info   
  6. '// 技术支持:    stck@vip.qq.com   
  7. '// 程序名称:    图文列表   
  8. '// 英文名称:    ListSorter   
  9. '// 开始时间:    2010.8.31   
  10. '// 最后修改:       
  11. '// 备    注:    only for zblog1.8 本插件部分代码参考了巴士列表插件,感谢-巴士飞扬   
  12. '///////////////////////////////////////////////////////////////////////////////   
  13.   
  14. Const listsorter_new_count = 10 '最新图文数量   
  15. Const listsorter_category_count = 10 '分类图文数量   
  16. Const listsorter_title_size = 16 '标题长度   
  17. Const listsorter_flash_count = 5 'flash图文轮播条数   
  18. Const listsorter_flash_width = 520 'flash轮播宽度   
  19. Const listsorter_flash_height = 300 'flash轮播高度   
  20.   
  21.   
  22. '注册插件   
  23. Call RegisterPlugin("listsorter","ActivePlugin_listsorter")   
  24.   
  25. Function ActivePlugin_listsorter()   
  26.            
  27.         Call Add_Action_Plugin("Action_Plugin_MakeBlogReBuild_Core_Begin","Call listsorter_BlogReBuild()")'在系统重建之前   
  28.         Call Add_Action_Plugin("Action_Plugin_MakeBlogReBuild_Begin","Call listsorter_BlogReBuild()")'在系统重建之前   
  29.   
  30. End Function  
  31. 'Action_Plugin_MakeBlogReBuild_Core_Begin  'Z-BLOG 1.8 S 使用这个接口   
  32. 'Action_Plugin_MakeBlogReBuild_Begin 'Z-BLOG 1.8 Devo 使用这个接口   
  33.   
  34.   
  35. '*********************************************************   
  36. ' 目的:生成重建种类文章排行   
  37. '*********************************************************   
  38. Function listsorter_BlogReBuild()   
  39.   
  40.         Blog_ReBuild_listsorternew   
  41.         Blog_ReBuild_listsortercategory   
  42.         Blog_ReBuild_listsorterflash   
  43.        
  44. End Function  
  45.   
  46. '*********************************************************   
  47. ' 取得内容中的图片地址   
  48. '*********************************************************   
  49. Function listsorter_getimg(ByVal sl)   
  50.        
  51.         If sl = "" or isNull(sl) Then Exit Function  
  52.   
  53.         If InStr(sl,"<img")>0 then   
  54.             listsorter_getimg = Replace(Replace(Split(Split(Split(sl,"<img")(1),"src=")(1)," ")(0),"""",""),"'","")   
  55.         ElseIf InStr(sl,"[IMG]")>0 then   
  56.             listsorter_getimg = ZC_BLOG_HOST&Split(Split(sl,"[IMG]")(1),"[/IMG]")(0)   
  57.         Else  
  58.             listsorter_getimg = "NULL"  
  59.         End if   
  60.   
  61. End Function  
  62.   
  63. '*********************************************************   
  64. '过滤单引号和双引号   
  65. '*********************************************************   
  66. Function listsorter_strReplace(ByVal source)   
  67.            
  68.         source=Replace(source,"""","_")   
  69.         source=Replace(source,"'","_")         
  70.         listsorter_strReplace=source   
  71.   
  72. End Function  
  73.   
  74. '*********************************************************   
  75. ' 取字符串的前几个字,大于字数时,显示...   
  76. '*********************************************************   
  77. Function listsorter_cutTitle(ByVal strtitle,ByVal counts)      
  78.         Dim RegExpObj,ReGCheck   
  79.         Set RegExpObj=new RegExp    
  80.         RegExpObj.Pattern="^[u4e00-u9fa5]+$"    
  81.         Dim l,t,c,i   
  82.         l=Len(strtitle) : t=0   
  83.         For i=1 to l   
  84.             c=Mid(strtitle,i,1)      
  85.             ReGCheck=RegExpObj.test(c)   
  86.             If ReGCheck Then  
  87.                 t=t+2   
  88.             Else  
  89.                 t=t+1   
  90.             End If  
  91.                
  92.             If t>=counts Then  
  93.                 listsorter_cutTitle=left(strtitle,i)"..." : Exit For  
  94.             Else  
  95.                 listsorter_cutTitle=strtitle   
  96.             End If  
  97.         Next  
  98.         Set RegExpObj=nothing    
  99.         listsorter_cutTitle=Replace(listsorter_cutTitle,chr(10),"")   
  100.         listsorter_cutTitle=Replace(listsorter_cutTitle,chr(13),"")   
  101. End Function     
  102.   
  103. '*********************************************************   
  104. ' 目的:    列表记录的数据   
  105. ' 参数说明:    
  106. ' b_objRS => 数据集合   
  107. ' strOutName => 保存到include时的名字(不带后缀名)   
  108. ' out_count => 多少条记录   
  109. '*********************************************************   
  110. Function listsorter_outArticleHtml(ByVal b_objRS,ByVal strOutName,ByVal out_count)   
  111.   
  112.         dim i,listsorter_objArticle,strOut_t   
  113.         dim strOut : strOut=" "  
  114.         dim listsorter_Template,listsorter_flash_data   
  115.            
  116.         '图文列表模板   
  117.         listsorter_Template = "<li><a href=""$ls.url$"" title=""$ls.fulltitle$""><img src=$ls.imgUrl$ width=100 height=100 /><br /><span>$ls.title$</span></a></a></li>"  
  118.            
  119.         'flash图文轮播数据模板   
  120.         listsorter_flash_data = "img$ls.i$=new Image ();img$ls.i$.src='$ls.imgUrl$';url$ls.i$=new Image ();url$ls.i$.src='$ls.url$'; "  
  121.            
  122.         '   
  123.         If strOutName = "ls_flash" Then listsorter_Template = listsorter_flash_data        
  124.            
  125.         If (Not b_objRS.bof) And (Not b_objRS.eof) Then  
  126.             For i=1 to out_count   
  127.                 Set listsorter_objArticle=New TArticle   
  128.                 If  listsorter_objArticle.LoadInfoByID(b_objRS("log_ID")) Then  
  129.                     strOut_t=listsorter_Template   
  130.                     strOut_t=Replace(strOut_t,"$ls.i$",i)   
  131.                     strOut_t=Replace(strOut_t,"$ls.url$",listsorter_objArticle.Url)   
  132.                     strOut_t=Replace(strOut_t,"$ls.fulltitle$",listsorter_strReplace(listsorter_objArticle.Title))   
  133.                     strOut_t=Replace(strOut_t,"$ls.imgUrl$",listsorter_getimg(listsorter_objArticle.HtmlContent))   
  134.                     strOut_t=Replace(strOut_t,"$ls.title$",listsorter_cutTitle(listsorter_objArticle.Title,listsorter_title_size))   
  135.                     strOut = strOut & strOut_t   
  136.                 End If  
  137.                 Set listsorter_objArticle=Nothing  
  138.                 b_objRS.MoveNext   
  139.                 If b_objRS.eof Then Exit For  
  140.             Next  
  141.         End If  
  142.         b_objRS.close   
  143.        
  144.         If strOutName = "ls_flash" Then  
  145.            
  146.             strOut = "<script language=""javascript""> var widths="&listsorter_flash_width";var heights="&listsorter_flash_height";"&strOut"var counts="&out_count";var nn=1;var key=0;function change_img(){if(key==0){key=1;} else if(document.all){document.getElementById(""pic"").filters[0].Apply();document.getElementById(""pic"").filters[0].Play(duration=2);} eval('document.getElementById(""pic"").src=img'+nn+'.src'); eval('document.getElementById(""url"").href=url'+nn+'.src');for (var i=1;i <=counts;i++){document.getElementById(""xxjdjj""+i).className='axx';} document.getElementById(""xxjdjj""+nn).className='bxx'; nn++;if(nn>counts){nn=1;} tt=setTimeout('change_img()',4000);} function changeimg(n){nn=n;window.clearInterval(tt);change_img();}document.write(' <style>'); document.write('.axx{padding:1px 7px;border-left:#cccccc 1px solid;}'); document.write('a.axx:link,a.axx:visited{text-decoration:none;color:#fff;line-height:12px;font:9px sans-serif;background-color:#666;}'); document.write('a.axx:active,a.axx:hover{text-decoration:none;color:#fff;line-height:12px;font:9px sans-serif;background-color:#999;}'); document.write('.bxx{padding:1px 7px;border-left:#cccccc 1px solid;}'); document.write('a.bxx:link,a.bxx:visited{text-decoration:none;color:#fff;line-height:12px;font:9px sans-serif;background-color:#D34600;}'); document.write('a.bxx:active,a.bxx:hover{text-decoration:none;color:#fff;line-height:12px;font:9px sans-serif;background-color:#D34600;}'); document.write(' </style>'); document.write(' <div style=""width:'+widths+'px;height:'+heights+'px;overflow:hidden;text-overflow:clip;"">');document.write(' <div> <a id=""url"" target=""_blank""> <img id=""pic"" style=""border:0px;filter:progid:dximagetransform.microsoft.wipe(gradientsize=1.0,wipestyle=4, motion=forward)"" width='+widths+' height='+heights+' /> </a> </div>');document.write(' <div style=""filter:alpha(style=1,opacity=1,finishOpacity=70,-moz-opacity:0.5; );background: #f1f1f1;width:100%-2px;text-align:right;top:-18px;position:relative;margin:1px;height:12px;padding:0px;margin:0px;border:0px;"">'); for(var i=1;i <counts+1;i++){document.write(' <a href=""javascript:changeimg('+i+');"" id=""xxjdjj'+i+'"" class=""axx"" target=""_self"">'+i+' </a>');} document.write(' </div> </div>');change_img();</script>"  
  147.                
  148.         End If  
  149.        
  150.         strOut=TransferHTML(strOut,"[no-asp]")   
  151.        
  152.         Call SaveToFile(BlogPath & "/include/"&strOutName".asp",strOut,"utf-8",True)   
  153.        
  154.         strOut=""  
  155. End Function  
  156.   
  157. '*********************************************************   
  158. ' 生成最新文章图文列表   
  159. '*********************************************************   
  160. Function Blog_ReBuild_listsorternew()   
  161.   
  162.     Dim listsorter_objRS1   
  163.        
  164.     Set listsorter_objRS1=objConn.Execute("select top " & listsorter_new_count & " [log_ID] from blog_Article WHERE ([log_ID]>0) AND ([log_Level]>2) AND ((inStr([log_content],""<img"")>0) OR (inStr([log_content],""[IMG]"")>0)) order by log_ID desc")   
  165.            
  166.     Call listsorter_outArticleHtml(listsorter_objRS1,"ls_new",listsorter_new_count)   
  167.        
  168. End Function  
  169.   
  170. '*********************************************************   
  171. ' 生成分类图文列表   
  172. '*********************************************************   
  173. Function Blog_ReBuild_listsortercategory()   
  174.        
  175.     Dim i   
  176.     Dim Category   
  177.     Dim listsorter_objRS1   
  178.        
  179.     For Each Category in Categorys   
  180.        
  181.         If IsObject(Category) Then  
  182.   
  183.             Set listsorter_objRS1=objConn.Execute("select top " & listsorter_category_count & " [log_ID] from blog_Article WHERE ([log_ID]>0) AND ([log_Level]>2) AND ((inStr([log_content],""<img"")>0) OR (inStr([log_content],""[IMG]"")>0)) AND ([log_CateID]="&Category.ID") order by log_ID desc")   
  184.             Call listsorter_outArticleHtml(listsorter_objRS1,"ls_category_"&Category.ID,listsorter_category_count)   
  185.                
  186.         End If  
  187.     Next  
  188.   
  189. End Function  
  190.   
  191. '*********************************************************   
  192. ' 生成flash图文轮播列表   
  193. '*********************************************************   
  194. Function Blog_ReBuild_listsorterflash()   
  195.   
  196.     Dim listsorter_objRS1   
  197.        
  198.     Set listsorter_objRS1=objConn.Execute("select top " & listsorter_flash_count & " [log_ID] from blog_Article WHERE ([log_ID]>0) AND ([log_Level]>2) AND ((inStr([log_content],""<img"")>0) OR (inStr([log_content],""[IMG]"")>0)) order by log_ID desc")   
  199.        
  200.     Call listsorter_outArticleHtml(listsorter_objRS1,"ls_flash",listsorter_flash_count)   
  201.   
  202. End Function  
  203. %>  

继续阅读《图文列表插件代码放送》的全文内容...

分类: 生活片段 | Tags: zblog | 添加评论(41)

相关文章:

]]>
生活片段http://www.stou.info/life-fragment/182.html#comment
KTV之谭咏麟i@stou.info(stone)http://www.stou.info/life-fragment/181.htmlSat, 27 August 2011 09:17:50 +0800http://www.stou.info/life-fragment/181.html以前我并不知道有谭咏麟这样一个歌手(囧),第一次听他的歌是公司一次聚会的时候。那次大家都喝得不少,后来KTV时一位同事深情的唱了谭咏麟的这首《讲不出再见》,借助着酒兴突然觉得好受感染,虽然自己不懂粤语,但却情不自禁的跟着哼了起来,正是这次我记住了谭咏麟。

后来回家在QQ音乐里搜索了谭咏麟的专辑一首一首的听,《讲不出再见》听了不知多少遍,希望能把这首学会也能在KTV时小露一把……前段时间下班后回家就听这首歌,跟着哼,是挺困难的,因为根本不知道粤语要怎么发音,但是自己还是暗暗的加油相信再难的东西只要重复的次数过多也能学会,于是我一遍又一遍的重复练习着。

终于来机会了,上周五部门聚餐,KTV中我见大家喝得差不多之时,吼了这首歌。

结局,不想说。

继续阅读《KTV之谭咏麟》的全文内容...

分类: 生活片段 | Tags: 生活 | 添加评论(24)

相关文章:

]]>
生活片段http://www.stou.info/life-fragment/181.html#comment
柳暗花明--项目上线前的坎坷故事i@stou.info(stone)http://www.stou.info/life-fragment/180.htmlSat, 30 July 2011 10:18:03 +0800http://www.stou.info/life-fragment/180.html昨天是我们项目组最为坎坷的一天,我们经历了由紧张到绝望再到希望的过程……辛苦了差不多两个月的项目本来预计是昨天下午在给另外一个用户群进行测试的,前天其实整套系统都已经非常流畅,但是为了方便另一个用户群的测试,需要将我们B/S和C/S都移架到另一个对外的服务器上,于是问题就在这个过程中产生了。

我们以为B/S不会出现什么问题,本来就是基于LINUX平台进行的开发,复制文件到服务器上,配置下参数就可以了。而C/S的转移我们开始还是比较担心的,而结果却是我们都没有想到的:B/S和C/S转移到另外一台服务器上后均在最关键的环节出现严重的问题,最让人接受不了的就是测试时间由昨天下午改为昨天上午,一系列的关键环节出现故障,系统已经无法工作,而老总和另个一个团队的所有人员,包括风投公司都已经在会议室等着看演示,怎么办怎么办?

我们B/S结构中涉及到一个FTP文件推送服务,但是在另外一台服务器上却没有装PHP的FTP扩展,我们已经做了各类尝试,包括重新动态编译PHP扩展,重装PHP,均不能解决;而C/S结构中client从FTP中下载的文件始终乱码,一系列的问题……

老总疯狂的打电话催我们老大,我们老大疯狂的发飙,整个技术部气氛紧张异常。

浪费一秒就有可能造成项目受到质疑,老总疯狂的打电话催老大,老总助理不停的向老大施压,老大一时受不了催促吼了句:大不了我不干了行吧!

老大也是一个技术好手,在最关键的时候他也是一直在做着各类尝试和分析……就在我们以为我们项目组就会死于此项目之时,奇迹发生了:PHP的FTP扩展已经生效,而client下载乱码也是由于LINUX服务器的vsftpd配置的编码与程序不一致造成的,乌云突然散去,阳光散落满地。我们项目组心底齐呼“yeah!!!!”,老大激动地向老总打电话说已经测试OK,我听得出:那是真的很激动。

后来测试很成功,产品他们很满意,也提出了一些非常细微的建议。后来在回来的车上,我看到大家都在会心的笑……

继续阅读《柳暗花明--项目上线前的坎坷故事》的全文内容...

分类: 生活片段 | Tags: 工作 | 添加评论(31)

相关文章:

]]>
生活片段http://www.stou.info/life-fragment/180.html#comment
买房i@stou.info(stone)http://www.stou.info/life-fragment/179.htmlSat, 23 July 2011 16:18:01 +0800http://www.stou.info/life-fragment/179.html真正有这个想法还是在6月份,后来一直奔走于重庆各大楼盘,有过后悔,有过迷茫,有过失落,也有过担心,不过几次周折最终我们还是下定了决心,买了下这套套内80,建面98的三室一厅。今天是我们订房的日子特写此文。

以前因为一直没有买房的想法,所以也没有怎么关注房产这块的信息,6月份在有这个想法以后,我们恶补这块的常识,不补不知道一补才知道房价涨得是多么的快,这里的泡沫的分量,一面感叹为什么去年会没有这看房的想法,一面也疯狂的打着自己的算盘。

7月初的时候,我们去看的第一个楼盘是南坪万友七季城,位于重庆工商大学旁,距离南坪中心商业区只用几分钟,周围学校比较多,交通非常方便。不过那会只有套内99平米的了,均价也在8800左右,小区环境还是不错的,设施比较完善,不过99对于我们来讲太大,也超过了我们的承载范围。不过讲到升值潜力,我还是很看好的,这块房价这几年一直稳定上扬,买个小户型做投资还是不错的哈。

后我们根据重庆到处公交车站的广告来到了南坪8公里的丽都锦城,总体来讲在第一印象上我们都觉得这里不错,套内才7300,3室一厅的套内78,建面93,总价58万左右。小区还算比较大,各类配置设施听着不错,不过并不完善,容积率3。本来就是准备买这里了,因为觉得58万对于我们来讲还能接受况且也是3房的。第二天我们给售楼小姐打了个电话说要再去看看,因为6点才下班,又堵车,到达楼盘时已经7点过了,楼盘已经下班,楼盘小姐(巫)一个人等我们,虽然看得出她已经非常疲倦,但还是非常热情得给我们讲解带我们在小区观看,一直忙到8点多吧,整个楼盘就她一人,忙着为我们打印预算,我们还是非常感动的,能这么有责任心的人应该不多了吧。如果有人愿意买丽都锦城的可以找她(姓巫)做顾问哈。

大约我们都有了60%的购买把握的时候,我们又看中了东原亲亲里这个楼盘,进行过几番比较后,我们决定放弃丽都锦城,因为觉得那边太偏僻,晚上感觉就像在郊野,离中心区也远,想买个啥东西或吃什么都得坐车到南坪来。

再后来我们又看过融侨城,渝能国际,东原亲亲里,天梭派,元合悠哉,李家沱融汇半岛,得出一个总结:天下乌鸦一般黑,没有哪里会比哪里便宜多少,就算便宜也是有牺牲的。所以选一个自己觉得住着舒服,户型比较合理,教育配置完善,交通方便些的房子,再加上自己希望生活的区域,排除再排除……

 在东原亲亲里也谈过2次,销售顾问是一个男的,25岁。看过东原檀香山的环境后觉得东原还是不错的,不过惟一的缺陷就是交通不是很方便,虽然离中心区比较近,但幸好我们上班都还有直达车。昨天本来就已经准备去下订金,可惜后来一直在天梭派和东原中犹豫,今天我们做了这个决定:就买东原亲亲里。

继续阅读《买房》的全文内容...

分类: 生活片段 | Tags: 生活 | 添加评论(31)

相关文章:

]]>
生活片段http://www.stou.info/life-fragment/179.html#comment
祝福老同学i@stou.info(stone)http://www.stou.info/life-fragment/177.htmlSat, 09 July 2011 09:53:15 +0800http://www.stou.info/life-fragment/177.html今天早上与以前的一个老同学聊天,她这样对我说:“在小城市呆了一年,感觉自己都快被大城市淘汰了”。她的工作其实非常不错,在一个县城的银行部门工作。但是现在她已经辞职,来到了重庆市,参加了这边的一个银行的考试,她说自己一点把握也没有,如果考不上,就去当文员或去另一个县城找男友。

我还有一个非常要好的大学哥们毕业时考上了重庆农村商业银行,现在在一个乡镇上上班,上次聊天,他说上次他发了一万的资金,发了部3G手机,平时钱都没有地方花,现在已经在县城里买了套100多平方的房了。

显然,生活并不是公平的。有时候并不会因为你有能力,有够努力就你就能得到你本来应该得到的。

与老同学聊天的过程中,她对我说的一句话让我颇为震惊“在小城市呆了一年,感觉自己都快被大城市淘汰了”。一颗年轻的有理想的有激情的心,怎么能在狭隘又没有施展的空间中不感到窒息和压抑。其实刚开始我并不同意她的做法,我觉得好不容易进了一个还算不错的单位,作为一个女生,就好好干下去,但她后来的这句话以及她对男友的思念让我情不自禁地有了“你喜欢就去做吧的想法”,祝她早日收到银行的过关通知吧!

继续阅读《祝福老同学》的全文内容...

分类: 生活片段 | Tags: 生活 | 添加评论(30)

相关文章:

]]>
生活片段http://www.stou.info/life-fragment/177.html#comment
分享一些生活随拍i@stou.info(stone)http://www.stou.info/photo/176.htmlTue, 28 June 2011 20:22:27 +0800http://www.stou.info/photo/176.html

继续阅读《分享一些生活随拍》的全文内容...

分类: 我的相册 | Tags: 生活 | 添加评论(44)

相关文章:

]]>
我的相册http://www.stou.info/photo/176.html#comment
端午节洋人街随拍i@stou.info(stone)http://www.stou.info/photo/duanwuyanrenjie.htmlSun, 26 June 2011 09:43:49 +0800http://www.stou.info/photo/duanwuyanrenjie.html

继续阅读《端午节洋人街随拍》的全文内容...

分类: 我的相册 | Tags: 生活 | 添加评论(45)

相关文章:

]]>
我的相册http://www.stou.info/photo/duanwuyanrenjie.html#comment
会二次开发就牛吗?i@stou.info(stone)http://www.stou.info/internet/174.htmlMon, 30 May 2011 18:27:24 +0800http://www.stou.info/internet/174.html一个非常奇怪的现象:好多公司在招聘PHP程序员的时候往往都会要求精通或熟悉一些开源系统的二次开发,如SHOPEX,ECSHOP,DISCUZ,PHPCMS,更有甚者自吹因为熟悉这几套系统的二次开发而牛得不得了。我就想问大牛了,你真的就那么牛吗?

小弟不才,学艺未精,未能达到这位大牛的水平和领悟,但是我实在搞不懂,你凭什么就能这么牛?就像一本写得非常好的小说,只要有点文笔的,谁不会写续集?但是否就应该叫能写续集的人叫写作天才?而能写续集的是否就能招摇过市自吹自擂?而公司是否就因为这人能写续集就高薪应聘?相反,对于其它人,则就觉得低这种人一等?

多么荒唐和畸形的看法!多么荒唐的面试官!此刻,我终于明白中国的盗版为何如果猖獗,而中国却也很难产生一个世界级文明的企业、软件、产品。自己不去学习别人的优点消化为已用并举一反三,反而是直接使用别人的东西后还在那里洋洋自得,我都不明白,你牛个屁啊!

好了,发泄完了。本文仅是提醒自己注意平时的思维和工作方式,别无它意,同时也号召大牛们充分利用自己的IQ多多开发一些自己的有创意的东西,并谦虚再谦虚!

继续阅读《会二次开发就牛吗?》的全文内容...

分类: 关注互联网 | Tags: 评论 观点 | 添加评论(36)

相关文章:

]]>
关注互联网http://www.stou.info/internet/174.html#comment
无限级评论嵌套的设计与优化-BB经验分享i@stou.info(stone)http://www.stou.info/technology-file/173.htmlSat, 28 May 2011 13:07:47 +0800http://www.stou.info/technology-file/173.html无限级分类,让人兴奋但却又让人有些不知所措的数据结构。让人兴奋,是因为这种结构实在是太实用太方便了;让人不知所措,是因为这种结构的前台数据结构展现往往会在递归的时候浪费非常多珍贵的性能资源。

我在设计BB的过程中,也一直在思考是否可以不通过递归来实现无限级分类的结构展现和父子结构查找,因为如果不对这里的算法进行优化后果可能是致命的!试想一下,一篇文章如果评论数为300,按正常的递归算法,至少就得查询数据库301次,而且还是在没有任何嵌套的情况下,如果有过一两级嵌套或者评论数过1000,那数据库不是直接宕掉?

而实际上,PHP强大的数组处理能力已经能帮助我们快速方便的解决这个问题。下图为一个无限级分类的数据库结构:

 ID parentID  newsID  commts 
 1 0 8 文章ID为8的评论 
 2 8 对ID为1的评论的回复 
 3 2 8 对ID为2的评论的回复

要在前台嵌套式的展现文章编号8的评论,其实我们只用查询一次数据库,即“SELECT * FROM TABLE WHERE newsID=8”,而把后期的递归工作交给强大的PHP数组来完成。这里可能涉及的问题就是数组的结构关系的重组,即将所有停留在一级分类上的评论全部放到自己的parentID下,形成children项。

下面将BBComment类中这块的代码粘贴出来,希望与大家分享下我的思路,也希望大家能够提出更好更有效率的算法。

PHP代码
  1. /**  
  2.  * 按ID条件从评论数组中递归查找  
  3.  *  
  4.  */  
  5. function getCommentsFromAryById($commtAry$id)   
  6. {   
  7.     if ( !is_array($commtAry) ) return FALSE;   
  8.     foreach($commtAry as $key=>$value) {   
  9.         if ( $value['id'] == $id ) return $value;   
  10.         if ( isset($value['children']) && is_array($children) ) $this->getCommentsFormAryById($value['children'], $id);   
  11.     }   
  12. }   
  13. /**  
  14.  * 追加 子评论 到 主评论 中,并形成children子项  
  15.  *  
  16.  * @param array $commtAry 原评论数据引用  
  17.  * @param int $parentId 主评论ID  
  18.  * @param array $childrenAry 子评论的值  
  19.  */  
  20. function addChildenToCommentsAry($commtAry$parentId$childrenAry)   
  21. {   
  22.     if ( !is_array($commtAry) ) return FALSE;   
  23.   
  24.     foreach($commtAry as $key=>$value) {   
  25.         if ( $value['id'] == $parentId ) {   
  26.             $commtAry[$key]['children'][] = $childrenAry;   
  27.             return TRUE;   
  28.         }   
  29.         if ( isset($value['children']) ) $this->addChildenToCommentsAry($commtAry[$key]['children'], $parentId$childrenAry);   
  30.     }   
  31. }   
  32.     $result = $this->BBDM->select($table$column$condition, 0, 1000);   
  33.   
  34.     /* 开始进行嵌套评论结构重组 */  
  35.     array_shift($result);   
  36.     $count = count($result);   
  37.     $i     = 0;   
  38.     while$i<$count ) {   
  39.         if ( '0' != $result[$i]['parentId'] ) {   
  40.             $this->addChildenToCommentsAry($result$result[$i]['parentId'], $result[$i]);   
  41.             unset($result[$i]);   
  42.         }   
  43.         $i++;   
  44.     }   
  45.     $result = array_values($result);   
  46.     /* 重组结束 */  

继续阅读《无限级评论嵌套的设计与优化-BB经验分享》的全文内容...

分类: 编程技术 | Tags: BB php | 添加评论(18)

相关文章:

]]>
编程技术http://www.stou.info/technology-file/173.html#comment
糟糕的架构-苦不堪言的维护工作i@stou.info(stone)http://www.stou.info/internet/172.htmlTue, 24 May 2011 12:01:16 +0800http://www.stou.info/internet/172.html一套完整的网站系统就好比一个工厂管理模型,架构就好比如何分配部门,以及各个部门的工作和配合。一个合理的工厂应该是各个部门各司其职,相互配合有统一的规范和途径,并且作为工厂的管理员能够快速了解到整个工厂的整体情况,可以快速了解某个部门或者某个工作的相关关系,方便快速的调整策略。这样流水线式的架构对于稍微有些规模的企业而言是非常有意义的。

我手头上接触过几个不算太大,但还是有些规模的网站管理系统,虽然前台与后台都是用web编程语言开发的(第一家公司网站是asp写的,第二家是php),但这两家公司却都因为有这样一个看似平常的但却暴利的网站极大的满足着老板的荣誉,但或许你不知道,这样风光的门面背后运行的机器却是糟糕得不行。

试想一下,一个工厂中没有明确的部门,没有明确的合作规范,各个机器都只是独立的运行着。部门想要什么就自己规定自己做,或者直接从其它部门copy,你知道这样的部门经过一段时间之后会成什么样子?是的,它会变成一个混乱和洋洋得意的军阀,直接威胁到系统的安全和统一。而做为管理者,你很搞清楚各个部门之间是怎么配合的,部门与部门之间现在存在着什么关系,你想要实施一条命令,总不能全面的得到实施,因为有许多部门或行为你根本都无法掌握或根本不知道。

而我们,作为整套系统的维护者,当我们接到这样一个混乱和乌烟瘴气的工厂时,向顶层提出重新架构往往得到的回复是:都运行了这么多年了,你只要按我的要求把每条指令彻底的实施下去就行了,别的不用管。是的,只要整个工厂能赚钱,他们才不管这些呢。于是我们整天只能像是在与人做迷藏一样的在工厂中穿梭,而最让人崩溃的是这个工厂被N个水平不一的人维护过,没用或不合理的零件到处都是,除了去适应你别无选择。在这样的工厂穿梭久了,你甚至有些不相信,工厂还有不用到处跑腿只用查查文档就能直接发现关键所在?

然而真正能够做到那样流水式的系统工厂估计在中国也肯定是鼎鼎有名了,那么为什么小公司就不能这样井井有条呢?其根本原因还是在于节约了不应该节约的资金,只片面要求完成任务,但却不规则完成的方式以及完成的过程和以后期的维护成本。所以往往一个程序员入职后会都会面对一堆乱七八糟的代码,然后叫你加个功能作为考验。试想这样的程序如何能成为一个优秀的工厂?后期维护如何会不苦?没有统一的文档编写标准,没有统一的变量命名规则和结构书写规则,没有统一的编程准则,如何会创造优秀的工厂?

我曾说过,每段代码就像就有生命和灵魂的精灵,请你让它变得美丽。

继续阅读《糟糕的架构-苦不堪言的维护工作》的全文内容...

分类: 关注互联网 | Tags: 观点 | 添加评论(18)

相关文章:

]]>
关注互联网http://www.stou.info/internet/172.html#comment
博客系统新升级,BB初测,邀你测试i@stou.info(stone)http://www.stou.info/technology-file/171.htmlTue, 24 May 2011 11:35:39 +0800http://www.stou.info/technology-file/171.html经过一个多月的策划和紧张编写,初步命名为“BB”的博客系统终于成功的进入了第一阶段的测试步骤,这也表示石头博客真正开始脱离Zblog进入自己开发的博客系统。BB意为Be Best,我希望赋予它简洁、方便、小巧、可扩展性强的生命,虽然程序大小只有仅仅的1M左右,但每一段代码都是有生命力的细胞,那么美丽,那么有生命力……当博客成功在服务器上运行的时候,我知道这40天的辛苦都是值得的。

设计BB的初衷在于希望摆脱Zblog的束缚,吸取Zblog简洁方便的优点,充分利用PHP的优势扩展ZBlog系统目前功能上的缺陷。所以BB中无限级分类,图文管理,无限级评论嵌套,方便的评论管理等功能被放大;而文章也进行了扩展,增加了输入密码访问文章、禁言文章、评论后才可查看文章的属性,并增加了单独的文章缩略图功能,为图文列表的CMS扩展做了准备。评论后台则提供了更加方便的管理,比如编辑、回复、封IP、封用户、标SPAM等功能;同时系统提供了丰富的自定义URL功能为你所用……

下面将对于BB博客系统的关键功能模块做一些简单的介绍

1、强大的文章属性功能

在一般的博客系统中,密码文章或需要评论才可查看文章功能往往需要插件才可以实现,不过BB系统已经将这两项功能完全集成到文章模块中。而图文列表一直以来也需要依靠插件才能实现,BB现在将缩略图功能也集成到了文章中,为你方便的进行图文列表或产品型列表做了充足的准备。

2、无限级分类及模板继承

BB现在也为你提供了无限级分类功能,你可以为每一个分类指定单独的模板,并可以控制子分类是否继续父级分类的模板,让你摆脱单一分类的限制。

3、无限级评论嵌套功能

评论嵌套是增加用户活跃度的一种非常好的盖楼方式,BB为此允许你控制嵌套的层数,合理盖楼。

4、强大的后台评论管理功能

你可以在后台一键完成修改、回复、标SPAM、封IP、封用户等功能。

5、完全自定义的URL格式控制功能

你可以通过系统允许的变量指定文章或分类的URL链接格式。

6、强大方便的模板标签功能。

你可以通过the_title()显示标题,the_intro()显示介绍,the_contents()显示内容,the_cate()显示分类并通过参数控制显示的格式……

7、可扩展的API接口

你可以通过API接口,接入任意你想要的功能,发挥你的想象,赋予系统新的生命。

8、Zblog数据全部一键导入

9、Zblog模板一键转换并导入

…………

更多精彩,BB正在努力中……

当前stou.info已经转入BB,以前全部数据已经导入,大家可以通过http://zblog.stou.info访问原版Zblog系统。并希望大家多多测试并反馈意见:)

2011/5/23 石头 i@stou.info gTalk:cnstou@gmail.com

继续阅读《博客系统新升级,BB初测,邀你测试》的全文内容...

分类: 编程技术 | Tags: BB php | 添加评论(44)

相关文章:

]]>
编程技术http://www.stou.info/technology-file/171.html#comment
企业建站公司的发展之路i@stou.info(stone)http://www.stou.info/internet/183.htmlSat, 23 April 2011 10:22:26 +0800http://www.stou.info/internet/183.html好几年前,当中国的互联网还没有那么发达,当中国的互联网还有大部分空白的时候,在网络上有一个自己的企业站点将自己的企业“搬上网”,对企业而言应该是一笔不小的投入。随着互联网的发展,网络对一个企业的形象宣传作用愈见明显,各类企业建站公司如同雨后春笋般地成长了起来,低廉的成本和巨大的利润吸引着各色各样的人进入这个行业。

那会还在使用着FrontPage,做网页就像在word上排版一样,不注重代码的质量,不注重代码可读性。而程序上则主要以asp为主,程序自动创建的数据库连接,自动生成的数据集和列表。许多人只要看过几本网页制作教程就可以边看书边做网页了,也打着做网站的旗号在外接单。下图是一个典型的web1.0网页的源代码:

天啦,看得你抓狂!

后来随着竞争越来越激烈,各企业建站公司开始压缩成本:按行业做成各类样本,最后直接使用再增删,这样做的目的是让出利润空间抢占客户,结果:服务越来越差,客户越来越少,行业饱和。许多小公司直接倒闭,一些有其它项目做支持的公司还能勉强生存。但是现在依然还是有许多小企业建站公司顽强地生存着,那他们的现状怎么样呢?

上一次我接到一个网络公司的面试通知,是一家企业建站公司,说实话我现在对企业建站公司并没有什么好感,本来不想去的,不过后来在网上一查发现到处都是它们的广告,再一细想,各大电梯楼办公楼处也都是它们的广告,心想投入这么大宣传品牌的公司应该不会太差,决定去试试,结果到了公司我差点没想找个洞钻进去。公司在一个陈旧的居民楼里,没有门面,没啥装修,最多就是许多陈旧的纯平显示器的电脑,水泥的地板,昏暗的环境,3,4个人在默默地做着网站,一阵心寒。

前段时间我一个朋友公司要做个网站,功能:新闻,产品,留言,产品预约,典型的企业需求型网站,找了几家企业建站公司,第一家报价:3000,第二家公司报价:2600。后来他联系到了我,问我要做这个站得多少钱?我想了下,其实如果真要做包括域名空间成本也就500,600块钱,后来很明显我接到了这个单。但我敢说,我肯定不会比报3000和2600的做得差。据我所知,之所以现在的企业建站公司生存得这么艰难是因为大部分客户都被个人、威客、工作室给抢走了,惟一接到的单也估计是靠关系的吧。现在大部分企业也聪明了,做网站在威客上外包,找朋友,都能轻松搞定,当然这其中不包括一些比较大型的项目开发。

仅此看企业站建站公司的前景真的非常让人担忧,不过呢现在企业建站公司也在不停的思想和改变模式,不只做建站了,做SEO优化,做IDC,自己运营网站,或许也是在等待转型吧。那企业建站是否就真的没有前景了呢?我觉得可以从这几个方面来思想:

1、提升建站人员的素质和水平;

2、走大型项目开发路线;

3、做企业网站的升级服务;

4、做企业SEO优化(程序上);

5、认真对待每一个客户,认真做好每一个网站。

其实最重要的还是每天多结交点相关部门的朋友,多交流交流,多吃吃饭,你们懂的!

继续阅读《企业建站公司的发展之路》的全文内容...

分类: 关注互联网 | Tags: 观点 | 添加评论(59)

相关文章:

]]>
关注互联网http://www.stou.info/internet/183.html#comment
案例:四维卫浴天津总经销i@stou.info(stone)http://www.stou.info/theme-plugins/182.htmlThu, 07 April 2011 14:06:26 +0800http://www.stou.info/theme-plugins/182.html这是我大学一个兄弟伙介绍的单子,四维卫浴天津总经销,域名tjswell.com 。由Zblog构建的内核,独立插件MainController负责各类自定义列表的生成及首页广告轮播的控制。模板亮点:1、不同的分类调用不同的模板;2、不同的文章可调用不同的模板;3、产品按时间,人气,价格排序;4、独立功能:在线预约,可后台进行数据维护;5、广告轮播控制;6、文章与产品的整合。

不可否认,用Zblog作为此类企业站点的内核再进行开发是非常方便的,对Zblog赞一个!看网站预览图!

模板详细预览地址:http://www.tjswell.com/

继续阅读《案例:四维卫浴天津总经销》的全文内容...

分类: 模板插件 | Tags: 主题 模板 案例 | 添加评论(36)

相关文章:

]]>
模板插件http://www.stou.info/theme-plugins/182.html#comment
扑克游戏“推板板车”PHP版i@stou.info(stone)http://www.stou.info/technology-file/181.htmlWed, 06 April 2011 09:57:38 +0800http://www.stou.info/technology-file/181.html清明节几天在家休息,因为下雨所以无法外出,整天闷在家里觉得非常无聊,实然想起了小时候经常和朋友们玩的一个扑克游戏“推板板车”,于是尝试着用PHP写一下这个小程序。

游戏的规则非常简单,一副扑克牌随机地平均地分成几堆(有几个人玩就分成几堆),然后由一个人开始从一张牌开始出牌,接着第二个人……然后还是第一个人依次循环,出的牌在桌面上按次序依次往下叠,如果任意一个用户出的牌与桌面上已经存在的牌有相同的,比如A,就可以把从A开始到结尾的牌都收下来并放到自己手上的牌的结尾,并继续依次出牌,谁手上最后还有牌谁就赢。

一个完全没有技巧的游戏,仅为打发时间所玩,一副牌分成堆和谁先出牌的时候就已经觉得了最后的赢家,下面是我的PHP代码:

PHP代码
  1. <title>"推板板车"小扑克游戏PHP版</title>   
  2. <?php   
  3. $User=3;       //注意要能与牌的数量整除   
  4. $p=array('A','2','3','4','5','6','7','8','9','10','J','Q','K','*');   
  5. $a=array(4=>array('hearts','spades','plum','block'),2=>array('big','small'));   
  6. $pary=array();   
  7. //生成整副牌   
  8. foreach($p as $tmp){   
  9.     if ($tmp!='*'){   
  10.         foreach($a[4] as $tmp2){   
  11.             $pary[]=array($tmp,$tmp2);   
  12.         }   
  13.     }else{   
  14.         foreach($a[2] as $tmp2){   
  15.             $pary[]=array($tmp,$tmp2);   
  16.         }   
  17.     }   
  18. }   
  19. $pary2=$pary;   
  20. $eachparyCount=floor(count($pary)/$User);   
  21. for($i=1;$i<=$User;$i++){   
  22.     $tmpK=array_rand($pary2,$eachparyCount);   
  23.     unset($tmpthis);   
  24.     foreach($tmpK as $key=>$value){   
  25.         $tmpthis[]=$pary[$value];   
  26.         unset($pary2[$value]);   
  27.     }   
  28.     $tmpM='tmpUser'.$i;   
  29.     $$tmpM=$tmpthis;   
  30. }   
  31. echo $User.'位用户已经成功获取随机的'.$eachparyCount.'张牌';   
  32. $tmpTeam=$userLeave=$userData=array();   
  33. for($i=1;$i<=$User;$i++){   
  34.     $userLeave[]=$i;   
  35.     $userData[$i]=array(0,0);   
  36. }   
  37. $i=1;   
  38. while (count($userLeave)>1){ //只剩一位用户时停止   
  39.     $userCurrent='tmpUser'.$userLeave[0];   
  40.     $tmp=$$userCurrent;   
  41.     echo '<br />用户'.$userLeave[0].'出牌'.$tmp[0][1].$tmp[0][0].',剩余牌数:'.(count($tmp)-1);   
  42.     if ( array_key_exists($tmp[0][0],$tmpTeam) ){   
  43.         $g=false;   
  44.         foreach($tmpTeam as $key=>$value){   
  45.             if ($key==$tmp[0][0] || $g==true){   
  46.                 $g=true;   
  47.                 $tmp[]=array($key,$value);   
  48.                 unset($tmpTeam[$key]);   
  49.                 echo '<br />用户'.$userLeave[0].'收牌'.$tmp[0][0].'::'.$key;   
  50.                 $userData[$userLeave[0]][1]+=1;   
  51.             }   
  52.         }   
  53.         $tmp[]=array($tmp[0][0],$tmp[0][1]);   
  54.         $userData[$userLeave[0]][0]+=1;   
  55.         echo '<br />用户'.$userLeave[0].'收牌'.$tmp[0][0].'::'.$tmp[0][0];   
  56.         unset($tmp[0]);   
  57.         $tmp=array_values($tmp);   
  58.         $$userCurrent=$tmp;   
  59.         $i++;   
  60.         continue;   
  61.     }   
  62.     $tmpTeam[$tmp[0][0]]=$tmp[0][1];   
  63.     $userData[$userLeave[0]][0]+=1;   
  64.     unset($tmp[0]);   
  65.     $tmp=array_values($tmp);   
  66.     if (count($tmp)==0) {   
  67.         echo '<br />用户'.$userLeave[0].'已出局';   
  68.         unset($userLeave[0]);   
  69.     }else{   
  70.         array_push($userLeave,$userLeave[0]);   
  71.         unset($userLeave[0]);   
  72.     }   
  73.     $$userCurrent=$tmp;   
  74.     $userLeave=array_values($userLeave);   
  75.     $i++;   
  76. }   
  77. echo '<br />经过'.$i.'次出牌,最后的胜者是'.$userLeave[0];   
  78. echo '<br />出牌统计:';   
  79. foreach($userData as $key=>$value){   
  80.     echo '<br />用户'.$key.'出牌'.$value[0].'次,收牌'.$value[1].'张';   
  81. }   
  82. ?>  

效果预览地址:http://wp.stou.info/m/tuibanbanche.php

继续阅读《扑克游戏“推板板车”PHP版》的全文内容...

分类: 编程技术 | Tags: php | 添加评论(13)

相关文章:

]]>
编程技术http://www.stou.info/technology-file/181.html#comment
程序员,一条不归的路i@stou.info(stone)http://www.stou.info/life-fragment/180.htmlFri, 01 April 2011 08:41:42 +0800http://www.stou.info/life-fragment/180.html或许是到了应该思考的时候,最近一直思考着自己以后的路到底怎么走,作为一个web Code Writer,我似乎也患上了程序员的通病:没有安全感对未来忧心重重,程序员似乎是一条不归的路。

我也是迷迷糊糊的就走了程序员的这条道路,上了一所二流的大学,大学期间吃喝玩乐不学无数,惟一热爱电脑,喜欢没有时间观念地坐在电脑面前捣鼓,喜欢捣鼓成功后的喜乐,因为VFP学上了VB后来学起了asp及网页,但这却成了我找到工作的惟一途径。一个广告公司录用了我,我开始接触Zblog开始接触jQuery开始接触用户体验及程序性能优化,后来几经转载到了我的现在的公司,跟着老总做网站运营,做业务程序开发,数据分析,老总很器重,三次加薪并给予了我所谓的“三年规划”。

本来一切对于我来说都应该还不错,刚刚毕业也从来没有思考过自己以后的路要怎么走,也没有制定过自己的短期或长期的目标,过一天算一天,但是不知是上天怜悯还是实在看不过去了,在某个时间我突然开始思考这个问题,生活突然变得很迷茫,我开始问我自己:我到底在干什么?

但仅仅担心和迷茫是不能解决问题的,我下定决心的准备转阵PHP,凭借着自己几年的asp系统开发经验,PHP我快速入门了,我开始理解数据结构、MVC、OOP、SVN以及算法,开始明白程序性能及效率的重要性,开始明白仅仅会ASP就能称为程序员是多么的荒唐。我觉得自己好像找到了编程的入口了,我需要不停的学习理解如何架构优秀的高效率的系统,如何部门协同工作,深入理解PHP的编译,学习C++了解算法,了解数据结构,我觉得自己这几年要怎么度过已经非常清楚,我这几年要达到的工资目标在心中也异常清晰。

但,我并不是天才或者说我的智商并不高,我只是比较喜欢所以投入的时间比较多而已,越往编程深处,越觉得仅仅只靠时间和努力是不行的。“不是天才就别趟编程这趟浑水”,我开始觉得有些道理。现在技术更新太快,年轻时有体力有精力不停的学习加班学习加班OK,但年过35,我们是否还有这个精力像现在这样的干?那会孩子等着上学,父母需要照料,还得负担房子的月供,失业让我们如何面对?

最近在CSDN上看过一篇关于程序员转行的感想文章,搞了快十年的程序,虽然最终搞到了项目经理,但明显已经感觉新人对自己已经虎视眈眈,自己已经拼不过20出头的年轻人了,最终也不得已选择转行。与电脑打了这么久的交道,我们已经拥有了所谓的通病,IQ高,EQ低,不会与人交流,不会用嘴表达自己的想法,这时的我们在现代社会转行会意味着什么?

入IT,入编程这行人的现在依然这么多或许是因为前期较同行工资相比稍高,初期门槛也低,工作也轻松,但大家是否考虑过这是在用青春做交换的代价?

继续阅读《程序员,一条不归的路》的全文内容...

分类: 生活片段 | Tags: 感悟 | 添加评论(23)

相关文章:

]]>
生活片段http://www.stou.info/life-fragment/180.html#comment