主頁 >  其他 > 二次元看過來!基于 Serverless 的舞萌音游查分器

二次元看過來!基于 Serverless 的舞萌音游查分器

2020-11-13 01:06:56 其他

前言

本文作者:遠哥制造

一、什么是 Serverless Framework

Serverless Framework 是業界非常受歡迎的無服務器應用框架,開發者無需關心底層資源即可部署完整可用的 Serverless 應用架構,Serverless Framework 具有資源編排、自動伸縮、事件驅動等能力,覆寫編碼、除錯、測驗、部署等全生命周期,幫助開發者通過聯動云資源,迅速構建 Serverless 應用

沒錯,就像幾天前看到的《Serverless 之歌》里面所說 I'm gonna reduce your ops,它能大幅度減輕運維壓力,那就開始動手吧!注意開發環境需 Node.js 10.0+,一鍵全域安裝:npm install -g serverless

二、騰訊云 Flask Serverless Component 簡介

騰訊云 Flask Serverless Component,支持 Restful API 服務的部署

按照慣例首先來部署 demo

  1. 本地 PyCharm 創建一個新的 Flask 專案

Flask

  1. 手動創建內容為 Flaskrequirements.txt

  2. 按照配置檔案創建 serverless.yml,例如本專案實際使用的完整內容,初次使用可自行酌情簡化

  3. 將密匙寫入 .env(當然,部署的時候也可以選擇微信掃碼授權)

TENCENT_SECRET_ID=<rm>
TENCENT_SECRET_KEY=<rm>

成功部署

成功訪問

這樣基于 ServerlessFlask Demo 就部署完成了,接下來繼續按照自己的方式寫剩下的代碼,

三、maimai_DX

maimai 是一款街機音游,

在這里放一張動圖自行體會一下,原始素材來自「外錄 maimai」QZKago Requiem Re:MASTER ALLPERFECT Player: Ruri*R

QZKago

  • 日本官網
  • 海外官網

在國內,只能從微信公眾號中查看成績,而且每次進頁面都需要微信的授權登錄,并且里面存盤的記錄有條數限制,相冊只存最新 10 條,游戲記錄只存最新 50 條(就是一個佇列,先進先出的那種),這就是本專案的初衷,自己打出來的每一次成績都應該保存好,

舞萌查分器

成果展示了,前端 Fomantic-UI,后端 Flask+MySQLgh 開源地址:https://github.com/yuangezhizao/maimai_DX_CN_probe,歡迎 watchstarfork & pr

https://maimai.yuangezhizao.cn

目前實裝了如下功能:

  1. wechat_archive中包含 主頁游戲資料相冊游戲記錄:對原始網頁進行了修改,并且添加了 Highcharts 庫可視化曲線顯示變化
  2. record包含 記錄(分頁)差異(分頁):即自寫的快速預覽頁面,是查看歷史記錄和成績變化的非常實用的功能
  3. info包含 鋪面串列:即全部鋪面基礎資訊,輸出到一個頁面中,方便頁面內搜索

開發程序

接下來將按照時間的順序,描述一下開發程序中遇到的問題以及如何解決

1. Serverless Framework Component 組態檔

Serverless Framework 現在是 V2 版本,也就是說不能沿襲之前版本的 serverless.yml 組態檔,需要重新對照檔案修改,

a. 之前版本會根據 requirements.txt 自動下載第三方庫到專案目錄下的 .serverless 檔案夾下的 requirements 檔案夾以參加最終的依賴打包,壓縮成 zip 檔案再最終上傳至云函式運行環境

b. 最新版本不再自動下載,需要自行處理,官方示例的參考用法:hook

  src:
    # TODO: 安裝python專案依賴到專案當前目錄
    hook: 'pip3 install -r requirements.txt -t ./requirements'
    dist: ./
    include:
      - source: ./requirements
        prefix: ../ # prefix, can make ./requirements files/dir to ./
    exclude:
      - .env
      - 'requirements/**'

注釋寫的很清楚,使用 hook 去根據 requirements.txt 下載第三方庫到專案目錄下的 requirements 檔案夾,避免第三方庫導致本地檔案夾管理混亂,然后 include 中指定了專案目錄下的 requirements 檔案夾在云端的 prefix,即對于云端的云函式運行環境,requirements 檔案夾中的第三方庫和專案目錄是同級的,可以正常匯入使用,當然了,本地運行使用的是全域的第三方庫,并未用到專案目錄下的 requirements 檔案夾,

2. 層管理概述

前者(指 b)是一個很合理的設計,不過在實際環境中卻發現了新的問題,完全一致的組態檔

  src:
    hook: 'pip3 install -r ./src/requirements.txt -t ./src/requirements'
    dist: ./src
    include:
      - source: ./requirements
        prefix: ../
    exclude:
      - .env

在 macOS 下成功部署之后,云端的云函式編輯器中看到 requirements 檔案夾不存在,第三方庫和專案目錄是同級的,的確沒問題,

不過在 Windows 下成功部署之后,云端的云函式編輯器中看到了 requirements 檔案夾?也就是說第三方庫和專案目錄非同級,于是訪問就會出現 no module found 的匯入報錯了……

反復嘗試修改 prefix 等配置項到最后也沒有除錯成功,因此在這里提出兩種解決方法:

a. 修改組態檔如下,讓本地的第三方庫和專案目錄同級存在

  src:
    hook: 'pip3 install -r ./src/requirements.txt -t ./src'
    dist: ./src
    exclude:
      - .env

不過隨著專案和第三方庫的擴大檔案夾會越來越多,非常不便于管理

b. 使用云函式提供的

雖然 sls deploy 部署的速度很快,但是如果可以在部署時只上傳專案代碼而不去處理依賴不就更好了嘛,這樣跨終協作端開發只需要關心專案代碼就 ok 了,再也不需要管理依賴!

并且還有一點,想在 SCF 控制臺中在線編輯函式代碼需要將部署程式包保持在 10MB 以下,不要以為十兆很大,很快就用光也是可能的

僅顯示入口檔案

具體如何操作呢?那就是要將第三方庫檔案夾直接打包并創建為層,則在函式代碼中可直接通過 import 參考,畢竟有些特殊庫比如 Brotli,Windows 下沒有 vc++ 的話就只能去https://lfd.uci.edu/~gohlke/pythonlibs下載 wheel 安裝,

macOS 下正常安裝之后會得到 _brotli.cpython-39-darwin.sobrotli.py 中再以 import _brotli 的形式匯入,不過又出新問題了,云端會匯入報錯ModuleNotFoundError: No module named '_brotli'"

當前 SCF 的執行環境建立在以下基礎上:標準 CentOS 7.2

為了解決問題嘗試在 linux 環境下打包,拿起手頭的 CentOS 8.2 云主機開始操作

pip3 install -r requirements.txt -t ./layer --upgrade
zip -r layer.zip ./layer

然后就可以把打包的 layer.zip 下載到本地再傳上去了,暫時可以一勞永逸了,

層詳細資訊

對了,組態檔可以移除 hook 并添加 layers

  src:
    src: ./src
    exclude:
      - .env
      - '__pycache__/**'
  layers:
    - name: maimai_DX_CN_probe
      version: 3

已系結層的函式被觸發運行,啟動并發實體時,將會解壓加載函式的運行代碼至 /var/user/ 目錄下,同時會將層內容解壓加載至 /opt 目錄下,若需使用或訪問的檔案 file,放置在創建層時壓縮檔案的根目錄下,則在解壓加載后,可直接通過目錄 /opt/file 訪問到該檔案,若在創建層時,通過檔案夾進行壓縮 dir/file,則在函式運行時需通過 /opt/dir/file 訪問具體檔案

體驗更快的部署速度吧!因為第三方庫已經打包在“層”中了

但是奇怪的是,在云端匯入任意第三方庫均會報錯,于是除錯著查看 path

for path in sys.path:
    print(path)

/var/runtime/python3
/var/user
/opt
/var/lang/python3/lib/python36.zip
/var/lang/python3/lib/python3.6
/var/lang/python3/lib/python3.6/lib-dynload
/var/lang/python3/lib/python3.6/site-packages
/var/lang/python3/lib/python3.6/site-packages/pip-18.0-py3.6.egg

再查看 opt

import os
dirs = os.listdir('/opt')

for file in dirs:
   print(file)

layer

這才恍然大悟,打包時需要在當前路徑直接打包,上傳之后“層”更新為版本 2,但是 ModuleNotFoundError: No module named '_brotli' 報錯依舊,并且確認 _brotli.cpython-38-x86_64-linux-gnu.so 檔案實際存在,

而在 CentOSmacOS 上本地匯入均沒有問題,這可就犯難了,又想到很有可能是 python 版本的問題,于是去尋找現成 3.6 的環境,比如這里:

3.6.8

再再次上傳之后“層”更新為版本 3,訪問成功!課題終于解決,原來是需要相同版本Python 3.6 運行環境

3.自定義入口檔案

components原始碼tencent-flask/src/_shims/中的檔案每次都會被原封不動地重新打包上傳到云端云函式中,目前有兩個檔案

a. severless_wsgi.py,作用是 converts an AWS API Gateway proxied request to a WSGI request.
WSGI的全稱是Python Web Server Gateway InterfaceWeb 服務器網關介面,它是為Python語言定義的Web服務器和Web應用程式或框架之間的一種簡單而通用的介面

b. sl_handler.py,就是默認的入口檔案

import app  # Replace with your actual application
import severless_wsgi

# If you need to send additional content types as text, add then directly
# to the whitelist:
#
# serverless_wsgi.TEXT_MIME_TYPES.append("application/custom+json")

def handler(event, context):
    return severless_wsgi.handle_request(app.app, event, context)

針對于自己的專案,使用了 Flask工廠函式,為了避免每次都要在云端云函式編輯器中重新修改,最好的方法是自定義入口檔案:

import severless_wsgi

from maimai_DX_CN_probe import create_app  # Replace with your actual application


# If you need to send additional content types as text, add then directly
# to the whitelist:
#
# serverless_wsgi.TEXT_MIME_TYPES.append("application/custom+json")

def handler(event, context):
    return severless_wsgi.handle_request(create_app(), event, context)

再指定 執行方法serverless_handler.handler,就 ok 了

4. url_for 輸出 http 而非 httpsURL

在視圖函式中重定向到 url_for 所生成的鏈接都是 http,而不是 https……其實這個問題 Flask 的檔案 Standalone WSGI Containers有描述到

說到底這并不是 Flask 的問題,而是 WSGI 環境所導致的問題,推薦的方法是使用中間件,官方也給出了 ProxyFix

from werkzeug.middleware.proxy_fix import ProxyFix
app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_host=1)

但是是從X-Forwarded-Proto中取的值,apigw中其為http,因此并不能直接使用這個ProxyFix
因為Flask的社區還算完善,參考資料很多前人都鋪好了路,所以直接去Stack Overflow搜解決方法,Flask url_for generating http URL instead of https
問題出現的原因如圖:Browser ----- HTTPS ----> Reverse proxy(apigw) ----- HTTP ----> Flask
因為自己在apigw設定了前端型別https,也就是說Browser端是不可能使用http訪問到的,通過列印environ可知

{
  "CONTENT_LENGTH": "0",
  "CONTENT_TYPE": "",
  "PATH_INFO": "/",
  "QUERY_STRING": "",
  "REMOTE_ADDR": "",
  "REMOTE_USER": "",
  "REQUEST_METHOD": "GET",
  "SCRIPT_NAME": "",
  "SERVER_NAME": "maimai.yuangezhizao.cn",
  "SERVER_PORT": "80",
  "SERVER_PROTOCOL": "HTTP/1.1",
  "wsgi.errors": <__main__.CustomIO object at 0x7feda2224630>,
  "wsgi.input": <_io.BytesIO object at 0x7fed97093410>,
  "wsgi.multiprocess": False,
  "wsgi.multithread": False,
  "wsgi.run_once": False,
  "wsgi.url_scheme": "http",
  "wsgi.version": (1, 0),
  "serverless.authorizer": None,
  "serverless.event": "<rm>",
  "serverless.context": "<rm>",
  "API_GATEWAY_AUTHORIZER": None,
  "event": "<rm>",
  "context": "<rm>",
  "HTTP_ACCEPT": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
  "HTTP_ACCEPT_ENCODING": "gzip, deflate, br",
  "HTTP_ACCEPT_LANGUAGE": "zh-CN,zh;q=0.9,en;q=0.8",
  "HTTP_CONNECTION": "keep-alive",
  "HTTP_COOKIE": "<rm>",
  "HTTP_ENDPOINT_TIMEOUT": "15",
  "HTTP_HOST": "maimai.yuangezhizao.cn",
  "HTTP_SEC_FETCH_DEST": "document",
  "HTTP_SEC_FETCH_MODE": "navigate",
  "HTTP_SEC_FETCH_SITE": "none",
  "HTTP_SEC_FETCH_USER": "?1",
  "HTTP_UPGRADE_INSECURE_REQUESTS": "1",
  "HTTP_USER_AGENT": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36",
  "HTTP_X_ANONYMOUS_CONSUMER": "true",
  "HTTP_X_API_REQUESTID": "5bcb29af2ca18c1e6d7b1ec5ff7b5427",
  "HTTP_X_API_SCHEME": "https",
  "HTTP_X_B3_TRACEID": "5bcb29af2ca18c1e6d7b1ec5ff7b5427",
  "HTTP_X_QUALIFIER": "$LATEST"
}

HTTP_X_FORWARDED_PROTO對應apigw里的變數是HTTP_X_API_SCHEME,故解決方法如下:app.wsgi_app = ReverseProxied(app.wsgi_app)

class ReverseProxied(object):
    def __init__(self, app):
        self.app = app

    def __call__(self, environ, start_response):
        scheme = environ.get('HTTP_X_FORWARDED_PROTO')
        if scheme:
            environ['wsgi.url_scheme'] = scheme
        return self.app(environ, start_response)

app = Flask(__name__)
app.wsgi_app = ReverseProxied(app.wsgi_app)

5. 回應資料壓縮

不論是IISApache還是Nginx,都提供有壓縮功能,畢竟自己在用的云主機外網上行只有1M帶寬,壓縮后對于縮短首屏時間的效果提升極為顯著,對于Serverless,回應資料是通過API Gateway傳輸到客戶端,那么壓縮也應該是它所具備的能力(雖然外網速度大幅度提高,但是該壓碩訓是得壓縮),然而并沒有找到……看到某些js框架原生有提供壓縮功能,于是打算添加Flask自行壓縮的功能,簡單來講,通過訂閱@app.after_request信號并呼叫第三方庫brotlicompress方法即可(
在寫之前去gh上看看有沒有現成的輪子拓展,果然有……剛開始用的是Flask-Zipper,后來換成Flask-Compress解決了問題
實測3.1 MB的資料采用brotli壓縮演算法減至76.1 kB

壓縮前

壓縮后

br

6. apigw 三種環境不同路徑所產生的影響

默認的映射如下:

ID 環境名 訪問路徑
1 發布 release
2 預發布 prepub
3 測驗 test

因為配置的static_url_path"",即static檔案夾是映射到/路徑下的,所以再加上releaseprepubtest訪問就自然404
因此系結了自定義域名使用自定義路徑映射,并將發布環境的訪問路徑設定成/,這樣再訪問發布環境就沒有問題了

ID 環境名 訪問路徑
1 發布 /
2 預發布 prepub
3 測驗 test

7. 同時訪問私有網路外網

云函式中可以利用到的云端資料庫有如下幾種

  • 云資料庫CDB,需要私有網路訪問,雖然可以通過外網訪問但是能走內網就不走外網
  • PostgreSQL for Serverless(ServerlessDB),這個是官方給Serverless配的pg資料庫
  • 云開發TCB中的MongoDB,沒記錯的話需要開通內測權限訪問

因為自己是從舊網站遷移過來的,資料暫時還沒有遷移,因此直接訪問原始云資料庫CDB,在云函式配置所屬網路所屬子網即可,但是此時會無法訪問外網,一種解決方法是開啟公網訪問公網固定IP,就可以同時訪問內網和外網資源了,關于組態檔,本專案是單實體應用也就是說專案中只引入一個組件,部署時只生成一個組件實體,但是如果想引入資料庫的話,就得新增組件了,目前在Flask Components中并沒有提供資料庫相關的配置項,因此需要專案中引入多個組件,部署時生成多個組件實體,也很簡單,創建一個含有serverless.yml的新檔案夾,用來配置postgresql

component: postgresql # (必填) 組件名稱,此處為 postgresql
name: maimai_DX_CN_probe # (必選) 組件實體名稱.
org: yuangezhizao # (可選) 用于記錄組織資訊,默認值為您的騰訊云賬戶 appid,必須為字串
app: yuangezhizao # (可選) 用于記錄組織資訊. 默認與name相同,必須為字串
stage: dev # (可選) 用于區分環境資訊,默認值是 dev

inputs:
  region: ap-beijing # 可選 ap-guangzhou, ap-shanghai, ap-beijing
  zone: ap-beijing-3 # 可選 ap-guangzhou-2, ap-shanghai-2, ap-beijing-3
  dBInstanceName: maimai_DX_CN_probe
  #  projectId: 0
  dBVersion: 10.4
  dBCharset: UTF8
  vpcConfig:
    vpcId: vpc-mrg5ak88
    subnetId: subnet-hqwa51dh
  extranetAccess: false

然后在終端cd到這個目錄再執行sls deploy即可成功部署postgresql

yum install python3-devel postgresql-devel
pip install psycopg2

結果

import psycopg2
File "/opt/psycopg2/__init__.py", line 51, in &lt;module&gt;
from psycopg2._psycopg import (                     # noqa
ImportError: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory

下列問題處于解決之中:

  • http 強制跳轉 https
  • 測驗環境推送至生產環境

至此,本文就結束了,歡迎交流!

One More Thing

立即體驗騰訊云 Serverless Demo,領取 Serverless 新用戶禮包 ?? serverless/start

歡迎訪問:Serverless 中文網!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/212718.html

標籤:其他

上一篇:搭建Elk集群搭建 ES-filebeat-logstrash-kibana

下一篇:從cmd進入python時報錯'gbk' codec can't decode byte...請問是什么問題?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more