본문 바로가기

전체 글138

객체지향의 사실과 오해-1장 협력하는 객체들의 공동체 객체지향 패러다임은 자율적인 객체의 협력이다. 위에 문장에서 이 책을 관통하는 큰 주제를 알 수 있습니다. 우선 객체라는 단어에서 객체지향의 중심은 클래스가 아니라 객체라는 점을 강조하고 있으며 객체는 자율적이다라는 말에서는 캡슐화 책임, 역할이라는 말이 숨겨져 있다고 생각합니다. 그리고 협력 말 그대로 객체들의 협력을 통해 하나의 목표를 달성한다는 뜻으로 이해하였습니다. 객체지향의 목표는 실세계의 모방이 아니라 새로운 세계를 창조하는 것이다. 새로운 세계를 창조한다는 이 말이 이 책에서 가장 기억에 남는 말인거 같습니다. 단순히 실세계를 모방하는 복사기가 아닌 새로운 객체가 사는 세상을 만들어서 실생활의 문제를 해결한다는 멋진 의미가 내포되어 있다고 느꼈기 때문입니다. 저는 이 구절을 읽고 개발을 하면.. 후기/내가 직접 경험한 후기 2023. 5. 31.
제가 다니는 정형외과 물리치료실에서 사용하는 핫팩 정보입니다. 저는 허리가 안좋아서 자주 정형외과에 가서 물리치료를 받는데 5개의 물리치료 중 온찜질하면서 바닥 안마기를 하는 구간이 있습니다. 온찜질은 전기치료, 자기장, 심부 열치료 등은 전문적인 기구과 전문가의 손길 없이 집에서도 혼자 할 수 있는 간단한 물리치료라고 생각해서 오늘 찜질하는 중에 어떤 찜질팩을 사용하는지 몰래 보았습니다. 제가 다니는 정형외과 물리치료실에서 사용하는 핫팩은??아무리 네이버나 구글을 뒤져봐도 정형외과에서 사용하는 핫팩에 대한 정보가 없어서 제가 직접 물리치료 중에 제가 다니는 정형외과에서는 어떤 핫팩을 사용하는지 보니 삼부메디칼 크린핫팩 이더라구요. 혹시나 정형외과에서 사용하는 핫팩은 어떤 것인지 궁금하신 분들을 위해 작성해보았습니다. https://link.coupang.com/a.. 후기/내가 직접 경험한 후기 2023. 5. 30.
[Flutter] admob(애드몹) - iOS 네이티브 광고 만들기 2탄 - xib파일, 스위프트 파일 만들기(ChatGPT로 오류 해결한 이야기) 1탄에서 iOS 앱을 만드는데 필요한 info.plist 파일 설정을 마쳤습니다. 이번에는 본격적으로 애드몹 네이티브 광고 송출을 위한 xib파일과 스위프트 파일을 소개하도록 하겠습니다. 아울러 ChatGPT로 오류도 해결한 이야기는 중간에 있으니 읽어봐 주세요. xib 파일 만들기 xib 파일이 무엇인지 chatGPT에게 물어보니 다음과 같이 대답 해주었습니다. XIB는 Interface Builder 파일로, iOS 애플리케이션에서 사용자 인터페이스를 디자인하고 구성하는 데 사용되는 파일 형식입니다. XIB 파일은 뷰 컨트롤러, 뷰 및 다른 사용자 인터페이스 요소를 포함할 수 있습니다. XIB 파일은 XML 형식으로 저장되며, Xcode에서 Interface Builder 툴을 통해 쉽게 수정할 수 .. 플러터관련 정보/플러터-안드로이드 개발 2023. 4. 15.
[Flutter] admob(애드몹) - iOS 네이티브 광고 만들기 1탄 - info.plist 설정하기 (Native Ads) 플러터(Flutter)를 이용하면 안드로이드와 iOS 앱을 모두 만들 수 있습니다. 저번에는 안드로이드에서 google_mobile_ads 패키지를 이용해서 애드몹(Admob) 네이티브 광고를 구현했는데 이번에는 iOS에서 구현해보도록 하겠습니다. 안드로이드와 더불어 iOS에서 네이티브 광고를 구현하기 위해서는 안드로이드에 경우에는 자바 또는 코틀린과 뷰를 구성하기 위한 xml 파일을 만드는 법을 알아야 하듯이 iOS에서는 스위프트 또는 오브젝트C와 뷰를 구성하는 xib을 할 줄 알아야 합니다. 아직 저는 뷰를 구성하는 xml 파일 만드는 법과 xib를 만드는 법을 공부하지 못해 공식 사이트의 코드를 복사 붙여넣기하여 구현만 했습니다. info.plist 설정하기 App ID 만들어서 info.plist.. 플러터관련 정보/플러터-안드로이드 개발 2023. 4. 15.
[1인 앱 개발] 혼자서 1년 3개월간 7개의 안드로이드 만들어서 매달 2~3달러 벌다 1인 개발로 매달 수익 발생 후기 1인 개발자로서, 혼자서 앱을 개발하고 출시하는 것은 매우 힘든 일이지만, 매일 매일 증가하는 사용자들의 피드백을 받고, 성장하는 모습을 보면서 개발자로서의 책임감과 보람을 느끼고 있습니다. 앞으로도 보다 나은 기능과 서비스를 제공하기 위해 노력하는 중입니다. 현재 총 7개의 안드로이드 앱을 출시 하였으며 현재 매달 2~3달러의 수익이 나오고 있습니다. 나의 성장, 변화 암기노트라는 앱은 그동안 꾸준히 유입이되면 여러 사용자 분들의 피드백이 있어 업데이트를 하였습니다. 그러다 보니 점점 더 신규 유입이 꾸준히 되고 있는거 같네요. 다만 새로운 기능의 추가로 인한 버그를 잡는게 너무 어려워 매일 시간이 날 때 마다 버그를 잡는데 고생하였습니다. 결국 혼자서 개발하는 것은 .. 후기/내가 직접 경험한 후기 2023. 4. 10.
[1인 앱 개발] 부업으로 혼자 1년 3개월 동안 안드로이드 앱 7개 출시 후 애드몹 수익공개 1년 3개월 간 총 수익은 25달러 1인 앱 개발을 하여 안드로이드 앱을 출시 한지 1년이 넘었습니다. 6개월 전에도 비슷한 글을 올렸었는데요 그 때보다 총 11달러 수익을 얻어 현재 25달러의 수익을 얻었습니다. 금액은 적지만 아무것도 안해도 매월 수익이 발생하고 또 꾸준히 상승하는 추세라는 것에 의미를 두고 있습니다. 1년 간의 앱 개발 월간 수익과 최근 사용자 수 증가 추이 저는 총 7개의 안드로이드 어플을 출시한 1인 개발자입니다. 처음 출시한지 1년이 넘어가는 시점에서, 이전에도 비슷한 글을 작성했었지만, 6개월 전인 그 당시에는 월 1달러 수준이었다면 지금 월 2~3달러 정도의 수익과 앱 사용자 수의 증가를 경험하고 있습니다. 특히, 최근에는 물타기 계산기와 암기노트 앱에서 매일 꾸준히 사용자.. 후기/내가 직접 경험한 후기 2023. 4. 10.
[Flutter] - go_router로 오브젝트(Object) 전달하기 저는 화면을 이동할 때 플러터의 패키지인 go_router를 사용합니다. 그냥 문자열 같은 건 :id 이런 형태로 사용하는데 문제는 문자열이 아닌 의존성 주입을 해야 될 때 오브젝트, 인스턴스를 전달할 필요가 있을 때도 있다는 점입니다. 지금부터 go_router를 이용해 화면 전환 시 오브젝트를 전달하는 법을 알아보겠습니다. Memo memo = state.extra as Memo를 쓰자 아래 예시 코드와 같이 state.extra를 통해 오브젝트를 넘겨주면 됩니다. GoRoute( name: "edit", path: "/edit", builder: (context, state) { Memo memo = state.extra as Memo; return EditScreen(memo: memo); }) .. 플러터관련 정보/플러터-안드로이드 개발 2023. 3. 30.
[Flutter] - go_router로 화면 이동 구현하기 (로그인 가드 구현 포함) go_router는 페이지 이동을 위한 플러터 패키지 고라우터(go_router)는 플러터(flutter)의 화면 전환을 위한 패키지 입니다. 예를 들어 초기 화면에서 어떤 버튼을 누르면 글쓰기 페이지로 이동하는 기능을 구현하기 위해 쓰는 패키지 입니다. 쉽게 설명하면 HTML의 링크(a태그)의 기능을 구현하는 것입니다. 아래 공식 문서의 설명에도 나와 있듯이 url 기반으로 화면의 주소를 지정하고 버튼에 경로를 입력하여 해당 되는 화면으로 전환됩니다. 또한 로그인이 안되어 있으면 다른 화면에 접근할 수 없도록 하는 beamer로 치면 가드 기능인 redirect 기능도 함께 알아보도록 하겠습니다. 공식문서의 설명 A declarative routing package for Flutter that use.. 플러터관련 정보/플러터-안드로이드 개발 2023. 3. 23.
[Flutter] admob(애드몹) - 앱 만들어서 네이티브 광고로 돈 벌기, 수익 내기(Native Ads) 애드몹(admob) 네이티브 광고(Native ads)란? Admob에는 배너광고, 전면광고, 보상형광고 그리고 오늘의 주제인 네이티브 광고(Native Ads)가 있습니다. 애드몹 공식 사이트에는 네이티브 광고를 다음과 같이 설명하고 있습니다. 앱의 디자인과 스타일에 어울리게 설정할 수 있는 맞춤 광고입니다. 광고 배치 방법 및 위치를 정할 수 있으므로 광고 레이아웃과 앱 디자인 간의 일관성 유지가 가능합니다. 네 맞습니다. 애드몹 네이티브 광고는 우리가 만든 앱에 디자인과 유사하게 만들어 자연스럽게 융화되어 광고를 할 수 있는 맞춤형 애드몹 광고 중 하나입니다. 시작하기에 앞서 이 포스팅의 대상은 애드몹 배너 광고등 다른 애드몹 광고를 만들어본 경험이 어느 정도 있는 분들을 대상으로 쓰여있어 기본적인.. 플러터관련 정보/플러터-안드로이드 개발 2023. 3. 20.
[Flutter, android] com.google.android.gms:play-services-safetynet:17.0.0 오류 관련 얼마 전에 새로운 앱을 구글 플레이 스토어에 배포하니 com.google.android.gms:play-services-safetynet:17.0.0 이런 오류 메세지가 떠서 여기 저기 구글을 검색해보며 무엇이 문제인지 알아보았습니다. 일단 해당 오류는 firebase auth 와 관련이 있는거 같아보였습니다. 해당 이슈는 native firebase가 문제 스택 오버플로우를 열심히 검색해보니 파이어베이스로 인증을 구현한 것이 문제였습니다. 일단 firebase_auth의 깃허브의 이슈에서 해당 문제를 검색해보았습니다. 답변 내용을 보니 native firebase sdk를 고쳐야 된다는 이야기가 나오네요. 바로 답변의 링크를 타고 가보았습니다. https://github.com/firebase/flu.. 플러터관련 정보/플러터-안드로이드 개발 2023. 3. 18.
[플러터와 파이어베이스]배포시 파이어베이스 로그인(Authentication(인증)) SHA-1을 추가해야 정상적으로 로그인이 된다. 개발 할 때는 로그인(Authentication(인증))잘 되었는데 플레이스토어에 배포하니까 로그인이 안 될때 파이어베이스의 여러 서비스 중 Authentication(로그인) 부분도 상당히 유용합니다. 이번에 처음으로 구글 로그인 기능을 추가한 앱을 만들어서 구글 플레이 스토어에 올렸는데요 2번의 거부가 발생하였지만 어찌 어찌 승인이 되어 기쁜 마음으로 다운 받아서 로그인 해보려고 하니 로그인 중 이라는 무한로딩이 발생하였습니다. 플레이 스토어에 올라간 뒤에는 SHA-1 인증서 추가 입력해야 된다. 그동안 개발 단계에서는 sha-1 인증 값을 터미널에서cd android && ./gradlew signingReport 입력하면 나오는 값으로 사용했습니다. 플레이스토어에 정식으로 출시한 앱은 플레이 스토.. 플러터관련 정보/파이어 베이스(플러터) 2023. 3. 14.
[플러터와 파이어베이스] 데이터 쿼리 정리(WHERE 문) 이번 포스팅에서는 1인 개발자에게 필수적인 파이어베이스 서비스 중 fireStore의 공식문서를 보고 공부한 내용을 이번 기회에 정리해보고자 작성해 보았습니다. 특히 데이터를 불러오는 방법이 중요하다 느껴 관계형 DB로 치면 WHERE문(arrayContrainsAny, arrayContains, whereIn)을 파이어베이스에서 어떻게 사용하는지 정리해 보겠습니다. 기본 이해 플러터로 백엔드 서버와 데이터를 주고받는 방식에 대해 일단 작성해보겠습니다. 플러터(Dart) 뿐아니라 다른 모든 언어도 다음과 같은 방식으로 서버와 데이터를 주고받고 있을 겁니다. 플러터에서 파이어베이스로 데이터 전달 데이터를 하나의 객체에 담는다. 데이터를 Json 형태로 변환한다. 서버(firebase)에 데이터를 보낸다. .. 플러터관련 정보/파이어 베이스(플러터) 2023. 2. 25.
[spring] application.properties 여러개 만들어서 편하게 설정 변경하기 스프링(SPRING)의 다양한 환경에 따라 application.properties 적용하기 스프링 개발을 하다보면 application.properties를 상황에 따라 바꿔야할 때가 있습니다. 예를 들면 혼자 개발할 때의 DB서버 설정, 같이 개발할 때 DB서버 설정, 테스트 서버와 연결할 때 설정 등등 그때 마다 주석처리하고 풀고하는 방법도 있지만 개발환경에 여러개라면 이것도 쉬운 방법은 아닙니다. 그래서 이번에는 application.properties를 여러개 만들어서 사용하는 법을 정리하고자 합니다. 1. application-{설정명}.properties 파일을 만들기 파일 이름을 application-{설정명}.properties과 같이 만듭니다. 아래 예시 코드는 스프링에서 mysql 서.. 프로그래밍사업/사이드 프로젝트 2023. 2. 11.
패스트 캠퍼스, 인프런, 코딩파파 코딩 인터넷 강의 후기 보통 코딩 인강을 하면 패스트 캠퍼스와 인프런이 양대 산맥인거 같습니다. 저는 패스트 캠퍼스에서 업무자동화 올인원 패키지와 파이썬 웹개발 올인원 패키지 두가지 강의를 구매했고, 인프런에서는 김영한님의 스프링 관련 인강과 딥러닝 호형의 머신러닝, 기타 파이썬 관련 강의를 구매하여 들었습니다. 그리고 마지막으로 플러터 개발을 하기 위해 코딩파파님의 플러터 인강을 구매 하였습니다. 이번 포스팅에서는 각각의 강의를 수강하면서 느낀 후기를 적어보도록 하겠습니다. 1. 패스트 캠퍼스 우선 제일 먼저 구매했던 패스트 캠퍼스 관련 후기입니다. 조금 듣다가 묵혀둔 강의여서 지금과는 조금 차이가 있을지 모른다는 점 참고 부탁드립니다. 제가 구매한 강의 파이썬 웹개발 올인원 패키지 업무자동화 올인원 패키지 제가 구매한 강의.. 후기/내가 직접 경험한 후기 2023. 1. 8.
WF-1000XM4 구매 2일차 후기 - 배터리 광탈 충전이슈, 노이즈캔슬링 성능 새해 첫날을 기념하여 WF-1000XM4를 선물 받았습니다. 쿠팡와우 회원이기 때문에 쿠팡 로켓 배송을 자주 이용하는데 2022년 12월 31일 구매하여 새해 첫날 인 2023년 1월 1일에 도착하여 1월 2일까지 열심히 사용해 보고 쓴 후기입니다. 2일차 후기의 내용은 노이즈 캔슬링 성능, 360 Reality Audio 관련 정보와 소니에 충전 관련 이슈를 물어본 후기를 남겨보도록 하겠습니다. 배터리를 광탈하게 하는 고속 충전 이슈 새로운 이어폰을 선물받고 이것 저것 알아보던 중 생각지도 못한 충전이슈가 있다는 것을 알았습니다. 고속 충전을 사용하면 배터리가 망가져서 배터리가 광탈하는 현상이 있다는 후기들이 많았습니다. 이것 때문에 보증기간이 지난 이어폰도 소니에서 무상교환해줬다는 후기들도 많았구요 .. 후기/내가 직접 경험한 후기 2023. 1. 2.
브레빌 920에 맞는 쇠로된 백플러싱 클리닝 디스크 구매 후기 브레빌 920용 청소 디스크를 구매 커피를 마시는 걸 좋아해서 브레빌 920을 구매해서 사용중입니다. 항상 커피를 맛있게 먹기 위해서는 뒷정리를 잘 해야하는데 그 일환으로 커피에 남은 찌꺼기를 없애는 백플러싱을 하고 있습니다. 이를 위해서는 실리콘으로 된 클리닝 디스크를 이용해야 하는데 이것이 점점 열을 받아 늘어져서 제대로 막지 못하는 현상이 발생하여 이번에 스텐리스로 된 클리닝 디스크를 구매한 후기 입니다. 실리콘 보다 내구성이 좋은 쇠로된 클리닝 디스크 기존 실리콘 디스크 보다 쇠로 되어 더 오래 사용할것 같은 디스크입니다. 브레빌 920모델은 58mm의 포터필터를 사용하기 때문에 네이버에서 58mm로 주문하니 딱 맞았습니다. 장착 전 장착 후 사실 처음에 잘 안들어가서 잘 못 샀나 했지만 잘 맞추.. 후기/내가 직접 경험한 후기 2022. 12. 11.
[자바] 날짜를 요일로 바꾸기 날짜를 요일로 바꾸기 파이썬이든 SQL이든 심지어 엑셀에도 날짜관련된 자료형에는 요일을 구하는 기능이 포함되어 있습니다. 이번에는 자바를 이용하여 날짜를 요일로 바꾸는 방법에 대해 알아보겠습니다. 자바8 이상부터는 LocalDate 클래스의 getDayOfWeek() 메서드를 통해 날짜를 요일로 바꿀 수 있습니다. 게다가 숫자가 아닌 FRIDAY와 같이 영어로 나와 더 알기 쉬운거 같습니다. 구현 순서 String 형태의 날짜를 입력한다: "2022-12-8" 또는 "2022-12-08" 한자리 숫자 앞에 0이 들어가냐 안들어가냐에 따라 포맷터가 달라집니다. 포맷터를 설정하기: 2022-12-8로 입력하면 포맷터가 달라집니다. DateTimeFormatter.ISO_LOCAL_DATE 포맷터를 사용하면 .. 프로그래밍사업/사이드 프로젝트 2022. 12. 9.
[스프링, 도커] 도커로 스프링 배포하기 스프링으로 간단한 서비스를 구현하고 나서 서버에 배포하여 언제든지 내가 만든 서비스를 이용하고 싶었습니다. 그래서 도커를 이용하는 배포하는 방법을 소개해보고자 합니다. 순서 1. 도커 파일만들기 2. 도커 파일로 이미지 만들기 3. 만든 이미지로 컨테이너 만들기(마운트 포함) 4. 스프링 빌드 파일 업로드 하기 1. 도커 파일 만들기 도커 파일 만들기는 쉽습니다. 간단히 메모장에 확장자 없이 Dockerfile이라는 이름으로 하셔도 되고 다른 이름을 사용하셔도 경로 설정만 해주시면 사용할 수 있습니다. 하지만 보통은 Dockerfile이라고 만듭니다. 도커 파일 내용 첫번째는 이 이미지의 베이스가 되는 이미지를 의미합니다. 두번째는 폴더위치를 바꾸는 명령어라는데 저는 그냥 기본 폴더, 시작하는 폴더라고 .. 프로그래밍사업/도커(docker) 2022. 11. 23.
[스프링 부트 + JPA + MySQL] 간단한 회원 관리 예제로 알아보는 스프링 부트 -4탄 Controller와 웹화면 만들기 마지막으로 실제 웹 화면을 보여주는 Controller부분입니다. 이 부분은 자바 뿐아니라 HTML도 어느 정도 알고 있어야되는 부분입니다. 처음 스프링을 공부하기로 마음 먹고서 패스트캠퍼스의 남궁성님의 강의과 인프런의 김영한님의 강의 중에 고민을 많이 했는데 저는 김영한 님의 강의를 선택하였습니다. 그 이유는 1. 무료로 스프링부트가 어떤거구나 알려주는 강의여서 2. 배달의 민족과 같이 대규모 서비스를 구축해본 경험과 실제로 사용하는 것만 가르쳐준다 이 두가지 이유로 김영한님의 강의를 선택하였고, 유료 강의도 두개 이미 결제하였습니다. 아무튼 스프링 부트를 시작하시려는 분들께 저의 포스팅이 조그이나마 도움이 되실기 빕니다. 그럼 마지막 컨트롤러 부분을 시작해보겠습니다. HomeController 만들기.. 프로그래밍사업/사이드 프로젝트 2022. 11. 16.
[스프링 부트 + JPA + MySQL] 간단한 회원관리 예제로 알아보는 스프링 부트 -3탄 Service 만들기 서비스 부분은 앞서 만든 Repository를 이용하여 회원가입, 회원조회 등 실제 서비스를 구현하는 부분입니다. 사실 Repository와 Service부분을 합쳐도 되는거 아니야 라고 생각을 했지만 김영한님의 스프링 강의를 쭉 들어보니 각각의 기능들을 구분하고 분리해놔야 유지보수가 쉽다는 것을 알았습니다. 예를 들어 입문 강의에서 JDBC 템플릿에서 JPA로 바꾸는 과정에서 repository와 service가 합쳐져 있으면 바꿔 끼우는것이 어려웠을텐데 코드 한줄만 바꾸면 쉽게 교체가 되었습니다. 자세한 내용은 인프런 스프링 부트 입문 강의를 들어보시면 알수 있습니다. [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가.. 프로그래밍사업/사이드 프로젝트 2022. 11. 15.