小编taw*_*taw的帖子

如何压缩小字符串

我有一个充满大量URL的sqlite数据库,它占用了大量的磁盘空间,访问它会导致许多磁盘搜索并且速度很慢.平均URL路径长度为97个字节(主机名重复很多,因此我将它们移动到外键表).压缩它们有什么好方法吗?大多数压缩算法适用于大文档,而不是平均少于100字节的"文档",但即使减少20%也非常有用.任何可行的压缩算法?没有任何标准.

compression sqlite

11
推荐指数
2
解决办法
7183
查看次数

CSS重置仅适用于#widget

假设我有使用复杂CSS的小部件,并且必须嵌入到多个都有CSS的网站中.

如果我用"#widget"为所有小部件的CSS规则添加前缀,它们将不适用于外部的任何内容,因此修复了一个问题.不幸的是,网站的CSS规则仍然可能弄乱小部件.

如果我使用适当的重置规则重置#widget内的所有CSS,那么希望它们会覆盖所有外部规则,对吧?(因为我的规则使用#id而外部规则不知道我的小部件中的任何id,他们不能覆盖它们,对吧?!尽管很重要)

将所有CSS重置为已知状态的最佳方法是什么?大多数CSS重置都是从浏览器默认值开始的,它们不会重置任意CSS.是否有任何CSS重置无论什么工作?

css reset

11
推荐指数
2
解决办法
2756
查看次数

Ruby缩进多行字符串

这是一个最佳实践问题.有明显的方法可以做到这一点,其中没有一个看起来很正确.

我经常需要测试是否产生了一些多行字符串.这通常会打破缩进,使一切看起来像一团糟:

class TestHelloWorld < Test::Unit::TestCase
  def test_hello
    assert_equal <<EOS, hello_world
Hello, world!
  World greets you
EOS
  end
end
Run Code Online (Sandbox Code Playgroud)

随着<<-我在这里可以缩进文档的盯防,但是它不会删除里面定界符缩进,它仍然看起来太可怕了.

class TestHelloWorld < Test::Unit::TestCase
  def test_hello
    assert_equal <<-EOS, hello_world
Hello, world!
  World greets you
    EOS
  end
end
Run Code Online (Sandbox Code Playgroud)

这让我缩进,但测试线的可读性受到影响.这gsub真的感觉不对劲.

class TestHelloWorld < Test::Unit::TestCase
  def test_hello
    assert_equal <<-EOS.gsub(/^ {6}/, ""), hello_world
      Hello, world!
        World greets you
    EOS
  end
end
Run Code Online (Sandbox Code Playgroud)

有没有办法测试这种真正可读的多行字符串?

ruby code-formatting

11
推荐指数
2
解决办法
9578
查看次数

硬件中大整数乘法器的权衡

这是一个理论上的问题,我真的没有经营任何工厂或任何东西;-)

对于小N,N-by-N乘法器可以实现为深度log(N)和N ^ 2门的3到2加法器的树 - 让我们忽略Booth编码等.这是超快的,但是需要不合理的硬件数量.

这个门数很快就会变得不合理(以及接线).但是kN-by-kN通过k ^ 2 2N位部分产品的软件乘法并将它们加在一起将会非常缓慢.

我的问题是 - 在N ^ 2门变得太多(用于门和布线)之后,我们对中等N的非常快速的硬件辅助乘法有什么权衡,但我们仍然希望比纯软件更好.

我可以想象这会出现很多自定义加密芯片,但我只是好奇.

hardware cpu electronics

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

Ruby程序的持久哈希表?

我的Ruby脚本需要一个小的非结构化数据库.不是Sqlite,更像是持久化哈希表的东西可以完美地工作,只要它可以存储基本的Ruby结构(数组,字符串,哈希等 - 所有可序列化的)并且在Ruby脚本崩溃时不会被破坏.

我知道Perl和Tie :: Hash有很多类似的解决方案,所以可能有一些类似于Ruby的宝石.那是什么宝石?

编辑:据我所知,PStore和yaml解决方案基于读取,解组,重新编组和在每次更改时编写整个数据库.这不仅要求所有它都适合内存,它是O(n ^ 2).所以它们都不是一个特别好的解决方案.

ruby

7
推荐指数
2
解决办法
1936
查看次数

如何重命名()没有竞争条件?

如果我要重命名AB,但前提是B不存在的,天真的事情会被检查是否B存在(有access("B", F_OK)或类似的东西),如果不继续进行rename.不幸的是,这会打开一个窗口,在此窗口期间,某些其他进程可能会决定创建B,然后它会被覆盖 - 更糟糕的是,没有任何迹象表明发生了类似的事情.

其他的文件系统访问功能不从这个痛苦- openO_EXCL(所以复制的文件是安全的),而最近的Linux得到了整个家庭*at保护对大多数其他竞争条件的系统调用-但不是这个特别的一个(renameat存在,但防止了完全不同的问题).

它有解决方案吗?

unix linux race-condition

7
推荐指数
3
解决办法
3877
查看次数

有没有合理的理由在TCP/IP上使用Unix套接字和mysql?

我试图弄清楚为什么mysql默认使用Unix套接字(/tmp/mysql.sock),而不是普通的TCP/IP套接字.

它似乎不是一个安全的东西,因为你只能在127.0.0.1上监听,它应该同样安全(套接字文件是世界可写的,因此你不能获得基于Unix帐户的保护).

当然,所有操作系统都依赖于高性能的TCP/IP,以至于它不会比Unix套接字慢得多 - 即使对于网络流量,Linux也会做各种零拷贝技巧,所以它肯定必须快速进行环回.

那么在这里使用Unix套接字有什么合理的理由,还是只是一些奇怪的历史事故?

mysql

5
推荐指数
2
解决办法
3637
查看次数

我可以获取终端标题吗?(或恢复旧版本)

使用可以轻松设置终端标题echo -e "\e]0;some title\007"。几乎可以与每个终端程序一起使用。

我想要的是在某些程序启动时设置终端标题-在完成时恢复旧的标题。这可能吗?

terminal xterm

5
推荐指数
2
解决办法
1838
查看次数

GNU diff的替代品?

diff通常产生相当无能的输出.这是一个很好的例子.如果我们从这开始:

class World
  def hello
    puts "Hello, world"
  end
  def goodbye
    puts "Goodbye, world"
  end
end
Run Code Online (Sandbox Code Playgroud)

删除第二个方法并更改第一个方法:

class World
  def hello
    puts "Hello, #{self}"
  end
end
Run Code Online (Sandbox Code Playgroud)

diff -u 将是一团糟 - 建议合并两种方法:

 class World
   def hello
-    puts "Hello, world"
-  end
-  def goodbye
-    puts "Goodbye, world"
+    puts "Hello, #{self}"
   end
 end
Run Code Online (Sandbox Code Playgroud)

而不是更合理:

 class World
   def hello
-    puts "Hello, world"
+    puts "Hello, #{self}"
   end
-  def goodbye
-    puts "Goodbye, world"
-  end
 end
Run Code Online (Sandbox Code Playgroud)

这只是一个玩具示例,所以 …

diff

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

清单缓存POST请求

我正在做的是温和的疯狂,但由于GET请求具有非常严格的大小限制,solr使用POST请求到/solr/selectURL来执行"语义上"GET.

我试图把清漆放在solr前面做一些缓存.我把它放在vcl_recv功能中:

 if (!(req.request == "GET" || req.request == "HEAD" ||
     (req.request == "POST" && req.url == "/solr/select"))) {
     /* We only deal with GET and HEAD by default */
     /* Modified to support POST to /solr/select */
     return (pass);
 }
Run Code Online (Sandbox Code Playgroud)

和varnish现在尝试处理它,除了它自动将POST转换为GET.

我知道所有这些都是相当荒谬的,并且远非任何最佳实践,但无论如何,是否有一种简单的方法以这种方式使用清漆?

solr http varnish

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