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 0000000..ba223a6 Binary files /dev/null and b/portalfejlesztes_net_ben/__pycache__/__init__.cpython-313.pyc differ diff --git a/portalfejlesztes_net_ben/__pycache__/portalfejlesztes_net_ben.cpython-313.pyc b/portalfejlesztes_net_ben/__pycache__/portalfejlesztes_net_ben.cpython-313.pyc new file mode 100644 index 0000000..dbf6c16 Binary files /dev/null and b/portalfejlesztes_net_ben/__pycache__/portalfejlesztes_net_ben.cpython-313.pyc differ 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 0000000..59472a1 Binary files /dev/null and b/portalfejlesztes_net_ben/__pycache__/views.cpython-313.pyc differ 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!

+ + + + +
+ + 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 %} + + {% else %} +

No mistakes!

+ {% endif %} + +

All Answers

+ + + +
+ + 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 0000000..1dd63d0 Binary files /dev/null and b/static/images/uni/portalfejlesztes-logo.png differ diff --git a/templates/about.html b/templates/about.html new file mode 100644 index 0000000..1c5da7c --- /dev/null +++ b/templates/about.html @@ -0,0 +1 @@ +{% extends "main.html" %} \ No newline at end of file diff --git a/templates/git.html b/templates/git.html new file mode 100644 index 0000000..1c5da7c --- /dev/null +++ b/templates/git.html @@ -0,0 +1 @@ +{% extends "main.html" %} \ No newline at end of file diff --git a/templates/home.html b/templates/home.html new file mode 100644 index 0000000..ce496ce --- /dev/null +++ b/templates/home.html @@ -0,0 +1,35 @@ +{% extends "main.html" %} +{% block content %} +
+
+ 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