小编Ste*_*aan的帖子

通用代码重复检测工具

我正在寻找与语言无关的代码复制工具.很容易找到特定于语言的代码复制工具(用于Java,C,PHP,...),但我想在自定义语法中对模板运行一些代码复制分析.

我不关心语法的高级解析,只是基于直线的原始字符串比较是好的.空白不敏感匹配将是一个加号,但不是必需的.(我自己规范化/消除空白并不难.)

有没有人知道可以(误)用于这样的工具?

谢谢.

language-agnostic code-analysis static-analysis code-duplication duplicates

22
推荐指数
2
解决办法
8786
查看次数

与本地到本地的--checksum的Rsync?

我会先尝试一下这个问题.我们有一个构建到大型文件树的项目.构建是几百MB,包含许多(小)文件,其中只有一小部分在构建之间发生变化.我们希望保留这些构建的一些历史记录,为了有效地执行此操作,我们希望硬链接在构建之间不会更改的文件.为此,我们使用rsync(作为更强大的兄弟cp),从本地源到本地目标,可以选择--link-dest执行硬链接魔法.

这适用于增量构建:大多数文件都没有被触及,rsync并且硬链接正确.使用完全重新编译构建(我们必须这样做是出于与此无关的原因),事情似乎没有按预期工作.由于重新编译,所有文件都获得了新的时间戳,但在内容方面,大多数文件仍然与之前的版本相同.但是,即使我们使用rsync--checksum选项(所以rsync基于内容的"同步" /硬链接,而不是文件大小+时间戳)说,没有东西了硬链接.

插图

我试图通过这个简单的(bash)脚本来隔离/说明问题:

echo "--- Start clean"
rm -fr src build*

echo "--- Set up src"
mkdir src
echo hello world > src/helloworld.txt

echo "--- First copy with src as hardlink reference"
rsync -a --checksum --link-dest=$(pwd)/src src/ build1/

echo "--- Second copy with first copy as hardlink reference"
rsync -a --checksum --link-dest=$(pwd)/build1 src/ build2/

echo "--- Result (as expected)"
ls -ali src/helloworld.txt build*/helloworld.txt

echo …
Run Code Online (Sandbox Code Playgroud)

unix linux bash rsync

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

函数内部的python导入隐藏现有变量

我正在处理一个多子模块项目中的一个奇怪的“UnboundLocalError:分配前引用的局部变量”问题,并将其精简为这个片段(使用标准库中的日志模块):

import logging

def foo():
    logging.info('foo')

def bar():
    logging.info('bar')
    if False:
        import logging.handlers
        # With these alternatives things work:
        # import logging.handlers as logginghandlers
        # from logging.handlers import SocketHandler

logging.basicConfig(level=logging.INFO)
foo()
bar()
Run Code Online (Sandbox Code Playgroud)

有这个输出(我试过 python 2.7 和 3.3):

INFO:root:foo
Traceback (most recent call last):
  File "import-test01.py", line 16, in <module>
    bar()
  File "import-test01.py", line 7, in bar
    logging.info('bar')
UnboundLocalError: local variable 'logging' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

显然,即使没有执行导入,函数内部的 import 语句也会隐藏函数作用域中已经存在的同名变量。

这感觉违反直觉和非 Pythonic。我试图找到一些关于此的信息或文档,但到目前为止没有取得太大的成功。有人对这种行为有更多的信息/见解吗?

谢谢

python python-import

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

HBase集群与HDFS上的损坏区域文件

我们有这个HBase集群:30多个节点,48个表,HDFS级别40 + TB,复制因子2.由于两个节点上的磁盘故障,我们在HDFS上有一个损坏的文件.

当前的HDFS状态

hdfs fsck /输出摘录,显示损坏的HBase区域文件:

/user/hbase/table_foo_bar/295cff9c67379c1204a6ddd15808af0b/n/ae0fdf7d0fa24ad1914ca934d3493e56: 
 CORRUPT blockpool BP-323062689-192.168.12.45-1357244568924 block blk_9209554458788732793
/user/hbase/table_foo_bar/295cff9c67379c1204a6ddd15808af0b/n/ae0fdf7d0fa24ad1914ca934d3493e56:
 MISSING 1 blocks of total size 134217728 B

  CORRUPT FILES:        1
  MISSING BLOCKS:       1
  MISSING SIZE:         134217728 B
  CORRUPT BLOCKS:       1

The filesystem under path '/' is CORRUPT
Run Code Online (Sandbox Code Playgroud)

丢失的数据无法恢复(磁盘已损坏).

目前的HBase状态

据HBase说,一切都很好,花花公子

hbase hbck 说:

Version: 0.94.6-cdh4.4.0
...
 table_foo_bar is okay.
   Number of regions: 1425
   Deployed on:  ....
...
0 inconsistencies detected.
Status: OK   
Run Code Online (Sandbox Code Playgroud)

此外,似乎我们仍然可以查询来自损坏区域文件的非丢失块的数据(据我所知,我能够根据该区域的开始和结束行键进行检查).

下一步

  • 由于文件块数据不可恢复,似乎唯一的选择是删除完整的损坏文件(使用hadoop fs -rmhadoop fsck -delete /).这将"修复"HDFS级别的损坏. …

hadoop hbase corruption hdfs fsck

3
推荐指数
2
解决办法
9248
查看次数

如何取消设置HBase列族的TTL

假设我有这些HBase表,它们在HBase webui中描述为:

test_foo      {NAME => 'test_foo', FAMILIES => [{NAME => 'fam'}]}
test_bar      {NAME => 'test_bar', FAMILIES => [{NAME => 'fam', TTL => '1000'}]}
Run Code Online (Sandbox Code Playgroud)

如何解除test_bar桌面上的TTL ?

hbase

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