小编kob*_*las的帖子

将先前的提交分解为多个提交

如果没有创建分支并在新分支上做一堆时髦的工作,是否有可能在提交到本地存储库后将单个提交分解为几个不同的提交?

git

1113
推荐指数
13
解决办法
27万
查看次数

使用Golang将MySQL表转储为JSON

在Go中将MySQL的快速转储器放到了JSON中.但是我发现从数据库中检索的所有内容都是[]byte数组.因此,我将所有内容编码为字符串,而不是原生的JSON整数或布尔值.

代码子集:

import (
    "encoding/json"
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)


func dumpTable(w io.Writer, table) {
    // ...

    rows, err := Query(db, fmt.Sprintf("SELECT * FROM %s", table))
    checkError(err)
    columns, err := rows.Columns()
    checkError(err)

    scanArgs := make([]interface{}, len(columns))
    values   := make([]interface{}, len(columns))

    for i := range values {
        scanArgs[i] = &values[i]
    }

    for rows.Next() {
        err = rows.Scan(scanArgs...)
        checkError(err)

        record := make(map[string]interface{})

        for i, col := range values {
            if col != nil {
                fmt.Printf("\n%s: type= %s\n", columns[i], reflect.TypeOf(col))

                switch t …
Run Code Online (Sandbox Code Playgroud)

mysql go

20
推荐指数
1
解决办法
2万
查看次数

仅处理非空白行

我有以下代码片段

def send(self, queue, fd):
    for line in fd:
        data = line.strip()
        if data:
            queue.write(json.loads(data))
Run Code Online (Sandbox Code Playgroud)

这当然可以正常工作,但我有时会想知道是否有一种"更好"的方式来编写那种只用非空行的构造.

挑战在于它应该使用'fd'读取的迭代特性,并能够处理100+ MB范围内的文件.

更新 - 你急于得到这个问题的分数,你忽略了一个导入部分,即内存使用.例如表达式:

 non_blank_lines = (line.strip() for line in fd if line.strip())
Run Code Online (Sandbox Code Playgroud)

是要将整个文件缓冲到内存中,更不用说执行两次strip()操作了.哪个适用于小文件,但是当你有100 + MB的数据(或偶尔100GB)时会失败.

部分挑战是以下工作,但是要阅读:

for line in ifilter(lambda l: l, imap(lambda l: l.strip(), fd)):
    queue.write(json.loads(line))
Run Code Online (Sandbox Code Playgroud)

寻找魔术师!

最终更新:PEP-289对于我自己更好地理解[]和()与所涉及的迭代器之间的区别非常有用.

python

6
推荐指数
1
解决办法
1393
查看次数

父结构上的Golang嵌入式接口

我有一个试图在"子类"上实现函数的程序,其中父进程可以检查接口是否已实现.对于透视图,它实际上是基于if方法存在来处理REST URL生成.

我遇到的是基于以下模式,当实现仅1时,IList和IGet接口都可以在TestController对象上找到.当调用IGet接口时,我感到恐慌.

我宁愿不在基础结构上做出Get/List的具体定义,然后必须覆盖它们,更愿意进行存在的测试,然后从那里开始.

这是一个游乐场链接以及https://play.golang.org/p/5j58fejeJ3

package main

import "fmt"

type IGet interface {
    Get(int)
}

type IList interface {
    List(int)
}

type Application struct {
    name    string
}

type BaseAppController struct {
    *Application

    IGet
    IList
}

type TestController struct {
    *BaseAppController
}

func (ctrl *BaseAppController) Init() {
    fmt.Println("In Init")

    if f, ok := interface{}(ctrl).(IGet); ok {
        fmt.Println("Controller Found GET", f)
    } else {
        fmt.Println("Controller NOT Found GET", f)
    }

    if f, ok := interface{}(ctrl).(IList); ok {
        fmt.Println("Controller Found LIST", …
Run Code Online (Sandbox Code Playgroud)

go

6
推荐指数
2
解决办法
5917
查看次数

python2和python3之间的可移植元类

我正在尝试在python3中运行python2程序,它具有以下Meta类定义.哪个在Py2上运行得很好.什么是让它与py2和py3兼容的"最佳"方法?

它在单元测试中失败了:

try:
    raise Actor.DoesNotExist
except Actor.DoesNotExist:
    pass
Run Code Online (Sandbox Code Playgroud)

失败是:

AttributeError: type object 'Actor' has no attribute 'DoesNotExist'
Run Code Online (Sandbox Code Playgroud)

基本元类定义是:

class MetaDocument(type):
    def __new__(meta,name,bases,dct):

        class DoesNotExist(BaseException):
            pass

        class MultipleDocumentsReturned(BaseException):
            pass
        dct['DoesNotExist'] = DoesNotExist
        dct['MultipleDocumentsReturned'] = MultipleDocumentsReturned
        class_type = type.__new__(meta, name, bases, dct)
        if not class_type in document_classes:
            if name == 'Document' and bases == (object,):
                pass
            else:
                document_classes.append(class_type)
        return class_type

class Document(object):
    __metaclass__ = MetaDocument
Run Code Online (Sandbox Code Playgroud)

python python-3.x

5
推荐指数
1
解决办法
2028
查看次数

Salt-Stack看起来意味着需要

我们有以下盐状态,手表是否意味着要求?或者这条规则是最好的?

"celery-worker:":
  supervisord.running:
    - update: True
    - watch:
      - file: /etc/supervisor/conf.d/celery-worker.conf
      - pkg: ingestion
    - require:
      - file: /etc/supervisor/conf.d/celery-worker.conf
      - pkg: ingestion
Run Code Online (Sandbox Code Playgroud)

salt-stack

5
推荐指数
1
解决办法
561
查看次数

标签 统计

go ×2

python ×2

git ×1

mysql ×1

python-3.x ×1

salt-stack ×1