在win11安装WSA并直接调试App
2021年10月20日,微软”千呼万唤始出来“地发布了对WSA的初步支持,win11具备了原生运行android apk的能力
废话之前,先上图
此窗口可正常拖动、缩放大小,在任务栏独立显示
目前(2021年10月21日)该功能还是预览阶段。
话不多说,开搞
安装WSA此部分整理自酷安,在此感谢各位大佬
首先需要确保你的计算机是win11最新版本且处于beta预览通道
打开WSA 微软商店链接: 这里
目前仅有美区支持,故选择确定
登录微软账号后获取子应用并安装
复制打开后的的链接,到 安装包抓包网址 输入上述商店链接,右边要选择Slow通道
(选择Slow通道是因为目前仅有Beta有)
找到最下面名为“MicrosoftCorporationII.WindowsSubsystemForAndroid_***_msixbundle” 的包进行下载
下载完毕后以管理员身份运行powershell,输入命令安装:
1add-appxpackage d:\...(刚刚下载文件的路径)
这时候进度条可能不会变化,耐心等待即可
如果安装有问题:缺少框架,在上述页面 ...
Python3.10稳定版特性速览
Python 3.10正式发布,你尝鲜了吗?
本文参考自 Python官方文档 : Python Release Python 3.10.0 | Python.org
在正值国庆假期人山人海的2021年10月4号,Python官方正式发布了Python3.10.0。作为一只假期期间宅着不动的coding人,自然是第一时间体验了一波。相较于之前的版本,该版本有以下主要变更。
新的 Union Type表达新版本简化了 Union Type 的使用 ,改为更为简洁的|
旧版:
12from typing import Uniona: Union[int, str] = 1
新的版本:
1a: str | int = 1
二者完全等价:
1Union[int, str] == int | str # True
这类变化在其他地方也相似:
12345678910111213141516# 旧版:# def f(list: List[Union[int, str]], param: Optional[int]) -> Union[float, str]def f(list: L ...
Jitpack.io ERROR No build artifacts found一路踩坑的解决【Gradle 7.0+,Kotlin 1.5+】
前段时间上传我的项目CMaterialColors到Jitpack时一直出现错误,最早报出的错误是:
Found artifact: com.funny.cmaterialcolors:release:1.0.0Found artifact: com.funny.cmaterialcolors:release:2021-06-15T08:52:13.4704949ZExit code: 0ERROR: No build artifacts found
实话说当时非常无语,经过几次失败的尝试后我决定去看看完整的报错日志,然后发现了中间其实就有报错:
An exception occurred applying plugin request [id: ‘com.android.application’]Failed to apply plugin ‘com.android.internal.application’.Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8. ...
Jetpack Compose异步加载图片的实现
本文使用两种方式,实现Compose中图片的异步加载
前言Android开发中异步加载图片是非常常见的需求。本文将带你实现这一需求。本文将分为如下两个方面:
自己写函数
用开源库
实现借助Glide库自己写Glide开源库基本上成为了Android中加载图片的首选,其简单易用的API和强大的缓存能力让这一过程变得十分方便。自然在Jetpack Compose中也可以使用。
引入依赖在模块中的build.gradle中加入
12implementation 'com.github.bumptech.glide:glide:4.12.0'annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
编写函数如何让Glide把图片加载到Compose组件上去呢?我们可以利用其提供的into(Target)指定自定义的target,再搭配上mutableState<Bitmap>的返回值,即可实现在图片加载完成后Compose自动更新图片加载时一般会有一个默认的load ...
从C到Python
从C到Python本文适合于那些有过一定C语言基础并希望学习Python的人,仅在简明指出二者的过渡。
首先请记住:Python入门非常容易,所以在阅读本文时,请不必抱有任何心理压力!看不懂的跳过就行,日后自然会理解
说明
目前Python主流版本有2.X和3.X,本文使用的版本为Python 3.8.5
C环境则为 gcc 8.1.0
如对应知识点下面有小字,则为补充及说明内容,您可按需阅读
宏观下面从大体上阐释二者的部分区别
Python代码写起来比C语言简明得多
Python是一门面向对象的语言,C语言则是面向过程
Python是一门解释型语言,C则是编译型语言
上面的话有个概念就好,不必死磕。
变量在C语言中,变量分为声明和定义,且需要指出详细的类型,如下:
1234567//变量声明 int i; float f; double d; char c; long l; short s;
Python作为解释型语言,变量无需指定类型,赋值即可
123456var_string = "这是字符串变量"var_number = 1 ...
Flutter卡在Running ‘gradle assembleDebug‘最完整解决
前言结合csdn+博客园+github+Stack Overflow+自己尝试,解决该问题!今天突发奇想试一下flutter,按照网上教程配置完后(flutter doctor)全部合格,运行却卡在了Running ‘gradle assembleDebug’。打开任务管理器,AS的网络占用相当之低,一会就为0。找了各种方法,最后搞出了这一套
准备
准备一个可以完成编译和运行的Android项目(项目A)
打开你的Flutter项目(项目B)
Flutter的安装目录
多处修改打开A项目的build.gradle,记住里面的gradle版本号继续打开此项目的app/build.gradle,记住如下数据继续打开此项目的gradle/wrapper/gradle-wrapper.properties,记住最下面的url
打开B项目修改compile sdk与A相同修改build.gradle,包括如下四个地方
1234maven { url 'https://maven.aliyun.com/repository/google' ...
学了python不知干啥?爬爬虫!(7)代理的使用
多线程批量翻译
合理爬取,不恶意扩大站点压力本文章仅作示例,请勿用作非法用途
在Python爬虫过程中,常常会遇见因为各种原因被服务器拒绝访问的情况。有时候设置User-Agent能够解决问题,但如果遇到服务器校验ip访问次数来判断爬虫的情况,这样简单的做法就无能为力了。往往这种时候,采用代理ip间接访问能取得不错的成效。那么,什么是代理呢?
代理基本概念让我们假想这样一个场景,你是一个广告员,负责给一个老奶奶打广告并获拿到她的反馈留言。老奶奶每天见到你很心烦,看见你多次来就不见你了。这时候你想到了另一个办法,你找到老奶奶的儿子孙子外甥侄子……把将自己的广告内容告诉他们,让他们跟老奶奶复述,然后由他们将得到的反馈结果告诉你,从而间接完成自己的目的。当这样的过程中发生在爬虫时,那些爬取过程中的“中间人”,就是代理。
分类常见的HTTP代理分为三个类型,即透明代理IP、匿名代理IP、高匿名代理IP,它们的具体区别见下:
1)透明代理(Transparent Proxy):透明代理虽然可以直接“隐藏”客户端的 IP 地址,但是还是可以从来查到客户端的 IP 地址。
2)匿名代理 ...
学了python不知干啥?爬爬虫!(6)爱词霸翻译(内容详尽,从打开网页手把手完成JS逆向并写出代码)
多线程批量翻译
合理爬取,不恶意扩大站点压力本文章仅作示例,请勿用作非法用途
前言 前几篇教程的爬取,我们一直局限于静态网站,且请求仅限于get。但在实际的开发过程中,动态内容才往往是爬取的核心。在本节内容中,我将带你一步步分析爱词霸的翻译结果获取过程,并伪装请求实现单词翻译。 本篇内容为本人原创,转载请注明! 请注意,本篇内容仅限于学习交流,切勿用于商业用途!
分析网络加载过程 首先打开爱词霸,并使用 F12 打开开发者工具 【此处使用浏览器为Edge,如使用其他浏览器请参照对应教程打开此界面】 。为了动态分析翻译过程,我们需要切换到 网络(Network) 标签页输入任意单词,点击翻译按钮,你将会看到如下请求结果:
这就是动态翻译的请求。在此条请求上右键-复制链接地址得到如下结果
1https://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_ciba&sign=0020c1 ...
学了python不知干啥?爬爬虫!(5)requests库的使用+错误处理
多线程批量翻译
合理爬取,不恶意扩大站点压力本文章仅作示例,请勿用作非法用途
本篇并没有完成实际项目,而是讲述更加普遍化的处理方式。如果只是希望复制粘贴的,现在可以选择离开了
Requests初探 在前几次的爬虫中,我们一直使用urllib来完成需求;今天我们尝试一个新的第三方库:requests 在它的官网中,对它有如下介绍
Requests 完全满足今日 web 的需求。Keep-Alive & 连接池国际化域名和 URL带持久 Cookie 的会话浏览器式的 SSL 认证自动内容解码基本/摘要式的身份认证优雅的 key/value Cookie自动解压Unicode 响应体HTTP(S) 代理支持文件分块上传流下载连接超时分块请求支持 .netrc
不需要全部看懂,总之只需要知道:很强、很易用就对了!
要学习requests库的基本用法,您可以点击这里来查看官方文档*
小试身手最近2077很火,我们就去贴凑个热闹,看看大家对他的讨论
这里就是本次我们要爬取的目标啦
使用之前要用pip安装
1p ...
学了python不知干啥?爬爬虫! (4)多线程爬取
多线程批量翻译
合理爬取,不恶意扩大站点压力本文章仅作示例,请勿用作非法用途
效果
需求 自己的项目需要一个功能,要求有大量的中英对照翻译,中文词很好找,网上随便搜一下就有了 但是英文翻译呢?手动翻译自然可以,但身为程序猿,用代码实现不是更加优雅吗?开干!
分析经过梳理后,我们可以把整个过程分为以下几个步骤:
加载xlsx文件,解析为中文词的列表(元组)
一一翻译,将结果储存在一个字典中
保存为json文本
开始加载xlsx由于不是本篇重点,直接上代码好了
12345# 获取原始数据 xls = xlrd.open_workbook("D:/Downloads/7000hanzi.xlsx") sheet = xls.sheet_by_index(0) col = sheet.col_values(1) col.pop(0) #剔除表头数据
爬取翻译旧方法如果按照之前的方法,只需要遍历一下列表,然后一个一个翻译就好了。但是!这个效率问题值得我们考虑。假设翻译一个单词需要1s,连续翻译7000个也就要7000s;换句话说,将近两个小时!这时 ...