小编Kyl*_*acy的帖子

防止body元素的滚动反弹,但保留iOS中的子元素

我最近一直在研究移动网络应用程序.我正在优化移动优先,现在专注于iPhone的iOS.我不想要原生应用程序的精确外观,但我认为原生的感觉是绝对重要的.我已经制作了标记和CSS以反映这个想法,让我留下这个(注释以更好地理解我后来遇到的问题):

Webapp标记

这一切都没有问题,它还具有原生的感觉,静态页眉和页脚,以及可滚动的内部视图(由于-webkit-overflow-scrolling: touch).

任何使用iOS超过5分钟的人都知道,当你向上或向下滚动时,你会得到一些不错的动力滚动.此外,当您点击列表顶部时,您会获得良好的"反弹"效果:

列表在Settings.app中弹跳

我觉得这有助于定义iOS的感觉,这么小的细节可以走很长的路.幸运的是,如果您位于webapp中可滚动元素的列表顶部之下,并滚动到顶部,则会获得相同的效果.这是期望的行为:

在webapp中向下和向上滚动会产生这种弹跳效果

但是,当您位于列表顶部并尝试重新创建相同的弹跳行为时,列表顶部(例如上面的设置.app),我们会得到以下行为,这是不希望的: 向下滚动会为应用程序的整个chrome生成弹跳效果

我在Stack Overflow上看过一些类似的 问题,但这些都选择禁用弹跳.我想知道是否可以保持弹跳,但总是让它发生body section section#main,而不是在webapp的chrome上.我不是在使用jQuery,所以我更喜欢使用直接JavaScript的答案(尽管CSS解决方案的奖励积分).

这是一个包含所有代码的GitHub 仓库(Sinatra,HAML和Sass;当前分支so),或者是带有损坏图像和链接的JSFiddle,但在iPhone上显示问题(最好添加到主屏幕进行测试).

javascript css web-applications iphone-web-app ios

47
推荐指数
2
解决办法
4万
查看次数

Clang - 将C头编译为LLVM IR/bitcode

假设我有以下简单的C头文件:

// foo1.h
typedef int foo;

typedef struct {
  foo a;
  char const* b;
} bar;

bar baz(foo*, bar*, ...);
Run Code Online (Sandbox Code Playgroud)

我的目标是获取此文件,并生成一个如下所示的LLVM模块:

%struct.bar = type { i32, i8* }
declare { i32, i8* } @baz(i32*, %struct.bar*, ...)
Run Code Online (Sandbox Code Playgroud)

换句话说,将.h带有声明的C 文件转换为等效的LLVM IR,包括类型分辨率,宏扩展等.

通过Clang传递它来生成LLVM IR会产生一个空模块(因为实际上没有使用任何定义):

$ clang -cc1 -S -emit-llvm foo1.h -o - 
; ModuleID = 'foo1.h'
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-darwin13.3.0"

!llvm.ident = !{!0}

!0 = metadata !{metadata !"clang version 3.5 (trunk 200156) (llvm/trunk 200155)"}
Run Code Online (Sandbox Code Playgroud)

我的第一直觉是转向谷歌,我遇到了两个相关的问题:一个来自邮件列表 …

c c++ llvm clang llvm-ir

22
推荐指数
1
解决办法
2645
查看次数

工作FAT16 Bootloader会在实际硬件上产生读取错误吗?

在过去的一周里,我一直在开发一个简单的操作系统用于学习目的和......"有趣".虚拟盒和NASM,我实际上开始了一个非常好的开始.最后,我决定通过臭名昭着的Brokenthorn教程,直到从文件系统加载,我还想开发一个引导加载程序(在点击512字节的墙之后很难).

有了一些HexFiend恶作剧和一些空白的FAT16图像,我最终得到了BPB.通过一些额外的程序集hackery(基础是Brokenthorn的教程,第6部分),我还使用我的bootloader进行文件加载,它从我的虚拟磁盘加载适当命名的'boot'文件(使用dd if =/dev/zero of = boot.img bs = 512 count = 2880)

那么,问题是什么呢?当我通过USB记忆棒(在这种情况下,/ dev/disk3,其中编译的文件是boot.bin)加载到实际硬件时,我看到的是:

dd bs=512 count=1 if=compiled/boot.bin of=/dev/disk3
Run Code Online (Sandbox Code Playgroud)

这是预期的输出(在VirtualBox中):

电流输出

实际输出相比(在旧笔记本电脑上)

老输出

'-' indicates a sector is being loaded
'_' indicates a sector was loaded
'!' indicates all of the desired sectors were loaded properly
'R' indicates a read error
'T' indicates the FAT table is being loaded
'D' indicates the FAT table was loaded properly
'F' means the file is being located (or …
Run Code Online (Sandbox Code Playgroud)

x86 assembly nasm bootloader

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

使用JNA在Clojure中按值获取和传递结构

我有一个C API,我试图通过JNA API在Clojure中使用.我的问题可以通过以下示例得到最好的证明.假设我在库中有这个C代码:

typedef struct {
    int foo;
    int bar;
    double baz;
} MyStruct;

MyStruct createStruct() {
    MyStruct myStruct;
    myStruct.foo = 3;
    myStruct.bar = 4;
    myStruct.baz = 3.14;

    return myStruct;
}

double addStruct(MyStruct myStruct) {
    return myStruct.foo + myStruct.bar + myStruct.baz;
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我想调用createStruct,然后将结果传递给addStruct.这里重要的一点是,MyStruct通过值传递为返回类型和参数.在任何时候我都不需要实际读取字段的值MyStruct.

另外,在我的系统中,本机函数包含如下:

; `quux` is defined in `some-lib` and returns an `int`
(let [fn- (com.sun.jna.Function/getFunction "some-lib" "quux")]
  (fn [& args]
    (.invoke fn- Integer (to-array args))))
Run Code Online (Sandbox Code Playgroud)

目标是获得一个替换Integer上面的类型,将其换 …

java struct clojure pass-by-value jna

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

Padrino和RSpec不和Sequel合作?

最近,我开始深入研究Ruby MVC,以便找到最好,最快,最小的框架来构建我的应用程序.由于对Rails不满意,我决定尝试Padrino.我也是第一次尝试使用Outside-in TDD获取完整的应用程序,因此能够为所有组件编写测试至关重要.不幸的是,我无法在Padrino中制作模型,所以我想知道它是否只是测试版软件的原因,或者只是我的错误.

我首先使用Cucumber和RSpec创建我的项目进行测试,然后为我的ORM创建Sequel.

$ padrino g project test -d sequel -t cucumber -c sass -b
Run Code Online (Sandbox Code Playgroud)

接下来,我创建一些模型和迁移:

$ padrino g model user

# ./db/migrate/001_create_users.rb
Sequel.migration do
  change do
    create_table :users do
      primary_key :id
      String :name
      String :password
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

接下来,当然是规范.例如,只是简单的事情:

# ./spec/models/user_spec.rb
require 'spec_helper'

describe User do
  it 'can be created' do
    user = User.create
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,迁移并运行规范:

$ padrino rake sq:migrate:up
$ rspec spec

F

Failures:

  1) User can be created
     Failure/Error: user = User.create
     Sequel::DatabaseError: …
Run Code Online (Sandbox Code Playgroud)

ruby model-view-controller rspec padrino sequel

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