diff --git a/README.md b/README.md index ddf5f1bc56..ccbb2ba171 100644 --- a/README.md +++ b/README.md @@ -59,41 +59,42 @@ LCTT 的组成 * 2016/12/24 拟定 LCTT [Core 规则](core.md),并增加新的 Core 成员: ucasFL、martin2011qi,及调整一些组。 * 2017/03/13 制作了 LCTT 主页、成员列表和成员主页,LCTT 主页将移动至 https://linux.cn/lctt 。 * 2017/03/16 提升 GHLandy、bestony、rusking 为新的 Core 成员。创建 Comic 小组。 +* 2017/04/11 启用头衔制,为各位重要成员颁发头衔。 -活跃成员 +核心成员 ------------------------------- -目前 TP 活跃成员有: -- Leader @wxy, -- Source @oska874, -- Proofreaders @jasminepeng, -- CORE @geekpi, -- CORE @GOLinux, -- CORE @ictlyh, -- CORE @strugglingyouth, -- CORE @FSSlc, -- CORE @zpl1025, -- CORE @runningwater, -- CORE @bazz2, -- CORE @Vic020, -- CORE @alim0x, -- CORE @tinyeyeser, -- CORE @Locez, -- CORE @ucasFL, -- CORE @martin2011qi, -- CORE @GHLandy, -- CORE @bestony, -- CORE @rusking, -- Senior @DeadFire, -- Senior @reinoir222, -- Senior @vito-L, -- Senior @willqian, -- Senior @vizv, -- Senior @dongfengweixiao, -- Senior @PurlingNayuki, -- Senior @carolinewuyan, +目前 LCTT 核心成员有: + +- 组长 @wxy, +- 选题 @oska874, +- 校对 @jasminepeng, +- 钻石译者 @geekpi, +- 钻石译者 @GOLinux, +- 钻石译者 @ictlyh, +- 技术组长 @bestony, +- 漫画组长 @GHLandy, +- LFS 组长 @martin2011qi, +- 核心成员 @strugglingyouth, +- 核心成员 @FSSlc, +- 核心成员 @zpl1025, +- 核心成员 @runningwater, +- 核心成员 @bazz2, +- 核心成员 @Vic020, +- 核心成员 @alim0x, +- 核心成员 @tinyeyeser, +- 核心成员 @Locez, +- 核心成员 @ucasFL, +- 核心成员 @rusking, +- 前任选题 @DeadFire, +- 前任校对 @reinoir222, +- 前任校对 @PurlingNayuki, +- 前任校对 @carolinewuyan, +- 功勋成员 @vito-L, +- 功勋成员 @willqian, +- 功勋成员 @vizv, +- 功勋成员 @dongfengweixiao, 全部成员列表请参见: https://linux.cn/lctt-list/ 。 -谢谢大家的支持! - +谢谢大家的支持! \ No newline at end of file diff --git a/published/20160926 First 5 Commands When I Connect on a Linux Server.md b/published/20160926 First 5 Commands When I Connect on a Linux Server.md new file mode 100644 index 0000000000..84278ffb78 --- /dev/null +++ b/published/20160926 First 5 Commands When I Connect on a Linux Server.md @@ -0,0 +1,123 @@ +连接到 Linux 服务器时首先要运行的 5 个命令 +============================================================ + + ![当我连接到 Linux 服务器时运行的前 5 个命令](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/first-5-commands_0.jpg?itok=sITDZBzw "当我连接到 Linux 服务器时运行的前 5 个命令") + +[Creative Commons Attribution][1][Sylvain Kalache][2][当我连接到 Linux 服务器时运行的前 5 个命令][3] + +作为一个系统管理员/SRE 工作 5 年后,我知道当我连接到一台 Linux 服务器时我首先应该做什么。这里有一系列关于服务器你必须了解的信息,以便你可以(在大部分时间里)更好的调试该服务器。 + +### 连上 Linux 服务器的第一分钟 + +这些命令对于有经验的软件工程师来说都非常熟悉,但我意识到对于一个刚开始接触 Linux 系统的初学者来说,例如我在 [Holberton 学校][5]任教的学生,却并非如此。这也是我为什么决定分享当我连上 Linux 服务器首先要运行的前 5 个命令的原因。 + +``` +w +history +top +df +netstat +``` + +这 5 个命令在任何一个 Linux 发行版中都有,因此不需要额外的安装步骤你就可以直接使用它们。 + +### w: + +``` +[ubuntu@ip-172-31-48-251 ~]$ w +23:40:25 up 273 days, 20:52, 2 users, load average: 0.33, 0.14, 0.12 +USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT +ubuntu pts/0 104-7-14-91.ligh 23:39 0.00s 0.02s 0.00s w +root pts/1 104-7-14-91.ligh 23:40 5.00s 0.01s 0.03s sshd: root [priv] +[ubuntu@ip-172-31-48-251 ~]$ +``` + +这里列出了很多有用的信息。首先,你可以看到服务器运行时间 [uptime][6],也就是服务器持续运行的时间。然后你可以看到有哪些用户连接到了服务器,当你要确认你没有影响你同事工作的时候这非常有用。最后 [load average][7] 能很好的向你展示服务器的健康状态。 + +### history + +``` +[ubuntu@ip-172-31-48-251 ~]$ history + 1 cd /var/app/current/log/ + 2 ls -al + 3 tail -n 3000 production.log + 4 service apache2 status + 5 cat ../../app/services/discourse_service.rb +``` + +`history` 能告诉你当前连接的用户之前运行了什么命令。你可以看到很多关于这台机器之前在执行什么类型的任务、可能出现了什么错误、可以从哪里开始调试工作等信息。 + +### top + +``` +top - 23:47:54 up 273 days, 21:00, 2 users, load average: 0.02, 0.07, 0.10 +Tasks: 79 total, 2 running, 77 sleeping, 0 stopped, 0 zombie +Cpu(s): 1.0%us, 0.0%sy, 0.0%ni, 98.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.3%st +Mem: 3842624k total, 3128036k used, 714588k free, 148860k buffers +Swap: 0k total, 0k used, 0k free, 1052320k cached + + PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND +21095 root 20 0 513m 21m 4980 S 1.0 0.6 1237:05 python +1380 healthd 20 0 669m 36m 5712 S 0.3 1.0 265:43.82 ruby +19703 dd-agent 20 0 142m 25m 4912 S 0.3 0.7 11:32.32 python + 1 root 20 0 19596 1628 1284 S 0.0 0.0 0:10.64 init + 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd + 3 root 20 0 0 0 0 S 0.0 0.0 27:31.42 ksoftirqd/0 + 4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0 + 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H + 7 root 20 0 0 0 0 S 0.0 0.0 42:51.60 rcu_sched + 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh +``` + +你想知道的下一个信息:服务器当前在执行什么工作。使用 `top` 命令你可以看到所有正在执行的进程,然后可以按照 CPU、内存使用进行排序,并找到占用资源的进程。 + +### df + +``` +[ubuntu@ip-172-31-48-251 ~]$ df -h +Filesystem Size Used Avail Use% Mounted on +/dev/xvda1 7.8G 4.5G 3.3G 58% / +devtmpfs 1.9G 12K 1.9G 1% /dev +tmpfs 1.9G 0 1.9G 0% /dev/shm +``` + +你服务器正常工作需要的下一个重要资源就是磁盘空间。磁盘空间消耗完是非常典型的问题。 + +### netstat + +``` +[ubuntu@ip-172-31-48-251 ec2-user]# netstat -lp +Active Internet connections (only servers) +Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name +tcp 0 0 *:http *:* LISTEN 1637/nginx +tcp 0 0 *:ssh *:* LISTEN 1209/sshd +tcp 0 0 localhost:smtp *:* LISTEN 1241/sendmail +tcp 0 0 localhost:17123 *:* LISTEN 19703/python +tcp 0 0 localhost:22221 *:* LISTEN 1380/puma 2.11.1 (t +tcp 0 0 *:4242 *:* LISTEN 18904/jsvc.exec +tcp 0 0 *:ssh *:* LISTEN 1209/sshd +``` + +计算机已成为我们世界的重要一部分,因为它们有通过网络进行相互交流的能力。知道你的服务器正在监听什么端口、IP地址是什么、以及哪些进程在使用它们,这对于你来说都非常重要。 + +显然这个列表会随着你的目的和你已有的信息而变化。例如,当你需要调试性能的时候,[Netflix 就有一个自定义的列表][8]。你有任何不在我 Top 5 中的有用命令吗?在评论部分和我们一起分享吧! + +-------------------------------------------------------------------------------- + +via: https://www.linux.com/blog/first-5-commands-when-i-connect-linux-server + +作者:[SYLVAIN KALACHE][a] +译者:[ictlyh](https://github.com/ictlyh) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]:https://www.linux.com/users/sylvainkalache +[1]:https://www.linux.com/licenses/category/creative-commons-attribution +[2]:https://twitter.com/sylvainkalache +[3]:https://www.flickr.com/photos/sylvainkalache/29587668230/in/dateposted/ +[4]:https://www.linux.com/files/images/first-5-commandsjpg-0 +[5]:https://www.holbertonschool.com/ +[6]:http://whatis.techtarget.com/definition/uptime-and-downtime +[7]:http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages +[8]:http://techblog.netflix.com/2015/11/linux-performance-analysis-in-60s.html diff --git a/published/20161020 Useful Vim editor plugins for software developers - part 3 a.vim.md b/published/20161020 Useful Vim editor plugins for software developers - part 3 a.vim.md new file mode 100644 index 0000000000..8b8b627506 --- /dev/null +++ b/published/20161020 Useful Vim editor plugins for software developers - part 3 a.vim.md @@ -0,0 +1,87 @@ +开发者的实用 Vim 插件(三) +============================================================ + +目前为止,在一系列介绍 vim 插件文章中,我们介绍了使用 Pathogen 插件管理包安装基本的 vim 插件,也提及了另外三个插件:[Tagbar、delimitMate](https://linux.cn/article-7901-1.html) 和 [Syntastic](https://linux.cn/article-7909-1.html)。现在,在最后一部分,我们将介绍另一个十分有用的插件 a.vim。 + +请注意所有本篇教程所提及的例子、命令和指导,它们已经在 Ubuntu 16.04 测试完毕,vim 使用版本为 vim7.4 (LCTT 译注:Ubuntu 16.04 的默认版本) + +### A.vim + +如果你一直用像 C、C++ 这样的语言进行开发工作,你一定有这样的感触:我特么已经数不清我在头文件和源代码之间切换过多少次了。我想说的是,确实,这个操作十分基本,十分频繁。 + +尽管使用基于 GUI(图形界面)的 IDE(集成开发环境)非常容易通过鼠标的双击切换文件,但是如果你是资深 vim 粉,习惯用命令工作就有点尴尬了。但是不要害怕,我有秘籍--插件 a.vim。它可以让你解决尴尬,专治各种文件切换。 + +在我们介绍这个神器用法之前,我必须强调一点:这个插件的安装过程和我们其他篇介绍的不太一样,步骤如下: + +* 首先,你需要下载两个文件(a.vim 和 alternate.txt),你可以在[这里][1]找到它们。 +* 接下来,创建如下目录:`~/.vim/bundle/avim`、`~/.vim/bundle/avim/doc`、 `~/.vim/bundle/avim/plugin` 和 `~/.vim/bundle/autoload`。 +* 创建好目录之后,将 `a.vim` 放到 `~/.vim/bundle/avim/plugin` 和 `~/.vim/bundle/autoload`,以及将 `alternate.txt` 放到 `~/.vim/bundle/avim/doc`。 + +就是这样,如果上述步骤被你成功完成,你的系统就会安装好这个插件。 + +使用这个插件十分简单,你仅仅需要运行这个命令 `:A` 如果目前的文件是源文件(比如 `test.c`),这个神器就会帮你打开 `test.c` 对应的头文件(`test.h`),反之亦然。 + +当然咯,不是每个文件对应的头文件都存在。这种情况下,如果那你运行 `:A` 命令,神器就会为你新建一个文件。比如,如果 `test.h` 不存在,那么运行此命令就会帮你创建一个 `test.h`,然后打开它。 + +如果你不想要神器开启此功能,你可以在你的家目录的隐藏文件 `.vimrc` 中写入 `g:alternateNonDefaultAlternate` 变量,并且赋给它一个非零值即可。 + +还有一种情况也很普遍,你需要打开的文件并非是当前源代码的头文件。比如你目前在 `test.c` 你想打开 `men.h` 这个头文件,那么你可以输入这个命令 `:IH ` ,毋需赘言,你肯定要在后面输入你要打开的的文件名称 ``。 + +目前为止,我们讨论的功能都仅限于你当前文件和要操作的文件都在同一个目录去实现。但是,你也知道,我们还有特殊情况,我是说,许多项目中头文件与对应的源文件并不一定在同一目录下。 + +为了搞定这个问题,你要使用这个 `g:alternateSearchPath` 这个变量。官方文档是这么[解释](https://github.com/csliu/a.vim/blob/master/doc/alternate.txt)的: + +> 这个插件可以让用户配置它的搜索源文件和头文件的搜索路径。这个搜索路径可以通过设置 `g:alternateSearchPath` 这个变量的值指定。默认的设定如下: + +> ``` +> g:alternateSearchPath = 'sfr:../source,sfr:../src,sfr:../include,sfr:../inc' +> ``` + +> 使用这个代码表示神器将搜索 `../source`、`../src`、`../include` 和 `../inc` 下所有与目标文件相关的文件。 `g:alternateSearchPath` 变量的值由前缀和路径组成,每个单元用逗号隔开。 `sfr` 前缀是指后面的路径是相对于目前文件的,`wdr` 前缀是指目录是相对于目前的工作目录, `abs` 是指路径是绝对路径。如果不指定前缀,那么默认为 `sfr`。 + +如果我们前文所提及的特性就能让你觉得很炫酷,那我不得不告诉你,这才哪跟哪。还有一个十分有用的功能是分割 Vim 屏幕,这样你就可以同时看到头文件和相应的源文件。 + +哦,还有,你还可以选择垂直或者水平分割。全凭你心意。使用 `:AS` 命令可以水平分割,使用 `:AV` 可以垂直分割。 + +[ + ![Vim.a vertical split screen](https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers-3/vim-ver-split.png) +][5] + +[ + ![vim.a horizontal split screen](https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers-3/vim-hor-split.png) +][6] + +使用 `:A` 命令在已经打开的文件中切换。 + +这个插件还可以让你在同一个 Vim 窗口中不同选项卡中打开多个相应的文件,你键入这个命令 `:AT`。 + +[ + ![tabs in Vim with a.vim.](https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers-3/vim-tab1.png) +][7] + +当然,你可以用这些命令 `:AV`、`:AS` 和 `:AT`,也可以使用这些命令 `:IHV`、`:IHS` 和 `:IHT`。 + +### 最后 + +还有许多和编程相关的 Vim 的插件,我们在这个三篇系列主要讨论的是,如果你为你的软件开发工作安装了合适的插件,你就会明白为什么 vim 被叫做编辑器之神。 + +当然,我们在这只关注编程方面,对于那些把 Vim 当做日常文档编辑器的人来说,你也应该了解一些 Vim 的插件,让你的编辑更好,更高效.我们就改日再谈这个问题吧。 + +-------------------------------------------------------------------------------- + +via: https://www.howtoforge.com/tutorial/vim-editor-plugins-for-software-developers-3/ + +作者:[Ansh][a] +译者:[Taylor1024](https://github.com/Taylor1024) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]:https://www.howtoforge.com/tutorial/vim-editor-plugins-for-software-developers-3/ +[1]:http://www.vim.org/scripts/script.php?script_id=31 +[2]:https://www.howtoforge.com/tutorial/vim-editor-plugins-for-software-developers/ +[3]:https://www.howtoforge.com/tutorial/vim-editor-plugins-for-software-developers-2-syntastic/ +[4]:https://github.com/csliu/a.vim/blob/master/doc/alternate.txt +[5]:https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers-3/big/vim-ver-split.png +[6]:https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers-3/big/vim-hor-split.png +[7]:https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers-3/big/vim-tab1.png diff --git a/published/20161028 Configuring WINE with Winetricks.md b/published/20161028 Configuring WINE with Winetricks.md new file mode 100644 index 0000000000..9b3963a622 --- /dev/null +++ b/published/20161028 Configuring WINE with Winetricks.md @@ -0,0 +1,79 @@ +用 Winetricks 配置 WINE +============================================================ + +### 简介 + +如果 `winecfg` (WINE 的配置工具)是一把螺丝刀,那么 `winetricks` 就是一个钻床。它们各有特长,但是 `winetricks` 真的是一个强大的多的工具。实际上,它甚至可以启动 `winecfg`。 + +`winecfg` 让你可以改变 WINE 本身的设置,而 `winetricks` 则可以让你改造实际的 Windows 层,它可以让你安装 Windows 重要的系统组件,比如 .dll 文件和系统字体,还可以允许你修改 Windows 注册表的信息。它还有任务管理器、卸载工具和文件浏览器。 + +尽管 `winetricks` 可以做以上这些工作,但是大部分时间我们用到的功能也就是管理 `dll` 文件和 Windows 组件。 + +### 安装 + +和 `winecfg` 不同,`winetricks` 不是集成在 WINE 中的。这样也没什么问题,由于它实际上只是个脚本文件,你可以在各种发行版上很轻松地下载和使用它。现在,许多发行版把 `winetricks` 打包。只要你喜欢,你也可以下载打包后的版本。不过,有些包可能会比较老旧,所以本指南将使用脚本,毕竟脚本通用且更新及时。默认情况下,它的图形界面有些丑,所以你要是想个性化界面,最好通过你的发行版的包管理器安装一个 `zenity`。 + +现在假定你想在你的 `/home` 目录下配置 `winetricks`。 `cd` 到此,然后 `wget` 这个脚本。 + +``` +$ cd ~ + +$ wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks +``` + +然后,给这个脚本可执行权限。 + +``` +$ chmod+x winetricks +``` + +`winetricks` 可以通过命令行运行,在行末指定要安装的东西。但是大部分情况下,你都不知道 .dll 文件或者是你想安装字体确切的名字,那么,这时候最好利用图形界面程序。启动这个程序和其他程序没什么不同,就是在末尾什么都别输入就行了。 + +``` +$ ~/winetricks +``` + +![winetricks-main](https://linuxconfig.org/images/winetricks-main.png) + +当窗口第一次打开时候,将会给你一个有 “查看帮助”View help“安装应用”Install an application 选项的菜单。一般情况下,我们选择 “选择默认的 wineprefix”Select the default wineprefix,这将是你主要使用的选项。其他的也能用,但是不推荐使用。接下来,单击 “OK”,你就会进入到 WINE prefix 的配置菜单,你可以在这完成所有你要使用 `winetricks` 完成的事情。 + +![The winetricks prefix menu](https://linuxconfig.org/images/winetricks-prefix.png) + +### 字体 + +![The winetricks font menu](https://linuxconfig.org/images/winetricks-font.png) + +字体一直很重要,一些应用程序没有字体就没法正常的加载。`winetricks` 可以轻松地安装许多常用 Windows 字体.在配置菜单中,选中 “安装字体”Install a font 单选按钮,然后点击 “OK” 即可。 + +然后你就会得到一列字体清单,它们都有着相对应的复选框。你很难确切知道你到底需要什么字体,所以一般按每个应用决定使用什么字体,我们可以先安装一款插件 `corefonts`,它包含了大多数 Windows 系统中应用程序所设定的字体。安装它也十分简单,所以可以试试。 + +要安装 `corefonts` ,请选择相应的复选框,然后点击 “OK”,你就会看到和在 Windows 下差不多的提示,字体就会被安装了。完成了这个插件的安装,你就会回到先前的菜单界面。接下来就是安装你需要的别的插件,步骤相同。 + +### .dll 文件和组件 + +![The winetricks dll menu](https://linuxconfig.org/images/winetricks-dll.png) + +`winetricks` 安装 Windows 下的 .dll 文件和别的组件也十分简单。如果你需要安装的话,在菜单页选择 “安装 Windows DLL 或组件”Install a Windows DLL or component,然后点击 “OK”。 + +窗口就会进入到另一个菜单界面,其中包含可用的 dll 和其他 Windows 组件。在相应的复选框进行选择,点击 “OK”。脚本就会下载你选择的组件,接着通过 Windows 一般的安装进程进行安装。像 Windows 机器上安装那样跟着提示往下走。可能会有报错信息。很多时候,Windows 安装程序会报错,但是你接着会收到来自 `winetricks` 窗口的消息,说明它正在绕过此问题。这很正常。由于组件之间的相互依赖关系,你可能会也可能不会看到成功安装的信息。只要确保安装完成时候,菜单页中你的选项仍旧处于被选中状态就行了。 + +### 注册表 + +![WINE regedit](https://linuxconfig.org/images/winetricks-regedit.png) + +你不需要常常编辑注册表中 WINE 对应的值,但是对于有些程序确实需要。技术层面来讲,`winetricks` 不向用户提供注册表编辑器,但是要访问编辑器也很容易。在菜单页选中“运行注册表编辑”Run regedit,点击 “OK”,你就可以打开一个简单的注册表编辑器。事实上,写入注册表的值有点超出本篇引导文章的范围了,但是我还要多说一句,如果你已经知道你在干什么,增加一个注册表条目不是很难。注册表有点像电子表格,你可以将正确的值填入右面的格子中。这个说的有点过于简单,但是就是这样的。你可以在以下地址精准地找到你需要在 WINE Appdp 所要填入或编辑的东西。 https://appdb.winehq.org。 + +### 结束语 + +很明显 `winetricks` 还有许多许多强大的功能,但是本篇指南的目的只是给你一点基础知识,以使用这个强大的工具,使你的程序通过 WINE 运行。WINE Appdb 对每个程序都有相应的设置,将来会越来越丰富。 + +------------------ +via: https://linuxconfig.org/configuring-wine-with-winetricks + +作者:Nick Congleton +译者:[Taylor1024](https://github.com/Taylor1024) +校对:[jasminepeng](https://github.com/jasminepeng) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + + diff --git a/published/20161104 Build Strong Real-Time Streaming Apps with Apache Calcite.md b/published/20161104 Build Strong Real-Time Streaming Apps with Apache Calcite.md new file mode 100644 index 0000000000..6ccec16fc9 --- /dev/null +++ b/published/20161104 Build Strong Real-Time Streaming Apps with Apache Calcite.md @@ -0,0 +1,55 @@ +用 Apache Calcite 构建强大的实时流式应用 +============== + + ![Calcite](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/calcite.jpg?itok=CUZmjPjy "Calcite ") + +Calcite 是一个数据框架,它允许你创建自定义数据库功能,微软开发者 Atri Sharma 在 Apache 2016 年 11 月 14-16 日在西班牙塞维利亚举行的 Big Data Europe 中对此进行了讲演。 + +[Creative Commons Zero][2] Wikimedia Commons: Parent Géry + +[Apache Calcite][7] 数据管理框架包含了典型的数据库管理系统的许多部分,但省略了如数据的存储和处理数据的算法等其他部分。 Microsoft 的 Azure Data Lake 的软件工程师 Atri Sharma 在西班牙塞维利亚的 [Apache:Big Data][6] 会议上的演讲中讨论了使用 [Apache Calcite][5] 的高级查询规划能力。我们与 Sharma 讨论了解有关 Calcite 的更多信息,以及现有程序如何利用其功能。 + + ![Atri Sharma](https://www.linux.com/sites/lcom/files/styles/floated_images/public/atri-sharma.jpg?itok=77cvZWfw "Atri Sharma") + +*Atri Sharma,微软 Azure Data Lake 的软件工程师,已经[授权使用][1]* + +**Linux.com:你能提供一些关于 Apache Calcite 的背景吗? 它有什么作用? + +Atri Sharma:Calcite 是一个框架,它是许多数据库内核的基础。Calcite 允许你构建自定义的数据库功能来使用 Calcite 所需的资源。例如,Hive 使用 Calcite 进行基于成本的查询优化、Drill 和 Kylin 使用 Calcite 进行 SQL 解析和优化、Apex 使用 Calcite 进行流式 SQL。 + +**Linux.com:有哪些是使得 Apache Calcite 与其他框架不同的特性? + +Atri:Calcite 是独一无二的,它允许你建立自己的数据平台。 Calcite 不直接管理你的数据,而是允许你使用 Calcite 的库来定义你自己的组件。 例如,它允许使用 Calcite 中可用的 Planner 定义你的自定义查询优化器,而不是提供通用查询优化器。 + +**Linux.com:Apache Calcite 本身不会存储或处理数据。 它如何影响程序开发? + +Atri:Calcite 是数据库内核中的依赖项。它针对的是希望扩展其功能,而无需从头开始编写大量功能的的数据管理平台。 + +** Linux.com:谁应该使用它? 你能举几个例子吗?** + +Atri:任何旨在扩展其功能的数据管理平台都应使用 Calcite。 我们是你下一个高性能数据库的基础! + +具体来说,我认为最大的例子是 Hive 使用 Calcite 用于查询优化、Flink 解析和流 SQL 处理。 Hive 和 Flink 是成熟的数据管理引擎,并将 Calcite 用于相当专业的用途。这是对 Calcite 应用进一步加强数据管理平台核心的一个好的案例研究。 + +**Linux.com:你有哪些期待的新功能? + +Atri:流式 SQL 增强是令我非常兴奋的事情。这些功能令人兴奋,因为它们将使 Calcite 的用户能够更快地开发实时流式应用程序,并且这些程序的强大和功能将是多方面的。流式应用程序是新的事实,并且在流式 SQL 中具有查询优化的优点对于大部分人将是非常有用的。此外,关于暂存表的讨论还在进行,所以请继续关注! + +-------------------------------------------------------------------------------- + +via: https://www.linux.com/news/build-strong-real-time-streaming-apps-apache-calcite + +作者:[AMBER ANKERHOLZ][a] +译者:[geekpi](https://github.com/geekpi) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]:https://www.linux.com/users/aankerholz +[1]:https://www.linux.com/licenses/category/used-permission +[2]:https://www.linux.com/licenses/category/creative-commons-zero +[3]:https://www.linux.com/files/images/atri-sharmajpg +[4]:https://www.linux.com/files/images/calcitejpg +[5]:https://calcite.apache.org/ +[6]:http://events.linuxfoundation.org/events/apache-big-data-europe +[7]:https://calcite.apache.org/ diff --git a/translated/tech/20161128 JavaScript frameworks and libraries.md b/published/20161128 JavaScript frameworks and libraries.md similarity index 55% rename from translated/tech/20161128 JavaScript frameworks and libraries.md rename to published/20161128 JavaScript frameworks and libraries.md index 2f737584d0..09ebfb9b62 100644 --- a/translated/tech/20161128 JavaScript frameworks and libraries.md +++ b/published/20161128 JavaScript frameworks and libraries.md @@ -2,114 +2,114 @@ ============================================================ ![JavaScript frameworks and libraries](https://opensource.com/sites/default/files/styles/image-full-size/public/images/life/code_javascript.jpg?itok=a4uULCF0 "JavaScript frameworks and libraries") ->来源 : 图片来自 Jen Wike Huger +*来源 : 图片来自 Jen Wike Huger* JavaScript 即未来趋势所在。 -Javascript 拥有众多的技术领导者的拥护和支持,其中一位就是 WordPress 的作者 Matt Mullenweg , 他表示 [WordPress 开发者][18] 应该学习 JavaScript , 这也清晰地向 WordPress 社区传达了 JavaScript 在未来的重要性。 同时,这一观点也被普遍接受。向着更先进的技术靠拢与过渡也同时保证了 WordPress 在未来的挑战中不会落于人后。 +Javascript 得到了众多的技术领导者的拥护和支持,其中一位就是 WordPress 的作者 Matt Mullenweg , 他表示 [WordPress 开发者][18] 应该学习 JavaScript , 这也清晰地向 WordPress 社区传达了 JavaScript 在未来的重要性。 同时,这一观点也被普遍接受。向着更先进的技术靠拢与过渡也同时保证了 WordPress 在未来的挑战中不会落于人后。 -JavaScript 同时也是众多站在开源立场的技术中的佼佼者。与现在所流行的观点相反,JavaScript 不是一个工程,而是一个由其核心团队共同制定和维护的开放标准。[ECMAScript][19] , 另一个和 JavaScript 相关的名字, 它虽然不是开源的,但它也有一个开放的标准。 +JavaScript 同时也是众多站在开源立场的技术中的佼佼者。与现在所流行的观点相反,JavaScript 不是一个工程,而是一个由其核心团队共同制定和维护的开放标准。[ECMAScript][19] , 这是另一个和 JavaScript 相关的名字, 它虽然不是开源的,但它也有一个开放的标准。 -当你在浏览 GitHub 的时候你就可以发现 JavaScript 在当今有多么流行了。而且就 [repository 的数量][20] 而言,JavaScript 绝对位于所有的编程语言当中最顶尖的那一层次。 同时,在 Livecoding.tv 上你也能看出 JavaScript 有多么突出,这里的用户发布的关于 JavaScript 的视频的数量比其他的话题多得多。在写这篇文章的时候(原作者写下这篇文章的日期,非译者翻译日期),Livecoding.tv 上已经有 [45,919 个 用户原创的 JavaScript 视频教程][21] 。 +当你在浏览 GitHub 的时候你就可以发现 JavaScript 在当今有多么流行了。而且就[仓库的数量][20] 而言,JavaScript 绝对位于所有的编程语言当中最顶尖的那一层次。 同时,在 Livecoding.tv 上你也能看出 JavaScript 有多么突出,这里的用户发布的关于 JavaScript 的视频的数量比其他的话题多得多。在写这篇文章的时候(2016 年底),Livecoding.tv 上已经有 [45,919 个 用户原创的 JavaScript 视频教程][21] 。 ### 热门的开源 JavaScript 框架和库 -回归到主题, 庞大的社区是 JavaScript 的一个得天独厚的优势,同时这也驱动了 JavaScript 的蓬勃发展。这里有数以百千计的成熟的 JavaScript 框架和库供开发者使用,同时这些最优秀的框架和库都是开源的。对当前的 JavaScript 开发者来说,能够使用这些优秀的框架和库来进行快速开发已经是必须技能了。当今的市场需要快速开发,但是,重复造轮子是没有必要的。不论你是一个 JavaScript 新手还是一个资深的 JavaScript 开发者,使用框架和库都能极大提高你的工作效率。 +回归到主题, 庞大的社区是 JavaScript 的一个得天独厚的优势,同时这也推动了 JavaScript 的蓬勃发展。这里有数以百千计的成熟的 JavaScript 框架和库供开发者使用,同时这些最优秀的框架和库都是开源的。对当前的 JavaScript 开发者来说,能够使用这些优秀的框架和库来进行快速开发已经是必须技能了。当今的市场需要快速开发,但是,重复造轮子是没有必要的。不论你是一个 JavaScript 新手还是一个资深的 JavaScript 开发者,使用框架和库都能极大提高你的工作效率。 好了,让我们开始吧! -### 1\. Angular.js +#### 1\. Angular.js -[Angular.js][1] 是目前最热门的 JavaScript 框架之一。它用于开发者构建复杂的 web 应用。Angular.js 背后的思想是它的单页应用 model。同时它 也支持 MVC 架构。在 Angular.js 中 ,开发者可以在前端中使用 JavaScript 代码,并从字面上扩展 HTML词汇。 +[Angular.js][1] 是目前最热门的 JavaScript 框架之一。它用于开发者构建复杂的 web 应用。Angular.js 背后的思想是它的单页应用 model。同时它 也支持 MVC 架构。在 Angular.js 中 ,开发者可以在前端中使用 JavaScript 代码,并从字面上扩展 HTML 词汇。 Angular.js 自 2009 年出现以来已经有了很大的改进。Angular 1 当前的稳定版本是 1.5.8/1.2.30 。你也可以试一试 Angular 2 ,相对于 Angular 1 来说它有了重大的改进,但这个新版本仍未在全球范围内被普遍使用。 -在 Angular.js 中,数据绑定是完成作业的一个重要概念。在用户与接口的交互中,当交互完成 view 就会自动更新新值,随即新值与 model 交互以确保一切都是同步的。在底层的逻辑在 model 中执行完成后,DOM 也会随即更新。 +在 Angular.js 中,数据绑定是完成工作的一个重要概念。在用户与接口的交互中,当交互完成,view 就会自动更新,随即新值与 model 交互以确保一切都是同步的。底层的逻辑在 model 中执行完成后,DOM 也会随即更新。 -### 2\. Backbone.js +#### 2\. Backbone.js 复杂 web 应用并不适用于所有场景。一些较简单的 web 应用框架例如 [Backbone.js][2] 就非常适合学习 web app 开发。Backbone.js 是一个简单的框架,可以快速方便地构建简单的 web 应用。和 Angular.js 一样,Backbone.js 也支持 MVC 。Backbone.js 还有一些其它关键特性如路由,RESTful API 支持,适当的状态管理等等。你甚至还可以用 Backbone.js 来构建单页应用。 当前的稳定版本是 1.3.3,可以在 [GitHub][22] 中找到。 -### 3\. D3.js +#### 3\. D3.js -[D3.js][3] 是一个优秀的 JavaScript 库,它允许开发者创建具有数据处理功能的富 web 页面。D3.js 使用 SVG, HTML 和 CSS 来实现这一切功能。使用 D3.js ,你可以更轻松地将数据绑定到 DOM 及启用数据驱动事件。使用 D3.js ,你还可以创建高质量的数据驱动的 web 页面来提供一个更易于理解的视觉效果来呈现数据。查看示例 : [LCF 符号哈密顿图][23] ,由 D3.js 强力驱动。 +[D3.js][3] 是一个优秀的 JavaScript 库,它允许开发者创建具有数据处理功能的富 web 页面。D3.js 使用 SVG、HTML 和 CSS 来实现这一切功能。使用 D3.js ,你可以更轻松地将数据绑定到 DOM 及启用数据驱动事件。使用 D3.js ,你还可以创建高质量的数据驱动的 web 页面来提供一个更易于理解的视觉效果来呈现数据。查看示例 : [LCF 符号哈密顿图][23] ,由 D3.js 强力驱动。 -### 4\. React.js +#### 4\. React.js -[React.js][4] 是一个使用起来很有趣的 JavaScript 框架。和其它的 JavaScript 框架不同,React.js 志在构建一个高可扩展的前端用户界面。React.js 出现于 2013 年,它采用了 BSD 开源协议。它以其能够开发复杂且漂亮的用户界面所带来的优势而迅速发展壮大。 +[React.js][4] 是一个使用起来很有趣的 JavaScript 框架。和其它的 JavaScript 框架不同,React.js 志在构建一个高可扩展的前端用户界面。React.js 出现于 2013 年,它采用了 BSD 开源协议。它因其能够开发复杂且漂亮的用户界面所带来的优势而迅速发展壮大。 -React.js 背后的核心思想是虚拟 DOM 。虚拟 DOM 在客户端和服务端之间扮演着一个中间人的角色并带来了显著的性能提升。虚拟 DOM 的改变和 server DOM 一样,只需要更新所需的元素,相对于传统的 UI 渲染来说极大提升了渲染速度。 +React.js 背后的核心思想是虚拟 DOM 。虚拟 DOM 在客户端和服务端之间扮演着一个中间人的角色并带来了显著的性能提升。虚拟 DOM 的改变和服务器端 DOM 一样,只需要更新所需的元素,相对于传统的 UI 渲染来说极大提升了渲染速度。 你还可以使用 Recat 来实现 meterial 风格的设计,使你能够开发具有无与伦比的性能的 web 应用。 -### 5\. jQuery +#### 5\. jQuery -[jQuery][5] 是一个非常流行的 JavaScript 库,它拥有众多特性例如事件处理,动画等。当你在做一个 web 项目的时候,你不会想要把时间浪费在为一些简单的功能写代码上。jQuery 为减少你的工作量提供了一些易于使用的 API 。这些 API 在所有的常见的浏览器中都能够使用。使用 jQuery, 你可以无缝地控制 DOM 以及 Ajax 这样在近几年来拥有高需求的作业。使用 jQuery, 开发者不必担心一些低级的交互,同时可以使他们的 web 应用的开发更加容易与迅速。 +[jQuery][5] 是一个非常流行的 JavaScript 库,它拥有众多特性例如事件处理、动画等。当你在做一个 web 项目的时候,你不会想要把时间浪费在为一些简单的功能写代码上。jQuery 为减少你的工作量提供了一些易于使用的 API 。这些 API 在所有的常见的浏览器中都能够使用。使用 jQuery, 你可以无缝地控制 DOM 以及 Ajax 这样在近几年来拥有大量需求的任务。使用 jQuery,开发者不必担心一些低级的交互,同时可以使他们的 web 应用的开发更加容易与迅速。 -jQuery 同时便于分离 HTML 和 JavaScript 代码,使开发者能够编写简洁同时跨浏览器兼容的代码。并且使用 jQuery 创建的 web 应用在将来也易于改善和扩展。 +jQuery 同时便于分离 HTML 和 JavaScript 代码,使开发者能够编写简洁而跨浏览器兼容的代码。并且使用 jQuery 创建的 web 应用在将来也易于改善和扩展。 -### 6\. Ember.js +#### 6\. Ember.js -[Ember.js][6] 是一个 Angular.js 和 React.js 的功能的混合体。当你在浏览社区的时候你能明显地感受到 Ember.js 的热门程度。Ember.js 的新特性也不断地在添加。它在数据同步方面与 Angular.js 很像。 双向的数据交换可以确保应用的快速性和可扩展性。同时,它还能够帮助开发者创建一些前端元素。 +[Ember.js][6] 是一个 Angular.js 和 React.js 的功能混合体。当你在浏览社区的时候你能明显地感受到 Ember.js 的热门程度。Ember.js 的新特性也不断地在添加。它在数据同步方面与 Angular.js 很像。 双向的数据交换可以确保应用的快速性和可扩展性。同时,它还能够帮助开发者创建一些前端元素。 -和 React.js 的相似之处在于,Ember.js 提供了同样的服务端虚拟 DOM 以确保高性能和高可扩展。同时, Ember.js 提倡简化代码,提供了丰富的 API。Ember.js 还有非常优秀的社区。 +和 React.js 的相似之处在于,Ember.js 提供了同样的服务器端虚拟 DOM 以确保高性能和高可扩展。同时, Ember.js 提倡简化代码,提供了丰富的 API。Ember.js 还有非常优秀的社区。 -### 7\. Polymer.js +#### 7\. Polymer.js -如果你曾想过创建你自己的 HTML5 元素,那么你可以使用[Polymer.js][7] 来做这些事。 Polymer 主要集中于通过给 web 开发者提供创建自己的标签的功能来提供扩展功能。例如,你可以创建一个和 HTML5 中的 \