欢迎访问 ‘ 程序开发 ’ 的所有文章

老王python学习教程

亲爱的朋友:
    欢迎你!很高兴能在这里见到你,你能来到这里说明你真的很喜欢python,很想把python给学好!我觉的你很幸运,开始我学python的时候比较少资料,学起来也比较头疼,现在随着python越来越流行, 资料也越来越多,大家以后学起来应该会轻松很多了。我前段时间花了很多时间整理了一些python 入门教程,我觉的对初学python的朋友来说是个很好的引路人,我相信通过它你可以快速的上手python的。不信可以试试哦!
最近索取资料的朋友比较多,让老王python感到欣慰!为了让更多的朋友了解python,学习python,喜欢python!
我做出了一个艰难的决定:如果你想要得到这份资料的话:只要做下面列举的5件事情中的2件事,对你来说轻而易举!
  1. 如果你有一些python相关群的话,除我的群:跟着老王学python外,将这篇文章的链接发到群里,分享给想学python的朋友
  2. 如果你有QQ而且有微博的话,将这篇文章的链接发到在微博里面,分享给想学python的朋友
  3. 如果你有个人的技术博客的话,将这篇文章转发到你的博客里,分享给想学python的朋友
  4. 如果你有技术论坛的账户的话,把这篇文章转发到论坛的文章里,分享给想学python的朋友
  5. 如果你有QQ空间的话,把这篇文章转发到QQ空间里并且分享这篇文章,把信息分享给想学python的朋友
如果你做了上面5件事情的2件事情,请你把做的相关链接或者信息截图整理好后通过邮箱发给我,我的邮箱是:

280026798@qq.com

我会把教程的地址发到你的邮箱里

老王python 提供简单实用的python 教程python 书籍。本文地址:python基础教程  转载请保留

先分享先学习哦!希望你不要错过这个和python亲密接触的机会!另外分享相关的

百度Laruence谈php

惠新宸(网名:Laruence,博客),百度PHP高级顾问,年二十有八,好追根究底,有不良嗜好,
幸性本善。乙酉年识互联网,丁亥年入雅虎,翌年入百度。虽性好安稳,然经变无数,唯常叹”人生,菠菜汤尔”。

大家好,今天我主要介绍是PHP在百度一个发展历程,最早的时候百度成立于2000年,2000年的时候,百度刚刚成立,刚刚在北大资源宾馆建立百度,直到2001年的竞价排名,我不评价这个产品怎么样,竞价排名当时是第一个采用PHP,在百度的PHP系统。从2001年到今年已经10年时间了,这10年时间百度PHP经历一些什么变化呢?

我们现在看到是百度,那天我自己脑子里想了一遍,当然不是全部,大家能够知道的一些用户产品,无线产品,商业产品。包括贴吧这个比较大了,还有最新的旅游。对于贴吧来说,前端可能是CUI,或者业务逻辑,一直到后来已经迁到PHP。我列出来这些产品,都是使用了PHP,还有没列出来也是使用了PHP的,很多。所以,如果说让我去介绍每个产品是怎么用PHP的,我觉得这个不太现实,我一共只有30分钟。

这30分钟我主要想跟大家分享的我们发现一些问题和怎么去解决,这些问题是大家都会遇到的。我们最早的时候,就像我刚才提到的我们一些,因为处于最高性能要求,以及对于PHP的不了解,以及对于外部我们可能觉得PHP很慢,所以我们以前的时候,这些大的访问量产品都是用C来做的。他可能在模板上用Cu-i来做展现,这样的方式大家都知道开发,调试,部署都很复杂,成本也比较高,门槛也比较高,招人也比较难招。 阅读全文

ecshop 商品属性

在B2C电子商务系统中,很可能在一个系统中,出售多种商品,而且不同的商品,却有不同的规格,不同的属性。在商品详情页会用到 商品属性,在ecshop中,通过三个字段来控制.

1:ecshop商品类型

2:ecshop属性名称

3:ecshop属性名称对应的属性值

首先,需要增加商品类型.增加商品类型的步骤为:后台->商品管理->商品类型->新建商品类型A

选择商品类型A,点属性列表.输入属性.

其次,使用属性.

新增商品->商品属性->输入属性所对应的值.

ecshop系统中,商品类型是存储在ecs_goods_type表里面,属性名称存储在ecs_attribute里面,商品对应属性名称的值.存储在 ecs_goods_attr表里面。用三字段,来控制他的值.

在goods.php中。你发现,以下代码来处理属性的。

$properties = get_goods_properties($goods_id);  // 获得商品的规格和属性

$smarty->assign(‘specification’,       $properties['spe']);

而ecshop 函数get_goods_properties()就是取得某个商品属性数组的。 阅读全文

ECSHOP增加一个新模板

新增一个dwt模板文件,

1,  假如文件名为addmoban..dwt,此文件编辑好后,放在theme文件夹下的一个模板包(假如文件夹为newmoban)文件夹下(theme/newmoban/)。

2,  需要在模板文件管理的程序里添加此模板文件信息,就是在admin\includes\lib_templates.php文件中$template_files数组中,加入’ ‘addmoban..dwt’。同时在$page_libs数组中添加’addmoban’=>array();

3,  在语言包文件languages\zh_cn\admin\templates.php中.加入以下代码$_LANG[‘template_files’][‘addmoban’]=’添加的模板名称’;

新增一个lbi模板库文件,

1,    假如文件名为addlibrary.lbi,此文件编辑好后,应放在放在theme下的一个模板包(假如文件夹为newmoban)下的library文件夹下(theme/newmoban/libray/)。一个lbi文件可以放在多个dwt文件的多个地方,用<!– #BeginLibraryItem “/library/ addlibrary.lbi” –><!– #EndLibraryItem –>此代码调用进来。

2,    在theme\newmoban\下新建个libs.xml文件,内容参考默认的模板defalut下的libs.xml文件。<file name=”addmoban.dwt”>

<region name=””>

<lib>….</lib>

<lib>addlibrary</lib>

</region>

3,    在admin\includes\lib_ templates.php文件中addmoban数组添加’/library/addlibrary.lbi’=>0;

Objective-C语法快速参考转自cocoachina.com

大部分有一点其他平台开发基础的初学者看到XCode,第一感想是磨拳擦掌,看到Interface Builder之后,第一感想是跃跃欲试,而看到Objective-C的语法,第一感想就变成就望而却步了。好吧,我是在说我自己。
 如果你和我一样,对苹果相关的开发:Mac OS X或是iPhone有兴趣,但是第一时间看到Objective-C就会头疼并伴有发烧症状的话,疗效比较好的快速治疗方法是阅读本文。大概花二十分钟左右,而且绝不无聊的时间,你就会对Objective-C有那么一点点了解,至少读读例子不会那么头疼了。
  不过假定你要有那么一点点c++、c#或是java的基础,至少能看到c++、c#或是java的源码,能够大致明白说得是什么。
 这篇文章不是一篇科技文章,希望你也不要把它当做科技文章来读。文章非常不严谨,但是我相信你能看得懂。 

一、XCode、Objective-C、Cocoa说的是几样东西?

答案:三样东西。

XCode:你可以把它看成是一个开发环境,就好像Visual Studio或者Netbeans或者SharpDevelop一样的玩意。你可以将Interface Builder认为是Visual Studio中用来画界面的那部分功能单独提出来的程序。
Objective-C:这是一种语言,就好像c++是一种语言,Java是一种语言,c#是一种语言,莺歌历史也是一种语言一样。
Cocoa:是一大堆函数库,就好像MFC、.NET、Swing这类玩意,人家已经写好了一堆现成的东西,你只要知道怎么用就可以了。
有些人会比较容易混淆Objective-C和Cocoa,就好像有些人会混淆c#和.NET一样。这两个东西真的是两个不一样的东西。

二、Objective-C是什么?

你可以把它认为是语法稍稍有点不一样的c语言。虽然第一眼望上去你可能会认为它是火星语,和你所认知的任何一种语言都不一样。

先简单列出一点差别:

问题一:我在程序中看到大量的减号、中括号和NS****这种东西,他们是什么玩意儿? 

1 减号(或者加号) 

减号表示一个函数、或者方法、或者消息的开始,怎么说都行。 

比如c#中,一个方法的写法可能是:

private void hello(bool ishello)

{

//OOXX

}
用Objective-C写出来就是

-(void) hello:(BOOL)ishello

{

//OOXX

}

挺好懂的吧? 

不过在Objective-C里面没有public和private的概念,你可以认为全是public。 

而用加号的意思就是其他函数可以直接调用这个类中的这个函数,而不用创建这个类的实例。 

2 中括号 

中括号可以认为是如何调用你刚才写的这个方法,通常在Objective-C里说“消息”。 

比如C#里你可以这么写: 

this.hello(true); 

在Objective-C里,就要写成:

[self hello:YES]; 

3 NS**** 

老乔当年被人挤兑出苹果,自立门户的时候做了个公司叫做NextStep,里面这一整套开发包很是让一些科学家们喜欢,而现在Mac OS用的就是NextStep这一套函数库。 

这些开发NextStep的人们比较自恋地把函数库里面所有的类都用NextStep的缩写打头命名,也就是NS****了。比较常见的比如: 阅读全文

ThinkinLAMP聚会

上周六参加了ThinkinLAMP 在浦东的聚会 ,主要是去听 <MYSQL自动化运维>的
下面是文档链接.

庄浩英:《MySQL自动化监控》 – Thinking In LAMP 2011年2月聚会分享

[slideshare id=6999348&doc=mysql-110221060130-phpapp01]

锅巴:《菜菜子的移动互联观 – iOS Tech Talks 2011 参会感悟》 – Thinking In LAMP 2011年2月聚会分享

郭佳:《网页游戏开发与敏捷开发》 – Thinking In LAMP 2011年2月聚会分享

ThinkinLAMP 已经有很多期的聚会, 往期都在thinkinlamp.com官方有分享文档,视频. 大家可以去看看,

参加培训不如多买几本书看.

 过年回来竟然有种参加培训的想法, 想提升一下自己的php技术水平,看看培训费用2000~6000不等.有免费的但是条件是交2000元押金,签合同,每天在培训学校上班,周末上课.

自己以前是很厌烦培训的,参加培训不如买几本好的书看看.最多消费不过1000块钱,而且很全面.

在amazon.cn 输入想培训的行业 很多受欢迎,流行的书籍就出来了.肯定不会超过1000元. 

我买的php书籍 没超过300块. 到新华书店看过内容,最后买了下面几本书. 阅读全文

fetch_array,fetch_row,fetch_assoc,fetch_object区别

fetch_array,fetch_row,fetch_assoc,fetch_object这几个是从mysql查询结果集中取得数据的函数,让我们来看看他们之间的区别,自己记录下,便于日后遗忘了好查询,下面通过一个实例开始分析:

<?php

$link=mysql_connect(’localhost’,’root’,”);
mysql_select_db(’abc’,$link);
$sql = “select * from book”;
$result = mysql_query($sql);
while($row = mysql_fetch_row($result))
{
echo $row['cid'].’::’.$row[1].’<br>’;
}

$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
echo $row['cid'].’::’.$row[1].’<br>’;
}

$result = mysql_query($sql);
while($row = mysql_fetch_object($result))
{
echo $row->cid.’::’.$row->title.”<br>”;
}

$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result))
{
echo $row['cid'].’::’.$row[1].’<br>’;
}
?>
分析:

mysql_fetch_row,这个函数是从结果集中取一行作为枚举数据,从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结 果的列储存在一个数组的单元中,偏移量从 0 开始。 注意,这里是从0开始偏移,也就是说不能用字段名字来取值,只能用索引来取值,所以如下代码是取不到值的:

while($row = mysql_fetch_row($res)){
echo $row['cid'].’::’.$row[1].”;
} //这里的$row['cid'] 取不到值。

mysql_fetch_array,从结果集中取得一行作为关联数组,或数字数组,或二者兼有,除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。 也就是说他得到的结果像数组一样,可以用key或者索引来取值,所以

while($row = mysql_fetch_array($res)){
echo $row['cid'].’::’.$row[1].”;
}//这里$row['cid'],$row[1]都能得到相应的值。

mysql_fetch_object,顾名思义,从结果集中取得一行作为对象,并将字段名字做为属性。所以只有这样才能取到值
while($row = mysql_fetch_object($res)){
echo $row->cid.’::’.$row->title.””;
}

mysql_fetch_assoc,从结果集中取得一行作为关联数组,也就是说这个函数不能像mysql_fetch_row那样用索引来取值,只能用字段名字来取,所以

while($row = mysql_fetch_assoc($res)){
echo $row['cid'].’::’.$row[1].”;
}  //$row[1]这样是取不到值的

补充一点:

mysql_fetch_array函数是这样定义的:array mysql_fetch_array ( resource result [, int result_type]),返回根据从结果集取得的行生成的数组,如果没有更多行则返回 FALSE

mysql_fetch_array() 中可选的第二个参数 result_type 是一个常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH。其中:
1、mysql_fetch_assoc($result)==mysql_fetch_array($result,MYSQL_ASSOC);
2、mysql_fetch_row($result)==mysql_fetch_array($result,MYSQL_NUM);

所以mysql_fetch_array()函数在某种程度上可以算是mysql_fetch_row()与 mysql_fetch_assoc()的集合。另外,mysql_fetch_array()另外还有MYSQL_BOTH参数,将得到一个同时包含关 联和数字索引的数组。

odbc 里面的函数可以参考mysql 类来理解

odbc_fetch_row  odbc_fetch_array

MYSQl left join 联合查询

MYSQl left join 联合查询效率分析

user表:

代码:
id | name
———
1 | libk
2 | zyfon
3 | daodao

user_action表:

代码:
user_id | action
—————
1 | jump
1 | kick
1 | jump
2 | run
4 | swim

sql:

代码:
select id, name, action from user as u
left join user_action a on u.id = a.user_id

result:

代码:
id | name | action
——————————–
1 | libk | jump ①
1 | libk | kick ②
1 | libk | jump ③
2 | zyfon | run ④
3 | daodao | null ⑤

分析:
注意到user_action中还有一个user_id=4, action=swim的纪录,但是没有在结果中出现,
而user表中的id=3, name=daodao的用户在user_action中没有相应的纪录,但是却出现在了结果集中
因为现在是left join,所有的工作以left为准.
结果1,2,3,4都是既在左表又在右表的纪录,5是只在左表,不在右表的纪录
结论:
我们可以想象left join 是这样工作的
从左表读出一条,选出所有与on匹配的右表纪录(n条)进行连接,形成n条纪录(包括重复的行,如:结果1和结果3),
如果右边没有与on条件匹配的表,那连接的字段都是null.
然后继续读下一条。
引申:
我们可以用右表没有on匹配则显示null的规律, 来找出所有在左表,不在右表的纪录, 注意用来判断的那列必须声明为not null的。
如:

sql:

代码:
select id, name, action from user as u
left join user_action a on u.id = a.user_id
where a.user_id is NULL

(注意:1.列值为null应该用is null 而不能用=NULL
2.这里a.user_id 列必须声明为 NOT NULL 的)

代码:
result:
id | name | action
————————–
3 | daodao | NULL
——————————————————————————–

Tips:
1. on a.c1 = b.c1 等同于 using(c1)
2. INNER JOIN 和 , (逗号) 在语义上是等同的
3. 当 MySQL 在从一个表中检索信息时,你可以提示它选择了哪一个索引。
如果 EXPLAIN 显示 MySQL 使用了可能的索引列表中错误的索引,这个特性将是很有用的。
通过指定 USE INDEX (key_list),你可以告诉 MySQL 使用可能的索引中最合适的一个索引在表中查找记录行。
可选的二选一句法 IGNORE INDEX (key_list) 可被用于告诉 MySQL 不使用特定的索引。
4. 一些例子:

Eclipse RCP

看到一个生僻的概念Eclipse RCP 了解一下
RCP,Rich Client Platform,富客户机平台
  Rich Client是一个相对的概念,主要是针对时下广泛的基于WEB的应用,因为这种客户端(也即现有的各种浏览器)的运行环境没有提供一个很好的组件模型和交互模型致使这种应用的界面的同服务之间的交互变的很奇怪,每一次交互都需要重新组织出整个界面,而这个界面的组织基本在服务器端完成,也所以致使表现层的逻辑居于服务器端,所以称这种为Thin Client,而相对的则是Rich Client,目前来说在技术上Rich Client还没有一个甚或是两个大一统而且又成熟的标准技术出来,所以Rich Client只能说是一种架构方式,其特点便是服务同表现完全的物理分离,表现逻辑完全由客户端来负责,这是最关键的一点。但我认为一定要同时兼顾原有WEB应用的零部署等特点。
  富客户机平台(Rich Client Platform, 即RCP)。RCP包括下列组件:
  核心平台(启动Eclipse,运行插件)
  OSGi(标准集束框架)
  SWT(可移植构件工具包)
  JFace(文件缓冲,文本处理,文本编辑器)
  Eclipse工作台(即Workbench ,包含视图(views)、编辑器(editors)、视角(perspectives)、和向导(wizards))