2012-06-22 5 views
1

현재 프로그래밍 콘테스트 웹 사이트를 개발 중이며 코드 제출 및 웹 사이트에서의 실행에 대한 지원을 구현하려고합니다. 꽤 많은 인터넷 검색 결과를 얻은 후에도 여전히이 가이드를 찾지 못했습니다.코드 실행을위한 웹 사이트 만들기

누군가이 웹 사이트 (또는 다른 출처)에 이에 대한 기본 지침이나 기본 규칙이 포함되어 있는지 알고 있습니까?

모든 답장을 감사하십시오.

추신 : 모든 프로그래밍 언어 태그에 대해 궁금한 사람이 있으면 최소한이 언어를 지원할 계획입니다.

+0

비교적 간단한 단계로 구성된 긴 목록과 같습니다. 어느 것이 당신을 막고 있습니까? –

+0

은 javascript, html, css, jquery를 실행하기 위해 http://www.jsfiddle.net이 어떻게 작동하는지 살펴 봅니다. PHP를 실행하려면 http://writecodeonline.com/php/을보십시오. –

+2

IMO 질문이 너무 광범위합니다. 게다가 나는 그 문제를 정말로 이해하지 못한다. 귀하의 응용 프로그램은 단지 당신이 지원하고자하는 모든 언어에 대한 통역이 필요합니다 ... – home

답변

0

자바의 경우는 매우 간단하다 : 당신은 서버에 소스 코드를 업로드, Servlet을 만들 필요가있어

  • ( 예를 들어, POST 요청을 통해)

  • 를 사용하여 자바 컴파일러 API 바이트 코드로 소스 코드 컴파일 (tutorial)

  • 컴파일 된 코드는 ClassLoader을 통해 동적으로로드 할 수 있습니다 (또한 mi GHT SecurityManager)

  • 를 구성하고 MVC 아키텍처 :

1

주의에 대해 잊지 마세요 - 당신이 어려운 몇 가지 더 작고 전술적 문제들로이 프로젝트를 휴식을 찾는다면, 나는 실제로 사이트에서 다른 사람의 코드를 실행하려고 시도하지 않으려 고 강력하게 제안합니다. 사이트 자체를 만드는 관점에서 사전 구축 된 구성 요소 또는 서비스 (Wordpress, GitHub 등)를 활용할 것을 제안합니다.

제출이 완료되면 그들을 실행 안전하게. 모든 실제적인 목적을 위해 이것은 다른 사람의 코드를 실행하는 모든 기계가 자발적으로 화염에 빠질 수 있다고 가정해야 함을 의미합니다. 이러한 언어 중 일부는 "샌드 박스"에서 코드를 실행하는 데 사용할 수 있어야하는 기능을 갖추고 있지만 실제로 모든 언어를 적절히 보호 할 수있을만큼 충분히 전문적이지는 않습니다.

아마존의 EC2와 같은 것이 도움이 될 것 같습니다. 제출을 실행해야 할 때 VM을 스핀 업하고 완료되면 버리십시오. 그들은이 코드를 실행하는 데 아마도 잘 맞는 몇 가지 미리 구성된 이미지를 가지고 있습니다. 버그가 있거나 악의적 인 코드 때문에 무언가가 엉망이되어 버리면, 그냥 던져 버리기 때문에 너무 신경 쓰지 않아도됩니다 당신이 끝났을 때 멀리.

1

데이터를 스크래핑하는 특정 목적을 위해 이미이 작업을 수행하는 사이트가 있습니다.

https://scraperwiki.com/ - jsfiddle과 달리 scraperwiki은 서버 측 코드를 실행합니다. 내가 수집 할 수있는 한 아마존 인스턴스를 통해 환경을 샌드 박스 할 가능성이 높습니다. 언어가 다양하고 지원하는 라이브러리를 긁어 모으기 때문에 코드가 완전히 감사되고 위생적으로 처리 될 수 있는지 확신하지 못합니다.

대부분의 사람들은 scraperwiki가 해커와 스패머가 자원을 오용하는 것을 어떻게 막을 지 생각합니다.그들은 그것에 대해 오히려 미안했습니다. 그들은 실행 된 코드의 모든 비트를 수동으로 감사했거나 해커/스패머가 아직 잡히지 않았습니다. 사이트는 특정 기능을 가지고 있기 때문에 데이터 활용도를 확인하여 의심스러운 활동을 확인합니다. ... 그러나 한 사람의 사이트 긁어 모으기는 다른 사람의 괴롭힘과 출입을 통한 괴롭힘입니다.

내 직감은 보안 감사 과정이 공개적으로 공개되지 않는다는 것입니다.

가상화를 사용하지 않고이 작업을 수행하는 가장 간단한 기계식 방법은 eval()의 변형을 사용하는 것입니다. 그러나 모든 언어가 그런 것은 아닙니다. 그러면 가상화 인 옵션 B가 나타납니다. 가상 컴퓨터를 연계하여이 효과를 얻는 방법을 설명 할 수있는 사람보다 나은 사람들이 낯선 사람이 리소스를 악용하는 데 적절하게주의해야합니다. 대신 필자는 PHP 경험을 공유 할 것입니다.

몇 년 전에 저는 (로컬 컴퓨터에서) 코드 실행을 수행하는 프로젝트를 만들었습니다. 입력 할 때 코드는 ajax를 통해 가져와 각 키 입력 후에 실행됩니다. 그 행동의 비디오는 다음과 같습니다 : http://www.youtube.com/watch?v=Yfxrt2pc3pg.

나중에 30 년과 3 개의 개선 프로토 타입을 만들었지 만, 나는 이것을 책임감있게 일반적인 리소스로 잠그는 방법을 여전히 확신 할 수 없습니다.

관련 문제