小编Mat*_*een的帖子

确保Linux中的单个应用程序实例

我正在使用WxPython中的GUI应用程序,我不确定如何确保在计算机上的任何给定时间只运行我的应用程序的一个副本.由于应用程序的性质,运行不止一次没有任何意义,并且会很快失败.在Win32下,我可以简单地创建一个名为mutex并在启动时检查它.不幸的是,我不知道Linux中可以做到这一点的任何设施.

如果应用程序意外崩溃,我正在寻找会自动发布的内容.我不想让我的用户不得不手动删除锁定文件,因为我崩溃了.

python linux single-instance

33
推荐指数
5
解决办法
2万
查看次数

Rails 3:对未定义的URL帮助程序的响应有错误

我有一个Artwork模型,现在只能由API端点操作.(你会明白为什么这很重要).这些API端点在我的routes.rb文件中声明如下:

namespace :api do
  namespace :v1, :defaults => { :format => :json } do
    resources :artworks, :only => [:create, :destroy, :index, :show, :update]
Run Code Online (Sandbox Code Playgroud)

这导致以下路线:

api_v1_artworks GET        /api/v1/artworks(.:format)                                             api/v1/artworks#index {:format=>:json}
                POST       /api/v1/artworks(.:format)                                             api/v1/artworks#create {:format=>:json}
api_v1_artwork  GET        /api/v1/artworks/:id(.:format)                                         api/v1/artworks#show {:format=>:json}
                PUT        /api/v1/artworks/:id(.:format)                                         api/v1/artworks#update {:format=>:json}
                DELETE     /api/v1/artworks/:id(.:format)                                         api/v1/artworks#destroy {:format=>:json}
Run Code Online (Sandbox Code Playgroud)

相关代码:

class Api::V1::ArtworksController < Api::V1::ApiController
  def create
    artwork = Artwork.create(artwork_params)

    respond_with artwork
  end
Run Code Online (Sandbox Code Playgroud)

问题

如果#create成功,respond_with电抗器:

`undefined method `artwork_url' for #<Api::V1::ArtworksController:0x007fea1b4c67f8>`
Run Code Online (Sandbox Code Playgroud)

它期待HTTP位置的帮助artwork_url.我如何告诉它使用api_v1_artwork_url?我可以为URL帮助器设置别名吗?

ruby-on-rails

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

Linux:如何强制使用特定的网络接口?

这可以被认为是此早期SO问题的延续.

理想情况下,无论如何,我都希望将进程监禁到仅使用某个界面.它将进行TCP连接,发送UDP数据报和监听UDP广播.目前,我在做的是:

  1. 确定要使用的接口的IP.
  2. 创建IP策略规则,将来自接口的所有数据包路由到该IP
  3. 创建另一个IP策略规则,将来自该IP的所有数据包路由到该接口
  4. 为每个规则设置默认路由表

现在,这主要是有效的,但客户流程也必须愿意发挥作用.也就是说,它需要绑定到它想要使用的接口的特定IP,我想我也需要设置SO_BINDTODEVICE.(但是,我一直在阅读有关SO_BINDTODEVICE在使用TCP或UDP时是否实际工作的冲突信息.)幸运的是,客户端应用程序是Python,我可以扩展套接字类以透明地完成所有这些操作.但我不确定这是一个完整的解决方案,特别是在接收广播方面.

我的问题是:

  1. 请问SO_BINDTODEVICE做什么,我想在这里?或者它只对原始套接字有效吗?有人评论说," SO_BINDTODEVICE在套接字上不能保证套接字只接收到达该物理接口的线/天线的数据包." 如果确实如此,那又 SO_BINDTODEVICE什么呢?

  2. 有没有办法做到这一点,本地IP不必是唯一的?除了一个接口上的DHCP服务器可能将其分配给另一个接口正在使用的IP这一事实之外,这不会是一个问题,从而使路由表混乱.

  3. 如何仅从特定界面接收广播?绑定到特定IP似乎使它忽略广播,这是有道理的,但不是我正在寻找的.

我正在运行Ubuntu 8.04 w/Linux内核2.6.26.能够通过两个不同的接口同时访问两个不同网络上的同一子网是一个不可协商的要求,因此(大部分)免于"不要那样做".:)

sockets linux

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

Android:在通话期间网络速度慢

我们正在开发一款应用程序,通过UDP为基于GSM的手机传输大量数据.这个想法是在与语音呼叫结合使用它的同时使用它.如果没有语音通话,事情就好了.但是,如果语音呼叫处于活动状态,那么即使在HSPA +上,我们发送的大部分数据似乎也都无法实现.如果我们启用Wifi,那么一切都很好.

我担心这是一个物理问题,而不是手机问题.在发送一大块数据后,我通过插入日志语句来排除CPU争用,并且看到它出现了很多次.

3G无线电能够同时发送数据和语音吗?我们在语音通话期间尝试了速度测试,看到带宽大幅下降.

android gsm bandwidth

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

尝试将CPS应用于口译员

我正在尝试使用CPS来简化我的Python解释器中的控制流实现.具体来说,在实现return/ break/时continue,我必须手动存储状态和展开,这很乏味.我已经读过以这种方式实现异常处理非常棘手.我想要的是每个eval函数能够将控制流程引导到下一条指令或完全不同的指令.

一些比我更有经验的人建议将CPS作为一种正确处理这一问题的方法.我真的很喜欢它如何简化解释器中的控制流程,但我不确定为了实现这一点我需要做多少实际操作.

  1. 我需要在AST上运行CPS转换吗?我应该将这个AST降低到较小的较低级别的IR,然后进行转换吗?

  2. 我是否需要更新评估者以接受各地的成功延续?(我这样假设).

我想我通常理解CPS转换:目标是在整个AST中包含所有表达式的延续.

我也有点困惑Contmonad适合这里,因为宿主语言是Haskell.

编辑:这是AST的浓缩版本.它是Python语句,表达式和内置值的1-1映射.

data Statement
    = Assignment Expression Expression
    | Expression Expression
    | Break
    | While Expression [Statement]

data Expression
    | Attribute Expression String
    | Constant Value

data Value
    = String String
    | Int Integer
    | None
Run Code Online (Sandbox Code Playgroud)

为了评估陈述,我使用eval:

eval (Assignment (Variable var) expr) = do
    value <- evalExpr expr
    updateSymbol var value

eval (Expression e) = do
    _ <- evalExpr e
    return () …
Run Code Online (Sandbox Code Playgroud)

haskell continuation

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

处理来自多个容易出错的源的数据聚合的算法

我正在汇总来自几个不同来源的音乐会列表,其中没有一个都是完整和准确的.某些数据来自用户(例如last.fm),可能不正确.其他数据源非常准确,但可能不包含每个事件.我可以使用事件日期和城市/州等属性来尝试匹配来自不同来源的列表.我想合理地确定这些事件是有效的.这似乎是一个很好的策略,可以使用尽可能多的不同来源来验证容易出错的源列表.

我不确定这个技术术语是什么,因为我想进一步研究它.是数据挖掘吗?有没有现有的算法?我知道解决方案永远不会完全准确.

algorithm data-mining

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

惯用异步设计

在编写异步API时,我可以使用哪些有用的习惯用法吗?我希望标准化一些东西,因为我似乎总是使用一些不同的样式.似乎很难使异步代码变得简单; 我想这是因为异步操作不过是.

在最基本的层面上,API的用户必须能够:

  1. 在数据可用时将数据推送给他们
  2. 检查异步操作的状态
  3. 收到发生错误的通知
  4. 等待完成(将异步操作转换为同步操作)

我的类支持多个异步操作.我一直在课堂上放置一些状态/错误回调,但是这个类在很多偶然的字段中变得很糟糕,而且变得太大了.我很好奇是否有人使用过他们发现组织良好的异步API.我查看了.NET的Begin/EndAsyncOperation + AsyncResult设计,以及Java中的一些类(例如Future).

这是用Python编写的,因此它仍然非常灵活.有一点需要注意:其中一些异步操作正在被封送到远程机器并在那里执行.因此,并非每个操作都必须在单独的线程中执行.

python asynchronous

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

在Ubuntu中双击安装程序?

我正在尝试更新我们的安装程序,以便用户只需双击文件即可轻松安装所有依赖项和软件.这是一套应用程序,将部署在干净的Ubuntu 8.04安装上.我已经调查了制作.deb文件,但列出依赖项不起作用,因为没有可用的Internet访问.并且,任何设置本地apt存储库的脚本仍然需要从命令行运行.有没有办法将deb文件放在deb文件中?

我知道很多公司都发布了chmod + x的shell脚本,然后执行.这是不可接受的.这是不可能的,这是荒谬的; 特别是考虑到分布和架构是固定的.

linux ubuntu installer debian

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

用鼠标滚轮滚动ListView有时会取消滚动

我在Win32列表视图中遇到了一些麻烦,希望有人能提供一些帮助。当非常快速地滚动(通过滚轮)时,列表视图似乎在滚动,只是跳回到所选项目,因此它在视图中。换句话说,该列表会撤消滚轮滚动,以在列表的顶部/底部显示所选项目。我意识到这听起来非常可疑,因为世界各地的通用控件已被打死。

复制方法如下:

  1. 在报告模式下加载大约500项左右的列表视图(确切的数量无关紧要,您只需要几屏数据)。
  2. 在列表中选择一个项目,并记住您选择的内容。
  3. 用滚轮向下(朝着您)快速滚动列表。我们正在尝试尽快将选定的项目滚动出视线。您可能需要比平时使用更大的力。这不会总是发生。您可能必须尝试几次。
  4. 滚动将正常完成,或者最终会改变主意,然后将您拉回到屏幕上所选项目的视图。

常规和虚拟列表视图都会发生这种情况。我已经在Windows 7 Ultimate上测试了Win32和C#。

我制作了一个小型WinForms应用程序来展示其行为(需要.NET Framework 3.5)。如果您不想运行陌生人的任意可执行文件(我理解),请制作一个新的WinForms应用程序,在报表模式下放置一个listview,添加一个列,然后使用500个递增整数填充表单加载事件中的列表:

private void Form1_Load(object sender, EventArgs e)
{
    for (int i = 0; i < 500; i++)
    {
        this.listView1.Items.Add(i.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

c# c++ winapi listview winforms

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

使用GDB进行Python内存调试

我们有一个Linux应用程序,它使用OpenSSL的Python绑定,我怀疑它会导致随机崩溃.偶尔,我们会看到它崩溃的消息:

Python致命错误:已跟踪GC对象

这似乎是库的编程错误,或内存损坏的症状.在给定核心文件的情况下,有没有办法知道它执行的最后一行Python源代码?或者如果它附加在GDB中?我意识到它可能都是编译后的字节码,但我希望有人可能已经解决了这个问题.目前它正在运行跟踪模块激活,我们希望它会再次发生,但可能需要很长时间.

python linux debugging openssl

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