小编rup*_*pps的帖子

FireFox onDrag Pagex PageY总是为零;(

嗨,我正在实现一个可视化编辑器,允许用户将图像拖到页面上,并将这些先前拖动的图像中的其他图像拖动(类似于"添加另一个图像").

我基本上只需要在拖动过程中使用鼠标坐标:元素hiliting等...我根据这些坐标使用自定义函数.

问题是,在Webkit上,我可以使用event.clientX和event.clientY来获取它们,在Firefox(v.16.0.1 OSX)下,他们的'对应'pageX和pageY在拖动过程中总是为零.

但是,在mouseMove期间它们不是零.

像我一样聪明,我做了一个

$(document).on("mouseMove",function(e){_ PX = e.pageX, _PY = e.pageY})

总是有最新的PageX和PageY所以我可以在onDrag处理程序中使用它们但是......

OnMouseMove在拖放操作期间不会触发:( :(

在DnD期间我有什么办法可以获得鼠标X和Y吗?我不想让我的代码混乱,因为它应该(并且已经确实)在不同的平台上工作,但是在Firefox上.

任何人都可以给我一些指示吗?Thanx提前.

firefox events drag-and-drop

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

任何人都可以建议更快的替代这个正则表达式算法?

我需要经常调用这个函数.基本上,它用非重音等效替换所有重音字符,将空格更改为"_",转换为小写,并剥离其余的外来代码,因此可以安全地用作文件名/ url路径/等.问题是,如你所见,从性能的角度来看,它看起来很糟糕.谁能想到更清洁,更快的替代方案?

public static String makeValidPathName(String rawString) {
    if (rawString==null) return null;
    rawString = rawString.replaceAll("[ÁÀÂÄáàäaàáâãäå]","a");
    rawString = rawString.replaceAll("æ","ae");
    rawString = rawString.replaceAll("çÇ","c");
    rawString = rawString.replaceAll("[ÈÉÊËèéêë]","e");
    rawString = rawString.replaceAll("[ìíîïÍÌÎÏ]","i");
    rawString = rawString.replaceAll("ñÑ","n");                            
    rawString = rawString.replaceAll("[ÓÓÖÔòóôõö]","o");
    rawString = rawString.replaceAll("œ","oe");
    rawString = rawString.replaceAll("[ÙÚÛÜùúûü]", "u");
    rawString = rawString.replaceAll("[ýÿ]","y");
    rawString= rawString.replaceAll("[^a-z A-Z 0-9 \\_ \\+]","");
    rawString = rawString.replaceAll(" ","_");
    return rawString.toLowerCase();
}
Run Code Online (Sandbox Code Playgroud)

---编辑

好的,伙计......我对所有4个案例进行了性能测试:

  • 案例1)原始例程发布在此处.
  • 案例2)@WChargin提出的改进
  • 案例3)@devconsole建议的查找表以及我对SparseArray的优化
  • 案例4)@Erik Pragt建议的Normalizer方法

并且...胜利者是... TADAAA .....

D/REPLACEMENT_TEST(18563): *** Running Tests (1000 iterations)
D/REPLACEMENT_TEST(18563): Original REGEX  : 13533 ms
D/REPLACEMENT_TEST(18563): Compiled …
Run Code Online (Sandbox Code Playgroud)

java android replace

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

超慢的tablelayout性能

我遇到了可怕的TableLayout性能.我在这里读了一些关于同样的帖子......

Android动态创建表 - 性能不佳

我在已经很复杂的布局中使用了tablelayout.我已经使用了很多视图,当然我使用的视图越多,性能越差,这是显而易见的,但我想知道与其他小部件相比,性能是如何可能的那么糟糕.

在我的例子中,一个表格布局,假设5*5文本视图(行中只有纯文本视图)导致系统冻结的时间超过1.5秒,有时只是通过更新TextView.我不是在谈论渲染整个表,而只是在tablelayout中更新一个textview.

我怀疑是setColumnsStretchable(),但即使将其设置为永不拉伸,性能也是一样的.

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    final TextView target=(TextView)seekBar.getTag();
    target.setText(""+progress);
}
Run Code Online (Sandbox Code Playgroud)

这是我用来更新单元格的代码.如您所见,它是SeekBar监听器的一部分.我甚至不需要findView()或任何东西,因为我将目标textview存储为seekbar的标签.

因此,移动搜索栏会导致跳跃:需要超过一秒钟!单独执行setText().如果我更新不在表内的任何其他文本视图,则会立即按预期更新.

如果我的桌子是10*10,那么它需要3秒钟!

在你的经历TableLayout是否禁止或者我可能做错了什么?也许行或单元布局的一些神奇值?

提前致谢.

performance android tablelayout

5
推荐指数
0
解决办法
1466
查看次数

在textSpan中触发自定义drawable中刷新的正确方法

我已经为SpannableStrings" ImageURLSpan"扩展了一个自定义范围ImageSpan.

  • ImageSpan配置了Drawable" RemoteImageDrawable",它呈现静态占位符,从Internet加载图像,然后在图像加载完成后,它应该渲染加载的位图而不是占位符.如果draw()再次调用drawable 的方法(由父级view?)会发生这种情况

我的问题是,在可绘制级别,我不知道如何在将来的任何时候触发"自动刷新"(一旦加载图像).我试图invalidate用不一致的结果调用父视图:有时候再次调用drawable的draw方法 - 所以它被正确刷新 - 有时它不是.这完全是随机的!

什么是drawable的正确方法,将其内容更改为"使自己无效"?不应该使父View的失效导致所有子drawables无效?我是否需要使用Drawable回调或者它们与我的问题无关?

请找附件相关代码:

public class ImageUrlSpan extends ImageSpan {

    public ImageUrlSpan(final View parentView, String imageUrl, int width, int height) {
            super(
                    new RemoteImageDrawable(
                            parentView, imageUrl, width, height, new ImageLoaders.OnDrawableDownloadListener() {

                                @Override
                                public void onDrawableLoaded(Drawable bitmap) {
                                    parentView.invalidate();
                                    // this works sometimes
                                    if (Conf.LOG_ON) Log.v(TAG, "Invalidating parent view... will that refresh myself? "+parentView);
                                }
                            }
                    ));
        }
    }
Run Code Online (Sandbox Code Playgroud)

关于代码RemoteImageDrawable …

android spannablestring android-drawable

5
推荐指数
0
解决办法
1086
查看次数

Node.js加密密钥和iv匹配java SecretKeySpec/IvParameterSpec

我正在尝试将Java(简单)加密algorythm移植到Node JS.我需要能够解密/加密从Java端加密/解密的东西.

我一开始就陷入困境,密码的初始化.

在Java中,我得到了密钥SecretKeySpec和初始化向量IvParameterSpec:

public CryptStuff(String password) throws zillion_exceptions {
    if (password==null) throw new InvalidKeyException("No encryption password is set!");
    key = new SecretKeySpec(password.getBytes("UTF-8"), "AES");
    cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    ivSpec=new IvParameterSpec(new byte[cipher.getBlockSize()]);
    cipher.init(Cipher.ENCRYPT_MODE, key, ivSpec);
}
Run Code Online (Sandbox Code Playgroud)

NodeJS需要一个密钥缓冲区和一个IV缓冲区,但是,我不知道如何从头开始计算它们:

var mCrypto = require('crypto'),
    key=[0,0,0,0,0,0,.......],
    iv=[0,0,0,0,0,.........];

function init (password) {

    // generate key from password
    // generate IV from blocksize?

    var aesCipher = mCrypto.createCipheriv("aes-????????", (new Buffer(key)), (new Buffer(iv)));
    .
    .
    .
}
Run Code Online (Sandbox Code Playgroud)

另外,AES/CBC/PKCS5Padding的匹配算法字符串是什么?

encryption cryptography aes padding node.js

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

twitter4j 401身份验证错误持久存取AccessToken

我正在努力弄清楚发生了什么.我有一个典型的应用程序结构,它产生一个负责获取Twitter令牌的OAuthActivity,然后我的主应用程序活动将该令牌用于各种与twitter相关的操作.

我的OAuthActivity有效.我得到一个身份验证令牌,Twitter网页正确显示我的应用程序名称等....此外,在该活动中,我可以发送推文并发布..这意味着OAuthActivity工作,时钟同步,令牌有效等等......

但是当这个OAuthActivity完成并返回到调用活动时,每当我尝试使用该标记(从持久化的密钥/秘密重新创建它)时,无论什么操作,操作总是会失败,并抱怨说AuthChallenge报告为null.就像我提供了一个空令牌,但我还没有!

请查看附件我的OAuthActivity的来源,以及我如何在主要活动中初始化Twitter对象的来源.如果你看错了,请告诉我.

PD - 我显然已经检查过我分配的令牌值与我得到的相同!还尝试了不同的方式来实例化Twitter,通过属性,通过构建器,通过集....并没有任何变化:(

编辑 - >我发现我必须在新的Twitter对象上调用" verifyCredentials() ",如果我想重用一个令牌,但是......没有运气!(请在最后找到发布的例外)

EDIT-2>如果我同时使用子活动和父项

mTwitter=TwitterFactory.getSingleton()
Run Code Online (Sandbox Code Playgroud)

然后twitter对象起作用,但这对我来说并不是真的可以接受,因为它不使用持久性,我需要每次都授权应用程序.此外,只有Twitter对象被授权,TwitterStream不断抛出异常.

干杯!

父活动的源代码,我尝试使用在子活动中获得的访问令牌,如下所示.无论我尝试使用此令牌,总是获得401.

private void init_twitter(String tok, String sec) {

    ConfigurationBuilder cb = new ConfigurationBuilder();

    cb.setDebugEnabled(true)
      .setOAuthConsumerKey(Conf.OAUTH_CONSUMER_KEY)
      .setOAuthConsumerSecret(Conf.OAUTH_CONSUMER_SECRET)
      .setOAuthAccessToken(tok)
      .setOAuthAccessTokenSecret(sec);

    TwitterFactory tf = new TwitterFactory(cb.build());

    mTwitter=tf.getInstance();



    /** This always fails, even though I call this routine with the 
                correct token & secret !!! See at the enf of message for an …
Run Code Online (Sandbox Code Playgroud)

authentication android token twitter4j

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

如何使用Autofac容器来解析类型的实例?

在Windows服务中,如何获取类的实例?

显然,新实例会破坏DI的整体目的.在过去,人们会这样做

ISomeInterface st = container.Resolve<ISomeInterface>();

在这种情况下,实现ISomeInterface的类在其构造函数中具有依赖类/接口,例如SomeInterfaceImp(IOtherInterface oi)().

如何用autofac做到这一点?

windows-services autofac

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

Swift基本表达

我非常喜欢快速,但精通Java,JavaScript,C等其他语言......在创建表达式时,我迷失了Swift语法.看看这个基本的例子,我只是通过调用String.rangeOfString返回一个Optional Range(Range?)来确定一个字符串是否包含在另一个字符串中

这按预期工作:

let LEXEMA:String="http://"
let longUrl:String="http://badgirls.many/picture.png"

let range=longUrl.rangeOfString(LEXEMA);
if (range? != nil) {
   // blah
} 
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试将if中的表达式组合起来,例如:

 if (longUrl.rangeOfString(LEXEMA)? !=nil) {
      // blah
 } 
Run Code Online (Sandbox Code Playgroud)

但我总是得到语法错误,上面会产生一个"预期的分隔符"并且无法理解为什么.做了一些测试:

  if (absolutePath.rangeOfString(URL_LEXEMA) !=nil) { }


       Expected Separator before "!"

  if absolutePath.rangeOfString(URL_LEXEMA) !=nil { }


       Braced block of statements is an unused closure
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

expression swift

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

FireStorePagingAdapter没有收到实时更新

我正在FirestorePagingAdapterhttps://github.com/firebase/FirebaseUI-Android/tree/version-3.4.0-dev测试

问题是,我没有收到更新/更改/删除事件(当项目确实发生更改时)。我会错过一切正常的东西,但是我没有收到实时事件吗?

android firebase firebaseui google-cloud-firestore

0
推荐指数
1
解决办法
304
查看次数