Nitro's

Mar 26, 2015 - Comments - tech

Gitlab重置管理员密码

现在Linode日本的IP进入邮件服务商黑名单的越来越多了,联系客服更换了两次IP发送到Outlook都被拒收,实属无奈,只能等待月底新加坡机房建设好后,迁移过去。 邮件发送服务挂了,导致Gitlab找回密码功能直接被废,更悲剧的是管理员密码竟然也忘记了。无奈之下只能通过console来重置密码。 GItlab服务器上使用 #Gitlab安装路径 cd /home/git/gitlab #进入Rails控制台 sudo -u git -H bundle exec rails console production ominbus上使用 sudo gitlab-rails console or sudo gitlab-rake rails console 进入控制台,如果知道需要修改用户的邮箱,使用如下,直接修改 user = User.find_by(email: 'admin@local.host') user.password = 'secret_pass' user.password_confirmation = 'secret_pass' user.save 如果不知道具体邮箱,可以通过find来查找邮箱 user = User.find(1) 然后重新执行如下修改密码的步骤。 不能发邮件目前来说确实是个痛,众多的垃圾邮件导致一堆的IP被列入了黑名单。

Mar 20, 2015 - Comments - life

年前团队聚餐,第一次喝到吐,N杯下肚翻江倒海极度难受,神经却高度兴奋,喝到高处,一同事助兴挑逗,略感不爽,高喝一声:来!我和你喝!周围的气氛顿时紧张,大家都会觉得砸场子的来了,哈哈。其实真没那个意思,不过这是酒场,大家的思维已经把你摆在了一个醉酒的状态。在Team Leader的劝说下那酒也没喝成,起初我还是很有趣味的起哄热闹一下,但最后发现你的话到最后都要变成酒喝下去,直到吐。起先酒兴正浓小品几口算是惬意,后来开始互相敬酒,开始小有醉意,钻桌子晃悠身体话也开始随意起来,其间去厕所小便,同事忙提醒我,千万别看便池,我还在好奇有什么忌讳吗?进门一看,顿时惊愕,原来是有人翻江倒海都吐到便池里面了,蒸腾起的酒味让我也有了一丝想吐的感觉,迅速撤离现场。后来各种找理由喝喝喝,敬敬敬,快要撤离酒桌时才发现自己脚下已经开始站不稳,轻飘飘,酒精彻底麻醉了神经,自己已经无法站立,同事赶忙过来搀扶,他还在那里吐槽我挑逗着竟然让他喝那么多!几个同事喝的实在不行了结束后各回各家了,我被同事搀扶着去了不远的KTV继续唱歌,说是去唱歌其实是去醒酒。9点多的饭店周围打出租车还算方便,但在车上我却突然想吐了,同事连连和我说稍等一会儿马上下车,此刻的胃却提醒我,必须吐忍不住,瞬间倾泻而上,全部吐在了出租车上,我就模模糊糊听着司机在那里抱怨:你看看你们办的这是什么事啊!同事就连连替我向司机道歉。现在想想真是可怕,想抑制住那股翻腾的流食真是困难。去了KTV后对我来说就一个字:睡。一直睡到快要走,我才醒过来,然后模模糊糊的打车回了家。 自从有了这么一次经历,感觉酒这个东西的神奇之处在于酒精的麻痹,你想要寻求的是一种刺激与氛围,无论葡萄酒烈酒还是白酒啤酒,既能在嘈杂环境中的得到宣泄同时还能在神经麻痹的状态下寻求一种安宁,或许它算是最廉价也是最安全的精神鸦片。 老爸之前特别爱喝酒,随着年龄渐长,酒量大不如从前,过年的时候竟也滴酒未沾。这让我特别意外,所以说有瘾或者依赖真的站不住脚。就像吸烟,我的理解就是如果你郁闷或者心情特差正好手里没有东西时这是吸一支烟的最佳时机,如果你压力特别大可以通过运动来宣泄,虽然一支烟能暂时让你的神经紧张得到缓解但长久的依赖和对肺的伤害真的不可逆转。 记得之前老家过年时每年总要发现一些事故,多半都是喝酒喝多了造成的,摔到排水沟或者路边睡着的也大有人在,这几年生活好了,大家也都开始关注健康了,反倒是这种事情少了很多。 自从上次喝酒醉了之后再没喝酒,家里放着两瓶葡萄酒今天也没有开瓶,就像去超市买可乐当初想着喝但买回来之后它却成了摆设,想想那么多糖分也就放弃了。 也是从那天起自己在心中默念,不喝酒不喝酒,因为我不需要它。

Mar 10, 2015 - Comments - life

今晚在隔壁哥们的协助下成功做了一道荤菜-土豆炖肉。虽然搬来半年有余也知道隔壁哥们是做酒店行业的但还真不知道是个厨子,所以见缝插针的请教了几招。肉菜配齐后结果在超市就是寻不到干辣椒,无奈只能借用隔壁的调料了。最终出锅,肉入味但还稍微有点欠火候。 对于我这种对肉没有兴奋点的人来说,一日三餐有无荤菜均可,但有些人如果一餐中没有荤菜便是索然无味,难以下咽。也好生奇怪,体胖的人多半喜欢吃肉所以恒胖,瘦子大体不是嗜肉之人也就不会太胖。体胖的人一直下定决心要减肥,但迟迟放不下味蕾与胃,也就只能在这条路上越走越远,胖者恒胖。 过年之前搬来新家大概有5个月了,仔细回忆了一下,我竟然就买过一次肉还是鱼肉,如果把鸡蛋也算作肉类的话应该也不超过5次,听之略有可怕,但每次去超市总不记得去买一些,应该就是习惯使然了。老爸来了之后,买菜做饭的事情便落到他头上,来了第二天晚餐就是蒜苔炒肉、土豆炒肉。下班回来看到桌上的饭菜竟然有些不习惯,便问老爸怎么每个菜都要有肉,老爸说看着冰箱里没有肉,估计你也不怎么吃,我来了就吃点吧。想来还是老爸了解我,小时候过来的一些习惯只有父母最懂你。从那天起我也算过上了隔三差五有肉吃的日子。 小时候家里特别困难,想吃肉都要等过节,勉强吃个鸡蛋也算是福利。有一天中午放学回家看奶奶在烙饼,黄澄澄的,看着就特别好吃。奶奶忙招呼我说:快过来吃鸡蛋饼。我还在思考这不过节也要开荤了吗?看着姐姐拿在手里吃着正带劲儿的饼,撕去一角,放在嘴里一嚼,才明白鸡蛋饼只是颜色对了,味道却不对,因为黄澄澄的是玉米面的颜色。那时的自己也不懂什么叫做善意的谎言,当面拆穿了奶奶的话。鸡蛋不易也是肉,直到后来上大学每每买鸡蛋灌饼总能想起奶奶的鸡蛋饼,黄澄澄的…… 之前农村还没有那么多外出打工的时候,一家人的收入基本上来自于农田、零活、集市买卖,还有一项就是养猪。家家户户庭院不管大小总有一个地方留有猪圈,来年春天小猪崽刚下来,有专门的猪倌到各村里去哟嗬着卖小猪。各家三五一商量价钱合适拎着小猪崽四条腿就回家了,有钱的现付,没钱的等成年猪卖出去再给也行,这也算是乡村买卖的一个缩影。养猪其实在农村生活有其必然存在的原因。农村当时都没有城市基础设施那么完善,下水道和垃圾处理更是无从谈起,一日三餐的饭菜残余正好是猪食的原料之一,再加上农作物的秸秆,再混入部分玉米面,基本上就能把一头猪养到成年,来年的猪粪便还能回田做肥料,基本实现了现代的循环利用,而且投入还小,这也成就了家家户户都养猪的习惯。如果某个家户人家年底要办喜事,必然是要把年底的壮猪宰掉,每家分得几十斤,走亲戚串门用,老家隔壁的大叔是屠夫,每每到年底他家绝对是最热闹的,排队找他宰猪的络绎不绝。当然大多数家庭的成年猪最后的结局还是要被卖掉,谈好价钱,四条腿一绑,大杠上肩,猪的命运就此终结。年年养猪,家家养猪,价钱却由不得老农民说了算,有印象的那几年一直徘徊在五六块钱左右,突然第二年涨到九块十块,也就是高中那会儿已经到了无可匹敌的十三块钱,此时家家户户谈肉色变,肉虽然好价钱但猪就没那么幸运了,毛猪也就九块钱左右,此时国家开始严格控制价格,老百姓也就变成了家里养猪吃不起猪肉的现状。有些家庭看猪价上涨第二年疯狂养猪,导致来年猪价大跌,也就从那年开始,外出务工的多了,养猪的逐渐也少了很大,庭院改造也没了猪圈,猪也从庭院走向了养殖场。到我家翻新房子时,猪圈也变成了窄窄的化粪池。 2013年在济南去过山大中心校区西边的一家小餐馆,简单的门脸,卖的是蹄子肉和大块炖排骨,一张小桌,一盘花生米或是青毛豆,还有肉…

Mar 6, 2015 - Comments - tech dev

Android gradle 库工程多版本编译问题

android application project中对于debug、release类型不同的编译配置可以通过buildConfig文件实现分离,代码如下: debug { buildConfigField "String", "SUFFIX", "\"123\"" } release { buildConfigField "String", "SUFFIX", "\"\"" } 但对于android library project(子module),目前的gradle plugin并不支持debug、release这样的编译类型,如果还是按照如上配置,默认release产生效果,debug被忽略。 android gradle文档是这样说的: For the rest, libraries behave the same as application projects. They have build types and product flavors, and can potentially generate more than one version of the aar. Note that most of the configuration of the Build Type do not apply to library projects. However you can use the custom sourceSet to change the content of the library depending on whether it’s used by a project or being tested.

Feb 10, 2015 - Comments - tech dev

微信扫码直接跳转前台实现

微信在Mac、PC、浏览器都实现了扫码登录的功能,过程如下: 当用户已经使用过一次扫码登录后可以直接点击“Log in via My Phone”,微信服务器会向App发送通知,调用确认界面,用户点击“确认在PC上登录微信”,App向服务器确认请求,服务器响应Mac、PC的登录请求成功。 其中微信Android客户端的一个环节为抢占式弹出确认界面,这个过程参与实现的几个要点:Service、PendingIntent,但是还有一个关键点就是如果微信App 处于前台如何抢占式的将确认界面置为task stack的最上面?如果此Activity如果已经位于stack的任意位置如何保证single in task而且还能置于栈顶? 最近在看Android官方例子才发现Intent其实已经提供了相关的Flag来解答这个疑问。 public static final int FLAG_ACTIVITY_REORDER_TO_FRONT = 0X00020000; Intent类中提供这样一个Flag,官方解释它的作用:当某个Intent增加这个Flag会导致将要运行的Activity从当前task stack中置为栈顶,当然了由于stack数据结构先入先出的定义只能是进行多次出栈入栈的reorder,如果stack中不存在就直接创建。回到微信那个例子,如果确认Activity在stack中已经存在那么它将被从stack的任意位置置于栈顶,如果stack中不存在确认Activity则在栈顶创建,这样就保证了无论微信是否在前台运行还是确认Activity是否在栈顶都能抢占式的弹出请用户确认此次登录行为。

Feb 3, 2015 - Comments - tech dev

Android View背景与Shape

某个view需要有点击、焦点、选中的背景反馈是一般使用selector设置各个状态时的背景色。每一个item设置纯色一般比较少见,比较多的是使用bitmap或者shape,如果是bitmap很好理解,状态变化时直接切换渲染的图片就OK,但比较好的方式是用shape自定义图形。 这样做有两点好处,第一能够减小APK包的大小,现在的App很多已经是20+M,对用户的更新造成诸多不便,所以保持App大小很重要,其次能够避免图片平铺拉伸的处理,虽然.9图片从一定程度上保证了屏幕尺寸的兼容。 Shape使用时要注意Padding标签。 在Shape XML中定义了Padding并且此Shape作为某个View的Background时,View就不需要再设置android:padding,因为两者会产生冲突。 源代码分析可见冲突点: View.java setBackgroundDrawable()主要读取Drawable的Padding来设置当前View的Padding ------ if (background != null) { Rect padding = sThreadLocal.get(); if (padding == null) { padding = new Rect(); sThreadLocal.set(padding); } resetResolvedDrawables(); background.setLayoutDirection(getLayoutDirection()); if (background.getPadding(padding)) { // 读取背景图的Padding resetResolvedPadding(); // 重置当前View的Padding switch (background.getLayoutDirection()) { case LAYOUT_DIRECTION_RTL: mUserPaddingLeftInitial = padding.right; //重置View初始化Padding mUserPaddingRightInitial = padding.left; internalSetPadding(padding.right, padding.top, padding.left, padding.bottom); //写入View Padding值 break; case LAYOUT_DIRECTION_LTR: default: mUserPaddingLeftInitial = padding.left; mUserPaddingRightInitial = padding.right; internalSetPadding(padding.left, padding.top, padding.right, padding.

Feb 3, 2015 - Comments - life

一里路一本书

前几天上班的时候看着同事在QQ群里聊Hi,凑近去一看原来是技术交流群,他略带点紧张我也报以微笑,大家就都明白了。回头一想,我倒也没有加入那么多的技术群,因为一来感觉意义不大,聊天海侃占大多数而且这些时间基本是在上班时间,二来真正当自己遇到技术问题是多数还是Stackoverflow、GitHub或者看源码解决问题,再者求职找工作这事也不是全靠技术群,互联网的专职招聘现在做的也是风生水起。翻看了一下自己的Q群,除了从小学到大学的同学群、老乡群、公司业务群、两个技术群,最后剩下的竟是两个读书群。而勾起回忆的也是这两个读书群。 每天朝9晚6的上班,对我来说朝9晚9也罢,总之生活规律了,这是毕业之后的一大改变,但当回到家吃完饭坐下来写会儿代码之后你会时间太快,而却又愈发空虚,除了代码自己竟找不到一丝存在感,每天面无表情郁郁不乐,除了与朋友会会面吃个饭…待续

Jan 1, 2015 - Comments - life

2015新年小记

前段时间由于VPS使用VPN的原因,导致域名被封,恰好又在APEC期间,所以导致博客无法访问,一气之下将VPS退掉了,博客备份好没再动,后来想想不能这么放弃了,又把老的域名www.n2hsu.com重新启用,解析好后,一切顺畅了。 上周在公司又试了一下原来的域名www.nitrohsu.com结果又可以访问了,真心不知道墙到底在搞什么鬼,趁着周末有空又切换回原来的域名,Google Analysis、Goods Webmaster都需要重新配置一次。但惊闻Gmail被封的噩耗,再不也对这堵墙抱任何希望了。 匆匆忙忙地总结完自己的2014,回去上班还要继续写公司的工作总结,任务完成情况,部门评审一系列的年终总结就此开始。 回头才发现2014年自己的博文数量竟然停留在个位数,心中不免惭愧。而且干货还比较少。技术之路还需继续努力。 2015年的目标或许已经有两个了: 博客别再长草,墙在于不在,别荒废了自己。 读书行路,2014年的书单也是寥寥可见,争取2015年读15本经典非技术书。 2015年的其他: 学习一门新的编程语言; 将Android技术向下延伸,增强平台技能GET; 照顾好家人,也就是老爸,60岁,真的是老人了; 存一笔钱,期待来年的房价; 结婚,或许、maybe,和丈母娘隔空喊话; 创业,谁都可以蠢蠢欲动,who can do it?maybe; English、Mathematics反正我是不讨厌这两门学科; 学历、学位、证书,它们不是一门考试,只是一个过程; --- 2014,发现更大的世界 2015,满满当当,期待,渴望,追寻

Jan 1, 2015 - Comments - life

写在2014-发现更大的世界

圣诞刚过,元旦马上就到。经历了一场洋节与传统节日之争后,大家一致认为这些都是商家的节日。与一群狐朋狗友在一起吃饭聊天嗨皮过节最好不过了,家人不懂我们的圣诞为何要以苹果祝福今夜,商家也只懂苹果圣诞一定要涨价,团购一家嗨吃店,订两张电影票,冬夜里也算在诺大的都市有了些许的存在感。酒店餐馆酒吧电影院,订不上房,没有餐位,没有连续的座位时存在感瞬间爆满,原来你不孤单,只是商家让你觉得这个世界没有你的存在,他们将不复存在。 平安夜那天公司互动礼物,作为天使要给抽到的国王一件礼物。当天在大群里,各种刷新爆棚,从吃的小蛋糕到围巾,从一盒鸡蛋到早早孕试纸条,各种刷新三观,唯独技术中心的各位同事思索良久不知送些什么为好,这里当然有我,回家想了想,零食吃过后满足了味蕾也没留下太多意义,男士送大龄女士(某部门总监)围巾也略不妥当,忽然一想送本书吧,OK,就此敲定,到某东上就买了本科普类的《数学之美》,第二天到货。同事还在愁眉苦脸想礼物时,我买的书已经送到,同事一看这书,惊呆了,数学!数学!大学最讨厌的课程或许就有数学吧,应该还有English,但我却自我感觉良好,科普读物应该还算中规中矩。委托前台送给国王,依照规则,国王需要到公司QQ群里晒一下天使送的礼品,结果到最后一天我送出的礼物也没有上榜,或许真被同事说中,看到书名大致已经让人生厌了。虽然此书我只看到几篇博客,也算有些了解,不至于让人犯困或者流于形式,但为什么总是有人对数学英语有这么大的抵触呢?大学的阴影这么深?也罢,自己又去买了一本,细细读来,饶有趣味,美字当之有属。 到除夕夜那天,来北京整整一年了。告别济南,告别生活了五年的那座城市,一路向北,一路向前。有人说,处女座是最难以做出改变的一个星座,我觉得不单是处女座,大多数人应该也是如此,活在舒适区才能找到安全感,不论是从群居动物的生活习性还是从精神层面的心理动机,都不难解释。记得是正月初几,和房东提前说好了要走,当天搬东西,也快要搬完了,但是太晚了走不了,和房东商量一下能不能借助一晚上,房东直言不行,直接给以白眼相向,必须今晚搬完,索性将东西都搬出来直接放到了两个同学家里,到大西边另外一同学家里借住了一晚,第二天带着东西踏上回家的归途。这次回家算是全盘清空,归位为零的一次回家。交接完工作,告别了房租,告别了夏雨荷,回到那个生我养我的家。自从奶奶去世后,家里瞬间冷清了很多,虽然奶奶最后那几年身体有恙但还是硬朗,能够自己在家做饭虽然需要拄着拐棍,但每次回到家打开家门,喊一声奶奶,奶奶一定会迅速打开门,年老皱纹可见,但泛着的笑也从不消失,只是,现在变成了回忆。记得在济南的有一天晚上,在写关于奶奶的一篇文章,写到深处,自己竟也止不住的开始哽噎,最后失控的哭了起来,马上关上房门生怕隔壁听到,但是还是止不住的哭,回头想想那么一个活生生的人,就这样走了,到最后连见一面的机会都没有,如果我在或许她就不会走得那么快,或许她走的时候还是有一丝的念想,或许…没有如果…只愿奶奶在天堂过得好。 之前很喜欢听一首歌,刘惜君的《我很快乐》一个人骑自行车时,跑步时,工作郁闷时,忍不住哼哼一几句,矫情的人说这是疗伤,淡定的人说这是一种假装,何必追问为什么,想唱就唱,给自己一个空间释放,自由飞翔。枷锁会在每一个人的身上,如何看待就看自己了。 ---断片--- 2015年已经到来,随着年龄的增长只是感觉时间越发的紧张,一年一晃眼就过去了。从一家公司到另外一家公司,工作地点换了,工作内容不变。从一个城市到另外一个城市的变迁,不仅是生活方式的改变,工作、节奏都在发生着变化。在济南的朝九晚五双休日变成了朝九晚九单休日,虽然喜欢这样的快节奏,但有时也难免会问许多为什么,当你投入到自己喜欢的工作时这一切也就变的毫无所以。 第一份工作算是偶然。来北京时先是投靠在一哥们那里,我的台式电脑是快递到他公司里去的,那天去公司拿电脑恰好碰到他老板,简单寒暄几句了,后来了解到公司准备发展Android这块,过几天又去具体聊了一次,感觉合拍,遂决定留下。之前公司没有Android基础,团队需要慢慢组建,起初的工作内容主要是配合PC端开发Android端的一款产品,在这期间也去过几次招聘会招人,但是都无疾而终,归之原因:学历、薪资两点,基本上刚毕业的学生或者有一到两年工作经验的人,最看重的两点:薪资、个人发展基本都会被否定。公司本身属于国企性质,对学历、薪资卡的特别死,导致有些不错的面试者不想来,后来想了一下,这或许就是体制。在招聘的时候曾经去过一家培训机构的现场招聘会,最后的一次招聘彻底让我把这家机构拉入了黑名单。招聘的时候各种刷题,学生根本就不是来面试的,仅仅是为了从面试官手里套几个面试题而已。从机构培训出来的都像机器人一样,每个问题的回答一模一样,错了都错了,真的不知道独立思考的能力去哪儿了?只能说现在的毕业生为了弥补大学时代荒废的时光需要付出的代价有些惨痛。 当工作进行到8月份,两个项目同时都在进行,一个项目基本处于停滞状态,另外的一个项目也处于不死不活的状态,有时你就会发现有些项目你可以来协调处理,但你又无法调动资源时,这才是最悲剧的。后面的项目就是一个例证,在焦灼了几个月后,最终的决定就是离职。临走之前老板找我聊了很长时间,说可以养着我这个人,空闲时间积累技术,但我还是拒绝了,因为我不是一个太过懒惰的人,我不喜欢太过安逸的生活,生来讨厌,这种观点或许不太容易改变。8月份提出离职办完手续,8月中旬入职新公司,时间档期满满,没有一丝空闲,到新公司的第一天,上午办完入职手续,下午拿到UI设计图,第二天进入工作状态,一个新的起点就此开始。 一个新的开始,一个天天加班的开始,由于新项目工期很紧,只能快马加鞭加班赶工,用最快的速度赶在11月中旬上线。但是,但是,也就在项目进入测试阶段时,一个坏消息就开始蔓延,项目要停工,大裁员。就这样,一个项目就此告一段落,绿色的同事纷纷离开,留下的是原来红色的同事。就此体验到互联网的残酷,要么速度死掉,要么迅速崛起,很显然我们是前者,虽然我身为红色的员工,但做着绿色的项目,到最后才发现,红色的同事也开始离开,那么我要什么选择? 前几天还说北京一年了,竟然没去多少地方,直到上周骑自行车出去玩才发现自己也是去了不少地方。骑着自行车溜达或许是一种游览京城最靠谱的方式,当你穿过一个个胡同,看到熟悉的地铁站,走过熟悉的上下班路线,碰上你经常坐过的公交车,就会发现北京原来一直在心里。当地铁涨价后大家都在讨论怎么坐班车怎么走最划算,当每天忙忙碌碌的像一枚打地鼠一样穿梭在各大地铁线上时,周末停下来走一走,不去西单不去王府井,只是去看看小街,只是去和地道北京腔儿的土著们聊聊天,生活也算充实。 爱情婚姻这事,大家是越提越少,记得大学毕业那几年大家都还在讨论谁和谁谈着、谁和谁要结婚了,今年就没几个人在说了,突然发现压力越来越小了,哈哈。宿舍最小的哥们14年结婚了,当初我们还打赌,我肯定要比他谈恋爱结婚晚,果不其然。分手了、恋爱了、结婚了,一切都顺其自然。所有的该来的都会来,着急吗? 感谢两家公司的同事,感谢哥们朋友们的照顾,北京一年多谢有你们。 拥抱2015,拥抱更好的未来