From 72c21d6d81b300e5adeeade94cdfddc6153b1dc3 Mon Sep 17 00:00:00 2001 From: Kilokem Date: Fri, 10 Jan 2025 23:05:02 +0100 Subject: [PATCH] Main site structure with first uni quiz --- main.py | 38 +++ portalfejlesztes_net_ben/__init__.py | 119 ++++++++++ .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 5460 bytes .../portalfejlesztes_net_ben.cpython-313.pyc | Bin 0 -> 5089 bytes .../__pycache__/views.cpython-313.pyc | Bin 0 -> 5070 bytes .../kerdessor1_manual.txt | 132 +++++++++++ .../kerdessor2_manual.txt | 131 +++++++++++ portalfejlesztes_net_ben/kerdessor3.txt | 84 +++++++ .../templates/allquestions.html | 159 +++++++++++++ portalfejlesztes_net_ben/templates/quiz.html | 130 +++++++++++ .../templates/result.html | 173 ++++++++++++++ static/css/main.css | 220 ++++++++++++++++++ static/images/uni/portalfejlesztes-logo.png | Bin 0 -> 59278 bytes templates/about.html | 1 + templates/git.html | 1 + templates/home.html | 35 +++ templates/main.html | 33 +++ templates/projects.html | 1 + templates/uni/uni.html | 54 +++++ 19 files changed, 1311 insertions(+) create mode 100644 main.py create mode 100644 portalfejlesztes_net_ben/__init__.py create mode 100644 portalfejlesztes_net_ben/__pycache__/__init__.cpython-313.pyc create mode 100644 portalfejlesztes_net_ben/__pycache__/portalfejlesztes_net_ben.cpython-313.pyc create mode 100644 portalfejlesztes_net_ben/__pycache__/views.cpython-313.pyc create mode 100644 portalfejlesztes_net_ben/kerdessor1_manual.txt create mode 100644 portalfejlesztes_net_ben/kerdessor2_manual.txt create mode 100644 portalfejlesztes_net_ben/kerdessor3.txt create mode 100644 portalfejlesztes_net_ben/templates/allquestions.html create mode 100644 portalfejlesztes_net_ben/templates/quiz.html create mode 100644 portalfejlesztes_net_ben/templates/result.html create mode 100644 static/css/main.css create mode 100644 static/images/uni/portalfejlesztes-logo.png create mode 100644 templates/about.html create mode 100644 templates/git.html create mode 100644 templates/home.html create mode 100644 templates/main.html create mode 100644 templates/projects.html create mode 100644 templates/uni/uni.html diff --git a/main.py b/main.py new file mode 100644 index 0000000..bf170b0 --- /dev/null +++ b/main.py @@ -0,0 +1,38 @@ +from flask import Flask, render_template, request, redirect, url_for, session, Blueprint +from portalfejlesztes_net_ben import portalfejlesztes_net_ben + + +app = Flask(__name__) +app.secret_key = 'your_secret_key' + +@app.route('/') +@app.route('/home') +def home(): + return render_template('home.html') + +@app.route('/about') +def about(): + return render_template('about.html') + +@app.route('/uni') +def uni(): + return render_template('uni/uni.html') + +@app.route('/projects') +def projects(): + return render_template('projects.html') + +@app.route('/git') +def git(): + return render_template('git.html') + + +# Register the blueprint with a URL prefix +app.register_blueprint(portalfejlesztes_net_ben, url_prefix='/uni/portalfejlesztes_net_ben') + + +if __name__ == '__main__': + app.run(debug=True) + + +app.run(host='192.168.2.182', port=5000) \ No newline at end of file diff --git a/portalfejlesztes_net_ben/__init__.py b/portalfejlesztes_net_ben/__init__.py new file mode 100644 index 0000000..34edc19 --- /dev/null +++ b/portalfejlesztes_net_ben/__init__.py @@ -0,0 +1,119 @@ +from flask import Flask, render_template, request, redirect, url_for, session, Blueprint +import os +import random + +TEXTFILES = ["./portalfejlesztes_net_ben/kerdessor1_manual.txt", "./portalfejlesztes_net_ben/kerdessor2_manual.txt", "./portalfejlesztes_net_ben/kerdessor3.txt"] + +portalfejlesztes_net_ben = Blueprint( + 'portalfejlesztes_net_ben', + __name__, + template_folder='templates' # Ensure this matches the folder location +) + +def parse_questions(): + content = [] + for file_path in TEXTFILES: + with open(file_path, 'r', encoding='utf-8') as file: + content.extend(file.read().split("\n\n")) + + questions = [] + + for block in content: + lines = block.strip().split("\n") + question = lines[0].replace("Kérdés: ", "").strip() + answers = [] + correct_answers = [] + + for line in lines[1:]: + answer = line.strip() + if answer.startswith('!'): + correct_answers.append(answer[1:].strip()) + else: + answers.append(answer) + + if correct_answers: + questions.append({ + 'question': question, + 'answers': answers + correct_answers, + 'correct_answers': correct_answers + }) + + return questions + +@portalfejlesztes_net_ben.route('/') +@portalfejlesztes_net_ben.route('/quiz', methods=['GET', 'POST']) +def quiz(): + if 'selected_questions' not in session: + questions = parse_questions() + selected_questions = random.sample(questions, 20) + session['selected_questions'] = selected_questions + session['question_index'] = 0 + session['answers'] = [] + else: + selected_questions = session['selected_questions'] + + question_index = session.get('question_index', 0) + + if question_index >= len(selected_questions): + return redirect(url_for('portalfejlesztes_net_ben.result')) + + current_question = selected_questions[question_index] + random.shuffle(current_question['answers']) + + return render_template('quiz.html', question=current_question, question_index=question_index) + +@portalfejlesztes_net_ben.route('/submit_answer', methods=['POST']) +def submit_answer(): + user_answers = request.form.getlist('answer') + question_index = int(request.form.get('question_index')) + + answers = session.get('answers', []) + answers.append(user_answers) + session['answers'] = answers + + question_index += 1 + session['question_index'] = question_index + + return redirect(url_for('portalfejlesztes_net_ben.quiz')) + +@portalfejlesztes_net_ben.route('/result') +def result(): + selected_questions = session.get('selected_questions', None) + answers = session.get('answers', None) + + score = 0 + mistakes = [] + + for i, user_answer in enumerate(answers): + correct_answers = selected_questions[i]['correct_answers'] + + if set(user_answer) == set(correct_answers): + score += 1 + else: + mistakes.append({ + 'question': selected_questions[i]['question'], + 'correct_answer': correct_answers, + 'user_answer': user_answer + }) + + questions_with_answers = zip(selected_questions, answers) + + session.pop('question_index', None) + session.pop('answers', None) + session.pop('selected_questions', None) + + return render_template('result.html', score=score, total=len(selected_questions), mistakes=mistakes, questions_with_answers=questions_with_answers) + +@portalfejlesztes_net_ben.route('/restart') +def restart(): + session.pop('question_index', None) + session.pop('answers', None) + session.pop('selected_questions', None) + + return redirect(url_for('portalfejlesztes_net_ben.quiz')) + +@portalfejlesztes_net_ben.route('/allquestions') +def allquestions(): + questions = parse_questions() + + return render_template('allquestions.html', questions=questions) diff --git a/portalfejlesztes_net_ben/__pycache__/__init__.cpython-313.pyc b/portalfejlesztes_net_ben/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ba223a635d4b8bd748e974a2950c36bb08bdd4e8 GIT binary patch literal 5460 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 i6?TOR?$9A>nkJ*I+gh`>f9<+J^UB_d)cM{ literal 0 HcmV?d00001 diff --git a/portalfejlesztes_net_ben/__pycache__/views.cpython-313.pyc b/portalfejlesztes_net_ben/__pycache__/views.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..59472a19ae1c89ee06be7ff2a5303906e486efed GIT binary patch literal 5070 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 l+aW`RU7>@5X)SFJ{{=V`(Y62p literal 0 HcmV?d00001 diff --git a/portalfejlesztes_net_ben/kerdessor1_manual.txt b/portalfejlesztes_net_ben/kerdessor1_manual.txt new file mode 100644 index 0000000..6aa2096 --- /dev/null +++ b/portalfejlesztes_net_ben/kerdessor1_manual.txt @@ -0,0 +1,132 @@ +Kérdés: Miért van külön Web.Debug.config és Web.Release.config fájl a webalkalmazásban? +Azért, mert így külön definiálhatóak beállítások éles és demo környezetekhez. +!Azért, mert így külön definiálhatóak beállítások a SolutionConfiguration alatt választható build típusokhoz. +Azért, mert így külön definiálhatóak változtatható a kinézetéles és demo környezetek között. + +Kérdés: Web alkalmazásban adatbáziskapcsolat adatai hol tárolhatóak? +ConfigurationSettings.cs fájlban +!Web.config fájlban +Global.asax fájlban + +Kérdés: Web alkalmazásban mit tartalmaz a Global.asax.cs fájl? +!Az egész alkalmazás működését érintő események bekövetkezésekor végrehajtandó kódot. +Az egész alkalmazásból elérhető metódusokat. +Globális változók definíciója + +Kérdés: Web alkalmazásban mi a különbség valami.aspx, valami.aspx.cs és valami.aspx.designer.cs fájlok tartalma között? +!Az aspx tartalmazza a vezérlőelemek elhelyezkedését, típusát és alapvelő működését, az aspx.cs a hozzá tartozó codebehind fájl (főként vezérlőelemek kezelésére vonatkozó kóddal), míg az aspx.designer.cs generált fájl, mely a vezérlők definícióját tartalmazza. +Az .cs tartalmazza a vezérlőelemek elhelyezkedését, típusát és alapvelő működését, az aspx.designer.cs a hozzá tartozó codebehind fájl (főként vezérlőelemek kezelésére vonatkozó kóddal), míg az aspx.csgenerált fájl, mely a vezérlők definícióját tartalmazza. +Az aspx.designer.cs tartalmazza a vezérlőelemek elhelyezkedését, típusát és alapvelő működését, az aspx.cs a hozzá tartozó codebehind fájl (főként vezérlőelemek kezelésére vonatkozó kóddal), míg az aspx generált fájl, mely a vezérlők definícióját tartalmazza. + +Kérdés: Web alkalmazásban mit tartalmaz a Site.master fájl? +Az oldal kerete, kinézete és működése, melyet az .cs fájlok töltenek meg tartalommal +!Az oldal kerete, kinézete és működése, melyet az .aspx fájlok töltenek meg tartalommal +Az egész alkalmazás működését érintő események bekövetkezésekor végrehajtandó kódot. +Az egész alkalmazásból elérhető metódusokat. +Globális változók definíciója + +Kérdés: Web alkalmazásban lehet-e több site.master fájl? +!Igen, lehet +Nem, nem lehet. + +Kérdés: Web alkalmazásban egy aspx fájlban a <%: %> jel található, mit jelent? +A végleges, browsernek küldött html tartalom előállítása során c# nyelven kell értelmezni a jelek közötti részt. +!A végleges, browsernek küldött html tartalomban jelenjen meg a jelek között található kifejezés értéke. + +Kérdés: Web alkalmazásban egy aspx fájlban a <% %> jel található, mit jelent? +!A végleges, browsernek küldött html tartalom előállítása során c# nyelven kell értelmezni a jelek közötti részt. +A végleges, browsernek küldött html tartalomban jelenjen meg a jelek között található kifejezés értéke. + +Kérdés: Web alkalmazásban(Web forms) mit értünk a codebehind fájl alatt? +!Azt a .aspx.cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit. +Azt a POCO .cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit. +Azt a .designer.cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit. + +Kérdés: Web alkalmazásban (web forms) hogyan generáltatható egy vezérlőelem default eseménykezelője? +!Dupla kattintás a vezérlőelemen +!Properties panel, event gomb alapján a kiválasztott eseményen dupla kattintás +Tools menü, events... és ott kiválasztható 'adddefault' + +Kérdés: Web alkalmazásban (web forms) válassza ki,melyek a választható/használható vezérlő elemek? +Clock +!Button +!Textbox +!DropdownList +!Checkbox + +Kérdés: Web alkalmazásban (Web forms) mit tudhatunk meg az IsPostBacktulajdonsából? +!Értéke hamis, ha ez az első oldalbetöltés. +Értéke hamis, ha az oldalbetöltés vezérlés hatására történt + +Kérdés: Web alkalmazásban DropdownList vezérlőhöz hogyan tudunk elemeket hozzáadni? +!Példány.Itemskollekció manipulálásával +Példány.Selectionkollekció manipulálásával +Példány.CustomElementskollekció manipulálásával + +Kérdés: Web alkalmazásban (Web forms) egy Label típusú vezérlőelemen megjelenő szöveg melyik tulajdonsággal állítható be? +Példány.Label +Példány.Caption +!Példány.Text +Példány.ShowText() + +Kérdés: Web alkalmazásban (Web forms) egy Textbox típusú vezérlőelembe user által írt szöveg melyik tulajdonsággal olvasható ki? +Példány.Label +Példány.Caption +!Példány.Text +Példány.ShowText() + +Kérdés: Web alkalmazásban (Web forms) egy Textbox típusú melyik tulajdonsággal tiltható le (user nem szerkesztheti)? +Disabled tulajdonság true értékre állításával +!Enabled tulajdonság false értékre állításával +Visible tulajdonság false értékre állításával +Opacity tulajdonság 0 értékre állításával + + +Kérdés: Web alkalmazásban (web forms) egy TextBox típusú vezérlőben hogyan tudunk több sornyi szöveget megjeleníteni? +Nem lehetséges, alapvetően userinput-ra való +Text tulajdonságba sortöréssel ellátott szöveget helyezünk, EnableMultiLine tulajdonságot true értékre állítva +!Text tulajdonságba sortöréssel ellátott szöveget helyezünk, TextMode tulajdonságot MultiLine értékre állítva + +Kérdés: MVC projekt esetén tipikusan hova futnak be a browser kérései? +Controller osztályok ActionResult attribútummal ellátott metóduasihoz. +!Controller osztályok publikus metódusaihoz. +Manager osztályok publikus metódusaihoz. + +Kérdés: Mi határozza meg, hogy a browser címsorában lévő uri hova mutat az alkalmazásban? +Controllerek publikus metódusaihoz futnak be. +!Routing szabályokkal kell megadni. +A Contextben kell megadni. + +Kérdés: MVC projekt esetén tipikusan mit értünk ViewModel alatt? +!Egy View alapját szolgáltató osztály, mely tipikusan tartalmaz számított mezőket és lekérdezett értékeket. +Azon osztályok ezek, melyek az adatbázisban kerülnek perzisztálásra. +Egy View alapját szolgáltató osztály, mely tipikusan nem tartalmaz számított mezőket és lekérdezett értékeket. + +Kérdés: Mire utal az MVC minta? +!Model-View-Controller +Model-ViewModel-Control + +Kérdés: MVC Web alkalmazásban hogyan kerül egy View megjelenítésre? +A megadott URL egy HTML oldalra mutat, melyet a browser megjelenít, ez a View. +!A megadott URL egy Controller metódusra mutat, mely View-t adhat vissza. +ViewModel generálódik és jeleníti meg a browser. + +Kérdés: MVC alkalmazás esetén mikor fog kiértékelődni a <%%> jelek közötti kifejezés? +Csak az első megjelenítés során +!Az oldal minden elkészítése során +Az oldal minden elkészítése során, ami nem IsPostBack + +Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált Scripts mappában? +SQL script fájlok +!Javascript fájlok +.cs fájlok + +Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált Styles mappában? +!CSS fájlok +Aspx fájlok +Ascx fájlok + +Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált App_Data mappában? +Metadata fájlok (.cs) +!Helyi adatbázis fájlok +Konfigurációs fájlok diff --git a/portalfejlesztes_net_ben/kerdessor2_manual.txt b/portalfejlesztes_net_ben/kerdessor2_manual.txt new file mode 100644 index 0000000..111beeb --- /dev/null +++ b/portalfejlesztes_net_ben/kerdessor2_manual.txt @@ -0,0 +1,131 @@ +Kérdés: Miért van külön Web.Debug.config és Web.Release.config fájl a webalkalmazásban? +Azért, mert így külön definiálhatóak beállítások éles és demo környezetekhez. +!Azért, mert így külön definiálhatóak beállítások a Solution Configuration alatt választható build típusokhoz. +Azért, mert így külön definiálhatóak változtatható a kinézet éles és demo környezetek között. + +Kérdés: Web alkalmazásban adatbáziskapcsolat adatai hol tárolhatóak? +ConfigurationSettings.cs fájlban +!Web.config fájlban +Global.asax fájlban + +Kérdés: Web alkalmazásban mit tartalmaz a Global.asax.cs fájl? +!Az egész alkalmazás működését érintő események bekövetkezésekor végrehajtandó kódot. +Az egész alkalmazásból elérhető metódusokat. +Globális változók definíciója + +Kérdés: Web alkalmazásban mi a különbség valami.aspx, valami.aspx.cs és valami.aspx.designer.cs fájlok tartalma között? +!Az aspx tartalmazza a vezérlőelemek elhelyezkedését, típusát és alapvelő működését, az aspx.cs a hozzá tartozó code behind fájl (főként vezérlőelemek kezelésére vonatkozó kóddal), míg az aspx.designer.cs generált fájl, mely a vezérlők definícióját tartalmazza. +Az .cs tartalmazza a vezérlőelemek elhelyezkedését, típusát és alapvelő működését, az aspx.designer.cs a hozzá tartozó code behind fájl (főként vezérlőelemek kezelésére vonatkozó kóddal), míg az aspx.cs generált fájl, mely a vezérlők definícióját tartalmazza. +Az aspx.designer.cs tartalmazza a vezérlőelemek elhelyezkedését, típusát és alapvelő működését, az aspx.cs a hozzá tartozó code behind fájl (főként vezérlőelemek kezelésére vonatkozó kóddal), míg az aspx generált fájl, mely a vezérlők definícióját tartalmazza. + +Kérdés: Web alkalmazásban mit tartalmaz a Site.master fájl? +Az oldal kerete, kinézete és működése, melyet az .cs fájlok töltenek meg tartalommal +!Az oldal kerete, kinézete és működése, melyet az .aspx fájlok töltenek meg tartalommal +Az egész alkalmazás működését érintő események bekövetkezésekor végrehajtandó kódot. +Az egész alkalmazásból elérhető metódusokat. +Globális változók definíciója + +Kérdés: Web alkalmazásban lehet-e több site.master fájl? +!Igen, lehet +Nem, nem lehet. + +Kérdés: Web alkalmazásban egy aspx fájlban a <%: %> jel található, mit jelent? +A végleges, browsernek küldött html tartalom előállítása során c# nyelven kell értelmezni a jelek közötti részt. +!A végleges, browsernek küldött html tartalomban jelenjen meg a jelek között található kifejezés értéke. + +Kérdés: Web alkalmazásban egy aspx fájlban a <% %> jel található, mit jelent? +!A végleges, browsernek küldött html tartalom előállítása során c# nyelven kell értelmezni a jelek közötti részt. +A végleges, browsernek küldött html tartalomban jelenjen meg a jelek között található kifejezés értéke. + +Kérdés: Web alkalmazásban(Web forms) mit értünk a code behind fájl alatt? +!Azt a .aspx.cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit. +Azt a POCO .cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit. +Azt a .designer.cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit. + +Kérdés: Web alkalmazásban (web forms) hogyan generáltatható egy vezérlőelem default eseménykezelője? +!Dupla kattintás a vezérlőelemen +!Properties panel, event gomb alapján a kiválasztott eseményen dupla kattintás +Tools menü, events… és ott kiválasztható ’add default’ + +Kérdés: Web alkalmazásban (web forms) válassza ki,melyek a választható/használható vezérlő elemek? +Clock +!Button +!Textbox +!DropdownList +!Checkbox + +Kérdés: Web alkalmazásban (Web forms) mit tudhatunk meg az IsPostBack tulajdonsából? +!Értéke hamis, ha ez az első oldalbetöltés. +Értéke hamis, ha az oldalbetöltés vezérlés hatására történt + +Kérdés: Web alkalmazásban DropdownList vezérlőhöz hogyan tudunk elemeket hozzáadni? +!Példány.Items kollekció manipulálásával +Példány.Selection kollekció manipulálásával +Példány.CustomElements kollekció manipulálásával + +Kérdés: Web alkalmazásban (Web forms) egy Label típusú vezérlőelemen megjelenő szöveg melyik tulajdonsággal állítható be? +Példány.Label +Példány.Caption +!Példány.Text +Példány.ShowText() + +Kérdés: Web alkalmazásban (Web forms) egy Textbox típusú vezérlőelembe user által írt szöveg melyik tulajdonsággal olvasható ki? +Példány.Label +Példány.Caption +!Példány.Text +Példány.ShowText() + +Kérdés: Web alkalmazásban (Web forms) egy Textbox típusú melyik tulajdonsággal tiltható le (user nem szerkesztheti)? +Disabled tulajdonság true értékre állításával +!Enabled tulajdonság false értékre állításával +Visible tulajdonság false értékre állításával +Opacity tulajdonság 0 értékre állításával + +Kérdés: Web alkalmazásban (web forms) egy TextBox típusú vezérlőben hogyan tudunk több sornyi szöveget megjeleníteni? +Nem lehetséges, alapvetően user input-ra való +Text tulajdonságba sortöréssel ellátott szöveget helyezünk, EnableMultiLine tulajdonságot true értékre állítva +!Text tulajdonságba sortöréssel ellátott szöveget helyezünk, TextMode tulajdonságot MultiLine értékre állítva + +Kérdés:MVC projekt esetén tipikusan hova futnak be a browser kérései? +Controller osztályok ActionResult attribútummal ellátott metóduasihoz. +!Controller osztályok publikus metódusaihoz. +Manager osztályok publikus metódusaihoz. + +Kérdés: Mi határozza meg, hogy a browser címsorában lévő uri hova mutat az alkalmazásban? +Controllerek publikus metódusaihoz futnak be. +!Routing szabályokkal kell megadni. +A Contextben kell megadni. + +Kérdés: MVC projekt esetén tipikusan mit értünk ViewModel alatt? +!Egy View alapját szolgáltató osztály, mely tipikusan tartalmaz számított mezőket és lekérdezett értékeket. +Azon osztályok ezek, melyek az adatbázisban kerülnek perzisztálásra. +Egy View alapját szolgáltató osztály, mely tipikusan nem tartalmaz számított mezőket és lekérdezett értékeket. + +Kérdés: Mire utal az MVC minta? +!Model-View-Controller +Model-ViewModel-Control + +Kérdés: MVC Web alkalmazásban hogyan kerül egy View megjelenítésre? +A megadott URL egy HTML oldalra mutat, melyet a browser megjelenít, ez a View. +!A megadott URL egy Controller metódusra mutat, mely View-t adhat vissza. +ViewModel generálódik és jeleníti meg a browser. + +Kérdés: MVC alkalmazás esetén mikor fog kiértékelődni a <%%> jelek közötti kifejezés? +Csak az első megjelenítés során +!Az oldal minden elkészítése során +Az oldal minden elkészítése során, ami nem IsPostBack + +Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált Scripts mappában? +SQL script fájlok +!Javascript fájlok +.cs fájlok + +Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált Styles mappában? +!CSS fájlok +Aspx fájlok +Ascx fájlok + +Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált App_Data mappában? +Metadata fájlok (.cs) +!Helyi adatbázis fájlok +Konfigurációs fájlok diff --git a/portalfejlesztes_net_ben/kerdessor3.txt b/portalfejlesztes_net_ben/kerdessor3.txt new file mode 100644 index 0000000..34e87d1 --- /dev/null +++ b/portalfejlesztes_net_ben/kerdessor3.txt @@ -0,0 +1,84 @@ +Kérdés: MVC projekt esetén tipikusan mit értünk ViewModel alatt? +!Egy View alapját szolgáltató osztály, mely tipikusan tartalmaz számított mezőket és lekérdezett értékeket. +Azon osztályok ezek, melyek az adatbázisban kerülnek perzisztálásra. +Egy View alapját szolgáltató osztály, mely tipikusan nem tartalmaz számított mezőket és lekérdezett értékeket. + +Kérdés: Tipikusan mit értünk Context alatt? +Minden ide tartozik, ami a Model osztályokban van. +Minden ide tartozik, mely megmondja, hogy hol és milyen adatok érhetőek el. +!Minden ide tartozik, amely a tárolt adatokat írja le (tulajdonságok, kapcsolatok). + +Kérdés: MVC projektben, adatkezeléssel kapcsolatban, miért/mikor előnyös Initializer használata? +Mert így minden Model osztályból tábla készíthető, egy lépésben. +!Mert így nem kell újra felvinni teszt adatokat fejlesztés közben, amikor intenzíven változik a db séma. +Mert így minden változás a sémában automatikusan rögzítve lesz. + +Kérdés: Entity Framework – mit jelent a Table-per-hierarchy pattern használata/mit eredményez? +Minden keletkezett táblában benne lesz az összes tulajdonság, ami csak felmerül a Context-ben, így gyorsul a hozzáférés. +!Minden öröklődési hierarchiához egy tábla készül az ős nevével, mely minden leszármazott tulajdonságot és Discriminatort tartalmaz. +Annyi tábla keletkezik belső hivatkozásokkal, ahány osztály részt vesz az öröklésben. + +Kérdés: Entity Framework – mit jelent a Table-per-type pattern használata/mit eredményez? +!Annyi tábla keletkezik belső hivatkozásokkal, ahány osztály részt vesz az öröklésben. +Minden öröklődési hierarchiához egy tábla készül az ős nevével, mely minden leszármazott tulajdonságot és Discriminatort tartalmaz. +Minden keletkezett táblában benne lesz az összes tulajdonság, ami csak felmerül a Context-ben, így gyorsul a hozzáférés. + +Kérdés: Entity Framework – konkurencia kezelésére melyek a lehetséges módok? +Contextben lock segítségével. +!Timestamp/RowVersion használata. +!Where feltételben az összes tulajdonság megjelenítése. + +Kérdés: MVC projekt esetén mire való a MasterPage? +Ez tipikusan a nyitóoldal. +Ez tipikusan a kezdőoldal. +!Ez adhatja a keretet, melyben a tartalom megjelenhet. + +Kérdés: MVC projekt esetén mire használható a ViewBag? +!Egy View kollekciót lehet segítsségével megjeleníteni, akár egyszerre több controllerből is. +Olyan objektum, melynek nincsenek előre definiált tulajdonságai, kétirányban bármi bele tehető. +View-kat lehet controllerekhez küldeni vele. + +Kérdés: Entity Framework – tipikusan milyen típusú elemekből lesznek táblák? +ViewModelekből, ez attributummal jelezhető. +!Model folder POCO osztályaiból. +Controller metódusok ActionResult visszatérésű elemeiből. + +Kérdés: Entity Framework – Ha tulajdonságként 1:N kapcsolat megvalósítása a cél, akkor… +…generikus IDictionary interfészt megvalósító tulajdonság kell. +…IList tulajdonság kell az idegen kulcs miatt. +!…generikus ICollection interfészt megvalósító tulajdonság kell. + +Kérdés: Entity Framework – Ha tulajdonságként 1:1 kapcsolat megvalósítása a cél, akkor… +…protected property kell, olyan típussal, ami a hivatkozott elem típusa. +…virtual property kell, olyan típussal, ami a másik elem típusa. +!…publikus property get részében kell lekérdezni ID alapján és visszaadni. + +Kérdés: Entity Framework – mivel szabályozható, hogy mely osztályokból készüljön tábla? +Ezt Context generikus DbSet tulajdonságai határozzák meg. +Web.config fájl ConnectionStrings részében kell megadni. +!A model osztályok atributumai határozzák meg. + +Kérdés: Entity Framework – hogyan állíthatjuk be az adatok inicializálását? +Initializer osztály kell / Initialize() metódus felülbírálatával. +Az Application_Start() metódus való erre. +!Initializer osztály kell / Seed metódus override. + +Kérdés: MVC projekt esetén tipikusan hova futnak be a browser kérései? +Controller osztályok ActionResult attribútummal ellátott metódusaihoz. +!Controller osztályok publikus metódusaihoz. +Manager osztályok publikus metódusaihoz. + +Kérdés: Mi határozza meg, hogy a browser címsorában lévő URI hova mutat az alkalmazásban? +Controllerek publikus metódusaihoz futnak be. +!Routing szabályokkal kell megadni. +A Contextben kell megadni. + +Kérdés: MVC - Hogyan tud egy View értékeket visszaadni egy Controllernek? +!FormCollection segítségével. +QueryString segítségével. +ViewModel postolásával. + +Kérdés: Miért előnyös az IQueryable interfész használata? +Mert így az adatbázisba nem kell külön elmenteni az adatokat, ez azonnal megtörténik. +!Mert Query Object pattern megvalósítás miatt, csak a lekérdezést tárolja, késői kiértékelés lehetséges. +Mert így azonnal rendelkezésre áll az egész halmaz, igaz több adat kerülhet átvitelre. diff --git a/portalfejlesztes_net_ben/templates/allquestions.html b/portalfejlesztes_net_ben/templates/allquestions.html new file mode 100644 index 0000000..7d6d0f5 --- /dev/null +++ b/portalfejlesztes_net_ben/templates/allquestions.html @@ -0,0 +1,159 @@ + + + + + + Quiz Results + + + +
+

Programozás .Net ben

+ +

Here are all the questions that will appear in the quiz!

+ +
    + {% for question in questions %} +
  • + {{ question['question'] }}
    + {% for correct in question['correct_answers'] %} +
      +
    • {{correct}}
    • +
    + {% endfor %} +
  • + {% endfor %} +
+ + +
+ + diff --git a/portalfejlesztes_net_ben/templates/quiz.html b/portalfejlesztes_net_ben/templates/quiz.html new file mode 100644 index 0000000..b13ceb9 --- /dev/null +++ b/portalfejlesztes_net_ben/templates/quiz.html @@ -0,0 +1,130 @@ + + + + + + Portalfejlesztes .Net ben Quiz + + + +
+

Question {{ question_index + 1 }} / 20

+

{{ question['question'] }}

+
+
+ {% for answer in question['answers'] %} + + + {% endfor %} +
+ + +
+
+ +
+
+ + diff --git a/portalfejlesztes_net_ben/templates/result.html b/portalfejlesztes_net_ben/templates/result.html new file mode 100644 index 0000000..55c1d6b --- /dev/null +++ b/portalfejlesztes_net_ben/templates/result.html @@ -0,0 +1,173 @@ + + + + + + Quiz Results + + + +
+

Quiz Results

+ +

Score: {{ score }} out of {{ total }}

+ +

Mistakes

+ {% if mistakes %} +
    + {% for mistake in mistakes %} +
  • + Question: {{ mistake.question }}
    + Your Answer: {{ mistake.user_answer }}
    + Correct Answer: {{ mistake.correct_answer }}
    +
  • + {% endfor %} +
+ {% else %} +

No mistakes!

+ {% endif %} + +

All Answers

+
    + {% for question, answer in questions_with_answers %} +
  • + {{ question['question'] }}
    + Your Answer: {{ answer }}
    + Correct Answer: {{ question['correct_answers'] }}
    +
  • + {% endfor %} +
+ + +
+ + diff --git a/static/css/main.css b/static/css/main.css new file mode 100644 index 0000000..98c8770 --- /dev/null +++ b/static/css/main.css @@ -0,0 +1,220 @@ +/* General Reset */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + background: linear-gradient(to right, #5a0fb8, #1f65d6); + color: #fff; + display: flex; + justify-content: center; + align-items: center; + min-height: 100vh; + overflow-x: hidden; +} + +.container { + display: flex; + flex-direction: column; + width: 90%; + max-width: 1200px; + background: rgba(255, 255, 255, 0.1); + border-radius: 16px; + overflow: hidden; + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.4); +} + +/* Header Section */ +.header { + display: flex; + flex-direction: column; + align-items: center; + padding: 20px; + background: rgba(0, 0, 0, 0.7); +} + +.header .brand { + font-family: 'Lucida Handwriting', cursive; + font-size: 2rem; + background: linear-gradient(to right, #5a0fb8, #1f65d6); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6); +} + +.header .name { + font-size: 1.2rem; + color: #ccc; + margin-top: 5px; +} + +.header nav { + display: flex; + margin-top: 15px; + position: relative; +} + +.header nav a { + position: relative; + color: #fff; + text-decoration: none; + font-size: 1rem; + font-family: 'Orbitron', sans-serif; + padding: 12px 30px; + display: inline-block; + clip-path: polygon(15% 0, 100% 0, 85% 100%, 0 100%); + background: rgba(255, 255, 255, 0.1); + border: 1px solid rgba(255, 255, 255, 0.3); + transition: all 0.3s ease; + text-align: center; + margin-right: -15px; + width: 10ch; +} + +.header nav a:hover { + background: rgba(255, 255, 255, 0.3); + border-color: rgba(255, 255, 255, 0.5); + color: #5a0fb8; + transform: scale(1.05); +} + +@media (max-width: 768px) { + .header nav { + flex-wrap: wrap; + justify-content: center; + } + + .header nav a { + margin-right: -15px; + margin-bottom: 5px; + } +} + +/* Main Section */ +.main { + display: flex; + flex-direction: column; + padding: 40px 20px; + gap: 20px; + text-align: center; +} + +.main .intro { + font-size: 1.3rem; + line-height: 1.8; + margin-bottom: 20px; + color: #f0f0f0; +} + +.main .quote { + font-family: 'Playfair Display', serif; + font-size: 2rem; + font-style: italic; + color: #fff; + text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); +} + +.main .author { + font-size: 1.2rem; + margin-top: 10px; + color: #ccc; +} + +.main .card-container { + display: flex; + flex-wrap: wrap; + gap: 20px; +} + +.main .card { + background: rgba(255, 255, 255, 0.2); + padding: 20px; + border-radius: 12px; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2); + flex: 1 1 calc(33.333% - 20px); + max-width: calc(33.333% - 20px); + display: flex; + flex-direction: column; + justify-content: space-between; + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +.main .card:hover { + transform: translateY(-10px); + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.4); +} + +.main .card img { + width: 100%; + height: 150px; + object-fit: cover; + border-radius: 8px; + margin-bottom: 10px; +} + +.main .card h3 { + margin-bottom: 5px; + font-size: 1.2rem; +} + +.main .card .date { + font-size: 0.9rem; + color: #ccc; + margin-bottom: 10px; +} + +.main .card p { + font-size: 0.9rem; + line-height: 1.4; + flex-grow: 1; +} + +.main .card a { + display: inline-block; + margin-top: 10px; + padding: 10px 15px; + color: #fff; + text-decoration: none; + font-size: 0.9rem; + border-radius: 8px; + background: linear-gradient(to right, #5a0fb8, #1f65d6); + transition: background 0.3s ease; +} + +.main .card a:hover { + background: linear-gradient(to right, #1f65d6, #5a0fb8); +} + +@media (max-width: 768px) { + .main .card { + flex: 1 1 calc(50% - 20px); + max-width: calc(50% - 20px); + } +} + +@media (max-width: 480px) { + .main .card { + flex: 1 1 100%; + max-width: 100%; + } +} + +/* Footer Section */ +.footer { + text-align: center; + padding: 20px; + background: rgba(0, 0, 0, 0.7); + font-size: 0.9rem; +} + +.footer a { + color: #5a0fb8; + text-decoration: none; +} + +.footer a:hover { + text-decoration: underline; +} \ No newline at end of file diff --git a/static/images/uni/portalfejlesztes-logo.png b/static/images/uni/portalfejlesztes-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1dd63d05b946906edd4ad2d1c315b6b8d02383f8 GIT binary patch literal 59278 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%0Abo|m}6Xt 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 +
+ Welcome to my portfolio! I'm a passionate Computer Science Engineer dedicated to crafting innovative and efficient digital solutions. + Feel free to explore my projects, read my blogs, and learn more about me and my work. +
+
"Programs must be written for people to read, and only incidentally for machines to execute."
+
– Harold Abelson
+
+
+ Post Image +

Post Title 1

+
January 5, 2025
+

Explore the basics of computer science and its applications in the modern world.

+ Read More +
+
+ Post Image +

Post Title 2

+
January 6, 2025
+

Dive into advanced programming concepts and learn the secrets of clean code.

+ Read More +
+
+ Post Image +

Post Title 3

+
January 7, 2025
+

Discover the latest trends in AI and machine learning and their impact on society.

+ Read More +
+
+ + +{% endblock %} \ No newline at end of file diff --git a/templates/main.html b/templates/main.html new file mode 100644 index 0000000..3b95fc9 --- /dev/null +++ b/templates/main.html @@ -0,0 +1,33 @@ + + + + + + My Portfolio + + + + +
+ +
+
Computer Science Engineer
+
Máté Gosztolya's personal website
+ +
+ + {% block content %}{% endblock %} + +
+ © 2025 Máté Gosztolya's Portfolio. All rights reserved. | Get in Touch +
+
+ + diff --git a/templates/projects.html b/templates/projects.html new file mode 100644 index 0000000..1c5da7c --- /dev/null +++ b/templates/projects.html @@ -0,0 +1 @@ +{% extends "main.html" %} \ No newline at end of file diff --git a/templates/uni/uni.html b/templates/uni/uni.html new file mode 100644 index 0000000..d1b52ad --- /dev/null +++ b/templates/uni/uni.html @@ -0,0 +1,54 @@ +{% extends "main.html" %} +{% block content%} + +
+
+ Post Image +

Portálfejlesztés .Net ben

+
January 10, 2025
+

+ This test is made for SZE University students to practice. Be aware that the test might become outdated + as the course material may change in the future. In case of modifications or incorrect answers, please contact me! +

+
+
+ +
+
+ +
+
+
+
+ +{% endblock %} \ No newline at end of file