Development/[Dev] 개발일반(20)
-
[맥] 압축파일에서 특정 파일 삭제하기
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 -
ADsP 독학 공부법과 첫트 합격 수기
일단 비전공자이나 저는 관련업계에 있고, 다만 일반 프로그래머라서 데이터는 깊게는 모르는 상태였습니다.. 데이터는 어떻게 추출해야하고 어떤 이론을 가지고 접근해야하는가에 대한 학업차 이론집 2권을 샀습니다. 짬짬이 공부를 했고 하루에 2시간~4시간 정도 투자했고, 전 늘그렇듯 자격증자체가 목적이 아니라 그 분야의 최소한의 기초는 알아야 그때부터 시작이라는 생각으로 속독위주로 공부했습니다. 그래서 ADsP 합격을 위해 했던 공부법을 정리하면 다음과 같습니다. 이론집을 속독 > 나만의 요약집 만들기 > 기출을 통해 요약집 보완 > 다른 이론집 속독 > 요약집 보완 > 불안한 문제만 3개년치를 하루에 한번씩 독파 1,2주차 - e북 이론집을 아이패드에 켜놓고 분할화면으로 굿노트에서 요약재정리. 총 130여장으..
2023.06.09 -
[파이썬] 가장 많이 사용하는 줌렌즈 초점거리는? 통계를 내보니..
사진을 취미로 하면서 아주 오랜 고질병으로 유명한 병이 있습니다. 바로 렌즈병인데요.. 단렌즈를 샀다가 줌렌즈를 샀다가 다시 단렌즈로 돌아가고 그러는 무한 반복의 현상입니다ㅎ 저도 단렌즈와 줌렌즈(28-75mm)를 사용하다가 좀더 레인지가 긴 줌렌즈로 통합해서 이제는 끝났겠거니했는데.. 이런.. 그런데.. 맛을 알면 그 맛을 잊지 못한다고 하던가요. 저도 또다시 단렌즈 병(?)이 도져버렸습닏.. 그러던 차에 과연 단렌즈를 사야한다면 어느 초점거리의 단렌즈로 살 것인가. 정말 내가 35mm 50mm 85mm 이런 여러 렌즈들 중에 어느 초점거리를 가장 즐겨찍었나를 통계를 내보고 싶었습니다. 본업이 개발자이다보니 일일히 사진파일을 열어서 기록할 수도 없는 노릇이고해서 이참에 파이썬으로 하나 만들어서 확인해보..
2023.04.30 -
파이썬 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 -
유용하게 쓰이는 vi 명령어
실무에서 사용할때마다 정리하는 중입니다. *. vi 모드별 스크린샷 [ 이동모드 ] 1. shift 와 : 을 누르면 > 명령모드 2. a 를 누르면 > 현재커서 다음기준 편집모드 [ 편집모드(직접작성) ] 1. ESC 한번 > 이동모드 [ 명령모드(치환 등) ] 1. ESC 한번 또는 빠르게 두번 > 이동모드 ^, $ 등은 정규표현식의 첫, 끝과 같은 의미인듯.. ( ^x 문자열이 x로 시작한다. / x$ 문자열이 x로 끝난다.. ) 저장하고 종료 명령모드 :wq 이동모드 ZZ (ZQ는 저장안하고 종료) 문서 가장끝으로 가기 :$ 특정 - 현재라인을 복사해서 그 다음줄에 붙여넣기 (복사할 라인에서 명령모드로 변경후) :t. *. 현재라인에 특정라인을 복사할 경우 (10번라인 > 현재라인) :10t. 전..
2021.01.15 -
[git] Xcode pbxproj merge conflict 해결방법
xcode의 최상위 프로젝트 관리 패키지인 .pbxproj의 경우 git 병합시 어떻게 병합할 것인가에 대해 난감한 경우가 많다. 혼자 작업을 하더라도 브랜치를 별도로 분기하여 병합할때 해당 패키지가 충돌이 나는 경우, 병합관련 사항을 기재한 .gitattributes 파일을 git에 추가하면 해결이 가능하다. $ vi .gitattributes 해당 파일에 *.pbxproj binary merge=union 내용을 추가후 저장.
2020.11.19 -
안드로이드 스튜디오 유용한 단축키
코드 자동정렬 블럭을 지정한 뒤, 'Ctrl + Alt + L' (mac : ⌘ + option(alt) + L)
2020.06.14 -
인텔리제이(intelliJ) maven project / Gradle project jar 배포
인텔리J 2020.1월 버전 기준 인텔리j에서 jar를 배포하는 것은 프로젝트 구성 방식이 maven 인지 gradle 인지에 따라 달라진다. *. jar란? JAR는 여러개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷 - https://ko.wikipedia.org/wiki/JAR_(파일_포맷) (1) [ Maven Project 에서 jar 배포 ] [ 스프링 부트 maven Project 에서 jar 배포를 할때에는 아래 작업부터 선 진행함 ] 1) pom.xml 수정 1. properties 항목 확인하여 추가 수정 *. jar 실행시 실행되는 첫 클래스 지정 :..
2020.05.11 -
아파치 카프카(Kafka) : 스프링부트 환경 구축 - 3 of 3
스프링과 스프링부트의 큰 차이점 구분 스프링 스프링부트 bean xml로 관리 자바 클래스로 관리 목적 둘다 비슷 둘다 비슷 스프링 부트로 프로젝트를 구성하면 스프링에 비해 잡다한 구성이 사라지기도 하고 (심플해짐) 카프카의 경우 MVC 패턴등의 뷰가 꼭 필요한 프로젝트 구성이 아니기에 부트를 쓰는 것이 적합하다고 본다.. 특히 서버 시작도 스프링부트 매우빠르고 가볍다. 스프링 설정의 고통을 느껴본자는 스프링부트의 매력에 빠질수밖에 없다. 그래서 카프카 프로젝트의 큰 구성은 [구성] 1. 어플리케이션 클래스 2. 카프카 설정 클래스 (이걸 따로 설정파일로 빼고 하는 방식 (별도 yml 등이나 프로퍼티 파일로 분리)이 유동적으로 대응하기 편함..) 3. 프로듀서, 컨슈머 클래스 4. 각종 클래스를 auto..
2020.05.08 -
아파치 카프카(Kafka) : 설치 및 실행 - 2 of 3
아래도 역시 mac을 기준으로 작성하였으면 수많은 블로그들과 레퍼런스, 오픈 소스를 참조하여 실제 동작이 가능한 부분들로 작성하였다. 오늘의 순서는 다음과 같다. (1) 카프카, 주키퍼 설치 및 실행 (2) 토픽 생성 (3) 프로듀서, 컨슈머 클래스 생성 및 빌드(jar 만들기) (4) jar 실행 *. 본 구조는 1 broker, 1 topic 이라는 아주 기본적인 환경으로 구성되어 있음. (1) kafka & zookeeper 설치하기 1) 카프카 및 주키퍼 설치 $ brew install kafka $ brew install zookeeper 2) 주키퍼 실행 $ zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties To have lau..
2020.04.29 -
아파치 카프카(Kafka) : 설치 및 실행 - 1 of 3
아마도 카프카는 여러 용도(높은 처리량이 필요한 통계 집계&처리, 메세지 처리 등)가 있지만 플룸과 비교했을때 목적이 다소 다르다. (많이 다르다고 해야할수도) 어느쪽으로 전달하게 된다는 주 목적은 같지만 어느 정도의 용량을 어떻게 분산처리할까 말까에 대한 선택지에서의 대용량 분산처리와 메세지 처리라면 카프카쪽이, 단순히 로그파일의 적재에 따른 전달, 분류, 적재에만 포커스를 맞춘면 플룸쪽이 나을 것으로 판단된다. (말은 누가 못하리) 이벤트 버스, 이벤트 드리븐, 옵저버 패턴이 시조새 안드로이드 개발을 하다보면 정말 한번쯤은 들어볼수밖에 없는 라이브러리가 있는데 다름아닌, 바로 "이벤트 버스(event bus)"이다. 아주 간단히 설명하자면, 버스는 정해진 목적지(밤깊은 마포종점~)를 가지고 계속 한쪽..
2020.04.27 -
Flume 설치 및 기본 설정, sink 테스트 - mongoDB sink 2 of 2
몽고DB로 적재할 원천 데이터는 심플하게 키와 밸류로 이루어진 json이 들어있는 "로그파일"이며, (이 로그파일은 웹서버 등에서 자동으로 적재될 것을 가정하였기에 테스트 단계에서는 수동으로 파일을 생성하였다) 전체적인 동작은 flume-ng 가 로그파일들을 읽어서(spooldir이라는 방식사용) sink로 보내면 sink가 몽고DB로 보내는 모양이며, 공식 레퍼런스 그림을 토대로 재구성하여 주석을 달면 아래와 같다. (빨간색) 오늘의 조리법은 크게 다음과 같다. (1) 로컬 mongo db 셋팅 : flume database, admin 유저, json 컬렉션, 유저 권한 셋팅 (2) flume.conf 파일 셋팅 : spooldir 방식 (3) mongo db로 로그파일의 json을 insert하는 ..
2020.04.24 -
Flume 설치 및 기본 설정, sink 테스트 - mongoDB sink 1 of 2
플룸 설치 및 기본 설정을 통해 telnet 으로 logger 를 보는 sink를 지난 포스트에서 해보았다면 이번에는 sink 방식을 mongoDB와 연결하는 방식이다. 지난시간과 마찬가지로 나는 아직 나의 mac을 중고로운 평화나라에 팔지 않은 상태이므로 아래의 모든 내용은 mac을 기준으로 한다.. 오늘의 요리 순서는 다음과 같다. (1) flume.conf 파일 수정 : mongoDB sink 향으로 수정 (2) mongoDB sink 를 수행하는 java jar 만들기 (3) sink jar를 flume의 lib 디렉토리에 넣기 (4) flume 실행 [ 사전 준비 ] 미리 준비해야 할 사항은 로컬에 mongoDB client 가 설치되어 있는 편이 좋으며, 사전지식으로 java 패키지를 jar로..
2020.04.21 -
Flume 설치 및 기본 설정, sink 테스트 - logger sink
나중을 위해서라도 기본 환경에서 크게 벗어나지 않은 심플(하지 않지만..)버전의 플룸의 설치와 설정, sink를 기록해본다.. 아래 전부는 mac 환경을 기준으로 하고 있다. "1 소스 - 1채널 - 1싱크" 구조의 로컬 테스트를 위한 전체적인 셋팅 순서. (1) flume 설치 (2) 맥 환경변수 설정 / flume 실행 스크립트 내의 변수 설정 (3) flume의 기본 설정파일을 복사해서 수정 (4) flume 실행 (5) "데이터 소스 연결" : 로컬 환경에서 flume쪽으로 정보를 전송해서 수신하는지 확인 (1) flume 설치 - homebrew를 통해서 설치 1) 홈브류(HomeBrew) 레파지토리 최신화 $ ruby -e "$(curl -fsSL https://raw.githubusercon..
2020.04.20 -
모바일앱의 필수개념, 프로세스와 쓰레드
프로세스와 쓰레드 모바일 개발을 위해서 꼭 거쳐야 하는 작은 관문이 하나있다. 어려운 개념은 아니지만 이를 이해하지 못한 상태에서 앱을 개발하다보면 크래시 현상으로 원인을 찾지 못하는 경우도 있고 (물론 크래시가 날때 로그창에서 로그로 원인을 알려주지만) 하여 간단히 "프로세스"와 "쓰레드"의 개념을 잡고 가야한다. 프로세스 컴퓨터를 살때 CPU에 듀얼코어, 헥사코어라며 성능이 좋아요~ 따봉을 많이 받은 리뷰를 본적이 있을 것이다. 그 코어가 프로세스라고 생각하면 된다. 프로세스는 독립적으로 행동을 보장받는 "공간"이기때문에 보통은 앱들을 동시에 사용하는 멀티태스킹(스마트폰 초기에 아주 획기적인 기능이었다..)이 가능하게 되고, 멀티 태스킹이라는 말 자체가 멀티 프로세스로 여러개의 앱이 서로의 독립적인 ..
2020.04.16 -
Xcode의 유용한 단축키
Xcode의 유용한 단축키 파일 바로 찾기 ⌘ + ⇧ + O 클래스에서 특정 라인으로 이동 ⌘ + L 코드 자동정렬 원하는 코드를 블럭으로 씌운뒤 control + I (대문자 i)
2020.02.28 -
[블록체인] 블록체인 관련 오픈소스, 예제, 샘플 사이트 소개합니다.
[블록체인] 블록체인 관련 심플한 오픈소스, 예제, 샘플 사이트 소개합니다. 블록체인 기술이 나온지는 좀 되었지만, 어디서 어떻게 구현되었는지 궁금하실 분들이 계실 것 같아 직접 오픈소스 형상관리 사이트인 GitHub를 돌아다니며 정리해보았습니다. 각각의 블록들이 서로 연관되어 있기때문에 어떠한 블록 뒤에 붙는 블록은 앞의 블록들의 정보들을 모두 포함하고 있고, 그것이 체이닝(쇠사슬처럼 연결)되어 점점 위변조가 어려워지는 기술이라고 이해하면 되실 것 같습니다. (일각에서는 자료구조의 링크드 리스트의 연장선상일뿐 특별한 것이 없다고도 합니다만 이 링크 정보를 분산해서 저장하기 시작하면 고도화 된 기술이라고 보는게 맞겠다는 생각도 합니다.) 1. [파이썬] - 심플하게 구성된 블록체인 기술 linked li..
2018.07.05 -
Java(Android), Objective-C, Swift(iOS), Python 문법비교
Java(Android), Objective-C, Swift(iOS), Python 문법비교 구분 Java Objective-C Swift Python C# import import android.content.Context #import "AppDelegate.h"#import import Foundation import mathfrom math import ceil, floor using System; 콘솔출력 System.out.println("Hello World");Log.v("tag", "Hello World"); printf(@"Hello World");NSLog(@"Hello World");print("Hello World") Swift.print("Hello World") print("H..
2018.05.18 -
GitHub large 파일로 푸시가 안될때
100mb 등의 큰 파일로 인해 로컬 커밋은 되나 리모트 저장소로 푸시가 안되는 경우는 다음 2가지 정도의 방법으로 해결이 가능하다. 1. 용량이 큰파일을 커밋 캐시에서 삭제하여 커밋을 하지않도록 클린(?)하게 만들고 푸시한다. 2. 애초에 큰 파일을 .gitignore 파일에 명시하여 처음부터 로컬에서부터 커밋하지 않는다. (2번의 경우는 .gitignore 파일에 미리 명시하여 우선적으로 이 파일만 커밋, 리모트에 푸시합니다) [ 1번 상세 ]1번의 경우 gitignore 파일조차 푸시하여 리모트로 올릴 수가 없는 상태이기 때문에 파일 제외는 캐시에서 삭제 후 푸시하는 수밖에 없다. 따라서 해당 로컬 저장소의 .git 디렉토리가 있는 최상위로 이동하여 다음 명령어로 캐시를 클린한다 $ git filt..
2018.05.04