程序员飞飞

码农,产品思维实践者,终身学习者,微信公众号:「程序员飞飞」。

0%

打开默认快捷键设置:preferences 里找到 Key Bindings

1、格式化代码

选中要格式化的代码,ctrl + i

2、关闭 tab 窗口

cmd + w

3、快速搜索

Shift + Command + O 來快速打開,並按下 Option 鍵來選取檔案

4、清理工程

1
2
* Clean: ⌘ + ⇧ + K
* Clean the build folder: ⌘ + ⇧ + ⌥ + K

5、排序語句

阅读全文 »

作为一个 iOS 开发的初学者,记录一下自己自学 iOS 过程中的一些坑和问题,仅供参考。

1、Main Bundle Id + Extension Bundle Id(小组件)

规则:前半部分相同,后半部分 + .extension

1
2
Main app bundle id: com.myapp.testapp
Extension app bundle id: com.myapp.testapp.myextension

2、iOS 加异常断点

https://blog.csdn.net/wu_shu_jun/article/details/9045911

https://www.jianshu.com/p/3a0803406d04

https://www.jianshu.com/p/7c0352231eca

3、Incompatible block pointer types sending ‘void

找到对应的报错库,添加:-Xclang -fcompatibility-qualified-id-block-type-checking

阅读全文 »

7 Tips to Improve Gradle Build Speed in Android Studio

  • Keep your tools up to date.

  • Enable Gradle Daemon.

  • Use More Memory.

  • Avoid Dynamic Dependencies.

  • Use WebP Images.

  • Remove Unused Resources.

  • Disable ProGuard in Debug Mode.

  • 保持你的工具是最新的。

  • 启用 Gradle Daemon。

  • 使用更多的内存。

  • 避免动态依赖。

  • 使用 WebP 图像。

  • 移除未使用的资源。

  • 在调试模式下关闭 ProGuard 功能。

gradle.properties 文件中可以对 Gradle 进行各种配置:

1
2
3
org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8
org.gradle.daemon=true
org.gradle.parallel=true

如果你的项目中放了大的静态文件,比如字体库、数据库等等,可能会导致编译出错,这时候你需要设置更大内存,比如 6G,才能编译并运行你的项目,参考设置如下所示:

1
org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

默认情况下,如果你已经成功编译并运行过一次项目了,那么你可以开启离线模式,也可以提升编译速度,如下所示:

image-20221018213023067

阅读全文 »

我们在开发过程中,有时候需要获取一个 View 在屏幕中的位置,比如这个 View 是否在屏幕中显示,还是在屏幕之外等等。

我们可以通过位置,对其做一些操作,以便完成我们的业务需求。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
val location = IntArray(2)
it.getLocationOnScreen(location)
val x = location[0]
val y = location[1]
Log.d("TAG", "getLocationOnScreen x = $x ; y = $y")

it.getLocationInWindow(location)
val x1 = location[0]
val y2 = location[1]
LogUtil.d("TAG", "getLocationInWindow x1 = $x1 ; y2 = $y2")

Log.d("TAG", "left:" + it.left)
Log.d("TAG", "right:" + it.right)
Log.d("TAG", "Top:" + it.top)
Log.d("TAG", "bottom:" + it.bottom)
Log.d("TAG", "width:" + it.width)
Log.d("TAG", "height:" + it.height)

getLocationOnScreenView 相对于物理手机屏幕的位置。

getLocationInWindowView 相对于窗口的位置,Window 是安卓系统中的一个类,不包括状态栏。

View 的 left、top、right、bottom 是它在父 View 中的位置。

阅读全文 »

大家好,我是 Vance。

你是不是有时候感觉自己一事无成?这也做不好,那也做不好?
没关系啦,其实,每个人都是一座宝藏。

如果你觉得自己不是,只是你不知道自己是宝藏而已,重要的是,请不要吝啬挖掘你自己。

如何挖掘自己?我的答案在文中,咱们先看文章。

1、理想很丰满,现实很骨感

我先简单介绍下自己。我叫 Vance,男,93 年的,朋友们都叫我飞飞,现居上海。

2015 年大学毕业,像很多刚毕业的大学生一样,毕业即失业,也对未来充满了迷茫,为了生存我不得不去电子厂打工谋生。

但是我很清楚,这里不属于我,我只是短暂的过渡一下,几个月之后,我怀揣着梦想去了北京,开始了我的北漂之旅。

我本身学的是计算机专业,我个人对技术也比较感兴趣,所以就选择了程序员这个职业。

刚开始工作的时候,因为自己技术很菜,每解决一个问题,我就记录下来,一是加深自己的印象,二是下次再遇到同样的问题方便查找。

阅读全文 »

是这样的。

我在《2021年个人总结》中,信誓旦旦、意志坚定地给自己立了几个 flag,请看图

我一直以为离年底还早呢,突然想起来自己的立的 flag,到现在只完成了 10% 不到,这下牛逼真吹大了。。

人就是这样,没烧到眉毛就永远不会急,人性是懒的,我一直以为自己还算勤奋,现在才知道,我是假勤奋,不知道你也有没有这种拖延的习惯?

2022 年还剩 97 天,简单分解下我的 flag,要完成目标,平均 2 天要写一篇文章,每天要拍一条短视频,每周要跑 7km。

确实压力是有点大,谁让自己吹牛吹得这么大呢?

简单复盘下,为什么会没有严格执行下去呢?

我认为主要有三点:

1、目标清晰,但是没有拆分目标,比如拆分到月目标,每个月结束的时候进行复盘和调整;

阅读全文 »

1.下载安装 VirtualBox

https://www.virtualbox.org/wiki/Downloads

根据自己的操作系统类型下载安装即可!

支持的操作系统类型有:

  • Windows hosts
  • OS X hosts
  • Linux distributions
  • Solaris hosts

温馨提示:如果是 Windows 系统用户,需要再 BIOS 中设置开启 CPU 虚拟化!!!

2.下载安装 Vagrant

https://www.vagrantup.com/downloads.html

根据自己的操作系统类型下载安装即可!

支持的操作系统类型有:

阅读全文 »

本文主要参考 Docker 官方文档的安装为主,官方文档比较繁琐,而且是英文的,因此,我简化了安装的步骤,更适合小白安装。

官网:https://www.docker.com/

1.卸载旧版本

较旧的Docker版本称为docker或docker-engine。如果已安装这些程序,请卸载它们以及相关的依赖项。

1
2
3
4
5
6
7
8
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

2.使用存储库安装

在新主机上首次安装Docker Engine-Community之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker。

设置存储库

1.安装所需的软件包。yum-utils提供了yum-config-manager 效用,并device-mapper-persistent-data和lvm2由需要 devicemapper存储驱动程序。

1
2
3
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
阅读全文 »

前段时间,苹果要求微信支持 iOS13 的暗黑模式,否则会面临下架风险。

广大网友纷纷评论说,如果我要是微信我就和苹果硬刚,哈哈哈哈。。。

其实也不是谁强谁弱的问题,现在都是合作共赢的时代,相互都有利益上的关系,没办法,还是要妥协,只能根据苹果爸爸的要求改咯!

这不今天 iOS 版本的微信就更新了,支持了暗黑主题,还有一些小的优化和改进,我也都体验了下,很多地方还是适配的不是很好,有点影响用户体验。

1585365035

如果不是程序员,可能会觉得支持暗黑模式不就换个字体颜色么?哪有那么复杂,其实我想说的是,还真比较复杂和麻烦。

要支持各种情况下的适配和用户体验问题,所以是比较麻烦的一件事。

另外,还更新了两个小功能:语音发送功能优化,和朋友圈跳到没看的位置。

先说第一个功能,用了下还是比较方便的,想发语音就发语音,想语音转文字就语音转文字。

阅读全文 »

看到这个标题你可能会想,程序员本来不就是写代码的么?

没错,程序员的主要工作就是写代码,或者说为了实现特定功能或者业务逻辑去写代码。

作为程序员,代码写得好,功能实现不就行了么?

这句话看似对,也不对。你品,你细细品!同样是写代码,但是写和写之间差多了。

初级程序员为了实现功能,更多的是复制粘贴,或者去找一些现成的轮子,这里并不是说复制粘贴不好,不要全部代码都复制粘贴,如果后面需求变了,你可能就束手无策了,要知其然知其所以然。

中级程序员会考虑如果把代码写的更好,会如何更好的封装代码,比如提高代码的复用性等,会去了解框架的一些原理,也可以根据需求去修改轮子。

高级程序员会去设计代码,写轮子。另外,还懂一些产品知识,会去了解和讨论需求,会思考这个需求解决了用户的什么问题?有没有解决用户的痛点?有没有更好的实现方式?用户体验怎么样?等等。

再往上,到了专家的级别,不仅要会架构,而且还要会写 PPT,各种软实力也是必须的,还要有全局观,要能站到更高的维度去思考问题,要有统筹全局的能力。

你看看,写代码之间的差别大了吧。

每次产品经理扔给你一个需求,你二话不说,一顿操作猛如虎,就干起来了,等你干完了,等到交付的时候,产品经理告诉你做的不对,应该是怎样怎样的,顿时你心里一万只草泥马奔腾而过。。。

阅读全文 »