仅使用一个剧本,则Ansible无法自动安装从属角色.至少根据这个SO线程.
但是,我有使用Vagrant和Vagrant的Ansible本地配置器的额外"优势" .我可能申请的任何技巧?
我正在使用Visual Studio 2013,我安装了Update 3.
有一个问题在这里的如何对自己说选择打字稿版本,可惜我还没有发现这个"TypeScriptToolsVersion" -entry他们在我的文件讲的任何地方.我搜索了有关Visual Studio在Internet和Visual Studio应用程序菜单上使用哪种版本的TypeScript但没有任何结果的信息.我肯定错过了什么.
我问的原因是因为在我的电脑上的这个目录中:
C:\ Program Files(x86)\ Microsoft SDKs\TypeScript
..我看到TypeScript 0.9并1.0已安装.根据我自己的旧版TypeScript项目中的高贵笔记,TypeScript在某些时候充斥着bug,我想知道我正在使用哪个版本,如果需要,请升级到最新版本.
如何找出最新版本的TypeScript?TypeScript 网站存储规范文件,该文件是今天版本1.0(2014-10-11).
该网站没有列出我可以下载的TypeScript编译器或其版本.相反,该网站指向我Visual Studio更新.我从Visual Studio Update 3中找到的"发行说明" 并不是关于TypeScript版本的说法.
回到TypeScript网站,它有一个链接" 源 " ,它链接到存储在github上的TypeScript编译器.在其中一个文件中,我可以读到编译器的版本是1.3.0(2014-10-11).
鉴于此编译器是从TypeScript网站链接的,我猜它是某种形式的"参考实现",我可以打赌我的两个球,这是Visual Studio正在使用的.很显然,虽然,编译器的版本1.3.0并没有什么做的版本语言打字稿我相信这是"唯一" 1.0.
我一直在谷歌上搜索如何升级Visual Studio的TypeScript版本,这似乎是一个小小的噩梦.但我的主要目标是找出我正在使用的TypeScript版本.次要目标是更好地理解版本控制方案,是TypeScript 1.0或1.3的最新版本吗?如果需要,我最后应该开始实际升级Visual Studio的努力=)
谢谢!
这段代码使用PHP/Xdebug(在Windows 7 x64上使用Xdebug 2.2.1和PHP 5.4,我也添加了一个行计数器以便于阅读):
1: xdebug_start_code_coverage();
2:
3: for ($ii = 0; $ii < 3; ++$ii)
4: $x = time();
5:
6: if (false)
7: echo "Never executed.";
8:
9: echo var_dump(xdebug_get_code_coverage());
Run Code Online (Sandbox Code Playgroud)
..我得到这个输出(我修改了一些值,使其更具可读性):
array (size=1)
'..\testpage.php' =>
array (size=4)
3 => int 1
4 => int 1
7 => int 1
9 => int 1
Run Code Online (Sandbox Code Playgroud)
Xdebug网站上的文档说:
"元素中的值表示此行上已执行的执行单元总数."
资料来源:http://www.xdebug.com/docs/code_coverage
显然输出是错误的.第3行和第4行应该执行三次,而Xdebug分别执行1次.第6行应该执行一次,Xdebug完全没有说法.第7行肯定不会被执行,但Xdebug说它确实执行了一次.应该说输出在有或没有花括号的情况下保持不变.
在这个网址:http://xdebug.org/archives/xdebug-general/0377.html
.. Derick Rethans被抓住说(7年前!),不知何故文档是错误的(现在仍然是),Xdebug只返回-1,0或1.但是,正如我的例子所示,Xdebug直接返回1并且被操纵的计数器似乎使他的选择任意.即使Xdebug确实返回-1,0或1,我也不知道这些值是什么.
所以,你们中的任何一位精英编码员都有自己的想法?如果Xdebug在这里出现严重问题,这是否意味着我不能相信任何其他用于分析和代码覆盖的应用程序和插件,而这些应用程序和代码覆盖又使用Xdebug?我在想Phing和PHPUnit似乎是一个普通的婚姻.
如果你想在这个问题上详细阐述一下; 如果Xdebug有问题,所有依赖的应用程序,您在PHP中使用什么代码覆盖率报告?
编辑:如果我发送参数XDEBUG_CC_UNUSED或XDEBUG_CC_DEAD_CODE作为参数,上面列出的输出使用相同的代码示例xdebug_start_code_coverage …
鉴于我们部署的存档是一个"隐式bean存档"(见下文),@javax.inject.Inject用于@javax.annotation.ManagedBean在WildFly 8.1.0中注入另一个托管bean工作,但它不适用于GlassFish 4.0.1-b08或GlassFish 4.1- B13.GlassFish崩溃了这条消息:
WELD-001408:类型的不满意依赖...
我是否误解了以下概述的规格或GlassFish有错误吗?
CDI 1.1(JSR-346)第12.1节"Bean Archives"说:
显式bean归档文件是包含beans.xml文件[...]的归档文件.隐式bean归档是包含一个或多个bean类的任何其他归档,其中bean定义了注释[..].
如果那时,我的存档没有beans.xml描述符文件,我仍然可以使用具有"bean定义注释"的bean.问题是,什么是定义注释的bean?
CDI规范第2.5节"Bean定义注释"说:
任何范围类型都是定义注释的bean.
所以这很清楚,根据CDI规范的这一部分,它就是全部.如果我部署了一个没有beans.xml描述符文件的存档,那么只要它们具有显式声明的范围,我就可以@Inject bean,@javax.enterprise.context.RequestScoped例如.它适用于WildFly和GlassFish.然而..
Java EE技术堆栈中的所有规范必须遵守的子集规范Managed Beans(JSR-316)具有"基本模型",其中@javax.annotation.ManagedBean定义了托管bean.托管bean规范并未说明@ManagedBean使bean成为注入点(即字段或参数)的合理注入目标.规范确实说bean"可以在Java EE应用程序中的任何地方使用"(第MB.1.2节"为什么管理豆类?"),在我耳边听起来它们应该是可注射的.
Java EE 7规范(JSR-342)在EE.5.24"支持依赖注入"一节中有这个说法:
容器必须支持使用javax.inject.Inject注释注释的注入点,仅限于CDI规定的范围.根据CDI规范,托管bean支持依赖注入.
目前有三种方法可以使类成为托管bean:
- 作为EJB会话bean组件.
- 使用ManagedBean批注进行批注.
- 满足CDI规范中描述的条件.
满足至少一个这些条件的类将有资格获得完全依赖注入支持,如CDI规范中所述.
你去了:@ManagedBean有"完全依赖注入支持".不是一半或只是一点点的支持.然而,我并不确定"依赖注入支持"究竟是什么.但我认为后面的段落描述得足够好:
表EE.5-1中列出的满足上述第三个条件但不满足第一个条件和第二个条件的组件类,如果使用CDI bean定义注释注释或包含在bean中,也可以用作CDI托管bean已启用CDI的存档.但是,如果它们用作CDI托管bean(例如,注入其他托管类),则由CDI管理的实例可能不是由Java EE容器管理的实例.
基本上,本段所说的是第二个条件是可以注入其他托管类的CDI托管bean(因为异常bean"也可以").
伞规范和托管bean规范都使得CDI规范有了明确的说法.
该@ManagedBean注释仅在CDI规范中提到的两次,这两个发生在其中提到的一个CDI扩展可以观察到生命周期CDI事件第11章.第11.5.7节是命中之一并定义ProcessInjectionPoint事件.托管bean可能会使用依赖注入 - 这并不奇怪.但是,第11.5.8节定义了一个ProcessInjectionTarget事件.以下是规范对ProcessInjectionTarget事件的说法:
容器必须为每个支持注入的Java EE组件类触发事件,该注入可以由容器在运行时实例化,包括使用@ManagedBean,EJB会话或消息驱动的bean,bean,拦截器或装饰器声明的每个托管bean. …
这可能是我曾经问过的最令人尴尬的问题.但我不能为我的生活弄清楚如何更改默认的工作空间位置中的Zend Studio 9.0.3(操作系统:Windows 7 64位).我已经在最近整整一个小时内广泛使用谷歌了,我手动遍历整个Zend Studio首选项页面(或者至少我认为是这样).此外,还有这家名为神秘寻找文件config.ini中%Zend Studio installation folder%\configuration\已此行是:
osgi.instance.area.default=@user.home/Zend/workspaces/DefaultWorkspace
而且不管我如何创造性地重写该行或将其彻底删除,我不能让Zend Studio的停在我的"用户"主目录挖.所以,这里是颜色说明的问题:

每当我创建一个新的本地PHP项目时,我希望该默认位置是其他的.
问题标题是我想要解决的具体问题。但更简单的是,是否可以列出服务中的所有任务以及运行它们的节点 IP?
docker service ps将列出任务 ID 以及正在运行该任务的节点的主机名。没有提供其他节点标识符,例如 ID 或 IP。
但我使用 Vagrant 来管理虚拟机,并且没有配置主机名,所有主机名都命名为相同(“vagrant”)。这使得我很难准确地找出哪个节点正在运行该任务!
这很重要,因为我必须手动删除未使用的图像,否则当没有更多磁盘空间时,机器将面临崩溃的风险。因此,弄清楚任务运行的位置是此过程的第一步,哈哈。
对于 Vagrant 用户来说,我使用该选项在 Vagrantfile 中轻松更改了主机名config.vm.hostname。但当然,这个问题仍然是完全合理的。
我可以在每个节点上手动运行docker imagesordocker ps来找出哪个节点存储预期的图像和/或当前正在运行哪个容器(容器名称将是任务 ID 和任务名称的串联,用点分隔)。但这很麻烦。
我还可以列出所有节点及其 ID,docker node ls然后寻找每个节点的任务,例如使用docker node ps 7b(“7b”是我的一个节点 ID 中的前两个字母)。但这也很麻烦,而且我最多“只”了解节点 ID 而不是 IP。
但是,我可以使用节点 ID 和如下命令找到 IP:docker inspect 7b --format '{{.Status.Addr}}'。因此,直接获取 IP 并不是一个严格的要求,并且一度 - 当我理解这一点时 - 我认为找到给定任务 ID 的节点 ID 会容易得多!
但不是。连这似乎都是不可能的事?如前所述,docker service ps没有给我节点 ID。该命令的文档.Name说占位符应该给我“节点 ID”,但这是错误的。
直到这一刻我一定已经尝试了十亿种不同的技巧。 …
在Java中,"默认"AES/GCM提供程序SunJCE将在解密过程中内部缓冲1)用作输入的加密字节或2)作为结果产生的解密字节.执行解密的应用程序代码会注意到Cipher.update(byte[])返回一个空字节数组并Cipher.update(ByteBuffer, ByteBuffer)返回写入长度为0.然后当进程完成时,Cipher.doFinal()将返回所有已解码的字节.
第一个问题是:缓冲哪个字节,上面的数字1或数字2?
我假设缓冲仅在解密期间发生而不是加密,因为首先,在我的Java客户端执行从磁盘读取的文件的加密时,不会发生由此缓冲引起的问题(很快描述),它总是发生在服务器端,接收这些文件并进行解密.其次,它是这么说的这里.仅根据我自己的经验判断,我无法确定,因为我的客户使用了CipherOutputStream.客户端未明确使用Cipher实例上的方法.因此,我无法推断是否使用了内部缓冲,因为我无法看到更新和最终方法返回的内容.
当我从客户端传输到服务器的加密文件变大时,我出现了真正的问题.我的意思是超过100 MB.
那么接下来就是Cipher.update()抛出一个OutOfMemoryError.显然由于内部缓冲区的增长和增长.
此外,尽管内部缓冲并且没有从Cipher.update()接收到结果字节,但Cipher.getOutputSize(int)会不断报告不断增长的目标缓冲区长度.因此,我的应用程序代码被迫分配一个不断增长的源ByteBuffer,它被输入Cipher.update(ByteBuffer,ByteBuffer).如果我试图欺骗并传入一个容量较小的字节缓冲区,那么update方法会抛出一个#1.知道我创建巨大的字节缓冲区是没有用的是非常令人沮丧.ShortBufferException
鉴于内部缓冲是所有邪恶的根源,那么我在这里应用的明显解决方案是将文件分成块,每个1 MB - 我从来没有问题发送小文件,只有大文件.但是,我很难理解为什么内部缓冲首先发生.
以前链接的SO答案说GCM:s认证标签是"在密文末尾添加的",但它"不必放在最后"这种做法是"弄乱了GCM的在线性质"解密".
为什么将标签放在最后只会扰乱服务器的解密工作?
这是我的推理方式.要计算身份验证标记或MAC(如果您愿意),客户端将使用某种哈希函数.显然,MessageDigest.update()不使用不断增长的内部缓冲区.
然后在接收端,服务器不能做同样的事情吗?对于初学者,他可以解密字节,尽管是未经验证的字节,将其提供给他的哈希算法的更新功能,当标签到达时,完成摘要并验证客户端发送的MAC.
我不是一个加密的人,所以请跟我说话,好像我既愚蠢又疯狂,但又爱得足以照顾一些=)我全心全意地感谢你花时间阅读这个问题,甚至可能会有所启发!
我不使用AD(关联数据).
编写了使用Java演示AES/GCM加密的软件,以及Java EE中的安全远程协议(SRP)和二进制文件传输.前端客户端使用JavaFX编写,可用于动态更改加密配置或使用块发送文件.在文件传输结束时,会显示一些有关传输文件所用时间和服务器解密时间的统计信息.该存储库还有一个文档,其中包含我自己的一些GCM和Java相关研究.
享受:https://github.com/MartinanderssonDotcom/secure-login-file-transfer/
有趣的是,如果执行解密的服务器本身不处理密码,而是使用a CipherInputStream,则不会抛出OutOfMemoryError.相反,客户端设法通过线路传输所有字节,但在解密过程中某处,请求线程无限期挂起,我可以看到一个Java线程(可能是同一个线程)完全利用CPU核心,同时保留文件磁盘不可访问且报告的文件大小为0.然后经过相当长的时间后,Closeable源被关闭,我的catch子句设法捕获由以下原因引起的IOException:"javax.crypto.AEADBadTagException:输入太短 - 需要标记" .
让这种情况变得奇怪的是,使用完全相同的代码传输较小的文件完美无瑕 - 所以显然可以正确验证标签.该问题必须具有与明确使用密码时相同的根本原因,即不断增长的内部缓冲区.我无法在服务器上跟踪成功读取/解密的字节数,因为只要读取密码输入流开始,编译器重新排序或其他JIT优化就会使我的所有日志记录都消失得无影无踪.它们[显然]根本没有被执行.
请注意,此GitHub项目及其相关的博客文章称CipherInputStream已损坏.但是,当使用Java 8u25和SunJCE提供程序时,此项目提供的测试不会失败.正如已经说过的那样,只要我使用小文件,一切都适合我.
遇到RuntimeException流处理时,流处理是否应该中止?应该先完成吗?是否应重新抛出异常Stream.close()?异常是否被重新抛出或被包裹?Java Stream和java.util.stream包的JavaDoc 无话可说.
我发现的所有关于Stackoverflow的问题似乎都集中在如何从功能界面中包装已检查的异常以便编译代码.事实上,互联网上的博客文章和类似文章都集中在同一个警告上.这不是我关心的问题.
我根据自己的经验知道,一旦抛出一个顺序流的处理就会中止,RuntimeException并且这个异常会按原样重新抛出.仅当客户端线程抛出异常时,对于并行流才是相同的.
但是,此处的示例代码演示了如果在并行流处理期间由"工作线程"(=与调用终端操作的线程不同的线程)抛出异常,则此异常将永远丢失并且流处理完成.
示例代码将首先IntStream并行运行.然后是"正常" Stream并行.
这个例子将表明,
1)IntStream如果遇到RuntimeException,则中止并行处理没有问题.异常被重新抛出,包装在另一个RuntimeException中.
2)Stream不好玩.实际上,客户端线程永远不会看到抛出的RuntimeException的痕迹.流不仅完成处理; 将处理更多元素而不是limit()指定的元素!
在示例代码中,IntStream使用IntStream.range()生成."正常" Stream没有"范围"的概念,而是由1:s组成,但调用Stream.limit()将流限制为10亿个元素.
这是另一个转折点.生成IntStream的示例代码执行如下操作:
IntStream.range(0, 1_000_000_000).parallel().forEach(..)
Run Code Online (Sandbox Code Playgroud)
将其更改为生成的流,就像代码中的第二个示例一样:
IntStream.generate(() -> 1).limit(1_000_000_000).parallel().forEach(..)
Run Code Online (Sandbox Code Playgroud)
此IntStream的结果是相同的:异常被包装并重新抛出,处理中止.但是,第二个流现在也将包装并重新抛出异常,而不是处理超出限制的元素!因此:更改第一个流的生成方式会对第二个流的行为产生副作用.对我来说,这很奇怪.
ForkJoinPool.invoke()的 JavaDoc 并ForkJoinTask表示异常被重新抛出,这就是我对并行流的期望.
当处理并行流中的元素时,我遇到了这个"问题" Collection.stream().parallel()(我还没有验证它的行为,Collection.parallelStream()但它应该是相同的).发生的事情是"工作线程"崩溃然后静静地离开,而所有其他线程成功完成了流.我的应用程序使用默认的异常处理程序将异常写入日志文件.但是甚至没有创建这个日志文件.线程和他的例外根本就消失了.由于我需要在捕获运行时异常时立即中止,因此一种替代方法是编写将此异常泄漏给其他工作程序的代码,使其在任何其他线程抛出异常时不愿意继续.当然,这并不能保证流实现只是继续生成尝试完成流的新线程.所以我可能最终不会使用并行流,而是使用线程池/执行器进行"正常"并发编程.
这表明运行时异常丢失的问题不会与使用流Stream.generate()或流生成的流隔离Stream.limit().最重要的是,我很想知道...是预期的行为?
java parallel-processing multithreading runtimeexception java-stream
之后start-dfs.sh,我可以导航到http://localhost:9870。NameNode似乎运行得很好。
然后单击“实用程序->浏览文件系统”,并在Web浏览器中得到以下提示:
Failed to retrieve data from /webhdfs/v1/?op=LISTSTATUS: Server Error
Run Code Online (Sandbox Code Playgroud)
深入日志文件($HADOOP_HOME/logs/hadoop-xxx-namenode-xxx.log),我发现:
2018-11-30 16:47:25,097 WARN org.eclipse.jetty.servlet.ServletHandler: Error for /webhdfs/v1/
java.lang.NoClassDefFoundError: javax/activation/DataSource
at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl.(RuntimeBuiltinLeafInfoImpl.java:457)
at com.sun.xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl.(RuntimeTypeInfoSetImpl.java:65)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:133)Run Code Online (Sandbox Code Playgroud)
因此缺少一堂课。为什么会这样,如何解决该问题?
java ×2
php ×2
aes ×1
aes-gcm ×1
amqp ×1
ansible ×1
ansible-role ×1
cdi ×1
cryptography ×1
default ×1
docker ×1
docker-swarm ×1
encryption ×1
entity ×1
glassfish-4 ×1
hadoop3 ×1
hdfs ×1
identifier ×1
java-11 ×1
java-9 ×1
java-ee-7 ×1
java-stream ×1
jms ×1
location ×1
managed-bean ×1
mqtt ×1
openmq ×1
protocols ×1
task ×1
typescript ×1
vagrant ×1
vagrantfile ×1
version ×1
workspace ×1
xdebug ×1
zend-studio ×1