Category Archives: 程序人生
知道创宇研发技能表v2.2
-
2014/3/9 发布
by @知道创宇(www.knownsec.com) @余弦 & 行之
知道创宇是国内Geek十足且普遍被认为特别有前途的互联网安全公司,
动态请关注微信公众号:Lazy-Thought。
-
说明
-
本技能表为知道创宇研发工程师必备技能
-
聪明的人会根据每个tip自驱动扩展
-
不聪明的,坐等别人手把手的人请绕行,不仅不适合知道创宇,也不适合任何有Geek精神的公司
- 附件标志是我们推荐的附加资源,感谢资源提供者
-
-
通用技能
-
公司与个人
-
公司是盈利性组织
-
个人和公司必须双赢
-
工作
-
在认同公司理念且能够给公司创造足够价值的基础上,为个人发展而工作
-
-
-
沟通、反馈、责任
-
一个无沟通能力的人,要么是天才,要么是不可爱的人
-
反馈要及时
-
避免出问题不反馈,影响进度
-
方式
-
正式的:邮件
-
临时的:QQ等即时通信
-
礼貌的:给个电话、短信
-
-
-
工作有大小,责任心无大小
-
周报的透明
-
意义:大家互相了解工作与心得,有利于自己的判断与成长
-
不是单纯的给领导汇报工作
-
-
-
任务四象限,决定优先级
-
紧急重要
-
重要不紧急
-
紧急不重要
-
不紧急不重要
-
-
新事物的敏感性
-
保持好奇心
-
不要局限在自己的圈子,适当跨界吸收灵感
-
订阅国内外优秀博客/资源,鲜果RSS阅读不错
-
英文很重要
-
-
选择性参与一些必要的会议,听必要的主题,讨论必要的话题
-
-
成长
-
对知识的渴望程度决定了前进动力的大小
- BT常说:「做人一定要狂热!」
- 我说:「一定得贪婪!」
-
不要矫情,不要浮夸!
-
和比你厉害的人在一起,和一流的人工作
-
指点往往是精华
- 杜绝笨蛋爆炸
-
二流的人招进来的人不太可能是一流的
-
-
-
思考
-
批判性思考
-
换位思考
-
- 提问的智慧
-
遇到问题先独立思考,尽最大努力后再提问
-
http://www.wapm.cn/smart-questions/smart-questions-zh.html
-
- 小事心态
-
越基础的事越关键,需要越细心
-
不要一味盲目追求「高级感」,而忽视「小事」/「简单事」/「基础事」
-
基础不牢、地动山摇
-
小事做不好,别提大事
-
- 任务拆分
- 方法论
-
完成一件事有好几条途径,优秀的人的途径最短
-
任务拆分很容易得出做事的方法论
-
好的「方法论」会让你具备更强的「创造力」!
- 时刻问自己:「是否具备创造力?」
-
-
-
牛人姿态
-
即使现在不是牛人,也得具备这样的姿态
-
这种感觉只能意会
-
没有一定扎实内功与远见的人很少有这样的姿态
-
- 完成的定义
-
比如写个POC
-
1. 搞懂了目标Web应用漏洞的原理
-
2. 熟练运用Python各相关模块与机制
-
3. 熟练了解了HTTP协议
-
HTTP请求
-
HTTP响应
-
-
4. 代码写得够规范,让人看起来就是爽
-
5. 程序经过足够的测试
-
黑测试
-
白测试
-
-
6. 及时反馈进度
-
我遇到困难了
-
我搞定了
-
-
7. 更新相关文档,沉淀
-
-
- 熟练的定义
-
比如熟练SQL注入
-
SQL语句这门“语言”能脱离文档顺手写出
-
主流数据库的SQL特有函数、存储过程、机制我都了如指掌
-
MySQL
-
MSSQL
-
Oracel
-
Postgre
-
Access
-
SQLite
-
…
-
-
牛逼的工具我不仅用的顺其自然,源码还读过几遍,我能修改
-
sqlmap
-
…
-
-
我具备创造性,而不仅仅是跟在大牛身后
-
研究出了几个不错的技巧
-
发了几篇不错的Paper
-
对外会议/沙龙等进行了几次分享
-
写出了自己的相关工具,爽
-
-
我实战了N回,遇到了很多奇葩环境,我有足够的信心绕过
-
以上这些之后,这才叫熟练!其他同理
-
-
-
好书推荐
-
推荐理由
-
打通任督二脉的书,怎能不看?
-
任何科学研究最终必须至少到哲学层面,触碰到上帝的脚
-
具体技术类书籍请见“专业技能”相关部分
-
-
鸡汤类
-
黑客与画家
-
印象深刻:设计者的品味
-
好设计是简单的设计
-
抓住本质
-
-
好设计是永不过时的设计
-
如果解决方法是丑陋的,那就肯定还有更好的解决方法,只是还没有发现而已
-
-
好设计是解决主要问题的设计
-
好设计是启发性的设计
-
好设计通常是有点趣味性的设计
-
好设计是艰苦的设计
-
好设计是看似容易的设计
-
好设计是对称的设计
-
好设计是模仿大自然的设计
-
好设计是一种再设计
-
好设计是能够复制的设计
-
好设计往往是奇特的设计
-
好设计是成批出现的
-
好设计常常是大胆的设计
-
-
-
浪潮之巅
-
感受IT帝国的崛起与没落,我们现在站在又一个互联网浪潮之巅
-
-
-
洁癖类
-
重构
-
代码整洁之道
-
代码大全2
-
数学之美
-
-
敏捷类
-
Rework中文版
-
37signals团队的敏捷经验
-
-
高效程序员的45个习惯
-
-
产品类
-
人人都是产品经理
-
结网
-
-
神书
-
自私的基因
-
失控
-
万物由来
-
-
…
-
-
-
专业技能
- 原则
-
至少完整看完与练习好一本书
-
至少过一遍官方文档
-
- 基础必备
-
HTTP抓包与调试
-
Firefox插件
-
Firebug
-
抓包与各种调试
-
-
Tamper Data
-
拦截修改
-
-
Live Http Header
-
重放功能
-
-
Hackbar
-
编码解码/POST提交
-
-
Modify Headers
-
修改头部
-
-
-
Fiddler
-
浏览器代理神器
-
拦截请求或响应
-
抓包
-
重放
-
模拟请求
-
编码解码
-
第三方扩展
-
Watcher
-
Web前端安全的自动审计工具
-
-
-
-
Wireshark
-
各种强大的过滤器语法
-
-
Tcpdump
-
命令行的类Wireshark抓包神器
-
-
Python
-
urllib2
-
打开请求响应调试
-
编辑urllib2的do_open里的h.set_debuglevel
-
改为h.set_debuglevel(1),这时可以清晰看到请求响应数据,包括https
-
-
-
-
-
什么是跳转
-
服务端跳转
-
302
-
<?php header(“Location: 3.php”); ?>
-
-
301
-
<?php header(“HTTP/1.1 301 Moved Permanently”); header(“Location: 2.php”); ?>
-
-
u=urllib2.urlopen(url)后,u.url能得到服务端跳转后的地址
-
urllib2自己的特性
-
所谓的会跟进去
-
-
-
客户端跳转
-
<meta http-equiv=”refresh” content=”0; url=http://www.evilcos.me” />
-
htmlparse解析就行了
-
-
location.href=”http://evilcos.me”;
-
正则(弱),js引擎(王道)
-
-
-
-
Python编码规范
-
入门书
-
Python核心编程2
-
第4章 Python对象
-
完整熟练
-
-
6.8 Unicode
-
完整熟练
-
-
8.11 迭代器和iter()函数
-
完整熟练
-
-
第9章 文件的输入和输出
-
完整熟练
-
-
第10章 错误和异常
-
完整熟练
-
-
第11章 函数和函数式编程
-
完整熟练
-
-
第12章 模块
-
完整熟练
-
-
第14章 执行环境
-
完整熟练
-
-
第15章 正则表达式
- 完整熟练
-
第18章 多线程编程
-
完整熟练
-
-
20.2 使用Python进行Web应用:创建一个简单的Web客户端
-
完整熟练
-
-
-
-
Office能力
-
Word文档编写,看去要专业,尤其对外的
-
Excel里面大量的统计、图表功能,需要善于使用
-
PPT演讲、培训等必备,如何做好PPT?百度一下……
- 进一步
-
yEd
-
Visio
-
FreeMind
-
本技能表就是这个制作
-
-
-
-
熟练VIM
-
算法
-
快排
-
二分
-
-
正则表达式
-
调试工具
- Kodos
- RegexBuddy
-
支持多种语言
-
支持调试优化
-
-
正则图解
-
-
-
研发能力
-
瀑布模型
-
需求->需求分析->设计->开发->测试->上线->运维/运营
-
- 需求分析能力
-
给你一个需求,如何给出一个优美的执行思路——方法论
-
这个能力非常非常非常的关键
-
-
调试能力
-
只要定位出,就没有解决不了的Bugs
-
肉眼看到的都是假象
-
一定要专业的工具与经验配合
-
-
Bugs在哪出现,最终就在哪进行真实模拟调试
-
缩小范围
-
构建自己的测试样例
-
排除网络复杂未知情况
-
-
关联模块一个个排除
-
Python单步调试
-
import pdb;pdb.set_trace()
-
在需要单步调试的地方加上面这句,运行程序后中断在此,然后h查看指令进行一步步细细调试
-
-
粗暴调试:print
-
-
-
敏捷思想
-
快速迭代
-
任务拆细
-
v1原则:定义好v1的目标,快速完成v1为优先
-
习惯Wiki记录,利于沉淀与分享
-
-
-
翻墙
-
SSH隧道
-
本地转发
-
ssh -L <local port>:<remote host>:<remote port> <SSH hostname>
-
-
远程转发
-
反弹
-
ssh -R <local port>:<remote host>:<remote port> <SSH hostname>
-
-
动态转发
-
ssh -D <local port> <SSH Server>
-
-
-
Web安全
-
Web服务组件
-
钟馗之眼
-
网络空间搜索引擎
-
大数据,懂的人懂,不懂的人不懂
-
-
组件具有影响面,越底层的组件影响面可能越大
-
安全维度
-
漏洞
-
风险
-
事件
-
-
Web安全标准
-
OWASP
-
WASC
-
我们内部Wiki
-
-
实战环境
-
XSS
-
ks-xsslab_open(内部虚拟机)
-
可以搞通
-
XSS
-
CSRF
-
ClickJacking
-
-
-
-
-
SQL
-
-
SQLI-LABS is a platform to learn SQLI
-
-
-
500多个WSL靶场
-
渗透虚拟机/BT5/Kali
-
海量各类型黑客工具
-
-
-
书
-
黑客攻防技术宝典(Web实战篇)
-
白帽子讲Web安全
-
Web前端黑客技术揭秘
-
我和xisigr自己出品
-
-
SQL注入攻击与防御
-
-
papers
-
BlackHat/Defcon/国内各安全沙龙等Papers需要持续跟进
-
-
研发清单
-
编码环境
-
pip
-
Vagrant
-
tmux/screen
-
vim
-
zsh + oh-my-zsh
-
Python2.7
-
>Django1.4
-
web.py
-
node.js
-
Ubuntu/Gentoo/Centos
-
ipython
-
版本控制
-
git/svn
-
gitlab
-
-
Nginx+uWSGI
-
-
Python
-
官方手册
-
至少过一遍,这都没过一遍,视野会局限
-
行之说:「我没看过Python的书,却熟读官方手册……」
-
-
-
Linux
-
书
-
-
前端
-
书
-
JavaScript DOM编程艺术
-
-
了解DOM
-
这同样是搞好前端安全的必要基础
-
-
库
-
jQuery
-
优秀的插件应该体验一遍,并做些尝试
-
官方文档得过一遍
-
-
ECharts
-
来自百度
-
-
Google API
-
ZoomEye Map组件
-
ZoomEye团队自己基于开源的打造
-
-
AngularJS
-
Google出品的颠覆性前端框架
-
-
Bootstrap
-
应该使用一遍
-
-
-
-
爬虫进阶
-
代理池
-
爬虫「稳定」需要
-
-
网络请求
-
wget/curl
-
urllib2/httplib2/requests
- scrapy
-
-
验证码破解
-
pytesser
-
-
-
调度
-
crontab是最原生的定时调度
-
基于redis实现的分布式调度
-
基于rpyc实现的分布式调度
-
celery/gearman等调度框架
-
-
并发
-
线程池
-
进程内优美的并发方案
-
-
协程
-
进程内另一种优美的并发方案
-
-
多进程
-
os.fork
- multiprocessing
-
-
-
数据结构
-
JSON
-
cPickle
-
protobuf
-
-
数据库
-
MySQL
-
MongoDB
-
Cassandra
-
Hadoop体系
-
Redis
-
Sqlite
-
bsddb
-
-
DevOps
-
SSH证书
-
Fabric
-
SaltStack
-
puppet
-
pssh/dsh
-
-
调试
-
pdb
-
logging
-
Sentry
-
strace/ltrace
-
lsof
-
性能
-
Python内
-
timeit
-
cProfile
-
-
Python外
-
top/htop/free/iostat/vmstat/ifconfig/iftop…
-
-
-
-
算法
-
分词
-
贝叶斯
-
神经元
-
遗传算法
-
聚类/分类
-
…
-
-
持续集成
-
自测试
-
nose
-
-
Jenkins
-
-
协作
-
类似Trello的在线协同平台
-
微信
-
立会
-
-
-
设计思想
-
人人都是架构师:具备架构思想是一件多酷的事
-
实战出真知
-
如何设计
-
松耦合、紧内聚
-
单元与单元属性
-
生产者与消费者
-
结构
-
队列
-
LRU
-
-
分布式
-
存储
-
计算
-
-
资源考虑
-
CPU
-
内存
-
带宽
-
-
粗暴美学/暴力美学
-
大数据,先考虑run it,然后才能知道规律在哪
-
「run it优先」能快速打通整体,洞察问题
-
「run it优先」能摆脱细节(繁枝末节)的束缚
-
「run it优先」能快速迭代出伟大的v1
-
-
一个字总结
-
美
-
-
-
优质资源
-
牛人1,2,3
-
1研究:研究东西,有足够洞察力,研究水准不错
-
2研发:hack idea自己有魄力实现,不懂研发的黑客如同不会游泳的海盗
-
3工程:研发出来的需要实战、需要工程化,否则只是玩具,而不能成为真的武器
-
-
from:http://blog.knownsec.com/Knownsec_RD_Checklist/v2.2.html
refer:Java后端工程师技能树
个人简介
突出的技术能力和管理能力兼备的综合性人才。
10年的软件研发经验,5年+的互联网应用开发经验。
5年多项目管理和团队管理经验,最多带过20名下属的团队。
熟练掌握Java开发语言,对J2EE平台有深入的研究,熟练使用Spring、Mybatis等框架
熟练使用MySQL、Oracle、SQL Server数据库以及Redis和Mongodb等NoSQL数据库
丰富的安全架构经验,对Web应用中常见的XSS、CSRF、注入等安全问题有深入的理解和实践经验
丰富的云平台应用经验,包括阿里云、亚马逊AWS云等平台的实践经验
熟悉前端框架Jquery、Bootstrap、jQuery Mobile、Knockout等
熟悉分布式框架及服务dubbo,Thrift,Zookeeper
了解大数据框架Hadoop、Hive、Storm、Spark等
良好的沟通能力及团队合作精神。
爱奇艺
1. 喜欢技术,喜欢折腾,喜欢处理线上的性能和高并发问题。
2. 我们自己折腾基于Protobuf的Rpc,基于Zookeeper的分布式系统,需要Geek的小伙伴加入。我们也在用Thrfit
3. 我们搞大数据,Hadoop、Hbase、Couchbase、Redis
4. 我们用Docker
5.只要觉得牛,薪水都好说
职位描述:
1、负责公司产品服务器端应用核心业务模块设计与开发。
2、负责公司产品服务器端应用关键技术攻关。
3、负责公司初级、中级Java工程师技术培训。
4、负责根据公司业务发展需要,组建、带领研发团队。
任职要求:
1、5年以上Java服务器端开发经验。
2、能够熟练使用主流存储技术,包含:MySQL、MongoDB、Couchbase、Cassandra、Redis、FastDFS;
3、能够熟练使用主流队列技术,包含:ActiveMQ、RabbitMQ、kafka、Disruptor;
4、能够熟练使用主流RPC技术,包含:Thrift、Dubbo;
5、能够熟练使用主流通信技术,包含:Mina、Netty、Protobuf;
6、能够熟练使用主流框架技术,包含:Spring、Axon(CQRS);
7、能够熟练使用阿里云服务,包含:MQS、 SLS、ODPS、OAS等。
职场-期权
(仅是个人揣测,如果错了欢迎答主评论指正)如果弄清楚以下两各问题,你的疑问就能迎刃而解:
a. 员工从入职协商期权到最终获得收益,是怎样的一个过程,其中有哪些关键因素?
b. 期权的收益如何计算?
什么是期权?
期权不是股权,而是一份按照约定价格在约定时间购买股份的合同。但如果说给期权,一定要落在纸上,口头承诺是没有任何意义的。
一份期权协议通常包括:起算日期、兑现时间(vesting schedule)、有无 cliff、行权价格、和已兑现期权的行权条件等。
一一解释下:
起算日期:什么时候开始发放期权,有的是入职即发放,有的是工作一段时间后根据员工表现发放。
兑现时间:员工到手期权,称之为兑现(vested),一般是分四年 vesting,假设四年一共给 n 股,按月发放,那么每月能拿到 n/48 股。
cliff:cliff 是避免员工入职只工作很短时间就离职,也能拿到期权的情况。协议中规定分四年 vesting +一年 cliff,那么第一年是拿不到期权的,在工作满一年后,这一年累计的 n/4 股一次性到手。在这以后,每月能到手 n/48 股。
行权价格:到行权期后可按约定价格购得公司股权,这个约定价格称之为行权价格。在公司发展越早的阶段(比如 A 轮)进入,行权价格越低,未来可获得的收益就越大。
%
职场-公司选择
其实两者之间没有优劣之分,但有更适合自己的那一个,对岸的风景也不一定是更美的。知己知彼方能百战百胜,我把在这两种公司里工作的差异阐述一下,对此感兴趣的程序员朋友看完便了解了。
1. 软件公司程序员在哪些公司工作?
很多人说到软件公司就是 IBM、Cisco 之流,其实和 VC 不是只有红杉、IDG 一样,软件公司也是多种多样,大体分为以下四类:
a、外企
- 美资居多,办公环境和福利都很好
- 招聘时对员工的英文水平有要求
- 制度严格,绝无可能出现克扣工资等坑员工现象
- 有些公司产品线固定缺乏创新,员工在公司里一直做一颗螺丝钉,得不到成长
- 典型公司:IBM、 Cisco、Adobe
b、民营小公司
- 规模小,比较典型的情况是老板有关系和行业资源,拉一伙儿程序员给他打工
- 员工薪水有高有低,有的老板很慷慨有的则很抠门
- 小公司存在风险。无论软件公司卖的是软件、解决方案还是服务,都是以客户为中心,所以小公司如果长时间接不到项目或者被客户拖欠款项的话,老板可能会拖欠工资或者直接开人
- 一句话总结:去这类公司工作,老板的人品很重要
c、大型民企:典型公司如金蝶、用友
d、国资背景企业:比较典型的有「中科 XX 软件公司」,氛围和国企差不多
2. 在软件公司工作的程序员能赚多少钱?
对于应届生或者一两年工作经验的程序员来说,平均薪资的情况是外企>国内大公司>民营小公司
应届生的薪资水平
- 外企 : 13~20W/年
- 大型民企:4~10k/月
- 民营小公司:差异很大,我见过应届生 3K/ 月的,也见过 8K/ 月的
3. 软件公司程序员的职业发展
- 一条路径是走技术路线,一直做到技术负责人
- 另一条路是做一段时间,从技术转到技术管理
4. 软件公司程序员的跳槽去向
- 随着互联网大热,跳槽去互联网公司
- 其他软件公司,比如从小公司跳槽到大型外企
- 银行、金融企业的 IT 部门,钱多事少
- 跳槽去客户那里,乙方跳甲方
5. 互联网公司程序员在哪里工作
- 外企(在中国):google 等上市公司,以及 airbnb、uber 等明星创业公司
- BAT、京东、途牛等上市公司
- B 轮及以上的创业公司
- 未融资、天使、A 轮的创业公司
6. 互联网公司程序员拿多少钱
- 外企、上市公司、B 轮及部分 B 轮以前的创业公司,工资都比较高,比如阿里给应届生的批发价是13K*15月。详细情况推荐阅读 数据说话:怎样的程序员最抢手? – 程序员的自我修养 – 知乎专栏
- 由于互联网公司近两年给应届生的薪水越来越高,不少互联网公司出现薪资倒挂的情况:同一家公司里,工作两年的程序员工资可能还不如刚入职的应届生高
- 外企、上市公司给的工资不一定比创业公司高,时值 TMT 投资大热,很多融资完不差钱的创业公司为了招揽人才,会开出比 BAT 高20~50%的工资
- 部分创业公司会用期权为理由压低工资,对于这种情况,推荐广大程序员同志阅读:程序员为了期权加入创业公司,值得吗?
7. 在软件公司和互联网公司,工作状态有什么不同
- 在软件公司的程序员,比较典型的工作状态是 965,即早上 9 点上班,晚上 6 点下班,一周上班 5 天,相比互联网公司典型的 996,在工作强度上轻松许多
- 一些软件公司存在人力外派的情况,需要员工到客户处出差几个月,去软件公司求职的程序员可以在面试时问清楚是否需要经常出差
8. 在软件公司和互联网公司,工作环境和氛围有什么不同
就办公环境我更喜欢互联网公司,尤其是互联网创业公司
典型的的软件公司办公环境
互联网创业公司
更重要的是,互联网创业公司的管理更扁平化,同事也更「潮」——更开放,适应潮流,带来新观点。
比如说,在互联网创业公司里大家会讨论 GoPro 相机的使用体验,老板开的车不是奔驰宝马而是特斯拉,这在软件公司里是不太可能发生的事情。而这样的公司,他们的技术开发、市场运营等,往往也会很与时俱进。