| 스피커 |
성적 증명서 |
| 마이클 아커만 |
크리스티. |
| 크리스티 스페인 |
안녕하세요, 마이클. 잘 지내시죠? |
| 마이클 아커만 |
어떻게 지내세요. |
| 크리스티 스페인 |
좋습니다. 이메일을 마무리하겠습니다. 제가 이해하지 못해서 죄송합니다. |
| 마이클 아커만 |
네, 컴퓨터 설정을 간소화해서 아무것도 핑이 발생하지 않도록 하고 있어요. |
| 크리스티 스페인 |
내가 툴바에 무엇을 눌렀는지 알아? |
| |
나는 모든 것을 다 가지고 있다고 생각한다. |
| |
주말은 어떻게 보내셨나요? |
| 마이클 아커만 |
좋았어요. 잘 지내셨어요? 주말은 어떠셨나요? |
| |
좋은. |
| 크리스티 스페인 |
그럼 당신은 어둠 속에서 사는군요. |
| 마이클 아커만 |
헬렌이 우리를 기다리고 있어요. |
| |
네, 본사와 아주 가까워서 실제 디스커버리 서밋에 갈 수 있었어요. |
| |
직접 그 자리에 있음. |
| |
그것도 실망스러웠지만요. |
| |
네, 그렇죠. |
| 크리스티 스페인 |
안녕하세요 좋은 아침입니다. 잘 지내세요. |
| 남자 |
좋은 일을 하고 있어요. |
| 마이클 아커만 |
요한, 나도 내 뒤에 당신처럼 학식 있는 벽을 세워야겠어. |
| 남자 |
저는 클릭을 넣었습니다. |
| |
이 책과 대니의 책이 거기에 있어서 알아볼 수 없을 거예요. |
| 크리스티 스페인 |
좋아 보이네요. |
| |
지난주에 혼란을 드려 죄송합니다. |
| |
두 분을 온라인으로 만나 뵙게 되어 기쁩니다. |
| |
저는 노바 존을 지원하는 프리미어 팀의 일원이기 때문에 어차피 당신들에게 배정되어야 할 사람이 아니라고 생각합니다. |
| |
글쎄요, 몇 가지 살펴봐야 할 게 있는데요. 두 분 모두 디스플레이를 2010년 19일로 설정해 놓으셨나요? |
| |
그래요. |
| 남자 |
다시 한 번 확인해 보겠습니다. |
| 크리스티 스페인 |
엄청난. |
| |
그리고 |
| |
사운드가 좋다면 로고를 착용하는 사람은 없을 거라고 말하고 싶습니다. |
| |
저작권 침해가 될 수 있는 항목이 보이지 않도록 하세요. 저 뒤에 있는 책이 문제가 될지는 모르겠습니다. |
| |
네, 그렇게 하죠. 혹시 모르니까요. |
| 마이클 아커만 |
그 중 하나는 JMP 디스커버리 서밋의 전 기조 연설자로부터 형성되었습니다. |
| 남자 |
누구인가. |
| 마이클 아커만 |
아, 그가 와서 그 설명에 대해 말했어요. |
| 크리스티 스페인 |
아, 그 책이 있어요. |
| 마이클 아커만 |
네 네. |
| 남자 |
저는 그렇지 않아요. |
| |
이메일에서 저장한 것은 없지만, 이메일에서 바로 꺼내올 수도 있습니다. |
| 마이클 아커만 |
웹캠을 팔에 달아서 앞으로, 뒤로, 위아래, 좌우로 움직일 수 있게 하면 영원히 그것을 만지작거리는 것과 같을 겁니다. 왜냐하면 내가 그것을 움직일 수 있기 때문입니다. |
| 크리스티 스페인 |
아, 좋은 생각이네요. |
| |
한 번도, 한 번도 나를 올바른 장소에서 본 적이 없어. |
| |
그리고 모두가 각자의 앱 Outlook을 팀으로 구성합니다. |
| |
그렇게요. |
| 마이클 아커만 |
가까운 팀에는 아무런 알림도 전달되지 않습니다. |
| 크리스티 스페인 |
그리고 당신에게는 30분이 주어졌죠? 맞나요? |
| 마이클 아커만 |
제가 이해하는 바로는 그렇습니다. |
| 크리스티 스페인 |
그리고 당신들도 그럴 것인가. |
| |
이상적으로는 바로 시작해서 바로 끝까지 진행하고 싶습니다. |
| |
전환할 때마다 화면 공유 테스트를 하시겠습니까? |
| 마이클 아커만 |
제 화면과 당신이 화면에 나오는 화면을 번갈아가며 볼 예정이기 때문에, 먼저 제 화면을 공유하겠습니다. |
| |
소리를 공유할 필요가 없습니다. |
| |
그래서. |
| 마이클 아커만 |
다시 돌아가서 여기서 시작해 봅시다. |
| 크리스티 스페인 |
안녕 알렉스 맞아요. |
| |
좋아요. |
| 마이클 아커만 |
그래서 우리는 그걸 했고 그걸 했고 그걸 했고 그런 다음 우리는 당신에게 넘겨졌습니다. |
| 남자 |
네, 우리가 화면 공유를 직접 제어할 수 있을까요? 프로듀서라는 사람을 이용하면 됩니다. |
| 크리스티 스페인 |
네, 그렇게 해야 할 것 같아요. |
| |
오, 배경이 멋지네요. |
| 남자 |
감사해요. |
| 크리스티 스페인 |
내가 그걸 가져야 해요. |
| 마이클 아커만 |
우리가 더 통일될 수 있을 것 같아요. |
| 남자 |
아니요, 우리는 우리만의 개인이 있어야 합니다. 저는 그렇지 않았습니다. |
| |
예. |
| 크리스티 스페인 |
네, 마이클에 대해 이야기해 보죠. |
| 남자 |
응. |
| |
제가 화면에 많이 나오지는 않을 것 같아요. 대부분 이야기하고, 그다음에 화면 공유를 할 거예요. |
| 마이클 아커만 |
화면을 공유하는 동안 무엇이 보일지 잘 모르겠습니다. |
| 크리스티 스페인 |
음, 녹음 파일을 받을 때마다. |
| |
저는 네 가지를 얻었습니다. |
| |
버전 중에는 당신을 포함하는 버전도 있고 포함하지 않는 버전도 있고, 제프 퍼킨슨이 모든 것을 편집할지 확신할 수 없으므로 그가 어떤 버전을 선택할지 모르겠습니다. |
| |
그는 연설자에게 그것을 보여주고 싶어한다고 생각합니다. |
| 마이클 아커만 |
화면에 보이는 것 같아요. |
| |
그런데 마우스 오른쪽 버튼을 클릭하면 아이콘을 끌 수 있어요. |
| 남자 |
혼란스러운 창을 관리하는 방법은 다음과 같습니다. |
| 크리스티 스페인 |
음, 정말 그렇게 어려운 일인가요? |
| 남자 |
아, 그렇군요. |
| |
그럼 마우스 오른쪽 버튼을 클릭하고 보세요. |
| 마이클 아커만 |
응, 괜찮다고 생각했어. 멋지다. |
| |
정확히 어디인지 기억이 나지 않거든요. |
| |
저는 바탕 화면에서 아이콘을 켜본 적이 없고, 그냥 설치만 해두었어요. 그래서 아이콘을 켜면 그냥 꺼져요. |
| 남자 |
응. |
| 크리스티 스페인 |
그러니까, 마이클, 끝나면 그냥 "알았어"라고 말하고 화면 공유에서 넘겨주면 돼요. 그러면 거기서부터 시작하죠. 휴식을 취하지 않을 거예요. 다시 말해, 그렇죠. |
| 마이클 아커만 |
그리고 내 방에는 노란색 필터가 달려 있어요. |
| 크리스티 스페인 |
오, 당신이 좋아하는 붉은 빛이 있군요. |
| 마이클 아커만 |
하지만 그럴수록 우울해지죠. |
| 크리스티 스페인 |
저는 그런 것에 투자한 적이 없습니다. 제 책상이 너무 작고, 여기 공간이 꽤 많습니다. |
| 마이클 아커만 |
네, 저는 일찍 독립했는데 사장님이 제 마이크 품질과 카메라 품질에 대해 계속 불평하셨어요. 그래서 '좋아요, 새로운 마이크 카메라를 사주시겠어요?'라고 말했죠. |
| 크리스티 스페인 |
잘됐네요. 저는 이 새로운 헤드셋을 사지 않았어요. |
| 마이클 아커만 |
그럼, 제가 문을 빨리 닫을게요. |
| 크리스티 스페인 |
아, 알겠어요. 털이 많은 친구나 아이들이 돌아다니는 경우에는 중요하죠. |
| 남자 |
응 좋아. 둘 다 그렇지 않아. 응. 문을 닫아둘게. |
| 크리스티 스페인 |
그리고 요한 당신은 어디에 있나요? |
| 남자 |
회사에 대하여. |
| 크리스티 스페인 |
내 것보다 더 멋지다. |
| |
완전하다. |
| 남자 |
아, 그러셨군요. |
| 크리스티 스페인 |
내 친구 중에 결혼한 사람이 있어요. |
| |
코펜하겐 출신의 한 남자가 덴마크 출신이어서 우리는 그곳을 방문했습니다. |
| |
오, 그렇죠, 아름답죠. |
| 크리스티 스페인 |
좋아요, 여러분의 이름, 회사, 초록 제목을 말씀해 주시면 좋겠습니다. |
| |
그리고 이건 녹음용이 아닙니다. 이건 단지 제프가 당신의 것을 식별하기 위한 용도일 뿐입니다. |
| 마이클 아커만 |
이름은 물론입니다. 제 이름은 마이클 인크리먼트입니다. 저는 노보자임스 소속입니다. 초록 제목은 사진을 업로드하는 것만큼 쉽습니다. |
| |
포장과 청구서에 대한 내용이었는데 정확한 내용은 기억이 나지 않습니다. |
| 크리스티 스페인 |
괜찮아요. |
| 마이클 아커만 |
여러분. |
| 남자 |
그리고 제 이름은 유엔이에요. |
| |
또한, 의미가 없습니다. |
| 크리스티 스페인 |
그리고 우리는 이것을 녹음해서 Discovery Summit Conference에 게시할 것이고, 대중이 볼 수 있도록 할 것입니다. 이 녹음물을 그러한 용도로 사용하는 데 허가를 받았습니까? |
| 마이클 아커만 |
네, 그렇습니다. |
| |
당신이 갈 때. |
| 남자 |
아, 죄송해요. 죄송해요. 그냥 제 생각일 뿐이었어요. |
| 크리스티 스페인 |
알겠습니다. |
| |
먼저 카메라를 꺼두겠습니다. |
| |
아무도 나를 보고 싶어하지 않아요. |
| 크리스티 스페인 |
저희는 준비된 것 같은데, 여러분들은 준비되셨나요? |
| 마이클 아커만 |
그럼 화면부터 시작해볼까요. |
| 크리스티 스페인 |
아직 준비가 안 됐어요. 시간이 언제인지 봅시다. |
| |
909니까 기술적으로는 939까지 시간이 있지만요. |
| |
언제든지 준비가 되면 퓨즈가 끊어질 수도 있으니까요. |
| 마이클 아커만 |
안녕하세요 여러분, 오늘 "Y'All" 강연에 오신 것을 환영합니다. 이 강연은 Novozymes에서 자체 개발한 애드인 패키지 관리자로, 전 세계 회사 전체에서 JMP 애드인 공유, 업데이트 및 스크립트 유지 관리를 자동화합니다. 저는 Michael Akerman이고, 공동 발표자는 Johan Olsen입니다. |
| |
오늘은 Y'All에 대해 이야기하고 이 툴킷을 소개하고 싶습니다. 관심이 있는 분들은... |
| |
...개인적인 용도나 조직에서 사용하고 싶은 분들은 이 툴킷을 구하고 사용하는 방법과 툴킷의 기능을 알고 계실 겁니다. 그럼 먼저 저희가 누구이고 왜 Y'All을 만들었는지에 대해 이야기해 보겠습니다. |
| |
...Y'All의 주요 기능과 사용자 경험에 대해 말씀드리겠습니다. Johan이 이 툴킷을 사용할 때 사용자가 무엇을 보게 되는지 설명해 드리겠습니다. |
| |
사용자가 Y'All 툴킷과 상호 작용할 때 툴킷 뒤에서 무슨 일이 일어나는지 자세히 알아보고, 요약과 재점검을 한 후, 귀하의 조직에서 Y'All을 도입하는 데 도움이 되는 몇 가지 팁을 알려드리겠습니다. 귀하의 목적에 흥미가 있으시다면요. |
| |
저희는 노보자임스(Novozymes)라는 회사의 데이터 과학자입니다. 공동 발표자는 요한 올슨(Johan Olsen)입니다. 그는 농업 및 산업 바이오솔루션 응용 연구 분야의 데이터 과학자입니다. |
| |
저는 Novozymes에서 같은 그룹의 선임 데이터 과학자입니다. Y'All 관련 문의나 다른 문의 사항이 있으시면 여기에 저희 연락처를 남겨두었습니다. 언제든지 편하게 연락 주세요. |
| |
요한의 이메일 주소는 jpko@novozymes.com이고, 그는 JMP 사용자 커뮤니티의 JPKO입니다. 저는 mxak@novozymes.com입니다. |
| |
Michael Akerman Michael mxak은 JMP 사용자 커뮤니티에 있습니다. Y'All에 대한 질문이나 후속 조치, 의견이 있거나 우리가 구축한 것과 작업 중인 것을 개선할 방법이 있으면 언제든지 연락해 주세요. |
| |
저희는 노보자임스에서 일합니다. 노보자임스는 글로벌 생명공학 기업입니다. 저희는 지속가능성을 위한 생물학적 솔루션을 개발합니다. |
| |
... 전 세계 모든 산업 분야의 성과를 개선하고 비용을 절감합니다. 농업 및 바이오 연료, 가정용품, 식음료, 동물 건강 등 다양한 산업을 지원합니다. |
| |
...이러한 생물학적 솔루션을 통해 말이죠. 저희는 전 세계적으로 6,000명이 넘는 직원을 보유하고 있으며, 그중 수백 명이 JMP를 사용하고 있습니다. |
| |
그리고 제가 이 말씀을 드리는 이유는 우리가 지원하고 함께 일하는 JMP 사용자 집단이 정말 많기 때문입니다. 그들은 모두 JMP를 사용하고 JMP에서 여러 가지를 구축하고 있습니다. 이것이 여러분에게 큰 영감을 주는 것입니다. |
| |
우리 회사의 목적은 "성장하는 세상에서 더 나은 삶을 위한 생물학적 답을 함께 찾고, 내일을 다시 생각해 보자"입니다. |
| |
제가 말씀드렸듯이 Novozymes에는 매우 큰 규모의 JMP 사용자가 있습니다. |
| |
그래서 우리는 JMP 스크립트와 JMP 추가 기능을 사용하여 작업하는 것을 더 쉽게 만들고, 코드의 재사용성과 검색성을 높이고 싶었습니다. |
| |
우선, 업데이트를 쉽게 만들고 싶었습니다. Novozymes 전체에서 사람들이 스크립트를 이메일로 주고받는 것을 확인했습니다. |
| |
개인 네트워크 드라이브에 JSL 파일을 전송하는 사람들도 있었고, 플래시 드라이브에 저장해서 돌려보는 사람들도 있었습니다. 저희는 새 JMP 스크립트와 업데이트된 JMP 스크립트를 최대한 간편하게 배포하고 싶었습니다. |
| |
저희는 코드를 안전하게 보호하는 아카이브를 만들고 싶었습니다. JMP 사용자가 많기 때문에, 이 모든 작업은 조직에 큰 가치를 지닙니다. |
| |
따라서 모든 귀중한 코드를 저장하고 백업하고 보관하는 중앙 저장소가 필요합니다. |
| |
그리고 우리는 시간이 지남에 따라 버전을 추적하고 싶었습니다. 스크립트가 변경되고 개선됨에 따라 우리는 그 변경 사항을 보고 시간이 지남에 따라 변경 사항을 추적할 수 있기를 원했습니다. |
| |
그리고 우리는 스크립트를 쉽게 발견하고 재사용할 수 있도록 만들고 싶었습니다. JMP 개발자라면... |
| |
...만약 여러분이 JSL 스크립트를 작성하는 개발자라면, 다른 개발자가 작성한 관련 스크립트를 찾아 개선할 수도 있습니다. |
| |
어떤 필요에도 맞춰 이를 기반으로 구축하세요. 따라서 해당 스크립트를 가져와서 쉽게 구축할 수 있도록 하고, 조직의 다른 구성원들이 유용하게 사용할 수 있는 JSL 함수를 공유하고 가져오고 재사용하는 것도 편리하게 만드세요. |
| |
그래서 이를 실현하기 위해 세 가지 구성 요소를 마련했습니다. Python 빌드 스크립트, GitLab 인터페이스, 그리고 JSL 로드 및 업데이트 스크립트가 이 툴킷에서 모두 함께 작동합니다. |
| |
Python 빌드 스크립트는 Python 3 이상에서 실행되는 자동화된 스크립트로, JSL 파일을 자동으로 구문 분석하고 구조화하여 추가 기능 메뉴 구조로 만듭니다. |
| |
또한 추가 기능 정의 파일을 작성합니다. 재사용 가능한 모든 유틸리티 함수를 JMP 스크립팅 인덱스와 JMP IDE에 추가하는 사용자 지정 함수 스크립트를 생성하고, 이를 모두 .jmpaddin 파일로 압축하여 사용자가 사용할 수 있도록 합니다. |
| |
GitLab은 사용자가 애드인 스크립트와 상호작용하고 애드인 빌더 자체를 사용할 수 있도록 하는 인터페이스입니다. GitLab은 GitHub의 오픈 소스 대안이자 경쟁사입니다. |
| |
저희는 이것을 Novozymes 내부적으로 게시했는데, 이 중앙 저장소에 스크립트를 업로드하기 위한 정말 쉬운 포인트 앤 클릭 사용자 인터페이스를 제공합니다... |
| |
...모든 스크립트가 저장되고 실제로 빌드가 발생하는 곳입니다. |
| |
CICD 파이프라인은 Continuous Integration Continuous Distribution의 약자로, Python 빌드 스크립트를 자동으로 실행하고 릴리스 및 베타 버전 채널을 통해 추가 기능을 배포하므로 사용자는... |
| |
...꾸준히 품질 관리가 된 릴리스를 받을 수 있고, 개발자라면 이 툴킷에서 사용하는 각 스크립트의 최신 버전을 빠르게 릴리스할 수 있습니다. |
| |
마지막으로 JSL 로드 및 업데이트 스크립트가 있습니다. JMP가 열리고 이 추가 기능이 로드되면... |
| |
...확인할 수 있습니다. 선택한 채널(베타 또는 릴리스 채널)에서 새 버전을 확인하고 해당 추가 기능 패키지를 다운로드하고 업데이트하도록 제안합니다. 또한 사용자 지정 함수를 스크립팅 인덱스로 가져옵니다. |
| |
Y'All에서는 JMP 사용자라면 누구나 아주 쉽게 스크립트를 작성할 수 있습니다. 소셜 미디어에 사진을 업로드하는 것만큼 간편하죠. |
| |
사용자 인터페이스에 들어가서 업로드 버튼을 클릭하면 몇 초 만에 Y'All 베타 채널에서 사용할 수 있습니다. |
| |
스크립트에 대한 자동 버전 제어 및 저장 기능이 있고, 자동 또는 수동 JMP 추가 기능 업데이트도 있습니다. 따라서 JMP가 열리면 여러분이 업데이트를 제안할 것입니다. |
| |
...또는 사용자는 Y'All 메뉴를 통해 Y'All을 수동으로 업데이트할 수 있습니다. |
| |
스크립트를 업데이트하고 변경하는 동안 애드인의 최신 버전을 사용할 수 있도록 스크립트를 작성하는 개발자를 위해 신속한 빌드 및 테스트를 위한 베타 버전 채널이 마련되어 있습니다. 또한, 배포 및 품질 관리를 위한 릴리스 채널도 마련되어 있습니다. |
| |
이를 통해 검색 가능하고 재사용 가능한 JSL 파일이 제공되므로, Novozymes, Y'All 사용자들이 제출한 스크립트의 파일 구조를 살펴보고 내용을 확인할 수 있습니다. |
| |
...자신들이 원하는 목적에 가까운 스크립트를 찾아 자신의 목적에 맞게 수정합니다. |
| |
그리고 스크립팅 인덱스에 편리한 유틸리티 함수도 추가했습니다. 그에 대한 작은 스크린샷을 보실 수 있습니다... |
| |
...왼쪽에 JSL 편집기로 들어가서 빌드 스크립트가 자동으로 가져올 수 있고 재사용 가능한 함수를 JMP 스크립팅 인덱스에 추가합니다. 이 함수의 작동 방식과 사용 방법을 설명하는 간단한 문서 문자열이 있으면 함께 추가합니다. |
| |
데모 목적으로 Y'All에 포함된 코드 중 일부를 잠깐 언급하고 싶습니다. Novozymes에서 사용되는 코드의 대부분은 Novozymes 시스템에만 특화되어 있으며 회사 외부에서는 사용할 수 없습니다. |
| |
그래서 JMP 사용자 커뮤니티에 이미 있는 스크립트 몇 개를 가져와서 데모용으로 포함했습니다. Y'All에서 삭제하거나 보관하셔도 됩니다. |
| |
...원하는 대로. Xan Gregg와 Craige Hales가 만든 JSON 파서 스크립트가 있고, JMP Discovery Summit 2020에서 발표된 데이터 정리 스크립트 지원 도구도 있습니다... |
| |
...조던 힐러와 미아 스티븐스가 제작했습니다. 디스커버리 서밋 2020에서는 하이디 하드너와 세르케이 올메즈가 제작한 이미지 테이블 도구도 선보입니다. |
| |
Nick Holmes의 Color row selection.jsl, Byron Wingerd의 다중 Y축 차트, 그리고 JMP Discovery Summit에서 발표된 것으로 보이는 자동 검증 설정... |
| |
...작년에 마이크 앤더슨이 개발했고, Riffyn 데이터 수집 소프트웨어인 Riffyn Nexus에 사용할 수 있는 가져오기 기능 모음이 있습니다... |
| |
...Riffyn에서 개발하고 Riffyn 도구 JMP 애드인에서 허가를 받아 가져온 Riffyn 통합 API를 사용합니다. Novozymes에서 많이 사용하는 도구입니다. 다른 Riffyn 사용자분들도 이 코드를 자유롭게 사용하실 수 있도록 이 코드를 포함했습니다. |
| |
자, 이제 라이브 데모를 통해 사용자 경험과 Y'All 툴킷을 사용하면서 사용자가 보고 하는 일을 살펴보겠습니다. 이 부분은 공동 발표자인 요한에게 맡기겠습니다. |
| |
요한, 소리가 나지 않아요. |
| 남자 |
고맙습니다, 마이클. |
| |
죄송해요. 제 화면 공유할게요. |
| |
이거 보이시나요? |
| 남자 이름 |
예. |
| 남자 |
괜찮은. |
| |
마이클이 말했듯이, 저는 여러분께 Y'All을 사용하면서 겪는 사용자 경험을 설명해 드리겠습니다. |
| |
Y'All을 사용하는 건 세 가지 단계로 나뉩니다. 대다수의 사용자는 마치 JMP가 기본으로 내장된 플랫폼인 것처럼 사용합니다. 그들은... |
| |
...스크립트를 가리키고 클릭하여 원래 의도한 대로 실행해 보세요. 스크립트에 기여하는 꽤 큰 규모의 사용자 그룹도 있는데, 그들도 어떻게 하는지 살펴보고 있습니다... |
| |
간단한 스크립트를 기여하실 수 있습니다. 그리고 더 고급 기능을 담당하는 소규모 개발자 및 유지 관리자(?) 그룹도 있는데, 그 부분도 조금씩 지원해 드리도록 하겠습니다. |
| |
하지만 우선, Y'All의 진짜 간단한 사용법을 알려드리겠습니다. 설치는 GitLab 저장소에 생성된 빌드 아티팩트(??) 링크를 클릭하고 JMP 편집 파일을 다운로드한 후 JMP로 실행하기만 하면 됩니다. |
| |
이제 업데이트를 요청했는데, 이번에는 취소하려고 합니다. 메뉴 표시줄에서 볼 수 있듯이 Y'All 메뉴가 있습니다... |
| |
...마이클이 언급한 데모 스크립트 중 일부를 소개합니다. 이 스크립트들은 Y'All 패키지에 포함된 것이 아니라 데모 목적으로만 포함되어 있기 때문에 자세히 설명하지는 않겠습니다. 하지만 제가 할 일은... |
| |
...앗, 활성화해 주세요. 죄송합니다. 이미 활성화된 것 같습니다. 베타 테스트를 활성화해 주세요. 그러면 이제 우리가 몇 가지를 만들기 시작했으니 바로 볼 수 있을 겁니다. |
| |
대부분의 사용자는 베타 테스트를 비활성화한 상태이며, 주요 릴리스 이후 JMP를 열면 몇 주에 한 번씩 업데이트 메시지가 표시됩니다. 하지만 베타 테스트를 활성화한 사용자의 경우, 베타 브랜치가 하루에 여러 번에서 일주일에 두어 번 정도 업데이트될 수 있습니다. |
| |
그러니 일반 사용자에게는 기본적으로 이 정도가 적당합니다. |
| |
여기에 스크립트를 기여하고 싶다면 몇 가지 방법이 있습니다. 하나는 GitLab UI를 이용하는 것입니다. 방금 본 메뉴 구조가 이제...에 반영됩니다. |
| |
...디렉토리 구조는... |
| |
...저장소. 그래서 새로운... |
| |
...메뉴나 하위 메뉴를 만드는 건 새 디렉토리를 만드는 것만큼 쉽습니다. 여기서는 이걸...라고 부르겠습니다. |
| |
..."시민" |
| 남자 |
그리고 추가하세요. |
| 남자 |
스크립트를 추가하고 싶다면 JMP IDE에서 간단히 만들면 되므로 매우 간단합니다. |
| |
안녕하세요. |
| |
이 정도면 충분할 것 같습니다. 사실, 메뉴 항목에 도구 설명을 보기 좋게 이름을 붙이는 등 약간의 세부적인 작업이 더 필요합니다. [???] 또는 코드 마법을 구현했는데, 주석 처리된 코드를 작성하면 이런 문제가 발생합니다. |
| |
당신은요. |
| |
메뉴 이름. |
| 마이클 아커만 |
여러분. |
| |
메뉴 이름. |
| 남자 |
Y'All 메뉴 이름 |
| 마이클 에이커먼 |
오랜 습관이에요. |
| 남자 |
안녕하세요라고 부르죠. 그럼 Y'all 툴팁이라고 부르죠. |
| |
좋습니다. 저장해 보겠습니다. |
| |
어디든, 어디 보자, 데스크톱으로. 그리고 여기에 업로드하면 돼요. |
| |
시험이었나요? |
| 마이클 아커만 |
대본이었지만 괜찮을 겁니다. |
| 남자 |
지금... |
| |
이 파일을 업로드하면 자동화된 [청취 불가] 파이프라인이 트리거됩니다. |
| |
[inaudible] 시스템은 먼저 저장소를 복제한 다음... |
| |
... 그런 다음 추가 기능을 빌드하면 JMP를 다시 시작할 때 메시지가 표시됩니다. |
| 남자 |
모든 편집 내용을 업데이트합니다. |
| 남자 |
업데이트를 선택하면 테스트 스크립트와 함께 데모 메뉴가 나타납니다. |
| |
JMP에 스크립트를 추가하는 가장 간단한 방법입니다. Git 사용에 익숙하다면 더 고전적인 Git 워크플로를 사용할 수도 있습니다. 여기서 배치 창을 열겠습니다. 잠깐... |
| |
저장소를 복제할 수 있습니다. 다시 돌아가서... 여기서 보여드리는 내용 중 일부는 GitLab을 사용하는 경우에만 해당됩니다. |
| |
하지만 다른 원격 저장소 코딩, 코드 호스팅 시스템에서도 비슷한 상황이 발생합니다. |
| |
이제 저장소를 복제하고 있으며, 로컬 시스템에 저장소의 완전한 미러본이 생성됩니다. 이전과 마찬가지로, 여기에서 디렉토리 구조가 미러본으로 표시되는 것을 볼 수 있습니다. 이제... |
| |
또 다른 대본. |
| |
이를 위해 Y'All 메뉴 이름이 개선되었습니다. |
| |
안녕하세요. |
| |
이번에는 어떨까.. |
| |
...대신 프롬프트를 엽니다. |
| |
안녕하세요 세상이라고 적혀있습니다. |
| |
이번에는 JMP에 포함된 내장 함수 중 하나를 사용할 수 있습니다. 스크립팅 인덱스로 가서... |
| |
...Y'All utils를 검색하세요. |
| |
그리고 errorModal 함수를 찾으세요. 여기에는 사용 방법에 대한 짧은 문서 문자열이 함께 제공됩니다. |
| |
그리고 이미 수입이 되었거든요... |
| |
Y'All utils errorModal |
| 남자 |
그리고 우리는 그저 안녕하세요 세상이라고 말할 수 있습니다. |
| 남자 |
이걸 봅시다. |
| |
우리 저장소에... |
| |
...데모에서. 그리고 코드를 푸시하세요. |
| |
이제 코드가 원격 저장소로 푸시되어 CICD 파이프라인이 트리거되고... |
| |
...초 안에 파이프라인이 실행되는 것을 볼 수 있어야 합니다... |
| |
...곧 될 거예요. |
| |
아직 시작하지 않았어요. |
| |
아마도 내가 조금... |
| |
...조급해. 자, 됐어. |
| |
그러니까, 당연히 Y'All에 들어가서 업데이트를 확인해 보면, 새 업데이트가 나올 거예요. 이게 다예요? |
| |
우리는 업데이트를 선택할 것입니다... |
| |
...추가 기능을 추가하면 이제 데모에서 개선된 Hello World를 볼 수 있습니다. |
| |
알겠습니다. 사용자 데모는 이걸로 끝난 것 같습니다. |
| 마이클 아커만 |
고마워요, 요한. 괜찮으시다면 화면 공유를 다시 맡겠습니다. |
| 남자 |
예. |
| 마이클 아커만 |
그리고 이 사용자 경험이 구현될 때, 그 이면에서 어떤 일이 일어나는지 자세히 알아보고 싶었습니다. 그래서 Visual Studio Code에서 이 코드를 살펴보겠습니다. |
| |
Zip 파일을 다운로드하시면 어디서든 보실 수 있습니다. 그리고 좀 더 보기 쉽게 하기 위해 잠깐 Zen 모드로 들어가 보겠습니다. 자, 시작해 볼까요? |
| |
요한이 스크립트를 업로드할 때마다 실행되는 GitLab CICD 파이프라인이 여기 있습니다. 요한이 Git 저장소에 들어갔을 때... |
| |
...그리고 그는 플러스 버튼을 눌러 스크립트를 업로드했고, 그 스크립트가 CICD 파이프라인을 작동시켰습니다. 즉, 서버가 해당 상황에 어떻게 반응해야 하는지 정의하는 작은 스크립트입니다. |
| |
사전 단계와 빌드 단계... |
| |
...Git 저장소와 그 안에 있는 모든 파일, Johan의 새 스크립트를 포함한 모든 파일을 작업 디렉토리에 복제했습니다. |
| |
...러너라고 불리는 이 처리 모듈이 해당 코드에서 작동할 수 있습니다. 그리고 코드를 빌드해서 빌드 단계를 실행하는데, 여기서... |
| |
CD(디렉토리 변경)를 해당 빌드 디렉터리로 옮기고 Python 빌드 스크립트를 실행합니다. 정말 간단합니다. 새 파일을 모두 작업 폴더로 복제하고, 해당 폴더로 이동한 후 Python 3에서 Python 빌드 스크립트를 실행하면 됩니다. |
| |
그럼 Python 빌드 스크립트를 살펴보겠습니다. Control Tab 키를 눌러서 build_yall.py로 이동하겠습니다. |
| |
코드가 꽤 많은데, 이 코드를 어떻게 살펴봐야 할지 가이드가 필요하다면, 이 process 함수까지 맨 아래로 스크롤하세요. def process라고 되어 있습니다. |
| |
이게 Y'All을 만드는 핵심 코드이고, 단계별로 차근차근 살펴보겠습니다. 진행하면서 이 부분을 살짝 살펴보겠습니다. |
| |
가장 먼저 Python 스크립트가 메뉴 계층 구조를 만듭니다. 그 내부를 살펴보겠습니다. src/scripts 아래의 폴더 구조를 살펴보는 중첩된 Python 사전을 만드는 것입니다. |
| |
...그리고 찾은 모든 JSL 파일을 해당 JSL 파일의 이름, 툴팁, 파일 위치가 포함된 사전으로 가져옵니다. 즉, 기본적으로 한 번에 한 폴더씩 중첩된 사전을 만들고 탐색하는 것입니다. |
| |
그런 다음 각 JSL 파일의 명령 이름을 확인합니다. 파일을 구문 분석하고 Johan이 스크립트 맨 위에 넣었던 Y'All 메뉴 이름과 Y'All 툴팁을 찾아... |
| |
...JMP의 애드인 메뉴에서 버튼 이름과 툴팁을 정의합니다. Y'All을 설치할 때마다 Y'all 메뉴가 표시되고, 각 메뉴의 이름과 툴팁에 마우스를 올리면 어떤 내용이 표시되어야 하는지 정의합니다. |
| |
Y'All 메뉴 이름이나 Y'All 툴팁 같은 마법 명령을 찾을 수 없으면 툴팁이 없는 스크립트 이름으로 대체됩니다. 따라서 Johan의 예시처럼 test.jsl은 test가 됩니다. |
| |
메뉴의 명령어 사전은 도움말 및 설정 메뉴를 제외하고는 알파벳순으로 정렬되어 항목을 쉽게 찾을 수 있습니다. 도움말 및 설정 메뉴는 항상 메뉴 맨 위에 표시되도록 맨 위에 팝업으로 표시됩니다. |
| |
도움말과 설정이 중요하기 때문입니다. 그리고 이 모든 정보는 JMPcust 파일에 기록됩니다. |
| |
따라서 .jmpcust 파일은 본질적으로 JMP에 대한 방법을 정의하는 일종의 마크업 언어 문서입니다. |
| |
어떤 메뉴 버튼이 있어야 하는지, 메뉴 자체는 어디에 있어야 하는지, 도구 설명은 어떻게 해야 하는지 등은 모두 이 .jmpcust 파일에 정의되어 있습니다. |
| |
Y'All로 Control 탭을 이동해서 어떻게 보이는지 확인해 보겠습니다. 말 그대로 메뉴에 대한 정의들이 잔뜩 들어 있는 거죠... |
| |
..그리고 메뉴의 이름과 내용은 다음과 같습니다. 도움말 및 설정 메뉴에는 Y'All 업데이트 확인, 베타 테스트 모드 켜기/끄기 등의 기능이 있습니다. |
| |
따라서 Python 스크립트는 jmpcust 파일 쓰기 함수를 사용하여 자동으로 이를 작성합니다. |
| |
그리고 추가 기능 정의 파일을 작성하겠습니다. addin.def와 version.txt 파일입니다. Addin.def 파일(이 부분은 다른 예시로 넘어가겠습니다)은... |
| |
...JMP가 추가 기능을 식별하고 버전 번호를 찾는 데 사용하는 설명과 지원되는 최소 JMP 버전입니다. |
| |
12라고 했죠. 12 이전의 문제는 신경 쓰지 않기 위해 임의로 정한 겁니다. 직접 파이썬 코드를 수정해서 사용할 수 있습니다. 보시다시피 추가 기능 버전도 여기에 정의되어 있습니다. |
| |
그리고 이것을 version.txt라는 파일에 쓰면 addin.def에서 본 것과 동일한 정수가 version.txt에도 들어갑니다. |
| |
그 이유는 원격으로 읽을 수 있는 작고 좋은 파일이기 때문입니다. 서버에서 HTTP를 통해 JMP로 열 수 있습니다... |
| |
...version.txt 파일에서 해당 버전 번호를 아주 빠르게 확인해서 현재 버전과 비교해 보세요. 현재 설치된 버전이 version.txt 파일과 일치하지 않으면... |
| |
...즉, 업데이트가 필요하다는 뜻입니다. 아니, 적어도 업데이트는 가능합니다. 사용하는 버전 번호는 UTC 시간대로 실행된 날짜와 시간입니다. |
| |
그리고 우리는 그것을 기본적으로 1970년 이후의 초로 변환합니다. 즉, 날짜 시간 형식으로 다시 변환할 수 있는 정수입니다. |
| |
두 숫자를 정수 기준으로 비교할 수 있어서 좋습니다. 두 숫자가 서로 큰지 작은지 쉽게 확인할 수 있고, 날짜 형식으로 다시 변환할 수도 있습니다. JMP에서 버전 번호를 저장하는 매우 효율적인 방법입니다. |
| |
마지막으로. |
| |
다음으로 할 일은, 심층적인 파일을 추가했으니, 사용자 지정 함수 스크립트를 만드는 것입니다. 좀 이상하고 설명하기 어려운 부분이 있지만, 최대한 빠르고 간결하게 설명해 드리겠습니다. |
| |
JMP에는 사용자 정의 함수를 정의하는 두 가지 방법이 있습니다. 하나는 JMP 스크립팅 언어에서 function이라는 함수를 사용하는 것입니다. 이 함수의 기능은 다음과 같습니다. 여기서는 Y'All의 utils.jsl과 importables 하위 디렉터리로 이동하겠습니다. |
| |
함수는 다른 위치에서 사용하고 호출할 수 있는 사용자 지정 함수를 정의합니다. 네임스페이스를 사용하여 이를 정의할 수 있습니다. 이 경우에는 Y'All utils라는 네임스페이스가 있습니다. |
| |
...함수 이름 recode if를 사용합니다. 그리고 이 함수는 다음과 같은 인수를 받고, 여기에 문서화 문자열과 함수 코드가 작성되어 있습니다. |
| |
JSL에서 사용자 정의 함수를 작성하는 두 번째 방법은 새로운 사용자 정의 함수인 function을 사용하는 것입니다. 이 함수는 function과 다릅니다. 이 함수는 JMP 14에 추가된 것으로 알고 있습니다. |
| |
새로운 사용자 정의 함수의 기능은 JMP 스크립팅 인덱스와 JSL IDE에 함수를 추가하여 해당 함수를 사용하고 다른 문서에서 해당 함수를 재사용하기가 매우 쉬워지는 것입니다. |
| |
따라서 이 함수의 장점은 JMP의 어떤 버전인지도 모르는 상태에서도 작동한다는 것입니다. |
| |
...JMP를 사용하기 전에는 그랬습니다. 새로운 사용자 정의 함수의 장점은 좀 더 강력해졌다는 점입니다. 또한, 설명서와 JMP 스크립팅 색인을 제공하고 JSL IDE에서 색상을 지정할 수 있다는 점도 장점입니다. |
| |
...코드 작성 시 유용한 팁을 제공합니다. 새로운 사용자 지정 함수도 좋지만, JMP 14 이전에도 JMP를 지원하고 싶습니다. 그래서 빌드 스크립트는... |
| |
...여기서는 기본적으로 importables 디렉토리를 구문 분석하여 해당 함수와 일치하는 함수 정의를 찾습니다. |
| |
...JSL에서 문서화 문자열을 사용합니다. 즉, 슬래시와 별표 사이의 문서화 문자열을 파싱하여 새 사용자 정의 함수로 가져옵니다. 여기에서 예를 볼 수 있습니다. |
| |
우리는 recode if 함수를 가져와서 이제 Y'All utils 네임스페이스에 recode if라는 새 사용자 정의 함수로 자동으로 다시 작성합니다. |
| |
프로토타입, 설명, 그리고 이 모든 것이 표시되는 스크립팅 인덱스 범주가 있습니다. JMP 개발자는 이 모든 것을 자동으로 사용할 수 있습니다. 따라서 JSL에서 이전 함수인 function을 사용하여 작성하더라도 이 JMP 스크립팅 인덱스를 계속 사용할 수 있습니다. |
| |
...Y'All 빌드 스크립트를 자동으로 사용하여 기능을 구현할 수 있습니다. 여기 제 프로세스 코드로 돌아가세요. |
| |
이 모든 내용을 작성했으니 이제 애드인을 빌드합니다. JMP 애드인은 수정된 Zip 형식을 사용합니다. Python 3을 사용하여 압축하고 YALL.jmpaddin으로 이름을 바꾸면 CICD 러너가 작동하는 작업 디렉터리에서 사용할 수 있습니다. |
| |
따라서 빌드 스크립트가 완료된 후 CICD 파이프라인의 마지막 단계는 해당 작업 디렉토리로 이동하여 아티팩트를 업로드하는 것입니다. |
| |
빌드 아티팩트는 GitLab CICD 개념으로, YALL.jmpaddin과 version.txt라는 두 파일을 가져와 서버에 업로드하고 특정 URL을 통해 제공합니다. |
| |
따라서 해당 URL은 항상 일관되고 GitLab에서 이를 실행하는 브랜치에 연결됩니다. 즉, 베타 버전과 기본 릴리스 버전을 사용하는 경우입니다. |
| |
이제 JMP에서 -- 넘어가겠습니다, 하하!... |
| |
...autoUpgrade.jsl로 이동합니다. 여기서 애드인의 새 버전을 확인합니다. JMP가 로드되면 이 자동 업그레이드 스크립트를 실행하게 됩니다. |
| |
...GitLab 저장소에서 새 버전을 찾습니다. 베타 모드든 메인 모드든 베타 플래그를 로드하는 것을 볼 수 있습니다. |
| |
그리고 해당 모드에 맞는 특정 채널을 살펴봅니다. 그래서... |
| |
...해당 채널 선택에 따라 특정 URL에서 가져옵니다. 베타 모드에 있으면 베타 채널을 찾습니다. 메인 모드에 있으면 메인 채널을 찾습니다. 그리고 YALL.jmpaddin 파일과 version.txt를 찾습니다. |
| 마이클 에이커먼 |
이제 해당 버전 번호를 설치된 버전 번호와 비교해 보고, 다르면 사용자에게 업데이트를 요청하겠습니다. 요한의 화면에서 봤던 대화 상자를 띄워 보세요... |
| 마이클 아커만 |
...업데이트를 원하는지 묻고 버전 번호를 알려줍니다. 업데이트를 원하든 원하지 않든 선택할 수 있습니다. |
| |
그래서. |
| |
사실 이게 전부입니다. 모든 일이 사용자를 위해 백그라운드에서 진행됩니다. GitLab UI에서 스크립트를 업로드하고, 더하기 버튼을 눌러 파일을 업로드하고 새 파일을 빌드합니다. |
| |
...JMP 추가 기능, 여러분 JMP 추가 기능을 사용해서 같은 저장소에 연결된 다른 사용자도 사용할 수 있게 하세요. |
| |
이 모든 작업은 백그라운드에서 진행됩니다. 사용자는 JMP의 핫스팟에서 JMP 스크립트를 저장하여 GitLab 저장소에 업로드하는 것만큼 간단합니다. |
| |
그래서 저는 Y'All의 특징을 간략히 요약하고 싶었습니다. |
| |
스크립트 작성이 매우 간편합니다. 보시다시피, 파일 업로드와 JSL 스크립트 업로드, 그리고 이를 공개할 수 있는 편리한 사용자 인터페이스를 갖추고 있습니다. |
| |
자동 버전 관리 및 코드 보관 기능이 제공됩니다. 이 모든 작업은 Novozymes 서버에 저장된 중앙 GitLab 저장소를 통해 이루어지므로 모든 작업이 추적되고 저장됩니다. |
| |
...영구적으로 유지됩니다. 자동 업데이트 덕분에 개발자는 사용자에게 스크립트를 매우 쉽게 배포할 수 있으며, 항상 최신 버전을 유지할 수 있습니다... |
| |
...제대로 작동하고 품질 관리가 잘 되는 스크립트입니다. 베타 및 출시 채널도 있습니다. |
| |
베타 채널은 사실상 즉시 구축되어, 새 스크립트가 Y'All에 공개되는 즉시 몇 초 안에 사용할 수 있고 자주 업데이트될 예정입니다. 그리고 릴리스 채널은 좀 더 느리게 제어되는 릴리스 구조가 될 것입니다. 저희가 어떻게 하는지 간략하게 설명드리겠습니다. |
| |
GitLab 저장소의 브랜치 구조를 여기에서 확인하실 수 있습니다. 업데이트가 많이 포함된 베타 브랜치, 릴리스 브랜치, 그리고 메인 브랜치가 있습니다. Novozymes에서 하는 일은 전적으로 사용자의 선택에 달려 있습니다. |
| 마이클 에이커먼 |
...베타 브랜치가 릴리스할 시점에 맞춰서 가져옵니다. 베타 브랜치와 릴리스 브랜치 사이에 병합 요청을 열고 릴리스 브랜치로 옮깁니다. 이렇게 하면 화면 릴리스 브랜치가 사실상 정지됩니다... |
| 마이클 아커만 |
...코드 버전에서, 우리가 그 작업을 수행했고, 이로써 해당 릴리스 브랜치에서 코드가 잠겼습니다. |
| |
베타 버전은 아직 변경될 수 있습니다. 베타 버전에서 스크립트를 추가하고 변경할 수는 있습니다. 하지만 출시는 이제 동결되었습니다. 저희는 품질 검사를 진행하고, 준비가 완료되고 현재 상태에 만족할 때... |
| |
...우리는 그것을 메인 브랜치에 릴리스하고 거기에 병합했습니다. 이제 Y'All의 메인 브랜치 사용자들이 이용할 수 있습니다. |
| |
검색 가능한 코드가 있습니다. 모든 내용은 중앙 저장소의 파일 구조로 제공됩니다. 개발자는 스크립트를 살펴보고... |
| |
...비슷한 기능을 찾아 기반으로 개발하고 개선할 수 있습니다. 또한, 스크립팅 인덱스에 자동으로 추가된 유틸리티 함수가 개발자에게 자동으로 제공되어, 개발자가 해당 코드 블록을 재사용할 수 있도록 합니다. |
| |
...또는 데모로 포함시킨 데이터베이스 쿼리 같은 것들도 있습니다. 그러니까 Y'All을 살펴보면... |
| |
...Y'All이 설치된 JMP 스크립팅 인덱스의 네임스페이스입니다. 이를 사용하는 방법을 보여주기 위해 몇 가지 Postgres 데이터베이스 쿼리와 Postgres 데이터베이스 도구가 포함되어 있습니다. |
| |
이 모든 작업은 사용자가 만든 JSL 스크립트를 Y'All 사용자 기반의 다른 사람들과 공유하려는 JMP에서 시작하여 진행됩니다. |
| |
GitLab에 들어가서 사용자 인터페이스에서 Y'All에서 원하는 메뉴 위치와 일치하는 하위 디렉터리에 업로드합니다. 예를 들어, demos demos test에 업로드하려면... |
| |
...src/scripts/demos/demos 하위 디렉터리에 해당 파일을 넣습니다. 그러면 자동 빌드 파이프라인이 실행되어 Python 빌드 스크립트를 실행하고, 이 스크립트가 구조를 분석하여 애드온을 빌드합니다. |
| |
...추가 기능을 GitLab 서버에 다시 업로드합니다. 그러면 JMP가 새 업데이트를 찾아 자동으로 다운로드하고 JMP에서 Y'All 추가 기능을 업데이트하도록 제안합니다. 그리고 해당 스크립트는 베타 채널의 사용자에게 몇 초 안에 제공됩니다. |
| |
Y'All에 대한 기대가 크시기를 바랍니다. Y'All을 직접 또는 소속된 조직에서 활용하는 데 관심이 있으시기를 바랍니다. 혹시 관심이 있으시다면, Y'All을 시작하는 방법에 대한 몇 가지 팁을 알려드리고자 합니다. |
| |
JMP 사용자 커뮤니티에 게시된 Zip 파일(이 영상을 시청하고 있다면 같은 페이지에 있을 겁니다)에는 시작하는 데 필요한 모든 요소가 포함되어 있습니다. 일부 요소는 수정이 필요하며, 일부는 데모 코드로 제공되어 직접 사용해 볼 수 있습니다. |
| |
하지만 자유롭게 다운로드하여 확인해 보세요. 해당 Zip 파일의 Python 빌드 스크립트는 네이티브 Python 3 라이브러리를 기반으로 빌드되었습니다. 저희 빌드 시스템에는 Python 외에는 아무것도 설치되어 있지 않습니다. 그리고 모든 표준 Python 3 설치 환경에서 실행될 것입니다. |
| |
CICD를 위한 GitLab의 중앙 저장소 저장 및 자동화 기능은 다른 공급업체를 통해 제공됩니다. GitLab, GitHub, Azure, AWS 모두 유사한 구현 방식을 사용합니다. |
| |
다양한 옵션이 존재하는 거대한 생태계가 존재하므로 구현 세부 사항은 귀하의 조직에 맞게 달라집니다. |
| |
안타깝게도 CICD 파이프라인 파일인 gitlab-ci.yml을 자체 시스템에서 자동화된 방식으로 실행하려면 수정이 필요합니다. Novozymes 직원이 아니라면, 기존 시스템에서는 작동하지 않을 것입니다. |
| |
내부 베타 데이터베이스를 반영하는 유틸리티 함수의 모든 연결 문자열은 ODBC my underscore connection underscore 문자열로 대체되었습니다. |
| |
이러한 함수를 사용하려면 작업 디렉토리의 코드로 가서 해당 문자열을 변경하여 데이터베이스를 반영해야 합니다. |
| |
다시 한번, Y'All에 대한 기대감을 갖고 계시길 바랍니다. Y'All에 관심 가져주시기를 바랍니다. 피드백, 질문, 의견이 있으시면 언제든지 저나 Johan에게 연락 주세요. |
| |
...그들과 함께. 또한, 이 코드를 개선하거나 이 툴킷을 흥미로운 방식으로 활용한다면, 여러분의 기여를 기다립니다. 감사합니다. |
| 크리스티 스페인 |
알겠습니다. 좋은 정보네요. |
| 마이클 아커만 |
시간. |
| 크리스티 스페인 |
합리적이고 완벽하죠. 그렇죠. |
| 마이클 아커만 |
그렇죠. |
| |
요한이 JMP가 원하지 않는다고 말한 건 중요하지 않아. |
| 크리스티 스페인 |
알잖아. |
| 마이클 아커만 |
제 생각에는 대부분 사람들이 감염되지 않을 것 같아요. |
| 크리스티 스페인 |
새로운 단어인데 좋네요. |
| 남자 |
그래서 그걸 사용하지 말라고 해서 이름을 바꿔야 했고, 제가 가지고 있던 버전을 삭제하지 않아서 당황했습니다. |
| |
이전에 설치됨. |
| |
그래서 제가 이미 베타 버전이라는 걸 깨달았을 때 좀 당황스러웠고, 그러다가 그냥. |
| |
어쨌든. |
| 크리스티 스페인 |
네, 괜찮다고 생각하지만, 정말 흥미로웠어요. 사람들이 이걸 보고 좋아할 것 같아요. 참여해 주셔서 정말 감사합니다. |
| |
제가 말씀드렸듯이, 제프가 편집할 수 있도록 영상을 업로드할 예정입니다. 언제 완료될지는 잘 모르겠지만요. |
| |
어쨌든 여러분은 10월에 모든 것을 보게 될 거예요. 하지만 무슨 일이 생기면 꼭 알려드릴게요. |
| |
다시 한번 감사드립니다. |
| 남자 |
당신은 일반적인 JMP에 대한 새로운 종류를 가지고 있습니다. |
| 마이클 아커만 |
당신이 다른 곳에 있다고 말하는 건 그냥 그런 거예요. |
| |
응. |
| 남자 |
Y'All 디렉토리. |
| 크리스티 스페인 |
네, 정말 고맙습니다. 그럴 거라는 걸 알아요. |
| |
질병에 대한 많은 연구가 이루어지고 있으며, 우리는 그것에 감사하고 있습니다. |
| 마이클 아커만 |
기쁩니다. |
| |
감사합니다. |
| 마이클 아커만 |
다음 것 다음으로 빠르게 이동합니다. |
| 크리스티 스페인 |
네, 물론 두 분을 만나서 정말 기뻤습니다. |
| |
다음에는 꼭 그럴 수 있기를. |
| |
마이클이라면 적어도 직접 만날 수 있을 거야, 요한, 나도 거기 가서 만나고 싶어, 하지만. |
| |
응. |
| 마이클 아커만 |
그가 프레젠테이션을 하고 있는지, 특히 그가 모든 정상회담이나 과거에 직접 참석했던 일이라면 항상 알 수 있죠. 롤리에서 모든 것이 열린 주에 있었던 일이라서 일주일 내내 할 수 있는 일도 있었어요. |
| |
컴퓨터 컨퍼런스. |
| |
그리고 지역 직원들이 많이 있는 걸 봤어요. |
| 남자 |
그러면 여행 예산에 대해 논쟁하는 게 더 쉬울 수도 있겠네요. |
| 크리스티 스페인 |
둘은 하나면 옳다. |
| |
응. |
| 남자 |
괜찮은. |
| 크리스티 스페인 |
그럼, 여러분 월요일의 나머지 시간도 즐겁게 보내시고 좋은 주말 보내시길 바랍니다. 감사합니다. |
| |
당신도 곧 다시 이야기할 수 있을 거예요. |
| 남자 |
안녕. |
| |
안녕. |