小编goa*_*oat的帖子

打开命令提示符窗口并更改当前工作目录

我非常擅长在Windows上编写脚本.使用Windows 7 64.

我正在尝试创建一个我可以双击的.bat文件,并让它打开命令提示符并自动将cd我转到某个目录.

我尝试用.bat文件制作

@ECHO OFF
cmd "cd C:\my\destination"
Run Code Online (Sandbox Code Playgroud)

这打开了看起来像命令提示符,但似乎没有让我输入任何命令.

然后我尝试了:

@ECHO OFF
start cmd "cd C:\my\destination"
Run Code Online (Sandbox Code Playgroud)

但这只是让我进入一个循环开放吨和大量的提示,直到我的计算机崩溃:) .bat文件位于目标目录,如果这很重要.

windows command-line batch-file

38
推荐指数
3
解决办法
9万
查看次数

jQuery:强制执行document.ready()调用的执行顺序

我正在开发一个包含多个代码块的代码库,在document.ready()(jQuery)上设置一些行为.有没有办法强制在任何其他块之前调用一个特定的块?

背景:我需要在自动化测试环境中检测JS错误,因此我需要在任何其他JS代码执行之前开始记录JS错误的代码.

jquery document-ready order-of-execution

30
推荐指数
3
解决办法
2万
查看次数

html datalist元素自动建议行为

我注意到,当您将文本字段连接到数据列表时,不同的浏览器在建议文本字段的值时会有不同的行为.有些浏览器显示的条目您键入的内容(IE,较旧的Chrome版本)完全一致,而其他浏览器显示的条目包含您键入的子字符串(firefox,较新的Chrome版本).

例如,键入i文本框,并观察建议:

browser: 
<datalist id="browsers">
    <option value="Google Chrome">Google Chrome</option>
    <option value="Internet Explorer">Internet Explorer</option>
    <option value="Firefox">Firefox</option>
    <option value="Opera">Opera</option>
    <option value="Safari">Safari</option>
    <option value="Others">Others?</option>
</datalist>
 <input type="text" name="browser" list="browsers">
Run Code Online (Sandbox Code Playgroud)

(或者这里是小提琴,如果你喜欢http://jsfiddle.net/yaj8ut3m/)

在IE浏览器,它只会建议Internet Explorer,但Firefox和Chrome浏览器近期将建议Internet Explorer,FirefoxSafari.

有没有办法指定使用哪种自动建议过滤行为?

注意:javascript解决方案是不可接受的

html5 cross-browser html-datalist

12
推荐指数
1
解决办法
2767
查看次数

for in循环和删除操作符

我注意到,在枚举对象的属性时,似乎是在循环开始时获取当前属性的快照,然后迭代快照.我觉得这样,因为以下不会创建无限循环:

var obj = {a:0,b:0}, i=0;
for (var k in obj) {
    obj[i++] = 0;
}
alert(i) // 2
Run Code Online (Sandbox Code Playgroud)

演示http://jsfiddle.net/kqzLG/

上面的代码演示了我正在添加新属性,但新属性不会被枚举.

但是,删除操作符似乎违反了我的快照理论.这是相同的代码,但在枚举之前删除属性.

var obj = {a:0,b:0}, i=0;
for (var k in obj) {
    i++;
    delete obj.b;
}
alert(i) // 1
Run Code Online (Sandbox Code Playgroud)

演示http://jsfiddle.net/Gs2vh/

上面的代码演示了循环体只执行了一次.如果快照理论是真的,它会执行两次.

这里发生了什么?javascript是否具有它使用的某种类型的隐藏迭代器,并且delete运算符在某种程度上意识到它?

- 我意识到我正在假设有关迭代顺序的事情 - 特别是基于属性插入时间发生迭代.我相信所有浏览器都使用这样的实现.

javascript

11
推荐指数
1
解决办法
240
查看次数

检查数组B是否是A的排列

我试图找到一个解决方案,但无法摆脱我的困扰.

我们给出了两个未排序的整数数组A和B.我们必须检查数组B是否是A的排列.如何做到这一点.甚至对数字进行异或也不会有效,因为可能存在几个具有相同XOR值bt的反例并不是彼此的排列.

解决方案需要O(n)时间和空间O(1)

欢迎任何帮助!! 谢谢.

algorithm permutation

10
推荐指数
3
解决办法
8368
查看次数

doctrine dql where子句解释与关联实体

鉴于这个实体

class SystemRecord
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer", name="ID")
     * @ORM\GeneratedValue
     * @var int
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="Application\Entity\User")
     * @ORM\JoinColumn(name="USER_SERIAL", referencedColumnName="SERIAL", nullable=false)
     * @var User
     */
    private $user;

    /**
     * @ORM\Column(type="utcdatetime", name="DATE_DATA_WAS_FETCHED", nullable=false)
     * @var DateTimeInterface
     */
    private $dateDataWasFetched;
}
Run Code Online (Sandbox Code Playgroud)

...而这个dql

$dql = "
    select r
      from Application\\Entity\\SystemRecord r
      join Application\\Entity\\User u
     where r.dateDataWasFetched = (
         select max(r2.dateDataWasFetched)
           from Application\\Entity\\SystemRecord r2
     )
       and u.serial = :serial
";

$query = $this->getEntityManager()->createQuery($dql);
$query->setParameter('serial', $user->getSerial());
$sql = $query->getSql();
Run Code Online (Sandbox Code Playgroud)

...我希望得到"具有指定序列的用户的SystemRecords,但只有那些具有最新日期的SystemRecord".换句话说,在程序上,"为任何用户查找任何SystemRecord的最新日期.然后查找在该日期发生的指定用户的记录."

如果我正在写sql,我会写 …

php sql dql doctrine-orm

8
推荐指数
1
解决办法
1089
查看次数

autocomplete = new-password,让他们通过再次输入密码来确认

html5现在为该autocomplete属性提供了一些新的属性值,以在自动填充表单时帮助用户代理。新值之一new-password用于告诉用户代理输入密码,而不是用户当前密码。

但是我不清楚,当您的表单使用户两次输入新密码作为确认时如何正确地告诉它在两个字段中生成相同的密码?也许通过section-*在两个输入上使用相同的自定义前缀,例如autocomplete="new-password section-my-new-pw"?规范中提到section-*前缀会影响自动填充范围,但是对于我的情况而言,它并不过分具体。

我想这是一个示例表单,它代表了许多网站不久将要使用的表单-区分了current-passwordnew-password,并让用户确认新密码。

<form>
    <p>Username             <input type="text"     autocomplete="username"         name="username"></p>
    <p>Current Password     <input type="password" autocomplete="current-password" name="current-password"></p>
    <p>New Password         <input type="password" autocomplete="new-password"     name="new-password"></p>
    <p>Confirm New Password <input type="password" autocomplete="new-password"     name="confirm-new-password"></p>
</form>
Run Code Online (Sandbox Code Playgroud)

如果答案引用的文档与有关当前浏览器或扩展程序行为的观察相反,则我更喜欢。

passwords html5 autocomplete autofill change-password

8
推荐指数
1
解决办法
3757
查看次数

PHP关联数组 - 如何将整数视为字符串

我有一个简单的关联数组.

$a = array("a"=>"b", "c"=>"d");
Run Code Online (Sandbox Code Playgroud)

我想检查数组中是否存在键"1",例如

isset($a["1"]);
Run Code Online (Sandbox Code Playgroud)

此字符串被视为整数,因此

echo $a["1"]; //prints "d"
Run Code Online (Sandbox Code Playgroud)

如何将其作为字符串处理?

我不想使用array_key_exists或in_array,因为我的基准测试显示isset会快得多.

php arrays associative-array isset

7
推荐指数
1
解决办法
3487
查看次数

phpstorm生成类型为提示的setter

在phpstorm中,您可以通过alt+ insert> setters>选择变量来为类成员生成setter方法来生成setter方法.

但是,即使phpstorm知道变量的类型/类,它也不会在参数列表中插入类型提示.

如何让phpstorm生成带有类型提示的setter,但仅限于类型hintable类型

示例类

class CodeGenerationTest {
    /* @var \DateTimeInterface */
    private $date;
    /* @var int */
    private $num;
}
Run Code Online (Sandbox Code Playgroud)

所需的生成的setter应该是:

/**
 * @param DateTimeInterface $date
 */
public function setDate(DateTimeInterface $date)
{
    $this->date = $date;
}

/**
 * @param int $num
 */
public function setNum($num)
{
    $this->num = $num;
}
Run Code Online (Sandbox Code Playgroud)

setNum是正确的,但setDate生成时缺少参数的类型提示:

/**
 * @param DateTimeInterface $date
 */
public function setDate($date)
{
    $this->date = $date;
}
Run Code Online (Sandbox Code Playgroud)

php code-generation phpstorm

7
推荐指数
1
解决办法
2851
查看次数

spring security 手动登录最佳实践

我正在使用 spring security 来实现程序化的手动用户登录。我有一个场景,我已经确定了用户的身份,并希望让他们登录。我不知道他们的密码,因此无法使用常规登录代码路径,您将表单提交到 url,即通过 servlet 拦截Filter,完成所有的 auth+session 魔术。

我搜索过,似乎大多数人创建了自己的Authentication对象,然后通过以下方式告诉 spring:

PreAuthenticatedAuthenticationToken authentication = new PreAuthenticatedAuthenticationToken(user, "", user.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
Run Code Online (Sandbox Code Playgroud)

确实,这是有效的。Spring 甚至为我将其放入会话中,使后续的 http 请求保持其身份验证状态。

但是,我觉得这是一个肮脏的黑客。我将提供一些细节,希望能给出与setAuthentication()在控制器内部使用以实现手动登录相关的问题的具体示例:

给出一个想法,我的配置是:

httpSecurity
    .authorizeRequests()
    .antMatchers("/test/**").permitAll()
    .antMatchers("/admin/**", "/api/admin/**").hasRole("USER_SUPER_ADMIN")
    .and()
    .formLogin()
    .loginPage("/sign-in?sp")
    .loginProcessingUrl("/api/auth/sign-in")
    .successHandler(createLoginSuccessHandler())
    .failureHandler(createLoginFailureHandler())
    .permitAll()
    .and()
    .logout()
    .logoutUrl("/api/auth/sign-out")
    .logoutSuccessHandler(createLogoutSuccessHandler())
    .and()
    .sessionManagement()
    .maximumSessions(1)
    .maxSessionsPreventsLogin(true)
    .sessionRegistry(sessionRegistry)
;
Run Code Online (Sandbox Code Playgroud)

上述配置中的要点:

  • 我使用自定义成功和失败处理程序进行表单登录
  • 我想为每个用户的最大并发会话配置行为
  • 我想维护 spring 的默认会话固定保护(登录时更改会话 ID)。
  • 我想使用会话注册表
  • ...更多这些会话/登录功能,如果我选择配置它。

我单步执行代码以查看 spring 如何处理表单登录。正如预期的那样,HttpSecurity当我使用表单登录时,Spring 执行了我的配置告诉它执行的所有会话/登录功能。但是,当我通过 进行自己的自定义/手动登录时SecurityContextHolder.getContext().setAuthentication(),它没有任何这些功能。这是因为 spring 在 servlet 内部完成了所有的会话/登录功能Filter,而我的编程代码不能真正调用过滤器。现在,我可以尝试添加缺少的功能自己,复制其代码:我看到弹簧过滤器用途:ConcurrentSessionControlAuthenticationStrategyChangeSessionIdAuthenticationStrategy …

java spring spring-security

7
推荐指数
2
解决办法
3794
查看次数