From cc21f2befd871a33f7dcc60307eb67c15e912f85 Mon Sep 17 00:00:00 2001 From: serikbeissov Date: Wed, 2 Oct 2024 22:01:03 +0500 Subject: [PATCH 01/12] 1 git-init --- git/1 git-init/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/git/1 git-init/README.md b/git/1 git-init/README.md index d9d05ba5..64dd6ae9 100644 --- a/git/1 git-init/README.md +++ b/git/1 git-init/README.md @@ -45,3 +45,5 @@ P.S. - Красивый вывод логов `git log --all --decorate --oneline --graph` [Рецензия](./REVIEW.md) + +https://github.com/serikbeissov/jusan-git From 49eeff3812e6732312b6536aa27adeae9921fe3c Mon Sep 17 00:00:00 2001 From: serikbeissov Date: Wed, 2 Oct 2024 22:20:17 +0500 Subject: [PATCH 02/12] 2 readme --- git/2 readme/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/git/2 readme/README.md b/git/2 readme/README.md index e0f14c3d..fc643009 100644 --- a/git/2 readme/README.md +++ b/git/2 readme/README.md @@ -89,3 +89,5 @@ int main() { | WhatsApp | [Ссылка](whats.app) | 30 минут | | Telegram | [Ссылка](tg.me) | 5 минут | ```` + +https://github.com/serikbeissov/jusan-git/commit/31eba8d51d34be3bb47e09238b937e01358b2769 From ddf0b2a90067dfb5743e41080d37f0e2f1ccc0ef Mon Sep 17 00:00:00 2001 From: serikbeissov Date: Wed, 2 Oct 2024 22:32:19 +0500 Subject: [PATCH 03/12] 3 gitignore --- git/3 gitignore/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/git/3 gitignore/README.md b/git/3 gitignore/README.md index ccc52219..09a79b25 100644 --- a/git/3 gitignore/README.md +++ b/git/3 gitignore/README.md @@ -35,3 +35,5 @@ https://github.com/username/jusan-git/tree/5a1e0d9c4c864e13f0682bec96a9f19786fad ``` temp ``` + +https://github.com/serikbeissov/jusan-git/commit/e914a939432fb500ba96b3ab9a7fe6d878eadb5b From 10ce5beed0096debb6995ea9a1b43602209f20fa Mon Sep 17 00:00:00 2001 From: serikbeissov Date: Wed, 2 Oct 2024 22:51:07 +0500 Subject: [PATCH 04/12] 4 branch --- git/4 branch/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/git/4 branch/README.md b/git/4 branch/README.md index 6b39c1aa..01165b61 100644 --- a/git/4 branch/README.md +++ b/git/4 branch/README.md @@ -46,3 +46,5 @@ git checkout authorization 5. Загрузите изменения `git push` 6. Прислать ссылку на репозиторий c указанием последнего коммита мастера в URL. + +https://github.com/serikbeissov/jusan-git/commit/e914a939432fb500ba96b3ab9a7fe6d878eadb5b From 51be474136e8d1f9ee53f27f01be5fadb113c5a4 Mon Sep 17 00:00:00 2001 From: serikbeissov Date: Wed, 2 Oct 2024 23:03:02 +0500 Subject: [PATCH 05/12] 5 merge --- git/5 merge/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/git/5 merge/README.md b/git/5 merge/README.md index 0e3b2fd2..37b152d0 100644 --- a/git/5 merge/README.md +++ b/git/5 merge/README.md @@ -12,3 +12,5 @@ 1. В репозитории `jusan-git` объедините ветку `feature/username` с `master`. 2. Загрузите изменения `git push`. 3. Прислать ссылку на репозиторий c указанием последнего коммита мастера в URL. + +https://github.com/serikbeissov/jusan-git/tree/78506335d583ee1365dc0ad5c25a53cc0ff6bb28 From 2a564c1b62514a386980f34b66c88f9a62d4c014 Mon Sep 17 00:00:00 2001 From: serikbeissov Date: Wed, 2 Oct 2024 23:12:26 +0500 Subject: [PATCH 06/12] 6 my-pr --- git/6 my-pr/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/git/6 my-pr/README.md b/git/6 my-pr/README.md index 3ee51a47..5e2725ea 100644 --- a/git/6 my-pr/README.md +++ b/git/6 my-pr/README.md @@ -12,3 +12,5 @@ Pull request позволяют вам сообщать другим об изм 1. В репозитории `jusan-git` создать "Pull request" из ветки `new-readme` в `master`. 2. Посмотрите на странице пулл-реквеста, как отображаются окна: Conversation, Commits, Checks, Files changed. 3. Прислать ссылку на pull-request. + +https://github.com/serikbeissov/jusan-git/pull/1 From f43728cfa58ea792e12ae76412ee7f53dfce5917 Mon Sep 17 00:00:00 2001 From: serikbeissov Date: Wed, 2 Oct 2024 23:51:46 +0500 Subject: [PATCH 07/12] 7 fork-pr --- git/7 fork-pr/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/git/7 fork-pr/README.md b/git/7 fork-pr/README.md index 71abbe4d..9fbce4b1 100644 --- a/git/7 fork-pr/README.md +++ b/git/7 fork-pr/README.md @@ -32,3 +32,5 @@ fork - это клонирование чужого репозитория на ```bash curl -s https://stepik.org:443/api/course-lists\?page\=1 | jq --raw-output '."course-lists"[].title' ``` + +https://github.com/jusan-singularity/fork-me/pull/109 From 1d8fb9117b38bb0b77277c64e588908cb475c1f6 Mon Sep 17 00:00:00 2001 From: serikbeissov Date: Thu, 17 Oct 2024 17:17:16 +0500 Subject: [PATCH 08/12] add python light and medium answers --- .../calc-deposit.py" | 5 +++++ .../int-cmp.py" | 9 +++++++++ .../max-of-three.py" | 9 +++++++++ .../min.py" | 12 ++++++++++++ .../pow-a-b.py" | 6 ++++++ .../print-even-a-b.py" | 8 ++++++++ .../range.py" | 9 +++++++++ .../sort.py" | 11 +++++++++++ .../sqr-sum-1-n.py" | 7 +++++++ .../sum.py" | 7 +++++++ .../1-medium.py" | 6 ++++++ .../2-medium.py" | 12 ++++++++++++ .../3-medium.py" | 12 ++++++++++++ .../4-medium.py" | 9 +++++++++ .../5-medium.py" | 16 ++++++++++++++++ .../6-medium.py" | 19 +++++++++++++++++++ .../7-medium.py" | 15 +++++++++++++++ .../8-medium.py" | 16 ++++++++++++++++ 18 files changed, 188 insertions(+) create mode 100644 "python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/calc-deposit.py" create mode 100644 "python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/int-cmp.py" create mode 100644 "python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/max-of-three.py" create mode 100644 "python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/min.py" create mode 100644 "python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/pow-a-b.py" create mode 100644 "python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/print-even-a-b.py" create mode 100644 "python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/range.py" create mode 100644 "python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/sort.py" create mode 100644 "python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/sqr-sum-1-n.py" create mode 100644 "python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/sum.py" create mode 100644 "python/\321\201\321\200\320\265\320\264\320\275\320\270\320\265 \320\267\320\260\320\264\320\260\321\207\320\270/1-medium.py" create mode 100644 "python/\321\201\321\200\320\265\320\264\320\275\320\270\320\265 \320\267\320\260\320\264\320\260\321\207\320\270/2-medium.py" create mode 100644 "python/\321\201\321\200\320\265\320\264\320\275\320\270\320\265 \320\267\320\260\320\264\320\260\321\207\320\270/3-medium.py" create mode 100644 "python/\321\201\321\200\320\265\320\264\320\275\320\270\320\265 \320\267\320\260\320\264\320\260\321\207\320\270/4-medium.py" create mode 100644 "python/\321\201\321\200\320\265\320\264\320\275\320\270\320\265 \320\267\320\260\320\264\320\260\321\207\320\270/5-medium.py" create mode 100644 "python/\321\201\321\200\320\265\320\264\320\275\320\270\320\265 \320\267\320\260\320\264\320\260\321\207\320\270/6-medium.py" create mode 100644 "python/\321\201\321\200\320\265\320\264\320\275\320\270\320\265 \320\267\320\260\320\264\320\260\321\207\320\270/7-medium.py" create mode 100644 "python/\321\201\321\200\320\265\320\264\320\275\320\270\320\265 \320\267\320\260\320\264\320\260\321\207\320\270/8-medium.py" diff --git "a/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/calc-deposit.py" "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/calc-deposit.py" new file mode 100644 index 00000000..d8e9911f --- /dev/null +++ "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/calc-deposit.py" @@ -0,0 +1,5 @@ +def calc(balance:float,procent:float,srok:int): + for i in range(srok): + balance += balance*procent/100 + print(round(balance,2)) +calc(1000,5,1) \ No newline at end of file diff --git "a/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/int-cmp.py" "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/int-cmp.py" new file mode 100644 index 00000000..530f0170 --- /dev/null +++ "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/int-cmp.py" @@ -0,0 +1,9 @@ +a=float(input("vvedite a: ")) +b=float(input("vvedite b: ")) +if a>b: + print("ответ: 1") +elif a=b and a>=c: + print("max number is: ",a) +elif b>=c and b>a: + print("max number is: ",b) +else: + print("max number is: ",c) \ No newline at end of file diff --git "a/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/min.py" "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/min.py" new file mode 100644 index 00000000..14ebb6b4 --- /dev/null +++ "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/min.py" @@ -0,0 +1,12 @@ +def min_num(array): + if not array: + return 0 + min=array[0] + for i in range(len(array)): + if min>array[i]: + min=array[i] + print("min number is",min) + +min_num([1,2,3]) + + diff --git "a/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/pow-a-b.py" "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/pow-a-b.py" new file mode 100644 index 00000000..57367dc4 --- /dev/null +++ "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/pow-a-b.py" @@ -0,0 +1,6 @@ +a=int(input("vvedite chislo a:")) +b=int(input("vvedite chislo b:")) +result=1 +for i in range(b): + result=result*a +print("a^b=",result) \ No newline at end of file diff --git "a/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/print-even-a-b.py" "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/print-even-a-b.py" new file mode 100644 index 00000000..1fa2781b --- /dev/null +++ "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/print-even-a-b.py" @@ -0,0 +1,8 @@ +a=int(input("vvedite chislo a:")) +b=int(input("vvedite chislo b:")) +for i in range(b-a+1): + if a%2==0: + print(a) + a+=1 + + diff --git "a/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/range.py" "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/range.py" new file mode 100644 index 00000000..05b90065 --- /dev/null +++ "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/range.py" @@ -0,0 +1,9 @@ +def range_arr(num:int): + array=[] + for i in range(num): + array.append(i+1) + print(array) +range_arr(5) + + + \ No newline at end of file diff --git "a/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/sort.py" "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/sort.py" new file mode 100644 index 00000000..e050113d --- /dev/null +++ "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/sort.py" @@ -0,0 +1,11 @@ +def sort(array): + end=False + while end==False: + end=True + for i in range(len(array)-1): + if array[i]>array[i+1]: + array[i],array[i+1]=array[i+1],array[i] + end=False + print(array) + +sort([4,34,6,3,1,45,2,0,-12,53,8,114,2]) \ No newline at end of file diff --git "a/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/sqr-sum-1-n.py" "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/sqr-sum-1-n.py" new file mode 100644 index 00000000..06474a66 --- /dev/null +++ "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/sqr-sum-1-n.py" @@ -0,0 +1,7 @@ +n=int(input("vvedite chislo: ")) +sum=0 +for i in range(n+1): + sum=sum+i*i +print("Summa kvadratov = ",sum) + + \ No newline at end of file diff --git "a/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/sum.py" "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/sum.py" new file mode 100644 index 00000000..19101f07 --- /dev/null +++ "b/python/\320\273\320\265\320\263\320\272\320\270\320\265 \320\262\320\276\320\277\321\200\320\276\321\201\321\213/sum.py" @@ -0,0 +1,7 @@ +def sum_array(array): + sum=0 + for i in array: + sum+=i + print(sum) + +sum_array([1,2,3]) diff --git "a/python/\321\201\321\200\320\265\320\264\320\275\320\270\320\265 \320\267\320\260\320\264\320\260\321\207\320\270/1-medium.py" "b/python/\321\201\321\200\320\265\320\264\320\275\320\270\320\265 \320\267\320\260\320\264\320\260\321\207\320\270/1-medium.py" new file mode 100644 index 00000000..47c4849f --- /dev/null +++ "b/python/\321\201\321\200\320\265\320\264\320\275\320\270\320\265 \320\267\320\260\320\264\320\260\321\207\320\270/1-medium.py" @@ -0,0 +1,6 @@ +def number(num:int): + if num%2==0: + print(num,"- chetnoe") + else: + print(num,"- nechetnoe") +number(25) \ No newline at end of file diff --git "a/python/\321\201\321\200\320\265\320\264\320\275\320\270\320\265 \320\267\320\260\320\264\320\260\321\207\320\270/2-medium.py" "b/python/\321\201\321\200\320\265\320\264\320\275\320\270\320\265 \320\267\320\260\320\264\320\260\321\207\320\270/2-medium.py" new file mode 100644 index 00000000..411b5bc3 --- /dev/null +++ "b/python/\321\201\321\200\320\265\320\264\320\275\320\270\320\265 \320\267\320\260\320\264\320\260\321\207\320\270/2-medium.py" @@ -0,0 +1,12 @@ +def palindrom(word:str): + i=0 + while i=1 and day<=31) or (month==1 and day>=1 and day<=31) or (month==2 and day>=1 and day<=29): + return "Зима" + elif (month==3 and day>=1 and day<=31) or (month==4 and day>=1 and day<=30) or (month==5 and day>=1 and day<=31): + return "Весна" + elif (month==6 and day>=1 and day<=30) or (month==7 and day>=1 and day<=31) or (month==8 and day>=1 and day<=31): + return "Лето" + elif (month==9 and day>=1 and day<=30) or (month==10 and day>=1 and day<=31) or (month==11 and day>=1 and day<=31): + return "Осень" + +month = int(input("Введите месяц (1-12): ")) +day = int(input("Введите день (1-31): ")) + +season = determine_season(month, day) +print(f"Эта дата относится к сезону: {season}") From d9f725eba5db4e44d04aecc911c8c1d9b882d7b4 Mon Sep 17 00:00:00 2001 From: serikbeissov Date: Sun, 20 Oct 2024 22:15:35 +0500 Subject: [PATCH 09/12] add api-project --- .../api/fastapi-final/api-project/.gitignore | 162 ++++++++++++++++++ python/api/fastapi-final/api-project/main.py | 67 ++++++++ .../api-project/requirements.txt | 97 +++++++++++ 3 files changed, 326 insertions(+) create mode 100644 python/api/fastapi-final/api-project/.gitignore create mode 100644 python/api/fastapi-final/api-project/main.py create mode 100644 python/api/fastapi-final/api-project/requirements.txt diff --git a/python/api/fastapi-final/api-project/.gitignore b/python/api/fastapi-final/api-project/.gitignore new file mode 100644 index 00000000..efa407c3 --- /dev/null +++ b/python/api/fastapi-final/api-project/.gitignore @@ -0,0 +1,162 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ \ No newline at end of file diff --git a/python/api/fastapi-final/api-project/main.py b/python/api/fastapi-final/api-project/main.py new file mode 100644 index 00000000..02e74cb9 --- /dev/null +++ b/python/api/fastapi-final/api-project/main.py @@ -0,0 +1,67 @@ +from fastapi import FastAPI +from fastapi import Header, HTTPException +from pydantic import BaseModel +app=FastAPI() + +elements = [] + +class Element_in(BaseModel): + element:str + +class Expression(BaseModel): + expr: str + +@app.get("/") +def read_root(): + return {"Hello": "World"} + +@app.get("/sum1n/{item}") +def sum_array(item:int): + sum=0 + for i in range(item+1): + sum+=i + return {sum} + +@app.get("/fibo/{number}") +def fibo(number:int): + fib1, fib2 = 0, 1 + for i in range(number - 1): + fib1, fib2 = fib2, fib1 + fib2 + return {fib2} + +@app.post("/reverse") +def reverse_string(string:str=Header(...)): + rev_str=string[::-1] + return {rev_str} + +@app.put("/list") +def add_element(item:Element_in): + elements.append(item.element) + +@app.get("/list") +def get_element(): + return {elements} + +@app.post("/calculator") +def calculator(expression: Expression): + try: + num1, operator, num2 = expression.expr.split(',') + num1, num2 = float(num1), float(num2) + + if operator == '+': + result = num1 + num2 + elif operator == '-': + result = num1 - num2 + elif operator == '*': + result = num1 * num2 + elif operator == '/': + if num2 == 0: + raise HTTPException(status_code=403, detail="zerodiv") + result = num1 / num2 + else: + raise HTTPException(status_code=400, detail="invalid") + + return {"result": result} + + except ValueError: + raise HTTPException(status_code=400, detail="invalid") diff --git a/python/api/fastapi-final/api-project/requirements.txt b/python/api/fastapi-final/api-project/requirements.txt new file mode 100644 index 00000000..782e7086 --- /dev/null +++ b/python/api/fastapi-final/api-project/requirements.txt @@ -0,0 +1,97 @@ +aiofiles==23.2.1 +anyio==4.2.0 +attrs==23.2.0 +Babel==2.10.3 +bcc==0.29.1 +bcrypt==3.2.2 +blinker==1.7.0 +Brlapi==0.8.5 +certifi==2023.11.17 +chardet==5.2.0 +click==8.1.6 +cloud-init==24.2 +colorama==0.4.6 +command-not-found==0.3 +configobj==5.0.8 +cryptography==41.0.7 +cupshelpers==1.0 +dbus-python==1.3.2 +defer==1.0.6 +distro==1.9.0 +distro-info==1.7+build1 +docker==5.0.3 +docker-compose==1.29.2 +dockerpty==0.4.1 +docopt==0.6.2 +duplicity==2.1.4 +fastapi==0.101.0 +fasteners==0.18 +h11==0.14.0 +httplib2==0.20.4 +idna==3.6 +itsdangerous==2.1.2 +Jinja2==3.1.2 +jsonpatch==1.32 +jsonpointer==2.0 +jsonschema==4.10.3 +language-selector==0.1 +launchpadlib==1.11.0 +lazr.restfulclient==0.14.6 +lazr.uri==1.0.6 +louis==3.29.0 +Mako==1.3.2.dev0 +markdown-it-py==3.0.0 +MarkupSafe==2.1.5 +mdurl==0.1.2 +monotonic==1.6 +netaddr==0.8.0 +netifaces==0.11.0 +oauthlib==3.2.2 +olefile==0.46 +packaging==24.0 +paramiko==2.12.0 +pexpect==4.9.0 +pillow==10.2.0 +ptyprocess==0.7.0 +pycairo==1.25.1 +pycups==2.0.1 +pydantic==1.10.14 +Pygments==2.17.2 +PyGObject==3.48.2 +PyJWT==2.7.0 +PyNaCl==1.5.0 +pyparsing==3.1.1 +pyrsistent==0.20.0 +pyserial==3.5 +python-apt==2.7.7+ubuntu3 +python-dateutil==2.8.2 +python-debian==0.1.49+ubuntu2 +python-dotenv==1.0.1 +python-multipart==0.0.9 +pytz==2024.1 +pyxdg==0.28 +PyYAML==6.0.1 +requests==2.31.0 +rich==13.7.1 +setuptools==68.1.2 +simplejson==3.19.2 +six==1.16.0 +sniffio==1.3.0 +starlette==0.31.1 +systemd-python==235 +texttable==1.6.7 +typing_extensions==4.10.0 +ubuntu-drivers-common==0.0.0 +ubuntu-pro-client==8001 +ufw==0.36.2 +unattended-upgrades==0.1 +urllib3==2.0.7 +usb-creator==0.3.16 +uvicorn==0.27.1 +uvloop==0.19.0 +wadllib==1.3.6 +websocket-client==1.7.0 +wheel==0.42.0 +wsproto==1.2.0 +xdg==5 +xkit==0.0.0 From 21be08f3689056926a1a27542c35de57f6763ac1 Mon Sep 17 00:00:00 2001 From: serikbeissov Date: Sun, 3 Nov 2024 14:20:25 +0500 Subject: [PATCH 10/12] nginx complete --- nginx/nginx-auth/README.md | 31 +++++++++++++++++ nginx/nginx-cert/README.md | 17 ++++++++++ nginx/nginx-install/README.md | 26 +++++++++++++++ nginx/nginx-ip/README.md | 37 +++++++++++++++++++++ nginx/nginx-locations/README.md | 59 +++++++++++++++++++++++++++++++++ nginx/nginx-proxy/README.md | 13 ++++++++ nginx/nginx-ufw/README.md | 20 +++++++++++ 7 files changed, 203 insertions(+) diff --git a/nginx/nginx-auth/README.md b/nginx/nginx-auth/README.md index 6fd4b886..49bea19a 100644 --- a/nginx/nginx-auth/README.md +++ b/nginx/nginx-auth/README.md @@ -10,3 +10,34 @@ 6. Учетка `design` не должна иметь доступ на другие пути, тоже самое касается других учеток. --- + + GNU nano 7.2 hwnginx.conf +server { + listen 8080; + server_name example.com; + location / { + auth_basic "private site"; + auth_basic_user_file /etc/nginx/conf.d/passwd; + root /var/www/example.com; + index index.html; + } + location /images { + auth_basic "design site"; + auth_basic_user_file /etc/nginx/conf.d/design_passwd; + root /var/www/example.com/cats/; + } + location /gifs { + auth_basic "marketing site"; + auth_basic_user_file /etc/nginx/conf.d/marketing_passwd; + root /var/www/example.com/gifs/; + } + location /secret_word { + return 201 'jusan-nginx-locations'; + } + + location /api/ { + proxy_pass http://localhost:9090; + } +} + + diff --git a/nginx/nginx-cert/README.md b/nginx/nginx-cert/README.md index 066febbe..99298aa3 100644 --- a/nginx/nginx-cert/README.md +++ b/nginx/nginx-cert/README.md @@ -41,3 +41,20 @@ curl -H "Host: jusan.kz" -k https://localhost/secret_word Флаг `-k` нужен для того, чтобы `curl` не ругался на самоподписанный сертификат. --- + +server { + listen 443 ssl; + server_name jusan.kz; + ssl_certificate /etc/nginx/ssl/track-devops.crt; + ssl_certificate_key /etc/nginx/ssl/track-devops.key; + ssl_dhparam /etc/nginx/ssl/dhparam.pem; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_prefer_server_ciphers on; + location /secret_word { + return 201 "jusan-nginx-cert"; + } +} + +curl -H "Host: jusan.kz" -k https://localhost/secret_word +jusan-nginx-cert diff --git a/nginx/nginx-install/README.md b/nginx/nginx-install/README.md index 5b8285e0..35fc9708 100644 --- a/nginx/nginx-install/README.md +++ b/nginx/nginx-install/README.md @@ -114,3 +114,29 @@ curl http://127.0.0.1 --- ### Ответ + +sbeissov@sbeissov-HP-EliteBook-850-G3:~$ curl http://127.0.0.1 + + + +Welcome to nginx! + + + +

Welcome to nginx!

+

If you see this page, the nginx web server is successfully installed and +working. Further configuration is required.

+ +

For online documentation and support please refer to +nginx.org.
+Commercial support is available at +nginx.com.

+ +

Thank you for using nginx.

+ + + diff --git a/nginx/nginx-ip/README.md b/nginx/nginx-ip/README.md index cd550736..e0737537 100644 --- a/nginx/nginx-ip/README.md +++ b/nginx/nginx-ip/README.md @@ -22,3 +22,40 @@ --- ### Ответ + + GNU nano 7.2 hwnginx.conf * +server { + listen 8080; + server_name example.com; + location / { + auth_basic "private site"; + auth_basic_user_file /etc/nginx/conf.d/passwd; + root /var/www/example.com; + index index.html; + } + location /images { + auth_basic "design site"; + auth_basic_user_file /etc/nginx/conf.d/design_passwd; + root /var/www/example.com/cats/; + } + location /gifs { + auth_basic "marketing site"; + auth_basic_user_file /etc/nginx/conf.d/marketing_passwd; + root /var/www/example.com/gifs/; + } + + location /secret_word { + allow 192.0.0.1/20; + deny 192.0.0.1; + deny all; + return 203 'jusan-nginx-ip'; + } + + location /api/ { + proxy_pass http://localhost:9090; + } +} + +curl http://localhost:8080/secret_word +jusan-nginx-ip + diff --git a/nginx/nginx-locations/README.md b/nginx/nginx-locations/README.md index cb0dc0ae..138d16ea 100644 --- a/nginx/nginx-locations/README.md +++ b/nginx/nginx-locations/README.md @@ -25,3 +25,62 @@ curl -H "Host: example.com" http://localhost:8080/ --- ### Ответ +server { + listen 8080; + server_name example.com; + location / { + root /var/www/example.com; + index index.html; + } + location /images { + alias /var/www/example.com/cats/; + } + location /gifs { + alias /var/www/example.com/gifs/; + } + location /secret_word { + return 201 'jusan-nginx-locations'; + } +} + + +curl -H "Host: example.com" http://localhost:8080/ + + + + + + + + + Cats Page + + + +

+

Cat with Flower

+ flower +

+ +

+

Cat with Glasses

+ glasses +

+ +

+

Gray Cat

+ gray-animal +

+ +

+

Cats mafia

+ mafia +

+ +

+

Sleepy Cat

+ sleep +

+ + + diff --git a/nginx/nginx-proxy/README.md b/nginx/nginx-proxy/README.md index 58a6d47e..3d89d9ff 100644 --- a/nginx/nginx-proxy/README.md +++ b/nginx/nginx-proxy/README.md @@ -35,3 +35,16 @@ web-server: 0 --- ### Ответ + +server { + listen 8080; + server_name example.com; + + location /api/ { + proxy_pass http://localhost:9090; + } +} + +curl http://localhost:8080/api/ +404 page not found + diff --git a/nginx/nginx-ufw/README.md b/nginx/nginx-ufw/README.md index 2c776dcd..2e439d3a 100644 --- a/nginx/nginx-ufw/README.md +++ b/nginx/nginx-ufw/README.md @@ -20,3 +20,23 @@ --- ### Ответ +sudo apt update +sudo apt install ufw +sudo ufw disable +sudo ufw allow ssh +sudo ufw allow 'Nginx Full' +sudo ufw enable +sudo ufw status verbose + +Status: active +Logging: on (low) +Default: deny (incoming), allow (outgoing), deny (routed) +New profiles: skip + +To Action From +-- ------ ---- +22/tcp ALLOW IN Anywhere +80,443/tcp (Nginx Full) ALLOW IN Anywhere +22/tcp (v6) ALLOW IN Anywhere (v6) +80,443/tcp (Nginx Full (v6)) ALLOW IN Anywhere (v6) + From acce5e15540964f69f8ceb8ac4b3d8ad7aef4b57 Mon Sep 17 00:00:00 2001 From: serikbeissov Date: Thu, 7 Nov 2024 18:50:20 +0500 Subject: [PATCH 11/12] add Docker complete --- docker/docker-bind/README.md | 6 + docker/docker-bind/solution.sh | 6 + docker/docker-bind/tester-docker-bind.sh | 0 docker/docker-compose/docker-compose.yml | 8 + docker/docker-exec/README.md | 26 +++ docker/docker-mount/README.md | 2 + docker/docker-mount/jusan-docker-mount.conf | 8 + docker/docker-mount/jusan-docker-mount.zip | Bin 0 -> 1557 bytes .../__MACOSX/jusan-docker-mount/._.DS_Store | Bin 0 -> 120 bytes .../jusan-docker-mount/.DS_Store | Bin 0 -> 6148 bytes .../jusan-docker-mount/index.html | 1 + .../jusan-docker-mount/test | 1 + .../jusan-docker-mount/token | 1 + docker/docker-run/README.md | 11 ++ docker/dockerfile/jusan-dockerfile.zip | Bin 0 -> 676 bytes docker/dockerfile/jusan-dockerfile/dockerfile | 5 + docker/dockerfile/jusan-dockerfile/index.html | 1 + .../jusan-dockerfile/jusan-dockerfile.conf | 13 ++ docker/dockerize/api-project/.gitignore | 162 ++++++++++++++++++ docker/dockerize/api-project/Dockerfile | 6 + docker/dockerize/api-project/main.py | 67 ++++++++ docker/dockerize/api-project/requirements.txt | 97 +++++++++++ 22 files changed, 421 insertions(+) create mode 100755 docker/docker-bind/solution.sh mode change 100644 => 100755 docker/docker-bind/tester-docker-bind.sh create mode 100644 docker/docker-compose/docker-compose.yml create mode 100755 docker/docker-mount/jusan-docker-mount.conf create mode 100644 docker/docker-mount/jusan-docker-mount.zip create mode 100644 docker/docker-mount/jusan-docker-mount/__MACOSX/jusan-docker-mount/._.DS_Store create mode 100644 docker/docker-mount/jusan-docker-mount/jusan-docker-mount/.DS_Store create mode 100644 docker/docker-mount/jusan-docker-mount/jusan-docker-mount/index.html create mode 100644 docker/docker-mount/jusan-docker-mount/jusan-docker-mount/test create mode 100644 docker/docker-mount/jusan-docker-mount/jusan-docker-mount/token create mode 100644 docker/dockerfile/jusan-dockerfile.zip create mode 100644 docker/dockerfile/jusan-dockerfile/dockerfile create mode 100644 docker/dockerfile/jusan-dockerfile/index.html create mode 100644 docker/dockerfile/jusan-dockerfile/jusan-dockerfile.conf create mode 100644 docker/dockerize/api-project/.gitignore create mode 100644 docker/dockerize/api-project/Dockerfile create mode 100644 docker/dockerize/api-project/main.py create mode 100644 docker/dockerize/api-project/requirements.txt diff --git a/docker/docker-bind/README.md b/docker/docker-bind/README.md index 9fd7d532..5f3c4a01 100644 --- a/docker/docker-bind/README.md +++ b/docker/docker-bind/README.md @@ -42,3 +42,9 @@ bash ./tester.sh --- ### Ответ + +sudo docker run -d --name jusan-docker-bind -p 7777:80 -v /home/sbeissov/nginx.conf:/etc/nginx/nginx.conf nginx:mainline + +sudo docker ps + +sudo docker logs jusan-docker-bind diff --git a/docker/docker-bind/solution.sh b/docker/docker-bind/solution.sh new file mode 100755 index 00000000..3e23eba4 --- /dev/null +++ b/docker/docker-bind/solution.sh @@ -0,0 +1,6 @@ +#!/bin/bash +sudo docker run -d --name jusan-docker-bind -p 7777:80 -v /home/sbeissov/nginx.conf:/etc/nginx/nginx.conf nginx:mainline + +sudo docker ps + +sudo docker logs jusan-docker-bind diff --git a/docker/docker-bind/tester-docker-bind.sh b/docker/docker-bind/tester-docker-bind.sh old mode 100644 new mode 100755 diff --git a/docker/docker-compose/docker-compose.yml b/docker/docker-compose/docker-compose.yml new file mode 100644 index 00000000..ff7c73b8 --- /dev/null +++ b/docker/docker-compose/docker-compose.yml @@ -0,0 +1,8 @@ +services: + api: + image: jusan-dockerize:latest + build: ../dockerize + container_name: jusan-compose + ports: + - 8080:8080 + restart: on-failure \ No newline at end of file diff --git a/docker/docker-exec/README.md b/docker/docker-exec/README.md index 1cfe97f5..d34e752b 100644 --- a/docker/docker-exec/README.md +++ b/docker/docker-exec/README.md @@ -57,3 +57,29 @@ bash ./tester.sh --- ### Ответ + + 1904 sudo docker run -d --name jusan-docker-exec -p 8181:80 nginx:mainline + 1905 sudo docker exec -it jusan-docker-exec bash + 1906 curl http://localhost:8181 + 1907 curl http://localhost:8181/home + 1908 curl http://localhost:8181/about + 1909 sudo docker logs jusan-docker-exec + + 1 cd /etc/nginx/conf.d/ + 2 ls + 3 nano jusan-docker-exec.conf + 4 cat << EOF > /etc/nginx/conf.d/jusan-docker-exec.conf +server { + listen 80; + server_name jusan.singularity; + + location / {return 200 'Hello, from jusan-docker-exec';} + location /home {return 201 'This is my home!';} + location /about {return 202 'I am just an exercise!';} +} +EOF + + 5 cat jusan-docker-exec.conf + 6 rm default.conf + 7 nginx -s reload + diff --git a/docker/docker-mount/README.md b/docker/docker-mount/README.md index d7abe89d..262d6cb8 100644 --- a/docker/docker-mount/README.md +++ b/docker/docker-mount/README.md @@ -47,3 +47,5 @@ bash ./tester.sh --- ### Ответ + +sudo docker run -d --name jusan-docker-mount -p 9988:80 -v /home/sbeissov/github/TechOrda/docker/docker-mount/jusan-docker-mount.conf:/etc/nginx/conf.d/nginx.conf -v /home/sbeissov/github/TechOrda/docker/docker-mount/jusan-docker-mount:/usr/share/nginx/html nginx:mainline diff --git a/docker/docker-mount/jusan-docker-mount.conf b/docker/docker-mount/jusan-docker-mount.conf new file mode 100755 index 00000000..e51712dc --- /dev/null +++ b/docker/docker-mount/jusan-docker-mount.conf @@ -0,0 +1,8 @@ +server { + listen 80; + server_name example.com; + + location / { + root /var/www/example; + } +} diff --git a/docker/docker-mount/jusan-docker-mount.zip b/docker/docker-mount/jusan-docker-mount.zip new file mode 100644 index 0000000000000000000000000000000000000000..121e844cea4b4057286353e8f9e222abd30c38dd GIT binary patch literal 1557 zcmWIWW@Zs#0D*wox)3k}N(eJ3Fl3b$C+6v<@sz)I6}Mg~~2T#XtOdTjAi`}x!yp+@my^NCF9I%b)K$|>NT#`UEnvI)J z8f^LOarWfN>wzBHr_P6-0J-3@?@9l2e!7>=p4C6Az40Qu79-e6F2WmhG=P?ZEJip9 zIY3z?7#L)*J4w$aI6k-}zbKVZ$iAIn&3DK^z$Lwx+uKA>^KJn{UV`gM&K(S_;S0WB zRJ@~KVbVICVo!L3X76GS@+T?X5cgm!l zI%JLJ^S7=mDVCnkZdI0S6#K%D9I!A2 zx&`DOgiGHbB`j{Bj5zjKEJ-ac0Y_jiFe&8&F^EQU8TYv}-uh=fbx!H5WC7cl8mf`O z3p5jCZh$u$Vqox1Ojhs@R)|o50+1L3ClDI}u^SMB_!U6R08`;00ODZ-jv*mIP;rnB Iur73U08|YJ=l}o! literal 0 HcmV?d00001 diff --git a/docker/docker-mount/jusan-docker-mount/jusan-docker-mount/.DS_Store b/docker/docker-mount/jusan-docker-mount/jusan-docker-mount/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0Hello, from jusan-docker-mount \ No newline at end of file diff --git a/docker/docker-mount/jusan-docker-mount/jusan-docker-mount/test b/docker/docker-mount/jusan-docker-mount/jusan-docker-mount/test new file mode 100644 index 00000000..e1453b44 --- /dev/null +++ b/docker/docker-mount/jusan-docker-mount/jusan-docker-mount/test @@ -0,0 +1 @@ +Singularity \ No newline at end of file diff --git a/docker/docker-mount/jusan-docker-mount/jusan-docker-mount/token b/docker/docker-mount/jusan-docker-mount/jusan-docker-mount/token new file mode 100644 index 00000000..461e0831 --- /dev/null +++ b/docker/docker-mount/jusan-docker-mount/jusan-docker-mount/token @@ -0,0 +1 @@ +Jusan \ No newline at end of file diff --git a/docker/docker-run/README.md b/docker/docker-run/README.md index 2e7f0b3b..a781b85c 100644 --- a/docker/docker-run/README.md +++ b/docker/docker-run/README.md @@ -54,4 +54,15 @@ bash ./tester.sh --- ### Ответ +sudo docker run -d --name jsn-dkr-run -p 8887:80 nginx:mainline +8e2cfdffa414de0acda7dc746ca3a0c1656c7d130269853e932a324f8a4348e9 + + sudo docker ps +8e2cfdffa414 nginx:mainline "/docker-entrypoint.…" 6 minutes ago Up 6 minutes 0.0.0.0:8887->80/tcp, [::]:8887->80/tcp + +sudo docker stop jsn-dkr-run + +sudo docker ps -a + + diff --git a/docker/dockerfile/jusan-dockerfile.zip b/docker/dockerfile/jusan-dockerfile.zip new file mode 100644 index 0000000000000000000000000000000000000000..855333cf0a13715d9ee23bcf1eb8e143fd6c1c86 GIT binary patch literal 676 zcmWIWW@Zs#0D)aCbs=B|ln`W4V8|*hPR!Fy$xqHsElSJGN!1Sx;bmZFG=}>-9|1+AR5i! z%_j}EeD*kd^5peE5A9RuLr-Yw`klG#d(!`$pRU*GGoGPaF0!v;UJ6uS&zw1Z@{Bht*!C|s zyWffe%?H^L;LXS+!i+n3fl9#Ots{scBd{UH!-5;xbRU~V#D{8tH!B;+)yzO>2uxG4K+M1Z0J!a+82|tP literal 0 HcmV?d00001 diff --git a/docker/dockerfile/jusan-dockerfile/dockerfile b/docker/dockerfile/jusan-dockerfile/dockerfile new file mode 100644 index 00000000..78c4ad13 --- /dev/null +++ b/docker/dockerfile/jusan-dockerfile/dockerfile @@ -0,0 +1,5 @@ +FROM nginx:mainline +WORKDIR /var/www/jusan-dockerfile +COPY index.html . +COPY jusan-dockerfile.conf /etc/nginx/conf.d/default.conf + diff --git a/docker/dockerfile/jusan-dockerfile/index.html b/docker/dockerfile/jusan-dockerfile/index.html new file mode 100644 index 00000000..624e4ccb --- /dev/null +++ b/docker/dockerfile/jusan-dockerfile/index.html @@ -0,0 +1 @@ +

Hello, from jusan-dockerfile!

\ No newline at end of file diff --git a/docker/dockerfile/jusan-dockerfile/jusan-dockerfile.conf b/docker/dockerfile/jusan-dockerfile/jusan-dockerfile.conf new file mode 100644 index 00000000..174ecf94 --- /dev/null +++ b/docker/dockerfile/jusan-dockerfile/jusan-dockerfile.conf @@ -0,0 +1,13 @@ +server { + listen 80; + server_name jusan.dockerfile; + + location / { + root /var/www/jusan-dockerfile; + } + + location /secret { return 201 'jusan-dockerfile'; + } + location /jusan { return 201 'singularity' ; + } +} diff --git a/docker/dockerize/api-project/.gitignore b/docker/dockerize/api-project/.gitignore new file mode 100644 index 00000000..efa407c3 --- /dev/null +++ b/docker/dockerize/api-project/.gitignore @@ -0,0 +1,162 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ \ No newline at end of file diff --git a/docker/dockerize/api-project/Dockerfile b/docker/dockerize/api-project/Dockerfile new file mode 100644 index 00000000..678d8ba9 --- /dev/null +++ b/docker/dockerize/api-project/Dockerfile @@ -0,0 +1,6 @@ +FROM python:3.8 +WORKDIR /app +COPY main.py /app/ +RUN pip3 install fastapi uvicorn +EXPOSE 8080 +CMD [ "uvicorn", "main:app", "--host", "0.0.0.0","--port", "8080" ] diff --git a/docker/dockerize/api-project/main.py b/docker/dockerize/api-project/main.py new file mode 100644 index 00000000..02e74cb9 --- /dev/null +++ b/docker/dockerize/api-project/main.py @@ -0,0 +1,67 @@ +from fastapi import FastAPI +from fastapi import Header, HTTPException +from pydantic import BaseModel +app=FastAPI() + +elements = [] + +class Element_in(BaseModel): + element:str + +class Expression(BaseModel): + expr: str + +@app.get("/") +def read_root(): + return {"Hello": "World"} + +@app.get("/sum1n/{item}") +def sum_array(item:int): + sum=0 + for i in range(item+1): + sum+=i + return {sum} + +@app.get("/fibo/{number}") +def fibo(number:int): + fib1, fib2 = 0, 1 + for i in range(number - 1): + fib1, fib2 = fib2, fib1 + fib2 + return {fib2} + +@app.post("/reverse") +def reverse_string(string:str=Header(...)): + rev_str=string[::-1] + return {rev_str} + +@app.put("/list") +def add_element(item:Element_in): + elements.append(item.element) + +@app.get("/list") +def get_element(): + return {elements} + +@app.post("/calculator") +def calculator(expression: Expression): + try: + num1, operator, num2 = expression.expr.split(',') + num1, num2 = float(num1), float(num2) + + if operator == '+': + result = num1 + num2 + elif operator == '-': + result = num1 - num2 + elif operator == '*': + result = num1 * num2 + elif operator == '/': + if num2 == 0: + raise HTTPException(status_code=403, detail="zerodiv") + result = num1 / num2 + else: + raise HTTPException(status_code=400, detail="invalid") + + return {"result": result} + + except ValueError: + raise HTTPException(status_code=400, detail="invalid") diff --git a/docker/dockerize/api-project/requirements.txt b/docker/dockerize/api-project/requirements.txt new file mode 100644 index 00000000..782e7086 --- /dev/null +++ b/docker/dockerize/api-project/requirements.txt @@ -0,0 +1,97 @@ +aiofiles==23.2.1 +anyio==4.2.0 +attrs==23.2.0 +Babel==2.10.3 +bcc==0.29.1 +bcrypt==3.2.2 +blinker==1.7.0 +Brlapi==0.8.5 +certifi==2023.11.17 +chardet==5.2.0 +click==8.1.6 +cloud-init==24.2 +colorama==0.4.6 +command-not-found==0.3 +configobj==5.0.8 +cryptography==41.0.7 +cupshelpers==1.0 +dbus-python==1.3.2 +defer==1.0.6 +distro==1.9.0 +distro-info==1.7+build1 +docker==5.0.3 +docker-compose==1.29.2 +dockerpty==0.4.1 +docopt==0.6.2 +duplicity==2.1.4 +fastapi==0.101.0 +fasteners==0.18 +h11==0.14.0 +httplib2==0.20.4 +idna==3.6 +itsdangerous==2.1.2 +Jinja2==3.1.2 +jsonpatch==1.32 +jsonpointer==2.0 +jsonschema==4.10.3 +language-selector==0.1 +launchpadlib==1.11.0 +lazr.restfulclient==0.14.6 +lazr.uri==1.0.6 +louis==3.29.0 +Mako==1.3.2.dev0 +markdown-it-py==3.0.0 +MarkupSafe==2.1.5 +mdurl==0.1.2 +monotonic==1.6 +netaddr==0.8.0 +netifaces==0.11.0 +oauthlib==3.2.2 +olefile==0.46 +packaging==24.0 +paramiko==2.12.0 +pexpect==4.9.0 +pillow==10.2.0 +ptyprocess==0.7.0 +pycairo==1.25.1 +pycups==2.0.1 +pydantic==1.10.14 +Pygments==2.17.2 +PyGObject==3.48.2 +PyJWT==2.7.0 +PyNaCl==1.5.0 +pyparsing==3.1.1 +pyrsistent==0.20.0 +pyserial==3.5 +python-apt==2.7.7+ubuntu3 +python-dateutil==2.8.2 +python-debian==0.1.49+ubuntu2 +python-dotenv==1.0.1 +python-multipart==0.0.9 +pytz==2024.1 +pyxdg==0.28 +PyYAML==6.0.1 +requests==2.31.0 +rich==13.7.1 +setuptools==68.1.2 +simplejson==3.19.2 +six==1.16.0 +sniffio==1.3.0 +starlette==0.31.1 +systemd-python==235 +texttable==1.6.7 +typing_extensions==4.10.0 +ubuntu-drivers-common==0.0.0 +ubuntu-pro-client==8001 +ufw==0.36.2 +unattended-upgrades==0.1 +urllib3==2.0.7 +usb-creator==0.3.16 +uvicorn==0.27.1 +uvloop==0.19.0 +wadllib==1.3.6 +websocket-client==1.7.0 +wheel==0.42.0 +wsproto==1.2.0 +xdg==5 +xkit==0.0.0 From 12883eb837be9fe40eb1ced6304b3b2b7889f86a Mon Sep 17 00:00:00 2001 From: serikbeissov Date: Mon, 18 Nov 2024 21:29:21 +0500 Subject: [PATCH 12/12] add Docker solution.sh scripts --- docker/docker-exec/solution.sh | 24 ++++++++++++++++++ docker/docker-mount/solution.sh | 2 ++ docker/docker-run/solution.sh | 6 +++++ .../{jusan-dockerfile => }/dockerfile | 0 docker/dockerfile/jusan-dockerfile.zip | Bin 676 -> 0 bytes docker/dockerfile/solution.sh | 6 +++++ docker/dockerize/{api-project => }/.gitignore | 0 docker/dockerize/{api-project => }/Dockerfile | 0 docker/dockerize/{api-project => }/main.py | 0 .../{api-project => }/requirements.txt | 0 docker/dockerize/solution.sh | 4 +++ 11 files changed, 42 insertions(+) create mode 100644 docker/docker-exec/solution.sh create mode 100644 docker/docker-mount/solution.sh create mode 100644 docker/docker-run/solution.sh rename docker/dockerfile/{jusan-dockerfile => }/dockerfile (100%) delete mode 100644 docker/dockerfile/jusan-dockerfile.zip create mode 100644 docker/dockerfile/solution.sh rename docker/dockerize/{api-project => }/.gitignore (100%) rename docker/dockerize/{api-project => }/Dockerfile (100%) rename docker/dockerize/{api-project => }/main.py (100%) rename docker/dockerize/{api-project => }/requirements.txt (100%) create mode 100644 docker/dockerize/solution.sh diff --git a/docker/docker-exec/solution.sh b/docker/docker-exec/solution.sh new file mode 100644 index 00000000..8cf2c35d --- /dev/null +++ b/docker/docker-exec/solution.sh @@ -0,0 +1,24 @@ +#!/bin/bash +sudo docker run -d --name jusan-docker-exec -p 8181:80 nginx:mainline +sudo docker exec -it jusan-docker-exec bash +curl http://localhost:8181 +curl http://localhost:8181/home +curl http://localhost:8181/about +sudo docker logs jusan-docker-exec + +cd /etc/nginx/conf.d/ +nano jusan-docker-exec.conf +cat << EOF > /etc/nginx/conf.d/jusan-docker-exec.conf +server { + listen 80; + server_name jusan.singularity; + + location / {return 200 'Hello, from jusan-docker-exec';} + location /home {return 201 'This is my home!';} + location /about {return 202 'I am just an exercise!';} +} +EOF + +cat jusan-docker-exec.conf +rm default.conf +nginx -s reload diff --git a/docker/docker-mount/solution.sh b/docker/docker-mount/solution.sh new file mode 100644 index 00000000..085ff1e6 --- /dev/null +++ b/docker/docker-mount/solution.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo docker run -d --name jusan-docker-mount -p 9988:80 -v /home/sbeissov/github/TechOrda/docker/docker-mount/jusan-docker-mount.conf:/etc/nginx/conf.d/nginx.conf -v /home/sbeissov/github/TechOrda/docker/docker-mount/jusan-docker-mount:/usr/share/nginx/html nginx:mainline diff --git a/docker/docker-run/solution.sh b/docker/docker-run/solution.sh new file mode 100644 index 00000000..c6cf6451 --- /dev/null +++ b/docker/docker-run/solution.sh @@ -0,0 +1,6 @@ +#!/bin/bash +sudo docker run -d --name jsn-dkr-run -p 8888:80 nginx:mainline +sudo docker ps +docker stop jsn-dkr-run +sudo docker ps +sudo docker ps -a \ No newline at end of file diff --git a/docker/dockerfile/jusan-dockerfile/dockerfile b/docker/dockerfile/dockerfile similarity index 100% rename from docker/dockerfile/jusan-dockerfile/dockerfile rename to docker/dockerfile/dockerfile diff --git a/docker/dockerfile/jusan-dockerfile.zip b/docker/dockerfile/jusan-dockerfile.zip deleted file mode 100644 index 855333cf0a13715d9ee23bcf1eb8e143fd6c1c86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmWIWW@Zs#0D)aCbs=B|ln`W4V8|*hPR!Fy$xqHsElSJGN!1Sx;bmZFG=}>-9|1+AR5i! z%_j}EeD*kd^5peE5A9RuLr-Yw`klG#d(!`$pRU*GGoGPaF0!v;UJ6uS&zw1Z@{Bht*!C|s zyWffe%?H^L;LXS+!i+n3fl9#Ots{scBd{UH!-5;xbRU~V#D{8tH!B;+)yzO>2uxG4K+M1Z0J!a+82|tP diff --git a/docker/dockerfile/solution.sh b/docker/dockerfile/solution.sh new file mode 100644 index 00000000..ef9841fd --- /dev/null +++ b/docker/dockerfile/solution.sh @@ -0,0 +1,6 @@ +#!/bin/bash +curl -O https://stepik.org/media/attachments/lesson/686238/jusan-dockerfile.conf +curl -O https://stepik.org/media/attachments/lesson/686238/jusan-dockerfile.zip +unzip jusan-dockerfile.zip +sudo docker build -t nginx:jusan-dockerfile . +sudo docker run -d -p 6060:80 --name jusan-dockerfile nginx:jusan-dockerfile \ No newline at end of file diff --git a/docker/dockerize/api-project/.gitignore b/docker/dockerize/.gitignore similarity index 100% rename from docker/dockerize/api-project/.gitignore rename to docker/dockerize/.gitignore diff --git a/docker/dockerize/api-project/Dockerfile b/docker/dockerize/Dockerfile similarity index 100% rename from docker/dockerize/api-project/Dockerfile rename to docker/dockerize/Dockerfile diff --git a/docker/dockerize/api-project/main.py b/docker/dockerize/main.py similarity index 100% rename from docker/dockerize/api-project/main.py rename to docker/dockerize/main.py diff --git a/docker/dockerize/api-project/requirements.txt b/docker/dockerize/requirements.txt similarity index 100% rename from docker/dockerize/api-project/requirements.txt rename to docker/dockerize/requirements.txt diff --git a/docker/dockerize/solution.sh b/docker/dockerize/solution.sh new file mode 100644 index 00000000..3cd0b866 --- /dev/null +++ b/docker/dockerize/solution.sh @@ -0,0 +1,4 @@ +#!/bin/bash +sudo docker build -t jusan-fastapi-final:dockerized . + +sudo docker run -d -p 8080:8080 --name jusan-dockerize jusan-fastapi-final:dockerized \ No newline at end of file