小编div*_*ges的帖子

pdf.js:获取文本颜色

我有一个简单的pdf文件,其中包含"Hello world"字样,每个字体都有不同的颜色.

我正在加载PDF,如下所示:

PDFJS.getDocument('test.pdf').then( onPDF );

function onPDF( pdf )
{
    pdf.getPage( 1 ).then( onPage );
}

function onPage( page )
{
    page.getTextContent().then( onText );
}

function onText( text )
{   
    console.log( JSON.stringify( text ) );
}
Run Code Online (Sandbox Code Playgroud)

我得到一个像这样的JSON输出:

{
    "items" : [{
            "str" : "Hello ",
            "dir" : "ltr",
            "width" : 29.592,
            "height" : 12,
            "transform" : [12, 0, 0, 12, 56.8, 774.1],
            "fontName" : "g_font_1"
        }, {
            "str" : "world",
            "dir" : "ltr",
            "width" : 27.983999999999998,
            "height" : 12, …
Run Code Online (Sandbox Code Playgroud)

javascript pdf.js

13
推荐指数
2
解决办法
2827
查看次数

Groovy:与a.intersect(b)和b.intersect(a)的区别

为什么在Groovy中,当我创建2个列表时,如果我执行a.intersect(b)和b.intersect(a)会有区别:

def list1 = ["hello", "world", "world"];
def list2 = ["world", "world", "world"];

println( "Intersect list1 with list2: " + list1.intersect( list2 ) );
println( "Intersect list2 with list1: " + list2.intersect( list1) );
Run Code Online (Sandbox Code Playgroud)

痕迹:

Intersect list1 with list2: [world, world, world]
Intersect list2 with list1: [world, world]
Run Code Online (Sandbox Code Playgroud)

(你可以在这里复制:http://groovyconsole.appspot.com/如果你想测试它)

如果数组都包含唯一元素,那么它可以正常工作.一旦你开始添加重复项,它就会变得奇怪:

def list1 = ["hello", "world", "test", "test"];
def list2 = ["world", "world", "world", "test"];

println( "Intersect list1 with list2: " + list1.intersect( list2 ) );
println( …
Run Code Online (Sandbox Code Playgroud)

arrays groovy intersect

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

迭代时从地图中删除键/值

我正在创建这样的地图:

def myMap = [:]
Run Code Online (Sandbox Code Playgroud)

映射基本上是键的对象和值的int.当我遍历地图时,我会减少该值,如果它为0,我将其删除.我已经尝试了myMap.remove(),但我得到了ConcurrentModificationError- 这是公平的.所以我继续使用it.remove(),这给了我奇怪的结果.

基本上,我的代码是这样的:

myMap.each {
    it.value--;

    if( it.value <= 0 )
        it.remove();
}
Run Code Online (Sandbox Code Playgroud)

很简单.我的问题是,如果我myMap.size()在删除之前和之后打印,它们都是一样的.如果我打电话myMap.containsKey( key ),它给了我true,关键还在那里.

但是,如果我打印出这样的地图:

myMap.each { System.out.println( "$it.key: $it.value" ); }
Run Code Online (Sandbox Code Playgroud)

我什么都没得到,并且打电话myMap.keySet()然后myMap.values()回来.

有谁知道发生了什么?

groovy map

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

Button内的实例名称有问题

我在Flash中创建了一个按钮,在里面我有一个TextField和一个MovieClip,两者都设置了实例名称.它们覆盖按钮的所有4个框架,没有关键帧.

我发现我无法使用我设置的实例名称访问对象,所以我使用这段代码来查看发生了什么:

var obj:DisplayObject = this.m_graphics.btnChange.upState;
for ( var i:int = 0; i < obj.numChildren; i++ )
{
    trace( "We have an object at " + i + " - " + obj.getChildAt( i ) + ": " + obj.getChildAt( i ).name );
    var t:TextField = obj.getChildAt( i ) as TextField;
    if ( t == null )
        continue;

    trace( "  The textfield has text '" + t.text + "' );
}
Run Code Online (Sandbox Code Playgroud)

我得到这个作为输出:

We have an object at 0 - [object …
Run Code Online (Sandbox Code Playgroud)

flash actionscript-3 textfield

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

Objective-C:"格式字符串不是字符串文字(可能不安全)"用宏警告

我正在使用宏来简化返回本地化字符串,如下所示:

#define GetLocalStr(key, ...) \
    [NSString stringWithFormat:[[NSBundle mainBundle] localizedStringForKey:key value:@"" table:nil], ##__VA_ARGS__]
Run Code Online (Sandbox Code Playgroud)

基本上,如果您在本地化字符串文件中有一个条目,如"name" = "My name is %@";调用

GetLocalStr( @"name", @"Foo" );
Run Code Online (Sandbox Code Playgroud)

将返回NSString @"My name is Foo"

然而,当我运行它时,如:

NSString * str = GetLocalStr( @"name", @"Foo" );
Run Code Online (Sandbox Code Playgroud)

我得到"格式字符串不是字符串文字"警告.即使遵循关于此警告的其他答案的建议并将其替换为:

NSString * str = [NSString stringWithFormat:@"%@", GetLocalStr( @"name", @"Foo" )];
Run Code Online (Sandbox Code Playgroud)

我仍然得到警告,此外,它有点打破宏观使生活更容易的点.

如何摆脱GetLocalStr#pragma suppressors中包含所有调用的警告?

编辑27/08

在通过CRD的答案并进行更多测试之后,似乎我对错误做了一个错误的假设.澄清:

本地化字符串文件:

"TestNoArgs" = "Hello world";
"TestArgs" = "Hello world %@";
Run Code Online (Sandbox Code Playgroud)

码:

NSString * str1 = GetLocalStr( @"TestNoArgs" ); // gives warning
NSString * str2 …
Run Code Online (Sandbox Code Playgroud)

string macros objective-c ios

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

TcpClient / NetworkStream未检测到断开连接

我使用TcpClient和为游戏创建了一个简单的持久套接字连接NetworkStream。连接,发送消息和正常断开连接都没有问题(退出应用程序/服务器关闭/等)。

但是,在某些情况下,客户端无法检测到与服务器的断开连接时,我遇到了一些问题。我要测试的最简单方法是拔出wifi盒上的网络电缆,或将手机设置为飞行模式,但这是在游戏中发生的,否则应该是稳定的wifi。

仔细阅读NetworkStream等等的文档,它说检测到断开连接的唯一方法是尝试写入套接字。相当公平,除了,当我尝试时,写入通过就好像没有什么不对。我可以这样写多条消息,一切似乎都很好。只有当我重新插入电缆时,它才会断开连接(所有消息都已缓冲?)。

TcpClient设置为NoDelayFlush()无论如何每次写入后都会有一个被调用。

我尝试过的

  • 写信息给NetworkStream-没有喜悦
  • CanWriteConnected等一切回归真实
  • TcpClient.Client.Poll( 1000, SelectMode.SelectWrite ); -返回true
  • TcpClient.Client.Poll( 1000, SelectMode.SelectRead ) && TcpClient.Client.Available == 0 -返回true
  • TcpClient.Client.Receive(buffer, SocketFlags.Peek) == 0-连接时,阻塞约10-20s,然后返回true。当没有服务器时,永远阻塞(?)
  • NetworkStream.Write() -不抛出错误
  • NetworkStream.BeginWrite()-不会引发错误(即使在调用时也不会EndWrite()
  • 设置WriteTimeout-无效
  • 有一个特定的时间,我们没有收到来自服务器的消息(通常有一个保持活动状态)-我有这个,但是删除了它,因为由于滞后等原因,我们收到了很多错误的肯定消息(某些客户端会看到10到20秒之间的延迟)

那我在这做错了吗?NetworkStream写入应断开连接的套接字时,是否有任何方法可以引发错误(如应有的错误)?

我对保持活动没有任何问题(默认情况下,服务器将通知客户端一段时间内未收到任何消息,并且客户端将发送心跳信号),但在几分钟内,根据NetworkStream一切笨拙的。

它是针对游戏的,因此理想情况下,检测应该足够快(因为用户仍然可以在游戏中移动,直到需要进行服务器调用为止,其中有些会阻塞UI,因此游戏似乎坏了)。

我正在使用Unity,所以它是.Net 2.0

tcp networkstream tcpclient unity-game-engine

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

TreeSet add()返回false

我正在用Java实现一个A*算法,我使用TreeSet作为保持打开列表排序的简单方法.如果你不熟悉A*,它基本上是一个从A到B获得最短路径的函数,而开放列表是Tiles根据它们与B的接近度排序的节点列表(在我的例子中).

我的对象实现了一个compareTo()排序函数,如下所示:

@Override
public int compareTo( Tile b ) 
{
    return ( this.f< b.f) ? -1 : ( this.f> b.f) ? 1 : 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试将一些图块添加到打开列表时,我的问题出现了 - TreeSet似乎compareTo()用来检查对象是否已经存在,而不是equals().由于两个不同Tilesf值可能具有相同的值,因此TreeSet认为该对象已存在于列表中并且不会添加它.

根据文档(或至少,我如何阅读它),它应该使用equals:

"如果指定的元素不存在,则将其添加到此集合.更正式地说,如果集合中不包含元素e2,则将指定的元素e添加到此集合中(e == null?e2 == null:e.equals( e2))." (强调我的).

我怎样才能获得TreeSet的使用equals()时调用add()contains()compareTo()排序?对于info,我的Tile类不会覆盖该equals()函数,因此它应该是默认值return a == b.

如果我不想用TreeSet做什么,那么我应该使用的正确集合是什么?

java treeset

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

PHPMailer和Gmail对话视图

当我们的服务器被更新(通常与付款相关)时,我正在使用PHPMailer发送电子邮件来支持.

我正在尝试将相关的电子邮件显示为Gmail对话,以便更轻松地支持员工遵循之前的更新/回复.我最初认为它是基于主题,但这似乎没有什么区别.

我的邮件代码:

$mail               = new PHPMailer;                        // create a new instance
$mail->isSMTP();                                            // set that we're using stmp
$mail->CharSet      = 'UTF-8';                              // make sure it's utf-8 encoded
$mail->Host         = 'smtp.gmail.com';                     // the hostname of the mail server
$mail->Port         = 587;                                  // set the smtp port number (587 for authenticated TLS)
$mail->SMTPSecure   = 'tls';                                // set the encryption to use, ssl (deprecated) or tls
$mail->SMTPAuth     = true;                                 // should we use smtp authentication?
$mail->Username     = MY_EMAIL_LOGIN;                       // the user name …
Run Code Online (Sandbox Code Playgroud)

php email phpmailer

2
推荐指数
1
解决办法
1774
查看次数

为什么在某些情况下需要try/catch而不是其他情况?

我最近一直在做一些纯Java开发,我正在使用一个暴露少量方法的外部库,每个方法都有可能抛出一个Exception.

Eclipse不会让我编译我的程序,除非我将每个调用包装在一个try-catch块中.到目前为止,没什么大不了的.

然后我注意到了一些东西,比如ArrayList.add()抛出的东西IndexOutOfBoundsException.我怎么称呼这样的东西而不需要把它包裹起来try..catch呢?Obv,在这种特殊情况下,如果每次都必须这样做,那将是非常恼人的,但是try-catch在某些情况下是如何以及为什么强制实施的,而不是其他情况?

java exception

-2
推荐指数
1
解决办法
1626
查看次数