我有网站和桌面应用程序,我想通过websockets连接它们.所以我的网站尝试连接到wss:// localhost:8080,例如.
它适用于IE11,但在"MS Edge"中我有一个错误:
不允许跨区域请求
我在Win10 10240上遇到此问题,因此默认情况下启用"允许localhost环回"标志,但它没有帮助.
当我使用CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"或此实用程序时,所有工作都按预期工作.
那么,这是一个案例,在新版本的"MS Edge"环回允许http,但不允许websockets?如果是这样,是否有可能做出一些解决方法,而不是强迫我的用户运行一些shell命令或下载externall实用程序?
相关问题:无法在Windows 10预览中的Microsoft Edge(Project Spartan)中打开localhost
我正在编写简单的控制台Pomodoro计时器(作为我的Haskell学习练习):

直到那个时间菜单基于提示行.但现在我想用基于箭头的菜单替换它,就像在Yeoman中一样:

我怎么能在Haskell中做到这一点?我阅读了有关System.Console.Terminfo.Keys和其他System.Console软件包的信息,但找不到我的问题的解决方案.
我的问题来自Haskell的monad第一定律:join . fmap join = join . join.
在Haskell/Category_theory中,该法律由以下图片证明:
我对这个例子使用类型的实例而不是类型的事实感到困惑.因为类别Hask中的对象是类型,而不是它们的实例.
在这张照片中,两个箭头(join和fmap join)通向M(M(X)).这是同一个对象,还是有两个不同M(M(X))?
我试图检查Bootstrap 4中的"按钮"示例.它们有一个看起来很漂亮的按钮,如下所示:
http://getbootstrap.com/docs/4.0/components/buttons/
但我不明白,按钮之间的空间来自哪里.
这不是边距,不是柔性框对齐,不是透明边框.那么,它是如何工作的?实际上,我禁用了dev-tools中的所有样式,但该空间并没有消失.
我试图从分布式条件类型部分理解这个例子:
条件类型与映射类型结合使用时特别有用:
Run Code Online (Sandbox Code Playgroud)type FunctionPropertyNames<T> = { [K in keyof T]: T[K] extends Function ? K : never; }[keyof T];
在这个例子中,我不清楚索引访问运算符的用法。这是使用相同想法的最简单示例(据我所知):
type Foo = {
prop1: never;
prop2: never
method1: "method1";
method2: "method2";
}
type FunctionPropertyNames = Foo[keyof Foo] // "method1" | "method2"
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:索引访问运算符的这种用法只是分布式条件类型的一种特殊情况吗?因为它看起来像结果类型是 T[K] 的所有应用程序的联合,never因为“是空联合”而被过滤never
更新。我将尝试更准确地表述这个问题:TS 手册描述了映射类型和条件类型的语法是什么。但是,我没有找到这种类型定义形式的任何描述:
type Keys = 'name1' | 'name2' | 'name3'
type Foo = Bar[Keys]
Run Code Online (Sandbox Code Playgroud)
或者,更现实的:
type Foo = Bar[keyof Bar]
Run Code Online (Sandbox Code Playgroud)
它看起来像是某种映射,但它也提供过滤功能,如果 Keys 包含never …
我在"真实世界Haskell"(第7章,第189页)中读到了IO缓冲,并尝试测试不同的缓冲大小如何影响性能.
import System.IO
import Data.Time.Clock
import Data.Char(toUpper)
main :: IO ()
main = do
hInp <- openFile "bigFile.txt" ReadMode
let bufferSize = truncate $ 2**10
hSetBuffering hInp (BlockBuffering (Just bufferSize))
bufferMode <- hGetBuffering hInp
putStrLn $ "Current buffering mode: " ++ (show bufferMode)
startTime <- getCurrentTime
inp <- hGetContents hInp
writeFile "processed.txt" (map toUpper inp)
hClose hInp
finishTime <- getCurrentTime
print $ diffUTCTime finishTime startTime
return ()
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个"bigFile.txt"
-rw-rw-r-- 1 user user 96M ???. 26 09:49 bigFile.txt
Run Code Online (Sandbox Code Playgroud)
并使用不同的缓冲区大小对此文件运行我的程序:
Current buffering …Run Code Online (Sandbox Code Playgroud) 我正在阅读Haskell/Category理论,以下是该文章中monad的定义:
monad是一种特殊类型的仿函数,从类别到同一类别,支持一些额外的结构.所以,归结为定义.monad是一个仿函数M:C-> C,以及C中每个对象X的两个态射:
单位:X - > M(X)
连接:M(M(X)) - > M(X)
据我所知,在Haskell return中相当于unit.但return我可以写:
x :: [Int] -- x is a member of Lst category
x = return 5
Run Code Online (Sandbox Code Playgroud)
这是Haskell中的有效代码.现在,正如你所看到的,5这里不是一个成员Lst,而是return为它工作.
所以,我想这Lst是不是С从L:C->Ç.但是谁呢?
也许正确的答案是Hask,但我不确定" 从类别到其子类别的仿函数 "与" 从类别到同一类别的仿函数"相同.
haskell ×4
monads ×2
buffering ×1
css ×1
io ×1
loopback ×1
performance ×1
types ×1
typescript ×1
websocket ×1