전체 글119 비동기 진화사: async/await은 정말 비동기일까? // 가짜 API 호출Future fetchUserData() async { await Future.delayed(Duration(seconds: 2)); return '사용자 데이터';}Future loadData() async { print('데이터 로딩 시작'); String user = await fetchUserData(); print('받은 데이터: $user'); print('데이터 로딩 완료');}void main() async { await loadData();} 이 코드를 살펴보자, 이 코드는 비동기일까 동기일까?async / await 키워드가 사용되었으므로 당연히 비동기 동작이다. 하지만 뭔가 이상하다. 이 코드를 dartpad에서 실행시켜보면 아래와 같이 실행된.. 2025. 7. 24. [Flutter]Instance member can't be accessed using static access. 문제:ApiService의 getTodaysToons method를 다른 클래스에서 호출하려 했더니 제목의 에러가 발생함. 에러 뜻풀이:인스턴스 멤버는 정적 접근으로 사용할 수 없다.인스턴스 멤버: 클래스의 객체를 생성해야만 사용할 수 있는 변수나 메서드정적 접근: 클래스 이름으로 직접 접근하는 방식 (객체 생성 없이)즉, 위 상황에서 ApiService의 멤버 함수인 getTodayToons는ApiService의 객체를 통해서만 접근이 가능한데객체를 생성하지 않고 접근하려 하기 때문에 에러가 발생하는 것이다. 인스턴스를 생성하는 방법은 ApiService 뒤에 ()를 붙여 생성자를 호출하면 된다.처리해주면 이렇게 에러가 사라진 모습을 볼 수 있음 만약 getTodayToons 메서드에 정적으로 접근하.. 2025. 7. 19. URL을 누르면 해킹이 된다고? URL은 웹 상의 자원을 식별 + 위치 안내의 기능을 한다.예를 들어 네이버 URL을 브라우저에 검색하면 이 URL을 통해서 네이버 홈페이지를 구성하는 코드, 이미지, 동영상 등등의 자원을 불러오는 것이다. 그런데 이런 생각이 들었다. 단순히 자원을 가져오는 것에 불과한데 해킹이 된다고? 대부분의 경우 클라 + 서버 아키텍쳐로 구성되어 있을 것이다. 만약 가짜 네이버 로그인 사이트여서 클라이언트단에서 친절하게 아이디와 비밀번호를 손수 적어 서버로 전송하지 않는 이상 URL을 누르는 것만으로 해킹이 된다는 건 말도 안 되지 않나?충분히 그럴 수 있다. 왜냐하면 URL이 가리키는 자원 자체가 악성일 수 있기 때문이다. URL이 가리키는 자원이 악성 코드를 담은 스크립트이거나 브라우저 취약점을 노리는 바이러스.. 2025. 7. 9. [객체지향]다형성은 어떻게 코드로 구현되는가? 런타임 다형성:상속을 통해 메서드 오버라이딩을 소스코드에 구현해놓고 컴파일 후 실행upcasting으로 자식 객체를 부모 객체 자료형에 넣으면 런타임에 동적 바인딩이 일어나서 다형성 실체화class Animal { void sound() { System.out.println("동물 소리"); }}class Dog extends Animal { @Override void sound() { System.out.println("멍멍"); } // 메서드 오버라이딩}class Cat extends Animal { @Override void sound() { System.out.println("야옹"); } // 메서드 오버라이딩}public class Main { publ.. 2025. 7. 9. [c언어]printf 서식 지정자 %f로 int값을 출력하면 어떻게 될까? int a = 10;printf("%f", a); 이 코드의 결과는 어떨까?아니 애초에 컴파일이 가능하긴 할까? 컴파일이 되긴 되는데 예측할 수 없다. int 안에는 2의 보수법 형태의 이진수가 들어간다. float 안에는 IEEE 754 표준에 따라 지수부와 가수부로 나뉜 이진수가 들어간다.즉, 두 자료형의 데이터 저장 구조가 다르다는 것이다.그렇다면 printf 내부적으로float를 character로 변환시키는 코드가 있을 것이고int를 character로 변환시키는 코드가 있을 것이다. 애초에 변환 방법 자체가 다르기 때문에 예측할 수 없는 결과가 나온다.추가로 이렇게 타입 간의 변환을 엄격하게 걸러내지 않는 c언어는대표적으로 타입 안정성(type safety)이 약한 언어 중 하나다. 2025. 7. 8. 배열의 범위를 넘어서면 항상 segfault가 발생할까? int ary[10];ary[10] = 1; 이 코드는 항상 segfault를 발생시킬까?그렇다고 대답해도 절반만 맞고, 그렇지 않다고 대답해도 절반만 맞다. 일단 segfault의 정확한 정의를 정리할 필요가 있다.segfault는 segmentation fault의 준말로 잘못된 메모리 영역을 건드렸을 경우에 발생한다. 그렇다면 segmentation이란 무엇일까? 프로세스는 크게 데이터, 힙, 스택, 코드의 4가지 영역으로 나뉘는데 이 4가지 영역으로 나뉜 모양 자체를 segmentation이라고 하고(좀더 정확히는 권한에 관련되어 있다) 각각의 영역을 segment라고 부른다. segfault는 예를 들어 stack 영역에 있는 변수나 객체가 적절한 권한 없이 heap, data, code 등 .. 2025. 7. 8. [F-lab] android 멘토링 1개월차 후기 F-lab이란?간략히 소개하자면 "질문형 개발자 과외"라고 볼 수 있겠다. 보통의 과외는 탑다운 방식으로 과외선생님이 갖고 있는 지식을 흡수하는 데 중점을 두지만 이곳에서는 멘토님의 질문을 통해 나의 무지를 깨닫고 무엇을 어떤 방식으로 공부해야 하는지 방식을 배우는 데 초점이 맞춰져 있다. F-lab을 신청한 이유2년간의 42seoul 과정을 마치고 나서 취업시장에 처음 나올 때는 금방 취업이 될 줄 알았다. 하지만 막상 나와보니 취업은 공부와는 또 다른 게임이었다는 걸 크게 체감했다. 42seoul을 하면서 정말 많은 것들을 배웠지만 이것들을 어떻게 잘 다듬어서 정리해 어필하고 면접에서 풀어나가는지에 대해 내가 많이 부족하다는 걸 느껴 F-lab을 신청했다.또다른 이유로는 자기주도적 학습 그 너머의 세.. 2025. 7. 7. 네이버웹툰은 왜 탈퇴한 회원의 댓글에 추가 공감/비공감을 막았을까? 탈퇴한 회원까지 굳이 관리할 필요가 없다고 생각해서 그런 것 같다.탈퇴했음에도 불구하고 공감/비공감이 눌린다면 어찌되었든 그 정보를 네트워크로 전송해야 하고 DB에 저장해야 하니 말이다.만약 RDB라면 여기에 대한 인덱스는 생성하지 않았을 것이다. 왜냐하면 공감/비공감은 cardinality가 겨우 2밖에 되지 않기 때문에 실익이 별로 없기 때문이다. RDB라고 본 이유는 RDB는 transaction을 보장하기 때문이다. 네이버 같은 대기업은 특히나 문제 발생에 대해 예민할 테고 비록 DB 스키마의 복잡성을 감안해서라도(그만한 자금은 충분할 테니) 안정성을 더 중시할 가능성이 크다고 본다. 하지만 RDB만 쓰지는 않을 테고 일부 부분에서는 NosQL을 쓸 것 같은데 흠 이 부분은 잘 모르겠다. 2025. 7. 6. [객체지향]조합, 위임이 상속을 대체하는가? 상속 → “이 객체는 이런 기능을 갖는다”조합 → “이 객체는 저 객체를 사용해서 일한다”위임 → “이 객체는 저 객체에게 일을 시킨다” 상속은 컴파일 시점에 부모와 자식의 관계가 결정되기 때문에 결합도가 높다. 조합과 위임을 통해 유연성을 높이고, 조합과 위임의 하드코딩으로 인해 발생되는 경직성을 해결하기 위해 의존성 주입이 도입되었다. 꼬리질문 1:상속은 곧 확장이기도 하다. 그리고 부모 클래스의 멤버 변수 및 메서드에 접근할 수 있다는 것이지 반드시 써야 되는 것도 아니다. 얼마든지 자식 클래스만의 멤버를 만들어서 자유롭게 확장할 수 있는데 왜 유연하지 못하다고 하는 것일까?꼬리답변 1:컴파일 타임 확장과 런타임 확장의 차이이다.컴파일 타임에 상속과 조합은 아래와 같이 결정된다:상속 → “이 객체는.. 2025. 6. 6. [Java]try-catch 제대로 이해하기 시스템에 회복탄력성을 제공하는 메커니즘 Q. try catch문의 정확한 기능은 무엇인가? 흔히 catch문의 기능을 언급할 때 예외를 잡는다고 표현한다. 그러나, 설명이 불충분한 측면이 있다. 왜 잡느냐가 빠져있기 때문이다. 나는 보통 try-catch문을 이용할 때 catch문에서 예외가 잡히면 debugprint를 터미널에 찍는 식으로 이용해왔다. 그러나 이것은 예외 알림에 가깝지 예외 처리에 해당하지 않는다. 발생한 예외에 대한 실질적 대비책이 아니기 때문이다. 만약 catch문이 예외 알림의 기능만 했다면 catch문을 사실상 또 하나의 메소드처럼 쓸 수 있는 수준의 자유도를 주지는 않았을 것이다.정상 흐름에서 벗어난 동작에 대한 처리를 마련함으로써 다시 프로그램이 정상적으로 동작할 수 있도록 .. 2025. 5. 28. 이전 1 2 3 4 ··· 12 다음