전체 카테고리

· Backend/Java
Cf. Concurrent Software란? 동시에 여러 작업을 할 수 있는 소프트웨어를 의미합니다. Ex) 웹 브라우저로 유튜브를 보면서 키보드로 문서에 타이핑을 할 수 있는 SW Ex) 녹화를 하면서 코딩을 하고 워드에 적어둔 문서를 보거나 수정할 수 있는 SW Java에서 제공하는 Concurrent Programming 멀티 프로세싱과 멀티 스레딩으로 나뉩니다. Multi-Processing(ProcessBuilder) Multi-Thread Java Multi-Thread Programming Thread 상속 또는 Runnable 구현(Runnable이 함수형 인터페이스로 변경되었기 때문에 Lambda로 작성 가능합니다.) public class App { public static void ..
· Backend/Java
Cf. 기존에 Java에서 시간과 관련해 제공하던 API Date, GregorianCalendar, SimpleDateFormat 등이 있습니다. Date는 mutable한 특성(인스턴스 내부의 값 변경 가능)때문에 thread-safe하지 못하다는 단점이 있습니다. - 동시성 문제를 명확히 해결하지 않으면 중간에 값이 변경될 가능성이 있습니다. 또한 Date가 time까지 다루는 등 클래스명과 실제 처리하는 데이터가 다른 경우가 있습니다. 이 뿐만 아니라 타입 안정성이 없어 버그가 발생할 여지가 많습니다. 예를 들어, GregorianCalender를 통해 Calendar 인스턴스를 만들 때 '월'은 0부터 시작하는 것을 감안하여 입력해야 합니다. 이러한 특성을 두고 타입안정성이 없다고 합니다. 위와..
· Backend/Java
Optional이란? Optional은 오직 하나의 값을 가지고 있을 수도 없을 수도 있는 컨테이너라고 할 수 있습니다. Java 8 이전에는 제대로 된 값을 리턴할 수 없을 때 할 수 있는 방법은 두 가지 밖에 없었습니다. 단순히 null을 반환하거나 Exception를 반환하는 것이 전부였습니다. 이 때 null을 반환하는 경우에는 이를 참조하는 코드에서 또 다시 그 값이 null일 수도 있음에 유의해야 한다는 점에서 좋은 코드가 아니며, 에러(Exception)을 발생시키는 방법은 Stack Track을 출력하는 데에 새로운 리소스가 쓰여야 하므로 이 또한 좋은 방법은 아닙니다. Java 8부터는 Optional을 사용해 참조하는 코드에게 명시적으로 빈 값일 수 있음을 알려주고, 빈 값의 경우에 대..
Cell의 edittype은 기본적으로 text이다. 이 경우에는 Cell edit 시에 가 생성된다. 나는 이 부분을 number타입의 input으로 사용하고 싶었는데, formatter를 integer로 주는 방식은 값이 '4'일 경우에도 '4.00' 형태로 보이게끔 했다. 나는 일반적인 'number' 타입의 input처럼 정수로 표현할 수 있되, 증가/감소 버튼이 있는 ui를 원했기 때문에 custom 타입으로 대체를 하게 되면서 찾아보게 된 부분이다. 아래 코드는 JqGrid에서 제공하는 API Document에서 발췌한 내용이다. edittype: 'custom'을 사용할 경우에는 editoptions로 custom_elem과 custom_value를 key로 하는 객체를 전달해주어야 한다. ..
· Docker
Ubuntu에 설치하기 참조 도커 설치 방법에는 총 세가지 방법이 있다. 1. Repository를 이용한 설치, 2. 파일 다운로드 후 직접 설치, 3. Script를 이용한 간단한 설치. 이 중에서 강의는 Repository를 이용한 설치로 이루어진다. 가장 먼저 해야할 일은 docker package repository를 설치하고 여기에서 도커 파일을 받는 것이다. 미리 요구하는 파일 설치하기 $ sudo apt-get update $ sudo apt-get install \\ ca-certificates \\ curl \\ gnupg \\ lsb-release Docker의 인증서(GPG key) 저장 $ sudo mkdir -p /etc/apt/keyrings $ curl -fsSL | sudo..
최근 코드 변경 사항이 없는데도 불구하고 하루아침에 Element를 드래그하면 화면이 하얗게 변하는 문제가 발생했다. 이럴 때 다른 요소(위치를 유추하여 드래그해야 한다..)를 또 다시 드래그하거나, 화면 배율을 늘리거나 줄이는 등의 변화를 주면 다시 화면이 돌아오긴 한다만 여간 불편한 일이 아니었다. 아무래도 코드 상의 문제라기 보다는 일부 라이브러리가 브라우저의 최신 버전을 호환하지 않아 그러한 문제가 생긴 것이 아닌가 하고 생각했는데, 아직까지도 정확한 원인은 밝히지 못했다. 다만, 스택오버플로우에서 나와 유사한 사례를 찾았고, 무슨 관련이 있나 싶은 방법이지만 이를 해결하는 방법 또한 찾았다. 브라우저의 문제는 맞았다..! 해결 방법 해결 방법은 간단하다. 다만, 이것이 무슨 관련이 있는지는 모르..
· Docker
CentOS 다운로드(ISO) 아래 주소에서 다운로드 받을 수 있다. https://www.centos.org/download/ CentOS 7을 다운받으려 하면 아래와 같이 ISO 이미지 타입의 OS를 다운받을 수 있는 미러서버들이 제공된다. 아무데서나 받아도 된다. 위의 미러 서버들중 하나를 선택해 들어가게 되면 아래와 같이 다운로드 가능한 파일 목록이 나온다. 나는 CentOS 7 64비트 파일(CentOS-7-x86_64-DVD-2009.iso)을 다운로드 받도록 하겠다. Cf. CentOS 설치시에 이루어지는 설정들 DATE & TIME(시간대는 우리나라가 속한 시간대를 선택한다.) KEYBOARD(영어 그대로) SOFTWARE SELECTION : 설치되는 방식을 선택할 수 있다. 참고로 Mi..
· Linux
apt-get update 사용 가능한 패키지들 + 버전 목록을 업데이트하는 명령어. 내가 사용할 수 있는 패키지 목록을 갱신하는 역할을 한다. 실제로 내 패키지들을 업데이트하는 것이 아니다. apt-get upgrade 현재 사용될 수 있는 패키지들과 그 버전으로 내 우분투의 패키지들을 업데이트하는 명령어. apt-get update 후에 사용하면 최신 버전으로 업데이트 가능하다.
· Backend/Java
람다식 특징 메서드에 인자로 전달하거나 그 자체로 리턴할 수 있다. 이를 다른 말로는 "함수를 first class object로 사용할 수 있다."고 한다. 람다식 조건 순수 함수(Pure function)여야 한다. - 함수 밖의 값을 변경하지 못한다. 고차 함수(Higher-Order function)여야 한다. - 함수가 함수를 매개변수로 받을 수 있고 함수를 리턴할 수도 있다. 인터페이스 Function의 메서드들과 관련(`compose()`, `andThen()` 등) Cf.함수 안에서 함수 밖의 Final이 아닌 변수를 참조하여 값을 변경하는 경우에는 순수 함수라고 볼 수 없다. Java가 기본적으로 제공하는 함수형 인터페이스 🌂 Function 하나의 매개변수를 가진다. R apply(T ..
· Docker
Docker 설치에 앞서 나는 BareMetal PC가 아닌 Virtual Machine에 도커를 설치하기 위해서 VM을 생성하는 것을 우선적으로 할 것이다. 이 글은 Virtual Box를 설치하고 가상 머신(VM)을 생성하는 작업을 하는 과정에 포커스를 둔 포스팅이다. Virtual Box 설치 하이퍼바이저(Hypervisor) 하이퍼바이저(Hypervisor)는 가상 머신(Virtual Machine)을 만들고 실행할 수 있게 해주는 소프트웨어를 의미한다. 대표적인 하이퍼바이저에는 Virtual Box 외에도 VM Ware, Parallels 등이 있지만, 나는 무료로 사용할 수 있는 Virtual Box(Oracle사)를 사용할 예정이다. 사용하기에 앞서 Virtual Box를 설치하기 위해서는 ..
devYH
'분류 전체보기' 카테고리의 글 목록 (6 Page)