twitter on 2008-10-15

  • 停掉了ShareThis插件。原因有三:很少有人用,现在的人好像更倾向于用集成类浏览器(如带GoogleToolbar的Firefox)解决收藏转阅都问题;ShareThis的服务器好像有问题,统计数据me从来就没有看到过 于 2008-10-15 08:17:27
  • 文章被阅读的次数和热度放在页首和archive中显示更符合其本身用途,可以有效指引来访者。这应该是reader friendly的! 于 2008-10-15 09:45:27
  • 貌似FeedBurner已经成功切换到Google的怀抱了,登录时自动转到了 feedburner.google.com/fb 帐号啊啥的都和以前一样使用,不过功能上没啥变化,看不出他们加盟Google后带来了什么新东西 于 2008-10-15 14:48:12
  • 欢迎thissubject朋友跟踪me的消息! 于 2008-10-15 15:43:07
  • http://zxw88263.blog.sohu.com/101823676.html 忘掉优势资源,建立营销核心优势。说着容易做着难,大家其实都很难自己革掉自己的命的。 于 2008-10-15 16:26:07
  • 糖酒会的看点在哪里? 有优秀的运作手法可以窥测吗? 战略在这种场合几乎不可见,都体现在嘴巴的闹哄哄上了。 来了,长沙…… 于 2008-10-15 16:47:06

Powered by Twitter Tools.

梁平柚的不同命运

不同命运的梁平柚

今年(2008年)三月份从重庆到万州去,路上朋友说梁平的张鸭子很出名,中途就去那里休息吃饭。鸭子虽然好吃,但和刚刚想像的还是有一定距离。走出饭馆闲逛,入眼是黄灿灿的一片,朋友说,这是梁平的另外一大名特产——梁平柚。

鸭店旁边开了不少本地特产店,摆些干子啊什么的,当然也有成框的柚子。但入眼看去,都有点不新鲜,果皮萎缩,还有不少斑痕,店主也并不特别推荐它们。问了下,原来是果园寄售的,不是很好卖。但就在几米远的马路边,有不少用自行车驮着叫卖的,似乎生意很好。过去看看,马上被几个卖柚子的包围了,纷纷推荐自己的柚子。那些柚子的成色也确实要好很多。正在纠缠,驶来一辆小车停下,小贩们马上围过去。不到两分钟就做成了一笔生意,两蛇皮袋柚子被撂到了后备厢。然后他们又围了过来,锲而不舍的继续推荐。受热卖场景的影响,再加上确实想尝鲜,补偿下鸭子未尽的馋意,于是me也买了十多个,丢在后面慢慢吃。

去万州看完市场后给销售团队开会,me把梁平柚的故事拿出来给讨论,大家兴趣很浓,总结出了不少东西,都是和自己日常市场营销工作相关的。

  1. 特产店中打了堆码交了进场费还得出提成的柚子为啥卖不动?产品应该是没有差别的,都来自梁平的果园,另外根据它采用寄售的方式说明它可能还来自规模较大的果园,质量说不定比街边的散户还要好些;品牌方面大家都一样,号称梁平柚;价格也差不多,没有出现恶性杀价乱市行为,即使出现的话,作为地头蛇的特产店主也是不会允许的。几方面比较,专卖的柚子整体情况比街头的还要好些,但就是卖不动。问题在哪里?在终端销售现场。
  2. 渠道很重要,但倒数第一站更关键,否则前面功夫都是白费。果园通过特产店售卖柚子,应该说是成功的渠道建设,和快销品厂家品牌在大卖场或专卖店进场是一个概念,也就是通过一定的流转过程把产品摆在了消费者面前,可以被买去了。通路费用昂贵,果园给特产店的可能是提成也可能是租金,大卖场进场费更是明明白白不菲的现金白银。通道费用花了,产品也如愿的出现在消费者面前了,但又如何呢!发皱的柚皮告诉我们,效果很差,甚至很惨。在卖场里,又有多少这样的“皱柚”呢,我们的产品是不是也处于这种境地呢?说实话,实际情况不容乐观。怎么办?远的不着边际的品牌力量先放到一边,我们还是得从终端办。
  3. 长臂不如短拳。果园的渠道过长,力量衰减很快,相反那些散户自己把产品摆在了消费者面前,更准更狠,效果不言自明。果园园主知道自己的产品处于这种境地的话,估计会气得撞墙。
  4. 产品新鲜很重要,因为这个对消费者来说最直观。买食品类产品不看生产日期的消费者估计现在已经不存在了,并且因为缺乏其他判断标准,这个标准就显得尤为重要,超越一切。对于没有生产日期的东西,新鲜感更直观,更不容忽视。某种程度上讲,货是卖看相的。柚子一直放皱,很悲哀,放皱了还摆在那里给街头的新鲜柚子做陪衬就更悲哀了。客观上讲,无论是果园还是店主都不愿出现这种情况,前期可能都很努力,但出现这种情况后不进行处置,虽然有店主不负责任的一方面,作为产品生产厂家,果园更应但承担责任(承担损失并提供解决方案)。

最后还是老问题:如果您是果园园主,看到这种情况该怎么办?如果您是果园的销售经理,看到这种情况您该怎么办?

PHP、MYSQL编程笔记

开发StatPressCN过程中恶补PHP和MYSQL知识,水平不行,只好边干边学,呵呵。对一些基础不高深的东东简单梳理下,免得忘了下次重来。

一、MYSQL

  1. 用MYSQL语句直接修改数据。update `db_name` set `urlrequested` = replace(`urlrequested`,’\”,”) where `urlrequested` like “%\'”,把以’结尾的链接请求末尾的’去掉。replace可以保证key的连续性,如果先删除后添加就没有这个好处了。
  2. 插入记录。INSERT INTO users(name, age) VALUES(‘姚明’, 25), (‘比尔.盖茨’, 50), (‘火星人’, 600);如果values中为空,则添加默认值为基础的记录。
  3. 更新记录。需要配合where条件判断。UPDATE users SET age = 30 WHERE id = 12;以上语句都很危险,如果where没有设置的话会更新所有的数据记录,所以在进行类似操作的时候一定要先备份,再审慎
  4. 删除数据有两个命令delete和TRUNCATE。DELETE FROM users WHERE name = ‘Mike’ ORDER BY id DESC LIMIT 6;如果有自动增加的字段,用没有where的delete和truncate都会让这个字段从0开始,如果不想这样,可以用带where 1的语句,不过那样的执行效率很多,因为需要遍历整个数据库的所有记录;删除数据时如果使用形如like ‘$tmpstr%’的语句,一定要判断下$tmpstr是否为空,否则很危险,可能删除掉所有数据,后果严重的很。
  5. 正则表达式在where语句中也可使用,好爽,这下me对正则表达式的学习可以用了。官方文档参见这里。

二、PHP

  1. 分开字符串。$p = explode(“=”,$url);
  2. 打印出数组中的所有元素。print_r($p);
  3. 计算数组中的元素个数。count($p);
  4. 数组运算,类似于java中集合的概念,很方便。生成一个空数组:$bloglist = Array();向数组中增加一个或几个元素(从末尾):array_push($bloglist,$matches[1]);添加到数组头部之前则是array_unshift($bloglist,$matches[1]) ;从数组尾部删除一个元素用array_pop(),从头部删除一个元素则用array_shift();让数组中元素唯一(即无重复元素,类似于结合set的概念):$bloglist = array_unique($bloglist);迭代输出每个元素可以在foreach中使用as:foreach($bloglist as $blog);判断某元素是否在数组中:in_array($lookingFor, $bloglist),返回布尔值真假;数组中每个元素都有个默认的key,可以这样输出看看:while (list($key,$value) = each($bloglist)) {echo “$key : $value<br>”;};还可以合并多个数组$bloglistall = array_merge($bloglist1, $bloglist2);得到两个数组的交集可用array_intersection($bloglist1, $bloglist2);差集可用array_diff($bloglist1, $bloglist2);如需要合集则先array_merge(),然后再用一次array_unique();对数组进行排序则用sort($bloglistall),默认是英文字母顺序;数组的key必须是唯一的,并且key可以设定为字符串,默认是整数。关于数组,更详细的阐释是Array的官方说明(e文版)。
  5. 奇妙的类型自动转换。print(“8&heart5″+20);输出结果为28。
  6. 字符串函数:strlen,得到字符串长度;substr($v,start_pos,length),截取指定长度的字符串,不指定长度则自动取到末尾;strripos($v,”postname”),是否包含指定子字符串,返回所处位置或;sscanf,扫描规律字符串得到相应变量;printf,格式化输出字符串;str_replace,替换子字符串;strstr,找到特定子字符串出现的位置;rtrim会删除末尾的空格和换行等字符,包括空格、\t、\n、\r、\0、\x0b;explode会自动处理行尾的空字符。
  7. 正则表达式。ereg(‘^/[0-9]{4}/[0-9]{2}/{0,1}$’,$out_url);匹配/2008/10
  8. 时间函数。println(strtotime(“now”));输出1224902867,然后用date函数格式化println(date(“c”,$d1));输出2008-10-24T18:03:42+08:00,println(date(“r”,$d1));输出Fri, 24 Oct 2008 18:03:42 +0800,如果用gmdate则输出格林威治标准时,println(gmdate(“r”,$d1));输出Fri, 24 Oct 2008 10:03:42 +0000;其中时区信息是通过date_default_timezone_set(‘prc’);设定的,prc指中国大陆,也可以是其他,有效值列表见这里;另外strtotime还可以对时间做修正,比如strtotime(“3 October 2005”)和strtotime(“1 days”,strtotime(“2 October 2005”))输出的结果都是一样的,可以用的修正符号有“+1 week 3 days 7 hours 5 seconds”,可以用+-号。
  9. file打开某个文件并把每行读入数组;fopen打开一个文件返回句柄,可以设定打开方式为读或者写,打开后内容置空;fwrite则写入内容,成功则返回true,否则是false;操作完毕后需要fclose关闭句柄。

三、WordPress

  1. get_option直接得到选项值,不用每次用mysql语句查询。
  2. get_permalink($id)得到帖子的固定链接地址,注意是包含域名的绝对路径,如果需要相对路径,则需要str_replace(get_bloginfo(“url”),””,get_permalink($id));
  3. update_option如果该项不存在会自动建立。技巧:如果不能确定某个选项是否存在,则可以先update后再delete。
  4. 数组可以一次性存入option中,存储形如a:2:{s:5:”title”;s:8:”my titile”;s:4:”body”;s:12:”Home is warm”;},a指的数组,2是元素个数,title是key名称,5是字符串长度,my titile是title的值,后面body同。
  5. 要调用插件或主题中的函数必须进入wp的主题运作机制,直接调用是无效的,出于安全考虑,同时也是因为无法得到相关环境设定和变量。官方提供的方式是模板,比如您可以自己定义一个page的新模板,然后创建page是选择新模板就可以了。模板标头有特殊要求,见这里
  6. php代码执行其实是以用户权限进行的,因为可以获取文件的在服务器上的本地地址并进行读写操作。

四、HTML

  1. 因为php可以控制输出逻辑,因此可以尽量使用html代码而不是通过php的echo或print输出,这样页面逻辑更清晰,也容易调试。
  2. 表格需要设定宽度后,表格单元中的左对齐右对齐才能起作用。
  3. input type=checkbox name=’statpress_showhotdepth’ value=’checked’ xxx

五、CSS

  1. 样式表嵌入标签的方法。<table class=’mytable’>……</table>,这种情况下mytable应该在外链的css或者当前页面自定义的css中已经定义过;或者直接写style:<table style=”outline:dotted 1px green;”>……</table>
  2. 在形如#sidebar h2{……}中,仅对那些class是sidebar中出现的h2才起作用。