我是Ruby和Sinatra的新手,我正在尝试用它设置一个简单的HTML5 Server-Sent事件,下面的代码在Chrome开发人员版本中运行良好,但在Windows 7和OSX上的Non Developer Builds和Safari都失败了.
浏览器控制台中的错误消息是"无法加载资源:已取消"
var source = new EventSource('pull');
source.addEventListener('message', function(e) {
console.log(e.data);
}, false);
source.addEventListener('open', function(e) {
// Conn open
}, false);
source.addEventListener('error', function(e) {
if (e.eventPhase == EventSource.CLOSED) {
// Connection was closed.
}
}, false);
Run Code Online (Sandbox Code Playgroud)
以下Sinatra路线
get '/pull' do
content_type 'text/event-stream'
newevent = false
response = "data: "+newevent.inspect+" \n\n"
end
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用JSP和Tomcat的类似服务器端代码,它在所有浏览器上都能正常工作.
关于Sinatra,我需要了解什么?谢谢!
我有一个多步文件下载过程,我想在R中做.我有中间步骤,但不是第一个和第三个......
# STEP 1 Recursively find all the files at an ftp site
# ftp://prism.oregonstate.edu//pub/prism/pacisl/grids
all_paths <- #### a recursive listing of the ftp path contents??? ####
# STEP 2 Choose all the ones whose filename starts with "hi"
all_files <- sapply(sapply(strsplit(all_paths, "/"), rev), "[", 1)
hawaii_log <- substr(all_files, 1, 2) == "hi"
hi_paths <- all_paths[hawaii_log]
hi_files <- all_files[hawaii_log]
# STEP 3 Download & extract from gz format into a single directory
mapply(download.file, url = hi_paths, destfile = hi_files)
## …Run Code Online (Sandbox Code Playgroud) 我在共享首选项中创建列表,当调用onPreferenceChanged()方法时,我想提取列表中项目的索引或某些情况下的整数值.我正在尝试构建xml数据,如下所示:
在数组中:
<string-array name="BackgroundChoices">
<item>Dark Background</item>
<item>Light Background</item>
</string-array>
<array name="BackgroundValues">
<item>1</item>
<item>0</item>
</array>
<string-array name="SpeedChoices">
<item>Slow</item>
<item>Medium</item>
<item>Fast</item>
</string-array>
<array name="SpeedValues">
<item>1</item>
<item>4</item>
<item>16</item>
</array>
Run Code Online (Sandbox Code Playgroud)
在首选项xml文件中:
<PreferenceScreen android:key="Settings"
xmlns:android="http://schemas.android.com/apk/res/android"
android:title="Settings">
<ListPreference
android:key="keyBackground"
android:entries="@array/BackgroundChoices"
android:summary="Select a light or dark background."
android:title="Light or Dark Background"
android:positiveButtonText="Okay"
android:entryValues="@array/BackgroundValues"/>
<ListPreference
android:key="keySpeed"
android:entries="@array/SpeedChoices"
android:summary="Select animation speed."
android:title="Speed" android:entryValues="@array/SpeedValues"/>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
所以我的xml不起作用.我知道如何使用字符串数组而不是数组来表示值.我可以提取值字符串并从中得到我想要的但我宁愿(如果可能的话)能够得到值为int,booleans或enums的列表.这样做的习惯方法是什么?
提前致谢,
松鸦
我已经把我的Snow Leopard机器上的Ruby搞砸了.我设法介绍了各种各样的问题,我很难清理.
让我回到Ruby的第一步的步骤是什么?我对编程很新,所以我需要它为我拼写!
减少和减少可以让您在序列中累积状态.序列中的每个元素将修改累积状态,直到达到序列结束.
在无限列表中调用reduce或reduce的含义是什么?
(def c (cycle [0]))
(reduce + c)
Run Code Online (Sandbox Code Playgroud)
这将很快抛出OutOfMemoryError.顺便说一句,(reduce + (cycle [0]))不会抛出OutOfMemoryError(至少不是我等待的时间).它永远不会回来.不知道为什么.
有没有办法以一种有意义的方式调用无限列表中的减少或减少?我在上面的例子中看到的问题是,最终列表的评估部分变得足够大以溢出堆.也许无限列表不是正确的范例.减少生成器,IO流或事件流会更有意义.在评估并用于修改状态后,不应保留该值.
在半开连接的情况下,服务器崩溃(没有FIN或RESET发送到客户端),并且客户端尝试在此断开的连接上发送一些数据,每个TCP段将取消确认.TCP将在一些超时后尝试重新传输数据包.在放弃之前TCP会尝试重新传输多少次以及在这种情况下会发生什么?它如何通知操作系统主机无法访问?这在TCP RFC中指定了哪里?
在MVC3中有没有办法设置Json函数输出的属性?
即.我的模型上的属性有一个属性,告诉Json函数不输出它们.
当用户不提供命令行参数时,我希望Hello World打印使用信息而不是错误跟踪.
":";exec clj -m `basename $0 .clj` ${1+"$@"}
":";exit
(ns hello
(:gen-class))
(defn -main
[greetee]
(println (str "Hello " greetee "!")))
$ ./hello.clj Fred
Hello Fred!
$ ./hello.clj
Exception in thread "main" clojure.lang.ArityException: Wrong number of args (0) passed to: hello$-main
at clojure.lang.AFn.throwArity(AFn.java:439)
at clojure.lang.AFn.invoke(AFn.java:35)
at clojure.lang.Var.invoke(Var.java:397)
at clojure.lang.AFn.applyToHelper(AFn.java:159)
at clojure.lang.Var.applyTo(Var.java:518)
at clojure.core$apply.invoke(core.clj:600)
at clojure.main$main_opt.invoke(main.clj:323)
at clojure.lang.FnLoaderThunk.invoke(FnLoaderThunk.java:36)
at clojure.main$main.doInvoke(main.clj:426)
at clojure.lang.RestFn.invoke(RestFn.java:422)
at clojure.lang.FnLoaderThunk.invoke(FnLoaderThunk.java:36)
at clojure.lang.Var.invoke(Var.java:405)
at clojure.lang.AFn.applyToHelper(AFn.java:165)
at clojure.lang.Var.applyTo(Var.java:518)
at clojure.main.main(main.java:37)
Run Code Online (Sandbox Code Playgroud) 我不知道为什么在下一个时间点调用向量中对象的破坏.
class Something
{
public:
Something() {}
~Something() { cout << "destruction called" << endl; }
};
int main()
{
std::vector<Something> vec;
Something sth1 = Something();
Something sth2 = Something();
vec.push_back(sth1);
vec.push_back(sth2);
vec.clear();
}
Run Code Online (Sandbox Code Playgroud)
在我按下sth2后,调用sth1的破坏.为什么?不应该保留在vec [0]中吗?
我正在尝试使用rvm升级ruby.在实用网站上,它说:
重要的是将以下行添加到shell的初始化文件(.bash_profile)的末尾:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
我该怎么做呢?这个初始化文件在哪里?请帮忙