wuhuaji | blog

wuhuaji | blog

写一点有用的代码

跨域响应头总结
在 如何跨域 这篇博文中,记录了跨域的基本概念、JSONP的原理、还有CROS的概念。但这篇博文相对简单,对于CROS只提到了Access-Control-Allow-Origin响应头,其实对于跨域还有更多的响应头,这里复习一下。 Access-Control-Allow-Origin首先记录还是这个Access-Control-Allow-Origin,这个响应头表明服务器允许跨域访问的域名,只有设置了这个头,跨域时响应才不会被浏览器拦截。这是万里长征第一步。 Access-Control-Allow-Credentials直接引用mdn的解释: 响应头表示是否可以将对请求的响应暴...
系统编程:信号(1)
这篇博文只是记录我信号的一点笔记,并不详细也不权威,建议阅读《Linux/Unix系统编程手册》 下一篇:系统编程:信号(2) 信号是操作系统中一个重要的概念:是指某些事件发生时,对于进程的通知机制,也叫软件中断。 上面的解释似乎还不够具体,举两个例子: 在shell中,运行一个耗时任务,如果我们想中途停止,那么我们可能习惯性的按下 Ctrl + C,任务就会停止。这里按下 Ctrl + C 后,内核就会给当前进程发送一个信号:SIGINT(终端中断信号),进程接受到就会停止运行。 同样的,有时候我们可能会用kill这个命令来杀死一个进程,也就是:kill 进程号,进程就能停止了。原...
编译安装PHP
如果要安装PHP,一般来说是直接下载已经编译好的二进制文件,在PHP文档中有各个平台的安装指导。但是如果想认真研究一下PHP,自己手动编译安装一下,显然是很有必要的。 下载源码PHP源码可以在GitHub上找到,直接克隆下来即可,也可借此机会一窥PHP的源码结构。 1git clone git@github.com:php/php-src.git 默认的master分支似乎是在开发 PHP 8 ,我们可以切换到一个稳定分支,比如:git checkout PHP-7.1.29 编译源码下载之后,就可根据文档的指示开始编译PHP了。其实PHP就是一个由C语言编写的程序,如果熟悉...
全局配置gitignore
今天才知道 Git 可以设置全局的 gitignore, 通过全局设置gitignore ,可以省去很多重复配置。比如: 编辑器生成的配置文件 .idea/ .vscode 系统生成的无关文件 .DS_Store vim缓存文件:xxx.swp 各种日志文件 等等。完全可以设置在全局 gitignore 中。 首先确认一下是否已有全局 gitignore:git config --get core.excludesfile 这个命令查询是否配置有全局gitignore,如果已配置有,则能看到文件路径 如果没有,则可以创建:git config --global core.exclud...
HTTP之:Host字段和虚拟主机
一转眼两个多月没有写博客了,还是要把写博客的习惯捡起来,今天就写一点简单的,复习一下Host字段。 HTTP请求头中一般有一个Host字段,可能很多人对这个字段习以为常,并不觉得有什么作用。 我们知道,浏览器会查询域名的DNS,从而就能找到域名背后的服务器ip地址,将请求发往这个ip地址,再从这里接收响应,一次简单的请求就算完成了。 但是这里有一个问题,如果这个服务器托管的不只是一个网站,而是成千上万个网站呢?浏览器的请求发过来,服务器怎么知道你要访问的究竟是哪一个网站呢?这就需要通过Host字段来标识了。 大致过程如下:1,服务器软件(Web Server)通过配置,给各个域名分别配...
一些HTTP调试工具和技巧
今天有些时间,总结一下平常HTTP调试的一些思路、工具和技巧。不够系统,经验之谈。 浏览器网络调试工具一般来说只要不是什么疑难杂症,都可以通过浏览器的网络调试工具调出来。观察状态码/请求头/响应头/响应内容等这些信息,大部分问题就能找到。这也是比较基础的一步,网上教程铺天盖地,不再细说。 Curl在很多时候,发出去的HTTP请求怎么也得不到预期的结果。比如刚才还好好的,怎么现在就不行了?又或者明明我这里可以,你那里就是不行呢?对于这些问题,如果浏览器网络调试不能直观得到解决,我通常使用curl来调试。 首先分别将正常的请求,和异常的请求,都复制成Curl,如下图: 复制出来的内容是这样的...
为什么说PHP不支持Unicode编码
经常看到有说法:PHP不支持Unicode,或者说PHP在底层不支持Unicode。虽然我知道PHP编码很蛋疼,各种字符串处理函数非常不规范,但也还能显示中文,一直没弄明白这个不支持Unicode是什么意思。花了一些时间来梳理这方面的信息。 先从一个例子来引入:一个PHP脚本如下,假设文件的编码是UTF-8: 1234//文件编码UTF-8echo strlen("中文"); // 6echo substr("中文",0,1) // 乱码echo substr("中文",0,3) // 中 很奇怪吧,从上面看,似乎把一个汉字当成了3个字符。这就要从PHP对于字符串的存储上说起了。 我总结...
如何跨域
跨域是个大问题 最近工作中经常需要在前端调用接口,则时常会碰到跨域的问题,积累一些思考,总结一下。另外也深刻感觉到,如果一个东西,不自己实践一下,仅看书是很难理解透彻的。 首先跨域就要区分什么是域。这个很容易理解,不再赘述,无非就是协议、域名、端口等都要一致。 而跨域就是在不同的域之间数据的通信。而且需要注意的是,跨域只发生在前端,后端是没有跨域这一说的。 比如a.com 中,想要获取b.com的内容,这个时候通常就是a.com中通过js发起一个http请求(也就是Ajax),去请求b.com的数据。 这样: 12345678<script>var xml = ne...
get-in-trouble-with-wechat-app-canvas
这是2018/3月记录的文章,但如今微信小程序进化很快,我也没有继续太关注这块内容,可能我写的这些有点过时,仅供参考 最近在公司做一个小程序的项目,要说小程序和传统前端开发很类似,而且和Vue很像,都是数据来驱动视图,没有DOM操作,概念上并不难接受(特别是有Vue/React等开发经验下)。 我所做的应用,有一个需求:需要画图表,也就是涉及到canvas这部分内容。实践下来踩坑不少,浪费了不少时间!记录一下。 主要坑点: 没有很好的图表库支持因为小程序和传统Web开发不一样(主要是没有了DOM操作),所以在Web上大名鼎鼎的图标库如:highcharts,echarts 并不能直接使用...
新博客
最近在稍微系统学习一下Laravel,作为练手项目,这个博客就这么诞生了。我将项目取名为yab,也就是学习鸟哥的取名:yet another blog:)。 当然这并不是初衷,初衷是我希望有一个自己的持续练手的项目,用来尝试各种新技术/新特性。之前用hexo,更早之前用WordPress,总是感觉不尽人意,不是自己写的代码,没有那种掌控自如的感觉,想着自己写一个。 就像ququ前辈一样,在自己博客上面实践各种HTTP特性,我相当佩服。所以,不瞒你说,现在看到的这个网站,有严重的“借鉴”屈屈前辈之嫌,这一点从界面上都能清楚看出来(虽然代码是自己写的)。 这个域名什么含义?webkit.cc...
avatar
吴化吉