小编sa1*_*125的帖子

mercurial - 我想添加一些自定义代码,以便在提交后运行

在我用mercurial进行的每次提交后,我可以在哪里放置代码?具体来说,我想在项目根目录中的.hg文件夹中维护一个名为latest的文件 - 该文件将保存最新提交的修订号和哈希码.在同一个主题上,我怎样才能获得python中的那些?

# get mercurial version hash
ver = ?

# get mercurial revision number
rev = ?

# is there a shortcut to this folder through mercurial?
f = open('/path/to/.hg/latest', 'w')
f.write('ver=%s\nrev=%d' % ( str(ver), int(rev) ) )
f.close
Run Code Online (Sandbox Code Playgroud)

编辑:我能够用钩子(在.hg/hgrc中)完成上述操作:

[hooks]
precommit= echo node=`hg tip --template {node}` > tip && echo rev=`hg tip --template {rev}` >> tip && hg add tip
Run Code Online (Sandbox Code Playgroud)

带有提示信息的文件已成功创建,但我还想将其添加到当前提交中hg add tip,这是mercurial进程卡在等待挂起提交显然持有的锁的位置.有没有办法解决它,以便在/ pre commit期间创建的文件被添加到它?谢谢.

python mercurial customization automation

3
推荐指数
1
解决办法
415
查看次数

使用模板时g ++重复符号错误(noob问题)

所以我试图选择C++,为此我决定使用模板编写一个通用的Group类,它将Type和size作为模板参数:

在group.h中:

#ifndef __GROUP_H
#define __GROUP_H
#define MAX_SIZE 10

/**********************************************************
 * Define a Group class that handles a collection of members
 * of some Type
 **********************************************************/
template <class Type, int max>
class Group {
  private:
      std::string name;
      int count, size;
      Type * members[max];

  public:
      Group();
      Group(const std::string & _name);
      ~Group();

      // display instance info
      virtual void show();

      // add member
      void add_member(Type &);

      // list memebers
      void list();

      // name setter/getter
      void set_name(const std::string &);
      const std::string & get_name();

}; …
Run Code Online (Sandbox Code Playgroud)

c++ templates compiler-errors g++

3
推荐指数
1
解决办法
3360
查看次数

FabricJS - 设置对象位置,其中枢轴为左上角

我开始使用非常棒的FabricJS框架,并注意到对象定位与CSS约定有点不同.CSS将定位枢轴放置在左上角的位置,FabricJS将其放置在对象的中心:

CSS

@------------
|           |
|           |
|           |
|           |
|           |
-------------
Run Code Online (Sandbox Code Playgroud)

FabricJS

-------------
|           |
|           |
|     @     |
|           |
|           |
-------------
Run Code Online (Sandbox Code Playgroud)

有没有办法控制这个设置?谢谢.


编辑:

这是项目路线图中的退出项目.所以它将在未来发生,但目前尚未得到支持.

positioning canvas conventions fabricjs

3
推荐指数
1
解决办法
2941
查看次数

在Rails中使用ActiveModel :: Serializer - JSON数据在json和index响应之间有所不同

我正在使用active_model_serializersgem来控制序列化数据,并看到一些奇怪的行为.我的代码看起来像这样:

模型和序列化器

class User
  include Mongoid::Document
  field :first_name, :type => String
  field :last_name,  :type => String

  def full_name
    first_name + " " + last_name
  end
end

class UserSerializer < ActiveModel::Serializer
  attributes :id, :first_name, :last_name, :full_name
end
Run Code Online (Sandbox Code Playgroud)

调节器

class UsersController < ApplicationController
  respond_to :json, :html

  def index
    @users = User.all
    respond_with @users
  end
end
Run Code Online (Sandbox Code Playgroud)

view(app/views/users/index.html.erb)

...
<script type="text/javascript">
  $(function(){
    // using a backbone collection to manage data
    App.users = new App.Collections.Users(<%= @users.to_json.html_sage %>);
  });
</script>
Run Code Online (Sandbox Code Playgroud)

现在,当我渲染视图时,我看到full_name我的数据中缺少属性(通过模型中的方法生成):

{ …
Run Code Online (Sandbox Code Playgroud)

ruby json ruby-on-rails mongoid active-model-serializers

3
推荐指数
1
解决办法
4227
查看次数

ZShell中的Mercurial分支/文件名称完成

我一直在使用Zsh作为Bash的替代品.有一件事情不再适用,那就是为mercurial完成分支和未提交的文件名.

如果以前(bash)我有以下hg跟踪文件夹:

repo/
    .hg/
    file1.txt
    file2.txt <-- modified
Run Code Online (Sandbox Code Playgroud)

然后在Bash中执行此操作:

% hg commit -m "changed file2.txt" <TAB>
Run Code Online (Sandbox Code Playgroud)

自动完成file2.txt.

同样设有分公司-假设我有default,devcrazy分支机构,猛砸知道如何完成分支名称:

% hg update cr<TAB>
Run Code Online (Sandbox Code Playgroud)

完成了分支名称crazy.

基本上我要问的是如何恢复这个功能 - 哪个文件处理等等.

mercurial zsh tab-completion

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

去 - 为什么安排goroutine背景工作者也需要自己的goroutine?

我正在研究一些Go的并发模式.我看着使用goroutine和输入/输出通道实现后台工作程序,并注意到当我将新作业发送到接收通道(基本上将新作业排入队列)时,我必须在goroutine中执行它,否则调度会搞乱.含义:

这崩溃了:

for _, jobData := range(dataSet) {
    input <- jobData
}
Run Code Online (Sandbox Code Playgroud)

这有效:

go func() {
    for _, jobData := range(dataSet) {
        input <- jobData
    }
}()
Run Code Online (Sandbox Code Playgroud)

对于更具体的东西,我玩了一些无意义的代码(这里是去游乐场):

package main

import (
    "log"
    "runtime"
)

func doWork(data int) (result int) {
    // ... some 'heavy' computation
    result = data * data
    return
}

// do the processing of the input and return
// results on the output channel
func Worker(input, output chan int) {
    for data := range …
Run Code Online (Sandbox Code Playgroud)

concurrency design-patterns go goroutine

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

Flask - 使用装饰器和路由参数来使用自定义jinja2标记呈现数据

我想通过装饰器和路径参数的组合将元数据标签添加到Jinja模板:

视图:

@meta_tags(foo='bar', ping='pong')
@app.route('/some-route/<slug>')
def action(slug):
    return render_template('action.html')
Run Code Online (Sandbox Code Playgroud)

模板:

<html>
    <head>
        <title>Foo</title>
        {{ meta_tags }}
        <!-- 
        should render:
        <meta name="slug" content="[actual-slug]" />
        <meta name="foo" content="bar" />
        <meta name="ping" content="pong" />
        -->
    </head>
    ...
Run Code Online (Sandbox Code Playgroud)

目标:

  • 将每个kwargs元素渲染到自己的元标记中.
  • 将特定于页面的slug渲染到另一个自定义标记中.

我意识到实现这一点的一种方法涉及注册@app.context_processor,但后来我也想要阻止并使用动态slug部分创建一个自定义jinja标记,它将呈现<meta>html部分.

什么是惯用的Flask解决方法?谢谢.

decorator jinja2 url-parameters flask

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

Rails named_scope继承?

我试图通过提供一个继承的公共基础模型来概括我的一些模型,其中包含一些相互的named_scope声明和一个激活搜索的过滤器方法,以便在控制器端进行更简单的查询.这在我在控制台中运行时似乎有效,但在控制器中失败:

# in the base model
class GenericModel < ActiveRecord::Base

  named_scope :by_name, lambda { |name|
    ( name.blank? ) ? {} : { :conditions => [ "#{self.table_name}.name like ?", "%#{name}%" ] }
  }

  def filter(params)
    res = []
    res = self.by_name( (params[:name] or '') ) if params[:name]
    return res
  end

end

class MyModel < GenericModel
  set_table_name 'my_models'
end

# works in in console!
>> params = { :name => 'jimmy' }
>> MyModel.filter(params)
=> [ <#MyModel ...>, ... ]
nil

# …
Run Code Online (Sandbox Code Playgroud)

inheritance activerecord named-scope ruby-on-rails

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

如何在保留通配符内容的同时在vim中执行搜索/替换?

这就是我的意思 -

说我在整个文件中都有这些

ActiveRecord::Base.connection.execute("select * from table1").each_hash do ..
ActiveRecord::Base.connection.execute("select * from table2").each_hash do ..
ActiveRecord::Base.connection.execute("select * from table3").each_hash do ..

client.query("select * from table1").each_hash do ..
client.query("select * from table2").each_hash do ..
client.query("select * from table3").each_hash do ..
Run Code Online (Sandbox Code Playgroud)

我想替换ActiveRecord的each_hash调用each(:as => :hash),所以我得到:

ActiveRecord::Base.connection.execute("select * from table1").each(:as => :hash) do ..
ActiveRecord::Base.connection.execute("select * from table2").each(:as => :hash) do ..
ActiveRecord::Base.connection.execute("select * from table3").each(:as => :hash) do ..
Run Code Online (Sandbox Code Playgroud)

并使client.query行不受影响.

我知道我可以使用宏,但是如何使用vim的搜索/替换呢?我想过用这个:

%s/\.execute(.*).each_hash/ ...something... /g
Run Code Online (Sandbox Code Playgroud)

问题是,如何通过搜索和替换保留实际查询(什么来......哪些......是)?

vim replace

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

如何在Hadoop Map/Reduce作业中访问DistributedCache?

我想要一个小的文件传递给我使用的运行作业GenericOptionsParser-files标志:

$ hadoop jar MyJob.jar -conf /path/to/cluster-conf.xml -files /path/to/local-file.csv data/input data/output
Run Code Online (Sandbox Code Playgroud)

这应该将作业发送到我的集群并附加local-file.csv以在需要时可用于Mapper/Reducer.当我在伪分布式模式下运行它时,它工作得很好,但是当我在集群上启动作业时,似乎无法找到该文件.我正在使用mapper的setup方法读取文件,如下所示:

public static class TheMapper extends Mapper<LongWritable, Text, Text, Text> {

  @Override
  public void setup(Context context) throws IOException, InterruptedException {

    URI[] uriList = DistributedCache.getCacheFiles( context.getConfiguration() );
    CsvReader csv = new CsvReader(uriList[0].getPath());

    // work with csv file..
  }

  // ..
}
Run Code Online (Sandbox Code Playgroud)

当作业运行时,我得到以下异常:

java.io.FileNotFoundException: File /hdfs/tmp/mapred/staging/hduser/.staging/job_201205112311_011/files/local-file.csv does not exist.
at com.csvreader.CsvReader.<init>(Unknown Source)
at com.csvreader.CsvReader.<init>(Unknown Source)
at com.csvreader.CsvReader.<init>(Unknown Source)
at MyJob$TheMapper.setup(MyJob.java:167)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:142)
...
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?谢谢.

hadoop mapreduce distributed-cache

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

同步加载node.js中的依赖项

我正在脚本中加载节点库,并且在加载依赖于该库的一些自定义之后立即:

var somelib = require('somelib');

// some customizations made to
// somelib's methods
require('./somelib.custom');

somelib.SomeObject = ...
^
ReferenceError: somelib is not defined
Run Code Online (Sandbox Code Playgroud)

我不断收到异常,因为加载是异步完成的,并且第二次require发生在第一个正确命名空间之前。解决这个问题的好方法是什么?谢谢。

编辑:我的原始代码

我正在尝试使用fabric.js节点包(基于包站点中的文章构建)从json数据创建PNG图像。这是通过使用最初在客户端上生成的JSON数据加载服务器端结构画布,然后写入文件流来完成的:

var path     = require('path');
var fs       = require('fs');
var fabric   = require('fabric').fabric;
require('./fabric.custom');

var canvas   = fabric.createCanvasForNode(400, 400);
var outfile  = fs.createWriteStream("image.png");
var filepath = "/path/to/file.json";

fs.readFile(filepath, 'utf8', function(err, json) {
  canvas.loadFromJSON(json, function() {
    var stream = canvas.createPNGStream();
    stream.on('data', function(chunk) {
      outfile.write(chunk);
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

“ fabric.custom”文件包含多个自定义织物画布对象,这些对象将覆盖某些织物原型默认值。它们在客户端上运行良好,并且需要正确渲染画布。看起来像这样:

fabric.TextBox …
Run Code Online (Sandbox Code Playgroud)

require dependency-management node.js

0
推荐指数
1
解决办法
4331
查看次数

如何使用golang保持登录会话以进行抓取?

我正在尝试从需要使用go登录用户/密码的网站上抓取数据.使用python这很简单requests:

import requests

session = requests.Session()
session.post("https://site.com/login", data={ 'username': 'user', 'password': '123456' })

# access URL that requires authentication
resp = session.get('https://site.com/restricted/url')
Run Code Online (Sandbox Code Playgroud)

用golang完成同样事情的简单方法是什么?谢谢.

session-state go python-requests

0
推荐指数
1
解决办法
1814
查看次数

使用xpath从html中提取嵌套文本

我正在尝试从如下所示的 html 页面中提取文本内容:

<div class="content">
    <div class="section">
      Lorem <a href="..." class="link">ipsum</a> 
      dolor <a href="..." class="link">sit</a> amet, 
      consectetur <a href="..." class="link">adipiscing</a> elit
    </div>

    <div class="section">
      sed do <a href="..." class="link">eiusmod</a> tempor 
      incididunt <a href="..." class="link">ut</a> labore 
      et <a href="..." class="link">dolore</a>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我只想提取文本部分:

Lorem ipsum dolor amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
Run Code Online (Sandbox Code Playgroud)

我的 XPath (2.0) 表达式是//*[contains(@class, 'section')]. 当我使用 评估它时javax.xml.xpath.XPathExpression,我只检索链接之外的文本:

Lorem dolor amet, consectetur elit, sed do tempor incididunt labore et …
Run Code Online (Sandbox Code Playgroud)

html java xpath

0
推荐指数
1
解决办法
1263
查看次数