笨熊之家

欢迎来到笨熊之家~

0%

本博客用的 Hexo,有一个功能在文章中插入 <!-- more --> ,之前的内容成了摘要,显示在首页上,点击查看更多才跳转到正文页面。

这是手动设置摘要的方法,也有插件可以实现自动选取摘要,例如这次我们要谈到的 chekun/hexo-excerpt: Automatic excerpt generator for Hexo,可以根据设置,以标签为单位进行摘要的选取,避免选取到不完整的内容。

有次在写短文的时候发现,即使除去摘要,正文没有更多内容时,首页还是会显示“查看更多”字样,于是发起了一个 Pull Request,尝试去修正这个问题,我提出的方案是短文不再自动生成摘要。

It seems to be confusing when excerpt is showed and there is no more content, so i add a condition to check if the length of moreNodes is more than zero.

这个更改当天就被合并到主分支了。

Read more »

登山前

最近约上几个同学去爬山,选中了深圳最高峰梧桐山,有个同学已经去过两次了。

坐地铁从深圳另一端过去,然后坐 211 到梧桐山总站下车,同学们住的地方不尽相同,路上基本都需要花上两三个小时。八九点出发,十一点到,也快到饭点就在山脚下吃了油泼面,买了几瓶水(后面发现是多余的,登山路边上都是卖水的,价格也还好,提前买的水还增加负重)。

山门

Read more »

这次来聊一聊项目开发中的一些阶段,以自身经历来讲述,仅供参考。

前期准备与初步开发

这一阶段持续三个月,主要用于各个模块的需求分析和初步实现。

需求分析

首先是需求分析,公司代理了挺多游戏,之前数据统计都是采用第三方统计平台,最近接到通知,说是其中一个平台不日将关闭这一业务。于是打算自建一个数据平台,来应对逐渐增加的游戏数据和客制化需求。

Read more »

近一年来购置了许多苹果设备,这次来写一写我正在使用的电子设备。

  • Nintendo Switch
  • MacBook Pro 2019
  • iPad 2018 & iPad Air 3
  • AirPods & AirPods Pro
  • iPhone 11
  • Apple Watch Series 5
  • HHKB Professional Classic & Apple TrackPad 2

Nintendo Switch

工作以后,有了自己的经济收入,想着添置一台游戏机犒劳下自己。先是在网上买了二手的 Ninetendo 3DS 和 Sony PSP-1000,想着先试试看任天堂和索尼这两家上面可以玩到的游戏,然后发现更喜欢任天堂的游戏风格,第一方的塞尔达、马里奥和星之卡比都很不错。

于是下单买了任天堂当前世代的 Switch 主机,前两个游戏就是马里奥奥德赛和塞尔达旷野之息,确实好玩,纯粹的乐趣,特别喜欢开放世界,马里奥奥德赛的箱庭世界也很不错,极低的死亡惩罚和多样的乐趣,很值得。

Read more »

近来重新打包 APK 时发现,会有 R.type.id 找不到的报错,花两天时间研究了下 R 文件与 aapt 工具并解决了问题,这里记录一下。

为了解答这些问题,我通过搜索引擎查看了 StackOverflow(问答),Android Developers(官方文档),GitHub(源码,有 android Git repositories - Git at Google 的镜像)。

几点疑惑

之前虽然也在用打包工具,但是这次遇到的问题确实没研究过,在研究过程中引申出以下这些问题:

  • R 文件究竟是什么?
  • 这个文件的内容是怎么生成的,又是怎么被用到的呢?
  • aapt1 aapt2 有什么区别?为什么改用 aapt2 编译时出错了?
  • apktool 是怎么使用 aapt2 的?可以参考它使用的参数来解决问题吗?
  • apktool d 会生成的 public.xml 究竟有什么用处?
  • AAR 格式有什么好处?可以防止资源冲突吗?
  • gradle android task 是怎么编译资源的?有源码可以参考吗?
  • apktool 中的 Framework Files 是什么?有什么用途?

通过 R 文件访问资源

Read more »

前段时间逛论坛看到有人在研究 nohup 这个命令,突然意识到自己没有研究过这个常用命令,这次整理下。

nohup 属于 coreutils

这里先贴上部分核心代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* nohup -- run a command immune to hangups, with output to a non-tty
...
*/

int
main (int argc, char **argv)
{
// 处理 stdout 和 stderr 的重定向
// ......

signal (SIGHUP, SIG_IGN);

char **cmd = argv + optind;
execvp (*cmd, cmd);

// ......
// 处理 返回值
}

可以看到核心代码还是很简洁的,忽略 SIGHUP 信号,执行 nohup 之后指定的命令,命令的 stdoutstderr 输出一般会被重定向至当前目录的 nohup.out 文件中。

Read more »

点击图片均可跳转到对应网站。

逻辑型 AI

将程序对这个世界的认知以“特定情况下必须做什么”,以及它的目标通过数理逻辑的语言表达出来。程序通过逻辑判断不同情况下哪些动作是利于其目标实现的。

搜索

在大量的可能性中检索,例如 国际象棋中棋子的走法 或者 理论验证程序的推断结果。实践中人们不断有新的发现,使得相关程序可以在各个领域更有效率地完成搜索这件事情。

Read more »

最近公司拓展了一些业务,事情多了起来。我所在的开发部门决定招人,老大让我去参与面试流程,问些技术问题。

面试流程简短一些,首先是HR那边收集投递的简历,通过邮件发送,我帮忙过一下简历,从中选择一些人约面试。

这里讲一下简历相关的事儿。

简历

无论公司规模大小,简历应该都是招聘的第一关。个人觉得用不用模板,其实影响不大,简历整体排版整洁,突出重点就可以了。

Read more »

生活

最近添置了一些家具,包括布衣柜,木书柜还有个小电锅。衣服,书籍都有了自己的专属地方~

准备了油盐,挂面,鸡蛋以及酱料,早上偶尔会自己煮面吃。

一月份新冠肺炎的疫情影响开始浮现,从一开始零星地有人戴口罩,到口罩断货,大家都开始戴起口罩,然后是武汉封城,这边的社区也开始封闭管理,设卡点检查体温。

我这边的话,二十多号就在广东老家了,生活基本稳定,没有太大影响。不过疫情带来的延迟复工,使得更多人更多地待在家里。组织篮球赛(都是家里人,知根知底的,并不是聚集,风险相对较小,这里声明一下QAQ),打牌和上山等各种活动都有。

Read more »

由于工作需要在接入第三方 SDK ,而一些第三方 SDK 没有提供 Unity 版本,就需要自己去包装一层需要调用的接口,之后就可以在 Unity 端统一接入,直接导出可用的对应平台的工程或程序包。
前几天开始封装 iOS 平台的 SDK,至此,已经接入过手机上主流的 Android 和 iOS 两个平台的SDK,这篇文章就是对之前开发插件的一个总结。

概述

Unity 端调用 Android 端的方法,可以使用 AndroidJavaClass, AndroidJavaObject 和 AndroidJavaProxy 这三个类,通过 JNI 对应了 Java 中的类,对象和接口。

Unity 端调用 iOS 端的方法,则相对容易一些,也就是 C# 和 Objective-C 两个语言相互交互,可以注意到这两个都是 C 系语言,所以实际上 Objective-C 写的本地插件会被编译成 DLL 来给 C# 调用,处理好原始类型和引用类型的相互转换就可以了。

而反过来,插件回调至 Unity 端则有两种方法:

Read more »

OWASP Top 10 Application Security Risks – 2017

部分个人觉得不太好翻译的内容保留英文原文

开放式 Web 应用安全项目, OWASP 风险评级:

评级角度 描述
Exploitability 漏洞是否容易使用
Weakness Prevalence 漏洞的流行程度
Weakness Detectability 漏洞是否容易被发现
Technical Impacts 漏洞的影响程度

A1:2017 注入

Read more »

职场

三月份开始参加工作,实习接近四个月,目前在新公司也有一个月了,这次来写一些相关的内容。

面试

到目前为止,其实只参加过三次面试,一次失败,两次成功。

失败的一次笔试

Read more »

小说 《暗夜行者》

于2014年4月23日首发自Minecraft中文论坛 创作版

001

2014-2-23

凯一同往常地准备出门探险,运气好的时候还能够找到一些裸露在外的矿物,卖掉这些就意味着他一个星期不用担心受饿。

Read more »

在某群看到有人提了一个时间戳与时区时间转换的问题,当时就看出他的计算方式有问题,但是对相关概念有些模糊,今天想起来就整理了一下这个问题。

加减时间戳

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Instant instantPlusEightHours = Instant.now().plus(8, ChronoUnit.HOURS);
Instant now = Instant.now();

System.out.println("UTC: " + now);
System.out.println("UTC+8: " + instantPlusEightHours);

System.out.println("对应上面UTC的时间戳: " + now.toEpochMilli());
System.out.println("系统时间戳: " + System.currentTimeMillis());
System.out.println("对应上面UTC+8的时间戳: " + instantPlusEightHours.toEpochMilli());

//Output:
//UTC: 2019-03-15T02:42:40.958Z
//UTC+8: 2019-03-15T10:42:40.953Z
//对应上面UTC的时间戳: 1552617760958
//系统时间戳: 1552617761041
//对应上面UTC+8的时间戳: 1552646560953

可以看出他想将时间戳转换为对应UTC+8时区的时间,但这里他犯了一个概念性的错误。

Unix时间戳是从UTC时间 1970年1月1日 00:00开始所经过的秒数,不考虑闰秒。
协调世界时(英语:Coordinated Universal Time,法语:Temps Universel Coordonné,简称UTC)是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。
协调世界时是世界上调节时钟和时间的主要时间标准。

Read more »