小编bit*_*ops的帖子

如何在Clojure中避免"ArithmeticException整数溢出"?

它似乎一直都在发生.例如:

(apply * (range 1 101))
Run Code Online (Sandbox Code Playgroud)

给了我错误

ArithmeticException integer overflow  clojure.lang.Numbers.throwIntOverflow (Numbers.java:1374)
Run Code Online (Sandbox Code Playgroud)

而在Ruby 1.9.2中(概念上)等效代码,

(1..100).reduce(:*)
Run Code Online (Sandbox Code Playgroud)

产生预期的结果

93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
Run Code Online (Sandbox Code Playgroud)

显然,这两种语言在引擎盖下是完全不同的,但似乎它们都应该能够毫无问题地处理这种计算.我在这里做错了吗?或者我的理解不正确?

clojure

18
推荐指数
3
解决办法
5913
查看次数

为什么我不能从故事板上的表格单元格中删除标签?

我有一个带有TableViewController的基于Storyboard的应用程序.在特定单元格的内容视图中,我有一个文本字段和一个标签.我偶然添加了标签,现在我无法删除它.点击删除键不起作用,"删除"菜单项显示为灰色.

真正糟糕的是,Xcode抱怨这个标签.但是,当我尝试修复它的约束时,我的项目无法编译.我真的只想删除标签,因为我不需要它.

fwiw这是它的样子:

在此输入图像描述

我在Xcode 6.2中,我正在使用Swift进行开发.

xcode xcode-storyboard

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

如何编写这个Clojure函数,以便它不会爆炸堆栈?

我是Clojure的新手,我认为到目前为止我编写代码的方法与"Clojure方法"不符.至少,我一直在编写使用大值导致StackOverflow错误的函数.我已经学会了使用recur,这是向前迈出的一大步.但是,如何使像下面这样的函数为2500000这样的值工作?

(defn fib [i]
  (if (>= 2 i)
    1
    (+ (fib (dec i))
       (fib (- i 2)))))
Run Code Online (Sandbox Code Playgroud)

在我看来,这个函数是Fibonacci生成器的"普通"实现.我已经看到其他实现更加优化,但在他们的工作方面不那么明显.即,当你阅读函数定义时,你不会去"哦,斐波那契".

任何指针将不胜感激!

recursion clojure fibonacci

6
推荐指数
2
解决办法
334
查看次数

检查从Swift中的UILocalNotification启动

这是如何在Swift中检查launchOptions的后续问题 - 我的应用程序成功启动而没有崩溃,但我似乎无法正确检测应用程序何时从通知启动到正常启动.

我正在创建我的UILocalNotification:

// set up a frequently recurring notification here just for testing...
var fast = UILocalNotification()
fast.fireDate = NSDate(timeIntervalSinceNow: 15)
fast.alertBody = "Alert Message"
fast.timeZone = NSTimeZone.localTimeZone()
fast.repeatInterval = NSCalendarUnit.CalendarUnitMinute
fast.userInfo = ["Important":"Data"]
UIApplication.sharedApplication().scheduleLocalNotification(fast)
Run Code Online (Sandbox Code Playgroud)

这是我从UILocalNotification启动应用程序时尝试处理的代码.

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
    if var launch = launchOptions {
        if var key = launch.objectForKey(UIApplicationLaunchOptionsLocalNotificationKey) {
            // I never seem to reach this point...
        }
    }
    return true
}
Run Code Online (Sandbox Code Playgroud)

如果我的应用程序是后台运行的,我点击警告框,我想要触发的操作正确执行,所以我知道我至少可以使一条路径正常工作.这里的问题是完全从通知启动应用程序.

uilocalnotification swift

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

了解 Rails 中的 Race_condition_ttl

我试图race_condition_ttl在使用Rails.cache.fetch.

我有一个如下所示的控制器操作:

def foo
  @foo = Rails.cache.fetch("foo-testing", expires_in: 30.seconds, race_condition_ttl: 60.seconds) do
      Time.now.to_s
  end
  @foo # this gets used in a view down the line...
end
Run Code Online (Sandbox Code Playgroud)

根据我在 Rails 文档中阅读的内容,该值应在 30 秒后过期,但允许再提供 60 秒的陈旧值。但是,我无法弄清楚如何重现将显示此行为有效的条件。这是我尝试测试它的方式。

100.times.map do 
  t = Thread.new { RestClient.get("http://myenvironment/foo") }
  t 
end.map {|t| t.join.value }.uniq
Run Code Online (Sandbox Code Playgroud)

我的 Rails 应用程序在标准 nginx/unicorn 设置后面的 VM 上运行。我正在尝试同时生成 100 个线程来模拟“狗堆效应”。但是,当我运行我的测试代码时,所有线程都返回相同的值。我希望看到的是,一个线程获得了新值,而至少另一个线程获得了一些陈旧的内容。

欢迎任何指点!非常感谢。

ruby multithreading ruby-on-rails race-condition

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

有没有Emacs paredit挂钩,所以我可以重新定义Cj?

我喜欢使用C-jeval-last-sexp但paredit模式(我喜欢否则)覆盖这对paredit-newline.查看paredit-mode文档,我没有看到任何类似于paredit-mode-hook我可以add-hook调用的地方local-set-key或类似的功能.

有人有建议吗?

更新 在尝试了以下两个答案并且没有取得多大成功后,我认为这个问题可能与paredit在几个不同的环境中加载的事实有关?也就是说,我打开Common Lisp,Clojure和Emacs Lisp文件,所有这些文件都可以使用paredit.可悲的是,各种形式的eval-last-sexp每种模式都有不同的名称,因此我无法为所有内容定义一次密钥.相反,我需要根据我所处的主要模式绑定密钥.希望这增加了另一个有用的数据点.

emacs elisp

5
推荐指数
2
解决办法
719
查看次数

如何在Swift中检查launchOptions?

我在这里很难过 - 我正试图检测我的应用程序是否从LocalNotification启动.但是我所有的代码都被塞满了.

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
    var firstWay = launchOptions.objectForKey(UIApplicationLaunchOptionsLocalNotificationKey)
    var secondWay = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]
    return true
}
Run Code Online (Sandbox Code Playgroud)

这两个都失败了

"unexpectedly found nil while unwrapping an Optional value"
Run Code Online (Sandbox Code Playgroud)

我确信我在做一些非常基本的错误.有什么指针吗?

swift

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

UIView子视图没有接收到触摸

我试图理解为什么我的子视图没有接收到触摸.

下面是一个显示我遇到的行为的gif:当我点击右边的青色按钮时,没有任何反应(左边视图的背景应该改变颜色).当我单击左侧的绿色按钮时,它会正确接收触摸事件,附加的TouchDown操作将触发,并且视图的颜色会发生变化.

在此输入图像描述

这个"应用程序"显然不是一个真正的应用程序,只是为了说明我遇到的行为.我真正想要学习如何实现你在许多应用程序中看到的常见"滑出菜单"模式; 通常带有随附的汉堡包按钮.

在许多这些应用程序中,看起来主要的应用程序内容被移到一边显示菜单,"隐藏"在应用程序下面,就像它一样.我试图在这里复制相同的行为.

我在这里粘贴我的ViewController代码.您在下面看到的代码就是我拥有的一切.

import UIKit

class ViewController: UIViewController {

    var originalX : CGFloat!
    var originalY : CGFloat!

    var containerView = UIView()

    var button : UIButton!
    var button2 : UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        originalX      = self.view.frame.origin.x
        originalY      = self.view.frame.origin.y

        button = UIButton(frame: CGRectMake(200, 25, 100, 100))
        button.backgroundColor = UIColor.greenColor()
        button.addTarget(self, action: "foo", forControlEvents: .TouchDown)

        view.addSubview(button)

        containerView.frame = CGRectMake(self.view.frame.width, originalY, 150, self.view.frame.height)
        containerView.userInteractionEnabled = true
        containerView.backgroundColor = UIColor.magentaColor()
        containerView.clipsToBounds = false

        button2 = UIButton(frame: CGRectMake(25, 25, 100, …
Run Code Online (Sandbox Code Playgroud)

uiview ios swift

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

如何将自动模式列表中的对列表包含在内?

我有一长串文件和文件扩展名,我希望Emacs在ruby模式下自动打开.从使用谷歌,最基本的解决方案是:

(setq auto-mode-alist (cons '("\.rake$"    . ruby-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\.thor$"    . ruby-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("Gemfile$"   . ruby-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("Rakefile$"  . ruby-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("Crushfile$" . ruby-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("Capfile$"   . ruby-mode) auto-mode-alist))
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎是重复的.有没有办法我可以定义一次对的列表,并将其循环或直接收集到auto-mode-alist?我试过了

(cons '(("\\.rake" . ruby-mode)
         ("\\.thor" . ruby-mode)) auto-mode-alist)
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.有什么建议?

emacs elisp

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

如何通过密钥名称检索缺点单元格的值?

假设我有一个缺点列表,如下所示:

(setq foo '(("a" . 1) ("b" . 2) ("c" . 3)))
Run Code Online (Sandbox Code Playgroud)

我想通过"密钥名称"检索特定缺点单元格的值.有没有让我这样做的功能?

例如

(get-by-key "a" foo) ;; => 1
Run Code Online (Sandbox Code Playgroud)

或类似的东西.提前致谢!

emacs elisp

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

iOS请求后需要很长时间才能更新视图?

我是学习iOS和Swift的新手,所以这里可能有一些非常基本的东西,我不明白.我正在使用代理库在Swift中发送HTTP请求.现在,我正忙着创建请求并解析JSON响应.

我有一个非常简单的UI,带有一个按钮UILabel,我想用一些JSON的结果更新.

这是我的代码:

func updateWithJson() -> Void {
    let req = Agent.get("http://xkcd.com/info.0.json")
    req.end({ (response: NSHTTPURLResponse!, data: Agent.Data!, error: NSError!) -> Void in
        let json = data! as Dictionary<NSString, NSString>
        // this takes almost 30 seconds to propagate to the UI...
        self.updateMe.text = json["safe_title"]!
    })
}
Run Code Online (Sandbox Code Playgroud)

我不理解的部分self.updateMe.text = json["safe_title"]!是刚刚更新UILabel被调用文本的语句updateMe.这需要几乎整整30秒才能在UI中反映出来.

我知道HTTP请求本身非常快 - 如果我卷曲该URL它会立即回来.它似乎也是Agent对象正在建立连接并快速返回响应.

我错过了非常基本的东西吗?我应该以不同的方式更新UI吗?所有指针都很赞赏!

更新 通过另一个SO帖子,我的理解是内部的块req.end是后台线程,我需要在主线程上进行UI更新.我更新了我的功能,看起来像这样,我得到了理想的结果.但是,现在我想知道这样做有什么不对吗?

    func updateWithJson() -> Void {
        let req = Agent.get("http://xkcd.com/info.0.json")
        req.end({ (response: NSHTTPURLResponse!, …
Run Code Online (Sandbox Code Playgroud)

http ios swift

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