목록전체 글 (367)
HIT해
응시 이유상반기 채용 시즌을 앞두고 '불태울 무언가'가 필요했다. 무언가에 열중하는 것이 있어야, 노는 것도 더 후련하게 놀 수 있고 자기점검차원에서 자격증 시험에 응시하기로 마음먹었다. 일본어 시험을 준비하며 공부한 한자들이 떠올랐고, 국가공인으로 취급되는 3급을 목표삼으면 좋겠다 생각이들어 시험 날짜를 제일 빨리 응시할 수 있는 5일 뒤로 잡았다. 화요일부터 토요일까지 집중 공부하고, 일요일에 시험을 응시했다. 일본어 공부로 익힌 한자가 많아 9~6급 수준은 대부분 알고 있어 5급부터 단어장을 새로 만들어서 암기했다. 손으로 직접 쓰는 게 기억에 잘 남는 스타일이라, 다이소 단어장에 한자와 뜻을 적어 암기했다. 26개 단어장을 각 6번씩 반복하고, 인터넷 사자성어도 훑었다. 불합격 결과는 불합격..
드디어 모루카 극장판이 국내에서 개봉했다!!! 최근에 모며든 드라이버로서 너무나도 기쁘다. 2025년에 개봉한다고 말하고 공식 계정에서 1년 동안 소식 없이 사라져 적자나서 무산된 건 아닌가 싶어 솔직히 포기했었는데. 우리 SMG 홀딩스, 늦었지만 돌아와줘서 고맙다...! 굿즈패키지 입장 체인소맨 레제편 특전을 노리며 단련된 티켓팅 실력으로 굿즈 패키지 회차 티켓팅에 성공해 오늘 CGV 연남에 다녀왔다. 입장할 때 보이는 포토존. 얼굴이 저기 안에 다 들어갈까? 굿즈 배부는 상영관 앞에서 자리표를 하나씩 지워 나가면서 분배해 주셨다. 영화 시작 전에 굿즈를 배포해 다들 품에 시로모를 껴안고 영화를 봤다. 부스럭거리는 소리가 모루카를 향한 사랑으로 느껴져 굉장히 기뻤다. 여기서부터는 스포일러가 있..
2025년이 끝났다. 빠르게 지나간 것 같으면서도 순간순간을 곱씹어 보면 모든 순간이 풍성했다. 개발자로서보다도 일상이 바빠 블로그 포스팅도 중단되었지만, 내면적으로 보다 성장한 한 해였다고 생각한다. 돌하루방 프로젝트 완성2024년 여름부터 시작된 Swift 프로젝트였지만, 다들 점차 열정이 식어가고 모두의 뒷전이 되었던 프로젝트였다. 하지만 꼭 끝내고 싶었다. 내가 기획하고, 내가 모집한 팀원들로 시작한 프로젝트였기에 어떻게든 완성하고 싶었다. 밤을 세워가며 개발에 열중했고, 앱 심사에서도 통과하며 성공적으로 출시하게 되었다. 이걸 하면서 느낀 점은, 선택과 집중이 중요하다는 것이다. 프로젝트 규모를 크게 잡았다 보니 모두의 열정이 식어가는 것도 당연한 이치였다. 아쉬워도 뺄 건 확실하게 빼고, 할 ..
Lazy Loading ( 지연 로딩 )필요한 시점에 데이터를 불러오거나 객체를 생성하여 메모리와 자원을 효율적으로 사용하는 기법즉, 한꺼번에 모든 데이터를 미리 준비하지 않고, 사용자가 필요로 할 때마다 점진적으로 처리하는 방식 특징무거운 작업이나 데이터 로딩을 필요할 때만 수행초기 로드 시간을 줄이고 메모리 사용을 최소화스크롤이나 UI 인터랙션, 페이지네이션에 따라 점진적으로 데이터 또는 UI를 생성 ListView로 확인해보자ListView( children: [ ListTile(title: Text('Item 1')), ListTile(title: Text('Item 2')), ListTile(title: Text('Item 3')), // 모든 아이템들을 한꺼번에 생성 ..
BuildContext위젯 트리 내에서 현재 위젯의 위치를 나타내는 핸들 역할을 하는 객체build() 메서드 내에서 인자로 전달되며, context를 통해 위젯 트리 상의 상위 위젯, 상태 관리 객체 등 다양한 정보를 탐색할 수 있다위젯 트리에서 조상 위젯을 탐색하거나, 데이터를 내려주고 받는 데 꼭 필요한 연결고리 역할을 한다.예제void main() { runApp(MyApp()); // MyApp은 최상위 위젯}class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', home: HomeScreen()..
플러터에는 3가지 트리가 있습니다.1. Widget Tree2. Element Tree3. RenderObject Tree Flutter는 위젯을 사용해 UI를 선언하고, 위젯들은 빈번하게 재생성되는데만약 화면을 하나의 트리만으로 관리한다면, 부모 위젯의 변화는 모든 자식까지 불필요하게 빌드 및 렌더링을 하게돼성능 저하가 발생합니다 > 한 가지 트리를 여러 레이어로 나누어 해결한다 Widget Tree설계도는 언제든 새로 그려도 부담이 없듯, 단순히 "UI가 어떻게 보여야 하는지"를 정의한다불변 오브젝트UI의 설계도생성과 파기 비용이 매우 적어 자주 바뀌어도 부담이 없다상태를 직접 가지지 않음변경시 새 Widget Instance를 만들어 Element에게 전달Element Tree가변 오브젝트Widge..
Liquid Glass 업데이트 버튼이 유리처럼 뒤의 요소들이 비쳐 보이도록 디자인이 변경됩니다. 이 디자인은 WWDC 2025 발표 이전에 '돌하루방' 프로젝트에서 적용하려 했지만, 시간적, 기술적으로 어려워서 결국 제외했던 디자인입니다. 이런 식으로 배경화면이 버튼 뒤로 비치게 만들고 싶었지만, Swift에서 기본적으로 제공하는 opacity만으로는 구현이 어려웠습니다. 버튼과 이미지의 좌표값을 계산해 연하게 표현해야 했는데, 이 작업이 메인 기능이었던 3D 모델 상호작용만큼 오래 걸릴 것 같아 후순위로 미뤄두었습니다. 이번 발표로 해당 디자인을 쉽게 적용할 수 있을 것 같아 기대됩니다. Liquid Glass는 iOS뿐만 아니라 Mac, iPad, Watch 등 모든 Apple 플랫폼에 적용된다고..
Overflow/Underflow?Overflow: 데이터 타입의 최대값을 넘으면 값이 다시 최소값부터 시작함.Underflow: 최소값 아래로 내려가면 값이 다시 최대값부터 시작함.// int: -2,147,483,648 ~ 2,147,483,647 int max = Integer.MAX_VALUE; System.out.println("max: " + max); // 2147483647 System.out.println("max + 1: " + (max + 1)); // -2147483648 (오버플로우)int min = Integer.MIN_VALUE;System.out.println("min: " + min); // -2147483648System.out.println("min - 1: " + (m..