先放本中文版封面镇楼

值得一读

在市面上各种 PHP 21 天从入门到精通的书已经漫天飞舞的情况下,《Modern PHP》一定是一本值得一读的从国内各大论坛/网站/课堂经历过以后的 PHP 进阶书籍。

《Modern PHP》是由 O’Reilly 推出,作者是大名鼎鼎的 Slim 框架的开发者。这本书推出的时间很有意思——2015 年 12 月,这也是 PHP7.0 正式发布的时间,同时——也就是从那时间开始,越来越多“PHP 药丸”的言论开始大行其道。所以,我一直在使用 PHP 的时候心情非常复杂。

不过,我想这本书是可以为 PHP 正名的,而且不仅仅是正名——这本书介绍了一个崭新的 PHP 和一个全新的 PHP 时代。 所以本文的题目差点被我起成卫庄体——“给我两个小时,还你一个崭新的 PHP”。

阅读全文 »

16 年的确有许多不会轻易被忘记的事情。整体来讲,今年的整体节奏相比去年是慢了些许,闲暇时间多了一些,但是收获一点也不少。

三个 Flag

今年开年就立了三个 Flag,一个是在期末杂记中提到的,重拾自己对生活得激情和好奇;另一个是在中提到的,要有存款,要经济独立;最后一个在 2016 读书计划中提到的新年书单。

对于第一个,我认为完成度比较高。我开始去思考每一件看似合理而规矩的事情,也开始去打量生活中每天出现的新的事物,我开始变得 Open;开始试着理解小朋友们聊天,琢磨它们的心思,认识他们的世界;我也开始不仅仅追求效率,开始有了生活,甚至偶然的机会,我试着去了解以前敬而远之的艺术,开始去思考其背后的存在论。从年初经常被人叫“大叔”,到最近很多人认为我的心态很年轻,我真的变化了许多。

第二个 Flag 就完成的不怎么好了。到现在为止,虽然每个月月都多少有些收入,但离经济独立还有一些距离。我也不想讲太多的原因,明年的情况一定会比今年好很多。

最后一个目标的完成度也不高,离截止日期还有两个月,大概只完成了三分之一的阅读量。除了有几本书是因为当时选择得不是很合理,看了不到一半就放弃了之外,其他的原因,就是太懒。

阅读全文 »

先说说之前的失败经历吧。

前几天我一直尝试在 64 位的 Ubuntu16.04 上进行安装,分别尝试过 ONOS 1.6 – 1.8 (因为只有 1.6 以上的版本才 Support P4 的 bmv2)这三个版本,经过漫长的编译过程,均编译成功(除了偶尔因为万里长城链接超时),但是在运行的时候总是会提示出错,错误信息大概分为以下两种:

  1. 在使用 ok clean 命令启动的时候出现 “ No adapter with IP 127.0.0.1 found! ”,然后。。无法启动。
  2. 在使用 Web GUI 登陆成功以后提示“ ONOS GUI not ready yet… please stand by… ”字样。。然后。。就没有然后了。

在束手无策的时候,准备换一个环境重新尝试一下,于是使用 vmware 创建了一个 Ubuntu14.04 的虚拟机,然后发现一切顺利。

主要的安装步骤可以参考:https://wiki.onosproject.org/display/ONOS/Installing+and+Running+ONOS

除了,不必去 Packaging ONOS tar.gz or zip distributions 和 export ONOS_IP 。

所以。。问题的解决方案是:系统版本一定要选对。

就在刚刚,我还在对着这个题目窃喜——既然是“空”,当然不需要一个字的正文。因为数据库中的 Null 就是空。 然而,我却应景地忆起了午时地天“空”。

时光广场,四周仰望,皑皑一片。不是白雪,不是雾霾,却只能去用皑皑两字形容——只是因为太空,颜色都没有,真的太空了。嗯,我第一次开始认真考虑“太空”一词的来由。

仅仅是因为昨夜一阵秋风?当然不。秋风只是卷走了树梢的残叶,却没有带来“空”。那我所见的皑皑之状径为何物,它是不是空?

——2016 年 11 月 20 日下午 1:48

阅读全文 »

背景

上一篇文章已经把 P4 的环境在 Ubuntu14.04 中跑起来了,这里开始尝试在 P4 环境中配置 INT(Inband Network Telemetry)应用。

升级 linux kernel 到 3.19 版本

1
sudo apt-get install linux-generic-lts-vivid

安装 Docker

按照 Docker 官网上的说明安装即可:https://docs.docker.com/engine/installation/linux/ubuntulinux/

顺手再安几个其他的依赖项

1
2
3
4
5
sudo apt-get install python3
sudo apt-get install python3-pip
sudo apt-get install bridge-utils
sudo pip3 install scapy-python3
sudo pip3 install websockets

建立 Switch 的 Docker 镜像

1
2
cd ~/p4/p4factory/targets/switch/
sudo make docker-image
阅读全文 »

环境

观察发现,网上有关于 P4 环境的搭建都是在 Ubuntu 中进行的,所以我这次也准备从众,使用 Ubuntu 系统对 P4 语言的环境进行安装配置。 本来是准备在之前安好 Ubuntu 的 ChromeBook 中进行这次实验,但是由于最近国内长城城墙突然变高,GitHub 连接速度非常慢,而且容易超时,所以我在这里开了一台国际版 azure 虚拟机作为实验之用,如果是在国内使用,推荐挂载 VPN 或者 SS 之类的 socket5 代理进行操作。 我选择了 Ubuntu14.04 作为安装的系统环境。在安装之前,需要先下载 P4 的源码,这里直接使用 p4factory,而不是去分别安装每一个模块。

下载 P4factory

p4factory 的 Github 地址:https://github.com/p4lang/p4factory 在 Ubuntu 中直接使用 git 工具 clone 仓库即可。

1
2
3
4
mkdir ~/p4
cd ~/p4
git clone https://github.com/p4lang/p4factory.git
cd p4factory

安装/升级依赖模块

p4 运行环境需要依赖许多其他 github 上的模块,在官方的 Readme 中,推荐使用 git submodule update 将子模块升级到最新版,但是在升级某些项目的时候会被 github 禁止。解决的方法很简单,生成 SSH key,并且添加到 Github 中即可。

阅读全文 »

前一阵升级了 Windows10 周年更新以后发现系统内自带了一个 Ubuntu 的 Bash,想去跑一些东西试试,结果令我失望。比如一些网络的命令没法正常使用,而且 jdk 似乎跑起来也有问题,后台服务也很奇怪(貌似把 shell 关掉以后就自己停止),所以种种原因让我不得不试着用别的办法来干活儿。

于是,从师兄那里拿到了一个 HP 的 ChromeBook14,长的挺漂亮,性能也还不错——CPU 是赛扬双核,4G 内存,16G 的 SSD(之后证明这么小的硬盘的确不够用)。所以准备把它的 ChromeOS 改装成 Ubuntu。查了一下,网上也有挺多资料。

方案 1

这个方案是利用 ChromeBook 中的 crouton 进行安装 Ubuntu。基本原理可以参考crouton 在 github 中的 readme。 首先,在 ChromeBook 中开启开发者模式。【注意:这个操作会清理掉所有数据】

  • 按住 Esc+F3 (Refresh),然后按 Power,接着就会进入恢复模式;
  • 接着,按 Ctrl+D,它会提示您是否取消 Verification,按 Enter,关闭 verification
  • 接着,Esc+F3 (Refresh),然后按 Power,重启
  • 接着按 Ctrl+D, 提示是否进入开发者模式,您的数据会被清除;
  • 再次按 Ctrl+D,或者等待 30 秒左右,系统会引导您进入开发者模式。
  • 漫长的等待。
阅读全文 »

作为一个参加了许多次 Hackathon 的老司机,恰巧见到微软的 Office 主题 Hackathon,想去凑凑热闹。没想到这成了我到目前参与过的逼格最高也是感悟最多的一次 Hackathon。

163668315694259371

话不多说,先放出我们的作品:一款 PowerPoint 插件——ClassPie。总的来说,ClassPie 是一款可以帮助老师在课堂中更加高效地同学生互动的 PowerPoint 插件。可以把每一页 Slide 中的题目直接分发给在课堂中或者远程听课的同学,同时实时搜集同学们的答案并汇总到 PPT 中;同学们也可以把不懂的问题直接通过弹幕的形式发送到 PPT 中(在这里调用了以前的项目DanmakuPie的 API)直接同老师互动。

527513761386604399

半成品的 Github 链接:https://github.com/Thesharing/ClassPieAddin

说完作品,我更多想来谈谈这两天在微软的感受。

作为微软最有钱任性的 Office 部门,到来的讲师也都非常厉害。他们由来自 Redmond 和上海的大佬组成,阵容豪华。更重要的是多数讲师都非常 Nice,帮助了我们许多。

阅读全文 »

在通常情况下,使用 PHP 的超级全局变量$_POST 来接收使用 HTTP POST 方法提交的信息。但是在某些情况下,似乎$_POST并不能获得前端使用 HTTP POST 方法发来的数据。

查找资料后发现$_POST的确有使用局限,它只能接受 HTTP 头中文档类型为表单传来的数据,即 Content-Type: application/x-www-form-urlencoded 具体可以参见 PHP 官方文档:http://php.net/manual/en/reserved.variables.post.php#114598

在使用 jQuery 的时候,jQuery 的 POST 方法总是会自动设置 Content-Type 为 application/x-www-form-urlencoded,但是在使用 AngularJS 框架的时候,发现 Content-Type 被设置成了 application/json,这样使用 PHP 的$_POST就不能直接获取到提交的信息了。

解决方法:

阅读全文 »