我有两个像这样定义的对象(为了问题简化):
var firstObject = function(){ };
firstObject.prototype.doSomethingFirstObjectsDo();
var secondObject = function(){ };
secondObject.prototype.doSomethingSecondObjectsDo();
Run Code Online (Sandbox Code Playgroud)
接下来我有一个对象管理器,它作为我的主应用程序创建对象的一种接口:
var ObjectManager = function()
{
this.create = {
FIRST:firstObject,
SECOND:secondObject
};
};
ObjectManager.prototype.createObject = function(type)
{
return new this.create[type]();
};
Run Code Online (Sandbox Code Playgroud)
最后使用对象管理器动态创建firstObjects或secondObjects的主应用程序示例:
var MainApplication = function(options)
{
this.objectTypes = options.objectTypes;
this.objManager = new ObjectManager();
};
MainApplication.prototype.createObjects = function()
{
//Iterate through all the types this application needs to create
for (var type in this.objectTypes)
{
var dynamicallyCreatedObject = this.objManager.createObject(type);
//Do Something Else
}
};
Run Code Online (Sandbox Code Playgroud)
这种方法效果很好,但我可以看到一个缺点 - 您需要正式为每个可以创建的对象"类型"定义构造函数的名称. …
我想在下次升级期间重命名我发布的应用程序,Android Market会将此视为另一个常规升级并保留相关的评级和评论吗?该应用程序将保持相同的包名称.
在Python中,我可以这样做:
t = (1, 2)
a, b = t
Run Code Online (Sandbox Code Playgroud)
......并且a将为1,b将为2.假设我'(1 2)在Scheme中有一个列表.有没有办法做类似的事情let?如果它有所作为,我正在使用Racket.
例:
SELECT
(SELECT SUM(...) FROM ...) as turnover,
(SELECT SUM(...) FROM ...) as cost,
turnover - cost as profit
Run Code Online (Sandbox Code Playgroud)
当然这是无效的(至少在Postgres中)但如何在查询中实现相同而不重写子查询两次?
我正在寻找人们如何编写一个快速(小)但灵活的HTTP客户端.快速我的意思是代码不多,(我将由你来决定这意味着什么),并且最好使用内置语言函数而不是下载或自定义库,这样套接字编程的基本知识应该是足以理解代码的工作原理.灵活的我的意思是你应该能够轻松地操纵传入的数据.我自己的版本就是这样的
#!/usr/bin/perl
use Socket;
use HTML::Parse;
socket(SOCKH, PF_INET, SOCK_STREAM, getprotobyname('tcp')) || die $!;
connect(SOCKH,sockaddr_in(80,inet_aton('www.example.com'))) || die $!;
$old_fh = select(SOCKH);
$|=1;
select($old_fh);
print SOCKH "GET / HTTP/1.0\n\n";
while (<SOCKH>) {
$response .= $_;
}
print parse_html($response)->format;
close(<SOCKH>);
Run Code Online (Sandbox Code Playgroud)
这只是一个快速的客户端,我很快就会为HTTP/1.1进行编辑,或者如果您有关于如何提高合规性的建议请分享!
编辑:我的代码更新,使用LWP作为Sinan Unur建议:
#!/usr/bin/perl
use LWP::Simple;
use HTML::Parse;
$data = parse_html( get( 'www.example.com' ) )->format;
foreach $line ( $data ) {
print $line; // or any other line-based operation
}
Run Code Online (Sandbox Code Playgroud) 考虑这一点点的JavaScript代码:
var a = [1, 2, 3],
b = a;
b[1] = 3;
a; // a === [1, 3, 3] wtf!?
Run Code Online (Sandbox Code Playgroud)
当我更新"b [1]"时为什么"a"会改变?我在Firefox和Chrome中测试过它.例如,这不会发生在简单的数字上.这是预期的行为吗?
var a = 1,
b = a;
b = 3;
a; // a === 1 phew!
Run Code Online (Sandbox Code Playgroud) 我必须使用Java JAI缩放图像.现在,我使用以下代码:
private static RenderedOp scale(RenderedOp image, float scale) {
ParameterBlock scaleParams = new ParameterBlock();
scaleParams.addSource(image);
scaleParams.add(scale).add(scale).add(0.0f).add(0.0f);
scaleParams.add(Interpolation.getInstance(Interpolation.INTERP_BICUBIC_2));
// Quality related hints when scaling the image
RenderingHints scalingHints = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
scalingHints.put(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
scalingHints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
scalingHints.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
scalingHints.put(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
scalingHints.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
scalingHints.put(JAI.KEY_BORDER_EXTENDER, BorderExtender.createInstance(BorderExtender.BORDER_COPY));
return JAI.create("scale", scaleParams, scalingHints);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会导致非常糟糕的结果,特别是因为我经常需要缩放比例因子小于0.5的图像...
有什么建议?
如果我正确地解释了这篇文章,那么将活动上下文传递AsyncTasks给潜在的泄漏,因为在任务仍在运行时活动可能会被销毁.
你是如何处理这一点的AsyncTasks,不是内部的,需要访问资源或更新UI?
另外,如果需要引用进度对话框来解除它们,如何避免泄露上下文?
android ×2
javascript ×2
macos ×2
applescript ×1
arrays ×1
google-play ×1
http ×1
image ×1
jai ×1
java ×1
list ×1
mac-address ×1
memory-leaks ×1
object ×1
perl ×1
postgresql ×1
python ×1
racket ×1
rename ×1
ruby ×1
scaling ×1
scheme ×1
sql ×1
subquery ×1
upgrade ×1