给初学编程的朋友一些建议

今天是中秋节假期的最后一天,一个人在家闲来无事,因为最近在录制一些关于学习和技术的视频教程,所以想和大家简单聊一下关于编程习惯和学习方法的观点和看法送给初学者朋友。这个时代的知识量是巨大的,不说别的,就单单是我从事的 Android 开发工作来说知识量比我刚开始学习 Android 的时候就有了一个暴增,知识暴增换来的是一种细分和选择,划分的领域更加细致更加深入,选择最合适最有效率的工具我们就可以达到事半功倍。知识的更迭需要我们以正确的方式去面对,而习惯和学习方法无疑是应对过程中的重点。

编码习惯

习惯这个东西从小家长和老师就一直在给我们强调,而我们作为一个程序员最重要的东西我觉得就是编码习惯,它是你是否可以达到优秀的基础。生活中很多时候我们一开始忽视的东西到最后却成为我们苦苦追寻的真理,因为这些东西在一开始不能得到很直观的收获,反而是一些比较表面的东西能引起人们的注意。计算机编程说通俗点就是把人的思维用代码表达出来(高级语言均如此),所以说它和写作和绘画一样也是一种表达方式,而这种表达比写作和绘画更复杂一些,因为其中涉及到了协作和沟通问题,越是大型的项目沟通成本会成倍的增加。因此,我们便想到了用一些工具来减少不必要的沟通成本,例如 Git、产品文档、原型图、流程图等。但是这些方法也只是一个规范上的简单约束和思维是的引导而已,我们其实更应该重视创作本身的沟通问题,对于我们的代码而言就是结构和代码规范,这些东西才是真正的沟通根源。

阅读更多

想继续使用Valine或LeanClound存储的快绑定域名

在开始前先做一个简单科普,很多朋友在使用评论功能的时候可能留意到了 Valine 这个插件,它是一个很好用的评论插件,但是可能有一部分人并不知道这个插件实现评论的原理,其实它的评论存储服务是依赖于 LeanClound 的,这个 LeanClound 实际上是一个云服务器提供商,只不过它比较人道的是提供了一个开发版环境(虽然资源很小,云引擎只有 0.5CPU 256MB,但是数据库却是够用的),我们实际上是使用了它提供的数据存储服务,而且 LeanClound 为我们提供了一套 JavaScript SDK 来操作数据库,也就是我们要引入的一个 js 文件:

<script src="//cdn.jsdelivr.net/npm/leancloud-storage@3.15.0/dist/av-min.js"></script>

实际上 Valine 就是基于这套 api 来实现数据的插入和查询,然后展现到我们的博客,这样我们就很透彻的理解了它们之间的关系了,接下来进入我们今天的正题。

阅读更多

Android入门到进阶视频教程(17~20)

Android 视频教程连载中...

从今天开始我们来研究一下 Android 中的本地持久化数据,在 Android 中本地持久化的主要方式有如下三种:

  • SharePreference : key-value 形式,主用于数据较少的配置信息的存储。
  • SQLite :一些比较复杂的数据结构,特别适合对象存储。
  • File Save : 比较大的文件(例如日志,图片缓存,apk包等)或者某些特殊的配置文件。

本次视频的所有主题都有对应的示例代码,可以在这里下载: https://github.com/lxqxsyu/InnerShareCode2

第十七讲:SharePreference【上】

SharePreference 是我们平时开发过程中最常用的一种持久化存储方式,它是一种键值对的存储方式(key-value),可以存储基本数据类型。支持的数据类型有:String, boolean, float, int, long, Set<String>.

阅读更多

Android入门到进阶视频教程(13~16)

Android 视频教程连载中...

在前面的视频中我们对 Android 的项目界面部分有了一个基础认识并且可以实现一些相对简单的界面了,接下来我们先来看看 Gradle 项目构建过程,随后我特意准备了两节关于 Java 扫盲的课程,如果你对 Java 基础不是很熟悉或者有些生疏可以观看此视频,帮助你对后面课程的理解。

第十三讲:项目构建过程概述

我们前面编写的 Android 源码要执行打包并安装到手机(或模拟器)上到底经历了怎样的一个过程,看完这个视频你就会明白。

阅读更多

如何搭建你自己的博客

因为本站来来回回折腾了好多次,所以也积攒了不少网站建设方面的文章,这些文章都是从实践入手进行讲解的,看到有这么多小伙伴都在询问我如何实现这个,如何实现那个的问题,因此我特意将网站建设归纳到一个版块,希望这个版块可以解决你的建站问题,同时我也在努力完善这个版块的内容。

静态博客生成

目前主流的静态博客生成器有三个: jekyll, hexo, hugo.

静态博客生成器是一种将 markdown 格式的文档生成静态网站页面文件的工具,我们通过几个简单的命令就可以实现个人博客的搭建。上面的 3 中博客生成器我没有用过 jekyll 而且今后也不打算用,所以接下来我们就围绕 hexohugo 的博客搭建来展开,而且如果你具有前端编程能力我推荐你一开始就是用 hugo 来搭建自己的博客,如果你不熟悉前端知识建议你使用 hexo 实现,因为 hexo 的优势就是有很多现成的插件, 而且可选的主题样式比较多。 我现在为什么从 hexo 更换到 hugo 是因为生成静态页面的速度考虑,可以参考我的博文 《我为什么要从 Hexo 更换到 Hugo》

阅读更多

Android入门到进阶视频教程(9~12)

Android 视频教程连载中...

今天开放的四节 Android 视频教程都是关于界面布局相关的,基于这些基础布局知识你可以完成很多甚至是复杂的界面样式。

第九讲:线性布局和相对布局

还是那个大家常说的 2,8 定律,线性布局和相对布局可能是你以后开发中使用率最高的布局(暂且不说约束布局),所以说不要看它们两个简单,它们是开启布局大门的重要环节,掌握它并熟练应用它。

阅读更多

使用 Hugo + Algolia 进行静态站点搜索 [译]

本文翻译自:Static site search with Hugo + Algolia 原作者:Chris Macrae

我们将介绍如何使用搜索服务提供商 Algolia 为你的 Hugo 网站设置快如闪电的搜索服务,Algolia 自称它们是 “建立搜索业务的最可靠平台”,我们将使用 Hugo 的自定义输出格式为我们的静态站点生成 JSON 搜索索引。然后我们将在 Algolia 上进行必要的配置,并使用 npmatomic-algolia 将新索引发送给 Algolia。最后使用 Serverless 简化更新搜索索引。

为什么选择 Algolia

有很多静态网站的搜索解决方案。您可以使用前端 Javascript 和 Lunr.jsFuse.js 等工具滚动自己的搜索,使用 ElasticSearchAmazon CloudSearch 建立强大的开源搜索技术,或者像 Algolia 这样的 SaaS 解决方案。所以问题是,是什么让 Algolia 如此出色?答案归结为两个因素:

阅读更多

百度站内搜索的坑

使用 Hugo 之后默认支持的是 Google 站内搜索,但是考虑到国内很多用户无法访问 Google 计划添加百度的站内搜索功能,但是遇到了一些坑,幸运的是最后还是巧妙的解决了问题。

生成百度站内搜索代码

进入官网:https://zn.baidu.com/cse/home/index?back=1&sid=16079160899252056172

新增一个站内搜索框:

百度站内搜索创建

创建过程中要注意了,这里有很多样式可选,当然你也可以不使用官方样式,而是使用你自己的搜索框样式:

创建自有样式搜索

如上图建议你点击 查看帮助 阅读一下内容,然后我们给博客的搜索框 <input> 添加 id="bdcsMain",我的搜索代码如下:

阅读更多

Android入门到进阶视频教程(5~8)

Android 视频教程连载中...

今天开放了四节免费课程,关注此博客,后续会不定期开放新的免费课程,有任何疑问和问题可以在此留言。

第五讲:编辑界面样式和Android尺寸单位

Android 中的单位尺寸是一个比较重要的知识点,理解屏幕分辨率、屏幕密度 以及 和尺寸之间的换算关系很重要。

阅读更多

Hugo 配置文件详解

一般在我们的 Hugo 中的主题目录下(themes\icarus\)会有一个 theme.toml 或者 config.yamltheme.json 配置文件,但是我却喜欢在工程根目录下配置 config.toml 文件,这个文件的配置会对整个工程有效。这个配置文件是一个整站的配置。它给 Hugo 提供了如何构建站点的方式,比如全局的参数和菜单。接下来我们就对 config.toml 文件配置进行详解。

baseurl:配置你的服务器域名地址

baseurl = "https://dp2px.com/"

theme:这个配置很关键,如果你的 themes 目录下有多个主题,这里配置你要使用的主题

theme = "MyIcarus"

languageCode:ISO 639-1语言代码, 你的语言环境, 例如中:zh-cn

languageCode = "zh-cn"

title:你的网站标题(这个变量可以在页面模板中使用)

title = "DP2PX.COM"

阅读更多

Python脚本实现的百度熊掌号链接提交

我们为了提高网站的收录量,最好通过API主动提交给搜索引擎,之前在 Hexo 中有比较好用的 hexo-baidu-url-submit 插件,而使用 hugo 后没找到比较合适方便的,于是便想到使用 python 提交到百度服务器,根据官方文档和示例,使用 http.client 实现的 POST 提交。

http.client 模块定义实现了 HTTP 和 HTTPS 协议的客户端类,API 如下:

class http.client.HTTPConnection(host, port=None, [timeout, ]source_address=None, blocksize=8192)

HTTPConnection 的实例代表与 HTTP 的一个连接事务。 它的实例化应当传入一个主机和可选的端口号。 如果没有传入端口号,如果主机字符串的形式为 主机:端口 则会从中提取端口,否则将使用默认的 HTTP 端口(80)。 如果给出了可选的 timeout 参数,则阻塞操作(例如连接尝试)将在指定的秒数之后超时(如果未给出,则使用全局默认超时设置)。 可选的 source_address 参数可以为一个 (主机, 端口) 元组,用作进行 HTTP 连接的源地址。 可选的 blocksize 参数可以字节为单位设置缓冲区的大小,用来发送文件类消息体。

举个例子,以下调用都是创建连接到同一主机和端口的服务器的实例:

>>> h1 = http.client.HTTPConnection('www.python.org')
>>> h2 = http.client.HTTPConnection('www.python.org:80')
>>> h3 = http.client.HTTPConnection('www.python.org', 80)
>>> h4 = http.client.HTTPConnection('www.python.org', 80, timeout=10)

此模块中定义的常量为:

http.client.HTTP_PORT HTTP 协议默认的端口号 (总是 80)。

http.client.HTTPS_PORT HTTPS 协议默认的端口号 (总是 443)。

阅读更多

Android 音频播放器应用开发

前言

音频播放和视频播放还是有很多本质的区别的,例如视频播放需要和对应的界面(Activity 或者 Fragment)绑定,因为它需要显示内容,而音频播放不需要显示内容,所以通常和对应的 Service 绑定。但是它们也有一些共同的行为抽象和播放过程抽象,也就是说有共同的控制逻辑。

音视频控制逻辑

MediaController(媒体控制器)负责隔离界面和媒体播放器,来实现控制隔离。它只会对 UI 暴露部分的控制接口 API 例如播放、暂停等。当 Media Session(媒体会话)的状态发送变化的时候也会通过回调的方式传递到媒体控制器。而媒体会话则负责维护具体的播放逻辑,例如播放,暂停等,它负责和具体的 Player(播放器)之间进行通信。

阅读更多

清除Chrome浏览器Favicon图标的方法

一般当我们遇到浏览器缓存的时候可以使用浏览器的清除缓存功能,但是很多时候你会发现修改了 favicon 后怎么清除都不起作用,这个时候就需要去浏览器对应的缓存目录删除 Favicon 文件。

在开始下面操作之前,首先你要确保你的 favicon.ico 文件的路径是可以访问的,而且配置正确,例如:

<link rel=icon href="https://<youraddress>/favicon.ico">

打开文件夹:

C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default

阅读更多

我为什么要从 Hexo 更换到 Hugo

前言

最近比较烦的是我的博客本以为很完美了,不用再折腾了,没想到 Hexo 有一个很大的弊端。我忍痛割爱的计划将 Hexo 引擎更换为基于 Go 语言的 Hugo 模板引擎。Hexo 优点很多,缺点就是生成静态文件 (hexo g) 速度真的是太慢了。Hexo 是基于 Nodejs 的,有很多插件,而 Hugo 没有插件,使用自带的 Go html 模板实现, 这个速度真的是牛,基本上在 Hexo 上面十几分钟,使用 Hugo 只需要几秒钟。

在更换过程中我想保留我原来博客的主题风格,所以很多东西都是逐渐仿照实现过去的,但是最让人头疼的并不是去实现这些功能,而是迁移过程中为了防止路径不同(大小写)和 keywords description 的不同导致的 SEO 问题。 其实目前我已经完全实现模板复制,但是我还是计划花一两个月慢慢迁移过去,这样对本站的影响可以尽量做到最小。

阅读更多