到目前为止,我已经避免了测试多线程代码的噩梦,因为它看起来像是一个雷区太多了.我想问一下人们如何测试依赖线程成功执行的代码,或者人们如何测试那些只在两个线程以给定方式交互时出现的问题?
对于今天的程序员来说,这似乎是一个非常关键的问题,将我们的知识集中在这个imho上是有用的.
如果一张图片价值1000字,你可以在140个字符中放入多少图片?
注意:那就是大家!赏金的最后期限就在这里,经过一番艰难的考虑后,我认为Boojum的进入只是勉强淘汰Sam Hocevar的.一旦我有机会写出来,我会发布更详细的笔记.当然,每个人都应该随时继续提交解决方案并改进人们投票的解决方案.感谢所有提交和参赛的人; 我很喜欢他们.这对我来说非常有趣,我希望这对参赛者和观众来说都很有趣.
我遇到了一篇关于尝试将图像压缩成Twitter评论的有趣帖子,该线程中的很多人(以及Reddit上的一个帖子)都提出了有关不同方法的建议.所以,我认为这将是一个很好的编码挑战; 让人们将钱放在嘴边,并展示他们对编码的看法如何在有限的空间中提供更多细节.
我挑战你想出一个通用系统,用于将图像编码成140个字符的Twitter消息,并将它们再次解码为图像.您可以使用Unicode字符,因此每个字符的字符数超过8位.但是,即使允许使用Unicode字符,也需要将图像压缩到非常小的空间内; 这肯定会是一种有损压缩,因此必须对每种结果的好看进行主观判断.
以下是原作者Quasimondo从他的编码中获得的结果(图片根据知识共享署名 - 非商业许可证授权):
你能做得更好吗?
U+0000
- U+10FFFF
,排除非字符(U+FFFE
,U+FFFF
,U+
ÑFFFE
,U+
ÑFFFF
其中Ñ是1
- 10
十六进制和范围U+FDD0
- U+FDEF
)和替代代码点(U+D800
- U+DFFF
).它可以以您选择的任何合理编码输出; GNUiconv
支持的任何编码都被认为是合理的,您的平台本机编码或区域编码可能是一个不错的选择.有关详细信息,请参阅下面的Unicode注释如何在ActiveRecord中设置默认值?
我看到Pratik的一篇文章描述了一段丑陋,复杂的代码:http://m.onkey.org/2007/7/24/how-to-set-default-values-in-your-model
class Item < ActiveRecord::Base
def initialize_with_defaults(attrs = nil, &block)
initialize_without_defaults(attrs) do
setter = lambda { |key, value| self.send("#{key.to_s}=", value) unless
!attrs.nil? && attrs.keys.map(&:to_s).include?(key.to_s) }
setter.call('scheduler_type', 'hotseat')
yield self if block_given?
end
end
alias_method_chain :initialize, :defaults
end
Run Code Online (Sandbox Code Playgroud)
我已经看到以下示例谷歌搜索:
def initialize
super
self.status = ACTIVE unless self.status
end
Run Code Online (Sandbox Code Playgroud)
和
def after_initialize
return unless new_record?
self.status = ACTIVE
end
Run Code Online (Sandbox Code Playgroud)
我也看到人们把它放在他们的迁移中,但我宁愿看到它在模型代码中定义.
是否有规范方法为ActiveRecord模型中的字段设置默认值?
这失败了:
define('DEFAULT_ROLES', array('guy', 'development team'));
Run Code Online (Sandbox Code Playgroud)
显然,常量不能保存数组.解决这个问题的最佳方法是什么?
define('DEFAULT_ROLES', 'guy|development team');
//...
$default = explode('|', DEFAULT_ROLES);
Run Code Online (Sandbox Code Playgroud)
这似乎是不必要的努力.
我最近在使用一个DateTime
对象,并写了这样的东西:
DateTime dt = DateTime.Now;
dt.AddDays(1);
return dt; // still today's date! WTF?
Run Code Online (Sandbox Code Playgroud)
intellisense文档AddDays()
说它增加了一天的日期,它没有 - 它实际上返回添加了一天的日期,所以你必须写如下:
DateTime dt = DateTime.Now;
dt = dt.AddDays(1);
return dt; // tomorrow's date
Run Code Online (Sandbox Code Playgroud)
这个曾经多次咬过我,所以我认为编制最糟糕的C#陷阱会很有用.
我正在尝试使用以下PHP代码连接到Tor隐藏服务:
$url = 'http://jhiwjjlqpyawmpjx.onion/'
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, "http://127.0.0.1:9050/");
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
$output = curl_exec($ch);
$curl_error = curl_error($ch);
curl_close($ch);
print_r($output);
print_r($curl_error);
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我收到以下错误:
无法解析主机名
但是,当我从Ubuntu中的命令行运行以下命令时:
curl -v --socks5-hostname localhost:9050 http://jhiwjjlqpyawmpjx.onion
Run Code Online (Sandbox Code Playgroud)
我得到了预期的回复
PHP cURL文档说明了这一点:
--socks5-hostname
Use the specified SOCKS5 proxy (and let the proxy resolve the host name).
Run Code Online (Sandbox Code Playgroud)
我相信它从命令行工作的原因是因为Tor(代理)正在解析它识别的.onion主机名.在运行上面的PHP代码时,我的猜测是cURL或PHP正在尝试解析.onion主机名并且无法识别它.我已经搜索了一种告诉cURL/PHP让代理解析主机名的方法,但我找不到办法.
有一个非常类似的Stack Overflow问题,使用socks5代理的cURL请求在使用PHP时失败,但它通过命令行工作.
如何将a转换byte[]
为string
?我每次尝试都会得到
System.Byte []
而不是价值.
另外,我如何获得十六进制而不是十进制的值?
我正在尝试使用Node.js构建整个Web应用程序.是否存在类似于(例如)Django模板引擎等的模板引擎,至少允许您扩展基本模板?
我的测试机器上有一个非常奇怪的错误.错误是:
System.TypeLoadException: Method 'SetShort' in type 'DummyItem' from assembly 'ActiveViewers (...)' does not have an implementation.
我只是无法理解为什么.SetShort
是否在DummyItem
课堂上,我甚至重新编译了一个带有写入事件日志的版本,以确保它不是部署/版本问题.奇怪的是调用代码甚至不调用该SetShort
方法.