전체 글(37)
-
JS 람다식 사용 시 주의할 점
일반적으로 JavaScript( 이하 JS ) 에서 this를 사용할 경우 일반 함수는 자기 자신을 의미하지만 람다식에서는 선언 당시의 this의 값을 고정시켜버린다. 아래 예제를 통해 쉽게 이해해 보자. param = 'global param'; function printParam(){ console.log(this.param); } let object = { param: 'object param', func: printParam } let object2 = { param: 'object2 param', func: printParam } object.func(); object2.func(); /* object.func() 실행 결과 : object param object2.func() 실행 결과 : o..
2022.12.01 -
CI/CD 란?
개발자라면 한번 쯤은 들어봤을 것이라고 생각한다. DevOps 엔지니어의 핵심 업무인 만큼 인터뷰에서도 거의 빼먹지 않고 나오기 때문에 잘 이해하고 넘어가도록 하자 서비스를 오픈하거나 뭔가 핵심 기능을 운영 서버에 배포할 때 다들 한번쯤은 기도를 해본적이 있을 것이다. 항상 기도가 통한다면 좋겠지만 열명 사람 속은 알아도 프로그램 속은 모른다고(응?) 종종 문제가 생기곤 한다. 예를 들어 어떤 프로젝트를 배포했는데 갑자기 로그인이 안된다고 생각해보자. 개발자들은 난리가 날 것이고 모든 개발자가 붙어서 이 문제를 해결하려고 할 것이다. 급한 프로젝트일수록 더욱 빠르게 문제를 수정해야만 한다. 하지만 문제점을 찾아서 수정을 했다고 해서 끝이 아니다. 수정을 했으면 다시 컴파일, 빌드, 배포하는 과정을 통해 ..
2022.11.22 -
젠킨스란?
"나이틀리 빌드(Nightly Build)를 망가뜨리지 말라!" 이 말은 젠킨스가 나오기 전까지 매일 아침 테스터들을 위해 새로 빌드된 일일 제품 버전을 게시하는 소프트웨어 개발 조직의 기본 규칙이었다. 나이틀리 빌드를 망가뜨리지 않기 위해 개발자가 할 수 있는 최선의 작업은 코드를 커밋(Commit)하기 전에 로컬에서 조심스럽고 성공적으로 빌드해 테스트하는 것이었다. 단, 다른 모든 사람들의 일일 커밋 없이 혼자서 누군의 변경사항을 테스트한다는 전제로,, 이를 해결하기 위해 코스케 가와구치 라는 개발자가 지금의 젠킨스의 초기 버전인 허드슨이라는 오픈소스를 개발하였다. HTML 삽입 미리보기할 수 없는 소스 젠킨스(Jenkins)는 거의 모든 언어의 조합과 소스코드 리포지토리(Repository)에 대한..
2022.11.22 -
abstract 키워드 - 추상 메서드와 추상 클래스
추상 메서드(Abstract Method) 란 선언부는 있는데 구현부가 없는 메서드를 말한다. 그리고 이 추상 메서드를 하나라도 가지고 있으면 반드시 추상 클래스(Abstarct Class)로 선언해야한다. 먼저 예제 코드를 쭉 읽어보자. 1-2. Driver Class package main; public class Driver { public static void main(String[] args) { Animal[] animals = new Animal[3]; animals[0] = new Cow(); animals[1] = new Mouse(); animals[2] = new Tiger(); for (int i = 0; i < animals.length; i++) { animals[i].cry()..
2022.11.18 -
자바가 확장한 객체 지향
1. abstract 키워드 - 추상 메서드와 추상 클래스 2. 생성자 3. 클래스 생성 시의 실행 블록, static 블록 4. final 키워드 5. instanceof 연산자 6. package 키워드 7. interface 키워드와 implements 키워드 8. this 키워드 9. super 키워드 10. 정리
2022.11.15 -
캡슐화: 정보 은닉
자바에서 정보 은닉이라고 하면 접근 제어자인 private, [default], proteced, public 과 접근자 및 설정자 메서드도 생각날 것이다. 접근 제어자가 객체 멤버( 인스턴스 멤버 ) 와 쓰일 때와 정적 멤버( 클래스 멤버 )와 함께 쓰일 때를 비교해서 살펴보자. 객체 멤버의 접근 제어자 ClassA가 정적 속성인 priSt, defSt, proSt, pubSt를 가지고 있다고 가정해보고 아래표를 작성해 보자. package main01; public class ClassA { private static String priSt; static String defSt; protected static String proSt; public static String pubSt; void runS..
2022.11.15