Set GOOS for gopls in Vim/Neovim

I use Neovim to develop my Go project on macOS, but my project only run on Linux Machines, so I need to use to some Linux specific packages like https://pkg.go.dev/golang.org/x/sys@v0.10.0/unix. Here the issue is: I can’t jump to the definition of xxx_linux.go files, because the GOOS environment variable is set to “darwin” on macOS. vim.g.GOOS = "linux" can set the GOOS in neovim, but it not works for me, since the GoTest function of vim-go will not function properly.
Read more →

树莓派作为单独的翻墙机器

之前写过树莓派 3B 使用 clash 作为透明网关 ,后面由于 3B 只有百兆网口,遂改成直接用刷了老毛子的 Newifi3 运行 clash 。 这几年一直用免费的 oracle vps 作为梯子,勉强够用,直到最近开通了 YouTube Premium 才觉得不够用,就买了个机场服务,速度真是屌,晚高峰4K 无压力。 这时路由器性能就成了瓶颈,YouTube 速度只有 30 Mbps , 而电脑直接运行 clash 可达到 80 Mbps。又得搬出停灰已久的树莓派了。

Read more →

2022-总结

2022,操蛋的一年终于过去了。

新冠三年,终于画上句号。再挣不到钱就不能怪疫情了。

Read more →

2021-总结

2021 过得真快,没反应过来就完事了,可能是年纪大了。

可恶,还是没有财务自由,睡后收入也没提升一个数量级。

Read more →

Win10 使用体验和推荐软件与配置

最近入了台联想小新PRO 13 2020 锐龙R7 笔记本。性能非常好。 装的是Windows 10, 从MacOS 切换过来还真有点不习惯。 总体上开发效率比MacOS 会低些,使用体验也差些。可是MacBook Pro 又贵性能又差。 嗯,AMD Yes!

这里列出我用到的软件和配置,供参考

Read more →

北京大学口腔医院种植牙记录

这篇记录在北京大学口腔医院种牙经历, 供参考。 2018年3月 # 拔牙。我是在其他医院拔的牙,走的医保。 在北大口腔种牙全部都是自费的。 2018年11月19日 # 在北京大学口腔医院APP上预约了种植科一个副主任医师的号, 拍片,确认能种,预约手术时间。这家医院非常火爆, 要等一两个月才能安排上。 花费如下: 项目 花费 挂号 60 拍片 240 合计 300 2019年01月08日 # 手术前去抽血化验。 花费:398 2019年01月22日 # 手术,种牙根(Nobel Active 种植体)。 手术前需要带消炎药,止痛药,漱口水,可自带也可以在医院买, 这些在预约手术时有个单子会写清楚。 手术很快, 全程大概15分钟, 打完麻药就没啥感觉了, 躺在牙椅上任人宰割。 花费如下: 项目 花费 挂号 60 消炎药,止痛药,漱口水 80 缴费(50%) 7800 合计 7940 2019年02月22日 # 复查。 没啥问题, 约4月底取摸。 项目 花费 挂号 60 2019年04月23日 # 取模。过程很简单,最后需要选择牙冠材质,我选的是二氧化锆的 项目 花费 挂号 50 拍片 30 合计 80 取完摸后,突然想起种植时医生说可能需要补角化龈, 下午约了种植医生做了软组织移植手术。就是把口腔别的部位的粘膜移植到种植体附近的牙龈。因为之前缺牙很久牙龈都萎缩了。这一步并不是每个人都需要。因人而异。 项目 花费 挂号 60 手术费 1500 合计 1560 约两个月后带牙冠。
Read more →

近期面试经历总结。

经过一波密集面试, 终于拿到心仪的offer, 于这周入职。 终于下定决心离开厦门,来到了帝都。其实自己都说不清为啥, 就是凭着一腔热血,趁着年轻多见见世面。 这次远程+现场面试应该有10家,大小公司都有, 感觉除了头条都能拿到offer, 就是钱的区别。 除了头条面试变态, 其他公司套路差不多,包括滴滴,百度,链家,陌陌等。一些常用技术+简单数据结构/算法。我猜主要看上家公司背景吧,非小公司出来的技术不太差一般都会要。 我刚好属于不会吹的那种, 更好的做法是提前准备好说辞, 包括工作中遇到的哪些挑战, 自己做了哪些牛逼的事。哎,在我看来平时的工作也没啥挑战, 都能轻松完成。 其实仔细想想, 还是平时总结的不够, 时间长了就忘了。换位思考下, 如果说不出遇到的挑战, 面试官可能以为你做的事情比较边缘或简单,甚至怀疑你的技术。 总之就是平时做好总结, 面试时大胆的吹出来。 这里列出一些知识点,如果掌握了这些基本上除头条外的国内互联网公司都能搞定了。 头条的话感觉需要补充各种计算机基础知识(如操作系统, 网络等)和刷一遍leecode。另外剑指offer一定要过一遍!

Read more →

从SAE迁移到DaoCloud

原以为SAE一万的豆子可以用很久,结果最近变相收费,云豆耗光,只好撤离。
话说最近两年国内新出了好多开发者服务提供商:Coding,DaoCloud,LeanCloud等,造福广大开发者,真是大赞。所以这次就选择了DaoCloud(每个月有免费额度),顺便实践把Daocker。

Read more →

beego项目部署脚本

  准备上线用beego写的一个小项目,在vultr开了个日本节点,注册送50刀,免费用两个月,哈哈。
  之前还真没部署过编译型语言项目(Java白学了),也没去折腾capistrano了。参考beego的文档撸了个简单脚本,先凑合用吧。
  

Read more →

2015总结

2015年竟然都过去了!!!无感的一年

细数下就跳槽这件大事。离开之前那个超赞的团队去了美图,觉得挺愧疚的,之前的老板,同事都很nice,但是职场大概就是这样残酷吧。俗话说,傍上大树好乘凉,果然大厂福利很棒,但是氛围感觉一般,混口饭吃而已。

Read more →

一生何求

 今天听到陈百强的一生何求, 突然就想到翻唱过这首歌的苏妙玲, 查了下才记起她时11年的快女,都快忘了她。然后开始感慨时间飞逝。四年前曾经喜欢过她,哈哈。想起看快男快女的青葱岁月,如今忙碌生活,早已无心关注这些。

Read more →

2014总结

新年看来要写个年终总结,可是这1月都快过完了,该死的拖延症.先挖个坑. 2014注定是个不平凡的一年。毕业,工作,世界杯(其实也没怎么看).

Read more →

(译)在laravel 4 中使用配置

原文地址:http://culttt.com/2014/04/07/working-configuration-laravel-4/ 第一次翻译,难免粗糙,欢迎指正!

配置设置是在各种web应用中我们不得不处理的事。主流得web应用至少要配置数据库,但是通常要配置大量得第三方服务
我觉得如果你研究过不同得框架,你会发现不同web应用用各自不同的方法管理配置信息。我接触的开发者也经常用他们自己的方法管理配置。
在这周得教程中,我将介绍怎样在Laravel项目中处理配置信息。我以前得一些教程也介绍过如果使用配置,但我觉得这是个大家都需要的问题,所以值得再写篇文章。

Read more →

mondrian教程

终于做完mondrian的小项目,先将遇到了一些问题和经验记下来。

1. 支持中文

在web.xml中添加过滤如下:

Read more →

使用log4j在Mondrian中输出日志

最近在帮女朋友做毕设,一个基于Mondrian的小项目。写完聚合表后竟然查询速度还是很慢,遂决定打印出日志追踪sql以查看是否真用到了聚合表。 Mondrian是带有log4j的,只是没有配置。现将配置步骤写下。

Read more →

Google Maps Android API v2配置教程

其实官方文档已经说的很详细了,英文不佳者可能会有点捉急。 注:开发环境Eclipse

1.安装和配置Google Play services SDK 在eclipse中打开Android SDK Manager,下载Extras中的Google Play services 右键项目》Properties》Android  点击add按钮添加google-play-service-lib  (不要勾选Is Library)

2.在manifest添加 Google Play services version:添加以下代码到Application下

Read more →

Go 多个goroutinue顺序打印数字

一. 10个goroutinue顺序打印0-9 # 常规的做法是用10个channel来挨个控制,其实可以用原子包实现,相当于加锁 func printInOrder() { wg := sync.WaitGroup{} var curr int32 for i := int32(0); i < 10; i++ { wg.Add(1) go func(num int32) { defer wg.Done() for { if n := atomic.LoadInt32(&curr); n == num { fmt.Println(num) atomic.AddInt32(&curr, 1) break } time.Sleep(time.Nanosecond) } }(i) } wg.Wait() } 二. 两个goroutinue分别打印奇偶数 # 同上,还是用原子包 func printMix() { wg := sync.WaitGroup{} var curr int32 wg.Add(2) go func() { defer wg.Done() for curr < 10 { if n := atomic.
Read more →