这可能是一个微不足道的问题,但我想知道Laravel是否建议某种方法来检查返回的Eloquent集合是否$result = Model::where(...)->get()为空,以及计算元素的数量.
我们目前正在使用!$result检测空结果,是否足够?至于count($result)它是否真的涵盖了所有情况,包括空洞的结果?
(这是一个多部分的问题,我将尽力总结这个场景.)
我们目前正在构建一个响应式Web应用程序(新闻阅读器),允许用户在选项卡式内容之间滑动,以及在每个选项卡式内容中垂直滚动.
解决此问题的常见方法是使用一个包装器div填充浏览器视口,设置overflow为hidden或auto,然后在其中水平和/或垂直滚动.
这种方法很好,但有一个主要缺点:由于文档的高度与浏览器视口完全相同,因此移动浏览器不会隐藏地址栏/导航菜单.
有许多hacks和视口属性使我们能够获得更多的屏幕空间,但没有一个像minimal-ui(在iOS 7.1中引入)那样有效.
昨天有消息称iOS 8 beta4已从minimal-uiMobile Safari中删除(参见iOS 8发行说明中的 Webkit部分),这让我们感到奇怪:
Q1.是否仍然可以隐藏Mobile Safari上的地址栏?
据我们所知,iOS的7 不再响应的window.scrollTo破解,这意味着我们不得不忍受较小的屏幕空间,除非我们采取垂直布局或使用mobile-web-app-capable.
Q2.是否仍然可以获得类似的软全屏体验?
通过软全屏我真的意味着不使用mobile-web-app-capable元标记.
我们的Web应用程序可以访问,任何页面都可以使用本机浏览器菜单加入书签或共享.通过添加mobile-web-app-capable我们阻止用户调用这样的菜单(当它保存到主屏幕时),这会混淆和对抗用户.
minimal-ui曾经是中间地带,默认隐藏菜单但是通过点击可以访问它 - 虽然Apple可能已经删除它由于其他可访问性问题(例如用户不知道点击激活菜单的位置).
Q3.全屏体验值得一试吗?
似乎全屏API不会很快进入iOS,但即便如此,我也看不到菜单是如何保持可访问的(Android上的Chrome也是如此).
在这种情况下,也许我们应该保持原样的移动游猎,并考虑视口高度(对于iPhone 5 +,它是460 = 568 - 108,其中108包括操作系统栏,地址栏和导航菜单;对于iPhone 4或年纪大了,它是372).
很想听到一些替代方案(除了构建本机应用程序).
我们似乎无法找到mongodump关于在特定数据库上运行需要哪些权限(用户角色)的任何结论性文档.
说我有一个名为数据库x和用户y有以下角色就可以了roles: [ "readWrite", "dbAdmin" ],还有2个用户a,并b在admin收集与roles: [ "userAdminAnyDatabase" ]和roles: [ "dbAdminAnyDatabase" ],似乎他们都没有运行正确的权限mongodump:
mongodump --db x --username y --password --authenticationDatabase x
Tue Dec 10 17:04:23.901 x.system.users to dump/x/system.users.bson
assertion: 11010 count fails:{ ok: 0.0, errmsg: "unauthorized" }
mongodump --db x --username a --password --authenticationDatabase admin
Tue Dec 10 17:06:19.674 DATABASE: x to dump/x
assertion: 13106 nextSafe(): { $err: "not authorized for …Run Code Online (Sandbox Code Playgroud) 这个问题可能听起来很奇怪,因为大多数时候popstate会在用户按下后退按钮时同步触发.
但是,W3C规范规定允许UA(浏览器)在遍历历史时对popstate进行排队(参见第14项),即.popstate是异步触发的(即使此时URL已更改).
浏览器供应商以不同方式解释和实现此规 Mozilla决定 Firefox应该能够在popstate之前发布load,并且有充分的理由,以便慢速图像不会阻塞popstate.
Chrome/Safari另有决定,它引发了我们的问题:
在管理Web应用程序的历史记录时,通常需要尽快启动历史记录管理,例如.在DOMContentLoaded代替load.但作为回报,用户无法退出pushState,因为所有人popstate都排队等候load.
我们正在寻求处理此类方案的方法的建议.我自己想出几个:
load可以尽快解雇.load被触发.load而不是DOMContentLoaded.有更好的解决方案吗?
更新:当之前有一个ajax触发时load,如果那些请求导致DOM更改,并且DOM更改恰好有一些图像,load则会延迟,直到这些图像被加载/超时,这意味着popstate排队等待更长时间.
更新2:要为它添加一个简单的演示,请访问带有chrome的jsbin页面,看到popstate将被阻止直到load被触发.您可以比较缓存图像和未缓存图像之间的结果.
我正在做一个简单的:hover滑入式封面,如图所示,它应该在"最喜欢的文章"控件中滑动,然后用户可以点击以收藏此项目.
虽然它在鼠标悬停和点击的桌面上运行良好,但我不确定它是否可以用作移动设备或其他设备上的有效控件(即点击切换,然后再次点击收藏项目).
如果我理解正确,至少在iOS(Safari)和Android(Chrome)上,默认的浏览器行为是模拟触摸为hover和click.但这是一个标准吗?例如.
click被解雇约300ms后hover,所以可以有鬼点击问题?我当然可以在这个元素上绑定一个click/touch事件,只是想知道:hover现在css 是否足够.
澄清一点:我不是在询问:hover支持,它只能在指针驱动的环境中产生感觉.我问的是,当用户点击/点击时,设备是否可以并且应该处理可悬停的元素(如iOS/Android那样)

(问题不是特定于three.js,但我会以它为例)
我最近一直在使用three.js开发一个Web应用程序界面,并在WebGL和Canvas渲染器(用于桌面浏览器)之间编写了一些很好的回退.
但现在问题变成了如何正确检测设备功能,问题有两个方面:
一个值得注意的例子:Firefox移动/ Opera移动声称支持WebGL但是有缺陷或受到设备硬件的限制.
到目前为止我提出了一些解决方法:
或者也许它不一定很难,还有其他建议吗?
我试图找出PHP不消耗大量内存但反而导致非常高的Committed_AS结果的情况.
以此munin内存报告为例:

一旦我开始我们的Laravel队列(10~30名工人),承诺的记忆就会通过屋顶.我们在这个vps实例上有2G内存+ 2G交换,到目前为止大约有600M未使用的内存(大约30%免费).
如果我理解 Committed_AS正确的话,那意味着99.9%保证out of memory在目前的工作量下没有问题,并且它似乎表明我们需要将vps内存增加三倍以保证安全.
我试图将队列数量从30减少到10左右,但正如你所看到的那样,绿线非常高.
至于设置:启用了PHP 5.5 opcache的Laravel 4.1.我们使用spawn实例的upstart脚本如下:
instance $N
exec start-stop-daemon --start --make-pidfile --pidfile /var/run/laravel_queue.$N.pid --chuid $USER --chdir $HOME --exec /usr/bin/php artisan queue:listen -- --queue=$N --timeout=60 --delay=120 --sleep=30 --memory=32 --tries=3 >> /var/log/laravel_queue.$N.log 2>&1
Run Code Online (Sandbox Code Playgroud)
我看到很多情况下高交换使用意味着内存不足,但我们的交换使用率很低,所以我不确定在这里适当的故障排除步骤.
PS:我们在Laravel 4.1和vps升级之前没有这个问题,这里有一张图片来证明这一点.

也许我应该将我的问题改写为:Committed_AS如何准确计算以及PHP如何计算它?
更新2014.1.29:
我有一个关于这个问题的理论:由于laravel队列工作者sleep()在等待队列中的新作业时实际上使用PHP (在我的情况下beanstalkd),这表明高Committed_AS估计是由于相对较低的工作负载和相对较高的内存消耗.
这看起来很有意义Committed_AS〜= avg. memory usage / avg. workload.sleep()正确的PHP ,使用很少甚至没有CPU; 然而它所消耗的任何记忆仍然是保留的.这导致了服务器的思考:嘿,即使负载很小(平均),你也会使用如此多的内存(平均而言),你应该为更高的负载做好准备(但在这种情况下,更高的负载不会导致更高的内存)脚印)
如果有人想测试这个理论,我会很乐意给他们奖励.
也许是由于我的Codeigniter背景,我发现自己并没有很多享受Laravel 4的Eloquent ORM.说我想写一个查询按ID排序帖子列表,降序,Eloquent怎么能击败清晰度DB::table('posts')->orderBy('id', 'desc')->get();?
是否有充分理由使用Eloquent over Fluent,主要是为了加入桌子?
说我有一个接口CrawlerInterface与实现PageCrawler和FeedCrawler; 如果我们碰巧在控制器中需要两个类,那么如何通过构造函数注入实现?
以前我们使用中心ServiceProvider来注册(即App::bind)这样的类,但在大多数情况下我们只有一个接口的实现,所以这个问题还没有发生在我们身上.
PS:我也想知道这个问题是否表明我们应该拆分控制器.
更新:
感谢您的评论和回复,解释说,界面只有一个公共方法:crawl($uri),并且页面/提要抓取工具都将其实现为given a resource identifier, return resource.
我的后续问题:
假设我们处于calculator加法,减法和乘法共享同一个接口的情况下Operation,它只有一个公共方法run,在某些时候我们仍然会遇到这个问题吧?我们如何处理这些情况ServiceProvider?
我问这个是因为当我尝试为多语言内容(如英文和中文)创建CSS字体堆栈时,最终渲染会受到堆栈中第一个字体的影响(通常是拉丁文字体,因为大多数中文字体都带有拉丁文支持).
例如,请参阅此Codepen.
div.a p {
overflow: hidden;
}
p {
background-color: red;
border: 1px solid black;
display: inline-block;
}
.chinese-only {
font-family: "Hiragino Sans GB", sans-serif;
font-size: 24px;
line-height: 48px;
}
.english-chinese {
font-family: "Avenir Next", "Hiragino Sans GB", sans-serif;
font-size: 24px;
line-height: 48px;
}
.chinese-english {
font-family: "Hiragino Sans GB", "Avenir Next", sans-serif;
font-size: 24px;
line-height: 48px;
}
Run Code Online (Sandbox Code Playgroud)
我所看到的:

由于中国字形只出现在中Hiragino Sans GB,我希望所有中国街区使用相同的线高.但是它们显然受到Avenir Next在堆栈顶部添加字体的影响.
由于OSX上的Firefox和Chrome都使我的示例相同,我想知道CSS规范是否提到了这一点.当您回退丢失的字形时,CSS 2.1字体规范似乎没有说明如何处理行高.
更新:Safari确实以不同的方式呈现,但不幸的是,差异是由于overflow: hidden,而不是字形回退.我更新的示例 …