我的Java应用程序需要每天向所有用户发送一次电子邮件.我想在大约凌晨2点根据每个用户的当地时间提供.因此,纽约的用户将在2AM America/New_York时间收到消息.洛杉矶的用户将在2AM America/Los_Angeles时间收到消息.我的邮件流程每天都会运行一次.
我计划使用HTML5地理位置功能或IP地址定位来在注册期间自动确定每个用户的时区.当然,如果这些值不正确,用户可以手动修改时区.我打算将选定的时区存储在User对象中作为时区ID字符串,例如"America/New_York".这将作为字符串持久保存到数据库,但如有必要,可以更改.
需要考虑的事项:
我正在使用Spring Scheduling cron功能(通过Quartz)在当天每小时2分钟运行一个方法.现在我的大多数用户都在America/Los_Angeles,所以我手动强制所有邮件都在太平洋时间凌晨2:02发送.以下方法每小时运行一次:02小时,但它会手动检查时间,并且仅在洛杉矶当前时间为2:00小时时才会进行.这意味着其他地方的用户将在凌晨2点以外的时间收到电子邮件.
@Scheduled(cron="0 2 * * * *")
public void sendDailyReportEmail() {
DateTime now = new DateTime(DateTimeZone.forID("America/Los_Angeles"));
if (now.getHourOfDay() != 2) {
log.info("Not 2AM pacific, so skipping email reports");
return;
}
// send email reports
}
Run Code Online (Sandbox Code Playgroud)
因此,我需要的是执行一个数据库查询,该查询将根据用户对象中的时区为我提供在凌晨2:00时有本地时间的所有用户.有关如何实现这一点的任何想法?
我已经阅读了pidfile函数系列的手册页.但我真的不明白.什么是正确的用法?有没有更精细的例子?我想我明白了pidfile_open.但是,当我打电话要pidfile_write和prdfile_close?从哪个过程?父母还是孩子?我必须将哪些参数传递给这些函数?我猜想我缺少一些*nix基础知识.
更新:
下面你看到man pidfile的例子.为什么他们两次叉?为什么pidfile_close?当我调用pidfile_close时,我可以启动另一个守护进程.这不是不受欢迎的吗?
struct pidfh *pfh;
pid_t otherpid, childpid;
pfh = pidfile_open("/var/run/daemon.pid", 0600, &otherpid);
if (pfh == NULL) {
if (errno == EEXIST) {
errx(EXIT_FAILURE, "Daemon already running, pid: %jd.",
(intmax_t)otherpid);
}
/* If we cannot create pidfile from other reasons, only warn. */
warn("Cannot open or create pidfile");
}
if (daemon(0, 0) == -1) {
warn("Cannot daemonize");
pidfile_remove(pfh);
exit(EXIT_FAILURE);
}
pidfile_write(pfh);
for (;;) {
/* Do work. */
childpid = fork();
switch …Run Code Online (Sandbox Code Playgroud) 当我编辑多个文件时,我经常想在最后编辑的文件之间来回切换.我知道:bn(ext)和:bp(revious)在缓冲区之间切换,但它们不保留上次使用的文件的历史记录.相反,他们使用文件打开的顺序.例如,如果我按此顺序打开文件
A, B, C
Run Code Online (Sandbox Code Playgroud)
我的导航历史记录将是
A, B, C, B
Run Code Online (Sandbox Code Playgroud)
然后:在最后一个缓冲区(B)中的bprevious会将我发送给A.是否有一个命令或插件会将我发送给C?我知道Ctrl-6,但这只在最后两个缓冲区之间切换.我想来回多个缓冲区.
l = [{'name': 'abc', 'marks': 50}, {'name': 'abc', 'marks': 50}]
Run Code Online (Sandbox Code Playgroud)
我想统一字典结果.
result = [{'name': 'abc', 'marks': 50}]
Run Code Online (Sandbox Code Playgroud) 是否存在类似于Esper(Java和.NET)的Python替代方案来处理复杂事件处理(CEP)?
我有以下R函数,它检查一系列值并写出一个关于它们的句子.问题是,当我使用该函数然后调用它时,无论Value如何,所有句子都是相同的.
hover <- function (){
if(df$Value > 140 && df$Change < -0.05){
hovertext ="Price High, Level of Activity Low"
}else{
if(df$Value < 140 && df$Change > 90 && df$YVoltage > -0.05 &&
df$YVoltage < 0.30 ){
hovertext ="Price Normal, Level of Activity normal"
} else {
hovertext ="Price High, Level of Activity high"
}
}
}
hovertext <- hover ()
hovertext
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题的任何想法.
以下是示例数据:
TimeStamp,Price,Change
12:00:00,140,0.05
12:12:03,148,0.06
12:12:40,130,-0.05
12:12:50,135,0.01
12:13:00,135,0
12:13:10,1.37,0.01
Run Code Online (Sandbox Code Playgroud)
这就是我目前所拥有的:
library (ggplot2)
df <- read.csv(file.choose(), header =TRUE)
df
df$Price …Run Code Online (Sandbox Code Playgroud) 警告:非静态方法Zend_Controller_Request_Http :: getCookie()不应该静态调用..
我尝试以下方法来获取Cookie值:
$cookieData = Zend_Controller_Request_Http::getCookie($key, $default);
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?
我在appstore上有一个应用程序.
我上传了一个新版本并发布了.但是,在那之后我意识到我的应用程序中存在一个重要的错误.由于审批过程需要很长时间,我想降级到以前的版本,直到Apple批准修复版本.
那有什么办法吗?
谢谢
来自rails 2,我的大多数控制器都有这些线:
verify :method => :post, :only => :create, :render => {:text => '405 HTTP POST required', :status => 405}, :add_headers => {'Allow' => 'POST'}
verify :method => :put, :only => :update, :render => {:text => '405 HTTP PUT required', :status => 405}, :add_headers => {'Allow' => 'PUT'}
verify :method => :delete, :only => :destroy, :render => {:text => '405 HTTP DELETE required', :status => 405}, :add_headers => {'Allow' => 'DELETE'}
Run Code Online (Sandbox Code Playgroud)
迁移到Rails 3后,我收到了弃用警告,告诉我这些已被删除.我知道我可以获得一些插件或其他任何仍然使用它们,但我的问题是我真的需要了吗?rails 3默认是否强制执行基本方法?看起来它应该如果它没有,我总是感到恼火,不得不一遍又一遍地写这些线...
这个问题遵循关于C声明的另一个问题.阅读这个问题的答案,我读到了螺旋规则,我也理解了"声明遵循用法"的含义.
好到目前为止.但后来我读到了这个宣言:
char *(*(*a[N])())();
Run Code Online (Sandbox Code Playgroud)
我想知道如何用"声明跟随用法""规则"来解析它.特别是对于阵列部分.
我读到的是:
(*(*a[N])())
Run Code Online (Sandbox Code Playgroud)
是一个()返回a 的函数char *,然后解除引用以下内容
(*a[N])() // 1
Run Code Online (Sandbox Code Playgroud)
这是'函数返回char*',所以1是'返回函数的指针char *'然后我会说'何时(*a[N])被调用,它是[先前的声明]'.此时我们有(*a[N])一个返回指向返回函数的指针的函数char *.
但后来我不知道如何应用这个规则来区分"指向数组的指针"和"指针数组".
有人可以澄清一下吗?
其他问题:这些声明中的"优先级"规则是什么,&(在C++中)*,和[]?[也许"优先"不是正确的术语]
为了检查我是否正确理解了'螺旋规则',我也在下面解析这个表达式; 请告诉我,如果我错了.
+-----------+
| +------+ |
| | +-+ | |
| | ^ | | |
char* (*(* a[N])())();
^ ^ ^ ^ ^ ^
| | | | | |
| | +---+ …Run Code Online (Sandbox Code Playgroud)