ping 时记录时间戳

参考 stackoverflow这篇问答:How do I timestamp every ping result?

ping www.google.fr | while read pong; do echo "$(date): $pong"; done

将输出如下内容:

Wed Jun 26 13:09:23 CEST 2013: PING www.google.fr (173.194.40.56) 56(84) bytes of data.
Wed Jun 26 13:09:23 CEST 2013: 64 bytes from zrh04s05-in-f24.1e100.net (173.194.40.56): icmp_req=1 ttl=57 time=7.26 ms
Wed Jun 26 13:09:24 CEST 2013: 64 bytes from zrh04s05-in-f24.1e100.net (173.194.40.56): icmp_req=2 ttl=57 time=8.14 ms

搭建精简的git服务器,创建属于自己的私人仓库

背景

以前有装过 gitlab,本来也打算用 gitlab 来搭建自己的 git 服务,奈何gitlab 吃内存是众所周知的。

而我实际上也并不需要那么多的功能,个人使用,只要有简单的命令行界面即可。遂而使用了原始的 git server。当然对我来说也是容器化过后的,于是这一篇就是记录如何使用容器化的git-server。

当然系统占用也特别小,目前一个项目,只占用了6M内存,实在是非常精炼。

#使用

编辑 vi docker-compose.yml 文件

version: '3.2'
services:
  app:
    image: kelvinblood/git-server
    volumes:
      - /root/.ssh:/git-server/keys
      - ./:/repos
    ports:
      - '22:22'
    restart: always

假设 ssh 的密钥在文件夹内 /root/.ssh

运行 docker-compose up -d 运行即可。

初始化仓库

假设当前所在的文件夹为git,运行如下命令初始化仓库:

docker exec git_app_1 git init --bare test.git

此时在当前文件夹下多出了 test.git 这个初始化仓库。

拉取仓库

按照常用方式使用git,例如:

cd /tmp
git clone git@xx.xx.xx.xx:/repos/test.git
cd test
touch readme.md
git add .
git commit -m "[init]"
git push

如果你使用的不是22端口,假设是2222端口,则clone的命令要稍作改变:

git clone ssh://git@xx.xx.xx.xx:2222/repos/test.git

完成。

更多

本项目已共享至github:kelvinblood/git-server,以下是 dockerfile

FROM alpine:3.4

# "--no-cache" is new in Alpine 3.3 and it avoid using
# "--update + rm -rf /var/cache/apk/*" (to remove cache)
RUN apk add --no-cache \
# openssh=7.2_p2-r1 \
  openssh \
# git=2.8.3-r0
  git

# Key generation on the server
RUN ssh-keygen -A

# SSH autorun
# RUN rc-update add sshd

# -D flag avoids password generation
# -s flag changes user's shell
RUN mkdir -p /git-server/keys \
  && adduser -D -s /usr/bin/git-shell git \
  && echo git:12345 | chpasswd \
  && mkdir /home/git/.ssh

# This is a login shell for SSH accounts to provide restricted Git access.
# It permits execution only of server-side Git commands implementing the
# pull/push functionality, plus custom commands present in a subdirectory
# named git-shell-commands in the user鈥檚 home directory.
# More info: https://git-scm.com/docs/git-shell
COPY src/git-shell-commands /home/git/git-shell-commands

# sshd_config file is edited for enable access key and disable access password
COPY src/sshd_config /etc/ssh/sshd_config
COPY src/start.sh /git-server/start.sh

EXPOSE 22

WORKDIR /repos

CMD ["sh", "/git-server/start.sh"]

dockerfile参考了 jkarlosb/git-server-docker,做了极小的改动.


深度学习新星:GAN的基本原理、应用和走向 - 硬创公开课

转自https://www.leiphone.com/news/201701/Kq6FvnjgbKK8Lh8N.html,仅做收集用。文章是2017年的,看的时候注意时效性。

近年来,基于数据而习得“特征”的深度学习技术受到狂热追捧,而其中GAN模型训练方法更加具有激进意味:它生成数据本身。

GAN是“生成对抗网络”(Generative Adversarial Networks)的简称,由2014年还在蒙特利尔读博士的Ian Goodfellow引入深度学习领域。2016年,GAN热潮席卷AI领域顶级会议,从ICLR到NIPS,大量高质量论文被发表和探讨。Yann LeCun曾评价GAN是“20年来机器学习领域最酷的想法”。

在GAN这片新兴沃土,除了Ian Goodfellow所在的OpenAI在火力全开,Facebook的人工智能实验室也在这一领域马不停蹄深耕,而苹果近日曝出的首篇AI论文,就是基于GANs的变种“SimGAN”。从学术界到工业界,GANs席卷而来。

经360首席科学家、人工智能研究院院长颜水成强力推荐,【硬创公开课】特邀冯佳时博士,在1月5日为大家带来了一期以《深度学习新星:GANs的诞生与走向》为主题的演讲,拨开围绕GANs的迷雾。

嘉宾介绍

冯佳时,现任新加坡国立大学电子与计算机工程系助理教授,机器学习与视觉实验室负责人。

中国科学技术大学自动化系学士,新加坡国立大学电子与计算机工程系博士。2014-2015年在加州大学伯克利分校人工智能实验室从事博士后研究。现研究方向为图像识别、深度学习及面向大数据的鲁棒机器学习。

冯佳时博士曾获ICCV’2015 TASK-CV最佳论文奖,2012年ACM多媒体会议最佳技术演示奖。担任ICMR 2017技术委员会主席,JMLR, IEEE TPAMI, TIP, TMM, TCSVT, TNNLS及 CVPR, ICCV, ECCV, ICML, NIPS, AAAI, IJCAI等期刊、会议审稿人。冯佳时博士已在计算机视觉、机器学习领域发表论文60余篇。

以下内容整理自公开课分享。

GANs是深度学习领域比较重要的一个模型,也是人工智能研究的一个重要工具。

我们现在所追求的人工智能,一个很重要的特性就是能够像我们人类一样,理解周围复杂的世界。包括识别和理解现实中的三维世界,人类、动物和各种工具。这样才能在对现实世界理解的基础上,进行推理和创造。

而正像著名物理学家,理查德•费曼说的一样,如果要真正理解一个东西,我们必须要能够把它创造出来。

正是基于这样的想法,机器学习以及人工智能的研究者们提出了概率生成模型,致力于用概率和统计的语言,描述周围的世界。


开始维护自己的dns解析服务

背景

最近在做cdn相关的东西,随手开了一个 dns 服务 —— 47.96.79.77,今后会一直维护。

这个dns服务主要是做去广告的功能(相关资源都来自网络),今后还会做一些加速功能,有需要的朋友可以试用下,如果遇到广告的可以私信我。

下面解释下如何使用。

  1. 右键点击任务栏的网络设置。

    54615625944

  2. 选择更改适配器选项

    54615631410

    也有可能看到这个界面:

    54615679916

  3. 选择现在正在连接的网络,设置属性。


docker 查看最近日志

背景

使用容器时常常需要看日志,但是有些日志刷了很多,这时候单纯用 docker logs -f会刷很多日志,而没办法停止。解决的问题其实使用 tail 标志就可以了:

docker logs -f --tail 20 <container-id>