본문 바로가기

Programming Language

(8)
[Python] Python 여러 버전 설치해서 사용하기 (Windows, Ubuntu) 파이썬을 개발하다보면 특정 프로젝트에서는 특정한 Python 버전으로 사용을 해야되서 한 OS에서 여러가지 Python 버전을 설치해야 하는 경우가 생긴다. 개발 환경이 Windows 또는 Ubuntu linux에서 진행이 되므로 각 OS에서 어떻게 여러 버전의 Python을 설치하고 지정할 수 있는지 확인해본다. Ubuntu 현재 설치된 Ubuntu에서 apt-get으로 install 가능한 패키지들은 아래 명령으로 확인할 수 있다 root@DESKTOP-GH94F8C:/etc/alternatives# sudo apt list | grep python3. WARNING: apt does not have a stable CLI interface. Use with caution in scripts. ast..
[Java] ThreadLocal에 대해서.... 그리고 주의점 ThreadLocal은 Java에서 각 쓰레드별로 독립적으로 변수를 관리하기 위한 객체 이다. Java의 쓰레드 class 정의를 보면 아래와 같이 쓰레드 별로 ThreadLocals 변수를 가지고 있는것을 볼 수 있다. java.lang.Thread public class Thread implements Runnable { /* Make sure registerNatives is the first thing does. */ private static native void registerNatives(); static { registerNatives(); } ... /* ThreadLocal values pertaining to this thread. This map is maintained * by t..
[Python] python 개발환경 구축하기 (windows) 아래 파이썬 공식 다운로드 페이지로 접속한다. https://www.python.org/downloads 접속 후 다운로드 버튼을 눌러서 설치파일을 다운로드 받고 실행한다. (특정 버전을 선택하고 싶으면 하단에 리스트에서 선택한다.) 디폴트로 설치하면 원하는 폴더에 설치되지 않고, 환경변수도 따로 잡아주어야 하니 아래 Add python.exe to Path를 선택하고 설치 Path 설정을 위해 Customize installation을 선택한다. 계속 진행 후 설치 location 설정 부분에서 browse로 원하는 디렉토리를 지정한다. 계속 next로 진행후 설치 완료 후 정상 설치되었는지 아래와 같이 확인해본다. - windows power shell 또는 cmd 실행 후 pip list를 실행해본..
Java group key class로 stream groupingBy 사용하기 백엔드를 개발할때 DB 에서 GroupBy 를 할때가 있는데 간단한 GroupBy연산의 경우 Java 단에서 하면 DB부담을 줄여주고 효율적인 개발을 할 수 있다. java단에서 간단한 로직으로 grouping 을 할수 있으나 key가 여럿일 경우에는 다중 loop가 발생하게 된다. java 1.8의 stream + groupingBy기능을 활용하면 좀더 편하게 할수 있고 GroupingKey를 나타내는 class를 하나 사용하면 좀더 간결하게 groupingBy를 수행할 수 있다. Student 클래스 import lombok.Builder; import lombok.Getter; import lombok.Setter; @Builder @Getter @Setter public class Student ..
[Javascript] ES6 템플릿 문자열 ES6에서는 템플릿 문자열을 문자열 연결 대신 사용할 수 있다. 그러면 문자열 중간에 변수를 삽입할 수도 있다. 전통적인 문자열 연결은 더하기 (+)로 문자열과 변수를 서로 이어붙이는 방식을 사용한다. getTitleOldVersion() { return this.lastName + ", " + this.firstName + " " + this.middleName; }, 템플릿에서는 ${ } 를 사용해 문자열 안에 변수를 집어넣을 수 있기 때문에 문자열을 단 하나만 사용해도 된다. getTitleEs6() { return `${this.lastName}, ${this.firstName} ${this.middleName}`; }, 템플릿 문자열에서는 공백 뿐아니라 개행문제 등도 유지시킨다. 따라서 아래와 ..
[Javascript] axios로 rest api 호출시 cookie 값 전달 안되는문제 해결 Vue나 react로 frontend를 개발하고 spring으로 backend를 개발할 경우 보통은 frontend server와 backend server의 origin이 달라지게 된다. 즉 frontend 주소는 localhost:3000 backend의 주소는 localhost:8080 이런 식이다. backend side에서 CORS 설정을 해줌으로서 origin이 달라지는 경우에 교차 접근 허용을 설정하여 동작을 진행하게 된다. 하지만 origin이 달라지는 경우 분명 browser에서는 cookie값이 확인이 되는데 backend에서 api 호출을 잡아보면 request객체에 cookie값이 안실려오는 경우가 있다. 이럴 경우에는 axios 호출시 config에 withCredentials :..
[Java] 제네릭(Generic) 분석 T extends 클래스 상속을 이용해서 T의 자료형을 제한함 클래스 선언시 사용하며 인스턴스 생성시 특정 클래스를 상속받은 클래스형만 인스턴스 내부에서 사용할 수 있도록 함 특정 인터페이스를 구현한 클래스만 사용하려는 경우에도 사용 가능 public interface Behavior { void displayName(); } public class Car implements Behavior{ @Override public void displayName() { System.out.println("This is a car."); } } public class Bus implements Behavior{ @Override public void displayName() { System.out.println("..
[Javascript] jquery 비동기 처리 (promise, $.when.apply) UI 단을 jquery로 개발할때 여러 rest api를 사용해서 데이터를 조합하고 화면을 그리는 일을 많이 하게 된다. 그러나 ajax로 비동기 api 호출 시 api 종료 시점을 판단하고 그때 무언가 하고 싶을때는 어떨게 하면 될까? 아래와 같이 rest api를 호출하는 함수가 하나 있다고 하자 function testCall(url) { $.ajax({ type : "GET" ,url : url ,async : true ,dataType: null ,beforeSend: function (xhr) { } ,success : function(response) { console.log(response); } ,error : function(jqXHR, error) { } }); } function c..