최근에 읽은 제임스 클리어의 *『아주 작은 습관의 힘』*은 일상 속 작은 변화들이 우리 삶에 얼마나 큰 영향을 미칠 수 있는지를 설득력 있게 설명하는 책입니다. 저자는 이 책에서 단순한 결심만으로는 성공적인 습관을 만들기 어렵다고 말하며, 변화는 아주 작은 시작에서 출발해야 한다는 메시지를 전합니다. 그 작은 변화들이 쌓여 결국 큰 결과로 이어진다는 점이 인상 깊었어요.

작은 습관, 큰 변화

이 책을 읽으며 가장 강하게 다가온 것은 "습관은 복리처럼 작용한다"는 개념이었습니다. 저자는 매일 1%씩의 작은 성장이 시간이 지남에 따라 어떻게 커다란 효과를 낼 수 있는지를 설명합니다. 인생의 성장은 즉각적이지 않지만, 작은 변화들이 쌓여 점진적으로 큰 차이를 만든다는 것이죠. 결국, 이러한 작은 변화가 우리 삶의 근본적인 변화를 가져온다는 사실에 공감했습니다.

목표보다는 시스템을 설계하라

책에서 또 하나 흥미로웠던 점은 저자가 강조하는 "목표보다 시스템이 중요하다"는 생각이었어요. 많은 사람들이 특정 목표를 설정하지만, 저자는 목표만으로는 충분하지 않다고 말합니다. 예를 들어, "매일 운동하기"라는 목표보다는, 운동을 일상에 자연스럽게 녹여낼 수 있는 시스템을 만드는 것이 더 중요하다는 것이죠. 이런 시스템적인 접근이 더 현실적이고 지속 가능하다고 느꼈습니다.

변화의 순서: 정체성, 과정, 결과

특히 저자는 변화를 일으키는 순서에 대해 매우 명확한 의견을 제시합니다. 변화시키고자 하는 대상은 먼저 정체성, 그 다음에 과정, 마지막으로 결과의 순으로 변화시켜야 한다고 말합니다. 스스로 어떤 사람인지에 대한 정체성이 바뀌면, 자연스럽게 그에 따른 행동과 결과가 뒤따라온다는 것이죠. 예를 들어 "나는 건강한 사람이다"라고 믿으면, 건강한 식습관과 운동 습관을 억지로 만들려고 하지 않아도, 자연스럽게 그렇게 행동하게 된다는 점이 무척 인상적이었어요.

정체성을 바꾸면 습관이 따라온다

정체성을 변화시키면 습관을 억지로 만들 필요가 없다는 저자의 주장은 실생활에서 적용할 수 있는 매우 실용적인 조언이라고 생각해요. 저자는 우리가 일부러 습관을 가지려고 결심하지 않아도, 이미 스스로 그런 유형의 사람이라고 믿으면 그에 맞는 행동이 자연스럽게 이어진다고 말합니다. 예를 들어, "나는 비흡연자"라고 스스로를 정의한다면, 금연이라는 목표는 별다른 노력 없이 이루어질 수 있다는 것이죠. 이 부분은 습관을 형성하는 데 있어 매우 중요한 통찰을 주었습니다.

환경의 힘을 활용하라

또한 저자는 우리가 습관을 형성하는 데 있어 환경이 얼마나 중요한지를 강조합니다. 내가 하고자 하는 행동을 쉽게 할 수 있는 환경을 조성하고, 나쁜 습관을 유발하는 환경은 제거해야 한다는 것이죠. 예를 들어 건강한 식습관을 만들고 싶다면, 냉장고를 건강한 음식으로 채우는 식입니다. 환경 설정이 우리의 행동에 미치는 영향이 얼마나 큰지를 깨닫게 되었어요.

작은 행동이 더 중요하다

마지막으로 저자가 남긴 중요한 메시지는, 작은 행동의 실천이 중요하다는 점입니다. 많은 사람들이 계획을 세우고 완벽한 준비를 하려다가 실제 행동을 미루는 경우가 많습니다. 하지만 저자는 준비만으로는 변화가 일어나지 않으며, 작은 행동을 꾸준히 실천하는 것이 변화의 핵심이라고 말합니다. 완벽한 시점을 기다리기보다는, 작은 행동을 지속하는 것이 결국 성공의 열쇠라는 거죠.

마무리

*『아주 작은 습관의 힘』*은 목표를 이루기 위한 거창한 계획보다, 작은 습관들이 어떻게 삶을 변화시킬 수 있는지를 보여주는 책입니다. 이 책을 통해 저는 큰 변화는 작은 행동에서 시작되며, 그 행동들이 쌓여 우리의 인생을 긍정적으로 변화시킨다는 점을 다시 한번 느끼게 되었습니다. 여러분도 일상의 작은 습관부터 시작해보세요. 그 작은 변화가 언젠가는 큰 차이를 만들어낼 것입니다.

작은 습관들이 쌓여 여러분의 삶에도 긍정적인 변화를 가져다주기를 바라며, 이 책을 꼭 추천드립니다!

이번에 가족들과 함께 다녀온 이원 스테이 펜션에서의 1박 2일은 정말 잊지 못할 추억이었어요. 저희는 두 가족, 총 8명이 함께 했는데, 어른 4명과 아이 4명이 모여서 정말 즐거운 시간을 보냈답니다. 1박 2일이 너무 짧다고 느낄 만큼 시간이 빠르게 지나갔어요.

물이 들어올 때 사진인데 우린 물이 빠져있을 때 도착함!

예약과 체크인 과정

처음 예약 후 바로 바베큐와 조식에 대한 안내 메시지를 받았어요. 바베큐는 실내와 실외 중 선택할 수 있는데, 아이들이 있어서 날씨에 따라 실내에서 먹기로 했습니다. 체크인 시간은 오후 3시였고, 퇴실은 오전 11시입니다. 넉넉한 시간으로 느껴지지만, 놀다 보면 너무 짧게 느껴졌답니다. 도착하니 사장님께서 직접 맞아주셨고, 친절하게 안내해주셔서 기분 좋게 시작할 수 있었어요.

숙소 및 시설

저희는 오션뷰 호실을 예약했는데, 바다가 한눈에 들어오는 멋진 뷰가 참 인상적이었어요. 특히 아이들이 너무 좋아했던 다락방 호실도 있었답니다. 다락방은 따뜻하고 아늑했지만, 계단이 조금 가파르고 울타리 간격이 넓어서 유아들이 이용할 때는 주의가 필요해요. 저희도 아이들이 내려올 때마다 신경을 썼답니다. 그래도 아이들은 다락방에서 자는 것을 무척 좋아했어요!

펜션 외부에는 트램폴린 2개가 있어 아이들이 나눠서 놀 수 있었는데, 에너지가 넘치는 아이들에게는 정말 최고의 놀이 공간이었어요. 둘이서 사이좋게 하나씩 타는 모습이 귀엽기도 했죠.

바베큐와 식사

저희는 펜션에서 제공하는 무한리필 바베큐 세트를 선택했어요. 고기, 쌈, 밥, 김치 등 모든 것이 다 준비되어 있어서 빈손으로 가도 된다는 말이 딱 맞더라고요. 특히 솥뚜껑 삼겹살이 정말 맛있었고, 화력도 강해서 음식이 빠르게 잘 익었어요. 바베큐엔 무언가 구워먹을 수 있는데 쫀드기나 마쉬멜로를 챙겨가면 아주 맛나게 구워서 후식으로 먹을 수 있어요! 바베큐 후엔 다음 날 아침에 제공되는 조식 브런치도 간단하면서 깔끔하게 잘 준비되어 있었습니다. 조식도 없는 것이 없었어요. 시리얼, 스프, 달걀 후라이, 소시지 등등 ㅋㅋ 커피 한 잔과 함께 여유로운 아침을 즐길 수 있었어요.

바베큐 하면서 구운 거대 마쉬멜로^^ 딸램 친구 아빠의 작품! 아주 잘 구웠죠?? ㅋ

수영장과 갯벌 체험

펜션에는 깊이가 1.40m에서 1.90m까지 나뉘어 있는 수영장이 있어, 아이들이 튜브를 타고 안전하게 놀 수 있었어요. 어른들도 잠깐 수영 연습을 할 만큼 깊은 곳도 있어서 정말 유용했답니다. 관리 상태도 매우 깨끗했고, 이끼나 불편한 점이 전혀 없었어요.

펜션 바로 앞에는 갯벌 체험도 가능해서, 저희는 장화를 신고 나가서 직접 바지락을 잡았어요. 펜션에서는 갯벌용 호미, 장화, 갯벌 수트까지 대여해 주는데, 저녁에는 헤드랜턴까지 빌려주셔서 자고 있는 망둥이 잡기 같은 체험도 즐길 수 있었어요. 특히 갯벌 한쪽에 바닷물이 고여 있는 곳이 있어 바닷물을 쉽게 받아 갈 수 있었고, 저희도 잡은 바지락을 챙겨서 돌아왔답니다.

 

씩씩하게 고동잡으로 가는 우리 아들!

기타 편의시설과 주차

주차 공간도 넉넉해서 차량을 가져가는 데 불편함이 없었어요. 또한, 숙소 내에는 실내외 바베큐 시설이 잘 갖춰져 있어 날씨에 구애받지 않고 즐길 수 있었습니다. 1박 2일 동안 정말 여유롭고 편안하게 시간을 보냈어요. 1~2박 머물기에 딱 좋은 곳이었답니다.

총평

아이들과 함께한 여행에서 정말 편안하고 즐거운 시간을 보냈어요. 다락방에서의 따뜻한 시간, 깨끗한 수영장, 갯벌 체험까지 모두가 만족스러운 여행이었습니다. 1박 2일이 아쉽게 느껴질 만큼 시간이 빨리 지나갔고, 다음에는 더 긴 일정으로 다시 찾고 싶은 곳이에요. 가족 단위 여행객에게 강력 추천합니다!

총 거리: 1300m
시간: 06:05 ~ 06:43

내용
1. 평영 100m

2. 킥판 스컬링 100m

3. 반대 손 쭉 펴고 한 손(Switching) 글라이딩 50m
4. 차렷 한 손 롤링 50m

5. 주먹 쥐고 자요형 하면서 팔의, Push, Pull 타이밍 느끼기 100m

6. 땅콩 부이 다리에 끼고 900m

총 수영 거리 1300m

 

※ 오늘은 사실 2Beat 킥 타이밍이 안맞아서 맞추는 연습 좀 하려다가 풀부이 수영이 너무 잘되서 그냥 달림 ㅋ

'운동 > 수영' 카테고리의 다른 글

[수영 훈련일지 240911]  (0) 2024.09.13
[수영 훈련일지 240909]  (0) 2024.09.09
2025년 한강크로스스위밍챌린지 준비!  (2) 2024.09.08

총 거리: 1150m
시간: 06:05 ~ 06:40

내용
1. 평영 50m

2. 킥 + 스컬링 100m

3. 강습

장대 부이로 플립턴 연습

 

강습 때는 앞에 사람 속도 맞추기 위해 내가 자유수형 하던 흐름을 못 가져간다. 

쉽지 않음

 

총 수영 거리 1150m

'운동 > 수영' 카테고리의 다른 글

[수영 훈련일지 240912]  (0) 2024.09.13
[수영 훈련일지 240909]  (0) 2024.09.09
2025년 한강크로스스위밍챌린지 준비!  (2) 2024.09.08

Python 런처가 코드를 실행하자마자 종료되는 이유와 해결 방법

파이썬 코드를 Python Launcher로 실행했는데, 코드가 실행되자마자 창이 닫혀버리는 상황을 종종 겪을 수 있습니다. 이는 코드를 실행한 후 더 이상 할 작업이 없을 때 발생하는 일반적인 현상입니다. 파이썬이 할 일을 모두 마치면 창을 닫아버리기 때문이죠.

아래는 왜 이런 일이 발생하는지, 그리고 이를 어떻게 해결할 수 있는지에 대한 몇 가지 이유와 방법입니다.


1. 스크립트가 정상 실행 후 바로 종료되는 경우

가장 흔한 경우입니다. 파이썬 코드가 문제없이 실행된 후 할 일이 없으면 창이 자동으로 닫힙니다.

해결 방법: 코드가 종료되기 전에 잠시 멈추도록 input() 함수를 추가하여 사용자의 입력을 기다리게 만들 수 있습니다.


2. 스크립트에 오류가 있어 실행 중에 충돌하는 경우

만약 코드에 오류가 있어 실행 도중 충돌한다면, 오류 메시지를 볼 시간도 없이 창이 닫혀버릴 수 있습니다.

해결 방법: Python Launcher로 더블 클릭해서 실행하는 대신, 터미널(Windows에서는 명령 프롬프트나 PowerShell)을 사용하여 직접 실행하면 창이 닫히지 않습니다. 이를 통해 오류 메시지를 확인할 수 있습니다.

위 명령어를 터미널에 입력하여 스크립트를 실행하면, 실행 후 창이 닫히지 않으므로 오류 메시지를 확인할 수 있습니다.


3. IDE에서 코드 실행 시 발생하는 경우

만약 IDLE, VS Code, PyCharm 등의 통합 개발 환경(IDE)에서 코드를 실행하고 있다면, IDE 자체에서 결과를 출력하고 창을 닫지 않을 가능성이 높습니다. 하지만 일부 설정에 따라 창이 자동으로 닫힐 수도 있습니다.

해결 방법: 사용하는 IDE의 설정을 확인하세요. 대부분의 IDE에는 실행 후 콘솔 창을 유지할 수 있는 옵션이 있습니다. 예를 들어, VS Code에서는 code runner 확장 프로그램을 사용하는 경우, "code-runner.runInTerminal": true로 설정하여 결과를 터미널에 표시할 수 있습니다.


위의 방법들을 통해 파이썬 코드 실행 후 창이 바로 닫히는 문제를 해결할 수 있습니다. 초보자 분들도 이 방법들을 활용해 편리하게 코드를 실행하고 결과를 확인해보세요!

'Python' 카테고리의 다른 글

[Python]C# 코드에서 Python Script 실행하는 3가지 방법  (0) 2020.07.10

AI 기반 영어 학습, 플랭(Plang)을 써본 솔직 후기

최근 외국어 학습을 더 효율적으로 할 수 있는 AI 기반 서비스들이 많이 등장하고 있는데, 그 중 하나가 바로 **플랭(Plang)**입니다. 저도 다양한 영어 학습 앱을 사용해봤지만, 플랭은 확실히 독특한 점들이 많아서 여러분께 직접 써본 경험을 공유해드리고자 해요.

 

AI 기반 학습!

플랭(Plang)이란?

플랭은 AI 기반으로 개인 맞춤형 영어 학습을 제공하는 서비스입니다. 특히 사용자의 수준과 목표에 맞춰 학습 경로를 설정해주고, 각자의 페이스에 맞춘 학습을 지원하는 것이 특징이에요. AI가 개인의 학습 데이터를 분석해 부족한 부분을 파악하고, 그에 맞는 학습 자료를 제공하는 방식이 매우 인상적이었습니다.

 

소리나면 안되는 곳에서도 학습이 가능해요.

플랭의 주요 기능

  1. 개인 맞춤형 학습: 처음 가입하면 간단한 테스트를 통해 현재 영어 수준을 파악합니다. 이후 AI가 나에게 딱 맞는 학습 콘텐츠를 추천해 주기 때문에, 실력에 맞는 맞춤형 학습을 할 수 있었어요. 초보자부터 고급 학습자까지 모두 적합한 자료를 제공받을 수 있습니다.
  2. 실제 회화 기반 연습: 플랭의 또 다른 장점은 실제 대화 상황을 기반으로 한 연습이에요. 텍스트뿐만 아니라 음성으로도 다양한 회화 연습을 할 수 있고, 이를 통해 실전 영어를 자연스럽게 익힐 수 있습니다. 특히 발음 교정 기능이 유용했어요. AI가 음성 분석을 통해 잘못된 발음을 교정해 주기 때문에 자신감도 붙고, 실제로 발음이 개선되는 것을 느낄 수 있었습니다.
  3. 반복 학습을 통한 기억 강화: 플랭은 잊기 쉬운 부분을 반복해서 학습하게 해주는 기능을 가지고 있어요. AI가 학습 이력을 분석해 어느 부분에서 자주 실수하는지 파악하고, 해당 부분을 반복적으로 복습할 수 있도록 도와줍니다. 이 기능 덕분에 기존에 다른 학습 앱들에서 부족했던 기억의 유지가 가능해졌습니다.
  4. 동기부여 요소: 매일 목표를 설정하고 이를 달성할 때마다 포인트를 얻는 게임화 요소가 있어 학습에 재미를 더해줍니다. 특히 성취감을 주는 작은 목표들이 있어 학습 지속성이 높아졌어요.

학습 중에 이렇게 피드백도 받아요!

플랭의 장점

  1. AI의 똑똑한 피드백: 단순한 학습이 아니라, AI가 실시간으로 학습 상황을 파악하고 피드백을 제공해줍니다. 이를 통해 어떤 부분이 약한지, 더 집중해야 할 부분이 무엇인지 쉽게 파악할 수 있어요.
  2. 자율적인 학습 스케줄: 정해진 시간에 맞춰 공부해야 하는 다른 앱과 달리, 플랭은 언제 어디서나 학습이 가능해요. 짧은 시간 동안 효율적으로 학습할 수 있는 점이 바쁜 일정을 가진 분들에게도 큰 도움이 될 겁니다.
  3. 다양한 언어 지원: 영어뿐만 아니라, 다른 외국어 학습에도 동일한 AI 기술이 적용된다는 점도 큰 매력입니다. 학습하고 싶은 외국어를 선택해 자유롭게 학습할 수 있어, 다국어 학습자들에게도 매우 유용한 서비스죠.

    오늘의 학습 완료!


플랭 사용 후 느낀 점

플랭을 사용하면서 느낀 가장 큰 차별점은, AI가 나만의 학습 비서처럼 느껴진다는 점이에요. 기존에 많은 영어 학습 앱들이 단순히 자료만 제공하고, 학습 방향을 스스로 정해야 하는 경우가 많았는데, 플랭은 AI가 그 모든 과정을 함께 해주는 느낌이었습니다. 특히, 맞춤형 피드백과 복습 시스템 덕분에 실력 향상이 빠르게 이루어진 것을 체감할 수 있었어요.

추천 대상

  • 영어(혹은 외국어) 학습을 효율적으로 하고 싶은 분들
  • 자신만의 학습 스타일에 맞는 맞춤형 학습을 원하는 분들
  • AI 기반으로 실시간 피드백을 받고 싶은 분들
  • 꾸준한 동기부여와 게임화된 학습을 선호하는 분들

플랭은 기존의 영어 학습 방식에서 한 걸음 더 나아간 서비스로, 특히 AI 기반 맞춤형 학습에 관심이 있는 분들에게 추천할 만한 플랫폼입니다. 여러분도 직접 플랭을 체험해 보고, AI와 함께 새로운 방식으로 영어 실력을 향상시켜 보세요!

 

 

Charles Petzold의 ".NET Book Zero": .NET 입문의 첫걸음

.NET Framework는 Microsoft의 강력한 개발 플랫폼으로, 다양한 애플리케이션을 만들 수 있는 기반을 제공합니다. 하지만 이 강력한 플랫폼을 제대로 이해하고 활용하기 위해서는 기본부터 탄탄한 학습이 필요하죠. **".NET Book Zero"**는 이런 목마름을 채워줄 수 있는 매우 귀중한 자료입니다.

저자 소개: Charles Petzold

Charles Petzold는 소프트웨어 개발자라면 한 번쯤은 들어봤을 법한 이름입니다. 그는 프로그래밍 세계에서 영향력 있는 저자로, 특히 **"Programming Windows"**라는 책으로 잘 알려져 있습니다. 그의 저서들은 많은 개발자에게 깊은 영감을 주었으며, 그 중에서도 **".NET Book Zero"**는 .NET Framework의 개념을 이해하는 데 매우 유용한 입문서입니다.

".NET Book Zero"란?

".NET Book Zero"는 초보 개발자를 위한 무료 eBook입니다. 이 책은 기존의 프로그래밍 경험이 있는 독자들에게 C#과 .NET Framework의 기본 개념을 쉽게 이해할 수 있도록 돕습니다. 책의 제목에서 "Zero"라는 단어가 의미하는 바는, 이 책이 "0단계" 즉, 아주 기본적인 부분에서 시작하는 책이라는 점을 강조하고 있습니다.

책의 특징

  1. 기초부터 시작: .NET을 처음 접하는 독자들에게 적합한 내용으로 구성되어 있습니다. 기본적인 문법부터 시작해서 점차적으로 복잡한 개념을 다루기 때문에 따라가기 어렵지 않습니다.
  2. C# 언어 학습: .NET의 핵심 언어인 C#을 깊이 있게 다룹니다. 변수, 클래스, 메서드와 같은 기초 개념에서부터 이벤트, 쓰레드와 같은 고급 주제까지 설명합니다.
  3. 명료한 설명: Charles Petzold 특유의 명확한 설명 스타일 덕분에 복잡한 개념도 쉽게 이해할 수 있습니다. 특히 .NET의 메모리 관리, CLR(Common Language Runtime), 가비지 컬렉션과 같은 핵심 개념들을 알기 쉽게 풀어냅니다.
  4. 무료 제공: 가장 큰 장점은 이 책이 무료로 제공된다는 점입니다. 누구나 쉽게 접근하여 .NET의 기본을 배울 수 있는 기회입니다.

이 책을 추천하는 이유

많은 입문서가 기본적인 문법을 다루는 데에만 그치지만, **".NET Book Zero"**는 그 이상의 것을 제공합니다. 이 책은 C#과 .NET에 대한 깊이 있는 이해를 돕는 동시에, 실제로 실무에서 사용될 수 있는 기본기를 확실히 다져 줍니다. 더 나아가, Charles Petzold의 저술 스타일은 기술적이면서도 직관적이어서 학습자에게 큰 도움을 줍니다.

DotNetBookZero11.pdf
1.22MB

마치며

".NET Book Zero"는 .NET과 C#에 대한 탄탄한 기초를 쌓고자 하는 모든 사람에게 강력히 추천할 수 있는 책입니다. 특히 프로그래밍 경험이 있는 개발자라면 이 책을 통해 빠르게 .NET의 핵심 개념을 파악하고, 실무에 바로 적용할 수 있을 것입니다.
또한 이 책은 Charles Petzold가 그의 지식과 경험을 기반으로 한 통찰력 있는 내용으로, 책을 읽다 보면 저자의 깊은 이해를 자연스럽게 느낄 수 있습니다.

이 책을 통해 .NET의 세계로 한 발짝 더 나아가 보세요!


".NET Book Zero"는 Creative Commons Attribution-NonCommercial-NoDerivs (CC BY-NC-ND) 라이선스 하에 배포됩니다. " .NET Book Zero"는 무료로 제공되지만, 저자의 저작권을 존중하고, 비상업적이고 수정되지 않은 원본 형태로 배포를 해야합니다.

DLL, LIB: 차이점과 이해

프로그래밍을 할 때, 특히 외부 코드를 통합하거나 대규모 애플리케이션을 작성할 때 DLL(동적 링크 라이브러리)과 LIB(정적 라이브러리) 파일을 자주 접하게 됩니다. 이번 글에서는 DLL과 LIB 파일이 무엇인지, 어떻게 다른지, 그리고 프로젝트에 어떻게 활용할 수 있는지 알아보겠습니다.

DLL과 LIB 파일이란?

먼저, 간단하게 정의를 내리자면:

  • DLL: 동적 링크 라이브러리 (Dynamic Link Library)입니다. 프로그램이 실행되는 중에 동적으로 메모리에 로드되어 사용됩니다.
  • LIB: 정적 라이브러리 (Static Library)입니다. 프로그램이 컴파일될 때 라이브러리가 포함됩니다.

이 두 파일은 외부 코드를 활용할 수 있게 도와주는 라이브러리의 형태로, 각각 사용 시점과 방식이 다릅니다.


LIB (정적 라이브러리)

정적 라이브러리는 컴파일 단계에서 라이브러리 파일을 프로그램에 포함시키는 방식입니다.

어떻게 작동하나요?

보통 실행 파일을 만들 때, 소스 코드를 컴파일하여 만들어진 obj 파일들을 링커가 모아서 하나의 exe 파일을 생성합니다. 이 과정에서 LIB 파일을 사용하면, 링커가 LIB 파일을 exe 파일에 함께 묶어줍니다. 쉽게 말하면, LIB 파일의 모든 내용이 exe 파일 안에 포함되는 것입니다.

예를 들어, 우리가 자주 사용하는 stdio.h 같은 코드가 모두 exe 파일 안에 포함됩니다. 이 방식은 많은 기능을 포함할 수 있지만, 프로그램 크기가 커질수록 메모리를 많이 차지하게 됩니다.

PCH (Pre-Compiled Header)와의 차이는?

PCH는 컴파일러가 헤더 파일의 내용을 컴파일할 때 사용되지만, LIB는 이미 컴파일된 obj 파일을 연결하는 역할을 합니다. 또, PCH는 사용하는 곳마다 명시해야 하지만, LIB는 그렇지 않아도 됩니다.

LIB 파일을 소스에 적용하기

다른 프로젝트에서 LIB 파일을 사용하려면 두 가지가 필요합니다:

  1. 링커에게 LIB 파일의 경로를 알려주기
  2. 해당 라이브러리의 헤더 파일(include) 경로를 설정해주기

DLL (동적 라이브러리)

DLL은 실행 시에 동적으로 로드되는 라이브러리입니다. DLL은 실행 파일이 동작할 때, 링커가 DLL의 위치를 알고 있다면 프로그램이 그 내용을 불러와 사용할 수 있습니다. 즉, 프로그램 자체에는 해당 코드가 포함되지 않지만, 실행 중에 필요한 라이브러리를 메모리에 로드하여 사용합니다.

동적 링킹의 장점

  1. 실행 파일의 크기를 줄일 수 있습니다.
  2. 메모리(RAM) 절약이 가능합니다. 여러 파일에서 동일한 DLL 파일을 사용할 경우, RAM에는 DLL이 한 번만 올라가게 됩니다.
  3. 또한, 업데이트된 DLL 파일만 교체하면 프로그램을 재컴파일하지 않아도 기능을 업데이트할 수 있습니다.

DLL 파일 사용하기

DLL 파일을 사용할 때는 두 가지 방식이 있습니다:

  1. 암시적 링킹: 실행 파일에 어떤 DLL과 함수를 사용할지 미리 명시하고, 운영체제가 실행 시 해당 DLL을 불러오는 방식입니다.
  2. 명시적 링킹: 실행 중에 DLL 파일을 불러와서 원하는 함수만 동적으로 사용하는 방식입니다.

대부분의 오픈 소스 라이브러리는 암시적 링킹 방식을 사용합니다.

 


프로젝트에 DLL/LIB 적용하기

DLL 파일을 적용하려면?

DLL을 사용할 때는 세 가지 파일이 필요합니다:

  1. LIB 파일: 정적 라이브러리가 아닌, DLL에서 불러올 함수 정보가 포함된 파일입니다.
  2. 헤더 파일 (include): 함수의 선언부를 포함한 파일입니다.
  3. DLL 파일: 함수의 실제 구현이 담긴 파일입니다.

컴파일 단계에서:

  1. 링커에게 LIB 파일의 경로를 알려줍니다.
  2. 헤더 파일의 경로도 함께 알려줘야 합니다.

이 과정을 거치면 컴파일이 완료됩니다.

실행 단계에서:

실행할 때는 프로그램이 DLL 파일을 찾아야만 실행이 가능합니다. 그렇지 않으면 DLL 파일이 없어 실행 오류가 발생할 수 있습니다.


오픈 소스 라이브러리 적용하기

프로젝트에 오픈 소스를 적용할 때, 크게 두 가지를 고려해야 합니다:

  1. 컴파일만 할 것인가? 컴파일에 성공하더라도 DLL이 없다면 실행되지 않습니다.
  2. 실행을 목표로 한다면, DLL 파일만 있으면 됩니다. 이 경우 컴파일 과정에서 LIB 파일과 헤더 파일을 연결할 필요는 없습니다.

Visual Studio에서 파일을 링크하는 예시는 다음과 같습니다.

Visual Studio에서 파일 링크하기 (예: pthread)

  1. 컴파일하기 위해서는 LIB 파일과 헤더 파일이 필요합니다.
    • 링커 > 일반 > 추가 라이브러리 디렉터리: 해당 LIB 파일의 경로를 입력합니다.
    • 링커 > 입력 > 추가 종속성: 해당 LIB 파일의 이름을 입력합니다.
    • C/C++ > 일반 > 추가 포함 디렉터리: 해당 헤더 파일의 경로를 입력합니다.
  2. 실행할 때는 해당 DLL 파일의 경로를 설정합니다.

마무리

DLL과 LIB는 외부 코드를 효율적으로 사용하는 중요한 수단입니다. 각각의 장단점을 이해하고, 상황에 맞게 사용하는 것이 성능 최적화의 중요한 부분입니다.


이와 같은 방식으로 DLL과 LIB의 차이점과 사용 방법을 이해하고 적용하면, 프로젝트를 좀 더 유연하고 효율적으로 관리할 수 있을 것입니다.

+ Recent posts