关于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: 在客户端和服务器端找到错误的来源并确定原因。

Coder:进击的服务器Web版VSCode

自从用上 VS Code 之后,断断续续写过几篇文章。比如:

在这个过程中,各种牛X的插件让我感觉VS Code就要统治世界了。比如PDF阅读器插件,Excel查看插件,有了这些东西在一个工作目录下基本不用开其它的软件,直接在 VS Code 中全部搞定。除了这些还有不少「不正经」插件,比如提醒 番剧更新的插件播放音乐的插件 还有 看电子书的插件。真是神奇:)

同时我也写过怎么让本地PC和服务器可以更顺畅链接的问题,在这个文章里没有提到 VS Code,但是用它提供的 terminal 可以替代 Xshell。

最近发现了一个开源软件真的是让本地PC和服务器可以更顺畅链接而且非常之简单,可以说从某个层面基本解决了数据分析环境的问题。无论你使用 PC 还是用 mac,无论用笔记本还是平板,只要有网能打开浏览器的设备都可以愉快地在服务器上写代码做分析。之所以能愉快地写就是因为它的使用体验和VS Code 完全相同。

linux 去除文本中的空行

  • sed
  • grep
  • tr
  • awk

服务器和 Windows 本地电脑无缝衔接

服务器和Windows本地电脑经常需要反复上传下载文件,对于初级用户来说通常会建议其下载类似于winscp 之类的软件。但是这类高频操作有没有无需借助其它软件更方便的方法呢?

本教程使用前提:

  1. Windows 系统为win10 且已经可以正常使用 Ubuntu 子系统
  2. 安装有 Xshell 这类可以用来链接服务器的工具
  3. 最好安装有 vs code 本地编辑器
  4. 所有测试是在内网之间进行且本地电脑为网线连接有固定IP地址

IGV 哐当就不能用了,我的 debug 思路

不知道是哪一次更新,不知道是因为更新了什么,PC 上的 IGV 突然就不能用了。不能用了,怎么办。文章记录了我的debug过程以及一点思考。

最近一个多月有一件事情一直萦绕在心头,今天算是初步解决了,记录一下。

关于文档,还没人告诉你的那点事

学习一个新的工具或者软件,首选方法是阅读开发者写的软件文档,因为TA最清楚怎么回事;其次是阅读最新的英文相关使用讨论或者介绍,因为中文的很多资料往往滞后;再次才是阅读中文相关介绍,而且一定要谨慎参考认真判断。评判一个工具好坏的标准之一也是其文档是否写的足够「好」。

因此无论是开发者还是用户,文档都至关重要。那到底好的文档需要包含哪些内容或者应该如何写出一个尽量好的文档呢?最近看到一篇英文博客:What nobody tells you about documentation ,以下为尽量保留作者原意的不完全翻译版本供你参考。

VS Code 系列 1:提升 R 和 Python 使用体验

已经攒了一系列 VS Code 写作计划和素材,之前也发过几篇基础知识的思维导图(见文末)。不过一直不知道该从哪里开始第一篇文章,如果推荐给身边的人,他们可能最关心的是用 VS Code 日常写简单的 R 和 Python 代码体验如何。那就从这里开始吧。

本文以 PC 作为安装配置示例,Mac 基本类似且部分内容体验可能更优。

为什么是 VS Code

既然是系列文章的开篇,姑且对主题按下不表先介绍一下 VS Code。

VS Code 的全称是 Visual Studio Code,官方给他的定义是官方定义是一个免费的、开源的跨平台编辑器。相对于各种 IDE 而言,编辑器则相对更轻量,更侧重于文件或者文件夹而非宏大的项目。

VS Code 学习记 1-4

使用 VS Code作为自己的主力编辑器已经有一年的时间,但是总感觉没有很系统的了解过日常的这个工具,也就不知道自己的使用是否高效。最近再跟极客时间上的一个VS Code付费连载,那就顺便把它好好安排一下,记录一些学习笔记。学习记录将主要分为两种形式,偏文字的部分会整理为思维导图,偏代码的部分会整理为文章。

R安装升级后的若干规定动作

两个地址

R cran 镜像地址 https://cran.r-project.org/mirrors.html

bioconductor mirror 地址 https://www.bioconductor.org/about/mirrors/

第一步:给R包一个家

通过 Renviron 文件为R自身设置一些环境变量,仅对R有效。

file.edit(‘~/.Renviron’) 打开文件

R_LIBS_USER="E:/Rlib"
# 指定R的附加包安装目录

第二步:给R包指两条路

.Rprofile文件在R启动时会被首先执行。

file.edit(‘~/.Rprofile’) 打开文件

在文件末尾添加两行

awk入门与进阶part2—模式动作输出与输入

模式

BEGIN END

当 awk 从输入读取数据之前,首先执行 BEGIN 的语句;当所有输入数据读取完毕,最后执行 END 的语句。BEGIN 与 END 提供控制初始化与结尾的方式。FS 指定输入行分隔符;OFS 指定输出行分隔符。

任意一个表达式都可以作为任意一个运算符的操作数。如果一个表达式是数值形式而运算符要求字符串值,数值会自动转换成字符串;当运算符要求一个数值时字符串会自动转换成数值。

在一个关系比较中,如果两个操作数都是数值,关系比较将会按照数值比较进行;否则的话,数值操作数会被转换成字符串,再将操作数按字符串的形式进行比较。

Your browser is out-of-date!

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

×