小编jfo*_*erg的帖子

在Python脚本中检查交互式shell

我需要确定调用我的Python脚本的shell是否处于交互模式.如果它处于交互模式,程序应将输出管道输出到较小(1)以便于阅读.如果没有,它应该只是将其输出打印到stdout,以允许它被传送到打印机,文件或不同的寻呼机.

在shell脚本中,我会检查是否定义了提示变量$ PS1,或者在$ - 变量中存储的标志中查找-i选项.

在Python中测试交互性的首选方法是什么?

python shell interactive pipe

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

在Python 3 CGI脚本中设置编码

在编写Python 3.1 CGI脚本时,我遇到了可怕的UnicodeDecodeErrors.但是,在命令行上运行脚本时,一切正常.

看来open()print()使用返回值locale.getpreferredencoding()来了解默认使用的编码.在命令行上运行时,该值应为"UTF-8".但是当通过浏览器运行脚本时,神秘地将编码重新定义为"ANSI_X3.4-1968",这似乎只是普通ASCII的一个奇特名称.

我现在需要知道如何在所有情况下使用'utf-8'作为默认编码来运行cgi脚本.我的设置是Debian Linux上的Python 3.1.3和Apache2.系统范围的语言环境是en_GB.utf-8.

python unicode cgi python-3.x

20
推荐指数
2
解决办法
5470
查看次数

javascript检查正则表达式是否适用

首先,这是我的代码片段:

var str = '<!--:de-->some german text<!--:--><!--:en-->some english text<!--:-->';
var match =  str.match(/de-->([^<]+).+?en[^>]+>([^<]+)/i);
var textInDe = match[1]; 
var textInEn = match[2];
Run Code Online (Sandbox Code Playgroud)

我有这个正则表达式验证(感谢The Mask)非常有用.

现在,我想用if语句检查这个正则表达式是否适用于某些字符串.我正在使用Javascript jquery.

提前致谢 :)

javascript regex jquery

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

Coffeescript教程不承担Javascript知识

我知道我是以错误的方式来到这里的.您应该首先学习Javascript,然后在厌倦了大括号和变量声明时开始查看Coffeescript.然而,我是一个有点经验丰富的Ruby和Python程序员,但没有Javascript流畅性,他们希望进入Web脚本(主要通过Rails).

我确信Coffeescript是我的最佳选择,但我很难找到一个不会让Javascript熟悉的教程.我见过的大多数教程都详细解释了Coffeescript的特点,只是为了掩盖如何实际编写Web应用程序等小问题.

所以,你知道任何不知道JS开始的人的Coffeescript教程吗?

javascript coffeescript

11
推荐指数
2
解决办法
1986
查看次数

Haskell函数nub效率低下

我对Haskell标准库Data.List中 'nub'(选择唯一值)函数的实现感到困惑.GHC的实施是

nub l                   = nub' l []
  where
    nub' [] _           = []
    nub' (x:xs) ls
        | x `elem` ls   = nub' xs ls
        | otherwise     = x : nub' xs (x:ls)
Run Code Online (Sandbox Code Playgroud)

据我所知,这有一个最坏情况下的时间复杂度为O(n ^ 2),因为对于一个唯一值列表,它必须比较它们一次才能看到它们实际上是唯一的.

如果使用哈希表,则复杂性可以减少到O(n)以构建表+ O(1)以检查每个值与哈希表中的先前值.当然,这不会产生有序列表,但如果有必要,也可以在O(n log n)中使用GHC自己的有序Data.Map.

为什么为重要的库函数选择这种低效的实现?我知道效率不是Haskell的主要关注点,但至少标准库可以努力为工作选择(渐近)最佳数据结构.

algorithm performance haskell

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

在TreeMaps中存储多项式---为什么?

我今天写了一篇关于Java数据结构实施的大学课程的试卷.最后一个问题是这样的:

解释为什么使用TreeMap <Integer,Integer>来存储具有积分系数的多项式是很方便的,特别是当多项式应该以标准形式打印出来时,作为字符串.

意识到这是一个错误,我接着解释了为什么我认为这不是一个好主意.我反而主张使用一个简单的int []数组,因为数组在两个方向上都有O(1)随机访问,O(n)迭代,并且指针(引用)没有额外的内存占用.

假设我错了并且使用(排序的)TreeMap有一些好处,有人可以向我解释这些好处吗?我的理由是,由于Matlab,Octave,Maple和其他经过良好测试的数值程序使用数组来存储多项式,因此不可能完全错误.

java polynomial-math data-structures

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

线程之间的 Haskell 评估同步

我试图了解 GHC Haskell 如何在线程之间同步“基本”值(即不是 IORef、TVar 等)的计算。我已经搜索了有关此的信息,但没有找到任何明确的信息。

以下面的示例程序为例:

import Control.Concurrent

expensiveFunction x = sum [1..x] -- Just an example

val = expensiveFunction 12345

thread1 = print val

thread2 = print val

main = do
    forkOS thread1
    forkOS thread2
Run Code Online (Sandbox Code Playgroud)

我知道值 va​​l 最初将由未评估的闭包表示。为了打印 val,程序必须首先评估它。一旦评估了顶级绑定,就不需要再次评估它。

  1. “val”的表示是否甚至由单独的线程共享?

  2. 如果由于某种原因,线程 1 首先完成评估,是否可以通过换出指针将最终计算出的值传送给线程 2?这将如何同步?

  3. 如果线程 1 正忙于评估线程 2 想要该值时,线程 2 是等待它完成还是它们都争先恐后地评估它?

haskell ghc

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

Lisp中的负无穷大

我正在寻找在Lisp中表示负无穷大的标准方法.是否有一个符号值,Lisp的算术函数识别为少于所有其他数字?

具体来说,我正在寻找一种优雅的方式来编写以下内容:

(defun largest (lst)
  "Evaluates to the largest number in lst"
  (if (null lst)
    ***negative-inifinity***
    (max (car lst) (largest (cdr lst)))))
Run Code Online (Sandbox Code Playgroud)

lisp fixnum

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

杀死less(1)子进程后输入失败

我正在编写一个程序,使用Unix less(1)在终端上显示文本.以下是相关部分:

less = subprocess.Popen(['less -F -'], stdin=subprocess.PIPE, 
            stdout=sys.stdout, shell=True)
try:
    less.stdin.write(rfc_text)
    less.stdin.flush()
    less.stdin = sys.stdin
    less.wait()
except IOError:
    less.terminate()
    return errno.EPIPE
except KeyboardInterrupt:
    less.terminate()
    return 0
Run Code Online (Sandbox Code Playgroud)

在等待较少完成时,我会监听KeyboardInterrupt异常.如果我抓到一个,我用SIGTERM信号减少了,并退出我的程序.

现在,当发生这种情况时,我将返回到我的shell提示符,但shell不再回应我写的内容,我必须重置(1)以使其再次工作.

关于如何减少死亡而不将我的stdin带入坟墓的任何想法?完整的资源可以在https://github.com/jforberg/rfc/blob/master/rfc.py上找到

编辑:经过一些实验,我发现默认情况下,less(1)和man(1)都忽略了control-C笔划.所以简单地忽略它可能是一个可行的选择.我不确定我认为这是正确的做法,所以如果有人有建议我仍然非常感兴趣.

python unix subprocess

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

从mixin访问类名

在我的Rails项目,我存储在一个字符串索引的散列结果,其中每一类(模型)有它自己的设置一个"命名空间"全局设置.例如,新闻模型可能具有"news.stories_per_page"或"news.show_date"设置.

为了避免到处乱序,我有一个mixin,它提供了访问这些设置的通用类方法.使用这个mixin,我可以使用以下代码访问'news.show_date':

News.setting :show_date
=> true
Run Code Online (Sandbox Code Playgroud)

现在,这是问题所在.为了生成字符串"news.show_date",我需要知道我的混合模块中,但一类方法中的模型的类名,

self.class
=> Class
Run Code Online (Sandbox Code Playgroud)

这对我没有多大帮助.在我天真的实现中,这导致所有模型将他们的设置存储在"类"下.命名空间,这是不可接受的.

我为无法更清楚地陈述问题而道歉.我对Ruby有点新,并且没有完全理解它的对象模型.这个问题可能与kludge有关,而Ruby似乎需要在类方法中混合使用.

ruby ruby-on-rails mixins

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