摘要:互联网在全球的普及率与日俱增。与此同时,Web浏览器在用户体验方面也做得越来越好,除了运行速度比以前更快,还包括在操作系统级别上提供的DNS缓存。不过,当不期望的数据被缓存时,这也会带来一些额外的问题。这种情况下,我们可以通过清除缓存并刷新页面来解决。 Google Chrome浏览器允许你通过三种 阅读全文
posted @ 2020-07-03 21:35 Jaxu 阅读(191) 评论(0) 推荐(0) 编辑
摘要:上一篇:Theia APIs——事件 通过JSON-PRC进行通信 在本节中,我将讲解如何创建后端服务并通过JSON-PRC来连接它。 我将使用debug logging system作为例子来进行讲解。 概述 本示例将用express框架创建一个服务,然后通过websocket连接该服务。 注册服 阅读全文
posted @ 2020-01-11 15:32 Jaxu 阅读(531) 评论(0) 推荐(0) 编辑
摘要:上一篇:Theia APIs——Preferences 事件 Theia中的事件或许会让你感到困惑,希望本节能阐述清楚。 来看下面的代码: (来自logger-watcher.ts) @injectable() export class LoggerWatcher { getLoggerClient 阅读全文
posted @ 2020-01-10 16:36 Jaxu 阅读(264) 评论(0) 推荐(0) 编辑
摘要:上一篇:Theia APIs——命令和快捷键 Preferences Theia有一个preference service,模块可以通过它来获取preference的值,提供默认的preferences以及监听preference的更改。 Preferences的内容可以保存在workspace根目 阅读全文
posted @ 2020-01-09 17:06 Jaxu 阅读(260) 评论(0) 推荐(0) 编辑
摘要:上一篇:使用Theia——创建语言支持 命令和快捷键 Theia可以通过多种不同的方式进行扩展。命令允许packages提供可以被其它包调用的唯一命令,还可以向这些命令添加快捷键和上下文,使得它们只能在某些特定的条件下被调用(如窗口获取焦点、当前选项等)。 在Theia中添加命令 要将命令添加到Th 阅读全文
posted @ 2020-01-08 13:23 Jaxu 阅读(348) 评论(0) 推荐(0) 编辑
摘要:上一篇:使用Theia——创建插件 Theia——添加语言支持 Theia中TextMate的支持 使用TextMate语法可以为大部分源文件提供精准的着色修饰,虽然这只是在语法级别上(没有语言本身的深度解析)。语义着色可以由语言服务器提供。 TextMate语法主要有两种格式:.plist和.tm 阅读全文
posted @ 2020-01-07 09:10 Jaxu 阅读(384) 评论(0) 推荐(0) 编辑
摘要:上一篇:使用Theia——创建扩展包 创建Theia插件 下面我们来看看如何创建Theia插件。作为示例,我们将注册一个Hello World命令,该命令显示一个“Hello World”通知。本文将指导你完成所有必要的步骤。 Theia的架构 插件与扩展包 Theia是一个可扩展的IDE。你可能听 阅读全文
posted @ 2020-01-06 22:38 Jaxu 阅读(854) 评论(0) 推荐(1) 编辑
摘要:上一篇:使用Theia——构建你自己的IDE 创建Theia扩展包 本例中,我们将添加一个菜单项“Say hello”用来显示一个通知“Hello world!”。本文将指导你完成所有必要的步骤。 Theia的架构 Theia应用程序由所谓的扩展包(extensions)构成。一个扩展包提供一组特定 阅读全文
posted @ 2020-01-04 23:19 Jaxu 阅读(603) 评论(0) 推荐(0) 编辑
摘要:上一篇:Theia架构 构建你自己的IDE 本指南将教你如何构建你自己的Theia应用。 必要条件 你需要安装node 10版本(译者:事实上最新的node稳定版即可): 以及yarn: 还需要确保已安装python 2.x,可通过python --version来检查。 安装 首先请创建一个空目录 阅读全文
posted @ 2020-01-04 10:29 Jaxu 阅读(3058) 评论(0) 推荐(1) 编辑
摘要:上一篇:Theia——云端和桌面版的IDE 架构概述 本节描述了Theia的整体架构。 Theia被设计为一个可以在本地运行的桌面应用程序,也可以在浏览器和远程服务器之间工作。为了支持这两种工作方式,Theia运行在两个独立的进程中,它们被称之为前端和后端,相互之间通过WebSockets上的JSO 阅读全文
posted @ 2020-01-03 23:13 Jaxu 阅读(869) 评论(0) 推荐(0) 编辑
摘要:Theia是一个利用最新的web技术开发的支持云端和桌面运行的类似IDE的产品,它是一个可扩展的平台,并且全面支持多语言。 目标 建立一个可搭建类似IDE产品的平台 为终端用户提供完整的多语言IDE(不仅仅是智能编辑器) 同时支持云端IDE和桌面版IDE 通过language和debug serve 阅读全文
posted @ 2020-01-03 22:34 Jaxu 阅读(859) 评论(0) 推荐(0) 编辑
摘要:我们在使用git初始化一个项目时,尤其是通过git submodule update --init --remote初始化子模块时,可能会遇到下面这个错误: 这是由于当你通过HTTPS访问Git远程仓库的时候,如果服务器上的SSL证书未经过第三方机构认证,git就会报错。原因是因为未知的没有签署过的 阅读全文
posted @ 2019-12-12 10:48 Jaxu 阅读(7519) 评论(0) 推荐(0) 编辑
摘要:Node.js的crypto模块提供了一组包括对OpenSSL的哈希、HMAC、加密、解密、签名,以及验证等一整套功能的封装。具体的使用方法可以参考这篇文章中的描述:node.js_crypto模块。 本文重点介绍在使用createCipheriv方法时所遇到的坑。对应的解密算法createDeci 阅读全文
posted @ 2019-10-10 17:15 Jaxu 阅读(2541) 评论(0) 推荐(0) 编辑
摘要:动态规划 动态规划(Dynamic Programming,DP)是一种将复杂问题分解成更小的子问题来解决的优化算法。下面有一些用动态规划来解决实际问题的算法: 最少硬币找零 给定一组硬币的面额,以及要找零的钱数,计算出符合找零钱数的最少硬币数量。例如,美国硬币面额有1、5、10、25这四种面额,如 阅读全文
posted @ 2019-09-03 14:18 Jaxu 阅读(1010) 评论(2) 推荐(2) 编辑
摘要:在计算机编程中,排序算法是最常用的算法之一,本文介绍了几种常见的排序算法以及它们之间的差异和复杂度。 冒泡排序 冒泡排序应该是最简单的排序算法了,在所有讲解计算机编程和数据结构的课程中,无一例外都会拿冒泡排序作为开篇来讲解排序的原理。冒泡排序理解起来也很容易,就是两个嵌套循环遍历数组,对数组中的元素 阅读全文
posted @ 2019-08-23 17:18 Jaxu 阅读(541) 评论(1) 推荐(0) 编辑
摘要:之前在看《从一到无穷大:科学中的事实和胰测》(乔治·伽莫夫著)这本书的时候,其中有个章节是讲时间和空间关系的,里面讲到对于光速的测定。下面是原书中人们对于如何测定光速的描述: 第一次测定光速的尝试是著名的意大利物理学家伽利略(Galileo Galilei)在 17 世纪进行的。他和他的助手在一个黑 阅读全文
posted @ 2019-08-16 15:59 Jaxu 阅读(4046) 评论(0) 推荐(0) 编辑
摘要:提高网站性能最简单的方式之一是合并压缩JavaScript和CSS文件。但是当你需要调试这些压缩文件中的代码时,那将会是一场噩梦。不过也不用担心,souce maps将会帮你解决这一问题。 Source map提供了一种方式,能够将压缩文件中的代码映射回源文件中对应的位置。这意味着,你可以借助一些软 阅读全文
posted @ 2019-08-15 15:38 Jaxu 阅读(418) 评论(0) 推荐(1) 编辑
摘要:在计算机科学中,图是一种网络结构的抽象模型,它是一组由边连接的顶点组成。一个图G = (V, E)由以下元素组成: V:一组顶点 E:一组边,连接V中的顶点 下图表示了一个图的结构: 在介绍如何用JavaScript实现图之前,我们先介绍一些和图相关的术语。 如上图所示,由一条边连接在一起的顶点称为 阅读全文
posted @ 2019-08-14 11:38 Jaxu 阅读(1694) 评论(6) 推荐(2) 编辑
摘要:在计算机科学中,树是一种十分重要的数据结构。树被描述为一种分层数据抽象模型,常用来描述数据间的层级关系和组织结构。树也是一种非顺序的数据结构。下图展示了树的定义: 在介绍如何用JavaScript实现树之前,我们先介绍一些和树相关的术语。 如上图所示,一棵完整的树包含一个位于树顶部的节点,称之为根节 阅读全文
posted @ 2019-08-09 19:43 Jaxu 阅读(3831) 评论(0) 推荐(2) 编辑
摘要:在前一篇文章中,我们介绍了如何在JavaScript中实现集合。字典和集合的主要区别就在于,集合中数据是以[值,值]的形式保存的,我们只关心值本身;而在字典和散列表中数据是以[键,值]的形式保存的,键不能重复,我们不仅关心键,也关心键所对应的值。 我们也可以把字典称之为映射表。由于字典和集合很相似, 阅读全文
posted @ 2019-08-06 14:31 Jaxu 阅读(819) 评论(3) 推荐(2) 编辑