写点什么

通过使用终端(iTerm2&Oh my ZSH)来提高您的生产率 John 易筋 ARTS 打卡 Week 41

用户头像
John(易筋)
关注
发布于: 2021 年 03 月 14 日

1. Algorithm: 每周至少做一个 LeetCode 的算法题

笔者的文章:

算法:24.两两交换链表中的节点

LeetCode 全集请参考:LeetCode Github 大全

题目

[24.两两交换链表中的节点

https://leetcode-cn.com/problems/swap-nodes-in-pairs/](https://leetcode-cn.com/problems/swap-nodes-in-pairs/)


/* * @lc app=leetcode.cn id=24 lang=java * * [24] 两两交换链表中的节点 */
// @lc code=start/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution { public ListNode swapPairs(ListNode head) { // check edge if (head == null || head.next == null) { return head; }
ListNode n = head.next; head.next = swapPairs(head.next.next); n.next = head; return n; }}// @lc code=end
复制代码


2. Review: 阅读并点评至少一篇英文技术文章

笔者的文章:

翻译:通过使用终端(iTerm2&Oh my ZSH)来提高您的生产率

使用终端是您作为开发人员的日常工作中获得的最大的生产率提升之一。如果您知道快捷方式,您将比使用鼠标更快。在本文中,我想向您展示我的终端设置以及我每天如何使用它。封面图片显示了我当前的设置。


我是 macOS 用户,因此本文主要关注此操作系统,但我演示的大多数软件也适用于 Windows 和 Linux 用户。


安装自制软件

Homebrew是 macOS(或 Linux)缺少的软件包管理器,使安装软件包超级容易。


要将其安装在 macOS 上,只需在终端中粘贴以下命令:


/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
复制代码

之后,您应该可以运行 brew,可以通过 brew -v 在终端中运行来检查安装是否成功:


▶ brew -vHomebrew 2.2.4Homebrew/homebrew-core (git revision 22532; last commit 2020-01-31)Homebrew/homebrew-cask (git revision 19d828; last commit 2020-01-31)
复制代码

iTerm2

我建议用iTerm2替换 Terminal.appmacOS 中的默认值。


您可以使用安装它 brew:


brew install --cask iterm2
复制代码


iTerm 的一些最佳功能:


  • 将您的终端分成多个窗格,您可以通过热键进行切换

  • 注册一个热键,使您在另一个应用程序中时将终端带到前台

  • 强大的页面查找功能

  • 不同的用户配置文件可保存您的窗口安排等

  • 粘贴历史记录,显示您已粘贴到终端的所有内容

  • 更多


ZSH 和 Oh My ZSH

从 macOS Catalina(10.15.2)开始,默认外壳现在为 ZSH 而不是 Bash。您可以使用Oh My ZSH框架来丰富 ZSH,该框架提供了一些可提高生产率的功能:


  • 通过 Tab 按键进行自动补全,可以选择可用的目录,命令和文件。

  • 使用别名命令,您可以通过alias在终端中运行来获取所有可用别名的列表

  • 您可以省略cd(更改目录)命令:(..代替cd ..),../..(代替cd ../../(对于根目录)和~(对于主目录)

  • take命令创建一个新目录并更改其路径。示例:take testFoldermkdir testFolder && cd testFolder

  • 使用-你的上一次与当前路径之间快速导航

  • 许多很酷的主题

  • 令人惊叹的插件列表

  • Git 集成

  • 还有很多…


您可以使用以下终端命令安装它:


sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
复制代码


Oh My ZSH可以通过.zshrc配置文件进行配置:


vi ~/.zshrc
复制代码


我的.zshrc配置看起来与此类似:


# If you come from bash you might have to change your $PATH.export PATH=$HOME/bin:/usr/local/bin:$PATH
export JAVA_HOME="/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/"
# jenvexport PATH="$HOME/.jenv/bin:$PATH"eval "$(jenv init -)"
# Path to your oh-my-zsh installation.export ZSH=/Users/mhoffman/.oh-my-zsh
# Set name of the theme to load. Optionally, if you set this to "random"# it'll load a random theme each time that oh-my-zsh is loaded.# See https://github.com/robbyrussell/oh-my-zsh/wiki/ThemesZSH_THEME="avit"
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/# Example format: plugins=(rails git textmate ruby lighthouse)# Add wisely, as too many plugins slow down shell startup.plugins=( git brew docker npm osx bgnotify zsh-syntax-highlighting zsh-autosuggestions web-search)
source $ZSH/oh-my-zsh.sh
# Set personal aliases, overriding those provided by oh-my-zsh libs,# plugins, and themes. Aliases can be placed here, though oh-my-zsh# users are encouraged to define aliases within the ZSH_CUSTOM folder.# For a full list of active aliases, run `alias`.
alias zshconfig="nano ~/.zshrc"alias ohmyzsh="nano ~/.oh-my-zsh"alias gpf='git push -f'
# Docker aliasalias dkps="docker ps"alias dkst="docker stats"alias dkpsa="docker ps -a"alias dkimgs="docker images"alias dkcpup="docker-compose up -d"alias dkcpdown="docker-compose down"alias dkcpstart="docker-compose start"alias dkcpstop="docker-compose stop"
# Kubectl aliasalias kdev='kubectl -n dev'alias kpg='kubectl -n playground'alias ktest='kubectl -n test'alias kprod='kubectl -n prod'alias kpreprod='kubectl -n preprod'
复制代码

我使用avit主题,但还有许多[其他很酷的主题](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes)


关于使用过的插件的一些话,在这里您可以找到所有可用Oh My ZSH插件的列表:


  • git:提供了许多别名和一些[有用的功能的 git](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git#functions)。

  • brew:为常用的brew命令添加几个别名。

  • docker:为docker添加自动完成功能。

  • npm:提供完成功能,并为npm添加许多有用的别名。

  • osx:为 OSX 提供了一些实用程序。

  • bgnotify:长期运行命令的跨平台后台通知

  • 网络搜索:添加用于通过 Google,Wiki,Bing,YouTube 和其他流行服务进行搜索的别名。

  • zsh-autosuggestions:根据历史记录和完成情况建议输入命令

  • zsh-syntax-highlighting:为 shell zsh 提供语法高亮显示,红色表示无效,绿色表示有效命令:


使用素材主题

我真的很喜欢 Material Design,所以由于这个iTerm2配色方案,我也在 iTerm 中使用了它。可以在[此处](https://github.com/MartinSeeler/iterm2-material-design#how-to-use-it)找到安装说明。


结果应类似于我的终端:

使用最小主题

选择“最小主题”以使界面更干净,标签更小,如上面的屏幕快照所示:

将字体更改为 Cascadia 字体

我在 iTerm 中使用 Microsoft 的 Cascadia 字体。在操作系统上安装字体后,需要在 iTerm 配置文件中选择它作为字体:

良好的 CLI 工具

在本章中,我想演示一些我经常在终端中使用的 CLI 工具,这些工具可以大大提高您的生产率:


  • lazygit:git 命令的简单但令人惊奇的终端 UI



  • HTTPie:命令行 HTTP 客户端,具有直观的 UI,JSON 支持,语法突出显示,类似 wget 的下载,插件等,我经常使用它们代替诸如[Postman](https://www.getpostman.com/)或[Insomnia](https://insomnia.rest/)之类的图形程序

  • htop:“用于 Unix 系统的交互式进程查看器”,我用它代替了 macOS Activity Monitor.app

  • tree:以树状格式列出目录的内容

  • bat:cat 具有语法高亮和 Git 集成的克隆


  • lnav:高级日志文件查看器

  • kubectl:Kubernetes 命令行工具,用于对 Kubernetes 集群运行命令

  • watch:Linux watch 命令,这对于定期运行命令非常有帮助


免费课程

如果您想了解有关 ZSH 的更多信息,我强烈推荐Wes Bos提供免费的[Command Line Poweruser](https://commandlinepoweruser.com/)课程。


结论

我仍处于航站楼旅程的开始,但到目前为止我真的很喜欢。更加频繁地使用终端,可以减少握住鼠标的时间,并且使用 CLI 可以比使用图形界面更快地完成许多操作。当然,即使您只是浏览目录,您看起来也很酷。


让我知道您正在使用哪些有用的 CLI 工具以及可以与我和社区分享哪些生产力提示。


参考

https://www.mokkapps.de/blog/boost-your-productivity-by-using-the-terminal-iterm-and-zsh/


3. Tips: 学习至少一个技术技巧

笔者的文章:

TableView全展开实现ContentSizedTableView

最近在用 TableView 画 Excel 表格(关键词 Spreadsheet),有个诉求就是要全部展开。


简单描述就是要tableView.height == contentSize.height


用如下方法可以实现:


  1. 定义 ContentSizedTableView

import UIKit
final class ContentSizedTableView: UITableView { override var contentSize:CGSize { didSet { invalidateIntrinsicContentSize() } }
override var intrinsicContentSize: CGSize { layoutIfNeeded() return CGSize(width: UIView.noIntrinsicMetric, height: contentSize.height) }}
复制代码


  1. 用 ContentSizedTableView 代替 UITableView,并设置父 view 的上下左右的约束 constraint;

  2. 其它跟 tableView 的用法就一样了。


参考

https://stackoverflow.com/questions/2595118/resizing-uitableview-to-fit-content


4. Share: 分享一篇有观点和思考的技术文章

笔者的文章:

极客大学产品经理训练营:产品经理的项目管理 第13课总结


讲师:邱岳


Project 项目类似火柴🔥点燃项目 Product,项目会燃机,产品会相对长存。


1. 项目

1.1 项目是为了达成某个目标而规划并实施的阶段性任务集合。


  • 阶段性的把不同职能的人聚集在一起;

  • 针对某个目标做一系列的设计和开发工作;

  • 以高质量及时交付并最终达成目标为评价标准。

  • 阶段性?项目的粒度实践:超过 2 个开发或超过 3 天;开发工时超过 8 个人日。

  • 瀑布还是敏捷?敏捷 ≠ 偷懒,将敏捷作为思想和工具,而不是整套的方法论。


1.2 项目管理是产品管理中的一部分

  • 项目的生命周期 ≠ 产品生命周期

  • 项目目标 ≠ 产品目标

  • 项目需求 ≠ 产品需求池


1.3 项目过程中的常见环节

  • 不同的团队总会有不同的项目管理的环节,我们不必学习和拘泥于一种规范;

  • 加或减任何一个项目规范和环节,都有成本。

  • 环节的三要素:活动、里程碑、产出物。

  • 需求 --> 立项与设计 --> 开发实施 --> 验收测试 --> 发布上线 --> 复盘。


下图的红色标识就是每一个重要的里程碑。

如果缩小项目规模评估,多次评估:

  1. 项目开始前,可以找项目负责人粗略估计要多少人日;

  2. 需求评审、视觉稿评审后,再问开发人员大概要多少人日,留一点 Buffer 缓存时间,得出第二次评估;

  3. 系统设计、设计评审后,再次让开发人员评估时间,再留点 Buffer,得出第三次评估。


1.4 一个简化的流程

需求分析(PRD & 交互稿) --> 设计开发 --> 测试验收 --> 发布上线


2. 项目管理的核心要素

  1. 目标、资源、过程

  2. 目标、人力、财、物、过程

  3. 目标、人力、财、物、任务、交付标准


  • 规划好,并让所有人都清楚,互相达成一致 -- 规划;

  • 做好跟进和督促,及时发现所有因素可能的偏移 -- 跟进;

  • 变更出现时,通过调整所有前面的自变量,确保目标稳定 -- 管理。


3. 项目管理的工具与技巧

  • 沟通管理:项目周报、日报、周会、站会、看板、1V1 沟通;

  • 计划管理:多次评估、进度通报、进度预警、关键路径图;

  • 质量管理:燃尽图、Bug 跟踪日报、单元测试、自动化测试;

  • 团队氛围:转场沟通、预沟通、团建。


3.1 项目周报

  • 摘要:描述性的一句话,重点进度、预警、需要的支持。

  • 重申项目目标。

  • 核心流程的进展和里程碑的达成情况;

  • 识别到的风险和解决方案;

  • 具体的项目事务和任务;


3.2 关于项目管理现实的心得和体验

  • 砍需求 >> 加班 > 加人;-- 任务对目标的优先级

  • 工期预估精准只有一个原因,就是运气好;

  • 项目一定会延期,留足缓冲期;

  • 项目组内的尊重、信任氛围影响项目成败,决定产品生死 -- 买点吃的很重要;

  • 项目总结不仅仅是为了项目总结,也是团建 -- 最好的团建就是打胜仗;(Feel Free to Talk, 互相信任,放松,能放开袒露心扉。)

  • 脸皮厚一点,*嘴巴勤快一点*。


  • 项目管理的本质是什么?我觉得是钝感。(输入的多少拨动,不会影响达成目标的输出。比如别人怎么骂你,不会影响你的情绪。)

  • 为团队的效率负责 / 管好事更要带好人 / 敢于承担责任

  • 项目管理,可能是我们的第一份管理工作;

  • 做项目经理,可能是最快建立影响力和建立信任的方式。


推荐书单


  1. 《系统性思维》

https://book.douban.com/subject/26298694/

  1. 《批判官员的尺度》

https://book.douban.com/subject/6401128/

  1. 《浪潮之巅》

https://book.douban.com/subject/6709783/

  1. 刘润老师的商业课程,得到 App 中可购买

  1. 《用户体验要素》

https://book.douban.com/subject/6523997/

  1. 《设计中的视觉思维》

https://book.douban.com/subject/4020885/

  1. 《Web 信息架构》

https://book.douban.com/subject/3169342/

  1. 《设计心理学》

https://book.douban.com/subject/26742341/

  1. 《交互设计沉思录》

https://book.douban.com/subject/19934344/

  1. 《无界面交互》

https://book.douban.com/subject/26947799/


  1. 《重来》

https://book.douban.com/subject/5320866/


  1. 《金字塔原理》

https://book.douban.com/subject/4882120/


  1. 《思考快与慢》

https://book.douban.com/subject/10785583/

  1. 《象与骑象人》

https://book.douban.com/subject/20260640/

  1. 《调查问卷的设计与评估》

https://book.douban.com/subject/5335912/

  1. 《营销调研》

https://book.douban.com/subject/6053056/

  1. 《用户体验度量:收集、分析与呈现》

https://book.douban.com/subject/26710486/

  1. 《用户至上:用户研究方法与实践》

https://book.douban.com/subject/27074670/

19.《点石成金》

https://book.douban.com/subject/26313852/

  1. 《以图代言》

https://book.douban.com/subject/26324467/

  1. 《理解漫画》

https://book.douban.com/subject/26336970/

  1. 《我的底层生活》

https://book.douban.com/subject/25900802/


  1. 《用例建模》

https://book.douban.com/subject/1130507/


  1. 《大象 UML》

https://book.douban.com/subject/10549583/


  1. 《学会提问》

https://book.douban.com/subject/33378880/


26.《如何阅读一本书》

https://book.douban.com/subject/26789567/


  1. 《曾国藩传》

https://book.douban.com/subject/30377678/


  1. 《成为黑马》

https://book.douban.com/subject/35249425/


  1. 《从“为什么”开始》

https://book.douban.com/subject/6718052/


  1. 《构建之法》

https://book.douban.com/subject/25965995/


  1. 《人月神话》

https://book.douban.com/subject/1102259/


  1. 《网易一千零一夜》

https://book.douban.com/subject/26883531/


  1. 《一页纸项目管理》

https://book.douban.com/subject/3151772/


  1. 《敏捷软件开发 : 原则、模式与实践》

https://book.douban.com/subject/1140457/


  1. 《看板方法 : 科技企业渐进变革成功之道》

https://book.douban.com/subject/25788807/


发布于: 2021 年 03 月 14 日阅读数: 22
用户头像

John(易筋)

关注

问渠那得清如许?为有源头活水来 2018.07.17 加入

工作10+年,架构师,曾经阿里巴巴资深无线开发,汇丰银行架构师/专家。擅长架构、算法、数据结构、设计模式、iOS、Java Spring Boot。易筋为阿里巴巴花名。

评论

发布
暂无评论
通过使用终端(iTerm2&Oh my ZSH)来提高您的生产率 John 易筋 ARTS 打卡 Week 41