小编Pro*_*ted的帖子

在IE8中,垂直负边距不起作用?

第一次问我自己的问题:)

我正在一个网站上工作,我尝试使用通常的技巧将其垂直扩展到客户端窗口的底部:

html, body { height: 100%; }
.container { min-height: 100%; }
Run Code Online (Sandbox Code Playgroud)

然后,我想在主要内容上方添加一些标题,在底部添加粘性页脚.我把它们都装在自己的容器里,然后将标题拉到顶部,如下所示:

.top { position: relative; z-index: 1; height: 168px; }
.end { height: 58px; }
Run Code Online (Sandbox Code Playgroud)

知道了页眉和粘性页脚的高度,然后我开始调整页面的总高度,这样它就会完全填满客户端窗口(没有滚动条),除非内容太长.我用负边距做了这个:

.container { overflow: hidden; min-height: 100%; margin-top: -164px; margin-bottom: -58px; }
.container-in { margin-top: 164px; margin-bottom: 58px; }
Run Code Online (Sandbox Code Playgroud)

第二个容器在第一个容器内,它是我放置每个页面的实际内容的地方.

因此,这在Firefox 4/5上运行得很好 - 绝对没有任何关闭,它就像预期一样.Chrome似乎还可以.但是,在IE8上,它忽略了.container的负余量(我查看了开发人员工具).容器在.top之后开始,因此.top和.container-in之间存在164px的间隙,因为.container-in的边距.

有趣的是 - 如果我将IE8切换到IE7兼容模式,这个问题就不再发生了!在IE7模式下,负边距表现得很好,但当然其他一些东西也会中断,因此告诉IE使用兼容模式不是一种选择.

有关如何解决此问题的任何想法/使用不同的解决方案在所有浏览器中获得相同的效果(不需要IE7)?我做错了吗?

编辑:经过一些更多的乐趣和游戏,我发现通过用负顶部替换负边距:坐标(并将所有容器设置为相对),它在IE8上完美运行但现在它在Firefox 的html容器下面留下了222px的间隙(根据萤火虫).困惑!

EDIT2:从技术上讲,我相信我知道这里有什么问题.Internet Explorer 8认为负边距是"溢出",并且由于溢出:隐藏,它会杀死边距.如果我删除溢出:隐藏它不再有这种行为,但它打破了设计的其余部分.任何人都有任何想法吗?

html css margins internet-explorer-8

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

PHP输出的有效图像总是"包含错误",可能导致这种情况?

几个月前,我使用PHP 5.3为客户编写了一个网站.它在我自己的LAMP网络服务器上完美运行.但是,当他试图将它安装在自己的服务器上时(目前是在CentOS 5上运行DirectAdmin的OVH服务器),他遇到了一个我无法搞清楚的问题.

该网站可以存储通过表格上传的图像.图像在上载时加水印并移动到Web服务器中的目录(某些元数据存储在数据库中,但这与此问题无关).

为了将这些图像显示给用户,使用如下脚本:

header("Content-type: image/jpeg");
ob_start();
echo file_get_contents($path);
$size = ob_get_length();
$img = ob_get_contents();
ob_end_clean();
header ("Content-length: " . $size);
echo $img;
Run Code Online (Sandbox Code Playgroud)

不幸的是,这总是会返回一个损坏的图像(在Firefox中,"图像无法显示,因为它包含错误").现在,经过仔细测试,我知道:

  • 图像已正确上载到服务器.存储在网络服务器中的图像数据是有效的,可以通过FTP作为常规图像获得.

  • 如果我将$ img存储在前一个脚本的最后一行之前的文件中,如下所示:

    $fh = fopen("test.jpg", "w");
    fwrite($fh, $img);
    fclose($fh);
    
    Run Code Online (Sandbox Code Playgroud)

    它还会将正确的图像数据保存到文件中.因此,数据在发送到用户的Web浏览器之前立即完好无损.

  • 标头正在正确发送.

然而!如果我使用text/plain标头而不是image/jpeg,我可以看到返回的乱码与显示的乱码不同,如果我用记事本本地打开文件(或直接通过apache将图像作为文本文件发送).在原始图像中,我可以看到一些EXIF.在PHP生成的图像中,然后发送到用户的Web浏览器,我仍然看到JFIF魔术代码(用于JPEG文件图像格式),但其余的看起来不同.

我担心我在PHP或Apache上遇到与编码,缓冲,内容压缩等相关的配置相关问题.有谁知道我可以尝试解决这个问题吗?

编辑:

更改了要使用的脚本:

$img = file_get_contents($path);
$size = filesize($path);
Run Code Online (Sandbox Code Playgroud)

问题保持不变,但现在内容与真实图像与PHP发送的图像相比看起来完全相同.根据标题,内容编码是gzip.有任何想法吗?

php image

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

在CentOS 6中,JVM总是超过100%的CPU使用率

下午好.我的CentOS 6(64位)服务器上的Java VM问题非常令人困惑.它是一个具有四核CPU(具有超线程),16GB RAM和2TB硬盘空间(在软件RAID1上)的服务器.我想我会在这里问一下,因为根据FAQ,关于开发人员使用的"常用工具"的问题是合适的.希望有人能够对这个问题有所了解.

我在服务器上运行一个Java软件,每天24小时.今天早些时候(在服务器的区域设置午夜后几小时检测到,这是值得注意的,因为它是一个月的第一天)我收到连接到该软件的用户的报告,因为客户端突然变得无法使用.JVM从未中断或重新启动.它仅在几天前重新启动,并且从那时起它一直正常运行(使用大约5%或更少的CPU,这是正常的).

这一次,当我检查过程时,它实际上吞噬了它可能从服务器上运行的其他应用程序(如上面报告的)所花费的所有CPU时间,或者,超过100%(由ps报告).我尝试停止并重新启动应用程序,但一旦运行,CPU使用率将立即再次高达100%以上.内存使用情况正常.我尝试了不同的JVM标志,但无济于事.我尝试下载最新版本的软件并进行全新安装,但这也无济于事.最后,我尝试下载另一个完全不同的Java软件,但是当我在服务器上运行它时,它遇到了同样的问题.

当我下载软件并在我的计算机上运行时,CPU使用率正常.因此,我假设服务器中存在错误,但我无法想象它可能是什么.服务器的JVM是最新的,来自标准的存储库包(无需任何自定义).

来自java -version:

java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.3) (rhel-1.48.1.11.3.el6_2-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
Run Code Online (Sandbox Code Playgroud)

来自uname -a:

2.6.32-131.21.1.el6.x86_64 #1 SMP Tue Nov 22 19:48:09 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

从centos-release/redhat-release/system-release:

CentOS release 6.2 (Final)
Run Code Online (Sandbox Code Playgroud)

关于14.5gb免费RAM的免费报告.df报告/ home分区中有1.4tb可用磁盘空间(有问题的软件及其所有文件所在的位置).

有任何想法吗?请询问您是否需要更多数据,并随时建议我试用/检查程序.在查找问题时,我发现有几个人在JVM上窃取CentOS上的所有CPU时出现问题但是没有一个人能够解决我的问题.

java jvm centos cpu-usage centos6

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

(My)SQL查询的"可选"WHERE子句

我在MySQL中遇到一个SELECT查询问题,我会感谢一些指针.请随时指出我现有的答案(如果有的话我错过了).

查询目前如下:

SELECT e.*, ie.aaa, ue.bbb, ue.ccc
FROM ie
LEFT JOIN e ON ie.e_id = e.e_id
LEFT JOIN ue ON ie.e_id = ue.e_id
WHERE ie.other_id = ? AND ue.unrelated_id = ?
ORDER BY ...
Run Code Online (Sandbox Code Playgroud)

有三个表:,êUE.

ieuee的关系,因此包含外键(e_id).表示输入参数.

问题是ue.unrelated_id =?部分.我真正想做的是:

  • 当且仅当unlated_id =?存在ue关系时才返回ue.ccc.如果它不存在,我希望此字段为空.
  • 即使ulate关系为unrelated_id =?如果不存在,此查询应始终返回剩余的字段(即,对于other_id =?,保证存在).

不幸的是,如果我删除这个where子句,我会得到ue.ccc的"随机"unrelated_id.但是如果我保留它,如果这个unrelated_id不存在,查询将不会返回任何结果!我也尝试添加OR ue.unrelated_id IS NOT NULL,但如果ue表为空,这会使查询返回结果.

有任何想法吗?如果您需要进一步说明,请发表评论.我应该在接下来的几个小时内迅速回答.

mysql sql left-join where-clause

3
推荐指数
1
解决办法
4686
查看次数

(如何)我可以在单个查询中按行/结果顺序对查询结果组进行编号?

我有一个查询,当前返回具有以下属性的数据:

  • 数字A保证在结果中是唯一的(不在源表中); 结果按A排序,但结果中的A值不一定是连续的.
  • 为多行重复的键B,将它们标记为同一组的一部分.它来自与A相同的表格.

例:

+--+-+-+
|id|A|B|
+--+-+-+
| 5|1|2|
|15|3|2|
|12|4|5|
|66|6|5|
| 2|7|2|
+--+-+-+
Run Code Online (Sandbox Code Playgroud)

我在这里看到的答案解释了如何在结果中返回行号.然而,我需要的是获得(优选的基于1的)订单号,同时保持每个B的不同计数.在下表中,C是所需的结果:

+--+-+-+-+
|id|A|B|C|
+--+-+-+-+
| 5|1|2|1|
|15|3|2|2|
|12|4|5|1|
|66|6|5|2|
| 2|7|2|3|
+--+-+-+-+
Run Code Online (Sandbox Code Playgroud)

这有点超出了我目前的SQL技能,所以我会感谢任何指针.包括指向现有答案的指针!

编辑:以下两个答案在结果方面同样有效(使用虚拟包装查询进行排序).谢谢大家的帮助.哪个是最有效的查询?考虑到在我的特定用例中,从原始查询返回的行数永远不会很大(假设最多50行,甚至这是想象力的一部分).此外,原始查询具有用于从其他关系获取数据的连接,尽管它们与排序或过滤无关.最后,所有结果都可能具有相同的B,或者它们中的每一个都具有不同的B - 它可以在两者之间或之间的任何地方.

mysql sql select

3
推荐指数
1
解决办法
210
查看次数

日志中每天的每周活动用户

我想知道是否有人可以通过一些SQL帮助我,以返回两天或更长时间(让我们以7天为参考)返回登录到数据库表中的唯一身份用户的数量。

我的日志表在每行中都包含一个时间戳(ts)和user_id,代表该用户当时的活动。

以下查询从该日志返回每日活动用户或DAU:

SELECT FLOOR(ts / 86400) AS day, COUNT(DISTINCT user_id) AS dau
FROM log
GROUP BY day ORDER BY day ASC
Run Code Online (Sandbox Code Playgroud)

现在,让我们说我想向此单个查询添加(或至少以最有效的方式进行检索)每周活跃用户或7天期间记录的唯一身份用户总数。但是,我不想将时间浪费在不重叠的几周内。我需要每天计算当天和前6天中看到的不同的user_id。

例如:

day users wau
1   1,2   2
4   1,3   3
7   3,4,5 5
8   5     4    (user_id 2 lost from count)
15  2     2    (user_ids 1,3,4 lost from count)
Run Code Online (Sandbox Code Playgroud)

感谢您提供的任何帮助,如果需要进一步说明,请随时通过评论询问。

mysql sql usage-statistics

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