php里面,我曾经也一直认为是2个字节,在学习的过程中,根本没有对字符编码这个玩意进行过了解,在前段时间也看到了其它人说是2个字节,但是使用strlen()或mb_strlen()检查一个汉字所占的大小,是3位!!!

如果这个时候使用substr()或mb_substr()切割汉字的话必定会出现乱码,这个时候你就需要了解到unicode了

      • -

英文字母:

  • 编码: GB2312, 字节数: 1
  • 编码: GBK, 字节数: 1
  • 编码: ISO-8859-1, 字节数: 1
  • 编码: UTF-8, 字节数: 1
  • 编码: UTF-16, 字节数: 4

中文汉字:

  • 编码: GB2312, 字节数: 2
  • 编码: GBK, 字节数: 2
  • 编码: ISO-8859-1, 字节数: 1
  • 编码: UTF-8, 字节数: 3
  • 编码: UTF-16, 字节数: 4
      • -

面试出个字符编码的题完全可以呀,感觉面试难度又提高了一截。

unicode这个业界标准好呀,基本上现在所使用的环境中都存在unicode,把世界上大部分的语言文字整理编码出来,电脑可以更简单的呈现和处理文字,大家不用烦恼自己看到的是乱码而厌烦了,文字以原始的方式显示

最新版本的unicode是2017年6月20号10.0.0

      • -
        参考资料:
  1. http://www.unicode.org
  2. http://www.unicode.org/standard/WhatIsUnicode.html
  3. https://zh.wikipedia.org/wiki/Unicode

正式版v1.2发布,新增掉线重连(服务器挂了那是没有办法的?‍♂️)

注: 需要安装swoole扩展

在公司闲着了好长时间,现在就是没事在找事做,真鸡儿刺激

用了两天搞了这个(抄)?QQ聊天应用

做起来难度不大,利用现有的swoole扩展可以快速构建出一个开袋即食的IM应用,自己所需要做的是相应的逻辑处理与权限管理

我在这里还使用了identicon来做随机头像,想着大家进来还打个鸡毛的账号呀,直接名字搞起,飞机火箭刷起来

ps:不清楚identicon的可以看看identicon wiki

      • -

如果你非要说和QQ一样,我能怎么办,我tm就是抄的QQ #滑稽

聊天室首页

添加可耐的颜表情(●'◡'●)让聊天更具趣味性(我才不是死肥宅)

添加可耐的颜表情(●'◡'●)

还特意为大(hao)佬(shi)们(zhe)人性化的添加了斗图模式,看我是不是很爱你们

斗图莫斯

      • -

这是一个最基础的聊天室程序了,识别性,趣味性,都有具备,具体的怎么开发看你们的了,我把项目地址甩在下面

演示地址: http://chat.flxxyz.com

github: https://github.com/flxxyz/php-chat-websocket

这个星期正好双休,借着下午的时间去电影院看了《二十二》,我其实是非常想爆粗说日本操你妈个逼,但是不行,两国的人民都不会希望战争的再一次洗礼摧残,我只求世界和平。

不知是大家的无知还是无识,现在没有多少人,加我在一起一只手就数的来了,“你们”不想看的话,我来帮你们看吧。

或许我该庆幸正是没有多少人,才有非常不错的观影体验,能够潜下心,细细观看当中的动作,言语。

当时我也不知道是播放到什么时候了,出现了一位老人,老人名叫李爱莲,回想整篇电影,她是现在最乐观,开心的一位老人了。(有兴趣可以去看看纪录片《三十二》,韦绍兰老人也是一位乐观阳光的老人,不幸的是在电影放映前早已抱憾离世)

她讲述她当时的环境与所受到的遭遇,也是说的最清楚的一位,每当讲述到关进“那所房子”的事情,所有的老人都是难以掩饰自己的情绪。

片子是以我们日常的视角来拍摄的老奶奶们,大概是要我们理解,她们就是普普通通的一个老人,和我们的爷爷奶奶爸爸妈妈一样,都是一个在我们身边生活的一个人!虽然她们和我们一样,但是在那个时代,在她们的身上发生了一些不被我们了解的事情。

扒开了她们的伤口,我们看了个究竟,陪着一起她们哭,一起笑。她们一个人受到巨大且沉痛的伤害,还能在世间如此生活,是有多么大的勇气啊,都是勇敢的战士!

在电影院看的时候真的是泪滴就挂在眼睛上打转,几位老人简单的话语,却有着强大的力量,希望老人开心的度过晚年生活,欠你的一声道歉我们后人为你取回。

愿世上再无战争,愿世间再无苦难。

愿世界和平。

      • -

你怎么自己来了?你的孩子呢? —— 李爱莲老人

我宁愿自己死,也不跟你说。 —— 毛银梅老人

这世界真好,吃野东西都要留出这条命来看。 —— 韦绍兰老人

希望中国和日本要一直友好,不要再打仗,会有很多人死去的。 —— 日本友人米田麻衣

我只能选择平静,机器摆在门口,远远的深情的看她们一眼,我觉得这就足够了。 -- 导演郭柯

记录是为了“记住”,不怨才能“不忘”

到当前的 Homestead 目录下,打开 Homestead.yml ,然后你懂的

site: 下,按一下格式添加站点

- map: homestead.app           // 站点域名
  to: /home/vagrant/Code/Laravel/public    //站点目录

有需要的话,可以在 folders: 下,添加共享目录,方便本地编辑,虚拟机实时读取了

- map: E:\Work\virtualBox\homestead\site   // windows用户是用这种路径
  to: /home/vagrant/Code/site              // 开启共享目录之后,虚拟机会存在的目录

拜拜ヾ(•ω•`)o

Vue.component(组件名, {
    template: 模板ID, // 使用script与template标签均可实现
    props: [传递数据参数],
    methods: {
        方法名: function () {}
    }
});

单文件可以参考上篇

我是使用import导入没有问题,用webpack生成的时候,发现用Vue.component()注册会报错,检查发现解决方法,删除new里的components
?

import xyz from './components/head.vue';

使用全局注册组件时,须将new中的components删除

Vue.component('xyz ', require('./components/head.vue'));

new Vue({
    el: '#app'
    //components: { xyz }
})

近期在学习laravel的使用

以前听说过,当时自己不知道为什么对thinkphp着魔,上手停不下,中文文档写的很好让国人理解,我也就是这其中的国人,那个时候thinkphp5还在测试阶段,有点小关注,发现与原来的使用差距有点大,没有继续看了(因为我懒吧?)

使用thinkphp之前,还有段时间学习过CodeIgniter俗称CI,是真的很小巧,小巧到很尴尬的境地,具体

当然,由于它的小巧再实现一些微型项目时,用用还是挺方便的,使用要求也没什么,基本就是上传即可开始使用。

因为我懒,于是就有放弃CI使用thinkphp的历史痕迹了

最近接触了laravel大家说的优雅是有其它的道理的

  1. 使用composer来管理依赖,抛弃手动require
  2. 结合php命令行操作
  3. 清晰有条理的路由管理
  4. 目录命名用意一目了然
  5. Eloquent ORM
  6. 查询构造器
  7. 结合bootstrap做成小demo非常快速(5.4修改源码可以使用bootstrap4相关)
  8. 目前我使用后的特性,还有许多我还没接触到的特性...

就在这些学习的过程中,感觉自己是可以有一定能力开发的

但是!!!深刻的感受到自己的基础知识脆弱不堪,理论体系非常不完善,缺口巨大

如:自己以前文章的内容有一长串字符串的出现,由于其中夹杂着中英文,做出的截取不能使用substr(),而要使用 mb_substr(),但是这里的bug是中文是3个字符(使用的utf-8编码),英文只占1个字符,对中英文混合输入的bug必然是会出现乱码的。

"这是一段abc字符串123大家壕"

使用 strlen() 与 mb_strlen() 结果

echo strlen("这是一段abc字符串123大家壕");
// 输出  36
echo mb_strlen("这是一段abc字符串123大家壕");
// 输出  16

使用 mb_substr() 截取前6个字符

echo mb_substr("这是一段abc字符串123大家壕", 0, 6);

当然你会说,这个没有问题好嘛,substr() 就是把每个字*3了

是的,没有错,但是这一切的前提下,全部是utf-8的编码集

echo mb_substr("这是一段abc字符串123大家壕", 0, 6, "gbk");
// 这是一��

这个小例子的实现让我简单的思考了一下接下来的学习进展,放慢脚步,深入的学习语言现有所带来的特性,充分利用自带功能,何必在自造轮子(我想我造出来的轮子应该是没有自带的好用的)

潜心,静气,思考

--------------------- 分割线 ---------------------------

另外 mb_strcut() 对比 mb_substr() 还是感觉好用点,精确到字节操作

使用laravel5.4提交表单使用的如果是post方法会产生 TokenMismatch 错误

解决方法

在提交表单中添加一个隐藏域,name为_token,值为{{ csrf_token() }}

<input type="hidden" name="_token" value="{{ csrf_token() }}"/>

看到这种提示首先去检查自己的配置信息是否填写正确

step 1

检查根目录下的 .env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root

填写完毕.


stap 2

检查 config 目录下的 database.php

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'laravel'),
    'username' => env('DB_USERNAME', 'root'),
    'password' => env('DB_PASSWORD', 'root'),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'strict' => true,
    'engine' => null,
]

填写上数据库名,用户名,密码


关闭服务,再开启
不成功的话,你需要把配置的缓存清理掉,再开启服务

php artisan config:clear
php artisan serve