远离你身边的煤气灯人 今天讲个煤气灯人的故事,这可不是一个关于张牙舞爪的喷火小木偶的恐怖故事。 我想说的远比恐怖故事惊悚多了。 它毁人心智,杀人于无形。 何为煤气灯人?如果你感觉这个词很陌生,那么朋友,你听说过PUA吗? PUA(Pick-up Artist,把妹达人),一个近年来广为人知的群体,与其相关的理论亦称为“泡学”。 大量不善交际的尝试者,几经辗转购入高价PUA课程,并将其珍若江湖两性秘笈。但同时在更多人眼中,PUA群体也沦为过街之鼠,人人喊打。甚至还有人故意在人际交往中,突显自己的直男直女本性,与“套路”二字划清界限。 但你真以为自己能摆脱PUA吗——Nope,甚至也许 你就是正在进行“情感操纵”的PUA本A 。 01. PUA,其实就是一种煤气灯人 现今意义上的PUA,上可追溯至1944年,由美国导演乔治·库克执导的一部惊悚片 《煤气灯下》(Gaslight) 中的主角安东。 在电影中,钢琴师安东(CharlesBoyer饰)为了将妻子宝拉(Ingrid Bergman饰)所要继承的大额财产据为己有,一面将自己伪装成潇洒体贴的丈夫,另一面又不断使用各种心理战术,联合家中的女佣企图将妻子逼疯。 在丈夫缜密的心理操纵下,宝拉逐渐变得神经兮兮,怀疑现实、质疑自己,最后在精神上几乎完全依附于安东。 这种试图破坏他人对现实的感知的情感操纵,也因该电影而得名为 Gaslighting(煤气灯操纵) 。下面我挑选了几个经典的Gaslighting片段让大家品品: Part 1 信息封锁:在一段时间内不断重复强调某一信息 安东和宝拉新婚满三个月时,外出去伦敦塔游玩。出门前安东送给妻子一枚小巧的白色胸针,声称是母亲去世前留给他的,并嘱咐宝拉把它收好。 此时安东略显刻意地强调了一句: “你可能会弄丢,你知道的,你经常丢三落四” 。这是电影中安东第一次对宝拉实施Gaslighting,也是宝拉初步对自己产生怀疑。 但是在二人离去之后,两位女佣之间的对话又再次佐证了,宝拉从未体现出任何异常。但是男主人安东,却不断向他们传输“女主人生病了”这一信息。 如果说此时,仆人们还对女主人生病一事尚有所怀疑。那么接下来的事情,就令他们对于这一言论深信不疑了。 当天的游玩结束后,安东便以饰物常年未佩戴、需要修理为由,向宝拉索要胸针。由于安东从一开始就并未将胸针放入宝拉的手包,而是偷偷将其藏在手心转移至别处,... 阅读全文
高可用用户中心设计 概述 我们公司现在的账户体系比较混乱,每个系统都有一套自己的账户体系,没有办法进行统一的账户管理,比如统计一个人在哪个系统有账号,这样操作是比较麻烦的,还有就是我们如何进行用户行为分析,最终综合用户的信息进行用户的画像。这些都是需要解决的问题。 常规的用户设计是统一账号和统一登录验证,统一注册等信息。但是结合我们公司的实际,发现这样的话我们的系统可能会出问题,我们无法屏蔽很多细节。我们的现状是: 系统需要向用户隐藏是同一个公司的这个事实。也就是说我们做了用户中心的设计,但是不能让用户感知这个系统的存在。也就是说多个系统之间的登录都是需要隔离的。离论上不能做统一账号的登录,但是可以做统一账号的验证。 同一个系统可能有多个马甲app,我想马甲app之间也需要登录隔离,虽然他们调用的是同一个后台系统,那么我们不得不面对一个问题,同一个用户同时下单的逻辑处理,需要后台做这种处理,否则就会出现严重的并发错误,而开发人员可能都没有注意到这个事实的存在,从而导致一些稀奇古怪的事情出现。 web端与app端应该是需要同时登录的,我们好像没有web的要求,但是好像有微信的web端的事情。假如我们有web端的登录,那么问题来了,我们要不要实现二维码登录web。目前看是可以先不实现的,但是作为设计考量我们不得不考虑这些。 第三方账户的登录,我们是通过手机号作为唯一标识,那么不太好实现第三方的登录注册。但是我们可以后期实现,如果实现第三方的登录注册,那么问题来了,我们的设计貌似不支持,需要改动,就是改掉手机作为唯一标识的问题,但是想想好像是不影响的,只要数据能插入问题就不大,因为没有手机号,这些用户是不能登录需要手机的app,但是有的系统可以做特殊处理,从而支持第三方账户的登录注册。但是这样做也有缺点,就是用户利用多种方式进行注册,也就是说我们不得不解决一个问题就是用户可能存在多个账户的可能性。加入用户有微信注册的账户,然后又用手机登录,绑定微信,这个时候我们可能需要去系统中用微信的unionId或者openId查找一下是否有用户,有就不能绑定,没有才能绑定。如果有我们可能也知道了这个人有重复号的可能性。这个可能需要在做的时候处理。 验证保密问题,公司居然都没有人提到这点。不过也对我们是通过手机号进行验证的。但是如果以后我们不在使用手机号,可能我们需要验证问题。还需要判断用户的活动记录... 阅读全文
如何优雅的关闭容器 最近把 Docker 官方的 Docker Reference 文档又读了一遍,发现有些细节深究起来,还是有很多可挖的。针对写 Dockerfile ,大部分时候只要照葫芦画瓢,基本也不会有什么大的问题,但是如果再深入理解一下那就更有意思了。 要说如何优雅的关闭容器,那就不得不提到信号(Signal)的理念,以及 Dockerfile 中 ENTRYPOINT 和 CMD 指令了。在具体说优雅关闭之前,先了解一下信号这个 Linux 中的基础概念。 1 信号 信号是事件发生时对进程的通知机制,有时也称之为软件中断。 信号有不同的类型,Linux 对标准信号的编号为 1~31,可以通过 kill -l 获取信号名称: # kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM ... ... 实际列出的信号超过了 31 个,有些是其它名称的同义词,有些则是定义但未使用的。以下介绍几个常用的信号: 1) SIGHUP 当终端断开(挂机)时,将发送该信号给终端控制进程。 SIGHUP 信号还可用于守护进程(比如,init 等)。许多守护进程会在收到 SIGHUP 信号时重新进行初始化并重读配置文件。 2) SIGINT 当用户键入终端中断字符(通常为 Control-C ) 时,终端驱动程序将发送该信号给前台进程组。该信号的默认行为是终止进程。 3) SIGQUIT 当用户在键盘上键入退出字符(通常为 Control-\ )时,该信号将发往前台进程组。默认情况下,该信号终止进程,并生成用于调试的核心转储文件。进程如果陷入无限循环,或者不再响应时,使用 SIGQUIT 信号就很合适。 9) SIGKILL 此信号为 "必杀(sure kill)" 信号,处理器程序无... 阅读全文
斐讯N1小钢炮Docker安装OpenWrt/LEDE做旁路由 前言: 如今很多路由器都支持第三方固件,大家也都纷纷将路由器刷成了 OpenWrt / LEDE ,梅林,Pandavan,高恪,潘多拉等固件来实现各自的一些目的。如: 去广告 多播叠加带宽 科学上网 挂机下载 KMS等 这些功能往往是在普通路由器的原版固件中没法实现的。既然大家已经有主路由可以刷第三方固件实现以上功能后,为什么又会有旁路有的需要呢? 那自然是因为 旁路由 有它独到的好处。不知道大家有没有经历过以下的感受,当大家欢喜的在主路由上打开各种功能后,经过一段时间,总感觉代理速度不稳定,或者网络信号稳定等情况。这就是因为路由器本身的性能有限,你开的功能越多,它同时兼顾的东西就越多,自然就容易出现一些稀奇古怪的问题。这时候, 旁路由 就起到了它的作用。 我们用 旁路由 连接主路由,主路由关闭一切其它功能,只让它安心的拨号上网,发射WIFI信号,而一切杂七杂八的功能,都让 旁路由 来承担。 旁路由 同时也不用去做主路由的工作,它不需要拨号,不需要发射WIFI信号,它只需要做好它的科学、去广告的功能,这样就形成了一种各司其职的状态。如果你有一个很好的机场+上一个很高的带宽,通过这种配置,就可以进一步将它稳定的发挥出来。那么接下来,就让我们来看下,如果将斐讯N1小钢炮固件下使用Docker安装OpenWrt路由器固件作为 旁路由 ,充分发挥N1的作用。 步骤: 1、Docker安装及设置: 进入N1 小钢炮 管理后台,点击System选项,之后再点击Startup,在右侧往下拖,找到Docker的对应进程选项/etc/init.d/S60dockerd,把NO点为YES启用Docker,再点击左边的start,之后点击下面的SAVE保存 点击Apps-Other-Docker Setting-install Docker UI (没安装时默认为黄色,下图为已经安装完成后的显示) 等待Docker UI安装完成后,UI Running Status会显示2个绿色图白哦,点击第二个Docker UI进入Docker后台 首次进入设置你想要的用户名及密码,之后点击Local-Connet进入Docker管理界面 2、镜像拉取及设置: 使用 SSH 工具输入IP地址登录 小钢炮 (Windows使用Putt... 阅读全文
详解 Kubernetes StatefulSet 实现原理 在 Kubernetes 的世界中, ReplicaSet 和 Deployment 主要用于处理无状态的服务,无状态服务的需求往往非常简单并且轻量,每一个无状态节点存储的数据在重启之后就会被删除,虽然这种服务虽然常见,但是我们仍然需要有状态的服务来实现一些特殊的需求,StatefulSet 就是 Kubernetes 为了运行有状态服务引入的资源,例如 Zookeeper、Kafka 等。 这篇文章会介绍 Kubernetes 如何在集群中运行有状态服务,同时会分析这些有状态服务 StatefulSet 的同步过程以及实现原理。 概述 StatefulSet 是用于管理有状态应用的工作负载对象,与 ReplicaSet 和 Deployment 这两个对象不同,StatefulSet 不仅能管理 Pod 的对象,还它能够保证这些 Pod 的顺序性和唯一性。 与 Deployment 一样,StatefulSet 也使用规格中声明的 template 模板来创建 Pod 资源,但是这些 Pod 相互之间是不能替换的;除此之外 StatefulSet 会为每个 Pod 设置一个单独的持久标识符,这些用于标识序列的标识符在发生调度时也不会丢失。 apiVersion : apps/v1 kind : StatefulSet metadata : name : web spec : serviceName : "nginx" replicas : 2 selector : matchLabels : app : nginx template : metadata : labels : app : nginx spec : containers : - name : nginx image : k8s.gcr.io/nginx - slim : 0.8 volumeMounts : - name : www mountPath : /usr/share/nginx/html volumeClaimTemplat... 阅读全文
星际蜗牛安装黑裙(群晖)制作家用nas 说重点,群晖安装 选哪个型号哪个版本呢? 之前用的5.2版本功能不够多,docker装上去运行个迅雷,隔一段时间就卡死了。download station里的rss订阅时间长了也更新不了。同时考虑到同步办公文件,这次得找个稳定的版本安装。 网上流传一个ds3617的二合一版本,正好可以安装到固态上。装完以后开机显示的画面有乱码 ,虽然乱码不影响使用,可总感觉不够稳定,再加上第一次插上硬盘以后重启了下,发现硬盘损毁,更不敢用了。(现在回过头来发现,应该是我插上去的那块硬盘是从别的nas上拆下来的,系统不识别造成的吧 ) nas论坛上走一遭发现还是乖乖用优盘引导安装吧。 网上最多的是918、916、3617、3615四种型号,群晖版本一般是6.1.7、6.2、6.2.1,选来选去选了6.1.7版本的3615,网友说这个版本稳定运行几年了。希望它稳定运行到天荒地老 小白注解 : 群晖安装文件分两部分,引导文件和系统安装文件,黑群晖为啥黑就是引导文件是大神破解的。系统安装文件都是官方的,不用修改。 软件下载 逛坛子发现有两个好东西,一个是XPEnology多功能工具箱V1.2,软件长这样,首页就是引导文件 第二页是系统安装文件 需要用到的工具也都集成在里面了, 但是我从这里面下载下来的引导文件解压不了。于是找到了第二个神器——黑群晖工具获取器。 打开软件点下加载,然后依次选择型号,版本就全出来了。这里面也带了工具软件,不过我没用。用黑群晖工具获取器下引导文件挺快的,浏览器下载就行,但是系统安装文件就不行了,没速度 ,换迅雷就OK了。 我把引导文件、系统安装文件还有其他工具软件一起放网盘里,大家可以直接下载。 所有文件我都是上传的压缩包,解压以后使用 。 百度网盘链接 : 提取码:sle3 工具准备 一台电脑,一个独立的 显示器 、显示器与NAS的连接线,usb接口键盘。 上面的安装的时候需要,安装完就不用了。 找个闲置的64m优盘,没有的话大一点也可以,就是浪费容量而已。这个优盘以后一直要插nas上了 你们准备完了吗? OK,正式开始折腾 制作引导优盘 大致流程是 先记录优盘VID和PID 删除原优盘分区, 往优盘上写引导文件 修改引导文件。 首先,拿出64m的优盘,插电脑上,打开XPEnology多功能工具箱,去制作工具栏里找到ChipGenius, 打开,我装了360,... 阅读全文
谷歌内部考核制度OKR 是怎样的? 很多人事在搭建KPI时,对OKR充满好奇。今天简单粗暴的科普一下。 科普围绕3个问题: OKR是什么?谷歌怎样做OKR的?替换KPI,可行吗? 一、先简单说一下OKR是什么? 感受下令人绝望的官方定义: OKR,全称Objectives and Key Results,即目标和关键结果,它是一种企业、团队、员工共同设定目标和关键结果,从而通过结果去衡量过程的方法与实践。OKR流程如下图。 直接让人脑子打结:关键结果是什么东西?目标和关键结果有什么关系?花3步解答一下。 1、我们通俗点说: 在OKR里,你要先有一个目标,再有为实现这个目标要做的一些行动,同时你的行动也要有对应的小目标。 2、来举个例子: 在谷歌的博客负责人的OKR中,他的个人目标是“博客的浏览量提升50%”。为了完成这个目标,他需要采取以下行动: 一,在3次大型的行业论坛上做专题演讲推广; 二,办好博客的10周年庆; 三,发展20个有影响力的人在博客注册帐户并写博客; 四,在其他的3个以上有影响力的社交媒体上建立帐户推广。 上述“一二三四”就是关键结果(KR),而“博客的浏览量提升50%”是目标(O)。这样设置工作指标既能明确目标,也能明确为实现目标所要采取的行动。 ( 需要注意: 在OKR中,“目标和关键结果”不能粗糙概括,必须量化具体。比如:“浏览量有所上升”→“浏览量上升50%”) 3、再上两张图,加深理解 销售OKR: 人事OKR: ------------------一条不成熟的题外话分割线-------------------- 既然谈论OKR,必须提提耳熟能详的KPI,这两者有什么区别?看张图: 体会最深的一点: KPI是上级交给我的任务指标,我是被迫的、顶着压力去完成的; OKR是自己给自己设定的任务和指标,即便是我自己挖的坑自己也心甘情愿跳。 (现在有没有对OKR清楚一点了?) 二、谷歌的OKR是什么样的? 追溯OKR起源,1999年由英特尔公司开创,后在谷歌成功实施,逐渐在微软、领英等知名企业推行开来。 总体来说,OKR在实施时需要注意6个点: 1)公司、部门、个人都有自己的OKRs,必须达成一致和互相支持; 2)OKRs中最多5个O,每个O最多4个KRs; 3... 阅读全文
无线路由器不同价位选购小抄 再贵的路由器都不会有多大的覆盖范围和穿墙能力,双拳难敌四手,要覆盖大信号好只能多买几台组mesh。 手机,网卡基本是2x2设备,连上4x4方案的路由,理论最大速率要除以2。 水星是tplink马甲,基本是一样的主板,水星便宜买水星就好了。 推荐的通常越高价位无线质量越好,但是300以上的路由器提升幅度显著下降。 小米原厂固件对旁路由支持有问题。 同价位排在越靠前说明越推荐。 # 100以内-能用就行 水星D121G MESH ¥79 3千兆网口WIFI5 mt7628(单核0.6mips) 2.4g-主芯片集成-40mhz-64QAM(2×2)(300m) 5g -mt7612 -80mhz-256QAM(2×2)(867m) 同价位最中庸,功能都有,体验一般。同方案有千兆变百兆的水星d121(3百兆网口)和水星d12(4百兆网口)还能再便宜几块钱。虽然能组mesh,但不推荐。 【二手】 天邑TY300 MESH 闲鱼¥79 运营商定制 5千兆网口WIFI6 128MB BCM6750(三核1.5a7)+散热片 2.4g-bcm43217+外置功放-40mhz-64QAM(2×2)(300m) 5g -主芯片集成+外置功放-80mhz-1024QAM(2×2)(1.2g) 同价位mesh首选。非常划算,这个方案虽然信号一般,但是架不住便宜。 同方案的ty400有usb3.0,3个千兆口。 TY6201A是bcm6755方案,价格有点高,等降价。 【二手】小米路由器mini ¥30 3千兆网口WIFI5 mt7620(单核0.6mips)+散热板+第三方固件 2.4g-mt7603+外置LNA+屏蔽罩-40mhz-64QAM(2×2)(300m) 5g -mt7612e+屏蔽罩 -80mhz-256QAM(2×2)(867m) 体验还可以最便宜的路由器,有5Ghz,同方案中做工精良,还有USB口。 【二手】中兴E8820 V2 【48元】 64MBram 散热片 USB2 友华wr1200js 128MBram USB2 newifi 3 512MBram 屏蔽罩 散热板 USB3 mt7621(双... 阅读全文
如何去做code review Google 前几天公开了一篇谷歌的工程实践文档。而且文档的内容都是跟 code review 相关的内容,里面包含了 Google 工程师如何进行 code review 的内容,以及 code review 指南。 原文地址: google.github.io/eng-practic… 本文的名词解释: cr: code review cl: change list,指这次改动 reviewer: cr的那个review人 nit: 全称nitpick,意思是鸡蛋里挑骨头 作者: 也就是本次CL的开发者,原文中是以author来称开发者的。以老外的思维,意思是“CL的作者” 如果嫌文章太长,可以直接到 后面 看总结 cr的标准 cr(Code review)主要目的在于确保Google 的代码库代码质量越来越好。而所有相关的工具与流程皆是因应这个目的而生。为达到此目的,势必需要做出一连串的权衡与取舍 首先,开发人员必须能够在自己负责的任务上有所进展。如果你从来没有向代码库提交改进过的代码,那么代码库就永远不会改进。另外,如果一个reviewer使cr都很难进行的话,那么开发人员就不愿意在将来进行改进。 另一方面,reviewer有责任确保每个change list( 下称CL )的质量,保证其代码库的整体代码质量不会越来越差。这可能很棘手,因为通常会随着时间的推移,代码需要降级才能让代码运行起来,特别是当团队受到严重的时间限制时,大家觉得必须走捷径才能实现他们的目标。 此外,reviewer对他们正在review的代码拥有所有权和责任。他们希望确保代码保持一致、可维护,以及下文的“ 在cr中可以得到什么 ”中提到的内容。 因此,我们有以下规则,作为我们在cr中所期望的标准: 一般来说,当CL存在的时候,reviewer应该赞成它,此时它肯定会提高正在工作的系统的整体代码质量,即使这个CL并不完美。这是所有cr中的首要原则。当然,这是有局限性的。例如,如果一个CL添加了一个reviewer不希望在其系统中使用的功能,那么reviewer当然可以拒绝,即使代码设计得很好。 这里的一个关键点是,没有“完美”的代码,只有更好的代码。reviewer不应该要求作者在approve之前对一篇文章的每一小段进行润色。相反,revie... 阅读全文
Matomo API 官方接口详情 API接口 你可以通过调用Matomo的分析接口将数据集成到其他应用中去。这些数据包括访问数,页面网址、网页标题、用户设置、搜索引擎、关键词、推荐网站、用户浏览器 其中的请求参数和返回值需要对照官方手册来 未定义 ## API `未定义` ## Annotations `未定义` ## Contents `未定义` ## CoreAdminHome `未定义` ## CustomDimensions `未定义` ## CustomJsTracker `未定义` ## CustomVariables `未定义` ## DBStats `未定义` ## Dashboard `未定义` ## Events `未定义` ## Feedback `未定义` ## Goals `未定义` ## ImageGraph `未定义` ## LanguagesManager `未定义` ## Login `未定义` ## Marketplace `未定义` ## MobileMessaging `未定义` ## PagePerformance `未定义` ## Provider `未定义` ## SEO `未定义` ## SitesManager `未定义` ## TagManager `未定义` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Actions 动作(行为) Actions.get 访客分析-概述-访客概览(右边一列) Actions.getPageUrls 行为-页面 Actions.getPageUrlsFollowingSiteSearch Actions.getPageTitlesFollowingSiteSearch Actions.getEntryPageUrls 行为-进入页面 Actions.getExitPageUrls 行为-退出页面 Actions.getPageUrl 行为-通过页面的PageUrl查看详情(获取单条记录) Actions.getPageTitles 行为-页面标题 Actions.getEntryPageTitles 行为-页面标题-进入页面标题 Actions.getExitPageTitles 行为-页... 阅读全文