python类的私有变量

        在python中可以通过在属性变量名前加上双下划线定义属性为私有属性。

        特殊变量命名

  1. _xx以但下划线开头的表示protected类型的变量。即保护类型只能允许其本身与子类进行访问。若内部变量标示。如:当使用“from M import”时,不会将以一个下划线开头的变量引入。
  2. __xx双下划线的表示是私有类型的变量。只能允许这个类本身进行访问。连子类也不可以用于命名一个类属性(类变量)。调用时名字被改变(在类FooBar内部,boo变成_FooBarboo,如self._FooBar__boo).
  3. __xx__定义的是特殊方法。用户控制的命名空间内的变量或是属性,如init,import或是file。只有当文档有说明时使用,不要自己定义这类变量。(就是说这些是python内部定义的变量名)

        在class内部,可以有属性和方法,而外部可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。

1
2
3
4
5
6
7
8
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def print_score(self):
print '%s: %s' % (self.name, self.score)

阅读全文 >>

python类的重写

        在python中有时候需要对类进行重写,可以重写一般方法也可以重写构造方法,构造方法是用来初始化新创建对象的状态。

1
2
3
4
5
class A(object):
def hello(self):
print('Hello, i am A.')
class B(A):
pass
1
2
3
4
5
6
>>>a = A()
>>>b = B()
>>>a.hello()
Hello, i am A.
>>>b.hello()
Hello, i am A.

阅读全文 >>

GitLab的日常备份恢复与迁移

GitLab创建备份

        使用gitlab Omnibus包安装非常简单,同样的备份恢复与迁移也非常简单。使用一条命令即可以创建完整的gitlab备份。

1
[root@git ~]# gitlab-rake gitlab:backup:create

01

        使用该命令会在/var/opt/gitlab/backups目录下创建一个1509992523_gitlab_backup.tar的压缩包,这个压缩包就是GitLab整个的完整备份,其中1509992523是备份创建的日期。

阅读全文 >>

python类的继承

        在程序设计中,定义一个class的时候,可以从某个现有的class继承,新的class成为子类(subcclass),而被继承的class称为基类、父类或超类(Base class、Super class)。

        编写一个名为Animal的class,有一个run()方法可以直接打印

1
2
3
class Animal(object):
def run(self):
print 'Animal is running...'

        需要编写B和C类时,就可以直接从Animal类继承

1
2
3
4
5
class B(Animal):
pass
class C(Animal):
pass

阅读全文 >>

python的类和构造器

        面向对象最重要的概念就是类(class)和实例(instance),必须牢记类是抽象的模版,比如studen类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

        在python中,定义类是通过class关键字

1
2
class student(object):
pass

        class后面紧接着是类名,即student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,通常,如果没有适合的继承类,就使用(object)类,这是所有类最终都会继承的类。

阅读全文 >>

CentOS服务器上搭建GitLab安装步骤、中文汉化步骤、日常管理以及异常故障排查

一、服务器快速搭建gitlab方法

        参考GitLab快速搭建,如下方法按照官网操作,手动过程过于麻烦。

CentOS 6

1.安装配置依赖项

        如想使用Postfix来发送邮件,在安装期间请选择'Internet Site',也可以用sendmail或者配置SMTP服务并使用SMTP发送邮件

        在centos 6系统上,将在系统防火墙里面开放HTTP和SSH端口。

1
2
3
4
[root@localhost ~]# yum install -y curl openssh-server ipenssh-clients postfix cronie
[root@localhost ~]# service postfix start
[root@localhost ~]# chkconfig postfix on
[root@localhost ~]# lokkit -s http -s ssh

阅读全文 >>

GitLab快速搭建

        建议使用Omnibus包安装GitLab,因为它安装起来更快、更容易升级版本,而且包含了其他安装方式所没有的可靠性功能。同时推荐承载GitLab运行的服务器至少分配4GB的内存给GitLab。

Omnibus包安装方法

CentOS 6

企业版安装

1.安装并配置必要的依赖关系

        如果想使用 Postfix 发送邮件,请在安装过程中根据提示选择 ‘Internet Site’。 也可以用 Sendmail 或者配置一个自定义的 SMTP 服务 并 把它作为一个 SMTP 服务器。

        在 CentOS 系统上,下面的命令将会打开系统防火墙 HTTP 和 SSH 的访问。

1
2
3
4
yum install curl openssh-server postfix cronie
service postfix start
chkconfig postfix on
lokkit -s http -s ssh

阅读全文 >>

GitLab SMTP设置

        如想用 SMTP 代替 Sendmail 发送email,添加如下相应邮箱服务商的配置到/etc/gitlab/gitlab.rb, 然后运行gitlab-ctl reconfigure使修改生效。 omnibus-gitlab还提供了测试发送邮件功能。

        注意smtp_password 字段不应包含任何 Ruby或者YAML语法中的分隔符 (如'), 以避免处理配置文件的过程中发生不必要的意外。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.server"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "smtp user"
gitlab_rails['smtp_password'] = "smtp password"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
# 如果使用的SMTP服务是默认的 'From:gitlab@localhost'
# 可以修改这里的 'From' 的值。
gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
Example configuration 配置示例

阅读全文 >>

GitLab简介

GitLab基本介绍

        GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

        与Github类似,GitLab能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。

        它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

Git的家族成员

        Git:是一种版本控制系统,是一个命令,是一种工具。

        Gitlib:是用于实现Git功能的开发库。

        Github:是一个基于Git实现的在线代码托管仓库,包含一个网站界面,向互联网开放。

        GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业、学校等内部网络搭建git私服。

阅读全文 >>

python装饰器

        由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。

1
2
3
4
5
6
>>> def now():
... print '2013-12-25'
...
>>> f = now
>>> f()
2013-12-25

        函数对象有一个__name__属性,可以拿到函数的名字:

1
2
3
4
>>> now.__name__
'now'
>>> f.__name__
'now'

阅读全文 >>