스피커 | 성적 증명서 |
| 웨인 레빈 | 지속적인 개선을 위해 JSL 애플리케이션의 Hamcrest 자동 테스트 확장에 관한 세션에 오신 것을 환영합니다. |
| 여기서 우리가 여러분께 보여드릴 약속은 여러분도 생산적이고 비용 효율적인 환경을 구축할 수 있는 방법을 보여 드리는 것입니다. |
| 높은 품질 보증, 높은 신뢰성과 지원이 가능한 JMP 기반 미션 크리티컬 통합 분석 시스템입니다. 응, 할 말은 많지만 그게 다야 |
| 이것이 바로 우리가 이 환경에서 하고 있는 일입니다. 우리는 그것에 매우 만족합니다. 여러분과 공유할 수 있게 되어 정말 영광입니다. |
| 그래서 여기에 우리가 따를 의제가 있습니다. 제 소개는 잠시 후에 하겠습니다. 그리고 Predictum에 대해서도 조금 말씀드리겠습니다. 왜냐하면 여러분은 우리에 대해 너무 많이 알지 못할 수도 있기 때문입니다. |
| 우리의 배경, JSL 개발의 배경, 인프라, 이와 관련된 약간의 역사. |
| 그리고 우리가 시행해 온 변화의 결과를 여러분과 공유하려고 합니다. 그런 다음 시연을 하고 다음 단계와 향후 계획에 대해 이야기한 다음 마지막으로 질문이 있으신 경우 공개하겠습니다. |
| 저는 웨인 레빈입니다. 여기 오른쪽이 저입니다. 저는 Predictum의 회장이고 여기에 합류했습니다 |
| 빈스 폴러와 함께. Vince는 이 매우 중요한 계획을 주도해 온 수석 소프트웨어 엔지니어입니다. 그럼 바로 우리에 대해 조금 말씀드리겠습니다. 우리는 JMP 파트너입니다. |
| 1992년에 데뷔했으니 올해로 29살이군요. |
| 우리는 JMP를 사용하여 통계 방법 등에 대한 교육을 하고 해당 분야에 대한 컨설팅을 하며 구축과 구축에 엄청난 시간을 소비합니다. |
| 통합 분석 애플리케이션과 시스템을 배포하는 것, 따라서 이러한 노력이 우리에게 매우 중요한 이유입니다. 우리는 처음으로 JMP 애플리케이션을 제공했습니다. |
| 2000년에 JMP 4.0이 출시된 지 벌써 20년이 넘었고 우리는 더 큰 시스템을 구축해 왔습니다. 물론 그 이후로는 너무 작은 도구였지만 JMP 8이나 9를 중심으로 더 큰 시스템을 구축하기 시작한 것 같습니다. |
| 그래서 우리는 이것에 대해 꽤 많은 역사를 가지고 있습니다. 쉽게 10년이 넘었습니다. 그럼 약간의 배경지식을 말씀드리자면... 2019년 하반기까지 우리의 개발 환경은 정말 이질적이었고 단편적이었습니다. |
| 프로젝트 관리 |
| 거기에 있었지만 다시 모든 것이 깨졌습니다. 우리는 버전 제어와 시간 관리(개발자 시간 등)를 위해 다양한 애플리케이션을 사용했으며 일반적으로 프로젝트 관리만 했습니다. |
| 개발자들은 쉽게 돈을 쓰고 있었고 이에 대해 이야기해 보겠습니다. |
| 약 절반의 시간은 JMP 추가 기능 암호화 및 패키징과 같은 일상적인 기계 작업에만 사용됩니다. 아시다시피 구성 패키지를 유지 관리하고 |
| 암호화된 스크립트와 암호화되지 않은 스크립트에 대해 저장소 또는 일반적으로 저장소라고 부르는 것을 분리합니다. 그것은...실제로 개발 작업이 아니라는 점에 대해 생각해야 할 것이 많았습니다. 정말 일이었어 |
| 개발자 재능이...낭비됐어요. 또한 제가 말했듯이 우리는 오랫동안 이 일을 해왔습니다. 2019년에도 쉽게 10년이 걸렸습니다. 따라서 10년이 넘는 레거시 프레임워크가 JMP 5까지 거슬러 올라갑니다. 알다시피, 점점 더 부풀어 오르고 느려졌습니다. |
| 그리고 우리는 JMP가 수년에 걸쳐 큰 발전을 이루었다는 것을 알고 있습니다. JMP 9에서는 네임스페이스가 있었고 JMP 14에서는 클래스가 도입되었습니다. 바로 그때 Hamcrest가 있습니다. |
| 시작했다. 그리고 우리가 이 중요한 이니셔티브를 통해 이 일을 할 수 있게 해준 것은 바로 Hamcrest였습니다. 그래서 우리는 2019년 8월에 이 주요 계획을 시작했습니다. |
| 그리고 그때 우리는 첫 번째 Gitlab 라이센스를 얻었고 새로운 개발 아키텍처가 개발되었습니다. 새로운 개발 아키텍처가 구체화되기 시작했고 그 이후로 계속 개선되고 있습니다. |
| 기본적으로 매달 우리는 앞으로 점점 더 생산성을 높이기 위해 역량을 추가하고 구축해 왔습니다. |
| 그리고 그것은 계속되고 있으므로 우리는 실제로 이것을 린(Lean) 유형의 노력으로 간주합니다. 이는 실제로 Lean 원칙을 따르며 우리의 개발을 가속화합니다. |
| 이 시스템 덕분에 테스트가 자동화되었으며 Vince가 이를 보여줄 예정입니다. 여기에 작은 모델이 있습니다. 일찍 테스트하고 자주 테스트하세요. |
| 그리고 그것이 우리가 하는 일입니다. 코드 재사용을 지원하며 Predictum 시스템 프레임워크를 재개발했습니다. 이제 2.0이 되었습니다. 우리는 이전의 노력을 통해 많은 것을 배웠습니다. 모든 것이 사라졌습니다. 거의 모든 것이 사라졌으며 교체되고 확장되었습니다. |
| 그리고 Vince가 이에 대해 더 자세히 알려줄 것입니다. 쉽고 간단하게 생산성이 50% 이상 향상되었으며 개발자들이 훨씬 더 행복해졌습니다. 그들은 덜 좌절감을 느낍니다. |
| 그들은 자신의 작업, 즉 지루한 일이 아니라 개발자가 해야 할 실제 작업에 더 집중합니다. |
| 아직 개선의 여지가 있습니다. 아직 끝나지 않았으며 Vince가 이에 대해 더 자세히 알려드릴 것입니다. |
| 우리는 이제 개발 표준을 갖고 있으므로 기능에 대한 스타일 가이드를 갖고 있으며 모든 개발은 기능 기반으로 이루어지고 있다고 말할 수 있습니다. |
| 각 기능에는 최소한 하나의 Hamcrest 테스트가 필요하며 개발자가 서로 공유하는 코드 리뷰가 있습니다. |
| 우리가 우리의 표준을 따르고 있는지 확인하기 위해서입니다. 그리고 이러한 표준을 어떻게 강화하고 더 좋게 만들 수 있는지에 대한 의문이 제기됩니다. |
| 우리는 또한 개발자들이 코드를 깨뜨리도록 장려하는 일종의 재미있는 세션을 갖고 있습니다. |
| 그렇죠, 그래서 그들은 이러한 브레이크 코드 챌린지, 또는 여러분이 무엇을 가지고 있는지와 같이 부릅니다. 따라서 이는 우리 작업 방식의 일부가 되었으며 모든 것이 이 개발 환경에 딱 들어맞습니다. 예를 들어 추가 테스트, 추가 Hamcrest 테스트가 추가됩니다. 우리는 하나의 작고 아주 작은 프로젝트를 가지고 있습니다. |
| 우리가 불과 1년 전에 했던 일이죠. 우리는 새로운 단계로 진입하고 있습니다. 잘 끝났어... |
| 100개가 넘는 Hamcrest 테스트가 내장되어 있으며 개발 프로세스를 통해 계속해서 계속해서 실행됩니다. |
| 따라서 다른 이점은 개발자가 무엇을 하고 있는지와 같이 리소스 할당을 할당하고 추적할 수 있다는 것입니다. 다른 사람이 무엇을 하는지는 모두가 알고 있지만, |
| 지속적인 통합, 지속적인 배포 등), |
| 거기...코드 충돌이 조기에 감지됩니다. 만약 우리가 그렇게 한다면... 그리고 우리가 그렇게 한다면, 몇몇 프로젝트에 여러 사람이 작업하고 있기 때문에, 누군가가 여기에서 기능을 변경하고 있고 그것이 다른 누군가의 기능과 충돌하게 될 것입니다. 하고있다. 우리는 훨씬 더 빨리 알아낼 것입니다. |
| 또한 이를 통해 여러 직원에 대한 지원 가능성을 향상할 수 있습니다. 특정 개발자에게 의존적인 코드를 가질 수는 없습니다. 모든 개발자나 지원 직원이 지원할 수 있는 코드가 있어야 합니다. |
| 앞으로 나아갑니다. 이것이 우리의 중요한 목표이기도 했습니다. 그리고 이는 전체 품질 보증 영역을 전반적으로 발전시킵니다. |
| FDA 요구 사항 지원, QA 관련, 검증, IQ OQ PQ 등을 포함합니다. 그래서...우리는 자동화하거나 반자동화하고 있습니다. |
| 이러한 작업도 이 인프라를 통해 가능합니다. 우리는 이를 내부적으로나 외부적으로 사용하므로 여러분도 알 수 있습니다. |
| 어떤 제품은 있는데, (???)고베새시연구소인데 신품은 스팸이 잘 되네요. 고베는 스팸을 보냅니다(???) 다른 곳에서도 얘기가 나오네요. |
| 2021년 JMP Discovery 유럽 컨퍼런스에서 가서 확인해 보고 싶을 수도 있지만 상당히 큽니다. |
| 코드 기반이 모두 개발되어 있습니다. 즉, 해당 표현을 알고 계시다면 우리는 개밥을 먹지만 모든 클라이언트에게도 사용합니다. |
| 개발은 고객에게 중요한 것이므로 고객이 의존하게 될 애플리케이션을 구축하고 있기 때문입니다. |
| 그래서 우리는...우리가 신뢰할 수 있는 인프라를 갖추어야 하며 어쨌든 그것이 이 일의 큰 부분입니다. |
| Predictum 시스템 프레임워크에 대해 언급했습니다. 여기에서 그 일부를 볼 수 있습니다. 이는 스크립팅 인덱스 내에 있으며 인수와 |
| 예와 그 모든 것. 우리는 모든 것을 구축했으며 95%, 그 중 95% 이상이 Hamcrest 테스트와 관련되어 있습니다. 물론, 우리의 목표는 그들 모두가 그렇게 하도록 하는 것이며 우리는 거기에 도달하고 있습니다. |
| 우리는 거기에 도착하고 있습니다. 가지고...이 프레임워크...이 프레임워크는 실제로 여기 인프라의 일부입니다. 그것은 그것의 중요한 요소 중 하나입니다. 또 하나는...햄크레스트... |
| 단위 테스트를 수행하는 능력. 그리고...마지막에는 Hamcrest에 대해 자세히 알아볼 수 있는 커뮤니티 링크를 제공하는 슬라이드가 있습니다. 이것은 |
| 몇 분 전에 언급했듯이 JMP 14에서 JMP를 통해 우리에게 가져온 개발입니다. Gitlab은 이것의 큰 부분을 차지합니다. 이는 프로젝트 관리 저장소, CI/CD 파이프라인 등을 제공합니다. |
| 그리고 우리가 만든 JSL용 비주얼...비주얼 스튜디오 코드 확장도 있습니다. 거기에는 별 다섯 개가 표시됩니다. |
| 비주얼 스튜디오에서 우리가 그것을 무엇이라고 부르는지 잘 모르겠습니다. 빈스, 우리 가게에 뭘 갖고 있는지 말해줄 수 있겠니? 수백 번 다운로드되었으며 우리는 |
| 정기적으로 업데이트하세요. 그래서 그것은 당신이 가서 찾을 수도 있는 것입니다. 마지막에 있는 리소스 슬라이드에도 이에 대한 링크가 있을 것 같습니다. |
| 이제 제가 할 일은 이것을 Vince Faller에게 전달하는 것입니다. Vince는 다시 우리의 수석 소프트웨어 엔지니어입니다. 내가 말했듯이 Vince는 2019년 8월부터 이 계획을 주도했습니다. 정말 수고가 많았고, |
| 힘든 일은 계속됩니다. 회사 내 우리 모두는 Vince와 그의 리더십에 대해 매우 감사하고 있습니다. 그럼 빈스, 여기서 가져가는 게 어때요? 난... |
| 나는... |
| 빈스 폴러 | 나누는. |
| 그래서 Wayne은 Hamcrest를 여러 번 말했습니다. Hamcrest가 무엇인지 모르는 사람들을 위해 다음에서 만든 추가 기능입니다. |
| JMP. |
| Justin Chilton과 Evan McCorkle이 이를 주도했습니다. 이는 자동화된 방식으로 실행, 테스트 및 결과를 얻을 수 있는 단위 테스트 라이브러리일 뿐입니다. |
| 우리가 이것을 할 수 있게 된 것은 실제로 공을 굴리기 시작했기 때문에 확장이라고 불리는 이유입니다. |
| 이것저것 보여드릴께요 |
| 내 화면으로. 저는 우리가 구축한 VSCode 확장에서만 거의 독점적으로 작업합니다. VSCode 입니다. |
| 통합, 연구실 통합 등 작성할 필요가 없는 내장 기능이나 확장 가능한 기능이 많이 포함되어 있기 때문에 이렇게 합니다. |
| 여기에서 이것이 JSL 스크립트이고 잘 읽히는 것을 볼 수 있습니다. |
| 당신이 그것을 얻고 싶다면, 만약 당신이 VSCode에 익숙하다면, 그것은 단지 가벼운 텍스트 편집기일 뿐입니다. JMP를 입력하면 됩니다. |
| 그리고 당신은 그것을 보게 될 것입니다. 그것은 유일한 것입니다. |
| 하지만 우리는 우리가 하고 있는 일을 할 것입니다. |
| 그래서. |
| 코드를 변경하는 경우 |
| 파이프라인 실행이 있습니다. |
| 우리는 그것이 무엇을 하는지 보여드리겠습니다. 따라서 README 파일을 Discovery의 데모로 변경하면 됩니다. |
| 2021. |
| 그리고 나는 그것을 저지르려고 합니다. 당신이 모르는 경우, 그냥 커밋 |
| 현재 우리가 정확히 어디에 있는지에 대한 스냅샷을 원한다고 말한 다음 이를 저장소에 푸시하면 서버에 저장됩니다. |
| 행복한 날. |
| 메시지를 커밋합니다. 더 많은 읽어보기 정보. |
| 그리고 VSCode가 훌륭하기 때문에 푸시를 받을 수도 있습니다. |
| 파이프라인 데모. |
| 그래서 지금은 밀어붙였습니다. 파이프라인이 실행될 예정입니다. 여기로 가서 이것을 클릭하면 병합 요청이 표시됩니다. 그래서 지금 |
| 파이프라인이 실행되기 시작했습니다. |
| 파이프라인의 상태를 확인할 수 있습니다. |
| 지금 하고 있는 일은 필요한 Hamcrest 파일이 있는지 확인하는 것입니다. 우리는 몇 가지 요구 사항이 있습니다. |
| 우리는 그렇게 할 수 있도록 시행합니다 ... |
| 우리는 우리가 확신할 수 있습니다 |
| 우리 일을 잘하고 있어요. |
| 그러면 끝났습니다. 암호화를 누르겠습니다. |
| 이제 encrypt는 전체 패키지를 가져와서 암호화합니다. |
| 여기로 가면, |
| 이것은 단지 VM 어딘가에 있을 뿐입니다. 그래야 한다 |
| 달리기 시작하다 |
| 잠시 후. |
| 그래서 모든 코드를 살펴보는 것뿐입니다. |
| 암호화된 비밀번호를 모두 작성하고, 진행하고, 모든 것을 클릭합니다. 동시에 여러 스크립트를 암호화하려고 시도한 적이 있다면, |
| 아마 그게 고통스럽다는 걸 아실 겁니다. 그래서 우리는 이 작업을 수행할 필요가 없도록 자동화했습니다. 웨인이 말했듯이 이 작업을 수행하는 데 많은 시간이 걸리기 때문입니다. |
| 예를 들어, 우리가 릴리스를 원할 때마다 검토하고 모든 스크립트를 암호화해야 하는 100개의 스크립트가 있다면 그것은 끔찍했습니다. |
| 왜냐하면 우리는 우리의 것을 가져야 하기 때문입니다. |
| 코드가 암호화되었습니다. 예, 죄송합니다. 의견이 있기 때문에 공유를 중단할 수 있습니다. |
| 아. |
| 그러면 실행될 것입니다. |
| 곧 끝날 거예요. |
| 그런 다음 단계를 거치고 준비 작업은 기본적으로 문서에서와 같이 우리가 원하는 모든 정보 소스를 가져옵니다. |
| 우리가 작성한 다른 모든 항목은 추가 기능에서 우리가 원하는 형식으로 렌더링됩니다. 나머지 github, gitlab과 마찬가지로 대부분의 문서는 마크다운으로 작성된 다음 무엇이든 렌더링하기 때문입니다. |
| 나머지 부분은 보여줄 필요가 없지만 그렇습니다. 그래서 지나가고 있습니다. 갈 것입니다. |
| VSCode로 돌아가겠습니다. |
| 그래서. |
| 변경한다면 이는 단지 단일 기능일 뿐입니다. |
| 만약 내가 여기에 들어가면, 만약 내가 이것을 실행한다면... |
| JSL, 현재 선택을 실행합니다. |
| 그래서. |
| 다시 돌아온 것을 볼 수 있습니다. Big Class를 열고, 적합선을 실행하고, 방정식을 얻으려는 작업이 전부입니다. 방정식이 반환됩니다. |
| 그리고 실제로 여기에서도 실행되는 것을 볼 수 있습니다. |
| 하지만. |
| 따라서 이것은 더 많은 문서를 사용할 수 있습니다. |
| 그리고 우리는 실제로 이 데이터 테이블이 열려 있는 것을 원하지 않습니다. |
| 하지만 이것을 아주 빨리 실행해 봅시다. |
| 그리고 말하길, |
| 아니요. 이것은 좋은 수익이 아니며 방정식을 모두 대문자로 바꾸는 것 같습니다. |
| 그래서 내가 그것을 무대에 올리면. |
| 더 나은 문서화. |
| 푸시. |
| 다시 여기로 돌아왔습니다. |
| 그래서 다시 추진하고 있습니다. 이것은 또 다른 파이프라인입니다. |
| 우리가 어떻게 설정했는지에 따라 여러 개의 Power Shell 스크립트를 순서대로 실행하는 것뿐입니다. |
| 하지만 이 파이프라인에는 더 많은 단계가 있다는 것을 알 수 있습니다. |
| 그래서 우리가 |
| 이를 확장할 수 있도록 돕기 위해 JSL만 테스트합니다. |
| 처음에는 최소한으로 하고, 시간이 지나면 추가 테스트를 허용합니다. |
| 그리고 변경된 JSL 파일이 있는지만 테스트했습니다. |
| 하지만 우리는 이 일을 겪을 수 있습니다. |
| 테스트가 중단되는 경우를 대비해 실행되고 테스트 중 어디에 있는지 알려줍니다. 아시다시피, 닫히지 않는 모달 대화 상자가 있는 경우 분명히 JMP는 그 이후에는 아무 작업도 계속하지 않을 것입니다. 하지만 보시다시피, 그것은 많은 일을 해냈습니다. 예, 대단합니다. 난 끝났어. |
| 신나는. |
| 새로 고침하세요. 작은 녹색 체크 표시를 받으세요. |
| 그리고 우리는 이제 모든 것을 실행할 수 있습니다. 모든 과정을 거쳐서 모든 것을 테스트한 다음 암호화하고, 기본적으로 우리가 추가 기능을 만들 실제 항목인 암호화된 항목을 테스트한 다음 다시 준비하고, 우리를 위해 패키지하고, 실제 추가 기능을 생성합니다. 그 점에서 우리는 고객에게 줄 것입니다. |
| 1분 정도 걸리기 때문에 빨리 하지 않겠습니다. |
| 하지만 |
| 우리가 여기로 들어가서 '오, |
| 음, 저는 이 데이터 테이블을 정말로 닫고 싶습니다. 애초에 왜 댓글을 달았는지 모르겠네요. 더 이상 사용하지 않기 때문에 공개해서는 안 된다고 생각합니다. 우리는...우리는 그것을 원하지 않습니다. |
| 우리는 괜찮다고 말할 것입니다. |
| dt를 닫습니다. |
| 다시 밀어 넣습니다. 이제 이 모든 작업은 Hamcrest를 사용하여 내 컴퓨터에서 수동으로 수행할 수 있습니다. |
| 하지만 때로는 개발자가 자신의 컴퓨터에 있는 모든 작업에 대해 Hamcrest를 모두 실행하지 않고 무언가를 밀어붙이는 경우도 있습니다. 이는... 전체 목적은 이를 포착하는 것입니다. 그것은 우리가 일을 조금 더 잘하도록 강요했습니다. |
| 그리고 |
| 응. |
| 이 버튼을 계속 클릭하세요. 그냥 열어도 되지만 괜찮아요. |
| 이제 파이프라인이 다시 실행되는 것을 볼 수 있습니다. 파이프라인으로 이동합니다. |
| 그리고 저는 반복해서 이 말을 계속하겠습니다. 우리는 단지 진행하고, 테스트하고, 암호화한 다음 테스트하는 중입니다. |
| 때로는 암호화가 자체적으로 입력되기 때문에 |
| 문제의 세계, 누군가 암호화를 해본 적이 있다면. |
| 달리고, 달리고, 달리고, 달리고, 달리세요. |
| 그리고 아, 우리는 공을 던졌습니다. 그거 좀 봐줄래? |
| 나는 무감각해지려고 노력하는 것이 아니지만, 당신도 알고 있습니다. |
| 따라서 이것을 준비됨으로 표시하고 예, 끝났습니다라고 말하면 다음과 같습니다. |
| 아, 그 시험은 통과하지 못했어요. |
| 지금 |
| 우리는 다운로드할 수 있었다 |
| 테스트가 아티팩트에서 통과하지 못한 이유. |
| 그러면 J 유닛이 열립니다. |
| 제가 여기서 꺼내려고 하는 파일입니다. |
| 또한 getlab에서 렌더링하므로 더 쉬울 수도 있지만 지금은 이 작업만 수행하겠습니다. |
| 결국. 모든 것을 최소화하세요. |
| 이제 어서. |
| 따라서 우리는 R 제곱에 문제가 발생하여 실패했음을 알 수 있습니다. |
| 내부에 |
| 파란색의. |
| 그래서 우리는 여기로 올 수 있습니다. |
| 예를 들어, boo에 이것이 실패하게 만드는 뭔가가 있는 이유는 무엇입니까? |
| 아, 누군가가 우리 방정식을 불렀군요 |
| 그런 다음 그들은 데이터 테이블이 거기에 있다고 가정했습니다. 그래서 내가 변경한 것이 다른 사람의 코드를 깨뜨렸기 때문입니다. 마치 그런 일이 일어날 것처럼 말이죠. |
| 그래서 우리는 그 문제를 겪고 있습니다. |
| 어디로 갔나요? 여기 있습니다. |
| 그래서 이것이 우리가 여기서 하는 모든 일의 주요 목적입니다. 내가 무언가를 바꾸고 다른 사람의 것을 망쳤다는 사실을 포착할 수 있는 것입니다. |
| 그래서 나는 통과할 수 있었다. |
| 부가 무엇을 하는지 보세요. |
| 글쎄요, 그냥 Big Class를 열어야 할 것 같아요 |
| 내 자신. |
| 응, 멋지다. 음, 그걸 저장하면, |
| 아마 더 좋게 만들어야 할 것 같아요. |
| 빅클래스를 직접 열어보세요. |
| 제가 무대에 올리겠습니다. |
| 빅 클래스를 열어보세요. 푸시해 보세요. |
| 그리고 다시 한 번 보여주세요. |
| 오래된 파이프라인. |
| 이제 이 작업이 수행되어야 합니다. |
| 안돼...너무 길지 않아. |
| 그래서 우리는 여기로 들어갈 것입니다. 우리는...하나만 테스트합니다... |
| JMP 버전이지만 볼 수 있습니다. |
| 자동으로 하나만 테스트합니다. |
| 그런 다음 개발자가 예, 끝났고 모든 것이 좋아 보인다고 말할 때까지 기다립니다. 계속하다. 우리는 자원상의 이유로 그렇게 합니다. |
| 왜냐하면 이것들은 항상 자동으로 작동하는 VM에서 실행되고 있고 우리에게는 이러한 시스템을 모두 사용하는 여러 개발자가 있기 때문입니다. |
| 우리도... |
| 보시다시피 이것은 실제로 도커 시스템입니다. 우리는 이것을 컨테이너화하고 있습니다. |
| 음, 우리는 이것을 컨테이너화하는 과정에 있습니다. 작동 중이지만 아직 모든 버전이 없습니다. |
| 하지만 우리는 14.3을 실행합니다. 적어도 이 프로젝트에서는 14.3, 15, 15.1을 실행합니다. |
| 그러면 작동할 겁니다. |
| 그냥 되돌리자. |
| 당신이 아는 것이 효과가 있기 때문입니다. |
| 아마도 클래식을 했어야 했는데... 괜찮습니다. |
| 그렇죠. |
| 우리는 테스트를 할 것입니다. |
| 이 말을 계속해서 반복하는 것 같아요. 우리는 모든 것을 테스트할 것입니다. |
| 실제로 우리가 얻은 최종 결과를 보여주기 위해 이것을 실행해 보겠습니다. |
| 그것은 단지 걸릴 것입니다. |
| 조금. |
| 그래서 우리는 이것을 테스트하고 제대로 작동하는지 확인하고 로그를 볼 수 있습니다. 우리는 무슨 일이 일어나고 있는지, 그것이 어디에 있는지에 대한 적절한 정보를 얻고 있습니다. 마치 달리고 있는 주자를 알려주는 것과 같습니다. |
| 지금은 Windows에서만 실행하고 있습니다. 다시 한번 말하지만, 이것은 데모이고 그 밖의 모든 것입니다. |
| 우리는 달릴 수 있어야 해 |
| 더. |
| 실행되는 동안 VSCode에 대해 좀 더 이야기하겠습니다. |
| VSCode에는 스니펫 등도 있으므로 함수를 만들고 싶다면 |
| 그것은 기능 정보 전체에 걸쳐 당신을 생성합니다. 우리는 자연스러운 문서를 사용합니다 |
| 또 Hamcrest 팀에서 훔쳤어요. |
| 우리의 |
| 개발 문서. |
| 따라서 모든 것을 자연스러운 문서 형식으로 저장합니다. 다시 한 번 말하지만, 그 아이디어는 우리가 일을 하도록 돕고 우리가 일을 하도록 강요하는 것입니다. |
| 조금 더 좋아지고, 조금 더 열정적으로. |
| 웨인 레빈 | 문서를 위해? |
| 빈스 폴러 | 그럼 그건 문서를 위한 거군요. |
| 웨인 레빈 | 우리는 개발하면서 동시에 문서화도 하고 있습니다. |
| 빈스 폴러 | 네. 전적으로. |
| 아시다시피 for 루프와 while 루프도 있습니다. |
| 연관 행의 경우 그런 것입니다. |
| 우리...이거...아직 끝나지 않았나요? 아마 끝났을 거예요, 네. |
| 그래서 우리는 녹색 체크 표시를 얻습니다. 이제 모든 시스템에서 실행될 것입니다. |
| 여기로 다시 돌아가면 딱 보일 거예요. |
| JMP를 엽니다. 몇 가지 테스트를 실행합니다. |
| 아마도 빅클래스가 열릴 것 같아요. |
| 그런 다음 모두 닫으세요. 모두 닫으세요. |
| 웨인 레빈 | 그래서 우리가 이 일을 하는 이유는 주로 다음과 같습니다. |
| 많은 고객이 다양한 버전의 JMP를 배포하고 있으며 특정 추가 기능을 원하지만 |
| 그것을 실행하면 현장에 다른 버전이 있을 뿐입니다. 또한 버그를 보고하기 때문에 JMP 서비스인 JMP의 얼리 어답터 버전에 대해서도 테스트합니다. |
| 하지만 클라이언트에게도 도움이 됩니다. JMP의 새 버전으로 업그레이드할 수 있다는 것을 알기 때문입니다. 그들은 우리가 그들을 위해 구축한 애플리케이션이 테스트를 거쳤음을 알고 있습니다. |
| 그리고 그것은 우리에게 단지 일상적인 일입니다. |
| 좋은. |
| 빈스 폴러 | 이제 끝났습니다. 이제 끝났습니다. 이제 끝났습니다. |
| 로 변경... |
| 나는 그것에 대해 이야기 할 수 있습니다 ... |
| 그리고 이것은 실행될 것입니다. 우리는 할 수 있습니다 |
| 원한다면 이건 영화의 마법이야, 메그. |
| 단지 더 빠르게 실행되도록 하기 위해서입니다. |
| 기본적으로는 준비 단계에 들어가고 싶지만 시간이 좀 걸립니다. |
| 웨인, 그것에 대해 더 할 말이 있나요? |
| 시원한. |
| 그거 넣을게... |
| 내가 할 수 있는 말은, |
| 우리가 무대를 할 때, |
| mk 문서에도 문서가 있습니다. 따라서 실제로 mk 문서 버전을 실행하고, 렌더링하고, 도움말 파일에 도움말을 넣고, 기본적으로 우리를 위한 릴리스를 생성할 수 있으므로 우리가 할 필요가 없습니다. |
| 받아 들여. |
| 릴리스를 만드는 것은 많은 노력이 필요하기 때문입니다. |
| 암호화. 거의 다 끝났습니다. |
| 아마도 하나만 미리 로드되어 있어야 할 것입니다. |
| 라이브 데모, 무엇을 할 건가요? |
| 일부. |
| 달리다. |
| 아, 꼭 하고 싶은 게 하나 있다. |
| 따라서 파이프라인이 실제로 수행하는 마지막 작업은 우리가 실제로 시간을 소비했는지 확인하는 것입니다. |
| 실제로 우리가 보낸 시간을 기록하지도 않고, 돈을 받지도 못하기 때문에 그렇게 하도록 강요합니다. |
| 정말 좋은 시간이었습니다. |
| 빈데 팔러 | 그래서 |
| 빈스 폴러 | 그것 없이는 작업이 실패했을 것입니다. |
| 직업 몇 가지만 보여드릴 수 있어요. 견딜 수 없는. |
| 그게 바로 도커입니다. 우리는 그것을 원하지 않습니다. |
| 그래서 |
| 이것이 우리에게 성공을 안겨주었다는 것을 알 수 있습니다. |
| 실패가 없습니다. 예상치 못한 던지기가 없습니다. 그게 다 Hamcrest에서 나온 것들이에요. |
| 어서 해봐요. 하나 더. |
| 좋아요, 준비를 시작했습니다. |
| 그것이 하는 일 중 하나는 저장소를 생성하는 것입니다. |
| 매번 신선하게 만들어줍니다. |
| 그래서 그것은 일종의 무국적 상태를 유지하려고 하는 것과 같습니다. |
| 방법. 좋아요, 이제 아티팩트를 다운로드할 수 있습니다. |
| 이제 이 파이프라인 데모가 있어야 합니다. |
| 그냥 거기까지 갔으면 정말 좋았을 텐데. |
| 무엇. |
| Internet Explorer가 실행되는 이유는 무엇입니까? 이제 파이프라인 데모를 볼 수 있습니다. |
| JMP 추가 기능입니다. |
| 압축을 풀면. |
| 몰랐다면 JMP 추가 기능은 단지 zip 파일일 뿐입니다. |
| 지금 그 내용을 살펴보면, |
| 그 안에 모든 스크립트가 있고 foo와 bar가 있는 것을 볼 수 있습니다. 그걸 열어보면, |
| 열려 있는, |
| 암호화된 파일임을 알 수 있습니다. |
| 이것이 기본적으로 우리가 고객에게 줄 수 있는 것입니다. |
| 기계적인 작업이 그리 많지 않습니다. 웨인이 그런 말을 하더군요 |
| 이는 개발자의 좌절감을 덜어주고 개인적으로는 절제된 표현이라고 생각합니다. 왜냐하면 이 작업을 적용하기 전에는 이 작업을 계속해서 수행하는 것이 매우 실망스러웠고 이것이 많은 도움이 되었기 때문입니다. |
| 저것. |
| 웨인 레빈 | 이제 암호화에 대해 추가 기능을 제공할 때 |
| 회사 내의 사용자가 사용하기 위해 일반적으로 보안상의 이유로 다른 사람이 들어가고 사용할 수 없도록 하는 것을 원하지 않습니다. |
| 코드를 다루세요. 그런 종류의 일이기 때문에 클라이언트가 코드를 암호화하도록 하기 위해 우리는 암호화되지 않은 코드를 전달할 수 있지만 최종 사용자에게 전달하려면 일반적으로 모든 것이 암호화되기를 원합니다. 조작당하다. 그런 종류의 것 중 하나입니다. |
| 빈스 폴러 | 네, 그게 제 데모의 끝입니다. 웨인, 마무리를 위해 다시 가져가고 싶다면요. |
| 웨인 레빈 | 응, 훌륭해. |
| 물론이죠, 정말 고마워요, 빈스. 따라서 이 전체 시스템에는 움직이는 부분이 많이 있으므로 기본적으로 다음 사항을 확인해야 합니다. |
| 아시다시피, 서로 충돌하지 않는 여러 사용자가 코드를 개발하고 있습니다. 우리는 동시에 문서를 작성하고 있습니다. 실제로 문서는 애플리케이션과 함께 배포되므로 이를 엮을 필요가 없습니다. 그것은... |
| 우리는 자동으로 관리되도록 인프라를 설정했습니다. 코드와 함께 포괄적으로 동시에 업데이트할 수 있습니다. |
| 당신이 원한다면. 현재 진행되고 있는 Hamcrest 테스트, 작성된 함수 하나하나, |
| 원한다면 예상되는 결과가 있습니다. 그래서 그들은 비교되었고 우리는 간단히 말해서 거기에 그 방정식에 어떤 문제가 있다는 것을 알았습니다. R 제곱 또는 다른 값으로 반환되는 모든 것 |
| 그래서 그것은 깨졌습니다. 즉, 여기 뭔가가 잘못되었다고 말하는 것입니다. 나는 함수에서 이 출력을 기대하고 있었습니다. |
| 유스 케이스의 경우. 이것이 바로 우리가 고객으로부터 얻는 것 중 하나입니다. 아시다시피 우리는 Hamcrest 테스트로 전환되는 사용 사례 풀을 구축하고 계속 진행합니다. 여기에는 다른 슬라이드도 있습니다. |
| 당신이 언제, 언제, 가서 슬라이드를 다운로드하면 당신이 사용할 수 있습니다. 그래서 저는 여러분이 사용할 수 있도록 남겨두겠습니다. 여기에 파이프라인에 대한 작은 그림이 있습니다. |
| 우리가 채택하고 있는 것과 개발자를 위한 코드 검토 활동에 대해서도 조금 설명하겠습니다. 당신이 그것으로 앞뒤로 가고 싶다면. Vince, 여기에 코드 검토 및 승인이 어떻게 이루어지는지 추가하고 싶으신가요? |
| 빈스 폴러 | 네, 그럼 병합 요청 내부에서 |
| 코드의 차이점에 JSL 코드가 있습니다. 그리고 또, 큰 |
| 감사합니다 |
| Hamcrest를 만든 사람들도 JSL을 읽을 수 있도록 GitHub 및 GitLab용 어휘 분석기(?)를 시작했기 때문에 실제로 이것은 getlab 내부에 있습니다. |
| 그리고 JSL도 읽을 수 있습니다. 실행되지는 않지만 형식이 좋습니다. 모두 흰색 텍스트가 아니라 아름답습니다. 저희는 그냥 들어갈게요, |
| 이 스크린샷처럼 한 줄을 클릭하고 원하는 댓글을 입력하면 검토 가능한 작업이 됩니다. 그래서 우리는 GitLab 내부에서 가능한 한 많은 일을 하려고 노력합니다. |
| 투명성을 위해 |
| 모든 것이 종료되면 '예, 병합 요청이 준비되었습니다'라고 말할 수 있습니다. 마스터 브랜치, 메인 브랜치에 넣어보겠습니다. |
| 웨인 레빈 | 굉장해요. 그래서 당신은 정말로...그것이 도움이 되고 있습니다. 당신이 원하신다면 우리는 실제로 코딩 표준을 정의하고 있습니다. |
| 나는 집행이라는 단어를 좋아하지 않지만 그게 바로 그 의미입니다. 그리고 변화를 줄여줍니다. 여러 개발자가 무엇을 원하는지 더 쉽게 이해할 수 있습니다. |
| 다른 사람들이 한 일. 그리고 새로운 개발자를 합류시키면서 그들은 표준을 이해하게 되고 무엇을 찾아야 할지, 무엇을 해야 할지 알게 됩니다. |
| 그래서... 온보딩을 훨씬 더 쉽게 만들고... 모든 것이 여기의 모든 것에 연결되어 있으므로 지원 가능성 등을 알 수 있습니다. |
| 이것은 앞서 언급한 슬라이드입니다. 일부 리소스에 대해서만 GitLab을 사용하고 있습니다. 나는 일반적으로 GitHub와 같은 모든 Git에 동일한 원칙이 적용된다고 가정합니다. Hamcrest의 커뮤니티 링크는 다음과 같습니다. 에서 얘기가 있었어요 |
| 투산에서, 그건 2019년, 옛날에 우리가 여행하고 함께 모이던 시절이었어요. 정말 재미있었어요. Visual Code Studio의 마켓플레이스 링크는 다음과 같습니다. |
| Visual Studio 코드는 무엇입니까? |
| Vince가 말했듯이 우리는 JMP 편집기가 모두 통합되어 있다는 이유만으로 내장된 JMP 편집기를 사용하는 대신 해당 편집기를 많이 사용합니다. 그것은... |
| 이는 모두 하나의 대규모 애플리케이션 개발 환경의 일부일 뿐입니다. 이로써 Vince와 제가 Vince와 저를 대신하여 이 문제에 관심을 가져주셔서 감사하다는 말씀을 드리고 싶습니다. 다시 한 번 JMP 팀에 진심으로 감사드립니다. 저스틴 칠튼과 회사, |
| 제가 전화할게요. Hamcrest가 아니었다면 우리는 이 일을 하지 않았을 것입니다. 그건 |
| 누락된 부분이거나 JSL 개발을 실제로 수행할 수 있도록 지원하는 부분이었습니다. |
| 기본적으로 일반적으로 업계의 코드 개발에서 기대하는 종류의 표준입니다. 그래서 우리는 그것에 대해 정말로 감사하고 있으며 우리의... |
| 아시다시피 이는 우리가 배포한 각 애플리케이션을 통해 전파됩니다. 그리고 이 시점에서 Vince와 저는 어떤 질문에도 기꺼이 응할 것입니다... |
| info@predictum.com으로 보내주시면 저희에게 전달되어 다시 연락드리겠습니다. 하지만 이 시점에서는 Q&A로 공개하겠습니다. |