分类目录归档:github

Httpbin-HTTP请求和响应服务,用Python+Flask编写

Pyinstaller-将Python程序打包为独立的可执行文件

PyInstaller概述

PyInstaller将Python应用程序及其所有依赖项捆绑到单个包中。用户无需安装Python解释器或任何模块即可运行打包的应用程序

文档: https://pyinstaller.readthedocs.io/
网站: http://www.pyinstaller.org/
代码: https://github.com/pyinstaller/pyinstaller

PyInstaller读取您编写的Python脚本。它分析您的代码以发现您的脚本执行所需的所有其他模块和库。然后,它会收集所有这些文件的副本–包括活动的Python解释器!–并将它们与脚本放在单个文件夹中,或者也可以放在单个可执行文件中

PyInstaller在Windows、MacOSX和GNU/Linux上进行了测试。但是,它不是交叉编译器:要制作Windows应用程序,您需要在Windows中运行PyInstaller;要制作GNU/Linux应用程序,需要在GNU/Linux等环境中运行它。PyInstaller已成功用于AIX、Solaris、FreeBSD和OpenBSD,但作为持续集成测试的一部分,没有针对它们进行测试

主要优势

  • 开箱即用,可与任何Python版本3.6-3.9配合使用
  • 完全多平台,利用操作系统支持加载动态库,确保完全兼容
  • 正确捆绑主要的Python包,如numpy、PyQt5、PySide2、Django、wxPython、matplotlib和其他开箱即用的包
  • 与许多开箱即用的第三方软件包兼容。(使外部包工作所需的所有技巧都已集成。)
  • 完全支持PyQt5、PySide2、wxPython、matplotlib或Django等库,无需手动处理插件或外部数据文件
  • 在OS X上使用代码签名
  • 在Windows上捆绑MS Visual C++DLL

安装

PyInstaller在PyPI上可用。您可以通过pip安装它:

pip install pyinstaller

要求和测试平台

  • 巨蟒:
  • 3.6-3.9
  • tinyaes1.0+(仅当使用字节码加密时)。与其安装天鹅座,pip install pyinstaller[encryption]取而代之的是
  • Windows(32位/64位):
  • PyInstaller应该可以在Windows 7或更新版本上运行,但我们只正式支持Windows 8+
  • 由于以下原因,当不使用虚拟环境时,我们不支持从Windows商店安装Pythonpermission errors那不是很容易修好的
  • GNU/Linux(32位/64位)
  • LDD:用于打印每个程序或共享库所需共享库的控制台应用程序。这通常可以在分发包glibc或libc-bin中找到
  • objdump:显示对象文件信息的控制台应用程序。这通常可以在分发包的binutils中找到
  • objcopy:复制和翻译目标文件的控制台应用程序。这通常也可以在分发包的binutils中找到
  • Mac OS X(64位):
  • Mac OS X 10.13(High Sierra)或更高版本

用法

基本用法非常简单,只需针对您的主脚本运行即可:

pyinstaller /path/to/yourscript.py

有关更多详细信息,请参阅manual

未经测试的平台

已经贡献了以下平台,欢迎对这些平台进行任何反馈或增强

  • FreeBSD
  • LDD
  • Solaris
  • LDD
  • 对象转储
  • AIX
  • AIX 6.1或更高版本。PyInstaller不能使用静态链接的Python库
  • LDD
  • PowerPC GNU/Linux(Debian)

在使用任何贡献的平台之前,您需要构建PyInstaller引导加载器,因为我们不提供二进制包。下载PyInstaller源代码,并构建引导加载器:

cd bootloader
python ./waf all

然后安装PyInstaller:

python setup.py install

或者直接从源代码(pyinstaller.py)使用它

支持

看见http://www.pyinstaller.org/support.html有关如何获得帮助以及商业支持的信息

此版本中的更改

您可以在以下位置找到此版本中更改的详细列表Changelog手册的一节

Http-prompt 构建在HTTPie之上的交互式命令行HTTP和API测试客户端,具有自动完成、语法突出显示等功能

GamestonkTerminal-彭博终端的自由/开源软件替代方案

Gamestonk终端是一个令人敬畏的股票和密码市场终端,它是为了好玩而开发的,而我看到我的GME股票暴跌。不过,嘿,我喜欢这个股票💎🙌

进展如何:

Gamestonk Terminal为投资研究提供了一个基于Python的现代集成环境,允许普通的Joe零售交易员利用最先进的数据科学和机器学习技术

作为一个基于Python的现代环境,GamestonkTerminal打开了对数据科学(Pandas、Numpy、Scipy、Jupyter)、机器学习(Pytorch、TensorFlow、SkLearning、FLAIR)和数据采集(Beautiful Soup)和众多第三方API中众多Python数据库的访问

捐赠

Gamestonk终端是一个免费的开源软件。这意味着整个代码库是公开的,任何用户都可以免费使用

我们的一个小团队一直在努力为项目提供尽可能多的更新,这是在工作时间之外完成的,通常是深夜来改进这个工具。虽然我们没有从Gamestonk终端赚到任何钱,但我们希望确保我们所有的用户都能从我们的软件中获得最好的投资。随着我们继续在这个项目上继续建设,我们将非常感谢任何形式的捐赠或支持,这样我们就可以购买更多的咖啡来为我们提供更多的燃料!

这是我们的Patreon页面:https://www.patreon.com/gamestonkterminal

有很多方法可以帮助支持商品及服务税。如果您想提供非货币性的帮助,请加入我们的discord与朋友共享终端也会有很大帮助。先谢谢猩猩

快速入门

安装

如果您想看安装过程的视频记录,@JohnnyDankSeed已经提供了一个here

user@mchow01已经提供了关于以下内容的教程how to run the terminal on an Apple M1

该项目支持Python 3.7、3.8和3.9

我们当前的建议是将此项目与Anaconda的Python发行版一起使用-可以是完整的Anaconda3 LatestMiniconda3 Latest该项目中的几个功能利用了机器学习。机器学习Python依赖项是可选的。如果您决定在以后添加机器学习功能,则使用Anaconda的Python发行版可能会获得更好的用户体验

  1. 启动项目

  1. Install Anaconda(它在AUR上以python或Miniconda3的形式出现!)

使用以下命令确认您拥有它:conda -V输出应该是类似以下内容的内容:conda 4.9.2

  1. 安装Git
conda install -c anaconda git
  1. 克隆项目
  • 通过HTTPS:git clone https://github.com/GamestonkTerminal/GamestonkTerminal.git
  • 通过SSH:git clone git@github.com:GamestonkTerminal/GamestonkTerminal.git
  1. 导航到项目的文件夹
cd GamestonkTerminal/
  1. 创建环境

您可以随心所欲地命名环境。尽管您可以使用如下名称:welikethestockthisisthewaydiamondhands,我们推荐一些简单直观的东西,比如gst这是因为从现在开始将使用这个名称。

conda env create -n gst --file build/conda/conda-3-8-env.yaml
  1. 激活虚拟环境
conda activate gst

注意:最后,您可以使用以下命令将其停用:conda deactivate

  1. 安装诗歌依赖项
poetry install

如果您在诗歌方面遇到问题(例如,在Windows系统上),只需使用pip安装Requirements.txt即可

pip install -r requirements.txt
  1. 你准备好玩游戏了!
python terminal.py
  1. (Windows-可选)加快未来的打开流程

安装Gamestonk终端后,您会发现一个名为“Gamestonk Terminal.bat”的文件。您可以使用此文件更快地打开Gamestonk终端。如果您愿意,可以将此文件移动到您的桌面。如果您在尝试运行批处理文件时遇到问题。如果您遇到批处理文件的问题,请编辑该文件并检查目录是否匹配。此文件假定您在安装时使用了默认目录

注:当您关闭终端并重新打开它时,您需要重新调用的唯一命令是conda activate gst在你打电话之前python terminal.py又一次

故障排除:如果您在安装时遇到问题,请查看我们的最新版本troubleshoot page

高级用户安装-机器学习

如果您是高级用户并使用其他Python发行版,我们有几个Requirements.txt文档可供您选择以下载项目依赖项

如果在步骤5中使用的是conda而不是build/conda/conda-3-8-env.yaml配置文件,请使用build/conda/conda-3-8-env-full

注意:在requirements.txt文件已经过测试并可用于此项目,但是,这些文件可能是较旧的版本。因此,建议用户在安装它们之前设置一个虚拟Python环境。这允许将不同项目所需的依赖项保存在不同的位置

如果您想使用可选的机器学习功能:

ENABLE_PREDICT = os.getenv("GTFF_ENABLE_PREDICT") or True
  • 安装可选的ML功能依赖项:
poetry install -E prediction

如果要设置坞站映像,请执行以下操作:

  • 构建码头:docker build .
  • 运行它:docker run -it gamestonkterminal:dev

注意:docker的问题是它不会输出matplotlib图形

更新终端

终端不断更新新功能和错误修复,因此,要更新您的终端,您可以运行:

git pull

要获取最新更改,请执行以下操作

如果由于您修改了一些python文件而导致此操作失败,并且与更新冲突,您可以使用:

git stash

然后,重新运行poetry installpip install -r requirements.txt要获取任何新的依赖项,请执行以下操作

安装完成后,您就可以开始游戏了

如果你stashed您以前所做的更改,您可以使用以下命令取消隐藏:

git stash pop

API密钥

该项目围绕几个不同API调用构建,无论是访问历史数据还是财务数据

以下是需要密钥的情况:

获得这些信息后,不要忘记更新config_terminal.py

或者,也可以将它们设置为以下环境变量:

网站 变量
Alpha Vantage GT_API_KEY_ALPHAVANTAGE
Binance GT_API_BINANCE_KEY
GT_API_BINANCE_SECRET
CoinMarketCap GT_CMC_API_KEY
GT_CMC_API_KEY
DEGIRO GT_DG_用户名
GT_DG_PASSWORD
GT_DG_TOTP_SECRET
FRED GT_API_FRED_KEY
Financial Modeling Prep GT_API_KEY_FINANCIALMODELINGPREP
Finhub GT_API_FINNHUB_KEY
News GT_API_NEWS_TOKEN
Oanda GT_OANDA_TOKEN
GT_OANDA_ACCOUNT
Polygon GT_API_POLYGON_KEY
Quandl GT_API_KEY_QUANDL
Reddit GT_API_Reddit_Client_ID
GT_API_Reddit_Client_Secret
GT_API_Reddit_用户名
GT_API_Reddit_USER_AGENT
GT_API_Reddit_Password
Tradier GT_Tradier_Token
Twitter GT_API_Twitter_KEY
GT_API_Twitter_SECRET_KEY
GT_API_Twitter_承载令牌

示例:

export GT_API_REDDIT_USERNAME=SexyYear

环境变量也可以在.env回购顶部的文件。git会忽略此文件,因此您的API密钥将保密。上面的示例存储在.env将是:

GT_API_REDDIT_USERNAME=SexyYear

请注意,GT_API_REDDIT_USER_AGENT获取Reddit API密钥时设置的脚本名称。请注意,获取每日OHLC值不需要有效的Alpha Vantage密钥

用法

首先加载感兴趣的自动收报机:

load -t GME

加载自动收报机后,菜单将扩展到其所有菜单

查看该股票的历史数据:

view

通过加载自动收报机并设置起始点对历史数据进行切片,例如

load -t GME -s 2020-06-04

使用进入技术分析菜单

ta

并使用以下条件运行SMA:

sma

但是,假设您想要更改窗口的长度,因为您不想走得太长,而是想做一个摆动,因此需要一个较小的窗口。检查SMA命令上有哪些可用设置:

sma -h

一旦看到这一点,请在标记参数后设置所需的参数。在这种情况下,要将长度窗口更改为10,我们必须执行以下操作:

sma -l 10

示例:

贡献

对这个项目的贡献主要有3种方式

对于在添加新功能的同时解释repo体系结构的1小时编码会议,请查看https://www.youtube.com/watch?v=9BMI9cleTTg

成为贡献者🦍

如果你买了DIP,我会推荐你,而股价却一直在下跌。你最好在石块上升的时候让自己忙碌起来。

  1. 分叉项目
  2. 创建您的要素分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 通过运行以下命令安装预提交挂接:pre-commit install每次提交更改时,Linters都将自动运行。在更改时,您必须重新提交
  5. 推送至您的分支机构(git push origin feature/AmazingFeature)
  6. 打开拉取请求

成为一名卡伦人🤷

推荐你是否采取了高买低卖的策略

我们感兴趣的是您对哪种产品的看法features会让你买得更高卖得更低

另外,如果你因为这个航站楼而坐了好几英里,别忘了报告一个bug这样团队就可以修正,并保持旧的方式

加入🙌💎帮派

如果红色是你最喜欢的颜色,而且你从不亏本出售

欢迎加入俱乐部,并随时支持这个令人惊叹的开源项目背后的开发人员。

许可证

在麻省理工学院的许可下分发。看见LICENSE了解更多信息

免责声明

“有几件事我不是.我不是猫.我不是机构投资者,也不是对冲基金.我没有客户,也不提供个性化的投资建议收取费用或佣金.”DFV

金融工具交易涉及高风险,包括损失部分或全部投资额的风险,可能并不适合所有投资者。在决定交易金融工具之前,您应该充分了解与金融市场交易相关的风险和成本,仔细考虑您的投资目标、经验水平和风险偏好,并在需要的地方寻求专业建议。商品及服务税中包含的数据不一定准确。对于因您的交易或您对所显示信息的依赖而造成的任何损失或损害,GST和本网站中包含的任何数据提供商将不承担任何责任。

联系人

Didier Rodrigues Lopesdro.lopes@campus.fct.unl.pt

Artem Veremyartem@veremey.net

James Maslekjmaslek11@gmail.com

欢迎在以下网址分享迷失色情、迷因或任何问题:

大声喊出:

  • pll_llq查维特拉HINXX:使用Qt创建GUI
    • 请联系我们的#gui不和谐通道
  • 1lluz10ncrspy,以及马蒂亚兹:在我们的登录页上工作https://gamestonkterminal.netlify.app
  • 梅根·霍恩:管理Twitter帐户
  • 阿罗坎人:通过发展负责Forex菜单
  • 查维特拉Deel18:为了德吉罗的整合
  • 可追踪性3:通过添加多个预设屏幕

其他贡献者

cClauss,shadycuz,lolrenx,buzzCraft,衣夹,arcutright,jperkins12,nodesocket,akx,sigaloid,pchaganti,danielorf,henrytdsimmons,rowanharley,sabujp,qTipTip,gmerrall,bfxavier,donno2048,noufal85,rmassoth,benkulbertis,ricleal-fugue,rmassoth,benkulbertis,ricleal-fugue,

确认

Tpot-使用遗传编程优化机器学习管道的Python自动机器学习工具

TPOT代表T基于REE的PipelineO优化T哦哦。将TPOT视为您的数据科学助理TPOT是一种Python自动机器学习工具,可使用遗传编程优化机器学习管道

TPOT将通过智能地探索数千个可能的管道来找到最适合您数据的管道,从而自动化机器学习中最繁琐的部分

一个机器学习流水线示例

一旦TPOT完成搜索(或者您厌倦了等待),它就会为您提供它找到的最佳管道的Python代码,这样您就可以从那里修补管道了

TPOT构建在SCRICKIT-LEARN之上,因此它生成的所有代码看起来都应该很熟悉。如果你熟悉SCRICKIT-不管怎样,还是要学

TPOT仍在积极发展中我们鼓励您定期检查此存储库是否有更新

有关TPOT的更多信息,请参阅project documentation

许可证

请参阅repository license有关TPOT的许可和使用信息

通常,我们已经授权TPOT使其尽可能广泛使用

安装

我们坚持TPOT installation instructions在文档中。TPOT需要Python的正常安装

用法

可以使用TPOTon the command linewith Python code

单击相应的链接以在文档中查找有关TPOT用法的更多信息

示例

分类

以下是光学识别手写数字数据集的最小工作示例

from tpot import TPOTClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split

digits = load_digits()
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target,
                                                    train_size=0.75, test_size=0.25, random_state=42)

tpot = TPOTClassifier(generations=5, population_size=50, verbosity=2, random_state=42)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export('tpot_digits_pipeline.py')

运行此代码应该会发现达到约98%测试准确率的管道,并且相应的Python代码应该导出到tpot_digits_pipeline.py文件,如下所示:

import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline, make_union
from sklearn.preprocessing import PolynomialFeatures
from tpot.builtins import StackingEstimator
from tpot.export_utils import set_param_recursive

# NOTE: Make sure that the outcome column is labeled 'target' in the data file
tpot_data = pd.read_csv('PATH/TO/DATA/FILE', sep='COLUMN_SEPARATOR', dtype=np.float64)
features = tpot_data.drop('target', axis=1)
training_features, testing_features, training_target, testing_target = \
            train_test_split(features, tpot_data['target'], random_state=42)

# Average CV score on the training set was: 0.9799428471757372
exported_pipeline = make_pipeline(
    PolynomialFeatures(degree=2, include_bias=False, interaction_only=False),
    StackingEstimator(estimator=LogisticRegression(C=0.1, dual=False, penalty="l1")),
    RandomForestClassifier(bootstrap=True, criterion="entropy", max_features=0.35000000000000003, min_samples_leaf=20, min_samples_split=19, n_estimators=100)
)
# Fix random state for all the steps in exported pipeline
set_param_recursive(exported_pipeline.steps, 'random_state', 42)

exported_pipeline.fit(training_features, training_target)
results = exported_pipeline.predict(testing_features)

回归

同样,TPOT可以针对回归问题优化管道。下面是使用Practice波士顿房价数据集的最小工作示例

from tpot import TPOTRegressor
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split

housing = load_boston()
X_train, X_test, y_train, y_test = train_test_split(housing.data, housing.target,
                                                    train_size=0.75, test_size=0.25, random_state=42)

tpot = TPOTRegressor(generations=5, population_size=50, verbosity=2, random_state=42)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export('tpot_boston_pipeline.py')

这将导致管道达到约12.77的均方误差(MSE),并且中的Python代码tpot_boston_pipeline.py应与以下内容类似:

import numpy as np
import pandas as pd
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import PolynomialFeatures
from tpot.export_utils import set_param_recursive

# NOTE: Make sure that the outcome column is labeled 'target' in the data file
tpot_data = pd.read_csv('PATH/TO/DATA/FILE', sep='COLUMN_SEPARATOR', dtype=np.float64)
features = tpot_data.drop('target', axis=1)
training_features, testing_features, training_target, testing_target = \
            train_test_split(features, tpot_data['target'], random_state=42)

# Average CV score on the training set was: -10.812040755234403
exported_pipeline = make_pipeline(
    PolynomialFeatures(degree=2, include_bias=False, interaction_only=False),
    ExtraTreesRegressor(bootstrap=False, max_features=0.5, min_samples_leaf=2, min_samples_split=3, n_estimators=100)
)
# Fix random state for all the steps in exported pipeline
set_param_recursive(exported_pipeline.steps, 'random_state', 42)

exported_pipeline.fit(training_features, training_target)
results = exported_pipeline.predict(testing_features)

请查看文档以了解more examples and tutorials

对TPOT的贡献

我们欢迎您的光临check the existing issues以获取要处理的错误或增强功能。如果您有扩展TPOT的想法,请file a new issue这样我们就可以讨论一下了

在提交任何投稿之前,请审阅我们的contribution guidelines

对TPOT有问题或有疑问吗?

check the existing open and closed issues看看您的问题是否已经得到处理。如果没有,file a new issue在此存储库上,以便我们可以检查您的问题

引用TPOT

如果您在科学出版物中使用TPOT,请考虑至少引用以下一篇论文:

陈天乐,傅维轩,杰森·H·摩尔(2020)。Scaling tree-based automated machine learning to biomedical big data with a feature set selector生物信息学36(1):250-256

BibTeX条目:

@article{le2020scaling,
  title={Scaling tree-based automated machine learning to biomedical big data with a feature set selector},
  author={Le, Trang T and Fu, Weixuan and Moore, Jason H},
  journal={Bioinformatics},
  volume={36},
  number={1},
  pages={250--256},
  year={2020},
  publisher={Oxford University Press}
}

兰德尔·S·奥尔森、瑞安·J·厄巴诺维茨、彼得·C·安德鲁斯、妮可·A·拉文德、拉克里斯·基德和杰森·H·摩尔(2016)。Automating biomedical data science through tree-based pipeline optimization进化计算的应用,第123-137页

BibTeX条目:

@inbook{Olson2016EvoBio,
    author={Olson, Randal S. and Urbanowicz, Ryan J. and Andrews, Peter C. and Lavender, Nicole A. and Kidd, La Creis and Moore, Jason H.},
    editor={Squillero, Giovanni and Burelli, Paolo},
    chapter={Automating Biomedical Data Science Through Tree-Based Pipeline Optimization},
    title={Applications of Evolutionary Computation: 19th European Conference, EvoApplications 2016, Porto, Portugal, March 30 -- April 1, 2016, Proceedings, Part I},
    year={2016},
    publisher={Springer International Publishing},
    pages={123--137},
    isbn={978-3-319-31204-0},
    doi={10.1007/978-3-319-31204-0_9},
    url={http://dx.doi.org/10.1007/978-3-319-31204-0_9}
}

兰德尔·S·奥尔森、内森·巴特利、瑞安·J·厄巴诺维奇和杰森·H·摩尔(2016)。Evaluation of a Tree-based Pipeline Optimization Tool for Automating Data ScienceGECCO 2016论文集,第485-492页

BibTeX条目:

@inproceedings{OlsonGECCO2016,
    author = {Olson, Randal S. and Bartley, Nathan and Urbanowicz, Ryan J. and Moore, Jason H.},
    title = {Evaluation of a Tree-based Pipeline Optimization Tool for Automating Data Science},
    booktitle = {Proceedings of the Genetic and Evolutionary Computation Conference 2016},
    series = {GECCO '16},
    year = {2016},
    isbn = {978-1-4503-4206-3},
    location = {Denver, Colorado, USA},
    pages = {485--492},
    numpages = {8},
    url = {http://doi.acm.org/10.1145/2908812.2908918},
    doi = {10.1145/2908812.2908918},
    acmid = {2908918},
    publisher = {ACM},
    address = {New York, NY, USA},
}

或者,您也可以使用以下DOI直接引用存储库:

支持TPOT

TPOT是在Computational Genetics LabUniversity of Pennsylvania有了来自NIH在赠款R01 AI117694项下。我们非常感谢美国国立卫生研究院和宾夕法尼亚大学在这个项目的发展过程中给予的支持

TPOT标志是由托德·纽穆伊斯(Todd Newmuis)设计的,他慷慨地为该项目贡献了时间

Chalice-面向AWS的Python无服务器微框架

Chalice是一个用python编写无服务器应用程序的框架。它允许您快速创建和部署使用AWS Lambda的应用程序。它提供:

  • 用于创建、部署和管理应用程序的命令行工具
  • 基于修饰器的API,用于与Amazon API Gateway、Amazon S3、Amazon SNS、Amazon SQS和其他AWS服务集成
  • 自动生成IAM策略

您可以创建睡觉接口:

from chalice import Chalice

app = Chalice(app_name="helloworld")

@app.route("/")
def index():
    return {"hello": "world"}

定期运行的任务:

from chalice import Chalice, Rate

app = Chalice(app_name="helloworld")

# Automatically runs every 5 minutes
@app.schedule(Rate(5, unit=Rate.MINUTES))
def periodic_task(event):
    return {"hello": "world"}

您可以将lambda函数连接到S3事件:

from chalice import Chalice

app = Chalice(app_name="helloworld")

# Whenever an object is uploaded to 'mybucket'
# this lambda function will be invoked.

@app.on_s3_event(bucket='mybucket')
def handler(event):
    print("Object uploaded for bucket: %s, key: %s"
          % (event.bucket, event.key))

以及SQS队列:

from chalice import Chalice

app = Chalice(app_name="helloworld")

# Invoke this lambda function whenever a message
# is sent to the ``my-queue-name`` SQS queue.

@app.on_sqs_message(queue='my-queue-name')
def handler(event):
    for record in event:
        print("Message body: %s" % record.body)

以及其他几个AWS资源

一旦您编写了代码,您只需运行chalice deployChalice负责部署您的应用程序

$ chalice deploy
...
https://endpoint/dev

$ curl https://endpoint/api
{"hello": "world"}

在不到30秒的时间内启动并运行。试一试这个项目,并在Github上与我们分享您的反馈

文档是可用的here

快速入门

在本教程中,您将使用chalice用于创建和部署基本睡觉应用编程接口的命令行实用程序。此快速入门使用Python3.7,但AWS Chalice支持AWS Lambda支持的所有版本的Python,包括python2.7、python3.6、python3.7、python3.8。我们建议您使用Python3的版本。您可以在Python download page

要安装Chalice,我们将首先在python3.7中创建并激活一个虚拟环境:

$ python3 --version
Python 3.7.3
$ python3 -m venv venv37
$ . venv37/bin/activate

接下来,我们将使用以下命令安装圣杯pip

$ python3 -m pip install chalice

您可以通过运行以下命令来验证您是否安装了圣杯:

$ chalice --help
Usage: chalice [OPTIONS] COMMAND [ARGS]...
...

凭据

在部署应用程序之前,请确保已配置凭据。如果您之前已将计算机配置为运行boto3(AWS SDK For Python)或AWS CLI,则可以跳过此部分

如果这是您第一次为AWS配置凭据,您可以按照以下步骤快速入门:

$ mkdir ~/.aws
$ cat >> ~/.aws/config
[default]
aws_access_key_id=YOUR_ACCESS_KEY_HERE
aws_secret_access_key=YOUR_SECRET_ACCESS_KEY
region=YOUR_REGION (such as us-west-2, us-west-1, etc)

如果需要有关所有支持的凭据配置方法的详细信息,请参阅boto3 docs

创建您的项目

接下来我们要做的是使用chalice用于创建新项目的命令:

$ chalice new-project helloworld

这将创建一个helloworld目录。cd放入此目录。您将看到已为您创建了几个文件:

$ cd helloworld
$ ls -la
drwxr-xr-x   .chalice
-rw-r--r--   app.py
-rw-r--r--   requirements.txt

您可以忽略.chalice目录,我们现在要关注的两个主要文件是app.pyrequirements.txt

我们来看一下app.py文件:

from chalice import Chalice

app = Chalice(app_name='helloworld')


@app.route('/')
def index():
    return {'hello': 'world'}

这个new-project命令创建了定义单个视图的示例应用程序,/,调用时将返回JSON正文{"hello": "world"}

正在部署

让我们部署此应用程序。一定要确保你在helloworld目录并运行chalice deploy

$ chalice deploy
Creating deployment package.
Creating IAM role: helloworld-dev
Creating lambda function: helloworld-dev
Creating Rest API
Resources deployed:
  - Lambda ARN: arn:aws:lambda:us-west-2:12345:function:helloworld-dev
  - Rest API URL: https://abcd.execute-api.us-west-2.amazonaws.com/api/

现在,您已经使用API Gateway和Lambda启动并运行了API:

$ curl https://qxea58oupc.execute-api.us-west-2.amazonaws.com/api/
{"hello": "world"}

尝试从中更改返回的词典index()功能。然后,您可以通过运行以下命令重新部署更改chalice deploy

下一步

现在,您已经使用以下工具创建了您的第一个应用程序chalice您可以修改您的app.py文件并重新运行chalice deploy要重新部署更改,请执行以下操作

此时,您可以采取以下几个步骤

  • Tutorials-从多个指导性教程中进行选择,这些教程将为您提供Chalice各种功能的分步示例
  • Topics-深入研究圣杯特定领域的文档。其中包含比教程更详细的文档
  • API Reference-有关Chalice公共API的所有类和方法的低级参考文档

如果您已经完成了对Chalice的实验,并且您想要进行清理,您可以使用chalice delete命令,则Chalice将删除它在运行chalice deploy命令

$ chalice delete
Deleting Rest API: abcd4kwyl4
Deleting function aws:arn:lambda:region:123456789:helloworld-dev
Deleting IAM Role helloworld-dev

反馈

我们也很想听到你的消息。请为您想要查看的其他功能创建任何Github问题,请访问https://github.com/aws/chalice/issues您也可以在GITER上与我们聊天:https://gitter.im/awslabs/chalice

Synapse-Synapse:Matrix 一个雄心勃勃的开放联合即时消息和VoIP新生态系统

Matrix是一个雄心勃勃的开放联合即时消息和VoIP新生态系统。要启动和运行,您需要了解的基本知识包括:
  • “黑客帝国”里的一切都发生在一个房间里。房间是分布式的,不存在于任何单个服务器上。可以使用方便的别名查找房间,例如#matrix:matrix.org#test:localhost:8448
  • 矩阵用户ID如下所示@matthew:matrix.org(尽管在将来,您通常会使用第三方标识符(3PID)来指代自己和他人:电子邮件地址、电话号码等,而不是操纵矩阵用户ID)

整体架构为:

client <----> homeserver <=====================> homeserver <----> client
       https://somewhere.org/_matrix      https://elsewhere.net/_matrix

#matrix:matrix.org是Matrix的官方支持室,任何客户端都可以从https://matrix.org/docs/projects/try-matrix-now.html或通过irc://irc.Libera.chat/Matrix上的IRC桥

Synapse目前正处于快速开发阶段,但从0.5版开始,我们相信它已经足够稳定,可以作为面向互联网的服务真正使用!

About Matrix

Matrix指定一组实用的RESTful HTTP JSON API作为开放标准,它们处理:

  • 创建和管理完全分布式的聊天室,没有单点控制或故障
  • 跨联合服务器和服务的全球开放网络最终一致的密码安全的房间状态同步
  • 在房间内使用(可选)端到端加密发送和接收可扩展消息
  • 邀请、加入、离开、踢、禁止会议室成员
  • 管理用户帐户(注册、登录、注销)
  • 使用电子邮件地址、电话号码、Facebook帐户等第三方ID(3PID)验证、识别和发现Matrix上的用户
  • 发出1:1 VoIP和视频呼叫

这些API旨在广泛的服务器、服务和客户端上实施,让开发人员在完全开放的Matrix生态系统之上构建消息传送和VoIP功能,而不是使用封闭或专有的解决方案。我们希望Matrix能成为新一代完全开放、可互操作的互联网消息传递和VoIP应用程序的基石

Synapse是由matrix.org的核心开发团队用Python/Twisted编写的Matrix的参考“本地服务器”实现。它的目的是展示Matrix的概念,让人们在代码库的上下文中查看规范,并让您运行自己的家庭服务器,通常帮助引导生态系统

在Matrix中,每个用户都运行一个或多个Matrix客户端,这些客户端连接到Matrix主服务器。家庭服务器存储他们所有的个人聊天历史记录和用户帐户信息-就像邮件客户端连接到IMAP/SMTP服务器一样。就像电子邮件一样,您可以运行自己的Matrix Home服务器并控制自己的通信和历史记录,也可以使用由其他人托管的服务器(例如matrix.org)-Matrix中没有单一控制点或强制服务提供商,这与WhatsApp、Facebook、Hangout等不同

我们邀请您加入#Matrix:matrix.org(通过https://matrix.org/docs/projects/try-matrix-now.html),运行送货上门服务,看看Matrix spec,并尝试使用APIsClient SDKs

感谢您使用Matrix!

Support

要获得安装或管理Synapse的支持,请加入#synapse:matrix.org(如果需要,可以从matrix.org帐户)并在那里提问。我们不将GitHub问题用于支持请求,仅用于错误报告和功能请求

Synapse Installation

Connecting to Synapse from a client

试用新的Synapse安装的最简单方法是从Web客户端连接到它

除非您在本地计算机上运行Synapse的测试实例,否则通常需要启用TLS支持,然后才能从客户端成功连接:请参见TLS certificates

一种简单的入门方法是通过Element登录或注册,地址为https://app.element.io/#/loginhttps://app.element.io/#/register分别为。您需要更改从其登录的服务器matrix.org并改为将Homeserver URL指定为https://<server_name>:8448(或仅https://<server_name>如果您正在使用反向代理)。如果您更喜欢使用其他客户端,请参阅我们的client breakdown

如果一切顺利,您至少应该能够登录、创建文件室并开始发送消息

Registering a new user from a client

默认情况下,禁用通过Matrix客户端注册新用户。要启用它,请指定enable_registration: true在……里面homeserver.yaml(然后建议还设置验证码-请参阅docs/CAPTCHA_SETUP.md)

一次enable_registration设置为true,则可以通过Matrix客户端注册用户

您的新用户名将部分由server_name,部分来自您在创建帐户时指定的本地部分。您的名字将采用以下形式:

@localpart:my.domain.name

(读作“at localpart on my dot domain dot name”)

与登录时一样,您需要指定“自定义服务器”。指定您需要的localpart在“用户名”框中

Security note

Matrix在某些API中提供用户提供的原始数据–具体地说,content
repository endpoints

虽然我们做出合理的努力来缓解XSS攻击(例如,通过使用CSP),则Matrix主服务器不应托管在托管其他Web应用程序的域上。这尤其适用于与Matrix Web客户端和其他敏感应用程序(如WebMail)共享域。看见https://developer.github.com/changes/2014-04-25-user-content-security了解更多信息

理想情况下,主服务器不应该简单地位于不同的子域上,而应该位于完全不同的子域上registered domain(也称为顶级站点或eTLD+1)。这是因为some attacks只要这两个应用程序共享相同的注册域,仍然是可能的

为了举例说明这一点,如果您的Element Web或其他敏感的Web应用程序托管在A.example1.com,理想情况下,您应该将Synapse托管在example2.com通过在上托管可提供一定程度的保护B.example1.com相反,因此这在某些情况下也是可以接受的。但是,您应该托管您的SynapseA.example1.com

请注意,以上所有内容仅指Synapse中使用的域public_baseurl设置。特别是,它对该服务器上托管的MXID中提到的域没有影响

遵循此建议可确保即使在Synapse中找到XSS,对其他应用程序的影响也将微乎其微

Upgrading an existing Synapse

升级synapse的说明在the upgrade notes请检查这些说明,因为某些版本的Synapse升级可能需要额外的步骤

Using a reverse proxy with Synapse

建议将反向代理(如nginxApacheCaddyHAProxyrelayd在Synapse面前。这样做的一个好处是,这意味着您可以向Matrix客户端公开默认的https端口(443),而无需使用root权限运行Synapse

有关配置的信息,请参见docs/reverse_proxy.md

Identity Servers

身份服务器负责将电子邮件地址和其他第三方ID(3PID)映射到矩阵用户ID,并在创建映射之前验证3PID的所有权

它们不是存储帐户或凭据的位置-它们位于家庭服务器上。身份服务器仅用于将第三方ID映射到矩阵ID

此过程对安全非常敏感,因为如果注册Matrix帐户或获取3PID数据太容易,则存在明显的垃圾邮件风险。长远来说,我们希望建立一个分散的系统来管理它(matrix-doc #712),但同时,在Matrix生态系统中管理可信身份的角色被外包给一群已知的可信生态系统合作伙伴,这些合作伙伴运行“Matrix Identity Server”,例如Sydent,其角色纯粹是验证和跟踪3PID登录并发布最终用户公钥

您可以托管您自己的Sydent副本,但这将阻止您通过Matrix生态系统中的其他用户的电子邮件地址联系到他们,并阻止他们找到您。因此,我们建议您使用位于https://matrix.orghttps://vector.im就目前而言

再次重申:仅当您选择将电子邮件地址与您的帐户相关联,或通过其他用户的电子邮件地址向其发送邀请时,才会使用身份服务器

Password reset

用户可以通过其客户端重置其密码。或者,服务器管理员可以使用admin API或者直接编辑数据库,如下所示

首先计算新密码的哈希:

$ ~/synapse/env/bin/hash_password
Password:
Confirm password:
$2a$12$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

然后更新users数据库中的表:

UPDATE users SET password_hash='$2a$12$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    WHERE name='@test:test.com';

Synapse Development

在Matrix上加入我们的开发人员社区:#synapse-dev:matrix.org

在为synapse设置开发环境之前,请确保已安装系统依赖项(如python头文件)请参阅Installing from source

要签出用于开发的synapse,请将git存储库克隆到您选择的工作目录中:

git clone https://github.com/matrix-org/synapse.git
cd synapse

Synapse有许多外部依赖项,最容易使用pip和viralenv进行安装:

python3 -m venv ./env
source ./env/bin/activate
pip install -e ".[all,test]"

这将运行下载所有需要的依赖项并将其安装到虚拟环境中的过程。如果任何依赖项安装失败,请尝试单独安装出现故障的模块:

pip install -e "module-name"

我们建议使用演示来启动在端口8080-8082上运行的3个联合实例

/demo/start.sh

(要停止,可以使用./demo/stop.sh)

如果您只想启动应用程序的单个实例并直接运行,请执行以下操作:

# Create the homeserver.yaml config once
python -m synapse.app.homeserver \
  --server-name my.domain.name \
  --config-path homeserver.yaml \
  --generate-config \
  --report-stats=[yes|no]

# Start the app
python -m synapse.app.homeserver --config-path homeserver.yaml

Running the unit tests

在启动和运行之后,您可能希望运行Synapse的单元测试来检查一切是否安装正确:

trial tests

这应该以“通过”的结果结束(请注意,确切的数字会有所不同):

Ran 1337 tests in 716.064s

PASSED (skips=15, successes=1322)

有关运行单元测试的更多提示,如运行特定测试或查看日志记录输出,请参见CONTRIBUTING doc

Running the Integration Tests

Synapse伴随着SyTest作为Matrix本地服务器集成测试套件,它使用HTTP请求来访问API,就像Matrix客户端一样。它可以直接从源树运行Synapse,因此不需要安装服务器

建议使用SyTest进行测试,以验证与客户端-服务器API相关的更改是否正常运行。请参阅SyTest installation
instructions
有关详细信息,请参阅

Platform dependencies

Synapse使用许多平台依赖项,如Python和PostgreSQL,目标是遵循受支持的上游版本。请参阅docs/deprecation_policy.md有关更多详细信息,请参阅文档

Troubleshooting

需要帮忙吗?在Matrix上加入我们的社区支持室:#synapse:matrix.org

Running out of File Handles

如果synapse用完了文件句柄,它通常会严重失败-100%CPU的实时锁定,和/或无法接受新的TCP连接(阻塞连接的客户端)。Matrix目前可以合法地使用大量文件句柄,这要归功于#Matrix:matrix.org这样包含数百个参与服务器的繁忙房间。当服务器第一次在房间中通话时,它将尝试同时连接到所有参与的服务器,这可能会耗尽DNS查询和HTTPS套接字之间的可用文件描述符,特别是在DNS响应较慢的情况下。(我们需要改进过去比全网状更好的路由算法,但截至2019年3月,这还没有发生)

如果您进入此故障模式,我们建议将打开文件句柄的最大数量增加到至少4096个(假设默认值为1024或256)。这通常通过编辑来完成/etc/security/limits.conf

另外,如果入站HTTP请求在处理过程中受阻,Synapse可能会泄漏文件句柄-例如,锁定后被阻塞或与远程服务器通信等。最佳诊断方法是匹配“已接收的请求”和“已处理的请求”日志行,并查找执行时间超过几秒钟的任何“已处理的请求”行。如果您看到此故障模式,请在#synapse:matrix.org上通知我们,以便我们可以帮助对其进行调试

Help!! Synapse is slow and eats all my RAM/CPU!

首先,确保您正在运行最新版本的Synapse,将Python 3与PostgreSQL数据库配合使用

Synapse的架构目前非常需要RAM-我们故意在RAM中缓存大量最近的房间数据和元数据,以加快常见请求的速度。我们将在将来改进这一点,但目前减少RAM使用(冒着放慢速度的风险)的最简单方法是将几乎没有文档记录的SYNAPSE_CACHE_FACTOR环境变量。默认值为0.5,可以减少内存受限环境中的RAM使用量,也可以在性能开始下降时增加此值

但是,由于缓存系数低而导致的性能下降(这在磁盘速度较慢的计算机上很常见)通常会导致由于积压的请求而导致内存使用量激增。在这种情况下,降低缓存因子会使情况变得更糟。取而代之的是,试着大幅增加它。2.0是个不错的起始值

使用libjemalloc还可以显著提高总体内存使用率,特别是在将RAM返还给操作系统方面。要使用它,只需在启动Synapse时将库放入LD_PRELOAD环境变量中即可。在Debian上,这可以通过安装libjemalloc1打包并将此行添加到/etc/default/matrix-synapse

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1

这可能会对Python 2.7产生重大影响-目前还不清楚它对Python 3.x有多大改进

如果您遇到Synapse进程本身的高CPU使用率,您可能会受到状态跟踪错误的影响,该错误会导致大量过多的传出联合请求(请参见discussion)。如果指标表明您的服务器发出的传出联合请求也远远多于您的用户活动所能解释的数量,这可能是一个原因。通过在Synapse配置文件中设置以下内容,可以解决该错误行为:

presence:
    enabled: false

People can’t accept room invitations from me

这里典型的失败模式是,您向某人发送加入房间或直接聊天的邀请,但当他们接受邀请时,他们会收到一个错误(通常类似于“无效签名”)。他们可能会在日志中看到类似以下内容:

2019-09-11 19:32:04,271 - synapse.federation.transport.server - 288 - WARNING - GET-11752 - authenticate_request failed: 401: Invalid signature for server <server> with key ed25519:a_EqML: Unable to verify signature for <server>

这通常是由反向代理中的错误配置引起的。看见docs/reverse_proxy.md并仔细检查您的设置是否正确

Autokeras-面向深度学习的AutoML库

官网:autokeras.com

AutoKera:一个基于KERS的AutoML系统。它是由DATA Lab在德克萨斯农工大学。AutoKera的目标是让每个人都可以使用机器学习

学习资源

  • 一个简短的例子
import autokeras as ak

clf = ak.ImageClassifier()
clf.fit(x_train, y_train)
results = clf.predict(x_test)

安装

要安装该软件包,请使用pip安装步骤如下:

pip3 install autokeras

请按照installation guide有关更多详细信息,请参阅

注:目前,AutoKera仅与Python>=3.5TensorFlow>=2.3.0

社区

随时了解最新信息

推特:你也可以在推特上关注我们@autokeras了解最新消息

电子邮件:订阅我们的email list接收通知的步骤

问题和讨论

GitHub讨论:请在我们的GitHub Discussions这是一个在GitHub上托管的论坛。我们将在那里监控并回答问题

即时通信

松弛Request an invitation使用#autokeras通信通道

QQ群:加入我们的QQ群1150366085。密码:akqqgroup

在线会议:加入online meeting Google group日历事件将出现在您的Google日历上

贡献代码

我们致力于让AutoKera的一切向公众开放。每个人都可以很容易地以开发人员的身份加入。以下是我们如何管理我们的项目

  • 对问题进行分类例如,我们从中挑选要解决的关键问题GitHub issues它们将被添加到此Project其中一些问题随后将添加到milestones,用于计划发布
  • 分配任务:我们在网上会议期间将任务分配给人们
  • 讨论:我们可以在多个地方进行讨论。代码审查在GitHub上。问题可以在Slake或在会议期间提问

请加入我们的Slack给金海峰发个口信。或顺道拜访我们的online meetings然后跟我们谈谈。我们将帮助您入门!

请参阅我们的Contributing Guide学习最佳实践

感谢所有的贡献者!

捐赠

我们接受财政上的支持Open Collective感谢每一位赞助商对我们的支持!


引用这部作品

金海峰、宋清泉、夏虎。“Auto-keras:一种高效的神经结构搜索系统。”第25届ACM SIGKDD知识发现与数据挖掘国际会议论文集。ACM,2019年。(Download)

Biblatex条目:

@inproceedings{jin2019auto,
  title={Auto-Keras: An Efficient Neural Architecture Search System},
  author={Jin, Haifeng and Song, Qingquan and Hu, Xia},
  booktitle={Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery \& Data Mining},
  pages={1946--1956},
  year={2019},
  organization={ACM}
}

确认

作者感谢国防高级研究计划局(DARPA)通过AFRL合同FA8750-17-2-0116、德克萨斯农工学院和德克萨斯农工大学管理的D3M计划

Pwntools-CTF框架和开发开发库

pwntools-CTF工具包

Pwntools是一个CTF框架和开发开发库。它是用Python编写的,专为快速原型和开发而设计,旨在使利用代码尽可能简单

from pwn import *
context(arch = 'i386', os = 'linux')

r = remote('exploitme.example.com', 31337)
# EXPLOIT CODE GOES HERE
r.send(asm(shellcraft.sh()))
r.interactive()

文档

我们的文档位于docs.pwntools.com

还提供了一系列教程available online

为了帮助您入门,我们为过去的CTF挑战提供了一些示例解决方案,在我们的write-ups repository

安装

Pwntools最受64位Ubuntu LTS版本(14.04、16.04、18.04和20.04)的支持。大多数功能应该适用于任何类似POSIX的发行版(Debian、Arch、FreeBSD、OSX等)

建议使用Python3,但Pwntools仍然适用于Python2.7。pwntools的大部分功能都是自包含的,并且只支持Python。您应该能够快速使用

apt-get update
apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade pwntools

但是,某些特性(组装/反汇编外来体系结构)需要非Python依赖项。有关更多信息,请参阅complete installation instructions here

贡献

看见CONTRIBUTING.md

联系方式和社区

如果您有任何不值得回答的问题bug report,加入不一致服务器,地址为https://discord.gg/96VA2zvjCB