我从其他方面了解其他Lisps(特别是Scheme).最近我一直在读关于Clojure的文章.我看到它有"符号"和"关键字".符号我很熟悉,但没有关键字.
其他Lisps有关键字吗?关键字如何与除了具有不同符号(即:冒号)之外的符号不同?
我一直在使用Perforce多年.我想切换到使用git作为我的个人代码,但是我见过的所有git教程都假定你是一个完整的源代码控制n00b(这使得它们非常繁琐)或者你已经习惯了svn(我不是).
我知道p4,我也理解分布式源代码控制系统背后的想法(所以我不需要销售推销,谢谢).我想要的是从p4命令到等效git命令的转换表,以及没有p4等效的"不能没有"命令.
因为我怀疑每个p4用户都使用了不同的p4子集,所以这里有一些我经常在p4中做的事情,我希望能够在git中完成这些事情,这些事情从我看过的文档中看不出来:
p4 change
)p4 change
)p4 changes -s pending
)p4 opened
)或待定更改列表(p4 describe
)中所有已更改文件的列表p4 diff
和p4 describe
)p4 annotate
)p4 log
)p4 submit -c
)p4 revert
)其中很多都围绕着"变革清单"."changelist"是p4术语.什么是git等效术语?
听起来像分支可能是git用户使用的代替p4调用更改列表的东西.有点混乱,因为p4也有一个叫做分支的东西,虽然它们似乎只是模糊的相关概念.(虽然我一直认为p4的分支概念非常奇怪,但它与分支的经典RCS概念不同.)
无论如何......我不知道如何通过git的分支来完成我通常在p4更改列表中所做的事情.在p4中,我可以这样做:
$ p4 edit a.txt
$ p4 change a.txt
Change 12345 created.
Run Code Online (Sandbox Code Playgroud)
此时我有一个包含a.txt的changlist.我可以编辑说明并继续工作而无需提交更改列表.此外,如果事实证明我需要对其他一些文件进行一些更改,比如在代码的某些其他层中说错误修复,我可以在同一个客户端中执行此操作:
$ p4 edit z.txt
$ p4 change z.txt
Change 12346 created.
Run Code Online (Sandbox Code Playgroud)
现在我在同一个客户端有两个单独的更改列表.我可以同时处理这些问题,而且我不需要做任何事情来"切换"它们.在提交时,我可以单独提交:
$ p4 submit -c 12346 …
Run Code Online (Sandbox Code Playgroud) 关于declare-styleable
标记的珍贵文档很少,我们可以通过它来声明组件的自定义样式.我确实找到了这个标签format
属性的有效值列表attr
.虽然这很好,但它没有解释如何使用其中的一些值.浏览attr.xml(标准属性的Android源代码),我发现你可以做以下事情:
<!-- The most prominent text color. -->
<attr name="textColorPrimary" format="reference|color" />
Run Code Online (Sandbox Code Playgroud)
该format
属性显然可以设置为值的组合.据推测,该format
属性有助于解析器解释实际的样式值.然后我在attr.xml中发现了这个:
<!-- Default text typeface. -->
<attr name="typeface">
<enum name="normal" value="0" />
<enum name="sans" value="1" />
<enum name="serif" value="2" />
<enum name="monospace" value="3" />
</attr>
<!-- Default text typeface style. -->
<attr name="textStyle">
<flag name="normal" value="0" />
<flag name="bold" value="1" />
<flag name="italic" value="2" />
</attr>
Run Code Online (Sandbox Code Playgroud)
这两个似乎都声明了一组指定样式的允许值.
所以我有两个问题:
enum
值之一的样式属性与可以采用一组值的样式属性之间的区别是什么flag
? …我想更好地了解Android(2D)Canvas绘图管道的组件如何组合在一起.
例如,XferMode,Shader,MaskFilter和ColorFilter如何交互?这些类的参考文档非常稀疏,Canvas和Paint的文档并没有真正添加任何有用的解释.
我也不完全清楚具有内在颜色的绘图操作(例如:drawBitmap
与"矢量"原语相比drawRect
)是否适合所有这些 - 他们总是忽略Paint
颜色并使用其内在颜色吗?
我也很惊讶,人们可以这样做:
Paint eraser = new Paint();
eraser.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
canvas.drawOval(rectF, eraser);
Run Code Online (Sandbox Code Playgroud)
这抹去了椭圆形.在我注意到这一点之前,我的心理模型是绘制到画布(概念上)绘制到单独的"图层",然后使用Paint的传输模式使用Canvas的位图组合该图层.如果它那么简单那么上面的代码将擦除整个位图(在剪辑区域内),因为CLEAR 总是将颜色(和alpha)设置为0,而不管源的alpha是什么.所以这意味着还有一种额外的掩蔽来限制擦除到椭圆形.
我确实找到了API演示,但是每个演示都"在真空中"工作,并没有显示它关注的东西(例如:XferModes)如何与其他东西(例如:ColorFilters)交互.
有了足够的时间和精力,我可以凭经验弄清楚这些部分是如何相关或破译源的,但我希望其他人已经解决了这个问题,或者更好的是,有一些管道/绘图模型的实际文档,我错过了.
这个问题的灵感来自于在另一个SO问题的答案中看到代码.
在寻找一些文档的同时,我想到,由于我在这里感兴趣的东西似乎是一个非常薄的贴面,在skia之上,也许有一些skia文档会有所帮助.我能找到的最好的东西是文件SkPaint
说:
可以为paint分配6种效果:
- SkPathEffect - 在生成alpha蒙版(例如,破折号)之前对几何(路径)的修改
- SkRasterizer - 组成自定义遮罩层(例如阴影)
- SkMaskFilter - 在对alpha蒙版进行着色和绘制之前对其进行修改(例如模糊,浮雕)
- SkShader - 例如渐变(线性,径向,扫描),位图图案(钳位,重复,镜像)
- SkColorFilter - 在应用xfermode之前修改源颜色(例如颜色矩阵)
- SkXfermode - 例如porter-duff transfermodes,混合模式
它没有明确说明,但我猜这里效果的顺序是它们在管道中出现的顺序.
COMPANY_NAME=`cat file.txt | grep "company_name" | cut -d '=' -f 2`
Run Code Online (Sandbox Code Playgroud)
输出这样的东西
"Abc Inc";
Run Code Online (Sandbox Code Playgroud)
我想要做的是我想删除尾随的";" 同样.我怎样才能做到这一点?我是bash的初学者.任何想法或建议都会有所帮助.
如果我没看错的gradle assemble
不运行gradle assembleDebug
和gradle assembleRelease
,但我相信gradle build
也不会是相同的,所以是什么他们两个之间有什么不同?
我一直在寻找一种操作类似Arrays.equals(a1, a2)
但忽略元素顺序的方法.我无法在Google Collections中找到它(类似的东西Iterables.elementsEqual()
,但确实考虑到了排序)和JUnit(assertEquals()
显然只是调用equals()
Collection,这取决于Collection实现,而这不是我想要的)它会如果这样的方法会采用Iterable
s,那就最好了,但是我也可以简单地使用Collection
s这样的方法当然会考虑集合中的任何重复元素(所以它不能简单地测试containsAll()
).
请注意,我不是在问如何实现这样的事情,我只是想知道是否有任何标准的Collections库都有它.
作为构建过程的一部分,我需要将许多XCF(GIMP的本机格式)图像转换为PNG格式.我确信这应该可以使用GIMP的批处理模式,但我忘记了我曾经知道的所有脚本.
我的输入图像有多个图层,所以我需要等效于"合并可见图层"的批处理模式,然后是"另存为PNG".另请注意,我无法安装任何内容~/.gimp*/scripts/
- 我需要一个自包含的命令行,或者在源代码树中安装脚本的方法.
请注意,虽然这与此问题类似,但我还有其他约束,我需要使用GIMP完成此操作.我尝试了当前版本的ImageMagick,它会破坏我的测试图像.
我正在处理一些代码,其中一个对象"foo"正在创建另一个对象"bar",并将其传递给它Callable
.在此foo之后将返回bar,然后我希望foo变得无法访问(即:可用于垃圾收集).
我最初的想法是Callable
匿名创建.例如:
class Foo {
...
public Bar createBar() {
final int arg1 = ...
final int arg2 = ...
final int arg3 = ...
return new Callable<Baz>() {
@Override
public Baz call() {
return new Baz(arg1, arg2, arg3);
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,这可能实际上并不按预期工作,因为内部类通常会保持对其封闭对象的引用.我不希望在这里引用封闭类,因为我希望在Callable
仍然可以访问时收集封闭对象.
另一方面,检测到实际上从未引用封闭实例应该是非常简单的,因此Java编译器可能足够聪明,在这种情况下不包括引用.
那么......一个匿名内部类的实例是否会持有对其封闭实例的引用,即使它实际上从未使用封闭的实例引用?
我正在尝试在Haskell中编写一个模块.它没有,main
因为它不是一个独立的程序.
我刚开始使用syntastic,它不断报告:
The IO action ‘main’ is not defined in module ‘Main’
Run Code Online (Sandbox Code Playgroud)
这可以防止它报告我的模块中的其他实际错误.如果我尝试通过添加虚拟主体来解决这个问题,它会开始抱怨所有其他内容都是"已定义但未使用".
我怎么能告诉我们不应该是一个合成器(以及它在幕后使用的任何检查器)main
?