@bergus
2016-07-17T21:19:00.000000Z
字数 15042
阅读 3555
项目环境
1.项目环境搭建
2.数据库环境,数据库的账户和密码
https://github.com/gogits/gogs/tree/master/docker
http://form.mikecrm.com/BxGGYd
http://kooksee.lofter.com
1,用户指标,紧急呼救,gps,推送信息,裸数据,当前信息,历史信息,健康报告,机构分等级,医生管理患者,推送报告,医生隶属于机构,一个医生可以在多个机构工作,个人包括app使用者和患者
公司官网:http://www.bamai.me
公司项目管理&Bug追踪平台:http://www.bamai.me:3000/
git版本控制服务器:http://www.bamai.me:3001/
把脉云健康服务平台: http://www.bamai188.com:8000/
手表固件升级入口:http://www.bamai188.com/bm_fw_update/
http://nanjing.baixing.com/zhengzu/a975422310.html#id_ca97be08ddec8ce469302f253e1c2e9d
zerorpc
http://www.zerorpc.io/
tprpc
http://www.open-open.com/lib/view/open1447721979447.html
mysql操作
http://www.2cto.com/database/201409/332022.html
mysqldb 解决方案
http://yanghao.org/blog/archives/76
mysqldb简单封装
https://github.com/bdarnell/torndb/blob/master/torndb.py
python 持续集成
http://www.ibm.com/developerworks/cn/linux/l-buildbot/index.html
supervisor进程管理
http://chenxiaoyu.org/2011/05/31/python-supervisor.html
python持续集成
http://docs.python-guide.org/en/latest/scenarios/ci/
Tablib: Pythonic Tabular Datasets
http://docs.python-tablib.org/en/latest/
SQL for Humans
https://github.com/kennethreitz/records
http请求
http://httpbin.org/
1.安装pyenv(python版本管理工具)
2.安装virtualenv(python类库管理工具)
3.学会安装python类库,使用pip,easy_install
4.虚拟一个python环境
5.用pip 指定类库版本安装,并安装多个类库的方式
6.知道python安装类库配置文件requirements.txt
7.学会使用pycharm
请求验证
https://www.hurl.it/
Flask + Gunicorn + Nginx 部署
http://www.cnblogs.com/Ray-liang/p/4837850.html
使用Fabric自动化你的任务
http://www.cnblogs.com/holbrook/archive/2012/03/05/2380398.html
http://fabric-chs.readthedocs.io/zh_CN/chs/
https://github.com/getgrav/grav
Python可用的分布式协调系统(ZooKeeper,Consul, etcd)介绍
http://openskill.cn/article/384
http://python-consul.readthedocs.io/en/latest/
http://www.open-open.com/lib/view/open1427687828240.html
文章搭建
https://github.com/DaoCloud/daocloud-docs
企业应用产品整合
https://www.sdk.cn/news/1053
面试总结:
1,饿了吗
填写面试表格,主要是填写自己的教育经历和项目经历,或者说是自己的公司经历。
面试的时候,面试官就说,随便聊聊,其实你千万不要相信这句话,他们会根据你说的每一点信息对你进行综合分析。
开始介绍一下自己,自己住在哪,什么时候毕业的,学校的一些经历
然后开始介绍自己以前呆过的公司以及经历了哪些项目,自己对于项目的熟悉和业务逻辑的熟悉程度,然后说一些自己用到了哪些技术,自己对哪些技术比较熟悉,然后说说这些技术
面试官会问你想问我什么问题
面试官还会问一下你的兴趣,然后未来想要做什么。有时候面试官不会直接问你有什么优势,闪光点,他们会从你回答问题的情况下进行分析。
如果他们发现你从北京过来的,他们会问你为什么来上海而不是留在北京
在饿了吗面试的时候,面试官提的问题很少,大部分让你自己说,说自己最擅长的事情,然后他根据你自己擅长的事情开聊。有时候你会发现,聊到最后你已经无话可说了,自己说的多了,我觉得自己的大脑都已经开始混乱了。所以,我觉得还是不要说这么多的好,就说自己擅长的几件就好了,而且一定要语言组织好,思维逻辑清晰,因为面试官一直在分析你呢。
每一个面试者都希望来面试的人对自己的公司比较认可,对公司比较了解,所以面试之前还是了解一下面试的公司为好,准备充足,以免出现问题。
在面试的过程中,千万不要被面试官套近乎了,他们可能用微笑,不用这么紧张,我们就聊聊之类的东西让你放开聊,这样的话面试官能够更加的看清面试者,但是面试者就像一个傻子一样了。
面试的时候,自信,底气十足,充满激情,不要模棱两可
软件工程面试要求看自己的博客,自己的开源项目
面试者看到你会多门语言的情况下,他们会问你学习的这几门语言的区别
面试官一般会问,学校经历,实习经历,工作经历,项目经历,数据库操作(表索引之类的,怎么查询效率比较高),数据结构问题(排序,二杈书等),你自己的弱点和不足,你自己怎么做去弥补你的不足,或者改掉你自己的这些缺点。然后你自己的优点长处,就是你能为公司带来什么好处,带来什么利益。你未来有什么规划,准备什么时候实现它,你想怎么去实现它。平实有什么兴趣爱好。
如果你带过团队,那么面试官会问你是怎么管理团队的,怎么解决团队遇到的问题的,怎么安排任务。比如,有一个项目,你是怎么展开实施这个项目的,举个例子。
你平时用什么系统,对linux熟不熟悉,对哪种发行版本比较熟悉。对shell了解多少,ps,sed,awk,了解多少,然后写一个文件遍历的shell
如果你熟悉某种语言,那么当场用这门语言写一个简单的算法
怎么处理高并发问题,负载均衡问题
restful和传统的网络请求有什么区别
当你说自己考虑问题比较全面的时候,那么举一个例子出来
你对当前的这个行业怎么看
多线程,多进程问题
讲一下微服务是怎么回事
你用到了哪些类库和框架
讲一下自己的开源项目,研究过什么源码
危险的妻子
http://pan.baidu.com/s/1cwVOOQ
我们需要什么,一个速记工具,然后晚上去整理
记录什么,生日 ,节日,事件
用 Docker 构建分布式 Redis 集群
http://www.linuxidc.com/Linux/2015-02/112995.htm
基于Keepalived搭建MySQL的高可用集群
http://www.linuxidc.com/Linux/2016-06/132703.htm
https://github.com/leanote/leanote
https://weflow.io/
https://github.com/citusdata/citus
https://github.com/lamerman/shellpy
https://vux.li/#!/
https://github.com/airyland/vux
https://vuxjs.gitbooks.io/vux/content/form/cell.html
http://www.oschina.net/p/drv-js
https://github.com/ElemeFE/cooking
http://elemefe.github.io/cooking/
1.请介绍一下您是如何找到这份工作的
1,朋友推荐。2,自己投简历。3,利用一些招聘的网站和工具,会有企业去发现你
2.在这个工作岗位上,您的主要指责是
软件开发,服务器管理,API设计
3.这份工作需要什么样的知识,技能和经验
至少需要会一门编程语言,熟悉公司提供的架构和思想,良好的沟通能力和团队合作能力以及独立解决问题的能力
4.什么样的个人品质或能力对本工作来说是重要的
热爱学习,独立思考问题,思维逻辑清晰,爱钻研,不怕挑战
5.参加什么培训取得什么证书对这份工作是必要的
一般情况下可以参加本专业相关培训和比赛,像ACM比赛,建模大赛,如果能够获奖大奖,面试很有用
6.工作单位对刚进入这个领域的新员工提供哪些培训
生活上有新员工入职培训,工作上有老员工对新员工进行帮助
7.该职位的晋升路线是什么
技术,管理
8.这份工作的初级,中级,高级职位薪水大约是多少
根个人能力,工作经验,项目经验有关系,一般不区分级别
9.您如何看待这项工作的发展前景
任何一个在社会上存在的工作都很有前景,只不过这个行业的前景这几年相对比较好
10.您认为在大学期间应该做些什么才能进入这个工作领域
学好该专业基本课程,充分利用空闲时间对该领域进行关注,并做一下项目
https://github.com/frappe/erpnext
http://git.oschina.net/osbzr/openerp-china
https://github.com/odoo/odoo
https://doc.odoo.com/7.0/zh_CN/install/windows/postgres/#setup-a-postgresql-user
Tornado翻译
https://mirrors.segmentfault.com/itt2zh/ch1.html
conda install psycopg2
http://www.gooseeker.com/
http://brucedone.com/archives/700
关于爬虫
http://brucedone.com/archives/category/allinlinux
https://github.com/BruceDone?tab=repositories
https://github.com/scrapinghub/portia
http://splash.readthedocs.io/en/latest/api.html
https://github.com/wqlin/spider_practicing
https://github.com/scrapy-plugins
http://blog.csdn.net/column/details/younghz-scrapy.html
聚合数据,数据服务
https://www.juhe.cn/
http://apistore.baidu.com/astore/classificationservicelist.html
https://zhuanlan.zhihu.com/p/21320392?refer=passer
https://github.com/vinta/awesome-python#third-party-apis
啄本网络,python开发经理,07-04,10:30,上海市长宁区天山西路567号10层
岂安科技,python专家,07-04,14:00
平武路168号,D座10楼,小喂
易知科技,07-04,16:30
浦北路6号4楼
聚立信,07-05,10:30,数据分析师,021-33561619,18356098063
天机科技,python,星期二的下午三点
上海天玑科技股份有限公司
www.dnt.com.cn
上海市桂林路406号2号楼11~12F
电话:021-5427-8888
传真: 021-5427-9888
手机:13774462345
上海聊聊网络科技有限公司,7月6日 (星期三) 14:00
闵行区沪闵路6088号莘庄龙之梦2704室
张小姐,021—54723688/13817677924
FROM sequenceiq/hadoop-docker:2.5.1
MAINTAINER Yanif Ahmad
RUN curl -s http://d3kbcqa49mib13.cloudfront.net/spark-1.1.0-bin-hadoop2.4.tgz | tar -xz -C /usr/local/
RUN cd /usr/local && ln -s spark-1.1.0-bin-hadoop2.4 spark
RUN mkdir /usr/local/spark/yarn-remote-client
ADD yarn-remote-client /usr/local/spark/yarn-remote-client
RUN BOOTSTRAP &&HADOOP_PREFIX/bin/hadoop dfsadmin -safemode leave && $HADOOP_PREFIX/bin/hdfs dfs -put /usr/local/spark-1.1.0-bin-hadoop2.4/lib /spark
ENV YARN_CONF_DIR $HADOOP_PREFIX/etc/hadoop
ENV SPARK_JAR hdfs:///spark/spark-assembly-1.1.0-hadoop2.4.0.jar
ENV SPARK_HOME /usr/local/spark
ENV PATH SPARK_HOME/bin:$HADOOP_PREFIX/bin
ENV PATH PATH:/opt/anaconda/bin
RUN yum update -y && yum install -y wget bzip2 screen
RUN echo 'export PATH=/opt/anaconda/bin:PATH' > /etc/profile.d/conda.sh
RUN ( echo "=======================" ) && \
( echo "Installing Python " ) && \
( echo "=======================" ) && \
wget --quiet http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh && \
/bin/bash /Miniconda-latest-Linux-x86_64.sh -b -p /opt/anaconda && \
rm Miniconda-latest-Linux-x86_64.sh && \
test -f /opt/anaconda/bin/conda && \
conda install --yes pip && \
conda install --yes numpy && \
conda install --yes scipy && \
conda install --yes matplotlib && \
conda install --yes ipython && \
conda install --yes scikit-learn && \
conda install --yes scikit-image && \
conda install --yes pandas && \
conda install --yes requests && \
conda install --yes h5py && \
pip install astroML
CMD ["/etc/bootstrap.sh", "-d"]
wifi密码
juxinlioffice2015
微信开发
http://www.open-open.com/lib/view/open1432433844699.html
wget -c http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh
https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh
python镜像源
http://pypi.douban.com/ 豆瓣
http://pypi.hustunique.com/ 华中理工大学
http://pypi.sdutlinux.org/ 山东理工大学
http://pypi.mirrors.ustc.edu.cn/ 中国科学技术大学
http://mirrors.sohu.com/python/
http://pypi.douban.com/simple/
easy_install -i 选项可以设置镜像网址,这里指定到国内的豆瓣镜像。
要配制成默认的话,需要创建或修改配置文件(linux的文件在~/.pip/pip.conf,windows在%HOMEPATH%\pip\pip.ini),修改内容为:
code:
[global]
index-url = http://pypi.douban.com/simple
这样在使用pip来安装时,会默认调用该镜像。
On Unix and Mac OS X the configuration file is: $HOME/.pip/pip.conf
[global]
timeout = 60
index-url = http://download.zope.org/ppix
[global]
timeout = 60
[freeze]
timeout = 10
[install]
ignore-installed = true
no-dependencies = yes
[global]
find-links =
http://download.example.com
[install]
find-links =
http://mirror1.example.com
http://mirror2.example.com
export PIP_DEFAULT_TIMEOUT=60
pip --default-timeout=60 [...]
export PIP_FIND_LINKS="http://mirror1.example.com http://mirror2.example.com"
pip install --find-links=http://mirror1.example.com --find-links=http://mirror2.example.com
pip completion --bash >> ~/.profile
pip completion --zsh >> ~/.zprofile
eval "pip completion --bash
"
easy_install -i http://e.pypi.python.org/simple fabric
pip -i http://e.pypi.python.org/simple install fabric
vi ~/.pip/pip.conf
速度比较快的国内镜像,都来自清华大学,服务器在北京。公网的服务器为官方镜像
公网:http://e.pypi.python.org/simple
教育网:http://pypi.tuna.tsinghua.edu.cn/simple
教程
http://topmanopensource.iteye.com/blog/2004853
如果想手动指定源,可以在pip后面跟-i 来指定源,比如用豆瓣的源来安装web.py框架:
pip install web.py -i http://pypi.douban.com/simple
http://127.0.0.1:16823/proxy_on.pac?1468047232497740259
http://www.pythonpub.com/
http://www.pythondoc.com/
默认执行安装Miniconda2
bash Miniconda2-latest-Linux-x86_64.sh -b
http://repos.mesosphere.com/ubuntu/pool/main/m/mesos/mesos_0.28.2-2.0.27.ubuntu1404_amd64.deb
仅提供SSH服务的CentOS基础镜像
root用户密码可以通过环境变量"ROOT_PASS”进行设置,或者在自动部署后,从容器服务详情的日志中获取,如图:
红框中字符串为随机生成的密码,使用SSH工具进行连接,例如Xshell或Putty,连接方式
ssh -p 端口 root@地址
例如 ssh -p 34345 root@test.tenxcloud.net
端口一般是五位的高端端口,地址形如 **.tenxcloud.net
登录后请尽快修改密码
网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错,将yum源设置为163yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。具体设置方法如下:
1,进入yum源配置目录
cd /etc/yum.repos.d
2,备份系统自带的yum源
mv CentOS-Base.repo CentOS-Base.repo.bk
下载163网易的yum源:
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
3,更新玩yum源后,执行下边命令更新yum配置,使操作立即生效
yum makecache
4,除了网易之外,国内还有其他不错的yum源,比如中科大和搜狐的,大家可以根据自己需求下载
中科大的yum源:
wget http://centos.ustc.edu.cn/CentOS-Base.repo
sohu的yum源
wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo
理论上讲,这些yum源redhat系统以及fedora也是可以用 的,但是没有经过测试,需要的站长可以自己测试一下。
mac查看本机IP
ifconfig | grep "inet " | grep -v 127.0.0.1
weave 是一个很有用的 docker 网络配置工具
multiprocessing.dummy
sas
Harbor是VMware公司最近开源的企业级Docker Registry项目(https://github.com/vmware/harbor) 。其目标是帮助用户迅速搭建一个企业级的Docker registry服务。
Fudge 被HD的项目组认为是最好的Python Mock模块(也即冒烟测试)
gitlab:
http://192.168.200.19/u/barry
一种基于Spring的java程序常量维护思路
记忆性常量:首要出于程序结构上的思虑而设定的常量。譬如为了防止一个没有字面意思的魔法数,或者防止拼写简单出错,或者不容记得的内容。
业务性常量:示意一个业务上的一个特定业务实体的属性或属性值。
假如常量结尾 都可以用配置文件配置,那么就可以处理 “业务常量只有在部署期间或同别的系统集成是才能取得 ”的疑问,假如同时还可以透明的宣称运用常量,那么几乎所有的疑问就圆满了:
不害怕重复定义不正确
消除有常量引用惹起的循环引用
提供从部署期覆盖编译期的灵活性
配置文件与常量
特殊含义的数值或字符串,如 ETC_FSTAB = “/etc/fstab” 。其作用为
避免程序中到处出现类似特殊值,因为人为输入特殊值的低级错误将耗费不必要的调试/测试时间
另一方面, 神秘数值(magic number),如 LUN_BLOCK_SIZE = 4096,将影响程序的可读性。
应用程序参数的默认值,如 URLOPEN_DEFAULT_TIMEOUT = 15 。其作用主要为配置文件参数的默认值。
通过配置文件载入的参数,如通过ConfigParser.SafeConfigParser解析形如ini文件的参数。
第1和2类常量作为_const类的类属性,第3类常量可以在init方法中初始化。如:
fleet
/Users/barry/.docker/machine/cache/boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v1.12.0-rc3/boot2docker.iso
docker-machine create -d generic \
--generic-ssh-user vagrant \
--generic-ssh-key ~/.vagrant.d/insecure_private_key \
--generic-ip-address \
--engine-install-url "https://test.docker.com" \
Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。
machine create -d virtualbox dev
machine ls
export DOCKER_HOST=machine url
DOCKER_AUTH=identity
machine create -d digitalocean --digitalocean-access-token=... staging
https://github.com/docker/docker-registry/
默认的三个网络是不能被删除的,而用户自定义的网络可以用『 docker networkrm 』命令删掉;
连接到默认的 bridge 网络连接的容器需要明确的在启动时使用『– link 』参数相互指定,才能在容器里使用容器名称连接到对方。而连接到自定义网络的容器,不需要任何配置就可以直接使用容器名连接到任何一个属于同一网络中的容器。这样的设计即方便了容器之间进行通信,又能够有效限制通信范围,增加网络安全性;
Consul-template
nohup docker -H unix:///var/run/docker.sock --insecure-registry 127.0.0.1:5000 -d &
pip install flower
并行处理框架Celery的Web监控管理服务-Flower
Docker两个开源PAAS项目flynn和deis的比较
docker run -d -p 5000:5000 --restart=always --name registry -v `pwd`/auth:/certs -v `pwd`/data:/data -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data registry:2
sudo cp ~/registry/certs/registry.crt /etc/docker/certs.d/reg.zimug.com:5000
sudo echo 192.168.1.158 reg.zimug.com >> /etc/hosts
docker run -d -p 5000:5000 --restart=always --name registry \
-v `pwd`/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v `pwd`/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
registry:2
registry:
restart: always
image: registry:2
ports:
- 5000:5000
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
volumes:
- /path/data:/var/lib/registry
- /path/certs:/certs
- /path/auth:/auth
cat <<EOF > docker-compose.yml
nginx:
image: "nginx:1.9"
ports:
- 5043:443
links:
- registry:registry
volumes:
- ./auth:/etc/nginx/conf.d
- ./auth/nginx.conf:/etc/nginx/nginx.conf:ro
registry:
image: registry:2
ports:
- 127.0.0.1:5000:5000
volumes:
- `pwd`./data:/var/lib/registry
EOF
cat <<EOF > auth/nginx.conf
events {
worker_connections 1024;
}
http {
upstream docker-registry {
server registry:5000;
}
## Set a variable to help us decide if we need to add the
## 'Docker-Distribution-Api-Version' header.
## The registry always sets this header.
## In the case of nginx performing auth, the header will be unset
## since nginx is auth-ing before proxying.
map \$upstream_http_docker_distribution_api_version \$docker_distribution_api_version {
'registry/2.0' '';
default registry/2.0;
}
server {
listen 443 ssl;
server_name myregistrydomain.com;
# SSL
ssl_certificate /etc/nginx/conf.d/domain.crt;
ssl_certificate_key /etc/nginx/conf.d/domain.key;
# Recommendations from https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
# disable any limits to avoid HTTP 413 for large image uploads
client_max_body_size 0;
# required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486)
chunked_transfer_encoding on;
location /v2/ {
# Do not allow connections from docker 1.5 and earlier
# docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents
if (\$http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*\$" ) {
return 404;
}
# To add basic authentication to v2 use auth_basic setting.
auth_basic "Registry realm";
auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd;
## If $docker_distribution_api_version is empty, the header will not be added.
## See the map directive above where this variable is defined.
add_header 'Docker-Distribution-Api-Version' \$docker_distribution_api_version always;
proxy_pass http://docker-registry;
proxy_set_header Host \$http_host; # required for docker client's sake
proxy_set_header X-Real-IP \$remote_addr; # pass on real client's IP
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
proxy_read_timeout 900;
}
}
}
EOF
docker run --rm --entrypoint htpasswd registry:2 -bn testuser testpassword > auth/nginx.htpasswd
docker login -u=testuser -p=testpassword -e=root@example.ch myregistrydomain.com:5043
docker tag ubuntu myregistrydomain.com:5043/test
docker push myregistrydomain.com:5043/test
docker pull myregistrydomain.com:5043/test
证书生成:
openssl req -x509 -days 365 -nodes -newkey rsa:4096 -sha256 -keyout certs/docker.jd.com.key -out certs/docker.jd.com.crt
openssl req -x509 -days 3650 -nodes -newkey rsa:2048 -subj '/CN=reg.zimug.com/' -keyout registry.key -out registry.crt;
从你的本地环境中移除所有未使用的镜像:
docker rmi -f $(docker images -q -a )