Giter Club home page Giter Club logo

omegaup's Introduction

omegaUp Contributors Issues open Issues closed

Forks Stars Twitter

Ver el contenido en Español: Español
View the content in English: English
Veja o conteúdo em Português: Português
Vedi il contenuto in Italiano: Italiano

Español

omegaUp es una plataforma educativa gratuita que ayuda a mejorar las habilidades en programación, usada por decenas de miles de estudiantes y docentes en Latinoamérica.

Directorios

Directorios que se utilizan activamente en el desarrollo.

Directorio Descripción
frontend/server/src/Controllers Lógica de negocio que implementa la API de omegaUp.
frontend/server/libs Bibliotecas y utilerías.
frontend/server/src/DAO Los Data Access Objects [DAO] y Value Objects [VO]. Clases utilizadas para representar los esquemas de la base de datos y facilitar su consumo por los controladores.
frontend/templates Plantillas utilizadas para generar el HTML que se despliega a los usuarios. También aquí están los archivos de internacionalización para inglés, español y portugués.
frontend/www Los contenidos completos de la página de internet.

El resto del código está en otros repositorios

Repositorio Descripción
quark Incluye el código del grader para la calificación de problemas y ejecutar los códigos bajo minijail, así como el servicio utilizado en los servidores de la nube para servir la cola de envíos.
karel.js La versión oficial de Karel utilizada por la Olimpiada Mexicana de Informática.
omegajail Un mecanismo de ejecución segura que basado en contenedores de Linux y seccomp-bpf. Utiliza minijail, escrito por el proyecto Chromium.
libinteractive Una librería para hacer problemas interactivos fácilmente.

Navegadores Soportados

Los navegadores oficialmente soportados son aquellos que soportan ECMAScript 2015 (ES6), e incluyen los siguientes:

Navegador Versión
Chrome 51
Firefox 68
Edge 12
Safari 12

Esto también incluye todos los navegadores basados en Blink / WebKit cuyas versiones sean compatibles con las de Chrome / Safari.

Licencia

BSD

English

omegaUp is a free educational platform that helps improve programming skills, used by tens of thousands of students and teachers in Latin America.

Directories

Directories that are actively used in development.

Directory Description
frontend/server/src/Controllers Business logic that implements the omegaUp API.
frontend/server/libs Libraries and props.
frontend/server/src/DAO Data Access Objects [DAO] and Value Objects [VO]. Classes used to represent database schemas and facilitate their consumption by controllers.
frontend/templates Templates used to generate the HTML that is displayed to users. Also here are the internationalization files for English, Spanish and Portuguese.
frontend/www The complete contents of the website.

The rest of the code is in other repositories

Repository Description
quark It includes the grader code for rating issues and running the codes under minijail, as well as the service used on the cloud servers to serve the submission queue.
karel.js The official version of Karel used by the Mexican Informatics Olympiad.
omegajail A secure execution mechanism based on Linux containers and seccomp-bpf. It uses minijail, written by the Chromium project.
libinteractive A library to easily do interactive problems.

Supported Browsers

Officially supported browsers are those that support ECMAScript 2015 (ES6), and include the following:

Browser Version
Chrome 51
Firefox 68
Edge 12
Safari 12

This also includes all Blink/WebKit-based browsers whose versions are compatible with Chrome/Safari.

License

BSD

Português

omegaUp é uma plataforma educacional gratuita que ajuda a melhorar as habilidades de programação, usada por dezenas de milhares de estudantes e professores na América Latina.

Diretórios

Diretórios que são usados ​​ativamente no desenvolvimento.

Diretório Descrição
frontend/server/src/Controllers Lógica de negócios que implementa a API omegaUp.
frontend/server/libs Bibliotecas e adereços.
frontend/server/src/DAO Objetos de acesso a dados [DAO] e objetos de valor [VO]. Classes utilizadas para representar esquemas de banco de dados e facilitar seu consumo pelos controladores.
frontend/templates Modelos usados ​​para gerar o HTML que é exibido aos usuários. Aqui também estão os arquivos de internacionalização para inglês, espanhol e português.
frontend/www O conteúdo completo do site.

O resto do código está em outros repositórios

Repositório Descrição
quark Inclui o código do avaliador para avaliar problemas e executar os códigos no minijail, bem como o serviço usado nos servidores em nuvem para atender a fila de envio.
karel.js A versão oficial do Karel usada pela Olimpíada Mexicana de Informática.
omegajail Um mecanismo de execução seguro baseado em contêineres Linux e seccomp-bpf. Ele usa minijail, escrito pelo projeto Chromium.
libinterativo Uma biblioteca para resolver facilmente problemas interativos.

Navegadores Suportados

Os navegadores oficialmente suportados são aqueles que suportam ECMAScript 2015 (ES6) e incluem o seguinte:

Navegador Versão
Chrome 51
Firefox 68
Edge 12
Safari 12

Isso também inclui todos os navegadores baseados em Blink/WebKit cujas versões são compatíveis com Chrome/Safari.

Licença

BSD

Italiano

omegaUp è una piattaforma educativa gratuita che aiuta a migliorare le abilità nella programmazione, usata da decine di migliaia di studenti ed insegnanti in America Latina.

Cartelle

Le cartelle che sono attivamente utilizzate nello sviluppo.

Cartella Descrizione
frontend/server/src/Controllers Logica di business che implementa le API di omegaUp.
frontend/server/libs Librerie e utility.
frontend/server/src/DAO I Data Access Objects [DAO] e Value Objects [VO]. Classi utilizzate per rappresentare gli schemi del database e facilitare il loro utilizzo da parte dei controller.
frontend/templates Modelli utilizzati per generare l'HTML visualizzato agli utenti. Sono anche presenti i file di internazionalizzazione per inglese, spagnolo e portoghese.
frontend/www L'intero contenuto del sito web.

Il resto del codice si trova in altre repository.

Repository Descrizione
quark Include il codice del grader per la valutazione dei problemi e l'esecuzione dei codici sotto minijail, così come il servizio utilizzato nei server cloud per gestire la coda delle sottomissioni.
karel.js La versione ufficiale di Karel utilizzata dall'Olimpiade Messicana di Informatica.
omegajail Un meccanismo di esecuzione sicura basato su container Linux e seccomp-bpf. Utilizza minijail, sviluppato dal progetto Chromium.
libinteractive Una libreria per creare facilmente problemi interattivi.

Browser supportati

I browser ufficialmente supportati sono quelli che supportano ECMAScript 2015 (ES6), e comprendono i seguenti:

Browser Versione
Chrome 51
Firefox 68
Edge 12
Safari 12

Questo include anche tutti i browser basati su Blink/WebKit le cui versioni sono compatibili con quelle di Chrome/Safari.

Licenza

BSD

omegaup's People

Contributors

alanboy avatar alexiaam avatar andreasantillana avatar anmode avatar anscharivs avatar aritra8438 avatar blueblockgrape avatar carlosabcs avatar dependabot[bot] avatar galovdev avatar heduenas avatar hnoona-0 avatar ingridrb avatar joemmanuel avatar karyme-nava avatar lhchavez avatar limitedmage avatar luis-8 avatar magno309 avatar mau-md avatar mikemamr avatar mjayalam avatar npave avatar omargo1 avatar pabloaguilar avatar pabo99 avatar rendon avatar ruizyugen avatar spacewhite avatar tvanessa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

omegaup's Issues

Excepción al loggearse en omegaup usando Google auth

Copy-paste del mail original:

Que onda Alanboy, Zaiterska,
Ando montando omegaup beta en mi compu local. Me encontré con esta excepción al momento de loggearme. Mi BDD está vacía, así que si solo ocurre en esos casos que nunca van a pasar en el "live site" entonces ni se preocupen. Se las dejo por si creen que es relevante. Quieren que mejor la suba como issue al github? (sirve que lo organizo de una vez por todas :P ).

exception 'Exception' with message 'mysqlt error: [1048: Column 'email_id' cannot be null] in EXECUTE("INSERT INTO Emails ( email_id, email, user_id ) VALUES ( NULL, '[email protected]', '3');") ' in /Applications/XAMPP/xamppfiles/htdocs/omegaup/frontend/server/dao/base/Emails.dao.base.php:227 Stack trace: #0 /Applications/XAMPP/xamppfiles/htdocs/omegaup/frontend/server/dao/base/Emails.dao.base.php(51): EmailsDAOBase::create(Object(Emails)) #1 /Applications/XAMPP/xamppfiles/htdocs/omegaup/frontend/server/controllers/login.controller.php(62): EmailsDAOBase::save(Object(Emails)) #2 /Applications/XAMPP/xamppfiles/htdocs/omegaup/frontend/www/login.php(19): LoginController::login('joemmanuel@gmai...', 'https://www.goo...') #3 {main}


Alanboy:

Eso me huele a que en la base de datos no tiene email_id como autoincremento, dejame revisar.

API PHP /contests/:id/problem/:id

Implementar el backend en PHP necesario de /contests/:id/problem/:id :

Si el usuario puede verlo, muestra el contenido del problema y referencias a las soluciones que ha enviado ese problema. Por el momento, propongo diferenciar los problemas que se esten usando en un concurso en vivo de los que son "estáticos" por la URI. Es decir, un problema en vivo siempre estará dentro de un concurso, es por eso que requiere su concurso/:id/... En cambio, un problema estático podrá ser accesado en un futuro solamente por /problems/:id,

API PHP /runs/new

Implementar el backend en PHP necesario para enviar una nueva solución a un problema /runs/new

API Frontend /runs/new

Implementar el frontend necesario en Javascript para enviar una solución a un problema /runs/new

Badges-tags en v1 *nuevo*

A alguien se le ocurre una forma sencilla de implementar badges? Tal que podamos ponerlo, en v1 con prioridad baja.

Lo más straightforward que se me ocurre es, por el momento, sólo hacer badges que se desbloqueen por resolver cierto subconjunto de problemas. Por ejemplo 'newbie', 'tree master', 'macs', etc... Así podemos tener una tabla de Badges, otra tabla de BadgesProbs y otra tabla de BadgesConcursante, y cada que un concursante resuelva un problema, buscamos si tiene algun badge asociado, revisamos que cumpla todos los requisitos del badge y se lo colgamos :).

Esta forma no incluye badges que se desbloqueen por resolver en tiempo récord un problema u estar hasta arriba en la tabla de los que resolvieron un problema por tiempo.. pero bueno, esos los podriiiamos hard-codear de ser necesario (no me gusta D: ).

Saludos!

Modo entrenamiento perpetuo

[Creo que esto es...]
Mostrar el banco de problemas, permitir que envíen y llevar estadísticas de cada usuario.

API Frontend /runs/show/:id

Implementar el frontend necesario en Javascript para /runs/show/:id

Si el usuario tiene permiso, puede ver su solución y el estado de la misma (pending… grading… done… y la calificación).

Página para editar perfil

Deben poderse editar:

  • múltiples listas de correos
  • correo principal (para que Gravatar muestre la foto)

Falta roles de usuario en BDD

Según mi análisis, es todo lo que falta en la BDD para soportar todos los features de la v1.
Pendiente instalarle Tiny ACL a la BDD.

Redacciones de los problemas

Creo que lo mejor será hacer una nueva tabla para guardar las redacciones, para de una vez tener soporte para las traducciones. Talvez podríamos ahí mismo guardar la(s) imagen(es) en un blob o guardar el link a un archivo.

Design: Cómo almacenamos el password?

Esta es la discusión hasta el momento:

  • [Users] Qué opinan de guardar los passwords en BINARY(20) usando
    SHA-1 en lugar de CHAR(32) usando MD5?

Parece que si nos queremos poner paranoicos, bcrypt es la opción.. qué
opinan? http://chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow-tables-what-you-need-to-know-about-s.html

Aquí tengo que hacer una nota: hay que recordar que hay dos escenarios en
los que se va a usar la plataforma: en web normal y embebido. Si se puede
usar el BINARY, o su equivalente con H2 sin broncas, adelante :) y si no se
puede, pues total, usamos SHA-1 con CHAR(40), no hay problema :P

Según los docs de H2, dice que sí sabe tratar con BINARYs:
http://www.h2database.com/html/datatypes.html#binary_type

La idea de bajar a BINARY(20) es que gastas menos espacio (al menos a
la mitad) y comparas menos. Estoy de acuerdo con no optimizar
prematuramente, pero si eso no cuesta nada, creo que se puede hacer
desde ahorita.

El hashear lo hacemos en PHP. Había visto esta biblioteca:
http://www.openwall.com/phpass/ que dice saber bcrypt.

BDD: Falta tabla de Jueces

Sugerido por Pablo: No será mejor tener una tabla de jueces que se pueden
utilizar en lugar de que sea un enum (y si agregamos un juez, no hay
necesidad de modificar la estructura de la BD)?

API Scala /runs/new

Implementar en Scala lo necesario para enviar la solución a un problema /runs/new

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.