# Pre 2018
# 2018/01/01
# 2018/01/02
- graaph-ql
- 如何排序
- 如何自定义类型
- 什么是 parseLiteral
- 什么是 inputType
# 2018/01/04
- Promise.all 最多有多少个
- graph-ql
- Query
- Sort
- Limit
- Offset
- 感冒
# 2018/01/05
- 感冒
- SharedWorker
# 2018/01/06
- 监听 console 事件
# 2018/01/08
- https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
- multi stage build
- require
- 如果同时有 a.js a.json 会 require 哪一个
- 如果在异步 module.exports 会导出不
- dataloader
# 2018/01/09
- graphql
- 如何重命名嵌套查询
- 认证
- jwt
- 权限
# 2018/01/10
- Dockerfile
- 使用 sock 代替 port
- graphql
- 是否有必要定义 email 为 scalar 类型
- resolver 执行顺序
- 查那个字段就返回那个attribute
- 分页只需要查找分页的总数
# 2018/01/11
- sequelize
- Datatype
- sequelize-auto 如何重命名表的列名
- [x] 添加字段
- [x] 更改字段
- [x] 删除字段
- graphql
- http error code
- docker
- 如何知道程序正确跑起来了
# 2018/01/17
- sequelize
- model 会驼峰,但是查找的时候不会驼峰
- graph 按需加载字段,不出结果 -> 有可能是驼峰转义出现的问题
- confirm 与 Modal 区别
# 2018/01/18
- 数据库
- 写数据
- 读数据
- 数据不一致 (更新pdf)
- 批量导出教训 -> 尽量写纯函数
- 多对多
- orm
- n:1 + 1:m
- 多个字段多写where
- sql
- 为什么不设置成两个外键
- 关于常量
- 常量应该是一些 英文常量,数据库存为 ENUM,而不是所谓的数字,后端存一份对应关系,前端也得存一份对应关系
- graphql 方便在可以返回 enumType,且语义化,易读
- 前期架构比较重要,需要两到三周专门做架构,而不是立马上手干活,否则项目很容易失控
- 负责人不仅仅是对项目的负责,更重要的是对人的负责,追根到底是对自己的负责
- 人员分工
- 必须有一人需要提出来专门做基础支持,特别是早期时,后可以做业务,以基础支持为主
- 每人负责一个模块,由始至终负责这个模块
- 前端性能优化
- 应用层面的缓存
- 首屏优化 -> toB 需求弱
- 按需加载 ->
- 应用层缓存 -> 数据永久缓存(id) + server push
- 持久化缓存 -> localStorage
- http 层面的缓存 (Cache-Control + hash)
- service-worker 层面的缓存 (static files)
- 数据库层面的缓存
- 外键
- 只取所需要的数据 (field on demand)
- redis
- 应用层面的缓存
- 关于前端与后端分页
- 首先计算 count,缓存
- 500 为分界点
- 以业务为产出的结果必定会导致前期架构的
# 2018/01/20
- graphql
- 返回错误码 > 300
- graphql
- 如何订阅数据库的变化
- 如何决定从 cache 中取还是从 server 中取
- 比如分页查询有很多重复项,如何抽取
- 最外边的 me 查询如何抽取
- cacheResolver ->
- 避免重复的请求
- 避免重复的数据
- this.props.updateQuery
# 2018/01/22
- networkStatus
- isFrozen
- isSealed
- isExtensible
# 2018/01/24
- webpack
- 把 lodash 以及 antd 放到 babel 的 plugins 与直接引入有什么不同
# 2018/01/26
- graphql
- 每次查询都要嵌套很深
- mutation 与 query 对不上
# 2018/02/02
- redis
- hget
- hmset
- sql
- order by count 问题
- 数据库排序和自己排序有什么区别
- graphql
- users { todos }, u: users: { todos }
- dataloader 有可能只工作与 users 的 todos,而不工作与 u 的 todos
- users { todos }, u: users: { todos }
# 2018/02/08
- 消息服务
# 2018/02/09
- https://dferber90.github.io/graphql-ast-explorer/
- bluebird Promise 规范
# 2018/02/21
- 历史上的今天
- 凡尔登战役
- 古今战役
- 索姆河战役
- 晋阳之战
- 韩魏赵智
- 即墨之战
- 齐与六国
# 2018/02/28
- 地质年代
- 宙代纪世期
- 二叠纪
- 三叠纪
- 侏罗纪
- 白垩纪
- 历史上的今天
- 林宅血案
- 美丽岛事件
- 林宅血案
- 电影
- 英国电影学院奖
- 金球奖
- 奥斯卡金像奖
# 2018/03/01
- 历史上的今天
- 黄石国家公园(1872)
- 满洲国 (1932)
- 世界遗产
- 中国南方喀斯特
- 云南石林
- 中国丹霞
- 鼓浪屿
- 中国南方喀斯特
# 2018/03/02
- 历史上的今天
- 唐宣宗
- 第一次中东战争 (1948)
- 阿拉伯世界
- 中东
- 巴勒斯坦
- 以色列
- 东南亚
- 缅甸
- 三次英缅战争
- 缅甸
- 联盟28号捷克斯洛伐克宇航员进入太空 (1978)
# 2018/03/05
- apollo-server-core/runHttpQuery
# 2018/03/06
- crontab 定时任务处理
- 每个定时任务通过 API 访问,然后使用系统 crontab 访问 API
# 2018/03/07
- 邮箱自适应
# 2018/03/08
- wiki
- 彩凤鸣岐
- 中国南方航空6901号劫机事件
- 法语圈国际组织
# 2018/03/09
- 基金
- 110022 易方达消费 58 44 17 股票
- 000619 东方红 52 40 19 混合
- 519732 交银混合 48 36 21 混合
- 160222 食品饮料 48 37 16 指数
- 165312 央视财经50 41 34 14 指数
# 2018/03/12
# 2018/03/14
- jwt
- (opens new window)
- json web encryption
- jw (opens new window)
- (opens new window)
- jws
- jwa
- (opens new window)
# 2018/03/16
- jwt 每次生成的 sign 都会发生变化,但是 jws 不变 -> iat payload
# 2018/03/20
- 三大影展
- 威尼斯电影节
- 戛纳电影节
- 柏林电影节
- 历史上的今天
- 东印度公司成立 (1602)
- 拿破仑建立百日皇朝 (1815)
- 美国共和党成立 (1854)
- wiki
- 中山国
- 魏灭中山之战 (乐羊)
- 赵灭中山之战 (赵武灵王)
- 中山国
# 2018/03/21
- gzip
- oss-cn-beijing 上有效,smartstudy 上无效
# 2018/03/22
- crontab
# 2018/03/24
- 历史上的今天
- 南京事件 (1927)
- 中美贸易战
- 中美经贸关系
- 最惠国待遇
- 给予第三国在贸易关税的优惠和豁免
- 永久正常贸易关系
- WTO 互为最惠国待遇
- 给予第三国在贸易关税的优惠和豁免
- WTO 世贸
- 总部 瑞士日内瓦
- 164个国家
- 净出口
- 净出口为正时,称为贸易顺差,黑字
- 净出口为负时,称为贸易逆差,赤子
# 2018/03/26
- redis
- String
- List
- Set
- Sorted Set
- Hash
- HyperLog
# 2018/03/27
- graphql + 图形验证码
# 2018/03/30
- bit permision
- Add: 0b0101 | 0b1000 或
- Del: 0b0101 & ~0b0001 与非
- Get: 0b0101 & 0b0001 === 0b0001 与
- All: 0b0101
# 2018/04/09
- html
- Insertion Observable API
# 2018/04/12
- dns
- dig
- https://www.diggui.com/
- docker
<<: *consul-agent
# 2018/04/16
- sequelize-cli
- migration 新建表是否会反应到 schema -> 会
- 如何避免直接写 schema
- migration 添加列是否会反应到 schema -> 不会
- seeder 有哪些场景,是否必要存在,还是和 migration 放在一起
- db.config.js 如何组织
- 如何把执行记录写到项目中的 json 中
- 不能写到json中,因为在生产环境不能提交代码
- migration 新建表是否会反应到 schema -> 会
# 2018/04/18
- graphql 动态修改 context
- redis 查看有多少条key
- redis-cli --scan
- redis
- rpush list a
- rpush list b
- lrange list 0 -1
- expire list 10
- ttl list
- 2 不存在
- 1 没设置
- cache
- 单个表使用 hash,id 为 key
- hmset User 1 {"id":1, "name": "张三"} 2 {"id":2, "name": "李四"}
- hget User 1
- 过期时间一致
- 关系使用 list
- lpush User:1:Logs 1 2 3 4 5
- lrange User:1:Logs 0 -1
- 关系直接存到单表中
- 同步 binlog
- 问题
- 销毁
- 全部属性
- 过期时间
- 为 findById 提供缓存的必要性
- db 以及 redis 的延迟
- 单个表使用 hash,id 为 key
- graphql
- 把数据库的信息嵌入到 graphql 中,比如 table -> type, column -> field
- sequelize 能否过滤多余字段
- 像 cacheControl 一样,把数据库的信息挂到 info 上
- 利用 returnType
# 2018/04/19
- nginx
- proxy_buffer_size
- proxy_buffers
- crossdomain.xml
# 2018/04/20
- 在路径下查找文件
# 2018/04/23
- benchmark mysql & redis
- sql-find
- where
- timestamp
- constant
- page
- attributes
- where
# 2018/04/24
- 如何随机删除一半数据
- log 阻塞
- graphql
- 如何找到 enum
- _.values
- 做 dataloader
- 添加 timestamp
- 如何找到 enum
# 2018/04/25
- sequelize
- 如何 include 之后会不会再 getStudent 一次
# 2018/04/26
- redis
- 如何删除特定前缀的key
# 2018/05/09
- mysql
- in [3] 与 in [3, 3, 3, 3, 3] 的性能比较
# 2018/05/11
- css
- color 加深 变浅 如何处理
# 2018/05/15
- db
- 为什么字段命名推荐下划线
- 大小写敏感
- 为什么字段命名推荐下划线
# 2018/05/16
- sequelize
- 连接表查询
- koa
- http.createServer + koa
- mysql
- group by day
# 2018/05/18
- server push
- redis subscribe
# 2018/05/19
- http api cache
- 应该每次应用起来的时候给个随机数,这个随机数在整个应用生命周期都不会改变,这样资源便是被 http 缓存住了,刷新的时候随机数会变,这样数据就更新了
- 如果想要每次都需要是最新的数据,那可以 cache-network,先从缓存中取,然后再发请求,覆盖掉以前的数据
# 2018/05/21
- PWA 版本回退 main.js 为上一个版本
- script cors
- http-server 如何控制缓存
- http-server -c-1
# 2018/05/24
- 负载均衡
- 让
# 2018/06/06
- migration 失败后如何感知
# 2018/06/07
- 如何把定时任务分开
- 如何查看一个容器占了多少内存
# 2018/06/13
- ioredis 强退
# 2018/06/15
- 如何让所有项目都是用 Docker
- 搭一个 k8s
# 2018/06/21
- docker --log-driver
# 2018/06/26
# 2018/07/03
- timestamp 是如何插入 0000-00-00 这种数据的
- no_zero_date
# 2018/07/23
- docker top
- docker save load
- Q
- Vagrant 和 Docker 有什么区别
- 线上都是 CE,那岂不是都要兼容以前的旧版本
- Docker 命令行使用源
- config map 和 consul
- 如何查看 cpu 使用情况
- k8s 配置代理怎么弄
- aufs 是什么鬼
- 前端自己写 Dockerfile,oss, pm2, gulp 不用,node-sass 也不用,ca
- nginx + asd
- docker
- 让前端掌握更多的流程和主动权,虽然比较复杂
- 为什么要分开 ADD
- harbor
- Vagrant 和 Docker 有什么区别
- Q
- node-sass 版本问题,与 node 相关 -> zxd
- 现在测试环境 docker image 的工作流程是什么 ->
- docker 分层优化
- docker build 服务器 ce 版本
- docker commit
- k8s 能不能直接从 Dockerfile 取
- 能不能自己来写 yaml
- 比如 healthCheck, port
# 2018/07/24
- 如何创建 namespace
- linux commands
- base64
- printenv
# 2018/07/25
- http
# 2018/07/27
- consul
- gossip
- Raft
# 2018/07/30
- alpine
# 2018/08/01
- 杏仁如何去皮 (opens new window)
- 响应式
- 直接在浏览器编辑
# 2018/08/03
- 认证代理
# 2018/08/07
- 301 缓存问题
- k8s: 8080 多级域名 subdomain
# 2018/08/11
- todo
- 收拾桌子
- 洗水杯
- 手胶
# 2018/08/20
- CI
- flow.ci
- drone.io
- image
# 2018/08/28
- socks5
- asdf
- wrk
- ab
- mirror request
- proxy_cache
- HA
- 两台机器做负载均衡,配两次 nginx
- keepalived
- LVS
- core
- pacemarker
- envoy (opens new window)
- svc.local service-ip
- open switch
- HP
- epoll
- select
- http 1.1 connection close
- L4 L7 load balance
- proxy_redirect
- Host
- 前端 nginx
- canvas
- 拼接事件源
- 启发
# 2018/09/07
- apollo
- 当出现错误的时候 reload
# 2018/10/15
- 设置域名邮箱
- git colorful
# 2018/10/16
- https
# 2018/10/18
- nat
# 2018/10/19
- traefik 如何映射端口号
# 2018/12/07
- css
- filter
# 2018/12/08
- react lazy loading
# 2018/12/10
- redis 持久化
- https://redis.io/topics/persistence
- RDB
- AOF
# 2018/12/11
- html5 element
- dns-prefetch
- meta itemprop
- theme color
- manifest
- docker
# 2018/12/13
- node
- axios with cookies
- 爬虫
# 2018/12/14
- free