From 65e88dff8e3650e59bd1e6ce7ef453cf279d52da Mon Sep 17 00:00:00 2001 From: Gelieza K Date: Mon, 31 Jul 2023 15:13:50 +0200 Subject: [PATCH] Add the basic template to generate webpage --- .github/workflows/CI.yml | 64 + Project.toml | 10 + README.md | 7 + docs/.gitignore | 3 + docs/Project.toml | 3 + docs/make.jl | 62 + docs/src/assets/custom.css | 4 + .../assets/iframeResizer.contentWindow.min.js | 9 + docs/src/assets/iframeResizer.min.js | 8 + docs/src/assets/logo.png | Bin 0 -> 5448 bytes docs/src/index.md | 7 + docs/src/matrix_matrix.md | 31 + docs/src/notebook-hello.md | 32 + docs/src/notebook-output/index.html | 15362 ++++++++++++++ docs/src/notebook-output/matrix_matrix.html | 16559 ++++++++++++++++ docs/src/notebook-output/notebook-hello.html | 15362 ++++++++++++++ .../src/notebooks}/Project.toml | 0 .../notebooks}/figures/fig_matmu_intro.svg | 0 .../src/notebooks}/figures/fig_matmul_0.png | Bin .../src/notebooks}/figures/fig_matmul_1.png | Bin .../src/notebooks}/figures/fig_matmul_1.svg | 0 .../src/notebooks}/figures/fig_matmul_2.png | Bin .../notebooks}/figures/fig_matmul_dist.svg | 0 .../notebooks}/figures/fig_matmul_intro_0.png | Bin .../notebooks}/figures/fig_matmul_intro_2.png | Bin .../notebooks}/figures/fig_matmul_intro_3.png | Bin .../notebooks}/figures/fig_matmul_intro_4.png | Bin .../figures/fig_matmul_intro_algs.png | Bin .../figures/fig_matmul_intro_algs_1.png | Bin .../figures/fig_matmul_intro_q_1.png | Bin .../figures/fig_matmul_intro_q_2.png | Bin .../figures/fig_matmul_intro_q_3.png | Bin .../figures/fig_matmul_machines.png | Bin .../figures/fig_matmul_machines.svg | 0 .../figures/fig_matmul_machines_1.png | Bin .../figures/fig_matmul_machines_2.png | Bin .../figures/fig_matmul_machines_3.png | Bin .../src/notebooks}/matrix_matrix.ipynb | 0 docs/src/notebooks/notebook-hello.ipynb | 187 + src/XM_40017.jl | 5 + test/runtests.jl | 0 41 files changed, 47715 insertions(+) create mode 100644 .github/workflows/CI.yml create mode 100644 Project.toml create mode 100644 README.md create mode 100644 docs/.gitignore create mode 100644 docs/Project.toml create mode 100644 docs/make.jl create mode 100644 docs/src/assets/custom.css create mode 100644 docs/src/assets/iframeResizer.contentWindow.min.js create mode 100644 docs/src/assets/iframeResizer.min.js create mode 100644 docs/src/assets/logo.png create mode 100644 docs/src/index.md create mode 100644 docs/src/matrix_matrix.md create mode 100644 docs/src/notebook-hello.md create mode 100644 docs/src/notebook-output/index.html create mode 100644 docs/src/notebook-output/matrix_matrix.html create mode 100644 docs/src/notebook-output/notebook-hello.html rename {notebooks => docs/src/notebooks}/Project.toml (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmu_intro.svg (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_0.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_1.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_1.svg (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_2.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_dist.svg (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_intro_0.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_intro_2.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_intro_3.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_intro_4.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_intro_algs.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_intro_algs_1.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_intro_q_1.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_intro_q_2.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_intro_q_3.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_machines.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_machines.svg (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_machines_1.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_machines_2.png (100%) rename {notebooks => docs/src/notebooks}/figures/fig_matmul_machines_3.png (100%) rename {notebooks => docs/src/notebooks}/matrix_matrix.ipynb (100%) create mode 100644 docs/src/notebooks/notebook-hello.ipynb create mode 100644 src/XM_40017.jl create mode 100644 test/runtests.jl diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml new file mode 100644 index 0000000..da4fd1c --- /dev/null +++ b/.github/workflows/CI.yml @@ -0,0 +1,64 @@ +name: CI +on: + push: + branches: + - main + tags: ['*'] + pull_request: +concurrency: + # Skip intermediate builds: always. + # Cancel intermediate builds: only if it is a pull request build. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} +jobs: + test: + name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + version: + - '1.9' + os: + - ubuntu-latest + arch: + - x64 + steps: + - uses: actions/checkout@v3 + - uses: julia-actions/setup-julia@v1 + with: + version: ${{ matrix.version }} + arch: ${{ matrix.arch }} + - uses: julia-actions/cache@v1 + - uses: julia-actions/julia-buildpkg@v1 + - uses: julia-actions/julia-runtest@v1 + docs: + name: Documentation + runs-on: ubuntu-latest + permissions: + contents: write + statuses: write + steps: + - uses: actions/checkout@v3 + - uses: julia-actions/setup-julia@v1 + with: + version: '1' + - name: Set up Python + uses: actions/setup-python@v4.7.0 + with: + python-version: '3.9' + - name: Install nbconvert + run: | + python -m pip install jupyter nbconvert + - name: Configure doc environment + run: | + julia --project=docs/ -e ' + using Pkg + Pkg.develop(PackageSpec(path=pwd())) + Pkg.instantiate()' + - uses: julia-actions/julia-buildpkg@v1 + - uses: julia-actions/julia-docdeploy@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + diff --git a/Project.toml b/Project.toml new file mode 100644 index 0000000..b867aab --- /dev/null +++ b/Project.toml @@ -0,0 +1,10 @@ +name = "XM_40017" +uuid = "bac2549d-7fb4-47a9-ab16-d1e9b77d8fc7" +authors = ["Francesc Verdugo "] +version = "0.1.0" + +[extras] +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[targets] +test = ["Test"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..866c17f --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# XM_40017 +Jupyter notebook scripts for the course Programming Large-Scale Parallel Systems (XM_40017) at Vrije Universiteit Amsterdam. + +- [**Go to webpage**](https://fverdugo.github.io/XM_40017/dev) + +## Run webpage locally +In XM_40017 folder, call `using LiveServer; servedocs(skip_dir=joinpath("docs","src","notebook-output"))` in terminal. diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..b71a83f --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,3 @@ +build/ +site/ +Manifest.toml diff --git a/docs/Project.toml b/docs/Project.toml new file mode 100644 index 0000000..27946c2 --- /dev/null +++ b/docs/Project.toml @@ -0,0 +1,3 @@ +[deps] +Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" +XM_40017 = "bac2549d-7fb4-47a9-ab16-d1e9b77d8fc7" diff --git a/docs/make.jl b/docs/make.jl new file mode 100644 index 0000000..98a529e --- /dev/null +++ b/docs/make.jl @@ -0,0 +1,62 @@ +using XM_40017 +using Documenter + +# Convert to html using nbconvert +function convert_notebook_to_html(notebook_path; output_name = "index", output_dir = "./docs/src/notebook-output", theme = "dark") + command_jup = "jupyter" + command_nbc = "nbconvert" + output_format = "--to=html" + theme = "--theme=$theme" + output = "--output=$output_name" + output_dir = "--output-dir=$output_dir" + infile = notebook_path + run(`$command_jup $command_nbc $output_format $output $output_dir $theme $infile`) +end + +# Resize iframes using IframeResizer +function modify_notebook_html( html_name ) + content = open( html_name, "r" ) do html_file + read( html_file, String ) + end + content = replace(content, + r"(]*>[\s\S]*?<\/script>\K)" => + s"\1\n\t\n"; + count = 1 + ) + content = replace_colors(content) + open( html_name, "w" ) do html_file + write( html_file, content ) + end + return nothing +end + +# Replace colors to match Documenter.jl +function replace_colors(content) + content = replace( content, "--jp-layout-color0: #111111;" => "--jp-layout-color0: #1f2424;") + content = replace(content, "--md-grey-900: #212121;" => "--md-grey-900: #282f2f;") + return content +end + +convert_notebook_to_html("docs/src/notebooks/matrix_matrix.ipynb", output_name = "matrix_matrix") +modify_notebook_html("docs/src/notebook-output/matrix_matrix.html") + +convert_notebook_to_html("docs/src/notebooks/notebook-hello.ipynb", output_name = "notebook-hello") +modify_notebook_html("docs/src/notebook-output/notebook-hello.html") + +makedocs(; + modules=[XM_40017], + authors="Francesc Verdugo ", + repo="https://github.com/fverdugo/XM_40017/blob/{commit}{path}#{line}", + sitename="XM_40017", + format=Documenter.HTML(; + assets = ["assets/iframeResizer.min.js", "assets/custom.css"], + prettyurls=get(ENV, "CI", "false") == "true", + canonical="https://fverdugo.github.io/XM_40017", + edit_link="main",), + pages=["Home" => "index.md","Hello World" => "notebook-hello.md", "Notebooks"=>["Matrix Multiplication"=>"matrix_matrix.md"]], +) + +deploydocs(; + repo="github.com/fverdugo/XM_40017", + devbranch="main", +) diff --git a/docs/src/assets/custom.css b/docs/src/assets/custom.css new file mode 100644 index 0000000..4c72061 --- /dev/null +++ b/docs/src/assets/custom.css @@ -0,0 +1,4 @@ +#documenter .docs-sidebar .docs-logo > img, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img { + max-height: 8em; +} diff --git a/docs/src/assets/iframeResizer.contentWindow.min.js b/docs/src/assets/iframeResizer.contentWindow.min.js new file mode 100644 index 0000000..48809cc --- /dev/null +++ b/docs/src/assets/iframeResizer.contentWindow.min.js @@ -0,0 +1,9 @@ +/*! iFrame Resizer (iframeSizer.contentWindow.min.js) - v4.3.5 - 2023-03-08 + * Desc: Include this file in any page being loaded into an iframe + * to force the iframe to resize to the content size. + * Requires: iframeResizer.min.js on host page. + * Copyright: (c) 2023 David J. Bradshaw - dave@bradshaw.net + * License: MIT + */ +!function(a){if("undefined"!=typeof window){var r=!0,P="",u=0,c="",s=null,D="",d=!1,j={resize:1,click:1},l=128,q=!0,f=1,n="bodyOffset",m=n,H=!0,W="",h={},g=32,B=null,p=!1,v=!1,y="[iFrameSizer]",J=y.length,w="",U={max:1,min:1,bodyScroll:1,documentElementScroll:1},b="child",V=!0,X=window.parent,T="*",E=0,i=!1,Y=null,O=16,S=1,K="scroll",M=K,Q=window,G=function(){x("onMessage function not defined")},Z=function(){},$=function(){},_={height:function(){return x("Custom height calculation function not defined"),document.documentElement.offsetHeight},width:function(){return x("Custom width calculation function not defined"),document.body.scrollWidth}},ee={},te=!1;try{var ne=Object.create({},{passive:{get:function(){te=!0}}});window.addEventListener("test",ae,ne),window.removeEventListener("test",ae,ne)}catch(e){}var oe,o,I,ie,N,A,C={bodyOffset:function(){return document.body.offsetHeight+ye("marginTop")+ye("marginBottom")},offset:function(){return C.bodyOffset()},bodyScroll:function(){return document.body.scrollHeight},custom:function(){return _.height()},documentElementOffset:function(){return document.documentElement.offsetHeight},documentElementScroll:function(){return document.documentElement.scrollHeight},max:function(){return Math.max.apply(null,e(C))},min:function(){return Math.min.apply(null,e(C))},grow:function(){return C.max()},lowestElement:function(){return Math.max(C.bodyOffset()||C.documentElementOffset(),we("bottom",Te()))},taggedElement:function(){return be("bottom","data-iframe-height")}},z={bodyScroll:function(){return document.body.scrollWidth},bodyOffset:function(){return document.body.offsetWidth},custom:function(){return _.width()},documentElementScroll:function(){return document.documentElement.scrollWidth},documentElementOffset:function(){return document.documentElement.offsetWidth},scroll:function(){return Math.max(z.bodyScroll(),z.documentElementScroll())},max:function(){return Math.max.apply(null,e(z))},min:function(){return Math.min.apply(null,e(z))},rightMostElement:function(){return we("right",Te())},taggedElement:function(){return be("right","data-iframe-width")}},re=(oe=Ee,N=null,A=0,function(){var e=Date.now(),t=O-(e-(A=A||e));return o=this,I=arguments,t<=0||Ok[r]["max"+e])throw new Error("Value for min"+e+" can not be greater than max"+e)}}function h(e,n){null===i&&(i=setTimeout(function(){i=null,e()},n))}function e(){"hidden"!==document.visibilityState&&(O("document","Trigger event: Visibility change"),h(function(){b("Tab Visible","resize")},16))}function b(i,t){Object.keys(k).forEach(function(e){var n;k[n=e]&&"parent"===k[n].resizeFrom&&k[n].autoResize&&!k[n].firstRun&&A(i,t,k[e].iframe,e)})}function y(){F(window,"message",w),F(window,"resize",function(){var e;O("window","Trigger event: "+(e="resize")),h(function(){b("Window "+e,"resize")},16)}),F(document,"visibilitychange",e),F(document,"-webkit-visibilitychange",e)}function n(){function t(e,n){if(n){if(!n.tagName)throw new TypeError("Object is not a valid DOM element");if("IFRAME"!==n.tagName.toUpperCase())throw new TypeError("Expected + +``` + diff --git a/docs/src/notebook-hello.md b/docs/src/notebook-hello.md new file mode 100644 index 0000000..cf3bb30 --- /dev/null +++ b/docs/src/notebook-hello.md @@ -0,0 +1,32 @@ + +```@meta +EditURL = "https://github.com/fverdugo/XM_40017/blob/main/docs/src/notebooks/notebook-hello.ipynb" +``` + +```@raw html +
+
Tip
+
+
    +
  • + Download this notebook and run it locally on your machine [recommended]. Click here. +
  • +
  • + You can also run this notebook in the cloud using Binder. Click here + . +
  • +
+
+
+``` + +```@raw html + + +``` + diff --git a/docs/src/notebook-output/index.html b/docs/src/notebook-output/index.html new file mode 100644 index 0000000..af2a4fb --- /dev/null +++ b/docs/src/notebook-output/index.html @@ -0,0 +1,15362 @@ + + + + + +notebook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/src/notebook-output/matrix_matrix.html b/docs/src/notebook-output/matrix_matrix.html new file mode 100644 index 0000000..c4fedfe --- /dev/null +++ b/docs/src/notebook-output/matrix_matrix.html @@ -0,0 +1,16559 @@ + + + + + +matrix_matrix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/src/notebook-output/notebook-hello.html b/docs/src/notebook-output/notebook-hello.html new file mode 100644 index 0000000..a007c0e --- /dev/null +++ b/docs/src/notebook-output/notebook-hello.html @@ -0,0 +1,15362 @@ + + + + + +notebook-hello + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/notebooks/Project.toml b/docs/src/notebooks/Project.toml similarity index 100% rename from notebooks/Project.toml rename to docs/src/notebooks/Project.toml diff --git a/notebooks/figures/fig_matmu_intro.svg b/docs/src/notebooks/figures/fig_matmu_intro.svg similarity index 100% rename from notebooks/figures/fig_matmu_intro.svg rename to docs/src/notebooks/figures/fig_matmu_intro.svg diff --git a/notebooks/figures/fig_matmul_0.png b/docs/src/notebooks/figures/fig_matmul_0.png similarity index 100% rename from notebooks/figures/fig_matmul_0.png rename to docs/src/notebooks/figures/fig_matmul_0.png diff --git a/notebooks/figures/fig_matmul_1.png b/docs/src/notebooks/figures/fig_matmul_1.png similarity index 100% rename from notebooks/figures/fig_matmul_1.png rename to docs/src/notebooks/figures/fig_matmul_1.png diff --git a/notebooks/figures/fig_matmul_1.svg b/docs/src/notebooks/figures/fig_matmul_1.svg similarity index 100% rename from notebooks/figures/fig_matmul_1.svg rename to docs/src/notebooks/figures/fig_matmul_1.svg diff --git a/notebooks/figures/fig_matmul_2.png b/docs/src/notebooks/figures/fig_matmul_2.png similarity index 100% rename from notebooks/figures/fig_matmul_2.png rename to docs/src/notebooks/figures/fig_matmul_2.png diff --git a/notebooks/figures/fig_matmul_dist.svg b/docs/src/notebooks/figures/fig_matmul_dist.svg similarity index 100% rename from notebooks/figures/fig_matmul_dist.svg rename to docs/src/notebooks/figures/fig_matmul_dist.svg diff --git a/notebooks/figures/fig_matmul_intro_0.png b/docs/src/notebooks/figures/fig_matmul_intro_0.png similarity index 100% rename from notebooks/figures/fig_matmul_intro_0.png rename to docs/src/notebooks/figures/fig_matmul_intro_0.png diff --git a/notebooks/figures/fig_matmul_intro_2.png b/docs/src/notebooks/figures/fig_matmul_intro_2.png similarity index 100% rename from notebooks/figures/fig_matmul_intro_2.png rename to docs/src/notebooks/figures/fig_matmul_intro_2.png diff --git a/notebooks/figures/fig_matmul_intro_3.png b/docs/src/notebooks/figures/fig_matmul_intro_3.png similarity index 100% rename from notebooks/figures/fig_matmul_intro_3.png rename to docs/src/notebooks/figures/fig_matmul_intro_3.png diff --git a/notebooks/figures/fig_matmul_intro_4.png b/docs/src/notebooks/figures/fig_matmul_intro_4.png similarity index 100% rename from notebooks/figures/fig_matmul_intro_4.png rename to docs/src/notebooks/figures/fig_matmul_intro_4.png diff --git a/notebooks/figures/fig_matmul_intro_algs.png b/docs/src/notebooks/figures/fig_matmul_intro_algs.png similarity index 100% rename from notebooks/figures/fig_matmul_intro_algs.png rename to docs/src/notebooks/figures/fig_matmul_intro_algs.png diff --git a/notebooks/figures/fig_matmul_intro_algs_1.png b/docs/src/notebooks/figures/fig_matmul_intro_algs_1.png similarity index 100% rename from notebooks/figures/fig_matmul_intro_algs_1.png rename to docs/src/notebooks/figures/fig_matmul_intro_algs_1.png diff --git a/notebooks/figures/fig_matmul_intro_q_1.png b/docs/src/notebooks/figures/fig_matmul_intro_q_1.png similarity index 100% rename from notebooks/figures/fig_matmul_intro_q_1.png rename to docs/src/notebooks/figures/fig_matmul_intro_q_1.png diff --git a/notebooks/figures/fig_matmul_intro_q_2.png b/docs/src/notebooks/figures/fig_matmul_intro_q_2.png similarity index 100% rename from notebooks/figures/fig_matmul_intro_q_2.png rename to docs/src/notebooks/figures/fig_matmul_intro_q_2.png diff --git a/notebooks/figures/fig_matmul_intro_q_3.png b/docs/src/notebooks/figures/fig_matmul_intro_q_3.png similarity index 100% rename from notebooks/figures/fig_matmul_intro_q_3.png rename to docs/src/notebooks/figures/fig_matmul_intro_q_3.png diff --git a/notebooks/figures/fig_matmul_machines.png b/docs/src/notebooks/figures/fig_matmul_machines.png similarity index 100% rename from notebooks/figures/fig_matmul_machines.png rename to docs/src/notebooks/figures/fig_matmul_machines.png diff --git a/notebooks/figures/fig_matmul_machines.svg b/docs/src/notebooks/figures/fig_matmul_machines.svg similarity index 100% rename from notebooks/figures/fig_matmul_machines.svg rename to docs/src/notebooks/figures/fig_matmul_machines.svg diff --git a/notebooks/figures/fig_matmul_machines_1.png b/docs/src/notebooks/figures/fig_matmul_machines_1.png similarity index 100% rename from notebooks/figures/fig_matmul_machines_1.png rename to docs/src/notebooks/figures/fig_matmul_machines_1.png diff --git a/notebooks/figures/fig_matmul_machines_2.png b/docs/src/notebooks/figures/fig_matmul_machines_2.png similarity index 100% rename from notebooks/figures/fig_matmul_machines_2.png rename to docs/src/notebooks/figures/fig_matmul_machines_2.png diff --git a/notebooks/figures/fig_matmul_machines_3.png b/docs/src/notebooks/figures/fig_matmul_machines_3.png similarity index 100% rename from notebooks/figures/fig_matmul_machines_3.png rename to docs/src/notebooks/figures/fig_matmul_machines_3.png diff --git a/notebooks/matrix_matrix.ipynb b/docs/src/notebooks/matrix_matrix.ipynb similarity index 100% rename from notebooks/matrix_matrix.ipynb rename to docs/src/notebooks/matrix_matrix.ipynb diff --git a/docs/src/notebooks/notebook-hello.ipynb b/docs/src/notebooks/notebook-hello.ipynb new file mode 100644 index 0000000..9f81b61 --- /dev/null +++ b/docs/src/notebooks/notebook-hello.ipynb @@ -0,0 +1,187 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "babf8079", + "metadata": {}, + "source": [ + "# Hello, world!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f71f2545", + "metadata": {}, + "outputs": [], + "source": [ + "] add Distributed" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4d6b67b6", + "metadata": {}, + "outputs": [], + "source": [ + "] add https://github.com/fverdugo/W2bYx4.git" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "815d977e", + "metadata": {}, + "outputs": [], + "source": [ + "using W2bYx4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2cf68b65", + "metadata": {}, + "outputs": [], + "source": [ + "W2bYx4.greet()" + ] + }, + { + "cell_type": "markdown", + "id": "81236a40", + "metadata": {}, + "source": [ + "This is an attached picture:" + ] + }, + { + "attachments": { + "logo.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "id": "7c2e8d25", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "
\n" + ] + }, + { + "attachments": { + "logo.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "id": "d0f1685d", + "metadata": {}, + "source": [ + "Another attached picture with markdown syntax `![]()`: \n", + "\n", + "\n", + "![logo.png](attachment:logo.png)" + ] + }, + { + "cell_type": "markdown", + "id": "7f4de0d2", + "metadata": {}, + "source": [ + "A picture embedded with Base64: \n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "0d36cf9e", + "metadata": {}, + "source": [ + "This is a linked picture:" + ] + }, + { + "cell_type": "markdown", + "id": "0b541664", + "metadata": {}, + "source": [ + "
\n", + "\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "id": "cae7f8ac", + "metadata": {}, + "source": [ + "```julia\n", + "julia> 1 + 1\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6603cd99", + "metadata": {}, + "outputs": [], + "source": [ + "1+1" + ] + }, + { + "cell_type": "markdown", + "id": "c3b59ed4", + "metadata": {}, + "source": [ + "
\n", + "Warning: Make sure that the file \"hello.jl\" is located in the current working directory of your Julia session.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "5b3e3d68", + "metadata": {}, + "source": [ + "
\n", + "Tip: Avoid calling Julia code from the terminal\n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b7267f6e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Julia 1.9.1", + "language": "julia", + "name": "julia-1.9" + }, + "language_info": { + "file_extension": ".jl", + "mimetype": "application/julia", + "name": "julia", + "version": "1.9.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/XM_40017.jl b/src/XM_40017.jl new file mode 100644 index 0000000..fbf0303 --- /dev/null +++ b/src/XM_40017.jl @@ -0,0 +1,5 @@ +module XM_40017 + +greet() = print("Hello World!") + +end # module XM_40017 diff --git a/test/runtests.jl b/test/runtests.jl new file mode 100644 index 0000000..e69de29