一、发展建议
前几天有一位知识星球中的同学讲了他目前的状况,希望咨询一些未来发展的问题,感觉应该和许多想要去好一点大公司的求职者有一些共性建议:这位同学目前是专升本,专科大三下半年在小公司实习过,从专科大三实习到去年9月入学现在的本科学校,期间一直在兼职接单,做过很多项目,自己也有一直在学习,但是学习的很散(基础的东西很薄弱、知识体系很散东一点、西一点),目前希望能够去一个好点的大公司。对大项目架构、设计模式什么的一窍不通。app 大多数JAVA层的都能解决,so层算法还原不行,只能frida-rpc,web 可以解决少部分加密,风控解决不了只会普通的用iP去怼。
发展建议:其实这位同学的逆向能力已经可以打败很多人了。现在要让大公司的人知道有他这号人,然后让他们主动联系他。多写文章,这样有两个好处。第一,写文章的过程会逐渐让你的知识系统化。第二,方便大公司的人通过文章找到你。
算法不好不一定吃亏,但是数据结构不好一定会吃亏。基本的几个数据结构一定要学好:链表、二叉树、堆、栈、队列的特性要了然于心,并能徒手写出完整的代码。单向链表,双向链表,双指针法,三指针法吃透,就会做一大批的算法题了。二叉树的前序遍历,中序遍历,后序遍历要能做到给出任意两种就能在纸上还原二叉树。小顶堆,大顶堆搞懂,就会做一大批有很大数据量,需要筛选或者排序的题目了。
二、问题解答
1
南哥,用Scrapy将日志通过settings的LOG_FILE写入文件了但是控制台不输出了,有什么办法让控制台也输出么?
scrapy使用的是logging模块。这是Python自带的模块。你只需要再加一个StreamHandler就可以了
2
南哥好,我最近遇到了一个问题,我从网上采集的信息抽象如下:
代码语言:javascript复制[{
'url': ' https://example.com/1'
'keywords': ['a', 'b', 'c']
},
{
'url': ' https://example.com/1'
'keywords': ['a', 'b']
}]
支持当我想反查`keyword`中的`a`出现在哪些`url`时,现在的做法是有三个表,有url表和keyword表,还有一个关联表一一对应,想问问又没有更好的处理方法呢?
mongodb查询array的时候,跟查普通的字段一样:
代码语言:javascript复制.find({'keywords': 'a'})
这样就能了。然后你直接读url字段,就是你想要的效果了
3
南哥,平时安装软件的时候,如果需要管理员权限的话会弹出来UAC窗口让人确认,这个功能用python怎么实现啊?
网址:windows - Request UAC elevation from within a Python script? - Stack Overflow
4
南哥请教一个问题也,就是我有一个新闻网站,第一次爬取需要爬取历史数据所以需要翻很几百页,之后我只需要监控前面几页就行了,有新增的新闻我就爬取!这个需要怎么设计啊?
第一次手动跑就好了。后面自动跑,监控到重复数据就停止
5
南哥,请教一个问题:为什么 Unicode会存在大小端序呢 有什么作用吗?
大端和小端是由CPU架构决定的,一般x86架构和大部分arm架构的CPU都是小端。我们知道一个字节是8位,数据在计算机里面有信息量的最小单位是字节(因为位太小了,没有什么信息量)。Unicode码本质上是一串十六进制数,我们假设它是0xa1b2。16进制数每两个一组放在一个字节中。也就是a1放在一个字节,b2放在另一个字节。左边叫做高位,右边叫做低位。内存里面,每个字节的空间都是有内存地址的,地址从低到高。如果低地址的内存放高位数据a1,高地址的内存放低位数据b2,这就的大端。如果低位地址放低位数据b2,高地址放高位数据a1,这就的小端。这种东西编程语言都会帮我们处理好,其实你不用太关心它。
6
南哥,请教一下,Python 多线程场景下,有没有方法在主线程中,主动让某个子线程结束运行?
不行。子线程没有办法被杀死。只能让它自己结束。你可以在子线程里面弄一个while循环。它的结束条件通过主线程来设定。这样子线程看到这个结束条件为True就自动结束。但无论如何,子线程只能自己结束,没有办法从外面杀死。
7
南哥,有啥比较好的方法,复制一台服务器的python环境到其他机器。尝试过conda的导出环境命令conda env export --no-builds > environment.yml,但是生成的文件去其他服务器安装时,会报很多库找不到对应的版本。docker不适用于我的需求,我是想复制环境给其他服务器,仅仅复制python环境。直接拷贝文件这种方式不能满足需求
实际上对Python来说,就不应该有“把整个环境复制到另一个服务器”这种操作。只有把当前环境里面的第三方库的名字记录下来,再到另一个环境重新安装。如果你用过virtualenv或者pipenv。那么这个过程几乎不耗费时间。一条命令就重建好了。但我怀疑你肯定是把所有的第三方库全部都安装到了系统Python环境里面。
至于你说有些库在新服务器上安装不了。那你在老服务器是怎么安装的?难道新老服务器的系统不一样?有一些第三方库依赖一些系统软件,这些系统软件需要使用apt提前安装。
8
南哥,关于git hooks,我想在一个项目的不同分支启用不同的钩子,这有什么办法做到吗?用的是本地的git
代码语言:javascript复制if [ `git rev-parse --abbrev-ref HEAD` == "development" ]; then
echo "development-script"
可以设置,官方文档还有例子。https://www.python-httpx.org/advanced/
你是怎么设置的,把代码发上来。使用httpx的时候,其实代理的权限信息可以直接写到代理url上面,不需要设置头信息。http://账号:密码@ip:端口
比如说这样子,设置的proxy-authorization变成[secure],请求的时候这个头也看不到。设置的proxy-authorization1就有。
用requests的时候,这个字段在不在?
requests也不行,proxy-authorization情书头也被过滤了
那我觉得是httpbin的问题。你应该用Charles来检查。
这样看看发出去是有proxy-authorization这个字段的是吗?
是的
END