Development(71)
-
[맥] 압축파일에서 특정 파일 삭제하기
senti-MacBook: senti$ zip -d 압축파일이름 "삭제할파일"//ex)senti-MacBook: senti$ zip -d file.zip "__MACOSX*"
2024.08.20 -
개발하면서 한번은 접하게되는 문제들과 용어들
프론트엔드 학습 로드맵로드맵을 통해서 전체적인 학습의 흐름을 알 수 있다.https://roadmap.sh/frontendPWA 학습PWA는 간단히 말해 모바일에 "설치"할 수 있는 "웹" 을 만드는 기술이다.아니, 웹을 설치한다고? 그냥 브라우저로 웹을 보는게 아니라?? 라는 생각에서 따라하면 좋다 https://web.dev/learn/pwa/progressive-web-apps?hl=ko#bringing_the_best_of_both_worlds지수백오프-지터 전략 : 어떻게 효율적으로 오류처리를 재시도 할 것 인가?https://aws.amazon.com/ko/blogs/architecture/exponential-backoff-and-jitter/SSR과 CSR화면 렌더링의 역할을 누가 짊어질 ..
2024.08.08 -
mac java 설치 및 환경변수 path 설정
mac에서 java를 설치하고 환경변수 path 를 설정하는 방법은 대략적으로 다음과 같습니다.Homebrew 설치 (bash)설치할 수 있는 자바 버전들 확인 (openjdk ~ )원하는 버전 설치 ( 2번에 확인한 목록 중에서 )환경변수 설정 ( zsh, bash, profile )자세히 알아보면 다음과 같습니다.1. Homebrew 설치$/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"2. 설치할 수 있는 자바 버전들 확인$brew search openjdk3. 원하는 버전 설치*. 저는 17을 선택해보겠습니다$brew install openjdk@174. 환경변수 설정$echo..
2024.07.16 -
코틀린 filter, find, groupBy, groupingBy, reduce, fold 사용 예제
우선, 가장 손쉽게 리스트를 하나를 생성한다.리스트는 문자로 구성된 리스트로 구성한다.var list = listOf("1", "1", "2", "3")//[1, 1, 2, 3] filterlist.filter { it == "1" }// [1, 1]list.filter { it == "2" }// [2]위와 같이 filter 함수에 "조건"을 걸면 조건에 해당하는 값들을 모두 리스트로 반환한다it == "1" 이라는 조건에서 it는 list 의 항목 값을 뜻하는 일종의 예시 변수명으로 이름은 다음과 같이 원하는 이름으로 바꿀 수 있다.list.filter { filterId -> filterId == "1" }//it라는 이름을 filterId 라는 원하는 변수명으로 변경 findlist.find { ..
2024.05.08 -
IntelliJ 자바 프로젝트에 VM 옵션 추가하기
IntelliJ 자바 프로젝트에 VM 옵션을 추가하는 방법은 정말 쉽다.. 해당 메뉴가 숨어있을뿐.. 1. 상단 Run Config에서 [Edit Configurations...] 옵션 클릭 2. 우측 Build and run 항목에서 "Modify options" 클릭 3. 메뉴에서 Add VM options 선택 4. 새로 입력칸이 생긴 곳에 VM 옵션을 넣는다.
2023.09.22 -
ADsP 독학 공부법과 첫트 합격 수기
일단 비전공자이나 저는 관련업계에 있고, 다만 일반 프로그래머라서 데이터는 깊게는 모르는 상태였습니다.. 데이터는 어떻게 추출해야하고 어떤 이론을 가지고 접근해야하는가에 대한 학업차 이론집 2권을 샀습니다. 짬짬이 공부를 했고 하루에 2시간~4시간 정도 투자했고, 전 늘그렇듯 자격증자체가 목적이 아니라 그 분야의 최소한의 기초는 알아야 그때부터 시작이라는 생각으로 속독위주로 공부했습니다. 그래서 ADsP 합격을 위해 했던 공부법을 정리하면 다음과 같습니다. 이론집을 속독 > 나만의 요약집 만들기 > 기출을 통해 요약집 보완 > 다른 이론집 속독 > 요약집 보완 > 불안한 문제만 3개년치를 하루에 한번씩 독파 1,2주차 - e북 이론집을 아이패드에 켜놓고 분할화면으로 굿노트에서 요약재정리. 총 130여장으..
2023.06.09 -
[파이썬] 가장 많이 사용하는 줌렌즈 초점거리는? 통계를 내보니..
사진을 취미로 하면서 아주 오랜 고질병으로 유명한 병이 있습니다. 바로 렌즈병인데요.. 단렌즈를 샀다가 줌렌즈를 샀다가 다시 단렌즈로 돌아가고 그러는 무한 반복의 현상입니다ㅎ 저도 단렌즈와 줌렌즈(28-75mm)를 사용하다가 좀더 레인지가 긴 줌렌즈로 통합해서 이제는 끝났겠거니했는데.. 이런.. 그런데.. 맛을 알면 그 맛을 잊지 못한다고 하던가요. 저도 또다시 단렌즈 병(?)이 도져버렸습닏.. 그러던 차에 과연 단렌즈를 사야한다면 어느 초점거리의 단렌즈로 살 것인가. 정말 내가 35mm 50mm 85mm 이런 여러 렌즈들 중에 어느 초점거리를 가장 즐겨찍었나를 통계를 내보고 싶었습니다. 본업이 개발자이다보니 일일히 사진파일을 열어서 기록할 수도 없는 노릇이고해서 이참에 파이썬으로 하나 만들어서 확인해보..
2023.04.30 -
[SwiftUI] ObservedObject 의 배신
올 한해 방송 준비도 미흡했고 장기적 플랜으로 학습을 단단히 하고서 방송을 해야겠다는 생각으로 잠을 줄여가면서 회사일을 하면서 개인사를 돌보며 학습겸 1인 프로젝트를 시작했다. [ 도입한 주요 기술 스펙 ] SpringBoot 언어 Kotlin ORM JPA 보안 Secure 와 JWT 기반 DB MariaDB SwiftUI WAS가 AWS인지 아닌지, 도커를 쓰는지 아닌지 (어차피...도커도 서서히 사향길에 접어들고 있다) 신기술인지 아닌지 그건 개발에 있어 중요하다고 생각하지 않는 편이다. 거대한 서비스를 어떻게 파트를 나누고 구성할 지, 어디부터 설계를 해나갈지를 스스로 고민하고 어떻게 스타트를 끊고 진행을 해나갈지, 그리고 그걸 정말 "혼자서" 다 해낼 수 있는지가 제일 중요하다고 생각한다. 그래..
2022.07.12 -
[Docker] 맥OS에 도커 설치 (mac docker install) - 맥에 우분투 설치 (1)
지난해까지 주력 모바일 앱개발자에서, 이제는 본격적으로 서버 사이드 개발과 아키텍쳐링으로 업무를 전환하는 시점에서 본격적으로 시도하는 서버사이드 개발의 첫 관문, 도커를 소개하고자 한다.도커란? (위가 도커 이미지인데.. 고래위에 컨테이터를 적재했다고 동물학대라고는 안했으면 좋겠다...ㅜ)나도 처음 서버개발을 시작했던 2011년도 즈음 겪었고, 이후에도 간간히 어깨너머로 봐온 상황이 있다. 개발회사에서 "서버 사이드 개발"을 하다보면 아마도 한번쯤은 아래와 같은 경험을 해보았을 것이다. (안해봤다면 좋은(?)회사~)신이난다 신이나 흥이난다 흥이나 로컬 환경에서 코딩을 신명나게 하고나서 서버에 결과물을 처음으로 배포를 해야하는데, 아...그러고보니 나는 윈도우 PC인데 서버OS는 리눅스네.. (또는 아 나..
2021.02.02 -
안드로이드 마켓 배포를 편하게 해보자 "google publisher api v3"
안드로이드 앱 개발의 최종단계라고 할 수 있는 구글 플레이 배포. 앱이 1, 2개인 경우는 상관이 크게 없을지 모르나, 관리하고 있는 앱이 10개 이상을 넘어가기 시작하면 사용자 배포 이슈가 있을때마다 일일히 google play consoel 에 접속해서 앱을 배포하는 것이 얼마나 귀찮은 일인지는 현업을 뛰어보면 알 수 있다. 이때 구글에서 제공하는 "google publisher api v3" 를 사용하면 소스 단에서 바로 빌드하여 바로 업로드, 배포까지 논스톱으로 진행할 수 있다. 배포와 관련해서는 fastlane 이라는 스크립트 대체제가 있으나, 자바나 파이썬에 익숙하고 심플하게 관리할 운영툴을 만들고 싶다면 "google publisher api" 가 좋은 방법일 수 있다. 우선 공식 샘플 소스..
2021.01.24 -
자바 검색엔진 "아파치 루씬(lucene) 8.7.0" 적용기 - 2/2
1편 - kplog.tistory.com/285 지난 시간에 1개의 파일을 읽어서 해당 파일의 특정 단어의 위치에 대한 검색을 빠르게 하는 방법으로 "아파치 루씬" 도입을 고려했다. 테스트를 거듭한 결과, 역시 아파치 루씬의 단어 검색에 성공을 했고, 그 속도에 놀라게 되었다. 역시 코딩은 집에서 편하게 쉬는 시간(?)에 해야 해결이 잘되는 것 같은 것은 진리인가.. 우선 아파치 루씬을 구현하기 위한 큰 구조는 다음과 같다. *. 사전 필요 작업 (라이브러리 의존성 추가) implementation group: 'org.apache.lucene', name: 'lucene-core', version: '8.7.0' implementation group: 'org.apache.lucene', name: '..
2021.01.22 -
자바 검색엔진 "아파치 루씬(lucene) 8.7.0" 적용기 - 1/2
아파치 루씬은 보통 여러 파일을 인덱싱하여 해당 파일을 빠르게 찾는 용도의 레퍼런스가 많이 나와있으나, 현재 도전중인 것은 파일 1개안의 텍스트들을 행단위로 인덱싱하고 빠르게 찾기 위해 시도중이다. 허나 아래의 코드로 했을 경우, 단어를 찾지 못하고 있다. try { File file = new File("인덱스가생길디렉토리명칭.index"); Directory dir = FSDirectory.open(Paths.get(file.toURI())); Analyzer analyzer = new StandardAnalyzer(); IndexWriterConfig iwc = new IndexWriterConfig(analyzer); iwc.setOpenMode(IndexWriterConfig.OpenMode.C..
2021.01.20 -
파이썬 env: python\r: No such file or directory 오류
파이썬 실행시 env: python\r: No such file or directory 오류가 발생할때에는 vi로 해당 py 파일을 열어서 다음과 같이 명령모드로 실행 후 강제 저장, 종료한다 :set ff=unix :wq!
2021.01.17 -
iOS fastlane 기본 사용법
Xcode가 아닌 command 창에서 빌드 등을 자동화하는 fastlane 이라는 프로그램의 기본적인 빌드 명령어는 다음과 같다. (*. fastlane 은 안드로이드도 지원합니다 ) $bundle exec fastlane gym --workspace 프로젝트파일명(~.xcworkspace) --scheme 타겟명칭 --configuration Release --export_method export방법 --output_directory export위치 [ iOS의 fastlane 기본적인 설치 문서 ] - docs.fastlane.tools/getting-started/ios/setup/ *. 참고할만한 사이트 (1) 젠킨스와 fastlane 결합 : thebugcode.github.io/ios-con..
2021.01.15 -
유용하게 쓰이는 vi 명령어
실무에서 사용할때마다 정리하는 중입니다. *. vi 모드별 스크린샷 [ 이동모드 ] 1. shift 와 : 을 누르면 > 명령모드 2. a 를 누르면 > 현재커서 다음기준 편집모드 [ 편집모드(직접작성) ] 1. ESC 한번 > 이동모드 [ 명령모드(치환 등) ] 1. ESC 한번 또는 빠르게 두번 > 이동모드 ^, $ 등은 정규표현식의 첫, 끝과 같은 의미인듯.. ( ^x 문자열이 x로 시작한다. / x$ 문자열이 x로 끝난다.. ) 저장하고 종료 명령모드 :wq 이동모드 ZZ (ZQ는 저장안하고 종료) 문서 가장끝으로 가기 :$ 특정 - 현재라인을 복사해서 그 다음줄에 붙여넣기 (복사할 라인에서 명령모드로 변경후) :t. *. 현재라인에 특정라인을 복사할 경우 (10번라인 > 현재라인) :10t. 전..
2021.01.15 -
[자바] 멀티쓰레드 병렬처리 - stream 방식 ExecutorService, Future 방식
(1) ExecutorService, Future, callable 자바 1.5 버전의 ExecutorService와 callable를 사용한 예시 newSingleThreadExecutor로 하였는데 newFixedThreadPool(숫자) 방식으로 하면 쓰레드 개수를 지정할 수 있다. ExecutorService executorService = Executors.newSingleThreadExecutor(); Set callables = new HashSet(); //리스트, 맵등 반복문으로 작업할 콜렉션 for(String key : map.keySet()) { callables.add(() -> { //원하는 동작 수행 return "result"; }); } //callables 들이 병렬처리된..
2020.11.24 -
[git] Xcode pbxproj merge conflict 해결방법
xcode의 최상위 프로젝트 관리 패키지인 .pbxproj의 경우 git 병합시 어떻게 병합할 것인가에 대해 난감한 경우가 많다. 혼자 작업을 하더라도 브랜치를 별도로 분기하여 병합할때 해당 패키지가 충돌이 나는 경우, 병합관련 사항을 기재한 .gitattributes 파일을 git에 추가하면 해결이 가능하다. $ vi .gitattributes 해당 파일에 *.pbxproj binary merge=union 내용을 추가후 저장.
2020.11.19 -
아이폰12 safe area 변경사항
아이폰 12 와 아이폰 12 미니 버전의 safe area 가 변경 사항이 있다고 하여 원글을 찾아보았습니다만, 스토리보드 상에서 영역을 잡고 해당 영역의 contant를 건드리지 않았던 경우에는 크게 문제될 것은 없을 것 같고, 코딩으로 상단 영역을 44 등과 같이 다이나믹하게 고정 숫자로 잡는 방법으로 UI를 구성했다면 아이폰 12는 47, 아이폰 12 미니는 44 로 분기를 하셔야할 것 같습니다. 자세한 사항 : useyourloaf.com/blog/iphone-12-screen-sizes/
2020.10.29 -
iOS14 사진 앨범 권한 이슈 "PHPhotoLibrary"
ios14의 경우 사진 권한을 앱별로, 그리고 앱안에서도 "선택한 사진, 전체사진, 거부" 등으로 제어할 수 있게 되었는데 현재 개발 테스트간 파악한 바로는 이게 기능상의 맹점이 보인다. 사진 권한을 분명히, "선택한 사진" 또는 "거부"로 하였음에도 전체 사진을 불러올수 있는 상황이다. PHPhotoLibrary 의 authorizationStatus 을 통해 아래 변수 코멘트 처럼 권한상태(PHAuthorizationStatus)를 확인할 수 있는데, PHAuthorizationStatusNotDetermined = 0, // User has not yet made a choice with regards to this application PHAuthorizationStatusRestricted, /..
2020.10.21 -
(20년09월 최신기준) androidx 프로젝트에 필요한 기본 dependencies - gradle
2020.09.16 일자 기준, stable 버전의 안드로이드 스튜디오로 최신 프로젝트를 생성시, 다음과 같이 모듈단의 build.gradle 의 의존성 버전들을 설정하면 개발 학습을 하실때 필요한 최소한의 기본적인 것들은 충돌없이 사용이 가능합니다. implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.1' implementation 'androidx.navigation:navigation-fragment:2.1.0' implementation '..
2020.09.16 -
스프링 부트 : Restful API 서버 만들기 "TDD 단위테스트 추가" - 2 of ?
TDD의 기본적 지향점, 유용함, 편리함 그런 것들은 일단 논외로 하겠습니다.. 테스트 케이스를 만드는 방법은 다음과 같이 진행합니다. (1) 스프링부트 프로젝트의 main 패키지와 같은 레벨 Depth에 test 이하 패키지 생성 (2) 프로젝트의 build.gradle 수정 (3) 인텔리제이의 설정 변경 (4) 테스트 코드를 작성하여 빌드 (1) 스프링부트 프로젝트의 main 패키지와 같은 레벨 Depth에 test 이하 패키지를 만든다. (2) 프로젝트의 build.gradle 수정 1) dependencies 내용 추가 dependencies { //아래 내용 추가 testCompile group: 'junit', name: 'junit', version: '4.12' testImplementat..
2020.07.10