Tomcat参数报错

最近需要在60服务器上部署对账平台来做相应测试   结果发现缘由的内网平台中只有信息平台…
没办法 赶紧从敏哥那里要了一份程序过来  也做了基本的部署
结果却是发现 总报错  而且是报参数的错误:

 The CATALINA_HOME environment variable is not defined correctly
 This environment variable is needed to run this program

于是  赶紧想着应该是参数填写错误
赶紧按照安装JAVA_HOME的方式来对Tomcat进行全局变量的设置:

1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:\java\jdk;
2.安装完成后,右击“我的电脑”,点击“属性”;
3.选择“高级”选项卡,点击“环境变量”;
4.在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓)。若已存在则点击“编辑”,不存在则点击“新建”;
5.JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:\java\jdk。此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依*此变量);
6.Path使得系统可以在任何路径下识别java命令,设为:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin  其中:%JAVA_HOME%就是引用前面指定的JAVA_HOME,下同;
7.CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar  (要加.表示当前路径)
8.“开始”->;“运行”,键入“cmd”;
9.键入命令“java -version”,“java”,“javac”几个命令,出现画面,说明环境变量配置成功;
10.按照步骤四设定Tomcat参数 CATALINA_HOME D:\Tomcat
11.双击startup.bat,启动tomcat。

双击startup.bat,结果却是发现启动不了tomcat。便想着是不是其中的设置结果出了问题:

1、JAVA_HOME中的路径不能使用分号结尾,如

D:\Java\jdk;

这样写就会出现提示CATALINA_HOME或是JAVA_HOME没有配置好的错误,,还有就是JAVA_HOME的路径一定不要写成了JRE的路径

2、CATALINA_BASE,CATALINA_HOME,TOMCAT_HOME中的路径不能以”\”结尾,如

D:\Tomcat\

这样写就会出现java.util.logging.ErrorManager的错误,屏幕一闪而过

正确的写法:

JAVA_HOME D:\Java\jdk
CATALINA_BASE D:\Tomcat
CATALINA_HOME D:\Tomcat
TOMCAT_HOME D:\Tomcat

注意这里路径的标点符号,不能写多了,也不能写少了

但是 结果发现还是报同样的错误
没办法 只能打开原始的bat文件来查看了
果然  那里面是这样进行设定的

加入设定了相应的环境变量,则以设定的环境变量来进行查看
而如果没有进行环境变量的设定的话,则需要在文件中指定

而本次就是犯下了这个错  因为我在bat文件中进行了设定 故而他是会直接读取其中的配置的文件的
要解决这一个问题也很简单
直接删除该问下下的设定语句 或者将其更改成为正确语句就OK了!!

重启了一下Tomcat  果不其然 现在对账平台能够正常启用啦~~

SQL执行顺序

我们做软件开发的,尤其是像我现在这样在做运维的,大部分人都离不开跟数据库打交道。而现今的数据库动辄即是千万条数据,虽然说我们在获取了需求之后能够立马就想到其查询语句,但是在应对突然之间的数据获取时,谁又能保证在第一时间内就能获取到最新的数据呢?

要知道SQL语句,我想我们有必要知道查询分析器怎么执行我们的SQL语句的。
我们很多人会看执行计划,或者用Profiler来监视和调优查询语句或者存储过程慢的原因。
但是如果我们知道查询分析器的执行逻辑顺序,下手的时候就胸有成竹,那么下手是不是有把握点呢?

在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。
每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返回 给调用者。如果没有在查询中指定某一子句,将跳过相应的步骤。

(8)SELECT (9)DISTINCT  (11)<Top Num> <select list>
(1)FROM [left_table]
(3)<join_type> JOIN <right_table>
(2)ON <join_condition>
(4)WHERE <where_condition>
(5)GROUP BY <group_by_list>
(6)WITH <CUBE | RollUP>
(7)HAVING <having_condition>
(10)ORDER BY <order_by_list>

逻辑查询处理阶段简介

  1. FROM:对FROM子句中的前两个表执行笛卡尔积(Cartesian product)(交叉联接),生成虚拟表VT1
  2. ON:对VT1应用ON筛选器。只有那些使<join_condition>为真的行才被插入VT2。
  3. OUTER(JOIN):如 果指定了OUTER JOIN(相对于CROSS JOIN 或(INNER JOIN),保留表(preserved table:左外部联接把左表标记为保留表,右外部联接把右表标记为保留表,完全外部联接把两个表都标记为保留表)中未找到匹配的行将作为外部行添加到 VT2,生成VT3.如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表为止。
  4. WHERE:对VT3应用WHERE筛选器。只有使<where_condition>为true的行才被插入VT4.
  5. GROUP BY:按GROUP BY子句中的列列表对VT4中的行分组,生成VT5.
  6. CUBE|ROLLUP:把超组(Suppergroups)插入VT5,生成VT6.
  7. HAVING:对VT6应用HAVING筛选器。只有使<having_condition>为true的组才会被插入VT7.
  8. SELECT:处理SELECT列表,产生VT8.
  9. DISTINCT:将重复的行从VT8中移除,产生VT9.
  10. ORDER BY:将VT9中的行按ORDER BY 子句中的列列表排序,生成游标(VC10).
  11. TOP:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回调用者。

注:

步骤10,按ORDER BY子句中的列列表排序上步返回的行,返回游标VC10。这一步是第一步也是唯一一步可以使用SELECT列表中的列别名的步骤。这一步不同于其它步骤的是,它不返回有效的表,而是返回一个游标。
SQL是基于集合理论的。集合不会预先对它的行排序,它只是成员的逻辑集合,成员的顺序无关紧要。对表进行排序 的查询可以返回一个对象,包含按特定物理顺序组织的行。

本文参考至:qanholas

DB2 编目catalog

DB2数据库中的编目即catalog这个单词很难理解。至少对于初学者的我来说是比较难于理解的….
具体来说编目有编目节点,编目数据库等。如果要理解编目,必须要讲一下DB2数据库的体系结构。
在DB2数据库中最大的概念是系统(节点)也就是主机,下面是实例,实例下面是数据库,然后是表空间,然后是数据库对象。
现在假设你有一个数据库服务器在自己的ASUS机器上,你有一个客户端在windows,linux或任何平台上,你现在想建立一个客户端到服务器端的连接,具体步骤是什么呢?

第1步:
你必须要在客户端的机器上能够把远程的服务器能够识别出来。即需在DB2使用的编目(catalog)方式,具体来说就是通过编目把远程的服务器写在本地客户端的一个文件中:

db2 catalog tcpip node asus remote 172.10.10.10 server 50000

在上面的这条命令中asus是一个节点名(在一个机器上必须是唯一的),remote后面是服务器的IP地址,server是远程服务器上实例对应的端口号。DB2通过这种方式在本地的SQLNODIR文件中把远程服务器的信息记录下来,所以编目节点其实就是把远程服务器映射到本地,通过SQLNODIR中的记录能够找到远程服务器和实例,类似指向远程服务器和实例的地址指针。

第2步:
当把远程的服务器IP地址,实例编目下来后,第二步应该把该实例下的数据库编目到本地

db2 catalog db REMOTEDB at node asus

在这条命令中,REMOTEDB是远程实例下的数据库,asus是我们在第一步中编目的节点名
这条命令执行后会在本地SQLDBDIR文件中记录远程数据库的信息,这这里编目数据库可以理解为把远程服务器实例下的数据库映射到本地为一个别名

上面是客户端和服务器不在同一台机器上,是通过编目节点、编目数据库来实现客户端连接到服务器上数据库的目的。如果是连接在同一台机器上,那么这时候则不需要显示的编目节点。但是当在我们在服务器上创建一个实例的时候,系统会有一个隐含的把实例在本地编目的过程–假设在asus上创建一个实例名为db2inst1,其实有一个隐含的的步骤:

db2 catalog local node db2inst1 instance db2inst1 system asus ostype aix

同样当你在db2inst1下创建一个数据库MYDB的时候,有一个隐含的编目数据库的步骤

db2 catalog db mydb at node db2inst1

至此你可以这样理解编目:编目就是在本地或远程主机上建立客户端到服务器的数据库连接

WordPress 评论模板 comments_template()

这几天一直想着要更新一下评论的模板
倒不是说原有的功能不行 而是突然发现 以前都是用的模板
也就是使用的他人现成的资源
但是 作为一个技术宅 总是会想着要对此进行一些修改的…
上网搜索了一下 找了WordPress中最基本的函数设置

说明

该函数加载评论模板,并显示在单篇文章和页面中。

用法

< ?php comments_template( $file, $separate_comments ); ?>

参数

$file

(字符串)(可选)将要加载的文件

默认值:/comments.php

$separate_comments

(布尔型)(可选)是否按评论类型分隔评论

默认值:false

示例

使用其它评论模板

有时你可能希望在主题的不同部分显示不同评论效果。那么你需要新建一个替换文件(如short-comments.php)并按以下方式调用该文件:

< ?php comments_template( '/short-comments.php' ); ?>

注释

使用全局变量:(数组)当前文章评论对象的$comment列表
用法:$wpdb
用法:$id
用法:$post
用法:若文章没有评论,$withcomments将不会尝试获取评论
历史记录

始见于1.5.0版本

源文件

comments_template()位于wp-includes/general-template.php中。

.htaccess技巧

.htaccess是个很实用控制Apache Web服务器的文件。
前段时间不是发表过一篇文章来讲述利用其进行子目录的绑定么?
其实他的功能还有很多….
本文将向大家展示.htaccess如何在安全性、功能性以及实用性方面帮助我们建立WordPress博客。

警告

编辑或修改WordPress博客的.htaccess文件时,为防止意外情况发生,请确定你已进行备份。

1. 用.htaccess将WordPress RSS 订阅重定向到Feedburner

没有哪个博客不使用Feedburner。 是的,Feedburner是一项非常友好的服务,你可以从中了解有多少人订阅了你的rss feeds。 唯一的问题是,需要编辑主题文件来手动改变rss的url地址。 令人欣慰的是,现在有了.htaccess这样的修改帮你节省了大量时间。

使用以下代码时记住修改第六行内容,将其更改成你自己的feedburner地址。

# temp redirect wordpress content feeds to feedburner
 RewriteEngine on
 RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
 RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
 RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds2.feedburner.com/catswhocode [R=302,NC,L]

备注:也可以根据情况替换成其他订阅服务商,比如国内的Feedsky。设置也非常简单,只需替换相应代码即可。

2. 移除WordPress url或对其分类

默认情况下,WordPress分类的永久链接都是按以下方式显示:

http://www.favorinfo.com/blog/category/wordpress
你会发现,url中的category显得很多余。 下面我们教你怎样把它移除:

首先备份.htaccess文件。 然后打开该文件追加以下命令行:

RewriteRule ^category/(.+)$ http://www.yourblog.com/$1 [R=301,L]

保存后分类页面会显示如下:

wordpress

3. 使用浏览器缓存

使用浏览器缓存是个优化博客加载时间的好方法。 下列代码不能直接改善博客的加载,但在所请求内容没有被修改时,这些代码可以将304未被修改状态发送出去,这样就减轻了服务器的工作负担。

 FileETag MTime Size
 <filesmatch "\.(jpg|gif|png|css|js)$">
 ExpiresActive on
 ExpiresDefault "access plus 1 year"

 

4. 压缩静态数据

你知道吗,现在已经可以向访问者发送压缩文件了,客户端会将这些压缩文件解压。 以下代码节约了你(以及你的访问者)的带宽,减轻了博客页面的压力。

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
 BrowserMatch ^Mozilla/4 gzip-only-text/html
 BrowserMatch ^Mozilla/4.0[678] no-gzip
 BrowserMatch bMSIE !no-gzip !gzip-only-text/html

5. 将日期和姓名永久链接重新导向到/%postname%/

首先登录WordPress管理账号,在settings→Permalinks菜单下选择custom。 将字段填充为/%postname%/。
这时你的永久链接看上去就和下面这个博客一样了:

http://www.yourblog.com/name-of-the-post
下面我们用旧有的永久链接结构将所有反向链接重新导向到新的永久链接结构。 需要编辑WordPress 根目录下的.htaccess文件以达到以上目的。
将以下命令行复制到.htaccess文件中:

RedirectMatch 301 /([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ http://www.domain.com/$4

成功! 在没有丢失任何反向链接的情况下,我们成功的改变了永久链接的结构。

6. 禁止来路不明的评论

对每天收到的垃圾评论感到不耐烦? Akismet插件当然可以阻止这些垃圾评论,但.htaccess同样可以。 事实证明,很多垃圾评论机器人无处不在。 下列代码会追踪评论的来源(评论者所在的页面),如果评论者试图不经你的博客擅自进入wp-comments-post.php文件,这些代码会禁止评论发布。

更改第四行命令,换成自己博客的url。

RewriteEngine On
 RewriteCond %{REQUEST_METHOD} POST
 RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
 RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]
 RewriteCond %{HTTP_USER_AGENT} ^$
 RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

7. 将访问者重定向到维护页面

升级博客或改变主题/版面设计时,最好不要让访问者发现你的博客有设计或代码方面,或者更严重的安全方面的问题。

解决方法是,设计一个“维护页面”,在维护完成前暂时将访问者导向维护页面。

将代码第二行中的maintenance.html换成希望访问者被导向的页面,第三行中的IP地址改为自己的IP。

注意:这里用到了一个302重新定向以防止搜索引擎排名将维护页面当作博客的真正主页。

RewriteEngine on
 RewriteCond %{REQUEST_URI} !/maintenance.html$
 RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
 RewriteRule $ /maintenance.html [R=302,L]

8. 保护博客不受盗链侵扰

在某一网页中使用来自另一个网站的图片,这就被称为盗链。 很多博客经常被盗链,他们的带宽被用到了别的网站上。 下面的代码可以有效防止WordPress博客遭遇盗链。

RewriteEngine On
 #Replace ?mysite\.com/ with your blog url
 RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
 RewriteCond %{HTTP_REFERER} !^$
 #Replace /images/nohotlink.jpg with your "don't hotlink" image url
 RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

9. 不允许其他IP地址进入wp-admin目录

除非是合作撰写的博客,否则一定要将w—admin目录权限设为仅本人可见。 以下代码在固定IP下可用。

你只需在第八行中输入自己的固定IP地址。需要注意的是,必要时可以添加多个IP地址,这只要在代码中创建新的命令行: 允许来自xx.xx.xxx.xx。

AuthUserFile /dev/null
 AuthGroupFile /dev/null
 AuthName "Example Access Control"
 AuthType Basic
 order deny,allow
 deny from all
 allow from xx.xx.xx.xx

10. 用.htaccess禁止WordPress垃圾评论

大家都知道垃圾评论多么的令人讨厌。 如果有人或者机器不停的给你发垃圾评论,只要将他们的IP拉入黑名单就可以解决问题。

将代码第三行中的IP地址换成垃圾评论者的IP。 要想添加多个垃圾评论者的IP地址,可以在代码中创建新的命令行,如禁止xxx.xx.xxx.xxx。

order allow,deny
 deny from 200.49.176.139
 allow from all

本文参考至:http://www.wordpress.la/10-htaccess-hacks.html

PDF文件中插入文件

一上网就收到小熊的留言 说是让我帮忙处理一下他们工作所需要的文件
就是在一份已经做好的PDF文件中添加一份目录…

刚开始的时候 我第一反应 也是直接采用PDF编辑器来进行处理
但是 后来一想 现在去安装一个破解版的PDF编辑器应该不是一件可取的做法
应该还是更优质的解决方案…

第一反应是导出他里面的数据 毕竟他的这份PDF也是由Word文档转换过来的
也就是说要把它导出成DOC文档 应该也不是一件特别难的事情
但是 如果是使用的导出工具 里面的图片与表格肯定是会进行位置方面的变更的
更苦逼的是 它的格式也会进行相应的变更 这应该不是一个可取的方法

后来一想 反正他只要在里面插入内容
主要的内容还是不会进行更改的 那我就可以采用把其中的每页导出成图片
然后 再把这些图片给整理成新的PDF文件就可以了 …

好了 现在思路是有了 接下来就是具体的解决方案了
从网上搜索了一下PDF拆分与合并工具
果不其然 网络上有一大堆…. 毕竟PDF实际上可以看成是一个文件集嘛
进行整章的合并与分解应该不是一件特别难的事情~~~

好了 当时选用的是一款还不错的工具 SysTools PDF Split & Merge

SysTools PDF Split & Merge 是一个 PDF文件分割合并工具,特别适用于经常需要处理PDF文件的用户。 可将较大的PDF文件按页,按页面范围,按奇偶数页分割成多个较小的PDF文件,也可将多个较小的PDF文件合并成一个Adobe Acrobat PDF文件. PDF合并时,允许添加文件夹选项,即添加文件夹下的所有PDF文件而不需要一一添加

SysTools PDF Split & Merge(pdf分割合并工具)使用方法:
使用非常简单,如果要合并多个PDF文件,只需将文件添加进来,通过“移上”/“移下”排序,然后按“开始合并”按钮即可;如果要分割PDF文件,你可以通过多种方式进行轻松切割:按页平均,比如PDF文件共10页,按每2页切割,可切割成5个文件;保留指定页;移除指定页。

用了一下 其实还是蛮不错的说 至少解决这个问题还是比较方便的
当然 使用这软件在进行PDF合并的时候 也有一个很大的弊病 就是合并的时候不能排列顺序
而且导入的时候 是按照文件名的命名规则来排序的 或者是按照你导入文件的顺序来进行排序的
这种方法在某种程度上来说是不错 但是也限制了生成文件的顺序性
于是 又在网上找了另一款PDF工具 PDF分割合并工具
这一款软件就刚好和上面的那一款相反 他的分割性能并不是怎么很出色(当然这个也要视你的内容而定啦…) 但是在合并这一块的话 倒是无话可说
他提供了排序的功能 也就是说 就算是你是随意导入一些PDF文件进去 最终还是能够直接将之设定成你自己想要的板块的~~

好了 话不多说 直接贴下载地址了:

SysTools PDF Split & Merge
MD5:86DC3FFD30E298B687CC5EE43C1EF333
SHA1:840488C2F395AF15CA81C176B10BA8C82EC08175
CRC32:51B8A880

PDF分割合并工具
MD5:8771DE13CB30A1AFB64EFA7892D8F626
SHA1:4F233FAE0B0D02C96D5DA221ED41C48ED103DCCC
CRC32:08499919

关于站点微博的停靠

很久很久以前 在网上申请了两个免费空间 打开速度还是不错的
那个时候是说 在湖南站长网上挂微博 在微空间上挂图库
但是 今天再进去的访问的时候 却是发现或许这两者之间 都只能做图库了…..

诶 上网找过很多次的免费空间 也是用过很多免费的资源
但是 最终才发觉古语有云–“世上没有免费的午餐”是多么的具有哲理

诶 看来之前想着要把微博停靠在免费空间还是有点不太靠谱
所以 就想着以前的老办法 在当前站点设定一子目录
然后再采取设定子域名的形式来进行设定

当然 当初贪图便宜买的这个空间是不提供子域名与子目录进行绑定的
也就是说 我还得要找寻另外的方式来进行域名的绑定
毕竟 用子目录名称来进行访问总归不是一项长久之计

其实 这解决方法也不是怎么很难
如果一直关注了我站点的孩子 就会很容易想到我以前写的一篇文章
就关于利用htaccess来进行域名转向的
嘿嘿 今天晚上就倒腾一下这个吧
希望明天你们就可以看到我新的微博站点了~~~

当然 我也可能会把其风格给进行变更…
不过 变更方面由于时间问题 可能会慢慢来进行修改
到时候 也希望能得到诸位的批评与建议哈~~~

苦逼的一天

已经到了中秋假期的最后一天了 虽然说是要今天值班 但是由于没有规定要现场值 而且昨晚上兵哥说今天中午要弄饺子 没办法 胃口高于一切 还是等中午吃完饭再过去
这样想着 早上7:30的闹铃被我狠狠的关了
直到9:00的闹铃响了 然后就预告着我悲催的一天开始了~~~

开机 结果发现前段时间买的水星路由不能使用
无线倒是能够连上 但是外网访问不了
拔掉电源重启一下 发现是能够上网了
但是 10S不到 那联通速度一下子就飙到0 让我有点淡淡的忧桑
还想着这是偶然现象 结果重复测试了几回 都是遇到了这样的状况
看来 他还是想着让我去上班啊~~~
直接连网线到本子上 上网搜索了一下水星的保修 赶紧一个电话打给他们客服
结果却被告知 今天中秋仍属于中秋假期之内 不提供服务 [大哭]

随便上网逛逛 然后就准备去买菜了 想着中午的饺子 那一个爽啊
结果 菜是很早就买回来了 兵哥却一直Dota的搞起 一直折腾到11:30
神啊 当时的我可是前胸贴后背了
苦逼的是想着昨天就可以完工的900与810G的测试 由于各种环境问题没测试完….

终于是熬到11:40 兵哥总算是开做饺子了
看着他擀面到做饺皮 然后到包饺子 肚子那叫的一个叫爽啊….
好吧 为了一点神秘性 这图暂时不公布 [可爱]

本来以为一个小时可以搞定所有事情的 结果一到吃完 竟然发现已经2:30了
坑 那得要赶紧跑到公司那边去测试了 不然 这测试的工作铁定是完成不了的

好吧 结果去了公司才发现那边人不少 一个个都在聊着天 侃着地
苦逼的是 我一个都不认识 好吧 反正我是去做测试的 赶紧动手做吧

突然间记起前两天准备把微博与图库切换到免费空间上去
登录FTP 结果那速度叫一个慢啊….
本来 便宜没好货 更何况是这些叫嚷了免费的午餐了呢…

好不容易等文件都上传了 结果一个无法加载 让我有点小崩溃
算了 反正这上传的过程中自己还是在做测试 倒也没有出现什么意外…
只是 耽误了那么一小丢丢的时间而已~~

虽然中午吃了蛮多的饺子 但是到了6点 却突然发现肚子有点小饿了
想着已经把测试环境切换到60服务器上 自己也可以回家进行测试了
结果 一回家才发现 带回家的900没有更新程序
程序倒是在自己本子里面 但是苦逼的是没有带串口线~~~

没办法 今天晚上就只能谢谢测试用例了
打开以前的一看 结果却是发现 上次是直接复制900的测试用例到810G的
然后 之前更改的时候 竟然是在900的报告上进行更改~~~
当时 心那是一个拔凉拔凉啊….
感情前段时间的工作都忙活了
虽然 更替的部分 实际上很多810G和900还是蛮像的 但是终归是还需要再进行一次测试…. 那是需要时间滴…

晚上开始工作了 测试了一个小时 想着把代发的这块和一些交易部分给完成了 结果却是发现没电了…
屋漏偏逢连夜雨啊… 好吧 我人了 无非就是插电源测试而已
结果 插电源的时候竟然出现了几回死机 虽然上次已经被证实可能是硬件问题
但是 手头上的已经是最新的终端了…. 大哭~~
算了 还是等等再继续吧 却是没有料到已经到了11点了….

突然间想起 明天要正式上班 也就是说今天还得要写日志与周记….
当时 一下在就震惊了
头脑一片空白 都不知道周一到周三干啥了
就知道大概是在完成宁夏测试环境接入的事情 然后将平台切到60服务器上 其他就是进行810G与900的测试了….
但是 具体的 还真给忘了~~
想着看Q的聊天记录 结果发现是在那个系统中 不好直接进行查看 各种坑爹啊…

算了 先看看群里面的其他孩子 观望下他们的完成情况
结果却是发现一个偌大的群里面只有6个人上线 还尼玛一个个的挂手机….
诶 苦闷的只能待会去问问兵哥了 或者就等到明天早上再写吧…

苦逼的一天啊 就这样过了 虽然感觉又是在记流水帐
但这些写完了之后 感觉苦闷的情绪又稍微好了一点…
明天穿一身新衣去上班 希望能带来好运吧~~~

PHP判断终端访问方式

之前在自己的网站上用了一个简单的判断手机的方式 当时只是采用判断HTTP_USER_AGENT的方式来进行判断
当然 这种方式在一定程度上解决了常用的终端访问方式 但是这终归不是一种比较全面的方式
然后 今天在网上闲逛的时候 竟然发现了一种更为全面的方式 迫不及待的想拿出来和大家分享一下了~~~~

相关文章: 
自动识别设备

他的方式其实和之前分享的差不多 也是通过判断HTTP头来进行区分的
只是 它考虑的问题相对来说比较细一点….

$agent = check_wap();
if( $agent )
{
header('Location: http://m.favorinfo.com');
exit;
}

// 检查是否是通过WAP方式上网
function check_wap(){
// 先检查是否为wap代理,准确度高
if(stristr($_SERVER['HTTP_VIA'],"wap")){
return true;
}
// 检查浏览器是否接受 WML.
elseif(strpos(strtoupper($_SERVER['HTTP_ACCEPT']),"VND.WAP.WML") > 0){
return true;
}
//检查USER_AGENT(采用通配符的方式)
elseif(preg_match('/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker\/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $_SERVER['HTTP_USER_AGENT'])){
return true;
}
else{
return false;
}
}

当然 他也提供了另外一种方式 即通过剥离框架的方式来检测是否为移动设备
这种检测方式 虽然看代码的话感觉繁杂一些 但实际上他是通过接收过来的数据细化了各种可能性 其实也是一种不错的方法

function is_mobile_request()
{
$_SERVER['ALL_HTTP'] = isset($_SERVER['ALL_HTTP']) ? $_SERVER['ALL_HTTP'] : '';
$mobile_browser = '0';
if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|iphone|ipad|ipod|android|xoom)/i', strtolower($_SERVER['HTTP_USER_AGENT'])))
$mobile_browser++;
if((isset($_SERVER['HTTP_ACCEPT'])) and (strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') !== false))
$mobile_browser++;
if(isset($_SERVER['HTTP_X_WAP_PROFILE']))
$mobile_browser++;
if(isset($_SERVER['HTTP_PROFILE']))
$mobile_browser++;
$mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));
$mobile_agents = array(
'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
'newt','noki','oper','palm','pana','pant','phil','play','port','prox',
'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
'wapr','webc','winw','winw','xda','xda-'
);
if(in_array($mobile_ua, $mobile_agents))
$mobile_browser++;
if(strpos(strtolower($_SERVER['ALL_HTTP']), 'operamini') !== false)
$mobile_browser++;
//检查其是否以Win的方式来进行
if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows') !== false)
$mobile_browser=0;
//别忘了WP7既然也是采用的Win的框架,当然要拿出来小小的分析一下~~
if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows phone') !== false)
$mobile_browser++;
if($mobile_browser>0)
return true;
else
return false;
}

本文参考至:

中秋

昨天总算是把测试环境给搭建在了60的服务器上 这也就表明我的笔记本终于可以摆脱当做测试服务器的命运
真想大呼一声 “解脱了….”

然而 昨天事情是把平台给搭建了 但是文吩咐下来的810G与900的测试工作还没有做好
只能利用者中秋来解决这些问题了….

本来是准备今天就去北农商测试这两台终端的 但是 一想到今天是传统节日 并且又没有安排自己当值 所以就干脆狠下心来 去同学那里蹭饭去
还在那里美其名曰 — 中秋团聚

好吧 我承认自己这样做 是有点猥琐了 但是 没办法
毕竟 一个人在公司上班工作 还是有些悲催的

昨晚上联系了酸菜等几个人 留言道要是他们今天没啥安排的话 就直接到我这边来打秋风的
但是 结果 一个个的说自己没空
当时 自己就郁闷了
在帝都自己认识的也就那么几个孩子 还一个个的说没空 这让我情何以堪啊 ~~~

好在 还是大学同学给力 说要他那边的人比较多,而且我还都认识 就干脆让我去他那儿算了
嘿嘿 ~~ 好吧 终于有可以打土豪的地方了 反正我是一点都不会客气的 …
反正大家都知道我的绰号 也没有必要啥藏着掖着啥的~~

去了老姚那里 感觉他们租的房还是挺不错的
关键的问题是那边只要2K2一个月的房租 一想想现在住的那屋的价格 诶… 各种心酸
没办法 签的是一年的合同 也不好进行更改啥的

看着老姚与凯哥在那里做菜 目测应该味道是蛮不错的
只是 最后面自己的那个炒饭 只能说一声 “呵呵”
没办法 也不知道是怎么回事 反正饭往锅里一放 饭后就粘到一起了
凯哥说是这边的米质不行 但是我想 这应该也只是一份安慰吧
诶 算了 虽然说炒的烂 至少还是能吃 不是么?
放心啦 里面除了放了个鸡蛋之外 没有放其他的 也就是说 应该还是没有绳命危险的…..

当然 基于自己的炒饭没有弄好 也不好意思拍照得瑟了 不过 最终咱仨还是给力的把所有的饭菜都给吃完了
只是 自己很不给力的 才喝了两杯 然后小宇宙没爆发 反倒是把现代版的关公给弄出来了…
诶~~ 自己这酒量 要到啥时候才能熬出来啊….

下午就狠狠的睡了一觉 睡了个天昏地暗
一觉醒来 发现就已经5点多了 顺带蹭了老姚的月饼
看上去还是挺不错的 当然 味道也还是挺不错的说~~

晚上还买了套衣服 价格也不算太贵 200不到
但是苦闷的是 中秋当天是搞活动的 满200就可以进行抽奖…
然后由于这2块的差入 然后我就与这个抽奖活动失之交臂了
这让短期内精打细算的我有点小郁闷
毕竟 看那简介 是100%中奖的有木有!!!
而且里面最低也有60的现金券~~
虽然 我自己可能用不了 但是给老姚也是个不错的举措啊
毕竟 这商场离他住的地方可不是怎么很远的说….
各种抓狂中 >_< 晚上回老姚那里的时候 想起了之前看到的烤鸭 你懂的 虽然当时那长长的人龙把我的小心肝给吓的有点... 嘿嘿 但是现在人可是不多了说... 总没有借口说不买了吧 (虽然就算我有借口 我也会找其他借口来对其进行搪塞的说~~) 好吧 晚餐就是烤鸭 当然还少不了老姚做的拍黄瓜 味道还是不错的 只是我可以弱弱的吐槽一下 人家拍黄瓜里面都是放的醋 老姚却在里面放的是酱油么.... 当然 这也有可能是我还是不太喜欢吃酱油的缘故吧~~ 毕竟 我们都属于“光盘一族”的孩纸 [偷笑] 当然 你知道的 对我这样的吃货来说 一只烤鸭肯定是不够我塞牙缝的 结果 回家的时候 我又买了一只 还美其名曰是稍给同住的同事--兵哥的 但是 嘿嘿 我会告诉你们回家之后 这整只鸭子被我吃了2/3么~~ 虽然 到家的时候已经有11:40+了 而且苦逼的是当晚上在回家的旅途上竟然没有看月亮的说... 中秋的赏月活动啊... >_< 不过 也没有关系 风花雪月的 我从来就没有奢望过 而在帝都空旷的马路上独自赏月 我想这应该也不是我的风格吧~~ 虽然 次日在空间里面看到的都是各种风骚的“月圆”留恋 [哼哼] 不过 其实今天过的还是蛮不错的 毕竟今天经历的也还不是那么苍白 而且也是我在外地过的第一个节气 没有感受到孤独与寂寞 我就应该要知足了 不是么? ^_^