虽然我喜欢PHP,但我发现它最大的弱点是它允许甚至几乎鼓励程序员编写错误的代码.
是否有一种鼓励良好编程实践的语言?或者,更具体地说,是一种鼓励良好实践的网络相关语言.
我对那些既有鼓励优秀编程的既定目标,也是为鼓励优秀编程而设计的语言感兴趣.
我在Visual Studio 2003中使用MFC.我有一个带ID的编辑控件IDC_COMMENT_EDIT
.在下面的代码中,在我第一次调用之后GetClientRect
,我不期望值的rc
变化.
CWnd* pWnd = GetDlgItem(IDC_COMMENT_EDIT);
if (pWnd != NULL)
{
RECT rc;
pWnd->GetClientRect(&rc);
pWnd->MoveWindow(&rc, TRUE);
pWnd->GetClientRect(&rc);
}
Run Code Online (Sandbox Code Playgroud)
rc.top
并且rc.left
是0
按预期的方式全部通过的方式.但是:
在第一次打电话之后GetClientRect
,我得到了rc.bottom == 52
,和rc.right == 575
.
第二次打电话后GetClientRect
,我得到了rc.bottom == 48
,和rc.right == 571
.
有谁知道发生了什么事?
我有一些单词模板(点/点)文件,包含xml标签和纯文本.
在运行时,我需要将xml标记替换为各自的邮件合并字段.
因此,需要解析这些xml标记的文档并将其替换为合并字段.我正在使用Regex来查找和替换这些xml标签.但我被建议使用XML解析器来解析XML标记([正则表达式包含在<*>,C#中的字符串).
示例文档如下所示:
Solicitor Letter
<Tfirm/>
<Tbuilding/>
<TstreetNumber/> <TstreetName/>
For the attention of: <TContact1/> <TEmail/>
Dear <TContact1/>
RE: <Pbuilding/> <PstreetNumber/> <PstreetName/> <Pvillage/> <PTown/>
We were pleased to hear that contracts have now been exchanged in the sale of the
above property on behalf of our mutual client/s. We now have pleasure in enclosing a
copy of our invoice for your kind attention upon completion.
....
Run Code Online (Sandbox Code Playgroud)
还有一点需要注意,尖括号是由最终用户在模板中手动输入的.
我尝试使用XMLReader,但由于我的文档本身没有root标记,因此出错.
请指导我是否应该坚持使用正则表达式,或者是否有任何方法可以使用XML Parser.
谢谢!
这可能是一个例子最好的解释.我有下表,其中"A"单元格跨越两行,"B"单元格跨越两列.
\begin{table}[htdp]
\begin{tabular}{l|r|r}
\multirow{2}{*}{A} & \multicolumn{2}{c}{B} \\
& B1 & B2 \\
a & b1 & b2 \\
a & b1 & b2 \\
\end{tabular}
\end{table}
_ _ _ _ _ _ _ _ _ _ _ _
|A |_ _ _ _B_ _ _ _|
|_ _ _ _|_ _B1_ |_ _B2_ |
|a | b1| b2|
|a | b1| b2|
|a | b1| b2|
|_ _ _ _| _ _ _ |_ _ _ _|
Run Code Online (Sandbox Code Playgroud)
我想将文本集中在"A"单元格中.我想让列的其余部分左对齐.赠送:
_ _ …
Run Code Online (Sandbox Code Playgroud) 在我的模型中,我定义了以下选项:
LANG_CHOICES = (
("Englisch", (
(u"en-gb", u"England"),
(u"en-us", u"United States of America"),
), )
Run Code Online (Sandbox Code Playgroud)
该字段定义为:
lang_source = models.CharField(max_length=5, choices=LANG_CHOICES, default="en-gb")
Run Code Online (Sandbox Code Playgroud)
当然,在我的模板中,我想要显示人类可读的值,即
{{ object.lang_source }}
Run Code Online (Sandbox Code Playgroud)
不应该打印"en-gb"(或相应的值)而是"英格兰".
实现这一目标的最优雅方式是什么?(除了在视图中从模型导入dict并手动翻译值.)
我正在用PHP开发一个Web应用程序,运行Snow Leopard的Macbook实际上是在调用PHP的mail()函数时发送电子邮件.它通过电子邮件发送给客户,这很糟糕.
我可以在我的代码中阻止这种情况,但我宁愿禁用我的机器的邮件.有没有办法在Mac OS下执行此操作?
如果我通过MetadataType属性将属性应用于部分类,则不会通过Attribute.IsDefined()找到这些属性. 任何人都知道为什么,或者我做错了什么?
下面是我为此创建的测试项目,但我真的尝试将自定义属性应用于LINQ to SQL实体类 - 就像这个问题中的答案一样.
谢谢!
using System;
using System.ComponentModel.DataAnnotations;
using System.Reflection;
namespace MetaDataTest
{
class Program
{
static void Main(string[] args)
{
PropertyInfo[] properties = typeof(MyTestClass).GetProperties();
foreach (PropertyInfo propertyInfo in properties)
{
Console.WriteLine(Attribute.IsDefined(propertyInfo, typeof(MyAttribute)));
Console.WriteLine(propertyInfo.IsDefined(typeof(MyAttribute), true));
Console.WriteLine(propertyInfo.GetCustomAttributes(true).Length);
// Displays:
// False
// False
// 0
}
Console.ReadLine();
}
}
[MetadataType(typeof(MyMeta))]
public partial class MyTestClass
{
public string MyField { get; set; }
}
public class MyMeta
{
[MyAttribute()]
public string MyField …
Run Code Online (Sandbox Code Playgroud) 我有这种形式的匿名类型:
new List<MyList>()
{
new Column { Name = "blah", Width = 100, Hidden = true },
new Column { Name = "blah1", Width = 60, Hidden = false }
}
Run Code Online (Sandbox Code Playgroud)
如何动态创建列表中的内容,例如:
new List<MyList>()
{
foreach (var columns in col)
{
new Column { Name = columns.Name ... }
}
}
Run Code Online (Sandbox Code Playgroud)
即使col返回正确的数据类型,上面的例子是不可接受的,我不明白为什么.
我正在尝试输出存储在MySQL数据库中的产品信息,但它正在写出一些奇怪的字符,比如里面有问号的钻石.
我认为它可能是编码/ UTF8问题,但我已经指定了我想要的编码:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
这是正确的吗?我应该检查什么?