小编tin*_*lyx的帖子

在Haxe中没有文件名和行号的跟踪

Haxe有trace(),可用于所有目标打印内容.

trace("aa"); // Main.hx:89: aa
Run Code Online (Sandbox Code Playgroud)

如何打印内容,没有文件名和行号?

haxe

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

mingw:使用-std = c ++ 11编译时找不到函数

我试图编译下面的代码(来自/sf/answers/33527231/).编译运行正常,如果我编译

$ g++ test.cpp
Run Code Online (Sandbox Code Playgroud)

但在使用-std=c++11开关时出错了:

$ g++ -std=c++11 test.cpp
test.cpp: In function 'std::string exec(char*)':
test.cpp:6:32: error: 'popen' was not declared in this scope
     FILE* pipe = popen(cmd, "r");
                                ^
Run Code Online (Sandbox Code Playgroud)

知道发生了什么事吗?

(我在mingw.org和WindowsXP64上使用mingw32 gcc4.8.1)

码:

#include <string>
#include <iostream>
#include <stdio.h>

std::string exec(char* cmd) {
    FILE* pipe = popen(cmd, "r");
    if (!pipe) return "ERROR";
    char buffer[128];
    std::string result = "";
    while(!feof(pipe)) {
        if(fgets(buffer, 128, pipe) != NULL)
            result += buffer;
    }
    pclose(pipe);
    return result;
}

int main() {}
Run Code Online (Sandbox Code Playgroud)

c++ mingw stdio popen c++11

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

如何使用Gtk2Hs的活性香蕉?

我试图获得一些反应香蕉的经验,根据它的网站,它应该支持GTK.我想知道是否有任何教程/介绍材料如何做到这一点?

在这里读到有一个jaek项目,但是我更喜欢使用带有gtk2hs(来自hackage的gtk3)的反应性香蕉的最小例子,因为我之前没有FRP或反应香蕉的经验.

此外,我多次尝试在Windows/MinGW上使用reactive-banana-wx.尽管我最终能够安装wxHaskell,但预先存在运行时错误(/sf/ask/1635756531/).我想我无法让wxHaskell正常工作,除非我将所有内容降级到2010或更早,因为之后没有关于如何在Windows上使wxHaskell工作的指令,只有问题.

我今天尝试安装Gtk2Hs.即使使用gtk3,也是一件轻而易举的事.这让我想知道这条路线上是否有适合初学者的好材料(即反应性香蕉+ gtk2Hs).

谢谢,

haskell frp reactive-programming reactive-banana

8
推荐指数
0
解决办法
487
查看次数

python有一个列表构造函数吗?

python是否有一个像consOCaml(::)(或lisp)中的列表构造函数,它接受一个head元素和tail列表,并返回一个新列表head::tail

我搜索了python list构造函数,最后找到了其他的东西__init__.参见例如在Python中创建一个列表 - 偷偷摸摸的东西?

为了澄清,我正在寻找的是与此问题中的Python中的以下列表分解相反:

head, *tail = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
Run Code Online (Sandbox Code Playgroud)

这给出了:

>>>head
1
>>> tail
[1, 2, 3, 5, 8, 13, 21, 34, 55]
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个列表构造函数,例如cons或者::这样

head :: tail  =>   original list
Run Code Online (Sandbox Code Playgroud)

python list

8
推荐指数
3
解决办法
7706
查看次数

在mingw64下使用GetACP链接错误(mingw-builds)

我试图建立GDAL-1.10.0(http://trac.osgeo.org/gdal/wiki/DownloadSource)使用mingw64(从 http://sourceforge.net/projects/mingwbuilds/files/host-windows/ 64 -4.8.0释放小POSIX的SEH-rev2.7z).我已经在标准的MinGW(32位)版本下编译了gdal-1.10.0而没有任何问题.

我必须切换到mingw64的原因是标准的32位MinGW发行版不支持c ++ 11功能std::thread,以及(我怀疑)其他功能.但是我最终得到一个链接错误,告诉我一些事情

undefined reference to '__imp_GetACP'
Run Code Online (Sandbox Code Playgroud)

(如果我使用mingw64/mingw-builds中的32位变体,则使用不同的装饰名称).顺便说一句,我尝试了不同版本的mingw64,包括64位,32位,seh,sjlj,但都给出了同样的错误GetACP().

我做了一些功课,找到了类似编译任务的一些说明:http: //www.gaia-gis.it/spatialite-3.0.0-BETA/mingw64_how_to.html#env 根据上面的网站,似乎他们建议问题与WOW64有关,并且无法使用正确版本的Windows DLL文件,因为Windows会自动为您确定,具体取决于32位或64位应用程序是否进行调用.这对于mingw64来说应该是一个问题,因为编译器gcc是64位但是msys绝对是32位.

但是,由于我也尝试了32位版本,上面似乎并没有解释错误.更重要的是,我试着用一种肮脏的方式来评论所有的调用GetACP(),因为我并不真正关心代码页面以及所有这些用于我的目的.奇怪的是,编译是可以的(在一个新的来源上只是被GetACP()注释掉了),但仍然报告了相同的链接错误.我检查了一下libkernel32.a,libiconv.alib文件夹中,并按照上面博客中的说明将dll复制出来 c:\windows\system32并将它们放在mingw子文件夹中并进行适当的重命名.链接错误仍然存​​在.这是我花了差不多两天没有成功就停止了黑客攻击的地方.我无法理解为什么整个源代码不包含对函数的单个调用,我仍然会收到链接错误.

谁能解释一下gdal和mingw64之间可能导致这个问题的原因,以及如何解决这个问题?

另外,关于mingw64的一般问题是它是否真的能够支持posix函数?我看到包名如x64-4.8.0-release-posix-seh-rev2.7z,但我记得MinGW的人说他们永远不会支持完整的posix.

PS我正在64位Windows Server 2008 R2上测试它.


更新:在MinGW64(mingw-builds)下构建gdal-1.10.0的完整步骤是:

$./configure
Run Code Online (Sandbox Code Playgroud)

然后,编辑GDALmake.opt,查找GDAL_ROOT并用dos/mingw格式替换cygwin驱动器格式,例如更改:

GDAL_ROOT  = /d/temp/build/gdal-1.10.0
Run Code Online (Sandbox Code Playgroud)

GDAL_ROOT =  d:/temp/build/gdal-1.10.0
Run Code Online (Sandbox Code Playgroud)

更换

CONFIG_LIBS =   $(GDAL_ROOT)/$(LIBGDAL)  
Run Code Online (Sandbox Code Playgroud)

CONFIG_LIBS =   $(GDAL_ROOT)/$(LIBGDAL)   -liconv
Run Code Online (Sandbox Code Playgroud)

最后,

$ make && make install && cp apps/*.exe /usr/local/bin/
Run Code Online (Sandbox Code Playgroud)

linker wow64 configure gdal mingw-w64

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

如何使函数<>参数的C++ 11函数自动接受lambdas

C++ 11同时具有lambda和std :: function <>,但不幸的是,它们有不同的类型.一个结果是,人们无法直接在高阶函数中使用lambda,例如lisp中的map.例如,在以下代码中

 #include <vector>
 #include <functional>
 using namespace std;

 template <typename A,typename B> 
 vector<B> map(std::function<B (A)> f, vector<A> arr) {
       vector<B> res;
       for (int i=0;i<arr.size();i++) res.push_back(f(arr[i]));
       return res;
}

int main () {
    vector<int> a = {1,2,3};
    map([](int x) -> int { return x;},a); //not OK

    auto id_l = [](int x) -> int { return x;};
    map(id_l,a); //not OK;

    function<int (int)> id_f = id_l;
    map(id_f,a); //OK
return 0;
}
Run Code Online (Sandbox Code Playgroud)

,直接使用lambda作为main()的第2行将无法正常工作.g++ -std=c++11 testfunc.cpp返回`... testfunc.cpp:14:37:注意:'main():: __ lambda0'不是从'std …

c++ lambda c++11

7
推荐指数
3
解决办法
1525
查看次数

为什么使用system()返回libc shell会立即退出?

我正在试验对Linux上用C编写的程序的控制流劫持攻击.我正在尝试对启用了No-eXecutable-stack对策的程序执行简单的ret-2-libc攻击.为此,我将返回system()带参数的函数/bin/sh.

但是我遇到了一个问题:虽然我的攻击有效并且shell成功生成,但是在进入第一个角色后shell立即退出!也就是说,按下任意键后shell关闭!

在这个简单的C代码中也可以观察到这种行为:

int main() { system("/bin/sh"); return 0; }
Run Code Online (Sandbox Code Playgroud)

我用它编译它: gcc code.c -o system

为什么是这样?我该如何解决?

我在尝试Ubuntu-9.04使用kernel 2.6.28glibc-2.9-1


更新:当且仅当我按下的第一个键时,shell才会变为交互式Enter.也就是说,如果我输入的第一个字符是a new-line(\n),那么shell将保持打开状态并变为交互式.

所以有人能解释这里发生了什么吗?

c exploit shellcode

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

如何在Coq中为实数定义"小于"?

我只是想知道如何为实数定义"小于"关系.

我理解,对于自然数(nat),<可以用一个数字作为另一个数字的(1+)后继者递归地定义S.我听说很多关于实数的事情在Coq中是公理化的而且没有计算.

但我想知道Coq中的实数是否存在最小公理集,基于哪些属性/关系可以导出.(例如 Coq.Reals.RIneq让它Rplus_0_r : forall r, r + 0 = r.成为公理,等等)

特别是,我很感兴趣,是否如关系<<=可以在平等关系的顶部进行定义.例如,我可以想象在常规数学中,给出两个数字r1 r2:

r1 < r2 <=> exists s, s > 0 /\ r1 + s = r2.
Run Code Online (Sandbox Code Playgroud)

但这是否符合Coq的建设性逻辑?我是否可以用它来至少对不平等做一些推理(而不是一直重写公理)?

coq real-number

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

Leaflet事件如何传播到重叠层

假设我有一些重叠的图层,每个图层都有一个点击事件.当我点击地图时,我想知道点击了哪些图层,尽管点击事件在第一层之后停止并且不会传播到其底层.我怎样才能做到这一点?

这是一个示例小提琴及其代码:https://jsfiddle.net/r0r0xLoc/

<div id="mapid" style="width: 600px; height: 400px;"></div>

<script>
  var mymap = L.map('mapid').setView([51.505, -0.09], 13);

  L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', {
    maxZoom: 18,
    attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, ' +
      '<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
      'Imagery © <a href="http://mapbox.com">Mapbox</a>',
    id: 'mapbox.streets'
  }).addTo(mymap);

  L.polygon([
    [51.509, -0.08],
    [51.503, -0.06],
    [51.51, -0.047]
  ]).addTo(mymap).on('click', function() {
    console.log('clicked on 1st polygon')
  });

  L.polygon([
    [51.609, -0.1],
    [51.503, -0.06],
    [51.51, -0.047]
  ]).addTo(mymap).on('click', function() {
    console.log('clicked on 2nd polygon')
  });

</script>
Run Code Online (Sandbox Code Playgroud)

如果单击每个多边形,则会看到其相关消息.如果单击重叠部分,则只能看到第二个多边形的消息.

javascript leaflet

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

JavaScript行之间保持什么状态?

我想知道在提交的两行JavaScript代码之间保留了哪些状态babel-node.我的困惑是因为如果你编写两行代码,你可以覆盖变量定义而不会出错.例如,babel-node --presets es2015您可以这样做:

> const a = 1;
undefined
> let a = 2;
undefined
Run Code Online (Sandbox Code Playgroud)

现在,如果你在一行中写它,你会收到一个错误:

> const a = 1; let a = 2;
TypeError: repl: Duplicate declaration "a"
...
Run Code Online (Sandbox Code Playgroud)

似乎在第一种情况下,a定义为1(const变量赋值)的状态丢失(但直到第二次赋值),而在第二种情况下,它被维护.

是什么导致这里的差异?以及维护哪些州?

javascript node.js ecmascript-6 babeljs

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