豪翔天下

Change My World by Program

0%

由于在实际项目中,经常遇到前后端传递错误代码,或者发现错误代码的情况,而每次遇到都不一定能快速找到原因,所以这里就把常见的错误代码列出来,并附上我在实际开发中所遇到的问题的原因。

注意:HTTP状态码本身是支持以小数的方式进行扩展的,比如403表示禁止访问,403.1表示禁止可执行访问,403.2表示禁止读访问等。

httpstat.us: 能够测试不同的状态码的接口返回,并且支持自定义cors参数

阅读全文 »

原文地址:<http://segmentfault.com/blog/lpgray/1190000002397061?utm_source=weibo&ut
m_medium=shareLink&utm_campaign=socialShare>

还记得第一次看到CC协议的时候,我惊叹道:世界上竟有如此可爱的协议。之后渐渐融入了开源的世界,了解了更多类似的协议,我个人非常尊重别人的知识,所以可以看到
在我的博客里面每一篇文章,凡是有借鉴别人的,我一定把别人的文章链接放在文章开始处,以显示对对方的尊重,另外,我的博客完全采用CC协议,转载必须注明出处。以下
是该文章的内容。

最近想搞一个个人小项目,比较在意版权问题,平时在github上经常看到其他人的项目有各种License,却一直没明白过,今天查阅了一些软件License方面
的资料,在此记录一下。

什么是License?

License并不意味着你对你的产品放弃了著作权,一旦你使用了License,则表示你授权给他人以约定的形式来使用你的产品。

几种常用License

GPL (GNU General Public License)

GNU General Public License (GPL)的可能是开源项目最常用的许可证。GPL赋予和保证了开源项目开发者广泛的权利。

它允许用户合法复制,分发和修改软件,甚至在改良版本上收取费用,但必须要写明GPL License,而且要告诉客户原始版本。

LGPL

还有另一个GNU License:GNU Lesser General Public License (LGPL)。比起GPL它授予的权限较少。一般来说,L
GPL比较适合连接到非GPL或者非开源文件的库文件。由于GPL的规定,使用到部分GPL代码的软件,必须也使用GPL,开发人员不能使用GPL来开发收费软件或者
专有软件。

LGPL不要求使用与部分代码相同的 License。

BSD

BSD License与其他自由软件License相比,如GPL,限制更少。但是请注意到BSD License两种版本之间的差别:New BSD
License/Modified BSD License 和Simplified BSD License/FreeBSD
License。它们两者都是于GPL兼容的自由软件License。

New BSD License

New BSD License (”3-clause license”) 可以用于任何作为版权声明和保证许可的免责声明的目的,可以通过无限长的再分发来得以维
持,也就是说如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协
议。它还有一个特殊限制条款,不用特别的许可就是限制使用派生工作的工作者名字,也就是说不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

New BSD License和Simplified BSD License的主要区别是,后者忽略了非认可条款。

MIT

MIT是和BSD一样宽松的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源
代码发布的。

  • 你可以修改、复制和使用
  • 你可以出售
  • 但必须附带MIT授权协议

Mozilla Public License 1.1 (MPL)

MPL协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。这种授权维护了商业软件的利益,,它要求基于这种软件得修改无偿贡献版权给该软件。这样
,围绕该软件得所有代码得版权都集中在发起开发人得手中。但MPL是允许修改,无偿使用得。MPL软件对链接没有要求。

商业软件可以使用,也可以修改MPL协议的代码,但修改后的代码版权归软件的发起者。

CDDL

CDDL(Common Development and Distribution License,通用开发与销售许可)开源协议,是MPL(Mozilla
Public License)的扩展协议,它允许公共版权使用,无专利费,并提供专利保护,可集成于商业软件中,允许自行发布许可。

商业软件可以使用,也可以修改CDDL协议的代码。

Apache License

Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布
(作为开源或商业软件)。

  • 需要给代码的用户一份Apache License
  • 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明
  • 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache
    License。你可以在Notice中增加自己的许可,但不可以表现为对Apache License构成更改
  • 商业软件可以使用,也可以修改使用Apache协议的代码

Eclipse Public License

EPL是一个与CPL相类似的许可证,任何扩展自Eclipse源码的代码也必须是开源的

Creative Commons(CC)

Creative Commons(CC)的许可证不太开放源代码授权,它们通常用于设计项目。
CC许可证有着宽广的定义,每个定义都会授予一定的权利。它有四个基本部分,可以单独或者组合使用。

  • 作者必须是作品的原创者。 除此之外,作品可以修改,分发,复制和以其他方式使用
  • 工作可以修改,分发等等,但必须在一个许可证下
  • 可以修改,分发等,但不用于商业目的。 关于什么是“商业”,说法比较含糊(没有提供明确的定义),因此您可能需要在自己的项目中澄清这一点
  • 禁止修改,这意味着您可以复制和分发许可工作,但你不能以任何方式修改,或在原有的基础开发
  • 商业软件的使用要遵从CC协议的具体规定,最严格的许可证将是“署名,非商业,不能修改”的授权。这意味着你可以自由共享的工作,但不能改变它,你必须把
    它归功于原创者

Common Public License 1.0

  1. 明确了专利授权。一般的开源软件都明确源代码的版权人将自己的修改权、复制权等版权权利向公众许可,但保留署名权,而Common许可证在此基础上还明确假如源代码中含有专利权,源代码专利权人将复制、使用的专有权利向公众许可。
  2. 规定可以将源代码及修改过的源代码与其他类型的不受本许可证约束的代码结合,以新产品的形式发布,只要其中经该许可证获得的源代码及修改过的源代码能按该许可证的要求发布即可。
  3. 细化了该许可证终止的情形,包括发生专利侵权诉讼。
  4. 明确了一个独立承担责任的原则,就是假如按该许可证使用源代码的使用者将获得的源代码应用于商业使用,那么他就要对在商业应用中出现的由于使用该源代码程序而产生的侵权诉讼承担完全责任。这一条规定是比较特殊的,绝大多数开源软件许可证都不这么要求。
  5. 商业软件可以使用,也可以修改Common协议的代码,但要承担代码产生的侵权责任。

这一个多月来都没发过任何的博文,就是因为一直在忙工作室的项目。而今天我终于了解到,老板貌似已经放弃这个项目了,而且我居然完全不知道。不过,无论怎样,在这次项
目中我还是学到了很多很多。

首先,简单说一下,我们做的是一个外卖网站,我担任的角色是后端开发和服务器与数据库的运维,前端4人,后端2人,我是后端负责人。
![](http://7xnc86.com1.z0.glb.clouddn.com/the-conclusion-of-the-first-project-
of-studio.png)

团队协作出现的问题

1.无需求,无策划,无设计,项目开始后基本只有开发人员

这是最大的弊端,我也是醉了。项目开始前,我一直催老板快把需求拿来,最后拿是拿来了,但是至今我也没看过,当项目正式开始时他就叫前端去设计接口,但是今天突然了解
到,前端也没有看到过需求。也就是说整个项目做到现在,所有的功能,基本上都是前后端开发人员自己“臆想”出来的。而且整个过程无策划、无设计人员的参与。项目开始几
天后,我的概念就变成了,完全复(chao)制(xi)另外一个外卖网站。

2.前后端缺乏沟通

前期前端的接口出的比较慢,不过我们后端也一直在按自己的想象做着“可能”有的功能,但后端并没有对前端的接口进行审核。当项目进行对接的时候我们才意识到问题的严重
性。接口基本上对不上,整个网站,全是404,503等错误,怎么办呢?改吧,改的时间居然花费了整个项目1/3的时间,这时候大家才开始加强了沟通。

Deadline是第一生产力(中间就是项目对接的时候):
![](http://7xnc86.com1.z0.glb.clouddn.com/the-conclusion-of-the-first-project-
of-studio_1.png)
另外,虽然老板专门租了一个房间给我们,但距离学校太远,所以几乎没人去那里写代码,我们更多的算是一个远程团队,但完全没有交流。

3.分工明确,但不清楚自己和别人具体该做什么

项目里分工应该是明确的,我们后端就按照功能分为了三个部分,前端由于人多,分得有点杂。但我们却不大明确自己和别人具体该做什么。比如我们后端,虽然按功能划分,但
毕竟有些功能是有交叉的,而没有好好的沟通进一步明确,导致有些功能两个人都以为自己不做,就最后就都没做(由于另外一个后端系大四学长,能力应该比我强,所以我对他
太放心了,但其实可能他太忙了,并没有太在意这个)。另一个就是不清楚别人做的什么地方,每次遇到前端的问题,不知道该找谁,无论是谁,都说不是自己负责的,看样子他
们跟我们后端的情况差不多。我觉得分工这些地方一定得形成文档。

4.没有测试过程

工作室处于初期,没有专门的测试团队或人员,我觉得这一点无可厚非,完全可以理解。但却没人从来没人去把整个业务流程完整走一遍,只是偶尔老板会主动去走一下,然后发
现一大堆的问题,然后统一写一个文档发到群里,然后,没多少人在意。

个人学到的经验

我也不知道这个项目最终会变成怎么样,但在这次项目中确实学习到了不少东西。

1.工具的使用

好吧,我承认,之前基本上没用过PHP的,但是我觉得我的学习能力还是挺快的,基本上很快就熟练了。之前并没有用过框架开发,这次使用的是Laravel框架,前期花
费了大量的时间学习,对项目为什么要使用框架有了一些了解,并对框架的特性有了一些了解。对于实际的项目,框架是必须的,不可能不使用框架而纯使用PHP的基本语法来
实现,学习了一个框架看其他的类MVC框架其实都差不多的。 另外,一定要好好利用github和git,github可不仅仅是代码托管的地方,在github上,
还可以对问题进行跟踪,提交issue。一旦发现了不是自己的bug千万不要憋着,立马提交上去,看不看是他们的事(当然,可能因为我们都是大学生,基本上这算是我们
的第一个项目,所以基本不会主动去看,我也是后期才意识到的)

2.学会沟通

为什么还要去学会沟通,因为项目中沟通和普通的沟通不一样。不要因为某位成员技术不够就无视他(好吧,我一般是被无视的一方,程序员钻牛角尖怎么了?),也不要因为某
位成员比你厉害就害怕与其沟通。另外在QQ聊天中如果有问题要提出就一定要一下说完,别说一句顿一下的,不知道为什么80%的人都这样。之前我很少在写代码的时候把Q
Q登录上,但这次项目大家只有在QQ里交谈,所以只能一直在线。一般的情况就是这样:当我在很认真的写代码的时候,QQ突然叫一下,显示“我发现了一个问题”,就等着
他发具体的问题过来,但许久没发过来(大概1分钟),于是最小化窗口,继续写代码,一会儿又跳出来,这次发了张截图过来,但是我还是无法看出具体问题,就等他进一步描
述,又1分钟,最小化,继续写代码,又弹出来QQ,好吧,终于知道问题是什么了,每次都想骂一句,你他妈就不会一次说完吗?

3.时间的安排

我认为在本次项目中,我时间安排上还是合理的,不过太投入了。平时都没有去学习其他的东西,因为害怕一学习就会耽误时间,唉,太投入也有错。

4.对远程工作的看法

虽然本次项目在概念上不算是远程工作,但大家都是通过QQ交流的,所以在性质上还是比较类似。而且我一直挺关注远程工作的,最近对远程工作也有了一些新的看法。
远程工作,必须要有完整的管理流程 团队必须及时交流,并提供定时交流的时间 项目不同的模块,谁拍板谁负责
PS:我很喜欢远程工作的模式,但始终找不到志同道合的人。找一个前端都太难了,但我主要觉得还是性格和价值观上的不同早就的,不过我相信我会找到的。

Laravel指南

Laravel项目基本结构

十分推荐安装laravel-ide-helper

配置

  • .env文件中,如果有空格,那么值需要用双引号包围,并且里面如果用\n,那么必须转义\\n

  • 如果.env不起作用,可以尝试清理缓存php artisan cache:clear

  • laravel可以根据不同的系统环境自动选择不同的配置文件,例如,如果APP_ENV=testing,那么会自动选择读取.env.testing中的配置,如果有.env则会被覆盖,特别是单元测试和artisan命令中

  • 项目目录文件最正确的配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    cd /var/www/html/laravel-project-root 
    sudo chown -R $USER:www-data .

    sudo find . -type f -exec chmod 664 {} \;
    sudo find . -type d -exec chmod 775 {} \;

    sudo find . -type d -exec chmod g+s {} \;

    sudo chgrp -R www-data storage bootstrap/cache
    sudo chmod -R ug+rwx storage bootstrap/cache

Laravel的主配置文件将经常用到的文件集中到了根目录下的.env目录下,这样更高效更安全。其内容如下:

阅读全文 »

Html

基本格式

  • deferasync的区别:
    • defer: <script defer src="myscript.js"></script>,加载后续文档元素的过程将和该脚本的加载并行进行(异步),并在最后执行
    • async: <script async src="script.js"></script>,加载后续文档元素的过程将和该脚本并行进行,并在最后执行
    • 什么都没有则是立即加载并且立即执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>                   <!--文档声明-->
<html lang="zh-CN"> <!--指定页面语言-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <!--兼容IE-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!--编码声明-->
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> <!--将网页中的http请求默认提升到https请求,防止出现mixed-content错误-->
<title>标题信息</title>
<link href="styles.css" rel="stylesheet" ><!--添加样式表-->
<link rel="icon" href="favicon.ico" type="image/gif" sizes="16x16"> <!--设置favicon-->
<link rel="canonical" href="https://haofly.net/html" /> <!--权威内容标签,SEO有用,可以参考https://ahrefs.com/blog/zh/canonical-tags/-->
<link rel="alternate" href="https://haofly.net/en/html" hreflang="en" /> <!--网页可选语言-->

<script src="scripts.js"></script> <!--添加Js脚本-->
<style type="text/css"></style> <!--内嵌CSS-->
</head>
<body>
页面主体
<p>段落</p> <!--段落-->
<br> <!--换行-->
<hr> <!--水平线-->
<img alt="Horsehead" src="Horse.jpg" /> <!--图片-->
</body>
</html>
阅读全文 »

OK,昨晚熬夜到两点都没解决这个问题,不过还好昨晚至少知道了问题没有出现在配置上,而是IP有问题。今天写了一张工单给ustack的客服,终于知道答案了。

现象:ustack的云服务器中的mysql数据库无法实现远程登录。

环境:Ubuntu14.04(server) + ustack服务器

解决

1.修改默认安全组

阿里云没有安全组功能,默认不对端口进行限制

ustack的安全组是云主机虚拟网卡上行和下行流量的防火墙,就相当与其NAT的防火墙,而DigitalOcean没有这个东西,不信你可以试试ifconfi g,该命令在ustack可以看到两张网卡,但是却没有外网ip的网卡,而DigitalOcean则可以直接看到外网ip的网卡切没有内网的ip。以下是usta
ck的默认安全组:

可以看到其上行流量是完全开放的,但是下行却只开放了几个端口,可以在这里面添加安全规则,也可以自己另外建立安全组,然后在虚拟网卡里面绑定到相应的虚拟网卡就可以
生效了,然后重启一下服务器(没尝试过不重启会不会生效,反正我是重启了的)。

2.MySQL授权root用户远程登录

需要注意的是,最好不要用root用户远程登录,可自己新建一个用户用于远程登录,并限制一些权限,由于我这只是测试用的服务器,所以无所谓。首先在服务器中执行如下
命令:

mysql -u root -p   # 登录MySQL
mysql> use mysql;
mysql> select host, user from user;   # 查看是否已经分配了权限
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| 127.0.0.1 | root             |
| ::1       | root             |
| localhost | debian-sys-maint |
| localhost | root             |
| tech      | root             |
+-----------+------------------+
6 rows in set (0.00 sec)
mysql> grant all privileges on 星__.星__ to 'root'@'\%' identified by 'password' with grant option;
mysql> select host, user from user;    # 结果中的\%就表示所有IP都可以用root用户登录
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| \%         | root             |
| 127.0.0.1 | root             |
| ::1       | root             |
| localhost | debian-sys-maint |
| localhost | root             |
| tech      | root             |
+-----------+------------------+
6 rows in set (0.00 sec)

3.修改MySQL侦听端口

修改MySQL配置文件/etc/mysql/my.cnf,将bind-address后的值localhost修改为ustack服务器的内网IP(
注意这里修改成的是内网ip,因为ustack是用的NAT方式转发过去的,它本身根本无法识别外网IP)

阿里云需要将bind-address设置为服务器的外网IP

DigitalOcean也要设置为外网IP(DO貌似没有内网IP)

4.测试

在另一台电脑上执行mysql -h 外网IP -uroot -p,这里的IP是外网IP,如果能访问就表示设置成功了。

参考:http://www.111cn.net/database/mysql/46646.htm

近日老板给了我一个数据库,让我学学人家是怎么设计的,之前从来没有导入过别人的数据库,期间遇到一些问题,特记录如下:

1.批量导入问题

首先老板给我的文件不是一个单独的sql文件而是一张一张单独的表对应的sql文件,加起来好几十个,我可不想一个一个的导入,所以到网上找到了一个比较方便的方法:

首先,要知道有一种sql文件是这样的:

source file1.sql;
source file2.sql;
srouce file3.sql;
...

如果再用source命令执行这个文件的话就可以实现批量导入功能,但是怎么能直接获取全部文件名呢(由于source命令是在mysql shell里执行的,所以
要用绝对路径),这是可以用管道了(linux下用ls,windows下用dir)。首先可以把所有sql文件放到一个文件夹内(如果同名就重命名,没有关系的)。
然后在cmd里执行

dir foldername /b/od/s > all.sql

这条命令会列出foldername文件夹内的所有子文件的绝对路径并将结果输出到all.sql文件内。然后用文本编辑器打开该sql文件,用替换工具,将每一行替
换为

source 绝对路径;

的形式并保存。然后在MySQL里执行

source all.sql的绝对路径

这样就能完全导入了。

2.导入乱码的问题

出现乱码肯定是中文乱码,但是,虽然你把MySQL默认编码设置为utf8并且把数据库设置为utf8但依然无法避免人家导出时不用utf8的情况,我应该就是碰到这
么一个问题了,所以下次自己用命令导出的时候一定要设置编码:

mysqldump -uroot -pmysql --default-character-set=utf8 database > xxxx.sql

而如果遇到别人的数据库导入乱码的时候就需要把所有东西全部设置为utf8就可以彻底解决问题了:

SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_database = utf8;
SET character_set_results = utf8;
SET character_set_server = utf8;
SET collation_connection = utf8_bin;
SET collation_database = utf8_bin;
SET collation_server = utf8_bin;




# 然后再导入




source all.sql

每个学计算机的同学都会有这么一个困扰:身边的人会问你各种各样的电脑问题,但事实上自己所学的内容和他们的理解根本就不一样。我们学计算机,学的是计算机的原理,不
是学如何看哪个硬件好不好,我们学的是软件,但不是PS这种软件,我们可以做一个手机APP,但那不是一两天就能做好的。每次跟你们解释的时候由于你们也不理解,所以
我们也很困扰。所以特写这么一篇科普文章,希望你们能够看看我对电脑的一些常用的知识。(文中有些观点肯定会被懂电脑的人喷,但请理解)

1.关于购机

好吧,这是我们最薄弱的一块儿,实话实说,我们真的对硬件不了解,无论是手机或者是电脑。如果非要让我们提供建议,那么很简单,有钱就买苹果,MacBook也有60
00多的,我就很喜欢。但我肯定买不起,我目前的这台宏碁笔记本3600元买来,加了一根140块钱4G的金士顿DDR3内存条(2012年买的,当时内存条可没如今
这么贵,而且我是买电脑那里买的,都是水货),今年又加了一个120G的三星固态硬盘(SSD),貌似是400多,反正别人送的,我也不知道多少钱。我的电脑嘛,还是
可以应付很多大型游戏的,显卡是NVIDIA GeForce GT
630M,在大型游戏方面,极品飞车18之前都能流畅运行。PS:不要说哪款网络游戏能称得上大型游戏,真正的大型游戏都是单机。

在品牌的选择方面,只要不买神舟都行,其实我也不讨厌国产的,但自从看了神舟的官网后,我对神舟就绝望了。在价钱方面,一句话,如果要玩大型游戏或者用专业的软件比如
视频制作等,一定要4000以上,显卡一定要独立,如果不玩大型游戏,那么3500以上都行,如果不玩游戏,平时只是上上网聊聊天,3000以上都行。在显卡选择方面
,除非用ADM最顶端的几个型号,不然就买英伟达的。在CPU方面不要追求主频,它并不能代表什么,但一定要用Intel的。硬盘方面,如果不存太多片(你懂得),3
00G以上真的够了,最好选择有固态硬盘的,以后装什么软件就不用犹豫装不装在C盘了,一样的神速。内存方面,最好4G及以上。系统方面,不要去纠结预装的什么系统,
也不要被老板忽悠他装的是正版系统,无论预装的什么,都可以直接叫老板装一个你喜欢的系统,而且是正版的,零成本,跟他说几句,绝对不收钱。windows还有正盗版
之分,linux绝对是正版且免费的,别被老板忽悠。还有,如果电脑不是触屏的,最好别用win8。

手机嘛,我觉得都差不多,反正我799买来的红米用了一年多了,感觉不错。我买电子产品都有一个预计的使用时间,我预计799的手机用一年就可以了,不过目前看来应该
可以再多用一年左右的。

另外,关于水货的问题,水货为什么那么便宜,就因为他们不是通过正规渠道获得的,不用上税,电子产品的税率一般在15%-20%之间吧,也就是说5000的电脑大概税
收都是850,你知道为什么那么便宜了吧,如果你想要买的连正常价格的80%都没有那么就应该多长个心眼,很有可能是盗版或是劣质产品。

PS:我现在的装备:宏碁E1-471G笔记本(3600) + 4G金士顿内存条(140) + 台电x98 Air II平板(949) + 红米手机(799)

  • 三星22英寸显示器(别人送的) + 三星120G的SSD(别人送的) + 凯酷机械键盘(499) +

说不出名字的鼠标&耳机&游戏手柄(90) =
![](http://7xnc86.com1.z0.glb.clouddn.com/the-computer-acknowlodge-i-
know_1.jpg)

2.软件方面

正如上面所说,如果想重装系统,这个就可以找计算机专业的了,分分钟给你重装个正版稳定的系统,别到电脑城里去跳坑。盗版系统激活了照样是正版,而且没任何区别。当然
,学计算机的不会装系统也很正常,学校又没教过。另外,像做图、做视频、做CAD神马的,我们真的没那么多时间去学,而且这些软件根本没必要去学,要使用什么功能,去
百度一下立马学会。还有,在使用电脑过程中,如果遇到什么问题,比如什么软件打不开安装不上什么的,首先请重启一下,如果还有问题,请把电脑具体的提示截屏过来,不要
光说遇到个问题。在是否安装电脑管理软件方面,我建议还是装一个比较好,方便管理电脑,比如清理垃圾、关闭开机自启动的软件、安装软件等都很方便的,我个人用的是36
0,不要喷360,至少在我眼里现在唯一不流氓的软件就是360了(那些说安装完360卸载不干净的,请不要用360软件管家来卸载360安全卫士!)。是否安装补丁
方面,这个其实安不安装无所谓,只要你平时不拍什么艳照。是否安装杀毒软件方面,凭个人爱好,如果总是感觉电脑有毒,那么安装一下杀一下毒就行了,反正不用的时候你不
打开就行了。

3.购物方面

请尽量用360安全浏览器购物,千万别用IE,360浏览器至少能分辨大量的钓鱼网站。再科普一下如何简单的识别钓鱼网站,一般,如果你的电脑没有木马病毒,是可以直
接通过浏览器的地址栏看出是不是合法网站的。就比如淘宝嘛,域名是[www.taobao.com,对于任何网址,前面加不加http://都一样,当然这只是淘宝网
的首页,如果点击了其他页面那么就会有www.taobao.com/XXX,这样的也都是对的,无论XXX是什么...](http://www.taobao.c
om,对于任何网址,前面加不加http://都一样,当然这只是淘宝网的首页,如果点击了其他页面那么就会有www.taobao.com/XXX,这样的也都是对
的,无论XXX是什么内容,有斜杠也无所谓,因为最重要的就是”taobao.com”。如果有其他情况就要注意了,比如www.123taobao.com,www
.tacbao.com,www.taobao.hehe.com,等绝对是钓鱼网站。还有就是天猫\\(tmall.com\\)虽然和淘宝是一家的,但是域名不一样
“Link: http://www.taobao.com,对于任何网址,前面加不加http://都一样,当然这只是淘宝网的首页,如果点击了其他页面那么就会有
www.taobao.com/XXX,这样的也都是对的,无论XXX是什么内容,有斜杠也无所谓,因为最重要的就是"taobao.com”。如果有其他情况就要注
意了,比如www.123taobao.com,www.tacbao.com,www.taobao.hehe.com,等绝对是钓鱼网站。还有就是天猫\\(tma
ll.com\)虽然和淘宝是一家的,但是域名不一样” )。

还有一种钓鱼网站是盗号的网站(请不要太在意QQ号被盗这件事,没什么的,盗你的号一般是改不到你密码的,顶多转发些黄色的盗号网站罢了),当然如果你QQ号黄钻、红
钻什么杂七杂八的都是满级或者你在QQ里面有大量的Q币就要注意了。盗号网站也很好识别,一般他们是这样的网站:你打开后会要求你输入QQ帐号和密码,因为他们无法拿
到腾讯的API,所以必须你手动输入,这种网站一般模仿得像正常的网站,但字体一般都不大对劲,有经验的人一样就能看出来,而且也能通过网址结构判断的。这些网址一般
非常奇葩,你根本无法从网址看出来和主题有什么关系。

4.个人方面

请珍惜你身边的程序员。以下是我从网上整理的一些事实: 1.要嫁就嫁程序员,钱多话少死得早(人好话少壕得早) 2.程序员都很专一,除了计算机就是你
3.不喝酒不抽烟不发脾气 4.一套衣服穿半年 5.经常加班,而且同事清一色的男人,绝对不会搞外遇
6.经常加班,所以周末一定会怀着一颗愧疚的心在家陪老婆逛街、看电视、聊天、做家务
7.只认识0和1,基本没理财能力,一定会主动把所有的钱都交给老婆管,还会千恩万谢地 8.知道既然世界上不存在没有Bug的程序,就更加不会有没有缺点的人,所以
绝不会老婆太过苛求;知道系统若不经常维护就无法保持稳定运行,所以一定会每天都对老婆精心呵护
9.嫁给瘦弱的程序员,也许永远无法目睹他像李连杰那样以一敌十的英姿,却也会听到他吼道:“哪个孙子又在QQ上骂你呐?看我不盗了她的号……”
10.除了每个月买一本书,就没有其它需要花钱的地方,剩下的钱只能变着法的给老婆买各种首饰和衣服 11.每天都读书到深夜,是孩子的好榜样
12.程序猿都很单纯,虽然 13.程序员很热心。论坛上兄弟们有困难,他们会出手相助。生活中,朋友有电脑问题,他们会帮助解决
14.程序员很细心。写代码是个细活,不细心就会有bug,真写了bug,还得耐心细心的去找出来。在生活中
15.程序猿很浪漫,别以为他们每天面对代码就不懂风花雪夜了,没准你们每个第一次他都早已经清清楚地存进了程序里,就等给你一个惊喜呢

Nginx用起来比Apache方便简介,也有很多超过Apache的地方。Nginx不仅可以作为http服务器来用,更重要的,它还可以用来做负载均衡和反向代理。Nginx官方文档

  • 正向代理:类似fq,服务器代替我们去访问其他的服务
  • 反向代理:外部访问内部服务,例如外部用户访问公司内部的各个服务,通过一个nginx进行代理

安装nginx

安装方法见: nginx安装方法

如果要安装最新稳定版nginx,可以添加这个源:

1
2
3
4
5
[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

Web项目目录的常用权限

1
2
find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;

配置文件详解

阅读全文 »

MySQL的逻辑备份是使用mysqldump命令(文本备份,而非二进制备份)来从数据库中提取数据,并将结果写到一个纯文本上,就是我们平常用mysqldmin到处的.sql格式的文件,里面是SQL语句。正是如此,逻辑备份可以在MySQL正在运行时执行,并且可以做到不锁表备份(也可以声明锁定),一般用于数据迁移或者数据量很小时。

备份

下面的命令是直接在linux的cmd里执行,而不是mysql的shell

1
2
3
4
5
mysqldump -q --single-transaction -A -u root -p > all.sql # 导出所有数据库到all.sql
mysqldump -q --single-transaction -u root -p user > user.sql # 导出user数据库
mysqldump -q --single-transaction -u root -p user admin > admin.sql # 导出user数据库里名为admin的表
mysqldump -q -d --skip-triggers user admin-u root -p > admin.sql # 导出user数据库里名为admin的表的结构
mysqldump -q -d --skip-triggers user -u root -p > jiego.sql # 导出user数据库的结构

其中mysqldump的常用参数如下:

1
2
3
4
5
6
7
8
9
-B:导出多个数据库
-E:把事件events一起导出
-R:把存储过程routines一并导出
-q:快速模式,不把查询结果显示在终端
--default-character-set=utf8:这点很重要,因为大量的数据库默认都会是utf8
--flush-logs:生成新的二进制日志文件,主要用于增量备份,恢复数据,增量备份必须加此选项,否则会丢失 数据
--lock-all-tables:锁住全局表,会出现写操作等待
--single-transaction:设置本次会话隔离级别为REPEATABLE READ,确保本次会话时,不会看到其他会话已提交了的数据
--triggers:把触发器一并导出,默认开启了此选项的

:需要注意的是,在5.5之后,mysqldump默认无法备份performance_schema这个数据库,但是可以通过—databases指定名字和--skip-lock-tables的方式来备份,但是不知道为什么,虽然能备份但是还是会给出错误信息。performance_schema是新增的mysql的性能监视引擎,所以我认为不备份也行,本来默认也是关闭的,因为数据库迁移或者恢复的时候可以不用看之前的这些的,有什么问题看系统日志就行了,具体的请参见官方手册

在slave里备份

MySQL5.5之后mysqldump增加了一个参数--dump-slave,可以在slave端dump数据,并且可以建立新的slave,可大大降低主服务器的压力。

恢复

假设有一个数据库结构的备份文件user.sql,那么可以 在mysql的shell里面执行如下命令

1
2
3
4
create database User;     # 首先得创建一个数据库
use User; # 选择该数据库
source /root/User.sql; # 导入sql文件
show tables; # 查看是否创建成功

也可以在创建相应数据后后在linux的shell里执行(在外面创建数据库我没找到方法)

1
mysql -u root -p user < user.sql