我一直在研究使用Haskell Warp构建的像素服务器,并且一直在努力研究如何在守护模式下运行它.
Warp工作得很好 - 我可以使用runNetwork.Wai.Handler.Warp来提供HTTP,runTLS来自Network.Wai.Handler.WarpTLS来提供HTTPS,我可以通过生成一个新线程来运行它们:
startBoth :: Config -> IO ()
startBoth config = do
_ <- forkIO $ startHTTPS config
startHTTP config
Run Code Online (Sandbox Code Playgroud)
我的问题是弄清楚如何使用MissingH(System.Daemon)中的detachDaemon让我的服务器分离并在Ubuntu的后台运行.
在我的Main.h中我尝试添加这样的detachDaemon动作:
main :: IO ()
main =
detachDaemon >> cmdArgs options >>= getConfig . optionsConfig >>= start
Run Code Online (Sandbox Code Playgroud)
但程序然后只是默默地退出而没有错误,并且在我运行时没有任何显示ps -ef | grep snowhuskyd.
我应该如何使用detachDaemon- 甚至可以使用Warp?我找不到detachDaemon在网上使用的任何一个例子- 任何帮助都会感激不尽!
想象一下,我有一个numpy数组,我需要找到条件为True的跨度/范围.例如,我有以下数组,其中我试图找到项大于1的跨度:
[0, 0, 0, 2, 2, 0, 2, 2, 2, 0]
Run Code Online (Sandbox Code Playgroud)
我需要找到索引(开始,停止):
(3, 5)
(6, 9)
Run Code Online (Sandbox Code Playgroud)
我能够实现的最快的事情是制作一个布尔数组:
truth = data > threshold
Run Code Online (Sandbox Code Playgroud)
然后使用numpy.argmin和循环遍历数组并numpy.argmax查找开始和结束位置.
pos = 0
truth = container[RATIO,:] > threshold
while pos < len(truth):
start = numpy.argmax(truth[pos:]) + pos + offset
end = numpy.argmin(truth[start:]) + start + offset
if not truth[start]:#nothing more
break
if start == end:#goes to the end
end = len(truth)
pos = end
Run Code Online (Sandbox Code Playgroud)
但是对于数组中的数十亿个位置来说这已经太慢了,而且我发现的跨度通常只是连续几个位置.有谁知道找到这些跨度的更快的方法?
假设这个YAML(保存在一个名为的文件中users.yml):
- id: 1
name: Unknown user
reputation: 0
- id: 2
name: Foo bar
reputation: 4
Run Code Online (Sandbox Code Playgroud)
而这个Haskell data类型:
data MyUser = MyUser {id :: Int,
name :: String,
reputation :: Int}
deriving (Show)
Run Code Online (Sandbox Code Playgroud)
我想使用yaml库将YAML读成a [MyUser].我怎样才能做到这一点?
使用以下命令运行此Haskell程序时runghc:
import Network.HTTP
main = simpleHTTP (getRequest "https://stackoverflow.com")
>>= getResponseBody >>= putStrLn
Run Code Online (Sandbox Code Playgroud)
我收到错误消息
printso.hs: user error (https not supported)
Run Code Online (Sandbox Code Playgroud)
我不想切换到未加密的HTTP - 我如何使用Network.HTTPSSL/TLS?
我想以PDU模式发送短信.我检查了我的调制解调器的规格,它支持PDU模式.
我开发了PDU编码器和解码器,但现在我不知道如何将数据发送到我的调制解调器.我试过这些AT命令:
AT
AT+CMGF=0
Run Code Online (Sandbox Code Playgroud)
发送这些命令后,我发送了这样的PDU数据:
AT+CMGW="16079189390500410011000C918939050000000000AA02E834"
Run Code Online (Sandbox Code Playgroud)
我已使用此在线工具检查了此PDU的正确性:
http://www.twit88.com/home/utility/sms-pdu-encode-decode
但通过AT命令发送后,调制解调器挂起.
这是发送SMS PDU的正确方法吗?我在Google上搜索过,无法找到有用的信息.
我试图在Python中实现Luhn公式,这是我的代码:
import sys
def luhn_check(number):
if number.isdigit():
last_digit = int(str(number)[-1])
reverse_sequence = list(int(d) for d in str(int(number[-2::-1])))
for i in range(0, len(reverse_sequence), 2):
reverse_sequence[i] *= 2
for i in range(len(reverse_sequence)):
if reverse_sequence[i] > 9:
reverse_sequence[i] -= 9
sum_of_digits = 0
for i in range(len(reverse_sequence)):
sum_of_digits += reverse_sequence[i]
result = divmod(sum_of_digits, 10)
if result == last_digit:
print("[VALID] %s" % number)
else:
print("[INVALID] %s" % number)
quit()
print("[ERROR] \" %s \" is not a valid sequence." % number)
quit()
def …Run Code Online (Sandbox Code Playgroud) 我正在使用maven来构建我的jar(Intellij IDEA IDE).它是使用Apache Camel构建的应用程序.我的pom.xml的摘录:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>MainDriver</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我能够从maven中检索一个jar文件但是在运行后我得到的是NoClassDeFFound错误.
最后,我尝试使用one-jar插件(http://one-jar.sourceforge.net/).而且我已经开始工作了.我的问题是,如果不使用一个罐子,我可以实现相同的目标吗?我不喜欢一个罐子的包装,它的作用是当你从一个罐子中提取罐子时,你会发现你的app罐子,所以你需要在你的罐子上做一个额外的提取来获得到您的课程/资源.我的配置文件在资源上,有时我需要修改它.
谢谢!
我在嵌入式系统中听说过,我们应该使用一些预先分配的固定大小的内存块(比如好友内存系统?).有人能给我一个详细的解释原因吗?谢谢,
embedded memory-management dynamic-memory-allocation static-memory-allocation
我用JUNG构建了图形,但我不确定如何将鼠标动作监听器添加到图形的顶点.
下面是我认为与问题最相关的代码示例部分.
layout = new FRLayout2<GraphNode, GraphEdge>(graph);
visualizationViewer = new VisualizationViewer<GraphNode, GraphEdge>(layout, new Dimension(1000, 700));
visualizationViewer.getModel().getRelaxer().setSleepTime(500);
visualizationViewer.setGraphMouse(new DefaultModalGraphMouse<GraphNode, String>());
visualizationViewer.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.AUTO);
visualizationViewer.setForeground(Color.black);
Run Code Online (Sandbox Code Playgroud)
特别是,我想检测图形顶点的单击和双击并对它们进行操作.
注意:我看过几个旧的SO链接,但没有一个答案似乎对我有所帮助.如果有人可以给我伪代码或指向正确的方向,那将非常有帮助.
在Haskell中,takeWhile允许从一个(可能是无限的)列表中获取条目,直到某个条件不成立.
但是,此条件不能取决于列表的先前条目.
take在我遇到本例中概述的第一个副本之前,如何从(可能是无限的)列表中输入条目?
*Main> takeUntilDuplicate [1,2,3,4,5,1,2,3,4]
[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)