image frame

脑洞大开の乱乱想

放下碎碎念,重新出发

组长,Python怎么切换版本?

Q: 组长,Python怎么切换版本?
A: Python 版本控制和切换可以考虑 pyenv

学习Python的一个纠结的地方是,Python使用什么版本,如何切换Python版本。

在使用 Node 的时候有个 nvmNode Version Manager 来控制版本,自由切换,Python有没有类似的工具?

有: pyenv –> Github地址

1
v=3.7.3;wget https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v
阅读更多...

node.js 之 网络编程

看《深入浅出node.js》时候,对这一章印象深刻,因为有的知识很熟悉,有的很陌生。
看《网络是怎样链接的》有了更进一步的认识。

在这里先尝试进行回忆总结。

网络传输形式

Node.js 中和网络有关的内置包:

  • net 控制TCP
  • dgram控制UDP
  • http控制HTTP
  • https控制https

OSI网络协议

说起网络传输,少不了cs里的OSI七层网络协议:

  1. 物理层 硬件
  2. 链路层 链路接口
  3. 网络层 IP
  4. 传输层 TCP/UDP
  5. 会话层 通信连接、维持回话
  6. 表示层 加密解密
  7. 应用层 http等

信息从应用层构建开始,到物理层信息发出。经过信号传输到达另一端的物理层,再层层转发到对方的引用层。

UDP

用户数据包协议。gdram

无连接

UDP不是面向连接的,面向事务。一个连接字可与多个UDP服务通信 无连接

##不可靠性
因为无连接,不需要建立连接,想发就发,也不关心是否接收成功。
网络不好就会丢包。
如果对实时性要求高,比如视频聊天就是udp了

场景

视频聊天,直播,pvp游戏

TCP

net包。
tcp优化策略,nagle算法。
如果每次一个字节的传输不进行优化,会造成浪费,就有了缓存区的概念。

和udp相反,每次链接和断开都需要先握手。在传输过程中通过算法保证数据的可靠性,既然复杂了也就不高效了。

细节

连接三次握手

一开始都是 closed 状态。

  • 第一次握手。客户端向服务端发请求,syn-sent
  • 第二次握手,服务端收到并同意连接,返回应答 syn-recived
  • 第三次握手,收到同意的应答,再发送一个确认。客户端 established ,服务端收到应答也进入 established 状态

断开四次挥手

tcp是全双工的,每次断开两边都得发送 fin 和 ack

  1. 客户端觉得数据发送完成,给服务端发送fin
  2. 客户端收到,返回 ack,并进入close-wait
  3. 服务端数据发送完了,就返回fin,进入 last-ack状态
  4. 客户端收到,回复确认ack。进入time-wait 状态,一会儿就 closed 服务端收到ack就closed

    HTTP

    见 http部分

读《左手MongoDB,右手Redis》之MongoDB

之前整理过MongoDB,趁着这次手不生,记录在此。

配套视频
https://www.yuque.com/kingname/wtago8/xwg3gb

源代码
https://github.com/kingname/SourceCodeofMongoRedis

基础概念

MongoDB是非关系型数据库,文档型数据库

noSQL——not only SQL

关系型数据库怎么了

关系型数据库可能存在的问题:

  • 处理高并发写入复杂
  • 上亿数据查询慢
  • 分库 分表 大规模数据难整理
  • 分表 分库 变更需求修改困难
  • 修改表结构困难

    有哪些非关系型数据库

    非关系型数据库的大致分类:
  • key-value类型。比如redis 读写性能优秀
  • 文档类型。MongoDB 结构不严格
  • 列存储。Hbase分布式
  • 图。Neo4J 社交 推荐系统

MongoDB怎么了

MongoDB结构: 库 集合 文档 字段。特点是不需要预定义表结构,字段可以任意变动。并发写入性能好。

Redis怎么了

用途多:

  • 缓存。k-v 字符串 哈希表,告诉缓存
  • 队列。有序集合,哈希表
  • 去重

安装使用MongoDB

安装不必说,可以用 docker起一个服务
连接推荐使用Robo 3T

MongoDB 语法

1
2
3
4
5
6
7
8
9
db.getCollection('xxx').insertOne({})
~.find({'age':{'$gt': 25}})
~.count() # 总数
~.limit() # 限制返回数量
~.sort(k:-1) # 排序 1 正序;-1 倒序
~.updateOne()
# 数据一般不删除,字段改变。
# 数据去重
~.distinct(字段名, 筛选条件)

案例中使用的是Python版本的 pymongo,这个到时候整理到Python范围内。语法没啥区别。

js基础之DOM事件

DOM事件

DOM事件级别。DOM事件模型。 DOM事件流。DOM捕获的具体流程。Event对象的常见应用。自定义事件。

DOM级别

  • DOM0 ele.onclick=function(){}
  • DOM2 ele.addEventListener(type,function(){},false)
  • DOM3 keyup 等,事件类型多了

事件模型

捕获,冒泡

事件流

捕获,目标阶段,冒泡。

捕获具体流程

window – document – html (document.documentElement)– body – 层次结构

event对象

  • e.preventDefault() 阻止默认事件
  • e.stopPropagation() 停止冒泡
  • e.stopImmediatePropagation() 按钮绑定了多个事件,先触发a,再b。不想触发b了

在a的方法中设定,事件响应优先级

  • e.currentTarget 当前被绑定的事件元素,委托时候是父级
  • e.target 当前被点击的元素

自定义事件

1
2
3
4
5
var e = new Event('custom')
ev.addEventListener('custom',()=>{
console.log('x')
})
ev.dispatchEvent(e)

声明事件。

DOM绑定事件,通过 dispatchEvent 注册

CustomEvent 比 event,除了指定事件名,还可以指定参数事件

互联网运营文案

通过好的文案获得流量和转化。

文案作用

好文案:

  • 引发传播。愿意转发
  • 制造转化。愿意购买

传播型文案,有故事性 有力的观点或出人意料的情节。需要大量练习和积累

制造转化。突出卖点,撬动欲望。传递产品价值,促成行动。
建立认知 – 激发兴趣

如何写文案

四个写作方式。

4W1H清晰提炼观点

who what when where how

一节课讲透0成本的搜索引擎推广之道
95%的产品经理最常用的5种文档模板
7页ppt5分钟内给你讲透微信运营

颠覆认知 引发好奇

改了两个版本就融资1500万,这个app是怎么做到的
为什么我觉得互联网的下一个时代将是运营驱动的
不是每一个人都需要打开这篇文章,除非…

关联高势能事物 傍大款

同样是健身app,它相比keep到底牛逼在哪里
连xx和xx都被这个观点震惊了
月薪3k和30k的文案区别在哪里?

适当使用主观认为强力背书

【深度好文】
【互联网必看】
【超级干货】
不要过度夸大

关键方法

多用数字。
使用语气词,有识别度的语气词和符号

如何挖掘文案 标题写作角度

找不同的角度,举例。某一年傅盛发了一篇文章 ceo如何做战略,现在要求拟定新的文案,也就是标题:

  • 问题够不够痛? 一家创业公司的ceo该如何做战略?
  • 谁来解决?猎豹ceo傅盛亲述:创业公司ceo如何做战略
  • 是怎么解决的?傅盛4k字详解创业战略决策方法论
  • 可能和谁有关 从360出走后,他靠这个方法论逆袭360
  • 问题解决后可以发生什么
  • 不解决这个问题可能会发生什么
  • 人格推荐
    等等。

互联网运营分工

和传统行业分工,产品和运营没那么标准。
传统行业的市场部。销售部。很多工作是静态,内容相对固定。
互联网运营线。以目标为导向:用户获取,用户维系。每一项都有很多方法。内容相对灵活。

初创公司的运营,一般是多面手。
相对成熟的互联网运营:

  • 内容运营。生产内容
  • 活动运营。活动太频繁,长期存在。营销类,话题类。
  • 渠道推广运营。各种流量,比如app商店等。
  • 用户运营。特定用户的服务,大v的客服等。
  • 新媒体 社区运营 产品运营等

比如新浪微博的运营团队分工,可以进一步解释。

职业成长和规划

p1 ~ p10 等。

不同职业阶段,从小白到熟手到专家到高级专家,要求的能力一点点增加,薪资待遇也会一点点增加。
不同公司对运营要求也不同,初创期产品,人少多面手。产品用户多了,开始扩大人员规模,细化分工。到成熟期,人员进一步分工,各家细化。

个人规划

如果我来做运营,我也会遵循客观规律,从基础开始,比如基础软件使用,日常工作熟练,向更高级别过渡。
自身思路和方法要及时总结,同样是一个工作,不同人能做出不同的成绩,一个是摸索出的规律,一个是总结的方法论,都需要练习和实践。
如何结合技术人的技术优势,和体系化整理的优势,可以更快上手运营工作。

运营的跨部门同事

自嘲运营狗。
和产品打交道。
是一个互相督促的过程,产品会迭代,产品会变好。运营也是引导的过程,获取用户,维系用户

运营和市场部的模糊界定
用户的一个健康培养过程:

  • 建立认知。这个阶段品牌传播,比如pr,地推可能是市场部来做
  • 认可价值。之后是运营来引导。强调产品价值
  • 购买决策。影响决策行为
  • 后期使用。继续教育。

对用户来说,这是一个简历品牌新闻的过程。

运营和研发
多沟通,减少不靠谱的需求。想清楚不改需求。

自我总结

我司运营的部门叫运营中心。产品那边就是老师和app呗。
运营中心下面有:

  • 内容运营。也就是编辑,出一些资讯和宣传专题文案
  • 活动运营。定方案,参与制定产品售卖方案,方案确定了会发宣传物料需求,会改动产品介绍,比如网站,app
  • app运营。对接各种app商店,确定商务合作关系
  • 新媒体。微信公众号,抖音,今日头条的维护,写推文,拍视频
  • 推广运营。宝哥和王博的工作吧,负责新闻收录排名和sem竞价排名
  • 题库运营。负责把题目整理到后台,承担产品的一部分责任。

和产品如何打交道。有低价课,直播课,和老师协调。如果app 网站不好用和产品对接,提出需求

和研发打交道,日常宣传专题制作,新功能需求,多沟通呗,熟悉了好沟通,也和情商有关系,因为工作内容完全不同,需求翻译难免需要多碰头。

互联网运营基本概念

不同层次的运营:

  • p1 运营生涯的入门。相关工作的执行和落实能力
  • p2 称为没有短板的运营。文案,数据分析,sop,第三方推广等
  • p3 找到长板。内容,推广投放,事件和活动,增长黑客

随时整理方法论。

说说你的学习计划

学习计划,先过一遍,先做笔记,再整理删除,形成自己的说话方式。

认识运营

从维护群开始

作为从业者,能讲清楚运营到底是什么吗?
如何运营好一个微信群,需要做哪些事?

有的群只发广告,有的群会活跃,会围绕某些主题讨论。这是现状。
要维护好微信群,有一些方法论可作为指导:

  1. 引入种子用户
  2. 组织群内话题
  3. 找到热情用户,加强沟通
  4. 用线下线上活动缔结关系
  5. 发展成群管理员,sop工作文档
  6. 群的良性发展

所以,运营就是通过一系列有目的的行为和资源投入,让事情持续良性运转。

##我对维护群的思考
这让我想起以前玩手机游戏建立的帮派群,这个群从火热,到最后凉凉解散。我都做了什么?
首先是【引入种子用户】在游戏里宣传qq群,鼓励大家加入群,方便交流心得。必要的话,催促就剩你了,群里有攻略和游戏物资兑换码
用户入群,我会主动欢迎和引导认识群管理,看公告。尽量让新人迅速找到话题参与,而不是第一时间屏蔽。【组织话题】
慢慢的,就有了核心用户,副会长或者氪金大佬,通过私聊优先送兑换码之类的,加深印象和联系,乐意维护群氛围,避免冷群。【寻找核心用户】
积极讨论游戏和群外交。鼓励贡献心得。也有意识鼓励分享生活,避免游戏无聊冷群。持续发展了一段时间,很多人愿意聊天胜过游戏。这里都是对的,良性的。
后来问题出在哪里?是人和人的矛盾激化,观点尖锐,游戏进入后期,游戏无聊,话题开始减少。最后大家弃坑退游。

现在来看,很多东西,是摸索出来的,也能对的上。

你如何理解互联网运营

研发负责生孩子,运营负责养孩子,运营统筹既有资源开展各种形式的方案,寻找新用户,维系老用户,让用户乐意投入时间和金钱。

不同的运营岗位完全不同

淘宝运营,地推,作图,找文章洗稿等等。
这是因为面向的主体不同,手段也就不同,比如淘宝用户,app用户,线下用户等。

一个业务的组成: 用户 产品 运营。 三个元素互相牵扯。具体不解释了。

思考:

  1. 互联网运营工作流程都有哪些
  2. 指定运营策略环节要做哪些事情
  3. 拉新 推广 转化的手段有哪些
  4. 用户维系的手段有哪些

    互联网运营工作流程

    工作流程:
  • 制定策略。评估产品阶段、形态、当前数据,有啥问题和趋势
  • 分解指标,规划工作。目标拆分。资源争取、扩展和分配。工作任务规划。
  • 执行落地,达成目标。文档,活动,传播,销售等
  • 检验数据,调整方向。数据分析、用户反馈、潜在发展方向和需求

运营策略:

  • 拉新 推广 推广
    • 第三方渠道推广
    • 病毒营销
    • 活动
    • 新媒体
    • 广告投放
    • 品牌传播投放
  • 用户维系
    • 客服
    • 用户体系建设
    • 用户激励
    • 用户召回
    • 运营机制设计
    • 活动

浏览器相关知识点

加载页面

简单版:

  • 浏览器根据DNS服务器得到ip
  • 向ip发送http请求
  • 服务器收到处理返回http请求
  • 浏览器获得内容
    具体细节在 browser-render 里

    渲染过程

    简单版:
  • 根据html生成 DOM 树
  • 根据css生成 CSSOM
  • 将DOM和CSSOM整合成 RenderTree
  • 根据 RenderTree 开始渲染和展示
  • 遇到 script 执行并阻塞渲染
    更多细节在 browser-render 里

    性能优化

    优化原则和方向

  • 多使用内存 缓存 和其他方法
  • 减少 cpu gpu计算
    因此,方向: 减少页面体积,提升网络加载;优化页面渲染

    减少页面体积,提升网络加载

  • 压缩合并 css js 图片
  • 缓存,md5文件名
  • cdn

    优化网页渲染

  • css前,js后
  • 懒加载
  • 减少dom查询
  • 减少dom操作,多个操作合并 documentFragment
  • 事件节流
  • 尽早执行 DOMContentLoaded
  • ssr
  • 后台ssr渲染

    优化图片

  • 压缩图片
  • 使用css替代图片
  • 拿空间换时间,图片多裁切,js先计算宽度,再发请求对应的尺寸
  • 小图片用base64
  • 合并图片
  • 正确选择格式
  • 懒加载

    节流

    throttle 滚动触发的次数太多
    其实就是不断 setInterval 计算距离上次的时间,够时间了才触发

    防抖

    多次点击按钮,百度输入按键智能搜索
    核心是 setTimeout 不断清计时器,然后添加新的。
    时间不到永远不触发。

    dns预解析

    1
    link rel=dns-prefetch href=xxx.cn

    预加载

    1
    link rel=preload href=a.html
    现在暂时不用,但希望尽快获取
    兼容性。

    预渲染

    1
    link rel=prerender href=a.html
    小说的下一页,极大概率会点击。

前端基础知识之css

选择器和权重

盒模型

*{box-sizing: border-box}
标准模型和ie模型的区别。默认content-box

js如何获取宽高?

dom.currentStyle.width
window.getComputedStyle(dom).width
dom.getBoundingClientReact().width 窗口位置。

BFC

边距重叠解决方案。margin合并
渲染规则:

  • BFC垂直边距会重叠
  • bfc区域不会和浮动重叠
  • 独立容器,外界 不会
  • 计算bfc高度,浮动不参与计算
    触发:
  • float 值不为none
  • position不是static relative
  • display table相关
  • overflow
    使用场景:
    比如清楚浮动。可以设置float overflow

    float

圣杯,双飞翼

Q:左侧100px,右侧200px,中间自适应。

  • 浮动。纯浮动,中间不需要指定宽度。left right center
  • 绝对定位。中间 left right 指定数值。
  • flex。 flex:1
  • 表格布局 table-cell
  • grid

定位

flex

重绘 回流

repaint reflow
重绘回流不可避免,我们优化的点是减少不必要的重绘回流
重绘,不脱离文档流,一些属性发生变化,比如颜色,背景等。
回流,DOM大小位置发生变化,浏览器需要重新渲染,或者全部重新渲染。

要进行优化,一般都是减少回流,比如先暂存DOM修改,一次性完成修改。

请我喝杯咖啡吧~