streamlit workspace
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 146 KiB |
|
@ -1,14 +0,0 @@
|
|||
ARG docker_registry=docker.io/alnoda
|
||||
ARG image_tag=18.04-0.7
|
||||
|
||||
FROM ${docker_registry}/ubuntu-workspace:${image_tag}
|
||||
|
||||
USER root
|
||||
|
||||
RUN apt-get -y update \
|
||||
&& apt-get install -y firefox \
|
||||
&& cd /tmp && wget https://github.com/browsh-org/browsh/releases/download/v1.6.4/browsh_1.6.4_linux_amd64.deb \
|
||||
&& cd /tmp && apt install -y ./browsh_1.6.4_linux_amd64.deb \
|
||||
&& rm /tmp/browsh_1.6.4_linux_amd64.deb
|
||||
|
||||
USER abc
|
|
@ -1,45 +0,0 @@
|
|||
# Ubuntu-Browsh
|
||||
|
||||
Ubuntu-Browsh - is [Ubuntu-Workspace](https://github.com/bluxmit/alnoda-workspaces/blob/main/workspaces/ubuntu-workspace) with a terminal
|
||||
text-based browser [Browsh](https://www.brow.sh/) installed.
|
||||
|
||||
Ubuntu-Browsh has was created to tackle a very specific use-case - ability to view WEB UIs of the internal applications running in the internal
|
||||
network, that does not have ingress for public internet connections. In other words, if you are allowed to SSH to one servers inside the private
|
||||
network, but cannot access WEB UIs of the applications inside this network. One of the reasons might be that these WEB UIs don't have restriction/auth
|
||||
mechanism built in. Or the company policy forbids opening any accesses from the specific network to the internet access.
|
||||
|
||||
One of the particular use-cases this workspace was used for - is to view EMR WEB interfaces (Spark History server UI, YARN UI, Livy UI),
|
||||
and check the Spark logs out. There here are other ways to do this, i.e. setting up SSH tunneling, installing browser plugins, creating
|
||||
secure gateways with VPN. This way is jus the simplest, and does not require modification of infrastructure or local environment.
|
||||
|
||||
## Use inrivate network
|
||||
|
||||
SSH to one of the servers in the private network, and execute
|
||||
|
||||
```
|
||||
docker run --name browsh-workspace -d alnoda/ubuntu-browsh
|
||||
```
|
||||
|
||||
and ssh into the workspace
|
||||
|
||||
```
|
||||
docker exec -it browsh-workspace /bin/zsh
|
||||
```
|
||||
|
||||
## Other cases
|
||||
|
||||
```
|
||||
docker run --name browsh-workspace -d -p 8026:8026 alnoda/ubuntu-browsh
|
||||
```
|
||||
|
||||
Open your browser on http://localhost:8026 and open any website with Browsh
|
||||
|
||||
> `browsh --startup-url google.com`
|
||||
|
||||
## Tips
|
||||
|
||||
Sometimes if you quit Browsh, and try to launch it again later, there might be an error saying that headless Firefox is already running.
|
||||
Execute `ps aux` find pid of firefox process and kill it, i.e. `kill 988`
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 51 KiB |
|
@ -1,18 +1,24 @@
|
|||
ARG docker_registry=docker.io/alnoda
|
||||
ARG image_tag=2.2-3.8
|
||||
ARG image_tag=3.0-3.8
|
||||
|
||||
FROM ${docker_registry}/python-workspace:${image_tag}
|
||||
USER root
|
||||
|
||||
COPY streamlit /home/abc/.streamlit
|
||||
COPY streamlit-requirements.txt /home/abc/installed-python-packages
|
||||
|
||||
COPY ./mkdocs/mkdocs.yml /home/docs/mkdocs.yml
|
||||
COPY ./mkdocs/helpers.py /home/docs/macros
|
||||
COPY ./mkdocs/Streamlit.png /home/docs/docs/assets/home/
|
||||
COPY ./mkdocs/README.md /home/docs/docs/README.md
|
||||
COPY ./mkdocs/streamlit-circle.svg /home/docs/docs/assets/
|
||||
COPY ./mkdocs/streamlit-circle-white.svg /home/docs/docs/assets/
|
||||
COPY ./mkdocs/extra.css /home/docs/docs/stylesheets/
|
||||
COPY ./mkdocs/about.md /home/docs/docs/about.md
|
||||
|
||||
|
||||
RUN echo "------------------------------------------------------ streamlit" \
|
||||
&& pip install streamlit==1.9.0 \
|
||||
&& pip install -r /home/abc/installed-python-packages/streamlit-requirements.txt \
|
||||
&& echo "------------------------------------------------------ user" \
|
||||
&& rm -rf /home/examples \
|
||||
&& find /home -type d | xargs -I{} chown -R abc {} \
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
<p align="center">
|
||||
<img src="../../img/Alnoda-white.svg" alt="Alnoda logo" width="150">
|
||||
</p>
|
||||
<img src="./img/streamlit-circle.svg" alt="Streamlit logo" width="150">
|
||||
</p>
|
||||
|
||||
# Streamlit workspace
|
||||
|
||||
Docker image for building Streamlit applications.
|
||||
Containerized isolated development environment for [Streamlit](https://streamlit.io/) and Python.
|
||||
|
||||
<p align="center">
|
||||
<img src="../codeserver-workspace/img/codeserver-collage-sm.jpg" alt="Collage" width="750">
|
||||
</p>
|
||||
|
||||
## Why this images
|
||||
|
||||
|
@ -29,45 +26,32 @@ and open [localhost:8020](http://localhost:8020) in browser.
|
|||
|
||||
**Python tools:**
|
||||
|
||||
- [IPython and Notebooks](https://ipython.readthedocs.io/en/stable/)
|
||||
- [Pdoc3](https://github.com/pdoc3/pdoc)
|
||||
- [Pytest-html-reporter](https://github.com/prashanth-sams/pytest-html-reporter)
|
||||
- [SnakeViz](https://jiffyclub.github.io/snakeviz/)
|
||||
- [Vprof](https://github.com/nvdv/vprof)
|
||||
- [Pyinstrument](https://pypi.org/project/pyinstrument/3.0.0b3/)
|
||||
- [Flameprof](https://github.com/baverman/flameprof/)
|
||||
- [Pylint-json2html](https://github.com/Exirel/pylint-json2html)
|
||||
- [IPython](https://ipython.readthedocs.io/en/stable/)
|
||||
- [Pre-commit](https://pre-commit.com/)
|
||||
- [Flake8](https://flake8.pycqa.org/en/latest/)
|
||||
- [Poetry](https://python-poetry.org/)
|
||||
- [Black](https://github.com/psf/black)
|
||||
- [Pipx](https://github.com/pypa/pipx)
|
||||
|
||||
**Dev tools:**
|
||||
|
||||
- [**Eclipse Theia**](https://theia-ide.org/docs/) - open source version of popular Visual Studio Code IDE. Theia is trully open-source, has
|
||||
VS-Code extensions and works in browser. This means it can run inside a docker container on local machine or in cloud. A lot of beautiful color themes and many common plugins are already installed to save time.
|
||||
VS-Code extensions and works in browser. This means it can run inside a docker container on local machine or in cloud. A lot of beautiful color themes and many common plugins are already installed to save time.
|
||||
- [**Terminal**](https://github.com/tsl0922/ttyd) - secure browser-based terminal.
|
||||
- [**FileBrowser**](https://github.com/filebrowser/filebrowser) - manage files and folders inside the workspace, and exchange data between local environment and the workspace
|
||||
- [**Cronicle**](https://github.com/jhuckaby/Cronicle) - task scheduler and runner, with a web based front-end UI. It handles both scheduled, repeating and on-demand jobs, targeting any number of worker servers, with real-time stats and live log viewer.
|
||||
- [**Static File Server**](https://github.com/vercel/serve) - view any static html sites as easy as if you do it on your local machine. Serve static websites easily.
|
||||
- [**Ungit**](https://github.com/FredrikNoren/ungit) - rings user friendliness to git without sacrificing the versatility of it.
|
||||
- [**MkDocs**](https://squidfunk.github.io/mkdocs-material/) - create awesome documentation for your project with only markdown.
|
||||
- [**Midnight Commander**](https://midnight-commander.org/) - Feature rich visual file manager with internal text viewer and editor.
|
||||
- [**Process Monitor**](https://htop.dev/) - Monitor running process and resource utilization.
|
||||
- Quicklaunch UI with getting started tutorial
|
||||
|
||||
Image is built from **Ubuntu 20.4** with the additional CLI apps
|
||||
|
||||
- [Zsh](https://www.zsh.org/), [Oh my Zsh](https://ohmyz.sh/)
|
||||
- Python 3, Pip
|
||||
- Node/nodeenv
|
||||
- curl, wget, telnet, jq
|
||||
- **Git:** git, git-flow, lazygit
|
||||
- **File browsers:** mc, xplr
|
||||
- **Text editors:** nano, vim, mcedit
|
||||
- **System monitors:** ncdu, htop, glances, vizex
|
||||
- **Process Control:** supervisord
|
||||
- **Job scheduler:** cron
|
||||
- **Ubuntu 20.4** with the following CLI apps
|
||||
- [Zsh](https://www.zsh.org/), [Oh my Zsh](https://ohmyz.sh/)
|
||||
- Python 3, Pip
|
||||
- Node/nodeenv
|
||||
- curl, wget, telnet, jq
|
||||
- **Git:** git, git-flow, lazygit
|
||||
- **File browsers:** mc
|
||||
- **Text editors:** nano, vim, mcedit
|
||||
- **System monitors:** ncdu, htop, glances, vizex
|
||||
- **Process Control:** supervisord
|
||||
- **Job scheduler:** cron
|
||||
- **Terminal multiplexer:** tmux
|
||||
|
||||
## Docs
|
||||
|
||||
|
|
54
workspaces/streamlit-workspace/img/streamlit-circle.svg
Normal file
|
@ -0,0 +1,54 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="g10" transform="matrix(3, 0, 0, -3, 0, 900)" style="">
|
||||
<g id="g12" transform="scale(0.1)">
|
||||
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none;" id="path14"/>
|
||||
<title>Go icon</title>
|
||||
<title>Elixir icon</title>
|
||||
<title>R icon</title>
|
||||
<title>OpenSearch logo</title>
|
||||
<desc>Search engine software fork of Elasticsearch</desc>
|
||||
<title>OpenSearch logo</title>
|
||||
<desc>Search engine software fork of Elasticsearch</desc>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<title>redash-logo</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="g-1" style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;" transform="matrix(3.333333, 0, 0, -3.333333, -4120.10498, 2211.285156)"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<rect id="_Transparent_Rectangle_" data-name="<Transparent Rectangle>" class="cls-1" width="800" height="800" style="fill: none;" y="60.148" x="43.806"/>
|
||||
<g transform="matrix(1.465551, 0, 0, 0.952627, 73.374138, 221.492157)" style="">
|
||||
<g>
|
||||
<path d="M 355.86 219.684 L 256 63.436 L 156.14 219.684 L 0 145.724 L 79.068 448.564 L 432.931 448.564 L 512 145.724 L 355.86 219.684 Z M 256 390.746 L 201.816 306.098 L 256.456 413.87 L 310.184 306.098 L 256 390.746 Z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4 KiB |
|
@ -81,35 +81,11 @@
|
|||
"image": "assets/home/Filebrowser.png",
|
||||
"description": "Browse, upload and download files and folders to and from the Workspace"
|
||||
},
|
||||
{
|
||||
"env": "CRONICLE_URL",
|
||||
"name": "Cronicle",
|
||||
"image": "assets/home/Cronicle.jpg",
|
||||
"description": "Schedule jobs, manage schedules, observe and monitor executions (user/pass - admin/admin)"
|
||||
},
|
||||
{
|
||||
"env": "UNGIT_URL",
|
||||
"name": "Ungit",
|
||||
"image": "assets/home/Ungit.jpg",
|
||||
"description": "Manage Git repositories and work flow using beautiful UI"
|
||||
},
|
||||
{
|
||||
"env": "STATICFS_URL",
|
||||
"name": "Static File Server",
|
||||
"image": "assets/home/Static-server.png",
|
||||
"description": "Serve any static websites like a breeze"
|
||||
},
|
||||
{
|
||||
"env": "MC_URL",
|
||||
"name": "M.Commander",
|
||||
"image": "assets/home/MC.jpg",
|
||||
"description": "Feature rich visual file manager with internal text viewer and editor"
|
||||
},
|
||||
{
|
||||
"env": "HTOP_URL",
|
||||
"name": "Process monitor",
|
||||
"image": "assets/home/Htop.jpg",
|
||||
"description": "Monitor running process and resource utilization"
|
||||
}
|
||||
]
|
||||
%}
|
||||
|
|
1
workspaces/streamlit-workspace/mkdocs/about.md
Normal file
|
@ -0,0 +1 @@
|
|||
Containerized isolated development environment for [Streamlit](https://streamlit.io/) and Python.
|
20
workspaces/streamlit-workspace/mkdocs/extra.css
Normal file
|
@ -0,0 +1,20 @@
|
|||
[data-md-color-scheme="streamlit"] {
|
||||
--md-primary-fg-color: #546d78;
|
||||
--md-primary-fg-color--light: #2A2D2E;
|
||||
--md-primary-fg-color--dark: #2A2D2E;
|
||||
--md-accent-fg-color: #89484E;
|
||||
--md-typeset-a-color: #FF5C5C;
|
||||
}
|
||||
|
||||
[data-md-color-scheme="streamlit-dark"] {
|
||||
--md-primary-fg-color: #C35255;
|
||||
--md-primary-fg-color--light: #3C3C3C;
|
||||
--md-primary-fg-color--dark: #3C3C3C;
|
||||
--md-accent-fg-color: #FF5C5C;
|
||||
|
||||
--md-default-bg-color: #1E1E1E;
|
||||
--md-default-fg-color--light: #9CDCFE;
|
||||
--md-typeset-color: #9CDCFE;
|
||||
--md-typeset-a-color: #C35255;
|
||||
}
|
||||
|
|
@ -7,13 +7,9 @@ import os
|
|||
port_increments = {
|
||||
"DOCS_URL": 0,
|
||||
"FILEBROWSER_URL": 1,
|
||||
"STATICFS_URL": 2,
|
||||
"CRONICLE_URL": 3,
|
||||
"UNGIT_URL": 4,
|
||||
"IDE_URL": 5,
|
||||
"TERMINAL_URL": 6,
|
||||
"MC_URL": 7,
|
||||
"HTOP_URL": 8,
|
||||
"STREAMLIT_URL": 9,
|
||||
"PORT_8038": 18,
|
||||
"PORT_8039": 19,
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
nav:
|
||||
- Home: README.md
|
||||
- My apps: pages/my-apps.md
|
||||
- About: about.md
|
||||
- Docs: https://docs.alnoda.org/streamlit-workspace/
|
||||
|
||||
|
||||
# ===========================================================
|
||||
# CONFIGURATION
|
||||
# ===========================================================
|
||||
|
@ -23,26 +23,24 @@ edit_uri: ""
|
|||
|
||||
theme:
|
||||
name: 'material'
|
||||
favicon: 'assets/favicon.ico'
|
||||
logo: 'assets/Alnoda-logo.svg'
|
||||
favicon: 'assets/streamlit-circle.svg'
|
||||
logo: 'assets/streamlit-circle-white.svg'
|
||||
custom_dir: overrides
|
||||
font:
|
||||
text: Cambay
|
||||
icon:
|
||||
repo: fontawesome/brands/git-alt
|
||||
repo: fontawesome/brands/github
|
||||
features:
|
||||
- navigation.instant
|
||||
palette:
|
||||
- scheme: default
|
||||
- scheme: streamlit
|
||||
toggle:
|
||||
icon: material/toggle-switch-off-outline
|
||||
name: Switch to light mode
|
||||
primary: blue grey
|
||||
accent: amber
|
||||
- scheme: slate
|
||||
toggle:
|
||||
icon: material/toggle-switch
|
||||
icon: material/brightness-7
|
||||
name: Switch to dark mode
|
||||
primary: grey
|
||||
accent: amber
|
||||
- scheme: streamlit-dark
|
||||
toggle:
|
||||
icon: material/brightness-4
|
||||
name: Switch to light mode
|
||||
|
||||
extra:
|
||||
# Link to open when your logo is clicked
|
||||
|
@ -50,21 +48,15 @@ extra:
|
|||
host_url: http://docs.alnoda.org
|
||||
|
||||
plugins:
|
||||
- search
|
||||
# Enable Macros and jinja2 templates
|
||||
- macros:
|
||||
module_name: macros/helpers
|
||||
|
||||
extra_css:
|
||||
- stylesheets/extra.css
|
||||
|
||||
extra_javascript:
|
||||
- javascripts/config.js
|
||||
- https://polyfill.io/v3/polyfill.min.js?features=es6
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="g10" transform="matrix(3, 0, 0, -3, 0, 900)" style="">
|
||||
<g id="g12" transform="scale(0.1)">
|
||||
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none; fill: rgb(255, 255, 255);" id="path14"/>
|
||||
<title>Go icon</title>
|
||||
<title>Elixir icon</title>
|
||||
<title>R icon</title>
|
||||
<title>OpenSearch logo</title>
|
||||
<desc>Search engine software fork of Elasticsearch</desc>
|
||||
<title>OpenSearch logo</title>
|
||||
<desc>Search engine software fork of Elasticsearch</desc>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<title>redash-logo</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="g-1" style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;" transform="matrix(3.333333, 0, 0, -3.333333, -4120.10498, 2211.285156)"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<rect id="_Transparent_Rectangle_" data-name="<Transparent Rectangle>" class="cls-1" width="800" height="800" style="fill: none;" y="60.148" x="43.806"/>
|
||||
<g transform="matrix(1.465551, 0, 0, 0.952627, 73.374138, 221.492157)" style="">
|
||||
<g>
|
||||
<path d="M 355.86 219.684 L 256 63.436 L 156.14 219.684 L 0 145.724 L 79.068 448.564 L 432.931 448.564 L 512 145.724 L 355.86 219.684 Z M 256 390.746 L 201.816 306.098 L 256.456 413.87 L 310.184 306.098 L 256 390.746 Z" style="fill: rgb(255, 255, 255);"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.1 KiB |
54
workspaces/streamlit-workspace/mkdocs/streamlit-circle.svg
Normal file
|
@ -0,0 +1,54 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="g10" transform="matrix(3, 0, 0, -3, 0, 900)" style="">
|
||||
<g id="g12" transform="scale(0.1)">
|
||||
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none;" id="path14"/>
|
||||
<title>Go icon</title>
|
||||
<title>Elixir icon</title>
|
||||
<title>R icon</title>
|
||||
<title>OpenSearch logo</title>
|
||||
<desc>Search engine software fork of Elasticsearch</desc>
|
||||
<title>OpenSearch logo</title>
|
||||
<desc>Search engine software fork of Elasticsearch</desc>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<g transform="matrix(3.333333, 0, 0, -3.333333, -3594.97168, 2466.221924)"/>
|
||||
<title>redash-logo</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="g-1" style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;" transform="matrix(3.333333, 0, 0, -3.333333, -4120.10498, 2211.285156)"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<rect id="_Transparent_Rectangle_" data-name="<Transparent Rectangle>" class="cls-1" width="800" height="800" style="fill: none;" y="60.148" x="43.806"/>
|
||||
<g transform="matrix(1.465551, 0, 0, 0.952627, 73.374138, 221.492157)" style="">
|
||||
<g>
|
||||
<path d="M 355.86 219.684 L 256 63.436 L 156.14 219.684 L 0 145.724 L 79.068 448.564 L 432.931 448.564 L 512 145.724 L 355.86 219.684 Z M 256 390.746 L 201.816 306.098 L 256.456 413.87 L 310.184 306.098 L 256 390.746 Z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4 KiB |
|
@ -0,0 +1 @@
|
|||
streamlit==1.11.0
|