小编jef*_*eon的帖子

使用inet检测HTTP关闭

在我的mochiweb应用程序中,我使用长期持有的HTTP请求.我想检测与用户的连接何时死亡,我想通过这样做来弄清楚如何做到这一点:

Socket = Req:get(socket),
inet:setopts(Socket, [{active, once}]),
receive
     {tcp_closed, Socket} ->
             % handle clean up
     Data ->
             % do something 
end.
Run Code Online (Sandbox Code Playgroud)

这适用于:用户关闭其选项卡/浏览器或刷新页面.然而,当互联网连接突然死亡(说wifi信号突然丢失),或者当浏览器异常崩溃时,我无法检测到tcp关闭.

我错过了什么,或者还有其他方法可以实现这一目标吗?

erlang http mochiweb inet

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

Google Maps API:防止拖入灰色区域

我正在使用Google Maps API(v3)来渲染世界地图.当我一直缩放(缩放级别1)并开始拖动画布时,我可以移出地图边界,外面的区域显示为灰色.我想阻止用户在世界地图边界之外拖动地图.我怎么做?

google-maps

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

没有ORM的域丰富应用程序

我对软件开发世界相对较新.我目前正在进行一个相当大的项目,它是一个不错的OO代码 - 主要遵循领域驱动设计原则.然而,通常这在理论上听起来很棒,实际上整个对象关系阻抗非常糟糕,这意味着只使用ORM层系统的某些部分很慢,除非我们编写优化的SQL查询来覆盖这些情况.此外,有时我们似乎陷入困境,试图看看我们是否应该根据SQL的性能与OO原则对域进行建模.

这让我问这个 - 这是大多数应用程序的构建方式吗?含义 - 是的,面向对象很好 - 但是我发现很难相信与这个对象关系不匹配相关的所有问题,这是构建应用程序的最佳方式吗?我能想到的替代方法是抛弃ORM并进行域建模,并直接手动编写本机SQL查询.我想知道是否实际上有这种方式构建了足够大小的软件系统.

如果我听起来很吵,我很抱歉 - 但我是新人,想知道其他方法是什么.

oop orm database-design domain-driven-design

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

Node.js - 模块只初始化一次?

我正在为node.js应用程序使用node-mysql驱动程序.我没有为每个类似模型的模块反复设置mysql连接,而是这样做:

// DB.js
var Client = require('mysql').Client;
var DB_NAME = 'test_db';
var client = new Client();
client.user = 'user';
client.password = 'pass';
client.connect();
client.query('USE '+DB_NAME);
module.exports = client;

// in User.js
var db = require("./DB");
// and make calls like:
db.query(query, callback);
Run Code Online (Sandbox Code Playgroud)

现在,我注意到DB.js仅使用DB连接初始化一次.因此,随后使用相同的client对象...如何构建DB.js,以便当我从模型中需要它时,每次设置新的数据库连接?我知道它与使用有关new,但我无法绕过它.

javascript commonjs node.js

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

音频记录输出的mime类型设置为视频

我写了一个简单的录音机程序.我将输出格式设置为THREE_GP,但生成的文件的mime类型设置为视频(当我尝试查看文件详细信息时).

知道为什么吗?

 mRecorder = new MediaRecorder();
 mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
 mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
 mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
 mRecorder.setOutputFile(recordingFilePath);
Run Code Online (Sandbox Code Playgroud)

audio android record media-player

6
推荐指数
0
解决办法
826
查看次数

许可Web应用程序

如果我想在客户的服务器上销售Web应用程序作为可安装的产品,那么执行许可的最佳方法实践是什么,以至于它不容易被盗用和盗版?

licensing web-applications piracy-prevention

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

JavaScript对象:销毁它们

我必须维护一个包含30-40个属性的JavaScript对象,我每隔几秒就会更新一次.我已经读过在JavaScript中没有"释放"内存,浏览器会自动垃圾收集未使用的内存.

我的问题是:是否足以将对象本身设置为null,或者我是否需要将其所有属性设置为null然后将其设置为null?

var obj = [];
obj[prop1] = "123";
obj[prop2] = "456"; 
//...and so on...

// now to release the obj, is it enough if I just did:
obj = null; 
Run Code Online (Sandbox Code Playgroud)

javascript memory object

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

Android - 按钮高度不会改变

我无法使我的按钮的高度变小.这是我在xml中的内容:

<Button xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/button_small_left"
        style="?android:attr/buttonStyleSmall"
        android:layout_height="10px"
        android:height="10px"
        android:minHeight="10px"
        android:maxHeight="10px"
        android:padding="0px"
        android:textSize="6dip"
        android:text="asd"
/>
Run Code Online (Sandbox Code Playgroud)

在此之后,该按钮仍会显示一个大的顶部和底部填充.文字出现在中间.该按钮用于相对布局.

height android button

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

如何撤消不产生合并提交的合并?

我从master创建了一个实验分支,并在实验分支上做了四次提交.与此同时,大师仍然保持着最后的状态.现在,我希望以这样的方式合并我的实验分支,以便将来能够轻松撤消此合并.

当我尝试搜索时,撤消合并的最简单方法在我看来就像git revert hash_of_merge_commit.

但是,这仅在我将master与实验分支合并时获得合并提交哈希时才有效.在这种情况下,由于master的HEAD没有进展,当我尝试合并时,我只是将四个新的提交添加到master,这意味着要撤消此合并,我需要手动记住并还原每个这些单独的提交在未来.

有更好的方法吗?

git merge

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

在 C++ 中从给定的种子生成相同的随机数序列

我正在使用 mt19937 从给定种子生成随机字符串,如下所示:

std::string StringUtils::randstring(size_t length, uint64_t seed) {
    static auto& chrs = "abcdefghijklmnopqrstuvwxyz";

    thread_local static std::mt19937 rg(seed);
    thread_local static std::uniform_int_distribution<std::string::size_type> pick(0, sizeof(chrs) - 2);

    std::string s;
    s.reserve(length);

    while(length--) {
        s += chrs[pick(rg)];
    }

    return s;
}
Run Code Online (Sandbox Code Playgroud)

我想保证随机数序列(以及生成的随机字符串)在同一架构的不同机器上是相同的,根据这个问题的答案应该是这样的。

但是,当我重建二进制文件(不更改任何依赖项或库)时,同一种子的随机数序列会发生变化(与使用相同种子的先前构建生成的序列相比)。

如何从同一机器架构+映像(x86_64 Linux)上不同二进制文件的给定种子生成有保证的随机数序列?

c++ random deterministic mersenne-twister

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