Jun 3

vscode 的 tab 不指定

felix021 @ 2019-6-3 11:38 [IT » 软件] 评论(3) , 引用(0) , 阅读(476) | Via 本站原创
1. vscode 有一个特性, workbench.editor.enablePreview

当一个文件被(单击)打开、且没有被修改的情况下, tab上的 filename 是斜体, 意味着这是一个临时tab, 会被下一个打开的文件覆盖.

在打开前双击文件, 或者打开后双击 tab 上的文件名, 可以把这个 tab 固定住.

另外就是修改 workbench.editor.enablePreview 这个属性, 关闭掉.

2. vscode 还有另一个特性, workbench.editor.showTabs

当这个选项为 false 的时候, 永远只有一个 tab

这个情况我遇到过两次, 上一次倒腾了半天, 直接reset vscode了

这次又遇到, 搜 "vscode only showing one tab" 找到这个 issue

https://github.com/Microsoft/vscode/issues/51649

这才知道了解决方案

但我不知道是怎么触发的, 我并没有刻意去设置, 初步怀疑是有一个很奇怪的快捷键, 不小心打开了吧

不能理解这个选项存在的意义, 会有人需要吗?
Mar 20

GVim 在查看模式关闭输入法 不指定

felix021 @ 2019-3-20 16:49 [IT » 软件] 评论(0) , 引用(0) , 阅读(379) | Via 本站原创
困扰了很久的问题,搜了一下才发现解决起来很简单:

将 ESC 映射为 “ESC 并且设置关闭 IM ”

引用
inoremap <ESC> <ESC>:set iminsert=0<CR>


感谢:Tony's blog
Jan 7

Excel单元格高度调整+10 不指定

felix021 @ 2019-1-7 00:22 [IT » 软件] 评论(0) , 引用(0) , 阅读(560) | Via 本站原创
使用Excel的过程中经常需要调整行的高度,由于各行的高度不同,统一设定高度往往不适用,而手动逐行调整比较麻烦。有一个常见的小技巧是先按Ctrl+A全选,然后再双击左侧数字标题栏的任意分割线,Excel会自动调整行高。

但是对于精神处女座的我来说,行与行之间没有间隔,所有字密密麻麻挤在一起有点受不了;但是excel又不像css里面可以一句话统一给单元格设置padding或margin(就没有这个属性)。

所幸还有很多其他精神处女座的同学,他们给出的方案 是用宏:

Sub AutoFitPlus()
  Dim rng As Range
  rowCount = 0
  Selection.EntireRow.AutoFit
  For Each rng In Selection.Rows
    rng.RowHeight = rng.RowHeight + 10
    rowCount = rowCount + 1
    If rowCount > 100 Then Break
  Next rng
End Sub


将这段代码保存为一个宏(可以设置一个快捷键,例如 Ctrl + Shift + L),选中某些行,再执行这个宏,就解决问题了。

Sep 6
excel很强大,但也有非常蠢的地方:比如今天遇到的,导出文档的日期列是“文本”格式,这时候用数据透视表,excel不能识别这是日期,于是无法根据月或者年对数据进行聚合。

即使选中整列,然后将格式全都修改为日期也不行。

即使再弄一列格式为日期的,然后用黏贴数值也不行。

按照过去的经验,只有逐个格子双击,然后回车,才能把格式应用到数据上,真是蠢到爆炸。

今天觉得实在不能忍了,放狗搜了下“excel apply format instead of double click on each column”,总算找到一个解决方案:

1. 选中该列

2. 在“数据”Tab里点击“分列”(按格式将单列文本拆分成多列,英文版是 Text To Columns)

3. 点击完成

搞定
May 25
$ vi /config/environments/production.rb

注释掉 “config.action_mailer.delivery_method = :sendmail”,

并在下面添加
引用

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true

  config.action_mailer.smtp_settings = {
      :address              => "smtp.exmail.qq.com",
      :port                => 465,
      :domain              => 'yourdomain.com',
      :user_name            => '发信帐号',
      :password            => '密码',
      :authentication      =>  'login',
      :enable_starttls_auto => true,
      :tls                  => true,
      :email_from          => '发信帐号'
  }
Apr 28
想要计算一个区域里对角线的和,但SUMIF里面的那个criteria实在太简陋了,只能用vba来实现,大概长这样:
引用
Function sum_diag(n As Integer, ParamArray args() As Variant) As Variant
    result = 0

    For i = LBound(args) To UBound(args)
        For Each elem In args(i)
            If elem.Row + elem.Column = n Then
                result = result + elem.Value
            End If
        Next elem
    Next i
    sum_diag = result
End Function


然后这么用:
引用
=sum_diag(ROW()+COLUMN(), $B$1:$D$3)


点击在新窗口中浏览此图片
Sep 21

Zabbix自定义通知 不指定

felix021 @ 2016-9-21 04:20 [IT » 软件] 评论(0) , 引用(0) , 阅读(3040) | Via 本站原创
  虽然我们使用的腾讯云自带了一份监控,但是实在太弱,不好用(上次因为crontab导致postfix的maildrop把inode用光,腾讯云没有任何报警信息),所以我们额外搭建了一套Zabbix用于线上服务的监控,用来发现更细粒度的系统问题,例如io过载、cpu过载、内存不足、磁盘空间不足、服务down了之类的事件。

  发现了事件需要及时报警,但是zabbix自带的那个邮件通知太弱(不支持需要用户名和密码的smtp服务器),所以需要自定义通知。zabbix文档在有对自定义通知的说明,但是太粗略了,折腾了好久终于搞明白,这里记录一下备查。

1. 编写通知发送脚本

参照Custom alertscripts,写一个脚本,接受三个命令行参数 "to subject body" (即收件人、标题、正文),把消息发送出去。例如我们的短信通知是这样的(注: message.test.com是我们内部的统一通知服务):

文件名: sms
引用
#!/usr/bin/python

import sys
import requests

to = sys.argv[1]
subject = sys.argv[2]
body = sys.argv[3]

message = '%s: %s' % (subject, body)

print requests.post('http://message.test.com/sms/send', {
    'request_source' : 'monitor',
    'mobile'        : to,
    'message'        : message
})


除此之外我们还配置了通过 email、sentry 报警的脚本。

2. 将通知脚本置于 zabbix_server.conf 配置的 AlertScriptsPath 目录下

注意:必须在这个目录下、zabbix进程有执行权限

3. 在zabbix控制台配置通知脚本

引用
Administration -> Media Types -> (右上角) Create Media Type

Name: sms
Type: Script
Script name: sms (这里写脚本的名字就行,不用全路径)
Enabled: 打勾

Save.


4. 配置用户支持的通知方法

引用
Administration -> Users -> 点击需要配置的用户(例如Admin) -> Media -> Add

Type: sms
Send to: 13800138000 (这就是脚本接受到第一个参数)
When Active: 1-7, 00:00-24:00 (7*24,运维的悲剧)
Use if severity: 根据情况勾选
Status: Enabled

Add.

Save. (别漏了点这里!)


4. 配置触发器

引用
Configuration -> Actions -> (右上角) create action

#Action
Name: send to sms

#Operations (以下是参考选择)
a) 点击New
b) 添加收件人:Send to Users 右边的 Add 选择 Admin
c) 选择通知方式:Send only to 选择 sms
d) 点击Add
e) 点击Save

Add和Save都得点,否则就又2了


5. 触发事件测试效果

根据情况启动若干个耗cpu的进程,例如:

$ cat /dev/urandom | md5sum
Oct 16

ssh clone session 不指定

felix021 @ 2015-10-16 11:48 [IT » 软件] 评论(2) , 引用(0) , 阅读(3525) | Via 本站原创
在Windows下用惯了Secure CRT的Clone Session功能,切换到mac下面,还真有点怀念。于是搜了一下,发现达到类似的效果倒是也不难。

1. mkdir ~/.ssh/cm_socket

2. 创建 ~/.ssh/config

  Host *
  ControlMaster auto
  ControlPath ~/.ssh/cm_socket/%r@%h:%p

3. 之后只要是相同的 user@host:port 都会共用一个tcp connection,不需要再输入密码了。

p.s. 补充说明一下,通常来说,能登录服务器也就意味着可以建立信任关系,那么clone session的意义就减少了很多,但是仍然有两个优势:

1. 类似B公司的relay机器,必须使用token认证才能登录的,信任关系不能满足需求(Google Authenticator这样的两步认证方案也类似)

2. 对于延迟比较高的机器,直接复用tcp connection,可以减少相当多的时间(tcp三次握手、ssh认证的各种交互等)。
分页: 1/12 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]