小编Mil*_*kov的帖子

如何在Git中跟踪单个文件的历史记录时查看完整的提交?

我有一个大约有两年历史的Git存储库.我有单个文件,我希望找到所有提交,并为每个提交:在其中提交的所有其他文件.我们假设这个文件名为file.txt.我可以用这个文件作为参数运行gitk:

gitk file.txt
Run Code Online (Sandbox Code Playgroud)

我确实得到了每一次提交.但是,在gitk中浏览该树只会显示对file.txt所做的更改.我想看看那个提交中有哪些其他文件被更改了.我可以复制粘贴每个提交SHA1并显示它,但有超过一百个与此文件相关的提交.

我注意到屏幕右下角的"评论"部分为空(仅显示文本"评论").也许可以在那里显示文件列表?

git gitk

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

如何检查CKEditor中是否包含一些文本?

我有一个包含几个字段的HTML表单.其中一个是由CKEditor管理的textarea.

当用户想要提交表单时,我想检查他是否在所有字段中输入了值.

我知道如何检查CKEditor控件是否包含任何内容,但它可能是"空"HTML标记,其中没有任何文本.

我该如何查看文字?

服务器端我使用的是像PHP的trim(strip_tags($ content))之类的东西,所以我想在JavaScript中使用相同的东西.

使用jQuery的解决方案也是可用的.

javascript fckeditor ckeditor

19
推荐指数
3
解决办法
3万
查看次数

用什么代替巨型switch语句?

我有一个解析一些模板文件的代码,当它找到一个占位符时,它会用一个值替换它.就像是:

<html>
<head>
    <title>%title%</title>
</head>
<body bgcolor="%color%">
...etc.
Run Code Online (Sandbox Code Playgroud)

在代码中,解析器找到这些,调用此函数:

string getContent(const string& name)
{
    if (name == "title")
        return page->getTitle();
    else if (name == "color")
        return getBodyColor();
    ...etc.
}
Run Code Online (Sandbox Code Playgroud)

然后用返回值替换原始占位符.

在实际情况中,它不是虚拟网页,并且可以发生许多(50+)个不同的占位符.

我的代码是C++,但我猜这个问题存在于任何语言中.我猜它更多的是关于算法和OO设计.唯一重要的是必须编译,即使我希望我没有任何动态/评估代码.

我虽然关于实施责任链模式,但它似乎并没有改善这种情况.

更新:我也关注另一个帖子中的这个评论.我应该关心它吗?

c++ templates switch-statement chain-of-responsibility

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

转到Vim中C++函数的末尾

如果我在函数的中间,我想在vim中找到它的最后.我遇到这个问题,因为我们有时会有超过500行的功能(不要问为什么).

我用vim,gvim.

c++ vim

17
推荐指数
3
解决办法
6320
查看次数

删除旋转的MySQL二进制日志是否安全?

我有一个二进制日志激活的MySQL服务器.一天日志文件被"旋转",即MySQL似乎停止写入它并创建新的日志文件.例如,我目前在/ var/lib/mysql中有这些文件

-rw-rw---- 1 mysql mysql 10485760 Jun  7 09:26 ibdata1
-rw-rw---- 1 mysql mysql  5242880 Jun  7 09:26 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880 Jun  2 15:20 ib_logfile1
-rw-rw---- 1 mysql mysql  1916844 Jun  6 09:20 mybinlog.000004
-rw-rw---- 1 mysql mysql 61112500 Jun  7 09:26 mybinlog.000005
-rw-rw---- 1 mysql mysql 15609789 Jun  7 13:57 mybinlog.000006
-rw-rw---- 1 mysql mysql       54 Jun  7 09:26 mybinlog.index
Run Code Online (Sandbox Code Playgroud)

而mybinlog.000006正在增长.

我可以简单地使用mybinlog.000004和mybinlog.000005,将它们压缩并转移到另一台服务器,或者我之前需要做些什么吗?

mybinlog.index中存储了哪些信息?只有关于最新二进制日志的信息?

更新:我知道我可以使用更新mybinlog.index文件的PURGE BINARY LOGS删除日志.但是,我需要在删除之前将日志传输到另一台计算机(我测试备份是否在另一台计算机上有效).为了减少传输大小,我希望bzip2文件.如果日志文件不再"存在",PURGE BINARY LOGS会做什么?

mysql binary-log

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

有没有理由使用这个 - >

我用C++编程多年,但我对一件事情仍有疑问.在其他人代码的许多地方,我看到类似的东西:

void Classx::memberfunction()
{
    this->doSomething();
}
Run Code Online (Sandbox Code Playgroud)

如果我需要导入/使用该代码,我只需删除this-> part,我从未见过任何破坏或有一些副作用.

void Classx::memberfunction()
{
    doSomething();
}
Run Code Online (Sandbox Code Playgroud)

那么,你知道使用这种结构的任何理由吗?

编辑:请注意我在这里谈论成员函数,而不是变量.我知道当你想要区分成员变量和函数参数时,可以使用它.

编辑:明显重复: 有没有理由不使用"这个"("自我","我",......)?

c++

16
推荐指数
4
解决办法
5786
查看次数

限制试用版的最佳方法是什么?

我正在构建一个共享软件,允许用户将各种类型的文件(XML,CSV等)导入数据库.我想提供一个试用版,但以某种方式限制它以防止真正需要它的用户,而不必购买它.

我考虑过基于时间的限制,但似乎有很多方法可以解决这个问题,特别是今天的虚拟机和东西.

所以,我正在考虑限制功能,但我不希望这个试用版成为crippleware.

你有没有买过一些共享软件?试用版的限制是什么?

编辑:另外,你对用户的唠叨屏幕感觉如何?

trialware shareware

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

合并后的Git Commit打开VIM

我做了两个文件的合并,现在我试图提交,但它用以下数据打开VIM,现在我完全迷失了.(我对VIM没有经验)

Merge branch 'master' of nodester.com:/node/git/lolcoder/****-******

Conflicts:
        .gitignore
        server.js
#
# It looks like you may be committing a merge.
# If this is not correct, please remove the file
#       .git/MERGE_HEAD
# and try again.


# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
# …
Run Code Online (Sandbox Code Playgroud)

git vim

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

PHP:析构函数vs register_shutdown_function

我有一个PHP类,可以动态创建PNG图像并将其发送到浏览器.PHP手册说我需要确保在结束时调用imagedestroy函数来释放内存.现在,如果我没有使用类,我会得到一些像这样的代码:

function shutdown_func() 
{
    global $img;
    if ($img)
        imagedestroy($img);
}
register_shutdown_function("shutdown_func");
Run Code Online (Sandbox Code Playgroud)

但是,我认为我班级的适当位置是在类'析构函数中调用imagedestroy.

我没有发现析构函数是否以与关闭函数相同的方式调用?例如,如果用户在浏览器中按下STOP按钮,则执行停止.

注意:无论您在答案中写什么,请指向支持它的一些文章或手册页(URL).

php destructor memory-leaks image-processing

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

如何使用CodeIgniter测试控制器?

我有一个使用CodeIgniter MVC框架构建的PHP Web应用程序.我想测试各种控制器类.我正在使用Toast进行单元测试.我的控制器没有状态,它们处理的所有内容都保存到会话中或传递给视图显示.创建一个模拟会话对象并测试它是否正常工作很简单(只需创建一个模拟对象并使用$ controller-> session = $ mock注入它).

我不知道的是,如何使用视图.在CodeIgniter中,视图加载为:

$this->load->view($view_name, $vars, $return);
Run Code Online (Sandbox Code Playgroud)

由于我不想改变CI代码,我虽然可以创建一个模拟Loader并替换原始代码.这就是问题所在,我找不到从CI_Loader派生新类的方法.

如果我不包含system/libraries/Loader.php文件,那么类CI_Loader是未定义的,我不能继承它:

class Loader_mock extends CI_Loader
Run Code Online (Sandbox Code Playgroud)

如果我确实包含该文件(使用require_once),我会收到错误:

Cannot redeclare class CI_Loader
Run Code Online (Sandbox Code Playgroud)

看起来CI代码本身不会出于任何原因使用require_once.

这里有没有人有单元测试CodeIgniter驱动的应用程序的经验?

编辑:我试图在运行时将一个真正的加载器对象注入一个模拟类,并使用__call,__ set,__ get,__ isset和__unset重定向所有调用和变量.但是,它似乎不起作用(我没有得到任何错误,只是没有输出,即来自Toast的空白页).这是代码:

class Loader_mock 
{
    public $real_loader;
    public $varijable = array();

    public function Loader_mock($real)
    {
        $this->real_loader = $real;
    }

    public function __call($name, $arguments) 
    {
        return $this->real_loader->$name($arguments);
    }

    public function __set($name, $value)
    {
        return $this->real_loader->$name = $value;
    }

    public function __isset($name)
    {
        return isset($this->real_loader->$name);
    }

    public function __unset($name)
    {
        unset($this->loader->$name);
    } …
Run Code Online (Sandbox Code Playgroud)

php codeigniter

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