
The post 一周文章精选 2017 09 01 appeared first on Linuxeden开源社区.
http://ift.tt/2wptAX5炎热的 7 月已经过去,秋天的脚步更近了。在本月,Tutorialzine 依旧为大家带来了一些有趣、实用的前端库,看看有哪些适合你的项目呢?
这是一组自带悬停动画的精致 SVG 图标。但与大多数 Web 图标不同之处在于 – 它的动画是基于 JS 的,需要你使用 bodymovin 库将动画效果导出为 SVG 格式。
项目地址:【传送门】
Rebass 是一个用于构建响应式 Web APP 的 React UI Kit。它由超过 60 种样式组件构成,可通过 样式体系 中的属性进行自由定制。这样可以保证样式的隔离,便可减少在应用程序中编写自定义 CSS 的需求。
项目地址:【传送门】
Bootstrap 4 的官方 Beta 版已经正式发布了!新版本的框架也发生了许多重大的改变,包括支持了基于 Flexbox 的网格体系,新增并重写了相关组件,更快的 ES6 JavaScript 插件,改进了文档等等。
项目地址:【传送门】
这是一组带有悬停动画效果的 HTML 按钮,这些按钮不仅拥有不同的形状与大小,而且具备了丰富的动画效果供你选择。Hover Buttons 是由 SCSS 制作的,所以你可以轻松的删除不想要的按钮,或根据个人喜好自由的定制其样式。
项目地址:【传送门】
React Simple Maps 是一个用于创建 SVG 地图的组件库,它具备添加地图细节的各类组件,它们可为地图的各个区域添加文字注释、标记以及自定义颜色。
项目地址:【传送门】
Gpu.js 是一个用于在浏览器中运行 GPGPU 的 JS 库,它将 JavaScript 编译成能够通过 WebGL API 在 GPU 上运行的着色语言,以便更快地执行复杂的计算。如果 WebGL 不可用,则这些函数仍将以常规的 JavaScript 运行。
项目地址:【传送门】
Pell 是一款超轻量的 WYSIWYG 文本编辑器。它由仅 200 行的 ES6 代码所构成,只有 1kB 的大小,并且没有任何的依赖关系。同时,它还支持 Markdown 文本格式所需的所有操作,包括插入图像和链接。
项目地址:【传送门】
Chromeless 是一个基于 Chrome 平台 Headless 模式 的 Web 自动化框架。它的 API 和功能与其他流行工具(如 PhantomJS 和 NightmareJS)非常相似,主要区别是它在 Chrome 的 Headless 模式下可以运行所有的测试。同时,它还可以在本地或借助 AWS Lambda 工作。
项目地址:【传送门】
Fitty 是一个 Vanilla JavaScript 库,它可以更改文本的字体大小,使其适应固定宽度的容器。它适用于所有标准的 Web 字体,并且可以“向上”或“向下”缩放其大小,以便让它们更好的占据可用空间,而无须换行。
项目地址:【传送门】
这是一个用于发送通知的 Node.js 库,旨在成为一个处理电子邮件、短信和推送通知的一体化解决方案。另外,每个服务都有多个提供商可供你选择。
项目地址:【传送门】
Shoelace 是一个炒鸡轻量的 CSS 入门套件,旨在为 Bootstrap 提供一个更简单的替代方案。它由 CSS reset 与一些实用的 UI 组件构成,没有过多的样式和功能。由于这个库的代码是基于 CSS 变量的,所以也易于定制。
项目地址:【传送门】
TensorFire 是一个能够在浏览器中运行神经网络的框架。由于 TensorFire 可通过 WebGL 进行 GPU 加速,所以运行较大的机器学习模型也不是事儿。虽然,该项目还处于早期阶段,但也有了一些十分有前景的演示。例如 剪刀包袱锤手势检测 Demo
项目地址:【传送门】
这是利用 Bootstrap、PugJS、Sass 构建的后台信息管理模板。由于该项目是基于易于定制的理念而设计,所以,所有的样式都是由独立的 SASS 模块进行组织。同时,该模版还提供了丰富的组件与小部件,你可以在 Demo 中查看它们。
项目地址:【传送门】
BotUI 是用于建立聊天机器人会话界面的 JavaScript 框架。它有一个超简单的 API,你可以通过添加消息、问题,甚至形成供用户填写的输入字段来配置对话流。
如果你想了解有关交互式会话 UI 的更多信息,请参阅我们的文章 《聊天机器人之开发者简介》。
项目地址:【传送门】
这是一个用于生成唯一 ID 的小型 JavaScript 库。它仅使用对 URL 友好的符号来生成字符串,但它也有一个让你提供相应字母表的选项。在 GitHub 的项目页上,你可以找到关于此库的工作方式,以及使用算法的一些有趣信息。
项目地址:【传送门】
感谢你的阅读。若你有所收获,欢迎点赞与分享。
注:
英文原文:15 Interesting JavaScript and CSS Libraries for August 2017
作者:Danny Markov
译者:IT 程序狮
译文地址:http://ift.tt/2iMYRyl
作者:IT 程序狮
链接:http://ift.tt/2iMYRyl
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
The post 2017 年 8 月:15 个有趣的 JS 和 CSS 库 appeared first on Linuxeden开源社区.
http://ift.tt/2woPx8M将 Closure Table 翻译成闭包表不知道是否合适,闭包表的思路和 物化路径 差不多,都是空间换时间,Closure Table,一种更为彻底的全路径结构,分别记录路径上相关结点的全展开形式。能明晰任意两结点关系而无须多余查询,级联删除和结点移动也很方便。但是它的存储开销会大一些,除了表示结点的 Meta 信息,还需要一张专用的关系表。
以下图举例数据举例:
创建主表:
|
1
2
3
4
5
|
CREATE TABLE nodeInfo (
node_id INT NOT NULL AUTO_INCREMENT,
node_name VARCHAR (255),
PRIMARY KEY (`node_id`)
) DEFAULT CHARSET = utf8;
|
创建关系表:
|
1
2
3
4
5
6
|
CREATE TABLE nodeRelationship (
ancestor INT NOT NULL,
descendant INT NOT NULL,
distance INT NOT NULL,
PRIMARY KEY (ancestor, descendant)
) DEFAULT CHARSET = utf8;
|
其中
添加数据(创建存储过程)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
CREATE DEFINER = `root`@`localhost` PROCEDURE `AddNode`(`_parent_name` varchar(255),`_node_name` varchar(255))
BEGIN
DECLARE _ancestor INT;
DECLARE _descendant INT;
DECLARE _parent INT;
IF NOT EXISTS(SELECT node_id From nodeinfo WHERE node_name = _node_name)
THEN
INSERT INTO nodeinfo (node_name) VALUES(_node_name);
SET _descendant = (SELECT node_id FROM nodeinfo WHERE node_name = _node_name);
INSERT INTO noderelationship (ancestor,descendant,distance) VALUES(_descendant,_descendant,0);
IF EXISTS (SELECT node_id FROM nodeinfo WHERE node_name = _parent_name)
THEN
SET _parent = (SELECT node_id FROM nodeinfo WHERE node_name = _parent_name);
INSERT INTO noderelationship (ancestor,descendant,distance) SELECT ancestor,_descendant,distance+1 from noderelationship where descendant = _parent;
END IF;
END IF;
END;
|
完成后 2 张表的数据大致是这样的:(注意:每个节点都有一条到其本身的记录。)
查询 Fruit 下所有的子节点:
|
1
2
3
4
5
6
7
8
9
|
SELECT
n3.node_name
FROM
nodeinfo n1
INNER JOIN noderelationship n2 ON n1.node_id = n2.ancestor
INNER JOIN nodeinfo n3 ON n2.descendant = n3.node_id
WHERE
n1.node_name = ‘Fruit’
AND n2.distance != 0
|
查询 Fruit 下直属子节点:
|
1
2
3
4
5
6
7
8
9
|
SELECT
n3.node_name
FROM
nodeinfo n1
INNER JOIN noderelationship n2 ON n1.node_id = n2.ancestor
INNER JOIN nodeinfo n3 ON n2.descendant = n3.node_id
WHERE
n1.node_name = ‘Fruit’
AND n2.distance = 1
|
查询 Fruit 所处的层级:
|
1
2
3
4
5
6
7
8
9
10
|
SELECT
n2.*, n3.node_name
FROM
nodeinfo n1
INNER JOIN noderelationship n2 ON n1.node_id = n2.descendant
INNER JOIN nodeinfo n3 ON n2.ancestor = n3.node_id
WHERE
n1.node_name = ‘Fruit’
ORDER BY
n2.distance DESC
|
另外要删除节点也非常的简单,这里就不再做过多的阐述。
参考链接:
The post 树形结构数据存储方案(三):闭包表 appeared first on Linuxeden开源社区.
http://ift.tt/2vxB5MM
2017-09-01
每一次用心地升级,都绝非是在讨好满腹牢骚的吃瓜群众。我们所有的努力,为的是不负有心之人。子曰:以直报怨,以德报德。
转自 http://ift.tt/2wXR47b
The post layui-2.1.1 版本更新 appeared first on Linuxeden开源社区.
http://ift.tt/2xCQGZ3gRPC 1.6.0 发布,gRPC 是一个高性能、开源、通用的 RPC 框架,面向移动和 HTTP/2 设计,是由谷歌发布的首款基于 Protocol Buffers 的 RPC 框架。 gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特性。这些特性使得其在移动设备上表现更好,更省电且节省空间占用。
更多内容请查看 发布说明 。
下载地址:
转自 http://ift.tt/2wtaePe
The post gRPC 1.6.0 发布,Google 高性能 RPC 框架 appeared first on Linuxeden开源社区.
http://ift.tt/2ev48cwLOG4J 2.9.0 发布了。Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI 组件、甚至是套接口服务 器、NT 的事件记录器、UNIX Syslog 守护进程等; 我们也可以控制每一条日志的输出格式; 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就 是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
更新内容:
log4j2.debug is defined with any value (or no value).详细内容请参见 发布说明 。
下载地址:
转自 http://ift.tt/2evbf55
The post LOG4J 2.9.0 发布,Java 日志组件 appeared first on Linuxeden开源社区.
http://ift.tt/2goSsoLThe post RMS:时代需要的自由捍卫者 appeared first on Linuxeden开源社区.
http://ift.tt/2wp8sjN