小编Joh*_*ter的帖子

加载时ELF重定位

我正在Linux下编写一个简单的用户空间ELF加载器(为什么?为了'有趣').我的加载器目前非常简单,只能加载包含与位置无关的代码的静态链接的ELF文件.

通常,当程序由内核的ELF加载程序加载时,它会被加载到自己的地址空间中.因此,数据段和代码段可以加载到ELF段中指定的正确虚拟地址.

但是,在我的情况下,我通过内核请求来自内核的地址mmap,并且可能会或可能不会获得ELF段中请求的地址.这对于代码段来说不是问题,因为它与位置无关.但是,如果未在预期地址处加载数据段,则代码将无法正确引用存储在数据段中的任何内容.

实际上,我的加载器似乎可以正常使用不包含任何数据的简单程序集可执行文件.但是一旦我添加数据段并引用它,可执行文件就无法正常运行或SEGFAULTs.

如果可能的话,我如何修复对数据段的任何引用以指向正确的位置?为此目的,是否在(静态)ELF文件中存储了重定位部分?

c linux elf loader

19
推荐指数
1
解决办法
4680
查看次数

需要帮助了解\n,\ b和\ r \n将如何呈现printf输出

我在C中编写了以下程序,当我运行它时,我惊讶于查看输出.

这是程序

int main()
{    
       printf("\nab");
       printf("\bsi");    
       printf("\rha");    
}
Run Code Online (Sandbox Code Playgroud)

输出是: - hai而我期待"absiha",因为\n是新行,\ b是退格(非擦除),\ r是回车.所以我期待那个光标会处于"i"角色,因为\ r已经被应用但是当我运行它并看到输出时我感到非常惊讶和困惑.有人可以解释一下输出吗?

c language-lawyer

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

在Mixins中初始化实例变量

是否有任何干净的方法来初始化模块中的实例变量以用作Mixin?例如,我有以下内容:

module Example

  def on(...)   
    @handlers ||= {} 
    # do something with @handlers
  end

  def all(...)
    @all_handlers ||= []
    # do something with @all_handlers
  end

  def unhandled(...)
    @unhandled ||= []
    # do something with unhandled
  end

  def do_something(..)
    @handlers     ||= {}
    @unhandled    ||= []
    @all_handlers ||= []

    # potentially do something with any of the 3 above
  end

end
Run Code Online (Sandbox Code Playgroud)

请注意,我必须反复检查@member每个功能是否已在每个功能中正确初始化 - 这有点刺激性.我宁愿写:

module Example

  def initialize
    @handlers     = {}
    @unhandled    = []
    @all_handlers = []
  end

  # or …
Run Code Online (Sandbox Code Playgroud)

ruby mixins

11
推荐指数
1
解决办法
7617
查看次数

如何在ng-click事件上调用http请求?

我在前端使用angularjs.我在index.html上有两个输入框(即名字和姓氏)和一个按钮.在单击按钮(ng-click ="search()")上,我想调用带有first-name和last-name作为参数的http GET请求.然后我想在其他DIV标签的同一页面中显示响应.我怎么做到这一点?

angularjs

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

Git检索分支中修改的所有文件的列表

如何获取分支中已更改的所有文件的列表?我不能做一个git-diff,因为分支已经合并为master.

我需要一种方法来列出分支中的所有提交并提取文件的路径,没有重复.

如果有人做过这样的事情之前会非常感激,

非常感谢!

linux git branch

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

instance_eval可能是一个咖喱过程吗?

假设我有一个这样的类:

class Test
  def test_func
    140
  end
end
Run Code Online (Sandbox Code Playgroud)

和一个proc,它引用了一个成员函数Test:

p = ->(x, y) { x + y + test_func }  # => #<Proc:0x007fb3143e7f78@(pry):6 (lambda)>
Run Code Online (Sandbox Code Playgroud)

要调用p,我将它绑定到以下实例Test:

test = Test.new                     # => #<Test:0x007fb3143c5a68>
test.instance_exec(1, 2, &p)        # => 143
Run Code Online (Sandbox Code Playgroud)

现在假设我想传递yp,并且总是传递x = 1:

curried = p.curry[1]                # => #<Proc:0x007fb3142be070 (lambda)>
Run Code Online (Sandbox Code Playgroud)

理想情况下,我应该instance_exec像以前一样,但相反:

test.instance_exec(2, &curried)

=> NameError: undefined local variable or method `test_func' for main:Object
Run Code Online (Sandbox Code Playgroud)

proc在似乎不正确的绑定中运行.是什么赋予了?

ruby currying

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

管理AngularJS中的多对多关系

我有两个具有多对多关联的模型 - 角色具有许多权限,同样权限可能属于多个角色.

现在我有一个允许用户创建新角色的视图; 我想为他们添加一个功能,让他们可以选择角色拥有哪些权限,以及创建/删除权限并分配权限.这就是我现在正在看的内容:

示例角色JSON

现在我在每个角色中嵌套当前分配的权限:

{
  id: 1,
  name: "Manager",
  permissions: [
    {
      id: 2,
      name: "Send Email"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

RoleCtrl:

MyApp.factory('Role', function($resource) {
  var Role = $resource('roles/:id', {id: '@id'}, {});
  return Role;
}).factory('Permission', function($resource) {
  var Permission = $resource('permissions/:id', {id: '@id'}, {});
  return Permission;
});

function RoleCtrl($scope, $routeParams, Role, Permission) {
  $scope.role = Role.get({id: $routeParams.id });
  $scope.permissions = Permission.query();

  $scope.role.save = function() {  
    $scope.role.$update(
      function() { /* success */ }, 
      function(response) { /* errors */ } …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails angularjs

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

带有桌子的flexbox

我有一个基于flexbox的布局,我希望看起来像这样:

 _______________
| top banner    |
|---------------|
| tabular data  |
|               |
|_______________| 
Run Code Online (Sandbox Code Playgroud)

随着表格数据占据横幅之后可用的任何大小.

如果Bdisplay: block,这可以工作,但如果是的话display: table(请参阅http://jsfiddle.net/E4Qbw/).

.container {
    display: -webkit-flex;
     -webkit-flex-flow: column nowrap; 
    position: absolute;
    top: 0; bottom: 0; left: 0; right: 0;
    border: 1px dashed #fc0;
}

.A {
    -webkit-flex: 0 1 auto;
    width: 100%;
    border: 1px solid red;
}

.B {
    width: 100%;
    -webkit-flex: 1 0 auto;
    border: 1px solid blue;
}

<div class="container">
    <div class="A">
           A
    </div> …
Run Code Online (Sandbox Code Playgroud)

css css3 flexbox

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

可以检索一个油嘴'事件留下的时间吗?'

我正在创建一个带有g_timeout_addg_timeout_add_seconds返回事件ID的事件; 我可以通过电话取消活动g_source_remove.

但是,在某些时候我想做的是看看在事件发生之前还剩多少时间.有没有一种简单的方法可以使用glib api执行此操作,还是需要手动存储和比较时间戳g_source_get_current_time

c linux timer glib

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

错误使用three.js挤出形状

我刚刚开始使用three.js,并且在挤出一些2d形状时遇到了一些问题.

我有一个包含美国所有郡的GeoJSON文件.我正在使用d3.js和一个d3.geo.albersUSa()投影将每个纬度/经度转换为一个X/Y坐标列表,THREE.Shape然后进行挤压和绘制.这对大多数县来说似乎都行得通.

我看到的问题是,某些县的子集无法使用以下警告序列错误地挤出或挤出:

Warning, unable to triangulate polygon!
Duplicate point 653.4789181355854:204.0166729191409
Either infinite or no solutions!
Its finite solutions.
Either infinite or no solutions!
Too bad, no solutions.
Run Code Online (Sandbox Code Playgroud)

我不确定我究竟究竟是什么问题 - 据我所知,这些特殊形状并没有什么特别之处.我做错了什么,或者这是three.js中挤出代码的问题?


例如,这里有一些缺少的县:

另请注意德克萨斯州的三角形"沙漏"缺失部分:这些看起来像一些只有一半渲染的县(它们最终变成三角形而不是矩形或正方形?)

示例输出 较大的

为巨大的代码转储道歉,我试图尽可能地削减它.

建立:

/* initialize the scene, camera, light, and background plane */
var Map = function(params) {
  this.width     = params.width;
  this.height    = params.height;
  this.container = params.target || document.body;

  this.renderer = new THREE.WebGLRenderer({antialias: true});
  this.renderer.setSize(this.width, this.height);
  this.renderer.setClearColorHex(0x303030, 1.0);

  this.container.appendChild(this.renderer.domElement);

  this.camera = new THREE.PerspectiveCamera(45, …
Run Code Online (Sandbox Code Playgroud)

javascript three.js d3.js

4
推荐指数
1
解决办法
2529
查看次数