Giter VIP home page Giter VIP logo

assemblylearner's People

Contributors

cd80 avatar dev-nzt avatar jinmo avatar re4lfl0w avatar

Stargazers

 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

assemblylearner's Issues

리팩토링계획은 없으신가요

현재 한 파일에 너무 코드가 집중되어있어서... URL 라우팅, DB접근, 문제실행 을 분리했으면하는데 어떻게 생각하시나요?

Issues remaining for 1.0

  • 회원 정보 수정 만들기
  • snippet을 문제 화면에 넣을 것인지 결정
  • 정답표시를 타임아웃 걸린 밑의 한줄짜리 글로 표현하기. 지금 보니까 조금 불편함..
  • 답 검사를 파이썬 파일로 하기 (interactive judge)
  • 문제 제작 시 이미지 업로드 지원하기
  • Dockerfile 및 설치 스크립트 만들기

컴파일러 보안 문제

chroot로 유저끼리 분리하기.

단 라이브러리 세팅이 필요함.. 이 부분은 스크립트로 처리.

SQLite concurrency 문제

Traceback (most recent call last):
  File "./worker.py", line 5, in <module>
    jobqueue.cli()
  File "/home/assemblylearner/=/asmlearner/library/jobqueue/sqlite.py", line 60, in cli
    q.dequeue()
  File "/home/assemblylearner/=/asmlearner/library/jobqueue/sqlite.py", line 31, in dequeue
    job = db.query('SELECT * FROM queue LIMIT 1', isSingle=True)
  File "/home/assemblylearner/=/asmlearner/library/database/sqlite.py", line 17, in query
    cur = self._db.execute(query)
sqlite3.OperationalError: database is locked

넵 그렇습니다.
내장된 sqlite3 모듈을 wrapping해서 바로 호출시켜주고 fetch시켜주는 class 패턴으로 현재 작업중인데요, 문제는 이게 멀티스레드일 경우 지원을 안해주거나 여러 프로세스에서 동시에 접근할 때 잘 지원을 안해주거든요.

  1. 멀티스레드일 경우 접근
    지금 flask를 제 서버에서는 threaded=True 로 돌리고 있습니다.
  2. 멀티프로세스일 경우 접근
    워커 프로세스에서 지금 sqlite3 큐로 임시로 바꿨거든요. 하여튼 이럴 경우 다른 프로세스에서 sqlite DB에 접근하는 경우 locked 에러가 나면서 위의 에러로 꺼집니다. 문제죠.

사실 sqlite3이 한번에 여러 쪽에서 접근하도록 만들어진 DB인지는 잘 모르겠습니다. 아니라는 의견들이 조금 보이네요, 구글링해보니까..

그렇기 때문에

  1. DB를 교체한다
    가능은 합니다. 하지만 서버 기반의 DB로 바꿀 경우 DB 연결 구조를 약간 점검해봐야 될 필요성은 있습니다.
  2. wrapper 클래스 수정
    wrapper 클래스를 수정한다면 문제 1번은 producer-consumer 패턴으로 수정할 수 있을거같구요, 큐로 만들 수도 있을거같습니다. 하지만 문제 2번은 해결하지 못합니다. 뭐 이 부분은 워커 프로세스에서 수정해주면 되는 부분이긴 합니다.

프로그램 컴파일/output 개선

지금으로서는..

  1. input을 넣기가 쉽지 않음
  2. 코드/체크하는 코드 간 연결이 쉽지가 않음. input/output을 어떤 식으로 판별할 것인가?

Snippet 구현

각자 라이브러리를 만들 수 있도록 구현. 컴파일 옵션에 인클루드 경로로 넣어줌.

현재 문제 풀기 ui 완성도가 어떻게 되나요?

문제 컴파일 및 정답 체크 하는 워커 프로토타이핑을 했는데 테스트가 필요해서

문제 풀기 ui완성되면 dev 브랜치로 머지부탁드립니다.

머지되면 job que 에 넣는 부분까지 해서 테스트 후 풀리퀘 드리겠습니다.

solved 테이블을 기록으로서 쓰기 위한 공유 여부 컬럼 추가

solved 테이블은 양이 많습니다. 수정하려면 조심스러워야죠, 백업도 해야되고..

하지만 끝에 이 컬럼을 추가하려고 합니다.

is_public INT

  • 0이면 비공개
  • 1이면 공개

아직은 안했지만.. 기능 자체도 고민을 조금 해봐야겠네요. 서로 코드를 봐줄 때 이런 기능이 있으면 좋을거같다고 생각했습니다.

Minor refactoring

  • Configuration format change ( secrets.py, uwsgi.ini, conf/, asmlearner/, ... )
  • use inflection for pluralizing table names
  • Use nsjail+kafel for tracer (which makes tracing easier & better)

tool/tracer에서 child process 대기문제

지금은 child process가 PTRACE_TRACEME가 실행될때까지 usleep으로 대기하고있지만 시그널을 쓰던지 어떻게 하던지 해서 시기를 정확하게 하는게 깔끔할것같습니다.

UnicodeEncodeError exception because of SQLite database

This is my exception error log

root@6ffee32ed0ae:~/AssemblyLearner# python server.py

  • Loading init.sql
  • Executing init.sql
  • Execution success: init.sql
  • Trying to load category informations
  • category added tutorial : Traceback (most recent call last):
    File "server.py", line 320, in
    load_problem() # load problem
    File "server.py", line 162, in load_problem
    print ' - category added', name, ':', row['title']
    UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)

solve it jinmo! wtwt

프로세스 실행 시 자원제한 및 비동기 처리 문제

flask 내에서 한 요청이 어떻게 처리되는지 몰라서 비동기쪽은 잘 모르겠지만..
일단 자원제한은 linux라면 setrlimit으로 가능할것같습니다.

tool/tracer 쪽에 추가하는게 쉬워보입니다.
대신 실행 시 옵션을 줘야되겠죠.

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.