对Python字典数组按Key求均值

2021-09-07 作者:

[ENG TITLE]: Calculate Mean Value by Keys in Python List of Nested-Dicts  

[OR]: Calculate Mean Value by Attributes in Python List of Objects

让我们考虑这样一种情况:现在你有个对象叫做“学生”,他们有年龄、身高、体重等多种数值属性。如何在不关心具体属性名称的前提下,采取简便手段计算多名学生任意属性的均值?

Let’s think about this case, say you have an object that represents single student of a group, and each student has at least his/her age, height, weight, and more attributes like these.

Now how to easily calculate mean value of each attribute within the student group, without caring about attribute names?

或许挺容易的,那么再考虑一下,如果给每名学生加个成绩单,成绩单里放着多科目成绩。以下级对象之实例作为上级实例属性,形成嵌套关系,此时怎么算最简洁呢?

Well, if it’s not a tough challenge, then let’s talk about those nested attributes (object as an attribute)?

完整阅读本篇»

基于Flask的简易webtelnet和webssh

2020-02-25 作者:

Chinese version README of the Github repo – flask-remote-terminal.

简而言之,一台具备多用户支持的,仅限使用telnet/ssh,访问远程固定地址的,web终端。

演示截图:


有啥稀罕的

  • 只可访问远程地址,非本机终端
  • 目前仅限telnet(支持十几年前老设备用)和ssh访问,代码中也可增加其他协议,但始终受控
  • 仅限访问固定远端地址(IP/域名),代码config可配,一旦服务运行后不可更改
  • 服务端session存储pid和fd等,用于多用户支持


参考项目


需求如此“扭曲”,何解

通过web终端去管理一台特定的中转机,其多数端口是(在特定时间段内)代理到真正需要管理的目标机。具体需求如下:

  • 同多数web terminal一样,浏览器即开即用,免安装
  • 只允许访问特定地址(中转机),避免被抓肉鸡
  • 只允许使用telnet和ssh进行连接,不可自选其他客户端命令,在此基础上允许用户自行输入用户名和端口号
  • 只用于远程连接,在用户exit退出终端后,也无法回到shell操作提供该服务的server
完整阅读本篇»

基于阿里云API实现简单DDNS

2019-02-28 作者:

This is a post talking about using Aliyun Domain Control API (and python sdk as well) to script a simple, self-own ddns service, with only one assumption – a public ip over WAN port of your router.

 

原始状态

光猫 <—> R7000主路由 <—> 需要出门的母鸡+小鸡们

 

设计思路

  • 办法1:破解光猫,将光猫与R7000桥接。
    • 优势:内网只有一层,简洁明了。
    • 劣势:打N通电话,下N多工具,还要将独立IPTV信道映射或proxy到R7000的某个LAN口。
  • 办法2:硬件不做任何变动,添加两层映射。
    • 优势:实施安全性高。
    • 劣势:理论上,走ddns经双层转发,传输性能受影响。
  • 总结:人老色衰,首选安全方案。

 

网络拓扑

【更新】代码已推至github,欢迎加星。

完整阅读本篇»

微信oAuth错误码10003最速解法

2018-04-06 作者:

服务号code两年没更新,最近花时间做了彻底重构,说白了差不多重新开发

填坑无数,信心上线后,点公号菜单跳页面时,遇到如下问题

redirect_uri域名与后台配置不一致,错误码:10003

OK,梳理一下,我的后台配置成啥了?(more)

完整阅读本篇»

Mysql full-text index query with SqlAlchemy

2017-11-24 作者:

结论:

  1. mysql fulltext index基本可用(试了natural language mode和boolean mode),尤其在表结构比较简单的前提下
  2. sqlalchemy自带的match关键字只能match单列的fulltext索引,多列的我们用如下办法自制 – 仅用于查询的话,完全够用
  3. 最重要的一点:数据量大时,一个query尽量只使用where match against,与其他的where some_column = ‘hello’要分开写(做成subquery)。如果写在一起,极有可能只有fulltext索引生效,而其他列的简单查询所对应的index不生效。

注册自己的Match子句

所有条件一起用于查询(前面1个filter不能触发已有index)

先做普通字段查询,join后再做fulltext检索(subquery和query各自使用自己的index)

参考自:https://stackoverflow.com/questions/14971619/proper-use-of-mysql-full-text-search-with-sqlalchemy

完整阅读本篇»

Python Thread Pool传参只一个怎么破?

2017-06-09 作者:

作为批量化操作的method,map比apply要方便简洁一些,至少不用for循环一堆东西
【注1】apply现已不用,因为实际使用基本等价于单进程操作
【注2】至于map之于map_async,及apply之于apply_async,是另外一个话题,可以参考这里
回到之前的话题,apply传参 – 可以清晰的看到,apply可以随意带args,多少个都没关系

有的同学可能要问 –
Q: 那如果两个(或多个)参数都是变参呢?
A: 开动一下脑筋吧 – 一起打进iterable里可好?
Q: 如果变参B与A不具备同样的iterable特性呢?
A: 擦的咧 – 那还map个毛啊。。。

完整阅读本篇»