목록소소한 개발 지식 (7)
공부한 것 꼭꼭 씹어먹기
웹앱 프로그램은 개발환경이 준비되고 개발 언어를 알면 개발 할 수 있습니다. 비즈니스 로직을 정확히 이해한 상태라면 기능 자체를 개발하는 것은 전체 소프트웨어 개발 과정 중 가장 쉬운 일이라고 할 수 있습니다. 문제는 개발한 프로그램의 기능이 제대로 작동하는지, 최적화가 잘되어서 만족할 만한 성능을 가지고 있는지, 보안에 취약하지는 않은지, 안정적인 운영이 가능한지, 그리고 추후 확장성이 충분한지 등등 검증해야 할 것들이 매우 많다는 것입니다. 이런 검증을 웹앱 프로그램 테스트를 통해 할 수 있습니다. 예전에는 개발이 완료된 후 출시 전에 테스트를 했지만, 요즘은 개발 단계별로 그에 맞는 테스팅 전략을 이용합니다. 마치 공장에서 공정이 하나하나 흘러갈 때마다 품질 테스트를 거쳐서 다음 단계로 나가는 것처..
앱이나 웹 등의 소프트웨어를 개발할 때 사용하는 모니터링 도구를 알아보겠습니다. 모니터링 도구는 프로그램을 다 만든 후에도 사용할 수 있겠지만 테스트 과정에서도 사용할 수 있습니다. 만약 결함이 발생했을때 어디서 그 결함이 발생하였고 원인은 무엇인지 편리하게 찾아볼 수 있기 때문입니다. Application(프로그램) Monitoring 애플리케이션을 모니터링 하는 도구는 APM(Application Performance Monitoring)이라고 합니다. 요청을 처리하는 과정에서 어떤 method를 사용하였는지, 각 method에서 처리에 소요된 시간과 CPU 처리 시간등을 계산해 주고, 1초당 몇 건의 요청을 처리하는지도 계산해 줍니다. 코드 레벨에서의 프로그램 러닝 과정을 모니터링 해준다고 볼 수 ..
요즘은 새로 시작해보는 툴이 갑자기 많아졌습니다. 저는 갑자기 airflow도 다뤄야만 합니다. airflow는 무엇일까요? 에어플로우는 workflow management tool 입니다. 업무흐름을 관리하는 도구라는 뜻이죠. 아래 설명처럼 에어플로우는 프로그래밍 방식으로 워크플로우를 작성하고 스케줄링(예약)하고 관리(모니터링)하는 오픈 소스입니다. Apache Airflow is an open source platform to programmatically author, schedule, and monitor workflows. 간단히 말해서, 코드로 업무를 자동화할 수 있는 툴입니다. 주로 데이터 분야에서 많이 쓰이는 데요, 예를 들면 매일 경쟁사 데이터를 우리 회사의 데이터베이스에 넣어야 한다면?..
파이썬 판다스로 csv파일 읽기 최근에 갑자기 파이썬을 쓸 일이 생겼습니다. pandas라는 파이썬 라이브러리도 함께 말이죠. Python용 pandas 라이브러리는 데이터 형식 지정, 탐색적 데이터 분석 수행, 모델링 및 기계 학습에 사용할 데이터 준비에 매우 유용합니다. 그래서 빅데이터 분석 작업에 가장 많이 쓰이는 라이브러리가 pandas입니다. 빅데이터의 소스 데이터로 많이 쓰이는 csv파일은 가장 일반적인 파일 형식 중 하나로 엑셀 스프레드 시트와 같은데요. 쉼표로 구분된 값을 저장하는 csv파일은 데이터 유형과 같은 것에 대해 걱정할 필요 없이 기본적으로 .csv 파일로 작업할 수 있도록 합니다. Python에서 이러한 csv 파일을 사용하기 위해 pandas 라이브러리는 pd.read_csv..
오버라이드는 무엇인가 오버라이드(override)란, 서브 클래스로 슈퍼 클래스의 메소드를 우선시키는 것으로 폴리모피즘을 가능하게 합니다. 폴리모피즘은 같은 이름의 메소드에 대해 다른 처리를 하는 것입니다 . 순서를 따라 설명해보겠습니다. 우선, 서브 클래스를 슈퍼 클래스의 참조로 취급하는 메리트를 String 클래스의 equals 메소드를 사용해볼게요. 그 전에 instanceof 연산자에 대해 간단히 소개해 둡니다. 이 연산자는 인스턴스의 클래스를 검사할 때 유효한 연산자입니다. 사용 예입니다. String s = "Hello"; System.out.println(s instanceof String); 출력 결과는 true로 표시됩니다. 그런 다음 String 클래스의 equals 메소드를 읽어 봅시..
JAVA의 클래스 상속에 대해 정리해 보겠습니다. 상속을 사용하면 다른 클래스를 일정한 그룹으로 취급할 수 있게 됩니다. 차량을 예로 들자면 택시나 버스, 여객선 등 다양한 차량이 있습니다. 이것들은 각각 다른 클래스라고 생각할 수 있습니다만, 크게 탈 것이라고 하는 하나의 카테고리로 분류할 수 있군요. 그러면 같은 성질이나 동작을 가지고 있다고 말할 수 있습니다. 그 놀이기구를 같은 그룹으로 취급할 수 있는 것이 계승입니다. 상속은 매우 성공적인 메커니즘입니다. 단, 초보자에게는 조금 직관적으로 알기 어려운 곳이 있습니다. 수속 지향의 프로그램에서는 소스 코드를 대충 읽으면 어떤 처리를 하고 있는지가 일목요연입니다만, 객체 지향에서는 자신의 클래스가 가지고 있지 않을 것인 멤버를 사용할 수 있거나 하는..
의존하는 프로그램은 위험합니다. 프로그램은 독립할수록 좋다고합니다. 하지만 왜 프로그램이 독립적이면 좋을까요? 그래서 A, B, C의 3개의 프로그램이 독립되어 있지 않고, 각각 의존하고 있는 상태를 생각해 봅시다. A, B, C 각각이 서로 결합하고 의존하는 상태입니다. 이 경우 A 프로그램에 추가하거나 수정한 경우 B에 영향이 없는지 확인해야 합니다. 또한 A 프로그램을 변경하여 B를 수정해야 할 경우 B를 변경하면 C에 영향을 줄 수 있습니다. 그리고 B를 변경하여 C에 영향을 주는 경우에는 C를 변경하여 A에 영향이 없는지 확인해야 합니다. 그러면 언제까지 지나도 프로그램 변경이 끝나지 않는 무한 루프 에 들어갈 가능성이 있습니다. 게다가 A, B, C의 어느 프로그램을 변경해도, 각각에 주는 영..