LMLPHP后院

使用命令行修改当前gnome终端的名称技术

maybe yes 发表于 2015-11-02 10:50

使用 Gnome 主题,用的 ArchLinux,用了这么久,痛过痒过。

终于知道怎么修改终端的标题了,不然总是不知道这个 Terminal 是干什么用了,如果是 Windows dos 的环境,直接 title 命令就可以了。虽然不懂这条命令的含义,如下命令方式:

echo -en "\033]0;New Terminal Name\a"

gnome 主题的输入法都是够折腾的,每次切换应用后,默认总是中文,为什么不能记住呢?

路在脚下...

路还很长...

Laravel框架之Migration使用教程技术

maybe yes 发表于 2015-10-29 10:53

提到 Laravel, 像我前面说的,商业气息太浓,其本身用了 Composer 的加载和 Symfony 框架的库和大量的第三方的库,这样综合性太强的软件系统性能是不会很高也不会很稳定的。说起 Artisan,也只能如我前面说的: 它实现了对象的 ArrayAccess 接口,使用了 Closure,使得其代码看起来有点艺术,但是遗憾的是, PHP 本身的代码风格就是不太优雅的,纵使这样,让人感觉有很多的奇怪。Laravel 内部使用了依赖注入的 Service 架构反而增加的开发的成本,并且使用 Composer 的自动加载就是很麻烦的一件事情,如果 PHP 都这样玩了还不如直接用 Java。但是现实是,很多企业都选择了它。

PHP简写三目运算符实现二选一技术

maybe yes 发表于 2015-09-21 00:08

写过 PHP 的人应该都知道,PHP 中的逻辑运算符与或非计算后返回的值都是布尔值 true 或 false。而在其他的语言中,比如 JavaScript 和 Python 中,或运算(||) 会返回两者中的一个,是二选一。由于习惯了 JavaScript 的那种或运算的写法,导致一次我在将 Python 业务代码移植到 PHP 中时写出了一个 BUG。

看下面的 JavaScript 代码:


var name = obj.name || 'Anonymous';
var callback = obj.callbackFunc || function(){};

在 JS 中,上面的写法非常常见。它和 Python 一样,或运算返回的是二选一。如果要在 PHP 中实现二选一,是不可以那样写的。很久以前也看到过三目运算的简写,之后再也没见到过那种写法,真的太少见,最近一次看到,让我觉得有点陌生。

VI编辑文件忘记SUDO不退出如何保存技术

maybe yes 发表于 2015-09-17 18:08

在 VI 模式下,当编辑的文件权限不属于当前用户,或者编辑系统文件时,如何获取 SUDO 权限?如何在提示因为权限问题而无法保存时并且不退出编辑器的情况下保存当前文件?当忘记 SUDO 时,如果退出重新再 SUDO 编辑会比较麻烦,比较简单的解决方式如下。

is read-only (add ! to override)

Can't open linked file for writing

使用 ! 执行外部 Shell 命令。如下所示:

:w !sudo tee % > /dev/null

简写模式,但不建议这样做。

:w !sudo tee %

PHP 5.5 新特性 ::class 获取类名字符串技术

maybe yes 发表于 2015-08-26 18:37

看 Laravel 的源代码,之前在 Provider 里面是直接用字符串来配置需要的服务,新版本之后,代码发生了一些变化,使用的是类名加双冒号加关键词 class 来配置需要的服务。

Laravel 更新太快,要求的版本是 PHP5.5.9 以上,但是商业气息太浓,性能太低。不得不感叹,真是一用 Laravel,就像是女星嫁入豪门从此深似海。

使用 var_dump() 打印 类名::class,得到的是类名的完全限定名称字符串,包含命名空间。

>= 5.5

::class
fully qualified class name, instead of get_class

<?php
namespace my\library\mvc;

class Dispatcher {}

print Dispatcher::class; // FQN == my\library\mvc\Dispatcher

$disp = new Dispatcher;

print $disp::class; // parse error
2024-04-28 19:44:51 1714304691 0.006012