一首小诗
寒蝉凄切,对长亭晚,骤雨初歇。都门帐饮无绪,留恋处,兰舟催发。执手相看泪眼,竟无语凝噎。念去去,千里烟波,暮霭沉沉楚天阔。 多情自古伤离别,更那堪,冷落清秋节!今宵酒醒何处?杨柳岸,晓风残月。此去经年,应是良辰好景虚设。便纵有千种风情,更与何人说?
原创
2020年09月06日 10:57
  • 翟码农
  • 前端综合
  • 48
  • 0
  • 0

为了让自己的博客文章有更好的阅读体验,昨晚翟码农给博客文章添加了目录导引。



现主要记录下其思想,本文代码为jQuery框架下的,使用vue框架的,或者给博客园、wordpress博客文章添加目录的,原理都相似,对代码稍稍调整即可。


要实现文章目录索引效果,主要实现以下3个任务:

1.假定博客里标题固定为h3、h4格式,先将这些标题内容获取出来,生成目录。

2.点击目录链接,文章滚动到指定位置。

3.滚动文章,对应目录的链接样式能高亮显示


如果想直接看全部代码的,就直接拉到文章末尾。实现效果,尝试点击本文章里目录或者滚滚文章试试吧。


获取文章标题内容,生成目录

用jQuery实现也很简单,用如下一行代码就可以获取文章里所有用h3和h4格式的标题。

let titles = document.querySelectorAll(".box-content h3,h4");

.box-content是翟码农博客文章div的class,大家根据自己实际情况修改即可。


在文章页面添加好如下div,用来展示目录:

文章大纲


再遍历上面获取的标题,将其塞进上面目录div里。

titles.forEach((element, index) => {
    var linkItem = document.createElement('a');
    linkItem.innerHTML = element.innerHTML;
    linkItem.setAttribute('id', 'anchor_'+index);
    linkItem.setAttribute('class', 'link-index');
    linkItem.href = 'javascript:void(0)';
    indexBoxItem.append(linkItem);
});
原创
2020年09月10日 22:44
  • 翟码农
  • 计算机网络
  • 49
  • 0
  • 0

最近工作中有一些关于swoole的问题解决不了,所以打算系统的学习一下swoole。


刚开始第一步创建服务端和客户端,就遇到客户端程序始终连不上服务端的问题。


起初提示需安装ext-aysnc扩展错误

起初报如下错误:

PHP Fatal error:  Swoole\Client::__construct(): 
please install the ext-async extension, using Swoole\Async\Client in /opt/study/client.php on line 3

这是因为程序创建的客户端,用了异步参数,而且代码是swoole4.4版本的,说是在swoole4.5版本下异步客户端创建方式有调整,具体调整啥,暂且不管了,先就直接用同步参数了。

$client = new Swoole\Client(SWOOLE_SOCK_TCP);


启动服务程序,端口成功处于监听状态

swoole tcp服务端程序如下:

$serv = new Swoole\Server("127.0.0.1", 6400);
$serv->set([
    'work_num' => 2
]);

//监听连接进入事件
$serv->on('Connect', function ($serv, $fd) {
    echo "Client: Connect.\n";
});
原创
2020年09月09日 19:51
  • 翟码农
  • php
  • 32
  • 0
  • 0

昨天在php-7.2.32环境下,编译安装swoole-4.5.3版本的扩展,尝试重新编译php和swoole好几次,都是报undefined symbol: sapi_globals的错误,整体错误信息如下:

Starting php-fpm [08-Sep-2020 22:12:16] NOTICE: 
PHP message: PHP Warning:  PHP Startup: Unable to load dynamic library 'swoole.so' 
(tried: /opt/software/somodules/swoole.so (/opt/software/somodules/swoole.so: undefined symbol: sapi_globals), 
/opt/software/somodules/swoole.so.so 
(/opt/software/somodules/swoole.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
原创
2020年08月25日 00:03
  • 羽由
  • 羽由小说
  • 104
  • 0
  • 0

天色将晚,我出门看了看镜子,忽然感觉是时候要剪个头发了。要说今天与往常有什么不同,不过是晚上将见一个朋友罢了——男的。


暑气阑珊,走在昏黄路灯的街上,呼吸着树林间微风鼓动的气息,仿佛此时此刻才是生活的味道。


理发店离酒店很近,走个七八百米就到了。


门口的白色荧光灯在飞速的转动,我一推开门就朝迎面走来的人说道:“老板,理发多少钱?”

“有38块,也有68块的,看你要剪哪样?”他微笑的回答着我,那笑容看不出一点做作。

“有什么区别么?都是洗剪吹?”

“嗯——没什么区别,只是剪发的人不同”,他继续解释着,“嗯,都是洗剪吹的”。

“嗯,好,那我就剪38块的。”


一说完,人家就招呼一个漂亮的妹子带我洗头去了。


我才躺下,那妹子才刚刚把我头发润湿,就开口问道:“帅哥,看你像第一次来,你是住这附近的么?”

“没有,旅游过来的。”

“北京?”她洗发的动作格外轻柔。

“没有没有,看把你吓得,深圳。”

“深圳是个好城市啊!”


我还没来得及张口,妹子继续笑吟吟的,“哥,你发现没有,你声音好有磁性哦!”

我心里隐隐乐开了花,只是仍然假装不为所动,“有么?”

“真的,我都爱上了。”


沉浸在喜悦里无法自拔,妹子又继续问着我。

“帅哥,我们可以洗脸和肩颈按摩二选一,你要哪个?”

原创
2020年08月14日 22:13
  • 翟码农
  • php
  • 68
  • 0
  • 0

今天写curl请求时,其中一行要指定post请求的参数。


当请求头部Content-Type为application/json时,post请求参数需要json_encode转换一下,否则就用http_build_query转换一下。


当写到如下判断时,才想到自己对false>=0的情况有点疑惑:

if(strpos(trim(strtolower($header['Content-Type'])), 'application/json') >= 0){
curl_init($ch, CURLOPT_POSTFIELDS, json_encode($post_data) );
}


当下立马去求证了一下:

false>=0的结果为真

所以上面代码判断方式不妥,后面直接改成0 === strpos()这种方式了。


原创
2020年08月10日 00:08
  • 翟码农
  • 每天一首诗
  • 67
  • 0
  • 0
<
原创
2020年08月07日 22:11
  • 翟码农
  • php
  • 68
  • 0
  • 0

最近项目中用的是神通数据库。


一开始用这个数据库时,给表添加列,列名总是小写自动变大写,恼火得很。折腾了好久,后来才搞清楚sql语句里要在列名两边加双引号。


经过上面那一茬,对这数据库就没什么好印象了。


这次因为某些业务拓展,需要给表新增字段。


表里是新增成功了,可是yii里却始终保存不了数据,就是下面这行代码对新加的列不奏效:

$model->setAttributes($params, false);


打日志,$params里是有提交的新加列的数据。

追踪溯源,通过$model->attributes()发现里面并不包含新加的列对应的属性。


可问题出在哪儿呢?我直接就怀疑是神通数据库的问题。


神通数据库提供好几个工具,怀疑是不是自己直接通过sql语句加的,不能够影响到像mysql里information schema里的columns表。


然后只看到schema库,一张张表打开也没看到column信息存在哪里。


把表换个名字,再一同修改Model类里的表名,就OK了。可是我不要这样子无缘无故的修改表名啊。(其它服务器也有部署,随意修改只会给自己另外增加同步的工作)


实在没辙,就搁置了。


回来在网上搜到这个:

原创
2020年08月03日 23:52
  • 翟码农
  • Linux
  • 83
  • 0
  • 0

前些天常常加班,阿里云服务器过期了,博客一直还没来得及迁移。


昨天才开始重新部署环境,centos版本、php版本、mysql版本都有更换,安装过程坑太多了,这就是IT工作的劣势,技术经验如果不跟上更新步伐,经验就不再是经验了。


下面就开始详细描述踩的哪些坑。


新服务器系统环境(用cat /etc/redhat-release命令查看):

CentOS Linux release 8.1.1911 (Core)


1.安装Nginx

centos8支持yum安装nginx,所以nginx安装很方便,没啥坑。

yum -y install nginx


2. 安装php-fpm

php-fpm是管理php进程的东东,不知道多久以前php和php-fpm是要分开安装的,但是现在编译php,带上--enable-fpm参数就可以在安装php的同时,把php-fpm也给安装进去。


昨天试了,centos8也可以直接yum来安装php了。但是不带mysqli扩展。本人博客数据库采用的mysqli驱动,所以只好另外去下载php源码包了。


下载php源码的位置,戳这里:https://www.php.net/downloads

原创
2020年06月21日 23:11
  • 翟码农
  • 每天一首诗
  • 189
  • 0
  • 0

始知锁向金笼听,不及林间自在啼。这句出自于欧阳修的《画眉鸟》。


全诗如下:

《画眉鸟》

宋代--欧阳修

百啭千声随意移,

山花红紫树高低。

始知锁向金笼听,

不及林间自在啼。


译文:

画眉鸟千啼百啭,随着自己的心意在林间飞动,在那开满红红紫紫山花的枝头自由自在地穿梭。

现在才知道:以前听到那锁在金笼内的画眉叫声,远远比不上悠游林中时的自在啼唱。


翟码农赏析:

此诗所阐述的哲理很简单,但如果要想做到,却又并不是那么的简单。


尽管相隔千年,世人所深陷的情感问题却都大体相似。


如今的我们,为了生活疲于奔命:没房子的,为了房子而拼命;有房子的,就为了更大的房子而拼命,抑或是为了给孩子提供优越的教育条件而拼命。

原创
2020年06月21日 00:07
  • 翟码农
  • 健康常识
  • 220
  • 0
  • 0

天天看头条,天天看到有人因为各种各样的原因而死亡,感觉掌握一些生命安全的常识实在是太重要了。


本着自己再学习一遍的想法,翟码农顺便也汇总在一起分享给大家。


1. 洗澡的那些意外

一对夫妻参加同学婚礼,入住同学家人安排的房间,房间热水器没有安装烟道,结果晚上洗澡无意关闭了窗户,第二天早上两人都没能出门。参加同学婚礼,变成了自己的葬礼。


那些洗澡发生意外的大多不外乎这两种原因:一氧化碳中毒和触电。


一氧化碳中毒,基本都是由于热水器的天然气不充分燃烧产生的一氧化碳所致。


当我们在一个陌生环境时,遇到洗澡间装有热水器的时候,一定要多留个心眼。


如果是燃气式的,就千万别因为怕冷而把窗户关紧,尽量速战速决。

如果是储水式的,水烧好了,就把电源关掉。尤其是那种破旧小区、电路不给力的那种,更是要留心,避免发生触电。


2. 烹饪的那些事儿

民以食为天。但如果好些常识不知道,很可能就会发生悲剧惨剧。



2.1一农民妇女在厨房压猪蹄,结果砰的一声,猪蹄全飞,高压锅盖还给厨房屋顶捅了个天窗。


高压锅,这玩意儿发起威来,能量真的是超乎你的想象。


所以一定不要买杂牌,不要贪便宜。揭盖,一定要记得先放气。不然你废九牛二虎之力的后果,就是锅盖直接反弹到你脑门。能飞上天捅破屋顶,类比一下,结果就可想而知了。