作者归档:baiyuxiong

drupal自动生成缩略图原理分析

在drupal中,使用image_style_url函数可以将一个地址public://…转换成一个外部可访问的URL,这个 函数需要的第一个参数,是图像样式,用来指定缩略图的大小尺寸,在后台admin/config/media/image-styles 配置-媒体-图像样式中配置。

缩略图在用户访问前有可能并未生成,未生成的图片,会有访问时通过服务器如apache、nginx的rewrite规则来生成。在apache服务器下,rewrite规则直接就直接,但在nginx下,需要修改rewrite规则,添加几句,如下:

1
2
3
4
5
6
7
8
location ~* files/styles {
    access_log off;
    expires 30d;
    try_files $uri @rewrite;
}
location @rewrite {
    rewrite ^ /index.php last;
}

也就是说图片只有在访问到该地址时才会生成,这样只有在需要的时候图片才会生成,而生成后又可以重复利用,如果图片更新,只需要删除旧的即可。

nginx windows ucenter通信失败的解决办法

经过多方研究,发现通信失败的原因是socket请求超时,最终发现是在windows下,nginx的socket有问题,用不了。

所以只好将代码注释掉。

修改uc_server\model\dfopen方法,直接return 1;不要让执行下面的代码。

如果应用采用mysql方式,则修改上面的代码并没不会影响功能,只不过是没办法验证配置是否真的正确。但可以自己写个测试程序测一下就知道了。

如果使用socket方式,那在windows下是用不了的,解决方式只能是换成apache,或系统换linux。

dbshortcut使用教程

Dbshortcut是基于CI的脚手架功能改装的强大数据库增删改查工具类,与脚手架功能类似,建好数据表后,就可以快速的创建对数据库的增删改查操作,提高工作效率。一般用于后台的搭建。
Dbshortcut可以直接的页面元素及每个元素支持的属性有:

 

设计模式特性总结

使用设计模式的代码基本上具有两个特点:
1、参数传递是大多是对象,而不只是基础数据类型,因为这样就可以在传输数据的同时,把对象的方法也传到被调用方法中。将所有的变化在调用前后割离开。
2、用多态替换if else。将if else里的东西,整成接口和它的实现,接口做为参数。调用时,实例化不同的实现传给被调用方法。

装饰者模式:替换原本需要用list的实现,可嵌套传入多层对象。
命令模式:嵌套传入两层对象。
代理模式:传入一层对象
策略模式代理模式的区别:代理模式的代理类与被代理类实现相同的接口,即代理类知道被代理类要做什么,而策略模式则策略容器不实现策略接口。从这两个模式可以看出来,其实很多模式看起来都差不多,单纯的记住这种区别很多时候价值不大,更多的是要像倚天屠龙记里张无忌跟张三丰学太极那样,要全忘光了表面这些东西,而深得其精髓才行。
访问者模式与代理模式、策略模式的区别:访问者模式是多对多的关系,调用接口实现时,将当前实例也做为参数传给了接口的实现。而代理,策略则没有,是一对多的关系。

一种模式稍做变化就是另一种模式。

将WEBX petstore切换到mysql数据库

1、MYSQL建表petstore,导入数据petstore\dal\src\main\resources\petstore\dal\sql
2、DAL POM.XML添加MYSQL JAR包依赖
3、修改data-source.xml

1
2
3
4
5
6
      <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>  
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/petstore"/>  
        <property name="username" value="root"/>  
        <property name="password" value=""/>  
      </bean>

4、修改几处测试用例
有测试用户全报错,因为测试数据长于字段定义的长度。
petstore\dal\src\test\java\com\alibaba\sample\petstore\dal\dao\OrderDaoTests.java 69行和72行:
order.setExpiryDate和order.setStatus,值都改成1个字符,

5、修改一句SQL
\petstore\dal\src\main\resources\petstore\dal\sqlmap\ProductItem.xml改成下面这样:

1
2
3
4
5
6
<select id="getItemListByProduct" resultMap="resultWithQuantity" parameterClass="string"><![CDATA[
        select
          I.ITEMID, LISTPRICE, UNITCOST, SUPPLIER, I.PRODUCTID, NAME,
          DESCN, CATEGORY, STATUS, ATTR1, ATTR2, ATTR3, ATTR4, ATTR5, QTY
        from ITEM I, PRODUCT P, INVENTORY N where P.PRODUCTID = I.PRODUCTID and I.PRODUCTID = #value# and N.ITEMID=I.ITEMID
    ]]></select>