我想从一个看起来像这样的文件中读取行:
1 2.1
2 2.2
3 2.3
Run Code Online (Sandbox Code Playgroud)
每行都有一个简单的Int和Float
这就是我想出来的,阅读每一行:
readFoo :: String -> (Int, Float)
readFoo line = (read (splitOn " " line !! 0), read (splitOn " " line !! 1))
Run Code Online (Sandbox Code Playgroud)
或者我也做了一个数据类型,然后read
部分很简单.
data Foo = Foo Int Float deriving (Show, Read)
getM (Foo m p) = m
getP (Foo m p) = p
readFoo :: String -> Foo
readFoo line = read $ "Foo " ++ line :: Foo
Run Code Online (Sandbox Code Playgroud)
但是必须有一种更简单的方法来做到这一点,对吧?
如何在Apache Camel表达式语言中将Apache Camel Exchange上的属性转换为大写?
例如
.when(simple("${property.countryCode.toUpperCase} regex 'NO?'"))
Run Code Online (Sandbox Code Playgroud)
但我得到:
org.apache.camel.language.bean.RuntimeBeanExpressionException:
Failed to invoke method: .toUpperCase on null
Run Code Online (Sandbox Code Playgroud)
我已经证实我的财产确实存在.log("${property.countryCode}")
.
这应该不是那么难,以获得toUpperCase
Apache Simple(但它是).
我不想toUpperCase
用Java,Groovy或其他任何东西 - 必须有一个更简单的方法
我想确定是否使用
PrintWriter pw = new PrintWriter(outputFilename, "ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)
要么
PrintWriter pw = new PrintWriter(outputFilename, "US-ASCII");
Run Code Online (Sandbox Code Playgroud)
我正在阅读所有有关字符集的内容,以确定我必须通过java代码以相同编码创建的示例文件的字符集.
当我的示例文件包含"欧洲"字母(挪威语:åøæ)时,以下命令告诉我文件编码为"iso-8859-1"
file -bi example.txt
Run Code Online (Sandbox Code Playgroud)
但是,当我获取同一个示例文件的副本并修改它以包含不同的数据时,没有任何挪威文本(假设我将"Bjørn"替换为"Bjorn"),那么相同的命令告诉我文件编码是" US-ASCII".
file -bi example-no-european-letters.txt
Run Code Online (Sandbox Code Playgroud)
这是什么意思?如果没有"欧洲"字符,ISO-8859-1在实践中是否与US-ASCII相同?
我应该只使用charset"ISO-8559-1",一切都会好吗?
我们正在使用mattermost
作为内部托管的替代品slack
。
我怎样才能写到mattermost的频道,例如通过脚本,使用curl
?
我需要知道:
curl
命令格式我的脚本的一个例子slack
:
SLACK_URL='https://hooks.slack.com/services/my-long-integration-key'
message='Project XYZ was released successfully.'
curl -X POST -H "Content-Type: application/json" \
--data "{ \"channel\": \"#releases\", \"username\": \"$me\", \"text\": \"$MESSAGE\" }" \
$SLACK_URL &> /dev/null
Run Code Online (Sandbox Code Playgroud)
确实有一个Mattermost API(相当于slack-api
),但我正在努力寻找一个很好的例子来说明我想要做什么。
谢谢
请考虑我的食谱末尾的这段代码deploy_to_tomcat
:
unless Chef::Config[:solo]
chat_message "Deployed #{artifact_name} `#{Time.new.strftime("%Y-%m-%d %H:%M")}`"
end
Run Code Online (Sandbox Code Playgroud)
它发布一条消息进行聊天:部署了 my-web-app 2016-11-03 12:31
但是,我注意到时间戳有点Time.new
过时 - 它似乎是编译配方时的时间戳,而不是几分钟后资源覆盖并运行时的时间戳。
所以我尝试了这个,但它不起作用(timeNow 仍然是undefined
发布消息聊天时的时间)
timeNow = "undefined"
ruby_block "set-time-now" do
block do
timeNow = Time.new.strftime("%Y-%m-%d %H:%M:%S")
end
end
unless Chef::Config[:solo]
chat_message "Deployed #{artifact_name} `#{timeNow}`"
end
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法让我的时间戳反映实际时间(而不是食谱开始时)?
看来Fuse ESB已被Red Hat收购,现在将作为JBoss Fuse提供。
假定它们本质上是相同的技术,加上或减去一些改进,是否正确?
我看到这两者都是开源的,并且基于相同的技术堆栈构建,因此我希望这只是名称更改,而不会对现有项目产生任何重大影响。
我正在使用IntelliJ,希望获得正则表达式的帮助,以获取如下结果:
patient.setIdentificationDate(new Date()); -> {IdentificationDate} and {new Date()}
patient.setIdentificationNumber(153698); -> {IdentificationNumber} and {153698}
patient.setIdentificationSeries("33 02"); -> {IdentificationSeries} and {"33 02"}
Run Code Online (Sandbox Code Playgroud)
ps非常感谢
我正在编写一个程序,为每一小时的每一分钟生成一整天的时间戳.我使用Calendar类来获取时间戳,我必须使用它,所以没有必要建议其他方法.
我创建文件的想法是使用for循环24小时和嵌套for循环60分钟,其中时间戳将打印到.dat文件.我认为这会起作用,会打印一整天的数据然后停止.
但是我错了,完全错了!
结果是从现在起2年后每隔一分钟打印一次数据.
到目前为止,这是我的代码;
public static void main (String [] args) throws FileNotFoundException
{
try
{
DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
Date date = new Date();
File fileName = new File(df.format(date) + ".dat");
RandomAccessFile raf = new RandomAccessFile(fileName, "rw");
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.add(Calendar.MILLISECOND, -cal.get(Calendar.MILLISECOND));
cal.add(Calendar.SECOND, -cal.get(Calendar.SECOND));
cal.add(Calendar.MINUTE, -cal.get(Calendar.MINUTE));
cal.add(Calendar.HOUR_OF_DAY, -cal.get(Calendar.HOUR_OF_DAY));
for(int hourInMinutes = 0; hourInMinutes < 1440; hourInMinutes++) //1440 is the total minutes in a day
{
for(int minute = 0; minute <= hourInMinutes; minute++)
{
raf.writeLong(cal.getTimeInMillis()); //Timestamp …
Run Code Online (Sandbox Code Playgroud) 我写了一个webhook来集成到chat(slack/mattermost api)中.
启动和运行的最简单方法是一个快速的PHP脚本,如下所示:
<?php
$token = $_POST["token"];
$arg = $_POST["text"];
$output = exec("./webhook_script.sh {$token} {$arg}");
Run Code Online (Sandbox Code Playgroud)
目前,脚本工作正常,但我担心有人可以恶意地执行http POST,其中查询参数text
(脚本:) $arg
具有某种注入攻击.
例: http://myserver/webhook.php?token=abc&text=123;rm -rf *
因此$arg
变得123; rm -rf
和exec
命令执行恶意rm -rf *
这与我熟悉的"sql注入"本质上类似,但我不确定如何使bash脚本安全...
是以某种方式引用参数,或者使用a regex
来检查脚本参数是一件简单的事情吗?
java ×3
apache-camel ×1
ascii ×1
bash ×1
calendar ×1
chatops ×1
chef-infra ×1
convergence ×1
curl ×1
date ×1
datetime ×1
fuseesb ×1
haskell ×1
http-post ×1
iso-8859-1 ×1
jbossfuse ×1
mattermost ×1
php ×1
regex ×1
ruby ×1
simple-el ×1
slack ×1
slack-api ×1
webhooks ×1