在Android应用中集成Google Plus登录按钮时,我观察到按钮在实际设备和模拟器中的显示方式存在一些差异.我知道Google Plus服务APK没有安装在模拟器中,但可以通过从设备中提取APK并使用APK将其安装到模拟器中来解决这个问题.
我当前的"实现"只是在布局中包含登录按钮,通过引用具有以下XML代码的按钮:
<com.google.android.gms.common.SignInButton
android:id="@+id/sign_in_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
当我在设备上测试我的应用时,根据https://developers.google.com/+/mobile/android/sign-in中提到的指南,该按钮显示为红色且有光泽.但是当在模拟器上运行时,它只是一个普通按钮(带有黑色文本的灰色背景),上面写着"使用Google登录".
知道为什么结果不同吗?我已经确定我正在运行相同的API级别,并且资源似乎也在模拟器上正确拉入,因为它显示了实际的登录按钮(但具有不同的外观).
更新:在logcat中找到线索; 消息"未找到登录按钮,而是使用占位符".几乎可以解释为什么我在模拟器上看到灰色的暗淡按钮.还需要找出原因; 可能是"从设备复制谷歌加apk"hack无法正常工作.
我正在尝试使用mmap优化大型数据集的处理.数据集在千兆字节范围内.我们的想法是将整个文件映射到内存中,允许多个进程同时处理数据集(只读).但它没有按预期工作.
作为一个简单的测试,我简单地mmap文件(使用perl的Sys :: Mmap模块,使用"mmap"子,我相信它直接映射到底层的C函数)并让进程休眠.执行此操作时,代码在从mmap调用返回之前花费的时间超过一分钟,尽管此测试无效 - 甚至不读取 - 来自mmap的文件.
猜测,我虽然linux可能需要在第一个mmap时读取整个文件,所以在第一个进程中映射文件后(当它正在休眠时),我在另一个尝试读取的过程中调用了一个简单的测试文件的前几兆字节.
令人惊讶的是,似乎第二个进程在从mmap调用返回之前也花费了大量时间,与mmap第一次执行文件的时间大致相同.
我已确保正在使用MAP_SHARED,并且第一次映射文件的进程仍处于活动状态(它尚未终止,并且mmap尚未取消映射).
我期望一个mmapped文件允许我给多个工作进程有效随机访问大文件,但是如果每个mmap调用都需要先读取整个文件,那就更难了.我没有测试使用长时间运行的进程来查看第一次延迟后访问是否很快,但我希望使用MAP_SHARED,另一个单独的进程就足够了.
我的理论是mmap会或多或少地立即返回,并且linux会根据需要或多或少地加载块,但我看到的行为恰恰相反,表明它需要在每次调用mmap时读取整个文件.
知道我做错了什么,或者我是否完全误解了mmap应该如何工作?
(带序列化功能的更新代码 - 仍然重定向到/ failedRedirect)
我正在尝试使用护照包进行简单的用户名/密码验证,但失败了.在下面的示例中,我尝试验证身份验证的工作方式基本上始终返回有效的身份验证(无论传递的是什么),但由于某种原因,它失败并且护照重定向到失败的登录链接.
如果有人可以帮助我弄清楚如何让这个例子简单地验证任何东西,我应该能够从那里进行管理.
coffeescript中的代码是:
express = require "express"
passport = require "passport"
LocalStrategy = require("passport-local").Strategy
passport.use(new LocalStrategy( (username, password, done) ->
console.log "LocalStrategy invoked"
done(null, {id: 1, name: "Marius"})
))
passport.serializeUser (user, done) ->
done null, user
passport.deserializeUser (obj, done) ->
done null, obj
app = express.createServer()
app.configure ->
app.use express.bodyParser()
app.use express.static("./public")
app.use express.cookieParser("SOMESECRET")
app.use express.session
secret: "SOMESECRET"
cookie:
maxAge: 60000
app.use passport.initialize()
app.use passport.session()
app.set "view", "./srv/views"
app.set "view engine", "jade"
app.get "/login", (req, res) …
Run Code Online (Sandbox Code Playgroud) 要调试扩展程序,Chrome右键单击扩展程序图标(浏览器右上角)时,可以使用"检查弹出窗口"菜单选项.我相信最近删除了这些选项(可能使用最新的Chrome版本20,我正在使用).
通过右键单击扩展弹出窗口中的任何元素并选择"Inspect element",仍然可以激活调试控制台.然而,我遇到的问题是,每当我打开调试控制台时,在弹出窗口中输入表单元素都不起作用.尽管表单元素似乎具有焦点(它有一个闪烁的游标处于活动状态),但所有输入的输入都直接进入调试控制台.
更新:似乎焦点不是专门针对调试控制台,而是针对下面的任何窗口.这就像扩展窗口是一个"停留在顶部"窗口,没有捕获任何输入.
更新:2012-07-24:已更新至22.0.1215.0 (Official Build 147830) dev
,并且错误仍然存在.但是,Youtube全屏现在突然出现在我的双屏系统上!
更新2012-05-09:在Linux x64(Ubuntu 12.04)上从20.0.1123升级到20.0.1130.1 dev.问题仍然存在,并使调试扩展比需要更加困难.还确认了旧Chrome版本(20.0.1105.0)的行为.哦,也许这只是我......
更新2012-05-09 2:假设这是一个错误,请考虑在弹出窗口中添加一个后台页面,然后登录到该页面的控制台,直到修复bug.至少这让我现在的生活变得更轻松.
更新:2012-10-19:正如omri所写(并指向),Inspect Popup选项正在回归Chrome,这有望解决这个问题(最终).
有人可以确认/否认这种行为,和/或建议可能的解决方法吗?
默认情况下,Emacs中的scheme模式使用一个空格缩进格式化代码:
(string-append
"foo "
"bar "
"baz")
Run Code Online (Sandbox Code Playgroud)
我希望它至少有两个空格,即:
(string-append
"foo "
"bar "
"baz")
Run Code Online (Sandbox Code Playgroud)
对于Emacs中的大多数模式,这很容易改变,但我还没想出如何为方案做这件事.我也查看了scheme.el的源代码,虽然在那里有用于进行各种奇特对齐的逻辑,但我还没有找到一种简单的方法来自定义"标准缩进".
var buf bytes.Buffer
var outputBuffer [100]byte
b := []byte(`{"Name":"Wednesday","Age":6,"Parents":["Gomez","Morticia"],"test":{"prop1":1,"prop2":[1,2,3]}}`)
w := zlib.NewWriter(&buf)
r, _ := zlib.NewReader(&buf)
w.Write(b)
w.Flush()
r.Read(outputBuffer)//cannot use outputBuffer (type [100]byte) as type []byte in function argument
fmt.Println(outputBuffer)
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能做到这一点?谢谢
android ×1
arrays ×1
auto-indent ×1
coffeescript ×1
emacs ×1
express ×1
go ×1
google-play ×1
google-plus ×1
indentation ×1
javascript ×1
linux ×1
mmap ×1
node.js ×1
passport.js ×1
perl ×1
random ×1
scheme ×1
slice ×1