webAssembly 开发者指导

本页面提供一步一步的操作将一个简单的程序编译成webassembly

前提要求

为了编译成webAssembly,需要提前安装一些工具:

  • Git。在Linux和OSX下已自带了Git,在Windows下需要安装 Git for Windows
  • CMake。在Linux和OSX下可以使用像apt-get 或 brew 这样的包管理工具来安装,在Windows下下载CMake installer;
  • 编译工具。 在linux下安装GCC,在OSX下安装Xcode。在Windows下安装 Visual Studio 2015 Community with Update 3 或更新的版本;
  • Python2.7.x。在Linux和OSX下大部分都内置了Python2.7版本,没有的需要安装,Windows下需要自动下载安装;

    Read More

termux

termux

termux是一款安卓端的linux模拟器,功能非常强大
下载: 从github伤下载最新版本 https://github.com/termux/termux-app/tags;

修改软件源

termux清华源

设置存储权限

termux-setup-storage

安装ubuntu

1
2
3
apt install proot-distro
proot-distro install ubuntu
proot-distro login ubuntu

设置Ubuntu得apt源

需要特别注意得一点是平板/安卓上用的是ubuntu-ports源
先安装ca-certificates
apt install ca-certificates,再更换apt源
参考 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu-ports/

安装code-server

vscode online

what is vscode online

vscode onlie 是在服务器中搭建vscode环境,然后在任何带有浏览器的设备中通过浏览器使用vscode

requirements

一台具有公网ip云服务器,服务器最低配置是 内存:1GB, cpu: 2核

使用软件

  • code-server
  • chrome浏览器

步骤

  1. 在服务器中安装 code-server, 具体步骤参考 https://coder.com/docs/code-server/latest/install; 服务器上网络原因使用shell脚本安装时经常卡住,所以我是在本地下载上传到服务器安装,下载地址

  2. 配置
    配置文件位置 ~/.config/code-server/config.yaml

    1
    2
    3
    4
    5
    # port改为自己的端口
    bind-addr: 0.0.0:port
    auth: password
    password: 改为自己的密码
    cert: false
  3. 启动服务
    code-server

  4. 从浏览器访问 ip:port
    界面截图如下:
    vscode online

js变量

es5 中得变量

es5 中变量使用var关键字声明,var 声明得关键字存在变量提升,没有块级作用域,可重复定义,后面定义得覆盖前面定义

1
2
3
4
console.log(a); // undefined,变量a在后面申明,发生了变量提升,但赋值没有提升,所以是 undefined
var a = 1;
var a = 2; // 覆盖前面定义得a变量
console.log(a);

Read More

leetcode-add-two-numbers

leetcode 两数相加问题描述

原问题链接 https://leetcode.com/problems/add-two-numbers

问题描述: 输入两个非空链表 l1,l2, 链表节点为{val:'', next: node}, 链表每个节点的 val 都在 0~9 之间. l1,l2 代表两个数, 链表的第一个节点存储对应数的个位数,第二个节点存储对应数的十位数依次类推.

任务: 计算 l1, l2 代表的两个数之和,然后将和转换成链表表示, 并输出链表.

链表格式

1
2
3
4
function ListNode(val, next) {
this.val = val === undefined ? 0 : val;
this.next = next === undefined ? null : next;
}

example:

1
2
3
输入: l1 (2 -> 4 -> 3), l2 (5 -> 6 -> 4)
输出: 7 -> 0 -> 8
解释: 342 + 465 = 807

Read More

ssh别名登陆服务器

介绍

做开发时常常需要登陆远程服务器执行一些操作,以前每次都是使用 ssh userName@ip 来登陆,然而 ip 地址很难记,每次都需要查找下,导致效率太低下,使用 ssh 别名登陆后可以简化为 ssh userName@aliasName 登陆,方便记忆,操作也简化了,而且 aliasName 还可以用于 scp 之类的操作中

Read More

fetch

fetch 概览

本文翻译自 devdocs 文档中的 Fetch API: Using Fetch 一节

Fetch API 提供了访问和操作部分 HTTP 管道的 js 接口, 比如 request(请求)和 response(响应). 同时也提供了一个使用异步方法简便获取网络资源的全局函数 fetch().

Read More

python.1基础

python 代码转换成二进制

python 代码的执行过程是:源代码-》解析器-》字节码-》解析器-》机器码,pyc 和 pyo 文件是以字节码的形式存在,可以加速代码加载速度,两者不一样的地方在于 pyo 文件是经过优化的字节码

1
2
3
# 生成pyc和pyo文件的方式
python -m py_compile file.py #将file.py转化成pyc 文件
python -O -m py_compile file.py #将file.py转化成pyo文件

Read More

nodejs事件模块

nodejs 里所有事件类型基本都是由 events 模块开提供, js 是异步执行的,在很多情况下需要同步执行, 这时可以使用 events 模块来实现同步

event 模块主要是 EventEmitter 类, 使用 event.EventEmitter 类来实例化一个事件对象

1
2
let event = require("events"); // 引入events模块
let emit = new event.EventEmitter(); // 实例化一个events对象

Read More

js对象之实例工厂

new相关

1
2
3
4
let Person = function (name) {
this.name = name;
};
let lihua = new Person('lihua'); // lihua是Person对象的一个实例

new操作符有执行过程:

  • 设置行为: 创建一个新对象,其原型为 Person.prototype
  • 设置数据: Person接受刚上一步创建的对象作为隐式参数 this,设置新创对象的属性值this.name

Read More