Flutter 和日语
这篇博客写于 2023 年底。
这篇博客写于 2023 年底。
让知识更有趣
目前,我已经开发了6 个小程序产品,还有几个正在开发中。
最低成本部署静态网站
自律工具箱是我开发的一个小产品,主要来学习如何保持自律。
Minimal Mistakes 提供了很多布局文件,为了更好地使用它们,这篇文章简单分析了几个比较常见的布局文件源码。
minima 是 Jekyll 的默认主题,简洁大方,https://liangfei.me 用的就是它。
虽然我使用 Jekyll 已经有一段时间了,但一直没注意到 Minimal Mistakes 这个主题的存在。
好长一段时间没写前端,很多知识点都忘掉了,为了防止遗忘,趁着项目刚结束,赶紧总结一下。
我在深入学习 Sass 时了解到 Gulp 是一个 task runner,随即产生一个疑问:Webpack 是什么呢,它和 Gulp 的区别是什么?
要彻底搞清楚 npm、npx、yarn 的区别,先记住下面两条:
0x00 root 身份 ssh 登录到远程机器
https://zhuanlan.zhihu.com/p/95300672
Anko 是一个完全基于 Kotlin 设计的 Android 三方库,名字来自于 Android Kotlin 这两个单词的前两个字母。Anko 试图建立一套新的 Android 开发范式, 虽然不会成为主流,但是它的设计思想值得我们借鉴。
Google I/0 2018 马上就要开始了,美国加利福尼亚州山景城时间 5 月 8 日上午 10 点,对应北京时间是 5 月 9 日凌晨 1 点。
使用场景 一个“朴素”的 url 完全可以用一个字符串来表示(例如 "https://www.youzan.com"),我们可以利用 Kotlin 语言本身的特性为 String 类型添加一个扩展函数 httpGet(),然后借此发起 http 请求:
Fuel 是一个用 Kotlin 写的网络库,与 OkHttp 相比较,它的代码结构比较简单,但是它的巧妙之处在于充分利用了 Kotlin 的语言特性,所以代码看上去干净利落。
原文地址:https://medium.com/@elye.project/mastering-kotlin-standard-functions-run-with-let-also-and-apply-9cd334b0ef84
昨天公众号后台收到一位小伙伴的留言询问,他对于 Kotlin 为何没有 Java 的 final 关键字感到困惑,这应该是很多初学者都会遇到的问题,所以我就写了这篇博文从更底层的角度来解析 Kotlin 声明变量时用到的三个关键字:var、val 和 const。
Sass 和 Less 是两种 CSS 预处理器,扩展了 CSS 语法,目的都是为了让 CSS 更容易维护。
HTTPS 协议栈与 HTTP 的唯一区别在于多了一个安全层(Security Layer)—— TLS/SSL,SSL 是最早的安全层协议,TLS 由 SSL 发展而来,所以下面我们统称 TLS。
HTML的“正常”布局称为 document flow,在这种 normal flow 下,元素按照从左到右(inline block)、从上到下(block)进行排列。
BACKGROUND Multiple overlapping backgrounds on one element Multiple background layers stack top to bottom, in the order declared. The color layer is alw...
小程序的核心是一个响应式的数据绑定系统,逻辑上分为视图层和逻辑层。这两层始终保持同步,只要在逻辑层修改数据,视图层就会相应的更新。
MockitoAnnotations负责初始化@Mock、@Spy、@Captor、@InjectMocks等注解。
MockitoSession表示一次mock会话,这个会话通常是一次测试方法的执行。
SalesforceAnalytics 可分为两个部分:
有赞自有 APP(微商城、微小店)的 OAuth2 类型是 Resource Owner Password Credentials。
每次插桩(Stubbing)都会产生一个 Invocation,本篇从 Invocation 着手,重点分析插桩的原理。
Mockito 通过插件形式对外提供了扩展能力,本篇主要分析其插件加载原理。
Mockito 是一个用于 Java 单测的 Mock 框架,除了 JUnit 之外,它还可以用于其他单测框架(例如:TestNG)。Mockito 可以改变一个类或者对象的行为,能够让我们更加专注地去测试代码逻辑,省去了构造数据所花费的努力。
“强制升级”会中断用户操作,阻碍正常使用,看似是一个不光彩的行为,但是智者千虑必有一失,我们无法保证 App 的正确性,在某些紧急情况下,强制升级还是非常必要的,而且接入的时间越早越好。
春节假期在家看了两本关于 Web 架构方面的书,虽然有很多地方没看懂,有的地方似懂非懂,但是俗话说,他山之石、可以攻玉,知识是相通的,试着总结一下对 APP 开发的一些启示。
数字摘要 摘要算法 MD5 / 128 bits / Message Digest Algorithm 5 SHA / 160 bits / Secure Hash Algorithm
蚂蚁积分是一个数据产品,这个简单的积分体现的是风控和信用,分数越高表明放贷的风险越小、履约的概率越大,而积分背后的风控体系和信用体系都是来自数据的采集和分析,所以数据是最重要的。
本着简单易用的原则,参考android-resource-remover 写了一个删除无用资源的 Gradle 插件 - clean-unused-resources-gradle-plugin,结果微博发出来不到10分钟,陈启超就告诉我 AS2.0+ 已经提供了此功能。天哪,为了纪念这个短命无用的轮子,只好写篇...
今天又遇到一个比较难搞的问题,记一下流水账。
通过 Retrofit + RxAndroid 实践总结,我们已经了解到了 Retrofit 的基本用法,为了知其所以然,我们以图解加源码的方式从 Service Method 入手,逐步拨开 Retrofit 的神秘面纱。
在接入 Retrofit + RxAndroid 之前,项目代码中主要存在如下问题:
在 Android Gradle Build System 诞生之前,PackageName 就是 App 的进程 id。
引入一个三方包之后导致 App 主题失效,定位了一个下午,做个记录。
JDK 中除了默认的 Strong Reference 之外,还有三个其他的 Reference:
预测一下 Google IO 2016
Android Studio 和 Android Gradle Plugin 可以让我们脱离 android.jar 直接在 development machine 上执行单元测试。
RichEditor 是一个继承自 WebView 的自定义 view。
分支 Github的个人帐户默认渲染master分支,只有org帐户才会渲染gh-pages分支。 个人帐户的master分支是hexo generate之后的文件。
synchronized 的实现方式
前几天微博上被一个很优秀的 Android 开源组件刷屏了 - ExplosionField,效果非常酷炫,有点类似 MIUI 卸载 APP 时的动画,先来感受一下。
Git Flow 是 Git 一个扩展,基于 Vincent Driessen 提出的 A successful Git branching model。
一个月之前认为不可能做到的事情,今天做到了,很高兴,深夜来篇总结,梳理一下。
Android的碎片化已经被喷了好多年,随着国内手机厂商的崛起,碎片化也越来越严重,根据OpenSignal的最新调查,2014年市面上有18796种不同的Android设备,作为开发者,一个无法回避的难题就是需要适配各种各样奇奇怪怪的机型。
因项目需要,分析了一下 Facebook 的开源项目 - Device Year Class。
从接触编程到现在,除了搞过几天JQuery,几乎没怎么写过Javascript,刚刚看了两篇介绍 ECMAScript6 的文章,突然觉得没写过JS也没什么好遗憾的。
这几天看到一篇新闻 - 白兼容了?Google 正在为 Android 准备一个去 Java 化的 Dart 应用运行框架,对与新闻的标题和内容无力吐槽,不做评论。但是Google推出 sky 似乎证明了native的开发方式越来越向web方式靠近的趋势,最近比较火的要数 react-native 了,他们的原理...
最近一直在看 Java 虚拟机规范,发现直接分析 bytecode 更能加深对 Java 语言的理解。
先来看一个问题:
定义一个内部类时,这个内部类会有一个隐式引用 (implicit reference) 指向外部类的实例。例如下面的代码:
我们经常会在一个类中定义一个内部类 (inner class),这个内部类可以继承也可以实现接口,因为有一个隐式的引用 (implicit reference) 指向外部类 (outer class),所以我们可以直接访问并操作外部类,因此可以认为内部类是外部类的一个窗口。