小编Clé*_*ent的帖子

垂直居中标题页

我正试图用乳胶在一个自定义大小的页面上垂直居中标题.我写了下面的代码,但由于某种原因它不是中心.有人可以指出我有什么问题吗?

谢谢!

\documentclass{article}
\setlength{\pdfpagewidth}{88.184mm}
\setlength{\pdfpageheight}{113.854mm}

\usepackage[margin=0.5cm, paperwidth=88.184mm, paperheight=113.854mm]{geometry}

\title{[[title]]}
\date{[[date]]}
\author{[[author]]}

\begin{document}
    \vspace{\fill}
    \maketitle
    \vspace{\fill}

    \newpage

    [[text]]
\end{document}
Run Code Online (Sandbox Code Playgroud)

latex vertical-alignment

33
推荐指数
2
解决办法
9万
查看次数

什么会影响超过64个字符的字符串的Python字符串比较性能?

我正在尝试评估是否比较两个字符串随着它们的长度增加而变慢.我的计算建议比较字符串应该采用摊销的常数时间,但我的Python实验会产生奇怪的结果:

下面是字符串长度(1到400)与时间(以毫秒为单位)的关系图.禁用自动垃圾收集,并gc.collect在每次迭代之间运行.

时间与字符串长度

我每次比较100万个随机字符串,计算匹配如下.过程重复50次,然后取所有测量时间的min.

for index in range(COUNT):
    if v1[index] == v2[index]:
        matches += 1
    else:
        non_matches += 1
Run Code Online (Sandbox Code Playgroud)

什么可能解释长度64附近的突然增加?

注意:下面的代码片段可以用来尝试重现假设问题v1v2是长的随机字符串的两个列表n和COUNT是它们的长度.

timeit.timeit("for i in range(COUNT): v1[i] == v2[i]",
  "from __main__ import COUNT, v1, v2", number=50)
Run Code Online (Sandbox Code Playgroud)

进一步说明:我做了两个额外的测试:比较字符串is而不是==完全抑制问题,性能大约是210ms/1M比较.由于已经提到实习,我确保在每根弦之后增加一个空格,这样可以防止实习; 这不会改变任何事情.那不是实习吗?

python string performance time-complexity

26
推荐指数
1
解决办法
4534
查看次数

CSS:在表格上设置最大宽度

我正在用html生成应用程序日志,我偶然发现了一个相当恼人的问题.我有以下布局:

| Action | Result | File path           |
Run Code Online (Sandbox Code Playgroud)

例如

| Copy | Success | C:\VeryVeryVeryLongF |
|      |         | ileName.txt          |
Run Code Online (Sandbox Code Playgroud)

第1列和第2列仅显示短标签:其内容应保留在一行中.另一方面,第3列可能包含非常长的文件路径,如果它们不能适合单行,则应该跨越多行.

为了达到这个目的,我已经white-space: nowrap;在第一列和white-space: normal; word-break: break-all;最后一列使用了.此外,该表有width:100%.

这在Chrome和IE中很有用,但在Firefox中却不行:简而言之,我似乎无法找到一种方法来告诉Firefox 8.0不要放大表格的最后一列,而是让文本跨越多行.在我之前的例子中,Firefox打印

| Copy | Success | C:\VeryVeryVeryLongFileName.txt |
Run Code Online (Sandbox Code Playgroud)

前两列中的文本可能会有所不同,因此我无法手动设置其宽度并使用table-layout: fixed.我也试过max-width在桌子上设置,并将其包装成一个div,但无济于事.

请参阅http://jsfiddle.net/GQsFx/6/获取真实示例=)如何让Firefox像Chrome一样?

html css firefox width css-tables

15
推荐指数
2
解决办法
2万
查看次数

借用检查器没有意识到`clear`会丢弃对局部变量的引用

以下代码从stdin读取空格分隔的记录,并将逗号分隔的记录写入stdout.即使使用优化的构建,它也相当慢(大约是使用的两倍,比如awk).

use std::io::BufRead;

fn main() {
    let stdin = std::io::stdin();
    for line in stdin.lock().lines().map(|x| x.unwrap()) {
        let fields: Vec<_> = line.split(' ').collect();
        println!("{}", fields.join(","));
    }
}
Run Code Online (Sandbox Code Playgroud)

一个明显的改进是使用itertools连接而不分配向量(该collect调用导致分配).但是,我尝试了一种不同的方法:

fn main() {
    let stdin = std::io::stdin();
    let mut cache = Vec::<&str>::new();
    for line in stdin.lock().lines().map(|x| x.unwrap()) {
        cache.extend(line.split(' '));
        println!("{}", cache.join(","));
        cache.clear();
    }
}
Run Code Online (Sandbox Code Playgroud)

此版本尝试反复使用相同的向量.不幸的是,编译器抱怨:

error: `line` does not live long enough
 --> src/main.rs:7:22
  |
7 |         cache.extend(line.split(' '));
  |                      ^^^^
  |
note: reference must be valid for …
Run Code Online (Sandbox Code Playgroud)

lifetime rust borrow-checker

15
推荐指数
3
解决办法
609
查看次数

如何通过常用的System.IO类访问网络驱动器?

我的软件处理文件的多个操作,现在我已经完成了使用System.IO类编写相关函数.

我现在需要添加对网络驱动器的支持.使用映射非常有效(虽然Directory.GetFiles有点低,我不知道为什么),但我现在希望能够直接处理诸如的路径\\192.168.0.10\Shared Folder\MyDrive.有没有办法处理这种类型的路径,除了使用新生成的路径将驱动器安装到可用的驱动器号,然后卸载?

.net vb.net filesystems io network-drive

14
推荐指数
1
解决办法
5万
查看次数

为什么gcc编译f(1199)和f(1200)不同?

是什么原因导致ARM上的GCC 7.2.1使用来自memory(lr)的负载来处理某些常量,以及mov在某些其他情况下使用immediate()?具体来说,我看到以下内容:

用于ARM的GCC 7.2.1编译:

extern void abc(int);
int test() { abc(1199); return 0; }
Run Code Online (Sandbox Code Playgroud)

......进入那个:

test():
  push {r4, lr}
  ldr r0, .L4  // ??!
  bl abc(int)
  mov r0, #0
  pop {r4, lr}
  bx lr
.L4:
  .word 1199
Run Code Online (Sandbox Code Playgroud)

还有这个:

extern void abc(int);
int test() { abc(1200); return 0; }
Run Code Online (Sandbox Code Playgroud)

......进入那个:

test():
  push {r4, lr}
  mov r0, #1200  // OK
  bl abc(int)
  mov r0, #0
  pop {r4, lr}
  bx lr
Run Code Online (Sandbox Code Playgroud)

起初我预计1200会是某种独特的截止,但在1024(1024产生a mov r0, #1024,而1025使用ldr)和其他值时还有其他截止值.

为什么GCC会使用内存中的负载来获取常量,而不是使用立即数?

c gcc arm micro-optimization

14
推荐指数
1
解决办法
168
查看次数

我可以编写一个抛出异常而不是返回布尔值的类型保护吗?

我有一个在多个函数中使用相同类型保护的类;像这样:

function validData(d: Data | null): d is Data {
    return d !== null;
}

class C {
    data: Data | null;

    public doA() {
        if (!validData(this.data))
            throw new Error("Invalid data");
        /* … */
    }

    public doB() {
        if (!validData(this.data))
            throw new Error("Invalid data");
        /* … */
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以重构此代码以将错误移到类型保护中吗?像这样的东西:

function assertData(d: Data | null): ??? {
    if (d === null)
        throw new Error("Invalid data");
}
Run Code Online (Sandbox Code Playgroud)

...我可以这样使用:

class C {
    data: Data | null;

    public doA() {
        assertData(this.data);
        /* … …
Run Code Online (Sandbox Code Playgroud)

nullable assertions typescript

12
推荐指数
1
解决办法
1940
查看次数

设置Notepad ++和NppExec以从python中打印unicode字符

我有一个utf-8编码文件cjk.py:

print("??")
Run Code Online (Sandbox Code Playgroud)

不出所料,运行python cjk.py收益率

Traceback (most recent call last):
  File "cjk.py", line 1, in <module>
    print('\u6253\u5370')
  File "C:\Python33\lib\encodings\cp850.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-1: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)

然而运行idle -r cjk.py完美:

??
Run Code Online (Sandbox Code Playgroud)

我可以配置notepad ++的NppExec插件,使其表现得像空闲吗?我正在尝试将输入和输出编码设置为UTF-8,但无效(与python cjk.py从控制台运行时相同的异常)

python unicode notepad++ nppexec

11
推荐指数
1
解决办法
1639
查看次数

计算任何一组间隔未涵盖的最小正整数

几个星期前有人在这里发布了这个问题,但是在没有事先研究的情况下看起来非常像家庭作业,并且在得到一些downvotes之后,OP立即删除了它.

问题本身相当有趣,而且我一直在考虑它一周而没有找到令人满意的解决方案.希望有人可以帮忙吗?

现在的问题是:给出N个整间隔的清单,其范围可以从采取任何值0,找到最小的整数i,使得i不属于任何输入间隔.

例如,如果给定列表[3,5] [2,8] [0,3] [10,13](N = 4),则算法应该返回9.

我能想到的最简单的解决方案,O(n log(n))包括三个步骤:

  1. 通过增加下限对时间间隔进行排序
    • 如果最小下界> 0,则返回0;
    • 否则重复合并第一个间隔和第二个间隔,直到第一个间隔(比如说[a, b])不接触第二个间隔(比如说[c, d]) - 也就是说,直到b + 1 <c,或直到只有一个间隔.
  2. 返回 b + 1

这个简单的解决方案可以运行O(n log(n)),但原始海报写道,算法应该运行O(n).如果间隔已经排序,这是微不足道的,但OP提供的示例包括未排序的间隔.我想它必须与界限有关,但我不确定是什么......哈希?线性时间排序?欢迎提出想法.


这是上述算法的粗略python实现:

def merge(first, second):
    (a, b), (c, d) = first, second
    if c <= b + 1:
        return (a, max(b, d))
    else:
        return False …
Run Code Online (Sandbox Code Playgroud)

python algorithm big-o time-complexity intervals

11
推荐指数
1
解决办法
665
查看次数

如何使用CSS将字符置于框中心?

换句话说,如何忽略角色的深度和上升而不是基于其边界框将其垂直放置在周围的框中?

这是一个最小的html示例:

.box {
  display: inline-block;
  width: 1em;
  height: 1em;
  line-height: 1em;
  border: 1px solid black;
  text-align: center;
}
Run Code Online (Sandbox Code Playgroud)
<span class="box">?</span>
<span class="box">,</span>
<span class="box">`</span>
Run Code Online (Sandbox Code Playgroud)

它产生以下内容:

非居中的角色

如何更改它以产生以下内容?

居中的人物

CSS解决方案如果存在则是首选,但Javascript作为最后的手段是可以接受的.我正在寻找一个通用的解决方案,而不仅仅是图中的三个字符.我的页面中会有很多这样的框,所以性能(如果使用Javascript)很重要.

为了进一步澄清事情,我将在LaTeX中执行此操作:

\newlength{\desiredboxsize}
\setlength{\desiredboxsize}{1em}
\newcommand*{\centercharinbox}[1]{%
  % Force width
  \makebox[\desiredboxsize]{%
    % Force height and center vertically
    \raisebox{\dimexpr .5\desiredboxsize - .5\height \relax}[\desiredboxsize][0pt]{%
      % Cancel depth
      \raisebox{\depth}{#1}}}}
Run Code Online (Sandbox Code Playgroud)

css typography centering

10
推荐指数
2
解决办法
261
查看次数