小编sha*_*naw的帖子

Perl类命名约定

假设我创建了一个名为的类Bar.该文件Bar.pm开始

package Bar;
Run Code Online (Sandbox Code Playgroud)

为避免与其他Bar类冲突,我将文件放在子目录中Foo.所以现在,当我使用课程时,我必须写

use Foo::Bar;
Run Code Online (Sandbox Code Playgroud)

我的问题是,我是否需要将类的名称更改为Foo::Bar换句话说,我是否需要改变的第一线Bar.pm,以

package Foo::Bar;
Run Code Online (Sandbox Code Playgroud)

?问题是,如果我这样做,我现在必须将该类称为Foo::Bar无处不在,例如

my $obj = Foo::Bar->new();
Foo::Bar->doClassMethod();
Run Code Online (Sandbox Code Playgroud)

这是恼人的(同样的问题在讨论这个问题),尤其是因为我很喜欢的类方法.

perl

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

NSLSONSerialization在DBL_MAX上失败

我遇到了包含大型double的JSON反序列化的问题.基本上,我可以序列化这样的字典

NSDictionary *dict = @{@"doubleVal": @DBL_MAX};
Run Code Online (Sandbox Code Playgroud)

哪个序列化没有麻烦

{"doubleVal":1.797693134862316e+308}
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试对数据进行反序列化,它就会爆炸.

一个小单元测试,演示了这个问题:

- (void)test_600_doubleJSON {
    NSDictionary *dict = @{@"doubleVal": @DBL_MAX};
    NSError *jsonError, *jsonResponseError;

    NSData *data = [NSJSONSerialization dataWithJSONObject:dict
                                                   options:0
                                                     error:&jsonError];
    id jsonResponse = [NSJSONSerialization JSONObjectWithData:data
                                                      options:0
                                                        error:&jsonResponseError];

    STAssertNil(jsonError, @"JSON error: %@", jsonError.localizedDescription);
    STAssertNil(jsonResponseError,
                @"JSON response error: %@",
                jsonResponseError.localizedDescription);
}
Run Code Online (Sandbox Code Playgroud)

最后一个断言失败,如下:

JSON response error: The operation couldn’t be completed. (Cocoa error 3840.)
Run Code Online (Sandbox Code Playgroud)

如果我DBL_MAX用(更大)更小的值替换,则测试按预期完成.

parsing json ios

7
推荐指数
0
解决办法
456
查看次数

在Helvetica的PDFBox"特殊"字符

我正在使用PDFBox 2.0.0-SNAPSHOT在Java中构建PDF.它对于非常基本的字符(例如[a-zA-Z9-0])工作正常,但是我为稍微更高级的字符(例如(quoteright))收到编码错误.这是我的代码:

PDDocument pdf = new PDDocument();
PDPage page = new PDPage(PDRectangle.A4);
pdf.addPage(page);

PDPageContentStream contents = new PDPageContentStream(pdf, page);
PDFont font = PDType1Font.HELVETICA;
contents.beginText();
contents.setFont(font, 12);

// ...

String text = "’";
contents.showText(text);

contents.endText();
contents.close();
Run Code Online (Sandbox Code Playgroud)

我得到这个例外:

无法在字体Helvetica中编码U + 2019.Type 1字体仅支持8位代码点

我在PDF规范的 D.1节中查找了非嵌入字体支持的字符,并且应支持此字符.

的确,如果我使用这个技巧,我可以插入正确的字符:

// ...

// String text = "’";
// contents.showText(text);
byte[] commands = "(x) Tj ".getBytes();
commands[1] = (byte)145;    // = 221 octal = quoteright in WinAnsi
contents.appendRawCommands(commands);

// …
Run Code Online (Sandbox Code Playgroud)

java pdfbox

5
推荐指数
2
解决办法
4848
查看次数

Clojure输出绑定在for循环中重置

我是Clojure的新手,我试图通过重新绑定将输出重定向到文件*out*.在一个简单的例子中,它很好地工作:

(binding [*out* (new java.io.FileWriter "test.txt")]
  (println "Hi"))
Run Code Online (Sandbox Code Playgroud)

这符合我的预期,将"Hi"打印到文件test.txt.但是,如果我引入一个for循环,事情就会出错:

(binding [*out* (new java.io.FileWriter "test.txt")]
  (for [x [1 2]]
    (println "Hi" x)))
Run Code Online (Sandbox Code Playgroud)

这次,所有输出都转到stdout,文件为空.这里发生了什么?

我正在使用Leiningen,如果这有任何区别:

Leiningen 2.0.0 on Java 1.7.0_13 Java HotSpot(TM) 64-Bit Server VM
Run Code Online (Sandbox Code Playgroud)

clojure leiningen

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

标签 统计

clojure ×1

ios ×1

java ×1

json ×1

leiningen ×1

parsing ×1

pdfbox ×1

perl ×1