保罗格雷厄姆的第四个要点是什么使Lisp不同说,
9.整个语言随时可用.
读取时间,编译时和运行时之间没有真正的区别.您可以在编译时编译或运行代码,同时在运行时读取或编译代码.
在读取时运行代码允许用户重新编程Lisp的语法; 在编译时运行代码是宏的基础; 在运行时编译是Lisp在Emacs等程序中用作扩展语言的基础; 并且在运行时读取使程序能够使用s表达式进行通信,这一想法最近被重新发明为XML.
Clojure的最后一个要点是否适用?
我正在编写一些代码来确定分配对象的名称.这是一般调试工作,并进一步熟悉python内部.
我将它结构化为类装饰器,以便在可能的情况下,该类的所有实例都将记录其名称.代码相当长,所以除非被问到,否则我不会发布.一般技术如下
__init__用代码装饰类的方法来做我想做的事
设置caller = inspect.currentframe().f_back并打开inspect.getframeinfo(caller).filename并发送给ast.parse.我没有在这里做任何错误检查,因为(1)这只是用于调试/分析/黑客攻击(2)这个确切的过程"刚刚"完成或代码不会运行.这有问题吗?
找到ast.Assignment导致当前正在执行的__init__方法运行的实例
如果len(assignment.targets) == 1那时左侧只有一个项目,我可以从中获取名称targets[0].id.在一个简单的形式a = Foo(),然后assignment.value是一个实例ast.Call.如果它是文字(例如列表),那么value将是该列表和保释,因为我感兴趣的对象没有被分配给名称.
确认这assignment.value.func是type(obj).__call__我感兴趣的对象的最佳方法是什么.我很确定我保证它"在某处"或者代码甚至不会运行.我只需要它在顶级.显而易见的事情是走它并确保它不包含任何内部调用.然后我保证我有名字.(我的推理是正确的,我不确定它的假设是否正确).这并不理想,因为如果我感兴趣Foo,这可能会导致我抛弃,a = Foo(Bar())因为我不知道是不是a = Bar(Foo()).
当然我可以检查,assignment.value.func.id但后来有人可以做Foobar = Foo或什么,所以我不想太依赖这个
任何帮助将不胜感激.一如既往,我对我可能忽略的任何其他建议或问题感兴趣.
另外,我真的很惊讶我只需要发明'python-internals'标签.
编码平台:ASP.NET C#
我有这样的XML.
<Items>
<Map id="35">
<Terrains>
<Item id="1" row="0" column="0"/>
<Item id="1" row="0" column="1"/>
<Item id="1" row="0" column="2"/>
<Item id="1" row="0" column="3"/>
<Item id="1" row="0" column="4"/>
</Terrains>
</Map>
</Items>
Run Code Online (Sandbox Code Playgroud)
我想把它缩小到
<Its>
<Map id="30">
<Te>
<It id="1" r="0" c="0"/>
<It id="1" r="0" c="1"/>
<It id="1" r="0" c="2"/>
<It id="1" r="0" c="3"/>
<It id="1" r="0" c="4"/>
</Te>
</Map>
</Its>
Run Code Online (Sandbox Code Playgroud)
然后我使用James Newton-King的JSON Converter将其转换为JSON .
我们的想法是将xml数据最小化,因为它包含数万行.
我的问题是
如果可能,请提供代码段.
如何配置git user.name以启用Hudson向提交代码的用户发送电子邮件?
我只是按照标准方式配置git user.name和"User Name(userid)",见下文.
git config --global user.name"Euler XXXX(euler)"
git config --global user.email"euler.xxxx@server.com"
然后我将代码提交给git repository,它会触发Hudson构建.但它未能通过电子邮件向我发送电子邮件euler.xxxx@server.com.
请参阅Hudson日志,如下所示:
...
[INFO] ------------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Fri Sep 10 15:05:51 CST 2010
[INFO] Final Memory: 3M/74M
[INFO] ----
--------------------------------------------------------------------
**Failed to send e-mail to Euler XXXX (euler) because no e-mail address is known, and no default e-mail domain is configured**
...
Run Code Online (Sandbox Code Playgroud)
在Hudson配置中,我配置了" LDAP Email Lookup",由Hudson LDAP电子邮件插件提供.
而如果我配置user.name与userid,这是userid在我的LDAP服务器,那么哈德森构建能找到的电子邮件地址.
麻烦来了.我想从datagridview中删除所有行.这个我如何添加行:
private void ReadCompleteCallback(object clientHandle, Opc.Da.ItemValueResult[] results)
{
foreach (Opc.Da.ItemValueResult readResult in results)
{
dataGridView1.Invoke(new MethodInvoker(() => dataGridView1.Rows.Add(readResult.ItemName, readResult.Quality, readResult.Timestamp,readResult.Value)));
}
}
Run Code Online (Sandbox Code Playgroud)
它是如何清除gridview的:
private void treeView1_SelectionsChanged(object sender, EventArgs e)
{
dataGridView1.Rows.Clear();
items = new Opc.Da.Item[treeView1.SelectedNodes.Count];
foreach (TreeNode x in treeView1.SelectedNodes) {
items[treeView1.SelectedNodes.IndexOf(x)] = new Opc.Da.Item();
items[treeView1.SelectedNodes.IndexOf(x)].ItemName = x.Text;
}
group.AddItems(items);
group.Read(group.Items, 123, new Opc.Da.ReadCompleteEventHandler(ReadCompleteCallback), out req);
}
Run Code Online (Sandbox Code Playgroud)
在调试中,我看到dataGridVIew1.Rows.Count = 0,但在表单上,网格并没有变得清晰.什么意思?在树中的每个选择,我想看到表中的新行.
我有一个非常简单的输入字符串模式 - 大写字母,整数,大写字母,整数,...我想分隔每个大写字母和每个整数.我无法弄清楚在Java中执行此操作的最佳方法.
我已经使用Pattern和Matcher,然后使用StringTokenizer尝试了regexp,但仍然没有成功.
这就是我想要做的,用Python表示:
for token in re.finditer( "([A-Z])(\d*)", inputString):
print token.group(1)
print token.group(2)
Run Code Online (Sandbox Code Playgroud)
对于输入"A12R5F28",结果将是:
A
12
R
5
F
28
Run Code Online (Sandbox Code Playgroud) 假设我有一个看起来像这样的配置属性.请注意,没有默认值.
[ConfigurationProperty("x", IsRequired = true)]
[StringValidator(MinLength = 1)]
public string X
{
get { return (string)this["x"]; }
set { this["x"] = value; }
}
Run Code Online (Sandbox Code Playgroud)
现在我添加我的部分如下:
<mySection x="123" />
Run Code Online (Sandbox Code Playgroud)
我会收到这个错误:
属性"x"的值无效.错误是:字符串长度必须至少为1个字符.
如果我更改配置属性以包含这样的默认值,它可以工作:
[ConfigurationProperty("x", DefaultValue="abc", IsRequired = true)]
[StringValidator(MinLength = 1)]
public string X
{
get { return (string)this["x"]; }
set { this["x"] = value; }
}
Run Code Online (Sandbox Code Playgroud)
这意味着即使IsRequired为true,验证器也会验证默认值.这也意味着我必须在我的所有属性上包含一个虚拟默认值来传递验证,即使它们实际上不会被使用.
这只是糟糕的设计还是有这种行为的正当理由?
我正在使用viewflipper进行fling手势识别,一切正常,但是在2.2和2.1中它抛出异常,因为"java.lang.IllegalArgumentException:Receiver not registered:android.widget.ViewFlipper"下面是完整的调试跟踪.
java.lang.IllegalArgumentException: Receiver not registered: android.widget.ViewFlipper$1@452f8398
09-19 11:33:06.825: ERROR/AndroidRuntime(393): at android.app.ActivityThread$PackageInfo.forgetReceiverDispatcher(ActivityThread.java:793)
09-19 11:33:06.825: ERROR/AndroidRuntime(393): at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:814)
09-19 11:33:06.825: ERROR/AndroidRuntime(393): at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:331)
09-19 11:33:06.825: ERROR/AndroidRuntime(393): at android.widget.ViewFlipper.onDetachedFromWindow(ViewFlipper.java:104)
09-19 11:33:06.825: ERROR/AndroidRuntime(393): at android.view.View.dispatchDetachedFromWindow(View.java:6033)
09-19 11:33:06.825: ERROR/AndroidRuntime(393): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1158)
09-19 11:33:06.825: ERROR/AndroidRuntime(393): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1156)
09-19 11:33:06.825: ERROR/AndroidRuntime(393): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1156)
09-19 11:33:06.825: ERROR/AndroidRuntime(393): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1156)
09-19 11:33:06.825: ERROR/AndroidRuntime(393): at android.view.ViewRoot.dispatchDetachedFromWindow(ViewRoot.java:1630)
09-19 11:33:06.825: ERROR/AndroidRuntime(393): at android.view.ViewRoot.doDie(ViewRoot.java:2671)
09-19 11:33:06.825: ERROR/AndroidRuntime(393): at android.view.ViewRoot.die(ViewRoot.java:2641)
09-19 11:33:06.825: ERROR/AndroidRuntime(393): at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:218)
09-19 11:33:06.825: ERROR/AndroidRuntime(393): at android.view.Window$LocalWindowManager.removeViewImmediate(Window.java:436)
09-19 11:33:06.825: …Run Code Online (Sandbox Code Playgroud) android screen-orientation android-sdk-2.1 viewflipper android-2.2-froyo