📌 1. 파이널 100선 문제풀이 파트1 — 부동산세법 1-1. 취득세 💡 세율 특례 두 갈래(중과기준세율만 / 표준세율 − 중과기준세율)를 두문자로 가르고, 취득시기·과세표준의 예외를 함께 잡는다 1) 과세대상·용어 ★ 취득세에서 사용하는 용어 중 토지란 지적공부의 등록사항이 되는 토지와 사실상의 토지를 말한다. ★★ 등기된 부동산 임차권은 양도소득세 과세대상만 포함하고, 취득세에서는 제외한다. 2) 납세의무자 ★ 취득세에서 과점주주가 처음 된 자는 그 당시 가지고 있는 지분 전체를 취득세 과세표준으로 한다. ★ 상속인의 취득세 납세의무는 연대납세의무이다. ★ {상속회복청구의소}에 의한 법원의 확정판결로 상속인 및 상속재산에 변동이 있는 경우에는, 상속분이 확정된 후 다시 재분할해도 그 이동을 증여로 보지 않는다. 3) 취득의 시기 ★ 매립·간척 등으로 원시취득하는 토지는 애초에 등기의무가 없으므로, 취득의 시기가 등기일 기준일 리가 없다. ★ 점유 취득의 취득시기는 '점등'이므로 취득물건의 등기일 또는 등록일로 한다. '사실상 ~' 류 기준과 비교할 필요 없다. ★★ 토지의 지목변경에 따른 취득은 토지의 지목이 사실상 변경된 날과 공부상 변경된 날 중 빠른 날로 한다 — 어느 하나가 원칙인 것이 아니다. 4) 과세표준 취득세에서 증여는 시가인정액을 사용해 과세표준을 계산한다. ★★ 특수관계인 간 증여로 간주하는 취득의 기준은 {3억과 100분의 30}이고, 조세부담을 부당하게 감소시키는 부당행위계산의 기준은 {3억과 100분의 5}이다. ★★ 취득세에서 사실상 취득가액에 포함되지 않는 것들은 이렇게 외운다 → 판매를 위한 전기, 가스 열, 별개로 부가가치세 할인x 예) 판매 광고선전비 · 전기·가스·열 이용 분담금 · 이주비·지장물 보상금(별개 권리 보상) · 부가가치세 · 할인받은 금액 ★ 같은 취득물건이 둘 이상의 시·군·구에 걸쳐 있으면, 그 과세표준은 취득당시가액을 {취득물건의 소재지별 시가표준액 비율로 나누어} 계산한다. 5) 세율·세율 특례 ★★ 취득세에서 비영리사업자의 상속 외의 무상취득은 {1천분의 28}이다. ★ 주택을 신축 또는 증축한 이후 해당 주거용 건축물의 소유자가 그 주택의 부속토지를 취득하는 경우는 그냥 토지로 보아 1천분의 40의 취득세를 부과한다. ★★ 중과기준세율만 적용하여 계산한 금액을 세액으로 하는 취득세 대상은 {개수하고 지목변경한 과점주주가 묘지를 임시로 보전이전해서 정원을 조성설치했다.}로 외운다. ★★ 표준세율 − 중과기준세율을 적용하여 계산한 금액을 세액으로 하는 취득세 대상은 {환상합분이이입}으로 외운다. 예) 환매(환매기간 내) · 상속(1가구 1주택·자경농지) · 합병 · 공유물 분할 · 건축물 이전 · 이혼 재산분할 · 입목 ★★ '이전'은 양쪽에 다 있다 — 표준세율 − 중과기준세율의 이전은 건축물의 {종전가액내} 이전이고, 중과기준세율만의 이전은 {등록면허세 보존, 이전}이다. ★★ 중과기준세율만 적용하는 경우 임시건축물은 {1년을 초과한} 경우만, 개수는 {종전면적 이내에서 개수한 경우만} 해당한다. 6) 신고·납부·면세점 ★ 취득세를 비과세·과세면제 또는 경감받은 후 해당 과세물건이 취득세 부과대상 또는 추징대상이 되었을 때에는 그 사유 발생일부터 {60}일 이내에 취득세 신고를 해야 한다. ★ 납세의무자가 신고기한까지 취득세를 시가인정액, 시가표준액으로 신고한 후 지자체장이 세액을 경정하기 전에 먼저 수정신고한 경우에는 과소신고가산세 및 납부지연가산세를 {부과하지 않는다.} ★ 취득세 면세점은 {50만원 이하}이다. 1-2. 등록면허세 💡 말소등기는 건당 정액, 납세지가 애매하면 '등록관청 소재지'로 모인다 1) 과세표준·세율 ★ 등록면허세의 과세표준은 등록자의 신고에 따른 등록 당시의 가액으로 하고, 신고가 없거나 시가표준액보다 작으면 시가표준액으로 한다. ★★ 등록면허세에서 임차권 설정등기는 월 임대차금액을 과세표준으로 한다. ★★ "임차권 말소등기는 월 임대차금액의 1천분의 2"라는 지문은 틀렸다. 말소등기는 모두 6000원이므로 이 함정에 빠지면 안 된다. 2) 납세지 ★★ 같은 등록에 관계되는 재산이 둘 이상의 지자체에 걸쳐 있어 등록면허세를 지자체별로 부과할 수 없을 때에는 등록관청 소재지를 납세지로 한다. ★★ 같은 채권의 담보를 위하여 설정하는 둘 이상의 저당권을 등록하는 경우에는 이를 하나의 등록으로 보아, 그 등록에 관계되는 재산을 처음 등록하는 등록관청 소재지를 납세지로 한다. 3) 추징·환급 ★ 등록면허세를 경감받은 후 해당 과세물건이 추징대상이 되었을 때에는 그 사유 발생일부터 60일 이내에, 과세표준에 세율을 적용해 산출한 세액에서 이미 납부한 세액(가산세 제외)을 공제한 세액을 납세지 관할 지자체장에게 신고하고 납부해야 한다. ★ 등기·등록이 된 이후 법원의 판결 등으로 그 등기·등록이 무효·취소되어 말소된 경우에도, 이미 납부한 등록면허세는 과오납으로 환급{할 수 없다.} 1-3. 재산세 💡 누가 내나(사용자) → 무엇이 비과세인가(건물 vs 땅, '보존' vs '환경') → 언제까지 신청하나(10일 전 · 기한까지 · 3일 전) 1) 납세의무자 ★★ 재산세 과세기준일 현재 소유권의 귀속이 분명하지 않아 사실상의 소유자를 확인할 수 없는 경우에는, 공부상의 소유자가 아닌 사용자가 재산세를 납부할 의무가 있다. 2) 비과세 ★ 공원자연'보존'지구는 재산세 비과세 대상이고, '환경'자가 들어가면 분리과세이다. ★ 도로의 부속물 중 도로관리시설, 휴게시설, 주유소, 충전소, 교통·관광안내소 및 도로에 연접하여 설치한 연구시설은 재산세 과세대상이다. ★ 묘지는 재산세 비과세 대상이다. ★ 채종림, 시험림, 농업용 구거와 농업용 및 발전용에 제공하는 댐·저수지·소류지와 자연적으로 형성된 호수·늪은 재산세 비과세 대상이다. ★ 재산세를 부과하는 해당 연도에 철거하기로 한 건축물은 재산세 비과세 대상이지만, 그 부속토지는 아니다. 3) 분리과세 ★ 과세기준일 현재 계속 염전으로 사용하다가 사용을 폐지한 토지도 다른 목적으로 전용하기 전까지는 분리과세대상 토지로 인정한다. ★ 회원제 골프장용 토지는 사치성이라 분리과세 대상이므로 누진세가 아니다. 4) 과세표준·세율 ★★ {주택}의 과세표준이 과세표준상한액보다 큰 경우에는 해당 {주택}의 과세표준은 과세표준상한액으로 한다. ★ 주택을 2채 보유한 자는 그 주택의 가액을 모두 합한 금액이 아니라 주택별로 과세표준을 계산한다. ★ 과밀억제권역 공장 신설·증설의 재산세 비율은 {5년간 1천분의 2.5의 100분의 500}이다. 5) 부과·징수 ★★ 재산세를 징수하려면 토지·건축물·주택·선박·항공기로 구분한 {한장의} 납세고지서에 세액을 적어 {늦어도 납기개시 5일전까지} 발급해야 한다. ★★ 해당 연도에 주택에 부과할 세액이 {20만원}인 경우 재산세의 납기를 7월에 몰아서 부과·징수할 수 있다. ★★ 재산세 물납은 {납부기한 10일전}까지, 분납은 {납부기한까지}, 납부유예는 {납부기한 3일전}까지 신청한다. ★★ 재산세 납부유예는 {1세대 1주택만} 대상이므로 토지는 그 대상이 될 수 없다. ★ 신탁재산에 대하여 체납처분을 할 때 수탁자는 신탁재산의 보존 및 개량을 위하여 지출한 필요비 또는 유익비의 우선변제를 받을 권리가 있다. 6) 부과제척기간·징수권 (종부세 공통) ★★ 재산세·종부세는 무신고·사기 등이 없으면 향후 5년간 세금을 부과할 수 있고, 반면 징수권의 행사기간은 10년이다. 1-4. 종합부동산세 💡 '주종별'만 과세 — 제재받는 법인은 공제 0원 · 세부담 상한 없음 1) 과세대상 ★ 종합부동산세는 주종별만 해당되므로 공장용 건축물은 해당하지 않는다. 종합합산과세대상과 종합부동산세 대상을 헷갈리면 안 된다. 2) 과세표준 ★★ 제재받는(세율 1천분의 50, 27 등) 법인의 경우 주택 과세표준에서 {0원}을 빼고 {100분의 60}의 공정시장가액비율을 곱한다. ★★ 종합부동산세 토지 공정시장가액비율은 {100분의 100}이고, 재산세 건축물·토지는 {100분의 70}, 재산세 주택은 {100분의 60}이다. ★ 종합부동산세 과세표준을 구할 때 별도합산 80억, 종합합산 5억을 공제하고 공정시장가액비율을 곱하는 것을 유념해야 한다. 3) 세액공제·세부담 상한 ★★ 종합부동산세 법령상 기간별 소득공제율은 {20, 40, 50 - 5년, 10년 15년}이고, 연령별 세액공제율은 {20, 30, 40 - 60세, 65세, 70세}이다. ★ 2주택을 소유하여 1천분의 27의 세율이 적용되는 법인은 제재를 받는 것이므로 세부담의 상한이 적용되지 않는다. 4) 신고납부 ★★ 종합부동산세를 신고납부방식으로 납부하려는 납세의무자는 과세표준과 세액을 해당 연도 12월 1일부터 12월 15일까지 관할세무서장에게 신고해야 한다. 이 경우 관할세무서장의 결정은 없었던 것으로 본다. 1-5. 양도소득세 💡 공동소유는 '각자', 대지·건물을 세대원이 나눠 가져도 '1세대 1주택' 1) 납세의무자 ★ 법인으로 보는 단체 외의 법인 아닌 단체는 국내에 주사무소 또는 사업의 실질적 관리장소를 둔 경우에는 1거주자로, 그 밖의 경우에는 비거주자로 보아 소득세법을 적용한다. 2) 양도의 범위 ★★ 토지 경계 변경을 위한 법정 절차상의 토지 교환은 양도로 보지 않는다. 3) 1세대 1주택 ★ 1주택을 여러 사람이 공동으로 소유한 경우, 지분이 가장 큰 자가 소유하는 게 아니라 공동소유자 각자가 소유한 것으로 본다. ★ 1세대 1주택의 비과세요건을 갖춘 대지와 건물을 동일한 세대의 구성원이 각각 소유하고 있는 경우에도 이를 1세대 1주택으로 본다. ★ 도시지역 밖에 있는 주택에 부수되는 토지면적은 주택정착면적의 10배를 초과하지 않는 것인데, 주택 일부의 정착면적까지 포함하고 계산한다. ■ 백지시트 (1단계) — 부동산세법 파이널 100선 파트1 | 제한 10분 | 【마지막 덩어리부터 역순】 | 회차: 날짜: 5 양도소득세 — 항목 3개 - 법인 아닌 단체 + 국내 주사무소 → ( )로 본다 - 1주택 공동소유 → ( )가 소유한 것으로 본다 - 비과세요건 갖춘 대지·건물을 같은 세대원이 각각 소유 → ( ) 4 종합부동산세 — 항목 3개 - 과세대상 3종, 두문자 '주종별' → ( )( )( ) - 제재받는 법인 주택: 공제액 ( ) · 공정시장가액비율 ( ) - 신고납부 선택 시 신고기간 → ( ) 3 재산세 — 항목 3개 - 사실상 소유자 확인 불가 → ( )가 납세의무 - 공원자연'보존'지구 → ( ) / '환경'지구 → ( ) - 신청기한: 물납 ( ) · 분납 ( ) · 납부유예 ( ) 2 등록면허세 — 항목 3개 - 임차권 설정등기 과세표준 → ( ) - 말소등기 세액 → 건당 ( ) - 같은 채권 담보 저당권 둘 이상 → 처음 등록하는 ( ) 소재지 1 취득세 — 항목 6개 - 표준세율 − 중과기준세율 대상 두문자 → ( ) - '이전' 구분: 표준−중과기준 = 건축물 ( ) 이전 / 중과기준만 = ( ) - 중과기준세율 임시건축물 → ( ) 초과 - 비영리사업자 상속 외 무상취득 → 1천분의 ( ) - 지목변경 취득시기 → 사실상·공부상 중 ( ) - 취득세 면세점 → ( )
디스크 이미징 디지털 저장매체(Hard Disk, HDD, SSD 등)의 복제본, 디스크 이미지를 생성하는 과정 디지털 저장매체에 저장돼 있는 디지털 데이터를 바이트 단위로 복제해서 하나의 파일로 저장 하나의 파일의 형태로 존재(원본과 정확히 동일한 데이터를 하나의 컴퓨터 파일로 바뀐 것) FTK Imager 실습 Physical Drive : 물리적인 드라이브(=디스크)를 프로그램에 추가 Logical Drive : 논리적인 드라이브(=드라이브)를 프로그램에 추가 Image File : 디스크 이미지 파일을 프로그램에 추가 Contents of a Folder : 특정 폴더의 파일들을 프로그램에 추기 디스크와 드라이브 디스크는 물리적인 형태를 지님. SSD, 하드디스크. 드라이브는 논리적으로 구분되는 저장공간. C드라이브, D드라이브. 하나의 디스크가 여러개의 드라이브를 가지기도 함 디스크 이미지 파일 확장자 Raw(dd) : 어떠한 압축도 없이 원본 그대로 저장하는 파일확장자 E01 : 많이 사용되는 디스크 이미지 파일 확장자. 원본 데이터를 압축하여 저장하기 때문에 파일 크기가 작아지고, CRC나 MD5 필드를 통해 파일 변조 검증할 수 있다는 장점 SMART, AFF : 잘 사용되지 않거나, 특수한 경우에만 이용 디스크 이미징과 디스크 복제, 복사의 차이 디스크 복제는 원본 저장매체에 동일한 디지털 데이터를 가지는 복사본 저장매체를 만듦 원본 저장매체에서 디지털 데이터를 읽어와 별개의 저장매체에 쓰기를 수행하는 것으로 이루어짐 디스크 이미징을 수행하면 디스크 이미지 파일이 생선되는 반면, 디스크 복제는 복사본 저장매체가 생성 복사는 파일이나 폴더 단위의 디지털 데이터를 별개의 저장매체에 복사 디스크 이미징과 디스크 복제가 저장매체 단위로 디지털 데이터를 옮기는 방법이라면, 복사는 저장매체 중에서 일부의 데이터만 옮김 선별압수 원칙을 엄격하게 적용하면서 압수수색 현장에선 복사를 통해 디지털 증거를 수집하는 경우 많음 디스크 이미지 마운트 디스크 이미지 파일을 컴퓨터가 인식하도록 등록하는 것 메모리(RAM) 메모리는 CPU가 빠르게 연산할 수 있도록 데이터를 전달하기 위해 데이터를 임시적으로 보관하는 장소 프로그램과 프로세스가 호출하거나 처리하는 데이터들이 저장 프로세스가 실행 중 열어본 파일이나 프로세스에 사용자가 입력한 비밀번호 등이 발견되기도 함 프로그램 : 하드디스크에 저장돼 있는 실행코드 프로세스 : 실행 중인 프로그램. 프로그램과 현재 실행 상태, 할당 받은 자원 등을 포함하는 개념 메모리 덤프 메모리에 저장된 휘발성 데이터를 비휘발성 데이터로 저장한 데이터 메모리 덤프를 수행한 시각에 저장돼 있는 데이터만 메모리 덤프의 결과가 됨 메모리 포렌식에 사용됨 해시함수 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수 아무리 크거나 작은 데이터를 입력해도 고정된 길이의 데이터로 값 나옴 해시함수 데이터 변조 실험 파일의 작은 데이터를 하나 추가했음에도, 해시값 전체가 바뀌는 걸 확인할 수 있음. 이를 눈사태 효과(Avalanche Effect) : 입력 값에 주어진 작은 변화가 출력 값에서는 큰 차이를 만들어냄 해시함수는 데이터가 조금이라도 변해도 해시값이 완전히 변함. 따라서 법정에서 증거 활용할 때 해시값 계산해서 그 값이 동일한지 확인하는 방식으로 무결성 확인 해시함수 종류 MD5 간단하고 많이 사용됨. 실제 해시값 계산해보면 타 해시함수에 비해 가장 짧은 값 나옴 즉, 해시함수에서 결과값의 길이가 짧다는 건 안전성이 떨어지고, 충돌저항성이 낮다고 표현 가능 출력값은 128비트(16바이트) 디지털 포렌식 보고서 작성할 때, 권장하지 않음. SHA 현재 가장 많이 사용되고 있는 해시함수(현재 가장 만힝 사용되는 건 SHA-2) 출력 길이에 따라 SHA-224, SHA-256, SHA-384, SHA-512 등으로 나뉨 SHA256 같은 경우는 출력값이 256비트(32바이트) SHA256, SHA512가 가장 많이 사용됨 디지털 데이터 리틀 엔디언 작은 바이트부터 메모리에 저장하는 방식 Windows 운영체제는 대부분 Intel 기반의 CPU아키텍쳐로 구성돼 있고, 대부분 리틀 엔디언 방식을 따름 파일 시스템이나 파일 구조를 분석할 때 리틀 엔디언 표현 방식으로 값을 읽는 경우가 많음 인코딩 데이터를 정해진 규칙에 따라 특정한 형식으로 변환 누구나 규칙에 따라 디코딩하여 해석할 수 있음(암호화는 다르다는 뜻) 데이터를 전달하는 것을 목적으로 함 ASCII인코딩, Base64인코딩, UTF-8인코딩의 종류가 있음 ASCII인코딩 아스키 테이블에 따라 값을 문자로 변환 줄바꿈 | 0xA, 0xD | Windows: 0xD 0xA, Linux/MacOS: 0xA 숫자* | 0x30~0x39 | 순서대로 0부터 9까지 영어 대문자* | 0x41~0x5A | 순서대로 A부터 Z까지 영어 소문자* | 0x61~0x7A | 대문자와 소문자는 각각 0x20 차이 Base64인코딩 바이너리 데이터를 미리 지정된 64개의 문자를 이용해 표현하는 인코딩 패딩으로 사용되는 = 문자를 제외하고 64개의 문자만 이용 적용된 데이터는 원본에 비해 길이가 약간 증가됨 UTF-8인코딩 가변길이 (입력값이 존재하는 범위에 따라 인코딩 결과를 표시하는 바이트 수가 달라지는 방식. 데이터를 몇 바이트 단위로 끊어 해석해야할지 알려주는 지시자를 데이터에 포함) 인코딩 방식 인터넷 사이트 및 프로그램에서 가장 많이 사용되는 방식 주로 유니코드에 사용 파일 시그니처 파일 콘텐츠를 식별하기 위해 사용되는 데이터 헤더 시그니처, 푸터 시그니처 파일의 형식 구별하는 데에 사용(파일 이름 뒤에 붙는 확장자는 얼마든지 변경 가능한 영역이라서 컴퓨터는 시그니처를 이용해 파일 해석) 파일 확장자 파일의 이름에서 파일의 종류와 역할 표시 디지털 장치 메모리(RAM) 휘발성 메모리 저장 CPU에서 접근 속도가 빠르기 때문에 주기억장치라고 부르기도 함 컴퓨터 인쇄회로기판(PCB) 중 RAM 슬롯에 장착됨 RAM에 저장되는 데이터는 컴퓨터가 켜져 있는 상태에서 획득하는 것이 일반적 하드디스크 비휘발성 데이터 저장 데이터가 기록되어 있는 플래터가 계속 회전하고, 바늘 모양의 헤드가 플래터로부터 데이터를 읽어오는 방식 SSD 반도체를 사용해 데이터를 저장하는 장치 하드디스크에 비해 높은 속도, 안정성 USB 플래시 드라이브 USB 표준 규격을 이용해 데이터를 저장하는 장치 휴대성 좋음. 컴퓨터 간 파일 이동/보관 용도로 자주 사용(이로 인한 유출 사고, 악성코드 감염 많음) SDCard 디지털 카메라, 내비게이션, 블랙박스 등에서 사용 SD, miniSD, microSD 저장장치 인터페이스 IDE/ATA 과거 하드디스크 연결을 위해 제작됨 SATA 직렬 전송 방식. 기존 IDE방식보다 더 빠른 속도, 높은 안정성 데스크톱에서 많이 이용 PCI/PCIe 컴퓨터 메인 보드에 주변 장치를 장착하기 위한 버스/인터페이스 주로 그래픽 카드나 SSD 연결에 이용 M.2 소형 커넥터 규격. SATA의 크기 때문에 SATA 대신 소형 디바이스에 적용 여러 형태가 있고, 형태에 따라 데이터 전송 방식이 달라짐
마커 위치를 받아 집는 기능을 추가하는 중에 arm_control_app 의 코드를 정리했다. main.cpp 한 파일에 MoveIt 설정, 이동, 그리퍼 조작, 물체를 집고 놓는 작업이 모두 들어 있었고, 오류가 발생하였을 때의 정리 코드가 곳곳에 흩어져 있었다. 또 팔이 움직이는 중에 Ctrl+C를 누르면 프로그램이 종료하지 못하고 멈추는 현상이 반복해서 발생하였다. 코드 정리와 예외 처리는 커밋 c8b8f25 , Ctrl+C 처리는 커밋 61a317e 에 있다. 코드 정리 팔을 움직이는 기능과 관련된 부분을 ArmController 클래스로 옮겼다. rclcpp::Node 를 상속하고 InitMoveIt , MoveToNamedTarget , MoveToPose , OperateGripper , Stop 을 가진다. 물체를 집고 옮겨 놓는 과정을 main.cpp 의 ExecutePickAndPlaceCycle 함수에 모아서 코드가 간결해 질 수 있도록 하였다. 팔을 어떻게 움직이는지는 클래스가, 어떤 순서로 무엇을 하는지는 main.cpp 로 나눠지면서 코드를 유지 보수하기 훨씬 좋아졌다. 예외와 실패 처리 정리 전의 main 은 노드를 스핀하는 스레드를 직접 만들고, 오류가 날 때마다 finish() 라는 함수를 불러 빠져나갔다. static inline int finish(int retcode, std::thread & spinner) { rclcpp::shutdown(); spinner.join(); return retcode; } ... return finish(-1, spinner); return 하는 곳마다 finish() 를 잊지 않고 불러야 했다. 또 MoveGroupInterface 생성처럼 예외를 던질 수 있는 곳에서 예외가 나면 finish() 를 거치지 않고 main 을 빠져나간다. 이때 join 하지 않은 std::thread 가 소멸되는 상황이 발생하는데, C++ 표준상 join 할 수 있는 상태의 std::thread 가 소멸되면 std::terminate 가 불려 프로그램이 비정상 종료된다( cppreference: std::thread::~thread ). 그래서 정리 작업을 객체의 소멸자로 옮겼다. 스핀 스레드는 ExecutorThread 클래스로 감싸서, 소멸자가 executor_ 를 멈추고( cancel ) 스레드를 기다리게( join ) 하였다. main 이 정상으로 끝나든, 중간에 return 하든, 예외로 빠져나가든 지역 객체의 소멸자는 항상 호출된다. ~ExecutorThread() { try { executor_.cancel(); if (thread_.joinable()) { thread_.join(); } } catch (...) { // 소멸자에서 예외가 빠져나가면 std::terminate 가 불린다 } } rclcpp::shutdown() 도 같은 방식으로 처리했다. 빈 포인터를 가진 shared_ptr 를 만들어서 해당 인스턴스가 소멸될 때 원래 가리키던 메모리를 해제하는 작업 대신 shutdown() 을 호출하도록 람다 함수를 삭제자(deleter)로 지정하였다. 이렇게 함으로써 main 이 어떤 경로로 끝나든 이 객체가 소멸될 때 shutdown() 이 호출되도록 하였다. std::shared_ptr<void> rclcpp_guard(nullptr, [](void*) { rclcpp::shutdown(); }); main 의 나머지는 try-catch 로 감싸서 예외를 받아 로그를 남기도록 하였다. InitMoveIt 함수에서 MoveGroupInterface 생성, 엔드 이펙터 링크 설정, 그리퍼 액션 클라이언트 생성, 바닥 충돌 객체 추가를 차례로 하면서, 한 단계라도 실패하면 로그를 남기고 false 를 반환한다. Ctrl+C를 입력하였을 때 프로그램의 멈춤 팔이 움직이는 도중에 Ctrl+C를 누르면 프로그램이 끝나지 않고 멈추는 현상이 반복되었다. 이동 명령인 move()가 실행 중일 때 Ctrl+C를 입력하면, 함수가 결과를 반환하지 않고 계속 실행 상태로 남아 있었다. Ctrl+C는 SIGINT를 발생시키고 rclcpp는 기본적으로 이 signal을 처리하는 함수를 rclcpp::init() 에서 등록한다. 시스템에 설치된 헤더 rclcpp/init_options.hpp 의 설명이 다음과 같다. /// If true, the context will be shutdown on SIGINT by the signal handler (if it was installed). bool shutdown_on_signal = true; rclcpp의 기본 signal 핸들러는 SIGINT를 받으면 컨텍스트, 즉 rclcpp::init()이 생성한 ROS 통신 환경을 종료한다. 스핀은 이 환경이 살아 있는 동안(rclcpp::ok()가 참인 동안)만 콜백을 처리하므로 같이 멈춘다. arm_control_app 노드의 스핀 스레드도, MoveGroupInterface가 내부에 따로 두는 스레드도 모두 같이 멈춘다. 그리퍼 액션의 결과는 노드의 스핀 스레드가, move()의 결과는 MoveGroupInterface의 스레드가 처리해야 하는데 둘 다 멈췄다. 특히 move()는 결과가 올 때까지 아래 코드와 같이 기다린다.(MoveIt 2.12.4 move_group_interface.cpp ). // wait until send_goal_opts.result_callback is called while (!done) { std::this_thread::sleep_for(std::chrono::milliseconds(1)); } 이 루프는 result_callback이 done 변수값을 true 로 바꿔 줄 때만 끝난다. 그런데 result_callback을 호출해 줄 스핀이 멈췄으므로 done 변수의 값은 바뀌지 않고, move() 는 반환되지 않는다. MoveIt의 API 문서에서 asyncMove() 함수를 찾았지만, 이 함수는 동작이 끝날 때까지 기다리지 않고 바로 반환할 뿐 동작이 끝났는지 알려 주는 방법이 없어서 실행 결과를 확인하고 순서대로 진행하는 현재 방식에는 쓸 수 없었다. Signal을 직접 처리 rclcpp가 signal을 받아도 컨텍스트를 중지시키지 않도록 옵션을 변경하고( shutdown_on_signal = false ), signal을 내가 만든 코드에서 직접 처리하도록 하였다. 일반적인 signal 처리 규칙대로 signal 처리 함수에서는 플래그만 설정하도록 하였다. rclcpp::InitOptions init_options; init_options.shutdown_on_signal = false; rclcpp::init(argc, argv, init_options); std::signal(SIGINT, signal_handler); std::signal(SIGTERM, signal_handler); std::atomic<bool> g_quit{false}; void signal_handler(int signum) { if(SIGINT == signum || SIGTERM == signum) { g_quit = true; } } 100ms 주기 타이머가 signal handler에서 설정하는 플래그( g_quit )를 검사하고 ArmController::Stop() 을 호출한다. Stop() 은 클래스 안의 취소 플래그를 설정하고 move_group_->stop() 을 호출하여 진행 중인 이동을 멈춘다. 컨텍스트가 살아 있어 스핀이 계속 돌고 있으므로 move() 는 중단 결과를 받고 반환된다. 그리퍼는 결과를 get() 으로 한 번에 기다리지 않고, wait_for(100ms) 를 반복하면서 취소 플래그를 모니터링한다. 플래그가 true로 설정되면 async_cancel_goal 로 액션을 취소하고, 서버가 취소를 끝낼 때까지 한 번 더 기다린 뒤 실패를 돌려준다. while (rclcpp::ok() && !quit_flag_) { if (std::future_status::ready == result_future.wait_for(std::chrono::milliseconds(100))) { break; } } ExecutePickAndPlaceCycle 은 단계 사이마다 g_quit 를 확인해서 signal을 수신한 경우라면 다음 동작으로 진행하지 않고 함수를 빠져나오도록 하였다. 작업이 중단되면 main 은 팔을 시작 자세( test_configuration )로 돌려놓고 끝난다. 그런 다음 ExecutorThread 와 rclcpp_guard 의 소멸자가 스레드와 컨텍스트를 정리한다.
오늘도 늦은 시간에 미션을 이어서 했다. 어제 전체 데이터에서 cat과 dog의 개수와 비율을 확인하는 것으로 마무리를 했었다. 오늘은 가지고 있던 데이터에서 학습 데이터와 검증, 테스트 데이터를 각각 80, 10, 10%로 나누는 작업을 했고 나늘 때 cat과 dog의 비율을 맞추어 주었다. from sklearn.model_selection import train_test_split # 전체 데이터를 Train 80%, / 임시 데이터 20%로 분할 train_lines, temp_lines, train_species, temp_species = train_test_split( valid_lines, # 분할할 실제 데이터 species_labels, # 각 데이터에 대응하는 Cat/Dog 라벨 test_size=0.2, # 전체의 20%를 임시 데이터로 분리 stratify=species_labels, # Cat/Dog 비율을 유지하면서 분할 random_state=42 # 실행할 때마다 같은 결과가 나오도록 고정 ) # 분할된 데이터 개수 확인 print("전체 데이터:", len(valid_lines)) print("Train 데이터:", len(train_lines)) print("임시 데이터:", len(temp_lines)) 출력 결과: 전체 데이터: 3671 Train 데이터: 2936 임시 데이터: 735 그리고 임시데이터를 각가 10%씩 나누어 주었다. # 임시 데이터 20%를 Validation 10% / Test 10%로 분할 val_lines, test_lines_internal, val_species, test_species_internal = train_test_split( temp_lines, temp_species, test_size=0.5, stratify=temp_species, random_state=42 ) # 분할 결과 확인 print("Train:", len(train_lines)) print("Validation:", len(val_lines)) print("Test:", len(test_lines_internal)) 출력 결과: Train: 2936 Validation: 367 Test: 368 아직도 갈 길이 멀지만 천천히 하니 이해하기는 좋은 것 같다. 오늘은 여기까지만하고 내일 또 해야겠다. 내일도 화이팅!
일요일에 한 일 1. 프로젝트 이슈 정리 및 PR 정합성 보완을 위한 작업 진행. 사실 개인적으로 더 리팩터링하고 싶은 부분이 있었지만, 혼란을 야기하는 걸 원치 않아서 일단 수요일까지는 보류하기로... 2. SFTP 첫 사용 SSH와 공통된 포트를 사용하는 일반 FTP보다 더 보안적으로 강화된 FTP 프로그램 AI 프롬프트를 옮기기 위해서 사용함. 좀 더 일찍 알았더라면 메일이라든지 다른 절차없이도 충분히 파일을 쉽게 옮길 수 있었을 텐데...
Von Lawrence Dauchy, Gründer von VP0 Veröffentlicht am 4. Oktober 2026 Die besten Generative-UI-Beispiele sind Oberflächen, die aus einer Anfrage eine konkrete Handlung machen: eine Reiseplanung mit bearbeitbaren Tageskarten, eine Produktsuche mit passenden Filtern oder eine Lern-App mit Übungen zum aktuellen Verständnis. Für den visuellen Start einer iOS-App liefert VP0 kostenlose Designvorlagen, auf denen du solche Interaktionen aufbauen kannst. Welche Oberfläche sinnvoll ist, entscheidet die Aufgabe: vergleichen, planen, verstehen oder bearbeiten. Ein überzeugendes Interface zeigt passende Inhalte, hält wichtige Bedienelemente stabil und lässt dich Vorschläge korrigieren. Für 2026 würde ich mit einer klar begrenzten Aufgabe und geprüften Komponenten beginnen, bevor die KI ganze Ansichten frei zusammensetzt. Was ist Generative UI und wie funktioniert sie? Generative UI bezeichnet Benutzeroberflächen, deren Inhalte, Komponenten oder Zusammenstellung durch ein KI-Modell passend zur aktuellen Aufgabe bestimmt werden. Aus einer Texteingabe kann dadurch eine interaktive Ansicht entstehen, etwa eine Auswahl von Produktkarten mit einem Vergleichsbereich. Ein klassischer Chat antwortet auf „Plane mir ein Wochenende in Hamburg“ mit Text. Eine generative Oberfläche könnte zusätzlich eine Tagesplanung, verschiebbare Aktivitäten und einen Budgetregler anzeigen. Dafür braucht die KI nicht jedes Mal neuen Oberflächencode zu schreiben. Du kannst vorhandene Komponenten definieren und das Modell entscheiden lassen, welche davon erscheinen und welche geprüften Daten sie erhalten. Für die Umsetzung sind drei Formen hilfreich: Auswahl vorhandener Komponenten: Das Modell wählt beispielsweise eine Wetterkarte oder einen Terminwähler. Zusammenstellung nach einer strukturierten Beschreibung: Das Modell beschreibt eine Ansicht, die deine Anwendung aus erlaubten Bausteinen aufbaut. Freie Erzeugung einer Oberfläche: Das Modell erzeugt eine individuelle Darstellung, deren Ausführung und Bedienbarkeit zusätzliche Kontrolle brauchen. Für eine erste veröffentlichte Funktion würde ich vorhandene Komponenten verwenden. Damit bleiben Beschriftungen, Abstände und Interaktionen berechenbar. Auch die Unterscheidung zwischen Entwicklung und Nutzung zählt: Eine KI kann beim Programmieren ein statisches Dashboard erstellen. Generative UI entsteht, wenn die Anwendung später während der Nutzung passende Oberflächenelemente auswählt oder zusammensetzt. Welche Generative-UI-Beispiele sind besonders nützlich? Besonders nützlich sind Beispiele, bei denen du ein Ergebnis direkt bearbeiten kannst. Die folgenden Ideen sind als konkrete Produktkonzepte gedacht, nicht als Rangliste getesteter Apps. 1. Reiseplanung mit bearbeitbaren Tageskarten Du gibst ein: „Plane drei Tage in Wien, mit wenig Fußwegen, vegetarischen Restaurants und einem freien Nachmittag.“ Die Oberfläche zeigt für jeden Tag eine Karte mit Aktivitäten, Zeitfenstern und Wegen. Über einen Button kannst du eine Aktivität austauschen, ohne den gesamten Plan neu anzufordern. Ein Regler verändert das gewünschte Tempo. Bereits bestätigte Termine bleiben bestehen, während die übrigen Vorschläge angepasst werden. Die Qualität liegt in den Details: Öffnungszeiten brauchen verlässliche Daten, Reisezeiten müssen nachvollziehbar sein und noch ungeprüfte Angaben eine erkennbare Kennzeichnung erhalten. Buchungen gehören in einen eigenen Bestätigungsschritt. 2. Produktsuche mit erklärbaren Empfehlungen Eine Anfrage wie „Ich suche einen leisen Staubsauger für eine kleine Wohnung mit Katze“ erzeugt Produktkarten mit passenden Merkmalen. Jede Karte beantwortet dieselben Fragen: Warum passt dieses Produkt? Welche Einschränkung gibt es? Welche Angabe wurde tatsächlich geprüft? Daneben erscheinen Filter für Gewicht, Lautstärke und Zubehör. Änderst du eine Bedingung, aktualisiert sich die Auswahl. Praktisch ist ein Vergleichsbereich, in den du einzelne Produkte aufnehmen kannst. Deine Auswahl bleibt erhalten, auch wenn du anschließend nach günstigeren Alternativen suchst. Preise und Verfügbarkeit kommen aus dem Produktbestand, nicht aus einer freien Modellantwort. 3. Lern-App mit Übungen zum Verständnis Du fragst nach einer Erklärung für Bruchrechnung. Nach einer kurzen Einführung erscheint eine Aufgabe mit auswählbaren Antworten. An deiner Antwort erkennt die Anwendung, welcher nächste Schritt sinnvoll sein könnte. Bei Schwierigkeiten zeigt sie eine visuelle Aufteilung; bei einer korrekten Lösung folgt eine anspruchsvollere Aufgabe. Die Oberfläche braucht einen sichtbaren Ausweg: „Noch einmal erklären“, „Anderes Beispiel“ oder „Zur Übersicht“. Eine falsche Antwort sollte eine konkrete Hilfestellung auslösen. Ein pauschaler Hinweis wie „Leider falsch“ erklärt weder den Denkfehler noch den nächsten Versuch. 4. Projektplanung aus einer unstrukturierten Beschreibung Du beschreibst eine Produktidee in einem Absatz. Daraus entstehen Aufgabenkarten mit vorgeschlagenen Abhängigkeiten und offenen Fragen. Unbekannte Informationen bleiben offen. Hat niemand einen Termin genannt, darf die KI keinen verbindlichen Abgabetag vortäuschen. Du kannst Aufgaben verschieben, Verantwortliche auswählen und einen Vorschlag verwerfen. Erst nach deiner Freigabe wird daraus ein gespeicherter Projektplan. Für kleine Teams ist eine Ansicht mit „Jetzt“, „Danach“ und „Später“ oft verständlicher als ein umfangreiches Planungssystem mit zahlreichen Feldern. 5. Datenanalyse mit veränderbaren Ansichten Eine Anfrage wie „Warum sind die Bestellungen diese Woche zurückgegangen?“ erzeugt eine Zusammenfassung mit passenden Diagrammen und Filtern. Du kannst anschließend zwischen Zeiträumen, Vertriebskanälen oder Produktgruppen wechseln. Die Anwendung sollte Beobachtung und Erklärung unterscheiden. Sinkende Bestellungen nach einer Preisänderung beweisen noch keinen ursächlichen Zusammenhang. Ein brauchbares Interface zeigt deshalb auch Datenlücken und alternative Erklärungen. Fehlen Vergleichswerte, darf die Ansicht das benennen, statt eine überzeugend klingende Ursache zu erfinden. 6. Kundendienst mit einem nächsten Schritt Du beschreibst, dass eine Bestellung beschädigt angekommen ist. Die Oberfläche zeigt die betroffene Bestellung, eine Auswahl der Artikel und ein Feld für Fotos. Nach der Eingabe entsteht eine Vorschau der Anfrage. Du kannst Angaben ändern, bevor sie versendet wird. Für häufige Anliegen sind solche Abläufe hilfreicher als ein Chat, der sämtliche Informationen einzeln abfragt. Die KI hilft bei der Zuordnung, während die Anwendung die erlaubten Aktionen festlegt. Wie sehen überzeugende generative Interfaces aus? Überzeugende generative Interfaces haben ein stabiles Grundgerüst und einen anpassbaren Arbeitsbereich. Navigation, Einstellungen und gespeicherte Inhalte sollten zuverlässig erreichbar bleiben, während sich die Ansicht zur Aufgabe verändert. Chat mit eingebetteten Karten Dieses Muster passt zu kurzen Aufgaben wie einer Produktsuche oder Terminauswahl. Der Chat erklärt den Vorschlag, die Karte bietet die passende Interaktion. Begrenze die Karten auf das, was gerade gebraucht wird. Werden gleichzeitig mehrere Diagramme, Auswahlfelder und Listen eingefügt, verliert die Unterhaltung ihre Übersicht. Geteilter Arbeitsbereich Für Reisepläne, Dokumente oder Projekte bietet sich ein geteilter Arbeitsbereich an: Unterhaltung auf einer Seite, bearbeitbares Ergebnis auf der anderen. Auf dem Smartphone lässt sich zwischen beiden Ansichten wechseln. Eine ausgewählte Karte sollte beim Wechsel weiterhin eindeutig zugeordnet sein. Der Vorteil: Du musst den aktuellen Plan nicht zwischen älteren Chatnachrichten suchen. Direkte Eingabe im bestehenden Screen Eine Such- oder Befehlsleiste kann eine vorhandene Oberfläche ergänzen. Du schreibst beispielsweise „Zeige offene Aufgaben für diese Woche“, und der Arbeitsbereich passt seine Filter an. Dieses Muster eignet sich, wenn Nutzer bereits mit der Anwendung vertraut sind. Die Texteingabe verkürzt einen bekannten Ablauf, während normale Bedienelemente verfügbar bleiben. Für eine iOS-App kann ein VP0-Design das Grundgerüst liefern. Die Auswahl passender Karten und die Verbindung mit Daten ergänzt du in deiner Anwendung. Welche Regeln machen Generative UI verständlich? Generative UI wird verständlich, wenn die Anwendung zeigt, was vorgeschlagen wurde, was bereits feststeht und was du als Nächstes tun kannst. Dafür brauchst du klare Zustände und gezielte Interaktionen. Halte Orientierungspunkte stabil Navigation, Zurück-Button und Einstellungen sollten an derselben Stelle bleiben. Wenn sich der Arbeitsbereich verändert, braucht der Nutzer weiterhin vertraute Wege. Auch die Hauptaktion einer Karte sollte konsistent sein. „Übernehmen“ darf nicht nach jeder Anfrage an einer anderen Position auftauchen. Zeige, was sich verändert hat Nach „Mach den Reiseplan günstiger“ sollte erkennbar sein, welche Unterkünfte oder Aktivitäten ersetzt wurden. Eine kurze Änderungsübersicht reicht häufig aus. Zusätzlich hilft eine Möglichkeit, die vorherige Fassung wiederherzustellen. Bereits bestätigte Inhalte solltest du nur verändern, wenn der Nutzer das ausdrücklich verlangt. Lass einzelne Vorschläge bearbeiten Einzelne Karten brauchen gezielte Aktionen wie „Ersetzen“, „Bearbeiten“ oder „Entfernen“. Bei einem Wochenplan sollte „Mittwoch ändern“ nicht automatisch den gesamten Plan verwerfen. Das kostet Aufmerksamkeit und kann bereits geleistete Arbeit verlieren lassen. Plane Zwischenzustände Die Anwendung muss auch dann verständlich bleiben, wenn noch kein vollständiges Ergebnis vorliegt. Geeignete Zustände sind: Die Anfrage wird verarbeitet. Zusätzliche Informationen fehlen. Ein Teil des Ergebnisses ist verfügbar. Eine Datenabfrage ist fehlgeschlagen. Eine Aktion wartet auf Bestätigung. Ein endloser Ladeindikator gibt dem Nutzer keine Entscheidungsmöglichkeit. Biete bei längeren Vorgängen einen Abbruch und bei Fehlern einen erneuten Versuch an. Prüfe Barrierefreiheit an den Komponenten Tastaturbedienung, Fokusreihenfolge u
Por Lawrence Dauchy, fundador de VP0 Publicado el 4 de octubre de 2026 La inteligencia artificial permite crear páginas web a partir de una descripción, pero la herramienta adecuada depende del resultado que necesitas. Wix encaja con una web de servicios que quieras editar fácilmente; Framer, con portfolios y páginas donde importa la presentación visual; Lovable y v0, con proyectos que requieren interfaces y funciones más personalizadas. Para elegir, comprueba cómo se modifica el contenido, cómo funciona la página en móvil y qué exige su mantenimiento. La primera versión sirve como punto de partida: todavía debes revisar la información, probar los formularios y confirmar que todo funciona antes de publicar. ¿Qué puede hacer la inteligencia artificial al crear una web? La inteligencia artificial puede ayudarte a definir la estructura, redactar un primer borrador, proponer un diseño y generar código. El alcance depende de la herramienta: algunas trabajan dentro de un editor visual y otras construyen un proyecto que después puedes modificar. Conviene distinguir tres resultados diferentes: Una propuesta visual que enseña cómo podría quedar la página. Una web informativa con contenido, navegación y formulario. Una aplicación web con usuarios, datos guardados y funciones propias. El tercer caso exige más comprobaciones. Un botón de acceso no demuestra que las cuentas estén configuradas correctamente, del mismo modo que una pantalla de reservas no confirma que exista disponibilidad real. Para una primera web, empieza por una acción principal: recibir consultas, enseñar trabajos o presentar un servicio. Si intentas incluir una tienda, una comunidad y un panel privado desde el primer día, tendrás más decisiones pendientes que páginas terminadas. La IA también necesita información fiable. Debes aportar tus servicios, condiciones, imágenes y datos de contacto. Puede ayudarte a ordenar ese material, pero no debería inventar testimonios, clientes, premios ni resultados comerciales. El criterio práctico es sencillo: utiliza la IA para construir y revisar más rápido, y conserva tú la decisión sobre lo que prometes y publicas. ¿Cuáles son las mejores herramientas para hacer páginas web con IA en 2026? Wix, Framer, Lovable y v0 merecen consideración para necesidades distintas. Mi recomendación es elegir por el tipo de web y por cómo vas a mantenerla, antes de valorar lo llamativa que resulta la primera generación. Wix: para una web de negocio que puedas editar Wix permite generar una web a partir de información sobre tu negocio y ajustar después su estructura, tema y contenido en el editor. Lo elegiría para un profesional independiente o un pequeño negocio que necesita presentar servicios y actualizar su web sin trabajar directamente con código. Antes de decidir, prueba cambios cotidianos: sustituir una imagen, añadir una página y modificar un texto largo. Si esas tareas te resultan claras, la herramienta puede encajar con tu mantenimiento habitual. La limitación práctica es trabajar dentro de su plataforma. Comprueba que el flujo de edición y las condiciones de publicación responden a tus necesidades antes de dedicar tiempo a personalizar cada sección. Framer: para un portfolio o una página de campaña Framer combina herramientas de IA con edición visual, diseño adaptable a diferentes pantallas y publicación. También dispone de gestión de contenidos para proyectos que necesitan páginas repetidas. Lo elegiría cuando la composición y la presentación visual tienen mucho peso: un portfolio, una web de estudio o una página para explicar un producto. Mi consejo es empezar por tipografía, anchura del contenido y jerarquía. Añade animaciones solo cuando faciliten entender algo. Un portfolio pierde utilidad si obliga al visitante a esperar para ver tus trabajos. Para funciones propias complejas, evalúa las integraciones y el mantenimiento necesario antes de comprometerte con este enfoque. Lovable: para construir conversando con la IA Lovable permite describir una web en lenguaje natural y pedir cambios mediante conversación. Puedes trabajar sobre páginas de presentación y proyectos que requieren más interacción. Lo elegiría para probar una idea cuando prefieres explicar el resultado y corregirlo paso a paso. Pide primero una página sencilla. Después incorpora una función cada vez y verifica lo que ocurre con datos reales. Esto ayuda a detectar si la herramienta ha construido el comportamiento esperado o solo una representación visual. La dificultad aparece cuando aceptas cambios sin entender sus consecuencias. Una modificación del formulario puede afectar al almacenamiento de datos o al recorrido del usuario. Revisa cada incorporación antes de seguir. v0: para interfaces y proyectos con código v0 genera interfaces y aplicaciones web a partir de instrucciones. Su documentación contempla proyectos con lógica de servidor y conexiones a bases de datos, además del trabajo visual. Lo elegiría si necesitas una interfaz personalizada y puedes revisar el proyecto por tu cuenta o con ayuda técnica. Funciona mejor como parte de un proceso incremental: estructura, componentes, datos y pruebas. Evita pedir todo el producto en una sola instrucción. Su principal compromiso es la responsabilidad técnica. Generar código no elimina la necesidad de comprobar accesos, errores, dependencias y funcionamiento después de publicar. ¿Cómo elegir una herramienta según tu proyecto? La mejor elección es la que permite completar la tarea principal y mantenerla después. Una buena vista previa sirve de poco si no puedes actualizar un servicio o resolver un fallo del formulario. Antes de probar plataformas, escribe una descripción de cinco líneas: quién visitará la web, qué necesita saber, qué acción quieres conseguir, qué contenido tienes y quién hará las actualizaciones. Después plantea una prueba pequeña y comparable. En cada herramienta, intenta crear la misma página de servicios con un encabezado, tres bloques de contenido, una sección de preguntas y una llamada a la acción. Comprueba estos puntos: ¿Puedes cambiar textos e imágenes sin rehacer la página? ¿El diseño funciona en móvil con tu contenido real? ¿Puedes añadir las páginas que necesitarás más adelante? ¿Entiendes cómo se publica y quién mantiene el proyecto? ¿Puedes recuperar una versión anterior si un cambio falla? Si solo necesitas enseñar información, prioriza la facilidad de edición. Si necesitas guardar datos, prioriza el funcionamiento y la revisión técnica. También piensa en la entrega. Para una web de cliente, explica qué podrá modificar y qué tareas requerirán ayuda. Para tu propio negocio, identifica los cambios que realizarás cada mes. No elijas una herramienta únicamente porque genera una portada espectacular. Prueba la página más difícil de tu proyecto: una ficha extensa, un formulario con varios campos o una lista de servicios. Ahí aparecen los compromisos reales. ¿Cómo crear una página web con IA paso a paso? Empieza por el contenido y la acción principal, genera una estructura limitada y corrige por partes. Este método permite evaluar cada decisión antes de añadir más complejidad. 1. Prepara información real Reúne el nombre del negocio, los servicios, el público, las imágenes y los datos de contacto. Añade lo que no debe aparecer: afirmaciones sin pruebas, servicios que no ofreces o fotografías que no tienes permiso para utilizar. Si todavía no dispones de testimonios, omite esa sección. Una web breve y honesta es preferible a otra llena de detalles inventados. 2. Describe la primera versión Una instrucción inicial útil sería: Crea una web en español para un estudio de cerámica que vende piezas por encargo. El objetivo es recibir solicitudes de presupuesto. Incluye presentación, tipos de piezas, proceso de encargo, preguntas frecuentes y contacto. Usa fotografías como elemento principal, fondo claro y textos breves. No inventes precios, reseñas ni plazos. Marca la información pendiente para que pueda completarla. La instrucción define negocio, objetivo, estructura y límites. Puedes adaptar esos elementos sin necesitar vocabulario técnico. 3. Corrige primero la estructura Comprueba si una persona entiende qué ofreces al leer el primer bloque. Después revisa el orden de las secciones y elimina las que no ayudan a tomar una decisión. No empieces ajustando sombras si todavía falta explicar el servicio. 4. Ajusta una cosa cada vez Pide cambios concretos: «Reduce el encabezado», «Añade espacio entre los servicios» o «Mantén las imágenes y cambia únicamente la tipografía». Tras cada cambio, revisa también el móvil. Una mejora en escritorio puede introducir un problema en una pantalla estrecha. 5. Conecta y prueba la acción principal Si buscas consultas, envía una consulta real y confirma que llega al destino esperado. Si hay reservas, comprueba disponibilidad, confirmación y cancelación. Antes de publicar, sustituye todos los textos provisionales. No dejes que una maqueta se convierta accidentalmente en una promesa comercial. Ejemplos de páginas web que puedes crear con inteligencia artificial Los proyectos más útiles para empezar tienen un objetivo claro y pocas dependencias. Los siguientes ejemplos son propuestas de trabajo, no casos de clientes ni resultados garantizados. Una web para un servicio local Imagina un negocio de mantenimiento de jardines. La página debería explicar qué trabajos realiza, dónde presta servicio y cómo solicitar una visita. La primera versión puede incluir presentación, servicios, fotografías propias, proceso de contratación y contacto. Instrucción sugerida: Diseña una web para un servicio de jardinería. Prioriza la solicitud de visita. Usa lenguaje directo, una navegación sencilla y fotografías de trabajos reales. No añadas valoraciones ni certificaciones. Deja pendientes las zonas de cobertura hasta que las facilite. La prueba importante es que el visitante pueda contactar desde el móvil sin buscar entre varias secciones. Un portfolio de diseño Un portfolio necesit
By Lawrence Dauchy, Founder of VP0 Published October 4, 2026 The most useful free Claude Artifacts UI templates are small, editable interfaces with working interactions: a searchable dashboard, a task board, a pricing calculator, or a settings screen. Start with one clear purpose, use sample data, and ask Claude to build around code you can understand and reuse. The examples below provide original copy-paste starters and prompts for adapting them. They use standard HTML, CSS, and JavaScript, so you can also save them as local HTML files. Treat them as interface prototypes: the buttons and calculations work, but accounts, payments, and shared data need separate implementation. What should a free Claude Artifacts UI template include? A useful template should give you a readable layout, a working interaction, and an obvious place to change its content. A screen that looks finished but contains dead buttons creates extra work as soon as you try to adapt it. For a first prototype, look for five things: Sample data that resembles the content your users will see. Clear headings, labels, and button text. Responsive behavior for narrow screens. A meaningful action, such as filtering, adding, or calculating. Code that keeps content separate from presentation where practical. A template does not need a complicated component system. A short page with sensible spacing and one reliable interaction is often easier to improve than a large dashboard full of decorative widgets. “Free” also needs a clear meaning. The code below is provided without a purchase requirement. That does not mean every feature in your Claude account, every generation request, or every service you later connect will be unlimited or free. Choose the screen according to the decision you need to test. If you want to know whether people understand your product, build a landing page. If you want to test a workflow, build the actual form or task screen. Which UI examples are the best starting points? The best starting point is the smallest interface that demonstrates your main user action. These five patterns cover different questions without requiring a complete application. Searchable dashboard Use a searchable dashboard when users need to find and compare records. Examples include projects, products, support requests, and content drafts. Build the search interaction before adding charts. A dashboard becomes useful when users can locate something and act on it. Summary cards should explain the records below them rather than display unrelated numbers. Task board Use a task board when the product revolves around progress. A simple board can help you test labels, task creation, and movement between stages. Start with buttons for moving tasks. Drag-and-drop can come later if testing shows it improves the workflow. Pricing calculator Use a calculator when users need to understand how inputs affect an estimate. Examples include seat counts, project quantities, or service packages. Show the assumptions beside the result. A precise-looking total is misleading if the user cannot see what it includes. Settings screen Use a settings screen when you need to test preferences, notification choices, or account options. Include a visible saved state or explain that changes apply immediately. A switch that changes color without explaining its effect is incomplete. Landing page Use a landing page when you need to test positioning and message hierarchy. Give it one primary action. A headline, a concrete explanation, a small example, and a clear button are enough for an initial version. Add sections only when they answer a real visitor question. How do you turn starter code into an artifact? Paste the starter code into a conversation and explain the output you want. Specify the format, interaction, and constraints rather than asking Claude to “make it modern.” Use this prompt with any example below: Use the code below as the starting point for a responsive interface artifact. Keep the existing behavior and improve the visual design. Requirements: - Keep everything in one self-contained HTML file. - Use inline CSS and plain JavaScript. - Do not add external fonts, images, scripts, or dependencies. - Preserve semantic HTML and visible keyboard focus. - Use sample data only. - Make the layout work at 375px and 1280px widths. - Explain any feature that remains a demonstration. Return the complete HTML document. Then paste the code immediately after the prompt. If your available artifact workflow uses a different output format, ask Claude to adapt the starter to that format. Do not assume that controls or preview behavior from an older tutorial will match your current account. Keep a copy of each working version. When you request a revision, identify the exact change: “reduce the card padding” or “add a status filter.” This makes it easier to preserve behavior while improving the design. What copy-paste code works for a searchable dashboard? A searchable card dashboard is a practical first template because it combines layout, data rendering, and filtering. This example includes a labeled search field, a result count, and an empty state. Save it as dashboard.html to open it directly in a browser, or paste it into Claude with the adaptation prompt. <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Project Dashboard</title> <style> * { box-sizing: border-box; } body { margin: 0; background: #f5f7fb; color: #182235; font: 16px/1.5 system-ui, sans-serif; } main { max-width: 1000px; margin: auto; padding: 40px 20px; } h1 { margin-bottom: 4px; } .intro { color: #526078; } label { display: block; margin-bottom: 8px; } input { width: 100%; padding: 12px; border: 1px solid #aab5c5; border-radius: 10px; font: inherit; } input:focus-visible { outline: 3px solid #2563eb; outline-offset: 3px; } .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; } article { padding: 20px; border: 1px solid #dce2eb; border-radius: 16px; background: white; } article h2 { margin: 0 0 12px; font-size: 20px; } .status { display: inline-block; padding: 4px 10px; border-radius: 20px; background: #e8eefb; color: #23457a; font-size: 14px; } </style> </head> <body> <main> <h1>Projects</h1> <p class="intro">Find a project by name or status.</p> <label for="search">Search projects</label> <input id="search" type="search" placeholder="Try Website or Active"> <p id="count" role="status"></p> <div id="projects" class="grid"></div> </main> <script> const projects = [ { name: "Website refresh", status: "Active", owner: "Maya" }, { name: "Customer onboarding", status: "Planning", owner: "Sam" }, { name: "Product launch", status: "Complete", owner: "Alex" } ]; const search = document.getElementById("search"); const container = document.getElementById("projects"); const count = document.getElementById("count"); function render() { const query = search.value.trim().toLowerCase(); const matches = projects.filter(project => `${project.name} ${project.status} ${project.owner}` .toLowerCase().includes(query) ); container.replaceChildren(); matches.forEach(project => { const card = document.createElement("article"); const title = document.createElement("h2"); const owner = document.createElement("p"); const status = document.createElement("span"); title.textContent = project.name; owner.textContent = `Owner: ${project.owner}`; status.textContent = project.status; status.className = "status"; card.append(title, owner, status); container.append(card); }); count.textContent = matches.length ? `${matches.length} project${matches.length === 1 ? "" : "s"} found` : "No projects match your search."; } search.addEventListener("input", render); render(); </script> </body> </html> The project list is the main customization point. Replace the sample names, owners, and statuses before changing the layout. The code inserts content with textContent , which treats values as text. Keep that approach when you replace sample records with user-provided content. For a useful next revision, ask: Add a labeled status dropdown beside the search field. Both filters must work together. Keep the empty state and result count accurate. Do not add charts or external dependencies. That revision tests real dashboard behavior while keeping the interface manageable. What copy-paste code works for an interactive calculator? A calculator is a good template when you want immediate feedback from user input. This example uses fictional pricing to demonstrate the interaction: a $12 base amount plus $8 per seat. It produces an estimate only. It does not charge anyone, calculate tax, or connect to a billing service. <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Plan Calculator</title> <style> * { box-sizing: border-box; } body { margin: 0; padding: 24px; background: #edf2f7; color: #172033; font: 16px/1.5 system-ui, sans-serif; } main { max-width: 480px; margin: 40px auto; padding: 28px; border-radius: 20px; background: white; border: 1px solid #d9e1ec; } h1 { margin-top: 0; } label { display: block; margin: 24px 0 8px; } input { width: 100%; accent-color: #234fd1; } input:focus-visible { outline: 3px solid #234fd1; outline-offset: 6px; } .total { margin: 24px 0; padding: 20px; border-radius: 12px; background: #eef3ff; } output { display: block; font-size: 36px; font-weight: 700; } .note { color: #526078; font-size: 14px; } </style> </head> <body> <main> <h1>Estimate your plan</h1> <p>Demo pricing: $12 base plus $8 per seat each month.</p> <label for="seats"> Team size: <span id="seat-count">3</span> seats </label> <input id="seats" type="range" min="1" max="25" value="3"> <div class="total"> <span>Estimated monthly total</span> <output id="total" for="seats"></output> </div> <p class="note"> Fictional pricing for this example. Taxes and other fees are not
본 게시글은 비제이퍼블릭의 서평단으로 선정되어 작성되었습니다. [목차] 들어가며 이 책은 어떤 책인가? 책 후기 추천 대상 마무리 [들어가며] 요즘 개발자들의 가장 큰 고민은 "AI가 코드를 잘 짜주는데, 앞으로 개발자는 무엇을 해야하나?"입니다. 저 또한 이러한 고민을 가지고 있습니다. 문법이나 프레임워크를 다루는 책은 많았지만, 그래서 무엇을 선택하고 왜 그렇게 결정해야 하는가를 다루는 책은 드물었습니다. 그러던 중 비제이퍼블릭의 '코드를 넘어서 판단하는 개발자'의 서평단 모집글을 보게되었습니다. 제목에서 제 고민과 맞닿아 있어 신청하게 되었습니다. [이 책은 어떤 책인가?] 제목 : 코드를 넘어서 판단하는 개발자 저자 : 팍스 출판사 : 비제이퍼블릭 https://product.kyobobook.co.kr/detail/S000221248777 이 책은 '코드를 작성하는 방법'보다 '개발자가 어떻게 생각해야 하는가'에 초점이 맞춰져 있습니다. 코드를 짠 이후에 오는 "판단"의 영역을 다루고 있습니다. 설계를 어떻게 선택할지, 리뷰에서 무엇을 보고 어떤 기준으로 결정할지, AI가 낸 결과를 어디까지 믿고 생각해야할지 같은 문제입니다. "어떤 코드가 더 좋은가?"라고 접근하는 것보다 "현재 프로젝트에서는 어떤 선택이 더 적합한가?"라는 질문을 해야 합니다. 이런 고민을 하고 있다면 '코드를 너머서 판단하는 개발자'는 한 번 읽어볼 만한 개발자 책 추천 목록에 넣어볼 수 있다고 생각합니다. [책 후기] 이 책에서 흥미롭게 느껴졌던 부분은 제목에 들어간 '판단'이였습니다. 개발자라고 하면 보통 코딩을 잘하는 사람을 먼저 떠올리게 됩니다. 하지만 실무에서 개발자가 마주하는 문제는 정답이 하나로 정해져 있는 경우가 많지 않습니다. 어떤 기술을 사용할지, 기존 코드를 수정할지 새롭게 설계할지, 성능과 유지보수성 중 어느 부분을 우선할지 등 여러 가지 요소를 함께 고려해야 합니다. 따라서 개발자의 실력은 코드를 빠르게 작성하는 능력뿐만 아니라 상황을 이해하고 적절한 선택을 하는 능력까지 포함한다고 볼 수 있습니다. 이런 관점에서 보면 이 책은 프로그래밍 참고서라기보다 개발자가 기술을 바라보는 관점과 사고방식을 점검하는 데 도움을 주는 개발자 책 추천 도서라고 생각됩니다. 진입 장벽은 문법서보다 낮고, 어느 정도 실무 경험이 있을수록 더 깊게 읽힐 것 같다고 생각됩니다. [추천 대상] 개발 공부 방향을 다시 잡고 싶은 분 개발자의 사고방식을 점검하고 싶은 분 [마무리] '코드를 너머서 판단하는 개발자'를 읽으며 가장 크게 느낀 점은 개발 공부의 방향을 조금 다르게 생각해볼 필요가 있다는 것이었습니다. 개발을 공부하면 자연스럽게 새로운 기술을 많이 알아야 한다고 생각하게 됩니다. 새로운 언어, 새로운 프레임워크, 새로운 라이브러리, 새로운 개발 도구가 계속 나오기 때문에 무엇을 공부해야 할지 고민하게 됩니다. 하지만 모든 기술을 다 공부하는 것은 현실적으로 불가능합니다. 그래서 결국 필요한 것은 기술 자체를 무작정 많이 아는 것보다 필요한 기술을 선택하고, 그 기술을 제대로 이해하고, 상황에 맞게 활용하는 능력입니다. 이런 관점에서 이 책은 기술 학습에 최적화된 책이라는 표현이 잘 어울린다고 느꼈습니다. 지식을 전달하는 것이 아니라 "이 지식을 실제로 어떻게 활용할 것인가?"라는 생각을 하게 만들어줍니다. 책에서 얻은 내용을 자신의 프로젝트에 연결하고, 직접 비교하고, 장단점을 정리하다 보면 자연스럽게 개발자 기술 학습의 깊이도 달라질것이라 예상됩니다. 특히 개발 경력이 쌓일수록 "무엇을 아느냐"만큼 "언제 그것을 사용하는가"가 중요해집니다. 그런 의미에서 이 책은 개발 입문자뿐만 아니라 어느 정도 개발 경험이 있는 사람도 자신의 사고방식을 점검하는 데 활용할 수 있는 도서라고 생각합니다.
Por Lawrence Dauchy Publicado em 4 de outubro de 2026 Para usar o v0 da Vercel, descreva a interface que você quer criar, gere uma primeira versão e refine o resultado com pedidos específicos. Comece com uma página ou um fluxo pequeno, teste as interações e só depois acrescente banco de dados, autenticação e outras integrações. O resultado melhora quando você explica quem vai usar o produto, o que essa pessoa precisa fazer e como a tela deve se comportar. Pedir “um dashboard moderno” deixa muitas decisões em aberto. Descrever os conteúdos, os estados e a prioridade visual dá uma direção mais clara para a construção. O que é o v0 da Vercel e para que ele serve? O v0 é uma ferramenta de criação com inteligência artificial que transforma instruções em código e aplicações web. Você pode usá-lo para construir componentes, páginas e projetos com interface, dados e lógica de servidor. A documentação apresenta o Next.js como o caminho padrão para aplicações completas. Para quem está começando, o uso mais fácil de avaliar é uma interface pequena: uma página de apresentação, um formulário ou um painel com dados fictícios. Esses projetos têm limites claros. Você consegue comparar o pedido com o resultado, identificar o que falta e corrigir uma parte por vez. Uma página de apresentação, por exemplo, pode precisar de: Um título que explique o produto. Uma descrição curta. Uma imagem ou demonstração. Uma ação principal. Uma seção de dúvidas. Um formulário de contato. Já um painel exige decisões sobre navegação, filtros, conteúdo, permissões e atualização dos dados. A diferença importa porque uma tela bonita pode esconder um fluxo incompleto. Um botão pode aparecer no lugar certo e ainda não executar nenhuma ação. Por isso, avalie aparência e comportamento separadamente durante a construção. Como começar no v0 com um primeiro projeto? Comece com uma tarefa que possa ser testada em poucos minutos. Uma lista de tarefas com criação, edição e conclusão de itens é um exercício mais útil do que tentar gerar um sistema inteiro no primeiro pedido. Abra o v0, entre na sua conta e inicie uma conversa para o projeto. Antes de enviar o primeiro prompt, escreva uma definição curta do que você quer construir. Defina o usuário e a ação principal Considere um organizador para profissionais autônomos. A pessoa precisa visualizar os trabalhos da semana, adicionar uma tarefa e marcar o que terminou. Essa descrição já ajuda a decidir quais elementos merecem destaque. O botão para adicionar uma tarefa precisa estar visível. A lista deve mostrar título, prazo e situação. Configurações secundárias podem ficar em uma área menos chamativa. Limite a primeira versão Para o primeiro teste, use dados fictícios e comportamento local. Isso permite validar a interface antes de configurar serviços externos. Também deixe explícito o que significa “funcionar”. Adicionar uma tarefa deve criar um item na lista. Concluir uma tarefa deve mudar sua situação. Filtrar deve alterar os itens exibidos. Envie um prompt inicial completo Crie uma aplicação web responsiva para profissionais autônomos organizarem tarefas da semana. A tela principal deve ter: - Cabeçalho com o nome "Minha semana". - Botão "Adicionar tarefa". - Filtros: Todas, Pendentes e Concluídas. - Lista de tarefas com título, prazo e situação. - Formulário para criar e editar uma tarefa. - Estado vazio com orientação para adicionar o primeiro item. Use dados fictícios e estado local nesta primeira versão. Ainda não conecte banco de dados ou autenticação. Estilo: - Fundo claro. - Texto com bom contraste. - Uma cor de destaque azul. - Espaçamento confortável. - Poucos elementos decorativos. No celular, organize o conteúdo em uma coluna. Todos os botões e filtros devem funcionar no protótipo. Use textos em português do Brasil. Depois da geração, faça o percurso principal completo. Crie um item, edite, conclua e teste os filtros. Anote os problemas antes de pedir alterações. Como escrever prompts melhores para UI? Um bom prompt de UI, ou interface do usuário, combina objetivo, estrutura, comportamento e critérios de qualidade. Adjetivos como “bonito” e “moderno” ajudam pouco quando aparecem sem decisões concretas. Você não precisa escrever uma especificação longa para toda tela. Precisa fornecer informação suficiente para reduzir interpretações que atrapalham o resultado. Explique a tarefa da pessoa “Crie uma tela de clientes” é um pedido amplo. “Crie uma tela para uma equipe encontrar clientes pelo nome e consultar o histórico de atendimento” define uma tarefa. A segunda versão sugere busca, identificação e acesso ao histórico. Também permite testar se a tela realmente facilita o trabalho. Descreva a hierarquia visual Diga qual informação deve chamar atenção primeiro. Em uma página de produto, pode ser o nome, a imagem e a ação principal. Em um painel operacional, pode ser a fila de itens que exigem atenção. Evite pedir destaque igual para tudo. Quando todos os cartões usam cores fortes e números grandes, fica difícil identificar a prioridade. Inclua os estados da interface Peça carregamento, ausência de resultados, erro e sucesso. Esses estados fazem parte do fluxo e precisam de textos claros. Um formulário, por exemplo, deve explicar qual campo precisa de correção. Uma busca sem resultados deve oferecer uma forma de ajustar a consulta. Estabeleça critérios verificáveis Use instruções que possam ser conferidas: Refine a interface com estes critérios: - A ação principal deve estar visível ao abrir a página. - Os campos precisam de rótulos permanentes. - O foco do teclado deve ser visível. - Mensagens de erro devem aparecer próximas ao campo. - O layout deve funcionar em uma tela de 360 pixels. - A informação não pode depender apenas de cor. - Preserve as funcionalidades já implementadas. A recomendação prática é transformar preferências em decisões observáveis. “Mais organizado” vira “reduza a quantidade de elementos no cabeçalho e agrupe filtros acima da lista”. Como usar imagens de referência sem perder o controle do resultado? Você pode anexar uma captura de tela e explicar quais características deseja aproveitar. O v0 analisa elementos visuais da imagem, como layout, cores e componentes, para orientar a geração. A imagem, porém, não explica tudo. Ela não mostra necessariamente como um menu abre, o que acontece após salvar ou como a tela se adapta ao celular. Por isso, acrescente instruções sobre comportamento e conteúdo. Diga o que aproveitar Escolha características específicas: proporção dos cartões, organização da navegação, densidade do conteúdo ou hierarquia tipográfica. Também explique o que será diferente. Seu produto pode ter menos informações, outra ação principal ou uma identidade visual própria. Use a imagem anexada como referência para: - Organização da navegação lateral. - Hierarquia dos títulos. - Espaçamento entre cartões. - Distribuição do conteúdo principal. Adapte a interface para um organizador de tarefas. Use identidade visual própria e textos em português. Não reproduza logotipos, nomes de empresas ou conteúdo da referência. No celular, transforme a navegação lateral em um menu. Inclua estados vazio, carregamento e erro. Complete o que a imagem não mostra Se existe um botão “Adicionar”, descreva o formulário que ele abre. Se há filtros, explique os critérios. Se aparecem números, indique se são dados fictícios ou resultados de um cálculo. Não espere que a ferramenta deduza corretamente regras de negócio a partir da aparência. Compare o resultado por partes Avalie primeiro a estrutura. Depois revise tipografia, cores e detalhes. Esse cuidado evita gastar tempo ajustando sombras em uma tela cuja navegação ainda está errada. Reaproveite padrões de organização e interação, mantendo marca, conteúdo e ativos próprios. Quais exemplos e prompts funcionam para projetos diferentes? Os melhores exemplos partem de uma ação concreta. Uma página de apresentação precisa explicar e encaminhar. Um painel precisa ajudar a acompanhar e decidir. Um formulário precisa coletar informações com clareza. Página de apresentação de um serviço Este prompt serve para testar mensagem, organização e contato: Crie uma landing page responsiva para um serviço de organização financeira para profissionais autônomos. Objetivo: Explicar o serviço e receber pedidos de contato. Estrutura: - Cabeçalho simples. - Título direto sobre o problema resolvido. - Descrição curta. - Botão principal "Quero organizar minhas finanças". - Seção com três etapas do atendimento. - Lista do que está incluído. - Perguntas frequentes. - Formulário com nome, email e mensagem. Estilo: Fundo claro, títulos escuros e destaque verde. Use composição discreta, com poucos efeitos. Não invente depoimentos, clientes, resultados ou selos. Na primeira versão, simule o envio do formulário e identifique claramente essa simulação. Depois, verifique se a página explica o serviço sem depender de uma conversa. Confira também se o formulário informa corretamente quando o envio é apenas demonstrativo. Painel de atendimento Um painel deve ajudar a encontrar o próximo trabalho: Crie um painel web para uma equipe acompanhar solicitações de atendimento. Inclua: - Navegação com Solicitações e Configurações. - Indicadores de solicitações abertas e resolvidas. - Busca por nome ou assunto. - Filtro por situação. - Lista de cartões com assunto, cliente e responsável. - Painel de detalhes ao selecionar uma solicitação. Use dados fictícios identificados como demonstração. Busca, filtros e seleção devem funcionar. Organize a interface para leitura rápida. No celular, mantenha os filtros acessíveis e abra os detalhes em uma visualização adequada. Teste o painel com assuntos longos e listas vazias. Esses casos revelam problemas que os exemplos curtos costumam esconder. Formulário de cadastro O formulário precisa explicar o que será enviado: Crie um formulário de cadastro para um evento. Campos: - Nome completo. - Email. - Categoria de participação. - Necessidades de acessibi
BPDU Guard는 Edge 포트로 BPDU가 들어오면 그 포트를 즉시 errdisable 상태로 꺼버리는 안전장치 입니다. 서버가 붙어 있어야 할 포트에 누가 스위치를 꽂았을 때, 네트워크 전체가 영향을 받기 전에 그 포트만 막아줘요. 먼저 알아둘 것 BPDU 는 스위치끼리 STP 정보(Root BID, Root Path Cost, Sender BID, Port ID)를 주고받는 제어 메시지입니다. Edge port 는 스위치가 아니라 서버나 PC가 붙는 끝단 포트입니다. Edge로 설정한 포트는 장비가 Up되면 STP 단계(Listening, Learning)를 거치지 않고 바로 Forwarding으로 동작해요. 그래서 정상적인 상황이라면 Edge 포트에서는 BPDU가 오고 갈 일이 없습니다. 서버는 STP를 모르니까요. 문제는 예외 상황 문제는 작업 중이거나 어떤 상황 때문에 이 포트에 스위치(허브나 소형 스위치 포함)가 연결되는 순간 생깁니다. 상대 스위치는 BPDU로 STP 정보를 주고받으려고 하고, BPDU Guard가 없으면 이렇게 돼요. 그 포트가 일반 STP 포트로 바뀌어 STP에 참여합니다. 붙은 스위치가 Root bridge가 되면 트래픽 경로가 바뀝니다. 수렴하는 동안 짧은 루프나 토폴로지 변경이 생길 위험이 있습니다. BPDU Guard가 켜져 있다면 같은 상황에서 BPDU를 받는 즉시 그 포트만 errdisable 상태로 만들어 shutdown시킵니다. 붙은 스위치는 STP에 끼어들 수 없고, 서버와 나머지 네트워크는 그대로 정상 동작해요. 왜 필요할까 Edge 포트는 STP 대기 단계를 건너뛰어서 빠르게 올라오는 대신, "이 포트 뒤에는 서버뿐"이라는 가정에 기대고 있습니다. 이 가정이 깨졌을 때 막아줄 장치가 없으면 위험하니, BPDU가 들어왔다는 건 가정이 깨졌다는 신호로 보고 그 포트를 차단하는 거예요. 설정 예시 ! 전역: portfast(edge) 포트 전부에 BPDU Guard를 기본 적용 spanning-tree edge-port bpduguard default ! 인터페이스: 포트를 edge로 지정 (위 전역 규칙이 여기에 적용됨) interface Ethernet1/1 spanning-tree portfast 전역 명령은 portfast로 지정된 포트에만 BPDU Guard를 기본으로 켜줍니다. 특정 인터페이스에 직접 spanning-tree bpduguard 를 설정하면 전역 기본값보다 그쪽이 우선이에요. 알아두면 좋은 점 portfast를 빠뜨리면 보호받지 못합니다. 전역 명령만 넣고 서버 포트에 spanning-tree portfast 를 설정하지 않으면 그 포트에는 BPDU Guard가 적용되지 않아요. errdisable된 포트는 저절로 살아나지 않습니다. 붙어 있는 스위치를 떼어낸 뒤 shutdown , no shutdown 으로 복구하거나, errdisable recovery cause bpduguard 와 errdisable recovery interval 로 자동 복구를 설정합니다. 원인을 그대로 둔 채 자동 복구를 켜면 포트가 올라왔다 내려갔다를 반복하니 주의하세요. 설정 확인은 show errdisable recovery 로 합니다. 스위치끼리 연결하는 포트에는 쓰면 안 됩니다. 포트 범위 전체에 portfast와 BPDU Guard를 템플릿처럼 적용하다가 스위치 간 링크까지 포함되면, 그 링크가 errdisable되어 끊깁니다. 정리 Edge 포트는 STP 단계를 건너뛰는 대신 "서버만 붙는다"는 가정에 의존합니다. BPDU Guard는 이 가정이 깨졌을 때, 즉 Edge 포트로 BPDU가 들어왔을 때 그 포트만 errdisable로 막아서 Root 변경이나 루프 같은 문제가 번지는 것을 막는 안전장치예요.
안녕하세요 버려뒀던 벨로그를 이렇게 잡게된 이유는.. 기업프로젝트가 끝나고!! 뒤늦게.. 큐포터즈로 큐시즘 34기 디자인파트 합격 후기 를 써보려고 합니다. 우선 34기 합격 후기를 쓰기 전에 33기 불합격에 대해서도 이야기 해보고 싶습니다. 어떤 게 달랐는지 이야기해보면, 추후 35기 지원을 원하시는 분들께 도움이 될 거라고 생각합니다. 저도 면접을 준비하며 큐시즘 후기를 살펴보며 도움을 받았던 터라, 최선을 다해서 적어보겠습니다. 33기에 지원하다 당시 같은 진로인 프로덕트 디자이너를 희망하는 친구들이 여러 it 동아리들에서 개발자와 협업하며 실무 경험을 쌓는게 좋아 보였습니다. 그 중에서 큐시즘에 지원하게 된 계기는 생각보다 단순합니다. 체계적이어보였고, 브랜딩이 단단해보였습니다. 그래서 33기 모집이 나오기만을 기다렸다가, 지원을 합니다! 포트폴리오를 3개 넣어야했기에, 당시 사이드 프로젝트에서 서브 디자이너로 활동한 작업 한 개와 학교에서 한 결과물 두 개를 넣었습니다. 부족한 건 이미 알고 있었고, 다음 단계를 위한 도약이라는 생각으로 최대한 정리해서 지원합니다. 정렬도 안 맞는 부족한 포트폴리오로 냈고, 감사하게도 서류에 합격해 면접에 갔습니다. 함께 보는 면접자가 질문당 답변을 2-3분씩 하셨는데, 저도 그래야하는 줄 알고 비슷하게 답을 했습니다.. ᄒ 지금 생각하면 상당히 횡설수설 했습니다. 잘 기억나지 않고 아카이빙도 안해뒀습니다. (그래도 기억나는 받은 질문은 뒤에 살짝 언급 드리겠습니다) 이때 솔직히 눈물을 훔쳤습니다.. 그렇게 큐시즘과의 인연은 여기까진 줄 알았으나... 이후 멘탈이 나가 4개의 it동아리에 지원서를 냈고 잇타 디자인 파트로 활동을 합니다. 잇타 9기 디자인 파트로 활동하며, 팀 내 1인 디자이너로 팀내 디자인 전반을 담당했고 완성도가 훌륭하다고 할 순 없지만 좋은 프로덕트를 만들었습니다. 좋게 봐주신 잇타인이 공모전 팀원으로 저를 데려가 서브 기획 및 디자인 전반을 담당하였습니다. 34기 재지원하다 그래서 상반기 동안 결론적으로 총 2개의 협업경험이 들어간 작업을 만들었습니다. 그러는 사이에 34기 큐시즘 공고가 올라왔고, 생각이 없었으나 지인의 여러차례 권유에 따라 지원하게 됩니다. 고민한 이유는 미대생의 숙제인 졸업전시 때문입니다.. ᄒᄒ 그러나 무려 두번째의 초과학기, 마지막 기회라 결국 지원하게 됩니다. 34기에도 3개의 작업물을 실을 수 있었고 * 잇타 9기 프로덕트 * (WEARTRACK, AI 옷장관리 서비스) 관광데이터 활용 공모전 출품작 (Pozit, 위치정보 기반 여행 기록 서비스) DSUS 장려상 수상작 (오늘의 읽기, 수험생을 위한 독해력 향상 서비스)을 넣었습니다! 셋다 BTC 앱 프로젝트입니다. 1번 작은 IT 동아리 경험+디자인 역량을 잘 보여줄 수 있다고 판단해 넣었고, 2번 작은 기획 및 디자인을 담당하였으며 가장 완성도 높은 작으로 판단하였습니다. 3번 작은 33기에도 넣었는데, 학술대회 수상적으로 UX적으로 매우 고심하여 기획 및 디자인을 했기에 넣게 되었습니다. 이 중 최소 1개의 프로젝트를 피그마 파일을 공개했어야 했는데, 레이어 정리를 그동안 엉망으로 했던 저는 매우 당황했습니다.. (큐시즘에서 기프하면서 리드 디자이너 언니를 통해 고쳤습니다 ᅲ.ᅲ) 결국 2번 작을 넣었습니다. 지원서에 활동 경력 은 최소한으로 적었습니다. (두번의 학술대회 수상, 잇타 10기 부회장 및 9기 디자인파트, UX랩 학부생 연구원, PM 부트캠프 수료) 다음은 제가 적었던 지원서입니다. 1. 큐시즘 34기에 지원한 이유와 활동을 통해 이루고 싶은 목표를 작성해주세요. 성장을 중심으로 적었습니다. 그러나 큐시즘은 세미나, 스터디 세션 없이 바로 프로젝트가 진행하는 동아리라, 제가 가진 능력을 바탕으로 다른 큐밀리들과 성장하고 싶음을 강조하였습니다. * 2. 함께하는 사람들과 ‘LIMIT’을 넘어선 경험을 소개해 주세요. * 이건.. 밴드부에서 공연을 한 얘기를 적었습니다. 여담이지만 it 프로젝트를 완성하는 것과 밴드부 공연을 완성하는 점은 큰 유사점이 있습니다. 각자 맡은 바를 책임감 있게 하며, 데드라인에 맞춰서 최선의 역량을 내야하는 부분에서 동일하다고 생각해 가장 기억에 남는 공연에 대해 적었습니다. * 3. 아래 두 가지 내용을 모두 포함하여 본인의 디자인 가치관과 역량에 관해 구체적으로 설명해 주세요. * 프로덕트 디자인은 UX가 가장 중요한 디자인이라고 설명을 하였습니다. 그러나 비주얼적인 완성도를 빼놓을 수 없다는 이야기를 풀어냈습니다. 4. 본인의 포트폴리오 중 하나를 선택하여, 프로젝트를 다시 진행한다면 가장 먼저 개선하고 싶은 부분은 무엇인지 UX관점에서 작성해 주세요. 또한 그 이유와, 기획자 및 개발자와의 협업 과정에서 어떤 점을 고려하며 해당 개선을 진행할 것인지 함께 설명해 주세요. 잇타 9기 프로덕트의 아쉬운 점에 대해서 적었습니다. 현재 출시를 준비중이며, 출시 이후에 유저들의 반응을 통해 개선하겠다고 하였습니다. * 5. 다음 학기 일정 및 계획 (자유 형식) * 잇타 10기 부회장, 학부생연구원, 졸업작품(3학점수강)을 적었습니다! 면접 준비는 많이 하지는 않았습니다. 큐시즘 이전 기수의 프로젝트와 큐시즘의 인재상 등을 꼼꼼히 읽고, 제가 쓴 자소서와 포트폴리오를 정독했습니다. 조금 늦어서 정확히 정시에 들어갔습니다. ᅲᅲ * 자기소개 및 별명 * 별명 없다고 대답했습니다..(진짜입니다. 평소 다정하다는 말을 많이 듣는다 정도로 말씀드렸습니다..) 기획자랑 의견 다를 때 디자이너와 기획자라는 명확한 역할이 나눠져있을 때는 고집하기보다는 팀원으로서 의견 제시 정도만 한다고 솔직하게 답변하였습니다. 조직 운영 경험(팀 기준vs내 기준) 잇타 10기 부회장으로서 리크루팅 준비중인데 기획자만이라도 대면으로 보는걸로 리더로서 내 기준 고집해서 채택한 이야기를 했습니다. 사실 저는 리더 경험이 별로 없어서 살짝 흔들렸던 것 같습니다. 포짓은 사용자 ui나 기능을 삭제한 경험이있다고햇는데 그게 뭔지 컨셉 극대화를 위해 여행 큐레이션 홈에서 뺀 이야기를 했습니다. 웨어트랙 옷장 열기 버튼이 왜있는지 바로 있으면 안되냐 팀내 논의중이라 지금 심사중인데 출시이후 개선할 예정이라고 답했습니다. 웨어트랙 사용자의 불편함을 해소한 경험 사용자 입력데이터를 줄였다고 답했습니다. * 웨어트랙 패션소비 리포트가 왜 존재하는지? * 웨트 컨셉 설명해주고 불필요한 소비를 막고 주간회고를 통해 입은 옷을 어쩌고 카테고리별로 (여기 좀 횡설수설함) 등 대답했습니다.. 저번 기수에 질문당 대답을 너무 길게 했던 트라우마가 있어서 최대한 간결하게 하려고 노력했습니다. 또한, 33기에 불합격한 이후로 많이 노력하여 큐시즘에 재지원했다는 사실을 강조하려하였습니다. 사실 저는 면접 질문에서 합/불의 힌트를 얻을 수 있었는데요. 탈락을 했을 때는 큐시즘에서 기대되는 활동이 뭔지, 팀 내 디자이너와 취향이 다를 경우 어떻게 할건지 등 포괄적인 질문에 중점을 두고, 합격을 했을 때는 조금 더 프로젝트에 파고들어서 질문을 하셨습니다. 이후 타 it동아리에서 리크루팅을 하면서 느낀 점은, 부족한 포트폴리오는 물어볼 것도 없다는 점이었습니다. (..) 아마 불합격에서 합격 목걸이를 걸 수 있었던 이유는, 포트폴리오를 갈아엎었기 때문이라는 생각이 듭니다..ᄒᄒ 포트폴리오를 단순 수정하고 디벨롭한게 아니라 프로젝트를 싹 바꿨기에 가능하다는 생각이 듭니다! 큐시즘 수료 이후 또 후기로 찾아뵙겠습니다. 읽어주셔서 감사합니다!