Frossky 发布的文章

https://dan-suciu.medium.com/web-scraping-in-node-js-top-7-best-tools-67f451fcfda3

python爬虫scrapy更新一直很频繁, 直到最近还在有更新, 可能因为如此, 所以很多网站都有针对性反爬措施.
上文推荐了7个基于node.js的爬虫. 下面按是否基于浏览器技术分类:

基于浏览器技术的爬虫

JSDom, 自实现的一个无头浏览器, 跟PhantomJs比较接近. 意图是纯JS实现Web标准. 5个月前更新.
Puppeteer, 谷歌开发的用于控制chrome的高级API
PlayWright, 据说是跟Puppeteer一个团队, 这个除了chrome外还可以控制firefox和safari, 目的是统一浏览器控制. 本意是浏览器自动化测试工具. 目前挂在微软名下, 到现在都还有更新. 也因为挂着微软,所以在vscode中有插件使用.
Nightmare, 基于ELectron, 可模拟用户操作. 本来是用来对无API网站跨站点自动化访问用的, 现在多用于自动化测试和爬虫. 三年前更新

基于HTTP Request的爬虫

Axios, 其实就是http request的优化, 当然也很好用
CheerIO, 用来做选择器, 语法和Jquery类似.
X-ray. 这是一个实际意义的爬虫, 和其他不同, 这个开发来就是做爬虫的. 但是好几年都不更新了.
Osmosis. 也是爬虫, 感觉和x-ray类似. 同样好几年不更新了.

在线爬虫服务

webscrapingapi, 本质是收费运营的, 但还是有一些免费的api.

对比

基于浏览器的爬虫和基于http request的爬虫区别在于, 前者会运行js, 做css渲染, 后者不会. 因此前者比较慢, 但接近或达到人工浏览, 能更好应对反爬, 后者速度快, 但可能应对反爬困难.

  1. 注意是kicad 6以上版本,否则不支持此功能.
  2. 需要直接打开pcb editor 6.0, 而不能先打开kicad6再从里面打开pcb editor. 否则里面的导入选项会消失
  3. 文件->导入->非Kicad电路板文件.

  1. 代理销售产品A->自研替换产品A->自研产品A的系列产品->临近品类扩张
  2. 自研趋势产品A->等待市场起量和爆发->占领市场

重点做几个月开发又重点做了一两个月的管理, 回过头来继续开发的时候竟然发现所有自己亲手写的代码亲手搭建的环境究竟是怎么回事竟然都忘光了!
所有知识又要从头开始学习一遍,那感觉真的非常沮丧!

一二三个人大山上下小 001
雨天车开火门口月羊只 002
有牛水中风头田土里在 003
日白马手出王子儿女刀 004
木鸟伞鱼瓜气飞虫米云 005
电石了来玉去回多少问 006
早巴父工力不干几男坐 007
打四五六闪的花朵果比 008
午面高包文分平我连元 009
丁厂目见兔禾是把笑着 010
看会自己画好爱心也可 011
家爸妈这爷奶们书串球 012
圆形长方正角灯块冰那 013
弓买哪乐谢想抱竹要立 014
耳红色吃香穿身它发衣 015
他她毛朋友哥弟兄眉鼻 016
光星阳亮今明走兴空两 017
哭牙肚尾你脸黑半呀吗 018
七八九十又很太宝贝和 019
关园生公苗叶林草先岛 020
嘴眼睛脚腿翅膀羽体没 021
认识颜黄蓝绿粉青彩紫 022
食物尝闻味鲜苦甜什么 023
起运动踢足赛快慢跑步 024
唱歌跳舞吹号讲故事怎 025
帮找欢担闷急害怕惊哈 026
老师同学校课桌椅教室 027
做给操伸拉举拍抓拥扔 028
寒冷温暖热凉湿雾净到 029
都办渴喝饿饭睡觉累醒 030
房间帘窗户台视床被处 031
让对姐妹阿姨叔伯姑亲 032
餐盆碗筷盖袋巾杯成用 033
像原菜萝卜豆苹桃杏笋 034
扫地拖洒洗服晒收全呢 035
还谁商场楼街理店鞋市 036
病医院护士伤纱布针住 037
养放鸡鸭农夫猫狗鼠群 038
汽行交装甲机宇宙船化 039
当该科程航员司蹈军银 040
客壳救板加油修轮始离 041
遇别海洋流浪波潮雷乌 042
底虾丑斑带宫美柱矿完 043
挖就岩沙滩鸥瓶珠金骨 044
帆游冲划钓钩篮网最得 045
梦森植树泥春夏秋冬季 046
熊猴鹿虎狮狐狸狼现总 047
跟柳芽蚯蚓蝴蝶燕蜜蜂 048
民种翻浇肥施除杀如再 049
荷蝌蚪蛙露蜻蜓蝉声音 050
晨朝夕落傍晚虹霞追能 051
送过节铃纸烟礼蛋糕娃 052
滴泉溪洼江河湖清神奇 053
求棵根枝枯皮啄鸦松活 054
历期昨新年表时数字久 055
响听叫叹喊欠吸呼说话 056
坡注意路停辆道直定幸 057
影样边外远近左右前后 058
蜘蛛蚊洞丝蚂蚁蛇壁怪 059
队进铁站入票扶乘座位 060
主无广升本东西片匹报 061
颗笔作采未捉尖从众斤 062
京寸雪南至合令夜低古 063
舟弯象井常句告诉北安 064
点飘答吧母城为垂班拿 065
孩玩往知首满丽万百千 066
李桥情尔岁忙与向肉赶 067
才童且法另习请冈各名 068
变条软题村换张背捧双 069
池破倒捡国候扑记摘世 070
介谷胡卫劳庆汗但坏第 071
读浮件必龙算吵勾品按 072
卖尺业堆迷藏越尘灭休 073
非岸屋静望乡野更景短 074
扁旗搭些深仔细旁许格 075
丰言语啦梅参烧砍造舍 076
结真束齐每秀量淡以专 077
级诗闭借因吓照忘念练 078
排伙伴共选兰复苏争鸣 079
重貌错改愿夸霜碧杨展 080
团相及攻互尊懂纯难舰 081
秧稻竿铜领虚骄傲诚实 082
祝赞招嫌初辨斗即雁归 083
转澡梳梢耍线论趣淋邓 084
龄息栽眠居醉散妙却精 085
掉胖喜贴墙替革棉脱躺 086
摆壮顾悄取轻仿佛投聪 087
泼忽然眨积脑代推失观 088
围准备所牧捕惜阴柔摇 089
坪透蹲嘻莲睁趴腰感激 090
艳消搬阵华逃挂熟冻渐 091
假缸慌史劲砸称官议杆 092
秤艘沉止微席导命战解 093
刻助哨敌荡川突枪英雄 094
部宽奔密贺希祖割勇敢 095
敬度挑整滚咬懒吞将靠 096
丢糟粗概保管夹并宜规 097
盛娘蚜盼治俩而引梁架 098
特砖驶薄巧稳郊列弄查 099
速断提建创灰迎啊顶披 100
鼓宜哗尽层戏棋钢弹琴 101
顺州族涌隔峡写陆补拔 102
功折独容易永饥饱贫富 103
丛牢于尤其区巨已纷经 104
枫刘牵困宁切次钟迟闹 105
计怦亿洁帜曲央优坛图 106
申泪扬指接信沿抬际哇 107
思浅示极由术吐铅扎福 108
之亚周寻良份晴何汪跃 109
蹦灵乎死粒灾器纹须使 110
克孙产界技纺织探躲徐 111
荣宿刚轰唤抽拐终瓦股 112
脆塔杜鹃冒需迈迹锋泞 113
托摸利弱末芬芳应环绕 114
胜隐约省茂吾留钉沟够 115
恩寿柏凤凰府单夺扮伟 116
烁辉煌志漫朗哄骗您仍 117
便漂式丹艺显涛陈斜吴 118
含炉岭绝泊乱压禅册印 119
刨埋质厚忠盏稠稀碰赢 120

概述

链接: Blender入门之一
我在blender入门之一中学些的教程似乎没有后续, 而且过于简单, 当然入门也很快速. 这次我不得不找到另一个入门教程从头看起, 以查漏补缺.
这次选择的教程是: 【中文翻译】Blender7天入门教程—入门学这个就够了,已更新完成!

偏好设置

  • 键位映射->Select With Mouse Button改为右键. 这样左键可以变成移动游标. 如果需要调出菜单按w.
  • 键位映射->Space Bar Action改为搜索. 以前的空格就播放确实挺讨厌的.

默认单位

  • 场景属性->单位中修改.默认为meters

快捷键

!G或R或S 撤销G/R/S操作
G或R或S&^ G/R/S操作临时开启吸附
^中键 视角拉远近
/ 独立
B&左键 框选
B&中键 框消选
Alt+G 是物体回到坐标原点
M 将所选物体移动到集合

在面上移动和复制

吸附选项开启:

  • 面模式
  • 旋转对齐目标
  • 项目独立元素(翻译错误, 实为Project Individual Elements,即投影独立元素)

使用G移动原点

活动工具与工作区设置(第一个属性)中, 打钩选项-变换-仅影响-原点

渲染

  • 世界属性(地球图标)->颜色->环境纹理->打开hdri图片->射线可见性->关掉摄像机

使用四边面, 避免极点出现在拐角(≥5条线相交的点)

细分修改器

细分修改器+平滑着色可以让只有少数几个四边形的物体形成平滑的表面.
如果想要某个表面不再平滑, 变得更加锐利, 简单的做法就是增加一圈四边形(^R),并使其面积尽量小.

快速增加细分线

^R增加圈线以外, 在线模式下, 还可以用w菜单选择细分快速增加细分线.

衰减编辑(中上方, 磁吸右侧的点)

例如: 移动一个面的时候,不仅仅移动这个面, 而是对与其相连的面起到一个牵拉的效果. 并且可以通过滚轮改变牵拉的范围.
快捷键:o

多边形建形

直接点击可以拉出一个新的四边形, 按住ctrl可拉出三角形, 拉两个三角形可以自动合并成一个四边形

旋绕

一个面旋绕成体

光滑

不借助细分, 改变当前多边形形状让物体更光滑

随机

随机化所有四边形

滑移边线和顶点

让边线和顶点在当前面/线内滑动

法向缩放

所有面沿着法向缩放. 对猴头看起来像是变胖变瘦的工具一样.

目的 操作
移动时临时开启吸附 按住Ctrl
某一视图全屏 Ctrl+Space
实体视图随机彩色 右上角四个球下拉菜单->颜色->随机
增加子窗口(区域) 鼠标移动到窗口的四角->鼠标变成十字星->拖拽出新窗口. 需要关闭则在窗口最上面点击右键选择闭合区域
视口剪裁导致后面区域看不见 修改右上角视图->视图->裁剪起点/终点
相机视角 0
相机视角对准到当前视角 Ctrl+Alt+0
锁定相机视角 修改右上角视图->视图->锁定相机视图
顶点菜单 ctrl+V
边菜单 ctrl+E
面菜单 ctrl+F
框选(Box选) B
圈选(Circle选) C
反选 Ctrl+I
顶点破开 V
顶点合并 选中要合并的顶点按M
选择破开的点/线 选择菜单->按特征全选->非流型
扩大选择 ctrl+"+"
减少选择 ctrl+"-"
选择链接部分(Link) L
挤出到鼠标 选中点线面, ctrl+左键
切割(切刀),面上增加(切出)线 K
切分(平切), 切穿物体 操作前需要选中要切分的部分, 并从一侧拖向另一侧
将两个循环边用面连接起来 空格->输入桥接循环边

渲染模式

Ctrl+B 框选部分画面渲染
Alt+Ctrl+B 清除框选渲染

着色器

Shift+Ctrl+左键 快速切换到一个新的着色器
Ctrl+L 转移(链接)材质
同时改多个值(如xyz): 鼠标左键拖动选择xyz
Ctrl+右键 切刀可以切断连线

UV编辑

U 在编辑模式下调出UV菜单
F 在纹理绘制模式下调整笔刷大小, 也可用[]调整笔刷大小
活动工具与工作区设置(起子扳手🔧图标)->笔刷设置->纹理->新建->起个名字->映射选择镂版->在文理选项卡显示纹理图标->点击文件夹->选择一个图片->回到起子扳手图标, 在3D视图区域会半透明显示选择的图片. 这个图片操作是:

  • 右键 拖拽
  • Shift+右键 缩放, 可以+x/y
  • Ctrl+右键 旋转

UV展开: 在边编辑模式下, 选中要展开的缝合边, Ctrl+E打开边菜单, 选择标记缝合边. 然后按A全选, 在UV菜单U中重置, 再选择展开即可按缝合边展开.
UV实时展开: 右边起子扳手图标里选项选择实时展开, 然后在UV编辑器UV菜单里也选择实时展开

eevee设置

启用辉光
启动屏幕空间反射,启用其中的反射

动画

准备工作

  • 需要先清理模型,凡是要旋转运动的部件,都应该将原点设置到旋转轴心上,且原点的某一轴(如Y轴)与旋转轴重合
  • 可以将所有细分修改器的viewport改为0,而保持render为2, 这样编辑的时候会比较快一些又不影响渲染
    设置父级
  • 按Shift多选物体,再按Ctrl+P,最后一个物体为父级。 父级物体运动时,其原点也是子物体的原点。
  • 确定不同物体的父级,确保父级移动的时候子级跟着动。
  • 最后添加空物体作为控制器,设置其为最上层父级的实际物体的父级,这样实际物体发生变化不会影响空物体
    3D视图按I 插入关键帧,或者在任何属性上按I,可以插入该属性的关键帧
    时间线视图Ctrl+Tab 切换图表编辑器视图

    图表编辑器

    home,最大化显示
    N,显示属性,可以增加修改器
    图表编辑器中的曲线操作与3D视图中的曲线操作一致
    曲线上按V,调出菜单选择Vector,把曲线变成折线

一周尝试了uni-app/native-script/ionic/cordova/termux/tasker, 想实现一个mqtt订阅消息推送到android通知栏这么个简单功能, 却是种种失败啊~~~~~郁闷得不行,难道是我的手机系统真的太老了吗哈哈

termux安装后, 如果需要和android系统交互, 还需要安装termux:api
官方文档

android 7.0能下载的最后版本是0.101, 再新的版本似乎都不能安装了.截至目前, android 7.1还能安装最新版本0.118

换源

使用termux-change-repo GUI界面换源. 回车键确定, 空格键选择.
可选择清华源. 换源后第一时间应更新pkg up
pkg up中如果选择了多个y,有可能会覆盖掉这个repo的配置, 此时最好重新再次配置一次termux-change-repo

远程登录

Remote access

# 更新(必须, 否则有些包装不上). 注意其中一些步骤要按`Y`
pkg up
# 安装包
pkg install openssh
# 开启服务
sshd
# 查询用户名
whoami
# 查看ip
ifconfig
# 设置密码
password

termux ssh默认8022端口, 在pc上连接

ssh -p 8022 user@hostname_or_ip

termux api

重点:权限要开足。
除了在安卓系统设置中给予的所有权限,还包括自启动权限。在meizu系统中找不到自启动权限,但是手机管家中有一个智能后台,必须要开启允许后台常驻。这个权限一开始可能找不到,必须要用一下才找得到。

安装完android studio,avd和正常启动了模拟器以后, 如果希望直接启动模拟器而不是先启动android studio, 可以从命令行启动.
注意, 必须进入 sdk/tools目录启动, 否则会找不到依赖项
示例如下:

cd D:\rsoft\mybin\android\sdk\tools
emulator -avd Pixel_2_API_27 -netdelay none -netspeed full

官方文档

emulator命令的帮助:

C:\Users\k>emulator -help
Android Emulator usage: emulator [options] [-qemu args]
  options:
    -list-avds                     list available AVDs
    -sysdir <dir>                  search for system disk images in <dir>
    -system <file>                 read initial system image from <file>
    -writable-system               make system image writable after 'adb remount'
    -datadir <dir>                 write user data into <dir>
    -kernel <file>                 use specific emulated kernel
    -ramdisk <file>                ramdisk image (default <system>/ramdisk.img
    -image <file>                  obsolete, use -system <file> instead
    -initdata <file>               same as '-init-data <file>'
    -data <file>                   data image (default <datadir>/userdata-qemu.img
    -partition-size <size>         system/data partition size in MBs
    -cache <file>                  cache partition image (default is temporary file)
    -cache-size <size>             cache partition size in MBs
    -no-cache                      disable the cache partition
    -nocache                       same as -no-cache
    -sdcard <file>                 SD card image (default <datadir>/sdcard.img
    -snapstorage <file>            file that contains all state snapshots (default <datadir>/snapshots.img)
    -no-snapstorage                do not mount a snapshot storage file (this disables all snapshot functionality)
    -snapshot <name>               name of snapshot within storage file for auto-start and auto-save (default 'default-boot')
    -no-snapshot                   perform a full boot and do not do not auto-save, but qemu vmload and vmsave operate on snapstorage
    -no-snapshot-save              do not auto-save to snapshot on exit: abandon changed state
    -no-snapshot-load              do not auto-start from snapshot: perform a full boot
    -snapshot-list                 show a list of available snapshots
    -no-snapshot-update-time       do not do try to correct snapshot time on restore
    -wipe-data                     reset the user data image (copy it from initdata)
    -avd <name>                    use a specific android virtual device
    -skindir <dir>                 search skins in <dir> (default <system>/skins)
    -skin <name>                   select a given skin
    -no-skin                       deprecated: create an AVD with no skin instead
    -noskin                        same as -no-skin
    -memory <size>                 physical RAM size in MBs
    -cores <number>                Set number of CPU cores to emulator
    -accel <mode>                  Configure emulation acceleration
    -no-accel                      Same as '-accel off'
    -ranchu                        Use new emulator backend instead of the classic one
    -engine <engine>               Select engine. auto|classic|qemu2
    -netspeed <speed>              maximum network download/upload speeds
    -netdelay <delay>              network latency emulation
    -netfast                       disable network shaping
    -code-profile <name>           enable code profiling
    -show-kernel                   display kernel messages
    -shell                         enable root shell on current terminal
    -no-jni                        disable JNI checks in the Dalvik runtime
    -nojni                         same as -no-jni
    -logcat <tags>                 enable logcat output with given tags
    -no-audio                      disable audio support
    -noaudio                       same as -no-audio
    -audio <backend>               use specific audio backend
    -radio <device>                redirect radio modem interface to character device
    -port <port>                   TCP port that will be used for the console
    -ports <consoleport>,<adbport> TCP ports used for the console and adb bridge
    -onion <image>                 use overlay PNG image over screen
    -onion-alpha <%age>            specify onion-skin translucency
    -onion-rotation 0|1|2|3        specify onion-skin rotation
    -dpi-device <dpi>              specify device's resolution in dpi (default 165)
    -scale <scale>                 scale emulator window (deprecated)
    -http-proxy <proxy>            make TCP connections through a HTTP/HTTPS proxy
    -timezone <timezone>           use this timezone instead of the host's default
    -dns-server <servers>          use this DNS server(s) in the emulated system
    -cpu-delay <cpudelay>          throttle CPU emulation
    -no-boot-anim                  disable animation for faster boot
    -no-window                     disable graphical window display
    -version                       display emulator version number
    -report-console <socket>       report console port to remote socket
    -gps <device>                  redirect NMEA GPS to character device
    -shell-serial <device>         specific character device for root shell
    -tcpdump <file>                capture network packets to file
    -bootchart <timeout>           enable bootcharting
    -charmap <file>                use specific key character map
    -prop <name>=<value>           set system property on boot
    -shared-net-id <number>        join the shared network, using IP address 10.1.2.<number>
    -gpu <mode>                    set hardware OpenGLES emulation mode
    -camera-back <mode>            set emulation mode for a camera facing back
    -camera-front <mode>           set emulation mode for a camera facing front
    -webcam-list                   lists web cameras available for emulation
    -screen <mode>                 set emulated screen mode
    -force-32bit                   always use 32-bit emulator
    -selinux <disabled|permissive> Set SELinux to either disabled or permissive mode
    -unix-pipe <path>              Add <path> to the list of allowed Unix pipes
    -fixed-scale                   Use fixed 1:1 scale for the initial emulator window.
    -wait-for-debugger             Pause on launch and wait for a debugger process to attach before resuming
    -skip-adb-auth                 Skip adb authentication dialogue

     -qemu args...                 pass arguments to qemu
     -qemu -h                      display qemu help

     -verbose                      same as '-debug-init'
     -debug <tags>                 enable/disable debug messages
     -debug-<tag>                  enable specific debug messages
     -debug-no-<tag>               disable specific debug messages

     -help                         print this help
     -help-<option>                print option-specific help

     -help-disk-images             about disk images
     -help-debug-tags              debug tags for -debug <tags>
     -help-char-devices            character <device> specification
     -help-environment             environment variables
     -help-virtual-device          virtual device management
     -help-sdk-images              about disk images when using the SDK
     -help-build-images            about disk images when building Android
     -help-all                     prints all help content