切图

photoshop切图,7.0版即可输出为div切片

转载 PS切片导出为DIV+CSS布局

在修改好相应的文字与图象之后,我们就将PSD文件输出(X)HTML文件。

首先得先对PSD文件做切片,有两种方法:

①使用工具栏上的“切片工具”,

然后在图象上划出一块一块的区域。

②使用基于参考线的切片,按ctrl+R调出标尺栏,

把鼠标移动到标尺上,按住鼠标左键,移动到图象上,将会看到一条绿色的参考线,如图

将参考线;排好,然后点一下工具栏上的切片工具图表,然后点上面

选项栏里的“基于参考线的切片”。于是在原来的参考线上就变成了一块一块的切片了。

********************************************************************************

接下来就可以输出了:
①依次选择菜单栏上的“文件”→“存储为Web所用格式”→“存储”。

②接下来就会弹出一个“将优化结果存储为”的窗口。

在“保存类型”处有个下拉列框可以选择,因为我们要存储为网页的格式,所以选择“HTML和图象(* html)”,再选择“保存”就可以输出一个网页格式的HTML文件与一个包含图象的名为“images”的文件夹。

③如果我们需要输出“div+css的网页”我们还可以这么做:
在“设置”处的下拉列框,选择“其他”

就会弹出一个“输出设置”的窗口
在第2个下拉列框处选择“切片”,选择“生成CSS”,单击“好”→“保存”,就可以输出一个目前流行的“div+css”的HTML网页。

7.0就包含此功能

Continue reading 切图

PHP Parse Error: syntax error, unexpected $end 解决方法

报这种错误:PHP Parse Error: syntax error, unexpected $end。有两种可能:

1:

//$str .= "?>/n";

这种情况?>被认为是php结束标记,造成语法错误,解决办法看你自己的代码

2:

使用了短标记<? php code ?>但是没有在php.ini中配置 short_open_tag = On

3:

curly bracket 花括号{}缺失或不匹配

4:

php中类定义是不能被分段的,函数中分段除外。原文是:

as in PHP, a class definition cannot be broke up and distributed into multiple files, or into multiple PHP blocks, unless the break is within a method declaration.

Continue reading PHP Parse Error: syntax error, unexpected $end 解决方法

【转】Forbidden关于无权限访问目录的问题

此文总结得较全面:

转自:http://hi.baidu.com/tian%C2%BD%C0%DA/blog/item/2569ba0337e15b034bfb5191.html

问题:You don't have permission to access / on this server.
说法一:hi.baidu.com/%D0%C7%BC%CA%C0%CB%D7%D31988/blog/item/449a1cfc676f7389b801a026.html
<Files ~>
AllowOverride AuthConfig FileInfo Indexs Limit Options
Order allow ,deny
Deny from all-----------------注意:就是这儿!!--->把这行去掉或注释掉就行!!!
</Files>

不过原httpd.conf文件中是没有这一段的。只有
<FilesMatch "^\.ht">   # 什么意思呢。匹配除.htt开头的文件?
Order allow,deny
Deny from all
</FilesMatch>
经查,这一段是属于服务器安全配置方面的。《php和mysql web开发》中写到:通过在httpd.conf中引入适当的指令,隐藏一些不希望被看到的文件。例如,要防止inc文件被看到,则:
<Files ~ “\.inc$”>
Order allow,deny
Deny from all
</Files>
上面文章还讲到怎么去解决错误的方法,值得借鉴。好了,继续说 403 forbidden
说法二:hi.baidu.com/hzw513/blog/item/ad85c0f56e5e0923bd310930.html
1、修改了httpd.conf中 documentRoot 的值;但没有修改下面不远处 <Directory "url"></Directory>中的url ;这个很好解决,直接改为一样,重启服务器就行了。
2、你没有访问这个目录的权限;不过这种情况windows下很少。一般多在linux下。 解决方法就是 chmod 701  /home/www ;如不行在参考其他情况。
不过以上都不是我遇到的情况。我的目录文件夹从ftp上下载下来。权限都是777的。所以没有这种情况。
说法三:hi.baidu.com/libk/blog/item/f9e32b34af4c90335ab5f5cd.html
经过以上验证后,确定不是以上问题。那么到底是什么原因呢。。。 忽然看到某个帖子的留言说“看apache日志”  忽然明白,到日志里面不就知道是什么问题了么! 说实话我挺笨的。
在 log/error.log中看到了
“Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: F:/www/”  
这样一段话,于是搜之;得到如上解答:
1. 如果没有启用mod_rewrite,可以用Options None 来保证安全性。
2. 如果启用了mod_rewrite, 那么Options就一定要启用FollowSymLinks或者SymLinksifOwnerMatch, 否则会出现Fobidden页面禁止访问的错误。
查看错误日志会有这样的出错信息:(Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /location/to/your/rewrite/url)
查看 确认我的rewrite是打开的。可是options 却是 options indexes Multiviews  ;于是改为 fllowsymlinks ;重启,真的就行了!
不得不说原来如此。要多看看log啊。options具体选项详解参见这里

Continue reading 【转】Forbidden关于无权限访问目录的问题

CodeIgniter 入门

主页 http://codeigniter.com/

网上想要比较cakephp和CodeIgniter,答案是萝卜白菜各有所爱。

cakephp模仿ROR,没用过ROR的学习曲线要大些。

CodeIgniter适合小型项目,性能比较好,因为没有过多累赘。

cakephp中型项目,性能稍逊。但是特性较CodeIgniter多。

 

CodeIgniter文档较详细:

下载包中user_guide文件夹/index.html有,但是那个tablecontent一开始没注意到,它在页面顶部,点击出来下拉目录,囧。

照着文档读一遍,两个小时就够了,简单吧。

笔记:

以其index.php来作为你项目入口,

 

apache配置中需要配置文件夹

Options execCGI FollowSymLinks
AllowOverride All


  • 静态页面控制:

默认连接方式是http://example.com/[controller-class]/[controller-method]/[arguments]

那么 http://example.com/news/latest/10 就会找到news这个控制器类调用其latest方法,传入10这个参数。

这个配置是在application/config/routes.php中

注意,例如这样的配置

routes[‘welcome’] = ‘welcome’

将会在controller中寻找welcome 文件夹中(或下面的controller子文件夹)的welcome.php文件中的Welcome类。文件名必须小写,类名必须以大写字母开头。

 

URL Helper类问题:

这里面的方法都是依据config.php中配置的$config['base_url']来的,

因此如果你配置的是abc.com,那么即使用户使用www.abc.com访问,返回的都是不带www的url,包括

current_url()这个方法也是如此,显然这个方法是个鸡肋,遇到ajax请求就跨域了,因为www.abc.com和abc.com是跨子域的。

 

异常处理:

他的异常在index.php中设置,不知道是什么原因,在其他地方再设置就没什么作用了,一旦出错就显示一堆错误,只能使用ob_end_clean();把它的输出清除掉。

 

日志:

system\libraries\Log.php log_message('level', 'message')

日志显示级别在config.php中配置

$config['log_threshold'] = 4;

$config['log_path'] = ''; //空表示在站点目录下logs文件夹中,以php为扩展名

 

CI有个session过期的bug,因为它是每隔一段时间更新session对应的cookie(这是为了安全起见),所以可能造成前后两个ajax请求的session对应的cookie不一样:

1:请求A调用时正好导致更新cookie

2:请求B此时还是使用老cookie,由于A请求改了cookie,则会导致找不到session。

参见:http://codeigniter.com/forums/viewthread/102456/

这上面也没好的办法,要么是注释更新cookie的代码,要么将$config['sess_time_to_update']     = 300;设置为很长就不会调用更新cookie的方法。

参见http://www.path8.net/tn/archives/2526

CI可通过数据库保存session,但是无论怎样,都是依赖客户端的cookie配合的,所以定时更新cookie的方法让session长期不过期的目标不好实现。

下面是自定义的Session类,CI可以自定义核心类:

user_guide/general/core_classes.html

放在application/core/即可,会自动加载的,要以MY_开头,要继承想要扩展的父类。

下面是MY_Session类:

><?php <?php if (!defined('BASEPATH')) exit ('No direct script access allowed');

Continue reading CodeIgniter 入门

twilio杂记

https://www.twilio.com 

对于开发者不很友好,虽然目前是注册就送30$,但是注册号码的话需要付费却不能从这里面扣。

可以通过verify number将你的美国号码绑定,这样打出去的号码将会使用你绑定的号码。

对于开发者来讲,还是后起之秀tropo好用。

rest api见http://www.twilio.com/docs/api/rest/

同样它也需要http 基本验证,用户名是账户sid(不是app sid),密码是token。

http://readthedocs.org/docs/twilio-php/en/latest/index.html

它也有类似phono的客户端https://www.twilio.com/docs/client

不只是因为我测试时就是生产环境的缘故,感觉sms上twilio还是要比tropo快很多。我测试tropo都是它免费的开发环境,感觉sms比较慢。

 

client部分:

用它提供的脚本地址,因为它的脚本里还具有自动更新client js脚本库版本的功能,需要解析src中的域名部分来获得新js的地址。

这个需要服务端配合,首先setup需要app sid和token,这个token是要依据权限创建的,直接使用它的php-helper来创建就比较简单。Twilio/Capability.php

其次对于需要接听电话的情况,客户端需要初始化一个agent id,这个是可以随便取的,但是与电话号码绑定的入口必须要知道这个agentid才能将会话转接到这个client。

https://www.twilio.com/docs/client/device

流程:

client 的connect会请求app的call, url

此时请求参数中caller会是client:agentid的形式。

此时如果想转接到真实电话,必须要制定dial节点的callid属性。

如果是直接打电话这个app的号码,也会请求app的call url

上面两个的direction参数都是inbound

如果是rest api方式发起outbound会话,被呼叫方接通电话后,也会请求app的call url,这时direction参数是outbound-api

 

好笑的是如果client发起的请求被转接到client本身时,这也是可以的,那就变成了自己和自己对话了。

 

下面是对于twilio和tropo使用的对比

http://pardner.com/2011/04/tropo-not-ready-for-prime-time-went-with-twilio/

作者最终选择的是twilio:

主要是tropo无声的丢失了信息而twilio却保证了不丢失。

 

REST API中查询所有买入的号码是 https://www.twilio.com/docs/api/rest/incoming-phone-numbers

Continue reading twilio杂记

heidisql mysql工具介绍

之前使用navicat lite,感觉并不好操作,能使用mysql workbentch就用mysql workbentch,mysql workbentch要装.net,有的机器还装不好,而且在win7上ui不很好用。 但是现在才发现开源免费的heidisql操作很方便,速度很快。

介绍一下它的提示功能, 在sql编辑器中,打点号,就会出现自动提示了,表名,数据库名等等。

so good.

赶快试试吧.

Continue reading heidisql mysql工具介绍

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 纠结的java ssl请求

java请求https常常遇到证书问题,对于许多免费的自签名证书,需要手动导入到jdk keystore中去。见http://kazge.com/archives/400.html

今天却遇到GEOTrust认证的证书也需要导入的问题。

浏览器里面看这个证书是由GEOTrust认证的,浏览器没什么问题,使用java请求就抛异常。

我们知道jdk是自带GEOTrust根证书的,照理说这个认证的证书就不需要导入了。网上搜了一下,大概的原因是:这个证书域名以*开头,jdk不能handle

http://jasig.275507.n4.nabble.com/SSL-Error-td1749567.html

是不是这个原因,我没细看。

还是将证书导入到keystore保险。

导入后要重启运行在此jdk上的程序才能起效。

Continue reading sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 纠结的java ssl请求

php之毫秒

php的毫秒是没有默认函数的,它自带的是microtime,即微秒:

1 second = 1000 milli second = 1000,000 micro second = 1000,000,000 nano second

网上抄来抄去都是microtime自带的例子,返回的还是秒。

microtime() 返回 0.1111 131231秒,空白前部分是float形式的秒数 空白部分是秒的整数部分

故要得到毫秒:

 

<?php
function getmilliseconds() {
	list ($usec, $sec) = explode(" ", microtime());
	return (int)(((float) $usec + (float) $sec) * 1000);
}
?>

ok, 看清楚了,不是那些拷来拷去的秒函数哦。

Continue reading php之毫秒

Pagination


Total views.

© 2013 - 2019. All rights reserved.

Powered by Hydejack v6.6.1