小编Hen*_*her的帖子

如何从Java Web Start(JDK 8)升级到jlink(JDK 9+)以获取自动更新应用程序?

Java 8和早期版本具有Java Web Start,它在我们更改应用程序时自动更新应用程序.Oracle建议用户迁移到jlink,因为这是新的Oracle技术.到目前为止,这听起来不错.这带来了许多好处:

  1. Windows,Mac和Linux上的本机代码
  2. 代码的模块化(尽管Proguard也这样做)
  3. 使用新的,支持的技术.

问题:我找不到使用jlink自动更新的规范Java解决方案.

有人会认为Java Web Start可以继续使用,特别是如果随便读取这个文档.请注意Java Web Start继续显着列出的事实.但美中不足的是:Oracle正在弃用Java Web Start.它将在JDK 11中删除.那么,正式的道路是什么呢?如果不这样做,人们会采用标准方式吗?

出于本问题的目的,以下内容超出范围:

  • 每年向拥有功能丰富的企业解决方案的人支付巨额资金.要分发的应用程序已经打包到一个小于50MB的jar中.
  • 强制用户运行InstallShield样式应用程序以重新安装新版本,然后在每次推送更新时手动卸载旧版本.那是1990年代的.
  • 将整个应用程序移植为webapp,重写UI和客户端逻辑以适应浏览器并处理所需的所有不兼容性.该应用程序的作者致力于GWT并确切知道Web浏览器的功能.不幸的是,他们也知道所需的努力程度.
  • 允许用户继续运行旧版本的应用程序.这也是1980年代的事情.现代应用程序可以快速更新,并且支持所发布的每个应用程序版本都不可行.这就是我父亲的COBOL应用程序必须处理的事情,他并不喜欢它.我希望技术进步.
  • 继续使用Java Web Start.除非Oracle改变主意,否则Java Web Start是一种注定要失败的技术.

java deployment java-web-start jlink java-9

48
推荐指数
1
解决办法
1163
查看次数

通过setup.py进行cython构建做错了(将所有.so文件放在额外的src目录中)

我正在尝试从使用pyximport转换为使用distutils进行构建,而我却被它在放置.so文件的位置上的奇怪选择所困扰.因此,我决定用cython doc构建教程,但却发现它打印出一条消息说它的构建,但是没有.我在virtualenv,cython,python2.7等都安装在其中.

首先是基础知识:

$ cython --version
Cython version 0.21.2
$ cat setup.py
from distutils.core import setup
from Cython.Build import cythonize
print "hello build"
setup(
    ext_modules = cythonize("helloworld.pyx")
)
$ cat helloworld.pyx
print "hello world"
Run Code Online (Sandbox Code Playgroud)

现在当我构建它时,除了输出中额外的src/src之外,一切看起来都很好:

$ python setup.py build_ext --inplace
hello build
Compiling helloworld.pyx because it changed.
Cythonizing helloworld.pyx
running build_ext
building 'src.helloworld' extension
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c helloworld.c -o build/temp.linux-x86_64-2.7/helloworld.o
creating /home/henry/Projects/eyeserver/dserver/src/src
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG …
Run Code Online (Sandbox Code Playgroud)

python distutils build virtualenv cython

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

Nixos:如何获得包含调试信息的python?

我正在尝试在NixOS上进行cython调试.我可以在nix-shell中轻松安装cython(为简单起见而选择),如下所示:

$ nix-shell -p 'python27.withPackages( p: [ p.cython ])'

$ cat /nix/store/s0w3phb2saixi0a9bzk8pjbczjaz8d7r-python-2.7.14-env/bin/python
#! /nix/store/jgw8hxx7wzkyhb2dr9hwsd9h2caaasdc-bash-4.4-p12/bin/bash -e
export PYTHONHOME="/nix/store/s0w3phb2saixi0a9bzk8pjbczjaz8d7r-python-2.7.14-env"
export PYTHONNOUSERSITE="true"
exec "/nix/store/i3bx1iw2d0i3vh9sa1nf92ynlrw324w8-python-2.7.14/bin/python"  "${extraFlagsArray[@]}" "$@"
Run Code Online (Sandbox Code Playgroud)

然后我们做一个普通的nix-shell只是python,看看我们得到了什么版本的python.

[henry@bollum:~/Projects/eyeserver/nixshell]$ nix-shell -p 'python27'
$ which python
/nix/store/i3bx1iw2d0i3vh9sa1nf92ynlrw324w8-python-2.7.14/bin/python
#          ^^^^^^^
#          non-debug
Run Code Online (Sandbox Code Playgroud)

一切都很好 - 我们在两种情况下都获得了非调试python.如果我们gdb它,我们得到(没有找到调试符号).见最后一行.

$ gdb 
/nix/store/i3bx1iw2d0i3vh9sa1nf92ynlrw324w8-python-2.7.14/bin/python
GNU gdb (GDB) 8.0.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the …
Run Code Online (Sandbox Code Playgroud)

python gdb cython nixos nix

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

如何让Emacs projectile-mode忽略virtualenv Cython项目中出现的大多数文件?

我在使用Cython文件的virtualenv项目上使用Emacs,这意味着大多数文件不是我正在编辑的文件.特别是,我不想要项目中的用户子目录.到目前为止没有问题 - -/usr.projectile文件中工作.现在我想要没有.c文件.这不起作用.文档说我应该把-*.c.projectile文件.这不起作用.也不对-/foo/bar/*.c,也没有任何其他的排列我能想到的.此外,当.projectile文件中的项目具有斜杠时,该find命令会打印许多关于带斜杠的路径的警告.是否有Emacs Lisp方法做更好的事情?或者我只是错过了什么?

ide emacs environment virtualenv projectile

6
推荐指数
1
解决办法
2266
查看次数