这个问题是从MYSQL连接结果集中在IN()中的where子句中擦除结果吗?
所以,问题的简短版本.如何将GROUP_CONCAT返回的字符串转换为逗号分隔的表达式列表,IN()将其视为要循环的多个项目的列表?
NB MySQL的文档出现来指代"(逗号,分隔,列表)"作为"表达式列表",和有趣上IN()的页面中使用由IN()似乎或多或少在MySQL文档的唯一的页面永远参考表达列表.所以我不确定用于制作数组或临时表的函数是否可以在这里使用.
基于示例的长版本问题:来自这样的2表数据库:
SELECT id, name, GROUP_CONCAT(tag_id) FROM person INNER JOIN tag ON person.id = tag.person_id GROUP BY person.id;
+----+------+----------------------+
| id | name | GROUP_CONCAT(tag_id) |
+----+------+----------------------+
| 1 | Bob | 1,2 |
| 2 | Jill | 2,3 |
+----+------+----------------------+
Run Code Online (Sandbox Code Playgroud)
我该怎么转这个,因为它使用一个字符串被视为(1 = X)AND(2 = X)的逻辑等价物......
SELECT name, GROUP_CONCAT(tag.tag_id) FROM person LEFT JOIN tag ON person.id = tag.person_id
GROUP BY person.id HAVING ( ( 1 IN (GROUP_CONCAT(tag.tag_id) ) ) AND ( 2 IN (GROUP_CONCAT(tag.tag_id) ) …Run Code Online (Sandbox Code Playgroud) 不知怎的,这不起作用......
var paper = Raphael("test", 500, 500);
var testpath = paper.path('M100 100L190 190');
var a = paper.rect(0,0,10,10);
a.attr('fill', 'silver');
a.mousedown( function() {
testpath.animate({x: 400}, 1000);
});
Run Code Online (Sandbox Code Playgroud)
我可以通过这种方式移动rects而不是路径,为什么会这样,以及如何移动路径对象呢?!
一般问题:当像Array这样的默认Javascript原型被修改,黑客攻击,更改并扭曲到无法使用时,有没有办法创建(或重新实现)原始的,未修改的原型的实例?
我的情况:我有一些代码在(可怕的,专有的,封闭源代码......)内容管理系统的"编辑"模式下失败,因为内容的"编辑"模式界面的javascript管理系统破坏了Array原型的绝对生活地狱.
我的代码将在CMS的非编辑模式下工作,但是,为了实现这一目标,它已经在"编辑"模式下进行了测试.可以测试原型是否已被修改.是否有可能重新实现默认的Array原型,所以我可以这样做:
var hasArrayBeenTrashed = // boolean based on https://stackoverflow.com/questions/574584/
var normalArray.prototype = // based on answer to this question
var myArray = !hasArrayBeenTrashed ? [] : new normalArray;
Run Code Online (Sandbox Code Playgroud) 在浏览器的普通HTML中,使元素重叠很容易.
但是在HTML电子邮件的黑暗世界中,其座右铭是"像1996年的代码",因为Outlook使用MS Word和Gmail中的渲染引擎几乎删除了所有内容,因此我认为两种元素重叠的方法都不合适客户支持不佳:
Position在很多客户不支持,所以没有position: absolute;或position: relative;没有top,left,right...overflow: visible;当<img>标签全部需要明确的高度和宽度或布局时,由于缺少float支撑和不稳定的处理,使用元素的"悬垂" 以及宽度和高度小于元素内容大小的元素不能很好地工作的<div>S,必然需要根据表上的大部分时间.(也就是说,如果有可能,基于此的东西似乎是最可能的选择)是否有任何可以可靠地用于在跨客户端HTML电子邮件中创建元素之间的重叠?和/或任何使元素从其边界框伸出而不影响其邻居定位的方法?
例如,假设你想做这样的事情(虚线和背景显示边界框),大图像挂在下面的行而不是向下推...

元素(在这种情况下,<img>但不一定是图像)与其他元素重叠(在这种情况下,下面的行 - 但不一定是单独的行)而不将它们推开.
没有主要的客户端兼容性问题,有没有办法做到这一点?
编辑:刚刚发现这片疯狂扭曲的天才:使用colspans和rowpans使表格细胞重叠.这可能是一个选项,但尚未对其跨客户端渲染进行全面测试,但欢迎来自之前的经验或研究的任何信息.
假设我们正在制作一份新闻通讯,我们无法预测客户将使用哪些客户,因此我们必须支持流行的主流电子邮件客户端:Outlook,Gmail,Yahoo,Hotmail,Thunderbird,iOS/OSX,Android ......
我有一个这样的查询:
query getUsers ($setId: Int) {
user(where: { user_sets: { set_id: { _in: [$setId] } } }) {
id
name
status
user_sets {
set {
name
}
}
# more fields...
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一种不应用where过滤器并在$setId为空时提供所有条目的方法。我想避免动态编写查询 - 这样做很容易,但我们希望在静态 .graphql 文件中查询:
query getUsers ($setId: Int) {
user(where: { user_sets: { set_id: { _in: [$setId] } } }) {
id
name
status
user_sets {
set {
name
}
}
# more fields...
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过的一些事情:
@skip和 …我正在使用RaphaelJS直观地表示一些数据.基础技术是SVG,所以显然在IE中并不总是能很好地工作,但是库仍然能够提供有用的东西,尽管它往往看起来很差.
无论如何,我似乎无法解决这个基本问题.Chrome或FireFox中的文本呈现正常,但在IE8中,所有内容都呈现为粗体和斜体.
要查看我的问题,请转到RaphaelJS游乐场并使用以下代码
paper.text(100, 100, "this is the text")
Run Code Online (Sandbox Code Playgroud)
以下是Chrome和IE的结果.

这有什么解决方法吗?
我正试图在缓慢的UI中修复一些性能缓慢的javascript,并且我将主要原因缩小到.width()用于width: 100%在响应式布局中查看元素的实际像素大小的jQuery 调用,在需要的过程中经常发生在响应用户操作时.
我已经添加了基于时间戳的测量结果,并且它们显示它仅占滞后时间的33%左右,这使得UI感觉清晰且UI感觉迟钝之间存在差异.删除这一行,用户界面感觉很快 - 但是,它把东西放在错误的地方......
似乎已经确定,.width()jQuery> 1.8相对较慢,主要有两个原因:
它会在计算元素大小时强制重排.来自引用的文章何时在DOM环境中发生重排?:
[当你检索必须计算的测量时发生回流,例如访问offsetWidth,clientHeight或任何计算的CSS值(通过DOM兼容浏览器中的getComputedStyle()或IE中的currentStyle)
...事实上,对于像IE和Firefox这样的浏览器,为了避免相互矛盾的变化(例如在同一个函数调用中隐藏和显示),将 DOM更改延迟到最后一刻,人们有时会添加不必要的状态getter以强制重排发生.
它还需要检查元素的边框状态.来自他们的博客:
jQuery 1.8现在需要在使用.width()时检查box-sizing属性,以便它可以决定是否需要减去填充和边框宽度.这可能是昂贵的 - 在Chrome上高达100倍!
我的代码width()调用的目的是查看响应式设计是否以及缩小了多少.它需要查看一个小部件的包装元素,它具有width: 100%;(但可能在列或其他容器中,具体取决于它所在的站点/页面),并且需要查看它实际显示的包装器最大宽度的百分比.
基于不同坐标系统的其他代码为我提供了标签的位置(以像素为单位),然后我需要使用缩放因子(本质上= $wrapper.width() / maxWidth;)来缩小位置,以便例如在页面中查看一个狭窄的窗口/设备,包装器是其最大尺寸的50%,标签的顶部和左侧偏移是其默认值的50%.
有没有什么方法可以访问这些数据,关于%-width元素在没有引起重排的情况下缩小了多少以及其他使.width()调用变慢的事情?
我试过或排除的事情:
.outerWidth() 和...一样慢 .width().get(0).clientWidth(纯Javascript /非Jquery选项)也几乎一样慢.width()(据推测,因此它是重新流动的罪魁祸首).get(0).clientWidth后跟.outerHeight()),则在第一个之后调用非常快(大约20倍).大概是因为刚刚完成了重排并且刚刚访问了元素属性,所以它们以某种方式被缓存.但是效果不适用于重复调用函数,仅在一个函数调用中..css("width")显然没用,因为它只是100%在所有情况下都给我[ 更新 ]我以为我想出了一种绕过我解决问题的方法,并且在不访问元素缩放的情况下定位我的标签:因为我已经有 …
我怎么可以给拉斐尔元素移动作为元素的动作,怎么样的CSS填充background-image一个的position: absolute;HTML元素将保持相对于它的位置相同的位置,因为它感动?
这是一个示例演示:如何将Raphael元素(三角形路径)的背景图像模式与HTML元素(方形div)拖动时的行为相同?
这个问题基本上与如何在Raphael.js/IE中使模式"修复"相反?使用偏振眼镜模拟器 - 我想在所有浏览器(包括IE8)中使他们试图避免一致的IE特定行为.
正如其他问题所详述的那样,仅在IE8(VML)中,Raphael元素就是我想要的; 但即使是这样飘忽不定:就像调用各种事情setSize上paper元素或重新定义填充(基本上,任何迫使重绘),导致它切换到其他行为.
纯SVG有一个类似的问题,但在写作时没有任何好的答案,当然没有一个适用于Raphael.
编辑2:观察SVG模式中发生的事情,似乎每个Raphael变换也会自动对svg <pattern>元素进行相同的矩阵变换.我认为这是导致我试图避免的行为的原因 - 我认为patternContentUnits并且patternUnits是无关的.这里似乎有一个未解决的问题(突出显示与剪辑相同的问题,在线旁边this.pattern && updatePosition(this);) - https://github.com/DmitryBaranovskiy/raphael/issues/638
因此,一种可能性是定义一个自定义属性,该属性将变换应用于元素,而不将其应用于模式.听起来很难 - 可能需要黑客拉斐尔或复制大量拉斐尔变换代码.希望还有其他一些方法.而上帝帮助我们做出在VML这项工作 ...
编辑3:一些可能相关的信息,不仅仅是有这个问题的路径填充.image创建的Raphael 元素paper.image()在SVG模式下没有这个问题,但是在IE8 VML模式下有一个非常类似的问题.下面是几个使图像元素移动的方法的演示,这里是一个并排比较,显示它们在非IE中完美无缺地工作,并且在IE中都失败了:

我评价一个Fabric.js作为替代Raphael.js一种创建交互式可视化是与IE8,它不支持SVG或帆布兼容(IE8的支持是不可转让的不幸).
Raphael可以使用可视化库D3.js - 它输出SVG并且与IE8不兼容 - 通过桥接库D34Raphael,一个适合与Raphael一起使用的D3分支.D34Raphael调整了一些(但不是全部)D3功能输出到Raphael的抽象对象而不是DOM,因此,在IE8上,Raphael可以将D3的输出解释为VML.
(编辑2014年2月 - D34Raphael现在似乎已经死了,但是有一个令人敬畏的替代R2D3似乎正在积极开发中)
Fabric可以在IE8上输出Canvas(使用excanvas转换为VML),并可以将SVG转换为交互式Canvas元素.所以,从理论上讲,Fabric可以在桥接D3和IE8中取代Raphael.这样做会增加灵活性,同时支持Canvas功能和SVG.
我没有找到任何与D34Raphael等效的Fabric - 我能找到的最接近的是这个在IE8中不起作用的演示页面.
从我所见的Fabric文档来看,它看起来像D34Raphael可以尝试Fabric:它支持转换SVG路径,圆形,多边形,折线,椭圆,矩形,线条和图像元素,并使用抽象对象这允许持续的交互性.比较Fabric处理矢量路径的性能与Raphael处理相同性能的基准令人印象深刻(尽管没有给出涉及交互或动画的比较基准).
以几个典型的D3项目为例:
我敢肯定,我不是第一个对此进行调查的人.我不太喜欢尝试实现类似的东西,只是发现有一些不可避免的问题,任何更有经验的Fabric,Canvas和/或D3都可以从一开始就指出.
我尝试过的:我已经研究过的一些问题:
一般问题:什么可能导致脚本本身工作正常,如果调用它的脚本或shell(bash)命令将其调用为变量,则挂起?
换句话说,当这样调用时,怎么会有一个脚本工作...... /path/to/script arg arg... 这样调用时失败并挂起...... VAR=$(/path/to/script arg arg);?
(主要编辑后注意到软件故障引起了很多初始测试,结果不正确)
我的具体情况:我有一个工作正常的脚本(启动,停止或重启Java应用程序Apache Solr,从这里改编).代码是下面,它的命令是sbin/service solr [action],例如sbin/service solr start.
从脚本调用或直接从控制台(bash在我的情况下)调用时sbin/service solr start,它可以正常工作并快速完成.但是,如果它被调用为变量,就像VAR=$(sbin/service solr start);它一样,但它会挂起futext/clock_gettime循环(下面的跟踪).如果它不是变量而是变成变量,它也会挂起strace.
奇怪的是,其他脚本以相同的方式使用相同的语法sbin/service httpd start调用,例如,在调用变量时工作得很好.因此,当输出存储为变量时,显然可能存在一些脚本会使其挂起,但在不是这种情况时可以很好地运行.
这是测试挂起的内容和不挂起的内容的结果:
HANGS ------------------------------------------------
VAR=$(/sbin/service solr start);VAR=$(source /sbin/service solr start);VAR=$(nohup /sbin/service solr start &);(因此,从哪个进程调用它并不重要)此外,编辑脚本文件以启动服务使用source会导致服务无法正常工作.
不要挂 -------------------------------------
VAR=$(/sbin/service solr start >> /dev/null);输出/dev/null允许我们请求输出而不会导致它挂起.然而,它并没有多大用处,因为没有收到实际的输出.
/sbin/service solr start与我最初的想法相反.这会输出一条简单的更新消息,理想情况下,我们会在变量和日志中捕获它 - 但尝试这样做会导致它挂起.
VAR=$(/sbin/service httpd …