Giter VIP home page Giter VIP logo

linux-note's People

Watchers

James Cloos avatar

linux-note's Issues

vim 意外退出处理

E325: ATTENTION
Found a swap file by the name ".pike.sh.swp"

(1) Another program may be editing the same file. If this is the case,
be careful not to end up with two different instances of the same
file when making changes. Quit, or continue with caution.
(2) An edit session for this file crashed.
If this is the case, use ":recover" or "vim -r pike.sh"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file ".pike.sh.swp"
to avoid this message.
在 和文件同一级的目录
执行rm -rf . pike.sh.swp -----删除临时保存的文件
vim -r pike.sh ----恢复更改的内容

清除buff/cache

memory内存不够
image
执行echo 1 > /proc/sys/vm/drop_caches 清除buff/cache
删除之后
image

Linux 提高ssh连接速度

问题现象:

在远程到linux服务器进行管理时,我们经常会用ssh来连接。
有时候在ssh 用户名 主机IP 并输入相应密码后,很久才能连接上。

原因:
SSH服务默认配置了DNS反查。

解决方法:
需要修改以下配置文件 /etc/ssh/sshd_config


在/etc/ssh/sshd_config ,UseDNS 的状态为no;


配置好之后重启ssh服务即可生效

终端复用神器Tmux

安装

ubuntu 下: 
      sudo apt-get install -y tmux
centos 下:
     yum install -y tmux

使用
1)进入tmux面板后,一定要先按ctrl+b,然后松开,再按其他的组合键才生效。

2)常用到的几个组合键:

ctrl+b ?            显示快捷键帮助
ctrl+b 空格键       采用下一个内置布局,这个很有意思,在多屏时,用这个就会将多有屏幕竖着展示
ctrl+b !            把当前窗口变为新窗口
ctrl+b  "           模向分隔窗口
ctrl+b %            纵向分隔窗口
ctrl+b q            显示分隔窗口的编号
ctrl+b o            跳到下一个分隔窗口。多屏之间的切换
ctrl+b 上下键      上一个及下一个分隔窗口
ctrl+b C-方向键    调整分隔窗口大小
ctrl+b &           确认后退出当前tmux
ctrl+b [           复制模式,即将当前屏幕移到上一个的位置上,其他所有窗口都向前移动一个。
ctrl+b c           创建新窗口
ctrl+b n           选择下一个窗口
ctrl+b l           最后使用的窗口
ctrl+b p           选择前一个窗口
ctrl+b w           以菜单方式显示及选择窗口
ctrl+b s           以菜单方式显示和选择会话。这个常用到,可以选择进入哪个tmux
ctrl+b t           显示时钟。然后按enter键后就会恢复到shell终端状态
ctrl+b d           脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话

sed 命令

linux所有命令大全
sed命令

sed可依照script的指令,来处理、编辑文本文件。

sed 's/要被取代的字串/新的字串/g' filepath
sed -i s/要被取代的字串/新的字串/g' filepath
例如:
要把文件中所有的/bin 改为 /usr/local/bin
sed -i '/s/bin/usr\/local/\bin/g' path, '\'为转译字符
加 -i 会真正改变文件内容

sed -i '4astr' file
在第四行后插入新行,str

删除第二行
sed -i '2d' file
删除第二行之后的行
sed -i '2,$d' file

将 this is a test line 追加到 以test 开头的行后面:

sed '/^test/a\this is a test line' file
将 this is a test line 追加到 所有行后面:
sed '/a\this is a test line' file

centos 系统时间修改

#date 查看系统时间

2
#date -s 修改时间

看下面的例子#date -s 03/04/2013(将系统日期设定为2013年03月04日)

3
#date -s 110:38(将系统时间设定为上午 10:38)

4
修改完后执行:clock -w ,强制将时间写入COMS!

二 时区修改
先查看时区

date -R

CentOS 系统时间和时区查看以及修改的方法
修改时区:

(将Asia/shanghai-上海时区写入当前时区)#cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

提示是否覆盖,输入Y回车,

然后#date

查看时区和时间(CST,**时区)

CentOS 系统时间和时区查看以及修改的方法
END
注意事项
很多人修改之后都是,没有写入clock -w ,强制将时间写入COMS! 导致重启之后又还原了

ssh Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

edit in /etc/ssh/sshd_config
PasswordAuthentication yes
PermitRootLogin yes
service sshd restart


SSH 无法连接
Read from socket failed: Connection reset by peer
ssh root@hostA
查看hostA的/var/log/auth.log可以看到错误
could not load host key xxxxxx
执行

ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t dsa  -f /etc/ssh/ssh_host_dsa_key

解决问题
解决方法

make: *** No targets specified and no makefile found. Stop

在源码安装软件包编译的时候报错:
make: *** No targets specified and no makefile found. Stop

原因分析:
可能是因为系统缺少gcc 相关包,
解决方法:
安装gcc等依赖包
yum install gcc gcc-c++ autoconf automake
然后重新./configure 生成makefile
再 make
make install

linux 更改系统日志的时间格式

更改教程

为了使更改的内容生效,需要重启rsyslog服务
systemctl restart rsyslog
日志服务升级后,更改配置文件:
shell> vim /etc/rsyslog.conf

定义自己的本土化的时间格式

$template xsformat, “%$NOW% %TIMESTAMP:8:15% %syslogtag% %msg%\n”
将原有的注释掉

# Use default timestamp format
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

使用自定义的格式
$ActionFileDefaultTemplate xsformat

一些linux命令

1.关闭某服务进程
kill-9 ps -ef | grep 服务名 | tr -s ' ' | awk -F' ' '{print $2}'``

2.从某目录中筛选出包含某字段的行
egrep -R 'str' directory

3.top 命令
top 查看各进程所占资源
top -p pid 查看某个进程所占资源
4.netstat相关
netstat -a 查看所有连接
image

netstat -ntlp 查看所有服务及其端口
netstat -tcp 查看所有tcp连接
netstat -udp 查看所有UDP连接
netstat -s 输出每个协议的统计信息,包括接收/发送的包数量
image

netstat -I 显示网卡统计信息

image
netstat -anp | grep 3306 | wc -l 查看某端口连接数

  1. chmod
 r --4 w---2 x ---1
 chmod 数字 文件   ----设置目录权限
 chmod +操作 文件 --- 给文件加某操作权限
 chmod - 操作 文件 --去掉文件某操作权限

6
cat -n 文件名 ---显示某文件并加行号
7 echo
echo 'str' >> file 将str 添加到file 文件
echo 'str' > file 将文件内容替换为str

7.diff
diff file1 file2 比较两个文件的不同

8.less
类似与more 命令,不同点在于,
more 只能往下看,less 还能回头网上翻

linux 和windows之间互传文件

// 首先安装lrzsz

yum -y install lrzsz

// 上传文件,执行命令rz,会跳出文件选择窗口,选择好文件,点击确认即可。

rz

// 下载文件,执行命令sz

sz

redhat 换yum源

参考连接
1、删除redhat原有的yum源

rpm -aq | grep yum|xargs rpm -e --nodeps

2、下载新的yum安装包

我使用CentOS的yum源

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-iniparse-0.4-9.el7.noarch.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-3.4.3-118.el7.centos.noarch.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-24.el7.noarch.rpm
3、安装yum软件包

rpm -ivh python-iniparse-0.4-9.el7.noarch.rpm
rpm -ivh yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
rpm -ivh yum-3.4.3-118.el7.centos.noarch.rpm yum-plugin-fastestmirror-1.1.31-24.el7.noarch.rpm

最后两个包一起装,不然会报错,他们之间存在依赖关系.
4、更改yum源 #我们使用网易的CentOS镜像源

cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
vi CentOS6-Base-163.repo
把文件里面的$releasever全部替换为版本号,即6 最后保存
5、清理yum缓存

yum clean all

yum makecache #将服务器上的软件包信息缓存到本地,以提高搜索安装软件的速度 #
yum install vim* #测试域名是否可用

现在 : Redhat6可以使用CentOS的yum源在线安装软件了!

linux 单用户模式的使用

在某次修改linux系统配置的时候想增加系统打开文件句柄数不小心把 /etc/security/limit.conf里面、

  • soft nofile 65536
  • hard nofile 200000
    的数值改的太大,最初导致ssh连接无法登陆,最后直连服务器用root用户登陆时也无法登陆,报permission denied错误,系统无法登陆
    最后无奈之下进入单用户模式修改配置
    Centos 7进入单用户模式
    单用户模式可以用于在系统无法登陆时更改一些配置,例如root密码被改
    但是单用户模式下默认文件是只读的,所以要更改文件需要进行如下操作:

根分区重新mount为可读写状态
执行 命令:mount / -o rw,remount
然后即可修改文件

linux日志按时间截取

获取当前时间 date "+%Y-%m-%d %H:%M:%S"
获取上一分钟时间 date -d last-minute "+%Y-%m-%d %H:%M:%S"
打印某个时间段的日志 cat logs.log | sed -n '/11:00:00/,/14:18:12/ p'|more

linux 快速下载百度云文件

ubuntu 加速下载百度云文件
Firefox 插件地址 https://addons.mozilla.org/zh-CN/firefox/addon/baidu-pan-exporter/

    安装后重启Firefox,然后百度云下载界面就会多出一个选项:导出下载

需要下载aria2 : sudo apt-get install aria2

下载时,选中要下载的文件,导出下载-文本导出,复制生成的内容,然后在终端输入,回车就开始下载了

这个链接也可以复制给迅雷下载 ,选择导出下载里面的文本导出,选择复制链接,然后粘贴到迅雷

linux 中zip和unzip命令

Linux中zip压缩和unzip解压缩命令详解

1、把/home目录下面的mydata目录压缩为mydata.zip
zip -r mydata.zip mydata #压缩mydata目录
zip -r 压缩包名 目录名
2、把/home目录下面的mydata.zip解压到mydatabak目录里面
unzip mydata.zip -d mydatabak
unzip 压缩包名 -d 解压目录

防止ssh 爆破

防爆破脚本:

    # cat /root/ssh_failed.sh  //内容如下  
    #!/bin/sh  
    SCANIP=`grep "Failed" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | awk '{print $1"="$2;}'`  
    for i in $SCANIP  
    do  
        NUMBER=`echo $i | awk -F= '{print $1}'`  
        SCANIP=`echo $i | awk -F= '{print $2}'`  
        echo "$NUMBER($SCANIP)"  
        if [ $NUMBER -gt 10 ] && [ -z "`/sbin/iptables -vnL INPUT | grep $SCANIP`" ]  
        then  
            /sbin/iptables -I INPUT -s $SCANIP -m state --state NEW,RELATED,ESTABLISHED -j DROP  
            echo "`date` $SCANIP($NUMBER)" >> /var/log/scanip.log  
        fi  
    done  

封禁一个ip的访问

iptables -I INPUT -s 211.1.0.0 -j DROP

http----->https 在已经安装的nginx上,增加ssl模块

http和https区别:

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。
这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

https协议需要到ca申请证书,一般免费证书很少,需要交费。http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443


教程链接

Nginx

  • 下载nginx源码

    wget http://nginx.org/download/nginx-1.10.3.tar.gz

  • 编译nginx支持tcp、https

    上传nginx-1.10.3.tar.gz至/tmp目录

    yum -y install gcc make pcre pcre-devel zlib-devel libjpeg-turbo-devel zziplib-devel openssl openssl-devel openssl-libs 
    tar zxvf nginx-1.10.3.tar.gz
    cd nginx-1.10.3
    ./configure --prefix=/usr/local/nginx --with-stream --with-http_ssl_module
    make (不要make install)
    将nginx-1.10.3/objs/目录下生成的nginx二进制文件拷贝替换/usr/local/nginx/sbin/nginx文件
    
  • 生成https证书

    • step1 生成一个RSA密钥

      openssl genrsa -des3 -out server.key 1024

    • step2 拷贝一个不需要输入密码的密钥文件

      openssl rsa -in server.key -out server_nopass.key

    • step3 生成一个证书请求

      openssl req -new -key server.key -out server.csr

    • step4 签发证书

      openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

    其中:

    第一步需要输入8位以上的密码

    第二步执行时需输入第一步设定的密码

    第三步是生成证书请求,会提示输入省份、城市、域名信息等,重要的是,email一定要是你的域名后缀的。这样就有一个 csr 文件了,提交给 ssl 提供商的时候就是这个 csr 文件。

    生成的server.crt、server.key、server.csr放入/usr/local/nginx/sslkey目录下

  • 配置支持tcp转发

nginx.conf增加stream项

    stream {
    include tcp.d/*.conf;
    }
  • 配置支持https

#配置http访问自动跳转https
server {
	listen 80;
	return 301 https://$host$request_uri;
	}

server {
	listen 	     443;将原来的listen 80注释掉,加上下面这段内容
        listen 	443;
        ssl on;
        ssl_certificate /usr/local/nginx/sslkey/server.crt;
        ssl_certificate_key /usr/local/nginx/sslkey/server.key;
        ssl_password_file /usr/local/nginx/sslkey/pw;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
        ssl_prefer_server_ciphers on;

	


                location / {

                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_set_header Host $http_host;
                        proxy_redirect off;
                        proxy_pass http://127.0.0.1:3000; 注意这个端口要和wen服务端口一致
			proxy_set_header X-Forwarded-Proto https; 
               }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }


注: 如果要在1.11.3版本的nginx上编译不通过,可以先下个1.10.3的,将编译生成的nginx二进制文件拷贝替换就行

linux deepofix 防火墙

deepofix 系统防火墙名称叫deepofix-firewall
停止防火墙
/etc/init.d/deepofix-firewall stop
禁止开机自启动

更改/etc/default目录下的deepofix-firewall  文件内容
将true改为False

vim相关命令

插入命令

i 在当前位置生前插入

I 在当前行首插入

a 在当前位置后插入

A 在当前行尾插入

o 在当前行之后插入一行

O 在当前行之前插入一行

移动命令

h 左移一个字符
l 右移一个字符,这个命令很少用,一般用w代替。
k 上移一个字符
j 下移一个字符
以上四个命令可以配合数字使用,比如20j就是向下移动20行,5h就是向左移动5个字符,在Vim中,很多命令都可以配合数字使用,比如删除10个字符10x,在当前位置后插入3个!,3a!<Esc>,这里的Esc是必须的,否则命令不生效。

w 向前移动一个单词(光标停在单词首部),如果已到行尾,则转至下一行行首。此命令快,可以代替l命令。

b 向后移动一个单词 2b 向后移动2个单词

e,同w,只不过是光标停在单词尾部

ge,同b,光标停在单词尾部。

删除命令

x 删除当前字符

3x 删除当前光标开始向后三个字符

X 删除当前字符的前一个字符。X=dh

dl 删除当前字符, dl=x

dh 删除前一个字符

dd 删除当前行

dj 删除上一行

dk 删除下一行

10d 删除当前行开始的10行。

拷贝和粘贴

yy 拷贝当前行

nyy 拷贝当前后开始的n行,比如2yy拷贝当前行及其下一行。

p  在当前光标后粘贴,如果之前使用了yy命令来复制一行,那么就在当前行的下一行粘贴。

shift+p 在当前行前粘贴

:1,10 co 20 将1-10行插入到第20行之后。

:1,$ co $ 将整个文件复制一份并添加到文件尾部。

正常模式下按v(逐字)或V(逐行)进入可视模式,然后用jklh命令移动即可选择某些行或字符,再按y即可复制

ddp交换当前行和其下一行

xp交换当前字符和其后一个字符
u 撤销上一步操作

systemd 管理服务状态流程的分析

systemd的说明
systemd管理各服务的配置目录在/etc/systemd/system/xxx.service
各服务的启动脚本路径为:/usr/bin/xxx


[root@controller system]# cat zun-compute.service

[Unit]
Description = OpenStack Container Service Compute Agent

[Service]
ExecStart = /usr/bin/zun-compute
User = zun

[Install]
WantedBy = multi-user.target

[root@controller bin]# cat zun-compute

#!/usr/bin/python
# PBR Generated from u'console_scripts'

import sys

from zun.cmd.compute import main


if __name__ == "__main__":
    sys.exit(main())

[root@controller bin]# egrep -rn 'zun.cmd.compute' /usr

/usr/lib/python2.7/site-packages/zun-1.0.1.dev7-py2.7.egg-info/entry_points.txt:3:zun-compute = zun.cmd.compute:main
/usr/lib/python2.7/site-packages/zun-1.0.1.dev7-py2.7.egg-info/SOURCES.txt:201:zun/cmd/compute.py
/usr/lib/python2.7/site-packages/zun-1.0.1.dev34-py2.7.egg-info/entry_points.txt:3:zun-compute = zun.cmd.compute:main
/usr/lib/python2.7/site-packages/zun-1.0.1.dev34-py2.7.egg-info/SOURCES.txt:202:zun/cmd/compute.py


最终服务启动执行的文件路径为/usr/lib/python2.7/site-packages/xxx/cmd/xxx.py的main函数
[root@controller system]# cat /usr/lib/python2.7/site-packages/zun/cmd/compute.py

import os
import shlex
import sys

from oslo_log import log as logging
from oslo_privsep import priv_context
from oslo_service import service

from zun.common import rpc_service
from zun.common import service as zun_service
from zun.common import utils
from zun.compute import manager as compute_manager
import zun.conf

CONF = zun.conf.CONF
LOG = logging.getLogger(__name__)

def main():
    priv_context.init(root_helper=shlex.split(utils.get_root_helper()))
    zun_service.prepare_service(sys.argv)

    LOG.info('Starting server in PID %s', os.getpid())
    CONF.log_opt_values(LOG, logging.DEBUG)

    CONF.import_opt('topic', 'zun.conf.compute', group='compute')

    endpoints = [
        compute_manager.Manager(),
    ]

    server = rpc_service.Service.create(CONF.compute.topic, CONF.host,
                                        endpoints, binary='zun-compute')
    launcher = service.launch(CONF, server)
    launcher.wait()

linux 终端相关及静态IP

Linux常见命令操作
1.查看登录日志 last
[root@controller ]# last
root pts/1 10.101.50.20 Sun Feb 11 13:42 still logged in
root pts/0 10.101.50.20 Sun Feb 11 13:40 still logged in
root pts/0 10.101.50.20 Sun Feb 11 10:21 - 12:35 (02:14)
root pts/9 10.101.50.20 Sun Feb 11 09:49 - 11:03 (01:13)
root pts/8 10.101.50.20 Sun Feb 11 09:41 - 11:55 (02:14)
root pts/5 10.101.50.20 Sun Feb 11 09:30 - 11:43 (02:13)
root pts/2 10.101.50.20 Sun Feb 11 08:58 - 11:14 (02:15)
root pts/1 10.101.50.20 Sun Feb 11 08:56 - 11:07 (02:11)
root pts/10 10.101.50.20 Fri Feb 9 20:56 - 23:11 (02:15)
root pts/5 10.101.50.20 Fri Feb 9 20:10 - 22:51 (02:40)
root pts/9 10.101.50.20 Fri Feb 9 19:41 - 21:53 (02:12)
root pts/2 10.101.50.20 Fri Feb 9 19:32 - 21:44 (02:11)
root pts/8 10.101.50.20 Fri Feb 9 18:47 - 21:01 (02:14)
2.查看端口被哪个进程占用
lsof -i :22
sshd 1576 root 4u IPv6 1412916 0t0 TCP *:ssh (LISTEN)
sshd 14119 root 3u IPv4 1969123 0t0 TCP controller:ssh->10.101.50.20:21825
(ESTABLISHED)
3.查看外面的流量出口
sf@sf-desktop:
$ sudo iftop -np
interface: eno1
IP address is: 192.168.100.31
MAC address is: f4:4d:30:6f:9c:3a
4.查看当前在线终端
[root@controller ~]# w
13:52:08 up 3 days, 16:43, 2 users, load average: 0.02, 0.06, 0.06
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.101.50.20 13:40 11:28 0.00s 0.00s -bash
root pts/1 10.101.50.20 13:42 0.00s 0.01s 0.00s w
5.关闭其他在线终端
pkill -kill -t pts/2
6.Linux设置静态IP
点击右上角的箭头

选择有线连接,点击编辑,点击IPV4,将DHCP改为Manual(手动)

Linux 终端快捷键

Shift+Ctrl+N:新建窗口

Shift+Ctrl+Q:关闭终端(ctrl +d)

终端中的复制/粘贴:

Shift+Ctrl+C:复制

Shift+Ctrl+V:粘贴

终端改变大小:

F11:全屏
Ctrl+l:相当于clear ,清屏

htop 比top更好的进程查看工具

centos上的安装
可以通过 yum install htop 来安装它,但前提是要添加epel 的yum源,具体请参考 CentOS yum 源的配置与使用。

# rpm -ivh http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL        //导入key
# yum install htop

ubuntu 上的安装
apt-get install htop

用法

F1 或者h    查看帮助文档。

F2 或者S     设置htop

/ 或者F3      搜索进程。

\ 或者F4      增量进程过滤器。

t 或者F5      显示树形结构。

F6 +,-         按照某个指标进行排序。

] 或者F7      可提高nice值可以提高对应进程的优先级

[ 或者F8       可减少nice值可以提高对应进程的优先级

k 或者 F9      杀掉进程。

q 或者F10     结束htop。

u                  只显示一个给定的用户的进程。

H                  显示或隐藏用户线程。

K                  显示或隐藏内核线程。

F                   跟踪进程。

P                   按CPU 使用排序。

M                  按内存使用排序。

T                   按Time+ 使用排序。。。。。

image

tar 命令使用

参考连接
1.将tar包解压至指定位置
tar -zxvf xxx.tar.gz -C /path

2.将文件夹打包
tar -cvf xxx.tar.gz /path

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.