卫哲的3+1思考法:测量项目靠谱程度
卫哲是中国商界的一个传奇人物,干一行成一行:证券行业起家,后做咨询,最后投身实业,带领一个零售业企业送入世界500强,也曾在阿里巴巴担任过集团执行副总裁,电商业务CEO。这次整理旧电脑发现了我2011年摘抄的这篇文章,转载于此处,原文应该出自豆瓣。 近几年在年初年尾的时候总碰到这样的事:“现在的小老板都用个小本本记帐,太不方便了,我们今年要给中小企业提供一个管理财务的工具,这样就可以帮助中小企业把钱管起来了”,“给客户做个电子传真的功能吧,他们就可以节约大量的传真费用和纸了”。“给客户做个在线买软件服务的开放平台吧,这样他们就能在这里买到所有需要的软件服务了”…… 当我们决定做什么的时候,成功还是失败,50%就已经注定了。那究竟什么是靠谱的呢?貌似只有做了才知道,那有办法提高成功率吗?有一次卫哲来做走动管理,对每一条产品线都问了3+1个问题,令我印象深刻: 当时我们正在做一款淘宝卖家的管理工具,其中有一个功能是帮助淘宝卖家研究市场行情的,接着问题就来了: 卫:“你们怎么想到要做这个产品的?” 我:“我们在和卖家接触的时候发现有很多人花很多时间了解竞争对手的情况和市场上什么好卖...
从B2B演变看技术架构与业务的关系
从事技术架构工作,在不少时候会感觉到组织架构、业务架构会限制你在技术上采用更合理的架构。从非技术角度来看,架构师常常会过度设计。这份PPT收集自网络,是阿里巴巴的架构师在2016年架构师峰会的分享,侵删。全文如下:
使用docker发布nodejs应用
docker可以和nodejs结合的很好。下面以一个简单的应用为例说明如何发布docker镜像。源码见:gh-oauth-server。整个构建和发布使用的是阿里云镜像仓库。 创建dockerfile 在项目根目录中新建Dockerfile # 基础镜像FROM node:8# 在镜像内部创建app的工作目录WORKDIR /usr/src/app# 把package.json或者package-lock.json放入镜像中COPY package*.json ./# 安装依赖RUN npm install# 放入项目文件COPY . .# 开放端口EXPOSE 3000# 启动命令CMD [ "npm", "start" ] 在项目根目录中添加.dockerignore文件。根据实际需要编写,以指明生成镜像时需要忽略的文件或目录 node_modulesnpm-debug.log 配置阿里云自动构建 将项目代码上传到GitHub后,在阿里云新建镜像仓库,在本例中镜像仓库为gh-oauth-server,并关联到GitHub仓库。关...
spring boot 网站图标设置
这个真是超冷的知识。spring boot写的restful api,在浏览器地址栏访问的时候,总是一片绿色的小叶子。如果想改变它,丢一个favicon.icon文件到resources/static目录下,就可以了。
CentOS 7 Lantern
安装必备软件 sudo yum install epel-releasesudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.rosudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpmsudo yum install aliensudo yum install rpmrebuild 下载 lantern 的 deb 包(for ubuntu), 这里。 转换 deb 包到 rpm 包 sudo alien -r lantern-installer-64-bit.debsudo rpmrebuild -pe lantern-4.8.2-2.x86_64.rpm 在弹出的配置文件中,将最后面的内容替换成以下内容 (Converted from a deb package by alien version 8.95.)%files#%dir %attr...
实现Java Web框架的一种简单思路
在 Java EE 领域,Spring 全家桶基本处于垄断地位。作为一个编程人员,用框架越久,就离底层越远(虽然我们离计算机底层已经十万八千里远了)。于是萌生了自己写一个 Java Web 框架的想法,花了些业务时间,写出来一个低仿低配版 Spring 。这篇文章从思路层面做一下总结。 概述抛却框架,使用 java 去实现一个 Web 项目,核心是 Servlet。一个最简单的 Web 项目,可以直接继承HttpServlet,重写service之类的方法,并使用@WebServlet的注解指明urlPattern即可。 简单的去看一个 web 项目,就是拿到request,根据request的内容,比如method和path,去查找并执行指定的业务逻辑,生成响应后,发送response。 在spring mvc中,使用@Controller注解去标明这是一个响应请求的类,使用方法上的@RequestMapping等注解去标明这个方法是用来响应哪个method和path。生成响应的整个过程,因为可能会涉及到很复杂的业务处理,又往下分出服务层,模型层等等,这里又涉及到@Serv...
AOP浅析
aop 是现代web框架底层核心技术之一,很多人能熟练运用 @aspect @joinpoint 去实现业务代码,但未必明白 aop 的来龙去脉。考虑这样一个say(): public class Hello0 { public void say(){ System.out.println("hello"); }} 如果想在say()前后执行一些增强代码,该怎么做呢? 实现方案一小A采用了下面的写法。很不幸,小A这段代码写完后,就被辞退了。 public class Hello0plus { private Hello0 hello0; public Hello0plus() { this.hello0 = new Hello0(); } public void say(){ before(); hello0.say(); after(); } pr...
JointJS试用记录
由于一个项目需要绘制流程图。在做JS元素的选型时,看到 JointJS 的介绍,感觉应该可以满足我们的需要。不过还是得试试才知道。所以我打算按照以下顺序去试用 JointJS 。 快速了解如何使用 JointJS 试验如何用 JointJS 实现我们的关键需求点 自定义元素 自定义元素属性 与后端交互 JointJS速览入门Hello World下面时官方给出的入门demo例子,可以看到 JointJS 依赖jquery、lodash、backbone,使用 JointJS 只需要引入joint.css和joint.js即可。定义一个div用来盛放绘制的图形。 <!DOCTYPE html><html><head> <link rel="stylesheet" type="text/css" href="css/joint.css" /></head><body><!-- content --><div id=&q...
使用JS检测自定义协议是否存在
之前在《自定义通用URL协议实现在浏览器中打开本机任意程序》介绍了通过自定义协议使的浏览器可以调起客户端本地程序的方法,在企业环境的实际应用中,又面临着如何检测自定义的协议是否存在的问题,ie下可以通过activex检测注册表项,chrome该怎么办呢?有没有通用的解决办法呢?答案是肯定的,甚至有人已经将该功能封装成了通用JS。具体如下。 访问 github,下载 protocolcheck.js 。引用该js后,即可使用以下代码检测 window.protocolCheck(href,callback) 示例代码 example.html。ff协议是自定义通用URL协议实现在浏览器中打开本机任意程序文中示例的协议。你可以替换成任意存在的协议。 <!DOCTYPE html><html><head lang="zh"> <meta charset="UTF-8"> <title>自定义协议探测</title></head><bo...
yum删除无用的包
yum在安装包时,会自动安装相关依赖,但是yum在卸载包时却只会卸载指定的包,这就导致了系统里多了很多当初当作依赖被安装进来的无用的包。由于linux系统的机制,没有特别好的解决办法,有以下两个方法近似处理。 使用 yum autoremove 命令 sudo yum autoremove 这个命令的问题是识别的并不完整。但基本没有风险。 使用 yum history undo命令 sudo yum install tomcatsudo yum history list tomcat已加载插件:fastestmirrorID | 命令行 | 日期和时间 | 操作 | 变更数 ------------------------------------------------------------------------------- 47 | install tomcat.noarch | 2018-08-21 10:56 | Install | 21 hist...
