在batik的文档中,它展示了如何从类org.apache.batik.dom.svg.SVGDOMImplementation获取DOM实现的实例.
但是,从同一网站下载Batik 1.8后,我无法在任何地方找到这个课程.
我下载了1.7版本,并在batik-svg-dom.jar中找到它,但它不存在于1.8内的同一个jar中(或者据我所知,在该软件包的任何一个jar中).
此类是否已重命名/重构/替换?如果是这样,你如何在蜡染1.8中获得DOM实现的实例?
我正在尝试在raspberry pi上编译一个内核模块(我自己编写).我正在目标环境中编译它.
我得到以下输出:
make -C /lib/modules/3.12.23-1.20140626git25673c3.rpfr20.armv6hl.bcm2708/build M=/home/harmic/horus/ppminput modules
make[1]: Entering directory `/usr/src/kernels/3.12.23-1.20140626git25673c3.rpfr20.armv6hl.bcm2708'
CC [M] /home/harmic/horus/ppminput/ppminput.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: "__aeabi_ldivmod" [/home/harmic/horus/ppminput/ppminput.ko] undefined!
CC /home/harmic/horus/ppminput/ppminput.mod.o
LD [M] /home/harmic/horus/ppminput/ppminput.ko
make[1]: Leaving directory `/usr/src/kernels/3.12.23-1.20140626git25673c3.rpfr20.armv6hl.bcm2708'
Run Code Online (Sandbox Code Playgroud)
果然,如果我尝试插入模块,我得到:
insmod: ERROR: could not insert module ./ppminput.ko: Unknown symbol in module
Run Code Online (Sandbox Code Playgroud)
在syslog中:
Sep 2 22:44:26 pidora kernel: [ 7589.354709] ppminput: Unknown symbol __aeabi_ldivmod (err 0)
Run Code Online (Sandbox Code Playgroud)
在我的模块中,我已经确定导致问题的行:
unsigned int chan_abs_val = tdiff / CHAN_SCALE;
Run Code Online (Sandbox Code Playgroud)
(其中tdiff是s64,CHAN_SCALE是整数文字).
如果我评论该部门,问题就会消失.这是我模块中唯一使用除法的行.
一些谷歌搜索出现了一些对这个问题的引用,但在编译内核模块的上下文中没有找到.
我的makefile看起来像这样:
obj-m += ppminput.o
all:
make -C /lib/modules/$(shell …
Run Code Online (Sandbox Code Playgroud) 我遇到了一个奇怪的问题.我在页面上有一些从Data URI渲染的图像,我想让我的用户将它们复制到剪贴板.
但是,出于某种原因,Firefox和Chrome似乎都不允许我这样做.
以此页面为例:
<!doctype html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta charset="utf-8" />
<title>Clipboard Test</title>
</head>
<body>
<img id="target" src="data:image/png;base64,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"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果你想试试,可以在这里找到.
右键单击图像并选择"复制图像"似乎不适用于Chrome,Firefox或IE11.然而,右键单击并"将图像另存为..."确实有效.
由于它似乎在所有浏览器中都是一致的,我假设必须有一个故意决定不允许复制这些图像.它与CORS有关 - 因为数据URI有不同的来源吗?
有什么我可以做的,以允许这些图像被复制?
这样做的背景是我试图让我的Web应用程序的用户将SVG图像复制到剪贴板上.我能够将SVG图像转换为PNG数据URI,我甚至可以将其保存在用户的计算机上,但我似乎无法将它们放到剪贴板上.如果有其他/更好的方法来做到这一点,请随意指出它们!
更新似乎这可能与接收应用程序而不是浏览器有关.在看到@ Mi-Creativity的评论之后,我使用其他应用程序进行了重新测试.将这些图像粘贴到MS Paint中似乎确实有效,而将它们粘贴到MS Office应用程序中却没有.不幸的是,这是我的用户的主要用例.
在此页面上,Microsoft声明mkdir
不推荐使用POSIX ,而是支持"ISO C++ Conformant" _mkdir
.这似乎适用于其他类似的POSIX功能.
他们是否意味着在他们担心的情况下被弃用,或者是否有一些标准组织(POSIX,ISO?)已弃用它?
它在哪方面更符合ISO C++标准,而ISO标准更符合标准?
不幸的是,我没有访问实际的ISO C++标准,虽然我确实查看了最后一个免费提供的C++ 11草案(N3337),并没有提到我能看到的这些功能.
我问的理由是我经常调用这些POSIX函数,但是我不想根据弃用的标准编写代码.
我正在编写一个外部函数接口 (ffi),以将预先存在的 C++ 库的 API 公开给我正在编写的一些新 Rust 代码。cxx
我为此使用 Rust模块。
我遇到了一些相关的问题Pin
(我必须承认我没有完全掌握这个主题)。
我的 C++ 模块有一个 API,它从拥有这些包含对象的主对象公开指向某些包含对象的指针。这是一个人为的例子:
// test.hpp
#include <string>
#include <memory>
class Row {
std::string row_data;
public:
void set_value(const std::string& new_value) {
this->row_data = new_value;
}
};
class Table {
Row row;
public:
Table() : row() {};
Row* get_row() {
return &this->row;
}
};
inline std::unique_ptr<Table> make_table() {
return std::make_unique<Table>();
}
Run Code Online (Sandbox Code Playgroud)
这个想法是,您创建一个Table
对象,然后该对象允许您获取指向它的指针Row
,以便您可以操作它。
我创建 Rust FFI 的尝试如下所示:
// main.rs
use std::pin::Pin;
use cxx::let_cxx_string;
#[cxx::bridge] …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序,需要与Web服务器建立HTTPS连接,需要使用SSL客户端身份验证.
该程序的用户将使用来自Windows环境的证书来验证自己.
我发现了大量示例说明如何设置客户端身份验证,如果我首先将证书导出为pkcs12格式,它可以正常工作,但我不想强迫我的用户这样做.但是,当我尝试使用MSCAPI时,它总是会发生异常:
javax.net.ssl.SSLHandshakeException: Error signing certificate verify
at sun.security.ssl.Alerts.getSSLException(Unknown Source)
at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
at sun.security.ssl.ClientHandshaker.serverHelloDone(Unknown Source)
at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
at sun.security.ssl.Handshaker.processLoop(Unknown Source)
at sun.security.ssl.Handshaker.process_record(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
at sun.security.ssl.AppInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read1(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at com.example.Win2.main(Win2.java:62)
Caused by: java.security.SignatureException: Bad Key.
at sun.security.mscapi.RSASignature.signHash(Native Method)
at sun.security.mscapi.RSASignature.engineSign(RSASignature.java:390)
at java.security.Signature$Delegate.engineSign(Unknown Source)
at java.security.Signature.sign(Unknown Source) …
Run Code Online (Sandbox Code Playgroud) 我试图搜索答案,但我发现很难找到这种"确切"的例子.我对指针的指针知之甚少,我觉得有更多的东西存在于皮肤之下,而不仅仅是指针.
那你们怎么翻译呢?
void free(shame_1 * const * const group_1);
Run Code Online (Sandbox Code Playgroud)
如果我把它翻译为const group_1指向shame_1的const指针,我是对的吗?
谢谢.
我有一个最初是为Linux编写的程序,但我现在要求它在Solaris 10上运行.
该程序的一部分使用timegm函数将a struct tm
转换为time_t
epoch秒值.输入时间以UTC为参考.
尝试在Solaris上编译此程序,它失败,因为timegm
找不到.经过一些谷歌搜索后,我意识到很久以前这个功能已经从Solaris中删除了(甚至Linux手册也建议不要使用它,因为它没有标准化).
但是到目前为止,我还没有找到一个替代函数,它接受struct tm
UTC参考并转换为纪元时间.我在网上找到的大多数参考建议使用mktime,但该函数会参考系统本地时区来解释输入.
请注意,我不希望使用tzset
强制时区为UTC,因为这会对程序产生其他副作用.
所以我的问题是:struct tm
在没有timegm
?的情况下,如何将一个相对于UTC表示的故障时间值转换为一个纪元时间?
该程序是用C++编写的,所以我不仅限于C解决方案,尽管我不想开始批量重写以使用一些额外的时间库.
我建立一个文档准备系统,它应该是能够呈现相当大的文件。
输入采用pandoc风格的降价促销。为了使文档更易于管理,将有每部分文档一个降价文件。例如,文档可能如下所示:
文件: 01_introduction.md
Introduction
============
This is the introduction
Section 1.1
-----------
This is a section
Section 1.2
-----------
This is another section
Run Code Online (Sandbox Code Playgroud)
文件: 02_functionaldescription.md
Functional Description
======================
Section 2.1
-----------
This is a section
Section 2.2
-----------
This is another section
Run Code Online (Sandbox Code Playgroud)
其中一个输出格式是是HTML。我想每个部分生成一个HTML输出文件(对应于输入文件),并生成一个目录主页面。TOC母版页应包含指向其他页面标题的链接。
我没有问题让pandoc产生单独的部分html文件。我什至可以得到它来更正节号,因此它们都适合作为一个大文档的一部分。使用过滤器,我也设法纠正了横断面链接。
问题是内容的主表。如果我将所有单个文件输入一个命令行,就像这样:
pandoc -f markdown -t html --number-sections --toc -s *.md
Run Code Online (Sandbox Code Playgroud)
那么TOC就是这个样子输出看起来:
<ul>
<li><a href="#introduction"><span class="toc-section-number">1</span> Introduction</a><ul>
<li><a href="#section-1.1"><span class="toc-section-number">1.1</span> Section 1.1</a></li>
<li><a href="#section-1.2"><span class="toc-section-number">1.2</span> Section 1.2</a></li>
</ul></li>
<li><a href="#functional-description"><span class="toc-section-number">2</span> Functional Description</a><ul>
<li><a href="#section-2.1"><span class="toc-section-number">2.1</span> …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个库,它将利用 LLVM(通过inkwell)来JIT 编译一些函数。这些函数需要能够回调到我的代码中的一些 rust 函数中。
我让它工作了,但我的单元测试不起作用,因为似乎在构建测试时回调函数被优化掉了。这些回调函数不会被 Rust 代码本身调用——只能被动态生成的 JIT 函数调用——所以我猜链接器认为它们没有被使用并删除它们。
如果我在单元测试中从 rust 代码中调用它们,那么它们不会被删除 - 但这不是一个理想的解决方法。另请注意,当包作为库构建时,函数不会被删除,只有在构建测试时才会删除。
下面是一个MVCE。
// lib.rs
use inkwell::{OptimizationLevel, context::Context};
use inkwell::execution_engine::JitFunction;
#[no_mangle]
pub extern "C" fn my_callback(x:i64) {
println!("Called Back x={}", x);
}
type FuncType = unsafe extern "C" fn();
pub fn compile_fn() {
let context = Context::create();
let module = context.create_module("test");
let execution_engine = module.create_jit_execution_engine(OptimizationLevel::None).unwrap();
let builder = context.create_builder();
let func_type = context.void_type().fn_type(&[], false);
let function = module.add_function("test", func_type, None);
let basic_block = context.append_basic_block(function, "entry"); …
Run Code Online (Sandbox Code Playgroud)