小编Sch*_*ern的帖子

如何在git中找到下一个提交?(参考儿童/儿童)

ref^是指之前ref的提交,之后 获取提交ref怎么样?

例如,如果我git checkout 12345如何检查下一次提交?

谢谢.

PS是的,git是一个DAG节点指针结构树,无论如何. 如何在此之后找到提交?

git version-control

218
推荐指数
9
解决办法
5万
查看次数

节点JS Promise.all和forEach

我有一个类似于数组的数组,它暴露了异步方法.async方法调用返回数组结构,进而显示更多异步方法.我正在创建另一个JSON对象来存储从此结构获取的值,因此我需要小心跟踪回调中的引用.

我编写了一个强力解决方案,但我想学习一个更惯用或更干净的解决方案.

  1. 对于n级嵌套,该模式应该是可重复的.
  2. 我需要使用promise.all或类似的技术来确定何时解决封闭的例程.
  3. 并非每个元素都必然涉及进行异步调用.所以在嵌套的promise.all中我不能简单地根据索引对我的JSON数组元素进行赋值.尽管如此,我确实需要在嵌套的forEach中使用promise.all之类的东西,以确保在解析封闭例程之前已经完成了所有属性赋值.
  4. 我正在使用bluebird promise lib,但这不是必需的

这是一些部分代码 -

var jsonItems = [];

items.forEach(function(item){

  var jsonItem = {};
  jsonItem.name = item.name;
  item.getThings().then(function(things){
  // or Promise.all(allItemGetThingCalls, function(things){

    things.forEach(function(thing, index){

      jsonItems[index].thingName = thing.name;
      if(thing.type === 'file'){

        thing.getFile().then(function(file){ //or promise.all?

          jsonItems[index].filesize = file.getSize();
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous node.js promise

105
推荐指数
2
解决办法
18万
查看次数

如何在Github上的单个组织中关闭新存储库的自动通知订阅?

当我在Github组织中创建新存储库时,所有组织所有者都会自动订阅该存储库的通知.

我将为存档目的制作大量存储库.我想关闭自动订阅,不仅仅是为了我,而是为了组织中的每个人.我还想避免发送最初的"你已经被自动订阅"的电子邮件.我无法在Github API或组织设置中找到任何内容来执行此操作.

Hey there, we're just writing to let you know that you've been automatically subscribed to a repository on GitHub.

    gitpan-test/Acme-LookOfDisapproval created by gitpan-test-account
    Read-only release history for Acme-LookOfDisapproval
    https://github.com/gitpan-test/Acme-LookOfDisapproval

You'll receive notifications for all issues, pull requests, and comments that happen inside the repository. If you would like to stop watching this repository, you can manage your settings here:

    https://github.com/gitpan-test/Acme-LookOfDisapproval/subscription

You can unwatch this repository immediately by clicking here:

    https://github.com/gitpan-test/Acme-LookOfDisapproval/unsubscribe_via_email/blahblahblah

You were automatically subscribed because you've been …
Run Code Online (Sandbox Code Playgroud)

github

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

为什么PHP属性不允许函数?

我是PHP的新手,但我已经用类似语言编程多年了.我对以下内容感到困惑:

class Foo {
    public $path = array(
        realpath(".")
    );
}
Run Code Online (Sandbox Code Playgroud)

它产生了语法错误:Parse error: syntax error, unexpected '(', expecting ')' in test.php on line 5这是realpath调用.

但这很好用:

$path = array(
    realpath(".")
);
Run Code Online (Sandbox Code Playgroud)

在我的头撞了一会儿之后,我被告知你不能在属性默认情况下调用函数; 你必须这样做__construct.我的问题是:为什么?!这是"功能"还是草率实施?理由是什么?

php language-design php-internals

41
推荐指数
4
解决办法
5431
查看次数

如何使Perl调试器不停在"子程序调用中的100级深度"

我正在使用一个庞大,陈旧,凌乱,臃肿的框架.它经常在子程序调用中超过100级.Perl调试器认为适合停止并一遍又一遍地通知我这个事实.

Package::Stash::name(/usr/local/perl/5.10.1/lib/site_perl/5.10.1/Package/Stash.pm:21):
21:     return $_[0]->{package};
100 levels deep in subroutine calls!
  DB<1> 
Run Code Online (Sandbox Code Playgroud)

如何让Perl调试器不关心堆栈有多大?

谢谢.

debugging perl

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

我如何在MySQL中为数据库设置别名?

我正在寻找一种在MySQL中对数据库进行别名的方法.原因是能够重命名实时的生产数据库而不会导致系统崩溃.我想我可以将数据库别名为新名称,在我闲暇时更改和部署连接到它的代码,并最终删除旧别名.

如果有更好的方法来实现这一点,请告诉我.

mysql schema alias

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

如何共享包含文件句柄的对象?

Perl线程不支持共享文件句柄.必须共享共享数据结构的所有元素.如果需要共享包含文件句柄的对象,则会出现问题.

{
    package Foo;
    use Mouse;

    has fh =>
      is      => 'rw',
      default => sub { \*STDOUT };
}

use threads;
use threads::shared;
my $obj = Foo->new;
$obj = shared_clone($obj);           # error: "Unsupported ref type: GLOB"
print {$obj->fh} "Hello, world!\n";
Run Code Online (Sandbox Code Playgroud)

文件句柄是否"共享"无关紧要,它仅用于输出.也许有一个技巧,文件句柄存储在共享对象之外?

该对象实际上包含在另一个共享对象中,在另一个共享对象中等等.具有讽刺意味的是,有问题的对象从不使用线程本身,但如果用户使用线程,则必须在整个过程中保持协调.

这里可以看到有问题的真实代码:这些对象用于配置格式化输出的位置.对象是必需的,因为输出并不总是转到文件句柄.

perl multithreading

16
推荐指数
2
解决办法
1455
查看次数

穆斯"建设者"与"默认"

我理解使用builderenable子类可以轻松覆盖属性默认值,角色可以覆盖require它们.这也可以使用default如下方式完成:

has 'foo' =>
    is       => 'rw',
    isa      => 'Str',
    default  => sub { $_[0]->_build_foo };
Run Code Online (Sandbox Code Playgroud)

我想知道使用builder我还没有进一步的优势吗?我自己想出了一些:

  • builder是声明性的,所以你可以反省foo内置_build_foo
  • builder 消除了子程序包装,使其更快一些
  • builder允许使用有用的lazy_build.

UPDATE 为了澄清,这是不是defaultVS builder一般,但default => sub { $_[0]->_build_foo }VS builder => '_build_foo'.

perl moose

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

如何使用Devel :: Declare注入多行?

我想用来Devel::Declare注入多行Perl代码.但是,Devel::Declare::set_linestr()不能处理多行.

通常我会将多个语句一起作为一行加入.这些语句必须在单独的行上以保留其行号以用于错误报告目的.这是为了解决Method :: Signatures中的这个bug以及这个相关的bug.我愿意接受其他解决方案.

例如,Method :: Signatures目前会转换此代码......

use Method::Signatures;

func hello(
    $who = "World",
    $greeting = get_greeting($who)
) {
    die "$greeting, $who";
}
Run Code Online (Sandbox Code Playgroud)

......进入这...

func  \&hello; sub hello  { BEGIN { Method::Signatures->inject_scope('') }; my $who = (@_ > 0) ? ($_[0]) : ( get_greeting($who)); my $greeting = (@_ > 1) ? ($_[1]) : ( "Hello"); Method::Signatures->too_many_args_error(2) if @_ > 2;
    die "$greeting, $who";
}
Run Code Online (Sandbox Code Playgroud)

die $who 然后报告第4行而不是第7行.

我希望它是这个(或者可能涉及的东西#line).

func …
Run Code Online (Sandbox Code Playgroud)

perl

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

如何在Go中初始化组合结构?

假设我有一个嵌入了其他结构的结构.

type Base struct {
    ID string
}

type Child struct {
    Base
    a int
    b int
}
Run Code Online (Sandbox Code Playgroud)

当我进行初始化时Child,我无法ID直接初始化该字段.

// unknown field 'ID' in struct literal of type Child
child := Child{ ID: id, a: a, b: b }
Run Code Online (Sandbox Code Playgroud)

我必须分别初始化ID字段.

child := Child{ a: 23, b: 42 }
child.ID = "foo"
Run Code Online (Sandbox Code Playgroud)

这似乎违反了封装.Child的用户必须知道ID字段有不同之处.如果我稍后将公共字段移动到嵌入式结构中,则可能会破坏初始化.

我可以NewFoo()为每个结构编写一个方法,并希望每个人都使用它,但有没有办法安全地使用结构文字嵌入式结构,而不会显示某些字段是嵌入的?或者我在这里应用错误的模式?

go

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