向Actors发送消息时感叹号(!)和问号(?)之间有什么区别?
myActor ! Hello(value1)
myActor ? Hello(value1)
Run Code Online (Sandbox Code Playgroud) 对于Xcode 4(.3.2),哪些文件最好在git中忽略?这个较老的问题解决了同样的问题,但我发现我的结构不同,所以我认为它是关于Xcode的旧版本.
我如何获得字节长度NSString?如果myString包含"hallo",myString.length将返回5,但是取了多少实际字节?
我想使用Scala/Akka/Play创建一个简单的Websocket应用程序.
我从示例中看到的内容(例如网络聊天或Scala Days最近的演讲)是JavaScript/Coffeescript,html模板等的混合体.
我的Websocket应用程序的客户端也将是原生移动应用程序(Android,iOS),所以我需要考虑"浏览器外".
如何创建一个只能推送"hello"字符串的websocket应用程序?
场景:我使用OkHttp/Retrofit访问Web服务:同时发送多个HTTP请求.在某些时候,身份验证令牌到期,并且多个请求将获得401响应.
问题:在我的第一个实现中,我使用拦截器(这里简化),每个线程都尝试刷新令牌.这导致一团糟.
public class SignedRequestInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
// 1. sign this request
request = request.newBuilder()
.header(AUTH_HEADER_KEY, BEARER_HEADER_VALUE + token)
.build();
// 2. proceed with the request
Response response = chain.proceed(request);
// 3. check the response: have we got a 401?
if (response.code() == HttpURLConnection.HTTP_UNAUTHORIZED) {
// ... try to refresh the token
newToken = mAuthService.refreshAccessToken(..);
// sign the request with the new token and proceed …Run Code Online (Sandbox Code Playgroud) 在Android上,我最初实现了一个像这样的Retrofit界面:
@DELETE(USER_API_BASE_URL + "/{id}")
public void deleteUser(@Path("id") String id, Callback<User> callback);
Run Code Online (Sandbox Code Playgroud)
成功删除后,服务器返回204 NO CONTENT.这导致回调触发失败,retrofit.RetrofitError: End of input at character 0 of因为它期望一个User对象返回响应.
我然后用这样重写它,Void而不是User:
@DELETE(USER_API_BASE_URL + "/{id}")
public void deleteUser(@Path("id") String id, Callback<Void> callback); <-- VOID
Run Code Online (Sandbox Code Playgroud)
但是我从回调中得到了同样的错误.解决这个问题的正确方法是什么?谢谢.
我可以使用Retrofit + RxJava来聆听无尽的流吗?例如Twitter流.我有的是这个:
public interface MeetupAPI {
@GET("http://stream.meetup.com/2/rsvps/")
Observable<RSVP> getRSVPs();
}
MeetupAPI api = new Retrofit.Builder()
.baseUrl(MeetupAPI.RSVP_API)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(MeetupAPI.class);
api.getRSVPs()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(rsvp -> Log.d(TAG, "got rsvp"),
error -> Log.d(TAG, "error: " + error),
() -> Log.d(TAG, "onComplete"));
Run Code Online (Sandbox Code Playgroud)
但在解析第一个对象后调用"onComplete".有没有办法告诉Retrofit保持开放直到另行通知?
我正在尝试新的Android Studio for Mac,但似乎无法更改字体.我只能改变主题.由于某种原因,禁用了字体更改.

我不能wss://在我用Play!Framework 2.2创建的简单WebSocket应用程序中使用.它回复了消息.端点是这样的
def indexWS2 = WebSocket.using[String] {
request => {
println("got connection to indexWS2")
var channel: Option[Concurrent.Channel[String]] = None
val outEnumerator: Enumerator[String] = Concurrent.unicast(c => channel = Some(c))
// Log events to the console
val myIteratee: Iteratee[String, Unit] = Iteratee.foreach[String] {gotString => {
println("received: " + gotString)
// send string back
channel.foreach(_.push("echoing back \"" + gotString + "\""))
}}
(myIteratee, outEnumerator)
}
}
Run Code Online (Sandbox Code Playgroud)
并且路线被描述为
GET /ws2 controllers.Application.indexWS2
Run Code Online (Sandbox Code Playgroud)
我从这样的JS客户端创建连接
myWebSocket = new WebSocket("ws://localhost:9000/ws2");
Run Code Online (Sandbox Code Playgroud)
一切正常.但是,如果我改变ws://成wss://以使用TLS,它失败,我得到以下Netty的例外:
[error] …Run Code Online (Sandbox Code Playgroud) 我正在Android应用程序中设置Google Cloud Messaging.一开始,我初始化GoogleApiClient以检查Play服务是否可用:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
Run Code Online (Sandbox Code Playgroud)
试图运行它会产生IllegalArgumentException: must call addApi() to add at least one API,所以我还需要添加GCM Api,但说实话,我在文档中找不到它.就像是:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(gcm.API) <----- WHAT HERE?
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
Run Code Online (Sandbox Code Playgroud) android illegalargumentexception google-cloud-messaging google-play-services