小编dbr*_*dbr的帖子

可以用Python编写多少操作系统?

这是一个非常多的理论问题,但是......

有多少操作系统可以用Python,Ruby,Perl或Lisp,Haskell等语言编写?

似乎很多像init.d这样的东西可以用脚本语言来完成.其中一个防火墙设备操作系统(m0n0wall)使用PHP进行系统配置(包括启动时).有人可能会说"emacs是一个操作系统,主要是用Lisp编写的".

当然有些东西必须是assembly/C,但有多少可能是常规的.py/rb/.pl/.el/.hk文件..?它可能没有最好的性能,但到目前为止,它将是迄今为止最容易修改的操作系统......

operating-system

14
推荐指数
2
解决办法
4383
查看次数

实现"[command] [action] [parameter]"样式命令行界面?

实现命令行UI的"最干净"方式是什么,类似于git,例如:

git push origin/master
git remote add origin git://example.com master
Run Code Online (Sandbox Code Playgroud)

理想情况下还允许更灵活的解析,例如,

jump_to_folder app theappname v2
jump_to_folder app theappname source
jump_to_folder app theappname source v2
jump_to_folder app theappname build v1
jump_to_folder app theappname build 1
jump_to_folder app theappname v2 build
Run Code Online (Sandbox Code Playgroud)

jump_to_folder是脚本名称,app是命令,theappname是"固定位置"参数,"构建"和"v2"等是参数(例如,可能的参数是任何数字/任何前缀为av的数字,或者build/source/TMP /配置)

我可以用一系列if/ else/ 手动解析参数elifs,但必须有更优雅的方法来做到这一点?

作为一个完全理论上的例子,我可以描述UI模式..

app:
    fixed: application_name

    optional params:
        arg subsection:
            "build"
            "source"
            "tmp"
            "config"

        arg version:
            integer
            "v" + integer
Run Code Online (Sandbox Code Playgroud)

然后通过上面的模式解析提供的参数,并获取一个字典:

>>> print schema.parse(["app", "theappname", "v1", "source"])
{ …
Run Code Online (Sandbox Code Playgroud)

python user-interface command-line

14
推荐指数
2
解决办法
5735
查看次数

克隆Debian/Ubuntu安装

是否有一种简单的方法来克隆整个安装的debian/ubuntu系统?

我想在安装的软件包和尽可能多的设置方面进行相同的安装.

我已经研究了aptitude,apt-get,synaptic的选项但却一无所获.

linux ubuntu debian operating-system apt

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

IPython shell的换行问题

如果我在IPython中运行了一个长行,并尝试在当前行开头之外调用它(使用向上箭头)或退格,则它显示不正确(全部被刷成一行)

例如,在下面的会话中,我写了一个长行[1],输入了一个空白的行[2],然后向上箭头两次以使该print语句在线[3],并发生以下情况:

换行问题

发生在iTerm和Terminal.app中.我遇到了常规终端会话的类似问题,通过正确终止颜色代码修复了这个问题,但我不确定如何使用IPython进行修复

python terminal ipython

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

emacs的毒蛇模式等提示和技巧

基本上,我真的很喜欢vi [m]的键绑定,但不是编辑器的其余部分.我真的不喜欢emacs键绑定,但是其他编辑器一样.

viper-mode 看起来两全其美,但它并不完美..

你在emacs中错过了哪些vim功能(更重要的是,你是如何得到它们的)?你做了什么配置调整来使viper模式更好用?

作为开始:我真的很想念vim的视觉选择模式.. vimpulse将其添加到emacs!

vim emacs

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

你会如何设计一个非常"Pythonic"的UI框架?

我一直在玩Ruby库"鞋子".基本上,您可以通过以下方式编写GUI应用程序:

Shoes.app do
  t = para "Not clicked!"
  button "The Label" do
    alert "You clicked the button!" # when clicked, make an alert
    t.replace "Clicked!" # ..and replace the label's text
  end
end
Run Code Online (Sandbox Code Playgroud)

这让我想到 - 我如何在Python中设计一个同样易于使用的GUI框架?一个没有通常的基本上是C*库包装的东西(在GTK,Tk,wx,QT等的情况下)

鞋子从web开发(如#f0c2f0样式颜色表示法,CSS布局技术等:margin => 10)和ruby(以明智的方式广泛使用块)中获取东西

Python缺乏"rubyish块"使得(隐喻)直接端口变得不可能:

def Shoeless(Shoes.app):
    self.t = para("Not clicked!")

    def on_click_func(self):
        alert("You clicked the button!")
        self.t.replace("clicked!")

    b = button("The label", click=self.on_click_func)
Run Code Online (Sandbox Code Playgroud)

没有那么干净,并且几乎不会那么灵活,我甚至不确定它是否可以实现.

使用装饰器似乎是一种将代码块映射到特定操作的有趣方法:

class BaseControl:
    def __init__(self):
        self.func = None

    def clicked(self, func):
        self.func = func

    def …
Run Code Online (Sandbox Code Playgroud)

python user-interface frameworks

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

将文件拖放到NSTableView上?

我有一个NSTableView我希望允许用户将视频文件拖放到.当他们删除文件时,它将在表视图中添加为一行.

我该怎么做呢?目前tableview的数据来自一个数组控制器(从NSMutableArray获取数据)

我找到了这个文档,但似乎无法使它工作..

我有..

  • 制作了一个"TableCon"类(我改为继承自NSTableView,而不是NSObject)
  • 将NSTableView类更改为TableCon
  • 将NSTableView的委托出口设置为该类
  • registerForDraggedTypes在TableCon的init中调用
  • 实现- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender;(再次在TableCon中)

但是,没什么,它的行为就像我从未改变过任何事情(没有错误),我做错了什么?

编辑:我已经试过落实波阿斯Stuller的建议,同时也发现了这个解决方案的描述(第一个答复包括解决第一篇文章).所以我现在所做的就是......

  • 子类NSArrayController,它将内容提供给表视图(TableListCon)
  • 添加tableView插件到TableListCon(并指向NSTableView)
  • 在TableListCon中实现validateDrop,writeRowsWithIndexes和acceptDrop
  • 在tableView出口上调用registerForDraggedTypes.

同样,没有错误/警告,但似乎只调用了awakeFromNib方法(没有调用其他方法)

cocoa drag-and-drop objective-c

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

如何从Windows命令行执行HTTP HEAD请求?

Windows(Vista)命令行上获取远程Web服务器上文件大小和修改时间的最佳方式(或工具)是什么,而不下载它?

windows command-line http windows-vista

11
推荐指数
4
解决办法
9万
查看次数

Python绘图:如何让matplotlib.pyplot停止强制标记的样式?

我试图用matplotlib在Python中绘制一堆数据点(数千个),所以我需要每个标记都非常小而精确.如何获得最小的最简单的标记?我使用此命令绘制我的数据:

 matplotlib.pyplot( x , y ,'.',markersize=0.1,linewidth=None,markerfacecolor='black')
Run Code Online (Sandbox Code Playgroud)

然后我可以用它来查看它pl.show()然后保存它.或者直接plt.savefig('filename.ps')在代码中使用来保存它.问题是这样的:当我pl.show()用来查看GUI中的文件时,它看起来很小,带有小的黑色标记,但是当我从show()GUI 保存到文件或直接使用savefig然后查看ps我创建的它看起来不同!每个标记都在它周围获得了一点蓝色光环(好像它从每个点开始将它们与默认的蓝线连接起来,但没有)并且样式都是错误的.保存时为什么会改变风格?如何阻止python强制标记的样式?是的,我已经看过一些像CairoPlot这样的替代软件包,但我现在想继续使用matplotlib.

更新:原来,保存为PNG首先使颜色变成好的,但它迫使图像的转换,当我想再次将其保存为.ps更高版本(包含在PDF),然后我失去质量.如何保留文件的矢量性质并获得正确的格式?

python coding-style matplotlib

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

使用Mercurial分隔私有版本和公共版本

如何使用Mercurial解决以下问题.

假设我有一个库Core.我现在想要开发一个名为Extension的扩展库.我想让Core在物理上与Extension分开,也就是说,Core是一个开源库,而Extension是一个基于Core的私有库(也许它包含了一些我想保留个人的东西.无论如何.).显然,我不想将Extension中的整个源代码推送到公共存储库.但另一方面,我可能希望将某些更改从Extension扩展到Core(如果我决定"将扩展部分"捐赠给Core),反之亦然(如果我想合并bug修复,请说).

您将如何解决这个问题,最大限度地降低扩展到Core的风险(一旦将历史记录推送到公共服务器,就不会再回头了!),同时保持灵活性以便对某些更改执行此操作.分行?克隆?MQS?别的什么?

我目前只熟悉克隆存储库,非常喜欢它的简单性.

编辑: 我提出了这个计划,但我无法让它在Windows下工作.两个存储库(核心和扩展).在Extension中有两个分支,也是Core和扩展.现在,你可以在Mercurial中为每个存储库注册一个钩子,所以我想在Core repo中注册一个'pretxnchangegroup'钩子,它不允许来自Extension分支的签入,就像Mercurial书中所解释的那样.除了我不太明白在Windows下工作.所以:

  • 任何人都有一个这样的例子(事实上,任何改变交易结果的钩子)在Windows下?
  • 我仍然可以使用移植来实现从Extension到Core分支的改变,对吗?

mercurial

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