小编Shi*_* Wu的帖子

如何在网页中进行字体抗锯齿?

我一直在研究如何在网页上执行字体抗锯齿.以下是我发现的一些解决方案:

  • -webkit-font-smoothing属性:它似乎只适用于最新的浏览器.我没试过.
  • Google Font API:这很棒,而且易于使用.我想知道如何离线使用它.
  • 一个名为typeface.js的javascript库:用canvas或VML绘制文本.看起来很棒,但我没有使用它.
  • 也许css3支持这个.

此外,我发现这个网站gitorious.org在主页上使用了非常漂亮的防眩字体.但我想知道它是如何运作的.源代码显示它只是纯文本,但无法使用Firebug等调试工具进行更改.有谁知道这背后是什么?或者其他方面来解决这个字体问题.

html css css3

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

康纳德在哈斯克尔打破了懒惰

我正在尝试Cont monad,并发现以下问题.

  1. 首先构造一个无限列表并将所有元素提升为Cont monad
  2. 使用序列操作在无限列表中获取Cont monad.
  3. 例如,当我们尝试使用头部运行monad时,它会在尝试扩展延续时陷入无限循环,并且永远不会调用头部.

代码如下所示:

let inff = map (return :: a -> Cont r a) [0..]
let seqf = sequence inff
runCont seqf head
Run Code Online (Sandbox Code Playgroud)

那么这是Haskell中Cont monad实现的限制吗?如果是这样,我们如何改善这一点?

monads continuations haskell

10
推荐指数
2
解决办法
303
查看次数

Clojure 1.8的套接字repl和nREPL之间的具体区别是什么?

我一直在读这个,但似乎没有教程/文档关于这两者之间的区别或诸如此类的东西.

套接字repl会替换nrepl吗?

clojure read-eval-print-loop clojurescript nrepl

8
推荐指数
1
解决办法
515
查看次数

如何更改macports的镜像

我是OS X的新手,并且对macports的工作方式感到困惑.

我的问题是,如何更改镜像或macports下载portfiles和distfiles的网站.

我正在尝试使用的镜像:http://mirrors.ustc.edu.cn/macports/

我应该更改sources.conf吗?但是这个镜像没有rsync协议(我不清楚rsync协议是什么> _ <).

或者我应该配置macports.conf?

我知道macports官方指南,但我不够聪明,无法弄清楚这一点.

有谁能够帮我?

谢谢.

macos osx-snow-leopard osx-lion

6
推荐指数
1
解决办法
3741
查看次数

为什么 boost 的进程间互斥体在 posix 上不稳健?

我对 boost 很陌生,只是想了解其中的一小部分 - 进程间互斥体。

AFAIU,使用文件锁的跨平台实现中有一个强大的互斥模拟:http://www.boost.org/doc/libs/1_62_0/boost/interprocess/detail/robust_emulation.hpp

这是为了模拟 posix 标准中可用的强大互斥锁,但只有当平台特定版本不可用时才会使用通用方法。

#if !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined (BOOST_INTERPROCESS_POSIX_PROCESS_SHARED)
   #include <boost/interprocess/sync/posix/mutex.hpp>
   #define BOOST_INTERPROCESS_USE_POSIX
//Experimental...
#elif !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined (BOOST_INTERPROCESS_WINDOWS)
   #include <boost/interprocess/sync/windows/mutex.hpp>
   #define BOOST_INTERPROCESS_USE_WINDOWS
#elif !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED)
   #include <boost/interprocess/sync/spin/mutex.hpp>
   #define BOOST_INTERPROCESS_USE_GENERIC_EMULATION
Run Code Online (Sandbox Code Playgroud)

但是在实际上支持健壮互斥体的posix系统上(我猜这取决于内核版本),健壮互斥体实际上没有启用。http://www.boost.org/doc/libs/1_62_0/boost/interprocess/sync/posix/pthread_helpers.hpp

所以我不太明白这里的逻辑,posix 强大的互斥体实现是否有严重的性能损失,以至于我们不想使用它?即便如此,至少应该有一个选项可以选择性地启用此功能。

为了解决这个问题,因为我是新手,有什么方法可以使通用实现在 posix 实现上可用,以便我可以利用鲁棒性?

c++ boost boost-mutex

5
推荐指数
1
解决办法
775
查看次数

方案:当与Continutation一起使用时,define和let之间有什么区别

我想知道以下两个代码之间的区别:

(define cont2 #f) 
(call/cc (lambda (k) (set! cont2 k)))
(display "*")
(cont2 #f)
Run Code Online (Sandbox Code Playgroud)

(let [(cont #f)]
  (call/cc (lambda (k) (set! cont k)))
  (display "*")
  (cont #f))
Run Code Online (Sandbox Code Playgroud)

在我看来,这两个程序的正确行为应该是无限地打印'*'.但是,第一个只打印一个'*'并退出,而第二个给出正确的行为.

所以我很困惑.是否有一些特殊的事情define 或延续不是我想的 - 所有以下程序,直到程序结束,它似乎有一个边界或东西.

另一个猜测是顶级环境是特殊处理的,如下所示:

(define (test)
  (define cont2 #f) 
  (call/cc (lambda (k) (set! cont2 k)))
  (display "*")
  (cont2 #f))
(test)
Run Code Online (Sandbox Code Playgroud)

这有效,但为什么呢?

谢谢您的帮助!

scheme continuations racket

4
推荐指数
1
解决办法
1343
查看次数

将方法注入现有类

我想找到一种方法来在scala中的某个现有类中定义一个新方法.

例如,我认为该asInstanceOf[T]方法名称太长,我想用它替换它as[T].

直接的方法可以是:

class WrappedAny(val a: Any) {
  def as[T] = a.asInstanceOf[T]
}

implicit def wrappingAny(a: Any): WrappedAny = new WrappedAny(a)
Run Code Online (Sandbox Code Playgroud)

有更少代码的更自然的方式吗?

此外,当我尝试这个时,会发生一件奇怪的事:

scala> class A

defined class A

scala> implicit def toA(x: Any): A = x

toA: (x: Any)A

scala> toA(1)
Run Code Online (Sandbox Code Playgroud)

控制台挂了.似乎不toA(Any)应该通过类型检查阶段,并且当它不是隐含时它不能.将所有代码放入外部源代码可能会产生同样的问题.这怎么发生的?这是编译器的错误(版本2.8.0)?

scala

3
推荐指数
1
解决办法
1998
查看次数

scala 2.10中的泛型类型解析器

我正在使用Scala 2.10编写通用值解析器.输入是一个字符串,输出是泛型类型,由用户给出.

我唯一能想到的是

val StringTYPE = classOf[java.lang.String]

def parseValue[T: ClassTag](str: String): T = {
  implicitly[ClassTag[T]].runtimeClass match {
    case java.lang.Integer.TYPE => str.toInt.asInstanceOf[T]
    case java.lang.Long.TYPE => str.toLong.asInstanceOf[T]
    case StringTYPE => str.asInstanceOf[T]
    case _ => throw new Exception("Unknown type")
  }
}
Run Code Online (Sandbox Code Playgroud)

但它看起来非常冗长和复杂,所以我想知道有没有更简单的方法来做到这一点?

generics scala

3
推荐指数
1
解决办法
375
查看次数

"All about monads"中的MonadError部分

我现在对于关于"All about monads"所描述的Error monad感到困惑.

它声称Error monad的定义为

class (Monad m) => Monaderror e m | m -> e where
  throwError :: e -> m a
  catchError :: m a -> (e -> m a) -> m a
Run Code Online (Sandbox Code Playgroud)

其中一个例子是Either e.

instance MonadError (Either e) where
  throwError = Left
  (Left e) `catchError` handler = handler e
  a        `catchError` _       = a
Run Code Online (Sandbox Code Playgroud)

这是我不明白的.MonadError类有两个类型参数,(E)取一个,这个实例化是如何工作的?这是因为功能依赖吗?我还是不明白.

和!我已经破了GHCi中的这段代码(带-XFunctionalDependencies,-XMultiParamTypeClasses)没编译!无论如何,这段代码是什么?

monads haskell

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