Inspirer

推荐阅读

laravel 学习笔记 —— 数据和模型起步篇

来自于分类 笔记

自上一篇 《laravel 学习笔记 —— 神奇的服务容器》 已经有一年了,很多人都问过关于数据库部分的文章什么时候出来。其实不是不想写,而是没法写,因为当时大部分特性都没用到,以至于我无法以笔记形式给出。经过一年时间,laravel 已被我运用在很多类型的项目里,或多或少也对数据库组件了解的比较完整了,是时候完善学习笔记序列重要的环节之一 —— 数据库 部分。

Laravel 有三宝,路由、容器和 Eloquent ORM,Eloquent ORM 实际上是 Laravel 框架数据库组件的一个部分,也是最为重要和常用的,所以我们在说 Laravel 数据库组件时,往往指的是 Eloquent ORM。当然,数据库篇的文章肯定要全面讲述,这样有助于理解,也能帮助一些在这一块遇到问题的朋友。 数据库组件是一个比较独立的组件,其仅仅

【阅读全文】

最新文章

解决 mount 挂载 windows 共享目录导致出现的内存无法分配问题

原文转载自:http://jlcoady.net/windows/how-to-resolve-mount-error12-cannot-allocate-memory-windows-share 《How to Resolve “mount error(12): Cannot allocate memory” on a Windows Share》

原文的中说的步骤很简单。

  1. Set “HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\LargeSystemCache” to “1″. 即编辑注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\LargeSystemCach 这一项的值,设置为 1

  2. Set “HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Size” to “3″. 编辑注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Size 这一项的值,设置为 3

  3. Restart the “server” service. 重启名为 Server 的服务即可。

推荐书籍——《PHP扩展开发及内核应用》

先说说为什么突然推荐这本书的原因。

由于需要为某一个项目写一个特别的脚本解析器(或者说一个特殊的类似正则引擎的东西),而恰好这个玩意儿需要和 PHP 结合起来。这时候效率又有一定需求,尤其是在解析脚本的时候,其余则没有太多效率要求。

由于其他语言本人不是很拿手,于是打算干脆写个扩展,用 C 写编译器还是蛮合适。但对于用 C 写 PHP 的扩展还是第一次,于是计划好好在近期研究一下这个东西。正恰好在 github 上搜到了相关书目的电子翻译档。原来鸟哥也参与了,于是满怀欣喜,将此书推荐给同样想要开发扩展的朋友。

github 地址:https://github.com/walu/phpbook

直接阅读地址:http://www.walu.cc/phpbook

使用 git subtree 集成项目到子目录

本文转载自 http://aoxuis.me/post/2013-08-06-git-subtree

使用场景

例如,在项目 Game 中有一个子目录 AI。Game 和 AI 分别是一个独立的 git 项目,可以分开维护。为了避免直接复制粘贴代码,我们希望 Game 中的 AI 子目录与 AI 的 git 项目关联,有 3 层意思:

  1. AI 子目录使用 AI 的 git 项目来填充,内容保持一致。
  2. 当 AI 的 git 项目代码有更新,可以拉取更新到 Game 项目的 AI 子目录来。
  3. 反过来,当 Game 项目的 AI 子目录有变更,还可以推送这些变更到 AI 的 git 项目。

用 git subtree 可以轻松满足上面的需求。

无尽的忙碌中

最近忙得不可开交,很多东西想写但总是没时间。毕竟强迫症,质量太差的没脸发出来。各位有什么想说的、尽管在下面留言,我会尽量写一些大家需要的东西~~:joy:

PHP Cli 程序开发

PHP 在大多数人心目中主要是做 web 开发的,但实际上从 PHP 4.2.0 起就开始支持 Server Application Programming Interface 即服务端应用编程接口,也称其为 Command Line Interface,也就是我们常说的 CLI。这使得 PHP 开发外壳应用(Shell)变为可能。其实这个功能自 PHP 5 起变得越来越易用,这对于 PHP 应用于更多情景变得可能,比如多进程爬虫、服务端守护进程、自动化部署工具等等,我们如今使用的 composer 就是典型的 PHP CLI 程序。

本文主要内容就是围绕 PHP CLI (下文简称 CLI) 进行讲述,并分享一个十分强大且易用的 symfony 组件 —— console (命令行)组件。

PHP 知识补全 —— 生成器 (generator)和协程的实现

先说一些废话

PHP 5.5 以来,新的诸多特性又一次令 PHP 焕发新的光彩,虽然在本文写的时候已是 PHP 7 alpha 2 发布后的一段时间,但此时国内依旧是 php 5.3 的天下。不过我认为新的特性迟早会因为旧的版本的逐渐消失而变得越发重要,尤其是 PHP 7 的正式版出来后,因此本文的目的就是为了在这之前,帮助一些 PHPer 了解一些他们从没有了解的东西。所以打算将以本篇作为博客中 PHP 知识补全 系列文章的开篇。

其实在写本文之前,我对生成器以及基于此特性延伸出来的 php 的协程实现并没有比较直观的了解,主要是我个人水平并不是很高,属于典型的刚入了门的 PHPer。所以在看了前段时间鸟哥(laruence)博客中对协程的讲解(原文链接:《在PHP中使用协程实现多任务调度》)后,在我个人对本篇的理解上,针对那些比较难以理解的概念(包括我个人在理解这一概念的时候的难点),以一个更为通俗的方式去讲明白。当然由于本人也是刚刚去学习这一概念,所以有些不得当的地方在所难免,希望大神看见了请不吝赐教。

雨季,总是那么多事儿

连绵不断的雨真身令人神伤,虽然我知道雨停了更难受(重庆的夏天都知道不是人过的)。但更令人烦心的是,屋漏偏逢连夜雨。在这个难得一遇的多事儿的日子里,实在是难以心平静和的总结一些文章。希望大家能够理解。我打算在这段时间内调整一下心态,去准备做一些好玩儿的事儿来让个人更有动力去记录些技术类的东西。

既然准备要做事儿,还是需要一个计划,因此这段时间除了解决一堆闹心事儿,还要在闲暇之余罗列一下后面的规划。

先透露一下想法:

  • 首先,打算对该博客结构进行部分重构(在写这个博客程序时,我对 laravel 这个框架可谓是完全不懂,水平也很菜,所以程序毫无章法),因为学习了更多有意思的东西,打算学以致用。

  • 此外,打算建立另外一个技术知识分享的站点,不过这个技术知识分享站点和现有的如技术知识问答网站 Stack OverflowSegmentFault 或者 维基百科 这种百科类的站点有所不同,这个知识分享网站更注重于 资料的有效性,同时做到尽可能保证 资料的权威性。因此需要花一些时间去理清设计思路。

  • 当然还有一个基于 swoole 创建的一个小框架,该框架不是现在的框架的改动或者优化,甚至没什么太多交集,如果了解 swoole 也会知道我要做的肯定不是为了反复造轮子,我更希望基于 swoole,让大家可以凭借十分易用的 PHP 写出优秀的后端程序,而不再花费大量精力去使用 c/c++ 去写一些后端的 Socket server。该框架将在近期拿出一个粗糙的版本,到时候会在本文给出对应的 git 版本库地址。

当然这么多事在短期内全部做好肯定不现实,慢工出细活嘛。

希望得到大家支持。

Windows 与 linux 之间的文件共享

鄙人不喜欢 linux 系统作为开发环境,毕竟 linux 是一个相对反人类的系统。不过 linux 对于生产环境的友好注定了其拥有丰富的库作为各种组件的依赖支持。在开发测试时,需要使用一些仅能跑在 linux 上的库的确让一个长期在 windows 下工作的人感到十分难过,在没有使用 OSX 环境的情况下,我需要一种简单的解决方案。

实际上,建立虚拟机,共享主机与虚拟机之间的文件不失为一种粗糙的解决方案。在 windows 创建、编辑、修改,同时在虚拟机上测试、运行代码。

那么如何建立两者的连接?

PHP 7 开发版本编译安装

不是稳定版,大家看看就好。不过很多新特性已经可以使用。别问我有具体哪些新特性,我也不知道。想要跟进 PHP 开发进度建议到 github 上去,可以看到每个 commit 的情况。:laughing: PHP -github https://github.com/php/php-src

大多数编译过程和之前版本无太大差异,本人也是从网络上找的资料。可能 php 7 有新的编译参数或者其他被废弃的参数,这个需要参考具体文档。不过我在编译期间没有遇到大问题,也没有想要真正测试。因此,本文仅仅是编译安装而不是用于测试。废话不多说了,开始。