我们正在制作一个应用程序,其主要目的是显示数据,但我们希望以丰富的方式这样做.我们的设计包括几个定制控件.
例如,一个控件将是用户可以旋转以选择一天中的时间的轮子.你会看到一个完整的圆圈 - 一个磁盘 - 它的时间值就像中心的辐条一样.它需要围绕中心旋转.所以 - 它不像苹果的选择器.它需要很好地制作动画.
您建议使用哪个库/框架?石英?OpenGL的?是否有人们使用的第三方框架使这种事情变得更简单?
所以,我浪费了很多时间来创建这个非常酷的键盘宏应用程序.它工作得很好,唯一的问题是,几分钟后,它就会停止工作.当我按下一个键时,它就不再被调用了.
我无法锁定它,但它总是需要至少30秒才能发生.通常不会发生几分钟.那时我会拦截并发出许多事件.应用程序在发生时仍在运行.
这是我正在做的事情的一个例子
-(void)listen {
CFMachPortRef downEventTap = CGEventTapCreate(kCGHIDEventTap,kCGHeadInsertEventTap,kCGEventTapOptionDefault,CGEventMaskBit(kCGEventKeyDown),&onKeyDown,self);
downSourceRef = CFMachPortCreateRunLoopSource(NULL, downEventTap, 0);
CFRelease(downEventTap);
CFRunLoopAddSource(CFRunLoopGetCurrent(), downSourceRef, kCFRunLoopDefaultMode);
CFRelease(downSourceRef)
}
Run Code Online (Sandbox Code Playgroud)
和处理程序 -
CGEventRef onKeyDown(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon) {
NSLog(@"DOWN (%i)", CGEventGetIntegerValueField(event, kCGKeyboardEventKeycode));
// When it matches, I return CGEventCreate(NULL) to stop the event
return event;
}
Run Code Online (Sandbox Code Playgroud)
另请注意,当我拦截一个事件(并返回该事件CGEventCreate(NULL)
)时,我通常会使用以下代码发出一个或多个我自己的按键.请注意,KeyCmd等只是常规常量的快捷方式.
- (void)sendKey:(KeyCode)code cmd:(BOOL)cmd alt:(BOOL)alt ctl:(BOOL)ctl shift:(BOOL)shift {
CGEventFlags flags = 0;
if (cmd) flags = flags | KeyCmd;
if (alt) flags = flags | KeyAlt;
if (ctl) …
Run Code Online (Sandbox Code Playgroud) 所以,我的想法是,我将使用以下代码在haskell中运行MongoDB查询
Haskell MongoDB驱动程序简介:https://github.com/TonyGen/mongoDB-haskell/blob/master/doc/Example.hs
pipe < - runIOE $ connect $ host"127.0.0.1"let run action = access pipe master"testdb"action run $ delete $ select []"mycollection"
我想把它变成这个,这样我就可以假装run函数是一个"db",就像普通的mongo驱动程序一样.
db <- connectDb "127.0.0.1" "testdb"
db $ delete $ select [] "mycollection"
Run Code Online (Sandbox Code Playgroud)
这是我写的功能:
mdb :: (MonadIO m) => String -> String -> IO (Action m a -> m (Either Failure a))
mdb hostname dbname = do
pipe <- runIOE $ connect $ host hostname
return (access pipe master (pack …
Run Code Online (Sandbox Code Playgroud) 这是我第一次玩Monad变形金刚.这是一个简单的快乐堆栈应用程序.
{-# LANGUAGE OverloadedStrings #-}
import Happstack.Lite
import qualified Data.ByteString.Lazy.Char8 as L
main :: IO ()
main = do
serve Nothing hello
hello :: ServerPart Response
hello = do
ok $ toResponse ("Hello" :: L.ByteString)
Run Code Online (Sandbox Code Playgroud)
我希望能够更改你好,以便它可以使用读取一些全局配置数据ReaderT
.让我们说配置是一个字符串,以保持简单
type NewMonad = ReaderT L.ByteString (ServerPartT IO)
runNewMonad :: NewMonad a -> L.ByteString -> ServerPart a
runNewMonad k c = runReaderT k c
Run Code Online (Sandbox Code Playgroud)
如何更改问候语以便它可以使用ask
?我不确定那种类型.NewMonad Response
是不对的,因为ok
返回一个ServerPart Response
.
如何更改主要以便serve
有效?它期望一个ServerPart Response
.
我正在制作电视指南.有关使用Canvas的示例实现,请参见http://i.tv/guide.
我需要制作很多代表每个节目的小盒子.我需要能够在垂直(通道)和水平(时间)上滚动它们.为了使用Canvas,我的理解是实现滚动的唯一方法是拦截正确的事件,并使用新的偏移量平滑地重绘画布每秒多次.
如果我要使用div,我可以在它上面滚动滚动条并让它正常滚动.我可以将它们定位一次,让滚动移动它们,而不是重新计算它们的新偏移量.
我应该选择哪种项目?如果我使用divs会太慢吗?一些阵容有500个频道.我想一次显示最多4个小时.
谢谢!
我制作了一个自定义组合器:MultipartUpload
但是当我使用它时,它最终不仅应用我使用它的路线,而且还应用于所有后续路线:
例如,在以下API中,MultipartUpload
在第二个和第三个路径上运行.因此,如果我调用第3个,它将返回错误File upload required
.我只希望它适用于第二个.怎么样?
type ModelAPI =
"models" :>
( ProjectKey :> Get '[JSON] [Model]
:<|> ProjectKey :> MultipartUpload :> Post '[JSON] Model
:<|> ProjectKey :> Capture "modelId" ID :> Get '[JSON] Model
)
Run Code Online (Sandbox Code Playgroud)
这是如何MultipartUpload
定义的.
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeSynonymInstances #-}
module Servant.Multipart
( MultipartUpload
, FileInfo(..)
) where
import …
Run Code Online (Sandbox Code Playgroud) 我想在 SVG 中制作这个图形。我可以使用<animate>
标签,并且可以使用 javascript 操作 SVG 文档。如果可能的话,我更愿意在 SVG 中完成这一切。
haskell ×3
html ×2
javascript ×2
canvas ×1
cgeventtap ×1
cocoa ×1
cocoa-touch ×1
html5 ×1
iphone ×1
macos ×1
macos-carbon ×1
mongodb ×1
objective-c ×1
opengl ×1
rest ×1
servant ×1
svg ×1
svg-animate ×1