전체 글50 Flutter/Dart | flutter run -d chrome, React의 npm run dev와 뭐가 다를까? manna-app을 Flutter로 만들면서 flutter run -d chrome을 칠 때마다"어? 이거 리액트에서 하던 거랑 똑같은데?" 싶었다. 포트 열리고, 브라우저 자동으로 뜨고, 코드 고치면 바로 반영되고.근데 파헤쳐보니 겉모습은 닮았는데 안에서 하는 일은 완전히 다르다. 오늘은 그 차이를 정리해본다.1. 겉으로 보이는 공통점둘 다 이런 순서로 개발한다.1. 터미널에서 실행 명령 입력2. 로컬 서버가 포트를 열고 뜸 (예: 127.0.0.1:XXXXX)3. 브라우저가 자동으로 그 주소로 열림4. 코드 저장 → 화면에 바로 반영 (재실행 안 해도 됨) FlutterReact실행 명령flutter run -d chromenpm run dev (Vite 기준)뜨는 것로컬 개발 서버 + Chrome.. 2026. 8. 17. C언어 | 함수 포인터 심화 함수 포인터는 "이 일을 누가 할지 나중에 정하는 것"이에요. 마치 전화번호부에 번호만 적어두고, 나중에 그 번호로 전화 걸듯이 — 함수의 주소만 담아뒀다가 나중에 실행하는 거예요.1. 왜 이 문법이 헷갈릴까C에서 *와 ( )가 같이 나오면, 어디에 괄호가 있느냐에 따라 완전히 다른 뜻이 돼요.int add(int a, int b); ← 그냥 함수 선언int (*calc)(int, int); ← 함수를 가리키는 포인터 변수 선언 이 둘의 차이는 딱 하나, calc 앞뒤에 괄호 ( )가 있냐 없냐 예요.2. 왜 괄호가 있어야 "포인터"가 될까C 문법 규칙: ( )가 *보다 먼저 적용돼요.int *add(int, int);→ add( 가 먼저 보임→ "add는 함수다" 확정→ 앞의 .. 2026. 7. 16. Java | 오버로딩 vs 오버라이딩 오버로딩은 "택배 상자에 뭘 넣을지 미리 정하는 것"이고 오버라이딩은 "택배 기사님이 실제로 문 앞에서 어떤 방식으로 배달하는지"예요.1. 헷갈리는 이유부터 짚기이름이 비슷해서 다들 헷갈리는데, 발생 시점 자체가 완전히 달라요.오버로딩(Overloading) 오버라이딩(Overriding)┌─────────────────┐ ┌──────────────────┐│ 컴파일 시점 │ │ 런타임(실행) 시점 ││ "어떤 시그니처를 │ │ "실제로 누가 ││ 쓸지" 결정 │ ─────▶ │ 실행하는지" 결정 │└─────────────────┘ └─────────.. 2026. 7. 16. Python | "요소를 쓴다" vs "그냥 반복만 한다" for i in 리스트: 를 보면 자동으로 "i를 쓰겠구나" 라고 생각하기 쉬워요. 근데 파이썬의 for문은 사실 "i를 반드시 써야 한다"는 규칙이 없어요. 리스트를 그냥 "몇 번 돌지 세는 용도"로만 쓸 때도 많아요.1. 흔히 아는 패턴: 요소를 진짜로 쓰는 경우fruits = ["apple", "banana", "cherry"]for f in fruits: print(f)# apple# banana# cherry 여기선 f가 매번 실제 값을 담아서 화면에 출력하는 데 직접 쓰이고 있어요.이게 제일 익숙한 패턴이죠.2. 헷갈리는 패턴: 리스트는 "몇 번 돌지"만 정하고, 변수는 안 쓰는 경우count = [10, 20, 30, 40]total = 0for x in count: total +.. 2026. 7. 15. Python | 람다(lambda)와 filter() 람다(lambda)는 "이름을 지어주기 귀찮은, 한 번만 쓸 짧은 함수" 예요. filter()는 "리스트에서 조건에 맞는 것만 골라내는 체" 라고 생각하면 됩니다.1. lambda = 이름 없는 함수 (JS의 화살표 함수랑 똑같아요)// JavaScript 화살표 함수const isEven = (num) => num % 2 === 0;# Python 람다is_even = lambda num: num % 2 == 0 구조 비교:구성 요소JS 화살표 함수Python lambda매개변수(num) =>lambda num:결과 반환자동 반환 (한 줄이면): 뒤에 바로 값 (return 없이 자동 반환)이름있어도 되고 없어도 됨보통 이름 없이 바로 씀lambda num : num % 2 == 0 ↑ .. 2026. 7. 15. Python | 값 교환(Swap) 두 변수의 값을 바꾸는 건 "컵에 담긴 음료를 바꾸는 것"과 같아요. 그냥 옮겨 담으면 하나가 사라져요 — 임시 컵이 있어야 진짜 교환이 됩니다.1. 왜 a = b만 하면 안 될까?a = 10b = 20a = bprint(a, b) # 20 20 출력은 20 20.a에 b를 넣는 순간, a가 원래 갖고 있던 10은 덮어써져서 사라져요.b 값만 복사된 거지, 진짜 "맞바꾸기"가 아니에요. 교환 전 a = b 실행┌─────┐ ┌─────┐│ a=10│ ──▶ │ a=20│ (10은 증발)│ b=20│ │ b=20│└─────┘ └─────┘ 포인트: 대입(=)은 "복사해서 덮어쓰기"예요.방향이 하나뿐이라 원래 값을 잃어버립니다.2. 진짜 교환에.. 2026. 7. 15. Java | 함수 안에서 바꿨는데 왜 원본이 안 바뀔까? 자바에서 제일 헷갈리는 함정이에요. "요소를 고쳤나(반영됨)" vs "변수에 새 값을 대입했나(반영 안 됨)" 의 차이!1. 먼저 결론부터함수(메서드)에 배열이나 객체를 넘겨서 안에서 바꿀 때, 두 경우로 완전히 갈려요.함수 안에서 한 일원본에 반영?원본의 내용(요소)을 수정⭕ 반영됨변수에 새 값을 대입 (변수 자체를 바꿈)❌ 반영 안 됨 이 한 줄이 전부예요."안을 고쳤냐" vs "통째로 새 걸 담았냐".2. 반영되는 경우 — 원본의 "내용"을 수정static void change(int[] arr) { arr[0] = 100; // 원본 배열의 '요소'를 직접 수정}public static void main(String[] args) { int[] nums = {1, 2, .. 2026. 7. 13. Java | 추상 클래스(abstract) 추상 클래스는 "미완성 설계도"예요. 완성은 자식 클래스가 하고, 미완성인 채로는 new로 객체를 만들 수 없어요.1. 추상 클래스가 뭐예요? — 미완성 설계도보통 클래스는 완성된 설계도라서 그걸로 바로 객체(제품)를 찍어낼 수 있어요.그런데 추상 클래스는 일부러 비워둔 미완성 설계도예요. 왜 일부러 비워둘까요?예를 들어 "동물"을 생각해봐요. 모든 동물은 운다.하지만 "어떻게 우는지"는 동물마다 달라요— 개는 멍멍, 고양이는 야옹. 그래서 이렇게 만들어요. "동물은 운다"는 기능이 있다고 선언만 해두고 (몸통은 비움)실제로 어떻게 우는지는 자식(개, 고양이)이 채우게 강제이 미완성 부모가 추상 클래스예요.2. 핵심 용어 두 개용어뜻추상 메서드몸통({}) 없이 선언만 한 메서드 (자식이 채워야 함)추상 .. 2026. 7. 13. Java | 값 전달 vs 주소 전달 — 배열은 왜 원본이 바뀔까 Java에서 메서드에 값을 넘길 때, 일반 변수는 "복사본", 배열·객체는 "주소"가 넘어가요. 이 차이 하나가 "원본이 바뀌냐 안 바뀌냐"를 가릅니다.1. 두 종류의 데이터 — 기본형 vs 참조형Java의 데이터는 크게 두 종류예요.종류예시변수에 담기는 것기본형 (primitive)int, double, char, boolean값 자체참조형 (reference)배열, 객체, String, 리스트주소(위치) 기본형 변수에는 값이 들어있지만참조형 변수에는 "실제 데이터가 있는 주소"가 들어있어요.배열 변수 arr은 배열 자체가 아니라 "배열이 저장된 위치"를 가리키는 거예요.2. 기본형 — 값을 복사해서 넘김 (원본 안 바뀜)public class Main { static void change(int.. 2026. 7. 12. Java | 향상된 for문 (for-each) — 콜론(:)의 정체 Java의 for-each는 배열/컬렉션의 요소를 "하나씩 꺼내" 반복하는 문법이에요. 핵심은 딱 하나 — 콜론(:)이 "각각(each)" 역할을 한다는 것!1. for-each가 뭐예요?배열이나 리스트의 모든 요소를 처음부터 끝까지 하나씩 꺼내 쓰고 싶을 때 쓰는 반복문이에요.인덱스(번호)를 신경 쓸 필요가 없어서 간편해요.문법은 이렇게 생겼어요.for (타입 변수 : 배열) 읽는 법: "배열 안의 각 요소를 변수에 담아서 반복"each라는 키워드는 코드에 없어요."for-each"는 별명일 뿐이고, 실제로는 콜론(:)이 "각각 꺼낸다"는 의미를 담당해요.2. 예제로 확인하기public class Main { public static void main(String[] args) { i.. 2026. 7. 12. Java | 전위/후위 · static · 선언 타입 vs 실제 객체 Java에서 딱 세 가지만 잡으면 코드 읽는 눈이 확 트여요. ① ++i vs i++ / ② static은 왜 다른가 / ③ 어느 클래스 것이 실행되나1. 전위(++i)와 후위(i++) — "언제" 값이 바뀌나둘 다 1을 더하는 건 같아요. 다른 건 더하는 시점이에요.표기이름동작++i전위먼저 1 올리고, 그 값을 사용i++후위지금 값을 먼저 쓰고, 나중에 1 올림 i = 2 일 때 배열에 쓰면 이렇게 갈려요.식실제로 쓰는 인덱스끝난 후 iarr[++i]3 (올린 뒤 사용)3arr[i++]2 (쓰고 나서 올림)3 둘 다 i는 3이 되지만 배열의 몇 번 칸을 건드리느냐가 달라요. 왜 순서가 중요할까int i = 2;int[] arr = {10, 20, 30, 40};System.out.println(arr[.. 2026. 7. 10. Java | 리스트 · 집합 · 딕셔너리 — Java와 Python 비교 세 자료구조의 차이는 딱 세 가지예요. 순서가 있나 / 중복이 되나 / 어떻게 꺼내나1. 한눈에 개념 잡기세 가지를 기준 세 개로 나누면 이래요.자료구조순서중복꺼내는 법비유리스트 / 배열있음허용번호(인덱스)로줄 선 사물함집합 (Set)없음불가값이 있나 확인값만 담는 주머니딕셔너리 / 맵(키로)키 불가키로이름표 붙은 서랍 이 표의 순서 / 중복 / 꺼내는 법이 전부예요. 나머지는 문법 차이일 뿐이에요.2. Java vs Python 표기 비교같은 개념인데 언어마다 이름과 문법이 조금 달라요.개념JavaPython리스트ArrayList (가변), int[] (배열, 고정)list → [ ]집합HashSetset → { }딕셔너리HashMapdict → { } Java는 담을 타입을 미리 적어야 해요 (Lis.. 2026. 7. 4. 이전 1 2 3 4 5 다음