0%

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

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

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

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

难受,两周前把自己的服务器换成自己弄得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 中都可以用数组的方式来引用,这点还是很好的。所以就可以用数组的方式搞定动态方法名。

最新需要写一些 js 的东西,正好就想试用一下 typescript 试用以后感觉舒服,那么需求来了,我们需要编译出来的文件,在外部可以调用,所以就有了下面的笔记

参考文章https://www.cnblogs.com/mahidol/p/8874300.html

npm 安装依赖

1
npm install --save-dev typescript ts-loader webpack webpack-cli

在项目根目录创建两个文件夹 srcdist 以及一个测试用的入口文件 index.html

src 用来存放我们的源码
dist 用来保存生成后的源码

index.html 的内容

1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

</body>
<script type="text/javascript" src="./dist/app.js" ></script>
</html>

入口文件仅仅是用来测试的,所以仅仅引入了输出的js 我们在 chrome 控制台测试

根目录创建 typescript 配置文件 tsconfig.json

1
2
3
4
5
6
7
8
9
10
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"sourceMap": true
},
"exclude": [
"node_modules"
]
}

创建 webpack 配置文件,采用https://www.webpackjs.com/guides/production/
中的方案,只不过有些小修改

安装 webpack-merge

1
npm install --save-dev webpack-merge

webpack.common.js 公用的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const path = require('path');

module.exports = {


entry: './src/index.ts',
output: {
filename: 'app.js',
path: path.resolve(__dirname, 'dist')
},

module: {
rules: [{
test: /\.ts$/,
use: "ts-loader"
}]
},
resolve: {
extensions: [
'.ts'
]
}
};

webpack.dev.js 开发中的配置文件

1
2
3
4
5
const merge = require('webpack-merge');
const common = require('./webpack.common.js');
module.exports = merge(common, {
mode: 'development',
});

webpack.prod.js 输出的的配置文件

1
2
3
4
5
6
7
8
9
const merge = require('webpack-merge');
const common = require('./webpack.common.js');
module.exports = merge(common, {
mode: 'production',
output: {
filename: 'app.min.js',
path: path.resolve(__dirname, 'dist')
},
});

package.json 中增加两条命令

1
2
"start": "webpack --config webpack.dev.js",
"build": "webpack --config webpack.prod.js"

这里跟文档不一样,毕竟文档的开发部分配置文件用的测试服务器,我们这个单纯的就是自己测试,所以依然还是用 webpack 命令编译一下。

至此,我们在普通场景下已经可以使用了。但是由于我们的需求是,这个文件不仅仅在 html 中调用,还需要在外部调用编译出来的代码,但是上面的代码是在外面无法调用的,所以我们继续搞。

webpack.common 配置文件中的 output 属性增加两个配置

1
2
library: "MediaParser",
libraryTarget: 'var',

简单点说就是导出为名称为 MediaParser 的变量,这样我们就可以在外部 scrpit 中调用了

具体的这两个参数可以看 webpack 中的文档https://www.webpackjs.com/configuration/output/#output-librarytarget https://www.webpackjs.com/guides/author-libraries/

收工

最近在学习 laravel psssport ,可是在本地使用 docker 测试的时候却遇到了一个报错。

1
cURL error 7: Failed to connect to movielaravel.test port 80: Connection refused (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

想了很久,一开始以为是内循环了,但是使用 postman 却可以得到正确的结果,后来想到,是不是因为 docker 容器内部无法解析到 我的测试域名呢,搜索了一波,在 docker-compose 文件中配置了 extra_hosts 问题的到解决,难受,活生生被阻挡了2个小时。

在需要内部调用的地方,增加配置,示例如下

1
2
extra_hosts:
- "movielaravel.test:172.28.12.3"

这样,就在docker的内部,做好host的映射了,也就能够正常访问了