数据types提升为依赖challenged

通读ghc 7.4之后。 发布前的注意事项和给予Haskell一张促销纸,我仍然困惑你实际上做什么与促销types。 例如,GHC手册给出了关于升级的数据types的以下示例: data Nat = Ze | Su Nat data List a = Nil | Cons a (List a) data Pair ab = Pair ab data Sum ab = L a | R b 这些有什么样的用途? 你可以给(代码)的例子?

AFNetworking和离线模式下的SDURLCache不起作用

我正在使用AFNetworking和SDURLCache来处理所有的networking操作。 我有这样的SDURLCache设置: SDURLCache *urlCache = [[SDURLCache alloc] initWithMemoryCapacity:1024*1024*2 // 2MB mem cache diskCapacity:1024*1024*15 // 15MB disk cache diskPath:[SDURLCache defaultCachePath]]; [urlCache setMinCacheInterval:1]; [NSURLCache setSharedURLCache:urlCache]; 我所有的请求都使用cachePolicy NSURLRequestUseProtocolCachePolicy ,根据苹果文档,它的工作原理是这样的: 如果请求中不存在NSCachedURLResponse,则从原始源获取数据。 如果请求存在caching响应,则URL加载系统检查响应以确定是否指定内容必须重新生效。 如果内容必须重新确认,则与原始源进行连接以查看是否已经改变。 如果没有改变,则从本地caching返回响应。 如果发生了变化,则从原始源获取数据。 如果caching的响应没有指定内容必须重新生效,则检查响应中指定的最大使用期限或到期date。 如果caching的响应足够近,则从本地caching中返回响应。 如果响应被确定为陈旧,则检查起源的新数据。 如果更新的数据可用,则从源发送源获取数据,否则从caching中返回。 所以,即使在飞机模式下,只要caching没有陈旧,一切都可以正常工作。 当caching过期(max-age等)时,失败块被调用。 我一直在SDURLCache里面挖掘一点,这个方法返回一个有效数据的响应(我把数据parsing成一个string,它包含caching的信息) – (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request { request = [SDURLCache canonicalRequestForRequest:request]; NSCachedURLResponse *memoryResponse = [super cachedResponseForRequest:request]; if (memoryResponse) { […]

如何在Windows上使用text-icu?

我能够无差错地安装text-icu 。 (我用–extra-lib-dirs和–extra-include-dirs指向icu4c二进制发行版中的lib和include目录。) 我也能够通过做ghc –make icu.hs来构build下面使用text-icu简单程序ghc –make icu.hs : — icu.hs import Data.Text.ICU main = print $ Locale "tr-TR" 在这些步骤中没有任何错误或警告。 但是,当我尝试运行编译的程序icu.exe ,我根本没有输出。 我期望得到一个Locale "tr-TR" ,但是我什么也得不到,甚至没有任何错误或警告。 如果我尝试,情况仍然如此 main = do print $ Locale "tr-TR" print "Done" 所以使用text-icu东西似乎会导致程序默默地失败。 echo $? 产生False 。 有没有人在Windows上运行text-icu ? 你能告诉我我做错了什么吗?

如何使微调器宽度与最大可用项目宽度相同

我意识到,即使我使用wrap_content为我的微调(我避免使用match_parent因为我不想微调太长),并使用微调的项目视图和下拉项目视图match_parent , 我还是发现微调器的宽度和最大的项目宽度不一样 正如你所看到的, UnitedKingdom是不适合的。 所以,如果我selectUnitedKingdom ,只有微调者会resize 即使没有明确select最大的项目,我怎样才能使微调器调整到最大的可用项目宽度? 我的微调XML是 <Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10dp" /> 和我的微调的意见XML是 <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text_view_0" style="?android:attr/spinnerItemStyle" android:singleLine="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawablePadding="10dp" android:gravity="center_vertical" /> <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/checked_text_view_0" style="?android:attr/spinnerDropDownItemStyle" android:singleLine="true" android:layout_width="match_parent" android:layout_height="48dp" android:minHeight="48dp" android:drawablePadding="10dp" />

apache / php / mysql交互式浏览“如何制作香肠”

我无法理解apache / php / mysql堆栈如何在低级别上工作(包括与浏览器的交互)。 是否有一个很好的描述(书,网站等),将走过我的整个path,并解释如何开始浏览器reqesting一个url,HTTP请求正在发送,如何Apache与PHP会谈,如何PHP谈话mysql(持久性和非持久性连接)等等,我想了解什么在这个链中,什么时候处理超时,插口打开和closures多久。 一本书,一篇文章可能? 每个组件都有很多文档,但是我找不到“演练”。 到目前为止,我所做的解释是非常高层次的:看,这里是一头幸福的牛,去了牛津大学,看 – 这些都是收缩在超市货架上的。 我需要的是香肠农场/屠宰场/卡车/工厂参观,从母牛侮辱开始:) [更新]直到今天,我还没有find一个更好的方式来了解这些东西,而不是阅读来源。

在添加新产品时,将值添加到magento下拉列表或多选产品属性

我想知道是否有人发现或编写了一个扩展,允许一个magento网站pipe理员在添加产品的同时可以为其产品属性添加值。 例如,如果我出售书籍,并希望书籍作者位于下拉列表中,以便将其用于分层导航,则在添加产品之前,必须通过属性部分添加作者似乎很奇怪。 从工作stream程的angular度来看,在添加产品屏幕上的下拉菜单旁边有一个“添加新值”button是非常有意义的。 任何人有任何想法或见解?

什么是unit testingPython GUI应用程序的推荐方式?

我目前很愚蠢的尝试维护Python桌面应用程序的两个并行代码库,一个是使用PyGObject内省的GTK 3,一个是使用PyGTK的GTK 2.我主要工作在PyGObject分支,然后将端口转换到PyGTK分支。 由于这些实现之间的所有细微差别,我常常会忽略一些事情,并导致我错过和意外释放的破坏,只会被用户抓住。 我试图找出一个好方法来devise一些unit testing,最好是适合在两个代码库上运行。 这不是一个过于复杂的程序,(它本质上是一个图书馆pipe理工具,像iTunes一样): – Main Window |- Toolbar with some buttons (add/edit/remove items, configure the program) | |- VPaned |— Top HPaned |—— ListView (listing values by which a library of items can be filtered) |—— ListView (listing the contents of the library |— Bottom HPaned |—— Image (displaying cover art […]

应该如何在服务器端使用Facebook用户访问令牌?

前言 我正在开发几个Web服务和一些客户端(Web应用程序,手机等),这些客户端将通过HTTP与所述服务进行接口。 我目前的工作是为产品devise一个authentication和授权解决scheme。 我已决定利用Facebook,Google,Microsoft,Twitter等外部身份提供商进行身份validation。 我试图解决这个问题,“当请求到达我的服务器时,我怎么知道用户是谁,我怎么能确定?”。 下面还有更多的问题 要求 依靠外部身份来表明我正在处理的是谁(“userId”本质上就是我所关心的)。 系统应该使用基于令牌的authentication(而不是cookie,例如基本authentication)。 我相信这是跨多个客户端和服务器进行扩展,同时提供松散耦合的正确select。 工作stream程 基于我对基于令牌的身份validation的阅读和理解,以下是我如何想象工作stream程。 现在让我们在网页浏览器上关注Facebook 。 我的假设是,其他外部身份提供者应该有类似的能力,虽然我还没有确认。 请注意,截至撰写时,我将基于Facebooklogin版本2.2以下 客户端:使用JavaScript SDK启动Facebook的login Facebook:用户authentication和批准应用程序权限(例如访问用户的公开个人资料) Facebook:向包含用户的访问令牌,ID和签名请求的客户端发送响应 客户端:在浏览器会话中存储用户访问令牌( 方便地由SDK处理 ) 客户端:通过在授权标头中发送用户的访问令牌+用户的标识(潜在地在自定义标头中)向我的Web服务请求安全资源, 服务器:从请求头读取用户访问令牌,并通过向Facebook提供的debug_tokengraphicsAPI发送请求来启动validation Facebook:使用用户访问令牌信息(包含appId和userId)回应服务器 服务器:通过比较appId与预期(本身已知)和userId与客户端请求上发送的内容的比较来完成令牌的validation 服务器:用请求的资源响应客户端(假定愉快的授权path) 我想象的步骤5-9将重复随后的请求到服务器(而用户的访问令牌是有效的 – 没有过期,从FB侧撤销,应用程序权限改变等) 以下是帮助您完成步骤的图表。 请理解这个系统不是一个单一的页面应用程序(SPA)。 提到的Web服务是API端点,将JSON数据本质上提供给客户端; 他们不提供HTML / JS / CSS(除了Web客户端服务器)。 问题 首先,根据我的序言和要求,有没有明显的差距/陷阱? 正在执行一个出站请求到Facebookvalidation访问令牌(上面的步骤6-8) 每客户端请求 /推荐? 我至less知道,我必须validation来自客户端请求的访问令牌。 但是,第一个后续validation的推荐方法对我来说是未知的。 如果有典型的模式,我有兴趣听到它们。 根据我的要求,我明白他们可能是依赖于应用程序; 然而,我只是不知道该找什么。 一旦我有一个基本的想法,我会尽职尽责。 例如,可能的想法: 首次validation完成后,将访问令牌+ userId对散列,并将其存储在分布式caching中(所有Web服务器均可访问),并且有效期等于访问令牌。 在随后来自客户端的请求中,对访问令牌+用户ID对进行散列并检查其在caching中的存在。 如果存在,则请求被授权。 […]

在使用selectableItemBackground属性时使用button背景的自定义颜色

我正在尝试使用 android:background="?android:attr/selectableItemBackground" 让我的button为每个Android版本做适当的效果,如涟漪等 但是当我需要不同的颜色时,这会产生一个灰色的button。 我怎样才能覆盖这个默认的颜色?

无法清除临时存储

无法清除临时存储:确定某些文件在Web应用程序中访问不安全,或者调用的文件资源太多。 引发SecurityError 我在控制台中得到这个错误。 我有一个脚本名script.js这使得Ajax调用来检索数据从PHP。 任何想法为什么? 这是我的jQuery脚本 $(document).ready(function() { var loading = false; var docHeight = $(window).height(); $('.timeline').css({minHeight: docHeight}); function get_tl_post() { if (loading==false) { loading = true; $.ajax({ type:"POST", url:"timeline.php", data:"data=instagram", beforeSend:function(){ $('.loader').fadeIn("slow"); }, complete:function(){ loading = false; $('.loader').fadeOut("slow"); }, success:function(data) { if(data=="error") { get_tl_post(); } $(data).hide().appendTo(".timeline").fadeIn(1000); } }); } } $(window).scroll(function(){ if ($(window).scrollTop() == […]