我的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时有本地时间的所有用户.有关如何实现这一点的任何想法?
我想在页面中显示我当前运行的Web应用程序版本.该项目基于Maven,Spring和Wicket.
我想以某种方式获取maven的值${project.version}并在我的spring XML文件中使用它,类似于我使用Spring PropertyPlaceholderConfigurer读取属性文件以获取我在我的应用程序中使用的设置的方式.
如果我project.version在我的Spring配置中将maven 作为变量提供,我可以这样做:
<bean id="applicationBean" class="com.mysite.web.WicketApplication">
<property name="version"><value>${project.version}</value></property>
</bean>
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在使用html5boilerplate和Modernizr库.我的应用程序是使用jQuery构建的.Modernizr和jQuery都内置了特征检测,但我的理解是Modernizr更完整.我打算使用Modernizr进行特征检测,除非有充分的理由为此使用jQuery.
我的应用程序仅适用于更现代的浏览器(例如IE7 +,Firefox,Chrome,Safari和更新的Opera),但它在IE6中仍然有效.我想确保用户在使用旧版浏览器(如IE6)时会看到一个很大的警告.如果他们还没有使用Chrome浏览器或其他HTML5兼容浏览器,我还想显示"建议".
我不想使用用户代理测试.
我无法确定GitHub的API是否提供对用户评论的访问权限.我希望能够通过RESTful API 获取有关提交的注释以及每行注释.我还希望能够通过API添加评论和内嵌评论.
我在API中遗漏了什么,或者这是不可能的?
我想转换包含空格和符号的文件名,只包含字符AZ,az,句点,连字符和下划线.像这样的正则表达式:([a-z][A-Z]-_\.)+
当然,我可以用正则表达式做到这一点.但是因为我已经在我的项目中包含了许多库(Spring,Hibernate,Apache Commons等等),所以我想知道这样的东西是否已经可用.
所以像这样的字符串:
This>is some(string,with $invalid*-chars).jpg
Run Code Online (Sandbox Code Playgroud)
将转换为:
This_is_some_string_with__invalid_-chars_.jpg
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种有效的方法来坚持一周的日子.换句话说,用户将从工作日列表中选择任意天数.具体日期无关紧要,只是一周中的某一天.我需要将这一天存储在一个休眠实体中.
我可以存储其中一个:
Set<DayOfWeek>
Set<Integer>
Run Code Online (Sandbox Code Playgroud)
但我认为它可能比这更简单.如果我只使用单个int来存储数据并使用按位运算,该怎么办?例如:
Sun = 1
Mon = 2
Tue = 4
Wed = 8
Thu = 16
Fri = 32
Sat = 64
Run Code Online (Sandbox Code Playgroud)
因此,为了表示太阳,周一,周三,周六的集合,我将保持整数75.这是因为1 + 2 + 8 + 64 = 75.
我担心的是对这样的字段执行查询.我能找到所有选择了Wed的实体吗?
这看起来像是一个好方法吗?有没有人有更好的主意?
谢谢!
我正在尝试使用以下签名创建一个函数:
function weightedRandom (target, probability) {
// calculate weighted random number that is more likely to be near target value
return value; // number from 0 to 1
}
Run Code Online (Sandbox Code Playgroud)
它应该做到以下几点:
例如,weightedRandom(0.8, 0.2)会导致20%的随机值可能聚集在值0.8附近,但可能是从0到1的任何数字.如果概率为0.5,那么返回的结果随机值将会更多接近0.8.我想可能还需要另一个参数来定义簇的宽度(标准偏差?).
我不是数学家,但我被告知要将Beta发行版作为一种可能的工具来帮助:

我发现了一些具有beta功能的NPM模块,但我不知道如何使用它们来解决这个问题:
当表格单元格悬停在表格单元格的右上角时,会出现一个小的放大镜图标.将鼠标放在放大镜图标上并单击它将打开一个对话框窗口,以显示有关该特定表格单元格中项目的详细信息.我想为数百个表格单元重用相同的图标,而不是每次都重新创建它.
有一个<span>绝对定位和隐藏的单一.当_previewable表格单元格悬停时,<span>会移动到正确的位置并显示.这<span>也在DOM中移动为_previewable表格单元格的子节点.这使得附加到其<span>上的单击处理程序能够找到_previewable父项,并从其用于填充对话框内容的jquery data()对象中获取信息.
这是我的HTML的一个非常简化的版本:
<body>
<span id="options">
<a class="ui-state-default ui-corner-all">
<span class="ui-icon ui-icon-search"></span>
Preview
</a>
</span>
<table>
<tr>
<td class="_previewable">
<img scr="user_1.png"/>
<span>Bob Smith</span>
</td>
</tr>
</table>
</body>
Run Code Online (Sandbox Code Playgroud)
这个CSS:
#options {
position: absolute;
display: none;
}
Run Code Online (Sandbox Code Playgroud)
有了这个jQuery代码:
var $options = $('#options');
$options.click(function() {
$item = $(this).parents("._previewable");
// Show popup based on data in $item.data("id");
Layout.renderPopup($item.data("id"),$item.data("popup"));
});
$('._previewable').live('mouseover mouseout',function(event) {
if (event.type == 'mouseover') { …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Javascript RegEx命令将这些输入转换为以下输出:
INPUT DESIRED OUTPUT
mydomain.com --> mydomain.com
foo.mydomain.com --> mydomain.com
dev.mydomain.com --> dev.mydomain.com
dev-foo.mydomain.com --> dev.mydomain.com
Run Code Online (Sandbox Code Playgroud)
这是规则:
我的正则表达能力让我失望.这是我到目前为止:
'mydomain.com'.replace(/^(dev)?(-.*)?(mydomain.com)/,'$1.$3');
// .mydomain.com
'foo.mydomain.com'.replace(/^(dev)?(-.*)?(mydomain.com)/,'$1.$3');
// foo.mydomain.com
'dev-foo.mydomain.com'.replace(/^(dev)?(-.*)?(mydomain.com)/,'$1.$3');
// dev.mydomain.com
'dev.mydomain.com'.replace(/^(dev)?(-.*)?(mydomain.com)/,'$1.$3');
// dev.mydomain.com
Run Code Online (Sandbox Code Playgroud)
前两个失败,后两个失败.有什么建议?
这里的javascript有效,但我希望将它组合成一个正则表达式替换命令.请注意,我还想保留在dmain末尾指定的任何端口.
var getHost = function () {
var host = window.location.host;
if (host.substring(0,3) === 'dev') {
return host.replace(/^(dev)?(-.*)?(mydomain\.com.*)/,'$1.$3');
}
else {
return 'mydomain.com';
}
}
Run Code Online (Sandbox Code Playgroud)