文章归档

网络安全

解决Chrome更新到63后.dev/.app后缀域名强制HTTPS的问题

  又是周一,上班的日子总是来的太快,来到公司的第一件事,打开IDE并更新代码库。看看上周做到哪里了,还有什么BUG是待修复的?

  然鹅,意想不到的事情就这么发生了,为什么本地环境访问不了?
请求被拒绝

  localhost能访问,本地服务器没问题;其他的本地域名可以访问,Apache配置没动过应该不是这个问题;试了试公司项目的其他域名,都是同样的报错;然后我注意了一下URL,被加上了https协议,去掉s再回车没解决;换个浏览器,行了?? 好吧,可能谷歌抽风了,我试了清空缓存和浏览历史,完全不行。后来发现问题没那么简单,网上也很难找到相关的结果,发现自己遇到了难题。

  然后我发现了SegmentFault有人问了相同的问题,才在回答里面找到了答案:

Chrome update news

  原文地址:Chrome 63 now forces .dev domains to HTTPS

  既然如此,强大的谷歌对自己拥有的顶级域名(.dev和.app)进行了合法干涉,那么我们也只能认怂了吧。 默默的把原来的.dev改成了.local后缀。

  但是有强迫症的我有点不甘心,相信有很多人跟我一样,都是执着的没事干的人!不找出一个能在chrome上用.dev的后缀的方法,心里面还是稍微有那么一点难受的(^_-!)

  在github上有一个工具:Fishdrowned的自签泛域名证书MacOS用户可以使用我FORK过来的修改版(原作者已做兼容2018/01/02)

  咱们可以自己在本地生成一个xxx.dev的域名证书来直接让TA支持https访问!!!! 具体的使用方法在上面链接有介绍

  服务器端如何配置支持https自行搜索,这里不做解释了。

  最终实现.dev的https访问,如图:

url地址栏

浏览器证书   

阅读剩下更多

默认配图
PHP

Pazzle on array_column

  在PHP中内置的对数组操作的方法(函数)有一个叫做’array_column’的非常实用,它可以用作返回一个二维数组的指定列。

  先介绍一下它!

  好比这样一个用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$students = array(
array(
'id'=>1,
'name'=>'Jerry'
),
array(
'id'=>3,
'name'=>'Tom'
),
array(
'id'=>6,
'name'=>'Lily'
),
array(
'id'=>11,
'name'=>'Bob'
),
);
$student_names = array_column($students,'name');
var_dump($student_names);

输出结果:

1
2
3
4
5
array (size=4)
0 => string 'Jerry' (length=5)
1 => string 'Tom' (length=3)
2 => string 'Lily' (length=4)
3 => string 'Bob' (length=3)

  这样就得到了一个所有名字的数组,想必对于一个PHPER来说并不陌生。但是今天要讲的重点是array_column的另外一个用法,如果给它第三个参数,那么它将以第三个参数对应的数组中的值作为返回数组的键,用例如下:

阅读剩下更多

默认配图
学习笔记

【干货】本地git对应多个远程仓库

当Githuber发现GitOSChina能发布项目演示,想把自己的项目也同步到OSChina上去时,同时维护两个本地仓库或者remote显得太过麻烦

提要

  首先,为本地git仓库添加远程仓库,我们使用命令:git remote add origin [url],这样一来,本地仓库就对应有了一个远程仓库的地址,包括pushfetch源,如下图所示:

remote-v

  但是,我们如何才能做到既能将本地git仓库PUSH到Github,也能够PUSH到OSChina上呢?

  可能有以下方式是你想到的:

  1. 本地创建两个仓库,一一对应(你不嫌麻烦的话的确可行)
  2. 添加多个远程库,即git remote add [another-origin](那每次都要PUSH两次咯?)

  其实,git的一个远程库本来就可以配置成多个地址,即一个origin拥有多个url。

敲黑板了(实现)

  前提条件是,我们已经为本地仓库添加了一个origin远程库(没有添加的自行添加,方法前面说了)。我们现在为本地库继续添加url地址:https://git.oschina.net/anthony_box/hitools.git

  这个命令是:git remote set-url --add origin [url](url替换成如上地址)

set-url

擦黑板了(原理)

  其实该条命令执行就是在git项目的config文件里的[remote "origin"]配置新增一条记录,我们打开config文件看看,输入git config -e(文件路径:[repo]/.git/config):

config-e

  所以说,执行git remote set-url -add origin和编辑config文件,一码子事。

阅读剩下更多

默认配图
学习笔记

神奇的空格符

  当我通过表单提交带空格的数据并保存到数据库,然后通过再次渲染出的页面修改该数据,意想不到的事情发生了,再也不同通过这个值检索到这条数据了。

  首先,我们先写一个PHP的测试文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if(isset($_POST['model'])){
echo $_POST['model'];
echo "<br>";
echo str_replace(' ','&nbsp;',$_POST['model']);
echo "<br>";
echo urlencode($_POST['model']);
}
?>
<form method='post'>
<input name='model' value='' />
<button type='submit'>ttttt</button>
</form>

  可以看到,这里面有个表单,提交到自己这个页面,然后由PHP获取到POST过来的参数model,第一行直接输出它的值,第二行输出防SQL注入对空格的转化后的值,第三行输出encode之后的值(为什么?我们最后说TA的用途^_^)。

  我们现在试着输入并提交Sumsang S8

结果1

  由此可见,后台获取到的是一个Sumsang+空格+S8,第二行跟上面一样(显示一样,源码不一样),第三行空格变成加号是urlencode后的转义,那么看下源码:

源码1

  当然,很多情况下,为了防止SQL注入,我们会将空格转化成&nbsp;存库,然后取数据的时候在逆回来。


  紧接着,我们模拟数据的修改,基本过程是:从数据库取出这条数据–>填充到input标签的value属性中(没有做逆处理)–>渲染页面,渲染的页面源码如下:
  

阅读剩下更多

默认配图
杂谈

毕业了

转眼间,青春不再年华

  其实,很早就要写这样一篇文章的,只是一直都不知道如何表达,即使现在也还是一样。

  毕业,经历也不止那么一两次了,从来都没有感觉到有什么特别。人们总说,离别是伤感的,因为知道以后的相逢是微乎其微的,因为不知道的,太多了。我从来都没有想到,竟然在我即将离开校园的那一天,舍友一个个从宿舍离开的那一天,我热泪盈眶,竟说不出话来。一想到平日里我们朝夕相处,如今却落得个你南我北他中原。

  正式步入社会,成为万千就业者中的一员,也就是说,我们不得不考虑和选择更多的事情。入京工作已过半年之久,以前从未想过会来京都工作,我永远都会记得每一次面试当面试官问我想去哪个城市工作时,我的回答只强调了一个重点,那就是“除了北京”。原因很简单,离家太远和空气环境差,我更愿意去上海、深圳、成都甚至是长沙。但最终我实习和工作的地方,就是北京。Orz…

  既然来了,便也学会适应并努力完善自我,尽管生存环境不尽人意。相信自己能够在这个不曾向往的地方体现自我价值,创造人生价值。

两年,或许是个新开始

  是的,不管怎么样,我决定至少认真的对待这两年,其实两年对于一个刚刚毕业的菜鸟是很重要的一个过渡期,这意味着今后的路将怎么走,应当展望一个什么样的未来,找到自己所处的位置和自己将要达到的下一个高度。我希望两年后,我会是一个全新的我,完全从现在的自己蜕变而出,所及之处无遗憾,稳而渐入佳境。

总有那么一个时刻,你背负着Newbie的称号。

阅读剩下更多

默认配图
学习笔记

The Problems When Python2.6 to 2.7 on CentOS6.5

当Python从2.6升级到2.7后,pip找不到了?

  对的,基本上都能遇到这个问题。我很暴力的直接去下载一个pip然后用Python去安装它。

1
python setup.py install

  却被告知ImportError: No module named setuptools,想通过yum直接给安装,却出现下图所示:

  没办法,去下载一个setuptools的包自己来装吧(我试过了下载setuptools-35.0.1.zip,这个不适用)。所以下面的这个亲测有效:

1
2
wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg  --no-check-certificate
sh setuptools-0.6c11-py2.7.egg

阅读剩下更多

默认配图
PHP

array_walk中的$this报错

Fatal Error:Using $this when not in object context on line 54

  今天在完成一个小功能开发并提交SVN后,收到前端的求助,说是更新了我的代码后页面打不开了。很着急啊,我这里都是测试成功才提交版本的。现在只能麻溜的跑过查看了。

  首先,出现的情况是空白页面(对,没有任何输出)。报错肯定没打开,帮他打开E_ALL后就看到了今天的重点报错提示了。说是在54行有个$this不在对象环境中?

  然后我去看了,那个$this出现在array_walk方法的function中,从语句上来看是完全没有问题的,在类的方法里面用$this肯定没毛病啊,可是为什么他那里就报错呢?

  我突然想起来,如果要在array_walk里面使用外面的变量的时候需要使用use方法。所以改进一下:

1
2
3
4
$user_id = $this->user->id;
array_walk($arr,function(&$v) use($user_id) {
$v['user_id']=$user_id;
});

  这样就没毛病了。看来这个array_walk还挺调皮啊,不得不说这个方法的使用还真有许多需要注意的地方呢。

  通过查资料,得知这个$this在PHP版本低于5.4的情况下是会出现问题的。高版本的不会出现。

参考:Using $this when not in object context error within array_walk

阅读剩下更多

默认配图
PHP

PHP时区默认为Europe/zurich且修改php.ini无效的困惑

为何我的date(“Y/m/d H:i:s”)相差了7个小时?

环境:MacOS X EI Capitan / PHP5.6.25

  今天在校验Crontab的计划执行时,利用PHP输出执行时间却发现输出的时间和当地事件相差了7个小时,对!是7不是8,并不是默认的UTC,呵呵了~

  好吧,一贯思路,我去把php.ini中的date.timezone修改成PRC。嗯,肯定正常了吧。

  要能正常我也不会写本文了^_~!

  不论是修改成PRC还是Asia/Shanghai又或者UTC,全都未然。   


  1. apache输出phpinfo(),查看date区域它的Default Timezone还是没变。
    Phpinfo的date区域
  2. 在控制台查看php -i | grep zone也还是同样没变
    控制台输出timezone
  3. 核对加载的php.ini文件是否正确并且配置信息格式是否正确

  4. 控制台使用php -a交互模式,调用ini_get('date.timezone'),检查配置的INI是否生效

  全都没有任何问题啊!!!为什么结果却出乎意料呢??百度,谷歌我都问遍了,大家没人出现我这样的情况啊。正当我发愁的时候,小伙伴过来给我支招了。

阅读剩下更多

默认配图
PHP

php上传进度之uploadprogress

我的学习是项目驱动,这次遇到的需求是上传进度条。

注意:此方法仅在Apache下运行PHP时有效,如果您采用FastCGI方式(如:Nginx+fpm),这个不适用!

通过查PHP手册,了解到PHP版本5.4+有一个新特性uploadprogress,也可以说是新扩展吧!

1
2
当 session.upload_progress.enabled INI 选项开启时,PHP 能够在每一个文件上传时监测上传进度。 这个信息对上传请求自身并没有什么帮助,但在文件上传时应用可以发送一个POST请求到终端(例如通过XHR)来检查这个状态
当一个上传在处理中,同时POST一个与INI中设置的session.upload_progress.name同名变量时,上传进度可以在$_SESSION中获得。 当PHP检测到这种POST请求时,它会在$_SESSION中添加一组数据, 索引是 session.upload_progress.prefix 与 session.upload_progress.name连接在一起的值。

将这个扩展启用,需要开启PHP.INI支持:

session.upload_progress.enabled = On
session.upload_progress.cleanup = On
session.upload_progress.prefix = "upload_progress_"
session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
session.upload_progress.freq = "1%"
session.upload_progress.min_freq = "1"

  当然,我按照官方的示例操作了N久,就是读不到此类session的值。一开始以为是公司框架的问题,后来自己在本地单独写文件来测试,结果还是一样!

  在网上查找各种此类问题的解决办法,虽说有相同提问的,但是解答问题的人根本就没找到根本的原因。其实很简单:上传的文件Size太小

阅读剩下更多

默认配图
学习笔记

Learning-Markdown

MarkDown的学习

这里面就是一些简单的MarkDown语法,提供给我自己看一下,刚开始还是需要不断练习来接受这种语法,必然能够在码字的过程中体验乐趣!

下面开始啦:

阅读剩下更多

默认配图
杂谈

Hi! Github Pages

时间 事件
2017/01/17 考虑到服务器5个月后到期,无法提供一个月65元的费用(因为性价比),寻求新的方式
2017/01/18 快速学习Hexo与Github Pages,初步学习如此方式的博客
2017/01/19 配置Hexo和域名解析,完成以前的文章的迁移(图片还没找到合适的方法),imsry.cn域名正式使用!

感谢大家的支持与厚爱!

注:dshui.wang暂时并存一段时间,以免部分朋友找不到入口。请大家记住新的地址(www.imsry.cn –对不起.cn/抱歉.cn/我是抱歉.cn)

阅读剩下更多

默认配图
学习笔记

我是如何将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

阅读剩下更多

默认配图
杂谈

2017年的开篇,居然是这个!

今天一天其实可以说,相~当~累! 因为去了一趟八达岭长城,徒步北长城让我精疲力竭。回来已经晚上9点了,收拾收拾东西,洗漱完。坐着等2017的到来。
然后就干了这么一件事:
20170206148636027922625.png

然后产生的结果是:
20170206148636024291000.png

对于这个,2017年1月1日 00时00分01秒,我露出了无奈的笑容~

阅读剩下更多

默认配图
返回顶部