小编ram*_*ion的帖子

画布的JavaScript事件调整大小

看起来改变画布的尺寸会清除已在该画布上完成的任何绘图.

是否有一个在画布上触发的事件调整大小,所以我可以挂钩它并在它发生时重绘?

javascript html5 canvas

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

使用镜头读取多个字段

鉴于类型

data Prisoner = P { _name   :: String
                  , _rank   :: Int
                  , _cereal :: Cereal }

data Cereal = C { _number             :: Int
                , _percentDailyValue  :: Map String Float
                , _mascot             :: String }
Run Code Online (Sandbox Code Playgroud)

我可以通过模式匹配来提取某人的姓名,等级和谷物数量:

getNameRankAndCerealNumber_0 :: Prisoner -> (String, Int, Int)
getNameRankAndCerealNumber_0 (P { _name=name
                                , _rank=rank
                                , _cereal = C { _number=cerealNumber }}
                             ) = (name, rank, cerealNumber)
Run Code Online (Sandbox Code Playgroud)

或者,我可以使用镜头分别提取每个部分

makeLenses ''Cereal
makeLenses ''Prisoner

getNameRankAndCerealNumber_1 :: Prisoner -> (String, Int, Int)
getNameRankAndCerealNumber_1 p = (p ^. …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-lens

20
推荐指数
2
解决办法
1626
查看次数

SVG动画路径的d属性

是否可以使用SVG动画d属性<path>

我可以画一个钻石和一个圆圈作为由八条贝塞尔曲线组成的路径:

<html>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
    <script>
      jQuery(function($){
        var a = 50;

        var draw = function(b, c, d, e, f){
          return [
            'M', a, 0, 

            'C', b, c, ',', d, e, ',', f, f,
            'C', e, d, ',', c, b, ',', 0, a,

            'C', -c, b, ',', -e, d, ',', -f, f,
            'C', -d, e, ',', -b, c, ',', -a, 0,

            'C', -b, -c, ',', -d, -e, ',', -f, -f,
            'C', -e, -d, ',', -c, -b, …
Run Code Online (Sandbox Code Playgroud)

javascript animation svg bezier

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

Javascript DOM:设置自定义DOM元素属性

是否可以在DOM元素上设置自定义属性,并依赖它们持久化?

例如,给定

 <html><body><div id="foo"></div></body></html>
Run Code Online (Sandbox Code Playgroud)

这样做是否公平document.getElementById('foo').bar = "baz";,并期望document.getElementsByTagName('div')[0].bar相等"baz"

请注意,我在这里谈论的是属性,就像普通的javascript对象属性一样,而不是元素属性.

我对它是如何跨浏览器感兴趣,以及它是否支持任何规范.

DOM API是否保证每次都会为同一个DOM元素返回相同的javascript对象?

javascript dom

18
推荐指数
2
解决办法
5929
查看次数

knockout.js - 设置一个空的选择

我正在尝试使用knockout.js来填充和管理一个<select/>盒子.我希望初始值为空.

但是,我无法在任何时候强制将托管值强制为null,更不用说最初了.

例如,考虑这个小提琴:

HTML:

<select data-bind="options: myOptions, value: myValue"></select> aka
<span data-bind="text: myValue"></span>

<div>
    <button data-bind="click: setMyValue(null)">clear the selection</button>
    <button data-bind="click: setMyValue('one')">select "one"</button>
    <button data-bind="click: setMyValue('four')">select "four"</button>
</div>
<ul data-bind="foreach: log">
    <li>message: <span data-bind="text: message"></span></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

JS:

function Model() {
    var self = this;
    self.myOptions = ['one', 'two', 'three', 'four'];
    self.myValue = ko.observable();
    self.setMyValue = function (val) {
        return function(){
            this.log.push({
                message: "ok, trying to set value as " + val
            });
            self.myValue(val);
        };
    };
    self.log …
Run Code Online (Sandbox Code Playgroud)

javascript knockout.js

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

哈斯克尔:我是否误解了如何使用箭头?

我写了一些玩具代码来玩Arrows的概念.我想看看我是否可以编写一个编码有状态函数概念的箭头 - 在不同的调用之后给出不同的值.

{-# LANGUAGE Arrows#-}
module StatefulFunc where

import Control.Category
import Control.Arrow

newtype StatefulFunc a b = SF { unSF :: a -> (StatefulFunc a b, b) }

idSF :: StatefulFunc a a
idSF = SF $ \a -> (idSF, a)

dotSF :: StatefulFunc b c -> StatefulFunc a b -> StatefulFunc a c
dotSF f g = SF $ \a -> 
    let (g', b) = unSF g a
        (f', c) = unSF f b
    in (dotSF f' g', …
Run Code Online (Sandbox Code Playgroud)

haskell arrows

17
推荐指数
1
解决办法
2434
查看次数

Haskell统计列表类型

所以,为了好玩,我一直在使用Peano数字和智能构造函数在Haskell中使用CountedList类型.

类型安全head,tail对我来说真的很酷.

我想我已达到了解我该怎么做的极限

{-# LANGUAGE EmptyDataDecls #-}
module CountedList (
  Zero, Succ, CountedList,
  toList, ofList, 
  empty, cons, uncons, 
  head, tail, 
  fmap, map, foldl, foldr, filter
) where

import qualified List (foldr, foldl, filter)
import Prelude hiding (map, head, foldl, foldr, tail, filter)

data Zero
data Succ n
data CountedList n a = CL [a]

toList :: CountedList n a -> [a]
toList (CL as) = as

ofList :: [a] -> CountedList n a
ofList …
Run Code Online (Sandbox Code Playgroud)

haskell list existential-type

16
推荐指数
1
解决办法
489
查看次数

Haskell中的多变量函数

在阅读了关于在Haskell中编写多变量函数的这篇文章后,我试着写一些自己的函数.

起初我以为我会尝试概括它 - 所以我可以通过折叠参数给出一个返回可变参数函数的函数.

{-# OPTIONS -fglasgow-exts #-}
module Collapse where
class Collapse a r | r -> a where
  collapse :: (a -> a -> a) -> a -> r
instance Collapse a a where
  collapse _ = id
instance (Collapse a r) => Collapse a (a -> r) where
  collapse f a a' = collapse f (f a a')
Run Code Online (Sandbox Code Playgroud)

但是,编译器不喜欢这样:

Collapse.hs:5:9:
    Functional dependencies conflict between instance declarations:
      instance Collapse a a -- Defined at …
Run Code Online (Sandbox Code Playgroud)

polymorphism haskell polyvariadic

15
推荐指数
2
解决办法
1681
查看次数

如何学习Autotools的乐趣?

所以几年前我花了一些时间来讨价还价make,这得到了很大的回报.编写用于构建项目和自动执行任务的小makefile非常有趣且富有成效.

当然,缺点是我的makefile非常具体,特别是涉及平台和库位置时.

所以这就是人们告诉我"autotools to rescue!"的地方.当其他人这样做时,他们似乎肯定会做这个伎俩(我喜欢下载东西,跑步configure && make && sudo make install和观看它只是工作),但我无法绕过他们.

我看过一些configure.acMakefile.am文件,我只是不明白发生了什么.我不知道标识符的哪一部分是开发人员的选择,哪些部分对autotools有意义.我不确定我是否理解整个流程和重点Makefile.in.我想我只是打了一个从我习惯的系统(make)到达上面一层或两层的精神墙.

任何人都可以指向一个教程或书籍(最好不是一个过于干燥的),可以教我autotools的快乐吗?什么步骤,以及如何使用它们,我怎么能写我自己的configure.ac,并Makefile.am从头开始?告诉我如何有效并与他们玩得开心?

makefile autotools

15
推荐指数
2
解决办法
1103
查看次数

将[(K,[V])]转换为[(V,[K])时的内存故障]

我有一个279MB的文件,包含大约1000万个键/值对,大约有500,000个唯一键.它按键分组(每个键只需要写一次),因此给定键的所有值都在一起.

我想要做的是转换关联,创建一个文件,其中对按值分组,给定值的所有键都存储在一起.

目前,我正在使用Parsec作为元组列表读取对(K,[V])(使用惰性IO,因此我可以在Parsec处理输入文件时将其作为流处理),其中:

newtype K = K Text deriving (Show, Eq, Ord, Hashable)
newtype V = V Text deriving (Show, Eq, Ord, Hashable)

tupleParser :: Parser (K,[V])
tupleParser = ...

data ErrList e a = Cons a (ErrList e a) | End | Err e                

parseAllFromFile :: Parser a -> FilePath-> IO (ErrList ParseError a) 
parseAllFromFile parser inputFile = do                               
  contents <- readFile inputFile                                     
  let Right initialState = parse getParserState inputFile contents   
  return $ loop initialState                                         
  where loop …
Run Code Online (Sandbox Code Playgroud)

memory haskell parsec

15
推荐指数
1
解决办法
842
查看次数