NASA’s New Night Lights

NASA scientists have just released the first new global map of Earth at night since 2012. By studying Earth at night, researchers can investigate how cities expand, monitor light intensity to estimate energy use and economic activity, and aid in disaster response.

 

from https://www.nasa.gov/feature/goddard/2017/new-night-lights-maps-open-up-possible-real-time-applications

json_encode() in PHP

之前看Yii2的源码的发现有这样一段代码

public static function encode($value, $options = 320)
{
	$expressions = [];
	$value = static::processData($value, $expressions, uniqid('', true));
	set_error_handler(function() {
		static::handleJsonError(JSON_ERROR_SYNTAX);
	}, E_WARNING);
	$json = json_encode($value, $options);
	restore_error_handler();
	static::handleJsonError(json_last_error());
	return $expressions === [] ? $json : strtr($json, $expressions);
}

为什么要设置set_error_handler呢?根据文档(http://php.net/manual/en/function.json-encode.php),encode失败时会返回FALSE,根本不会抛出异常。

查看git提交记录,https://github.com/yiisoft/yii2/commit/7bea7b65fdf21ae3e58339cc04376123416fcf81,发现这次提交的comment为“Improved JSON error handling to support PHP 5.5 error codes”,里面有说明

PHP 5.4 is throwing E_WARNING json_encode(): type is unsupported, encoded as null when you are trying to encode Resource
PHP 5.5 is result false with json_last_error() JSON_ERROR_UNSUPPORTED_TYPE
重现代码:

    $fp = fopen('php://stdin', 'r');
    var_dump(json_encode(['a' => $fp]));

JSON_ERROR_UNSUPPORTED_TYPE常量正好是在PHP 5.5.0加入的,而Yii2支持的PHP版本为 >= PHP 5.4 。

nginx+php-fpm架构下wordpress升级失败分析

本站使用nginx+php-fpm架构,之前遇到wordpress内置升级功能无效的问题。

当然使用FTP方式升级没有问题,但是太麻烦了,所以通过网页升级是最值得推荐的。为了网页完成升级功能,服务器要的相关设置需要改动

1.必须保证整个wordpress文件目录的属主和php-fpm进程执行用户一致。

2.必须保证nginx的fastcgi_read_timeout参数(默认60s)足够大。

在systemd中配置php-fpm.service

vim /etc/systemd/system/php-fpm.service

[Unit]

Description=PHP-FPM

After=network.target syslog.target

[Install]

WantedBy=default.target

# Alias=php-fpm.service 不要设置别名。如果本文件名和Alias同名,则会导致systemctl enable php71-fpm报错:Failed to execute operation: Invalid argument

[Service]

#User=nobody

#Group=nobody

#User and Group can be set in the php-fpm configure file

# 2020-04-24更新:参考PHP默认提供的配置文件,使用Type=notify
Type=notify
#Type=forking
## PIDFile=/usr/local/php7/var/run/php-fpm.pid  不需要在这里指定pid文件位置,需要到php-fpm.conf文件中指定

ExecStart=/usr/local/php7/sbin/php-fpm

ExecStop=/bin/kill -INT $MAINPID

ExecReload=/bin/kill -USR2 $MAINPID

保存设置
systemctl daemon-reload

启动php-fpm.service
systemctl start php-fpm

systemctl enable php-fpm设置为开机启动

如果启动失败,请查看日志,常见错误都是权限问题,比如pid目录和php-fpm设置的log目录没有写权限等

 

PS:其实在编译PHP后,会自动生成配置文件,位置:php-${PHP_VERSION}/sapi/fpm/php-fpm.service ,然后直接把这个文件拷贝到/etc/systemd/system 目录即可

PHP 5.3 ~ PHP 5.6 功能变动

PHP 5.3 ~ PHP 5.6 功能变动

本文将会介绍自 PHP 5.3 起,直至 PHP 5.6 中增加/删除/更改的特征。

总纲

PHP 5.3以前:autoload,PDO 和 MySQLi,类型约束,JSON 支持,Phar支持,……

PHP5.3:匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,……

PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,……

PHP5.5:yield, list() 用于 foreach, ……

PHP5.6: 常量增强,可变函数参数,命名空间增强,……

PHP 5.3以前

类型约束

通过类型约束可以限制参数的类型,不过这一机制并不完善,目前仅适用于类、接口、 array(数组,从PHP 5.1开始)、callable(可执行类型,从PHP 5.4开始) 以及string 和 int(从PHP 7.0开始).(http://php.net/manual/zh/language.oop5.typehinting.php)

JSON 支持

包括 json_encode(), json_decode() 等函数,JSON 系列函数,可以将 PHP 中的数组结构与 JSON 字符串进行转换。值得注意的是 json_decode() 默认会返回一个对象而非数组,如果需要返回数组需要将第二个参数设置为 true.

Phar支持

http://php.net/manual/zh/phar.requirements.php

继续阅读PHP 5.3 ~ PHP 5.6 功能变动

升级到php7-dev

本博客升级到php7-dev了。
这次Zend非常给力,提供源码,Dockerfile,源(yum和apt-get)给用户安装开发版本。具体细节请进http://php7.zend.com/

php7带来了令人期待的Int64,Return Type Declarations & Scalar Type Hints等多处语法上的特性。当然,最重要的就是php7通过重新设计Zval,Zend Array等改进带来的很大的性能提升。而且几乎100%的兼容php5为我们升级省去了很多工作量,也必定会减少很多阻力。

总之,php7一个值得期待的版本,希望能够在2015.10月如期发布。

关于php7的语法改变,请移步 https://philsturgeon.uk/php/2015/03/15/php-7-feature-freeze/

[2015-06-05更新]
附上windows平台的二进制测试版本(每日更新)下载地址 http://windows.php.net/downloads/snaps/master/

Goodbye MSN

话说今天登陆outlook,发现微软的一封邮件,

距离Messenger服务结束还有 60 天,迁移到 Skype,继续你的通话

原来是微软通知要将msn用户迁移到Skype上。话说去年微软就通知要关闭msn但是不包括中国大陆的用户,这次通知Messenger 服务将于 2014 年 10 月 31 日关闭,应该专指中国大陆的用户了。这些年微软一直在线业务一直在换品牌。从MSN到Live Messenger再到skype;从Live Search到Bing;从hotmail.com到live.com到outlook.com,旧的都逐渐消失了,留给我们的回忆也越来越少,也不知道对于日新月异的互联网世界来说是好还是坏。

PS:

迁移到Skype时,微软赠送了兑换优惠券,可以兑换skype点数(登录或创建 Skype 帐户,就可以激活优惠) ,福利啊。

[视频]邓紫棋《后会无期》同名主题歌

《后会无期》同名主题歌歌词

作词:韩寒

作曲:Arthur Kent & Dee Sylvia

主唱:G.E.M.邓紫棋

当一艘船沉入海底

当一个人成了谜

你不知道

他们为何离去

那声再见竟是他最后的一句

当一辆车消失天际

当一个人成了谜

你不知道

他们为何离去

就像你不知道这竟是结局

在每个繁星抛弃银河的夜里

我会告别 告别我本身

因为我不知道 我也不想知道

和相聚之间的距离

在每个银河坠入山谷的梦里

我会醒来 也忘记梦境

因为你不知道 你也不会知道

逝去的就已经失去来源

 

继续阅读[视频]邓紫棋《后会无期》同名主题歌