深度优先与广度优先遍历文件(夹)信息
最近做了一个对系统目录进行管理的页面,涉及到了对目录中的文件夹和文件的信息读取的问题,刚好回顾了一下文件夹遍历的算法。
由于需要在页面中体现目录层级关系,需要返回的json中有parent_id这样标志符。当时第一个想法就是用递归的方式来遍历,就可以得到对应的关系,但是这样的话,同一目录的文件(夹)的id就不能连续了,如果使用广度优先遍历的话就可以解决这个问题。
最近做了一个对系统目录进行管理的页面,涉及到了对目录中的文件夹和文件的信息读取的问题,刚好回顾了一下文件夹遍历的算法。
由于需要在页面中体现目录层级关系,需要返回的json中有parent_id这样标志符。当时第一个想法就是用递归的方式来遍历,就可以得到对应的关系,但是这样的话,同一目录的文件(夹)的id就不能连续了,如果使用广度优先遍历的话就可以解决这个问题。
Pandas + Openpyxl process excel
| date | update |
|---|---|
| 2021-03-11 | 1. Initial |
最近帮同学写了一个数据处理的小程序,用python开发,用来处理excel数据。
其实excel本身就能实现大部分功能,并不一定要用程序处理,但用代码的话更灵活一些。
数据本身不能share,但是计算逻辑应该无所谓,所以代码已经放在haredata。
程序主要用到了python库pandas + openpyxl,写了非常简单的ui界面来选择输入的文件,处理完之后数据输出写入到新的文件里。
为了使用方便,最后打包成了exe。
| date | update |
|---|---|
| 2021-02-17 | 1. 修复了不同视频大小的压缩算法 2. 修改代码结构并支持并发预处理文件 |
| 2021-02-21 | 1. 调整代码结构,封装到类中 |
| 2. 优化对文件夹的批处理 | |
| 3. 视频最后合成的分辨率由视频本身自动决定 |
最近看到tiktok上有许多有意思的视频,所以想下载下来。但下过来的视频会有水印,主要是视频后3秒会有抖音的视频水印,很影响观感。
对于文字水印,需要用别的方式来下载,不太方便,后面可以再想办法。
现在的需求是:我在手机上下了n个视频,copy到电脑上之后,希望能去掉片尾的视频水印,并合并成一个大的视频。
有Hue可以用来查询hive和impala的数据,但是使用起来不是特别方便,尤其想要同时把数据导出来的时候。
原来想尝试用java的方式,也向同事要了demo,但是需要keytab,而且还是倾向于用python。
最后尝试了一些python库失败(主要是这些module依赖的东西比较多,需要很多环境的配置,但是都没有权限,比较麻烦),从同事那得知他们的Tableau本地用的是odbc的连接方式。
之前试过用pyodbc去连接sql server数据库,而且理论上使用odbc,只要数据源配置好就可以了,api的使用是共通的,不管什么语言都可以用odbc的方式去访问。
2020真的很特殊,年初的疫情,让整个世界陷入了混乱。
好在国内的抗疫还是卓有成效,现在都已经恢复正常的工作生活了。
但是因为美国的疫情,道富还是实行AB组的方式, 两周两周的轮换在家和在公司办公,现在大家都习惯了。
如果国内的asg site也建立起来的话,那在家办公也就会很流畅了。
不得不说这场疫情给改变了我们的很多生活方式。
最近生成的报表比原来的逻辑多了些字段,想要老的报表也加上,所以用 python 写了脚本去处理,需要用来一些 mapping 的数据。pandas 有许多合并数据的方法,Concat 可以横向与纵向的合并,merge 可以实现横向的合并类似 sql 中的 join,append 则是纵向的合并。
最近解决了一个 hive 中报错的问题。HY 从最底层的 view 开始检查,最后发现在当前的 Sandbox/UAT2 环境中,对于 not in 中使用子查询的支持有问题。
这个问题导致了后续引用的 view 在建立时解析出错,会出现 Range Error 和 hive sql 解析出错。
解决的办法是使用别的语句替换,比如 not exists。
今天就想记录一下一些可行的替换方法,主要还是 not exists 和用 join
有时候需要从数据库中把数据导出来查看,可以在编辑器中直接拷出来或者导出来。
又或者像 weekly/monthly 的数据,我偶尔导一次,不想再打开 sqldeveloper 去操作 Oracle,所以就写了类似下面的工具。