似乎我一直在寻找很长一段时间,并没有找到一个很好的,简单的答案来解决我的问题.
我正在使用XCode和Cocoa/ObjC,我正在尝试创建一个NSTableView,它将NSDictionary/Array中的值加载到单元格的不同部分.
例如,我正在尝试将NSImage,NSTextField和其他项目放入自定义单元格(以及背景图像).但是,我找不到如何创建这个的简单答案..
我已经用UITableViews编写了一段时间的iPhone代码,但似乎无法找到与NSTableViews相似的方式.
任何帮助都会非常棒!
谢谢
多米尼克
我们的产品是一个用Java编写的独立OS X桌面应用程序.我们包含一个嵌入式JRE来运行我们的软件.
对于JRE启动的规则似乎放在任何JAR文件/usr/lib/java,/Library/Java/Extensions以及~/Library/Java/Extensions在类路径中,我们明确地包含在类路径中的库之前.
如果用户在任何Java扩展机制文件夹中都有任何JAR文件,那么这些JAR文件将添加到我们的类路径中.最近出现了一个支持事件,因为客户有一个旧版本的关键第三方库/usr/lib/java- 这导致我们的软件在启动时意外崩溃.
在调用我们的应用程序中嵌入的JRE时,我无法确定如何禁用此扩展机制.我怎样才能做到这一点?
────────
注意:似乎这个扩展机制已弃用,最终将被删除:https://blogs.oracle.com/java-platform-group/entry/planning_safe_removal_of_under)
我正在使用NSTextView来允许多行输入.但是,由于我的应用程序的性质,当用户按TAB时,用户将更容易移动到下一个输入元素.
如何让TAB退出NSTextView,同时保持Enter键的换行符?
我执行以下bash脚本:
#!/bin/bash
version=$1
echo $version
sed 's/\${version.number}/$version/' template.txt > readme.txt
Run Code Online (Sandbox Code Playgroud)
我期望用变量"version"的内容替换$ {version.number}的所有实例.而是插入文字文本$ version.
我需要做什么才能使sed使用$ version的当前值?
据说Java在性能方面比python快10倍.这也是我从基准测试中看到的.但真正降低Java的是JVM启动时间.
这是我做的一个测试:
$time xlsx2csv.py Types\ of\ ESI\ v2.doc-emb-Package-9
...
<output skipped>
real 0m0.085s
user 0m0.072s
sys 0m0.013s
$time java -jar -client /usr/local/bin/tika-app-0.7.jar -m Types\ of\ ESI\ v2.doc-emb-Package-9
real 0m2.055s
user 0m2.433s
sys 0m0.078s
Run Code Online (Sandbox Code Playgroud)
同样的文件,Docx和Python中的12 KB ms XLSX嵌入文件快25倍!WTH!
Java需要2.055秒.
我知道这完全是由于启动时间,但我需要的是我需要通过脚本调用它来解析一些我不想在python中重新发明轮子的文件.
但是,为了解析10k +文件,它只是不实用..
无论如何要加快它(我已经尝试过-client选项,它只加速这么少(20%)).
我的另一个想法?将其作为长时运行的守护进程运行,在本地使用UDP或Linux-ICP套接字进行通信?
我找不到任何具体的文档来回答这个问题.
我写了一些简单的测试代码来解决OS X 10.12上Java 1.8上实际发生的事情:
public static void main(String[] _args) throws InterruptedException {
while (true) {
int calendarTimezoneOffset = Calendar.getInstance().get(Calendar.ZONE_OFFSET);
System.out.println("calendarTimezoneOffset = " + calendarTimezoneOffset);
ZoneOffset offset = ZonedDateTime.now().getOffset();
System.out.println("offset = " + offset);
Thread.sleep(1000);
}
}
Run Code Online (Sandbox Code Playgroud)
旧方式(Calendar)和新方式(Java 8的日期和时间库)都没有检测到我在JVM运行时对操作系统的时区所做的任何更改.我需要停止并启动代码以获取更改的时区.
这是设计的吗?这是JVM实现和操作系统的可靠行为吗?
我正在使用Java 6,Tomcat 6和Metro.我使用WebService和WebMethod注释来公开我的Web服务.我想获得有关请求的信息.我尝试了以下代码,但wsCtxt始终为null.我必须采取什么步骤,不为WebServiceContext得到空.
换句话说:如何执行以下行来获取wsCtxt的非null值?
MessageContext msgCtxt = wsCtxt.getMessageContext();
@WebService
public class MyService{
@Resource
WebServiceContext wsCtxt;
@WebMethod
public void myWebMethod(){
MessageContext msgCtxt = wsCtxt.getMessageContext();
HttpServletRequest req = (HttpServletRequest)msgCtxt.get(MessageContext.SERVLET_REQUEST);
String clientIP = req.getRemoteAddr();
}
Run Code Online (Sandbox Code Playgroud) 我用Java启动子进程如下:
final String[] cmd = {"<childProcessName>"};
Process process = Runtime.getRuntime().exec(cmd);
Run Code Online (Sandbox Code Playgroud)
它现在在后台运行.一切都好又好.
如果我现在的程序崩溃(这是仍然在开发中:-))子进程似乎仍流连.如何在父Java进程终止时自动结束?
如果它有帮助,我使用的是Mac OS X 10.5
我有这段代码来演示这个问题:
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().add(new JEditorPane("text/html", "Hello cruel world<br>\n<font color=red>Goodbye cruel world</font><br>\n<br>\nHello again<br>\n"));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
如果您选择应用程序启动后框架中显示的所有文本,您可以将其复制并粘贴到MS Word,Apple的页面或邮件中,文本格式正确.但是,如果将其粘贴到纯文本编辑器(如TextEdit,Smultron或Skype聊天窗口)中,则所有粘贴的内容都在一行中.
如何才能将复制到剪贴板的文本粘贴到保留的换行符?
我在Mac OS X 10.7上运行我的代码
java ×6
cocoa ×2
jvm ×2
macos ×2
objective-c ×2
annotations ×1
bash ×1
clipboard ×1
copy ×1
daemon ×1
jeditorpane ×1
mysql ×1
nstextview ×1
osx-leopard ×1
performance ×1
runtime ×1
scripting ×1
sed ×1
servlets ×1
shutdown ×1
startup ×1
subprocess ×1
swing ×1
web-services ×1
xcode ×1