小编Tob*_*ede的帖子

与Raphael路径的SVG动画

我对SVG动画有一个相当有趣的问题.

我正在使用拉斐尔沿着圆形路径制作动画

obj = canvas.circle(x, y, size);
path = canvas.circlePath(x, y, radius);                
path = canvas.path(path); //generate path from path value string
obj.animateAlong(path, rate, false);
Run Code Online (Sandbox Code Playgroud)

circlePath方法是我自己创建的方法,用于生成SVG路径表示法中的圆路径:

Raphael.fn.circlePath = function(x , y, r) {      
  var s = "M" + x + "," + (y-r) + "A"+r+","+r+",0,1,1,"+(x-0.1)+","+(y-r)+" z";   
  return s; 
} 
Run Code Online (Sandbox Code Playgroud)

到目前为止,这么好 - 一切正常.我的对象(obj)沿圆形路径动画.

但:

仅当我在与路径本身相同的X,Y坐标处创建对象时,动画才有效.

如果我从任何其他坐标开始动画(例如,沿着路径的一半),对象在正确半径的圆圈中动画,但是它从对象X,Y坐标开始动画,而不是沿着路径开始动画,因为它以视觉方式显示.

理想情况下,我希望能够停止/启动动画 - 重启时会出现同样的问题.当我停止然后重新启动动画时,它会从停止的X,Y开始以圆圈为动画.

UPDATE

我创建了一个演示此问题的页面:http: //infinity.heroku.com/star_systems/48eff2552eeec9fe56cb9420a2e0fc9a1d3d73fb/demo

单击"开始"以开始动画.当您停止并重新开始动画时,它将从正确尺寸的圆圈中的当前圆形坐标继续.

javascript jquery svg raphael

10
推荐指数
1
解决办法
6985
查看次数

使用MongoDB有效地确定层次结构中记录的所有者

我想要实现以下目标:

选择我拥有的所有记录,其中所有权是我创建的对象或我管理的用户创建的对象,其中用户管理可以是管理用户的用户层次结构

所有权显然是直截了当的,可以通过与所有者对应的简单ID来处理.用户管理的层次结构让我有点难以在不通过大量ID列表的情况下执行(显然,您可以找到每个被管理的用户并使用IN子句或类似内容列出由这些用户创建的每个对象).

理想情况下,这一切都发生在单个查询中,因此可能发生正常的分页和条件.

我当时认为可能有一些数学要做到这一点 - 拥有可以某种方式进行哈希处理的ID,以确定它们是否归命令链中的任何人所有.

对这类事情的任何引用?

我错过了一些明显的东西吗

使用MongoDB如果有所作为,但很高兴考虑其他数据库的灵感.

更新: 创建了一个包含1,000,000条记录的MongoDB集合,以获得有关查询上IN子句的可管理数量参数的确切内容的一些可靠数据.当我得到一些具体信息时会报告.

分析:

使用ruby-mongo-driver和ruby基准lib.

MongoDB Collection包含1039944条记录

记录定义为:

{
    first_name: String,
    last_name: String,
    email: String,
    phone: String,
    company: String,
    owner: BSON::ObjectId
 }
Run Code Online (Sandbox Code Playgroud)

随机生成所有字段的值.

Owner字段有一个索引.

使用以下条件运行查询:

conditions = {"owner" => { "$in" => id_list }}
opts = {skip: rand, limit: 100}
Run Code Online (Sandbox Code Playgroud)

结果:

    # 10201 ids
    #              user     system      total        real
    # 0:       0.240000   0.000000   0.240000 (  0.265148)
    # 1:       0.240000   0.010000   0.250000 (  0.265757)
    # 2:       0.240000   0.000000   0.240000 (  0.267149)
    # …
Run Code Online (Sandbox Code Playgroud)

database database-design database-permissions mongodb

10
推荐指数
1
解决办法
5176
查看次数

Ruby Object#id警告和Active Record

当我们运行我们的规范时,我们会不断看到如下警告:

Object#id将被弃用; 使用Object#object_id

有问题的代码是访问ActiveRecord模型的id(显然,这是表中的属性,而不是Ruby VM中的对象实例ID).

有谁知道如何关闭这些特定的警告或以某种方式避免它们?

warnings rspec ruby-on-rails rails-activerecord

9
推荐指数
3
解决办法
4431
查看次数

disqus如何运作?

有谁知道disqus是如何工作的?

它管理博客上的评论,但评论都在第三方网站上进行.看起来像是整洁地使用跨站点通信.

javascript xss ajax

9
推荐指数
1
解决办法
4218
查看次数

使用Rack和Event Machine将WebSockets与Rails集成

我创建了一个Rails 3异步版本,我想与WebSocket实现集成.

我正在使用EventMachine,Ruby 1.9,Fibers和各种em-flavored库,这些都是由邪恶的Ilya Grigorik记录的.

我一直在将em-websocket视为WebSocket连接的处理程序,但不确定将其连接到Rails应用程序的最佳方法.

理想情况下,这将与具有Express和Socket.io的node.js类似地工作 - 应检测传入连接并将其分派到WebSocket处理程序或常规rails堆栈,如HTTP标头等所示.

TL; DR

  • 插入现有Rails应用程序的WebSocket处理程序
  • 透明地将传入的WebSocket请求分派给应用程序中的端点

rack asynchronous ruby-on-rails eventmachine websocket

8
推荐指数
2
解决办法
6566
查看次数

Erlang OTP应用程序设计

当我将一些代码转换为OTP应用程序时,我正在努力解决OTP开发模型.

我本质上是一个网络爬虫,我只是不知道在哪里放置实际工作的代码.

我有一个主管,开始我的工人:

-behaviour(supervisor).
-define(CHILD(I, Type), {I, {I, start_link, []}, permanent, 5000, Type, [I]}).

init(_Args) ->          
  Children = [
    ?CHILD(crawler, worker)
  ],  
  RestartStrategy = {one_for_one, 0, 1},
  {ok, {RestartStrategy, Children}}.
Run Code Online (Sandbox Code Playgroud)

在此设计中,Crawler Worker负责执行实际工作:

-behaviour(gen_server).

start_link() ->
  gen_server:start_link(?MODULE, [], []).

init([]) ->
  inets:start(),        
  httpc:set_options([{verbose_mode,true}]), 
  % gen_server:cast(?MODULE, crawl),
  % ok = do_crawl(),
  {ok, #state{}}.

do_crawl() ->
  % crawl!
  ok.

handle_cast(crawl}, State) -> 
  ok = do_crawl(),
  {noreply, State};
Run Code Online (Sandbox Code Playgroud)

do_crawl产生了大量的进程和请求,用于处理通过http进行爬网的工作.

问题,最终是:实际抓取应该在哪里发生?从上面可以看出,我一直在尝试不同的触发实际工作的方法,但仍然缺少一些对于整合事物的方式至关重要的概念.

注意:为简洁起见,省略了一些OTP管道 - 管道就在那里,系统全部挂在一起

architecture erlang erlang-otp

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

与Netty和NIO高度并发的HTTP

我正在使用示例Netty HTTP客户端代码,以便在并发的线程环境中发出http请求.

但是,我的系统在相当低的吞吐量下完全中断(有一些例外).

在几乎伪代码中:

ClientBootstrap bootstrap = new ClientBootstrap(new NioClientSocketChannelFactory()) 
bootstrap.setPipelineFactory(new HttpClientPipelineFactory());

ChannelFuture future = bootstrap.connect(new InetSocketAddress(host, port));
Channel channel = future.awaitUninterruptibly().getChannel();

HttpRequest request = new DefaultHttpRequest();
channel.write(request);
Run Code Online (Sandbox Code Playgroud)

在示例中,为了发出请求,我创建了一个ClientBootstrap,并从那里(通过一些箍)一个Channel来编写HTTPRequest.

这一切都有效,也很好.

但是,在同时发生的情况下,每个请求是否应该通过相同的环节?我认为这对我来说正在破坏的是什么.我应该以完全不同的方式重用连接或构建我的客户端吗?

另外:我在Clojure中这样做,如果这有任何区别的话.

java concurrency http clojure netty

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

Haskell Web框架中的当前技术水平是什么

我正在寻找对Haskell Web框架中当前最新技术的洞察力.

我认为对于一个好的框架是必要的:

  • 用于连接到http服务器的Web应用程序界面(如Rack)
  • 可链接的中间件(再次,像Rack或node.js Connect)
  • 惯用的哈斯克尔
  • 稳健的表现
  • 合理的文档或至少可读的开源代码

该框架不一定需要是一个完整的MVC堆栈,一个优雅的DSL用于路由和处理请求(想想Sinatra)绰绰有余.

我找到的一些选项:

我喜欢Haskell世界的经验深度,以便做出明智的决定,所以任何帮助都会受到赞赏.

model-view-controller frameworks haskell

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

jquery-ui sortable:使用多个sortables时拖后的元素

我有一系列嵌套的可排序元素,表现出z-index的一些奇怪行为.

基本上,在某些情况下,元素会被拖动到父容器中.它仅在父元素已排序后出现.

看起来后面的问题只是在列表中的元素上.所以我可以拖动到"更高"的可排序,但拖动到"更低"可排序,拖动元素突然落后.

细节:

给定可排序列表A A中的 每个元素依次包含连接可排序列表B(如在每个A中的B列表中都连接)

在对A中的元素进行排序之后,从此列表中的可排序对象拖动的元素现在位于其他A元素之后.

我通过CSS和Jquery玩各种z-index选项无济于事.

jquery jquery-ui event-handling jquery-ui-sortable

7
推荐指数
1
解决办法
3224
查看次数

rbenv不断产生流浪垫片

我正在使用rbenv和各种红宝石的最新流浪汉.

我正在使用不再使用宝石的最新流浪汉.当我执行vagrant命令时,我看到以下错误:

rbenv: vagrant: command not found
Run Code Online (Sandbox Code Playgroud)

我已经从所有红宝石环境中移除了旧的流浪宝石,但每次"cd"时,流浪的垫片都会被重新生成,这意味着流浪者停止工作直到我手动填充垫片:

rm /home/{user}/.rbenv/shims/vagrant   
Run Code Online (Sandbox Code Playgroud)

有没有办法强制rbenv停止这种行为?

rbenv插件正在使用":

  • 红宝石构建
  • rbenv,宝石

ruby vagrant rbenv

7
推荐指数
1
解决办法
1507
查看次数