小编use*_*ca8的帖子

将GROUP_CONCAT中的MYSQL字符串拆分为IN()可以理解的(数组,表达式,列表)

这个问题是从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)

mysql expression list explode

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

Raphael JS:如何移动/动画路径对象?

不知怎的,这不起作用......

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而不是路径,为什么会这样,以及如何移动路径对象呢?!

javascript animation move path raphael

12
推荐指数
3
解决办法
3万
查看次数

在修改Array.prototype时创建javascript数组原型的重置?

一般问题:当像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)

javascript arrays prototype object

11
推荐指数
2
解决办法
2227
查看次数

在跨客户端HTML电子邮件中使元素重叠?

在浏览器的普通HTML中,使元素重叠很容易.

但是在HTML电子邮件的黑暗世界中,其座右铭是"像1996年的代码",因为Outlook使用MS Word和Gmail中的渲染引擎几乎删除了所有内容,因此我认为两种元素重叠的方法都不合适客户支持不佳:

  • Position在很多客户不支持,所以没有position: absolute;position: relative;没有top,left,right...
  • Gmail和其他人会删除负边距.所以,没有负利润.
  • overflow: visible;<img>标签全部需要明确的高度和宽度或布局时,由于缺少float支撑和不稳定的处理,使用元素的"悬垂" 以及宽度和高度小于元素内容大小的元素不能很好地工作的<div>S,必然需要根据表上的大部分时间.(也就是说,如果有可能,基于此的东西似乎是最可能的选择)
  • 没有任何涉及背景图片的选项是可选的,因为这些已在Gmail和其他人中删除
  • 甚至不想在HTML电子邮件中尝试使用CSS3或javascript ...

是否有任何可以可靠地用于在跨客户端HTML电子邮件中创建元素之间的重叠?和/或任何使元素从其边界框伸出而不影响其邻居定位的方法?

例如,假设你想做这样的事情(虚线和背景显示边界框),大图像挂在下面的行而不是向下推...

在此输入图像描述

元素(在这种情况下,<img>但不一定是图像)与其他元素重叠(在这种情况下,下面的行 - 但不一定是单独的行)而不将它们推开.

没有主要的客户端兼容性问题,有没有办法做到这一点?

编辑:刚刚发现这片疯狂扭曲的天才:使用colspans和rowpans使表格细胞重叠.这可能是一个选项,但尚未对其跨客户端渲染进行全面测试,但欢迎来自之前的经验或研究的任何信息.


假设我们正在制作一份新闻通讯,我们无法预测客户将使用哪些客户,因此我们必须支持流行的主流电子邮件客户端:Outlook,Gmail,Yahoo,Hotmail,Thunderbird,iOS/OSX,Android ......

html html-email

11
推荐指数
1
解决办法
9109
查看次数

仅当变量不为空时,如何应用 Hasura `where` 过滤器?

我有一个这样的查询:

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)

我尝试过的一些事情:

hasura

10
推荐指数
3
解决办法
2680
查看次数

Raphaeljs在IE中将所有文本呈现为Italic

我正在使用RaphaelJS直观地表示一些数据.基础技术是SVG,所以显然在IE中并不总是能很好地工作,但是库仍然能够提供有用的东西,尽管它往往看起来很差.

无论如何,我似乎无法解决这个基本问题.Chrome或FireFox中的文本呈现正常,但在IE8中,所有内容都呈现为粗体和斜体.

要查看我的问题,请转到RaphaelJS游乐场并使用以下代码

paper.text(100, 100, "this is the text")
Run Code Online (Sandbox Code Playgroud)

以下是Chrome和IE的结果.

铬 IE8

这有什么解决方法吗?

internet-explorer svg vml raphael internet-explorer-8

8
推荐指数
1
解决办法
922
查看次数

是否可以通过Javascript访问%-width元素的当前缩放因子而不会导致重排?

我正试图在缓慢的UI中修复一些性能缓慢的javascript,并且我将主要原因缩小到.width()用于width: 100%在响应式布局中查看元素的实际像素大小的jQuery 调用,在需要的过程中经常发生在响应用户操作时.

我已经添加了基于时间戳的测量结果,并且它们显示它仅占滞后时间的33%左右,这使得UI感觉清晰且UI感觉迟钝之间存在差异.删除这一行,用户界面感觉很快 - 但是,它把东西放在错误的地方......

似乎已经确定,.width()jQuery> 1.8相对较慢,主要有两个原因:

我的代码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%在所有情况下都给我
  • 我考虑获取窗口的宽度,但事情变得复杂,具体取决于托管此元素的页面的列布局.例如,如果我的包装器采用双列布局,并且窗口比折叠两列的断点稍宽,则窗口将比包装元素的最大大小宽,但包装元素不会在100%的最大宽度.

[ 更新 ]我以为我想出了一种绕过我解决问题的方法,并且在不访问元素缩放的情况下定位我的标签:因为我已经有 …

javascript css jquery reflow

7
推荐指数
1
解决办法
304
查看次数

如何使拉斐尔填充图案与元素一起移动?(相对于元素的背景图像位置)

我怎么可以给拉斐尔元素移动作为元素的动作,怎么样的CSS填充background-image一个的position: absolute;HTML元素将保持相对于它的位置相同的位置,因为它感动?

这是一个示例演示:如何将Raphael元素(三角形路径)的背景图像模式与HTML元素(方形div)拖动时的行为相同?

http://jsbin.com/oxuyeq/8/edit


这个问题基本上与如何在Raphael.js/IE中使模式"修复"相反?使用偏振眼镜模拟器 - 我想在所有浏览器(包括IE8)中使他们试图避免一致的IE特定行为.

正如其他问题所详述的那样,仅在IE8(VML)中,Raphael元素就是我想要的; 但即使是这样飘忽不定:就像调用各种事情setSizepaper元素或重新定义填充(基本上,任何迫使重绘),导致它切换到其他行为.


纯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中都失败了:

在此输入图像描述

svg background-image raphael

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

通过fabric.js推送D3.js输出以获得IE8支持?

我评价一个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都可以从一开始就指出.

  • 是否有任何现有的项目允许使用fabric.js渲染D3输出,类似于D34Raphael?
  • 有没有关于D3如何与SVG一起工作的东西,简单地无法通过Fabric的SVG传输到Canvas转换和对象模型?
  • 有没有更简单的方法来推动D3输出通过Fabric而不是D34Raphael方法分支D3项目并调整其输出?

我尝试过的:我已经研究过的一些问题:

  • Fabric会遇到与D34Raphael类似的问题,因为它在调整D3的DOM查询工具方面非常有限(因为它适用于抽象的对象,而不是DOM元素) - 但这可以通过组织良好的对象结构来解决.
  • Raphael和Fabric都在IE8中使用VML,但是通过不同的引擎,所以Raphael和Fabric的excanvas在VML中实现的功能可能会有所不同.到目前为止,在我的测试中,IE8中的动画和交互性能都很差,但功能似乎相当,而Fabric似乎比Raphael 在IE8中渲染VML文本要好得多.
  • 使用从SVG转换的形状的Fabric的性能似乎很好,并且看起来好像基于D3的重绘,交互性和动画应该是平滑的,因为这些需要与初始绘制类似的过程(但是可能有一些我在这里没有想到的).
  • 似乎Fabric的团队更像是D3工作的原生SVG团队而不是拉斐尔的团队(但我可能忽略了这里的东西).

raphael d3.js fabricjs

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

Shell脚本挂起,但只有在调用变量或strace时才会挂起

一般问题:什么可能导致脚本本身工作正常,如果调用它的脚本或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 …

linux bash shell

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