Mikele

Mikele 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织 toyourheart163.github.io 编辑
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

Mikele 发布了文章 · 1月16日

自动化快餐隧道配送系统🚄🍔🍚🌽

What

EDT 使用小型隧道来快递小尺寸的物品🚄🍔🍚🌽

Why

收外卖时麻烦。

How 运作方式

商家把货品放到隧道,扫描货品,符合条件的自动下快递订单,自动放进隧道,然后来一辆相应尺寸的小小货车。
开启自动驾驶模式,到达客户指定地点,从隧道口把货品送出来,可以是客户的家中,公司,或者隧道出口,客户取走快递,订单完成。

使用自动驾驶小小货车运输货品

隧道大小:通风口大小
货车大小:快餐盒大小,由快递公司设计大小

哪些商品

  1. 外卖
  2. 淘宝上的小商品

受影响的行业

  1. 电池
  2. 快递
  3. 回收
  4. 空气
  5. 食品
  6. 包装

7.

好处

  1. 分离货运与载人
  2. 减少CO2

github 里不定时更新

查看原文

赞 0 收藏 0 评论 0

Mikele 发布了文章 · 2020-06-18

golang 设置 GOPATH 的好方法

golang 每次开一个终端时都要设置一下 GOPATH 非常不爽

我发现在 ~/.zshrc 中设置 export GOPATH=$PWD 就可以自动设置为当前目录了

bash 同理可在 ~/.bashrc 中设置

查看原文

赞 0 收藏 0 评论 1

Mikele 发布了文章 · 2020-05-04

JS逆向破解码云,曲线加快github下载速度

github 下载速度太慢了。
先用导入到码云再下载下来,然后到.git/config 修改git repo url 为原来的
还是有点麻烦,那就做成一个工具吧。
# 简单技巧 下载最后的commit
git clone {url} --depth 1

JS逆向,公钥加密学,base64编码


  1. 先获取码云的登陆页面;
  2. python 用户名,密码登陆不行,只能寻找登陆规律了,也就是JS逆向。点击登陆看看有哪些XHR的url,什么断点呀都不行,又又找到了一个encrypt开头的js文件。秘密所在。累。。
  3. 获取csrf-token以及公钥;
  4. 用csrf-token 加上RSA加密 password;
  5. 用加密后的password登陆,逆向成功。

导入到 gitee


  1. 获取用来导入github repo的页面,后来发观有csrf-token保护。
  2. 解析新的csrf-token
  3. 在请求头中加入csrf-token,导入成功。泪渀

代码

# 获取登陆页面
import re

import requests

s = requests.Session()

headers = {'User-Agent': 'Mozilla/5.0 Gecko/20100101'}
url_login = 'https://gitee.com/login'
resp_get_login = s.get(login_url, headers=headers)


def parse_token(response):
    # 解析 token
    result = re.search('<meta content="(.*?)" name="csrf-token"', response.text)
    return result.group(1)

详细代码,参考我的repo git2giteehttps://github.com/toyourhear...

加密方法

'''
根据公钥加密方法。对应开头为 encrypt 的js文件
'''
from base64 import b64encode

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5


def encrypt_pwd(password, public_key):
    '''
    :params public_key:
        -----BEGIN PUBLIC KEY----\nkeys\n-----END ...-----
    :params password: csrf-token + '$gitee$' + password
    '''
    rsa_key = RSA.import_key(public_key)
    encryptor = PKCS1_v1_5.new(rsa_key)
    cipher = b64encode(encryptor.encrypt(password.encode('utf-8')))
    return cipher.decode('utf-8')
check project private 时发现码云可以调换一下检查顺序,节省宽带等。

给gitee的优化建议

  1. 先检查自己有没有导入过;
  2. 检查别人有没有导入过。

做成命令行工具

python 下载

pip install git2gitee

使用

# 参数说明 -u 用户名 -k 密码 repo地址 https 协议开头的
git2gitee -u mikele -k not_real_password repo_url

Todo

[x] 检查是否有人已经导入过了
[x] 检查是否已经导入到自己的repo
[] 下载到本地,自动修改config url

法律声明,不要滥用。有什么问题发我邮箱。

破解csrf-token提交方法是用django的管理页面,练习出来的

查看原文

赞 1 收藏 1 评论 0

Mikele 发布了文章 · 2020-05-01

自动写代码的程序python jinja2

重复写代码太累了,那么是否有自动帮我们写代码的东东呢?

选择一
做成公用组件

选择二
用模板生成代码

选择三
在评论里告诉我:)

在python中有模板引擎Jinja2. 不过一般看到它时都是介绍生成html模板的。
其实它是可以生成任何UTF-8的代码的。

如何生成呢?

# 代码生成器
from jinja2 import Template

# 先生成一个单词

tmpl = '{{ name }}'  # 模板
tmp = Template(tmpl)  # 载入模板
result = tmp.render(name='mikele')  # 输入变量,生成结果
print(result)  # mikele

把上面的功能定义成函数

def render(tmpl, *args, **kwds):
    '''jinja2 render'''
    vars = dict(*args, **kwds)
    tmp = Template(tmpl)
    return tmp.render(vars).strip()

生成一个列表循环

fruits = ['apple', 'banana']

tmpl_list = """
{% for fruit in fruits %}
{{ fruit }}
{% endfor %}
"""

result = render(tmpl_list, fruits=fruits)
print(result)

apple

banana

在 % 前面加个 - 可以去掉换行符

tmpl_list = """
{% for fruit in fruits -%}
{{ loop.index }}. {{ fruit }}
{% endfor %}
"""

print(render(tmpl_list, fruits=fruits))
  1. apple
  2. banana

生成一个函数

tmpl_fun = """
def {{fun}}():
    pass
"""

print(render(tmpl_fun, fun='eat'))
# 结果
def eat():
    pass

生成类

tmpl_class = """
class {{ model }}s:
    pass
"""

print(render(tmpl_class, model='Blog'))
class Blogs:
    pass

导入模块,类...

tmpl_import = """
from person import {{ models|join(', ') }}
"""

print(render(tmpl_import, models=['Teacher', 'Student']))

from person import Teacher, Student

判断

tmpl_if = """
{% if a > 2 %}{{ a }}{% else %}#小于2{% endif %}
"""

print(render(tmpl_if, a=3))

保存代码到程序里 codes.py

def save(data, filename='codes.py'):
    with open(filename, 'w') as f:
        f.write(data)
        
save(data=result)

有了这些就可以组合起来自动生成程序了。

如果变量少,可以用一个模板文件。
如果几个模板要拼在一起,就用直接像这样定义模板变量。再定义变量。

暂且介绍到这。。。

更多功能请到 Jinja2 官网查询 Jinja2模板

有什么问题可以留言,或者发我邮箱.
查看原文

赞 0 收藏 0 评论 1

Mikele 发布了文章 · 2020-03-18

自动执行修改后的脚本(python go cpp)可扩展

当文件上次的修改时间,与这次不同时,重新执行脚本

github

安装

# 终端执行
pip install seeing

使用

seeing hello.py
seeing hello.go
seeing -s 3 hello.go  # 间隔3秒检查 hello.go 的修改时间

原理

# 当脚本修改时间不同时,调用所用的语言执行脚本。
go run hello.go
g++ hello.cpp && ./a.out

扩展

seeing -c sh hello.sh
seeing -c open hello.html
seeing -c node hello.js
seeing -c scrapy spider.py

代码

def monitor_file_modify_every(seconds, filename, command):
    # 当文件上次的修改时间,与这次不同时,重新执行脚本
    st = os.stat(filename).st_mtime
    while True:
        f = os.stat(filename)
        if st != f.st_mtime:
            st = f.st_mtime
            if filename.endswith('.cpp'):
                cmd = "g++ {} && ./a.out"
            elif filename.endswith('.c'):
                cmd = "gcc {} && ./a.out"
            elif filename.endswith('.py'):
                cmd = "python {}"
            elif filename.endswith('.go'):
                cmd = "go run {}"
            else:
                cmd = command + " {}"
            os.system(cmd.format(filename))
        try:
            time.sleep(seconds)
        except KeyboardInterrupt:
            os._exit(0)
查看原文

赞 0 收藏 0 评论 0

Mikele 发布了文章 · 2020-01-30

冠状病毒防疫

"""
会碰上病毒 ? 正确洗手 : 没事
医护人员 & 接触病毒 ? 全身防护 : 正确洗手
"""

__author__ = "麦可乐" 

if 手可能接触到病毒:
    if 手可能碰到脸:
        香皂水洗手20秒.
if 脸可能接触到病毒:
    if 错误戴口罩:
        警告("易染病毒,不要戴口罩")    
    elif 长时间正确戴口罩:
        警告("几乎不可能")
if 口罩生产量 <= 需求量:
    警告("留给病患及医护人员")

url

查看原文

赞 0 收藏 0 评论 0

Mikele 发布了文章 · 2020-01-02

Scrapy分布式爬虫可视化调度框架Gerapy升级django版本自用

Gerapy 是一个基于Scrapyd、Scarpyd API、Django、Vue.js、Element UI搭建的分布式爬虫管理框架。

由于里面的django版本是1.11.26的,不兼容我常用的版本,所以换成2.2.x的

git clone https://github.com/Gerapy/Gerapy

修改requirements.txt

django==2.2.6

修改gerapy/server/core/urls.py

from django.urls import re_path  # 修改第一行

# 搜索替换url为re_path,如下
urlpatterns = [
    re_path(r'^$', views.index, name='index'),
    ...
]

修改后的我上传到了

git clone -b dev https://github.com/toyourheart163/Gerapy

到setup.py同级文件下安装

python3 setup.py install

使用中的问题

调了时期后时间还是有问题。

查看原文

赞 0 收藏 0 评论 0

Mikele 关注了专栏 · 2019-12-27

SegmentFault 社区运营

SegmentFault 思否社区管理官方专栏,在这里发布 SegmentFault 思否社区运营和管理相关的最新消息。

关注 18247

Mikele 关注了专栏 · 2019-12-27

科创人

专访科技创业者的小媒体,专注分享粘皮带肉、有血有泪的创业经验。

关注 1246

Mikele 关注了用户 · 2019-12-27

日拱一兵 @tanrigongyibing

欢迎关注,公众号「日拱一兵」,以读侦探小说思维趣味轻松学习Java技术

关注 23808

认证与成就

  • 获得 1 次点赞
  • 获得 1 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 1 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2019-12-27
个人主页被 463 人浏览