大象笔记

知者行之始,行者知之成

一次面试引发的阿里云服务器被 DDOS 事件

今天下午快下班时,同事收到阿里云的报警短信,大意是我们一个服务器被 DDOS 了,超过了免费的防御阈值,所以我们的服务器公网IP被打入黑洞,300 分钟后解封。。。 接手这个业务以来,从来没遇到过 DDOS 攻击,说明行业内素质还是比较高的。为啥突然就被 D 了呢?于是赶紧停掉了网站的百度推广,正准备排查攻击日志时,这时人力资源负责人来了,说: 公司网站是不是挂了。一个明天来面试的说把咱们网站打挂了。 。。。这是我见过最愚蠢的面试者。 如何快速从阿里云黑洞解封 IP 虽然攻击源头找到了,并停止了攻击。但是网站已经无法访问了。而且按照阿里云后台的提示,要等5个小时才能解封。这谁能等得起啊。 ...

阅读全文...

微信小程序下拉刷新

在微信小程序的一些统计页面,例如,查看用户量、浏览量等运营数据,很多时候,我希望能够不时地刷新一下,看看数据有没有变动。所以,比较好的体验是,在页面内提供下拉刷新功能。 page json 设置 增加配置项 "enablePullDownRefresh": true 用于开启当前页面下拉刷新功能支持。默认是 false。 参考: https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/page.html#%E9%85%8D%E7%BD%AE%E9%A1%B9 onPullDownRe ...

阅读全文...

云原生是什么

这是我一天内第二次看到“云原生”这个词了: 第一次是在 v2ex 论坛上看到的一则阿里的招聘岗位,是云原生开发岗 第二次是在七牛公众号上看到的新闻“七牛云正式加入云原生计算基金会CNCF” 一头雾水,猜不透这么高大上的词是什么意思。 云原生是什么 云原生是云原生计算的简称,英文全称为 Cloud Native Computing。当然,我觉得称之为云原生架构也可以。 wiki 上的解释就很简洁明了 Cloud native computing is an approach in software development that utilizes cloud computing to & ...

阅读全文...

微信小程序分享朋友圈功能体验

最近微信小程序再次开放了一个强悍的能力,支持分享朋友圈。这无疑是一个巨大的流量入口。所以,我立即在新开发的小程序上做了尝试。 配置方法 在 page js 文件中,类似于分享微信群的 onShareAppMessage 设置,增加一个 onShareTimeline 回调函数即可。 例如,我这周上线的一个统计人数小程序,增加了分享微信朋友圈的功能。这里,自定义了分享朋友圈的标题,即统计活动的名称。 /** * 用户点击右上角分享 */ onShareAppMessage: function () { return { title: this.data.activity.name ...

阅读全文...

gorm 预加载的使用场景

背景 我正在用 golang gin 写的一个统计人数小程序后台服务涉及两个大数据表 用户表 活动参与的用户表 在查询一个活动参与的所有用户信息时,需要同时用到这两个表。考虑到运营一段时间之后,这两个表的数据量不可控,所有不打算使用联表查询。而采用 先查询活动对应的用户 id 集合 然后 where in ids 来查询对应的用户信息 如果用 golang 手写这个逻辑,还挺啰嗦的。在翻看 gorm 文档时,发现 gorm 支持预加载功能,这个功能类似 laravel eloquent 里的 Eager Loading 功能 (相对于 lazy loading)。 预加载的使用方法 t ...

阅读全文...

使用 golang 的交叉编译生成 windows 可执行文件

需求场景 公司内部的 IT 似乎不会使用 Linux,所以要交接的一个 golang gin 服务,我就不太敢部署在 Linux 上,想试试能否生成 windows 版本,然后设置成开机自启动,这样就不用操心了。 即,在我的 Windows 10 WSL Ubuntu 开发环境下,编译出可以在 Windows 10 上运行的 Golang 二进制文件。 交叉编译 英文为 Cross Compiling。 交叉编译器(英语:Cross compiler)是指一个在某个系统平台下可以产生另一个系统平台的可执行文件的编译器。 还是翻译成“跨平台编译”比较好,“交叉”这个词太难理解了。 跨平台编 ...

阅读全文...

钉钉文档非常适合做企业内部知识库沉淀

在写交接文档有感。 本来想先用有道云笔记整理,然后复制到 word 文档,再微信传送给相关同事,但是感觉这样做不正规。未来接手的人再更新也麻烦,很难持续更新。想起钉钉电脑客户端有文档功能,里面有个知识库,非常适合整理文档。 钉钉知识库的优点 云存储。避免了硬盘坏掉,个人管理导致丢失的情况 内部权限控制 目录结构清晰,还能自动生成文档内大纲。word 单文件做不到目录管理这点。 支持 Markdown,写起来快速 可评论 支持分享到钉钉聊天窗口 缺点 我个人不喜欢钉钉这个 APP,每天考勤消息太多,不厌其烦。 ...

阅读全文...

Vue SSR 服务端渲染是否有必要

最近遇到一个问题,一个内容站是否适合前后端分离。对于我这之前并不是一个问题: 因为对于内容站我压根不会考虑前后端分离,毕竟后端模板已经足够灵活,完全没有分离的必要。 而 APP 和小程序是天然的前后端分离,也没有选择性。 但是,如果是一个团队协作呢? SSR 是什么 SSR 是 Server Side Rendering 的缩写,即服务端渲染。 Vue 有独立的专题页来讨论 SSR: https://vuejs.org/v2/guide/ssr.html https://ssr.vuejs.org/zh/ 可见这是一个绕不过的问题。 为什么会有 SSR 概念的出现 前提是页面已经用了类 ...

阅读全文...

golang 解析 csv 文件报错 parse error: extraneous or missing " in quoted-field

解析百度统计 CSV 日志的系统运行了快一个月,没有出现问题。但是今天早上突然报错退出: > import_log /mnt/d/to_del/2020-06-20.csv 2020/06/22 07:55:18 parse error on line 686, column 60: extraneous or missing " in quoted-field 对应的 CSV 文件数据行为类似这样的结构,报错点在“烟台”前的一个双引号上。 "515","2020/06/20 13:07:08","烟台 "gola ...

阅读全文...

中国城市所属省份,映射关系

为了方便在 golang 中使用 map 来映射中国城市与省份的对应关系,我从一个开源的 js 组件中重新生成了这个 map。 但是这个列表,并不是特别完整,在实际运行中,今天就发现了有四五个缺少的城市,比如海南和新疆的。最好加上兼容逻辑。 简写版 去掉了“市”、“省”、“自治区”等后缀。主要是为了跟百度统计后台的地名统一。例如,北京市,简写为北京。 "北京": "北京", "天津": "天津", "石家庄": "河北", "唐山": "河北&q ...

阅读全文...

宁夏中卫市的人大概都想得到我的微信号吧

我的微信号正好是宁夏中卫市的拼音缩写,已经好几个人加我微信好友,咨询购买我的微信号了。。。 说实话,后面再加两个零,我都不想卖。。。 看来微信号投资现在比域名投资更火爆。 加上最近微信推出了更好账号的功能,估计买卖微信号的人更多了。 ...

阅读全文...

修改 Windows Terminal 默认打开的 Shell

每次打开 Windows Terminal 都会默认打开 Power Shell, 而我只使用 WSL Ubuntu。 所以,我想将 WSL 设为默认打开。 只需要点击顶部下拉箭头,选择“设置”,修改 defaultProfile 的值为对应的 guid 即可。 例如: "defaultProfile": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}", guid 需要替换为自己配置文件中的相应值。 设置默认的打开路径 即便设置成了默认打开 WSL,但是默认路径依然是 Windows 的用户根目录。 修改成 WSL 下 ...

阅读全文...

近期节日

2020年08月15日 日本投降日
2020年08月22日 处暑
2020年08月25日 七夕
2020年09月02日 中元节
2020年09月03日 抗日胜利纪念日
2020年09月07日 白露
2020年09月08日 国际扫盲日
2020年09月10日 教师节
2020年09月16日 国际臭氧层保护日
2020年09月16日 世界清洁地球日
2020年09月18日 "九一八"事变纪念日
2020年09月20日 国际爱牙日
查看更多节日