拾言堂

朝花不待夕拾


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

两只小猪

发表于 2018-08-06 | 阅读次数:

在一个猪场里,两只小猪诞生了。

猪大从小就知道自己要做一只土猪,可以在更好的环境中生活,每天吃蔬菜水果。于是,他每天控制食量,坚持锻炼。终于在选拔的时候,成功地被选为土猪,进去土猪基地生活。而猪二却相反,他觉得猪就应该每天吃吃睡睡喝喝,有空的时候看看隔壁的小花猪猪,每天活得那么累,还是猪么?虽然在和猪大的聊天中,也挺羡慕猪大现在的生活,可是他很清楚自己最想要的是什么。

一晃几年过去了,猪大和猪二在超市的生鲜部重逢。一个贴着土猪50元/斤,一个贴着家猪13元/斤。

自动选择声音输出

发表于 2018-08-06 | 阅读次数:

由于我的MacBook pro 接着显示器,显示器上有声音输出,而且又使用了boom2软件,当我插入耳机打算听音乐的时候每次都需要选择声音的输出,真的是很麻烦,我打算把这个转换输出的操作自动化。

目标:每次当audio有变化时,选择耳机选项,如果没有耳机选择则什么都不做。

用AppleScript实现如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.sound"
end tell

tell application "System Events"
tell application process "System Preferences"
repeat until exists tab group 1 of window "Sound"
end repeat
tell tab group 1 of window "Sound"
click radio button "Output"
tell table 1 of scroll area 1
if (exists (row 1 where value of text field 1 is "Headphones")) then
display notification "change output to Headphones"
select (row 1 where value of text field 1 is "Headphones")
else
display notification "not change any output"
end if
end tell
end tell
end tell
end tell

脚本的难点是判断Headphones选项,exists (row 1 where value of text field 1 is "Headphones")

苹果的选择区域分别为scroll area -> table -> row -> text field

具体的操作实现了,还剩下触发事件。

这个时候就要用到keyboard Masetro了,选择一个trigger The audio output device changes再执行上面的脚本,搞定!

gradle版本冲突

发表于 2018-02-25 | 阅读次数:

Transitive

gradle的依赖管理默认具有传递性,A依赖B,B依赖C,则A依赖C。

也可以将这项配置关闭,这样A所依赖的B和C需要手动添加。

1
2
3
4
5
6
7
8
9
10
//整个项目取消依赖传递
configurations.all {
transitive = false
}
//单个依赖取消依赖传递
dependencies {
compile ('group:name:version') {
transitive = false
}
}

依赖冲突

如果D也依赖C,而且B依赖的C的版本为1.0,D依赖的C的版本为2.0

gradle会如何选择?

默认选择最新版本,不会报错。所以在默认配置下,依赖会生产冲突。

依赖冲突的解决方法应该是定制化的。

  • Force

    强制设置某个版本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //整个项目统一使用某个版本
    configurations.all {
    resolutionStrategy {
    force 'group:c:1.0'
    }
    }
    //特定依赖使用某个版本
    dependencies {
    compile ('group:B:version') {
    force 'group:C:1.0'
    }
    }

    ​

  • exclude

去除某个依赖,其实就会使用没有去处的依赖的版本,也可以使依赖一致。

1
2
3
4
5
dependencies {
compile ('group:D:version) {
exclude 'group:C'
}
}

@Autowired和@Resource的区别

发表于 2018-02-10 | 阅读次数:

2018第一天

发表于 2018-01-01 | 分类于 感想 | 阅读次数:

跳跃

2018年的第一天,杭州的阳光明媚,麦兜正在自己的窝里晒着太阳,一切都安好。

过去的2017,工作上依旧没有建树,但是每一天也过的充实,在工作中对中后端的实践,算是react入了门,再捣鼓了下vue,都能安心地运行。年末,易控脂的项目,重拾了java,开始java web的实践,技术上小小转变,却带来了思想上的大大进步。以前的自己,总是秉着“学以致用”的原则,觉着项目能安稳地跑在线上,就万事大吉了。技术是为业务服务的,是工具,会使用就行。至于技术本身,点到即止。现在发现是“项目限制了我的想象力”,之前接触的项目几乎不存在性能问题,这让我没有深入技术的理由。当项目开始有要求,需要调优的时候,我绞尽脑汁,却束手无策。只有当你完全了解一个事情,掌握来龙去脉,你才会觉得自己能够控制它,心里不会忐忑不安,因为你知道哪里会有什么问题,出现问题了怎么解决。说回技术,前端的圈子像是娱乐圈,每天争奇斗艳,八卦不断,让人眼花缭乱,很是热闹,井喷式的发展,让我有点迷失了方向。但是,入门简单,很容易上手,寥寥几断代码,就能所见即所得,让人成就感爆棚。后端则就寂寞地多,几百行的代码,密密麻麻,感觉每一行代码哪里都很简单,组合在一起却苦涩难懂。其实这些都是表面的,任何复杂的系统,不管是前端还是后端,对于入门者来说会有各种各样的感受,但是拨开云雾,看清里面的世界,其实就是简单的一花一木,不就是简单的“hello world”吗?所以不积硅步无以至千里,脚踏实地,写好每个一个“hello world”,才能创造出一个世界!在新的一年里,我希望自己不要眼高手低,夯实基础,把每个环节的知识点都能融会贯通,了解彻底,了然于胸。将工匠精神融入代码中,像猫咪一样,目光坚定,直视前方,百尺竿头更进一步!

生活中,杨雪已经怀孕3个多月,宝宝一直很健康,希望可以平安健康地来到这个世界,我要在接下来的几个月的时间,做好准备,介绍这个美好的世界给她!

基于jenkins和docker的spring cloud 微服务持续集成

发表于 2017-11-22 | 阅读次数:

准备工作

  1. centos 服务器一台 ✔

  2. 安装jenkins ✔

  3. 安装docker ✔

  4. Spring-cloud 项目一个 ✔

    ​

GitHub 配置

配置给jenkins使用的token

token生成地址

centos安装docker

发表于 2017-11-21 | 阅读次数:

系统要求

安装Docker CE 需要版本7以上的64位centos,而且必须启用centos-extras源。

卸载旧版本

1
sudo yum remove docker docker-common docker-selinux docker-engine

安装DockerCE

通过YUM安装

配置官方源
  1. 安装依赖包

    1
    2
    3
    sudo yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2

    ​

  2. 配置稳定版本的源

    1
    2
    3
    sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(官方源https://download.docker.com/linux/centos/docker-ce.repo比较慢)
安装
1
sudo yum -y install docker-ce

启动docker

1
sudo systemctl start docker

建立docker用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

1
2
sudo groupadd docker
sudo usermod -aG docker $USER

卸载docker

  1. 1
    sudo yum remove docker-ce
  2. 删除docker相关的文件

    1
    sudo rm -rf /var/lib/docker

    ​

vim插件之surround.vim

发表于 2017-06-21 | 分类于 code | 阅读次数:

SURROUND.VIM

surround.vim 可以快速的选择修改在包围里面的字符串,例如冒号,引号,大括号等

主要命令

  • cs 修改
  • ds 删除
  • ys 添加

常用例子

废话不多说,上代码:
假设有一段字符: "hello vim!"

输入cs"'
变成'hello vim!'

cs'<q>
=> <q>hello vim!</q>

cst"(当包围是多个字符时)
=> "hello vim!"

ds"去除”
=> hello vim!

ysiw[iw是一个单词,这里可以使用任何选择
=> [ hello ] vim!

在选择模式下输入S+你需要包围的字符串

补充

  • [和{ 是带空格的,]和}不带空格
  • 如果你需要使用到.命令来重复上面的命令,则需要再添加一个插件vim-repeat

vim之学习用帮助

发表于 2017-06-20 | 分类于 code | 阅读次数:

开始使用

  • 在命令模式下输入:help开始使用帮助
  • 输入:h pattern查看pattern的使用帮助

链接

  • Ctrl + ] 进行超链接跳转
  • Ctrl + o 跳转到较旧的光标的位置
  • Ctrl + T 跳转到上一个链接处

上下文

每个帮助主题都有上下文

前缀 例子 上下文
: :h :r 命令模式下以冒号开始的命令
无 :h r normal mode
v_ :h v_r visual mode
i_ :h i_CTRL-W insert mode
c_ :h c_CTRL-R ex command line
/ :h /\r 正则搜索帮助
' :h 'ro' 选项,这里表示以readonly的方式打开
- :h -r 参数

如果你知道 ctrl+r ,只要在命令行中输入:h ctrl-r,然后再按ctrl+d,vim 会列出所有不同上下文的关键字

shortcat使用心得

发表于 2017-06-13 | 分类于 mac | 阅读次数:

官网地址: shortcat

kill mice, one at a time.

过度使用trackpad之后,感觉手很累,效率也比较低,开始慢慢成为了键盘党,从此以后手也轻松了,心也舒畅了,妹子们也纷纷投来了崇拜的目光!

shortcat能支持绝大多数的应用,基本可以做到脱离鼠标,使我们的效率更高。

常用技巧

  • ⎡ ⇧ + ⌘ + space ⎦ 快捷键
  • 支持中文,可以直接打拼音
  • 英文标点. 显示所有可以点击的区域, .button 显示所有可以点击的按钮
  • 快速按下2次enter键可以模拟双击
12
张若凡

张若凡

少说,多做,多思考

18 日志
4 分类
22 标签
GitHub Twitter
© 2018 张若凡