小编Har*_*rry的帖子

git config:列出所有变量及其默认值

类似于MySQL的show variables命令,显示中定义的所有变量,而不仅仅是那些my.ini,我想看到的清单全部在配置变量git 连同它们的默认值,而不仅仅是那些在我的定义~/.gitconfig.

这可能吗?

git git-config

31
推荐指数
4
解决办法
4万
查看次数

Groovy:这个"Hello World"计划出了什么问题?

这不起作用:

$ groovy -e 'println "Hello, world!"'
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
script_from_command_line: 1: unexpected char: 0xFFFF @ line 1, column 23.
   println "Hello, world!
                         ^

1 error
Run Code Online (Sandbox Code Playgroud)

但是,在最后的双引号和单引号之间加一个空格......

$ # groovy -e 'println "Hello, world!"'
$   groovy -e 'println "Hello, world!" '
Hello, world!
Run Code Online (Sandbox Code Playgroud)

......即使bash似乎能够正确处理尾随"'对(即没有任何中间空间),如下所示:

$ echo '"Hello, world!"'
"Hello, world!"
Run Code Online (Sandbox Code Playgroud)

另外,括号化println参数可以正常工作:

$ groovy -e 'println ("Hello, world!")'
Hello, world!
Run Code Online (Sandbox Code Playgroud)

现在,我想知道为什么第一个案例不起作用.

我正在使用:

  • bash,版本"4.2.45(1)-release(x86_64-pc-linux-gnu)"
  • groovy,版本2.1.3

groovy

15
推荐指数
1
解决办法
8377
查看次数

YouTube播放器API:如何在不播放的情况下获取已加载/提示的视频的持续时间?

我无法通过YouTube Player API的getDuration()方法获取加载/提示视频的正确视频持续时间/长度(以秒为单位); 但是,相同的方法会在视频开始播放后返回有效值!想知道YouTube如何能够显示加载/提示视频的有效持续时间.

当我用15秒的视频剪辑加载这个HTML页面时,我得到以下调试输出:

state = 5 duration = -0.000025

当我点击播放按钮时,我得到以下调试输出:

state = 3 duration = 15,

非常感谢解决方案或解决方法.加载,立即播放和暂停播放器将不是我最喜欢的方法.

<html>
<head>
  <script type="text/javascript">
   var videoId;
   videoId = 'http://www.youtube.com/v/4TSJhIZmL0A';    // bbc
   // videoId = 'http://www.youtube.com/v/ezwyHNs_W_A'; // physics

    function $(id) {
      return document.getElementById(id);
    }
  </script>

  <script src="http://www.google.com/jsapi"></script>
  <script>
    google.load("swfobject", "2.1");
  </script>

</head>

<body>


  <table>
    <tr><td>
      <div id="player">
        You need Flash player 8+ and JavaScript enabled to view this video.
      </div>

    <script>
        var ytplayer;

        function myOnPlayerStateChange(state) {
          switch(state) {
            case 1:  // playing …
Run Code Online (Sandbox Code Playgroud)

javascript youtube duration youtube-api youtube-javascript-api

14
推荐指数
1
解决办法
4万
查看次数

如何理解第5范式?

我正在使用两个在线资源来获得对5NF的理解,而没有任何严格的数学和证明.

  1. 关系数据库理论中的五种常规形式的简单指南(作者:肯特.这个似乎已经在他的一篇着作中被CJ Date自己评论和认可)
  2. 第五范式(维基百科文章)

但是,我无法理解这些参考文献中的任何一个!

我们先来看一下Reference#1(Kent's).

它说:"但假设某条规则有效:如果代理商销售某种产品​​,而他代表一家制造该产品的公司,那么他就会为该公司销售该产品."

然后,继续分解原始表(所有表名都由我给出)......

acp(agent, company, product)

-----------------------------
| AGENT | COMPANY | PRODUCT |
|-------+---------+---------|
| Smith | Ford    | car     | 
| Smith | Ford    | truck   | 
| Smith | GM      | car     | 
| Smith | GM      | truck   | 
| Jones | Ford    | car     | 
-----------------------------
Run Code Online (Sandbox Code Playgroud)

...分为3个表:

ac(agent, company)
cp(company, product)
ap(agent, product)

-------------------   ---------------------   ------------------- 
| AGENT | COMPANY |   | COMPANY | PRODUCT |   | …
Run Code Online (Sandbox Code Playgroud)

database-design relational-database database-normalization

13
推荐指数
3
解决办法
1万
查看次数

所有核心J2EE模式在Java EE环境中是否仍然良好?

随着Java EE和EJB 3的到来,

  1. 是否有任何这些核心J2EE模式已经过时,或者根据(更好)替代方案而被弃用?

  2. 是否有可以使用的新模式?

design-patterns java-ee

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

外部禁用Linux程序的信号

在Linux上,是否有可能以某种方式禁用外部程序的信令...即,不修改其源代码?

语境:

我在Linux上的bash脚本中调用了一个C(也是一个Java)程序.我不希望我的bash脚本和脚本启动的其他程序(作为前台进程)中断.

虽然我可以用...

trap '' INT
Run Code Online (Sandbox Code Playgroud)

...在我的bash脚本中禁用Ctrl C信号,这仅在程序控件恰好在bash代码中时才有效.也就是说,如果我在C程序运行时按下Ctrl C,C程序会被中断并退出!这个C程序正在进行一些关键操作,因此我不希望它被中断.我无法访问此C程序的源代码,因此C程序内的信号处理是不可能的.

#!/bin/bash

trap 'echo You pressed Ctrl C' INT 

# A C program to emulate a real-world, long-running program,
# which I don't want to be interrupted, and for which I 
# don't have the source code!
#
# File: y.c
# To build: gcc -o y y.c
#
# #include <stdio.h>
# int main(int argc, char *argv[]) {
#  printf("Performing a critical operation...\n");
#    for(;;); // …
Run Code Online (Sandbox Code Playgroud)

linux bash signals external bash-trap

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

如何在Java EE中建模?

比方说,我决定使用Java EE堆栈来实现我的企业应用程序.

现在,对于域建模(或:用于设计MVC的M),我可以安全地假设和使用哪些API,哪些我应该远离......比如说,通过抽象层?

例如,

  1. 我应该继续使用Hibernate/JPA API调用我的模型吗?或者,我应该构建一个抽象...我自己的持久层,以避免对这两个特定的持久性API进行硬编码?为什么我这样问:几年前,这个Kodo API被Hibernate取代了.如果设计了一个持久层并对该层编码模型的其余部分(而不是通过调用特定的供应商API来乱丢模型),那么它将允许一个(相对)轻松地从Kodo切换到Hibernate到xyz.

  2. 是否建议在域模型中积极使用持久性供应商提供的*QL?我不知道由于大量使用类似HQL的语言而产生的任何现实问题(如性能,可伸缩性,可移植性等).为什么我这样问:我希望尽可能避免编写自定义代码,这可以通过比SQL更便携的查询语言来实现.

对不起,我是这个地区的新手.我在哪里可以找到关于此主题的更多信息?

modeling java-ee data-persistence java-ee-6

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

这是Java 7中的一个错误吗?

我不知道在哪里寻求有关Java API文档和Java代码的澄清和确认,所以我在这里做.

在API文档中FileChannel,我发现在一个以上的地方提交文件position和文件的一个一个错误size.

这只是一个例子.transferFrom(...)州的API文件:

"如果给定位置大于文件的当前大小,则不传输任何字节."

我确认OpenJDK代码也包含此代码...

public long transferFrom(ReadableByteChannel src, long position, long count)
    throws IOException
{
    // ...
    if (position > size())
        return 0;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

...在FileChannelImpl.java与文档一致的文件中.

现在,虽然上面的代码片段和API文档看起来相互一致,但我觉得"上面应该'大于或等于'而不仅仅是'大于',因为position它是一个基于0的文件数据索引,阅读时position == size()将没有数据返回给来电者!(position == size() - 1至少1个字节 - 文件的最后一个字节 - 可以返回给调用者.)

以下是同一API文档页面中的其他类似实例:

  1. position(...):"将位置设置为大于文件当前大小的值是合法的,但不会更改文件的大小." (应该是'大于或等于'.)

  2. transferTo(...):"如果给定位置大于文件的当前大小,则不传输任何字节." (应该是'大于或等于'.)

  3. read(...):"如果给定位置 …

java filechannel code-documentation nio2

10
推荐指数
1
解决办法
284
查看次数

bash:如何评估PS1,PS2,......?

可能重复:
Echo扩展PS1

有没有什么办法来"评价" PS1,PS2从bash脚本中,等?

虽然,我可以使用其他方法来获取当前的所有元素PS1,但我真的希望能够重用其定义而不是使用这些替代方法.

例如,

=====================================
 PS1 element -->     Alternate means
=====================================
 \u          -->     $USER
 \h          -->     $HOSTNAME
 \w          -->     $PWD
 ...
=====================================
Run Code Online (Sandbox Code Playgroud)

我可以很好地使用我的脚本中的"备用方法"列,但我不想这样做.在我PS1,我,例如,通过终端转义序列使用粗体蓝色,我希望能够通过评估简单地重用PS1.

bash evaluate ps1

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

bash脚本:如何实现自己的历史记录机制?

我正在实现一个类似于MySQL客户端的交互式bash脚本/usr/bin/mysql.在这个脚本中,我需要发出各种类型的"命令".我还需要提供一种历史机制,用户可以使用上/下箭头键滚动到目前为止输入的命令.

此处列出的代码段(示例15-6,检测箭头键)并不完全符合我的要求.我真的想要以下内容:

  1. 上/下箭头键应以静音模式运行.意思是,它们不应该在终端上回显它们的字符代码.

  2. 但是,其他键(用于读取命令名称及其参数)不能以静默方式运行.

问题read -s -n3在于,它不能满足我的静音模式回声模式的同时冲突要求,仅基于字符代码.此外,该值-n3将适用于箭头键,但对于其他/常规键,它将不会"返回控制"到调用程序,直到消耗了3个字符.

现在,我可以尝试-n1手动组装输入,一次一个字符(哎呀!).但基于字符代码的静音/回声模式切换问题仍然存在!

有没有人在bash中尝试过这个东西?(注意:我不能使用C,也不能使用其他脚本语言,如Perl,Python等)

编辑

继续Dennis的回答......您需要手动将所需的条目添加到您的历史记录中history -s,如此...

while read -e x; do
    history -s "$x"
    # ...
done
Run Code Online (Sandbox Code Playgroud)

bash history interactive

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