25. 실습 · 나만의 링크 모음
이번에 만들 결과
예시 링크를 모아 보여 주고, 검색하고, 새 항목을 넣고, 같은 브라우저에서 다시 여는 화면을 만듭니다. 소개 페이지와 다른 새 작업에서 시작합니다. 앞에서 만든 결과는 그대로 보관합니다. 한 번에 전체 기능을 요청하지 않고 목록·검색·추가·저장 순서로 진행합니다.
각 단계가 끝나면 현재 되는 기능을 한 줄로 적어 둡니다. ‘목록 표시 확인’, ‘검색어 삭제 시 전체 목록 확인’처럼 기록하면 어디까지 잘되었는지 찾기 쉽습니다. 링크 모음 완성 예시는 동작을 비교할 때 참고할 수 있지만 처음부터 똑같은 색과 기능을 모두 만들 필요는 없습니다.
완성 모양부터 보기
링크 모음 예시를 새 탭에서 열기. 책에서 만든 예시이며 입력한 연습 자료는 이 예시 안에서만 쓰입니다. 저장·새로고침은 새 탭의 같은 주소에서 시험하세요. 내 결과에는 이름·주소 입력칸, 추가 버튼, 검색칸, 목록이 있으면 됩니다.
1. 예시 목록 만들기
새 작업 이름을 ‘나의 링크 모음’으로 정합니다. 실제로 중요한 자료 대신 아래의 예시 항목으로 시작합니다. 요청문을 보내고 결과 미리보기에서 이름과 분류가 나타나는지 봅니다.
아래 글을 복사해 AI 대화창에 붙여 넣으세요. [ ] 안의 내용은 내 상황에 맞게 바꿉니다.
두 항목이 보이고 이름과 주소가 맞는지 확인합니다. 여기서 목록이 비어 있거나 화면이 열리지 않으면 다음 기능을 추가하지 않습니다. 현재 증상을 설명하고 목록 표시부터 해결합니다.
2. 검색 넣기
목록이 확인되면 검색만 추가합니다. 이름에 들어 있는 글자로 항목을 찾도록 범위를 정합니다.
아래 글을 복사해 AI 대화창에 붙여 넣으세요. [ ] 안의 내용은 내 상황에 맞게 바꿉니다.
‘예시’를 입력하면 해당 이름의 항목이 보이는지 확인합니다. ‘없는이름’을 입력해 결과 없음 안내를 보고, 검색어를 모두 지워 두 항목이 돌아오는지 봅니다. 검색 결과가 없다고 원래 자료가 삭제되어서는 안 됩니다.
3. 새 링크 추가하기
검색이 유지되는 상태에서 이름·주소·분류를 입력할 칸과 ‘링크 추가’ 버튼을 요청합니다. 정상 입력뿐 아니라 빈 입력과 잘못된 주소의 처리도 함께 정합니다.
아래 글을 복사해 AI 대화창에 붙여 넣으세요. [ ] 안의 내용은 내 상황에 맞게 바꿉니다.
이름 ‘연습 링크’, 주소 https://example.org, 분류 ‘참고’를 넣어 추가합니다. 목록에 하나가 늘고 새 이름으로 검색되는지 확인합니다. 다음에는 이름을 비운 채 같은 동작을 해 안내가 나오는지 봅니다. 주소에 ‘주소아님’을 넣었을 때도 목록이 늘지 않아야 합니다. 이미 있는 주소를 다시 넣어 중복 안내를 확인합니다.
입력 오류 때 기존 목록이 사라졌다면 추가 기능만 다시 확인해 달라고 합니다. 현재 데이터를 전부 초기화하는 해결을 바로 선택하지 않습니다. 단계별로 어느 입력에서 문제가 생겼는지 적어 전달합니다.
4. 같은 브라우저에 저장하기
추가와 검색이 확인되면 현재 목록을 다시 불러오도록 요청합니다. 저장은 앞에서 배운 브라우저 범위에 한정합니다.
아래 글을 복사해 AI 대화창에 붙여 넣으세요. [ ] 안의 내용은 내 상황에 맞게 바꿉니다.
‘저장 연습’이라는 항목을 사용하지 않은 예시 주소와 함께 추가합니다. https://example.net을 사용할 수 있습니다. 새로고침하고 같은 항목이 남는지 확인합니다. 같은 작업을 다시 열었을 때도 비교합니다. 저장 제한 안내가 나오면 ‘저장 확인 보류 — 29장 5단계에서 재검사’라고 적습니다. 저장이 확인되기 전에는 이 실습을 완료한 것으로 표시하지 않습니다. 브라우저 보안 설정을 전부 끄는 방식으로 해결하지 않습니다.
5. 목록을 파일로 보관하기
지금부터는 예시 자료만 사용합니다. 먼저 현재 목록을 파일로 받는 기능 하나를 추가합니다. JSON은 목록의 이름과 주소를 담아 두는 자료 형식입니다. 직접 코드를 작성할 필요는 없습니다.
아래 글을 복사해 AI 대화창에 붙여 넣으세요. [ ] 안의 내용은 내 상황에 맞게 바꿉니다.
내보내기 버튼을 누르고 다운로드 목록에서 links-backup.json의 이름과 보관 위치를 확인합니다. 화면에 ‘내보냈습니다’라고 표시되어도 파일이 실제로 받아졌는지는 별개입니다. 다운로드 목록에 파일이 없다면 6단계에서 항목을 지우지 마세요. ‘백업 파일 확인 보류’라고 적고, 미리보기의 다운로드 제한인지 29장 5단계의 공개 주소에서 다시 확인합니다.
현재 목록을 links-backup.json으로 내보냅니다.
파일 이름과 보관 위치를 직접 찾습니다.
연습 항목을 지운 뒤 방금 받은 파일을 선택합니다.
6. 지운 연습 항목을 되찾기
아래 글을 복사해 AI 대화창에 붙여 넣으세요. [ ] 안의 내용은 내 상황에 맞게 바꿉니다.
목록에 ‘연습 링크’ 한 항목을 추가하고 다시 내보냅니다. 그 항목만 삭제한 뒤 불러오기 버튼에서 방금 받은 파일을 선택합니다. 지운 항목이 돌아오고 나머지는 중복되지 않으면 복원이 된 것입니다. 새로고침해 복원한 항목이 남는지도 확인합니다. 파일을 다시 선택해도 항목 수가 늘어나지 않아야 합니다.
7. 잘못된 파일로 시험하기
버튼을 누른 뒤 브라우저의 다운로드 목록에서 파일 이름을 찾으세요. 내용이 화면에 열리면 링크를 오른쪽 클릭해 ‘링크를 다른 이름으로 저장’을 선택합니다. 파일 확장자는 바꾸지 않습니다. 받은 파일은 AI 대화에 첨부하는 것이 아니라 내가 만든 링크 모음의 불러오기 버튼에서 선택합니다.
버튼을 쓸 수 없을 때의 전체 주소:
- https://vibe-coding-beginner.vercel.app/examples/invalid-link-backup.txt
- https://vibe-coding-beginner.vercel.app/examples/invalid-link-backup.json
오류 시험용 텍스트 파일 받기를 눌러 내려받습니다. JSON 목록이 아닌 평범한 한 문장이 들어 있습니다. 개인 문서 대신 이 파일을 선택해 불러오기를 시험합니다.
파일 선택창이 JSON만 허용한다면 내용이 잘못된 JSON 시험 파일 받기를 사용합니다. 이름 끝은 .json이지만 내용은 올바른 JSON이 아닌 파일입니다. 어느 파일을 선택했는지 함께 기록합니다.
이유를 알리는 메시지가 나오고 기존 목록이 그대로 남아야 합니다. 빈 목록이 되거나 일부 자료만 바뀌었다면 그 상태를 AI에게 전달해 고칩니다. 큰 파일은 아직 넣지 말고, 허용할 크기와 제한 안내부터 정해 달라고 요청합니다.
분류별로 좁혀 보는 기능은 선택 활동입니다. 추가한다면 ‘전체’로 돌아왔을 때 항목이 모두 보이는지, 검색과 함께 적용되는지 규칙부터 정합니다. 필수 기능이 작동하기 전에 여러 선택 기능을 한꺼번에 붙이지 않습니다.
이 단계의 성공 모습
잘못된 파일을 선택하면 이유를 알려 주는 문구가 나오고, 선택 전의 링크 이름과 개수가 그대로 남아야 합니다. 성공적으로 불러왔다는 메시지가 나오거나 목록이 사라지면 수정이 필요합니다. 메시지 문구가 예시와 똑같을 필요는 없습니다.
확인 결과 남기기
| 행동 | 기대한 결과 |
|---|---|
| 검색어 입력 후 지우기 | 일치 항목만 보이다 전체 목록이 돌아옴 |
| 이름 없이 추가하기 | 이유를 알리고 목록은 유지 |
| 정상 항목 추가하기 | 새 항목이 보이고 검색도 됨 |
| 새로고침하기 | 저장이 지원되는 환경에서는 항목 유지 |
| 예시 항목 삭제 후 파일 불러오기 | 삭제한 항목이 복원되고 중복 없음 |
| 잘못된 파일 불러오기 | 오류를 알리고 기존 목록 유지 |
표의 모든 행동을 확인했을 때 완료입니다. 저장·다운로드·불러오기를 환경 때문에 확인하지 못했다면 보류로 남기고 29장 5단계에서 반드시 다시 확인합니다. 기능이 잘못 동작한 경우에는 수정 후 같은 행동으로 재검사합니다.
검색·추가·저장이 막힐 때
검색을 확인할 때 사용할 입력
아래 입력을 순서대로 넣고 각 결과를 확인합니다. 검색어를 바꿀 때 이전 값을 모두 지웠는지도 봅니다. 실제 목록 이름을 수정했다면 기대 결과도 그 이름에 맞게 바꿉니다.
| 넣을 값 | 기대한 결과 |
|---|---|
| 예시 | 이름에 ‘예시’가 있는 항목만 보임 |
| 웹 | 이름에 ‘웹’이 있는 항목만 보임 |
| 없는이름 | 결과 없음 안내가 보임 |
| 빈 입력 | 전체 목록이 다시 보임 |
| 앞뒤 공백이 있는 예시 | 앞뒤 공백을 제외한 검색이 적용됨 |
검색 결과가 비었을 때 새로 항목을 만들기보다 검색어부터 지웁니다. 전체 목록이 돌아오면 자료는 유지된 것입니다. 돌아오지 않으면 검색 표시와 원래 목록을 구분해 확인해 달라고 요청합니다. 자료를 초기화하거나 예시 항목을 다시 덮어쓰는 조치를 먼저 하지 않습니다.
아래 글을 복사해 AI 대화창에 붙여 넣으세요. [ ] 안의 내용은 내 상황에 맞게 바꿉니다.
수정 뒤 같은 검색어를 넣고 지웁니다. 전체 목록이 돌아오는지와 링크 주소가 유지되는지 봅니다. AI가 ‘검색 수정 완료’라고 말했는지보다 실제로 반복한 결과를 기록합니다.
새 항목을 넣을 때의 확인 묶음
정상 입력 한 번과 실패 입력 몇 가지를 나누어 시험합니다. 실제로 중요한 링크를 넣기 전에 예시 주소를 사용합니다. 이미 목록에 있는 주소를 정상 추가 시험에 쓰면 중복 안내가 나올 수 있으므로 아직 없는 주소인지 먼저 확인합니다.
정상 입력에서는 이름과 주소가 목록에 나타나고 검색할 수 있는지 봅니다. 성공 뒤 입력칸을 비우기로 했다면 실제로 비워졌는지 확인합니다. 검색 중이었다면 검색어가 지워지고 새 항목이 보이는지도 봅니다. 자료는 추가됐지만 검색 조건 때문에 안 보이는 상황을 구분하기 위해서입니다.
실패 입력에서는 이름을 비우거나 주소를 비워 봅니다. 주소에 주소아님을 넣고, 허용하지 않은 방식인 ftp://example.com도 넣어 볼 수 있습니다. 이번 규칙에서는 http와 https만 허용하므로 목록에 추가되지 않고 이유가 보여야 합니다. 실패 뒤 기존 항목과 작성 중인 다른 값이 불필요하게 지워지지 않는지도 확인합니다.
같은 주소를 다시 넣어 중복 안내를 확인합니다. 추가 버튼을 두 번 눌렀을 때 항목이 두 개가 되지 않는지 봅니다. 실제 결과가 규칙과 다르면 어떤 입력에서 몇 개가 늘었는지 적어 전달합니다. 모든 기능을 다시 만들어 달라고 요청하지 않습니다.
추가 기능의 문제를 전달하는 예시
아래 글을 복사해 AI 대화창에 붙여 넣으세요. [ ] 안의 내용은 내 상황에 맞게 바꿉니다.
답변을 받으면 같은 입력으로 다시 확인합니다. 올바른 입력과 실패 입력을 각각 한 번 이상 봅니다. 정상 입력만 확인하고 끝내면 빈칸 처리가 여전히 잘못되어 있을 수 있습니다. 자료가 사라지거나 요청하지 않은 새 기능이 생기면 그 변화도 별도로 알려 줍니다.
긴 글과 글자 표시 확인하기
이름에 평소보다 긴 문장을 넣어 봅니다. 화면 밖으로 나가거나 다른 항목을 덮지 않는지 확인합니다. 길이 제한을 둘지 줄바꿈을 허용할지는 자신의 사용 범위에 맞게 정할 수 있습니다. 제한을 두었다면 왜 추가할 수 없는지 안내가 있어야 합니다.
글자 표시는 문장부호가 들어간 이름으로 확인할 수 있습니다. 예를 들어 책 & 산책 <기록>처럼 입력했을 때 해당 글이 글로 나타나는지 봅니다. 입력을 코드처럼 해석하거나 예상하지 않은 화면을 만들지 않도록 요청한 조건을 확인하는 작은 예입니다. 이 확인 하나가 모든 보안 문제를 검증한 것은 아닙니다.
필요하면 AI에게 사용자가 넣은 글은 실행하지 않고 텍스트로 표시하도록 다시 요청합니다. 수정 뒤 일반 이름과 문장부호가 있는 이름을 모두 확인합니다. 페이지에 코드가 어떻게 들어가는지 모두 읽지 않아도 자신이 넣은 값과 나온 결과는 비교할 수 있습니다.
저장 시험의 환경을 기록하기
저장 시험 전에 현재 주소와 브라우저, 사용하는 프로필을 적습니다. 도구 안의 미리보기인지 인터넷에 공개된 주소인지도 구분합니다. 같은 환경에서 예시 항목을 추가하고 새로고침한 뒤 결과를 봅니다. 다른 브라우저로 이동해서 비어 있는 상태를 곧바로 저장 실패라고 부르지 않습니다.
처음에는 예시 항목 하나만 새로 추가합니다. 이미 있던 예시 목록만 보이면 새 자료가 보관되었는지 판단하기 어렵기 때문입니다. 새로 넣은 이름을 구별되게 정하고, 새로고침 뒤 그 이름을 찾습니다. 다시 열었을 때도 같은 항목이 있는지 확인합니다.
저장 제한 안내가 나오면 현재 화면에서만 유지된다는 점을 기록합니다. 제한을 해결하려고 브라우저 보안 설정을 모두 끄지 않습니다. 가능한 공개 주소에서 다시 시험하고, 그 전에는 중요한 자료를 넣지 않습니다. 확인하지 못한 환경은 미확인으로 남깁니다.
빈 목록의 보관을 확인하는 선택 시험
이 시험은 예시 자료를 내보내 보관한 뒤 진행합니다. 실제로 중요한 목록에서는 처음 시험하지 않습니다. 내보낸 파일이 준비되어 있고 앞에서 불러오기를 확인한 경우에만 목록을 비웁니다.
예시 항목을 모두 삭제하고 빈 목록 안내가 나오는지 봅니다. 새로고침 뒤에도 빈 목록이 유지되는지 확인합니다. 사용자가 비운 상태인데 처음 예시가 다시 채워진다면 초기 자료와 빈 저장값을 구분하는 처리가 필요한 것입니다. 현재 규칙과 실제 결과를 설명해 수정합니다.
시험이 끝나면 보관한 파일을 불러와 예시 항목을 복원합니다. 돌아온 항목 수와 이름을 확인합니다. 이런 선택 시험은 ‘없음’이라는 상태를 프로그램이 어떻게 다루는지 직접 확인하는 방법입니다. 삭제와 복원을 이해하지 못했다면 먼저 관련 설명을 읽고 진행합니다.
내보낸 파일을 불러오기 전 확인하기
파일 이름과 저장 위치를 확인합니다. 같은 이름으로 여러 번 내려받았다면 어느 파일이 최신 목록인지 구분합니다. 파일을 직접 고칠 필요는 없습니다. 처음에는 내보낸 그대로의 파일을 사용합니다.
한 항목을 지우고 불러온 뒤 다시 나타나는지 봅니다. 기존 항목과 중복되지 않는지도 확인합니다. 이번 실습에서는 합치는 규칙을 사용하므로 기존 자료가 전부 없어져서는 안 됩니다. 다른 규칙을 선택했다면 실행 전에 무엇이 바뀌는지 이해해야 합니다.
관계없는 일반 텍스트 파일을 불러왔을 때는 오류 안내와 기존 목록 유지를 확인합니다. 파일 형식이 맞지 않는데 일부 자료만 조용히 추가되는 결과가 나오면 그 상황을 기록합니다. 모든 항목을 검사하고 실패 시 원래 목록을 유지하도록 다시 요청할 수 있습니다.
분류 기능을 더하는 선택 활동
필수 동작이 확인된 뒤 분류별로 목록을 좁히는 기능을 넣을 수 있습니다. 먼저 분류는 ‘학습’, ‘참고’, ‘전체’ 정도로 작게 정합니다. 입력한 항목의 분류와 화면에서 고르는 분류 이름이 일치하는지 확인합니다.
아래 글을 복사해 AI 대화창에 붙여 넣으세요. [ ] 안의 내용은 내 상황에 맞게 바꿉니다.
분류만 고르기, 검색어만 넣기, 둘을 함께 쓰기, 둘 다 해제하기를 각각 확인합니다. 화면이 비어 있으면 어떤 조건이 켜져 있는지 먼저 봅니다. 목록 자체가 없어졌다고 판단하기 전에 검색어와 분류를 해제합니다. 이 활동을 건너뛰어도 기본 링크 모음의 완료 기준에는 영향을 주지 않습니다.
꼭 기억하세요
링크 모음은 목록·검색·추가·저장을 차례로 완성합니다. 자료가 보이는지와 다시 열어도 남는지는 별도로 확인합니다.