DR 项目小结

前言

个人的项目总结, 非技术类博文.

需要补充的知识点

  • HTTP 协议与其内置方法
  • curl 指令和各选项的意义
  • Keystone 认证流程和各项目配置文件 [keystone_authtoken] 的含义
  • Git
  • 异常处理
  • docker

笔记

语法应用场合

  • 异常处理: as 可以获取异常信息 , 本质上是异常类的一个对象 , 可以调用异常实例化对象的属性.
import six
from egis.i18n import _LW

except Exception as err:
    LOG.warning(_LW("Failed to delete server %(server) as "
                    "error %(err)s"), {'server': server['id'],
                                       'err': six.text_type(err)})

-异常处理: raise 一般用于在 try-catch 捕获了原来的异常之后来, 触发一个你希望触发的异常(异常的转换), 并且这个异常可以是自定义的.

  • 日志输出: 在关键(容易出现错误)的地方编写明显的错误输出日志
    一般在 except 异常捕获之后, 在重新 * raise* 触发异常之前需要记录日志信息.
from oslo_log import log as logging

LOG = logging.getLogger(__name__)

except db_exc.DBConnectionError:
    OG.exception(_LE("model server went away, retry again."))
    raise
  • 注释: 假如自己重新看代码 10 秒内还看不懂的时候就表示应该写注释了
  • 函数中的参数值如果是一个不会被经常修改的数值 , 一般会用常量对象来表示, 而不会直接将该数值写到函数的参数列表中. 因为这回导致代码的可读性降低, 不能清晰的知道该数值的含义. EG:
NUMBER = 100

def function(NUMBER, *args, **kwargs):
    pass
  • 在传递参数时, 如果实参使用了 **filters 这种形式那么只能传递 dict 类型的参数,否则报错.
filters = filters or {}

query_res = query_res.filter_by(**filters).all()    # 变量 filters 必须为 dict 类型对象
  • 兼容性问题: if vm_list == []: return 这种写法是不符合兼容性的. 应该写成:
if not vm_list or not len(vm_list): return

Openstack 相关

  • 单元测试: 修改了 requirements.txt 文件之后, tox 指令需要 -r 选项来重新安装软件包集合才能生效
vim egis/requirements.txt
    oslo.vmware>=2.1.0

sudo tox -r -e py27
  • 单元测试: 单元测试文件中是默认不允许通过 pdb 来调试代码的, 但是可以通过安装 test-requirements.txt 内的测试扩展软件包来支持这个功能.
sudo pip install -e . -r test-requirements.txt -r requirements.txt
python -m testtools.run egis.tests.unit.api.v1.test_vmware_connects
  • manager.py 内定义的方法一定要有形参 context , 否则会报错
  • cctxt = self.client.prepare(server=host) 指定了接受这个 rpc 请求的 server_ip

SQLAlchemy 相关

  • SQLAlchemy : session.delete(exsi_hypervisor_ref) 会将 exsi_hypervisor_ref 中包含的记录删除(强删除), 而 exsi_hypervisor_ref.delete(session) 会将 exsi_hypervisor_ref 中的记录的字段 deleted 值设为 1 , 保留该条记录(弱删除)
  • SQLAlchemy : 一次性删除多行的写法, EG. 将拥有 exsi_hypervisor.id 的所有记录删除
vmware_networks_ref = session.query(models.VmwareNetwork).filter_by(exsi_hypervisor_id=exsi_hypervisor.id)
vmware_networks_ref.delete()
  • 对数据库操作的异常应该在 sqlalchemy/api.py 文件中抛出异常, 然后在 api/v1/vmware_connects.py 截获异常. 因为 HTTP API 接口只负责信息的转发.
  • mysql 在使用 SQL 文件恢复数据库时, 需要现将原来的数据库清理干净再恢复, 否则会由缺表的情况.

Git 相关

  • 合并冲突

    1. git status 找到冲突的文件
    2. 将冲突去除
    3. 将冲突文件重新加入临时区 git add egis/api/v1/router.py
    4. 合并分支 git rebase –continue
    5. 重新提交 git review
  • 合并分支
    1. git checkout master
    2. git pull origin master
    3. git checkout aju-dev
    4. git rebase master
    5. git status
    6. git review

其他

  • 添加网卡子接口
sudo ifconfig enp3s0:0 10.0.0.4/24 10.0.0.255 up
sudo ip addr add 192.168.0.61/24 dev enp3s0
ping 172.16.100.10
  • 101.5 没有 ISCSI.name, 需要手动的开启 ISCSI Client: esxcli iscsi software set -e true
  • ERROR: 前端连接不上后端, 后端能够正常返回 response, 但是前端没有跳转. 是因为前后端时间不同步导致不能缓存用户信息造成的.
  • VIM 指令: split 分裂编辑一个相同的文件
时间: 2024-08-18 06:49:26

DR 项目小结的相关文章

拥抱开放—Q+2.0项目小结

主题小结"> Q+之前,桌面电脑用户仍然是本地应用程序和浏览器构成的在线体验.随着1.0的试用,2.0的发布,Q+将是一个让人随时可以参与不同深度和层次的互联网生活平台. 1.0版本发布后,从产品交流页面和微博等渠道收到了大量的用户反馈,并进行了针对Q+的可用性测试.用户对Q+面板,Q+桌面和Q+应用,提出了以下反馈意见: 分析:透过体验缺陷看清问题本质 1.Q+面板在windows桌面承载了所有Q+全屏环境的功能. 2.Q+全屏可供用户掌控的功能太局限,包括拖放图标,管理不同桌面. 定位

.NET项目开发—浅谈面向接口编程、可测试性、单元测试、迭代重构(项目小结)

阅读目录: 1.开篇介绍  2.迭代测试.重构(强制性面向接口编程,要求代码具有可测试性) 2.1.面向接口编程的两个设计误区 2.1.1.接口的依赖倒置 2.1.2.接口对实体的抽象  2.2.迭代单元测试.重构(代码可测试) 2.2.1.LINQ表达式对单元测试的影响  1]开篇介绍 最近一段时间结束了一个小项目的开发,觉得有些好东西值得总结与分享,所以花点时间整理成文章: 大多数情况下我们都知道这些概念,面向接口编程是老生常谈的话题了,有几年编程经验的都知道怎么运用:单元测试其实在前几年不

项目小结:日立OA系统(Asp.net)

前言   进入公司6个月后被安排到该项目中,据说该项目规模很大,而拆分到公司的就只是二十来个页面,而我就负责其中的3个页面和其他页面的脚本代 码,后来负责项目的性能优化工作.至于业务逻辑方面确实没什么可说的,就是CRUD.由一个很好沟通的前辈和我们6个新人一起来搞.这里有两项内容很值得 总结,它们都让我技术上增进不少.   目录 1.页面控件数庞大,页面加载极慢,一步一步优化吧! 2.一键关闭web系统所有页面,不断尝试,却被奇怪的方法Kill了. 3.总结   1.页面控件数庞大,页面加载极慢

项目小结之数据库设计

最近做了一个小项目完整的数据库设计,想总结一些设计上的所得,希望大家多多指教. 有时一个项目,普通程序员一般不会去接触数据库设计,一般都有专业的DBA或是老程序员去设计,下 面是我推测的几点可能原因: 1:新手对项目了解不深,正好这是老鸟的长处. 2:新手对局部的关注往往大于整体,很难考虑的特别周全. 3:数据库设计的好坏在某种程度上直接影响项目的复杂度以及性能. 第一:我们要知道什么是范式,为什么说到数据库设计总要提到一个名词:范式.范式:符合某一种 级别的关系模式的集合.设计数据库必须遵循一

QQ电脑管家6.0项目小结

项目背景 2010年5月31日,QQ电脑管家发布第一个4.0版本,一年来,我们欣喜地看到管家的用户量和口碑在逐渐提升.而随着功能和特性的不断增加,产品细节体验所暴露的问题也越来越多.越来越迫切.由此,产品.CDC设计团队在7.8.9月启动"QQ电脑管家用户体验季",在界面视觉风格.界面布局.功能引导.智能贴心.信息呈现等方面,集中改进产品细节体验问题.在此期间,设计团队通过封闭设计,对管家目前的体验问题进行集中梳理,将目前管家的体验问题逐一解决. 前期准备 从去年开始,QQ电脑管家团队

Q盘项目小结:体验细节追求无感知 轻打扰

项目背景 在互联网云时代的背景下,各类"云产品"层出不穷,云技术的完善发展让网络存储.实时同步存储畅通无阻.国外以Dropbox代表下网络同步存储市场已然成熟, 市值40亿的成绩意味着同步市场的强大潜力. 在这样的趋势下, 国内也陆续出现了金山快盘.115同步盘.T盘等同步产品,但并不完善.也就是说,国内同步市场仍然存在着极大的缺失,实时同步市场谁来称雄? 需求要点 Q盘应运而生.Q盘是QQ电脑管家提供的免费文件同步服务.登录同一个QQ帐号,就可以在不同电脑上查看并使用Q盘中的文件.当

.NET项目开发—浅谈面向对象的纵横向关系、多态入口,单元测试(项目小结)

阅读目录: 1.开篇介绍 2.使用委托消除函数串联调用 2.1.使用委托工厂转换两个独立层面的对象 3.多态入口(面向对象继承体系是可被扩展的) 4.多态的受保护方法的单元测试(Protected成员的单元测试) 1]开篇介绍 一如既往,这篇文章是我最近在工作中总结出的一点小小的经验,特此写出来与大家分享,因为我觉得日常开发中这些点点滴滴很有用: 2]使用委托消除函数串联调用 在一般的函数调用情况下,我们都习惯性的将参数传入到某个被调用的方法,这可能就是我们考虑调用方法的惯用思维,但是现在的C#

android智能手机项目开发小结

 android智能手机开发项目小结        从上周六到截至今天下班时,历时一个星期,把一个客户的新项目的板子bring up起来,目前的状态是这个双卡双待的手机能正常运行,LCD色彩.声音.GSM call.sensor.camera.touchkey.keypad.backlight.fm.headphone等都正常工作,可以送QA作进一步的测试,还是有一些需要继续优化的地方.下周跟QA同志们,hardware同志们一起努力,争取客户样机早一点量产.下面就遇到的问题做一个小结吧!  

Q盘项目设计案例:产品

文章描述:云端传输 轻松同步--Q盘项目小结. 项目背景 在互联网云时代的背景下,各类"云产品"层出不穷,云技术的完善发展让网络存储.实时同步存储畅通无阻.国外以Dropbox代表下网络同步存储市场已然成熟, 市值40亿的成绩意味着同步市场的强大潜力. 在这样的趋势下, 国内也陆续出现了金山快盘.115同步盘.T盘等同步产品,但并不完善.也就是说,国内同步市场仍然存在着极大的缺失,实时同步市场谁来称雄? 需求要点 Q盘应运而生.Q盘是QQ电脑管家提供的免费文件同步服务.登录同一个QQ帐