小编Jak*_*kob的帖子

函数式编程是否要求新的命名约定?

我最近开始使用Haskell学习函数式编程,并在官方的Haskell wiki上发表了这篇文章:如何阅读Haskell.

文章声称,短变量名如x,xs,和f被嵌合因为简洁和抽象为Haskell代码.从本质上讲,它声称函数式编程是一种独特的范式,其他范式的命名约定不适用.

你对此有何看法?

haskell functional-programming coding-style naming-conventions verbosity

32
推荐指数
4
解决办法
4428
查看次数

如何将参数传递给RequestHandler?

Python文档包含创建HTTP服务器的示例:

def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
    server_address = ('', 8000)
    httpd = server_class(server_address, handler_class)
    httpd.serve_forever()
Run Code Online (Sandbox Code Playgroud)

RequestHandler提供了一个类Server,然后负责自动实例化处理程序.

假设我想在创建请求处理程序时将自定义参数传递给它.我该怎么做?

更具体地说,我想从命令行传入参数,并且必须访问sys.argv请求处理程序类内部似乎不必要地笨拙.

看起来这应该是可以通过覆盖Server类的部分,但我觉得我忽略了一个更简单和更好的解决方案.

python

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

Google OAuth令牌验证的执行方式和原因是什么?

在访问令牌,刷新令牌,范围,受众和客户ID之间,当Google OAuth文档指示我验证所有令牌以防止混淆的代理问题时,我感到很困惑.链接到的维基百科文章仅描述了高级别的一般问题,而不是特定于OAuth甚至网络身份验证.如果我理解正确,令牌验证甚至不是OAuth2的一部分,但实际上取决于具体的实现.所以这是我的问题:

Google OAuth令牌验证的执行方式和原因是什么?

在这种情况下,混淆的代理问题的具体例子将特别受到赞赏.另请注意,我在完全客户端应用程序的上下文中询问这一点,如果这有所不同.

google-oauth

22
推荐指数
1
解决办法
8365
查看次数

调用setTimeout的延迟为1的目的是什么?

Google Drive API快速入门指南中,一旦加载了客户端库,就会调用以下函数:

// Called when the client library is loaded to start the auth flow.
function handleClientLoad() {
    window.setTimeout(checkAuth, 1);
}
Run Code Online (Sandbox Code Playgroud)

setTimeout以这样的延迟1呼叫而不是checkAuth立即呼叫的目的是什么?

javascript settimeout

10
推荐指数
2
解决办法
868
查看次数

REST可发现性和HATEOAS是否意味着您可以更改URI?

我正在尝试澄清与REST可发现性相关的概念 - 即是否满足RESTful服务的HATEOAS约束意味着现在URI可以更改,因为它们是可发现的并且没有记录.

这似乎不遵循Cool URI的概念- URI永远不会改变的事实.它与网络本身的模型(REST应该基本上完全适合)有点不一致 - 这个URL是可收藏的,永远不会改变的事实,而且你曾经学过一个这样的事实,你可以直接进入它,你可以做到这一点不必经过根,每次都发现它.

任何有关此的反馈表示赞赏.

rest uri hateoas restful-url discoverability

9
推荐指数
1
解决办法
883
查看次数

可以将任何HTML元素设置为字段集/图例吗?

使用该display属性,HTML元素可以从样式角度进行互换.这似乎并不成为案件fieldsetlegend,但是.

是否有可能样式其他HTML元素的样子fieldsetlegend

html css fieldset legend

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

如何将模板应用于for-each中的每个选定节点?

我知道我在这里遗漏了一些东西.在下面的XSLT转换中,实际结果与期望的结果不匹配.

在里面for-each,我想将match="track"模板应用于每个选定的track元素.如果我已正确理解XSLT,那么在当前设置中,每个所选track元素的子节点只与模板匹配,而不是track元素本身.

如何track根据需要使元素通过模板?我是否需要重新考虑我的整个方法?

注意:转换是使用PHP执行的.为简洁起见,省略了XML声明.

XML文档:

<album>
    <title>Grave Dancers Union</title>
    <track id="shove">Somebody To Shove</track>
    <track id="gold">Black Gold</track>
    <track id="train">Runaway Train</track>
    <producer>Michael Beinhorn</producer>
</album>
Run Code Online (Sandbox Code Playgroud)

XSL样式表:

<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/album">
        <ol>
            <xsl:for-each select="track">
                <li><xsl:apply-templates/></li>
            </xsl:for-each>
        </ol>
    </xsl:template>

    <xsl:template match="track">
        <a href="{@id}"><xsl:apply-templates/></a>
    </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

结果:

<ol>
    <li>Somebody To Shove</li>
    <li>Black Gold</li>
    <li>Runaway Train</li>
</ol>
Run Code Online (Sandbox Code Playgroud)

期望的结果:

<ol>
    <li><a href="shove">Somebody To Shove</a></li>
    <li><a href="gold">Black Gold</a></li>
    <li><a href="train">Runaway Train</a></li>
</ol>
Run Code Online (Sandbox Code Playgroud)

xslt foreach apply-templates

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

有没有一种优雅的方法来使用XSLT添加多个HTML类?

假设我正在将多项选择测验从任意XML格式转换为HTML.每个选项都将<li>在结果文档中表示为HTML 标记.对于每一个选择,我想添加一个HTML classcorrect<li>,如果这样的选择是正确的答案.此外,如果选择是由用户选择的一个,我想补充的一个类submitted<li>.因此,如果选择的是正确的,以及所提交的之一,<li>应该有一个classcorrect submitted.

据我所知,空格分隔的属性值不是XML数据模型的一部分,因此无法通过XSLT直接创建.但是,我觉得有一种更好的方法可以做到这一点,而不是为每个可能的类组合用一个条件乱码(在这个例子中这是可以接受的,但在更复杂的场景中是不实用的).

我怎样才能以优雅的方式解决这个问题?

期望结果的示例:

<p>Who trained Obi-Wan Kenobi?</p>
<ul>
    <li>Mace Windu</li>
    <li class="correct submitted">Qui-Gon Jinn</li>
    <li>Ki-Adi-Mundi</li>
    <li>Yaddle</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

html xslt class class-names

7
推荐指数
2
解决办法
7092
查看次数

如何实现最后执行zig操作的splay树,而不是第一个?

对于我的算法和数据结构类,我的任务是在Haskell中实现一个splay树.我的splay操作算法如下:

  1. 如果要显示的节点是根,则返回未更改的树.
  2. 如果要展开的节点是从根开始的一个级别,则执行zig操作并返回结果树.
  3. 如果要展开的节点是来自根的两个或更多级别,则对从该节点开始的子树展开的结果执行zig-zig或Zig-zag操作,并返回结果树.

根据我老师的说法,这是有效的.然而,维基百科对splay树的描述说zig步骤"将仅作为splay操作的最后一步",而在我的算法中,它是splay操作的第一步.

我想实现一个splay树,它最后执行zig操作而不是第一个,但我不确定如何最好地完成它.在我看来,这样的算法会变得更加复杂,看看在确定是否应该执行zig操作之前,需要如何找到要展开的节点.

我如何在Haskell(或其他一些函数式语言)中实现它?

在这个例子中,我们搜索值4,提示我们将它展开到树的顶部.

我的算法(zig作为第一步)

1             1                   4
 \             \                 /
  2      zig    2    zig-zig    2
   \     -->     \   ------>   / \
    3             4           1   3
     \           /
      4         3

维基百科算法(zig作为最后一步)

1                   1           4
 \                   \         /
  2      zig-zig      4  zig  1
   \     ------>     /   -->   \
    3               3           3
     \             /           /
      4           2           2

两棵树都有效,但它们有不同的结构.我想用函数式语言实现第二个,最好是Haskell.

haskell functional-programming splay-tree

6
推荐指数
1
解决办法
2172
查看次数

如何使用Google Picker使用"drive.file"范围访问文件?

我的Google Drive集成Web应用程序可以在drive范围内正常运行,但除非必要,否则使用如此广泛的范围是不好的做法.我想限制范围,drive.file以便我只能访问由应用程序创建的文件和使用Google Picker打开的文件,但我无法使其工作.

可以毫无问题地打开应用程序创建的文件.但是,使用Google Picker打开的文件无法访问; 尝试下载此类文件会导致404错误.当我右键单击Google云端硬盘中的文件并选择"查看授权的应用"时,我的应用程序未被列为授权应用之一.

如果范围扩展到,则代码可以正常工作drive.

我编写了一个最小的测试页面,该页面应该下载用户在Google Picker中选择的文件.可以通过调用auth()后跟来启动该过程showPicker().代码的关键部分如下:

gapi.auth.authorize({
    client_id: '123456789012.apps.googleusercontent.com',
    scope: 'https://www.googleapis.com/auth/drive.file',
    immediate: false
});

...

var picker = new google.picker.PickerBuilder()
    .setAppId('123456789012')
    .addView(new google.picker.DocsView(google.picker.ViewId.DOCS_IMAGES))
    .setOAuthToken(gapi.auth.getToken().access_token)
    .setCallback(onPickerAction)
    .build();
picker.setVisible(true);

...

function onPickerAction(data) {
    if ( data.action === google.picker.Action.PICKED ) {
        var id = data.docs[0].id;
        var request = new XMLHttpRequest();
        request.open('GET', 'https://www.googleapis.com/drive/v2/files/' + id);
        request.setRequestHeader('Authorization', 'Bearer ' + gapi.auth.getToken().access_token);

        request.addEventListener('load', function() {
            var item = JSON.parse(request.responseText); …
Run Code Online (Sandbox Code Playgroud)

html javascript google-drive-api google-picker

6
推荐指数
2
解决办法
4833
查看次数

如何在MATLAB中使用最小二乘逼近?

对于线性代数中的家庭作业,我使用MATLAB的\运算符(这是推荐的方法)解决了以下等式:

A = [0.2 0.25; 0.4 0.5; 0.4 0.25];
y = [0.9 1.7 1.2]';
x = A \ y

产生以下答案:

x =
1.7000
2.0800

对于赋值的下一部分,我应该使用最小二乘近似来求解相同的等式(然后将其与先前值进行比较以查看近似的精确度).

如何在MATLAB中找到这样做的方法?

以前的工作:我找到了函数lsqlin,它似乎能够解决上述类型的方程,但我不明白哪个参数提供它,也不知道它的顺序.

math matlab linear-algebra least-squares

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

布尔表达式如何依赖于评估顺序和赋值?

当我评估下面的表达式时,结果完全不同,具体取决于评估顺序以及是否分配值:

$a = true;
$b = false;
var_dump($a and $b); // false

$c = $a and $b;
var_dump($c); // true

$d = $b and $a;
var_dump($d); // false
Run Code Online (Sandbox Code Playgroud)

我完全难过了.为什么会这样?

php boolean variable-assignment operator-precedence

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