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

这一切都没有问题,它还具有原生的感觉,静态页眉和页脚,以及可滚动的内部视图(由于-webkit-overflow-scrolling: touch).
任何使用iOS超过5分钟的人都知道,当你向上或向下滚动时,你会得到一些不错的动力滚动.此外,当您点击列表顶部时,您会获得良好的"反弹"效果:

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

但是,当您位于列表顶部并尝试重新创建相同的弹跳行为时,列表顶部(例如上面的设置.app),我们会得到以下行为,这是不希望的:

我在Stack Overflow上看过一些类似的 问题,但这些都选择禁用弹跳.我想知道是否可以保持弹跳,但总是让它发生body section section#main,而不是在webapp的chrome上.我不是在使用jQuery,所以我更喜欢使用直接JavaScript的答案(尽管CSS解决方案的奖励积分).
这是一个包含所有代码的GitHub 仓库(Sinatra,HAML和Sass;当前分支so),或者是带有损坏图像和链接的JSFiddle,但在iPhone上显示问题(最好添加到主屏幕进行测试).
假设我有以下简单的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)
我的第一直觉是转向谷歌,我遇到了两个相关的问题:一个来自邮件列表 …
在过去的一周里,我一直在开发一个简单的操作系统用于学习目的和......"有趣".虚拟盒和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) 我有一个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上面的类型,将其换 …
最近,我开始深入研究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)