GithubHelp home page GithubHelp logo

dduk-ddak / coding-night-live Goto Github PK

View Code? Open in Web Editor NEW
62.0 11.0 11.0 5.69 MB

Web-based Communication Application for Codelabs

License: Other

Python 61.62% HTML 14.77% CSS 5.20% JavaScript 18.00% Makefile 0.16% Shell 0.08% Dockerfile 0.16%
codelab communication-application seminar websocket django django-channels python

coding-night-live's Introduction

coding-night-live

Packagist DOI Build Status

coding-night-live is a Web-Based Communication Application for codelabs.

Codelab is a fun step-by-step, seminar-based approach to developing a software together.

Popular web-based applications like Slack, PingPong, etc., do exist for hosting interactive seminars, but none are customized exclusively for the codelabs. Coding-Night-Live is the light-weight, installation-free, web-based solution for the awesome codelab-thristy programmers!

Overview

3rd Place & Beyond FEST in Naver 2016 D2 CAMPUS FEST!

Overview

Features

  • Markdown-based slides
  • Live slide/code sharing
  • Syntax highlighting for over 100 languages
  • Track participants with live polling
  • User-friendly Q&A through comments
  • Catchy announcements with notice
  • Join codelab via unique URL created for each event
  • Export codelab to pdf
  • Collaborative code editing (future)

Installation and Settings

Build Requirements

  • Python 3.5+
  • Django 1.10+
  • Redis 3+
  • Docker (recommended)

Check requirements.txt for additional python packages

Installation

For further instructions on installation, please visit our doc page.

Third Party Libraries

Please check NOTICE

Documentation

We have a coding-night-live-doc page for project introduction, installation guide, and some documentation.

We welcome any documentation contribution.

Bug Report & Contribution

We welcome any and all suggestions. Please follow our guideline when contributing to our project.

If you find a bug, please report it to us using the Issues page on GitHub, with appropriate labels(bug, ..)!

And we're also using error logging system with Sentry. so you don't need a capture page for every error log.

License

coding-night-live is licensed under the MIT license.

The MIT License (MIT)

Copyright (c) 2017 fuzzythecat, juice500ml, punkyoon

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

fuzzythecat
Younjoon Chung
[email protected]

juice500ml
Kwanghee Choi
[email protected]

punkyoon
Jiyoon Ha
[email protected]

coding-night-live's People

Contributors

ailisobrian avatar fuzzythecat avatar itsnamgyu avatar juice500ml avatar minhoryang avatar punkyoon avatar taeseunglee 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

coding-night-live's Issues

migration 실패

manage_room.0010_auto_20170206_0055.py migrate 중에 오류가 납니다.
30b759b 커밋을 revert하면 되지 않을까 싶습니다.
업보: #26

redirection after login

when logged on user goes to http://~.com/, it does not redirect to http://~.com/services/
by the way, why are rooms named as services?

autocompletion reply is really buggy

default

  • why is that accordion acting strangely? why it is so long?
  • why does autocompletion recommend me invalid commands?
  • in that particular scenario, if you press 'up' button, command in input box disappears - you have to press 'up' button twice for autocompletion.

docker로 갑시다!

12factor를 지키고, 새로운 유저들에게 빠른 설치를 제공하기 위해서, docker이미지를 제공하고 싶습니다.

PDF인쇄를 하고 돌아오면, 제가 친 채팅이 보이지 않아요!

Happened:

  • PDF 인쇄 버튼을 누르고
  • PDF 인쇄를 진행한 후
  • 뒤로가기
  • 채팅에 메세지를 남김
  • 내가 쓴 채팅이 보이지 않음.

Unexpected:

  • 그런데 남이 쓴 채팅은 보임?!

Expected Scenario:

  • PDF 인쇄 버튼을 누르고
  • PDF 인쇄를 진행한 후
  • 뒤로가기
  • 채팅에 메세지를 남김
  • 내가 쓴 채팅과 남이 쓴 채팅이 보임.

뒤로 갔다가 오더라도 채팅이 원활히 진행되었으면 좋겠음.

Markdown Editor

markdown editor에서 가장 첫번째로 나오는 h1을 markdown preview에서 생략(?)합니다.

모든 내용이 preview에서 보이도록 고쳐주세요!

슬라이드 변경 문제

슬라이드를 수정하고 난 뒤에 timeout 이전에 다른 슬라이드를 클릭하면 해당 슬라이드의 수정내용이 반영되지 않습니다.

Slide list

슬라이드를 새로 생성한 후, 해당 슬라이드를 클릭하면 아무런 동작을 수행하지 않습니다.
슬라이드 내용을 확인할 수 있게 고쳐주세요!

TextField vs. JSONField(custom)

TextField에 JSON데이터를 넣을지 아니면 JSONField를 직접 제작하여 데이터를 넣을지 고민입니다.

  • JSONField를 사용할 때의 편의성 등이 얼마나 증가하는지 더 알아본 후에 적용해볼 생각입니다.

slide의 title 처리 문제

현재 slide상에서 title을 빼내는 방식은 (6b7a27f)

  1. 전체 string을 markdown.render에 넣은 뒤
  2. render된 결과를 "out"의 innerHTML에 넣고 (이 과정에서 DOM update)
  3. jquery를 이용해 전체 HTML으로부터 h1을 검색하여
  4. 맨 첫 h1의 textContent를 이용해 title을 빼냅니다 (@fuzzythecat 전체 dom tree에 h1이 오직 id="out"인 div에만 쓰이라는 보장이 없습니다. 오직 out.innerHTML에서만 검색하도록 고쳐주세요.)

여기서 문제는 title이 slide의 text를 markdown.render 안에서 뽑아낸다는 점에 있습니다. 코드를 고치고 있는 도중에는 효과적입니다. 하지만 이미 작성이 좀 된 slide를 맨 처음 load했을 때, 왼쪽 맨 위 햄버거를 누르면 각 slide별 제목이 모조리 나와야한다는 거죠.

해결책을 표로 정리해보면 다음과 같습니다.

  1. 모델에 title을 추가
    • 장점: front에서 재처리하지 않아도 됨. 전체 md은 나중에 lazy load하고 제목만 load할 수 있음.
    • 단점: 중복된 정보 전달.
  2. 맨 처음 그 시점까지 작성된 내용을 한꺼번에 받아 후처리
    • 장점: 현재 모델을 변경하지 않아도 됨. 모델이 심플해짐.
    • 단점: slide 개수가 늘어나면 프론트에서 처리해야 할 정보 양이 늘어남. lazy load 불가능.

27c92c1 (이 이슈 작성시의 최신)까지는 두 방식 모두 할 수 있도록 처리했습니다. 어떻게 하는게 좋을까요? 전 lazy loading때문에 1번이 맞는 것 같은데...

채팅 시간 표시 문제

  1. 오후 12시 55분에 채팅을 입력하였으나, 채팅 창에는 날짜, 분, 초를 제외한 '시간'이 잘못 표기 되어짐

(정확한 시간) 2017-02-10 12:55:30 -> (실제 표기된 시간) 2017-02-10-03-55-30

  1. db에 저장되는 시간은 정확한 시간

  2. front에서 잘못 표기되는 것인지 다시 확인해볼 필요가 있음

채팅 기능 구현

  1. nodejs+socketio로 분리해서 구현
    -> 인증문제?
  2. django + redis + channels + websocket
    -> 다른 프로젝트의 채팅 예제를 따라해봤으나, 계속적으로 실패 (이유는 확인하지 못함)
  3. django + tornado / twisted / ...
    -> 세부적으로 확인 필요

websocket's onclose가 아예 불가능한거 아닐까요

front단에서는 브라우저를 종료하면 그대로 subprocess가 종료되는 셈이라 js 콜스택이 모조리 날아가는(?) 뭐 그럴 것 같은데...
back에서는 연결이 끊기니 자동으로 알게 되는건 당연한 것 같습니다.
back에서 user_count를 하는 방법을 고민하는게 맞지 않을까요?

이미지 잘림

이미지가 크면 화면 밖으로 튀어나와 보입니다..

슬라이드 삭제 문제

  1. 모든 슬라이드를 삭제하고나서 다시 새 슬라이드를 만든 후, 이를 다시 삭제하면 또 다른 새 슬라이드가 생성되는 버그 존재.

  2. 슬라이드 삭제시 왼쪽 contents 메뉴에서 슬라이드가 사라지지 않음. 새로고침을 한 뒤에야 사라진 것을 확인할 수 있음.

1번 문제를 해결하려면 우선 단 하나 남은 슬라이드를 삭제할 수 없게 만들어야할 것 같습니다. 즉, 적어도 하나의 슬라이드만 있도록 보장해주는 거죠..

슬라이드 추가 문제

슬라이드를 13개 이상 추가하면 리스트에서 + 버튼이 사라집니다. (= 슬라이드를 더 추가할 수 없게됨)

라이센스 정리

  • dependency와 opensource code의 사용 구별
  • 사용하는 opensource code의 라이센스 정리
  • 라이센스 충돌 시, 다른 라이센스의 사용 검토

OAuth로 Google에 로그인할 때, https로는 로그인진행이 안됩니다.

Error: redirect_uri_mismatch

The redirect URI in the request, http://RETARDED.ngrok.io/accounts/google/login/callback/, does not match the ones authorized for the OAuth client. Visit https://console.developers.google.com/apis/credentials/oauthclient/RETARDED?project=RETARDED to update the authorized redirect URIs.

저는 Google API Console에서 https로 OAuth를 설정했거든요.

임시해결책: Google API Console에서 http URL을 추가하면, 몇 분 뒤 OAuth 로그인이 잘 진행됩니다.

drawer bugs

  • not scrollable
  • slide addition doesn't affect to "listeners" (it affects "lecturers")

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.