| 스피커 |
성적 증명서 |
| 웨인 레빈 |
JSL 애플리케이션의 지속적인 개선을 위해 Hamcrest 자동화 테스트를 확장하는 방법에 대한 세션에 오신 것을 환영합니다. |
| |
여기서 우리가 보여드릴 것은, 우리가 여러분에게 약속드리는 것은, 여러분도 어떻게 생산적이고 비용 효율적인 시스템을 구축할 수 있는지 보여드리겠다는 것입니다. |
| |
높은 품질 보증, 높은 신뢰성과 지원성을 갖춘 JMP 기반 미션 크리티컬 통합 분석 시스템. 네, 좀 과장된 표현이지만, |
| |
바로 그런 환경에서 저희가 하고 있는 일입니다. 저희는 그 결과에 매우 만족합니다. 여러분과 함께 나눌 수 있어서 정말 영광입니다. |
| |
자, 이제 저희가 진행할 일정입니다. 제 소개는 잠시 후에 하겠습니다. 그리고 Predictum에 대해서도 간략하게 말씀드리겠습니다. 저희에 대해 잘 모르시는 분들이 계실 것 같아서요. |
| |
저희의 배경, JSL 개발 배경, 인프라, 이와 관련된 약간의 역사에 대해 말씀드리겠습니다. |
| |
그리고 저희가 지금까지 진행해 온 변화의 결과를 여러분과 공유해 드리겠습니다. 이어서 데모를 통해 앞으로의 계획과 향후 계획에 대해 설명드리고, 마지막으로 궁금한 점이 있으시면 언제든지 질문해 주세요. |
| |
저는 Wayne Levin입니다. 오른쪽에 있는 사람이 저입니다. Predictum의 사장이며, |
| |
빈스 폴러와 함께합니다. 빈스는 저희의 최고 소프트웨어 엔지니어로서 이 매우 중요한 프로젝트를 이끌어 왔습니다. 자, 이제 저희에 대해 간략히 소개해 드리겠습니다. 저희는 JMP 파트너입니다. |
| |
우리는 1992년에 시작했으니 29년 됐어요. |
| |
우리는 JMP를 사용하여 통계 방법 등에 대한 교육을 실시하고 해당 분야에 대한 컨설팅을 실시하며 구축에 엄청난 시간을 투자합니다. |
| |
통합 분석 애플리케이션과 시스템을 구축하는 것이 저희에게 매우 중요했던 이유입니다. 저희는 먼저 JMP 애플리케이션을 |
| |
JMP 4.0은 2000년에 나왔죠. 네, 20년도 더 전이긴 합니다. 그 이후로 더 큰 시스템을 구축해 왔습니다. 물론 그 당시에는 너무 작고 단순한 도구들이었지만, JMP 8이나 9쯤부터 더 큰 시스템을 구축하기 시작했던 것 같습니다. |
| |
이 분야에는 10년 넘게 꽤 오랜 역사가 있습니다. 간단히 배경 설명을 드리자면... 2019년 하반기까지만 해도 저희 개발 환경은 정말 산만하고 단편적이었습니다. |
| |
프로젝트 관리 |
| |
있긴 했지만, 다시 말씀드리자면 모든 게 좀 분산되어 있었어요. 버전 관리나 시간 관리, 개발자 시간 관리 같은 걸 위한 애플리케이션이 따로 있었고, 프로젝트 관리도 전반적으로 다 따로 있었죠. |
| |
개발자들은 쉽게 돈을 쓰고 있었고, 우리는 이것에 대해 이야기할 것입니다. |
| |
JMP 애드인 암호화 및 패키징과 같은 일상적인 기계적인 작업에만 절반의 시간을 할애합니다. 구성 패키지 유지 관리 같은 거죠. |
| |
아시다시피, 암호화된 스크립트와 암호화되지 않은 스크립트를 위한 저장소, 즉 우리가 일반적으로 저장소라고 부르는 것을 분리하는 일 말입니다. 개발 작업이 아닌, 우리가 생각해야 할 것들이 정말 많았습니다. |
| |
개발자 재능이... 낭비되고 있었죠. 말씀드렸듯이, 저희는 오랫동안 이 일을 해왔고, 2019년에도 10년 넘게 이 일을 해왔습니다. JMP 5까지 거슬러 올라가는 레거시 프레임워크가 10년 넘게 사용되었죠. 점점 더 비대해지고 느려지고 있었죠. |
| |
JMP가 지난 몇 년 동안 큰 발전을 이루었다는 것을 알고 있습니다. JMP 9에서는 네임스페이스가 도입되었고, JMP 14에서는 클래스가 도입되었습니다. 바로 그때 Hamcrest가 등장했죠. |
| |
시작했죠. 그리고 Hamcrest 덕분에 이 중요한 프로젝트를 시작할 수 있었습니다. 그래서 2019년 8월에 이 중요한 프로젝트를 시작했죠. |
| |
그리고 그때 처음으로 Gitlab 라이선스를 취득했고, 그렇게 새로운 개발 아키텍처가 개발되기 시작했고, 그 이후로 계속해서 개선되었습니다. |
| |
기본적으로 매달 우리는 점점 더 생산적으로 되기 위해 역량을 추가하고 구축해 왔습니다. |
| |
그리고 이런 노력은 계속되고 있습니다. 그래서 저희는 이것을 린(Lean) 방식의 노력이라고 생각합니다. 린 원칙을 정말 잘 따르고 있고, 덕분에 개발 속도가 빨라졌습니다. |
| |
이 시스템 덕분에 자동화된 테스트가 가능해졌고, 빈스가 직접 보여드릴 예정입니다. 그리고 여기 작은 모델이 있는데, 일찍 테스트하고 자주 테스트하는 겁니다. |
| |
바로 그것이 우리가 하는 일입니다. 코드 재사용을 지원하고 Predictum 시스템 프레임워크를 재개발했습니다. 현재 2.0 버전입니다. 이전 작업에서 많은 것을 배웠습니다. 그 모든 것, 거의 모든 것이 사라졌고, 새로운 것으로 교체되고 확장되었습니다. |
| |
빈스가 더 자세히 설명해 줄 겁니다. 생산성이 50% 이상 크게 향상되었고, 개발자들도 훨씬 더 만족스러워하고 있습니다. 좌절감도 덜하고요. |
| |
그들은 개발자가 해야 할 진짜 업무, 즉 지루한 일이 아닌 자신의 업무에 더 집중합니다. |
| |
아직 개선의 여지가 있다고 말씀드리고 싶습니다. 아직 끝나지 않았고 빈스가 이에 대해 더 자세히 설명해 줄 것입니다. |
| |
지금은 개발 표준이 있고, 기능에 대한 스타일 가이드도 있으며, 모든 개발은 기능 기반이라고 할 수 있겠습니다. |
| |
각 기능에는 최소한 하나의 Hamcrest 테스트가 필요하며 개발자들이 서로 공유하는 코드 검토가 있습니다. |
| |
우리가 기준을 준수하고 있는지 확인하기 위해서입니다. 그리고 이러한 기준을 어떻게 강화하고 개선할 수 있을지에 대한 의문이 제기됩니다. |
| |
개발자들이 코드를 해독하도록 권장하는 이런 종류의 재미있는 세션도 있습니다. |
| |
네, 그래서 이런 걸 브레이크 코드 챌린지라고 부르죠. 그래서 저희 작업 방식의 일부가 되었고, 이 개발 환경에 딱 들어맞습니다. 예를 들어, 추가 테스트, Hamcrest 테스트가 추가되는 거죠. 저희는 작고, 꽤 작은 프로젝트 하나를 진행하고 있습니다. |
| |
1년도 채 안 돼서 했던 일이죠. 이제 새로운 국면으로 접어들고 있습니다. 훨씬 지나갔죠... |
| |
100개가 넘는 Hamcrest 테스트가 내장되어 있으며 개발 프로세스 전반에 걸쳐 반복적으로 실행됩니다. |
| |
또 다른 장점은 리소스 할당을 할당하고 추적할 수 있다는 것입니다. 개발자들이 무엇을 하는지, 모두가 서로 무엇을 하는지 알 수 있죠. |
| |
지속적인 통합, 지속적인 배포, 그와 비슷한 것), |
| |
코드 충돌은 조기에 감지됩니다. 그래서 만약 충돌이 발생한다면... 실제로 여러 사람이 어떤 프로젝트에 참여하고 있는데, 예를 들어 누군가 함수를 변경하다가 다른 사람이 하는 작업과 충돌이 발생하는 경우를 생각해 보세요. 훨씬 더 빨리 알아낼 수 있죠. |
| |
또한 여러 직원의 지원 가능성을 향상시킬 수 있습니다. 특정 개발자에게 종속된 코드는 허용되지 않습니다. 모든 개발자 또는 지원 직원이 지원할 수 있는 코드가 필요합니다. |
| |
앞으로 나아가는 것입니다. 그래서 그것이 우리의 중요한 목표이기도 했습니다. 그리고 그것은 전반적으로 품질 보증 분야 전체를 발전시킵니다. |
| |
FDA 요구 사항 지원, QA 관련 사항, 검증, IQ OQ PQ 같은 것들을 포함합니다. 그래서... 자동화 또는 반자동화를 하고 있습니다. |
| |
이러한 작업도 이 인프라를 통해 수행합니다. 우리는 내부적으로나 외부적으로 이를 활용하고 있으므로, |
| |
몇몇 제품들이 있는데, (???)고베 새시랩이 있는데 새로운 제품들은 스팸을 잘 보내요.고베가 스팸을 보내요(???) 다른 곳에서도 얘기가 나와요. |
| |
2021년 JMP Discovery European Conference에서 확인할 수 있습니다. 확인해보시는 것도 좋지만 규모가 상당히 큽니다. |
| |
코드 베이스가 모두 개발되었습니다. 다시 말해, 우리가 우리 자신의 개밥을 먹는다는 뜻입니다. 이 표현을 알고 계시다면, 우리는 또한 모든 클라이언트와 함께 그것을 사용합니다. |
| |
개발은 고객에게 중요한 일이에요. 고객이 의존하게 될 애플리케이션을 구축하고 있으니까요. |
| |
그래서 우리는... 우리는 신뢰할 수 있는 인프라를 갖춰야 합니다. 어쨌든 그것이 이것의 큰 부분이죠. |
| |
Predictum 시스템 프레임워크에 대해 언급했습니다. 여기에서 일부 스니펫을 볼 수 있습니다. 스크립팅 인덱스 바로 안에 있는데, 인수와 |
| |
예시 등등. 저희는 이 모든 것을 자체적으로 구축했고, 그중 95%, 아니 95% 이상이 Hamcrest 테스트와 연관되어 있습니다. 물론 저희의 목표는 모든 테스트가 Hamcrest 테스트를 지원하도록 하는 것이고, 저희는 그 목표를 향해 나아가고 있습니다. |
| |
이제 좀 나아지고 있습니다. 이 프레임워크는... 이 프레임워크는 사실 우리 인프라의 일부입니다. 이게 중요한 요소 중 하나죠. 또 다른 하나는 바로... Hamcrest입니다... |
| |
단위 테스트를 수행할 수 있는 기능입니다. 그리고 마지막에 Hamcrest에 대해 자세히 알아볼 수 있는 커뮤니티 링크를 제공하는 슬라이드가 있습니다. |
| |
몇 분 전에 말씀드렸듯이, JMP 14에서 JMP가 제공했던 개발 환경입니다. GitLab은 이 환경의 중요한 부분을 차지하며, 프로젝트 관리 저장소, CI/CD 파이프라인 등을 제공합니다. |
| |
그리고 JSL을 위한 Visual Studio Code 확장 프로그램도 있는데, 우리가 만든 것입니다. 거기에 별 5개가 있는데, 왜냐하면 그것은 5개의 별을 받았기 때문입니다. |
| |
Visual Studio에서요. 뭐라고 부르는지 잘 모르겠네요. 빈스, 스토어에 대해 좀 알려주시면 좋겠어요. 수백 번이나 다운로드되었고, |
| |
정기적으로 업데이트하고 있습니다. 여러분도 직접 찾아보실 수 있을 거예요. 마지막 자료 슬라이드에 링크도 있는 것 같아요. |
| |
그래서 지금 제가 할 일은 이 내용을 빈스 폴러에게 전달하는 것입니다. 빈스는 저희 최고 소프트웨어 엔지니어입니다. 앞서 말씀드렸듯이 빈스는 2019년 8월부터 이 프로젝트를 이끌었습니다. 정말 많은 노력이 필요했고, |
| |
힘든 일은 계속됩니다. 우리 모두는 빈스와 그의 리더십에 진심으로 감사하고 있습니다. 자, 이제 빈스, 자네가 이끌어가면 어떨까? 내가... |
| |
나는... |
| 빈스 폴러 |
공유. |
| |
웨인은 Hamcrest를 여러 번 언급했습니다. Hamcrest가 뭔지 모르는 사람들을 위해 설명드리자면, Hamcrest는 |
| |
제이엠피 |
| |
저스틴 칠튼과 에반 맥코클이 주도했습니다. 자동화된 방식으로 실행하고, 테스트하고, 결과를 얻을 수 있는 단위 테스트 라이브러리일 뿐입니다. |
| |
이것이 우리가 이런 일을 할 수 있게 된 진짜 계기였고, 그래서 이것을 확장이라고 부르는 겁니다. |
| |
나는 몇 가지 물건을 보여줄 것입니다 |
| |
제 화면으로요. 저는 저희가 만든 VSCode 확장 프로그램으로만 거의 작업합니다. 이게 바로 VSCode입니다. |
| |
이렇게 하는 이유는 우리가 직접 작성할 필요가 없는 내장 기능이나 확장 가능한 기능(예: 통합, 랩 통합)이 많이 있기 때문입니다. |
| |
여기서는 이것이 JSL 스크립트이고 잘 읽힌다는 것을 볼 수 있습니다. |
| |
원하신다면, VSCode에 익숙하시다면, 그냥 가벼운 텍스트 편집기일 뿐입니다. JMP만 입력하면 됩니다. |
| |
그리고 당신은 그것을 보게 될 것입니다. 그것이 유일한 것입니다. |
| |
하지만 우리는 우리가 하고 있는 일을 계속할 것입니다. |
| |
그래서. |
| |
우리가 하는 모든 코드 변경에 대해, |
| |
파이프라인이 있습니다. |
| |
무슨 기능을 하는지 간단히 보여드리겠습니다. README 파일을 "Discovery 데모"로 변경하면 됩니다. |
| |
2021년 |
| |
그리고 저는 그냥 그것을 커밋할 겁니다. 만약 당신이 get을 모른다면, 그냥 커밋하는 겁니다. |
| |
지금 우리가 어디에 있는지에 대한 정확한 스냅샷을 원한다고 말하고, 그것을 저장소에 푸시하면 서버에 저장됩니다. |
| |
행복한 하루. |
| |
커밋 메시지. 추가 readme 정보. |
| |
그리고 VSCode가 훌륭해서 푸시도 할 수 있어요. |
| |
파이프라인 데모. |
| |
이제 푸시했습니다. 파이프라인이 실행될 겁니다. 여기 아래로 내려가서 이걸 클릭하면 병합 요청이 나옵니다. 자, 이제 |
| |
파이프라인이 가동되기 시작했습니다. |
| |
파이프라인의 상태를 확인할 수 있습니다. |
| |
지금 하고 있는 작업은 필요한 Hamcrest 파일이 있는지 확인하는 것입니다. 몇 가지 요구 사항이 있습니다. |
| |
우리는 그것을 시행하여... |
| |
우리는 우리가 확실히 할 수 있습니다 |
| |
우리의 업무를 잘 수행하는 것. |
| |
이제 끝났습니다. 암호화를 눌러보겠습니다. |
| |
이제 encrypt는 전체 패키지를 가져와 암호화합니다. |
| |
우리가 여기로 가면, |
| |
이건 어딘가에 있는 VM일 뿐이야. |
| |
달리기 시작하다 |
| |
1초 안에. |
| |
그러니까 모든 코드를 살펴보는 거죠. |
| |
암호화된 비밀번호를 모두 쓰고, 탐색하고, 클릭하는 등 온갖 작업을 해야 합니다. 여러 스크립트를 동시에 암호화하려고 시도해 본 적이 있다면, |
| |
아마 여러분도 알다시피, 이게 힘든 일이죠. 그래서 우리는 이 작업을 자동화해서 더 이상 할 필요가 없게 했습니다. 웨인이 말했듯이, 이런 작업을 하려면 시간이 많이 걸렸거든요. |
| |
예를 들어, 릴리스할 때마다 100개의 스크립트를 검토하고 모든 스크립트를 암호화해야 한다면 정말 끔찍한 일이죠. |
| |
우리는 우리의 것을 가져야 하기 때문에 |
| |
코드는 암호화되어 있어요. 네, 죄송하지만 제 의견이에요. 알았어요. 더 이상 공유하지 않아도 돼요. |
| |
아. |
| |
그러니까 계속 실행될 거예요. |
| |
곧 끝날 거예요. |
| |
그런 다음 스테이징이 진행되고 스테이징은 기본적으로 우리가 원하는 모든 정보 소스를 가져옵니다. 문서에서처럼 |
| |
우리가 작성한 다른 모든 내용은 추가 기능에서 원하는 형태로 렌더링됩니다. Github, GitLab의 나머지와 마찬가지로 대부분의 문서는 마크다운으로 작성되고, 우리는 그것을 원하는 형태로 렌더링합니다. |
| |
나머지는 다 보여드릴 필요 없지만, 네. 그러니까 지나가는 거예요. 사라질 거예요. |
| |
VSCode로 돌아가겠습니다. |
| |
그래서. |
| |
만약 우리가 바꾼다면, 이것은 단지 단일 함수일 뿐입니다. |
| |
내가 여기 들어가서 이걸 실행한다면... |
| |
JSL, 현재 선택을 실행합니다. |
| |
그래서. |
| |
다시 돌아온 걸 볼 수 있죠... Big Class를 열고, Fit Line을 실행해서 방정식을 구하려는 겁니다. 방정식을 반환하는 거죠. |
| |
그리고 실제로 여기서도 그것이 실행되는 것을 볼 수 있습니다. |
| |
하지만. |
| |
그러니 이에 대한 문서가 좀 더 추가되면 좋겠습니다. |
| |
그리고 우리는 '아, 사실 이 데이터 테이블은 열어두고 싶지 않아'라고 생각했습니다. |
| |
하지만 아주 간단하게 설명해보겠습니다. |
| |
그리고 말한다, |
| |
아니요. 이건 좋은 수익이 아니에요. 방정식을 전부 대문자로 바꿔 놓은 것 같아요. |
| |
그러니까 내가 그것을 연출한다면, |
| |
더 나은 문서화. |
| |
푸시. |
| |
다시 여기로 돌아오겠습니다. |
| |
그러니까, 또 밀어붙이는 거죠. 이건 또 다른 파이프라인이에요. |
| |
어떻게 설정하느냐에 따라 일련의 PowerShell 스크립트를 순서대로 실행하는 것뿐입니다. |
| |
하지만 이 파이프라인에는 단계가 더 많다는 걸 알 수 있을 겁니다. |
| |
그래서 우리가 |
| |
이것을 확장할 수 있도록 돕기 위해 우리는 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에 버그를 보고하는 서비스입니다. |
| |
하지만 고객 입장에서도 도움이 됩니다. 새로운 버전의 JMP로 업그레이드할 수 있다는 것을 알게 되니까요. 저희가 개발한 애플리케이션이 이미 테스트되었다는 것을 알게 되니까요. |
| |
그리고 그건 우리에게는 그저 일상일 뿐이에요. |
| |
좋은. |
| 빈스 폴러 |
끝났어요. 끝났어요. 끝났어요. |
| |
...로 변경 |
| |
나는 ...에 대해 이야기 할 수 있습니다. |
| |
그리고 이것은 그냥 실행될 것입니다. |
| |
영화의 마법이 궁금하다면, 메그. |
| |
더 빨리 실행되도록 하기 위해서입니다. |
| |
기본적으로, 저는 바로 스테이징에 들어가고 싶은데 시간이 좀 걸립니다. |
| |
웨인, 그 외에 더 말씀하실 게 있나요? |
| |
시원한. |
| |
내가 그걸 넣을게요... |
| |
내가 말할 수 있는 게 있는데, |
| |
우리가 스테이징할 때, |
| |
mk docs에도 문서가 있습니다. mk docs 버전을 실행하고, 렌더링하고, 도움말을 도움말 파일에 저장하고, 기본적으로 릴리스를 생성할 수 있으므로, |
| |
처리하자. |
| |
보도자료를 만드는 데는 엄청난 노력이 필요하거든요. |
| |
암호화 중입니다. 거의 끝났습니다. |
| |
아마도 하나만 미리 로드했어야 했을 겁니다. |
| |
라이브 데모, 뭘 할 건가요? |
| |
일부. |
| |
달리다. |
| |
아, 제가 꼭 하고 싶은 게 하나 있어요. |
| |
따라서 파이프라인이 실제로 하는 마지막 일은 우리가 실제로 시간을 보냈는지 확인하는 것입니다. |
| |
우리는 실제로 일한 시간을 기록하지 않고, 돈도 받지 못하기 때문에 일을 할 수밖에 없습니다. |
| |
정말 즐거운 시간이었습니다. |
| 윈 폭포 |
그래서 |
| 빈스 폴러 |
그것 없이는 그 일은 실패했을 겁니다. |
| |
그냥 일자리 몇 개 보여줄 수 있을 것 같아요. 노력 중이에요. |
| |
그건 도커용이에요. 우리는 그걸 원하지 않아요. |
| |
그래서 |
| |
그것이 우리에게 성공을 가져다 주었다는 것을 알 수 있습니다. |
| |
실패도 없고, 예상치 못한 투척도 없습니다. 이게 바로 Hamcrest의 모든 것입니다. |
| |
어서요. 하나 더요. |
| |
좋아, 스테이징으로 넘어가자. |
| |
이 기능은 저장소를 생성합니다. |
| |
그러면 매번 새로운 맛이 납니다. |
| |
그래서 그것은 일종의 무국적 상태로 유지하려고 노력하는 것과 같습니다. |
| |
좋아요. 이제 유물을 다운로드할 수 있습니다. |
| |
이제 파이프라인 데모를 볼 수 있을 겁니다. |
| |
그냥 거기에 갔으면 좋았을 텐데요. |
| |
무엇. |
| |
Internet Explorer가 왜 실행 중인가요? 이제 파이프라인 데모를 보실 수 있습니다. |
| |
JMP 추가 기능입니다. |
| |
압축을 풀어보면. |
| |
모르셨을 수도 있지만, JMP 추가 기능은 단지 zip 파일입니다. |
| |
지금 그것을 살펴보면, |
| |
여기에 모든 스크립트가 들어 있고, foo와 bar도 있습니다. 이것들을 열면, |
| |
열려 있는, |
| |
암호화된 파일이라는 걸 알 수 있죠. |
| |
따라서 이것이 기본적으로 우리가 고객에게 제공할 수 있는 것입니다. |
| |
그리고 그렇게 많은 기계 작업이 필요하지 않습니다. Wayne은 다음과 같이 언급했습니다. |
| |
개발자들의 좌절감이 줄어들었고, 개인적으로는 이 표현이 과소평가된 것 같습니다. 이 기능이 도입되기 전에는 이런 작업을 계속 반복하는 것이 매우 좌절스러웠고, 이 기능이 많은 도움이 되었기 때문입니다. |
| |
저것. |
| 웨인 레빈 |
이제 추가 기능을 제공할 때 암호화에 대해 알아보겠습니다. |
| |
회사 내 사용자가 사용하는 경우 일반적으로 보안상의 이유 등으로 누구도 접근할 수 없도록 하기를 원치 않습니다. |
| |
코드를 처리하는 거죠. 그런 종류의 일이죠. 클라이언트가 암호화된 코드를 받을 수 있도록 암호화되지 않은 코드를 전달할 수도 있지만, 최종 사용자에게 전달할 때는 일반적으로 모든 것을 암호화해서 변조를 방지해야 합니다. 그런 종류의 일 중 하나죠. |
| 빈스 폴러 |
네, 데모는 여기까지입니다. 웨인, 마무리를 위해 다시 가져가고 싶으시면 말씀해 주세요. |
| 웨인 레빈 |
네, 훌륭하죠. |
| |
네, 정말 고맙습니다, 빈스. 이 전체 시스템에는 움직이는 부분이 많기 때문에, 기본적으로 우리가 |
| |
아시다시피, 여러 사용자가 서로 충돌하지 않고 개발하는 코드입니다. 문서도 동시에 빌드하고 있죠. 실제로 문서는 애플리케이션과 함께 배포되므로, 별도로 추가할 필요가 없습니다. 즉... |
| |
자동으로 처리되도록 인프라를 설정했습니다. 코드와 함께 이를 동시에 포괄적으로 업데이트할 수 있습니다. |
| |
원한다면 말이죠. 진행 중인 Hamcrest 테스트, 작성된 각 함수, |
| |
말하자면, 예상된 결과가 있죠. 그래서 그 결과들을 비교했는데, 잠깐, 그 방정식에 뭔가 문제가 있었던 것 같습니다. R 제곱 같은 게 다른 값으로 나왔는데, |
| |
그래서 다시 말해, 뭔가 잘못됐다고 말하려고 했는데, 이 함수에서 이런 출력을 기대했거든요. |
| |
사용 사례에 대한 것입니다. 클라이언트로부터 받는 것 중 하나가 바로 Hamcrest 테스트로 변환할 사용 사례 풀을 구축하는 것입니다. 여기에 다른 슬라이드도 있습니다. |
| |
슬라이드를 다운로드하시면 언제든지 이용하실 수 있습니다. 슬라이드는 다운로드하실 수 있도록 남겨두겠습니다. 파이프라인의 작은 사진도 보여드리겠습니다. |
| |
우리가 사용하고 있는 것과 개발자를 위한 코드 검토 활동에 대한 내용도 간략하게 말씀드리겠습니다. 이 내용에 대해 서로 의견을 나누고 싶으시다면, 빈스 씨, 코드 검토 및 승인 절차에 대해 추가하실 말씀이 있으신가요? |
| 빈스 폴러 |
네, 그래서 병합 요청 내부에서 |
| |
코드의 diff에 JSL 코드가 표시됩니다. 그리고 다시 한 번 큰 |
| |
감사합니다 |
| |
Hamcrest를 만든 사람들도 그렇습니다. 그들은 GitHub과 GitLab에서 JSL을 읽을 수 있도록 렉서(?)를 시작했기 때문입니다. 사실 이건 getlab 내부에 있습니다. |
| |
JSL도 읽을 수 있습니다. JSL을 실행하지는 않지만, 멋진 서식을 제공합니다. 단순히 흰색 텍스트만 있는 게 아니라, 정말 아름답습니다. 바로 들어가 볼까요? |
| |
이 스크린샷처럼, 줄을 클릭하고 원하는 주석을 입력하면 검토 가능한 작업이 됩니다. 그래서 저희는 GitLab 내에서 최대한 많은 작업을 하려고 노력합니다. |
| |
투명성을 위해 |
| |
모든 작업이 완료되면 "네, 병합 요청을 보낼 준비가 되었습니다."라고 말할 수 있습니다. 이제 마스터 브랜치와 메인 브랜치에 넣어 보겠습니다. |
| 웨인 레빈 |
굉장하네요. 그러니까 정말 도움이 되는 거죠. 우리가 코딩 표준을 정의하고 있는 거잖아요. |
| |
'강제'라는 단어는 마음에 들지 않지만, 결국 그게 전부입니다. 그리고 이는 변동성을 줄여줍니다. 여러 개발자가 무엇을 해야 할지 더 쉽게 이해할 수 있게 해줍니다. |
| |
다른 사람들이 했던 일을 합니다. 그리고 새로운 개발자들을 합류시키면서, 그들은 표준을 이해하고 무엇을 찾아야 할지, 무엇을 해야 할지 알게 됩니다. |
| |
그래서 온보딩이 훨씬 쉬워지고, 다시 한번 말씀드리지만... 모든 것이 여기에 연결되어 있어서 지원 가능성 등을 알 수 있습니다. |
| |
이건 제가 앞서 말씀드린 슬라이드인데, 몇 가지 자료만 보여드리려고 GitLab을 사용하고 있습니다. GitHub 같은 다른 Git에도 일반적으로 같은 원칙이 적용된다고 생각합니다. Hamcrest 커뮤니티 링크는 여기 있습니다. |
| |
투싼에서요. 2019년, 옛날에 우리가 여행하고 모이곤 했던 시절이었죠. 정말 즐거웠어요. 그리고 비주얼 코드 스튜디오의 마켓플레이스 링크는 여기 있습니다. |
| |
Visual Studio Code, 뭐 있나요? |
| |
빈스가 말했듯이, 네, 저희는 JMP 내장 편집기를 사용하는 대신 그 편집기를 많이 활용합니다. 모든 기능이 통합되어 있으니까요. 그러니까... |
| |
이 모든 것은 하나의 거대한 애플리케이션 개발 환경의 일부일 뿐입니다. 빈스와 저는, 빈스와 저를 대표하여, 이 프로젝트에 관심을 가져주셔서 진심으로 감사드리고, 다시 한번 JMP 팀, 저스틴 칠튼과 회사, |
| |
내가 너한테 전화할게. 햄크레스트가 없었다면 우리는 이 일을 하지 못했을 거야. 그게 |
| |
누락된 부분이거나 JSL 개발을 실제로 진행할 수 있도록 하는 지원 부분이었습니다. |
| |
기본적으로 업계에서 일반적으로 코드 개발에 기대하는 표준과 같은 거죠. 그래서 저희는 정말 감사하게 생각하고, 저희의... |
| |
아시다시피, 우리가 배포한 각 애플리케이션에 이 내용이 전파됩니다. 그리고 이 시점에서 빈스와 저는... |
| |
info@predictum.com으로 보내주시면 저희에게 전달해 드리고 다시 연락드리겠습니다. 하지만 지금은 Q&A로 답변드리겠습니다. |