默认

更新xcode导致的xcrun error问题解决

用idea或者i家的编译器经常会出现这个问题。而且大多是是git找不到的情况。

在使用git的时候也会报错:

xcrun: error: invalid active developer path (/Applications/Xcode.app/Contents/Developer), missing xcrun at: /Applications/Xcode.app/Contents/Developer/usr/bin/xcrun

这个时候在terminal里输入

sudo xcode-select -switch /

即可解决。

安装homebrew过慢的解决方案

昨天群里有人问到了这个问题,本来不想回答,后来想了想这个问题确实存在的,而且是大范围的问题。

解决方法:

1.下载官网脚本

curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install >> brew_install

2.替换脚本地址

https://github.com/Homebrew/brew

替换为

https://mirrors.ustc.edu.cn/brew.git

如果是之前的脚本,还需要改(目前位置这个地址都指向下载好的本地路径了,可以不需要这个步骤):

https://github.com/Homebrew/homebrew-core

替换为

https://mirrors.ustc.edu.cn/homebrew-core.git

然后运行本地改好的脚本即可

替换Homebrew源

在用brew时偶尔会出现卡死或者卡在updateing brew的情况,这个情况多数是因为外网不通的问题。替换homebrew源即可。

替换brew.git:

cd "$(brew --repo)"
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git

替换homebrew-core.git:

cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

这是中科大的镜像,需要替换清华的请移步清华大学镜像官网:https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/

恢复官方源请使用:

cd "$(brew --repo)"
git remote set-url origin https://github.com/Homebrew/brew.git

cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://github.com/Homebrew/homebrew-core.git

RecyclerView滑动到最底部

手写了一个聊天室效果,最后发现不会自动滚动。

RecyclerView自带的逻辑是:

  • 当用户手动滑动时,出现新数据不会自动跳转到最后一行。
  • 当用户滑动到最后一行时,出现新数据会跳到最后一行。

事实上这不是RecyclerView的交互逻辑,这是指notify数据之后的情况。例如,你的maxline=10,当数据为10时,出线新数据,系统只是进行系统的替换,虽然会达到你要的效果,单是当你的maxline较大时,用户发言没有达到maxline限制当时候,就会出现页面不动情况。

解决方法:

第一种方法:

 mRecycleView.smoothScrollBy(distance,duration);

第二种方法:

 mRecycleView.smoothScrollOffset(offset);

第三种方法:

mRecycleView.smoothToPosition(index);

还有一个简单的方法,设置layoutmanager:

layoutmanager.setStackFromEnd(true);

这个情况的具体解析请看官方文档:

https://developer.android.com/reference/android/support/v7/widget/LinearLayoutManager#setstackfromend

对于电影《三体》的构想

其实在现代电影特效水平的前提下来说,将 《地球往事—三体》 拍成电影的难度并不是很高。


问题是如何在一到两个小时或者三个小时之内向用户讲清楚这几百年来发生的这些事情。


事实上这也不是难点所在。因为很多文字改编电影,最后都是进行了很大一部分的删减。因为作家在写文章的时候,完全没有篇幅的限制,甚至篇幅越长,内容越天马行空,反而会令读者更有想象的空间。


所以说如果将三体拍成电影的话,我觉得可以直接抛弃第一部的内容,直接从两百年后逻辑从睡梦中苏醒,然后,根据两百年后的人类和逻辑对事物不同的反应来接受故事的前提。

准备面试辣!

第一份工作组里的两位大佬,一位去了vipkid,一位去了淘车网,身边也有很多大公司的朋友。我越看越急。

但是急没用,要开始准备下一次工作了!

本来准备这次换工作准备周期稍微长一点点。休息5-7天,投大公司5天,投PM5天,投中小公司5天,投创业公司3天,中小公司和创业公司部分重合,按照7天算。加上复习内容整理需要3天,复习需要3天,一共大概是7+5+7+7+6≈一个月的时间。

但是一个月之后就要交房租了…

所以就又想了想,投简历的时间可以重叠压缩一下,加上面试的时间一共是20天。

附近的餐品的软件

构思


首先这个可能是外卖软件的一个小功能

但是我想的是出于没有任何技术之外的目的去做这件事的

首先这是一个随机显示餐品的app,告诉你今天(今天中午,今天晚上)吃什么

其次不需要用户去手动选择可以根据大众点评获取周围餐厅,然后根据美团获取附近餐厅的餐品随机推荐

昊哥想的是让用户手动输入/选择固定餐品然后在用户选择的列表中去做

我由这一点相出了一些,就是让用户排除自己不喜欢吃的东西,然后去除之后进行推荐,因为用户可能不会想要输入或者选择很多餐品

避免

  1. 要提示清真餐厅
  2. 提示忌口
  3. 提示季节
  4. 提示节日
  5. 排除大量重复的内容(餐品)
  6. 拿到大众点评的评价
  7. 不显示评价,显示星级
  8. 不可以进行投诉,不可以进行打分。因为只做食品类目推荐,所以不进行食品安全保障

接口

大众点评的接口 : http://developer.dianping.com/app/tech/api

美团外卖的接口 : http://developer.waimai.meituan.com/

做一个教长辈用各种APP的APP

首先这是一个计划。

其次这个计划已经在进行了,我的打算是,用一个尽量短的域名,搭建一个wordpress,然后通过rest api,做一个APP和小程序。

为什么域名一定要短呢?

  1. 好记
  2. 生成二维码可以尽量清晰,长辈手机的像素不一定高…
  3. 好输

其实我想了想,小程序有Wordpress现成的,APP我甚至可以直接套个WEBVIEW进去…但是为了减少服务器的压力(虽然不知道会有多少人用),我还是选择了用REST API去做一个app。二月是没时间了,应该在三月底可以上线。我想的大概是这样的:

Android7.xx以上状态栏感叹号解决

7.0 - 7.1

删除(直接删除则默认使用HTTPS)
adb shell settings delete global captive_portal_use_https
禁用HTTPS(写1启用 写0禁用)
adb shell settings put global captive_portal_use_https 0
查询HTTPS开关状态
adb shell settings get global captive_portal_use_https

删除地址就可以恢复默认的谷歌服务器
adb shell settings delete global captive_portal_server
设置一个可用地址(高通/V2EX都推荐)
adb shell settings put global captive_portal_server captive.v2ex.co
查询当前地址
adb shell settings get global captive_portal_server

7.1.1教程
这个版本把HTTPS和HTTP两个地址分开保存,并通过7.0加入的HTTPS开关来控制使用哪一个地址

删除(删除默认用HTTPS)
adb shell settings delete global captive_portal_https_url
adb shell settings delete global captive_portal_http_url
分别修改两个地址
adb shell settings put global captive_portal_http_url http://captive.v2ex.co/generate_204
adb shell settings put global captive_portal_https_url https://captive.v2ex.co/generate_204

7.1.2教程
此版本服务器地址判断逻辑相比7.1.1没有更改,但是检测的开关变了

删除变量:(删除以后默认启用)
adb shell settings delete global captive_portal_mode
关闭检测:
adb shell settings put global captive_portal_mode 0
查看当前状态:
adb shell settings get global captive_portal_mode
服务器地址相关(同7.1.1):

删除(删除默认用HTTPS)
adb shell settings delete global captive_portal_https_url
adb shell settings delete global captive_portal_http_url
分别修改两个地址
adb shell settings put global captive_portal_http_url http://captive.v2ex.co/generate_204
adb shell settings put global captive_portal_https_url https://captive.v2ex.co/generate_204
8.0.0和8.1.0和9.0(Android P)同上7.1.2,未做修改

另外,跳过android P开机验证:

adb shell settings put secure user_setup_complete 1
adb shell settings put global device_provisioned 1

你也可以进rec把验证文件删掉…

小米电视去广告

去广告需要执行以下步骤

01.打开开发者模式, 设置 -> 关于 -> 版本号(产品型号) 狂按确认、

02.打开adb调试, 设置 -> 账号与安全->ADB调试,改为允许

03.输入IP, 设置 -> 无线/有线->选择你已经连接的网络-> IPV4地址就是你电视的IP

04.点击按钮连接, 如果这时电视会出现 "是否允许USB调试" 的弹窗,选择允许

05.点击一键去广告,然后关机重启查看效果

工具下载

https://www.lanzous.com/i2gi1bi

或者

https://share.weiyun.com/5A0XNjy

apk大小优化

我们的安装包只有4m,经过张哥一个月的优化,体积成功到达了6m…

一.Android安装包的构成

  • assets:资源文件,配置文件等不需要编译的文件
  • ib:native库文件
  • res:res就是resource的缩写,主要存放需要生成对应ID来使用的资源文件
  • META-INF文件:用来校验APK的完整性
  • AndroidManidesr.xml:理解为android程序的自我介绍文件
  • classes.dex文件:被java编译之后的类(class)文件
  • 混淆文件
  • rsources.aesc文件,记录资源文件和ID的映射关系文件

二.常用方案

1.代码混淆

2.资源优化

  • 代码混淆(ProGuard)只能对代码进行分析和优化,AndroidLint用来对资源文件进行优化,没有使用到的资源文件也可以扫描得到。
  • 单机Analyze-Run Inspection By Name-输入us或者Unused resources,点击第一个,在弹出框中选择整个项目,确认即可扫描。之后会在下方的Lint窗口中显示未应用文件和资源列表。

    AndroidLint不会分析assets文件下的资源。
    
  • 资源文件最少化:一套布局,一套图,多套dimens.xml,以及轻量级第三方库
  • 图片优化:降低图片色彩位数,使用PNG图片压缩工具

3.其他优化

避免功能重复的库

使用WebP图片格式

可以考虑插件化

我的Android刘海屏适配方法

小张感觉这个东西也没有太多可说的,毕竟按照现在的发展趋势,Android刘海屏马上要被消灭了…

1.获取状态栏高度手动往下挤布局

获取高度状态栏/工具栏高度代码:

Rect rectgle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int StatusBarHeight= rectgle.top;
int contentViewTop= 
    window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
int TitleBarHeight= contentViewTop - StatusBarHeight;

   Log.i("*** Jorgesys :: ", "StatusBar Height= " + StatusBarHeight + " , TitleBar Height = " + TitleBarHeight); 

在Activity的onCreat中获取状态栏的高度:

public int getStatusBarHeight() {
  int result = 0;
  int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
  if (resourceId > 0) {
      result = getResources().getDimensionPixelSize(resourceId);
  }
  return result;
}

google 官方提供的方法是:

DisplayCutout cutout = mContext.getDisplayCutout();

可以根据DisplayCutout来判断刘海的位置和大小,但是很不幸,Android≠安卓。在水深火热的中国安卓环境下,各家制定了自己的规则,甚至有的厂商改掉了getDisplayCutout的返回值…所以个人感觉上面的方法是目前最合适最简单的…

有个东西要说一下,如果你不按照各家的规则去说明自己适配了刘海屏,那么那家的ui会默认不把你归类到‘已适配’的分类中,需要手动在设置中开启。

2.直接用fitinwindows固定布局,这样对于首页是多tab的app很不友好,特别是在父窗口的布局设置了这个属性,会把自窗口的东西全部挤下去…还有分段式背景也会存在问题。

你可能会觉得上面的方法很垃圾…但是小张真的觉得很实用…流下了没有技术的泪水…

iPhoneXR使用初体验

一句话来说:真·够用党手机。

电池好像是大了!不知道是不是新手机的原因,但是据说测试是下半年旗舰级里最顶的手机,我用着觉得确实挺顶的。不知道是不是因为这个垃圾分辨率的原因。

个人使用是很满足了,边框可以接受。地表最强移动CPU,任何操作都不在华夏。电量也充足,所以可能是我接下来一年半的手机了。

其实心里也想过要不要换个XS,但是用了几天,感觉没有理由去换啊…我也没有女朋友,后置完全就是拍二维码用的啊!况且这个镜头和XS的主射是一个,搭配ios+A12,成像效果也很挺好的。如果要求实在严苛,简直iPhoneXR,然后再买个单反,在相机面前,手机=垃圾。

因为小米8的过渡,并没有对刘海屏产生不适。唯一的问题就是支付宝支付不需要确认,是直接到账的…这一点让我很无语…别的APP都需要点击关屏键进行二次确认,支付宝是直接faceid验证,然后支付的。应该设置里有开关,但是我暂时没找到。

另外,准备关掉iCloud了,因为云上贵州注册了公司做大数据…简直可怕…

再次搬家

来到杭州之后我的搬家经历:

2017-4 九堡
2017-4 下沙
2017-7 拱墅
2017-9 滨江
2017-9 滨江
2017-10 滨江
2018-4 余杭
2018-10 余杭

……

说明

苦心经营了快一年的技术博客被我不小心删除了数据库……

我和张琦写了快一年的博客,我写的大概也有四五十篇了吧。

……

赶紧把之后的博客都定时备份传到onedrive了…

人间美味胡辣汤

还是想喝一碗老家的胡辣汤。

干冷的早晨,叫上一碗胡辣汤,半斤葱油饼。又呛又辣,浓芡卷着豆皮牛肉和羊汤,滚烫地穿过喉咙。一口下肚,呼出一大口的哈气,这就是大多数中原人的早餐。

胡辣汤中,除了常见的调料外,还有辛温香燥的药物。主料有高汤、胡辣汤料、胡椒、辣椒,这几样决定了胡辣汤的本性和基础味道,生姜、胡椒、八角、肉桂等,辛香行气,舒肝醒脾,粉条、葱、精盐、味精、酱油,这些大都是常见的东西,但是却在这一锅浓汤里发生了奇妙的反应。早餐店里的伙计也得是起个大早,熬制那口大锅里的浓汤,家家户户的汤底不同,让人在这味道几乎大差不差的胡辣汤界里有了更多的口味选择。

我想无论如何我是舍不得这味道的。

日常锻炼的方法

下面的方法是没有去健身房,自己在家,没有器材时的方法。个别动作可以考虑买个瑜伽垫,因为在汗水到床上还需要洗床单的。

一.吃饭

1.少吃碳水,米面之类。不能不吃!!!一定要吃主食,也可以适量用薯类或者其他谷物代替。饱腹感很强。推荐日常吃杂粮饭。

2.蔬菜可以不限量,水果少食糖分多的。苹果、红薯、玉米等粗粮比较不错。

3.夜宵不要吃了。吃的话可以试一下全麦面包或者坚果之类的。

4.不要特意去补充蛋白质,不吃动物油,动物脂肪,肥肉之类。

5.沙拉选择热量低的酱汁,否则吃沙拉的意义就没有了。

6.总结:早上可以吃包子,玉米,鸡蛋牛奶之类,吃饱。中午和晚饭推荐多吃肉类和蔬菜,有条件的可以自己煎肌肉和牛排,一定要有蔬菜,适量米面,不然会便秘。推荐用植物油,尤其推荐橄榄油。煎东西的时候不要等油温太高再煎!

二.锻炼

1.论坛大部分是 IT 工作人员,长时间坐的。所以基本都有肚子。推荐锻炼腰部(嘿嘿),腿胯部,肩背部。

2.可以说,核心有力量之后,腰部(肚子)基本就会瘦下来了。锻炼的动作下面说。

3.万能推荐平板支撑。

4.腰部:趴下,抬起左手和右腿,然后换右手和左腿,抬起之后停顿一秒,动作不需要太高。练习期间头部自然即可。第二个动作,躺下,弓腿,双手放在身体两侧,做卷腹动作。记住是卷腹,不是头往上用力。前几下腹部会有明显发力感,但是后几下核心力量不足的话会是头部牵引身体往上走。这个时候休息以下,然后进行第二组。两个动作 15-20 一组。

5.肩背部:在离墙一臂多一手的距离。手扶墙,背部夹紧,就是背部肩胛骨往中间夹,越使劲越好,做这个动作的时候胸会往前挺。屁股往后坐,是往后哦!小腿和脚步保持 90°的角,膝盖不要前倾。这个动作做 20-35 秒一组。这个动作有种羞耻感…

6.腿部:没有器材的情况下,就是跨步。向前一大步,然后另一只腿不要跟上,膝盖向下跪。有单膝下跪的姿势,但是前脚是一大步。然后换脚。15-20 步一组。

7.日常没事的时候可以自己憋气,计时。这是锻炼心肺最简单的方法,对之后的锻炼和身体都有好处的。还有就是提肛+憋尿(男士会有射精控制的那块肌肉的感觉),这个是锻炼裆部肌肉的一个方法。男士建议常坐。虽然简单,但是刚开始做也挺累的。

8.总结:体重大的不要跑步!!!适当有氧,不要无脑有氧,不然皮肤就变成下垂的那种了。一般程序员长时间坐着,腰部会有问题,锻炼时请适当!练习肩背部可以改善头前倾,圆肩,驼背的情况。

三.日常

1.注意运动后补水,适当补充能量。保持睡眠时长。

2.锻炼时部位疼痛之后停止锻炼对应部位。

3.建议热身-无氧-有氧的节奏。前期减脂很快的。

4.左右发力不均衡的情况可以考虑单侧加强联系。

四.总结

1.少吃油脂、碳水、不吃动物油,多吃蛋白质高些的实物,推荐橄榄油,多吃蔬菜,少吃糖分太高的水果。

2.主要锻炼腰部和背部。

3.不要熬夜(平常我是 11 点就洗澡睡觉了,今天在发这个帖子)。不要不吃早餐。很忙的话建议煮两个鸡蛋。醒了之后放到冷水锅里开火,洗漱完毕就可以吃了。

4.持之以恒。有条件建议买健身卡。刚开始去健身房的时候不要害羞,每个认真锻炼的人都值得被尊敬!也不要觉得健身房都是争奇斗艳的人,其实大家都是去锻炼的,除了想销售你的健身教练,根本没人关注你的。

个人身高 185,体重(斤)从 210 减到 185 了,目标是 175 左右,我个人追求的是身材。健身房有个人减了 20 斤已经开始有皮肤松弛的现象了。所以建议大家前期不要盲目追求体重变化。

以上也是个人的经验,欢迎大家补充和指错。

欢迎使用 Typecho

如果您看到这篇文章,表示您的 blog 已经安装成功.