Scala中的真实世界函数式编程

SOOOO … 半群,幺半群,单子,函子,镜头,变形,变形,箭……这些都听起来不错,经过一两次(或十次)的练习,你就能掌握它们的本质。 和Scalaz ,你可以免费得到它们。 然而,就现实世界的编程而言,我发现自己正在努力寻找这些概念的用法。 是的,当然,我总是在网上find一些人使用monads IO或斯卡拉镜头,但… …仍然… 我试图find的是某种模式的“规定性”方面的东西。 就像这样:“在这里,你正在试图解决这个问题 ,解决这个问题的一个好办法就是用这种方法来使用镜头!” build议? 更新:按照这两行,有一两本书,会很棒(感谢Paul): Java核心库中的GoFdevise模式示例

constexpr超载

相关: 函数返回constexpr不编译 我觉得constexpr在C ++ 11中的用处是有限的,因为它不能定义两个函数,否则它们会有相同的签名,但是一个是constexpr,另一个是不是constexpr。 换句话说,如果我可以有一个constexst std :: string构造函数,它只需要constexpr参数,而一个非constexpr std :: string构造函数用于非constexpr参数将是非常有帮助的。 另一个例子是理论上复杂的函数,可以通过使用状态来提高效率。 你不能用constexpr函数轻松做到这一点,所以你只剩下两个select:如果你传递了非constexpr参数,或者完全放弃了constexpr(或者写了两个单独的函数,但你可能不知道要调用哪个版本)。 因此,我的问题是: 标准兼容的C ++ 11实现是否可以允许基于constexpr参数的函数重载,还是需要更新标准呢? 如果不允许,是否故意不允许? @NicolBolas:说我有一个函数,将一个enum映射到一个std::string 。 假设我的enum从0到n – 1 ,最直接的方法是创build一个大小为n的数组,填充结果。 我可以创build一个static constexpr char const * []并在返回时构造一个std::string (每次调用该函数时支付创build一个std::string对象的代价),或者我可以创build一个static std::string const []并返回我查找的值,在第一次调用函数时支付所有std::string构造函数的代价。 看起来更好的解决scheme是在编译时在内存中创buildstd::string (类似于char const *所做的),但唯一的方法是提醒构造函数它有constexpr参数。 除了std::string构造函数以外,我认为find一个例子,如果你可以忽略constexpr的需求(从而创build一个非constexpr函数),那么你可以创build一个更多的例子高效的function。 考虑这个线程: constexpr问题,为什么这两个不同的程序在g ++中运行的时间不同? 如果我用一个constexpr参数来调用fib ,那么我完全可以比编译器优化掉函数调用来做得更好。 但是如果我用一个非constexpr参数来调用fib ,我可能希望让它调用我自己的版本来实现像memoization(这将需要状态),所以我得到的运行时间类似于我通过编译的时间一个constexpr论据。

将videoinputstream转换为RTMP

我想从我的android手机streamvideo录制到networking媒体服务器。 第一个问题是,当将MediaRecorder输出设置为套接字时,该stream缺less一些mdat大小的标题。 这可以通过在本地预处理该stream并添加缺less的数据stream来修复,以便生成有效的输出stream。 问题是如何从那里开始。 我怎样才能把这个stream输出为一个RTMPstream?

目录pathtypes与argparse

我的Python脚本需要从命令行传递的目录中读取文件。 我已经定义了一个如下所示的readable_dirtypes,用于argparse来validation在命令行上传递的目录是否存在并且可读。 此外,还为目录参数指定了默认值(下例中的/ tmp / non_existent_dir)。 这里的问题是,即使在命令行中显式传入目录参数的情况下,argparse也会调用默认值的readable_dir()。 这会导致脚本出错,因为默认path/ tmp / non_existent_dir不存在于通过命令行显式传入目录的上下文中。 我可以通过不指定默认值并强制使用此参数来解决此问题,也可以在稍后的脚本中推迟validation,但这是任何人都知道的更优雅的解决scheme? #!/usr/bin/python import argparse import os def readable_dir(prospective_dir): if not os.path.isdir(prospective_dir): raise Exception("readable_dir:{0} is not a valid path".format(prospective_dir)) if os.access(prospective_dir, os.R_OK): return prospective_dir else: raise Exception("readable_dir:{0} is not a readable dir".format(prospective_dir)) parser = argparse.ArgumentParser(description='test', fromfile_prefix_chars="@") parser.add_argument('-l', '–launch_directory', type=readable_dir, default='/tmp/non_existent_dir') args = parser.parse_args()

在Intellij IDEA Scala插件中是否有可能知道应用了哪种隐式转换?

当应用隐式转换时,IntelliJ强调转换的代码。 是否有可能以某种方式导航到应用的转换?

多次调用OnCreateView /使用ActionBar和Fragments

我将我的应用程序的一部分从活动切换到碎片,以便我可以使用整洁的ActionBar选项卡。 但是,在完成转换之后,我遇到了一个问题:每当切换到另一个选项卡时,都会重新创buildFragment。 onCreate和onCreateView每次到达一个选项卡都会被调用。 我有4个选项卡,每个选项卡打开其中一个片段: Fragment ShopFragment = new WebActivity(); Fragment SearchFragment = new SearchActivity(context); Fragment StoreFragment = new StoreLocatorActivity(context, this); Fragment BlogsFragment = new BlogsActivity(context, this); 这是我的听众代码: class MyTabsListener implements ActionBar.TabListener { public Fragment fragment; public MyTabsListener(Fragment fragment) { this.fragment = fragment; } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { ft.hide(fragment); } @Override public […]

ZeroMQ推/拉模式的用处

在试用ZeroMQ Push/Pull (他们称为Pipeline )套接字types时,我很难理解这种模式的效用。 它被称为“负载平衡器”。 如果一个服务器向多个工作人员发送任务,推/拉将在所有客户端之间平均分配任务。 3个客户端和30个任务,每个客户端获得10个任务:客户端1获取任务1,4,7,…客户端2,2,5,…等等。 很公平。 从字面上看。 但是,实际上,任务复杂性或客户端计算资源(或可用性)往往是非均匀混合的,那么这种模式就会严重破坏。 所有的任务似乎都是预先安排好的,服务器不知道客户的进展情况,甚至是否可用。 如果client1发生故障,其剩余任务不会发送到其他客户端,而是保持排队等待client1。 如果client1保持closures状态,那么这些任务不会被处理。 相反,如果一个客户在处理任务时更快,那么他就没有得到更多的任务,并保持闲置状态,因为他们仍然为其他客户安排。 使用REQ/REP是一种可能的解决scheme; 任务然后只被赋予一个可用的资源。 所以我错过了什么? Push/Pull如何有效使用? 有没有办法处理这种套接字types的客户端,任务等的不对称? 谢谢! 以下是一个简单的Python示例: # server import zmq import time context = zmq.Context() socket = context.socket(zmq.PUSH) #socket = context.socket(zmq.REP) # uncomment for Req/Rep socket.bind("tcp://127.0.0.1:5555") i = 0 time.sleep(1) # naive wait for clients to arrive while True: #msg […]

如何根据scrapy中的URL过滤重复的请求

我正在为使用Scraw和CrawlSpider的网站编写爬虫程序。 Scrapy提供了一个内置的重复请求filter,它根据url来过滤重复的请求。 另外,我可以使用CrawlSpider的规则成员来过滤请求。 我想要做的是过滤请求,如: http:://www.abc.com/p/xyz.html?id=1234&refer=5678 如果我已经去过 http:://www.abc.com/p/xyz.html?id=1234&refer=4567 注意:引用是一个参数,不会影响我得到的响应,所以我不在乎如果该参数的值更改。 现在,如果我有一个积累所有ID的集合,我可以忽略它在我的callback函数parse_item (这是我的callback函数)来实现这个function。 但是这意味着我至less还可以拿到那个页面,当我不需要的时候。 那么我可以告诉scrapy它不应该基于url发送特定请求的方式是什么?

Eclipse Juno – package-info.java有什么用?

在Eclipse Juno中创build一个新的包时,会自动创build一个java文件(package-info.java)。 那个文件有什么用? 在另一个类中导入特定的类是否有用?

animationintrinsicContentSize更改

我有一个UIView子类绘制一个圆的半径变化(有很好的弹性animation)。 视图决定了圆的大小。 我想要这个UIView子类改变其框架大小,以匹配animation的变化圆的半径,我想这些变化修改任何NSLayoutConstraints连接到视图(以便限制到圆的边缘视图将移动为圈子大小)。 我明白,实现-(CGSize)intrinsicContentSize和调用invalidateIntrinsicContentSize时,半径变化会告诉限制更新,但我不知道如何animation的变化intrinsicContentSize 。 从[UIView animateWith …]块中调用invalidateIntrinsicContentSize只是立即更新布局。 这是甚至可能的,是否有一个解决方法/更好的方法?