小编bia*_*lix的帖子

免费跨平台库将数字(金额)转换为单词?

我正在寻找可以在我的C应用程序中使用的跨平台库来将金额(例如$ 123.50)兑换成单词(一百二十三美元和五十美分).我需要支持多种货币:美元,欧元,英镑等.

虽然我明白编写自己的实现并不难,但我想避免重新发明轮子.我试图谷歌它,但有太多的噪音与MS Word转换器有关.

任何人都可以提出建议吗?

更新许多评论建议编写我自己的实现,因为它真的很容易.并且我同意.我的观点是在同一时间支持多种货币和不同的业务规则来拼写金额(应该是小部分写成文本或数字?等等)据我所知,严肃的商业应用程序里面有这样的库,但我认为有没有任何开源可用,也许是因为它看起来非常容易.

我将编写自己的库,然后开源.谢谢大家.

c c++ free cross-platform

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

在Python中使用基类构造函数作为工厂?

我正在使用基类构造函数作为工厂并在此构造函数/工厂中更改类以选择适当的类 - 这种方法是很好的python实践还是有更优雅的方法?

我试图阅读有关元类的帮助,但没有取得很大的成功.

这是我正在做的事情的例子.

class Project(object):
  "Base class and factory."
  def __init__(self, url):
      if is_url_local(url):
        self.__class__ = ProjectLocal
      else:
        self.__class__ = ProjectRemote
      self.url = url

class ProjectLocal(Project):
  def do_something(self):
    # do the stuff locally in the dir pointed by self.url

class ProjectRemote(Project):
  def do_something(self):
    # do the stuff communicating with remote server pointed by self.url
Run Code Online (Sandbox Code Playgroud)

有了这段代码,我可以通过基类Project创建ProjectLocal/ProjectRemote的实例:

project = Project('http://example.com')
project.do_something()
Run Code Online (Sandbox Code Playgroud)

我知道另一种方法是使用将返回基于url的类对象的fabric函数,然后代码看起来类似:

def project_factory(url):
      if is_url_local(url):
        return ProjectLocal(url)
      else:
        return ProjectRemote(url)

project = project_factory(url)
project.do_something()
Run Code Online (Sandbox Code Playgroud)

我的第一种方法是品味问题还是有一些隐藏的陷阱?

python factory

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

使用gettext而不是QObject.tr()来优化PyQt4应用程序的本地化的优缺点?

我有几个用PyQt4编写的应用程序,我使用标准的Python gettext库来实现GUI的国际化和本地化.它对我有用.但我之所以选择gettext只是因为我已经掌握了gettext的使用知识和经验,而且没有使用Qt4 tr()方法的经验.

现在我想更好地比较这两种方法,并通过使用gettext而不是QObject.tr来理解我所缺少的内容,并且有没有任何严重的原因我不应该将gettext用于Qt4/PyQt4应用程序?

在我的理解中,使用gettext的优点是:

  • GNU gettext很成熟,似乎在GNU/Linux世界中是标准的事实.
  • PO文件有足够的特殊编辑器来简化翻译人员的工作,尽管PO模板的文本性质并不是绝对必要的.
  • 甚至还有可用于协作翻译的Web服务.
  • gettext是标准的Python库,所以我不需要安装任何特殊的东西来在运行时使用它.
  • 它通过ngettext()非常好地支持单数/复数形式选择.

我认为QObject.tr()的优点:

  • 这是Qt4/PyQt4的原生技术,所以它可能会更好/更快(尽管我没有数据可以证明).
  • 要翻译的消息可能有其他上下文信息,这将有助于翻译人员选择谐音词的最佳变体,例如,英文单词"Letter"可以翻译为"Character","Mail"或甚至是"Paper size"的类型,具体取决于实际情况.

我认为QObject.tr()vs gettext的缺点:

  • 我没有在Qt文档中找到如何支持单数/复数选择.
  • Qt4 TS翻译模板采用XML格式,因此无需特殊编辑器(QT Linguist)即可编辑更复杂,似乎没有其他第三方解决方案或Web服务.因此,翻译人员需要学习新工具(如果他们已经熟悉PO工具).

但是上面的所有项目都不够严谨,无法明确表示任何工具都比其他工具更好.而且我不想对更好的事情展开火焰战争,因为它非常主观.我只是想知道我错过了QObject.tr()vs gettext的优点和缺点.

localization gettext internationalization pyqt4

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

Mercurial 1.4.x中的subprepos功能是否可以用于生产?

我想评估Mercurial的工作项目.但是我的大多数项目都非常依赖于svn:externals-like支持的存在.我搜索了StackOverflow并搜索了Mercurial中的相应支持.我发现的只是在Mercurial 1.3中添加了subrepo功能,但此功能的页面说:

subrepos是Mercurial 1.3的实验性功能.因此,不要在关键任务存储库中执行此操作!

我不想使用不稳定的东西.

任何人都可以了解这个功能的实际状态,以及抛光/完成它的计划以及何时称为"稳定"并为关键任务存储库做好准备?

mercurial svn-externals subrepos

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

如何在退出PyQt4应用程序时禁用清除剪贴板?

我有一个简单的PyQt4应用程序(请参阅下面的代码),它揭示了下一个问题:如果我从QLineEdit中选择文本并将其复制到剪贴板,那么我只能在我的应用程序运行时将其粘贴到另一个应用程序.似乎在退出时PyQt应用程序清除了剪贴板,因此我无法在应用程序关闭后粘贴文本.

我该怎么做才能避免这个问题?

PyQt 4.4.3 @ Python 2.5 @ Windows XP.此效果也在PyQt 4.5+和Linux上得到证实.

import sys
from PyQt4 import QtGui
app = QtGui.QApplication(sys.argv)
edit = QtGui.QLineEdit()
edit.setText('foo bar')
edit.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)

python clipboard qt pyqt

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

如何根据编译器类型在SConstruct for C编译器中设置选项?

我需要为C编译器设置其他选项,例如添加标志以打开所有警告,具体取决于编译器的类型.例如,我应该使用MSVC

env.Append(CPPFLAGS = "/Wall")
Run Code Online (Sandbox Code Playgroud)

但对于mingw(gcc)我需要使用:

env.Append(CCFLAGS = "-Wall") 
Run Code Online (Sandbox Code Playgroud)

我怎样才能以scons的方式做到这一点?

c compiler-construction scons compiler-options

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

是否可以仅为程序的一部分使用Boehm垃圾收集器?

在LinuxJournal上读过有关Boehm-Demers-Weiser垃圾收集器库的文章.我很有兴趣在我的库中使用它而不是我自己的引用计数实现.

我只有一个问题:是否可以仅将gc用于我的共享库,并且仍然在主应用程序中使用malloc/free?我不太明白gc如何检查堆,所以我担心在这种情况下gc的性能和可能的副作用.

c c++ garbage-collection boehm-gc

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