diff --git a/Converter.ipynb b/Converter.ipynb
index 85948e3..c575aa3 100644
--- a/Converter.ipynb
+++ b/Converter.ipynb
@@ -2,138 +2,217 @@
"cells": [
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {
- "vscode": {
- "languageId": "plaintext"
- }
- },
+ "execution_count": 122,
+ "metadata": {},
"outputs": [],
"source": [
- "import fitz # PyMuPDF\n",
- "import pandas as pd\n",
- "import re"
+ "from flask import Flask, render_template, request, session\n",
+ "import random\n",
+ "import pickle\n"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {
- "vscode": {
- "languageId": "plaintext"
- }
- },
+ "execution_count": 123,
+ "metadata": {},
"outputs": [],
"source": [
- "def extract_tables_from_pdf(pdf_path):\n",
- " \"\"\"\n",
- " Extracts tables and their highlighted rows from a PDF file.\n",
+ "class KerdesObj():\n",
+ " def __init__(self, kerdes, jo_valaszok, rossz_valaszok):\n",
+ " self.kerdes = kerdes\n",
+ " self.jo_valaszok = []\n",
+ " self.valaszok = []\n",
+ " self.jo_valaszok = jo_valaszok\n",
+ " self.valaszok.extend(jo_valaszok)\n",
+ " self.valaszok.extend(rossz_valaszok)\n",
"\n",
- " Args:\n",
- " pdf_path (str): Path to the PDF file.\n",
- "\n",
- " Returns:\n",
- " list: A list of dictionaries representing the tables.\n",
- " \"\"\"\n",
- " doc = fitz.open(pdf_path)\n",
- " tables = []\n",
- "\n",
- " for page_num in range(len(doc)):\n",
- " page = doc[page_num]\n",
- " blocks = page.get_text(\"dict\")['blocks']\n",
- "\n",
- " for block in blocks:\n",
- " if 'lines' in block:\n",
- " table_data = []\n",
- " for line in block['lines']:\n",
- " row_data = \"\"\n",
- " highlight_detected = False\n",
- "\n",
- " for span in line['spans']:\n",
- " row_data += span['text'] + ' '\n",
- " if span['bgcolor'] != 0: # Non-zero bgcolor indicates highlighting\n",
- " highlight_detected = True\n",
- "\n",
- " table_data.append((row_data.strip(), highlight_detected))\n",
- " \n",
- " if table_data:\n",
- " tables.append(table_data)\n",
- "\n",
- " return tables"
+ " pass"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {
- "vscode": {
- "languageId": "plaintext"
+ "execution_count": 124,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "['Kérdés: Miért van külön Web.Debug.config és Web.Release.config fájl a webalkalmazásban?\\n', 'Azért, mert így külön definiálhatóak beállítások éles és demo környezetekhez.\\n', '!Azért, mert így külön definiálhatóak beállítások a Solution Configuration alatt választható build típusokhoz.\\n', 'Azért, mert így külön definiálhatóak változtatható a kinézet éles és demo környezetek között.\\n', '\\n', 'Kérdés: Web alkalmazásban adatbáziskapcsolat adatai hol tárolhatóak?\\n', 'ConfigurationSettings.cs fájlban\\n', '!Web.config fájlban\\n', 'Global.asax fájlban\\n', '\\n', 'Kérdés: Web alkalmazásban mit tartalmaz a Global.asax.cs fájl?\\n', '!Az egész alkalmazás működését érintő események bekövetkezésekor végrehajtandó kódot.\\n', 'Az egész alkalmazásból elérhető metódusokat.\\n', 'Globális változók definíciója\\n', '\\n', '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?\\n', '!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.\\n', '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.\\n', '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.\\n', '\\n', 'Kérdés: Web alkalmazásban mit tartalmaz a Site.master fájl?\\n', 'Az oldal kerete, kinézete és működése, melyet az .cs fájlok töltenek meg tartalommal\\n', '!Az oldal kerete, kinézete és működése, melyet az .aspx fájlok töltenek meg tartalommal\\n', 'Az egész alkalmazás működését érintő események bekövetkezésekor végrehajtandó kódot.\\n', '\\n', 'Kérdés: Web alkalmazásban lehet-e több site.master fájl?\\n', '!Igen, lehet\\n', 'Nem, nem lehet.\\n', '\\n', 'Kérdés: Web alkalmazásban egy aspx fájlban a <%: %> jel található, mit jelent?\\n', '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.\\n', '!A végleges, browsernek küldött html tartalomban jelenjen meg a jelek között található kifejezés értéke.\\n', '\\n', 'Kérdés: Web alkalmazásban egy aspx fájlban a <% %> jel található, mit jelent?\\n', '!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.\\n', 'A végleges, browsernek küldött html tartalomban jelenjen meg a jelek között található kifejezés értéke.\\n', '\\n', 'Kérdés: Web alkalmazásban(Web forms) mit értünk a code behind fájl alatt?\\n', '!Azt a .aspx.cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit.\\n', 'Azt a POCO .cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit.\\n', 'Azt a .designer.cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit.\\n', '\\n', 'Kérdés: Web alkalmazásban (web forms) hogyan generáltatható egy vezérlőelem default eseménykezelője?\\n', '!Dupla kattintás a vezérlőelemen\\n', '!Properties panel, event gomb alapján a kiválasztott eseményen dupla kattintás\\n', 'Tools menü, events… és ott kiválasztható ’add default’\\n', '\\n', 'Kérdés: Web alkalmazásban (web forms) válassza ki, melyek a választható/használható vezérlő elemek?\\n', 'Clock\\n', '!Button\\n', '!Textbox\\n', '!DropdownList\\n', '!Checkbox\\n', '\\n', 'Kérdés: Web alkalmazásban (Web forms) mit tudhatunk meg az IsPostBack tulajdonsából?\\n', '!Értéke hamis, ha ez az első oldalbetöltés.\\n', 'Értéke hamis, ha az oldalbetöltés vezérlés hatására történt.\\n', '\\n', 'Kérdés: Web alkalmazásban DropdownList vezérlőhöz hogyan tudunk elemeket hozzáadni?\\n', '!Példány.Items kollekció manipulálásával\\n', 'Példány.Selection kollekció manipulálásával\\n', 'Példány.CustomElements kollekció manipulálásával\\n', '\\n', 'Kérdés: Web alkalmazásban (Web forms) egy Label típusú vezérlőelemen megjelenő szöveg melyik tulajdonsággal állítható be?\\n', 'Példány.Label\\n', 'Példány.Caption\\n', '!Példány.Text\\n', 'Példány.ShowText()\\n', '\\n', '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?\\n', 'Példány.Label\\n', 'Példány.Caption\\n', 'Példány.Text\\n', 'Példány.ShowText()\\n', '\\n', 'Kérdés: Web alkalmazásban (Web forms) egy Textbox típusú melyik tulajdonsággal tiltható le (user nem szerkesztheti)?\\n', 'Disabled tulajdonság true értékre állításával\\n', '!Enabled tulajdonság false értékre állításával\\n', 'Visible tulajdonság false értékre állításával\\n', 'Opacity tulajdonság 0 értékre állításával\\n', '\\n', 'Kérdés: Web alkalmazásban (web forms) egy TextBox típusú vezérlőben hogyan tudunk több sornyi szöveget megjeleníteni?\\n', 'Nem lehetséges, alapvetően user input-ra való\\n', 'Text tulajdonságba sortöréssel ellátott szöveget helyezünk, EnableMultiLine tulajdonságot true értékre állítva\\n', '!Text tulajdonságba sortöréssel ellátott szöveget helyezünk, TextMode tulajdonságot MultiLine értékre állítva\\n', '\\n', 'Kérdés: MVC projekt esetén tipikusan hova futnak be a browser kérései?\\n', 'Controller osztályok ActionResult attribútummal ellátott metódusaihoz.\\n', '!Controller osztályok publikus metódusaihoz.\\n', 'Manager osztályok publikus metódusaihoz.\\n', '\\n', 'Kérdés: Mi határozza meg, hogy a browser címsorában lévő uri hova mutat az alkalmazásban?\\n', 'Controllerek publikus metódusaihoz futnak be.\\n', '!Routing szabályokkal kell megadni.\\n', 'A Contextben kell megadni.\\n', '\\n', 'Kérdés: MVC projekt esetén tipikusan mit értünk ViewModel alatt?\\n', '!Egy View alapját szolgáltató osztály, mely tipikusan tartalmaz számított mezőket és lekérdezett értékeket.\\n', 'Azon osztályok ezek, melyek az adatbázisban kerülnek perzisztálásra.\\n', 'Egy View alapját szolgáltató osztály, mely tipikusan nem tartalmaz számított mezőket és lekérdezett értékeket.\\n', '\\n', 'Kérdés: Mire utal az MVC minta?\\n', '!Model-View-Controller\\n', 'Model-ViewModel-Control\\n', '\\n', 'Kérdés: MVC Web alkalmazásban hogyan kerül egy View megjelenítésre?\\n', 'A megadott URL egy HTML oldalra mutat, melyet a browser megjelenít, ez a View.\\n', '!A megadott URL egy Controller metódusra mutat, mely View-t adhat vissza.\\n', 'ViewModel generálódik és jeleníti meg a browser.\\n', '\\n', 'Kérdés: MVC alkalmazás esetén mikor fog kiértékelődni a <%%> jelek közötti kifejezés?\\n', 'Csak az első megjelenítés során\\n', '!Az oldal minden elkészítése során\\n', 'Az oldal minden elkészítése során, ami nem IsPostBack\\n', '\\n', 'Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált Scripts mappában?\\n', 'SQL script fájlok\\n', '!Javascript fájlok\\n', '.cs fájlok\\n', '\\n', 'Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált Styles mappában?\\n', '!CSS fájlok\\n', 'Aspx fájlok\\n', 'Ascx fájlok\\n', '\\n', 'Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált App_Data mappában?\\n', 'Metadata fájlok (.cs)\\n', '!Helyi adatbázis fájlok\\n', 'Konfigurációs fájlok\\n']\n"
+ ]
}
- },
- "outputs": [],
+ ],
"source": [
- "def generate_quiz_from_tables(tables):\n",
- " \"\"\"\n",
- " Converts extracted tables into a multiple-choice quiz.\n",
+ "lines = []\n",
"\n",
- " Args:\n",
- " tables (list): List of dictionaries representing tables.\n",
+ "with open(\"kerdessor1.txt\", encoding=\"utf-8\") as file:\n",
+ " lines = file.readlines()\n",
"\n",
- " Returns:\n",
- " dict: A dictionary containing questions and their respective choices.\n",
- " \"\"\"\n",
- " quiz = {}\n",
+ "# with open(\"kerdessor2.txt\", encoding=\"utf-8\") as file:\n",
+ "# lines.extend(file.readlines())\n",
"\n",
- " for table in tables:\n",
- " for i, (row, is_highlighted) in enumerate(table):\n",
- " if i == 0: # First row contains the question\n",
- " question = row\n",
- " quiz[question] = []\n",
- " else:\n",
- " choice = row\n",
- " if is_highlighted:\n",
- " quiz[question].insert(0, {\"choice\": choice, \"correct\": True})\n",
- " else:\n",
- " quiz[question].append({\"choice\": choice, \"correct\": False})\n",
- "\n",
- " return quiz"
+ "print(lines)\n",
+ " \n",
+ " "
]
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {
- "vscode": {
- "languageId": "plaintext"
- }
- },
+ "execution_count": 125,
+ "metadata": {},
"outputs": [],
"source": [
- "def main():\n",
- " pdf_path = \"pelda_2.pdf\" # Replace with your PDF file path\n",
- " output_json = \"quiz.json\" # Replace with desired output JSON file name\n",
+ "kerdes = \"\"\n",
+ "jo_valaszok = []\n",
+ "rossz_valaszok = []\n",
"\n",
- " print(\"Extracting tables from the PDF...\")\n",
- " tables = extract_tables_from_pdf(pdf_path)\n",
+ "Kollekcio = []\n",
+ "for i in lines:\n",
+ " if i.startswith(\"Kérdés: \") and kerdes != \"\":\n",
+ " temp = KerdesObj(kerdes, jo_valaszok, rossz_valaszok)\n",
+ " Kollekcio.append(temp)\n",
+ " \n",
+ " kerdes = \"\"\n",
+ " jo_valaszok = []\n",
+ " rossz_valaszok = []\n",
+ " \n",
+ " if i.startswith(\"Kérdés: \"):\n",
+ " kerdes = i.replace(\"Kérdés: \", \"\").strip()\n",
+ " elif kerdes != \"\" and i != '\\n' and i != '':\n",
+ " if i.startswith(\"!\"):\n",
+ " jo_valaszok.append(i.strip(\"!\").strip())\n",
+ " else:\n",
+ " rossz_valaszok.append(i.strip())\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 126,
+ "metadata": {},
+ "outputs": [],
+ "source": [
"\n",
- " print(\"Generating the quiz...\")\n",
- " quiz = generate_quiz_from_tables(tables)\n",
+ "def generate_question_frame(question_obj):\n",
+ " html = f'
\\n'\n",
+ " html += f' \\n'\n",
+ " html += f'
\\n'\n",
+ " for answer in question_obj.valaszok:\n",
+ " html += f'
\\n'\n",
+ " html += f' \\n'\n",
+ " html += f' \\n'\n",
+ " html += f'
\\n'\n",
+ " html += f'
\\n'\n",
+ " html += f'
\\n'\n",
+ " return html"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 121,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " * Serving Flask app '__main__'\n",
+ " * Debug mode: off\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.\n",
+ " * Running on http://127.0.0.1:5000\n",
+ "Press CTRL+C to quit\n",
+ "127.0.0.1 - - [06/Jan/2025 19:49:29] \"GET / HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Jan/2025 19:49:30] \"POST / HTTP/1.1\" 200 -\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "['Egy View alapját szolgáltató osztály, mely tipikusan tartalmaz számított mezőket és lekérdezett értékeket.']\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "127.0.0.1 - - [06/Jan/2025 19:49:33] \"POST / HTTP/1.1\" 200 -\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "None\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "127.0.0.1 - - [06/Jan/2025 19:49:49] \"POST / HTTP/1.1\" 200 -\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "['Button', 'Textbox', 'DropdownList', 'Checkbox']\n"
+ ]
+ }
+ ],
+ "source": [
"\n",
- " print(\"Saving the quiz to JSON file...\")\n",
- " with open(output_json, \"w\", encoding=\"utf-8\") as f:\n",
- " import json\n",
- " json.dump(quiz, f, ensure_ascii=False, indent=4)\n",
+ "app = Flask(__name__)\n",
"\n",
- " print(f\"Quiz saved to {output_json}\")\n",
+ "@app.route('/', methods=['GET', 'POST'])\n",
+ "def index():\n",
+ " user_answers = {}\n",
+ " selected_question = None\n",
"\n",
- "if __name__ == \"__main__\":\n",
- " main()\n"
+ " if request.method == 'POST':\n",
+ " if 'check' in request.form:\n",
+ " selected_question = session.get('aquestion')\n",
+ " selected_answers = request.form.getlist('answer')\n",
+ " print(selected_question)\n",
+ " \n",
+ "\n",
+ " elif 'next' in request.form and Kollekcio:\n",
+ " selected_question = random.choice(Kollekcio)\n",
+ " html_frame = generate_question_frame(selected_question)\n",
+ " print(selected_question.jo_valaszok)\n",
+ " return render_template('index.html', question=selected_question, html_frame=html_frame)\n",
+ "\n",
+ " return render_template('index.html')\n",
+ "\n",
+ "\n",
+ "\n",
+ "app.run()\n"
]
}
],
"metadata": {
+ "kernelspec": {
+ "display_name": "venv",
+ "language": "python",
+ "name": "python3"
+ },
"language_info": {
- "name": "python"
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.13.0"
}
},
"nbformat": 4,
diff --git a/HostQuiz.ipynb b/HostQuiz.ipynb
new file mode 100644
index 0000000..f635ff4
--- /dev/null
+++ b/HostQuiz.ipynb
@@ -0,0 +1,210 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " * Serving Flask app '__main__'\n",
+ " * Debug mode: off\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.\n",
+ " * Running on http://127.0.0.1:5000\n",
+ "Press CTRL+C to quit\n",
+ "127.0.0.1 - - [06/Jan/2025 22:27:18] \"GET / HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:27:37] \"POST /submit_answer HTTP/1.1\" 302 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:27:37] \"GET / HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:27:48] \"POST /submit_answer HTTP/1.1\" 302 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:27:48] \"GET / HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:28:15] \"POST /submit_answer HTTP/1.1\" 302 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:28:15] \"GET / HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:28:22] \"POST /submit_answer HTTP/1.1\" 302 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:28:22] \"GET / HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:28:39] \"POST /submit_answer HTTP/1.1\" 302 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:28:39] \"GET / HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:28:51] \"POST /submit_answer HTTP/1.1\" 302 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:28:52] \"GET / HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:29:04] \"POST /submit_answer HTTP/1.1\" 302 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:29:04] \"GET / HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:29:08] \"POST /submit_answer HTTP/1.1\" 302 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:29:08] \"GET / HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:29:22] \"POST /submit_answer HTTP/1.1\" 302 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:29:22] \"GET / HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:29:38] \"POST /submit_answer HTTP/1.1\" 302 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:29:38] \"GET / HTTP/1.1\" 302 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:29:38] \"GET /result HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:30:14] \"GET /restart HTTP/1.1\" 302 -\n",
+ "127.0.0.1 - - [06/Jan/2025 22:30:14] \"GET / HTTP/1.1\" 200 -\n"
+ ]
+ }
+ ],
+ "source": [
+ "from flask import Flask, render_template, request, redirect, url_for, session\n",
+ "import random\n",
+ "\n",
+ "app = Flask(__name__)\n",
+ "app.secret_key = 'your_secret_key' # You must have a secret key for sessions to work\n",
+ "\n",
+ "# Function to parse the questions from the file\n",
+ "def parse_questions(file_path, file_path2):\n",
+ " with open(file_path, 'r', encoding='utf-8') as file:\n",
+ " content = file.read().split(\"\\n\\n\") # Split content by empty lines between questions\n",
+ "\n",
+ " with open(file_path2, 'r', encoding='utf-8') as file:\n",
+ " content = file.read().split(\"\\n\\n\") # Split content by empty lines between questions\n",
+ "\n",
+ "\n",
+ " questions = []\n",
+ "\n",
+ " for block in content:\n",
+ " lines = block.strip().split(\"\\n\")\n",
+ " question = lines[0].replace(\"Kérdés: \", \"\").strip() # Remove 'Kérdés:' from the start\n",
+ " answers = []\n",
+ " correct_answers = []\n",
+ "\n",
+ " # Parse the answers and separate correct answers (those starting with '!')\n",
+ " for line in lines[1:]:\n",
+ " answer = line.strip()\n",
+ " if answer.startswith('!'):\n",
+ " correct_answers.append(answer[1:].strip()) # Remove the '!' and save the correct answer\n",
+ " else:\n",
+ " answers.append(answer)\n",
+ "\n",
+ " # Add the parsed question, answers, and correct answers to the list\n",
+ " questions.append({\n",
+ " 'question': question,\n",
+ " 'answers': answers + correct_answers, # Append correct answers at the end\n",
+ " 'correct_answers': correct_answers\n",
+ " })\n",
+ "\n",
+ " return questions\n",
+ "\n",
+ "# Parse questions from the file\n",
+ "questions = parse_questions('kerdessor1.txt', 'kerdessor2.txt')\n",
+ "\n",
+ "@app.route('/')\n",
+ "def index():\n",
+ " # Initialize the quiz session\n",
+ " if 'selected_questions' not in session:\n",
+ " selected_questions = random.sample(questions, 10)\n",
+ " session['selected_questions'] = selected_questions\n",
+ " session['question_index'] = 0\n",
+ " session['answers'] = [] # Clear answers to start fresh\n",
+ "\n",
+ " else:\n",
+ " selected_questions = session['selected_questions']\n",
+ "\n",
+ " question_index = session.get('question_index', 0)\n",
+ "\n",
+ " # If all questions are answered, redirect to the results page\n",
+ " if question_index >= len(selected_questions):\n",
+ " return redirect(url_for('result'))\n",
+ "\n",
+ " # Get the current question\n",
+ " current_question = selected_questions[question_index]\n",
+ "\n",
+ " # Shuffle the answers to randomize their order\n",
+ " random.shuffle(current_question['answers'])\n",
+ "\n",
+ " return render_template('quiz.html', question=current_question, question_index=question_index)\n",
+ "\n",
+ "@app.route('/submit_answer', methods=['POST'])\n",
+ "def submit_answer():\n",
+ " # Get the user's answer and the current question index\n",
+ " user_answers = request.form.getlist('answer') # Use getlist for checkboxes (multiple answers)\n",
+ " question_index = int(request.form.get('question_index'))\n",
+ " \n",
+ " # Store the answer in the session\n",
+ " answers = session.get('answers', [])\n",
+ " answers.append(user_answers)\n",
+ " session['answers'] = answers\n",
+ "\n",
+ " # Move to the next question\n",
+ " question_index += 1\n",
+ " session['question_index'] = question_index\n",
+ " \n",
+ " return redirect(url_for('index'))\n",
+ "\n",
+ "\n",
+ "@app.route('/result')\n",
+ "def result():\n",
+ " # Ensure 'selected_questions' exists in the session\n",
+ " selected_questions = session.get('selected_questions', None)\n",
+ " answers = session.get('answers', None)\n",
+ "\n",
+ " if not selected_questions or not answers:\n",
+ " return redirect(url_for('index')) # Redirect back to the quiz if selected_questions or answers are missing\n",
+ "\n",
+ " # Calculate the score and track mistakes\n",
+ " score = 0\n",
+ " mistakes = []\n",
+ "\n",
+ " for i, user_answer in enumerate(answers):\n",
+ " correct_answers = selected_questions[i]['correct_answers']\n",
+ " \n",
+ " # Check if the selected answers exactly match the correct answers (order doesn't matter)\n",
+ " if set(user_answer) == set(correct_answers):\n",
+ " score += 1\n",
+ " else:\n",
+ " mistakes.append({\n",
+ " 'question': selected_questions[i]['question'],\n",
+ " 'correct_answer': correct_answers,\n",
+ " 'user_answer': user_answer\n",
+ " })\n",
+ "\n",
+ " # Prepare zipped data to pass to the template (question, user answer pair)\n",
+ " questions_with_answers = zip(selected_questions, answers)\n",
+ "\n",
+ " # Reset session data so the user can restart the quiz or continue\n",
+ " session.pop('question_index', None) # Clear the current question index\n",
+ " session.pop('answers', None) # Clear stored answers\n",
+ " session.pop('selected_questions', None) # Clear selected questions\n",
+ "\n",
+ " return render_template('result.html', score=score, total=len(selected_questions), mistakes=mistakes, questions_with_answers=questions_with_answers)\n",
+ "\n",
+ "\n",
+ "@app.route('/restart')\n",
+ "def restart():\n",
+ " # Clear session data to restart the quiz\n",
+ " session.pop('question_index', None)\n",
+ " session.pop('answers', None)\n",
+ " session.pop('selected_questions', None)\n",
+ " \n",
+ " return redirect(url_for('index')) # Redirect to start the quiz again\n",
+ "\n",
+ "if __name__ == '__main__':\n",
+ " app.run()\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "venv",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.13.0"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/kerdessor1.txt b/kerdessor1.txt
new file mode 100644
index 0000000..4eddcf4
--- /dev/null
+++ b/kerdessor1.txt
@@ -0,0 +1,129 @@
+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.
+
+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ó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 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/kerdessor2.txt b/kerdessor2.txt
new file mode 100644
index 0000000..e298d83
--- /dev/null
+++ b/kerdessor2.txt
@@ -0,0 +1,267 @@
+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 alapvető 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 alapvető 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 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 alapvető 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ó '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: 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 alapvető 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 alapvető 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 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 alapvető 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ó '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ágró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ó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 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
+
+Kérdés: Web alkalmazásban (Web forms) hogyan jeleníthetjük meg az aktuális dátumot egy Label vezérlőben?
+!A Label.Text tulajdonságot DateTime.Now értékére állítva.
+A Label.Text tulajdonságot DateTime.Today értékére állítva.
+A Label.Text tulajdonságot DateTime.Now.ToString() értékére állítva.
+
+Kérdés: Web alkalmazásban (Web forms) hogyan érhetünk el egy vezérlőt code-behind fájlból?
+ID alapján keresve a Controls gyűjteményben.
+Az adott vezérlő ID-jét megadva közvetlenül hivatkozhatunk rá, ha public.
+!Az adott vezérlő ID-jét megadva közvetlenül hivatkozhatunk rá, ha runat="server" attribútumot használ.
+
+Kérdés: MVC alkalmazás esetén melyik mappa tartalmazza az adatmodelleket?
+!Models mappa.
+Controllers mappa.
+Views mappa.
+
+Kérdés: MVC alkalmazás esetén melyik mappa tartalmazza az action metódusokat?
+Models mappa.
+!Controllers mappa.
+Views mappa.
+
+Kérdés: MVC alkalmazás esetén hol történik az URI-k leképezése a Controller metódusaira?
+!RouteConfig osztályban.
+Web.config fájlban.
+Global.asax fájlban.
+
+Kérdés: MVC alkalmazásban egy View-hoz hogyan adhatunk dinamikus adatot?
+!ViewBag segítségével.
+Session segítségével.
+ViewData segítségével.
+
+Kérdés: MVC alkalmazás esetén hogyan lehet aszinkron metódusokat használni?
+!Task típusú metódusokat definiálunk.
+Thread típusú metódusokat definiálunk.
+Callback függvényeket használunk.
+
+Kérdés: MVC alkalmazásban milyen metódust kell meghívni, hogy egy másik View jelenjen meg?
+!RedirectToAction
+RenderView
+ShowView
+
+Kérdés: MVC alkalmazásban melyik osztály kezeli az űrlapok érvényesítését?
+Validator osztály.
+!ModelState osztály.
+Validation osztály.
+
+Kérdés: MVC alkalmazásban hogyan tudunk egy View-hoz CSS fájlokat rendelni?
+!Az adott View-ban a elemet használva.
+A BundleConfig fájlban.
+Az adott Controllerben hivatkozva.
+
+Kérdés: MVC alkalmazásban milyen adatstruktúrát használ a TempData?
+Dictionary
+List
+!Hashtable
+
+Kérdés: Web alkalmazásban (Web forms) hogyan érhetjük el az aktuális user nevét?
+HttpContext.Current.User.Identity.Name
+Session["UserName"]
+!HttpContext.Current.User.Name
+
+Kérdés: Web alkalmazásban hogyan lehet session változót beállítani?
+Session.Add("kulcs", érték)
+!Session["kulcs"] = érték
+Session.Set("kulcs", érték)
+
+Kérdés: Web alkalmazásban (Web forms) hogyan lehet cookie-t létrehozni?
+!new HttpCookie("kulcs", érték) és a Response.Cookies-ba helyezve.
+new Cookie("kulcs", érték) és a Request.Cookies-ba helyezve.
+Response.CreateCookie("kulcs", érték) metódussal.
+
+Kérdés: Web alkalmazásban hogyan állítható be a session timeout?
+!Web.config fájlban a elem timeout attribútumával.
+Global.asax fájlban a Session_Start metódusban.
+Code-behind fájlban a HttpContext.Session.Timeout értékével.
+
+Kérdés: Web alkalmazásban hogyan történik az alkalmazásindításkor végrehajtandó műveletek megadása?
+!Global.asax fájlban az Application_Start metódusban.
+Web.config fájlban inicializáló szkript megadásával.
+Az első Controller betöltésekor hívott metódussal.
diff --git a/templates/index.html b/templates/index.html
new file mode 100644
index 0000000..364cc0c
--- /dev/null
+++ b/templates/index.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+ Random Question
+
+
+
+