首页
留言
友链
关于
Search
1
思源笔记docker私有化部署及使用体验分享
2,429 阅读
2
windows11 远程提示:为安全考虑,已锁定该用户帐户,原因是登录尝试或密码更改尝试过多。
1,113 阅读
3
Pointer-Focus:一款功能强大的教学、录屏辅助软件
618 阅读
4
解决 nginxProxyManager 申请证书时的SSL失败问题
614 阅读
5
使用cspell对项目做拼写规范检查
581 阅读
Web前端
CSS
JavaScript
交互
Vue
小程序
后端
运维
项目
生活
其他
转载
软件
职场
登录
Search
标签搜索
docker
DevOps
magic-boot
Linux
酷壳
RabbitMQ
gitlab
Node
git
工具
MybatisPlus
clickhouse
Syncthing
规范
前端
产品
nginx
markdown
axios
H5
朱治龙
累计撰写
139
篇文章
累计收到
7
条评论
首页
栏目
Web前端
CSS
JavaScript
交互
Vue
小程序
后端
运维
项目
生活
其他
转载
软件
职场
页面
留言
友链
关于
搜索到
34
篇与
其他
的结果
2022-03-31
设计常用图片尺寸
相关图片尺寸来源于凡科快图 和 即时设计移动端iPhone 13 Pro Max 428 x 926iPhone 13 / 13 Pro 390 x 844iPhone 13 mini 375 x 812iPhone 11 Pro Max 414 x 896iPhoneX/ 11 pro 375 x 812iPhone 8 Plus 414 x 736iPhone 8 375 x 667iPhone SE 320 x 568Google Pixel 2 411 x 731Google Pixel 2 XL 411 x 823Android 360 x 640桌面端Desktop 1440 x 1024MacBook 1152 x 700MacBook Pro 1440 x 900Surface Book 1500 x 1000iMac 1280 x 720Web 1920 1920 x 1080Web 1366 1366 x 768Web 1280 1280 x 800公众号公众号封面 900 x 383公众号小图 200 x 200公众号首图 900 x 500公众号超链接配图 600x 200其他手机海报 720 x 1280PC端横幅 1920 x 600手机横版海报 960 x 540淘宝宝贝主图 800 x 800
2022年03月31日
45 阅读
0 评论
0 点赞
2022-01-26
[转载]如何从交互维度量化用户体验?
最近在准备一个用户体验相关的PPT作内部分享,收集素材的时候在知乎上发现一篇讲解非常翔实的文章。故转载于此,仅用于副本留底,若有侵权可联系删除。原文地址:https://zhuanlan.zhihu.com/p/39124206https://mp.weixin.qq.com/s/69SUAWmsg7S4J4CvLk1TNA{mtitle title="以下为转载的内容原文"/}之前参加了回音分享会,认识了很多新朋友,线下分享时间有限,可能有很多东西没有讲的很透彻,所以整理了一下我当时的 ppt 和想要表达的观点,写了这篇文章,和大家分享一些在产品和交互设计中的一些自己的方法。一、什么是交互狭义的交互(Interaction)定义交互主体必须是人本身,而客体可以是产品,环境,服务等等,且不论交互客体是什么,只要主体是人,人和客体去进行交互的时候,一定是人带着心理预期施加一个行为,然后客体会根据这个行为给予一个反馈(没有反馈本质也是一个反馈),而人会根据这个反馈是否符合预期去进行心理修正。如下图所示,这就是我理解的最小交互模型:当时我举的例子是用翻页器去控制 ppt 翻页:如上图所示,拆解这一套交互行为:当我点击翻页器的「下一页」按钮,我点击行为附带的心理预期是「PPT翻往下一页」,然后我点击的时候,遥控器塑胶按钮给到我手指一个物理反馈,证明我按下的行为已经完成了,这是「输出端(我的手)的交互与反馈」,这时候遥控器接收到按钮指令,把指令通过红外线传输到 USB接收器上,接收器把指令传到 PC端然后完成翻页动作,再通过大屏幕传到我的眼(输入端)中,我就可以确认这一次交互反馈是符合预期的。这里有一点想要补充:设备对设备(上图中黑色箭头),也属于广义的交互,只不过现阶段大家研究的交互设计都是狭义的,人为主体的交互。在我们日用科技产品的早期,有两个东西是无法跳过的,那就是按键手机和 PC电脑:他们几乎是同步在发展的,而这两个产品的交互行为基本上延续到了触屏手机时代,所以为了弄明白触屏手机的交互,这两个产品是值得讲一讲的。先看按键手机(就是我们小时候用的非智能手机):在按键手机中,最让用户困惑的其实是按键和屏幕之间存在一个映射关系,而不同厂商缺乏一个统一的规范,各家映射规则不一样。大家是否还记得当年的手机说明书那可以说是相当厚,因为说明书必须要给用户建构一个心理模型;比如上图,点击左上角和右上角那两个「-」按钮,其实一一对应的是屏幕左下角的「Goto」和右下角的「Names」。这个一一对应关系作为今天的用户来看应该是很平常而且很易懂的,但是当年没用过手机的人,需要花很长时间阅读说明书,才能够明白物理按键和屏幕上的映射关系,这就是按键手机很难用的地方,也是很反人性的地方。因为作为用户来说,心智上,我们当然希望所触即所得。再来看 PC,作为和按键手机差不多一起出现的载体形式,人们操作 PC端人是通过媒介(也就是鼠标+键盘)输入的,其实本质上也是我们通过鼠标在桌面上滑动 x-y 区域对应到电脑桌面上指针的移动来创造屏幕中x-y的映射关系,然后键盘上几十个键配合输入完成操作。大家发现了么,上述的两种设备其实本身就是在制造一种一一对应的映射关系去完成交互行为,这两种载体从出身开始就是需要很大交互成本的。随着科技的发展,触屏感应技术推出了之后,印象中触屏手机就是两三年时间就摧枯拉朽的淘汰了按键手机,本质上是干掉了一一对应的交互映射,所按即所得:触屏手机出现之后,交互专家们不禁要问一个问题了:手和触摸屏到底有多少种交互方式?答案是有很多种:越是高阶越是隐藏的交互手势越复杂,所谓的「交互成本」也越高,比如锤子三指滑动换屏保那种,就是利用了高阶交互便捷实现边界功能。那这么看起来,iOS 也好还是所有的安卓手机都好,从用户端而言,就是组合交互手势,让信息更好的传达而已。那么同理,在 App 中也是一样,如果我们了解了每一个交互行为的用户心理预期,对设计工作而言就能做到有的放矢:我们以「单击」和「滑动」这两个最简单的交互行为举例。所谓单击手机屏幕,用户其实最核心的是有两个预期:第一是选中一个元素,比如 Radio组件。第二是逻辑上的 Next,比如点了一件衣服,应该 Next 到衣服的详情;点了付款,应该出现付款流程,点了返回,应该 back 到上一路径点等等。划动交互也是一样的,用户在一块手机屏幕上单指划划划,用户内心的预期其实也不复杂,最核心的预期也就两点:第一是查看屏幕外的线索(前提是设计师给用户留下线索了或者是这个 UI组件长得就是可以划动的样子)。第二是查看相邻标签的内容,或者查看同一个标签下的相邻元素,比如 iOS 的 segment controlle组件就是典型例子:当我们了解了这些之后,我们在实际的设计工作中就可以根据上面这些理论来合理选择 UI组件去呈现对应的信息了。二、从交互维度合理选择UI组件我们在设计工作中,选择 UI组件,本质上就是选择信息的呈现形式。每一个常见的 UI界面和 UI组件,都一定也满足上面所说的最小交互模型:在这里我举一些例子说明。第一个例子:同样的内容,选择不同的 UI组件呈现,给用户呈现的是完全不同的产品结构:大家看下面这张图:这两个 UI模块摆在大家面前,大家应该能清晰的感受到,左边是一个 segment 控制下面内容的 UI;而右边是一个所有内容列表的集合页,只不过通过 tab 聚类了而已。第一件事应该想到的是如果需要采用右边的排列形式就必须要控制 tag 的字数;然后由于右边的 tag 占据了推荐贴的位置,导致推荐贴可能没有左边的那种展现形式更加醒目。但是相对的,图右的优势在于,由于竖向排列 tag 可以让一个屏幕显示更多的 tag,可以让用户更方便的定位内容,比如外卖产品之所以用右边这种形式是因为力求一屏展示更多的菜,而且外卖产品的左侧 tag 一般是一家店铺的菜的品类,用户下滑菜品配合点击品类,点完即走,很方便(京东和淘宝电商类平台也是类似的)。但是比如今日头条,新闻类客户端只能采用左边的这种形式,因为新闻类客户端是需要用户长时间沉浸的,比如用户选中一个「体育」的 tag 之后一般要沉浸的看好久好久,用户需要沉浸在这个 tag 下的内容中,那这个时候显然用右边这种设计方式让 tag 常驻屏幕左侧是不合适的。再来看第二个例子,就是 UI 应该会随着内容而进行调整和优化:这里举一个唱吧的例子,唱吧从7.0到8.6之间做了三次改版,大家可以看到,唱吧团队几乎是损失了屏幕效率来加大了间隔和突出了歌名,这是为什么呢?这是因为页面承载的关键任务不同,大家对比着7.0时候和8.6时候的 UI样式,正好是今天快手和唱吧的对比:大家会发现,其实这个页面,快手和唱吧承载的内容都是消费转化,都希望用户点击进去消费内容,但是两款产品做了截然不同的 UI风格,原因是什么呢?快手在这个页面,其实承载的关键任务是:「迅速让用户找到感兴趣的点」,它这么设计的本质原因是因为它的截图可以帮助用户判断内容本身,比如第一张图是一个人在打高尔夫,右边是一个工人,然后第二排左边是一个游戏的镜头,右边是一个传递正能量,大家可以很方便的通过图片识别里面的内容,用户更沉浸更聚焦的去选择自己喜欢的,点击进入消费就可以了。但是唱吧的视频截图其实是不能识别里面内容的,大家可以看到,第一张图是一个妹子,第二张图是一个妹子,第三张图还是一个妹子,那用户点击进去的动力在哪儿了?除了这个照片长相之外,更多的其实是文字决定的,是这个人唱的这首歌的歌曲名是不是我喜欢的,或者是这个演唱者的歌手等级。所以基于这种更深层次的逻辑,唱吧和快手两款产品的这个页面都是为了促进消费转化,但是 UI 长相上完全不同。我们看第三个例子:同样组件下,选择不同的交互方式,也会使得效果完全不同,比如现在有一个 UI页面,主要由一个 tab(iOS叫segment controlled)组件控制下面的内容,长这样:我先假定一个前提:这个 app 中的这个组件不支持横划,只支持点击切换。好了,现在我假设这是一款已经稳定运营了一年的产品,为了说明问题,我假设一个理想数据:假设每天有20W 的 uv 访问这个页面,其中分流情况是:10Wuv消费「推荐」下的内容2Wuv消费「生活」下的内容1Wuv消费「段子」下的内容3Wuv消费「美女」下的内容4Wuv消费「游戏」下的内容这时候,为了优化交互行为,有一天决定把这个 tab组件从不可横向划动改成可以划动的(并且告诉用户这里可以滑动了),然后给你一次机会重新排列这五个 tab 顺序,你会怎么做呢?最简单的办法当然是把五个 tab 按照用户消费意愿逐一排列,即:「推荐、游戏、美女、生活、段子」。这样排列当然没有任何问题,但是还有没有更优解呢?我给出的解决办法是这样的,大家评判一下:按照用户的消费量,「游戏」是消费量第二的一个 tab,毫无疑问我会把它排在第二项,这样可以刺激用户划动行为,然后「美女」是消费量第三的,我会把它放在第四位,这时候我会把「段子」和「生活」这两个消费率最低的 tab 分 AB test 做两个版本放在第三和第五位拿去测,以判断之前的「段子」和「生活」是由于自身内容不够优质,还是之前交互成本太低导致的数据较差:最后我们来看第四个例子:比如一个 app,他的 UI 如下图所示的这个样子。现在假设在运营和市场团队不做任何努力的情况下,单从产品交互的角度,能不能优化上面这个版块的点击率?首先我们来分析一下页面架构:如果我们认为,不管是点击右上角的「>」,还是点击留个圆形入口都算完成转化的话,我们现在的这个红色的 UI组件,入口位置一共有7个。根据长尾理论,如果我们把这个圆形入口从6个扩展到比如九个,是不是一定对转化率有正向影响?答案并不一定:为什么呢?因为主要是这样的改动会带来一个未知的泳道横划交互,它会产生一定的影响,如下图所示。用户看到这个泳道之后可能出现三种行为:用户完全不滑动——那入口就从6个变成了6.5个,别的没有变量影响。用户滑动看完了之后,点击某一个或者左上角的「>」进入——这是我们想要的转化用户滑动看了这些圆形入口之后松手,就是不点击进去——这是我们不愿意看到的结果想到这里,那为什么我们不能让用户直接滑动之后松手就跳转呢?想到这里,所以优化方案如下图所示,给与用户一个 x轴区间,滑动手势操过那个区间则告诉用户你现在松手默认跳转,用户不愿意跳转也可以回划,只要不足这个 x区间就给与用户自主选择的机会:我之前在上家工作的时候,我们把6个圆形入口变成了10个,然后用这个「松手跳转」的交互把单元模块的穿透率从21%提升到了31%,这是一个实战当中的真实例子。当然了,请大家再思考这样的一个问题:一个页面的流量就这么大,一个地方涨了11%,那势必别的地方就会相应的损失11%。一般情况下 app 首页承担着80%以上的分流工作,根据流量漏斗来看的话每一次引流都会导致其他模块的数据下降,所以设计师们应该要根据运营策略和公司大的产品 OKR 来合理选用合适的交互组件,以达到想要的目的,还是那句话:「小孩儿才分对错,大人只看利弊。」三、从交互的维度量化用户体验移动互联网产品设计中,尤其是在中国的 app 产品,有两大分歧阵营:「扁平」阵营表示了,我们需要产品足够扁平,最好就是三次交互可以触达所有 app 界面:「简洁」阵营也表示了,我们需要页面信息足够简洁,最好一个页面只完成一个核心任务:双方你来我往,谁也说服不了谁,如下图所示,「简洁」阵营反驳「扁平」阵营说:你们一点都不遵守席客定律,层级扁平是扁平了,但是相应的页面信息变得越来越多,给用户呈现的干扰就越来越多,用户做出决定的时间也越来越多,所以你们「扁平党」不行。这时候「扁平」阵营也找到了反驳的论点,他们说你看你页面足够简洁了,但是页面层级就很深啊,交互成本这么高,每一次都伴随流失,可用性这么差,你们还有理了?所以「简洁党」你们才不行。中国的互联网产品,很难做到既简洁又扁平,这个问题的根源在于永远有那么多信息需要呈现,永远有那么多功能需要添加,这个是中国的激烈市场竞争导致的,并不是说中国的产品就不如国外的好(我的哥哥之前在 Facebook 现在 Airbnb 工作,他经常感叹道国外的互联网产品到中国来真的都得死…)我想要讨论的是,面对中国现在互联网产品市场现状, 如果一款产品非要你站队上面两派阵营,你会选哪一派?我现在的选择是「扁平党」,因为用户面临一款眼花缭乱的 app,如果是经常使用,缺功能布局信息架构很少改动的前提下,早晚也会习惯和适应的,但是如果一些核心的东西不能第一时间暴露在用户眼中,很有可能用户就不知道你有这种功能。这个就是为什么我们设计经常会说这个产品经理傻逼吧,怎么什么东西都想展现出来,这一堆东西找个入口集合收起来页面多干净多清爽多好看。我早年间也是和诸位一样的观点,但是现在我越来越觉得,界面清爽了,你的大功能 feature 因为设计隐藏没有被发现,不是设计开发测试都白做了么,说好的 ROI 在哪里?我们大家都是互联网从业者,不管看到这篇文章的你是一位设计、产品、还是开发、测试、运营人员,我们都明白用户体验这个词是由 N多维度综合而成的一个过程性评价,它和方方面面都有关系。那既然是这么专业且牵连甚广的一个名词,我们真的就没有办法去量化评价它了吗?永远不要忘记,用户体验是个过程,而我们每个人也都是用户本身。在这里我提供一种普通用户维度的比较好用的用户体验评估方法是「穷举分析用户行为路径」。比如你是一款外卖产品的设计师,那么用户在不同产品模块下订一个外卖的流程路径大概有多少种,都穷举出来。比如你是一款在线演唱类的产品设计师,那么用户在产品中完成一首歌需要的用户路径到底有多少条,穷举所有路径之后一一优化,让路径变得更加扁平,或许是一个最「笨」但是有效的方案,怎么优化呢?用淘宝消息页举个例子:淘宝消息页上面有「交易物流」、「通知」、「互动」三个 tab,这时候我们假设一个用户三个按钮下面都有消息,用户想要看完这三个消息大概需要几次交互?答案是至少6次:「点击第一个进去 – 返回 – 点击第二个进去 – 返回 – 点击第三个进去 – 返回」,这样的交互显得呆板且冗长,淘宝团队巧妙的把三个内页集合成一个页面的三个 tab 形式,大大缩短的交互成本,这就是所谓的「把用户路径变得更扁平」:大家在使用很多产品的过程中,多多留心就会发现原来细节里面总有魔鬼。欢迎关注作者的微信公众号:「SeanyDesign」
2022年01月26日
57 阅读
0 评论
0 点赞
2021-12-29
初入职场注意事项
今天一个前不久离职的同事找到我聊聊天,刚加入了一家新公司,很多东西都不懂,同事关系处理的不是很好,之前经常看我的文章,想知道有没有什么技巧,可以更快学到东西,不用依靠同事,快速获得领导的认可。聊着聊着发现还真可以总结几点初入职场,经常犯的小错误,第一就要属爱当伸手党,有的时候爱向人请教,看上去是一个好习惯,但实际上请教的时候也要分请教的技巧,你不能什么不知道的都问,你应该经过思考以后提问。比如说你不会做一个PPT,你不能问对方说这个PPT应该怎么做呀,更好的提问方式是,这个PPT我想这么做,12345你帮我看看对不对,这样对方会比较容易愿意给出你指导,因为你是经过思考过的,而不是在一片空白的情况下,所有的空需要别人帮你填满。这种伸手党的行为是不可取的,职场不是学校,同事和领导没有义务替你回答所有的问题,替你把人生的空填上,而你什么都用疑问式的提问,很容易给别人留下什么都不懂,自己不爱动脑子的印象。第二,“我是来学东西的”,通过降低自己的身价来获取工作机会。比如说经常有人来跟我面试的时候说,我就是来学习的,只要给我这个学习机会,我什么都愿意做。看似这样很诚恳的发言,其实并不能帮他争取到工作机会,因为在我的视角里,我会这么判定这个人,他对自己的价值没有认知。也就是他提供不出与这个工作岗位匹配的价值。我开的不是学校,我开的是公司,我需要有人来干活儿,我愿意付他匹配的工资,只要他能把活干好,而不是找一群免费劳动力,我反而还要教他,浪费我的时间。刚入职场,一定要区分清楚职场跟学校之间的差别,建立自己的价值,用自己的价值去交换,而不是降低自己的身价。愿意给你这样工作机会的环境,也不是什么好环境,只是想占你便宜。最后说说获得领导的认可,我在一家公司的时候,我的一位领导跟我说了一句话,我一直记忆犹新,他说,向上管理,就是“管理好领导的期望”。这句话我默默记住了很久,后来过了两年才领悟这个意思。不是把一件事儿做完了,完成任务了,就交差了。留给领导去检查去吧,他提了意见我再改,很多人都是这样干的,领导就是你的免费改卷机器。后来改稿越来越多,领导累他也累。接收了一项工作任务,首先是要弄清楚,自己的领导在期待什么,他脑袋里对这件事情的蓝图是怎样的。然后需要做好反馈,她在什么点上需要了解情况,在什么点上她希望被你邀请介入,在什么点上觉得他应该听一次汇报,你得判断得出来这个节奏,然后再每一个期待的点上向领导进行反馈,最后交出的答卷再检查一遍是不是符合领导交代的要求。没有这个反馈的节奏,你就会导致你的上级对你失控,他对你一旦产生失控感,信任度就会下降,不安全感就会上升。以上内容来自老同事【文子】的朋友圈分享
2021年12月29日
99 阅读
0 评论
0 点赞
2021-12-29
王小波的计算机水平有多好?
转载自:https://www.zhihu.com/question/20964366/answer/95202867作者:姚勇今天逛知乎的时候,偶然看到王小波外甥,原水木年华成员,《QQ 炫舞》创始人——姚勇先生的一篇回答,讲述了他回忆中王小波在编程领域中的造诣,看完对王小波有了新的认识,现分享给大家看下。下面是正文:以下文字都是我本人写的。为了让阅读方便,减少模糊性。我在文中以第三人视角描述。而不用 “我舅舅 “,” 我姥姥 “,” 我大舅舅 “,” 我小舅舅 “之类的称呼。这是一个十几年软件工程师的习惯而已。我舅舅是王小波,我是个禁不住人肉的老百姓,资质平庸。王小波一篇《我是怎样做青年思想工作》的杂文在我青年单身适龄的年代,给我个人做了最大程度的广告,算是他老人家留给我最宝贵的遗产之一。除此之外,还有他那台用了很久的 PC,在他去世前一年送了我。他是汇编高手,自己用汇编写了 DOS 下的汉字输入法。输入法有个功能,可以加 4 声。一般拼音输入法没有这功能,这需要普通话读音正确的使用者,90 年代总共也没几种汉字输入法。看过他用自己输入法打汉字,速度几乎和盲打英文一样。那时候我大学,正在疯狂苦练吉他,并没有弄懂他用了何种技术。虽然我从小学也用 Z80 和 APPLE II 做些机器码编程做游戏,但到了中学为了高考,计算机就荒废了。他人生最后几年,WINDOWS 3.2 开始普及,然后是 WIN95。他开始从 DOS 转向 WIN32 SDK 编程。最终非常任性地熬夜苦干了很长时间,把输入法转为 WIN32 SDK 在 WINDOWS 下正常工作。当时 WINDOWS 已经有不少汉字输入法,尤其到了 WIN95 时代,他这么做也只是出于兴趣而不是在 DOS 时代的必须。就 WIN32 SDK 我们还讨论过一些。那时候 win32 sdk 真的是很难用。主要是互联网还没有(我是 96 年后用上的),资料很少,匈牙利命名法陌生。WIN32 的体系和 DOS 大相径庭,全部都很陌生,而且完全抛弃了 DOS 那套东西。所有 90 年代 DOS 底层程序员向 WIN32 的迁徙都是一部血泪史。他人生最后一年,多媒体开始普及。光驱,声卡,2D 加速卡普及。95-96 年他开始和我合计做多媒体出版。原因现在想起来很悲伤 ------ 他的书很难在大陆出版,他不得不想办法让他的作品能够让更多人看见,而平时维持生计,只能忍着严重的痔疮,每日给各种杂志写杂文稿件。多媒体的兴起,让他感觉也许利用他的技术优势,自行制作电子出版物。配上插图,音乐,用电子书籍方式可以让自己作品为大众所见。他给我看了已经制作了一部分的 DEMO,就和现在用 Micromedia 多媒体制作软件制作的电子多媒体制品很像。电子书内容是黄金时代,有图案的背景,按空格可以翻页。同时有音乐,好像偶尔还会有一点动画的特效(我记不清了) 。但当时的 DEMO 完全是他自己用 WIN32 写的 EXE 可执行程序,他那是从 WIN32 SDK 移植输入法时,基本掌握了消息处理,GDI,窗口控制等方法。还有一些底层的 TRICK。我大学后和王小波比较近,那几年每周末都在他母亲家相聚。他母亲 5 个儿女,只有他 1 个人在国内。于是他就经常住在母亲家,怕老人一个人,是个大孝子。母亲家旁边有个筒子楼里 2 间房的小屋,公共厕所和水房,冬天暖气烧得极热。偶尔我会和他住一块,里屋是他的生活起居和写作桌,外屋很小只有张床,他弟弟的孩子和我偶然会睡外屋。印象最深的就是他烧普洱茶的电炉和玻璃茶壶,里面总是有极浓的茶水,下面沉淀着大量茶叶,估计熬夜就靠那个。目睹了他后半截人生(从我记事起到他去世,中间他出过很多年),感慨很多。王小波有个八叔,当时双手打算盘,无比聪明是个天才。年少夭折。王小波父亲因为搞逻辑学,引起毛泽东注意,被毛接见聊了一下逻辑学的学术相关问题。69 心脏病发独自倒在家中过世。王小波去世方式和他父亲一模一样,区别仅在更加年轻。王小波哥哥在受文革影响挖了 10 年煤,后来去美国博士念数理逻辑,解决了一个 100 多年未解的数理逻辑问题。最后的博士毕业论文自己系的教授搞不定,专门找了数学系的教授来看。毕业后他哥哥专心开饭馆挣钱养育 2 个女儿成人。准备财务自由后再著书立传。我的最大感慨是,留得青山在,不怕没柴烧。天才也好,资质普通如我也好,人都只有一个人生。王小波妈妈去年 92 岁,10 月刚去世,白发人送走了自己两个儿子,又过了十几年才走。之前得过癌症,靠自己毅力锻炼,恢复了。王小波去世后一年,王小波弟弟又突然去世。当时孩子都没敢告诉老人。老太太感觉不对,但又无法得知真相,只是和我说她的疑心。当时国内只有我一人,只能瞒着,不停劝慰老人没事。老太太喃喃说,“除死无大事,除死无大事啊” 。除死无大事。人生在世,碰到什么坎,都只会是你人生中一个普通的节点。时间一长,什么都会成为过眼云烟。留份宽心,也许这样导致目标感没有强到能和社会精英逐鹿。但只要有耐心,不怕挫折,假以时日,目标总会实现的。作为一个 42 岁还在以玩游戏看动漫为生活主体的大叔,保持健康和有活力地追求智慧和有趣,做自己热爱的工作,保持善良,做精神自由的人,是我从王小波的人生学到最重要的东西。希望每个喜欢王小波的人,都有自己充实和健康的身体和精神。(完)
2021年12月29日
19 阅读
0 评论
0 点赞
2021-11-05
win11资源管理器菜单栏+右键菜单改回win10风格
一、上方菜单栏1、win + R 输入 regedit 打开注册表2、依次展开(或地址栏复制)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions3、右击 Shell Extensions 创建项key命名为 Blocked (如果没有)4、打开 Blocked ,右击空白处,新建字符串值。将值/名称命名为:{e2bf9676-5f8f-435c-97eb-11607a5bedf7}5、重启电脑注:如需调回至win 11 explorer,直接删除blocked 文件夹二、右键菜单1、win+r 输入 regedit 打开注册表2、依次展开(或地址栏复制)HKEY_CURRENT_USER\Software\Classes\CLSID3、右键CLSIDkey 然后新建项Key ,重命名为{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}4、右键此key {86ca1aa0-34aa-4e8b-a509-50c905bae2a2}, 新建一个key并重命名为 InprocServer325、打开 InprocServer32 ,右侧窗口双击打开 default 文件,回车保存。(设置空白text数据)6、关闭注册表,重启电脑或者使用如下修改注册表批处理语句:reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve taskkill /f /im explorer.exe & start explorer.exe若需还原把 reg add 改成 reg delete 即可
2021年11月05日
93 阅读
0 评论
0 点赞
我的日常开发工具分享
今天跟大家分享下我日常工作中常用的一些工具,或许可以帮到你提升日常的协作效率1.写作篇 ✏️1.1 EdiaryEdiary是我坚持使用最久的一款日常工作记录及知识沉淀的工具,作者也是一个很有情怀的人,从1999年发布第一个版本以来,一直维护到现在, 官方链接1.2 语雀语雀是一个蚂蚁金服孵化出来的专业的云端知识库,类似wiki,目前已经覆盖了10 万阿里员工的使用,来进行文档编写及知识沉淀 官方链接语雀我常用的两个方面思维导图:一个是语雀自带的思维导图,个人觉得UI体验很强(外表协会)日记编排:用语雀来保持记录每天在前端开发中遇到的问题及心得体会,方便复盘和回归,最重要的是排版体验高,支持编排,当你回顾你写的文章的时候,阅读体验高,像是在翻书一样1.3 ProcessOnProcessOn是一个在线协作绘图平台,为用户提供最强大、易用的作图工具。支持在线创作流程图、思维导图、组织结构图、网络拓扑图、BPMN、UML图、UI界面原型设计等我主要用ProcessOn来绘制交互图及流程图,支持在线实时编辑,不足的就是如果非付费用户则会限制绘制图的数量,下面是操作页面1.4 CarbonCarbon 用来创建美化版的代码片段,可筛选多种主题切换,然后生成你想要效果的代码片段图 官方链接1.5 Mdnicemdnicde全名为Markdown Nice,支持给markdown添加“主题元素”,有点像换肤的感觉,支持多种主观,让你的文章仿佛披上了嫁衣,最重要的是支持微信公众号、知乎、还有掘金!官方链接1.6 TyporaTypora是一款轻便简洁的Markdown编辑器,支持即时渲染技术,这也是与其他Markdown编辑器最显著的区别,将写作与预览窗口相结合,为用户呈现所见即所得的编辑模式,支持Markdown的各种基础语法,支持快捷键操作。官方链接1.7 封面模版很多童鞋很好奇,我每次文章都会附上一张主题图,是不是自己P的,虽然我会用PS做些简单的P图,但是设计还是蛮琐碎和耗时的活,时间应该用在更宝贵的地方,这里介绍的就是我使用的模版在线编辑工具 - 凡科快图 官方链接 或者 canva 官方链接1.8 Shieldsshields.io 主要是用来可以生成 在Markdown 文档中的徽章,我们经常在github的项目上看到这些徽章,来表述比如单元测试覆盖率、打包的大小、版本信息、认证信息等 官方链接1.9 Gif截图有时候图片无法去表达我们想要阐述的内容,这个时候动态图就起了很重要的作用,可以更直观的描述整个过程,我个人常用的工具为ScreenToGif官方链接 ,是一款小巧、免费、开源且功能强大的工具,1.10 网页OR屏幕截屏文章素材需要网页截图?很长时间我要给当前网页截图,一般我们常用的桌面版IM工具(如QQ、微信、钉钉)都能使用快捷键很方便的实现截屏功能,但是面对滚动截图、截取后二次编辑等功能时,这些工具就有些捉襟见肘了,在此个人推荐使用FastStone Capture官方链接。2.效率篇 ⏰在日常开发中,效率工具的使用,往往可以给我减少很多不必要时间的浪费,通过工具赋能,帮助我们提高生产效能2.1 Iconfont 图标库Iconfont 是阿里打造的图片管理平台,涵盖海量图标库,可讲选择的图标导出字体文件。 官方链接2.3 Postwoman 接口调试利器它不仅免费开源、轻量级、快速,而且还有美观的API调试工具,原名为Postwoman。能帮助我们节省时间,提升工作效率。官方链接2.4 CanIuse 兼容性查询can I use? 顾名思义:我能使用吗,能快速让我们查看浏览器对某个属性语法的兼容情况,场景应用当前在某个浏览器可以正常使用,可是换了另一个浏览器之后就不支持了,这个时候就得我们防患于未然,在对某个属性使用前,做好足够得调研,而不是等到上线才发现问题官方链接2.5 Prettier Playground 代码在线格式化应用场景:当我使用的电脑没有安装IDE,但是我又需要看别人写的代码,这个时候 Prettier Playground可以帮我将原本凌乱的代码改头换面,大大提高可读性 官方链接左边为源代码,右边为格式化后的代码
2021年05月10日
112 阅读
0 评论
0 点赞
2019-06-10
ZCMS二次开发讲解——话术准备
2019-06-20更新 :相关视频内容已更新到ZCMS产品官网,可通过如下链接查看: https://www.zving.com/c/2019-06-20/285820.shtml 第一幕:引导语大家好,我是泽元软件长沙子公司的朱治龙,今天由我来给大家讲解ZCMS3.x二次开发。本次分享主要根据这个脑图上的一些知识点结合二次开发手册进行讲解。由于ZCMS3.x采用的是前后端分离的技术架构,本次分享的内容大纲主要分为前端和后端两大块。由于我们本次学习的重点是ZCMS二次开发,二次开发涉及一些前置知识需要大家利用其它的时间进行学习,涉及的主要前置知识包括:熟悉 Eclipse 的使用、Maven 多模块开发、SpringBoot、ZCF前端采用的主要是Vue生态相关的热门技术,包括:ES6、Node、Webpack、Vue全家桶、element-ui 等现在根据二次开发文档的步骤讲解下二次开发原理及流程。首先给大家对ZCMS3做一些简单介绍。ZCMS3.X是一个功能强大的使用J2EE技术开发的站群管理系统,后端基于Springboot+ZCF+Maven多模块开发,前端使用Vue全家桶+ElementUI等主流前端技术。第二幕: 基本介绍可以通过Eclipse的插件 ZDeveloper 进行二次开发支持,通过 ZDeveloper 可以很方面的扩展ZCMS的接口、菜单、权限、定时任务、模板标签等,并允许通过系统预留的扩展点及扩展项扩展系统内容采编发、权限、工作流在内的各种行为。还提供了非常方便的数据库模型设计工具概述及技术架构现在我们打开二次开发手册,首先阅读一下ZCMS二次开发概述的内容。其中需要重点关注的点我已做了加粗标记。从加粗的几个词我们可以了解到,使用的是前后端分离的技术架构,前端使用Vue,后端基于Springboot 和ZCF,开发工具建议使用Eclipse或SpringToolSuite。推荐使用SpringToolSuite.后端主要采用Maven多模块开发模式,使用ZDeveloper插件进行二次开发。下面我们了解一下ZCMS的技术架构:从这张技术架构图中我们可以了解到前端使用的是Vue、ElementUI、Webpack、axios相关的前端技术后端使用SpringBoot来简化Java应用的初始搭建以及开发过程,使用Restful接口规范给前端提供API接口,使用SpringBoot中集成的SpringMVC来响应前端的接口请求。通过ZCP集成了组织机构、角色、用户、配置项等系统管理相关的基础功能。基于Contentcore模块提供内容管理相关的核心功能,在整个生命周期中有ZCF框架提供定时任务、事务、日志、安全监控及扩展服务、扩展项、扩展点、扩展行为等功能,使用基于ZCF的ORM模块实现数据持久层的管理。下面我们里哦啊接一下ZCF的响应流程,也就是前后端交互的流程:首先从前端页面发起一个异步请求,后端在Controller层由SpringMVC接收到请求并根据具体URL匹配规则定位到具体的Controller类中对应的方法,在方法中执行相应的后端业务逻辑处理,处理结束后返回到Controller层,由Controller层已json格式的方式将内容返回给前端,前端根据返回的数据渲染界面。第三幕:后端二次开发流程演示下面我们根据二次开发手册讲解开发环境搭建流程。首先讲解后端开发环境搭建,2.1中所提及的基础软件安装就不着重讲了,下面我们讲解ZDeveloper插件的安装,目前最新的ZDeveloper插件的版本号是3.0.7,我们将这个插件拷贝到Eclipse的Dropins或Plugins目录。我本地使用的是SpringToolSuite 4,后面我们简称为STS,这是一个为开发spring应用定制的eclipse,我们打开STS所在的目录,将文件拷贝到到对应的目录里,启动STS。为了贴近真实开发流程场景,我们新建一个新的工作区,前端开发环境前后端分离的开发模式下,后端服务只通过接口给前端界面提供服务,所以我们需要通过UI界面查看显示效果的话,还需要把前端工程也运行起来。现在我们根据前端开发环境的文档把前端工程也跑起来。下面我将以上次广汽丰田项目二次开发培训用到的示例就二次开发涉及的知识点给大家做一个简单的讲解。示例效果演示首先我们看一下这次要讲解的示例效果这个示例效果是上次为广汽丰田项目做二次开发培训准备的,主要是实现了在配置菜单下添加了一个车型管理的子菜单,在该子菜单下主要是仿造广汽丰田官网中的品牌车型栏目内容管理功能,并提供了仿照该页面的预览视图,下面我们演示一下相关的增删改查功能。单击新建按钮,在打开的“新建车型”对话框中填写相应的车型信息,选择响应的LOGO图及车型图,单击保存按钮接口规范下面我们开始讲解相关的二次开发功能实现,首先回到二次开发手册,找到2.9开发说明,开发说明中其他点大家自己看一下,我这里主要说明下第四小点,该小点主要说明的是在ZCMS中有3类业务接口,分别是数据API服务接口、后端应用服务接口、网站前端服务接口,这3类接口分别用于跟其他应用对接的API接口,为client工程提供服务的ui接口,为网站应用提供服务的front接口,3种接口在包名、类名及接口路径上都有相应的约定:名称包名类名接口路径数据API服务接口apiXxxAPI/api/xxx后端应用服务接口uiXxxUI/ui/xxx后端应用服务接口frontXxxFront/front/xxx这在我们的工程里主要体现是这样的形式:相应的模块分别放在api、front、ui包下面,里面的java类分别以API、Front、UI结尾,java类中的接口路径分别以/api/、/front/、/ui/开头
2019年06月10日
16 阅读
0 评论
0 点赞
2019-04-13
git部分高级用法
Rebase 合并该命令可以让和 merge 命令得到的结果基本是一致的。通常使用 merge 操作将分支上的代码合并到 master 中,分支样子如下所示:使用 rebase 后,会将 develop 上的 commit 按顺序移到 master 的第三个 commit 后面,分支样子如下所示:rebase 对比 merge,优势在于合并后的结果很清晰,只有一条线,劣势在于如果一旦出现冲突,解决冲突很麻烦,可能要解决多个冲突,但是 merge 出现冲突只需要解决一次。使用 rebase 应该在需要被 rebase 的分支上操作,并且该分支是本地分支。如果 develop 分支需要 rebase 到 master 上去,那么应该如下操作## branch develop git rebase master git checkout master ## 用于将 `master` 上的 HEAD 移动到最新的 commit git merge developstashstash 用于临时保存工作目录的改动。开发中可能会遇到代码写一半需要切分支打包的问题,如果这时候你不想 commit 的话,就可以使用该命令。git stash使用该命令可以暂存你的工作目录,后面想恢复工作目录,只需要使用git stash pop这样你之前临时保存的代码又回来了reflogreflog 可以看到 HEAD 的移动记录,假如之前误删了一个分支,可以通过 git reflog 看到移动 HEAD 的哈希值从图中可以看出,HEAD 的最后一次移动行为是 merge 后,接下来分支 new 就被删除了,那么我们可以通过以下命令找回 new 分支git checkout 37d9aca git checkout -b newPS:reflog 记录是有时效性的,只会保存一段时间内的记录。reset如果你想删除刚写的 commit,就可以通过以下命令实现git reset --hard HEAD^但是 reset 的本质并不是删除了 commit,而是重新设置了 HEAD 和它指向的 branch。
2019年04月13日
60 阅读
0 评论
0 点赞
2019-02-13
2018年年终总结
本文来自公司的年终总结模板,类似公司年度 KPI 考核的一部分列举过去一年你主要的10件工作ZCMS3.0:自定义表单无障碍浏览:提供项目技术支持服务:北京法网、辽宁海事局项目有使用;增加快捷键输出加密版权信息;改进功能及修复XSS安全问题响应式专题:改造专题、专题模板新建及管理流程;改进专题组件(分享组件、新浪微博、地图组件);结合前后端分离逻辑调整专题资源文件;专题删除、移动、恢复相关后端逻辑完善完善首页、系统检测、更新license、nginxsync等页面功能一键转载功能增强:使用postMessage方式改造数据交互机制;新增记住选择栏目及下载远程图片选项微信公众号中管理稿件ZCMS3.0微信小程序:根据3.0相关接口规范调整页面;界面改造;调整小程序相关配置项到站点扩展配置中融媒体功能整合及界面布局调整海关项目前端文档整理:基于element-ui 的文档工程制作;添加项目定制说明信息及新增的组件内容北外国际微信小程序实现小程序的粒子动效及性能优化北汽绅宝朗读者小程序项目参与前期功能调研小程序前端布局及动效无限极资讯小程序项目项目管理根据需求梳理相关接口规范整理相关交付文档教考融合平台前期前端工程搭建eVideoVplayer播放器改造项目前端问题技术支持交通年鉴项目启动过程增加loading效果增加收集客户端启动信息发送到指定邮箱功能增加客户端安全软件检测机制个人成长和遇到的问题个人成长微信小程序开发:通过北外国际微信小程序、北汽绅宝朗读者小程序、无限极资讯小程序3个项目的实战经验,对微信小程序相关开发、发布流程有了整体的了解。文档类网站:通过海关项目对使用VuePress或基于Node静态化项目文档机制有所实战经验。electronNW.js客户端开发及打包:通过教考融合平台项目的eVideoPlayer离线播放器、交通年鉴项目及ZECM项目,对基于electron、NW.js开发客户端及打包发布有基本了解。视频录制及后期处理:通过录制自定义表单功能演示及ZCMS响应式专题功能演示视频,掌握相关软件的使用。遇到的问题加入泽元2年多了,回顾这两年多的经历,感觉下面这张 邓宁-克鲁格心理效应图 很能应景这两年自己的成长历程。到泽元前接触过各种不同规模的门户建设项目,总感觉自己很牛逼了。现在回顾那段经历,发现其实那样的经验相对比较单一,只是基于不同的CMS建站:技能上也只是局限于切片、做模板、迁移数据以及做一些需求定制开发。前端技能层面也仅局限于写些简单的js及处理一些浏览器兼容性的问题。到泽元后,发现老板们都是走在前沿的技术大牛,身边的同事也各有所长,才意识到自己技术基础的巨大差距,感觉技术实力上跌入了绝望之谷。还好有领导及同事们的正确引导,让自己也平缓过度到现在的艰难爬坡阶段。希望接下来的2019年能在业余时间多学习,努力成长为自己想要的样子。2019年希望的成长和进步阅读开源框架源码(layui、jquery1.12.4、zeptojs)阅读清单:《深入理解计算机系统》、《SVG精髓》、《javascript权威指南》、《ElasticSearch源码解析及优化指南》、《Node.js实战:使用Egg.js+Vue.js+Docker构建渐进式、可持续集成与交付应用》掌握python开发网站及数据爬取学习数学对公司的意见和建议可以定期组织员工体检。去年一个前公司的看起来很健康壮实的同事突发脑溢血,住了1周的ICU后没能抢救过来,这样的事故对公司和员工都是不可控的风险和不可挽回的损失。优化项目问题反馈流程,可以考虑尽量安排测试工程师及实施工程师优先响应项目反馈的问题。
2019年02月13日
10 阅读
0 评论
1 点赞
2019-01-13
ZCMS专题剥离及改造方案
背景说明自ZCMS 3.x版本推出专题编辑器以来,该功能已成功吸引了众多新闻媒体单位的目光。众所周知,许多媒体单位都拥有自己的内容管理系统(CMS)。在与我们的潜在客户进行深入交流时,我们了解到一个普遍的需求:他们希望利用ZCMS强大的专题编辑器功能,同时保持内容来源的独立性,即专题展示的内容依然由他们自己的CMS提供。针对这一特定的使用场景,设计了这套初步的改造方案,它巧妙地融合了ZCMS专题编辑器的先进功能,旨在满足客户的需求,实现系统间的无缝对接。剥离后的专题编辑器功能清单简易版CMS专题模板管理(新建、编辑、删除、设为共享、取消共享、预览、模板分类)专题管理(新建、编辑、删除、预览、发布)增加组件:FAQ、时间轴、Tab标签、评论部件、自定义表单部件等统计信息:专题浏览数据(PV、UV等)动态数据:分栏部件、轮播图部件改造说明尽量改造成可独立运营的产品专题不再基于内容类型,定位于栏目层级,一个专题对应一个栏目,专题下可设置子栏目(子栏目层级仅为1级)一个专题(模板)对应多个ResponsivePage,至少包含首页、列表页、内容页专题静态化说明:一个专题相关的静态化页面及资源文件统一发布到一个目录简化权限:新建专题、可访问、可操作(编辑、发布、删除、内容管理)、查看统计数据内容管理层面可通过接口跟其他CMS进行对接、或通过数据采集方式爬取其他站点的数据轮播图组件的动态数据也跟分栏部件的动态数据配置方式保持一致实现方案专题剥离现有专题涉及的插件有:pageweaver、framework、platform、contentcore、comment、imageplayer、stat、staticize、article、media。内容核心(站点、栏目、文章等)相关的功能可整合成简易CMS。菜单 :专题(专题概览、内容管理、数据分析、域名设置、操作日志)、模板(模板管理、模板分类、模板)、互动(评论管理、自定义表单、调查投票)、设置(系统信息、组织机构、角色管理、用户管理、配置项管理、定时任务、系统日志)界面布局 :参考 云凤蝶专题改造基本流程1.扩展ZCSpecial表,用于存储专题和专题模板数据,增加pages字段存储ZCResponsivePage的关联关系,数据为json内容,内容格式如下:[{ fileName: 'home' // 文件名 fileType: 'index', // 类型,值为index|list|detail label:'首页', // 名称 pageID: 23444321 // 关联页面ID },{ fileName: 'list' fileType: 'list', label:'列表页', pageID: 10301 },{ fileName: 'detail' fileType: 'detail', label:'内容页', pageID: 10302 }]专题的动态数据配置界面增加层级配置项,值为Child、Root、Current、CurrentAndChild,用于列表页取当前栏目的数据。专题编辑器中无数据的情况下使用mock数据,在编辑器中内置部分栏目、内容mock数据。增加分页条组件,可基于kkpager实现,可配置几种风格,分页组件仅用于专题列表页。栏目页数据分页是否有必要做静态化待沟通。简化ZCResponsivePage表跟CMS整合通过 SSO 整合身份认证专题系统提供新建专题入口URL、专题模板管理URL专题系统提供专题管理接口:专题列表(ID、名称、创建时间、创建者、封面图、状态、专题发布后的URL)、删除、发布、排序相关数据表内容核心 :ZCSite、ZCCatalog、ZCContent、ZCResources专题 :ZCSpecial、ZCSpecialBlock、ZCResponsivePage、ZCPageSnapshot、ZCPageWidgetLibrary、、ZCSubjectType、ZCPageDynamicConfig评论 :ZCComment、ZCCommentStatistics、ZCFaceVote、ZCFaceVoteIP、ZCFace自定义表单 :ZCCustomFormType、ZCCustomFormModel、ZCCustomFormData调查 :ZCVote、ZCVoteSubject、ZCVoteItem、ZCVoteLog访问统计 :ZCStatItem、ZCVisitLogTODO操作手册资源同步到CDN资源分发到其他服务器
2019年01月13日
21 阅读
0 评论
0 点赞
2017-09-07
基于nodejs的微服务的注册与发现机制实现的调研
https://github.com/lehoangduc/node-registrify基于hapi和redis的服务注册,同时提供命令行操作被设计为一个注册中心,注册服务和服务发现由客户端通过RESTAPI去获取优点:代码逻辑比较清晰,接口比较全问题:github星:22颗 参考价值:4分 接口全https://github.com/samuelkitazume/nodeservices基于express和nedb,包括服务注册与服务发现,提供命令行操作。被设计为一个注册中心。优点:代码简洁,问题:没有健康检查github星:1颗 参考价值:5分https://github.com/Digipolitan/yemma-discoveryhttps://github.com/Digipolitan/yemma基于express、mongoDB、socket.io,被设计为子应用(客户端)调用,通过token鉴权。优点:有心跳机制,有服务token鉴权,注册服务非常简单。问题:要配合yemma框架,代码不直观github星:1颗 参考价值:3分https://github.com/ParthaBoocha/service-registry基于glue(glue)基于hapi,看代码迁移到express也很容易,用的json文件存储数据对跨域有处理,被设计为一个注册中心。优点:代码简洁问题:对微服务没有特别的处理,例如没有心跳机制,只是一个简单的数据存储读取github星:0颗 参考价值:5分 json文件存数据https://github.com/express-components/registry基于 express、nedb、socket.io的,基于udp协议的服务注册,有健康检查,健康检查没使用数据训的TTL特性,是用的时间比较,然后主支去请求各服务的状态,看来是被设计为一个注册中心。服务发现由客户端通过RESTAPI去获取。优点:基于udp协议,有健康检查问题:github星:0颗 参考价值:7分 udp协议与健康检查https://github.com/RCT-Solutions/rct-nars基于express,处理了跨域情况,使用自己写的迷你内存数据库,有健康检查接口(待客户端去调用),注册和服务发现都是由客户端通过RESTAPI去获取,看来是设计为一个注册中心优点:模块分的比较细,对心跳包等的数据结构定义规范问题:模块分的比较细,健康检查没示例github星:0颗 参考价值:6分 内存数据库,https://github.com/nswbmw/etcd-proxy基于koa和etcd的,有服务注册,本身的实现为子应用(客户端),非注册中心,注册中心即为数据库,心跳机制为每5秒去更新etcd里的过期时间(TTL,即Time To Life),服务发现由客户端通过RESTAPI去获取通过不断地注册来作心跳,通过工具库ip获取ip,通过工具库get-port获取可用端口,好像是相同的应用名允许注册多个,返回时随机取一个优点:121行代码,代码简洁,功能完备,赞问题:依赖etcd,使用了etcd的过期机制TTLgithub星:3颗 参考价值:8分 代码简洁https://github.com/koalazak/redis-registry基于redis,有服务注册,本身的实现为子应用(客户端),非注册中心,注册中心即为数据库,心跳机制为每5秒去更新redis里的过期时间,服务发现由客户端通过查询redis去获取通过工具库network-address获取,好像是相同的应用名允许注册多个,返回时随机取一个优点:174行代码,代码简洁,问题:依赖redis,使用了redis的过期机制expiregithub星:3颗 参考价值:7分 代码简洁{name: 'my-service-name',port: 8080,hostname: '192.168.1.10',host: '192.168.1.10:8080',url: 'http://192.168.1.10:8080'}发现几个工具包https://www.npmjs.com/package/get-port获得一个没有被占用的端口https://www.npmjs.com/package/network-address获取本地iphttps://www.npmjs.com/package/ip获取ip,及掩码等,功能比network-address多https://www.npmjs.com/package/network-address获取机器ip或ipv6https://www.npmjs.com/package/nedb-promisehttps://github.com/louischatriot/nedbjs数据库,执久或内存数据库,API为MongoDB子集https://www.npmjs.com/package/glue管理hapi.js创建的服务https://www.npmjs.com/package/hapi知名web服务框架https://github.com/coreos/etcdgo语言写的分布式高可用键值对数据库https://www.npmjs.com/package/request-promise
2017年09月07日
20 阅读
0 评论
0 点赞
2017-06-28
Git常用命令
前言Git,是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。支持克隆/下载。Git教程: Git Book 官方中文文档Git GUI客户端: TortoiseGit(Windows)Git常用命令仓库# 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码历史 $ git clone [url]配置# 显示当前的Git配置 $ git config --list # 编辑Git配置文件 $ git config -e [--global] # 设置提交代码时的用户信息 $ git config [--global] user.name "[name]" $ git config [--global] user.email "[email address]"增加/删除文件# 添加指定文件到暂存区 $ git add [file1] [file2] ... # 添加指定目录到暂存区,包括子目录 $ git add [dir] # 添加当前目录的所有文件到暂存区 $ git add . # 添加每个变化前,都会要求确认 # 对于同一个文件的多处变化,可以实现分次提交 $ git add -p # 删除工作区文件,并且将这次删除放入暂存区 $ git rm [file1] [file2] ... # 停止追踪指定文件,但该文件会保留在工作区 $ git rm --cached [file] # 改名文件,并且将这个改名放入暂存区 $ git mv [file-original] [file-renamed]代码提交# 提交暂存区到仓库区 $ git commit -m [message] # 提交暂存区的指定文件到仓库区 $ git commit [file1] [file2] ... -m [message] # 提交工作区自上次commit之后的变化,直接到仓库区 $ git commit -a # 提交时显示所有diff信息 $ git commit -v # 使用一次新的commit,替代上一次提交 # 如果代码没有任何新变化,则用来改写上一次commit的提交信息 $ git commit --amend -m [message] # 重做上一次commit,并包括指定文件的新变化 $ git commit --amend [file1] [file2] ...分支# 列出所有本地分支 $ git branch # 列出所有远程分支 $ git branch -r # 列出所有本地分支和远程分支 $ git branch -a # 新建一个分支,但依然停留在当前分支 $ git branch [branch-name] # 新建一个分支,并切换到该分支 $ git checkout -b [branch] # 新建一个分支,指向指定commit $ git branch [branch] [commit] # 新建一个分支,与指定的远程分支建立追踪关系 $ git branch --track [branch] [remote-branch] # 切换到指定分支,并更新工作区 $ git checkout [branch-name] # 切换到上一个分支 $ git checkout - # 建立追踪关系,在现有分支与指定的远程分支之间 $ git branch --set-upstream [branch] [remote-branch] # 合并指定分支到当前分支 $ git merge [branch] # 选择一个commit,合并进当前分支 $ git cherry-pick [commit] # 删除分支 $ git branch -d [branch-name] # 删除远程分支 $ git push origin --delete [branch-name] $ git branch -dr [remote/branch]标签# 列出所有tag $ git tag # 新建一个tag在当前commit $ git tag [tag] # 新建一个tag在指定commit $ git tag [tag] [commit] # 删除本地tag $ git tag -d [tag] # 删除远程tag $ git push origin :refs/tags/[tagName] # 查看tag信息 $ git show [tag] # 提交指定tag $ git push [remote] [tag] # 提交所有tag $ git push [remote] --tags # 新建一个分支,指向某个tag $ git checkout -b [branch] [tag]查看信息# 显示有变更的文件 $ git status # 显示当前分支的版本历史 $ git log # 显示commit历史,以及每次commit发生变更的文件 $ git log --stat # 搜索提交历史,根据关键词 $ git log -S [keyword] # 显示某个commit之后的所有变动,每个commit占据一行 $ git log [tag] HEAD --pretty=format:%s # 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件 $ git log [tag] HEAD --grep feature # 显示某个文件的版本历史,包括文件改名 $ git log --follow [file] $ git whatchanged [file] # 显示指定文件相关的每一次diff $ git log -p [file] # 显示过去5次提交 $ git log -5 --pretty --oneline # 显示所有提交过的用户,按提交次数排序 $ git shortlog -sn # 显示指定文件是什么人在什么时间修改过 $ git blame [file] # 显示暂存区和工作区的差异 $ git diff # 显示暂存区和上一个commit的差异 $ git diff --cached [file] # 显示工作区与当前分支最新commit之间的差异 $ git diff HEAD # 显示两次提交之间的差异 $ git diff [first-branch]...[second-branch] # 显示今天你写了多少行代码 $ git diff --shortstat "@{0 day ago}" # 显示某次提交的元数据和内容变化 $ git show [commit] # 显示某次提交发生变化的文件 $ git show --name-only [commit] # 显示某次提交时,某个文件的内容 $ git show [commit]:[filename] # 显示当前分支的最近几次提交 $ git reflog远程同步# 下载远程仓库的所有变动 $ git fetch [remote] # 显示所有远程仓库 $ git remote -v # 显示某个远程仓库的信息 $ git remote show [remote] # 增加一个新的远程仓库,并命名 $ git remote add [shortname] [url] # 取回远程仓库的变化,并与本地分支合并 $ git pull [remote] [branch] # 上传本地指定分支到远程仓库 $ git push [remote] [branch] # 强行推送当前分支到远程仓库,即使有冲突 $ git push [remote] --force # 推送所有分支到远程仓库 $ git push [remote] --all撤销# 恢复暂存区的指定文件到工作区 $ git checkout [file] # 恢复某个commit的指定文件到暂存区和工作区 $ git checkout [commit] [file] # 恢复暂存区的所有文件到工作区 $ git checkout . # 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变 $ git reset [file] # 重置暂存区与工作区,与上一次commit保持一致 $ git reset --hard # 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变 $ git reset [commit] # 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致 $ git reset --hard [commit] # 重置当前HEAD为指定commit,但保持暂存区和工作区不变 $ git reset --keep [commit] # 新建一个commit,用来撤销指定commit # 后者的所有变化都将被前者抵消,并且应用到当前分支 $ git revert [commit] # 暂时将未提交的变化移除,稍后再移入 $ git stash $ git stash pop其他# 生成一个可供发布的压缩包 $ git archive
2017年06月28日
24 阅读
0 评论
0 点赞
2016-05-09
产品经理-常用工具
产品经理一定要有敏锐的市场洞察力,而敏锐的洞察力一方面来源于直觉和经验,更重要的则是来源于市场调查和数据分析。所以在这里可以看到使用Excel进行最基本的数据分析和图表分析是必备技能,如果需要对数据进行多个维度的分析和分类汇总,则数据透视图是必须要使用的功能。 对于产品方案,技术建议书,产品规划报告,产品需求说明书等体现形式仍然是Word文档格式居多。因此Word的使用又是通用技能,包括最常用的模板使用 和排版,表格的设计,格式的调整等。当这些内容都上升到组织级Word模板后其实很多问题就简单化了,剩下的重点仍然是文档结构的组织和思维。 对于产品方案介绍往往又需要经常去给客户演示,因此PPT的使用又是必备的技能。产品经理需要形成一套适合自己使用的模板库,配色标准等。剩下的问题仍然是结构化思维,静态呈现和动态呈现的问题。演进的好坏,PPT制作的好坏直接影响到是否都打动客户。 很多产品经理没有认识到这些办公软件的重要性,很多文档化的工作,数据的整理和分析不可能完全交给他人来做,因此产品经理就需要随时关注这些通用技能,否则很多时间都将浪费在这些工具的使用上,浪费在重复上,而这些时间完全应该节约出来用到结构化思维上面。 对于产品经理而言最重要的就是随时的理清思维和细化构思,因此对于理清静态思维借我们说的搞清楚事物的组成结构和分解事物,最常用的工具当然是 MindManager思维导图。而对于动态思维,如在业务流程分析,产品需求,用户需求中都大量的涉及到流程和阶段发展等概念。因此对于流程图制作软件 如Visio的使用又是我们必备的技能。对于Visio很多模板都讲经常用到,如流程图制作特别是带职能带的标准化流程图,数据模型(E-R)图,部署 图,架构图,组成结构图等。这些图都适合使用Visio来完成。 产品经理一个重要职能就是要通过市场调研和分析,加上对客户群的分析和技术发展的预测,来考虑产品的构思,而产品的构思是需要快速的原型展现。因此对于不 同的行业都需要熟练的使用快速的原型展现工具。在IT开发中也有很多原型开发工具,如DreamWeaver,Visual Studio.net IDE等都可以快速的开发原型。或者使用专门的原型工具,如Axure RP等。在现阶段我们更加强调的是快速的原型开发,而且最好能够开发高仿真的原型。有这种原型是和客户间进行沟通和需求确认最好的方法。 对于个人时间管理方面最重要的就是凡事有记录,凡事有计划。这里有两个比较好的组合,一个是电子日记本Ediary+Google日历+Gmail就完全 够用了,这个可以在网上免费下载到。另外一个是Outlook+OneNote的组合,这个也是网上很多人推荐的组合。在这里最重要的还是电子日记本,体 现每天事情都有记录,首先要成记录的习惯。 为什么要掌握一种工具,这里我的一个重要理解就是由于没有借助工具,我们在一些事情上浪费了大量的时间。而这些时间本应该是节约出来进行思考用的。 产品经理本身也可以理解为大的项目经理,因此做产品规划和版本计划的工作是少不了的,因此项目管理工具的使用仍然是必须要掌握的工具,如微软的Project,通过Project要能够安排出详细的进度计划和资源计划,同时进行任务的跟踪和监控。{lamp/}替代project的软件:GanttProject项目管理工具:dotProject、 http://www.kingrein.com/cn/h-col-155.html原型工具:Axure产品经理的计划管理工具:GOOGLE日历、Project、Todolist 均可以产品经理的思考工具:Mindmanager 或者 txt产品经理的流程工具:Visio产品经理对于Office的使用频率会很高,特别提醒,一个优秀的产品经理,写汇报材料的能力会很强。
2016年05月09日
30 阅读
0 评论
0 点赞
2016-05-07
前端工作中保证设计质量的规范
对设计质量的保证设计前先讨论,确定一下布局、风格、颜色设计稿中需要设计出鼠标交互的各种状态,可标明在页面空白处或者设置为隐藏图层等等,提升网站的用户体验。如:导航的当前点击状态、焦点图切换、链接文字和图片、按钮、Tab切换、表单和表格的交互、弹出层、浮动层等等。网站各页面布局、风格要保持一致且清晰美观,字体的大小、颜色要相同,禁止出现模糊、虚边、锯齿等细节问题。设计后发给客户前要给设计总监看一下根据客户的修改意见作出的后续修改,给客户发修改稿时,邮件抄送给设计总监前端制作前,和设计确认页面上的下拉菜单、翻转按钮等的效果,确认焦点图、tab页签等交互的表现方式页面中有特殊字体或者大于16px的常规字体(内容标题除外),需制作人员切为图片。前端切片后,模板置标前要让设计师确认一下是否和设计稿一致,设计师审核后方可继续下一工作。布署在外网上,填充了模拟数据之后要设计确认一下是否同设计预期。
2016年05月07日
47 阅读
0 评论
0 点赞
1
2