전체 글315 [카카오테크캠퍼스] 4주차 과제 코드리뷰 정리 내 질문Q1. menu 수정 메서드를 필드별로 구현해야할지 아니면 지금처럼 menu 전체를 수정하는 메서드로 구현해도 괜찮은지A.요구사항에 따라 다르다. 한꺼번에 수정하는 것이 주요하다면 통으로, 각각 나누어 수정하는 경우가 갖다면 나누어 구현하는게 좋다. Q2. 객체 생성을 위한 DTO와 수정을 위한 DTO를 따로 만들어야 하나요A.이것도 경우에 따라 다른데 이와 같은 고민이 드는 경우라면 분리하는 것이 좋다. Q3. 메뉴를 추가할 때 카테고리 객체 통째로 받는게 좋을지 아니면 카테고리 id만 받는게 좋은지A.카테고리 id는 같지만 이름이 다른 객체가 들어오면 곤란해진다. 이런 문제도 있고, 클라이언트의 편의를 위해서 id만 전달하는 것이 좋을 것 같다. 피드백Rest api prefix 변경이건 칭찬.. 2024. 9. 3. [카카오테크캠퍼스] 3주차 과제 코드리뷰 정리 내 질문Q1실제 기능에서는 getter가 필요하지 않는데, 테스트를 위해서는 필요한 경우가 있다. 이 때 테스트를 위해서 보안을 조금 포기하더라도 getter을 만드는 것이 좋은지 궁금합니다. A.필요하면 만들어야하긴하지만, 값을 꼭 꺼내어 확인해야하는지 고민해보아야한다. 특히 값이 바뀌는 것에 대한 테스트는 굳이 필요하지 않을수도 있기 때문이다. Q2이번 작업과 같이 한 도메인에서 특정 기능을 만들 때 commit를 도메인 단위로 하는게 좋은지 아니면 controller, service단위로 하는지 궁금합니다. A.commit는 문제가 발생했을 때 롤백 지점을 쉽게 잡기 위한 포인트읻. 나중에 "이쯤에서 롤백하면 되겠네"가 편하도록 단위를 정하자 피드백equlas, hashcode로 동등성을 부여하자.. 2024. 9. 3. [BombLab] phase_3 해설 phase_3 disassemble전체 코드이다. 점점 길어진다... 우선 나는 임의로 숫자 4와 56을 입력했다. 14를 보면 함수에 파라미터로 주기 위한 부분인 rdi에 무언가 들어가는 것을 볼 수 있다. 해당 주소에 있는 값을 보면 이렇다. 이 값이 __isoc99_sscanf@plt에 들어간다는 것을 알 수 있고, 원하는 값은 정수 2개라는 것도 추측할 수 있다. 위 함수가 호출된 후 eax에는 입력받은 숫자의 갯수가 들어간다.jg는 앞에 수가 뒤에 수보다 작을 때 분기한다. 즉 eax에 있는 값이 1보다 커야한다는 것을 알 수있다. 우리는 어차피 2개의 숫자를 입력할 것이기 때문에 자연스럽게 넘어가자 39번을 보면 0x8(rsp)에 있는 값과 7을 비교하여, 7이 작으면 106번으로 분기하는 것.. 2024. 9. 3. [BombLab] phase_2 해설 phase_2는 6개의 숫자를 알아내야한다. phase_2 disassemble입력한 수가 들어간 레지스터 찾기phase_2를 disassemble하였다.를 보면 read_six_numbers 함수를 호출하는 것을 볼 수 있다. 근데 이번에는 굳이 저 함수를 뜯어보지 않을 것이다. 함수명으로 기능을 유추할 수 있으니까!대신 우리는 저 함수로 받은 6개의 숫자가 어느 레지스터에 들어갔는지를 알아보아야한다. 코드를 쭉 따라가보면 로 가는 것을 볼 수 있다. 부터 rsp에 있는 수를 건드는게 보인다. 이 안에 의미있는 데이터가 있는 것 같다. 그래서 우선 실행한 후 phase_2의 정답을 입력하는 부분에 아무런 6개의 숫자를 넣어본다.그 다음 ni로 까지 간다.0x4(%rsp)를 하는 것을 보니까 숫자가 .. 2024. 9. 2. [BombLab] phase_1 해설 이제 본격적으로 문제를 풀어볼거다! 이렇게 bomb을 실행하고 r(run)명령어로 실행하면 환영 메세지가 나옵니다. 이제 이 밑에다가 phase_1의 정답을 찾아 입력하면 된다.이 때 bomb에 break 안걸고 오답을 입력하면 폭탄이 터진다! 주의!!phase_1 disassemble간단하게만 설명하자면맨 위와 아래에 sub와 add는 별 신경쓰지 않아도 된다에서 esi에 어떤 값이 들어갑니다. 이 값이 뭔지 한번 뜯어보겠다스포를 하자면 여기에는 문자열이 들어있다. 아마 모든 분들의 esi에는 문자열이 들어있을것이다 실행하면서 레지스터 값 확인하기밤랩의 핵심은 특정 instruction이 실행될 때의 레지스터값을 확인하는 것이다이를 위해서는 미리 phase_1에 breakpoint를 걸어두고 실행한 후.. 2024. 9. 2. [BombLab] 환경설정 & 어셈블리어 서론스피지 교육의 하이라이트 밤랩교육이 다가왔다.사실 밤랩은 하다가 울뻔한 몇 안되는 과제이다. 그만큼 어렵고 낯설다. 이번 교육에서 최대한 잘 설명해보고자 노력할 것이긴 하지만 정말 어려울거다. 화이팅! 밤랩에 나오는 어셈블리어들을 전부 다 해석하는 것에는 어려움이 있다. 그래서 나는 이번에 disasemble 한 코드를 보고 어떻게 감을 잡고 정답을 유추할 수 있는지를 중심으로 알려줄 예정이다. 혹시 코드 한줄한줄을 알고싶다! 하시는 분이 계시다면https://ttl-blog.tistory.com/1009 [시스템 프로그래밍] 2022 BombLab(밤랩) 상세분석총 74장 분량이고, 전체 코드 한줄한줄 다 상세하게 적어뒀습니다. (화이팅하세요 :))ttl-blog.tistory.com갓말랑님의 블로.. 2024. 9. 1. 이전 1 ··· 15 16 17 18 19 20 21 ··· 53 다음