HiKariのTechLab

光の技术屋


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 站点地图

  • 搜索

【Lua杂谈】犹豫就会败北——元表metatable解析

发表于 2019-06-12 | 更新于 2024-04-07 | 分类于 Lua杂谈

前言

在lua的学习过程当中,元表metatable的概念及用法是常见的障碍之一

元表,在其它lua杂谈等都提到过,是一种描述lua数据的属性以及行为的表。虽然官方给了set、account等例子详细讲解了metatable,但总还是缺乏些提炼。为了干翻这个痛点,这次,果断强上metatable的精髓。毕竟,犹豫就会败北~

元表有什么

我们首先就会有疑问:通过哪些属性指标,可以描述lua的数据呢?通过官方手册,我们可以很容易地找到答案。

在lua中,我们把元表中的key,也就是描述数据的属性指标,称之为event

我们可以把所有的event分为两组(括号中代表lua里的语法):

  1. 描述其基础性质的:

    • 属性索引:__index,__newindex
    • 长度:__len(#)
    • 函数形式:__call
    • 字符串形式:__tostring
  2. 描述其运算的:

    • 普通运算:__add(加+),__sub(减-),__mul(乘*),__div(除/),__mod(模%),__pow(乘方^),__unm(负-),__idiv(取整除//)
    • 位运算:__band(与&),__bor(或|),__bxor(异或~),__bnot(非~),__shl(左移<<),__shr(右移>>)
    • 关系运算:__concat(联结..),__eq(全等==),__lt(小于<),__lte(小于等于<=)

元表怎么用

先来看一段程序吧~

阅读全文 »

【DIY小记】Win10编程字体&主题设置全攻略

发表于 2019-06-01 | 更新于 2024-04-07 | 分类于 DIY小记

前言

编程需要纠结字体跟皮肤吗?肯定要纠结的啦= = = =

调理字体跟皮肤,就跟打扮房间一样。每当打开编程软件之时,要是看到清亮的字体,爽快的皮肤,心里肯定就特别踏实,码码起来肯定也就特别舒服。

是时候分享一下我的编程字体以及主题设置了!!!

阅读全文 »

【GitHub探索】python调试利器——pysnooper源码分析

发表于 2019-05-25 | 更新于 2024-04-07 | 分类于 GitHub探索

前言

这次又开了个新坑——GitHub探索,主要内容是试水当期GitHub上较火的repo

虽然top榜上各路新手教程跟经典老不死项目占据了大半江山,但清流总是会有的。

第一期就试水一下pysnooper吧,一个新奇实用的python调试器。

顺便源码分析一波,了解下python的debug操作。

废话不多说,进入正题~

pysnooper使用效果

通常,我们可以在函数上用pysnooper.snoop装饰器,给这个函数包装一个额外功能,实现在标准错误流打印函数debug信息的效果。比如说:

阅读全文 »

【Easy Python】最终话:重回首知识点,让python真正easy!

发表于 2019-05-19 | 更新于 2024-04-07 | 分类于 Easy Python

前言

Easy Python终于来到完结,我的领导也夸奖我写作非常的卖力用心。对此,我深表欣慰!

六章Python讲解,并不单纯是切磋代码技艺,而更是注重于每一行代码背后发生的事儿

为此,让我们一起重回首Easy Python系列,光荣收尾吧!

回顾

阅读全文 »

【Easy Python】第六话:multiprocessing——Python多进程并行

发表于 2019-05-11 | 更新于 2024-04-07 | 分类于 Easy Python

前言

前段时间,我和我的领导回到了母校,和我的师父师母聚餐。聚餐点了很多东西,大碗宽面,牛肉炒饭,韩国烤肉,吃都吃不完。虽然我的领导最近长得比以前p了些,但是吃饭速度还是慢悠悠。唉,要是我的领导能有个三头六臂,每个手都夹菜,每个头都去啃,那吃饭速度可就蹭蹭地涨上去了啊!

人无法三头六臂,但在Python里,我们可以做到。

并发&并行实验

要想实现三头六臂的效率,不走单一顺序流,我们不仅需要让多个任务能够并发(Concurrent),还能够并行(Parallel)运作。

假使吃饭吃到一半,人有三急,摘花回来继续用膳,那么如果把“吃饭”与“解手”当作两个任务,那么它们便是便是并发运作,但不并行。如果太追求效率,蹲坑恰饭,那便即是并发,也是并行了。

在Python中,我们可以用三种方式实现并发。但是并不是所有的方法,都支持并行。

这三种方法是:

阅读全文 »

【DIY小记】踏平Win10升级之坑——我们无法更新系统保留的分区

发表于 2019-05-01 | 更新于 2024-04-07 | 分类于 DIY小记

前言

前几天心血来潮,想把自己船上的Win10更新到18年10月的版本(1809),结果易升下载了更新之后,安装时提示“我们无法更新系统保留的分区”,于是一脸懵逼。

我们无法更新系统保留的分区

坑也是要慢慢踩的。熬了两夜,终于成功解决了这个问题,将Win10升级到了最新版本。

踩坑记录

原因分析

遇到这个问题后,笔者第一时间google百度了下解决方案,看到了以下几条:

阅读全文 »

【Lua杂谈】探索C API,开坑lnodelist

发表于 2019-04-20 | 更新于 2024-04-07 | 分类于 Lua杂谈

前言

最近一直在探索Lua的C API编程部分,上次实现了一个函数执行时间统计库:lfunctimer,这次就果断写了一个lnodelist来玩玩。在这期间,遇到了许多纠结的问题,因此果断做下分享~

测试用例现在贼少= =想要试用的同学可以走lnodelist的Github传送门,或者luarocks install lnodelist,就可以开始干起~

在Lua里,table充当着array以及hashmap两个角色,提供了简单的insert、remove、concat等功能。lnodelist则是独立于table之外建立一个崭新的list/array数据结构,暂时是一个双向链表。API的需求上,则兼并java的LinkedList跟js的array两种体系,列表如下:

阅读全文 »

【Easy Python】第五话:小试scikit-learn数据挖掘——newsgroup数据处理与文本分类

发表于 2019-04-14 | 更新于 2024-04-07 | 分类于 Easy Python

前言

数据挖掘(Data Mining),一般指从海量抓取的数据中经过一定的数据处理、算法,从而提取出有价值的信息的过程。它大体基于统计学、机器学习(Machine Learning)等原理,辅佐了人类的信息处理工作,为人工智能(AI)铺下道路。

幸运的是,似乎正是因数据挖掘而生的那样,Python社区中有各种数据挖掘相关的package,能够满足各种数据处理与算法模型构建需求。我们只需要pip/conda install 包名,然后查查api文档,熬几十行代码,就能玩一玩数据挖掘。

为此,在这一话,我们以自然语言处理(NLP)的文本分类(Text Classification)为例,设计一个最simple的,最old school的,以Python为例的,从数据获取到产生数据挖掘结果的流程。

文本分类是什么?

阅读全文 »

【Lua杂谈】debug.getinfo源码分析——使用C API重写lfunctimer

发表于 2019-04-07 | 更新于 2024-04-07 | 分类于 Lua杂谈

前言

昨天更新了一下lfunctimer,主要把hook更改为c api的形式,并且初步加了util和config的扩展

想要试用的同学的话可以点击上面clone下来,或者安装luarocks后执行下面命令安装~

luarocks install --server=http://luarocks.org/manifests/utmhikari lfunctimer

言归正传,利用lua原生的c api做debug相关操作会比lua自带的debug.getinfo来的快许多,我们可以来一探究竟

debug.getinfo源码分析

我们可以从官方下载源码搜索debug.getinfo的实现,此处以版本5.3.5为例。

debug.getinfo对应的源码是ldblib.c的db_getinfo函数,我们可以简单在ldblib.c的末尾中查到~

阅读全文 »

【Easy Python】第四话:爬虫初探——玩转豆瓣二百五(下)

发表于 2019-03-31 | 更新于 2024-04-07 | 分类于 Easy Python

前言

在上篇,我们获得了豆瓣二百五的电影URL,然后存储在了一个文件里。接下来,我们要访问每一个电影URL,深入敌后,获取情报~

所有的代码都已存储在我的Github仓库:Douban_250当中~

设置爬取规则

对于每一个电影,我们选择爬取如下内容(虽然电影列表页就能爬得到= =):

1
2
标题(title)、年份(year)、时长(time)、
导演(director)、类型(genre)、评分(score)

随意点击一个电影页面,用上篇所说的提取CSS选择器的方法,我们可以制作出每一种内容与内容提取规则的映射。如下所示:

阅读全文 »
1…192021
ひかり.HDQ

ひかり.HDQ

talk is cheap, code is rich
205 日志
14 分类
423 标签
GitHub Mail CSDN Juejin Steam Bilibili
© 2019 – 2025 ひかり.HDQ
|