`学习笔记`分类下的文章

学习笔记

我是如何将mac OS X(10.11.6)的PHP版本升级到5.6.29的


由于项目和学习的需要,本机曾经升级到了5.5.38已经不够折腾了,所以时候升级一波5.6了(没必要到7的时候,我是不会去升级的)。
首先直接去搜索引擎找便捷的方法呗,直接就选中了一款来自“简书”的文章,因为它就简单的一条命令:

1
curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6

看到这个地址,我心里就放心了!因为上一个版本也是liip的。
我首先看了一下这个install.sh的内容,确定没有什么危险,里面其实就是检测一下设备的系统版本和cpu类型是否可以升级。
环境检测没问题就去下载了一个叫做“packager.tgz”的压缩包,然后解压,运行里面的pythony脚本。

1
2
#TYPE = 5.6-10.10
sudo packager.py install $TYPE-frontenddev

阅读剩下更多

默认配图
学习笔记

You have new mail - Mac OS

奇了怪了,莫名其妙!平时打开终端都没怎么注意,今天发现打开终端的时候,除了常规的上次登录提示,居然有一句“You have new mail”紧接着在下面出现了。
平时都不用自带的邮件.app的 打开邮件,却没有啥。
好的,本着好奇的心理,开始摸索。

阅读剩下更多

默认配图
学习笔记

《XML实用教程》课后实验1-7章文件

由于我使用的是MacOS,所以编码均采用UTF-8,书上均是gb2312的。

第一章:

使用Altova XMLSpy 2010软件编写XML文档

[实验指导1-1.xml](/uploads/2016/04/实验指导 1-1.xml)

第二章:

创建通讯录的XML文档

tongxun.xml

第三章:

3-1:使用内部DTD编写动物园内动物信息的XML文档

[实验 3-1.xml](/uploads/2016/04/实验 3-1.xml)

3-2:结合已知外部DTD创建XML文档

3-2.dtd
3-2.xml

阅读剩下更多

默认配图
学习笔记

有关MacBook从10.9.5升级到10.11(EI capitan)后的问题及解决方法

看到别人的MAC在用最新的EI Capitan系统之后,我终于打破了自己坚持使用旧系统的原则,本着更好的体验和更高的性能,我将自己的本子也更新到最新,既然是更新升级上来的,不免有些小问题会出现,下面就逐个来说说我遇到的问题吧。

问题一:Apache无法正常启动?

首先遇到这个问题时,当然是去找日志了,因为在终端输入启动命令:sudo apachectl start之后,没有任何报错和提示,只是本地浏览器访问localhost or 127.0.0.1失败。但是,这个错误日志真的不好找,最后我干脆去配置文件etc/apache2/httpd.conf中寻找。

嗯!找到了! ErrorLog “/private/var/log/apache2/error_log” 好的,我去看看到底是什么原因。可是,“/private/var/log/apache2/” 目录根本没有任何文件!想着自己给它创建这个错误日志文件吧,创建好了之后使用命令启动apache,结果文件里面没有任何内容!

这也不行,看来通过错误日志是行不通了,于是乎,在网上查找各种资料,终于看到有个人在网页上写到:现在尝试启动一下Apache: sudo apachectl -k start。看到这个,带着好奇我也输入了一遍,好奇心真的不会害死猫!终于出现了报错了!第一次这么开心地看见报错信息,于是乎根据提示找到错误点并屏蔽掉了这个错误的配置。

阅读剩下更多

默认配图
学习笔记

[作业练习]带数据库的简易购物车

在前一次作业的基础上([作业]JavaBean+Jsp简易购物车实现),加上数据库来管理商品和购买记录。
最后结果展示:http://demo.dshui.wang/tomcat/ShopCartDemo/
首先,建立数据表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#用户表
CREATE TABLE `cart_users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(80) NOT NULL DEFAULT '',
`password` varchar(220) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
<!--more-->

#商品表
CREATE TABLE `cart_goods` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`gname` varchar(50) NOT NULL DEFAULT '',
`gprice` double NOT NULL,
`gdname` varchar(20) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

#购买记录
CREATE TABLE `cart_lists` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(80) NOT NULL DEFAULT '',
`gid` int(11) unsigned DEFAULT NULL,
`gnumber` double DEFAULT NULL,
`gtprice` double DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `users` (`username`),
KEY `goodid` (`gid`),
CONSTRAINT `goodid` FOREIGN KEY (`gid`) REFERENCES `cart_goods` (`id`),
CONSTRAINT `users` FOREIGN KEY (`username`) REFERENCES `cart_users` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=60 DEFAULT CHARSET=utf8;

写入测试数据:

阅读剩下更多

默认配图
学习笔记

[作业]JavaBean+Jsp简易购物车实现

本次作业要求使用到JavaBean+纯Jsp,带有登陆功能的购物车系统。
登陆功能这里就不多讲了,前面的聊天室已经做过,这边直接拷贝就能使用了。
另外,本次作业中我加入了BootStrap来做一个小小风格美化。
不多说,直接上代码!
index.jsp 首页,也是登陆界面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%
Cookie[] cookies = request.getCookies();
String uname = "";
String upwd = "";
if(cookies!=null){
for(int i=0;i<cookies.length;i++)
{
Cookie cookie=cookies[i];
if(cookie.getName().equals("remname"))
{
uname = cookie.getValue();
}
else if(cookie.getName().equals("rempwd"))
{
upwd = cookie.getValue();
}
}
}
%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>请登录ShopCartDemo</title>
<link href="bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<form class="form-horizontal" action="dologin.jsp" method="post" name="loginform">
<div class="form-group">
<label for="inputusername" class="col-sm-5 control-label">用户名</label>
<div class="col-sm-2">
<input class="form-control" id="inputusername" type="text" name="username" value="<%=uname%>" placeholder="username" />
</div>
</div>
<div class="form-group">
<label for="inputpassword" class="col-sm-5 control-label">密码</label>
<div class="col-sm-2">
<input class="form-control" id="inputpassword" type="password" name="password" value="<%=upwd%>" placeholder="password" />
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-5 col-sm-2">
<div class="checkbox">
<label>
<input type="checkbox" name="remember" value="true"> 记住我
</label>
</div>
</div>
</div>

<div class="form-group">
<div class="col-sm-offset-5 col-sm-2">
<button type="submit" class="btn btn-default">登陆</button>
<button type="reset" class="btn btn-default">重置</button>
</div>
</div>

</form>
</div>
</body>
</html>

dologin.jsp 登陆信息处理页面

阅读剩下更多

默认配图
学习笔记

[作业]Servlet简易聊天室

简单例子-Servlet聊天室,所用工具:NetBeans IDE(配备GlassFish)
本次例子重在思路,页面未做任何美化。
最后结果展示:http://demo.dshui.wang/tomcat/First_chat_room/
首先,需要一个登陆页面。
Login.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%
Cookie[] cookies = request.getCookies();
String uname = "";
String upwd = "";
if(cookies!=null){
for(int i=0;i<cookies.length;i++)
{
Cookie cookie=cookies[i];
if(cookie.getName().equals("remname"))
{
uname = cookie.getValue();
}
else if(cookie.getName().equals("rempwd"))
{
upwd = cookie.getValue();
}
}
}
//上面代码用来判断用户是否曾保存过登陆信息
%>
<!DOCTYPE html>
<html>
<head>
<title>牛逼的登陆界面</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div>
<form action="Main" method="post" name="loginform">
<table>
<tr>
<td>用户名:</td>
<td>
<input type="text" name="username" value="<%=uname%>" />
</td>
</tr>
<tr>
<td>密码:</td>
<td>
<input type="password" name="password" value="<%=upwd%>" />
</td>
</tr>
<tr>
<td colspan="2" style="text-align: right;">
记住信息<input name="remember" type="checkbox" value="true" />
<input type="submit" name="submit" value="登录"/>
<input type="reset" name="" value="重置"/>
</td>
</tr>
</table>

</form>
</div>
</body>
</html>

新建一个用来处理登录信息的Servlet: Main.java 所有的处理都在DoPost()完成

阅读剩下更多

默认配图
学习笔记

Discuz的数据库的迁移

如果WEB服务器迁移,除了将论坛所有的文件转移到新的服务器上之外,还需要将数据库一同迁移。文件转移完毕之后,并不能算完成了,因为这里还有数据库的配置没有修改。
Discuz论坛,如果需要迁移数据库,那么我们在转移的数据库的所有数据之后,还需要重新配置一下Discuz的配置文件:
论坛连接Ucenter的配置:config/config_ucenter.php
论坛的配置:config/config_global.php
Ucenter的配置:uc_server/data/config.inc.php
在这三个文件里面,修改对应的数据库地址、数据库名称、用户名、密码。
全部配置完毕之后,保存就可以了。

阅读剩下更多

默认配图
学习笔记

利用PHP实现QQ的登陆和发送消息

利用CURL抓取3GQQ的网页实现的。
这里只是简单实现了功能,可以修改代码实现更多可能。
如:定时发送消息、机器人客服等高级功能。
展示代码,分两个步骤完成。

第一步:登录获取sid,有sid是发送消息的前提。

//发送方QQ账号和密码
$qq  = '';
$pwd = '';
//准备要POST数据
$data = array(
    'qq'            => $qq,
    'pwd'           => $pwd,
    'bid_code'      => '3GQQ',
    'toQQchat'      => true,
    'login_url'     => 'http://pt.3g.qq.com/s?aid=nLoginnew&q_from=3GQQ',
    'q_from'        => '',
    'modifySKey'    => 0,
    'loginType:'    => 1,
    'aid'           => 'nLoginHandle',
    'i_p_w'         => 'qq|pwd|',
);
//开始CURL模拟登录
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://pt.3g.qq.com/psw3gqqLogin');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));
$file = curl_exec($ch);
curl_close($ch);
//分析登录是否成功
preg_match('%sid=(.*?)&%si',$file,$sid);
$sid = $sid[1];
if($sid){
    echo '登陆成功!'.$sid;
}else{
    echo '登陆失败!请检查用户名和密码是否正确!';
    exit();
}

获取到sid后就可以发送消息了。
第二步:发送消息,利用上一步获取到的sid。

$sid='';
$qq   = "909047801";
$text = "你好,豆豆!";
//准备要POST的数据
$data = array(
    'u'         => $qq,
    'saveUrl'   => 0,
    'do'        => 'send',
    'on'        => 1,
    'aid'       => '发送',
    'msg'       => $text,
);
//开始CURL模拟发送
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://q16.3g.qq.com/g/s?sid=' . $sid);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));
$file = curl_exec($ch);
curl_close($ch);
//分析发送是否成功
preg_match('%

(.*?) %si',$file,$callback); $callback = $callback[1]; echo $callback;

阅读剩下更多

默认配图
返回顶部