小编Tim*_*her的帖子

哪个在Python中最好:urllib2,PycURL还是机械化?

好的,我需要使用Python下载一些网页,并快速调查我的选项.

包含在Python中:

urllib - 在我看来,我应该使用urllib2代替.urllib没有cookie支持,只有HTTP/FTP /本地文件(没有SSL)

urllib2 - 完整的HTTP/FTP客户端,支持最需要的东西,如cookie,不支持所有HTTP动词(只有GET和POST,没有TRACE等)

功能齐全:

机械化 - 可以使用/保存Firefox/IE cookie,采取跟随第二个链接的行动,积极维护(2011年3月发布0.2.5)

PycURL - 支持curl所做的一切(FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE和LDAP),坏消息:自2008年9月9日起未更新(7.19.0)

新的可能性:

urllib3 - 支持连接重用/池和文件发布

不推荐使用(也就是使用urllib/urllib2):

httplib - 仅限HTTP/HTTPS(无FTP)

httplib2 - 仅限HTTP/HTTPS(无FTP)

让我印象深刻的第一件事是urllib/urllib2/PycURL/mechanize都是非常成熟的解决方案,效果很好.机械化和PycURL附带了许多Linux发行版(例如Fedora 13)和BSD,所以安装通常不是问题(所以这很好).

urllib2看起来不错,但我想知道为什么PycURL和机械化看起来都非常受欢迎,是否有一些我缺少的东西(即如果我使用urllib2,我会在某个角落将自己画到一个角落?).我真的很喜欢这些事情的优点/缺点的反馈,所以我可以为自己做出最好的选择.

编辑:在urllib2中添加了关于动词支持的注释

python mechanize urllib2 pycurl

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

从同一个项目构建DLL和静态库

我在Visual Studio 2005下编译了许多本机C++库(Win32,没有MFC),并在许多解决方案中使用.

我希望能够选择编译并将它们链接为静态库或DLL,具体取决于我正在使用它们的特定解决方案的需求.

最好的方法是什么?我考虑过这些方法:

1.多个项目文件

  • 示例:"foo_static.vcproj"vs"foo_dll.vcproj"
  • 亲:很容易为新库生成,而不是过多的手动vcproj munging.
  • Con:两个地方的设置,文件列表等太容易失去同步.

2.单个项目文件,多个配置

  • 示例:"Debug | Win32"vs"Debug DLL | Win32"等.
  • Pro:文件列表更容易保持同步; 编译选项更容易保持同步
  • Con:我为Win32和Smart Device目标构建,所以我已经有多个配置; 我不想让我的组合爆炸更糟("FooPhone的静态库| WinMobile 6","FooPhone的动态库| WinMobile 6","BarPda的静态库| WinMobile 6"等.
  • 更糟糕的是:VS 2005有一个坏习惯,假设你有一个为平台"Foo"定义的配置,那么你真的需要它适用于你的解决方案中的所有其他平台,并且随意地插入所有配置/平台配置的所有排列受影响的vcproj文件,无论是否有效.(向MS提交的Bug;作为WONTFIX关闭.)

3.单个项目文件,通过vsprops文件选择静态或动态

  • 示例:将相应的vcproj片段存储在属性表文件中,然后在需要静态库时将"FooApp静态库"属性表应用于配置/平台组合,并在需要DLL时应用"FooApp DLL"属性表.
  • 优点:这就是我真正想要做的!
  • 缺点:似乎不可能. 似乎静态和动态库之间切换的.vcproj属性(Configuration元素的ConfigurationType属性)不能被.vsprops文件覆盖.Microsoft针对这些文件发布的架构仅列出<Tool>和<UserMacro>元素.

编辑:如果有人建议,我也尝试了一个更"聪明"的#3版本,其中我定义了一个包含名为"ModuleConfigurationType"的UserMacro的.vsprops,其值为"2"(DLL)或" 4"(静态库),并更改了.vcproj中的配置ConfigurationType="$(ModuleConfigurationType)".Visual Studio以静默方式无需警告即可删除该属性并替换为该属性ConfigurationType="1".太有帮助了!

我错过了更好的解决方案吗?

c++ winapi visual-studio-2005 projects-and-solutions vsprops

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

帮助函数的命名约定是什么?

在函数式编程中,将任何"循环"代码优化为尾递归通常很重要.尾递归算法通常在两个函数之间分开,但是 - 一个用于设置基本情况,另一个用于实现实际循环.一个好的(尽管是学术的)例子是反向功能.

reverse :: [a] -> [a]
reverse = reverse_helper []

reverse_helper :: [a] -> [a] -> [a]
reverse_helper result [] = result
reverse_helper result (x:xs) = reverse_helper (x:result) xs
Run Code Online (Sandbox Code Playgroud)

"reverse_helper"并不是一个很好的描述性名称.但是,"reverse_recursive_part"只是尴尬.

你会对这样的帮助函数使用什么命名约定?

haskell functional-programming naming-conventions helper-functions

10
推荐指数
4
解决办法
5642
查看次数