转移wordpress数据库后不能添加文章的一次查错

前几日转移了一个wordpress博客, 用phpadmin导出了数据库, 然后在新的数据库服务器上执行sql导入数据库.

重新安装wordpress后, 一切正常. 但隔日发现无法发布文章, 也无法上传图片.

3389服务器, 通过调试php文件, 逐级die测试, 最终把错误锚定在posts表的insert语句执行上.

执行以后wpdb产生一个隐藏的错误

Field ‘post_mime_type’ doesn’t have a default value

打开数据库后发现, post_mime_type本应有一个”默认值的, 现在却没有了. 同时发现该表的其他若干字段的默认值也丢失了.

修改默认值后, 问题解决.

对于默认值的丢失是导出数据库时设置不当, 还是phpadmin或mysql本身的问题, 目前还在查找中.

贴出此文, 希望对遇到同类问题的朋友有所帮助.

godaddy的SSL域名证书在firefox上报错的问题解决

win2003+IIS6的服务器购买了godaddy的SSL域名证书, 使用一直没有发现问题.
后来发现在firefox通过https访问网站的时候, 跳出一个警告提示sec_error_unknown_issuer.

在百度多次无果后, 最后在google上找到一篇老外Eric Duncan写的解决方案: http://eduncan911.com/blog/getting-godaddy-ssls-working-in-firefox-on-iis.aspx

这里大概得讲一下解决途径.

造成这个错误是因为我们购买的是godaddy的三级证书, 查看域名可以发现, 证书是由顶级的 Go Daddy Class 2 CA 颁发给Go Daddy Secure Certification Authority, 再由此机构颁发给客户网站PandaPhone的.

 

SSL 证书路径

godaddy的SSL证书路径

 

在IE中,上面的两个证书机构都是默认为可信证书机构的, 而firefox浏览器的信任列表中却没有第二个Go Daddy Secure Certification Authority.

因此, 需要从godaddy的网站上下载这个中间证书安装到服务器上.

这里是godaddy的全部中间证书下载地址: https://certs.godaddy.com/anonymous/repository.seam

按照Eric的提示, 应该下载的是Go Daddy PKCS7 Certificate Intermediates Bundle (for Windows IIS)

下载好以后的是一个.p7b 的证书文件, 导入到mmc的证书可信证书中就可以了.(既然读者找到这篇文章, 一定已经设置过了IIS的证书, 这个中间证书的导入方式和导入客户证书的方式是一样的, 再次不再赘述, 可以参考老外Eric的图片原文).

导入完证书以后, 要记得iisreset, 重启一下IIS.

然后刷新网站, OK, 没有安全警告了!!

使用javascript与indeterminate实现三态checkbox

当checkbox的indeterminate设置为true的时候, input会变成灰色打勾的状态. IE一直支持此属性, 而Firefox却不支持.不过在最新的Firefox3.6中, 也开始支持这个属性了. 我们可以用简单的javascript来实现三态checkbox.

$("input:checkbox").live("click",function()
{
	if(this.getAttribute("checked") && !this.getAttribute("indeterminate"))
	{
		this.setAttribute("indeterminate", true);
		this.setAttribute("indeterminate-status", true);
		return false;
	}
	else if(!this.getAttribute("indeterminate") && this.getAttribute("indeterminate-status"))
	{
		this.setAttribute("checked", true);
		this.removeAttribute("indeterminate-status");
		return true;
	}
});

从CMS到ERP(一) 没什么是不可能的

程序员开始了hellworld以后, 接触到的第一个[系统]就是CMS. 记事本, 留言板, 新闻列表, 没错, 这就是CMS了.

而由CMS扩展到ERP, 这个跳跃听起来大了一些. 不过我们这里所要做的事情正是如此, CMS是Content Management System, 显然ERP中的资源表现到技术层面, 也正是各种各样的Content!

两年前到公司的时候, 我们差不多只有一个网站, 一些最简单的文章内容, 甚至都不是[系统], 因为这些页面是静态的!

然后发生了什么?

  1. 静态页面 =>
  2. 动态页面 =>
  3. 动态产品(这里把页面中的一部分数据独立成了产品实体) =>
  4. 产品管理(丰富了[产品]这个内容的更多属性) =>
  5. 在线订单! (由[产品]和其价格等属性组合成的另外一个由客户产生的[订单]实体!) =>
  6. 订单管理
    (客户创建好了[订单], 然后呢, 我们要去修改它的一些属性, 好让BOSS知道发生了什么, 也好让我们自己记住自己干了什么)
    修改订单的状态, 对一些需求问题留言, 再由不同角色的人做不同的事情( 例如财务修改了[收款], 销售就知道客户付钱了!) =>
  7. 再然后, 越来越多的数据[内容]被加入进来
    仓库里还有没有货物可以发给客户? 于是有了库存量的扩展.
    没库存了, 到底什么时候才能有? 于是有了采购订单的扩展.
    昨天刚来的那个新员工居然就可以看到我们所有的客户,订单信息! 于是有了权限的扩展…..

that’s it!

可以看到, 从CMS到ERP, 就是越来越多的数据被加入进来, 越来越多的数据之间发生了越来越复杂的关系. 可两者之间并没有什么技术分水岭.

剩下的问题就是, 我们怎样让一个系统一步一步的, 从CMS过渡到ERP, 并且可以在之间任意一个位置停留. 而不至于像我们当初那样, 一发生需求变化就手忙脚乱的修改原来的代码.

成品, 半成品, 原材料, 原料追溯

今天Grace来市区办公室, 一起解决了两个库存系统中的问题.

成品, 半成品, 原材料

目前ERP中成品, 半成品, 原材料是一起管理的, 即没有体现出三者之间的区别. 以前看的多数ERP中, 原料, 半成品, 成品是统称”物料”的. 并没有严格的区分. 但是目前产生了一些问题:

1. Planner在安排生成的时候, 希望看到各种原料是否到货, 而目前入库日志是全部在一起, 不利于查看
2. 跟单员与销售在查看某个产品有没有库存的时候, 经常把原料当成成品, 认为已经有产品可以发货了, 但实际上, 看到的可能是半成品或原料.

第一点其实不算一个很严重的问题, 解决的方法也比较简单.

而第二个则涉及到一些”原则性”的问题.

同一个物料编码却即可以是原料, 又可以是成品, 一般是以下的两个原因:

  1. 原料, 半成品, 成品之间有较为细微的实物区别, 但被忽略, 作为一个物料来编码.
    这中情况下, 需要确定哪些属性是关键性属性, 是否分离出新的物料编码阈值难以确定.
    例如: 包装, 印字, 标签等, 物料的实际使用性能是完全一样的, 但包装, 印字, 标签等工作确实可以算作是”加工”的一部分.
    如果作为同一物料的话, 需要发送给客户的是加工后的产品, 跟单员, 销售人员看到的确是加工前的库存量.
    这种情况, 似乎正确的解决方法应该是分离出新的物料编码.
  2. 实物完全一样, 但应用不一样.
    有些批次的物料采购回来就是为了生产加工用的, 而同时这些物料平时也是可以作为成品销售的.
    成产部门为了避免跟单和销售混淆, 便于Planner安排成产, 需要将这类库存独立算作原材料或半成品.
    这种情况, 应该是在库存分配的环节, 把生产的原料需求也加入进去. 即作为生产原料的库存是Reserved的, 查看库存的时候不属于FreeQty, 因此销售和跟单也就知道了这些库存是没办法供自己提货使用的. 但显然这么做需要的动作更多, 时间也更多.

最终的解决方案

最后, 为了最快的解决问题, 使用了附加label的方法来区别原料, 半成品 与 成品.
产品入库的时候, 直接选择该批次是作为原料, 半成品, 还是成品入库, 而在出入库的日志中, 也记录了变动的批次是原料, 半成品, 还是成品. 这样, 查看库存日志的时候, 就可以将三者分看查看了.

另外, 牵扯着变动了库存分配的算法, 只将成品的库存量参与到订单的Reserved分配中.

原料追溯

半年前曾经就原料追溯的问题集中得讨论过, 但是采纳的意见是, 由车间制定一个生产单, 每个生产单有唯一的生产单号. 在生产领料的时候, 需要从ERP中填入生产单号.

而生产完成以后, 成品入库的时候, 库存管理人员需要将分配的成品批次号写到生产单上交还给生产负责人, 生产单按日期排序, 统一保存.

当发出去的成品出现问题的时候, 根据成品的批次号查询ERP系统, 可以得到该批次的入库日期, 由此日期再去查找当天的纸质档案, 由于精确到了日期, 可以较快的找到当天的该批次的生产单. 找到生产单以后, 附属的生产过程, 原料批次, 等信息也都记录在纸质档案上. 同时, 无论根据生产单号, 还是原料批次, 都可以从ERP系统中找出这些原料的供货商, 入库日期等.

今天Grace提出以纸质档案作为媒介追溯原料的方法效率太低, 太慢, 太不方便. 遂加了一个环节, 即在生产的成品入库的时候, 须填入生产所用的生产单号. 这样就可以双向查找.

在ERP查看库存的时候, 如果某个批次拥有一个生产单号的属性, 则表明可以对该批次进行原料追溯. 通过生产单号查找出领料单(生产单号是记录在领料单表中的). 而将领料单中的原料批次一一列出, 即得到该成品批次的原料信息.

写文的时候在考虑如此简便的方式, 为何半年前的大讨论没有应用, 却使用了较为复杂的方法. 显然当时考虑的情况更多.

特撰此文, 以防将来修改此模块的时候再忘记此时的想法.

心境

阳春三月,天气不冷不热,早上温温的被子真是舒服嘞。

起床时,大吼一声,大声唱歌,发现居然有效。

很快思绪飞出了梦境。

心境,心境,原来多数事情都只是个心境。幡未动,是心在动