From 59f4244b14711fb335249613f1d227ea948a0094 Mon Sep 17 00:00:00 2001 From: Bojun6667 Date: Thu, 23 Feb 2023 19:03:35 +0800 Subject: [PATCH 01/11] 0223integrate --- homework/integrate.c | 17 +++++++++++++++++ max.c | 18 ++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 homework/integrate.c create mode 100644 max.c diff --git a/homework/integrate.c b/homework/integrate.c new file mode 100644 index 00000000..df777242 --- /dev/null +++ b/homework/integrate.c @@ -0,0 +1,17 @@ +#include + +double integrate(double (*f)(double), double a, double b) { + double area = 0.0; + for(double x = a;x <= b;x += 0.001){ + area += f(x) * 0.001; + } + return area; +} + +double square(double x) { + return x*x; +} + +int main() { + printf("integrate(square, 0.0, 2.0)=%f\n", integrate(square, 0.0, 2.0)); +} \ No newline at end of file diff --git a/max.c b/max.c new file mode 100644 index 00000000..08e3584b --- /dev/null +++ b/max.c @@ -0,0 +1,18 @@ +#include + +int max(int a, int b){ + if(a>b){ + return a; + } + else{ + return b; + } +} + +int main(void){ + int x = 5; + int y = 6; + int n = max(x, y); + printf("%d", n); + return 0; +} \ No newline at end of file From 17d11273a2af6b878b04cbab5ffa042c143df1db Mon Sep 17 00:00:00 2001 From: Bojun6667 <99935026+Bojun6667@users.noreply.github.com> Date: Thu, 23 Feb 2023 19:08:53 +0800 Subject: [PATCH 02/11] Delete max.c --- max.c | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 max.c diff --git a/max.c b/max.c deleted file mode 100644 index 08e3584b..00000000 --- a/max.c +++ /dev/null @@ -1,18 +0,0 @@ -#include - -int max(int a, int b){ - if(a>b){ - return a; - } - else{ - return b; - } -} - -int main(void){ - int x = 5; - int y = 6; - int n = max(x, y); - printf("%d", n); - return 0; -} \ No newline at end of file From d1fa001a7bde30eee7fae77eb9260d6bdcdf5382 Mon Sep 17 00:00:00 2001 From: Bojun6667 Date: Wed, 8 Mar 2023 16:23:54 +0800 Subject: [PATCH 03/11] 20230308 --- homework/Makefile | 11 ++++ homework/compiler.c | 146 ++++++++++++++++++++++++++++++++++++++++++++ homework/compiler.h | 27 ++++++++ homework/dowhile.c | 4 ++ homework/lexer.c | 50 +++++++++++++++ homework/main.c | 25 ++++++++ max.c | 18 ------ pp.c | 9 +++ test.c | 10 +++ 9 files changed, 282 insertions(+), 18 deletions(-) create mode 100644 homework/Makefile create mode 100644 homework/compiler.c create mode 100644 homework/compiler.h create mode 100644 homework/dowhile.c create mode 100644 homework/lexer.c create mode 100644 homework/main.c delete mode 100644 max.c create mode 100644 pp.c create mode 100644 test.c diff --git a/homework/Makefile b/homework/Makefile new file mode 100644 index 00000000..fccb6858 --- /dev/null +++ b/homework/Makefile @@ -0,0 +1,11 @@ +CC := gcc +CFLAGS = -std=c99 -O0 +TARGET = compiler + +all: $(TARGET) + +$(TARGET): lexer.c compiler.c main.c + $(CC) $(CFLAGS) $^ -o $@ + +clean: + rm -f *.o *.exe diff --git a/homework/compiler.c b/homework/compiler.c new file mode 100644 index 00000000..65980f6f --- /dev/null +++ b/homework/compiler.c @@ -0,0 +1,146 @@ +#include +#include "compiler.h" + +int E(); +void STMT(); +void IF(); +void BLOCK(); + +int tempIdx = 0, labelIdx = 0; + +#define nextTemp() (tempIdx++) +#define nextLabel() (labelIdx++) +#define emit printf + +int isNext(char *set) { + char eset[SMAX], etoken[SMAX]; + sprintf(eset, " %s ", set); + sprintf(etoken, " %s ", tokens[tokenIdx]); + return (tokenIdx < tokenTop && strstr(eset, etoken) != NULL); +} + +int isEnd() { + return tokenIdx >= tokenTop; +} + +char *next() { + // printf("token[%d]=%s\n", tokenIdx, tokens[tokenIdx]); + return tokens[tokenIdx++]; +} + +char *skip(char *set) { + if (isNext(set)) { + return next(); + } else { + printf("skip(%s) got %s fail!\n", set, next()); + assert(0); + } +} + +// F = (E) | Number | Id +int F() { + int f; + if (isNext("(")) { // '(' E ')' + next(); // ( + f = E(); + next(); // ) + } else { // Number | Id + f = nextTemp(); + char *item = next(); + emit("t%d = %s\n", f, item); + } + return f; +} + +// E = F (op E)* +int E() { + int i1 = F(); + while (isNext("+ - * / & | ! < > =")) { + char *op = next(); + int i2 = E(); + int i = nextTemp(); + emit("t%d = t%d %s t%d\n", i, i1, op, i2); + i1 = i; + } + return i1; +} + +// ASSIGN = id '=' E; +void ASSIGN() { + char *id = next(); + skip("="); + int e = E(); + skip(";"); + emit("%s = t%d\n", id, e); +} + +// WHILE = while (E) STMT +void WHILE() { + int whileBegin = nextLabel(); + int whileEnd = nextLabel(); + emit("(L%d)\n", whileBegin); + skip("while"); + skip("("); + int e = E(); + emit("if not T%d goto L%d\n", e, whileEnd); + skip(")"); + STMT(); + emit("goto L%d\n", whileBegin); + emit("(L%d)\n", whileEnd); +} + +//do WHILE = STMT while (E) +void DOWHILE() { + int dowhileBegin = nextLabel(); + int dowhileEnd = nextLabel(); + emit("(L%d)\n", dowhileBegin); + skip("do"); + STMT(); + skip("while"); + skip("("); + int e = E(); + emit("if not T%d goto L%d\n", e, dowhileEnd); + skip(")"); + skip(";"); + emit("goto L%d\n", dowhileBegin); + emit("(L%d)\n", dowhileEnd); +} + +// STMT = WHILE | BLOCK | ASSIGN +void STMT() { + if (isNext("while")) + WHILE(); + // else if (isNext("if")) + // IF(); + else if(isNext("do")) + DOWHILE(); + else if (isNext("{")) + BLOCK(); + else + ASSIGN(); +} + +// STMTS = STMT* +void STMTS() { + while (!isEnd() && !isNext("}")) { + STMT(); + } +} + +// BLOCK = { STMTS } +void BLOCK() { + skip("{"); + STMTS(); + skip("}"); +} + +// PROG = STMTS +void PROG() { + STMTS(); +} + +void parse() { + printf("============ parse =============\n"); + tokenIdx = 0; + PROG(); +} \ No newline at end of file diff --git a/homework/compiler.h b/homework/compiler.h new file mode 100644 index 00000000..45cfbe80 --- /dev/null +++ b/homework/compiler.h @@ -0,0 +1,27 @@ +#ifndef __COMPILER_H__ +#define __COMPILER_H__ + +#include +#include +#include + +#define TMAX 10000000 +#define SMAX 100000 + +enum { Id, Int, Keyword, Literal, Char }; + +extern char *typeName[]; + +extern char code[]; +extern char strTable[], *strTableEnd; +extern char *tokens[], tokenTop, tokenIdx; +extern int types[]; + +#define isDigit(ch) ((ch) >= '0' && (ch) <='9') + +#define isAlpha(ch) (((ch) >= 'a' && (ch) <='z') || ((ch) >= 'A' && (ch) <= 'Z')) + +void lex(char *text); +void parse(); + +#endif \ No newline at end of file diff --git a/homework/dowhile.c b/homework/dowhile.c new file mode 100644 index 00000000..77230494 --- /dev/null +++ b/homework/dowhile.c @@ -0,0 +1,4 @@ +i = 1; +do{ + i = i + 1; +}while (i<10); \ No newline at end of file diff --git a/homework/lexer.c b/homework/lexer.c new file mode 100644 index 00000000..f955f804 --- /dev/null +++ b/homework/lexer.c @@ -0,0 +1,50 @@ +#include "compiler.h" + +#define TMAX 10000000 +#define LMAX 100 + +char *typeName[5] = {"Id", "Int", "Keyword", "Literal", "Char"}; +char code[TMAX], *p; +char strTable[TMAX], *strTableEnd=strTable; +char *tokens[TMAX], tokenTop=0, tokenIdx=0, token[LMAX]; + +char *scan() { + while (isspace(*p)) p++; + + char *start = p; + int type; + if (*p == '\0') return NULL; + if (*p == '"') { + p++; + while (*p != '"') p++; + p++; + type = Literal; + } else if (*p >='0' && *p <='9') { // 數字 + while (*p >='0' && *p <='9') p++; + type = Int; + } else if (isAlpha(*p) || *p == '_') { // 變數名稱或關鍵字 + while (isAlpha(*p) || isDigit(*p) || *p == '_') p++; + type = Id; + } else { // 單一字元 + p++; + type = Char; + } + int len = p-start; + strncpy(token, start, len); + token[len] = '\0'; + return token; +} + +void lex(char *code) { + printf("========== lex ==============\n"); + p = code; + tokenTop = 0; + while (1) { + char *tok = scan(); + if (tok == NULL) break; + strcpy(strTableEnd, tok); + tokens[tokenTop++] = strTableEnd; + strTableEnd += (strlen(tok)+1); + printf("token=%s\n", tok); + } +} \ No newline at end of file diff --git a/homework/main.c b/homework/main.c new file mode 100644 index 00000000..695eac6b --- /dev/null +++ b/homework/main.c @@ -0,0 +1,25 @@ +#include "compiler.h" + +int readText(char *fileName, char *text, int size) { + FILE *file = fopen(fileName, "r"); + int len = fread(text, 1, size, file); + text[len] = '\0'; + fclose(file); + return len; +} + +void dump(char *strTable[], int top) { + printf("========== dump ==============\n"); + for (int i=0; i - -int max(int a, int b){ - if(a>b){ - return a; - } - else{ - return b; - } -} - -int main(void){ - int x = 5; - int y = 6; - int n = max(x, y); - printf("%d", n); - return 0; -} \ No newline at end of file diff --git a/pp.c b/pp.c new file mode 100644 index 00000000..e05f17ea --- /dev/null +++ b/pp.c @@ -0,0 +1,9 @@ +#include + +int main() { + int a = 5; + int *p = &a; + int **pp = &p; + **pp = 10; + printf("a=%d\n", a); +} \ No newline at end of file diff --git a/test.c b/test.c new file mode 100644 index 00000000..f42584fc --- /dev/null +++ b/test.c @@ -0,0 +1,10 @@ +#include +int main(void){ + int a = 5; + int *b = &a; + *b = 10; + + printf("%d\n", a); + printf("%p\n", b); //未設定*b的記憶體地址 + printf("%p", a); +} \ No newline at end of file From c6daf4cf96647d82ead6d8b96dcd01ee575ba67e Mon Sep 17 00:00:00 2001 From: Bojun6667 <99935026+Bojun6667@users.noreply.github.com> Date: Sun, 18 Jun 2023 12:06:23 +0800 Subject: [PATCH 04/11] =?UTF-8?q?Create=20=E7=94=A8chatgpt=E5=AF=AB?= =?UTF-8?q?=E6=9B=B8.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...224\250chatgpt\345\257\253\346\233\270.md" | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 "\347\224\250chatgpt\345\257\253\346\233\270.md" diff --git "a/\347\224\250chatgpt\345\257\253\346\233\270.md" "b/\347\224\250chatgpt\345\257\253\346\233\270.md" new file mode 100644 index 00000000..e82c97b3 --- /dev/null +++ "b/\347\224\250chatgpt\345\257\253\346\233\270.md" @@ -0,0 +1,98 @@ +# 資料結構 + +### 第一章:引言 + +* 資料結構是什麼? +* 資料結構的歷史背景 + +### 第二章:線性結構 + +* 簡介 +* 陣列 +* 鏈結串列 +* 堆疊 +* 佇列 + +### 第三章:非線性結構 + +* 簡介 +* 樹 +* 圖 + +### 第四章:排序和搜尋 + +* 簡介 +* 排序 +* 插入排序 +* 選擇排序 +* 快速排序 +* 合併排序 +* 搜尋 +* 線性搜尋 +* 二元搜尋 + +### 第五章:演算法分析 + +* 簡介 +* 時間複雜度 +* 空間複雜度 + +### 第六章:高級資料結構 + +* 簡介 +* 哈希表 +* 堆積 +* AVL 樹 +* 紅黑樹 + +### 第七章:應用案例 + +* 簡介 +* 資料庫 +* 編譯器 +* 網路路由器 +* 圖形處理 + +### 第八章:結語 + +* 資料結構的重要性 +* 未來展望 +* 參考資料 + +--- + +### 第一章:引言 + +在本書的第一章,我們將介紹資料結構的基本概念和重要性。資料結構是計算機科學中一個關鍵的主題,它涉及到組織和存儲數據的方法和技術。通過選擇適當的資料結構,我們可以提高程序的效率、減少記憶體的使用和改進數據的查詢速度。 + +本章的主要內容如下: + +**1.1 什麼是資料結構?** + +資料結構的定義和目的 +資料結構的應用範疇 + +**1.2 資料結構的重要性** + +效率和性能的提升 +資源優化 +可擴展性和彈性 + +**1.3 資料結構和演算法的關係** + +資料結構和演算法的相互關係 +如何選擇適當的資料結構 + +**1.4 資料結構設計的原則** + +正確性 +效率 +可讀性和可維護性 +可擴展性 + +**1.5 學習資料結構的重要性** + +提升編程能力 +解決實際問題 +擴展計算機科學知識 +在本章的最後,我們將簡要介紹本書的結構和後續章節的內容概要。這將幫助讀者瞭解將在本書中學習的資料結構的廣度和深度。藉著深入學習和理解資料結構,讀者將能夠更好地應用這些知識解決實際問題並提高他們的編程能力。 From dd7aad419f069858c8ea6b91f4bb27eb4e7163e7 Mon Sep 17 00:00:00 2001 From: Bojun6667 <99935026+Bojun6667@users.noreply.github.com> Date: Sun, 18 Jun 2023 23:22:38 +0800 Subject: [PATCH 05/11] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b61d8b8a..e0d20f61 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ 欄位 | 內容 -----|-------- 學期 | 111 學年度下學期 -學生 | xxx -學號末兩碼 | xx +學生 | 黃柏鈞 +學號末兩碼 | 20 教師 | [陳鍾誠](https://www.nqu.edu.tw/educsie/index.php?act=blog&code=list&ids=4) 學校科系 | [金門大學資訊工程系](https://www.nqu.edu.tw/educsie/index.php) 課程內容 | https://github.com/ccc111b/sp/ From 314cf2f41f73694026b0f4db9a260e19c89c41c6 Mon Sep 17 00:00:00 2001 From: Bojun6667 <99935026+Bojun6667@users.noreply.github.com> Date: Sun, 18 Jun 2023 23:23:49 +0800 Subject: [PATCH 06/11] =?UTF-8?q?Create=20=E6=9C=9F=E4=B8=AD=E4=BD=9C?= =?UTF-8?q?=E6=A5=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "\346\234\237\344\270\255\344\275\234\346\245\255" | 1 + 1 file changed, 1 insertion(+) create mode 100644 "\346\234\237\344\270\255\344\275\234\346\245\255" diff --git "a/\346\234\237\344\270\255\344\275\234\346\245\255" "b/\346\234\237\344\270\255\344\275\234\346\245\255" new file mode 100644 index 00000000..8b137891 --- /dev/null +++ "b/\346\234\237\344\270\255\344\275\234\346\245\255" @@ -0,0 +1 @@ + From 37768cd9667651274976096ee18581a95c4eafb9 Mon Sep 17 00:00:00 2001 From: Bojun6667 <99935026+Bojun6667@users.noreply.github.com> Date: Sun, 18 Jun 2023 23:27:12 +0800 Subject: [PATCH 07/11] =?UTF-8?q?Delete=20=E6=9C=9F=E4=B8=AD=E4=BD=9C?= =?UTF-8?q?=E6=A5=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "\346\234\237\344\270\255\344\275\234\346\245\255" | 1 - 1 file changed, 1 deletion(-) delete mode 100644 "\346\234\237\344\270\255\344\275\234\346\245\255" diff --git "a/\346\234\237\344\270\255\344\275\234\346\245\255" "b/\346\234\237\344\270\255\344\275\234\346\245\255" deleted file mode 100644 index 8b137891..00000000 --- "a/\346\234\237\344\270\255\344\275\234\346\245\255" +++ /dev/null @@ -1 +0,0 @@ - From 18b0643f203cdae761553766cdd599015efb0127 Mon Sep 17 00:00:00 2001 From: Bojun6667 <99935026+Bojun6667@users.noreply.github.com> Date: Sun, 18 Jun 2023 23:28:13 +0800 Subject: [PATCH 08/11] Create LICENSE --- .../LICENSE" | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 "\346\234\237\344\270\255\344\275\234\346\245\255/LICENSE" diff --git "a/\346\234\237\344\270\255\344\275\234\346\245\255/LICENSE" "b/\346\234\237\344\270\255\344\275\234\346\245\255/LICENSE" new file mode 100644 index 00000000..dd6e6f35 --- /dev/null +++ "b/\346\234\237\344\270\255\344\275\234\346\245\255/LICENSE" @@ -0,0 +1,26 @@ +mini-riscv-os is freely redistributable under the two-clause BSD License: + +Copyright (C) 2015-2018 National Quemoy University, Taiwan. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. From b6b1fa30b309740c6b7c90a7ce487d30d766d677 Mon Sep 17 00:00:00 2001 From: Bojun6667 <99935026+Bojun6667@users.noreply.github.com> Date: Sun, 18 Jun 2023 23:28:30 +0800 Subject: [PATCH 09/11] Create README.md --- "\346\234\237\344\270\255\344\275\234\346\245\255/README.md" | 1 + 1 file changed, 1 insertion(+) create mode 100644 "\346\234\237\344\270\255\344\275\234\346\245\255/README.md" diff --git "a/\346\234\237\344\270\255\344\275\234\346\245\255/README.md" "b/\346\234\237\344\270\255\344\275\234\346\245\255/README.md" new file mode 100644 index 00000000..8b137891 --- /dev/null +++ "b/\346\234\237\344\270\255\344\275\234\346\245\255/README.md" @@ -0,0 +1 @@ + From b3d239e9aff3e990bf698acf37a9a4252a5438c0 Mon Sep 17 00:00:00 2001 From: Bojun6667 <99935026+Bojun6667@users.noreply.github.com> Date: Mon, 19 Jun 2023 00:38:21 +0800 Subject: [PATCH 10/11] Update README.md --- .../README.md" | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git "a/\346\234\237\344\270\255\344\275\234\346\245\255/README.md" "b/\346\234\237\344\270\255\344\275\234\346\245\255/README.md" index 8b137891..e0de4188 100644 --- "a/\346\234\237\344\270\255\344\275\234\346\245\255/README.md" +++ "b/\346\234\237\344\270\255\344\275\234\346\245\255/README.md" @@ -1 +1,46 @@ +# 這邊是我參考以下連結試作 +參考連結: +[安裝docker]([https://hackmd.io/@bluewings1211/SJkLOW9_l?type=view#%E5%AE%89%E8%A3%9D-Docker](https://docs.docker.com/get-docker/)) +[手把手建立anaconda環境](https://hackmd.io/@bluewings1211/SJkLOW9_l?type=view#%E5%AE%89%E8%A3%9D-Docker) + +建立anaconda環境: +``` +user@user-virtual-machine:~$ docker run -i -t continuumio/anaconda3 /bin/bash +Unable to find image 'continuumio/anaconda3:latest' locally +latest: Pulling from continuumio/anaconda3 +26c5c85e47da: Pull complete +a940c36fdc26: Pull complete +Digest: sha256:6697f6ab7d940e557562c2d7c120bf8ef23f9392a0a3145dc5bc74d2ffe18519 +Status: Downloaded newer image for continuumio/anaconda3:latest +(base) root@8dd627cab792:/# exit +exit +user@user-virtual-machine:~$ docker images +REPOSITORY TAG IMAGE ID CREATED SIZE +busybox latest b539af69bc01 8 days ago 4.86MB +ubuntu latest 1f6ddc1b2547 3 weeks ago 77.8MB +hello-world latest 9c7a54a9a43c 6 weeks ago 13.3kB +continuumio/anaconda3 latest c8f78af31723 6 weeks ago 4.3GB +ubuntu 14.04 13b66b487594 2 years ago 197MB +ubuntu 15.10 9b9cb95443b5 6 years ago 137MB +user@user-virtual-machine:~$ +``` +建立完成後,想要裝jupyternotebook + +``` +user@user-virtual-machine:~$ docker run -i -t continuumio/anaconda3 /bin/bash +user@user-virtual-machine:~$ docker run -i -t -p 8888:8888 continuumio/anaconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && mkdir /opt/notebooks && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='0.0.0.0' --port=8888 --no-browser --allow-root" +. +. +. +To access the notebook, open this file in a browser: + file:///root/.local/share/jupyter/runtime/nbserver-1-open.html + Or copy and paste one of these URLs: + http://27448a472196:8888/?token=3869a421b9cde2a3786277d2712f6aa45c1a6da8beeff25d + or http://127.0.0.1:8888/?token=3869a421b9cde2a3786277d2712f6aa45c1a6da8beeff25d + +``` +點擊連結:http://127.0.0.1:8888/?token=3869a421b9cde2a3786277d2712f6aa45c1a6da8beeff25d +便可進入jupyternotebook + +--- From 1e08481c7e5e8d940c49748f24d4c1536c959fa5 Mon Sep 17 00:00:00 2001 From: Bojun6667 <99935026+Bojun6667@users.noreply.github.com> Date: Mon, 19 Jun 2023 00:48:57 +0800 Subject: [PATCH 11/11] Update README.md --- .../README.md" | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git "a/\346\234\237\344\270\255\344\275\234\346\245\255/README.md" "b/\346\234\237\344\270\255\344\275\234\346\245\255/README.md" index e0de4188..6f716f4e 100644 --- "a/\346\234\237\344\270\255\344\275\234\346\245\255/README.md" +++ "b/\346\234\237\344\270\255\344\275\234\346\245\255/README.md" @@ -24,6 +24,11 @@ ubuntu 14.04 13b66b487594 2 years ago 197MB ubuntu 15.10 9b9cb95443b5 6 years ago 137MB user@user-virtual-machine:~$ ``` + +![image](https://github.com/Bojun6667/sp111b/assets/99935026/4795d838-d370-4249-a3d8-87f3f0f47b87) +![image](https://github.com/Bojun6667/sp111b/assets/99935026/b3e20253-1409-4c47-adb7-687fec750914) + + 建立完成後,想要裝jupyternotebook ``` @@ -42,5 +47,7 @@ To access the notebook, open this file in a browser: 點擊連結:http://127.0.0.1:8888/?token=3869a421b9cde2a3786277d2712f6aa45c1a6da8beeff25d 便可進入jupyternotebook ---- +![image](https://github.com/Bojun6667/sp111b/assets/99935026/c51f4411-a5b2-45ab-a20b-47e13d5ef31a) +![image](https://github.com/Bojun6667/sp111b/assets/99935026/65427c0c-d686-4688-bb09-e10454faff66) +![image](https://github.com/Bojun6667/sp111b/assets/99935026/711301b1-87ff-4c30-ba00-8d72d927acf8)