收集的一批NTP资源

emmm之前和泡研究某些反射攻击时候遗留下来的产物。现在并没有啥用了,就丢出来啦。
资源NTP.txt
如果要扫描脚本和攻击脚本的话可以找我要_(:з)∠)_

Tags: ntp

Python 魔术方法

日常记录
原文地址:介绍Python的魔术方法 - Magic Method


__init__我们很熟悉了,它在对象初始化的时候调用,我们一般将它理解为"构造函数".

实际上, 当我们调用x = SomeClass()的时候调用,__init__并不是第一个执行的, __new__才是。所以准确来说,是__new__和__init__共同构成了"构造函数".

__new__是用来创建类并返回这个类的实例, 而__init__只是将传入的参数来初始化该实例.

__new__在创建一个实例的过程中必定会被调用,但__init__就不一定,比如通过pickle.load的方式反序列化一个实例时就不会调用__init__。

__new__方法总是需要返回该类的一个实例,而__init__不能返回除了None的任何值。


<!--more-->


----------
__getattr__(self, name)
该方法定义了你试图访问一个不存在的属性时的行为。因此,重载该方法可以实现捕获错误拼写然后进行重定向, 或者对一些废弃的属性进行警告。

__setattr__(self, name, value)
__setattr__ 是实现封装的解决方案,它定义了你对属性进行赋值和修改操作时的行为。
不管对象的某个属性是否存在,它都允许你为该属性进行赋值,因此你可以为属性的值进行自定义操作。有一点需要注意,实现__setattr__时要避免"无限递归"的错误,下面的代码示例中会提到。

__delattr__(self, name)
__delattr__与__setattr__很像,只是它定义的是你删除属性时的行为。实现__delattr__是同时要避免"无限递归"的错误。

__getattribute__(self, name)
__getattribute__定义了你的属性被访问时的行为,相比较,__getattr__只有该属性不存在时才会起作用。
因此,在支持__getattribute__的Python版本,调用__getattr__前必定会调用 __getattribute__。__getattribute__同样要避免"无限递归"的错误。
需要提醒的是,最好不要尝试去实现__getattribute__,因为很少见到这种做法,而且很容易出bug。


----------
__get__(self, instance, owner)
参数instance是拥有者类的实例。参数owner是拥有者类本身。__get__在其拥有者对其读值的时候调用。

__set__(self, instance, value)
__set__在其拥有者对其进行修改值的时候调用。

__delete__(self, instance)
__delete__在其拥有者对其进行删除的时候调用。


----------

__len__(self)
需要返回数值类型,以表示容器的长度。该方法在可变容器和不可变容器中必须实现。

__getitem__(self, key)
当你执行self[key]的时候,调用的就是该方法。该方法在可变容器和不可变容器中也都必须实现。
调用的时候,如果key的类型错误,该方法应该抛出TypeError;
如果没法返回key对应的数值时,该方法应该抛出ValueError。

__setitem__(self, key, value)
当你执行self[key] = value时,调用的是该方法。

__delitem__(self, key)
当你执行del self[key]的时候,调用的是该方法。

__iter__(self)
该方法需要返回一个迭代器(iterator)。当你执行for x in container: 或者使用iter(container)时,该方法被调用。

__reversed__(self)
如果想要该数据结构被內建函数reversed()支持,就还需要实现该方法。

__contains__(self, item)
如果定义了该方法,那么在执行item in container 或者 item not in container时该方法就会被调用。
如果没有定义,那么Python会迭代容器中的元素来一个一个比较,从而决定返回True或者False。

__missing__(self, key)
dict字典类型会有该方法,它定义了key如果在容器中找不到时触发的行为。
比如d = {'a': 1}, 当你执行d[notexist]时,d.__missing__['notexist']就会被调用。


----------
__enter__(self)
__enter__会返回一个值,并赋值给as关键词之后的变量。在这里,你可以定义代码段开始的一些操作。

__exit__(self, exception_type, exception_value, traceback)
__exit__定义了代码段结束后的一些操作,可以这里执行一些清除操作,或者做一些代码段结束后需要立即执行的命令,比如文件的关闭,socket断开等。如果代码段成功结束,那么exception_type, exception_value, traceback 三个参数传进来时都将为None。如果代码段抛出异常,那么传进来的三个参数将分别为: 异常的类型,异常的值,异常的追踪栈。
如果__exit__返回True, 那么with声明下的代码段的一切异常将会被屏蔽。
如果__exit__返回None, 那么如果有异常,异常将正常抛出,这时候with的作用将不会显现出来。


----------
__getinitargs__(self)
如果你希望unpickle时,__init__方法能够调用,那么就需要定义__getinitargs__, 该方法需要返回一系列参数的元组,这些参数就是传给__init__的参数。

该方法只对old-style class有效。所谓old-style class,指的是不继承自任何对象的类,往往定义时这样表示: class A:, 而非class A(object):

__getnewargs__(self)
跟__getinitargs__很类似,只不过返回的参数元组将传值给__new__

__getstate__(self)
在调用pickle.dump时,默认是对象的__dict__属性被存储,如果你要修改这种行为,可以在__getstate__方法中返回一个state。state将在调用pickle.load时传值给__setstate__

__setstate__(self, state)
一般来说,定义了__getstate__,就需要相应地定义__setstate__来对__getstate__返回的state进行处理。

__reduce__(self)
如果pickle的数据包含了自定义的扩展类(比如使用C语言实现的Python扩展类)时,就需要通过实现__reduce__方法来控制行为了。由于使用过于生僻,这里就不展开继续讲解了。

令人容易混淆的是,我们知道, reduce()是Python的一个內建函数, 需要指出__reduce__并非定义了reduce()的行为,二者没有关系。

__reduce_ex__(self)
__reduce_ex__ 是为了兼容性而存在的, 如果定义了__reduce_ex__, 它将代替__reduce__ 执行。


----------
比较运算符
__cmp__(self, other)
如果该方法返回负数,说明self < other; 返回正数,说明self > other; 返回0说明self == other。
强烈不推荐来定义__cmp__, 取而代之, 最好分别定义__lt__等方法从而实现比较功能。
__cmp__在Python3中被废弃了。

__eq__(self, other)
定义了比较操作符==的行为.

__ne__(self, other)
定义了比较操作符!=的行为.

__lt__(self, other)
定义了比较操作符<的行为.

__gt__(self, other)
定义了比较操作符>的行为.

__le__(self, other)
定义了比较操作符<=的行为.

__ge__(self, other)
定义了比较操作符>=的行为.

下面我们定义一种类型Word, 它会使用单词的长度来进行大小的比较, 而不是采用str的比较方式。
但是为了避免 Word('bar') == Word('foo') 这种违背直觉的情况出现,并没有定义__eq__, 因此Word会使用它的父类(str)中的__eq__来进行比较。


----------

一元运算符和函数
__pos__(self)
实现了'+'号一元运算符(比如+some_object)

__neg__(self)
实现了'-'号一元运算符(比如-some_object)

__invert__(self)
实现了~号一元运算符(比如~some_object)

__abs__(self)
实现了abs()內建函数.

__round__(self, n)
实现了round()内建函数. 参数n表示四舍五进的精度.

__floor__(self)
实现了math.round(), 向下取整.

__ceil__(self)
实现了math.ceil(), 向上取整.

__trunc__(self)
实现了math.trunc(), 向0取整.

算术运算符
__add__(self, other)
实现了加号运算.

__sub__(self, other)
实现了减号运算.

__mul__(self, other)
实现了乘法运算.

__floordiv__(self, other)
实现了//运算符.

__div__(self, other)
实现了/运算符. 该方法在Python3中废弃. 原因是Python3中,division默认就是true division.

__truediv__(self, other)
实现了true division. 只有你声明了from __future__ import division该方法才会生效.

__mod__(self, other)
实现了%运算符, 取余运算.

__divmod__(self, other)
实现了divmod()內建函数.

__pow__(self, other)
实现了**操作. N次方操作.

__lshift__(self, other)
实现了位操作<<.

__rshift__(self, other)
实现了位操作>>.

__and__(self, other)
实现了位操作&.

__or__(self, other)
实现了位操作|

__xor__(self, other)
实现了位操作^


----------
类型转化
__int__(self)
实现了类型转化为int的行为.

__long__(self)
实现了类型转化为long的行为.

__float__(self)
实现了类型转化为float的行为.

__complex__(self)
实现了类型转化为complex(复数, 也即1+2j这样的虚数)的行为.

__oct__(self)
实现了类型转化为八进制数的行为.

__hex__(self)
实现了类型转化为十六进制数的行为.

__index__(self)


----------
__str__(self)
对实例使用str()时调用。

__repr__(self)
对实例使用repr()时调用。str()和repr()都是返回一个代表该实例的字符串,
主要区别在于: str()的返回值要方便人来看,而repr()的返回值要方便计算机看。

__unicode__(self)
对实例使用unicode()时调用。unicode()与str()的区别在于: 前者返回值是unicode, 后者返回值是str。unicode和str都是basestring的子类。

当你对一个类只定义了__str__但没定义__unicode__时,__unicode__会根据__str__的返回值自动实现,即return unicode(self.__str__());
但返回来则不成立。


----------
__format__(self, formatstr)
"Hello, {0:abc}".format(a)等价于format(a, "abc"), 等价于a.__format__("abc")。

这在需要格式化展示对象的时候非常有用,比如格式化时间对象。

__hash__(self)
对实例使用hash()时调用, 返回值是数值类型。

__nonzero__(self)
对实例使用bool()时调用, 返回True或者False。
你可能会问, 为什么不是命名为__bool__? 我也不知道。
我只知道该方法在Python3中改名为__bool__了。

__dir__(self)
对实例使用dir()时调用。通常实现该方法是没必要的。

__sizeof__(self)
对实例使用sys.getsizeof()时调用。返回对象的大小,单位是bytes。

__instancecheck__(self, instance)
对实例调用isinstance(instance, class)时调用。 返回值是布尔值。它会判断instance是否是该类的实例。

__subclasscheck__(self, subclass)
对实例使用issubclass(subclass, class)时调用。返回值是布尔值。它会判断subclass否是该类的子类。

__copy__(self)
对实例使用copy.copy()时调用。返回"浅复制"的对象。

__deepcopy__(self, memodict={})
对实例使用copy.deepcopy()时调用。返回"深复制"的对象。

阅读全文...

Tags: 记录

Minipanz重新上线&近况

网址:www.Minipanz.com
6c224f4a20a446232fd982f09b2274.jpg

用了Ero的服务器emmm,并且加入了ssl(相比本破站hhhhh

现在日常能用电脑的时间也只有周六的下午五点到周天下午四点,时间好少啊_(:з」∠)_

当然这种日子估计再过五六次就结束了,毕竟距离高考也只剩48天了。

实不相瞒,非常尴尬的是我在距离这高考几十多天才真正了解了高中知识的学习方法。相比之前高一高二简直就在虚度光阴,计算机计算机没学好,音乐音乐不会,成绩又是如此垃圾。

然后在这几个月中,第二次认识到了自己能力的不足,对于学习的态度就是利用高三这个借口来逃避,借此沉沦。

一无是处,却装作无所不能

不过虽然如此。学业因素也是很大一部分。虽然十分渴望研究自己喜欢的东西,但是毕竟应试教育这作大山还是压着我喘不过气来,不过这种日子应该快结束了(?),虽然我不知道大学的生活,但是对于前辈们对大学的描述却是两极分化,而我自然只能已美好的方向去期待了。

我也不期待什么,只要有空闲的时间让我研究我喜爱的东西就行了。

顺带说说最近的行动吧,开始经营Ero之后,深刻认识到了自己Linux应用水平的不足,于是购买了鸟哥的Linux笔记在上课时候看(没错就是上课时候,看完之后茅塞顿开,让我懂得了许许多多的使用知识以及技巧和大致构架,让我成功对Linux有了个模糊的概念。

同时在模仿他人部署应用,毕竟我目前感觉小东西搞了一堆,但是真正能用的服务确确实实没有多少,桌面端程序写太多了_(:з」∠)_

说到了学习,虽说我是艺考生,但是我成绩也才240,看起来有个全省一百名以内的排名,但是全省理科音乐生也不过才千人,所以这个成绩是很差的。

目前能稳定拉分的只有语文和生物了,我目前的打算是能达到本二线,再加上今年应该会降分数线,这样我就能上理科A批啦qwq!!目前主要方的是物理和数学,化学我已经放弃了,用来看之前那个鸟哥Linux了hhhh。

顺便说说上周,上周就修了和minipanz官网,还有写了个短链接的api,花了二十分钟,不过还有些小瑕疵和前端没写,所以并没有部署,打算这周解决Ero主页的问题,毕竟Ero要转型,之前的那个方案我觉得并不适合。并且还要把ero资源界面的样式写了_(:з」∠)_,以及erobbs的api弄出来。

目前应该就是这么多了,不过感觉这周可能会鸽

Tags: none

博客改动

  • 删除Qplay
  • 删除pjax
  • 正式完全兼容IE系列(逃
Tags: none

博客三周年啦~~~~

不知不觉,三年过去了,时间飞逝。当初是中考,现在我已经正在为了高考而奋斗了_(:з」∠)_。

随着年龄的增长,我也愈发愈觉得时间过得飞快。

从相对论来说这也许是对的,毕竟刚出生的娃一年的概念对他们来说无比漫长,因为他们没有经历过一年,根本没有这个的刻度尺,然而对于十八岁的人来说一年就相当于他们的人生的十八分之一,对于三十岁的人来说一年就相当于他们人生的三十分之一。

其实这个站当初并没有想到想要办多久,⑨BIE这个称呼也是随手打出来的。然后也慢慢的变成了现在的惯用称呼。

正所谓“没有意义就是最大的意义”是不是(笑

三周年了,虽然说我也是建站三周年的人了,但是对于web技术却十分的不懂,我也是个奇怪的站长。

可能是因为我常常放着不管的缘故吧。

博客随着我的修改也变得惨不忍睹,但是意外的却能用。

(虽然被蚊子吐槽你一个网页里面引用了三个各种不同版本的jq。hhhhhh

虽然我口口声声自己是后端狗,对前端不熟悉,然而我也知道,这只不过是我逃避的借口。

沉溺于后端小小的成就中,却不想花经历学习前端,却只能用这些借口骗自己。

其实我对于前端也是十分的向往,幻想着每次开坑都能写出漂亮的UI,毕竟最近开的好几十个坑就是碍于没有漂亮的界面所以搁置的。

(虽然说编写界面确实对我来说有点心里阴影就是了,无数的控件创建,无数的事件绑定,无数的坐标对其以及坐标计算。。。然而这些都是*屎MFC的锅

高考只剩六十多天了啊。想起开这个站的时候我距离中考时间也是只有三个月。

历史总是惊人的相似,然而我觉得这次的结果必将大有不同。

中考的失败导致高中三年的堕落(怠惰),因为完全没有时间研究自己喜欢的东西

这次高考希望我能找个好大学,拥有时间。时间,时间!

什么情况下干什么事,这就是我。

因此,也希望大学四年,这个小破站能一直陪伴着我。

Tags: 博客

占坑-大妈之家爬虫

1.jpg
2.jpg
3、.jpg
先占坑,没啥难度。

Tags: none

~魔法使之家~:Extra-WEB-API

预计路由

  • 额外功能类

    • 番组提醒表
    • 待续。。。
  • 讨论版类

讨论版类

用户登陆预计打算使用typecho内置的。/但是如何对接还未想好。/
对接已想好,利用header的js读取cookies像后端发送。
然后后端利用这cookies访问前端的插件验证身份。
目前打算仿照贴吧。
预计使用python-flask

额外功能类

番组提醒表:
犹豫使用typecho插件还是python,php我是真的不会啊QAQ

目前设计的讨论版

全篇结构=字典
也就是说不是结构.xxx而是结构[xxx]

对于所有的路由,都有PACKAGE结构来返回

PACKAGE

type : str  事件名称
data : T[]  任意结构/结构数组
code : int  事件代码
msg  : ste  详细信息

其中,data返回的是不同的结构体,结构体与type(事件绑定)。

目前的type(事件)有

TIPS_GET 获取帖子信息

TIPE_GET

tid : int 帖子ID
title : str 帖子标题
content : str 帖子内容
send : int 发送者uid
last : int 最后回复者的uid
ctime : long 帖子创建时间
mtime : long 帖子最后修改时间
comm_num : int 评论数
is_stuck : int 是否置顶
is_marked :int 是否加精

TIPS_LIST 获取帖子列表
未完待续

Tags: ero.ink

~魔法使之家~

https://ero.ink/
魔法使之家是一个以GalGame和轻小说推荐感想为主的博客网站,目前人手紧缺招募作者投稿和各种编辑~有意请加群558226805~
1.png

Tags: none

telnetBBS

闲着无聊和天台一起搞出来的。并木有什么技术含量
一个玩具而已,虽说基础功能是完成了的,但是拿来用还是元元不可能的。
因为天台他上学了,所以这个玩具就搁置啦
1.png
2.png
3.png
源码在这,得先运行py的main.py再运行golang的telnet.go
然后推荐使用Putty或者xshell连接,windows自带的那个连接器是另外一个协议我们还没写_(:з)∠)_
telnetBBS.rar

Tags: golang, telnet, bbs

新年快乐

越来越怠惰了。农历的正月初一,对于我来说才是正真的新年,也就说。再过几个小时就新年啦。
音乐考试也考完了。考了个不怎么理想,但是也不会太坏的成绩,理科排名107.。文科嘛emmmm估计都飘到400名左右啦。
自从为了依靠准备来已经快四个月没有上课了啊,再过三个月就是高考了。我为自己感觉好方啊啊啊。
最近这几天和蚊子沉迷深夜开车hhhh导致越来越怠惰,甚至怠惰到我都不开始写代码而是开始了摸鱼。
我也不知道为什么会突然翻出这个好久没用的板子,打着技术退步非常多的osu突发奇想开始画起了画。
废话可能有点多了,先祝诸位新年快乐,反正我这个站也没啥人看hhhhh
不知不觉,再过两个月,这个站就满三年了啊。
当初还是中考的时候突发奇想办的呢,时间过得真快。这都高考了。
嘛,话不多说了,再祝诸位新年快乐。
来自:好想吃零食又不能吃明明有那么多零食让我吃但我却正上吐下泻胃不舒服窝在房间里啥都干不了的⑨BIE

Tags: none
文章总数:103篇 分类总数:3个