对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)?

完整阅读本篇»

“小森林” 码工版

2020-06-28 作者:

明.陈全之《蓬窗日录》卷八:“春耕夏耨(nòu),敢辞涂足之勤;秋获冬藏,实切资身之望。”

日剧《小森林》,前后两部四集,全面的描绘出一个不甘挣扎于城市枯燥生活的妹子,返乡后独居,靠自己一双手打造返璞归真“小确幸”的图景,唯美、静心。本是2014/2015的片子,不知为何,去年突然火爆国内,还盖上“日版李子柒”的标签,颇觉给脑袋里整日萦绕“逃离北上广”的年轻人们一丝抚慰。

“农协开的小超市,冬雪中需步行一个半小时,而去临镇的大型城外超市购物,来回要一整天”,一句话下来,心凉半截;前可着村,但后不着店,换言之,一切靠自己了。

剧集展现给我们的,也确实如此:一日三餐,每餐结束之后,手头活计如果不是在准备下一餐,应该就是在准备下N餐(腌制发酵食品,或晾晒干制食品),日复一日,周而复始。另有国产美食剧集《一人食》好像也是在2014年上线的,并没有很火,我也没有看过,家里那口子倒是个不折不扣的美食爱好者。

洋洋洒洒说了这么多,跟码工又有几毛钱关系呢?码工嘛,又称“互联网从业者”,算是近年实体经济普遍乏力后,苦出身底层娃们为数不多的上升通道了。

所谓互联网大厂,自然有大厂的好处。流水线作业毕竟分工细,需求有人出,测试有人做,UI有人画,运维有人管,自己聚焦自己的一亩三分地;即使起新项目,研发主管还给脚手架工程做参考,说到底,搬砖就搬自己的砖,搬多少块结多少账,公平合理。要在大厂晋升,当然也是有讲究的。真材实料不可或缺,搬砖一路搬到CTO多半不可行;即使做技术主管,也得有点架构意识,当个“流水线线长”,知道不同目标需求下的技术组合和性能指标,关注外界趋势,跟合作项目组打太极,了解手底下那几个货适合搬什么砖,以及他们万一不干了,排队来搬砖的还有谁,等等。

言而总之,大厂工作如果不来点自黑,比拼个端午、中秋礼包设计,那真像极了城市生活两点一线,日子不停复制粘贴的感觉。作为移动互联网时代流水线工人,面对“弹性工作”、“996”等潜台词,再看看蒸蒸日上的业务,合同上不菲的现金和RSU,照旧叹一口气,进会议室继续抢项目撕B。

那你的意思是,码工也能回村自给自足,搞“一人码”?

也是,也不是。

全栈工程师不新鲜,算得上自给自足。至于要不要回村,您请自便,如果是农业创业,老板、市场、销售、PM、DevOps、运营、物流啥的您都一人扛了,咱也佩服;如若仅仅实现一人码,那大可不必,怎么也得考虑对接需求方要顺畅吧。

呃……废话太多,来点干货。

好吧,这篇围绕“一人码”的博文,其实来自于处理我“一人码”的一次线上故障。

完整阅读本篇»

基于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

完整阅读本篇»