关于Shiny调试你应该知道的

Finding your bug is a process of confirming the many things that you believe are true — until you find one which is not true.

—Norm Matloff

第一次接触网页开发是两三年前的事,那时我曾经问过计划带我入门前端的前辈:入门前端的标准是什么。他当时用一种极平和的语气和我说:学会dubug。几年后的今天我即便也写过一点网页工具,但还是依然没能入门。反思一下:一是 JavaScript 学的不好,二就是不敢说自己有多少 debug 的能力。

遂放弃。

最近因为需要又要涉及一点网页工具开发,同时因为需求整体和 R 交互比较多于是决定用 R 的 Shiny 来搞一搞。

写了一个多星期我感觉 Shiny 确实解决了不熟悉前后端交互的人写网页的大多数问题,但如何 debug 的门槛还是摆在那里。比如前几天一个高手和我吐槽写 Shiny 时不知道改了什么突然不能正确运行了,更糟心的是还没有任何报错信息。当然,后来经过讨论发现其实并非没有报错信息,只是那时他没有找到而已。

这篇文章就结合最近学习的一点资料,大致聊聊在 Shiny 中 debug 的一些方法。

Shiny debug 主要有三个步骤,分别是调试(Debugging),追踪(Tracing)和错误处理(Error handling)

  • Debugging: 所谓的调试就是猜,然后在你认为可能有错误的地方设置一个断点,再执行接下来每个语句的时候就都可以检查程序当时所在的状态。
  • Tracing:可以在运行程序的时候收集程序运行产生的信息而无需暂停程序,在诊断系统性问题时因为我们无法频繁的中断使用这一方式就比较合适。
  • Error handling: 在客户端和服务器端找到错误的来源并确定原因。

KaTeX常用公式整理

前几天写了一篇博客 记录了在博客中插入数学公式的心路历程,折腾半天最后用的插件支持的JavaScript库是$\KaTeX$。关于这个库的信息,可以查看其GitHub主页,开发者是khan academy,就是大家熟知的可汗学院。在主页上他们直接对标MathJax,复杂公式的渲染速度直接把对方秒成渣渣,另外,KaTeX的排版布局完全基于标准的Donald Knuth’s TeX

这里简要记录一些平时使用比较多的语法和公式,KaTeX支持的全部公式,可以在其官网查看。

vs code 常用快捷键

挺早之前写过一个常用快捷键的集合备忘录,里面包括win10,印象笔记,Google浏览器,XShell以及sublime text3。如今主力编辑器已经从sublime text3 换到了vs code。那就再整理一份vs code 常用快捷键,希望尽快用熟练提高效率。

首先摆出原件。

在博客中展示数学公式

最近写的一系列文章中需要时不时插入一些数学公式,也就不得不接触一些LaTeX相关内容,另外由于要发到博客上,还需要让博客能够正确解析LaTeX语法。

Hexo 插入数学公式起步

Hexo 博客框架默然使用的Markdown解析插件是hexo-renderer-marked, 我同时使用了Next主题。

首先要说明的是,Hexo 默认Markdown是不支持LaTeX语法的,但是,Next的主题默认已经支持MathJax,也就是说不需要再在网页的header中引入如下代码:

<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>

只需要在主题下的配置文件_config.yml中启用相关设置即可

vs code 使用初体验

什么是vs code

巨硬主导的开源文本编辑器项目,如果你不知道它,一定也听说过sublime 或者atom ,最起码也听说过Notepad++。

为什么要用 vs 上code

用了两年的sublime text 3, 忘了是谁在我一开始用的时候给我提供了一个注册码,以至于我都忘了这货不是一个开源软件。直到几天前突然提示我更新,要知道sublime text 3 的beta版已经持续了好几年。我一激动就点了更新然后……就一直提醒我要不要买。问了问身边的其他人也早已经慢慢从sublime转向了其他的阵营,再加上sublime用的却是不太顺心,我也就有了换一个编辑器的想法。

目前大家用的最多的三款编辑器分别是sublime、atom和vs code。于是我用两天时间重点体验了atom 和 vscode, 进行了几项比较之后决定投入vs code 的怀抱。

Docker 学习笔记 I

越来越无法忍受目前用的几台服务器各种软件配置都不一致,无法做到随时无障碍切换,于是决定学点Docker。

什么是docker

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护

  • 传统虚拟化

img

虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程

  • docker

img

容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟

不可不知的快捷键

HHKB Pro2 键盘(来自官网)

整理的原因

提高键盘上的工作效率

  • 一个入门级别的机械键盘

  • 习惯使用常用工具的各种快捷键

挽救小拇指不变型

  • 更换Capslock和Control的映射关系

  • 更换原因看完下面的快捷键设置就晓得

如何使用Google

写在前面

在上一篇文章 关于Markdown,你应该知道的 最后,我写了这么一句话

如果你决定开始用一个东西,你还会担心学不会么?

从我个人目前有限的经历来看,我想学的东西还没有学不会的。学不会的要么是不想学要么是用不到。

写文章至今,不断有人问我如何学一个东西。比如问我如何备考,如何学英语;上了研究生,有人问我如何上手做实验,如何入门生信。

我的回答:你只要想学,只要用起来,方法自然就有了,因为自己会去找会摸索。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×