종이에 코드를 인쇄하는 것이 일반적입니까? [닫은]


36

다음과 같은 이유로 코드 줄을 80 자 미만으로 유지하고 싶습니다.

  • 가로 스크롤을 수행 할 필요가 없습니다.
  • 이 제한을 초과하면 해당 라인이 너무 복잡하다는 것을 알고 있습니다. 과
  • 종이에 잘 인쇄됩니다.

후자에 관해서는, 실제로 볼 코드를 인쇄하는 소수의 사람들 만 만났습니다 (나는 그들 중 하나입니다). 그렇다면 코드를 인쇄하는 것이 얼마나 일반적입니까?


1
질문은 왜 종이에 코드를 인쇄합니까?
— 아논.

14
코드를 인쇄하는 것이 얼마나 일반적인지 말할 수는 없지만 프린터가 오랫동안 잊혀진 유물 이 아니라면 한 줄에 80자를 초과하여 인쇄 할 수 있습니다. 가독성을 높이기 위해 80자를 사용했습니다. 역사적으로 많은 터미널의 너비가 프린터가 아닌 80 열에 불과했기 때문입니다.

12
@Mark 실제로 80자는 너비가 80자인 펀치 카드에 코드를 작성할 때 발생합니다. 그리고 처음 6 개는 제어 코드와 줄 번호를위한 것입니다. 이것이 FORTRAN 코드가 7 열에서 시작
— 해야하는

3
@Aaron-아마 프로그래머에게 좋을 것입니다.
— ChrisF

5
@Aaron-Programmers '는 우리의 직업을 둘러싼 더 주관적인 (그러나 여전히 건설적인) 질문을위한 것입니다.
— ChrisF

답변:


50

나는 여전히 매우 가끔 코드를 인쇄하지만, 특히 문제가있는 경우에만 가능합니다.

일반적으로 코드가 너무 복잡하고 리팩토링이 필요하다는 것을 나타내므로 처음으로 무언가를 낙서하면 문제를 찾아 수정하고 코드를 분할해야하는 위치를 해결하는 데 도움이됩니다.

이상적인 세계에서는 SOLID 및 DRY 원칙 당신이 해야 한 화면에 방법의 전체를 볼 수 있습니다. 그러나 우리는 이상적인 세상에서 일하지 않습니다 ...


4
"[인쇄 된 코드를 볼 필요가 있음] +1은 일반적으로 코드가 너무 복잡하고 리팩토링이 필요함을 나타냅니다 ..."
— Bill

또한 경쟁 조건을 이해하는 데 효과적이었습니다. 스택 트레이스를 인쇄하고 나란히 비교하고 메모 등을 할 수 있습니다.
— rperetti

4
@rperetti : 스택 추적과 같은 것을 인쇄하는 것은 코드를 인쇄하는 것과 매우 다릅니다. 그래도 창을 비교하지 마십시오. 창 (마이크로 타입이 아닌 유리 유형)을 찾으십시오. 두 개의 출력물을 서로 유리 위에 놓고 불일치가 두드러집니다. (분명히, 일광에서만.)
— Loren Pechtel

5
diff 도구와 비교하기가 쉽지 않습니까?
— Jeanne Pindar

14

물론이지. 그러나 가로로 인쇄 할 수있는 문자는 132 자입니다.

대체 텍스트

Uni에서는 코드를 녹색 막대 용지에 정기적으로 인쇄 했었습니다. 종이에서 코드를 볼 때 코드가 얼마나 깊고 복잡한 지 물리적으로 얼마나 잘 이해하고 있는지 놀랍습니다. 우리는 (최소한 오늘 현재) 초등학교 시절부터 페이지를 읽고 각 페이지가 얼마나 표현할 수 있는지에 정신적으로 각인되어 있습니다. 컴퓨터 코드에는 좋은 복잡성 은유를 넣습니다.

대체 텍스트


13

때때로 당신은 본질적으로 동시에 많은 것을 볼 필요가있는 어떤 코드 (보통 당신에게 새로운)를 면밀히 검토해야 할 수도 있습니다. 그러면 한 번에 전체 내용을 볼 수있는 인쇄물이 매우 중요합니다.

형광펜, 빨강 및 녹색 펜과 결합하면 개요를 얻는 데 실제로 도움이됩니다. 그런 다음 종이에 적어 둔 메모는 나중에 코드에 어떤 형태로 추가됩니다.

현대식 컬러 프린터를 사용하면 종이에도 구문 색상을 표시 할 수 있습니다. 그것은 정말 큰 도움이며 강력히 권장됩니다.

(또한 읽기 사양, 즉 여백에 메모를 넣는 사양도 인쇄합니다.)


8
+1 누군가 나에게 리팩터링을 엉망으로 만들면, 나는 보통 그것을 인쇄해서 좋은 햇볕이 잘 드는 장소에서 좋은 시간을 보냅니다.
— Sharpie

일반적으로 전체 모듈이 하나의 디스플레이 화면에 맞지 않으면 많은 재 작업이 필요할 것입니다. 이것은 20 년 전이 아닌 50 라인 VGA 모드를 사용할 수있게 된 이후 특히 사실입니다. 나는 이것을 전에 말했고 다시 말할 것입니다.이 미친 라켓에서 약 40 년 동안, 약 60 줄 (한 페이지 인쇄) 이상이어야하는 정확히 하나의 모듈을 보았습니다. . (나는 그것보다 더 긴 모듈의 많은 것을 보았고, 그들은 모두 "원하는 많은 것을 남겼다."(정중 한 문구.)
— John R. Strohm

@John, 왜 60 줄보다 길어야합니까?

@ user1249 : Matuszek-Reynolds-McGehearty-Cohen "STARTRK"( "Star Trek") 게임의 광자 어뢰 루틴이었습니다. FORTRAN IV로 작성되었습니다. 이 명령을 구문 분석했다 섭동에 하나 또는 (아마도 실화가 발생하면 중단) 세 개의 광자 어뢰의 비행 시뮬레이션, 및 torpedo'ed 때 노바가는 별의 8 방향 연결을 할 수있는 스택을 설정하거나 존재 스타가 노바에 인접 해 있고, 그 스타들에 인접한 클링 온을 죽이는 것. FORTRAN IV는 재귀를하지 않았으며, 그것을 악화시키지 않는 요인을 고려할 방법이 없었습니다.
— John R. Strohm

12

때로는 기차에서 읽고 메모하기 위해 인쇄합니다. 막히면 조용한 회의실의 탁자 위에 그것을 퍼 뜨리고 싶습니다. 그것이 정말로 도움이되는지 확실하지 않지만, 페이스의 좋은 변화입니다.

다른 하나 : 화면에 맞지 않는 다중 중첩 If / Then 문 인 오래된 코드를 발견했습니다. 그들은 그것을 쓴 전 프로그래머를 해고했을 것입니다. 그러나 나는 직장에서 나갔습니다.)


4
장면이 변경되면 +1 때때로 다른 맥락에서 무언가를 보는 것은 다르게 생각하게 만듭니다.
— Jon Hopkins

3
+1 컴퓨터 화면보다 큰 회의 테이블에 더 많은 페이지를 나란히 놓을 수 있습니다. 그리고 당신은 트위터 또는 이메일에 산만하지 않습니다
— Alex Jasmin

1
트위터 나 이메일에주의가 산만하다면 잘못하고있는 것입니다. 트위터뿐만 아니라 이메일이나 다른 여러 메신저는 비동기식입니다. 최대한 빨리 회신 할 필요가 없습니다.
— mhr

8

코드를 동료 검토 하기 위해 코드 만 인쇄 합니다. 오프라인에서 리뷰를하는 것이 모든 혼란 스럽지만 (때로는 도움이되는) IDE를 가진 컴퓨터에서하는 것보다 더 효율적이라고 생각합니다.

합리적으로 넓은 모니터가 하나 (또는 ​​둘 이상) 인 경우 전체 화면 모드에서 두 개의 소스 파일을 세로로 쉽게 열 수 있으며 너무 제한적인 선 너비 규정을 준수하지 않아도됩니다.

그리고 경우에 따라 전체 줄 내용 (즉, 디버그 메시지 등을 인쇄하는 줄)을 볼 필요가 없으므로 줄이 오른쪽에서 잘리는 지 중요하지 않습니다.

그러나 귀하의 질문에 대답하기 위해 : 제 생각에는 종이에 코드를 인쇄하는 것이 더 이상 일반적 이지 않습니다 .


8

글쎄, 나는 종이에 코드를 자주 인쇄하지 않지만 하루 종일 코드를 인쇄하는 데 사용되었습니다.

요즘 일반적인 이유는 조용히 어딘가에 앉아서 코드를 주니어에게 설명하거나 긴 방법이 실제로 버그가 있고 펜과 종이 작업을 통해 일부를 필요로하는 것입니다. 화면이 항상 충분하지는 않습니다. 특히 메모를 원하고 모든 곳을 강조 표시 할 때 특히 좋습니다.

긴급 상황에서는 SSH를 통해 버그를 빠르게 수정하고 넓은 터미널을 사용하지 않기 때문에 거의 항상 80 자로 제한합니다. 또한 가로 스크롤은 악마입니다.


5
+1 "가로 스크롤은 악마입니다". 지난주에 누군가에게 똑같은 것을 말하고있었습니다.
— morganpdx

8

고등학교에 다니는 10 대 시절 (21 세) 집에 인터넷이 없었습니다. 그래서 자주 코드 샘플과 다양한 API 문서를 인쇄하여 집으로 가져갈 것입니다.

참고 : 이미 필요한 정보가 있다면 인터넷에 연결하지 않고도 더 많은 일을 할 수 있다는 것은 놀라운 일입니다.


6

소스 코드를 인쇄하지 않았습니다. 나는 그렇게 할 필요가 없었습니다. 컴퓨터 화면 밖에서 본 유일한 소스 코드는 책이었습니다.

프린터를 다른 용도로 사용했습니다.

대체 텍스트


1
이제 나는
— 늙었다

이 소프트웨어 이후에 태어난 사람으로서, 그것은 재미있었습니다.
— Naltroc

5

두 모니터가 모두 채워 져서 지속적으로 무언가를 참조해야 할 때 코드를 인쇄합니다. 책상 위의 종이는 빈약 한 추가 모니터입니다.


그런 다음 모니터 # 3에 넣으십시오!
— Loren Pechtel

4

그렇다면 코드를 인쇄하는 것이 얼마나 일반적입니까?

수년 전 DOS 프로그래밍 당시에는 일반적으로 80자가 문자로 인쇄 된 페이지를 채우고있었습니다. 우리는 매트릭스 프린터를 가지고 있었기 때문에 하드웨어 측면에 한계가 있었을 것입니다. 또한 콘솔 화면의 한계였습니다.

요즘 사람들은 코드를 거의 인쇄하지 않지만 면접을위한 테스트 예제로 인쇄 된 작은 코드 조각 만 예외입니다.

요즘 사람들은 대부분 대형 모니터, Full HD 등으로 작업합니다. 나는 일반적으로 인쇄 부작용을 생각하지 않고 150-200 자로 늘립니다.

팀에서 논의 할 때가되면 누군가는 보통 랩톱을 잡고 프로젝터에 연결합니다. 다시, 아무도 코드를 인쇄하지 않습니다.

지난 번에 약 8 년 전에 대학 졸업장을 위해 코드를 인쇄했을 때 아무도 읽지 않을 것이라고 확신합니다. 그 이후로는 결코 필요하지 않았습니다.


웹 페이지 이외의 코드를 인쇄 한 이래로 오랜 세월이 지났습니다. 그래도 줄 길이에 동의하지 않습니다. 비록 많은 것을 얻을 수는 있지만 따르기가 어렵습니다. 나는 거의 100자를
— 넘지

@Loren Pechtel : 방법과 변수에 대한 설명이 긴 이름을 좋아합니다. 전체 문자 수가 80 자에 불과하므로 작고 올바른 형식을 유지하기 위해 고심하고 있습니다. 물론 제 경우입니다.

crt 콘솔에서 DOS 프로그래밍을 했습니까? 우리는 펀치 카드를 가지고있었습니다. 80 자 제한은 펀치 카드의 결과입니다. 한 번에 3 ~ 4 페이지가 넘는 코드를 공부할 수 있으면 매우 편리합니다. 나는 그것이 여전히 인쇄물을 선호하는 이유라고 생각합니다. 관련 기능을 쉽게 탐색 할 수 있습니다.
— Huperniketes

나는 긴 이름도 좋아합니다. 그래서 가끔은 100 자로 넘어갑니다.
— Loren Pechtel

4

인쇄 코드는 특별한 이유를 제외하고 1975 년에서 1982 년 사이에 더 이상 사용되지 않습니다.

  • 통근 도중에 읽는 코드
  • 이를 대체 할 새 프로젝트의 사양에 들어가는 오래된 코드
  • 명백한 오류를 다루기 위해; 동료보다 종이를 쌓아서 모니터보다 더 안전합니다

1
Pummeling이 과소 평가되었습니다.
— Keith Layne

3

우리의 지적 재산권 변호사는 저작권 신고를 위해 "하드 카피"를 요구합니다.

그들이 실제로 종이에 인쇄하는지 모르겠습니다. 본인이 인쇄하거나 저작권 신고에 포함 할 수있는 PDF를 보냅니다.


3

더 이상은 아닙니다. 연속 피드를 사용하는 도트 매트릭스가 표준이었던 과거 IDE 이전에 항상 사용했습니다. 출력물을 펼치고 아주 쉽게 넘길 수 있습니다. 현대식 급지 레이저 / 잉크젯 프린터는 거꾸로 거슬러 올라갑니다. 스테이플 링도 함께 흐르지 않으며 스테이플 링하지 않으면 용지가 헐거워집니다. 자동 강조 표시 및 분석법 탐색기가 포함 된 최신 IDE는 또한 인쇄물을 검사하여 발생한 모든 종류의 오류를 제거합니다.


2

작은 (15 ") 단일 모니터를 사용하여 코드를 인쇄하는 경우가 있습니다. 때로는 두 개의 프로그램을 결합해야하기 때문에 프로그램 간을 전환하기가 매우 어렵습니다. 필요한 경우에만이 작업을 자주 수행하지는 않습니다. .


듀얼 모니터! ;)
— Pemdas

@Pemdas 내가 원하는, lol.
— sange

책상 공간이 부족하여 집에서 15 인치를 사용합니다.
— Orbling

2

코드를 종이에 매우 가끔씩 인쇄하고 심각한 오프라인 디버깅을 원하거나 다른 사람의 코드에 익숙해지기를 원할 때만-예의를 지키지 않는 것이 좋습니다.

또한 코드보다 종이에 데이터베이스 스키마를 인쇄하는 것이 더 적합 할 것입니다.

가로 스크롤 문제는 더 큰 성가심이며 120 자 이하로 유지 해야하는 이유라고 생각합니다.


실제로 80 문자는 여전히 가로 스크롤 문제에 대한 좋은 마커입니다. 개발자는 종종 두 개의 소스 창을 가지고 있으며 1680 해상도에서도 두 개의 창이 나란히있을 때 스크롤해야하기 전에 107 문자 만 얻을 수 있습니다. 또한 코드가 올바른 마진으로 완전히 이동하지 않는 것이 좋습니다.
— Craige

1
@Craige 종류는 글꼴 크기와 DPI뿐만 아니라 화면의 양쪽에있는 정크의 양 (IDE에있는 경우)에 따라 다릅니다. 이런 이유로 SSH를 통해 코딩 할 때 표준 그놈 터미널 대신 XTerm을 사용하기 시작했습니다. 글꼴을 바꿀 수 없었습니다.
— 피터 터너

@Petur Turner-사실이지만 Eclipse에 코딩해야 할 때 낭비되는 공간을 최소화하는 방식으로 설정되어 있습니다. 편집자의 왼쪽과 오른쪽에 낭비되는 공간이 거의 없습니다. 글꼴 크기도 꽤 표준입니다. 포인트 인-80 문자는 가장 다양한 조건에서 소스를 읽을 수 있도록 좋은 대상 길이입니다.
— Craige

2

과학 기사와 함께 제공되는 코드 만 인쇄합니다. 이 코드는 종종 알고리즘 구현 (복잡한 알고리즘)을 제공하기 때문에 처리하는 데 몇 시간이 필요합니다.
SQL 문 또는 일부 GUI 프로그래밍이 포함 된 코드를 인쇄하지 않을 것입니다.



2

거의 없다

코드를 인쇄했거나 코드가 인쇄 된 것을 본 순간을 기억하기가 정말 어렵다고 생각했습니다. 그리고 나는 한 번도 (의사 코드를 제외하고) 기억하지 않는다고 정직하게 말할 수 있습니다.

코드를 인쇄 할 정당한 이유가 없다고 제안하지는 않습니다.


2

큰 모듈을 인쇄하고 다양한 섹션을 빠르게 볼 수 있다면 큰 모듈을 알아내는 것이 더 쉽다는 것을 알게되었습니다. 여러 대의 모니터로 비슷한 작업을 수행 할 수는 있지만 코드에 2-3 개 이상의 장소가있는 경우 스크롤을 유지하고 책갈피를 추적하는 것보다 한곳으로 확산시키는 것이 더 빠릅니다. 또한 이전 코드와 새 코드를 나란히 볼 수 있으므로 편집기에서 변경하지 않고 변경 사항으로 인쇄물을 마크 업하고 싶습니다. 물론 편집기에서 이전 코드를 주석 처리 할 수는 있지만 몇 줄 이상을 바꾸면 이전 코드를 모니터에서 스크롤하여 더 이상 나아지지 않습니다.

즉, 더 이상 코드를 인쇄하지 않습니다. 전체 목록이 연속적이고 여백에 메모를위한 충분한 공간이있는 팬 폴드 용지에는 좋았지 만 개별 문자 크기 페이지에 모든 것을 인쇄하는 것은 화면에 표시하는 것만큼이나 나빴습니다. 특히 편집기가 1 "여백에 머리글과 바닥 글을 넣을 것을 고집 할 때 다행히도 최신 IDE는 인쇄 할 필요성을 줄여주는 많은 도구를 제공합니다.


1

나는 나 자신을 위해 아무것도 인쇄하지 않으며, 그것을 벗어날 수 없을 때만 다른 사람들을 위해 인쇄합니다. 나도 인쇄물을받는 것이 싫어. 그들은 내 책상을 어지럽 힌 다음 책임을진다 (저장? 파일? 파쇄? 스크랩으로 사용?)

수십 년 동안 메인 프레임 코딩을 해왔으며 그 옆에 매우 높은 코드 출력물이있는 사람 근처에서 일하고 있습니다.

당신을 위해 작동하는 것을 생각합니다. 그냥 떠나지 말아요 당신 에 출력물을 내 책상, 감사합니다.


1

위의 답변과 약간 다른 답변.

저는 학생이며 다양한 교과 과정을위한 코드를 인쇄하고 있지만 코드를 작성해야하는 모든 단위에 대해 코드를 인쇄하지는 않습니다.

내 첫 해에 대부분의 부대는 전자 업로드 또는 CD로 복사 한 사본 외에 하드 카피가 필요했습니다 (예, 5Mb zip 파일 용 CD ...) [강사 선택]

나는 현재 2 년째이며 지금까지 전자 업로드 하나와 하드 카피 + CD를 가지고 있습니다.

우리가 코스워크를 전자적으로 제출할 수있는 Moodle을 고려할 때 항상 코드를 업로드하지 않는 이유는 무엇입니까? 우리는 University Printers에서 물건을 인쇄하기 위해 비용을 지불해야하며 PC에 하나의 CD 버너가 없습니다. 내가 아는 물론 강사들은 무들을 좋아하지 않습니다 – 그러나 그것은 또 다른 질문입니다.

BTW, 저는 영국 대학생이며 작고 알려지지 않은 학생이 아닙니다. 내가 마지막으로 보았을 때 The Times / Guardian에 따르면 Mine은 Uni의 10 위 안에있었습니다.


서면 보고서가 필요한 유니에서 내가 한 프로젝트를 떠올리게합니다. 강사는 보고서를 읽는 동안 코드를보고 싶었 기 때문에 10 페이지 내에 있어야하고 코드를 부록으로 첨부해야했습니다. 다행히도 부록은 총 페이지 수에 포함되지 않았습니다. 강사는 90 페이지의 PDF 파일을 전달했습니다. 그가 실제로 문서를 인쇄했는지 모릅니다. ^^
— gablin

1

새로운 도구는 나를 더 잘 지원하고 빠르게 탐색 할 수있게 해주 며 여러 유형의 요약 및보기를 제공합니다. 따라서 전처럼 자주 인쇄하지 않습니다. 그러나 인쇄물을 순차적으로 읽는 것이 더 쉽습니다. 나의 개인적인 주요 인쇄 이유는 심리적입니다 : 그것은 계속 검색하지 못하게하고 프린터가 인쇄하는 동안 나는 생각하기 시작합니다! 또한 서서 프린터로 걸어가는 유익한 효과를 과소 평가해서는 안됩니다 :)


0

코드를 인쇄하여 나란히 비교할 수 있습니다 (회사의 모니터는 와이드 스크린이 아닙니다). 집에는 와이드 스크린이있어 두 문서를 나란히 편안하게 볼 수 있습니다.


0

미국 법에 의해 강력한 암호화의 수출이 허용되지 않았던 시절에, 미국에 기반을 둔 오픈 소스 개발자들은 코드를 인쇄하고 미국 이외의 지역에서 코드를 달팽이 메일로 보내어 사람들이 스캔했습니다. 그러나 이것이 귀하의 질문에 대답하는지 확실하지 않습니다.)


0

가끔 시도하고 알아 내기 위해 털이 많은 코드를 인쇄합니다. 또한 "이상한"무언가를 디버깅 할 때 디스 어셈블리를 인쇄했습니다.


0

마지막 작업에서 코드 검토를 위해 코드를 인쇄했습니다. 코드 검토를 수행 할 때 약간의 코드를 강조 표시 / 표시 할 수 있으므로 검토 중에 제기 된 모든 문제에 대한 참조가 좋습니다.

또한, 특히 울퉁불퉁하고 꼬인 코드 비트를 리팩터링 (다시 쓰기로 끝내야 함)했을 때 실제로 소스 코드를 인쇄하고 출력물을 벽에 테이핑 한 다음 문자열을 사용하여 논리는 함께 짜여졌습니다.


0

요즘은 절대 특히 어려운 코드를 참조해야하는 경우 여러 모니터를 지원합니다. 현대 하드 드라이브는 심지어 수천 줄 길이의 코드를 저장하면서 깜박이지 않을 것입니다. 인쇄 코드 IMHO 는 낭비적이고 일반적으로 쓸모가 없지만 그저 나뿐입니다.

즉, 개발 / 프로그램을 처음 배우면서 20 페이지의 코드를 인쇄하는 것은 아무것도 생각하지 않았으므로 시간과 장소가 있다고 생각하지만 요즘에는 그다지 쓸모가 없다고 생각합니다.


0

항상 코드를 인쇄하지만 강사에게 제출하기 위해 코드를 작성해야하는 학생이기 때문입니다.

그러나 여러 개발자 ( 좋은 개발자와 같은)에 액세스 할 수 있기 때문에 참조를 위해 소스 코드를 인쇄 해야하는 상황이 많지 않았습니다. 스키마를 한눈에 볼 수 있도록 데이터베이스를 채우는 데 사용한 스크립트 중 하나를 인쇄했지만 많이 사용하지 않는 것 같습니다.


0

코드를 자주 인쇄하는 데 사용되었지만 책상에 여러 대의 모니터가 설치되었으므로 이제는 더 적습니다. 오른쪽 모니터에서 참조로 사용하는 목록 중 일부를 유지하는 경우가 있습니다 ( 측면), 그리고 내 현재의 현재 작업.

ode를 인쇄하면 거의 항상 누군가 또는 내가 공부하고 싶은 다른 곳 (라이브러리)의 코드이며 페이지를 앞뒤로 뒤집어 야합니다.

긴 줄을 사용하는 경향 때문에 거의 항상 가로 모드에서 코드를 인쇄합니다.


0

지난 10 년 동안 코드 인쇄 만 기억하기 때문에 형광펜을 사용하여 코드 굴절 방법을 계획하기 전에 공통점이있는 부분을 표시 할 수 있습니다.

그러나 바닥에 코드를 배치하면 색상이 밝은 형광펜 및 포스트잇 메모와 함께 좋은 개요를 제공 할 수 있기 때문에 넓은 연속 용지에 인쇄 할 수없는 경우가 종종 있습니다. A4로 인쇄 된 호출기는 합리적인 모니터가 제공하는 것보다 낫지 않습니다.

모니터는 코드가 나빠질 때보 다 프린터가 훨씬 더 좋아지고 커졌습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.