MozillaPL.org - polskie centrum Mozilli

Główne menu:

pomysł: Mozilla-based SuperMemo/e-Learning

Projektowanie aplikacji i rozszerzeń opartych na technologiach Mozilla Foundation: XUL, JavaScript, XPCOM, XBL i innych

Moderator: Pomocy?!

pomysł: Mozilla-based SuperMemo/e-Learning

Postautor: Gość » 01 września 2005, 13:59

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6

Witajcie,

właśnie odkrywam potęgę programu SuperMemo - narzędzia, pozwalającego na znaczne zwiększenie efektywności nauki poprzez optymalne powtórki, planowane zgodnie z tzw. krzywą zapominania. Program ma taką fajną funkcję, zwaną "incremental reading", w skrócie polega ona tym, że importujemy stronę www lub książkę w formacie elektronicznym (HTML) do programu i przeglądając możemy zaznaczać interesujące fragmenty i konwertować je w pytania, które zostaną włączone do procesu powtórek.

To bardzo fajna sprawa, ale SuperMemo ma toporny interfejs, który utrudnia wprowadzanie danych i bazuje na Internet Explorerze (komponent MSHTML) - odpalenie go pod Linuksem jest conajmniej trudne.

Zastanawiam się, czy nie dałoby się zrobić aplikacji typu SuperMemo jako rozszerzenia do przeglądarki FireFox. Wtedy dodawanie wiedzy (najbardziej pracochłonna część pracy z SuperMemo) stałoby się dziecinnie proste, sprowadzające się np. do znalezienia odpowiedniego hasła w Wikipedii, zaznaczeniu tekstu i wyboru w menu kontekstowym pozycji "Dodaj do procesu nauki". Fakt, że FireFox ma wbudowaną obsługę MathML i SVG pozwoliłby w końcu na naukę wzorów fizycznych/matematycznych/chemicznych w systemie powtórek - aktualnie jest to pracochłonne, bo wymaga użycia zewnętrznego programu generującego grafikę.

Co o tym myślicie?

Nie znam się jednak na platformie Mozilla na tyle, żeby znać jej możliwości i ograniczenia. Rozważam dwa rozwiązania - cała aplikacja w formie rozszerzenia do przeglądarki, zapisująca dane w bazie SQL (najlepiej SQLite, aby użytkownik nie musiał instalować żadnego silnika) lub rozwiązanie klient-serwer: rozszerzenie przeglądarki służy do wprowadzania danych, które są zapisywane na serwerze Apache+PHP. W tym drugim przypdku powstałaby od razu wersja on-line systemu (baza pytań składowana w internecie), ale wtedy użytkownik chcący korzystać z systemu w trybie off-line musiałby instalować coś w stylu PHP-Triad.
Gość
 

Postautor: Gandalf » 02 września 2005, 18:01

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8b4) Gecko/20050828 Firefox/1.0+

Pierwszy pomysl jest w calosci do zrealizowania. Mozilla posiada swoj binder z SQLLite. Dane mozesz tez trzymac np. w RDFie, albo innym XMLu. Generalnie super pomysl :) Nie krepuj sie :) Postaramy sie pomoc.
IE jest to aplikacja, która pozwala przeglądać internet z Twojego komputera i na odwrót
Gandalf
 
Posty: 1802
Z nami od: 29 czerwca 2002, 04:37
Lokalizacja: Warszawa

Postautor: Nalfein » 04 września 2005, 20:01

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6

RDF raczej sam w sobie odpada, bo wymaga parsowania, a bazy pytań bywają duże np. taki SuperMemo Advanced English to dwie bazy po 20 tysięcy słów - niektórzy nawet to łączą i pracują na jednej ogromnej bazie, a program nie traci specjalnie na szybkości tylko dlatego - chciałbym takie coś osiągnąć.

Skoro mówicie, że pomożecie to super :) Mam 101 pytań, na początek kilka:

1. Czytam sobie o tej bibliotece do SQL: http://www.xulplanet.com/ndeakin/article/289?show=c
i z komentarzy wynika, że rozszerzenie do Mozilli Suite (Seamonkey to to samo?) może nie działać pod Firefoxem. Chciałbym aby mój programik działał z obiema przeglądarkami - powinienem w takiej sytuacji zważać na jakieś ograniczenia? Do tej pory myślałem, że Mozilla Suite to Firefox + Edytor HTML + Klient poczty + IRC itd., czyli, że dodatek pisany dla Firefoxa będzie bez problemu działał pod Mozillą Suite i odwrotnie.

2. Od czego powinien zaczać naukę pisania rozszerzeń dla Mozilli człowiek znający dobrze C++/PHP? Dotarłem do http://xulplanet.com/tutorials/mozsdk/ , ale najwyraźniej jest to w trakcie tworzenia, bo gdy chcę kliknąć na czymś, co mnie interesuje to akurat brakuje linku :)

3. Gdy tak patrzę na inne tutoriale, to widzę, że cały kod to Javascript i XML. Kod C++ jest zawsze udostępniany poprzez interfejs XPCOM? Chodzi mi o to, że nie przepadam za Javascript i od pewnego czasu nie wyobrażam sobie pisania w języku nieobiektowym. Chciałbym też ukryć pewną część funkcjonalności w formie skompilowanej, aby zabezpieczyć niektóre rozwiązania przez plagiatorami.
Nalfein
 
Posty: 9
Z nami od: 02 października 2004, 22:10

Postautor: Gość » 04 września 2005, 21:26

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050819 Firefox/1.0+

Nalfein pisze:RDF raczej sam w sobie odpada

Nie koniecznie. Slyszales o SPARQL dla RDF-a? To taki "SQL" dla RDF-a. Dziala to naprawde dobrze. I nie jest wolne.
Gość
 

Postautor: Nalfein » 04 września 2005, 21:55

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6

Nie jest wolne, ale na pewno nie będzie szybsze od SQL-owej bazy danych, w której parsowanie nie jest wykonywane. Baza z 40 000 rekordów to co najmniej 20 MB RDF do sparsowania.
Nalfein
 
Posty: 9
Z nami od: 02 października 2004, 22:10

Postautor: Gość » 04 września 2005, 22:01

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050819 Firefox/1.0+

Nalfein pisze:Nie jest wolne, ale na pewno nie będzie szybsze od SQL-owej bazy danych, w której parsowanie nie jest wykonywane.

W zapytaniach SPARQL nie jest wymagane parsowanie.

Nalfein pisze:Baza z 40 000 rekordów to co najmniej 20 MB RDF do sparsowania.

Nigdy nie testowalem takich wielkosci ale ja bym sprobowal... Jedynie o co bym sie martwil to implementacja SPARQL w technologiach z ktorych bedziewsz korzystal.
Gość
 

Postautor: Nalfein » 05 września 2005, 08:02

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6

Nie będę próbował - testy szybkości takiego SQLite mam na papierze i jest niemożliwe, by cokolwiek natywnego XML-owego je pobiło.
Nalfein
 
Posty: 9
Z nami od: 02 października 2004, 22:10

Postautor: Gandalf » 05 września 2005, 08:38

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8b4) Gecko/20050828 Firefox/1.0+

Nalfein pisze:2. Od czego powinien zaczać naukę pisania rozszerzeń dla Mozilli człowiek znający dobrze C++/PHP? Dotarłem do http://xulplanet.com/tutorials/mozsdk/ , ale najwyraźniej jest to w trakcie tworzenia, bo gdy chcę kliknąć na czymś, co mnie interesuje to akurat brakuje linku :)


http://developer.mozilla.org (jest polska wersja!) - masz tam kurs pisania rozszerzen w XUL-u, a to poczatek. Masz jeszcze angielskie books.mozdev.org .

Nalfein pisze:3. Gdy tak patrzę na inne tutoriale, to widzę, że cały kod to Javascript i XML. Kod C++ jest zawsze udostępniany poprzez interfejs XPCOM? Chodzi mi o to, że nie przepadam za Javascript i od pewnego czasu nie wyobrażam sobie pisania w języku nieobiektowym. Chciałbym też ukryć pewną część funkcjonalności w formie skompilowanej, aby zabezpieczyć niektóre rozwiązania przez plagiatorami.


Tak. Kod C++ piszesz jako komponenty i serwisy XPCOM a potem przez XPConnect laczysz to z JS.
IE jest to aplikacja, która pozwala przeglądać internet z Twojego komputera i na odwrót
Gandalf
 
Posty: 1802
Z nami od: 29 czerwca 2002, 04:37
Lokalizacja: Warszawa

Postautor: Gość » 05 września 2005, 10:02

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050819 Firefox/1.0+

Nalfein pisze:Nie będę próbował - testy szybkości takiego SQLite mam na papierze i jest niemożliwe, by cokolwiek natywnego XML-owego je pobiło.

Wiesz ja Cie nie zmusze ale mysle, ze najpierw moglbys sie z tym zapoznac a poniej sie wypowiadac. Bo SPARQL nie jest natywnym XML-em, nie jest zupelnie XML-em.
Gość
 

Postautor: Nalfein » 06 września 2005, 11:59

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712 Firefox/1.0+

Już mniej więcej doszedłem do kształtu projektu. Będzie to rozszerzenie (klient) dla Firefoxa współpracujące z serwisem internetowym (serwer), lecz nie wymagające go.

Zagadnienia, głównie w formie pytań i odpowiedzi, będą grupowane w tzw. drzewach wiedzy. Zaimplementuję dwa typy drzew wiedzy: lokalne (sterownik zapisujący do bazy SQLite) i zdalne (internetowa baza pytań).

Drzewa wiedzy są zorganizowane w formie kategorii zagnieżdżanych bez ograniczeń. Użytkownik poprzez klienta może subskrybować wybraną kategorię z drzewa wiedzy, włączając ją do procesu nauki. Wybierając ją określa czas, w jakim chce opanować wiedzę. Po potwierdzeniu program rozkłada w tym czasie materiał w wewnętrznym kalendarzu powtórek (wprowadzenie nowego materiału jest traktowane jako powtórka zerowa).

Kategorie są formowane od możliwie najogólniejszej do konkretnego zagadnienia.

Np. mamy zagadnienie "Bitwa pod Termopilami", leżące w gałęzi "Historia -> Starożytność -> Wojny perskie" które jest opisywane przez pytania:
1. W którym roku odbyła się bitwa pod Termopilami?
2. Jaka znana bitwa miała miejsce w roku 480 p.n.e.?
3. Epizodem której wojny była bitwa pod Termopilami?
4. Które państwa walczyły przeciwko sobie w bitwie pod Termopilami?
5. Kto dowodził siłami greckimi w bitwie pod Termopilami?
6. Która strona wygrała w bitwie pod Termpopilami?
7. Jakie było znaczenie bitwy pod Termopilami?
itd.
Naturalnym zachowaniem byłoby włączenie tych wszystkich pytań w tym samym czasie, aby wzmocnić siłę skojarzeń.

Użytkownik z poziomu klienta może publikować pytania w drzewach wiedzy i dodawać kategorie. Jeśli posiada do tego odpowiednie uprawnienia (baza on-line), efekt dodania jest widoczny od razu dla wszystkich, w przeciwnym razie pytanie wymaga sprawdzenia przez moderatora.

Moderator może ocenić wprowadzone informacje punktując je. Punkty zasilają konto użytkownika serwisu. Otrzymane punkty użytkownik może wykorzystać subskrybując kolejne kategorie, płacąc nimi za dostęp do zasobów. Będzie ustalone ratio na poziomie mniej więcej 1:100, czyli dodanie jednego pytania pozwoli na pobranie 100. W ten sposób ludzie, którzy pomagają w rozwoju będą korzystali z niego zawsze za darmo. Dla leniwców i sępów zostanie wprowadzony system płatności przez SMS np. 10 zł za 1000 pkt. - zapewni on środki na utrzymanie serwisu, reklamę i wykupienie praw do schematów i ilustracji z książek, które będą wykorzystane jako materiał do pytań.

Mechanizmy wewnętrzne rozwiązałbym w następujący sposób:
- każdy typ pytania ma swój formularz edycji w postaci XForms, zwracającego po wypełnieniu opis pytania w XML
- przy wyświetlaniu pytanie przechodzi przez szereg arkuszy XSLT zostając doprowadzone do XHTML
Dokumenty XForms i XSLT są pobierane z serwera do klienta jednorazowo i same transformacje i zbieranie danych odbywa się po stronie klienta.

np. chcemy dodać pytanie typu "Co wydarzyło się w roku XXX?", w tym celu wybieramy typ pytania "Pytanie o datę", otwiera się formularz XForms powiązany z danym typem pytania z polem na datę, checkboxem służącym do wyboru n.e./p.n.e. i polem na odpowiedź. Po wypełneniu formularza otrzymujemy gotowy kod XML opisujący pytanie:

Kod: Zaznacz cały
<data>
   <date type="BC">480</date>
   <event xml:lang="pl">Bitwa pod Termopilami</event>
   <event xml:lang="en">Termopile's battle</event>
</data>


Formularz w tej formie, zebrany przez klienta, jest publikowany zgodnie z implementacją wybranego drzewa wiedzy, albo (lokalnie) wrzucany do bazy, albo publikowany na serwerze.

Gdy nadejdzie czas na powtórkę, klient na podstawie identyfikatora pytania i identyfikatora bazy, pobiera poprzez odpowiedni sterownik informację o typie pytania i jego opis w formie XML-owej.

Na podstawie definicji typu pytania określa łańcuszek XSLT, który musi wywołać, aby wyświetlić pytanie na ekranie. W przypadku naszego pytania będą to dwa arkusze:

1. doprowadzający do formatu pytanie i odpowiedź, na wyjściu otrzymujemy:

Kod: Zaznacz cały
<data>
   <question xml:lang="pl">Co wydarzyło się w roku 480 p.n.e?</question>
   <question xml:lang="en">What happened at 480 BC?</question>
   
   <answer xml:lang="pl">Bitwa pod Termopilami</event>
   <answer xml:lang="en">Termopile's battle</event>
</data>


2. wyświetlający pytanie w formacie pytanie i odpowiedź w postaci XHTML.

Zamiast tych dwóch moglibyśmy stworzyć np. jeden, doprowadzający pytanie o datę od razu do XHTML, renderując np. po lewej tabelkę z chronologicznie uporządkowanymi wydarzeniami z danego okresu i zaznaczonym naszym wydarzeniem.

Kalendarz powtórek byłby przechowywany zawsze po stronie klienta, wtedy rola serwera sprowadziłaby się praktycznie do gromadzenia pytań i dokumentów opisujących typy pytań (arkusze XForms i XSLT). Algorytm planowania optymalnych powtórek byłby wbudowany w klienta, implementacja naprawdopodobniej na sieciach neuronowych, skopiowana z MemAid.
Nalfein
 
Posty: 9
Z nami od: 02 października 2004, 22:10

Postautor: lfx » 06 września 2005, 16:54

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Debian/1.7.8-1

Witam

Pomysł wydaje się być ciekawy i takie rozszerzenie w Firefoksie może okazać się pomocne.
Mam jednak kilka pytań dotyczących nie samego pomysłu a sposobu jego realizacji.

Jakie dokładnie operacje będzie wykonywało to rozszerzenie? Czy nie obciąży to zbytnio procesora i pamięci, tak że jednoczesne surfowanie i używanie rozszerzenia stanie się uciążliwe (rozumiem, że jeśli ma to być zbliżone funkcjonalnością do SuperMemo, to musi być to dość rozbudowane rozszerzenie)?

Czy ma sens tworzyć taki program tylko i wyłącznie jako wtyczkę do Mozilli? Czy nie lepiej byłoby stworzyć osobną aplikację, której dopełnienie stanowiłaby wspomniana wtyczka? W końcu nie każdy używa Mozilli i nie wszyscy będą skłonni zainstalować dodatkową przeglądarkę internetową tylko po to by móc skorzystać z tego rozszerzenia.
To takie moje przemyślenia na ten temat, oczywiście autor zrobi jak zechce;)

Tak przy okazji: na jakiej licencji mogą być udostępniane rozszerzenia np. do Firefoksa?
lfx
 
Posty: 4
Z nami od: 06 września 2005, 15:39

Postautor: Nalfein » 06 września 2005, 17:53

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712 Firefox/1.0+

Rozszerzenie te wykonywałoby cyklicznie czynności:
1. Pobranie pytania z serwera (w małych paczkach lub na bieżąco)
2. Przetwarzanie pytania za pomocą XSLT do XHTML
3. Wyliczanie optymalnego czasu na powtórkę i uczenie sieci neuronowej.
4. Uaktualnienie rekordu w lokalnej bazie SQLite.
Te operacje byłyby wykonywane dla każdego pytania, niekiedy w odstępach rzędu 1 sekundy (gdy pytanie będzie tak oczywiste, że użytkownik nie będzie się zastanawiał). Reszta na tyle rzadko, że wydajność nie ogrywałaby znaczącej roli.

Nie wiem jak z pamięcią - coś na pewno ładowałoby już przy starcie przeglądarki, ale reszta gadżetów - dzięki zastosowaniu JS - byłaby chyba wgrywana tylko w razie potrzeby. Choć może być inaczej - nie znam mechanizmów Mozilli.

Rozszerzenie to intensywnie wykorzystywałoby multimedia np. przy nauce języków tekstowi będzie często towarzyszył dźwięk prawidłowej wymowy. Odtwarzanie to powinno być kontrolowane z poziomu rozszerzenia, czyli np. po otwarciu karty pytanie-odpowiedź jest czytane pytanie, a następnie, po wciśnięciu guzika "Pokaż odpowiedź" odsłania się warstwa z odpowiedzią i jednocześnie odtwarzany jest plik z dźwiękiem.

To mniej więcej chciałbym osiągnąć. Jeśli forma rozszerzenia do Firefoxa/SeaMonkey na to nie pozwala lub istnieje jakieś lepsze rozwiązanie (i tak musiałbym użyć HTML-a do prezentacji pytań) to niech brać z MozillaPL.org mnie ostrzeże - nie pisałem jeszcze nic pod Mozillę i nie mam rozeznania w tym temacie.
Nalfein
 
Posty: 9
Z nami od: 02 października 2004, 22:10

prośba o kontakt

Postautor: Marceli » 24 października 2005, 19:46

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7

Witam,

jeśli dalej jesteście zainteresowani tworzeniem oprogramowania supermemo-podobnego, to może warto, żebyśmy pogadali - w tej chwili prowadzę projekt o zbliżonej tematyce i szukam zapalonych developerów; wszystko do obgadania na privie

trafiłem tu przypadkiem, jeśli złamałem jakieś tabu tym postem - przepraszam :)

pozdrawiam,
Marceli
mk(malpka)akmeo.pl
Marceli
 

prośba o kontakt

Postautor: Marceli » 24 października 2005, 19:48

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7

Witam,

jeśli dalej jesteście zainteresowani tworzeniem oprogramowania supermemo-podobnego, to może warto, żebyśmy pogadali - w tej chwili prowadzę projekt o zbliżonej tematyce i szukam zapalonych developerów; wszystko do obgadania na privie

trafiłem tu przypadkiem, jeśli złamałem jakieś tabu tym postem - przepraszam :)

pozdrawiam,
Marceli
praca(malpka)akmeo.pl
Marceli
 

Śmierć...

Postautor: Gość » 02 marca 2006, 22:41

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7)

Witajcie,

patrząc na datę ostatniego posta w tym temacie, to chyba nic już się nie dzieje ciekawego.... A szkoda....
Gość
 

Postautor: Nalfein » 08 sierpnia 2006, 09:15

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060719 Firefox/1.5.0.5

Dzieje się. Jestem w trakcie tworzenia serwisu www, który realizowałby to samo zadanie. Koncepcja rozszerzenia dla firefoxa została odłożona. Jeśli zostanie stworzone, to będzie funkcjonowało tylko jako dodatek.
Nalfein
 
Posty: 9
Z nami od: 02 października 2004, 22:10

Postautor: Nalfein » 28 sierpnia 2006, 18:56

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060719 Firefox/1.5.0.5

Gdyby ktoś był chętny do pomocy to zapraszam na priva: adam kropka dziendziel na gmail.com.

M.in. trzeba opracowac algorytm konkurujacy z http://www.supermemo.com/english/algsm11.htm , zapewne w oparciu o sieci neuronowe.
Nalfein
 
Posty: 9
Z nami od: 02 października 2004, 22:10

Postautor: Nalfein » 02 sierpnia 2008, 08:48

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.16) Gecko/20080715 Ubuntu/7.10 (gutsy) Firefox/2.0.0.16

Witam ponownie,

minęło trochę czasu i powstało coś, co mogę już tutaj pokazać. Jest to drugie podejście, to co widać zostało napisane w ciągu ostatnich 5 miesięcy i w ciągu kolejnego pół roku powinienem ukończyć pierwszą wersję i zrobić oficjalną premierę.

To wersja preview, bardzo surowa i wizualnie wymaga dopracowania, ale do teamu dołączył grafik i wkrótce to się zmieni.

http://www.memorize-it.net/

Serwis będzie umożliwiał naukę całkowicie za darmo, od produktów SuperMemo będzie go różnić mocne wsparcie dla tworzenia własnych, multimedialnych baz i współdzielenie ich z resztą społeczności. Tworzenie baz będzie wygodne i proste, użytkownicy będą mogli tworzyć kursy podobne do dostępnych z SuperMemo UX za pomocą samej przeglądarki i udostępniać je za darmo innym lub sprzedawać za pomocą naszej platformy.

Pozdrawiam serdecznie,

Adam Dziendziel
adam dot dziendziel at gmail dot com
Nalfein
 
Posty: 9
Z nami od: 02 października 2004, 22:10


Wróć do Programowanie z użyciem technologii Mozilli

Kto jest online

Zarejestrowani użytkownicy: Bing [Bot], Google [Bot]

Przejdź do powiązanej strony

Nawigacja:

Stopka: