내가 까먹을까봐 만든 블로그

전체 글

Computer Science/Software Engineering

오버로딩(Overloading)과 오버라이딩(Overriding)

오버로딩과 오버라이딩은 이름이 비슷해 자주 헷갈리는 개념이다. 간단하게 말하면 오버로딩(Overloading)은 같은 이름의 메소드 여러개를 가지면서 매개변수의 유형과 개수가 달라도 되도록 하는 기술이고, 오버라이딩(Overriding)은 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의해서 사용하는 것을 뜻한다. 오버로딩(Overloading) 우선 오버로딩(Overloading)은 같은 메소드라도 매개변수만 다르면 얼마든지 정의하고 사용할 수 있다. 하지만 너무 많은 오버로드 함수를 가지고 있는 것은 혼란을 야기할 수 있으므로 과도하게 사용하는 것은 좋지 않다. 오버로딩의 특징은 아래와 같다. 메소드 이름이 같아야 함 리턴형이 같아도 되고 달라도 됨 파라미터 개수가 달라야 함 파라미터 개수가 ..

Computer Science/Software Engineering

Over-fetching과 Under-fetching 그리고 REST와 GraphQL

주요 개념 Over-fetching Under-fetching REST-API GraphQL Over-fetching과 Under-fetching은 REST-API의 단점들 중 하나이다. 이 단점은 GraphQL을 사용해 극복할 수 있다. 간단하게 Over-fetching은 API를 호출 시 필요보다 많은 데이터(사용하지 않을)를 가져오는 것이다. 예를 들어 대기 오염 물질 중 미세먼지 데이터만 필요한데 온도, 습도, VOC, NO2 등의 다른 데이터까지 한 번에 받아오게 되는 경우가 있다. 그러므로 서버와 네트워크도 불필요한 자원이 추가되게 되고, 클라이언트도 필요없는 데이터를 수신해 자원을 낭비하게 될 수 있다. Under-fetching은 한 번의 통신으로 필요한 양의 데이터를 가져오지 못한다라는 ..

Computer Science/Software Engineering

[QA 전략] 블랙 박스(Black Box), 화이트 박스(White Box) 테스트 차이점

주요 개념 블랙박스 테스트(Black Box Testing) 화이트박스 테스트(White Box Testing) 소프트웨어 테스트 방식은 크게 두 가지로 나눌 수 있는데 바로 블랙박스 테스트(Black Box Testing)와 화이트박스 테스트(White Box Testing)이다. 블랙박스 테스트는 내부 구조/디자인/요소들 구현에 관한 내용들을 테스터에게 알리지 않고 테스트하는 방식이다. 화이트박스 테스트 또한 내부 구조/디자인/요소들 구현에 대한 테스트를 진행하지만 테스터에게 해당 내용들을 숙지시켜준 후 진행하는 테스트이다. 쉽게 말해 게임을 직접 플레이하며 게임상으로 드러난 결과물을 검사하는 것이 블랙박스 테스트이고, 게임 소프트웨어 내부의 프로그래밍 언어를 실행 단계에 맞게 추적하며 오류를 검사하..

Languages/Dart(Flutter)

[Flutter] Navigator.of(context).pop vs Navigator.pop(context)

스크린 이동 후 뒤로가기를 수행할 때 또는 Drawer와 Dialog등이 클릭 후 자동으로 숨겨지기 원할 때 pop을 사용한다. 이 때 Navigator.of(context).pop()과 Navigator.pop(context)를 사용하는 두 가지 방식이 있어 차이를 짚고 넘어가려 한다. 사실 두 함수 기능에 큰 차이는 없으며 Navigator.pop(context)이 내부적으로 Navigator.of(context).pop()을 호출하는 구조이다. Navigator.of(context).pop()을 사용하면 가장 타이트하게 떨어져있는 context를 불러올 수 있다. 그러므로 특정 예외상황을 제외하고는 범용적으로 사용될 수 있는 Navigator.pop(context)를 쓰는 것이 낫다. 이 예외 상황..

Languages/Dart(Flutter)

[Flutter] 화면 가로 너비(width)와 세로 높이(height) 알아내기(MaterialApp, Getx)

Flutter 앱 개발할 때 padding 또는 width, height 등을 고정으로 잡아놓으면 결국 다른 해상도의 디바이스에서 실행할 때 화면이 다 깨져버린다. 프로토타입 만들 때는 고정으로 해도 되지만 실제로 배포하기 전에 각기 다른 해상도에서도 문제가 생기지 않도록 비율로 지정해놓는 것이 정신건강에 이롭다. MaterialApp 내부에서 해당 screen의 높이와 너비는 MediaQuery를 이용해 알아낼 수 있다. double width = MediaQuery.of(context).size.width double height = MediaQuery.of(context).size.height import 'package:flutter/material.dart'; void main() { runAp..

Computer Science/Software Engineering

OOM(Out Of Memory)

OOM(Out Of Memory)이란 사용자에게 보이는 앱의 비정상 종료는 대부분 예외 발생에 따른 Crash가 그 원인이지만, 기타 주요 원인으로는 Out Of Memory(OOM)를 들 수 있다. 애플리케이션이 대량의 메모리를 이용하여 시스템 메모리가 부족해지면, OS에 따라 해당 앱은 강제로 종료된다. 일반적으로 사용자에게 보이지 않는(백그라운드 또는 작동하지 않는) 앱이 우선 종료되지만, 앱이 표시되고 있는 상태에서도 대량의 메모리를 소모하여 시스템 메모리가 부족해지면 OS에 의해 강제로 종료된다. OOM에 의해 앱이 종료되는 경우, 앱 프로세스 내부에서 이벤트를 취득할 수 없으며, 앱 프로세스 외부에서 강제로 종료되기 때문에 정확하게 OOM을 검출할 수 없다. 또한, 앱이 표시된 상태에서 프로세..

AlienCoder
외부 저장소
loading