我正在寻找可以在我的C应用程序中使用的跨平台库来将金额(例如$ 123.50)兑换成单词(一百二十三美元和五十美分).我需要支持多种货币:美元,欧元,英镑等.
虽然我明白编写自己的实现并不难,但我想避免重新发明轮子.我试图谷歌它,但有太多的噪音与MS Word转换器有关.
任何人都可以提出建议吗?
更新许多评论建议编写我自己的实现,因为它真的很容易.并且我同意.我的观点是在同一时间支持多种货币和不同的业务规则来拼写金额(应该是小部分写成文本或数字?等等)据我所知,严肃的商业应用程序里面有这样的库,但我认为有没有任何开源可用,也许是因为它看起来非常容易.
我将编写自己的库,然后开源.谢谢大家.
我正在使用基类构造函数作为工厂并在此构造函数/工厂中更改类以选择适当的类 - 这种方法是很好的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)
我的第一种方法是品味问题还是有一些隐藏的陷阱?
我有几个用PyQt4编写的应用程序,我使用标准的Python gettext库来实现GUI的国际化和本地化.它对我有用.但我之所以选择gettext只是因为我已经掌握了gettext的使用知识和经验,而且没有使用Qt4 tr()方法的经验.
现在我想更好地比较这两种方法,并通过使用gettext而不是QObject.tr来理解我所缺少的内容,并且有没有任何严重的原因我不应该将gettext用于Qt4/PyQt4应用程序?
在我的理解中,使用gettext的优点是:
我认为QObject.tr()的优点:
我认为QObject.tr()vs gettext的缺点:
但是上面的所有项目都不够严谨,无法明确表示任何工具都比其他工具更好.而且我不想对更好的事情展开火焰战争,因为它非常主观.我只是想知道我错过了QObject.tr()vs gettext的优点和缺点.
我想评估Mercurial的工作项目.但是我的大多数项目都非常依赖于svn:externals-like支持的存在.我搜索了StackOverflow并搜索了Mercurial中的相应支持.我发现的只是在Mercurial 1.3中添加了subrepo功能,但此功能的页面说:
subrepos是Mercurial 1.3的实验性功能.因此,不要在关键任务存储库中执行此操作!
我不想使用不稳定的东西.
任何人都可以了解这个功能的实际状态,以及抛光/完成它的计划以及何时称为"稳定"并为关键任务存储库做好准备?
我有一个简单的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) 我需要为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的方式做到这一点?
我在LinuxJournal上读过有关Boehm-Demers-Weiser垃圾收集器库的文章.我很有兴趣在我的库中使用它而不是我自己的引用计数实现.
我只有一个问题:是否可以仅将gc用于我的共享库,并且仍然在主应用程序中使用malloc/free?我不太明白gc如何检查堆,所以我担心在这种情况下gc的性能和可能的副作用.