小编Aza*_*Aza的帖子

您会向初学者推荐哪些编程专业领域

我是一名学习软件开发的学生,我觉得编程一般来说太过广泛,无法尝试了解所有内容.要精通,你必须决定哪些领域要集中你的学习和理解.某些技能组合相互协作,如数据驱动的Web开发和SQL体验.但是,世界上所有的win32 API体验可能都不会直接适用于linux开发.这让我相信,作为一名初级程序员,在对软件开发的基本原理有一般了解之后,我应该开始决定我想要专攻的地方.

这是一个多部分的问题:

  1. 计算机编程和软件开发中的常见专业是什么?
  2. 这些专业中哪一项具有更长远的价值,既可作为其他专业化的基础和/或作为适销对路的技能?
  3. 哪种技能相互补充?
  4. 是否有任何专业领域妨碍您开发其他专业领域的能力.

language-agnostic

8
推荐指数
2
解决办法
7705
查看次数

确定哪个表单已提交的最佳方法是什么?

目前,当我设计表单时,我喜欢保持提交按钮的名称等于表单的ID.然后,在我的php中,我只是if(isset($_POST['submitName']))为了检查表单是否已提交以及表单已提交.

首先,这种方法有任何安全问题或设计缺陷吗?

我遇到的一个问题是当我希望用javascript覆盖我的表单时,为了向用户提供更快的验证.例如,虽然我显然需要保留服务器端验证,但如果在输入模糊时内联显示错误消息,则对用户更方便.此外,在单击提交按钮后提供整个表单验证会很好.

因此,当用户单击表单的提交按钮时,我将停止默认操作,进行验证,然后尝试重新设置传统提交功能(如果验证通过).为了做到这一点,我使用的form.submit()方法,但不幸的是,这不会发送提交按钮变量(因为它应该是没有任何按钮被点击时调用form.submit()).这意味着我的PHP脚本无法检测到表单已提交.

解决这个问题的正确方法是什么?看起来标准的解决方案是在传递验证时将隐藏字段添加到表单中,该验证具有表单id的名称.然后当调用form.submit()时,它将被传递而不是提交按钮.但是,这个解决方案对我来说似乎非常不合适,所以我想知道我是否应该:

a)使用另一种方法来检测哪个表单已经提交,而不依赖于传递提交按钮.如果有的话有什么替代方案?显然,从一开始就有一个额外的隐藏领域并不是更好.

b)使用另一种Javascript解决方案,它允许我保留我的非Javascript设计.例如,form.submit()是否有替代方法可以传递额外的数据?

c)将其吸收,然后使用Javascript插入隐藏的字段.

更新:我已经接受了正确的答案,但我只想澄清我的错误,这样对其他人更有帮助.我使用Mootools,我非常天真地相信,当我使用addEvent('submit'...)时,我需要立即调用event.stop()以防止提交.实际上并非如此,只有在验证失败时我才能调用event.stop().否则,像往常一样,默认提交被触发,并且使用form.submit()变得完全没必要.

javascript php

8
推荐指数
1
解决办法
3813
查看次数

如何使用指向父级和子级的指针在Haskell中编写对象树?

我遇到了以下问题:我有一个不同类的对象树,其中子类中的操作使父类无效.在命令式语言中,这样做很简单.例如,在Java中:

public class A {
    private List<B> m_children = new LinkedList<B>();
    private boolean m_valid = true;

    public void invalidate() {
        m_valid = false;
    }

    public void addChild(B child) {
        m_children.add(child);
        child.m_parent = this;
    }
}

public class B {
    public A m_parent = null;
    private int m_data = 0;

    public void setData(int data) {
        m_data = 0;
        m_parent.invalidate();
    }
}

public class Main {
    public static void main(String[] args) {
        A a = new A();
        B b = new B(); …
Run Code Online (Sandbox Code Playgroud)

java haskell functional-programming imperative

8
推荐指数
2
解决办法
1742
查看次数

懒惰与急切的评估和双链表建设

我睡不着!:)

我在Haskell编写了一个构建双链表的小程序.基本语言的属性是懒惰的评估(参见下面的一堆代码).我的问题是,我可以做在同一个纯粹的功能性语言急于评估或不?在任何情况下,渴望功能语言必须具备哪些属性才能构建这样的结构(杂质?)?

import Data.List

data DLList a = DLNull |
    DLNode { prev :: DLList a
           , x :: a
           , next :: DLList a
           }
  deriving (Show)

walkDLList :: (DLList a -> DLList a) -> DLList a -> [a]
walkDLList _ DLNull = []
walkDLList f n@(DLNode _ x _)  = x : walkDLList f (f n)

-- Returns first and last items.
makeDLList :: [a] -> (DLList a, DLList a)
makeDLList xs …
Run Code Online (Sandbox Code Playgroud)

haskell list eager lazy-evaluation

8
推荐指数
2
解决办法
879
查看次数

从ArrayList转换为double []时出错?

我有一个ArrayListout,我需要把它转换为double[].我在网上找到的例子说了两件事:

第一次尝试:

double[] d = new double[out.size()];
out.toArray(d);
Run Code Online (Sandbox Code Playgroud)

但是,这会产生错误(eclipse):

The method toArray(T[]) in the type List<Double> is not applicable for the arguments (double[]).
Run Code Online (Sandbox Code Playgroud)

我找到的第二个解决方案是在StackOverflow上,并且是:

double[] dx = Arrays.copyOf(out.toArray(), out.toArray().length, double[].class);
Run Code Online (Sandbox Code Playgroud)

但是,这会产生错误:

The method copyOf(U[], int, Class<? extends T[]>) in the type Arrays is not applicable for the arguments (Object[], int, Class<double[]>)
Run Code Online (Sandbox Code Playgroud)

是什么导致了这些错误,如何outdouble[]不创建这些问题的情况下转换为?out确实只有双重价值.

谢谢!

java eclipse arrays list arraylist

8
推荐指数
1
解决办法
1万
查看次数

.NET 4.5 MethodInfo序列化破坏了变化

问题

MethodInfo使用程序集的1.0版序列化的对象(具有私有字段)将不会使用该程序集的1.1版进行反序列化(SerializationException将抛出a,因为尚未找到所需的方法).

改变了什么?

我发现在.NET 4.5中,MemberInfo通道的序列化机制MemberInfoSerializationHolder已经改变.在过去(直到.NET 4.0),序列化数据是方法签名(通过简单获得MethodInfo.ToString()).根据.NET源代码中的评论,他们添加了第二个签名,SerializationToString()因为:

m_signature存储有时不明确的成员的ToString()表示.相同方法或属性的多重重载可以与ToString()相同.m_signature2存储SerializationToString()表示,该表示对于每个成员应该是唯一的.它仅由post 4.0 CLR版本编写和使用.

我可以看到MemberInfoSerializationHolder.GetRealObject()使用这个(简化的)代码来解析方法(来自.NET源代码):

for (int i = 0; i < methods.Length; i++)
{ 
    if (m_signature2 != null) // SerializationToString() signature
    {
        if (((RuntimeMethodInfo)methods[i]).SerializationToString().Equals(m_signature2))
        { 
            methodInfo = methods[i];
            break; 
        } 
    }
    else 
    {
        if (methods[i].ToString().Equals(m_signature))
        { 
            methodInfo = methods[i];
            break; 
        }
    }
}

if (methodInfo == null)
    throw new SerializationException(...);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,反序列化失败,因为m_signature2无法找到签名,因为程序集名称包含版本信息,然后String.Equals()将不匹配MyAssembly, Version=1.0.0.0,MyAssembly, Version=1.1.0.0并将抛出异常. …

.net serialization .net-4.5

8
推荐指数
1
解决办法
1776
查看次数

if(foo或bar或baz)为None:

我一直在重构一些相当苛刻的代码,并遇到了以下相当奇怪的构造:

#!/usr/bin/env python2.7
# ...
if (opts.foo or opts.bar or opts.baz) is None:
    # (actual option names changed to protect the guilty)
    sys.stderr.write("Some error messages that these are required arguments")
Run Code Online (Sandbox Code Playgroud)

......我想知道这是否会产生任何可想象的感觉.

我将其更改为:

#!/usr/bin/env python2.7 
if None in (opts.foo, opts.bar, opts.baz):
    # ...
Run Code Online (Sandbox Code Playgroud)

我确实启动了一个解释器并实际尝试了第一个构造......只有当值全部为假并且这些错误值的最后一个为None时,它才会起作用.(换句话说,CPython的实现似乎从一个或多个表达式返回第一个真值或最后一个假值).

我仍然怀疑正确的代码应该使用添加了2.5 的any()all()内置函数(有问题的代码已经需要2.7).我还不确定哪个是首选的/预期的语义,因为我刚开始这个项目.

那么这个原始代码是否有意义呢?

python styles correctness

8
推荐指数
2
解决办法
1072
查看次数

Haskell基本阶乘没有退出?

我正在学习Haskell,并且在使用本教程中的基本因子函数时遇到了问题.

基本上,我已经定义了一个因子:

Prelude> let factorial 0 = 1
Prelude> let factorial n = n * factorial (n - 1)
Run Code Online (Sandbox Code Playgroud)

类型检查:

Prelude> :t factorial
factorial :: Num a => a -> a
Run Code Online (Sandbox Code Playgroud)

这是有道理的.但是,此功能的行为不会.(interactive): out of memory无论输入是什么,它都会导致结果.

Prelude> factorial 5
(interactive): out of memory
Run Code Online (Sandbox Code Playgroud)

我必须假设这是一个无限递归调用,导致内存不足错误,但我不确定是什么原因导致它.同样的事情发生了factorial 0,即使我已经明确宣布这是1:

Prelude> factorial 0
(interactive): out of memory
Run Code Online (Sandbox Code Playgroud)

现在,这是一个奇怪的部分:如果我在文件中定义阶乘函数,它工作正常.我创建一个文件tesths.hsst:

factorial 0 = 1
factorial n = n * factorial (n - 1)
Run Code Online (Sandbox Code Playgroud)

然后,如果我回到GHCI运行:l tesths.hs,我可以毫无错误地执行factorial 5. …

haskell factorial

8
推荐指数
2
解决办法
1015
查看次数

将Solr的TermsComponent中的条款限制为源自某些文档的条款

我正在使用Solrs TermsComponent来实现自动完成功能.我的文档包含我在"标签"字段中编入索引的标签.现在,我可以使用TermsComponent找出所有存储文档中使用的标记.到目前为止,这非常有效.

但是还有一些额外的要求:每个文档都有一个所有者字段,其中包含拥有它的用户的ID.自动填充列表应仅包含文档中的标记,请求自动填充的用户实际拥有该标记.

我试图设置查询参数,但这似乎被TermsComponent忽略:

public static List<String> findUniqueTags(String beginningWith, User owner) throws IOException {
    SolrParams q = new SolrQuery().setQueryType("/terms")
            .setQuery("owner:" + owner.id.toString())
            .set(TermsParams.TERMS, true).set(TermsParams.TERMS_FIELD, "tags")
            .set(TermsParams.TERMS_LOWER, beginningWith)
            .set(TermsParams.TERMS_LOWER_INCLUSIVE, false)
            .set(TermsParams.TERMS_PREFIX_STR, beginningWith);
    QueryResponse queryResponse;
    try {
        queryResponse = getSolrServer().query(q);
    } catch (SolrServerException e) {
        Logger.error(e, "Error when querying server.");
        throw new IOException(e);
    }

    NamedList tags = (NamedList) ((NamedList)queryResponse.getResponse().get("terms")).get("tags");

    List<String> result = new ArrayList<String>();
    for (Iterator iterator = tags.iterator(); iterator.hasNext();) {
        Map.Entry tag = (Map.Entry) iterator.next();
        result.add(tag.getKey().toString());
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

那么有没有办法限制由TermsComponent返回的标签,还是我手动查询用户的所有标签并自己过滤?

solr autocomplete solrj

7
推荐指数
1
解决办法
2915
查看次数

风格动态值

我可以将Style应用于下面"Labeled"的输出吗?

Manipulate[\[Lambda],
Control@{{\[Lambda], 401,
Style["     \[Lambda]", Black, Bold, 24]},
Range[401, 570, 1],
ControlType -> Slider,
ControlPlacement -> Bottom,
Appearance -> "Labeled",
ImageSize -> 200}]
Run Code Online (Sandbox Code Playgroud)

这是滑块的右侧部分:

在此输入图像描述

wolfram-mathematica mathematica-8

7
推荐指数
1
解决办法
259
查看次数