드릴은 스포츠에서 특정 움직임을 마스터하기 위해 사용됩니다. 농구에서 플레이어는 자유투, 3 점, 드리블을 뚫습니다. 프로그래밍에서 드릴은 특정 언어 기능, API 또는 관용구에서 기술을 개발하기 위해 의도적으로 연습 할 수있는 방법을 제공합니다.
스 크리 미지는 스포츠에서 드릴에 내장 된 기술을 통합하고 팀워크를 개발하기 위해 게임의 조건과 복잡성을 모방하기 위해 사용됩니다. 훈련은 Ruby Koans, Ruby Quiz와 같은보다 복잡한 스 크리 미지 관행을 보완하거나 오픈 소스 프로젝트 작업을 보완합니다. 우리는 일본식 표현을 사용해야했고, 훈련은 또한 '카타'의 단순한 선구자 인 'Kihon'으로 생각할 수 있습니다. 드릴은 전체 프로젝트의 복잡성이 부족합니다. 그들은 혼자 또는 친구들과 함께 공연 할 수 있습니다.
루비 훈련의 도전은 특정 방법에 중점을 둡니다. 답변은 일반적으로 한 줄로 구성됩니다. 귀하의 목표는 외부 문서에 상담하지 않고 쉽고 기쁨으로 드릴을 완성하는 것입니다. 처음에는 이런 종류의 연습이 쉽지 않거나 즐겁지 않을 것입니다. 코드 켜짐. 이러한 방법에 대한 지식이 자동화 될 때까지 며칠 동안 연습하십시오. 그렇게하면 언어의 구문보다 높은 수준의 고가의 복잡성에 집중할 수 있도록 마음을 자유롭게함으로써 매일 매일 프로그래밍을 더 즐겁게 할 수 있습니다.
$ gem install ruby_drills
$ ruby_drills
드릴은 명령 줄에서 실행됩니다. 대체를 사용하여 드릴로 질문에 답변합니다. 이 관행은 언어 기능이나 알고리즘을 시험해 보는 데 유용한 기술, TDD에 대한 훌륭한 보완 기술 인 Repl에서 개발할 수있는 이점이 있습니다.
메뉴에서 사용 가능한 드릴을 선택하여 시작하십시오. 배열 및 문자열 드릴은 현재 가장 많은 콘텐츠를 가지고 있으므로 그 중 하나부터 시작하십시오!
Enumerable#zip 메소드의 드릴 세션은 다음으로 구성 될 수 있습니다.
We have two arrays:
a: [4, 5, 6]
b: [7, 8, 9]
Use a method from the Enumerable mixin that will take one element from
a new array and merge the corresponding elements from a and b to yield
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]:
>> c = [1,2,3]
=> [1, 2, 3]
not yet...
>> c.zip(a, b)
=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
!!! WIN !!!
How does your answer compare to the reference solution?
[1,2,3].zip(@a, @b)
Press any key to continue:
루비 훈련에 대한 질문? 연습 방법에 대한 아이디어? Google 그룹으로 가십시오.
Ruby Drills와 상호 작용할 때 테스트 된 마인드가 호스팅하는 원격 드릴 컬렉터 API에 답변이 저장됩니다. 이 데이터에는 개인 식별 정보가 포함되어 있지 않습니다. 현재, 우리는 개별 사용자 프로파일이 아닌 전반적인 실습 패턴 및 통계에 관심이 있습니다. 활동 데이터는 다음과 같습니다.
{
"timestamp" : "May 5, 2013 12:03:51 AM CST",
"result" : "pass",
"input" : "@numbers.partition{|x | x.even? }",
"sessionId" : "2217-47e8-b80a-68b81c980c32",
"drill" : "PartitionDrill",
"type" : "attempt",
"reference" : "@numbers.partition {|x| x.even? }"
}
우리는 다음과 같은 질문에 관심이 있습니다.
이 데이터는 우리가 루비 훈련 경험을 발전시키는 데 도움이 될 것입니다. 이것은 또한보다 개인화 된 경험의 기초를 형성하여 진행 상황을 검토하고 연습 세션을 다른 사람과 비교할 수 있습니다. 수집 된 데이터를 분석하고 결과를 커뮤니티와 공유함에 따라 더 자세히 설명합니다.
궁극적으로 Ruby 및 기타 프로그래밍 언어의 드릴과 실습이보다 복잡한 프로그래밍 문제를 해결하는 데 도움이되는지 알고 싶습니다. 현재이 질문에 과학적 으로이 질문에 대답하는 데 도움이되는 연구자들이 이용할 수있는 데이터는 거의 없습니다. 바라건대, 루비 훈련에서 수집 된 데이터 가이 퍼즐 조각을 제공 할 수 있기를 바랍니다.
각 드릴은 네 가지 방법으로 구성됩니다.
setup : @hints 포함하여 드릴에 사용 된 인스턴스 변수를 초기화하여 사용자를 답으로 안내 할 수있는 힌트 배열입니다.
show : 드릴을 설명하는 문자열을 넣습니다.
reference : 문자열 양식의 유효한 루비 코드로 참조 솔루션을 제공하십시오. 이것은 사용자의 입력을 검증 해야하는지 확인하기 위해 평가됩니다.
valid?(input) : true 또는 false를 반환하는 유효성 검사 기능. 참조 솔루션과 일치하는 사용자의 입력이 다른 제약 조건을 충족하는지 확인했습니다.
새로운 훈련을 만들어 쉽게 참여할 수 있습니다. 할 일을 찾으려면 Github의 문제 목록을 확인하십시오.
Github를 처음 사용하는 경우 :
git checkout -b my-new-feature )git commit -am 'Add some feature' )git push origin my-new-feature )Ruby 훈련을 가능하게 해준 기고자들 과이 뛰어난 개인들에게 감사합니다.
Ruby Drills는 Apache 라이센스 버전 2.0에 따라 라이센스가 부여됩니다. 자세한 내용은 동봉 된 License.txt 및 CONER.TXT를 참조하십시오.