boke-comments's People
boke-comments's Issues
PHP 初探SPL(四) 函数 | ycgambo の blog
http://www.notee.cc/PHP/extension_SPLFunction/
SPL定义了一些迭代器相关和自动加载相关的函数。 目录: class_implements class_parents class_uses iterator_apply iterator_count iterator_to_array spl_autoload_call spl_autoload_extensions spl_autoload_functions spl_autoload_r
迷宫生成 | ycgambo の blog
http://www.notee.cc/JavaScript/p5_maze/
.p5Canvas{margin: 0 auto;display: block !important;}
PHP 初探SPL(一) 数据结构 | ycgambo の blog
http://www.notee.cc/PHP/extension_SPLDataStructure/
The Standard PHP Library (SPL) is a collection of interfaces and classes that are meant to solve common problems. SPL(PHP标准库)是为解决通用问题的一组接口和类的集合。具体来说它提供了以下功能: 标准数据结构 迭代器以遍历对象 接口、标准异常、类以支持文件操作 一组像spl
PHP 文件遍历和获取扩展名 | ycgambo の blog
http://www.notee.cc/PHP/syntax_folderWalkerAndFileExtension/
昨天去面试,有两道考察PHP文件操作的笔试题: 遍历文件 写出五种以上获取文件扩展名的方法 这里提供3种遍历方法和10种获取扩展名方法。 目录: 遍历文件 scandir opendir RecursiveDirectoryIterator 获取扩展名 字符串操作 正则操作 数组操作 文件操作
PHP代码的一生(六)Lex和Tokenizing | ycgambo の blog
http://www.notee.cc/PHP/engine_general_lifetime_of_php_code_6/
认识了那么多的ZEND_AST_XXX,他们是如何和Token、和PHP的关键字关联起来的呢? PHP的token_get_all函数可以打印出PHP语法解析的结果,但是怎么拿来分析呢? 在上一篇Bison的基础上,来看看Zend是怎么分析PHP语法的。 目录: Zend的Bison文件 C declarations Bison declarations Grammar rules yy
PHP 时间与时区你用对了吗? | ycgambo の blog
http://www.notee.cc/PHP/syntax_time_and_timezone/
PHP的默认时区是UTC,可以通过date_default_timezone_set函数来改变默认时区,但你知道究竟哪些函数是基于时区的吗? 如果没有理清这一点,可能就会出现“我明明设置了时区,为什么程序好像还是没把时区改过来啊”这样的尴尬场面了。 目录: time date strtotime DateTime/TimeInterval/DateTimeZone Carbon
PHP 正则操作笔记 | ycgambo の blog
http://www.notee.cc/PHP/syntax_preg/
PCRE(Perl Compatible Regular Expressions)提供了一套用于字符串正则操作的函数,记录一些需要注意的点: 目录: 多个匹配的替换顺序 匹配数组键名 匹配反斜线 选项的穿透性 子组序号的计算 相对后向引用
理解Laravel框架运行机制 | ycgambo の blog
http://www.notee.cc/Laravel/understanding_laravel_lifetime/
刚开始学习这个框架的时候,看文档绕的我半死,主要是文档基本在阐述如何使用,而没有过多讲解功能是如何实现的。 文档所灌输的一对概念对初学者并不友好,更适合做入门之后的参考资料, 框架的入口文件(public/index.php)是我目前见过的最简洁但却最逻辑分明的,暂且跟着程序逻辑,一点点解开Laravel的核心概念。 这篇文章会尽量侧重于解释名词和原理,如果你刚了解Laravel,大可不必担心。
PHP 你跟我说左手代码右手诗? | ycgambo の blog
http://www.notee.cc/PHP/syntax_CleanItUp/
今天逛Laruence的博客,看到一篇博文: 点了一下点这里,浏览器下载了一个文件,打开是一份相同的代码: 1<?php /* @author: laruence<laruence.yahoo.com.cn> */ $___="00001000000900000900007400011700011500011600003200007900011000010100003200
PHP 观察者模式+工厂模式组合应用 | ycgambo の blog
http://www.notee.cc/PHP/designPattern_observerPlusFactory/
工厂模式把类的创建者和创建的类分离开来,负责产生正确的被观察对象,然后控制器将观察者绑定在需要被观察的对象上。采用这种组合的好处是类间的关系十分松散,可以灵活应对需求的变更: 需求功能的增减(如增加某个日志、增加某些监管) 需求类型的增减(如扩展某种类、新增一些类) 按照接口编程,控制器需要改动的代码很少 目录: 定义抽象request类型 定义观察者和被观察者类型 扩展request为h
PHP 初探SPL(三) 接口 | ycgambo の blog
http://www.notee.cc/PHP/extension_SPLInterface/
SPL定义了一些接口,主要用于扩展迭代器。 目录: Countable RecursiveIterator OuterIterator SeekableIterator
PHP 初探SPL(二) 迭代器 | ycgambo の blog
Markdown 博文头部Snippet分享 | ycgambo の blog
http://www.notee.cc/Markdown/blog_headSnippet/
我的通用博客头部Snippet,实现了博文摘要、目录、转载链接等功能,利用Snippet工具就能很简单的创建文章开头。 目录: 格式 应用 例子
PHP代码的一生(五)YACC和AST | ycgambo の blog
http://www.notee.cc/PHP/engine_general_lifetime_of_php_code_5/
AST(Abstract Syntax Tree)是Zend编译PHP代码的基础,那么CG(ast)究竟是怎么来的呢? 20世纪70年代的YACC(Yet Another Compiler-Compiler)和Lex(A Lexical Analyzer Generator)被Zend Engine所使用,PHP的语法分析也就站在了它的肩膀上。 目录: AST YACC Bison Le
PHP 细数自动加载 | ycgambo の blog
http://www.notee.cc/PHP/syntax_autoloadCountOff/
autoload将我们从require的痛苦中解放出来,简单的autoload是如何一步步构建起庞大的应用的呢?Composer作为PHP的一款优秀的依赖管理工具,又是如何进行自动加载的呢?本文以YII2下的Composer为例,解析Composer生成的自动加载代码,一起来看看Composer的autoload艺术吧。 目录: __autoload 设置自动加载的搜索路径 spl_auto
“在吗” | ycgambo の blog
http://www.notee.cc/Essay/feeling_areYouOnLine/
”在吗“的三次握手: 有朋友周一问:“在吗?” 我周一晚上答:“在的,怎么啦?” 他周二早上说:“刚看到,现在在吗,问你个事情。” 我周二晚上答:“在的,你问吧。” 他周三下午说:“还在不?” 我周三晚上答:“在在,我一般晚上上QQ,你有事情时候我不在线,你就直接留言,我看到就回复。” 他周四上午说:“好吧,就是想问问,上次见你时候的口红是什么色号来着?” 作者:服装摆渡人 链接:https:/
PHP代码的一生(四)zend_execute | ycgambo の blog
http://www.notee.cc/PHP/engine_general_lifetime_of_php_code_4/
有了op_array,接下来就是zend引擎的执行阶段了。 目录: zend_execute_data zend_vm_stack_push_call_frame i_init_execute_data zend_execute_ex
VBS 探索U盘 | ycgambo の blog
http://www.notee.cc/VB/vbs_copyFileFromUDisk/
如果存在多个可移动磁盘,通过该脚本可以迅速拷贝目标文件,并分析磁盘结构。 目录: 参数说明 源代码
善恶游戏 | ycgambo の blog
https://www.notee.cc/JavaScript/p5_evil/
游戏规则: 每一回合,你需要在不知道对方出招的情况下,选择合作或者** 合作方拿出3分,**方拿出2分,作为成本; 双方都选择合作时,双方均能收回成本,并获取收益; **方的成本无法产生收益,但可以掠夺对方的成本作为收益。 双方合作,各加3分,成本获利率100%; 某方**,合作方减3分,**方加3分,成本获利率150%; 互相**,分数高者加1分,分数低者减3分,分数相同时各减1分 每回合结束
PHP 字符串递增运算 | ycgambo の blog
http://www.notee.cc/PHP/syntax_stringIncreasement/
这段代码输出1到9之间的数字: 123for($i = 1; $i <= 9; $i++) { echo $i;} 那么这段代码输出什么? 123for($i = 'a'; $i <= 'z'; $i++) { echo $i;} 虽然PHP是C写的,但如果你认为会像C语言一样,输出a到z之间的字符,那可就走远了。
PHP代码的一生(五)AST和YACC | ycgambo の blog
http://www.notee.cc/PHP/engine_general_lifetime_of_php_code_5/
AST(Abstract Syntax Tree)贯穿于PHP代码的编译阶段,在zend_compile中曾有这么一行zend_compile_top_stmt(CG(ast));,这个CG(ast)究竟是怎么来的呢? 20世纪70年代的YACC(Yet Another Compiler-Compiler)被Zend Engine所使用,PHP的语法分析也就站在了它的肩膀上。 目录: AST Y
PHP代码的一生(三)zend_compile | ycgambo の blog
http://www.notee.cc/PHP/engine_general_lifetime_of_php_code_3/
PHP代码被读取后,来到了zend_complie阶段。在经过一系列的语法分析后,最终产生一个包含树状zend_op的op_array。 目录: 递归AST抽象语法树,生成op_array 为op_array设置跳转,compile-time切换到run-time
ZooKeeper分布式配置踩坑记 | ycgambo の blog
http://www.notee.cc/Ops/deployment_zookeeper/
ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. ZooKeeper是一个集中式服务。它可以维护配置信息、支持命名空间、提供分布式同步和
PHP 记一次代码更新无效的奇怪问题 | ycgambo の blog
http://www.notee.cc/PHP/code_update_not_work/
昨天碰到个PHP代码不更新奇怪的问题:原文件a.php直接修改不生效,复制到b.php并修改nginx路由即可修改。 最终重启了fpm,修改才可以生效,问题很奇怪,没有找到原因,记录一下。 目录: 问题详情 Nginx FPM
PHP代码的一生(一)从php-cli说起 | ycgambo の blog
http://www.notee.cc/PHP/engine_general_lifetime_of_php_code_1/
PHP编译过后,生成了一个sapi目录,先看一下其中的cli命令行模式。 在cli目录下有一个php-cli.c文件,main函数程序入口就在其中。 目录: PHP模块的启动,php_module_startup和php_request_startup 执行代码入口,php_execute_script 转交给Zend引擎,zend_execute_scripts,opcode浮现 opcode
PHP 定义可配置的类常量 | ycgambo の blog
http://www.notee.cc/PHP/syntax_configurable_const/
应用场景是运营频繁修改下单满多少包邮、哪些用户下单可以不限量等。 代码中,这些属性被定义为类的常量,每次都去修改代码是比较难受的,但是语法上又不允许定义类常量为表达式。 一个小技巧是通过类自动加载时定义一个全局常量,然后利用全局常量做媒介: 123456789<?phpnamespace App\Models;define('POSTAGE_FREE_SHIPMENT_ORDER_AMOUN
Beyond This Blog | ycgambo の blog
站点概览长了之后,有点丑,所以把里面的一些内容迁移到这里来。 我的信息我的博客托管在GitHub Pages上,主题、博文也在Git上备份:https://github.com/ycgambo 可以通过邮件联系我:mailto:[email protected] 我喜欢听歌: 站点推荐3v4l(eval)是一个PHP在线测试站点,可以比较代码在各个版本的输出、性能等:https://3v
记第一次压测 | ycgambo の blog
http://www.notee.cc/Ops/testing_ab/
ab(apache bench)是Apache超文本传输协议(HTTP)的性能测试工具。其设计意图是描绘当前所安装的Apache的执行性能,主要显示所安装的Apache每秒可以处理多少个请求。 它不仅可以对apache服务器进行网站访问压力测试,也可以对其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。 此次测试使用的机器为: Mac下2G内存双CPU虚拟机 CentOS
PHP 初探SPL(五) 文件 | ycgambo の blog
http://www.notee.cc/PHP/extension_SPLFileHandling/
SPL还提供了一些文件操作的类。 目录: SplFileInfo SplFileObject + SplTempFileObject
ssh加载同一域名下的不同密钥 | ycgambo の blog
http://www.notee.cc/Ops/common_sshManagement/
在使用GitHub时,我建了多个仓库,提交不同的仓库时需要手动切换密钥,容易出错。经过几次测试,实现了自动切换,有利于脚本化操作。文中贴出了我的ssh配置文件,大家可以参考一下。 目录: 密钥对命名要合理 利用config文件选择相应密钥
PHP 为什么crypt($p, $s)等于crypt($p,crypt($p, $s)) | ycgambo の blog
http://www.notee.cc/PHP/engine_why_cryptpass-equals-cryptpass-cryptpass/
1234$pass = 123;$salt = '$2a$10$mpthXeDXOjMPgl3uTDMSxeF69N8Rr2LcZnFoiERMH6RZlPAFP2tva';echo crypt($pass,$salt).PHP_EOL;echo crypt($pass,crypt($pass, $salt)).PHP_EOL; 运行后输出: 12$2a$10$mpthXeDXOjMPgl3uTD
不忘初心 方得始终 | ycgambo の blog
http://www.notee.cc/Essay/feeling_beMyself/
初入社会,我决定去百度一下这四个字:大学生初入社会应该注意什么?-知乎、初入社会,告诉你一个真实的职场–职场经验血泪分享、年轻人,初入社会不要自视甚高。又决定去Google一下newbie in the office:How to Be the Office Newbie、The Office Newbie’s Survival Guide: Surviving Day #1、3 Surprisi
PHP代码的一生(六)MINT和RINT | ycgambo の blog
http://www.notee.cc/PHP/engine_general_lifetime_of_php_code_6/
Learning the PHP lifecycle 目录:
PHP代码的一生(七)VLD和OpCodes | ycgambo の blog
http://www.notee.cc/PHP/engine_general_lifetime_of_php_code_7/
Tokenizing中说了怎么分析Token,这里简单说说怎么借助VLD扩展分析Opcode。 VLD比较适合分析语法上的小点,分析业务逻辑时建议使用BlackFire等工具。 目录: 一个简单的例子 验证一个语法点 定位OpCode的执行代码
Laravel的一些使用感受 | ycgambo の blog
http://www.notee.cc/PHP/framework_laravel_my_opinion/
用了半年多的Laravel框架,不说怎么使用,说下使用体验吧,希望能帮助到一些刚接触这个框架的人。 目录: 常见PHP框架的发展趋势 Laravel的定位 功能比较全面的框架 门槛比较高的全栈框架 开发速度很快 大家都说它运行比较慢 它的社区
给PHP初学者的一些建议 | ycgambo の blog
http://www.notee.cc/PHP/suggestion_for_starters/
很多人喜欢调侃“PHP是世界上最好的语言”,现在就让我们站在学习者的角度,严肃讨论一下这个问题。 希望通过这篇文章,你可以清楚了解到: 它所解决的问题是什么? 它的局限是什么? 它是否是一个适合你的语言? 目录: PHP是什么 PHP是跨平台的 PHP是脚本语言 PHP投入成本低 PHP可以做很多 不要对它渴望太多 PHP的天花板 如何学习PHP
PHP 观察者模式与发布订阅模式 | ycgambo の blog
http://www.notee.cc/PHP/designPattern_observerVsPublishSubscribe/
观察者模式定义了对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新。 发布订阅模式实现了相同的功能,所以很多人认为观察者模式和发布订阅模式是一种A和A的别名的关系,其实不然: 观察者模式 被观察者中注册了许多观察者,因此被观察者需要关心有哪些观察者需要注册 观察者拥有被观察者的引用,因此观察者可以读取、检测甚至更改被观察者的状态 发布订阅
PHP 赋值运算的返回值 | ycgambo の blog
http://www.notee.cc/PHP/syntax_returnOfAssignment/
考虑这段代码的输出: 123456function test(& $p) { $p = 1;}test($a = 0);echo $a; 返回值并不是左值!而是一个中间变量!因此输出为0。 此外,实际得到的$p其实并不是引用。
转 给创业公司的技术合伙人们一些人生忠告 | ycgambo の blog
http://www.notee.cc/Forward/FengDaHui_suggestions_for_tech_partner/
转自《给创业公司的技术合伙人们一些人生忠告》
迷宫寻路 | ycgambo の blog
https://www.notee.cc/JavaScript/p5_aStar/
利用p5.js演示A Star算法迷宫寻路。
PHP 单例模式 | ycgambo の blog
http://www.notee.cc/PHP/designPattern_singleton/
单例最重要的方面在于对创建实例的限制能力。如果不这样做,潜在的多个实例将被创建,因而造成严重破坏 如果在实例化时将类保存在全局变量,那么迟早会发生冲突。单例模式是一种对于全局变量的改进,可以保证全局只有一个单例类。 目录: 一个简单的单例类 解决代码复用的问题 使用Traits 使用继承 解决复用类的问题 对隐藏依赖的解释
PHP Zend脚本执行总结 | ycgambo の blog
http://www.notee.cc/PHP/engine_how_php_compile_works/
这篇文章是对zend_execute_scripts阶段的总结,包括了PHP代码的分析、编译、执行。客串了OpCache是如何加速这一过程的。 目录: zend_execute_scripts zendparse zend_compile zend_execute OpCache
Hi from p5.js | ycgambo の blog
http://www.notee.cc/JavaScript/p5_hi/
.p5Canvas{margin: 0 auto;display: block !important;} function sketch(
PHP FPM和CLI模式对比 | ycgambo の blog
http://www.notee.cc/PHP/engine_cli_and_fpm/
理解了CLI的运行模式之后,FPM就比较好理顺了,FPM相对于CLI多了一部分进程管理的工作。 目录: fpm
PHP 为什么isset总比array_key_exists快? | ycgambo の blog
http://www.notee.cc/PHP/engine_why_isset_is_always_faster_than_array_key_exists/
这个问题困扰了我一年多,一直没有找到满意的答案 比较靠谱的一个版本是栈溢出上一个回答中提到的List of Big-O for PHP functions isset/array_key_exists is much faster than in_array and array_searc array_key_exists O(n) but really close to O(1) - th
PHP代码的一生(二)一些结构体 | ycgambo の blog
http://www.notee.cc/PHP/engine_general_lifetime_of_php_code_2/
zend_op_array中保存了一个opcode数组,它是后续zend引擎执行php代码的媒介。 SG、CG和EG这些相对于环境的全局变量宏也在程序中大量使用。 目录: zend_op和zend_op_array SG和_sapi_globals_struct CG和_zend_compiler_globals EG和_zend_executor_globals
PHP代码的一生(六)Tokenizing | ycgambo の blog
http://www.notee.cc/PHP/engine_general_lifetime_of_php_code_6/
认识了那么多的ZEND_AST_x,他们是如何在Tokenizing中发挥作用的呢? PHP的token_get_all函数可以打印出PHP语法解析的结果,但是怎么拿来分析呢? 在上一篇Bison的基础上,我们来看看Zend是怎么分析PHP语法的,答案自然就有了。 目录: Zend的Bison文件 C declarations Bison declarations Grammar rules A
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.