我正在尝试使用声明一堆常量const。我的问题是,在Firebug控制台中测试代码会引发错误,抱怨“ const foo的重新声明”。
我尝试将其包装在一个 try{}catch(e){}块中,但这无济于事,即使尝试使用以下代码来解决它(张贴减去所有console.info()“调试”的调用以求清楚),它仍然会引发错误第二次运行时:
if(!chk_constsDeclaredYet) {
var chk_constsDeclaredYet = true;
const foo="bar";
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当const位于if(){}中时,当第二次运行代码时,为什么还要查看const foo?
注意:代码将在firebug javascript控制台中运行,而我想要实现的工作流程是:
萤火虫输出:
//FIRST RUN::
>>> console.group() console.info('--code start--'); ...console.info('--code end--'); console.groupEnd()
--code start--
chk_constsDeclaredYet = undefined
foo = undefined
--if()--
--if() running..--
--end if()--
chk_constsDeclaredYet = true
foo = bar
--code end--
//SECOND RUN::
>>> console.group() console.info('--code start--'); ...console.info('--code end--'); console.groupEnd()
TypeError: redeclaration of const foo { message="redeclaration of const foo", more...}
Run Code Online (Sandbox Code Playgroud) 我想将十进制数转换为二进制数.我想将它们存储在一个数组中.首先,我需要创建一个具有一定长度的数组,以便我可以存储二进制数.之后我执行转换,这是我如何做到的:
public class Aufg3 {
public static void main(String[] args) {
int[] test = decToBin(12, getBinArray(12));
for(int i = 0; i < test.length; i++){
System.out.println(test[i]);
}
}
public static int[] getBinArray(int number){
int res = number, length = 0;
while(res != 0){
res /= 2;
length++;
}
return new int[length];
}
public static int[] decToBin(int number, int[] array){
int res = number, k = array.length-1;
while(res != 0){
if(res%2 == 0){
array[k] = 0;
}else{
array[k] = 1;
}
k--; …Run Code Online (Sandbox Code Playgroud) 我有一个 C# 应用程序,它从服务器接收更新、处理它并更新 GUI。更新不断进来,每秒说几次。我希望应用程序最多每 2 秒更新一次 GUI。因此,如果更新在时间 T 到来,我希望从 T 到 T+2sec 的所有更新都保留在缓冲区中,并在 T+2sec 进行处理和 GUI 更新。我知道在 JS 中你可以使用 setTimeout() 在未来的某个时间执行一些代码,所以我想要这样的东西。
这样做的合适方法是什么?我听说使用线程来“调度”函数调用并不是一个好主意,但我不确定是否有更好的方法来做到这一点。使用一个间隔两秒的计时器,与 GUI 线程同步,进行处理/更新会不会很糟糕?
我有一个winforms应用程序,我一直在努力对消费者帐户进行多项测试.测试需要一次登录才能执行.
string paramaters = "authmethod=on&chkRememberMe=on&login-form-type=pwd&password=" + pw.Text + "&userid=" + uid.Text + "&username=" + uid.Text;
string strResponse;
HttpWebRequest requestLogin = (HttpWebRequest)WebRequest.Create("https://www.url.com/login.form");
requestLogin.Method = "POST";
requestLogin.CookieContainer = cookieJar;
requestLogin.ContentType = "application/x-www-form-urlencoded";
requestLogin.ContentLength = paramaters.Length;
StreamWriter stOut = new StreamWriter(requestLogin.GetRequestStream(), System.Text.Encoding.ASCII);
stOut.Write(paramaters);
stOut.Close();
StreamReader stIn = new StreamReader(requestLogin.GetResponse().GetResponseStream());
strResponse = stIn.ReadToEnd();
stIn.Close();
Run Code Online (Sandbox Code Playgroud)
这个脚本适用于登录就好了,问题是当我需要实际运行测试时我需要将所有结果都返回到一个字符串中(HTML结果).
private string runTestRequest(Uri url, string parameters)
{
string testResults = string.Empty;
HttpWebRequest runTest = (HttpWebRequest)WebRequest.Create(url);
runTest.CookieContainer = cookieJar;
runTest.Method = "POST";
runTest.ContentType = "application/x-www-form-urlencoded";
StreamWriter stOut = new StreamWriter(runTest.GetRequestStream(), …Run Code Online (Sandbox Code Playgroud) 根据Apple的MPMoviePlayerController doc:
MPMoviePlayerPlaybackDidFinishNotification - 如果电影播放器以全屏模式显示并且用户点击完成按钮,则不会发送此通知.
在我看来,这是错误的.使用下面的代码,当我点击完成按钮时,会调用playerPlaybackDidFinish.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerPlaybackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.player];
- (void) playerPlaybackDidFinish:(NSNotification*)notification
{
NSLog(@"WHY?");
self.player.fullscreen = NO;
}
Run Code Online (Sandbox Code Playgroud)
我需要区分用户点击完成按钮和电影完成整个播放.当电影结束时,playerPlaybackDidFinish会被调用,但就像我说的那样,当你点击Done时它也会被调用.
也许是一个愚蠢的问题,但我正试图让一个cronjob工作.虽然这可能是服务器故障的问题,但我认为它也是一个SO问题.
无论如何:我已经设置了一个cronjob,每小时,每天(数字),日期(名称)和月份执行1分钟.给定的命令是:/home/easybr01/domains/easybranding.nl/public_html/cronjobs/test.php
这只不过是一个带有simpe php函数的文件mail(to, subj, content, hdrs)来测试它是否有效...但是邮件永远不会进来..而且它们不在垃圾邮件文件夹中.
有人知道什么是错的吗?我认为这应该是非常直接的......
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html上的tomcat 6.0文档说:
仅当应用程序中不存在应用程序
$CATALINA_BASE/conf/[enginename]/[hostname]/文件/META-INF/context.xml内的单个文件中的上下文文件时.如果Web应用程序打包为WAR,/META-INF/context.xml则将复制并重$CATALINA_BASE/conf/[enginename]/[hostname]/命名以匹配应用程序的上下文路径.一旦此文件存在,如果/META-INF/context.xml在主机的appBase中放置了一个带有较新版本的新WAR,则不会替换它.
不过我注意到,如果你在webapp目录提出了新的战争的文件中,context.xml在META-INF目录取代context.xml的$CATALINA_BASE/conf/[enginename]/[hostname].
是否有任何配置可确保context.xml在$CATALINA_BASE/conf/[enginename]/[hostname]/部署新war文件时不会覆盖in .
编辑:我正在使用autodeploy ="true"从JoseK的评论中,我了解当tomcat看到新的war文件时,它会取消使用旧的应用程序(导致删除上下文文件)并部署新的war文件(导致创建新的战争文件).在这种情况下,tomcat文档中的上述信息不是相关的.新问题是否可能出现以上情况?
有哪些更好的方法可以避免isset()应用程序逻辑中的大量内容,并且在需要时保留查看调试消息(E_NOTICE)的能力?
首先推定:E_NOTICE不是错误,它是用词不当,实际上应该是E_DEBUG.然而,虽然这对于未设置的变量(PHP仍然是脚本语言)是正确的,但是一些文件系统函数等也会抛出它们.因此,需要开发 E_NOTICEs.
然而,并非所有调试通知都是有用的,这就是为什么在整个应用程序逻辑中引入isset()和@ 是一个常见的(不幸的)PHP习惯.isset/empty肯定有很多有效的用例,但总的来说它似乎是语法盐,实际上可能阻碍调试.
这就是我目前使用error_reporting书签和哑开/关开关的原因:
// javascript:(function(){document.cookie=(document.cookie.match(/error_reporting=1/)?'error_reporting=0':'error_reporting=1')})()
if (($_SERVER["REMOTE_ADDR"] == "127.0.0.1")
and $_COOKIE["error_reporting"])
{
error_reporting(E_ALL|E_STRICT);
}
else {/* less */}
Run Code Online (Sandbox Code Playgroud)
然而,这仍然让我有一个问题,即一旦启用就有太多通知来搜索.作为解决方法,我可以使用@ error suppress运算符.与isset()不同,它不会完全终止调试选项,因为自定义错误处理程序仍然可以接收抑制的E_NOTICE.因此,将预期的调试通知与潜在问题分开可能会有所帮助.
然而,这同样令人不满意.因此问题.有没有人使用或知道更复杂的PHP错误处理程序.我在想象:
当然,某些框架必须已经有这样的用户错误处理程序.
哦,我有人请帮助改写这个.冗长的解释失败了.
我想尽快重复执行一个子进程.但是,有时这个过程需要很长时间,所以我想杀掉它.我使用signal.signal(...)如下所示:
ppid=pipeexe.pid
signal.signal(signal.SIGALRM, stop_handler)
signal.alarm(1)
.....
def stop_handler(signal, frame):
print 'Stop test'+testdir+'for time out'
if(pipeexe.poll()==None and hasattr(signal, "SIGKILL")):
os.kill(ppid, signal.SIGKILL)
return False
Run Code Online (Sandbox Code Playgroud)
但有时这段代码会试图阻止下一轮执行.停止测试/ home/lu/workspace/152/treefit/test2for time out/bin/sh:/ home/lu/workspace/153/squib_driver:not found ---这是下一次执行; 该程序错误地阻止它.
有谁知道如何解决这个问题?我想及时停止不执行1秒钟.sleep(n)经常等待n秒.我不希望我希望它可以执行不到1秒
我正在使用money_format第一个参数'%n'包含美元符号,我将区域设置设置为en_US但它仍然不包括它.为什么?