Mac 更改默认的截图文件格式 - 少数派

我属于对截图格式不敏感的那部分人。然而 png 格式对于我这种写 blog 的人来说,还是太大了,所以转载了这篇做个备忘。原文地址为:https://sspai.com/post/26321,以下是原文:

我在 之前一篇文章 详细地讲解了如何在 OS X 上玩转截图,尤其是使用快捷键组合,方便至极。要知道,Mac OS X 默认的截图文件格式为「.png」。这一格式非常棒,图片质量非常高,还可以包含透明背景,但是往往这一格式的图片文件相对于其他常见的图片文件格式来说,体积有点大。

虽然你可以利用 Mac 自带的「预览」应用程序或第三方的图像编辑应用程序将「.png」格式图片转换为「.jpg」等格式图片,但是我觉得还是繁琐了点,能不能直接改变截图生成的图片文件格式呢?

注: OS X 默认识别以下图片格式:「.jpg」「.gif」「.pdf」「.png」和「.tiff」,所以你可以设置截图文件格式为上述 5 种。

想要改变 Mac OS X 默认的截图文件格式,我们需要使用到「终端」应用程序。 步骤非常简单,只需要打开「终端」,然后在窗口中输入相关命令,按下「回车」键即可。

1. 设置截图文件的格式为「.jpg」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type jpg;killall SystemUIServer

2. 设置截图文件的格式为「.gif」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type gif;killall SystemUIServer

3. 设置截图文件的格式为「.pdf」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type PDF;killall SystemUIServer

4. 设置截图文件的格式为「.png」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type png;killall SystemUIServer

5. 设置截图文件的格式为「.tiff」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type tiff;killall SystemUIServer

记一次黑客攻防 - xidui

偶然发现这篇黑客攻防的文章,写的详细很有学习价值。作者是 leetcode 的员工,目前就职谷歌。原文:https://xidui.github.io/2017/03/29/一个藏匿在黑客迷雾下的bug/

前言

细细回想这几周经历的问题以及过程,还是真是挺有趣的,迫不及待地希望整理一下总结给各位看官。 关于文章的标题,如何既能吸引读者,又能避免标题党的嫌疑,着实让我斟酌了一番,后来就定了在坐看到的这个版本,个人觉得没毛病~

让我们进入正题

阶段一

3月10日

leetcode完成主数据库迁移,一步步往分布式架构扩展

3月15日

收到了一封黑客的邮件,说发现了系统漏洞,并勒索 img

3月17日中午

发现user ranking功能失效 经检查,是因为我们迁移了主数据库的原因。老数据库所在的机器有一个daily job每天自动更新用户排名。由于新数据库机器的ip不一样,导致脚本过去7天都没有正常工作。于是修改了配置,继续投入使用。

3月17日下午5点

不少用户在twitter抱怨无法登陆,我自己也试了一下,确实无法登陆。但是除了登录api,其它所有的api都没有问题,已经登陆的用户也都能正常做题。 img img img 这不禁让我们想到了2天前收到的黑客邮件,怀疑黑客正在攻击。于是开始检查各种系统参数和日志。检查到旧的数据库所在机器,有一个很奇怪的参数,发现mysqld进程的cpu占用率将近100%,明明这个旧的mysql已经弃用了,到底是谁在里面呢?登录mysql去一探究竟:


在 Docker 中运行 rsync 服务端和客户端

背景

最近给服务器组件全部用上了容器化,为了统一管理,也使用了 rsync 的容器化版本。我在早前的文章里——《搭建 rsync 服务器》也有介绍过 rsync,只不过我是用的是常用的二进制安装的版本。

什么是 rsync

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

方案

rsync包括两个部分:服务端和客户端。下面我分别介绍两者的容器化方案,均为网上开源的项目,我仅在使用的时候做了少量修改。

服务端

axiom/rsync-server

自定义很强的服务端,从官方的readme中也体现出来了。根据我的需要,我做了一个简单的调整,在需要同步的文件夹下运行如下 docker run 命令,便运行一个 rsync 服务端。需要注意的是将防火墙上相应的端口打开。

!/bin/bash

docker run -d --name=rsync-server-$(basename $(pwd)) \
    -v $(pwd):/backup \
    -e VOLUME=/backup \
    -v /root/.ssh/authorized_keys:/root/.ssh/authorized_keys \
    -p 10022:22 \
    axiom/rsync-server

在上面的命令中,我启动了一个主机端口映射为10022的rsync-server的容器。

客户端

参考了掘金的这篇文章《通过Docker中运行rsync备份服务器》,将相关参数写到了docker-compose文件里,事先定义好ssh登陆密钥和config文件,在同级目录下运行 docker-compose up -d即可。

ssh配置:

Host    cdn
  HostName        backup1.kelu.org
  Port            10022
  User            root
  IdentityFile    ~/.ssh/db
Host    db
  HostName        backup1.kelu.org
  Port            10023
  User            root
  IdentityFile    ~/.ssh/db

在ssh的配置中,我定义了一个db和一个cdn的连接,并指定端口和登陆密钥。端口为上文中定义好的10022端口和10023端口。

docker-compose.yml:

version:  '3.2'
services:
  rsync:
    image: instrumentisto/rsync-ssh
    restart: always
    volumes:
      - ${HOME}/.ssh:/root/.ssh
      - /backup:/backup
    entrypoint:
      - /bin/sh
      - -c
      - |
        function log() {
          echo -e "`date -d @$$((\`date +%s\`+3600*8)) '+%Y-%m-%d %H:%M:%S'` $$@"
        }

        # backup <备份名> <服务器地址>
        function backup() {
          log "============================"
          log "begin: $$1"
          rsync -az --timeout=3600 -P --partial --delete -e ssh $$2:/backup /backup/$$2
          log "end: $$1"
        }

        while true
        do
          backup "cdn" cdn
          backup "db" db
          sleep 3000
        done

使用以下命令运行客户端:

docker-compose up -d

可以使用 docker logs -f xxx 命令来查看同步日志。

整个过程还是非常顺利的,没有遇到特别的问题。

参考资料