Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Recenzja #1

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open

Recenzja #1

wants to merge 10 commits into from

Conversation

sehta7
Copy link
Collaborator

@sehta7 sehta7 commented May 22, 2019

No description provided.

@LIttleAncientForestKami
Copy link
Contributor

Nie obraziłbym się na opis mówiący mi na co fajnie byłoby zwrócić uwagę albo co jest już do recki wystawione.

Copy link
Contributor

@LIttleAncientForestKami LIttleAncientForestKami left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pobieżny przegląd za nami, oto co potrzebuję by móc przeglądnąć to poważnie:

  1. rozgraniczenia między treścią zadań a silnikiem quizu
  2. stabilniejszej formulaiczności (np. przez DRY)

Rozgraniczenie

Wyjaśnię od razu. Obecnie w jednym pliku jest wszystko: treść pytania, możliwe odpowiedzi, czas na zadanie i na eksperymenty, prawidłowa odpowiedź, weryfikacja zadania, drukowanie na ekran, demonstracje JShella itp. Jeśliby natomiast dostarczyć funkcję drukującą pytanie i możliwe odpowiedzi oraz informującą o czasie jaki na odpowiedź przysługuje, to już w tym momencie mnóstwo SOUTów spada, bo zastępuje je wywołanie funkcji. I ja nie patrzę na silnik quizu ORAZ na pytanie NARAZ, tylko przepatruję osobno silnik quizu a osobno pytanie. Formulaiczność jest potrzebna uczącym się ponieważ rutyna wspomaga naukę umożliwiając koncentrację na nowym materiale lub praktykowanie dopiero co poznanego materiału.

Notacja pytań

Od razu zaproponuję tu kilka notacji pytań:

  1. zwykły plik .txt, z ustalonym formatem
  2. plik .properties
  3. plik .json (miałaś go jako txt, nie wiem czemu go tu nie widzę, zwłaszcza, że chyba już do niego miałaś parser?)

Idealnie byłoby, aby quiz z prymitywów mógł być modyfikowany (dodawanie czy zmiana pytań) przez operację na pliku tekstowym (obojętne czy .properties, .json czy .txt, ale preferowanie: jednym na temat, czyli np. prymitywy mają własny plik, słowa kluczowe czy tablice - własne pliki). Można o tym myśleć jako o bazie pytań.

Pytanie powinno mieć treść, przykładowe odpowiedzi, poprawną odpowiedź, czas jaki na nie dajemy. Może mieć coś ekstra, np. czas na wypełnienie ćwiczenia pomocniczego, mającego pomóc w odpowiedzi na pytanie właściwe, zapoznanie się z jakąś funkcją która może pomóc, czy przeczytanie rezultatu polecenia Jshell jakie wykonaliśmy. To co pytanie musi mieć wiąże się z następną kwestią.

Formulaiczność:

  1. chciałbym by zadawanie pytań było proste i wymagało albo wywołania funkcji w pętli albo wołania funkcji z listą
  2. oczekiwanie na pytanie powinno być odpowiednio wycyrklowane, z maksymalnym czasem nie przekraczającym minuty (nie chcemy by ktoś szczególnie długo szukał po necie, chcemy by całe quizy miały z góry określony czas - na Akademii nie ma zbyt wiele czasu na powtórki i raczej wolimy by nasz uczeń nie wychodził z JShella).
  3. ponieważ może być, że nie będzie odpowiedzi, niech domyślnie odpowiedź będzie "czas minął, 0 pkt!". W ten sposób unikamy problemu, że odpowiedź na poprzednie pytanie jest bieżącą odpowiedzią. Czyli przechodząc między pytaniami resetujemy zmienną odpowiedź do wartości domyślnej.
  4. powinny być zarezerwowane wartości odpowiedzi, które będziemy wykorzystywać do sterowania quizem, np. odpowiedź !pauza pauzuje czas (na chwilę, by np. uczeń mógł wyjść do toalety) a odpowiedź !koniec kończy quiz, a !punkty pisze ile mamy obecnie punktów itp. Można też pomyśleć o innym systemie komend - chcę po prostu dać uczniom pewne możliwości sterowania quizem, lub zostawić sobie furtkę na ich implementację potem.

Silnik

Silnik quizu to wszystkie funkcje, jakie pomagają w przeprowadzaniu quizu. Tam powinna kryć się logika zadawania pytań, weryfikacji odpowiedzi, ewentualne komendy.

try{
Thread.sleep(time);
} catch (InterruptedException e){
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

serr przynajmniej mogłoby tu być. Jest coś takiego jak spurious wakeup, co może wybudzić uśpiony wątek spoza aplikacji zatem nawet jak Ty nie planujesz go budzić lub mu przerywać, to się może zdarzyć.

System.out.println("An array is a container object that holds a fixed number of values of a single type.");
System.out.println("The length of an array is established when the array is created. ");
System.out.println("Each item in an array is called an element, and each element is accessed by its numerical index.");
System.out.println();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Zamiast takich rzeczy może chociaż \n w poprzedniej linii?

/list mixString
Thread.sleep(5000);
System.out.println();
System.out.println("And we will test it for this calls:");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This calls znaczy To woła. Testowanie dla "tych wywołań" będzie brzmiało "these calls".

@sehta7
Copy link
Collaborator Author

sehta7 commented May 23, 2019

@LIttleAncientForestKami
Starałam się dzisiaj jakoś podzielić ten projekt. Stworzyłam pakiety dla pytań i dla silnika. Możesz spojrzeć, czy o coś takiego Ci chodziło? Nie umiem natomiast przeskoczyć jednego problemu. Wyświetlanie pytań i sczytywanie odpowiedzi. Mogę to jak najbardziej zrobić w pętli i wyświetlać pytania, które mam w liście, ale wtedy nie jestem w stanie odczytać na bieżąco odpowiedzi, dopóki pętla się nie skończy. Usypianie też nic nie daje, bo wpis użytkownika jest zapisany dopiero po czasie uśpienia. Myślałam też, żeby tworzyć pliczki z pytaniami po zapisaniu ich do listy, ale znowu jeśli chcę je otworzyć przez /open to w pętli nie jest to możliwe (albo ja nie znalazłam jak to zrobić), poza tym wciąż pozostaje sczytywanie odpowiedzi. Chyba że mam stworzyć pliki z pytaniami i nie przechodzić po nich w pętli tylko tak jak w tej chwili prosić użytkownika o otworzenie każdego osobno, po odpowiedzi na pytanie. Chyba że przeoczyłam jakąś Twoją podpowiedź i da się to ładnie i łatwo zrobić.
Dodałam też ćwiczenie z importowaniem zewnętrznych bibliotek, bo i tak potrzebowałam Gson.
Jutro mam nadzieję dodać obsługę pytań i odpowiedzi do silnika, i wtedy powinny zmniejszyć się pakiety z poszczególnych działów.
I jeszcze pytanko, co z zadaniami? Też tworzyć je w formacie json w pliku? Czy mogą zostać tak, jak są w tej chwili?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants