Frossky 发布的文章

electrum 轻量级btc离线冷钱包
blackbird 自动化市场差价交易机器人
bitcoinjs-lib btc钱包基础库
EthList Eth学习阅读清单
gekko btc自动交易机器人(node编写)
ccxt 自动化交易工具(js/py)
BitcoinExchangeFH 自动化交易工具(js)
blockchain_guide 区块链技术指南(中文版)
XChange Java实现的多市场交易API
bitcoin-arbitrage btc机会发现,包含自动交易机器人
cpuminer cpu矿机
StockSharp 算法交易和量化交易机器人的开发工具
tribeca 高频交易平台
cointrol 交易机器人

在几个月没有更新系统之后,乐视的手机APP开始自行更新。先是日历里加上了特别low的贴片广告,然后桌面也加上了APP推荐,每点开一个文件夹下面就给你推荐8个应用,每次点开都不重样,每次点击都耗掉几十k流量,让人不胜其烦。好在可以在管家里关掉,只是不知管家那天也更新了。。。
乐视没钱以后,这是把手机系统更新卖给了广告联盟吗?!

找到(这篇文章)[https://blog.attachix.com/live-debugging-with-open-source-tools-programming-for-esp8266-part-4/],以及espressif的官方支持(esp-gdbstub)[https://github.com/espressif/esp-gdbstub]
(全部四篇文章)[https://blog.attachix.com/tag/esp8266/]

这篇文章介绍了加速度计、陀螺仪、地磁罗盘、GPS综合使用,保持飞行器稳定的方式,并且给出了一个IMU的概念(惯性导航单元 inertial measurement unit ),淘宝搜索IMU可以找到相应模块,50元左右。

传统py界面开发有pyqt,wxpython之类,没有深入,原因是看了开头是以函数调用来生成窗口,就觉得很麻烦。kivy看起来更加描述性,并且支持win,OSX,Linux,iOS,Android五大平台,甚至好过JS,JS的electron加cordova才相当于kivy。如果是这样,开发测试应用应该会比较快,唯二的可能的坑是,界面表现不丰富,比不上h5+css3,毕竟h5是标准;另外是插件不足,有的系统调用缺乏插件。kivy一个第三方库,试图同时做跨桌面移动5平台,还要做h5和css事情,怀疑精力能力都不足啊

其实有蛮多替代的,在bing搜索cmd alternative即可。我现在使用的是cmder,看起来比较简洁,主要空间用作显示,没有工具栏什么的。主要好处是什么?可以看utf-8(不太完美,中文字符和英文字符同宽,都重在一起了),还可以使用^c^v复制粘贴(win10才支持的),并且自带ssh,git
ssh远程连接的替代,Putty当然是最出名的,不过putty的配置很不好用,还有个选择是xshell,个人和家庭使用时免费的。

哦,居然有这么个东西,并且杀软完全不会查出来的。。。访问bing被劫持到baidu然后还加上劫持者自己的推广号码来赚钱。。。
解决方式:管理员运行cmd,输入
···
netsh winsock reset
···
然后重启即可

默认的用法有点儿麻烦. 分为等待deviceready->请求->开启->读取->处理这么四步.
最好是安装cordovarduino这个插件, 而不是cordova-plugin-serial. 后者的兼容性似乎有些问题. 除此之外, 这两个插件的用法是一样的.

var serialdata = ''
document.addEventListener('deviceready', onDeviceReady, false);

function onDeviceReady() {
    requestSerial();
}

function requestSerial(){
    serial.requestPermission(function success(){
        openSerial()
    }, function error(){
    });
}

function openSerial(){
    serial.open({
        baudRate: 115200,
        sleepOnPause: false
    }, function success(){
        readSerial()
    }, function error(){
    });
}
function readSerial(){
    serial.registerReadCallback(
        processSerialData,
        function error(){
        });
}

function processSerialData(data){
    var view = new Uint8Array(data);
    //按utf8方式解码
    serialdata +=  decodeURIComponent(escape(String.fromCharCode.apply(null, view)))
}

在使用cordova的serial串口插件调试的时候,总是要在安装包和调试的时候连线, 接USB串口的时候又换设备, 是否能通过android手机的WIFI与之连接, 然后同时插上串口 OTG调试呢? 当然是可以的.
主要参考文章:run-install-debug-android-applications-over-wi-fi

  • 首先要通过几个命令,从USB线切换到串口上去, 此时应该连接好usb线, adb devices 可以发现当前的android设备

  • 设置调试接口:

    adb tcpip 5555

  • 查看手机ip, 按参考文章中的命令adb shell netcfg并没有成功, 不过你总可以通过其他方式(设置->WIFI->详情)得到ip的,比如ip 是192.168.1.8

  • 切换USB为WIFI连接调试

    adb connect 192.168.1.8:5555

如果输出connected to 192.168.1.8:5555 表示已经切换成功!
按照文章, 命令 adb -s :5555 usb 可以在切回来. 不过还没有尝试.

  • 此时, cordova内的webview可以通过chrome浏览器的chrome://inspect查看了! 还能调试哦!

  • 如果要通过cordova安装apk, 可以:
    cordova run android --target=192.168.1.8:5555

cordova中使用vue,主要是CSP(Content Security Policy)的问题. 最简单的应对是使用CSP版本的vue. 可惜只有1.x的vue才支持. 1.x的最后一个csp版本是1.0.28, 下载链接, 该版本github地址
另有一篇文章讲怎么使用非CSP版本的vue: building-a-mobile-app-with-cordova-vuejs
但我使用后发现并不奏效...罢了..

如果要使用vue2.x,根据官方的描述:

CSP environments

Some environments, such as Google Chrome Apps, enforce Content Security Policy (CSP), which prohibits the use of new Function() for evaluating expressions. The full build depends on this feature to compile templates, so is unusable in these environments.
On the other hand, the runtime-only build is fully CSP-compliant. When using the runtime-only build with Webpack + vue-loader or Browserify + vueify, your templates will be precompiled into render functions which work perfectly in CSP environments.

也就是说使用webpack编译过的.vue就可以自带CSP属性.

现在的cordova和phonegap几乎是同一个东西了. 只不过phonegap似乎还能提供一些更易用一点的调试工具, 但似乎也仅此而已了.
phonegap有用的是cli, 和developer app(应用商店下载). 虽然phonegap还有一个图形化的desktop(基于electron), 但是打开后一直处于loading状态, 不知道和墙有没有关系.

cli主要两个用法

phonegap create APP名
phonegap serve

其中第一个create命令cordova也有,但serve就没有了。

serve之后, 可以通过developer app连接. 这可能是与cordova的最大区别.

然后所有的开发都得参照cordova了.

cordova部分(下面的cordova换成phonegap也是一样的):

  • 安装平台

    cordova platform add android

  • 构建

    cordova build android

默认构建debug包. 构建之后, android的apk包位置在platforms\android\build\outputs\apk\android-debug.apk

  • 安装到设备并运行

    cordova run android --target=xxxxxxx

  • 安装插件

    cordova plugin add cordova-plugin-serial

这儿有一个讲Makefile讲得很好的帖子, 简明易懂Makefile经典教程(掌握这些足够)

这儿简述一下.

  • Makefile主要描述依赖关系, 根据依赖关系决定哪些重新编译. 按下面的格式, 如果被依赖文件任意一个被修改, 则调用命令
目标文件: 被依赖文件1 被依赖文件2 ...
    命令

如(cc表示 c complier)

edit: file1.o file2.o
   cc -o edit file1.o file2.o
file1.o: file1.c common.h
  cc -c file1.c
file2.o: file2.c common.h
  cc -c file2.c
  • 使用Make命令默认找Makefile下的第一个目标文件,并把它的依赖解决并输出.
  • 变量使用方式
# 定义
变量名 = 内容  
# 调用
$(变量名)

OBJFILE = file1.o file2.o
edit: $(OBJFILE)
  cc - o edit $(OBJFILE)
  • 其他语句如clean的使用方式
    要调用make clean清理编译的中间件, 其实有点像npm run dev之类的调用. 此时clean作为label,放置在最后面, 以免被当成目标文件.
edit: file1.o file2.o
   cc -o edit file1.o file2.o
file1.o: file1.c common.h
  cc -c file1.c
file2.o: file2.c common.h
  cc -c file2.c

clean:
  rm -f file1.o file2.o
  • 编译o文件可默认省略对c文件的依赖名和编译调用
edit: file1.o file2.o
   cc -o edit file1.o file2.o
file1.o: common.h
file2.o: common.h
  • 然后又可以合并:
OBJFILE = file1.o file2.o
edit: $(OBJFILE)
  cc - o edit $(OBJFILE)
$(OBJFILE): common.h
  • 在执行命令前加"-"号可以让命令持续执行而不管中间出现的错误(如文件不存在)
# 这儿省略前面的内容...

clean:
  -rm -f file1.o file2.o
  • =, :=, ?=这几种赋值方式的区别
    直接=的话, 在变量可以在后面再定义, 如:
A = $(B) 
B= var1 

# 此时 A值为var1

用:=的话, 如果前面没有定义, 就为空了

A := $(B)
B := var1

# A此时为空

用?=的话, 如果前面有定义, 就不再定义, 如果没有才使用?=的定义

B := var1
B ?= var2

# 此时B仍为var1
  • 条件语句
    有ifeq, else endif
ifeq($(B), var1)
   # do sth
else
  # do sth
endif

除了ifeq外, 还有ifneq, ifdef, ifndef这几个比较语句

  • $的其他表达
    如果要表示$符号,你得输入$$才行.

  • 自动化变量
    $@ $<依次指代目标, 依赖. 并且所指是一组目标,依赖, 并将这一组目标依赖依次代入调用中.

  • 其他语句

用来设置某一类的文件在哪个路径下搜索的
vpath 文件类型 路径

vpath %.c driver user