我正在整合iOS 3.1 Facebook SDK.当我使用Facebook功能登录时,我会打电话FBSession openActiveSessionWithReadPermissions:allowLoginUI:completionHandler:.在模拟器上调用时(我没有在本地设置FB帐户)我可以成功登录.
但是,从具有本机Facebook帐户设置的设备调用openActiveSessionWithReadPermissions...完成处理程序中返回的会话类型时sessionStateClosedLoginFailed,无论我是允许还是禁止我的应用程序在警告对话框中使用Facebook.调用方法之前的会话状态是sessionStateCreated.
这是NSError来自完成处理程序:
Error Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed. (com.facebook.sdk error 2.)" UserInfo=0x20a80820 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:ErrorLoginFailedReason, com.facebook.sdk:ErrorInnerErrorKey=Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (No value.) UserInfo=0x208ed930 {NSDebugDescription=No value.}}
我做错了什么会导致这个问题?
更新:我刚刚注意到我的应用程序没有出现在设置> Facebook>"允许这些应用程序使用您的帐户"部分.(它肯定在今天早些时候).
Update2:如果我从iOS设置应用程序中删除我的帐户,然后将我的测试用户登录到Facebook iPhone应用程序,我可以通过快速应用程序切换登录.所以它似乎只是本机帐户的问题.
Update3:我运行样本Facebook应用程序Scrumptious我有同样的问题.单击"登录",调用openActiveSessionWithRead...我得到相同的错误.
Update4:可能与这个bug有关?http://developers.facebook.com/bugs/450137751688028?browse=search_50a43a39b37ae4868318658
Update5:我之前应该提到这一点,但它是一个Facebook测试用户帐户,有这个问题.
我正在使用运行我的Rails应用程序的服务器来运行查询.尽管使用find_each,服务器的内存被我的控制台会话吃掉了,我不知道为什么.基于这个SO答案,我还ActiveRecord::Base.uncached用来阻止ActiveRecord缓存所有对象并占用内存.
编辑:想出来,感谢@ user2864740和Micah Fivecoate.问题在于将任务发送到Resque,我正在使用Resque Delayable gem(请参阅下面的答案).
这是我正在做的事情:
ssh cron.ec2.company-name.com
cd /var/www/company-name.com/current; bundle exec rails console production
Run Code Online (Sandbox Code Playgroud)
然后,在控制台中:
ActiveRecord::Base.uncached do
ModelObject.find_each do |obj|
a = AnotherModelObject.find_by_model_id(obj.id)
a ||= AnotherModelObject.create!(obj.id)
a.send_task_to_resque
end
end
Run Code Online (Sandbox Code Playgroud)
一旦我终止了我的SSH会话,内存就被释放了.
我在Linux上使用ruby 1.9.3p327运行Rails 3.2.15.
我收到了通过SSH会话发回给我的所有SQL查询的文本 - 也许这是保存在内存中的东西?接下来我可能会尝试conf.echo = false和ActiveRecord::Base.logger.level = 1.编辑:这没有修复内存使用情况
我将Cabal从Haskell平台附带的1.16版本升级到1.18,但几乎每个命令都会立即死掉Bus error: 10:
$ cabal install aeson
Bus error: 10
$ cabal sandbox init
Bus error: 10
$ cabal list
Bus error: 10
Run Code Online (Sandbox Code Playgroud)
(cabal help虽然仍然有效)
操作系统版本:OS X Mavericks 10.9.1
Cabal版本:
$ cabal --version
cabal-install version 1.18.0.2
using version 1.18.1.2 of the Cabal library
Run Code Online (Sandbox Code Playgroud)
GHC版本:
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.6.3
Run Code Online (Sandbox Code Playgroud) 我正试图ByteString从HandlerYesod的函数中返回一个:
getHomeR :: Handler ByteString
getHomeR = return "foo"
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
/Users/maximiliantagher/Documents/Mercury/hs/mercury-web-backend/src/Application.hs:48:1: error:
• No instance for (ToTypedContent ByteString)
arising from a use of ‘yesodRunner’
• In the expression:
yesodRunner getHomeR env1404_axwe (Just HomeR) req1404_axwf
In a case alternative:
"GET"
-> yesodRunner getHomeR env1404_axwe (Just HomeR) req1404_axwf
In the expression:
case Network.Wai.Internal.requestMethod req1404_axwf of {
"GET"
-> yesodRunner getHomeR env1404_axwe (Just HomeR) req1404_axwf
_ -> yesodRunner
(void badMethod) env1404_axwe (Just HomeR) req1404_axwf }
Run Code Online (Sandbox Code Playgroud)
为什么会这样,为什么不ByteString有一个ToTypedContent …
使用cabal test,您可以使用流式传输结果cabal test --show-details=streaming.
我无法找到类似的选项cabal new-test.是否可以使用流式传输结果new-test?
在Objective-C中,我知道您可以将选择器从一个实例转发到另一个:
- (id)forwardingTargetForSelector:(SEL)aSelector;
Run Code Online (Sandbox Code Playgroud)
如何将类方法转发到另一个类?resolveClassMethod:似乎不合适,因为我不想向类动态添加方法,只需转发调用即可。
编辑:到目前为止,我最好的是创建一个实例,将其选择器转发到类对象,如下所示:
- (id)forwardingTargetForSelector:(SEL)aSelector
{
return NSClassFromString(@"TheClass");
}
Run Code Online (Sandbox Code Playgroud)
它有点丑陋,因为代理对象必须接受实例方法,所以代理必须为要代理的类方法声明实例方法。
我公司开发了一个广告SDK,用于调解其他广告网络.在运行时,它通过使用检查其他广告网络是否存在NSClassFromString,并在它们存在时发送这些类消息.
这适用于Objective-C对象,但如何在运行时加载字符串常量?在这种情况下,我想检查只能通过字符串常量(extern NSString* VungleSDKVersion;)获得的SDK版本
我有一个表transaction_metadata,其中一行带有主键:ac98435e-3eb3-11e9-8a32-4713408df551,它显示在 SELECT 语句中。
在事务中,删除它(DELETE FROM transaction_metadata WHERE id = 'ac98435e-3eb3-11e9-8a32-4713408df551')表示删除 0 行。稍后在事务中,删除该transaction_metadata行引用的行由于破坏外键约束而失败。
怎么会这样?为什么DELETE当它存在于 中时会说它删除了 0 行SELECT,并且外键约束说它存在?
我正在Rails中创建一个ActiveRecord对象,该对象希望具有只读属性。我最初尝试使用,attr_readonly但是很沮丧地发现它:
我想要这两个功能;这是我尝试的实现:
# For use with ActiveRecord
module ReadOnlyAttributes
class ReadOnlyAttributeException < StandardError
end
def create_or_update # Private, but its what every method gets funneled through.
if !self.new_record? && self.respond_to?(:read_only_attributes)
changed_symbols = self.changed.map(&:to_sym)
if changed_symbols.intersect?(self.read_only_attributes)
raise ReadOnlyAttributeException, "Readonly attributes modified on #{self.class}: #{changed_symbols & self.read_only_attributes}"
end
end
super
end
end
Run Code Online (Sandbox Code Playgroud)
然后在我的模型中:
class Model < ActiveRecord::Base
include ReadOnlyAttributes
def read_only_attributes
[:event_type]
end
end
Run Code Online (Sandbox Code Playgroud)
是否有内置或更好的方法来获取满足上述要求的只读属性?
我还是Ruby / Rails的新手,所以我也希望能收到任何风格上的评论。
我公司使用aUIWebView来展示广告。我遇到的问题是初始化 aUIWebView似乎很昂贵;使用 Time Profiler 进行分析显示[UIWebView alloc] initWithFrame:CGRectMake(0,0,500,500)]进行需要 31-40 毫秒。这足以在以 60 FPS 运行的游戏中导致明显的掉帧。
有没有办法解决这个缓慢的初始化时间?我目前的想法是UIWebView在应用程序启动时(但在游戏开始之前)创建一个,然后重用它(可能创建一个它们的池来重用,比如如何UITableViewCell工作)或尝试看看是否WKWebView有更好的性能。
haskell ×3
ios ×3
objective-c ×3
cabal ×2
ruby ×2
activerecord ×1
bytestring ×1
cabal-new ×1
foreign-keys ×1
forwarding ×1
memory ×1
module ×1
performance ×1
postgresql ×1
proxy ×1
ssh ×1
triggers ×1
uiwebview ×1
yesod ×1