计算本周一的时间戳

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

strtotime('previous monday');

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

strtotime('monday');

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

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

让自己关注更多美好的东西

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

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

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

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

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

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

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

图片alt

图片alt

typescript object 转 array 以及动态调用方法

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

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

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

上面的 params 是个参数数组

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

webpack4 + typescript 配置笔记

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

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

npm 安装依赖

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

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

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

index.html 的内容

<!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

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "sourceMap": true
  },
  "exclude": [
    "node_modules"
  ]
}

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

安装 webpack-merge

npm install --save-dev webpack-merge

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

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 开发中的配置文件

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

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

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 中增加两条命令

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

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

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

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

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

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

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

收工

laravel passport 用docker测试时候遇到的坑

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

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个小时。

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

extra_hosts:
      - "movielaravel.test:172.28.12.3"

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