小编Dhe*_*.S.的帖子

EPL(Eclipse公共许可证),GPL(GNU公共许可证)/ LGPL(较小GPL)和许可证例外?

自由软件基金会认为EPL和GPL不兼容.根据我对他们推理的解读,似乎LGPL会受到同样的影响 - IANAL,如果读数不正确,请纠正我.现在,有一个GPL编码版权所有者的指南,提供允许代码链接到不兼容的库的异常,但它仍然排除了链接到其他代码的GPL编码(如果代码已经与EPL库相关联,并且将GPL编程与EPL 另一个LGPL库链接的情况似乎不清楚.

我想知道几个问题的答案:

  1. 将GPL-ed产品与EPL库和LGPL库链接的限制究竟是什么?没有LGPL版权所有者的明确许可,不允许这样做,就像GPL一样,还是允许的?
  2. EPL版权所有者授予的例外是否足够?这个例外被Trolltech(现在是诺基亚的一部分)认为是安全的,当时它曾使用自己的Qt公共许可证授权Qt库,这是与GPL不兼容的; 以及KDE项目,其库链接到Qt并在LGPL下发布,而KDE应用程序通常在GPL下发布.FSF的反对意见是由于"弱Copyleft"和"法律选择条款" - 前者似乎无可非议,如果EPL许可证持有者授予例外,但EPL版权所有者授予的什么样的例外将满足"选择法律条款"异议?

licensing gpl lgpl

8
推荐指数
2
解决办法
6416
查看次数

在npm v5.0中还没有什么纱线功能?

npm v5.0带来了纱线中目前存在的许多功能,包括:

  • --save默认安装
  • package-lock.json 将自动创建(我假设锁文件确保一致的安装)
  • 自动回退到离线模式

根据我的理解,纱线提供的另外还有并行下载(因此下载时间更快).我没有在npm博客文章中看到这一点.除此之外,仍然使用纱线还有其他好处吗?

node.js npm yarnpkg

8
推荐指数
1
解决办法
1029
查看次数

AysncTask取消自身仍调用onPostExecute()

AsyncTask.cancel(true)从内部呼叫doInBackground(),而不是呼叫 onCancelled(),Android呼叫onPostExecute().但根据文件:

调用此方法将导致在返回onCancelled(Object)后在UI线程上调用doInBackground(Object[]).调用此方法可确保onPostExecute(Object)永远不会调用此方法.

这是Android中的错误吗?

更多观察:

  1. cancel(false)从任一线程调用都按照文档中的说明进行操作.
  2. cancel(true)从UI任务调用不会调用onPostExecute(),也不会抛出InterruptedException下面的logcat跟踪中看到的内容.
  3. 调用cancel(false/true)从任何线程调用有时onCancelled()甚至之前doInBackground()的回报.这显然违反了文件,其中规定:

调用此方法将导致在返回doInBackground(Object[])在UI线程上调用onCancelled(Object).

代码:(在Android 2.2设备上测试过)

protected Void doInBackground(Void... params) {
    Log.d(TAG, "started doInBackground()");
    while (!isCancelled()) {
        boolean ret = cancel(true);
        Log.d(TAG, "cancel() returned: " + ret);
    }
    Log.d(TAG, "returning from doInBackground()");
    return null;
}
Run Code Online (Sandbox Code Playgroud)

Logcat输出

04-15 21:38:55.519: …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask

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

从本机代码调用 JavaScript 函数

我有一个 react-native 应用程序并希望将它与本机 SDK 集成。在某些时候,我需要调用 js 函数来返回数据,我应该从本机端进行这个调用。这是流程:

  1. 一些 iOS 处理程序需要更多信息
  2. native层调用js代码
  3. js 代码计算/获取所需数据
  4. js 代码将数据返回给本机代码
  5. 本机代码接收数据并继续工作

是否可以?有一个库,react-native-eval但可能有更优雅的方法来做到这一点?

ios react-native native-module react-native-ios

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

每次使用连接反应路由器更改路由时都会发生变化的“关键”是什么?

当导航到路由的动作被触发时,动作会触发一个新状态,其中router.location.pathname根据浏览器的history.

另一个属性也发生了变化:router.location.key, 到一个新的随机字符串。

两个状态之间的差异,显示密钥如何随路径名变化。

即使路径名本身没有改变(从页面本身点击一个页面的链接),它key仍然会更新。

两个状态之间的差异,显示只有键是如何变化的。

key物业的目的是什么?在哪些情况下,我希望我自己的状态随机生成key,哪些更新会在非常动作分派时进行?为什么它不是一个简单递增的数字?

react-router-v4 connected-react-router

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

JavaScript中的奇怪的yield语法

我刚刚看了看Dave Herman非常有趣的任务.js.在他的例子中他有这条线:

var [foo, bar] = yield join(read("foo.json"),
                                read("bar.json")).timeout(1000);
Run Code Online (Sandbox Code Playgroud)

我熟悉生成器,但我不明白yield表达式如何评估可以分配给[foo,bar]的东西.我实际上不希望表达式可以赋值给任何东西,因为它与return基本相同.

JS的yield语法似乎仍然有点未记录,我找不到相关的信息.

所以澄清我的问题:最终被分配到foo和bar的是什么?

javascript yield taskjs

6
推荐指数
1
解决办法
2578
查看次数

如何在Android.mk中获取环境变量值?

有可能在Android.mk中获取环境变量值吗?

例如

#export MYBASEDIR=/home/whoami/base
Run Code Online (Sandbox Code Playgroud)

并且,在Android.mk里面如何获得MYBASEDIR值?

跟我一起提出非常基本的问题.

android makefile

6
推荐指数
1
解决办法
5503
查看次数

用于android的烛台图表组件

我正在为Android寻找一个烛台图表解决方案,现在几个月都找不到.

我正在寻找一个平滑的滚动,zomming,工具提示,选项来在一个新的蜡烛中进行政策,而无需渲染整个图表.

我确实遇到了本机代码图表的所有常规选项:DriodCharts,AchartEngine,ChartDroid,其中没有一个支持烛台.我还使用了5个免费的Javascript和html解决方案,所有这些解决方案都非常慢,而且大多数都不支持在绘制图表后添加数据.

我见过许多带有不错图表的免费Android应用程序,并尝试联系开发人员希望他们至少可以指向某个地方,甚至出售他们的lib.

我的问题是这里有没有人知道Android中的烛台本机解决方案支持我提到的?

谢谢,图腾

charts android candlestick-chart

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

SQLITE_INTEGER值字节

我对sqlite3中的数据类型有疑问.

由于值SQLITE_INTEGER可以存储为1,2,3,4,6或8个字节,具体取决于值的大小,如果我只知道SQlite数据库中的列存储SQLITE_INTEGER,我如何知道此列中的值4个字节或6-8个字节的整数,或者应该用哪个来获取值,sqlite3_column_int()或者sqlite3_column_int64()

我可以sqlite3_column_bytes()在这种情况下使用吗?但根据文档,sqlite3_column_bytes()主要用于TEXT或BLOB.

谢谢!

sqlite

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

Looper 如何知道将消息发送给 Handler?

问题是,我在哪里告诉我的 Thread 将mHandler用于Looper

谢谢你。我正在使用以下代码:

class LooperThread extends Thread {
    public Handler mHandler;
    public void run() {
      Looper.prepare();

      mHandler = new Handler() {
          public void handleMessage(Message msg) {
              // process incoming messages here
          }
      };

      Looper.loop();
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-handler

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