我正在使用Clojure应用程序从Web API访问数据.我将要发出大量请求,并且许多请求将导致更多请求被发送,因此我希望将请求URL保留在后续下载间隔60秒的队列中.
在这篇博文后,我把它放在一起:
(def queue-delay (* 1000 60)) ; one minute
(defn offer!
[q x]
(.offerLast q x)
q)
(defn take!
[q]
(.takeFirst q))
(def my-queue (java.util.concurrent.LinkedBlockingDeque.))
(defn- process-queue-item
[item]
(println ">> " item) ; this would be replaced by downloading `item`
(Thread/sleep queue-delay))
Run Code Online (Sandbox Code Playgroud)
如果我(future (process-queue-item (take! my-queue)))在我的代码中包含一个,然后在REPL我可以(offer! my-queue "something"),我看到">>某事"立即打印.到现在为止还挺好!但是我需要队列在我的程序活动的整个时间内持续.(future ...)我刚才提到的调用工作是将一个项目从队列中拉出来,一旦它可用,但是我想要一些能够持续观察队列的东西,并process-queue-item在有空的时候调用.
而且,与通常的Clojure对并发的热爱相反,我想确保一次只发出一个请求,并且我的程序等待60秒来完成每个后续请求.
我认为这个Stack Overflow问题是相关的,但我不确定如何调整它来做我想做的事情.如何连续轮询我的队列并确保一次只运行一个请求?
Zsh具有扩展球体的一个很好的功能.例如,击球Tab转ls **/*.js成
ls app/assets/javascripts/application.js vendor/assets/javascripts/Markdown.Converter.js
Run Code Online (Sandbox Code Playgroud)
有没有办法将其折叠回原始的glob版本?或者我应该禁用glob扩展?
我想要它的原因是,当我正在调试一个glob并且我Tab只是为了仔细检查一些东西时,没有办法找回并完成模式.我必须从头开始.
我从Haskell代码创建了一个DLL,我从C++调用这个DLL.当我在Visual Studio 2010中以调试模式运行它时,我的应用程序工作正常,但是当我进行发布版本并安装它时,我收到错误
无法在动态链接库SpectrumMath.dll中找到过程入口点LVSpecData_GetGlob.
SpectrumMath.dll是我的基于Haskell的DLL.奇怪的是函数LVSpecData_GetGlob不在那个DLL中 - 它在我链接的另一个DLL中,并且当我添加Haskell DLL时,没有关于该 DLL或我的应用程序对它的使用的改变.
此错误消息似乎表明Windows对哪些函数存在于哪些DLL中感到困惑.这可能会出错?
我试图在具有相同实例的两个端口上配置nginx,例如在端口80和端口81上,但到目前为止没有运气.这是我想要做的一个例子:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name chat.local.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_buffering off;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 81;
server_name console.local.com;
location / {
proxy_pass http://127.0.0.1:8888;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_buffering …Run Code Online (Sandbox Code Playgroud) 该min函数的经典预处理器版本看起来像
#define min(a, b) ((a) < (b) ? (a) : (b))
Run Code Online (Sandbox Code Playgroud)
这使你可以进行双重评估 - 你做的情况min(f(), g()),忘记f或g有副作用,你必须花费数小时试图找出你的功能运行两次的原因.为了防止这种情况,你可以做到
#define min(a, b) ({__typeof__(a) _a = (a); \
__typeof__(b) _b = (b); \
_a < _b ? _a : _b;})
Run Code Online (Sandbox Code Playgroud)
这在GCC下运行得很好,但是如果你通过-Wgnu套装运行它- 这套警告属于-pedantic你的保护范围内- 你得到的错误就像
test.c:5:10: error: use of GNU statement expression extension [-Werror,-Wgnu]
int a = min(3, 7);
^
test.c:1:22: note: expanded from macro 'min'
# define min(a, b) ({__typeof__(a) _a = (a); __typeof__(b) …Run Code Online (Sandbox Code Playgroud) 我正在编写一个旨在通过iOS下的主屏幕快捷方式使用的Web应用程序.我添加了元标记
<meta name="viewport" content="width=device-width,
initial-scale=1,
user-scalable=no"/>
Run Code Online (Sandbox Code Playgroud)
利用新的快速敲击行为.这在Safari中很有用,但是当我将应用程序添加到我的主屏幕并以这种方式使用它时,我得到了较旧的"慢速"行为.我尝试添加CSS
body {
touch-action: manipulation;
}
Run Code Online (Sandbox Code Playgroud)
但那也不起作用.
这种网络应用程序是否不支持新的快速点击行为?
我正在使用matplotlib在桌面应用程序中渲染图形,我对matplotlib对单位的支持感到有些困惑.我想让用户更改图表x轴上显示的单位:所有计算都将以纳米为单位进行,但图表可以以纳米或千兆赫为单位显示.(请注意,这两个单位之间存在反向关系,而非线性关系.)
有两种显而易见的方法:"手动"或使用matplotlib.在前一种情况下,matplotlib对单位一无所知; 当用户更改单位时,我只需重新计算所有数据点,更改轴的边界和标签,并告诉matplotlib重绘.但我希望matplotlib具有内置功能来做同样的事情.
有一些轻量级文档matplotlib.units,但据我所知,这是用于绘制用户指定对象的数组,而不是浮点数组.我的数据实际上是一个浮点数组,由于每个图表有数十万个数据点,我无法将每个值包装在某个自定义模型类中.(即使这个简单的例子将每个数据点包装在一个模型类中,整个例子都是如此通用,我无法告诉我如何根据我的需要调整它.)无论如何,原始数据点总是具有相同的单位,因此只需要将值转换为另一个单位.
我怎样才能告诉matplotlib我的单位然后只是用axes.set_xunit它们之间的东西来改变它们?
我有一个wx.Dialog子类,当用户单击OK按钮时需要执行几个清理操作.该的wx.Dialog文件称,点击确定或取消应该发射EVT_CLOSE事件:
EVT_CLOSE:用户或以编程方式关闭对话框(请参阅Window.Close).用户可以生成此事件,单击关闭按钮(通常是标题栏右上角的"X")(如果存在)(请参阅CLOSE_BOX样式)或单击带有ID_CANCEL或ID_OK ID的按钮.
但是,我正在使用WX 2.9.5.0(通过wxPython),当我在此测试应用程序中单击"确定"或"取消"时,不会调用OnClose方法.单击系统的关闭按钮(我正在使用OS X)时调用OnClose.我是否实现了此事件处理错误或者wx.Dialog是否真的不符合其文档?在后一种情况下,拦截单击"确定"按钮的最佳方法是什么?
from __future__ import print_function
import wx
class TestDialog(wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__(self, parent, title='Test Dialog')
sizer = wx.BoxSizer(wx.VERTICAL)
message = wx.StaticText(self, wx.NewId(), 'This is some dummy text')
sizer.Add(message)
ok_button = wx.Button(self, wx.ID_OK, 'OK')
cancel_button = wx.Button(self, wx.ID_CANCEL, 'Cancel')
btn_sizer = self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL)
btn_sizer.Add(cancel_button)
btn_sizer.Add(ok_button)
sizer.Add(btn_sizer)
self.SetSizer(sizer)
self.Bind(wx.EVT_CLOSE, self.OnClose)
def OnClose(self, event):
print('In OnClose')
event.Skip()
if __name__ == '__main__':
app = wx.App(False)
dialog = TestDialog(None)
result = dialog.ShowModal()
print('Result: {}'.format(result))
Run Code Online (Sandbox Code Playgroud) 我的应用程序包含几个这样的函数:
void SomeClass::set_data_provider(DataProvider *data_provider)
{
connect(data_provider, SIGNAL(data_available(int)),
this, SLOT(data_available(int)));
}
Run Code Online (Sandbox Code Playgroud)
为了避免传递原始指针,我已将所有出现的更改DataProvider *为QSharedPointer<DataProvider>.后者几乎是前者的直接替代,除了你不能传递QSharedPointer QObject::connect.我通过从QSharedPointer中提取原始指针来解决这个问题:
void SomeClass::set_data_provider(QSharedPointer<DataProvider> data_provider)
{
connect(data_provider.data(), SIGNAL(data_available(int)),
this, SLOT(data_available(int)));
}
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,但它看起来不优雅,我担心像这样访问原始指针.有没有更好的方法连接到在QSharedPointer中传递的对象?
如何检查a UIImage是否为空?
class UserData {
...
var photo: UIImage = UIImage()
}
Run Code Online (Sandbox Code Playgroud)
我的ViewController代码看起来像:
var userData = UserData()
...
func preparePhoto(){
if (self.userData.photo == nil) {
...
}else{
...
}
}
Run Code Online (Sandbox Code Playgroud)
self.userData.photo == nil 不适用于Swift.
Xcode说: UIImage is not convertible to MirrorDisposition