php初心者, 记录自己工作和学习路上的感想和笔记

0%

说句题外话,东西还得多用才能越来越明白啊。话说,今天休息在家用windows 的台式机弄docker,用来配置在台式机的开发环境,这次在台式机的配置目的就是在本地主机尽量不装任何开发用的相关软件,比如nginx、mysql、php这种。对了,这还得说句题外话,如果啥都不装,我连博客都写不了,不过为了台式机的干净,我依然选择在打开笔记本写博客。

本地学习到的知识,主要原因是我我加了个node镜像用来编译vue写的代码。原本我都是使用dokcer-compose up --build 这种方式编译加启动容器的,以前看 laradock 文档的时候里面就没用过docker-compose --build 编译加启动的方案,而是用 docker-compose build xxx 然后在docker-compose up xxx 这种方式,我以前始终不解,今天终于明白了,如果用 dokcer-compose up --build 这种方式操作,会由于 node 镜像不会持久化启动而反复报错,如果先 build 在根据需要 up 就不会造成这种问题了。当然如果配置了restart: "no"之后也就启动一次然后退出,也并没有什么关系,不过为我还是选择遵从laradock的方案,毕竟那么多人的经验还是值得参考的。

当我们需要使用node 的时候,就是用 docker-compose run --rm node bash 这种就可以进入到容器内部了,加--rm的原因是启动以后我们还得手工销毁,加了以后当我们退出的时候就自动销毁container了,而且我们在compose 的文件中配置了 noderestart: "no" 这样当我们停止以后也不会自己在跑起来。

最后还得吐槽一下windows 的 crlf会让docker启动失败啊,很难受,把sublime配置为lf之后才解决。

从农历年后到现在,影视网站开发进度简直跟蜗牛一毛一样,影视网站从去年5月份就开始计划,眼看就到今年五月了,也就是说12个月过去了,进度几乎为零。

虽然进度几乎没有,但是自己的技能却提升了很多,在工作中也有很多应用。自己写东西的慢的主要原因是,周边知识的匮乏,包括但不限于前端、权限、代码结构。。。

通过这几个月的弄这个项目,自己提升了很多很多。

下面列一下自己记住的学到的东西:

  • vue 、vuex 、vuerouter 、 axios
  • 后台权限设计
  • laravel、symfony、slim 各种框架的基本使用

其实还有很多自己都学到了,但是记不住了,包括 docker 、服务器的相关配置、php、ngxix的很多配置,由于很琐碎,都记录到印象笔记里面了。

目前看来,大框的东西都应该结束了,接下来就是业务了,到了业务就相对比较好搞定了,争取明年的这个时候,我能写日志说我弄完了影视网站吧。

这本书很薄,但是第一次读完会感觉很厚,可能是因为我基础知识不够的原因,就得大量的去查,否则一共六章,每晚半小时就看完了。

很早就关注了公众号,书是过年期间准备消耗时间看的,结果拖到了现在才看完。

正如豆瓣评论所说,这边书讲的很浅,但是呢,确认宽泛,帮你画好了地界,就等着你自己去看更多的书填补缺少的部分了。

这本书看完了之后准备看看几本日本出的书,发现日本出的书是真的好,让人看得很舒服。

难受,两周前把自己的服务器换成自己弄得docker以后,就一直在折腾自己的博客,先是放弃了自己写的博客,换到typecho,然后在换到wordpress,最后换到了 hexo。

先说说放弃自己博客的原因,因为自己是在不想在模板上花费太多的心思,其实后台我很满意的,毕竟自己写的,功能足够自己用就好了。

再说说 typecho和 wordpress,前者轻量,但是可能因为我用的稳定版的的原因,有一些小问题,还懒得去弄,就放弃了。wordpress呢,太重了,太繁杂了。也弃了,其实我就是想要一个写字的地方,简简单单就好,不需要太多的东西,纠结了一圈之后,就用hexo把。

我是这么做的,配置原文什么的我本地有一份,github上我存了一份,这样多台电脑也可以同步了。然后网站部署在了阿里云上面。

下面就说说操作步骤。

hexo 的安装配置以及主题相关我就不多说了,官方文档好得很,我就所说我的部署部分

首先,先看服务器部分,我们首先配置 ssh 的自动登录,这样以后自己管理以及 hexo d 的时候也会很省事

1
2
3
4
5
1. 在本机生成SSH密钥
ssh-keygen -t rsa
2. 然后将本地公钥拷贝到服务器
ssh-copy-id root@IP
注意 非 22端口 同样增加 -p参数

简单两步,以后就不用再输入密码了。

然后在服务器上找一个地方存放我们的git相关的东西,其实就是配置一个钩子

1
git init --bare 你的文件夹名称

bare 的作用是创建一个裸仓库,我个人觉得这个目录就是我们以往的.git文件夹。

然后我们进入这个目录,进入 hooks 文件夹,执行

1
vi post-receive

这个就是编辑我们的钩子,这个钩子就是收到推送的时候我们的操作。然后我们编辑这个文件

1
2
#! /bin/sh
git --work-tree=/home/docker-nmp/www/blog_hexo(真正存放我们网页的地方) --git-dir=/root/blog.git(这个就是我们上一步创建的git bare 文件夹) checkout -f

第一行就是表示是个sh文件,这么说可能不准确,我们姑且这么认为。 然后 work-tree 表示需要 clone 的地方, git-dir 是指我们的git配置的位置, checkout 就不说了, -f 就是强制的意思,忽略本地修改。

然后执行

1
chmod +x post-receive

把这个文件标记为可执行的,这里不要忘记

这些都弄好后,一定要保证work-tree是存在的,毕竟 git 又不帮我们创建文件夹。如果不存在,也会提示我们成功。这个很坑.

服务器这边就搞定了

现在开始修改本地文件, 我们编辑根目录的_config.yml 文件。

找到 deploy, 如下

1
2
3
deploy:
type: git
repo: 你的用户名@你的ip:就是上面你设置的git bare 目录

到这,全部搞定可以收工了,注意 用户名需要注意权限问题防止没权限写不进文件夹。

然后我们执行 hexo g; hexo d 不出意外相关的文件夹就会有我们的文章了,这时候我们把 nginx 设置好,博客就可以访问咯,收工

自从刚过完年以后就没出去走过,我跟我媳妇感觉在家都要长毛了,来了北京很多年,去过的地方没有几个,趁着周末出去走走,顺便我还想学习摄影,一举两得。这次感觉自己的照片没有感觉得主要方面是,大部分都是没有做好水平,外加照片里面自己想要的重点有些没有体现出来

阅读全文 »

虽然本地docker已经弄完了好几个月了,在最近也在持续的优化中,包括把能配置的部分转移到 env文件中。
上周把自己的博客系统废弃了,因为当时写这个系统也仅仅是为了 laravel的学习而已,用了将近2年,虽然很稳定,但是也有很多不满意的地方,虽然现在换到了 wordpress也有一些不满意的地方,但是还好插件丰富,周边也很多,可以慢慢改造成自己满意的样子,下面主要就是记录一下这次服务器实战部署的踏坑情况。

  • mysql如果使用 8及以上的版本的时候,需要进入 msyql容器内部,修改一下密码方案,否则数据库连不上
  • 注意代码文件夹写入权限问题,目前 docker设置的用户是 www,所有如果不是 www用户的话,可能会导致无法写入文件的
  • wordpress开启又拍 cdn以后样式无法加载,在又拍后台设置 缓存控制->参数跟随->全程跟随后之后就ok了。
  • 目前写代码还是比较习惯 markdown,所以目前日志都会在印象笔记写好,然后在转换,由于代码高亮方便跟 wordpress还有点不一致,所以自己写了个简单的转换器。

现在还有的小问题就是图片上传了,慢慢在弄一个图片上传工具就ok了。

最近想要弄点东西,不想用 laravel 这种框架了,因为想要更细致的了解一些底层框架相关的东西,所以采用了 slim 框架,首先这个框架比较轻便,看源码也比较快捷,当然现在更细以后有很多东西也都不熟悉了,正好可以再次看看。

不过 slim 这个框架因为比较轻便,所以周边也都比较少,我有个需求是定时任务,这个时候 slim 就不支持了,所以得需要自己搞定。

做这个的时候想到了以前看 symfony 的时候有个 console 模块,正好可以用到,google 了一下发现也有人是这么实现的,所以我也就参考着弄了下来。

阅读全文 »

前一段有一个计算本周一时间戳的需求,于是用了下面的代码

1
strtotime('previous monday');

原本一直运行都很好,可是还是没经过深入的测试,在周一的时候,这个值会计算到上一个周一的时间,导致了我们的一个显示出现了问题,但是还不能使用下面的代码

1
strtotime('monday');

因为这样会导致在非周一的时候计算到下一个周一,

所以我们要在计算之前先判定一下当前是周几,如果是周一就采用 'monday' 非周一的时候采用'previous monday'

不知道从什么时候开始,我的记忆就只会专注的以及编程或者计算机周边的东西,网址都能很快的记住,但是刚才看过的电影的剧情,却很快忘却了。以前我还认为这是个好事,能够让自己更专注。

可是随着年龄的逐渐变大,愈发的让我惶恐。我觉得我的人生忽然没有了更美好的记忆,听过的段子,看过的影片,一切的一切都是转瞬即逝。留下的都是那些枯燥无味的东西,而且这些东西,增长的速度在逐渐的放缓,我觉得这不仅会让我更加的无趣,也会让我的职业生涯的路变得不那么顺畅。

最近迷上了摄影,虽然还没买相机,当然估计也不会买,但是会在看电影或者在路上找到脑中自己觉得美的那么一瞬间,就像今早一样,我和媳妇走路去上班,忽然看到了一只鸟在光秃秃的树顶上站着,那一瞬间,脑中忽然有了一副画面,同是想到了一首诗,枯藤老树昏鸦,于是就跟媳妇说了一嘴,停了下来,拍了照片。

在地铁上就按照脑中的画面,找了一个最喜欢的滤镜。

虽然后来有朋友跟我说可能是喜鹊,可是不管怎么修,都打不到我喜欢的程度,可能就是最初的那个感觉,让我有了那个角度,所以无论怎么调整都不满意吧。

中午准备小睡一会儿,听了一首歌,看了评论区,都是说什么出征啊,可是在我脑中的画面,却是其他的,然后我就想到了一个以前一位前辈说过的一句话,多观察生活,编程也是生活的提炼,所以不仅要学习编程,也要看周边的东西,这样在会后长足的进步。

说的乱七八糟的,可是我自己却是大概明白我的意思,可能也不懂。最后放上两张图把,原图和我修过的图

图片alt

图片alt

1
2
3
4
Object.keys(requestParsmsOjb).map(function(paramsIndex){
let value = requestParsmsOjb[paramsIndex];
return value;
})

不知道为何 typescript 里面木有 Object.values() 的方法,所以可以用这种方法,搞定

由于有动态调用某些方法的需求,所以还得继续搞,只怪自己对 js 的理解不深,不过万幸都能搜索到,所以呢就记录下来

参考https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

上面那篇文章是动态调用方法的,下面是我的方法

1
ojbect[functionName].apply(null, params);

上面的 params 是个参数数组

因为我还有方法名也是动态的需求,所以上面我用数组的方案搞定的,毕竟 js 中都可以用数组的方式来引用,这点还是很好的。所以就可以用数组的方式搞定动态方法名。