'Programming'에 해당하는 글 384건

 

NVM(Node Version Manager) : 노드 버전 관리 툴

 

개발하다 보면 node.js 의 다양한 버전을 필요로 할 때가 있다. 이 때 nvm 을 사용하면 특정 버전의 node 설치 및 활성화를 쉽게 할 수 있다. 사이트에서 다운받아 설치하고 IDE 에서 설치하는 등 다양한 방법으로 node 버전을 관리하다가 빡치지 말고 처음부터 nvm 으로 관리하시길.

 

다운로드 / 설치 https://github.com/coreybutler/nvm-windows/releases

 

Releases · coreybutler/nvm-windows

A node.js version management utility for Windows. Ironically written in Go. - coreybutler/nvm-windows

github.com

 

> nvm list available

|   CURRENT    |     LTS      |  OLD STABLE  | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
|    16.6.2    |   14.17.5    |   0.12.18    |   0.11.16    |
|    16.6.1    |   14.17.4    |   0.12.17    |   0.11.15    |
|    16.6.0    |   14.17.3    |   0.12.16    |   0.11.14    |
|    16.5.0    |   14.17.2    |   0.12.15    |   0.11.13    |
|    16.4.2    |   14.17.1    |   0.12.14    |   0.11.12    |
|    16.4.1    |   14.17.0    |   0.12.13    |   0.11.11    |
|    16.4.0    |   14.16.1    |   0.12.12    |   0.11.10    |
|    16.3.0    |   14.16.0    |   0.12.11    |    0.11.9    |
|    16.2.0    |   14.15.5    |   0.12.10    |    0.11.8    |
|    16.1.0    |   14.15.4    |    0.12.9    |    0.11.7    |
|    16.0.0    |   14.15.3    |    0.12.8    |    0.11.6    |
|   15.14.0    |   14.15.2    |    0.12.7    |    0.11.5    |
|   15.13.0    |   14.15.1    |    0.12.6    |    0.11.4    |
|   15.12.0    |   14.15.0    |    0.12.5    |    0.11.3    |
|   15.11.0    |   12.22.5    |    0.12.4    |    0.11.2    |
|   15.10.0    |   12.22.4    |    0.12.3    |    0.11.1    |
|    15.9.0    |   12.22.3    |    0.12.2    |    0.11.0    |
|    15.8.0    |   12.22.2    |    0.12.1    |    0.9.12    |
|    15.7.0    |   12.22.1    |    0.12.0    |    0.9.11    |
|    15.6.0    |   12.22.0    |   0.10.48    |    0.9.10    |

This is a partial list. For a complete list, visit https://nodejs.org/download/release

> nvm install 14.17.5
Downloading node.js version 14.17.5 (64-bit)...
Complete
Creating C:\Users\hongs\AppData\Roaming\nvm\temp

Downloading npm version 6.14.14... Complete
Installing npm v6.14.14...

Installation complete. If you want to use this version, type

nvm use 14.17.5

> nvm use 14.17.5
Now using node v14.17.5 (64-bit)

> nvm ls

  * 14.17.5 (Currently using 64-bit executable)
    12.22.5

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

 

Vue.js 란 무엇인가?

 

프론트엔드 개발자가 익혀야 하는 범주에 들어가는 SPA(Single-page application) 프레임워크 중 하나이다. SPA 는 프레임워크만의 기술로 렌더링하여 한번에 웹페이지 전체를 로드하는 방식으로, 이미 웹프론트 개발에 자리 잡은지 오래다. 이런 멋진 SPA 사이트를 만들기 위해서는 VueJS 나 ReactJS, AngularJS 중 하나를 학습하면 된다.

 

 

Vue.js 를 사용하는 이유?

 

Vue 는 Angular 나 React 에 비해 코드가 간결하고 자바스크립트를 덜 몰라도 개발하는데 문제가 없다고는 하는데... 그리고 HTML 렌더링하는 시간이 아주 쬐끔 더 빠르다고 한다. 개인적으로는 프론트 개발자는 아니지만 잠시 해야할 필요가 있다면 Vue, 프론트 개발자이면서 전문성을 높여야 한다면 React 를 배우는 것이 낫지않나 싶다.

 

 

Vue 사용법

 

스크립트로 vue.js 를 불러오고, js 에서 Vue 인스턴스를 이용하여 DOM 의 데이터를 렌더링하는 가벼운 예제이다.

 

<script src="https://unpkg.com/vue@next"></script>

<div id="counter">
  Counter: {{ counter }}
</div>

<script>
const Counter = {
  data() {
    return {
      counter: 0
    }
  }
}

Vue.createApp(Counter).mount('#counter')
</script>

 

 

Vue 개발 환경

 

아마도 프레임워크를 저런식(?)으로 호출해서 사용할 일은 없을 것이고, VS code 나 WebStorm 정도의 IDE 를 사용해서 효율적으로 Vue 를 시작하게 될 것이다. 또한 npm 이나 yarn 같은 자바스크립트 패키지 관리 툴도 필요하다.


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

 

그 동안의 무심함에 미안함을 조금 가지며 JAVA 근황을 좀 살펴 보았다. 보아하니 발전을 많이 했다기 보다 버전만 열심히들 올렸네. 8인가 열심히 쓰고 있었는데 16이라니... 앞으로 신규 프로젝트들은 뭘루 시작해야 하나. OpenJDK 8 과 11 사이에서 어떤 것이 현명한 선택인지 모르겠다.

 

 

OpenJDK

Download and install the open-source JDK for most popular Linux distributions. Oracle's free, GPL-licensed, production-ready OpenJDK JDK 16 binaries are at jdk.java.net/16; Oracle's commercially-licensed JDK 16 binaries for Linux, macOS, and Windows, bas

openjdk.java.net

 

AdoptOpenJDK

AdoptOpenJDK provides prebuilt OpenJDK binaries from a fully open source set of build scripts and infrastructure. Supported platforms include Linux, macOS, Windows, ARM, Solaris, and AIX.

adoptopenjdk.net

 

Java 버전 별 변경점들을 정리해 봤다.


Java SE 17 LTS (2021.09)

  • Java 8, 11 을 잇는 세번째 LTS 버전(3년마다 배포)
  • 애플릿 완전 제거

 

Java SE 16 (2021.03)

  • OpenJDK 버전관리가 Mercurial 에서 Git 으로 변경.
  • jpackage 명령어로 자바 프로그램 손쉽게 배포(pkg, deb, msi 등)
  • 패턴 매칭 정식 지원
  • Record 형식 정식 지원

 

Java SE 15 (2020.09)

  • EdDSA 암호화 알고리즘 추가
  • 다중 텍스트 블록 (""")

 

Java SE 14 (2020.03)

  • instanceof 패턴 매칭
  • record (data object) 선언 기능 추가

 

Java SE 13 (2019.06)

  • switch 문에 yield 예약어 추가

 

Java SE 12 (2019.03)

  • Switch 문의 확장 : case MONDAY, FRIDAY, SUNDAY -> System.out.println(6); 

 

Java SE 11 LTS (2018.09)

  • 일반 지원은 2023년 9월, 연장 지원은 2026년 9월에 종료될 예정
  • Oracle JDK 와 Open JDK 통합 (Oracle JDK는 구독형 유료 모델로 전환)
  • 이클립스 재단으로 넘어간 Java EE가 JDK에서 삭제되고, JavaFX도 JDK에서 분리되어 별도의 모듈로 제공. 
  • 람다 파라미터에 대한 지역변수 문법 변경: (var x, var y) -> x.process(y) => (x, y) -> x.process(y)
  • HTTP 클라이언트 표준화 기능 추가 (jdk.incubator.http 패키지가 표준화되어 java.net.http 패키지로 추가)
  • 엡실론(Epsilon) 가지비 컬렉터 : 오버헤드의 최저지연과 할당 제한이 가능한 완전한 수동 가비지 컬렉터 적용

 

Java SE 10 (2018.03)

  • var 키워드를 이용한 지역변수 선언 및 타입추론 가능
  • 병렬 처리 가비지 컬렉션 도입으로 인한 성능 향상
  • JVM 힙 영역을 시스템 메모리가 아닌 다른 종류의 메모리에도 할당 가능
  • 루트 CA 목록 추가
  • JDK의 Repository가 하나로 통합
  • Deprecated된 API는 Java SE 10에서 모두 삭제

 

Java SE 9 (2017.09)

  • Jigsaw 기반 런타임 모듈화(기존 jar 방식 개선)
  • JAVA 를 인터프리터 언어 쉘처럼 사용할 수 있는 JShell 추가
  • immutable collection / HTTP/2 / private 인터페이스 메소드 / HTML5 Javadoc / 프로퍼티 파일에 UTF-8 지원
  • 1.x 버전에서 9.0 으로 판올림이 일어나며, 6개월마다 새로운 버전 업데이트

 

Java SE 8 (2014.03)

  • Oracle JDK vs Open JDK (오라클 인수 후 첫번째 버전)
  • Lambda 표현식 및 함수형 프로그래밍
  • 날짜 및 시간 API(java.time 패키지)
  • Stream API 추가
  • JavaScript 엔진 Rhino -> Nashorn
  • 32비트를 지원하는 마지막 공식 Java 버전

 

Java SE 7 (2011.07)

  • Switch 문에서 문자열 사용 가능 : case "MON"
  • generics 타입 추론(생략 가능) : Map<String, Object> map = new HashMap<>();
  • try-with-resources 자동 리소스 해제(close) : try (SomeResource resource = getResource()) { ...
  • Diamond Operator <> 지원
  • 멀티프로세서 처리 : Fork/Join Framework
  • ECC 암호화 내장
  • 이진수 표현 (2진수는 0b, 8진수는 0, 16진수는 0x로 시작)

 

Java SE 6 (2006.12)

  • J2SE 에서 Java SE 로 표기가 바뀜.
  • JDBC 4.0, Java Compiler API, Pluggable Annotation 등이 추가
  • Rhino JavaScript 엔진이 기본으로 탑재

 

Java SE 5 (2004.09)

  • generics, annotation, enum, foreach, ...

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

파이썬에서는 문자열을 표시하는 큰다옴표(") 나 따옴표(') 앞에 인코딩을 표시하는 u, b, r 등의 접두사가 붙는 것을 볼 수 있다. 기본은 u(UTF-8) 이며, 바이너리는 b(binary), 원시 문자열은 r(raw) 를 사용한다. 


파이썬 3.6 부터는 이스케이프 시퀀스(\n, \t, \\, ...) 가 아닌 백슬러시 문자셋을 사용하면 DeprecationWarning 를 표시한다. 현재는 deprecate 지만 곧 SyntaxError 가 될 것이다. 이스케이프 문자(\)를 포함하는 이스케이프 시퀀스, 경로나 정규 표현식 등을 표현할 때는 원시 문자열인 r 을 사용한다.


# Anti-pattern
regex = '\.png$'
 
# Best practice
regex = r'\.png$'
cs





WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

pip 로 특정 패키지 설치시 Visual C++ 컴파일러를 요구하는 오류 메시지가 발생할 수 있다.


error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/


하지만 링크를 따라가면... Visual C++ 14.0 에 대응하는 Visual Studio 버전이 뭔지를 알아야...ㅋㅋ 윈도우 계열 개발을 해본 적이 없어서 참 어리버리하구용... 모를 땐 최신버전이지... 하고 Visual Studio 2019 Build Tools 를 깔으려 했더니 6.4G 필요하단다... ㅡ.ㅡ 



파이썬 사이트(https://wiki.python.org/moin/WindowsCompilers)에 보면 Visual Studio 버전별 컴파일러를 잘 설명해 놨다.


Microsoft Visual C++ 14.2 standalone: Build Tools for Visual Studio 2019 (x86, x64, ARM, ARM64)

Microsoft Visual C++ 14.2 with Visual Studio 2019 (x86, x64, ARM, ARM64)

Microsoft Visual C++ 14.1 standalone: Build Tools for Visual Studio 2017 (x86, x64, ARM, ARM64)

Microsoft Visual C++ 14.1 with Visual Studio 2017 (x86, x64, ARM, ARM64)

Microsoft Visual C++ 14.0 standalone: Visual C++ Build Tools 2015 (x86, x64, ARM)

Microsoft Visual C++ 14.0 with Visual Studio 2015 (x86, x64, ARM)

Microsoft Visual C++ 10.0 standalone: Windows SDK 7.1 (x86, x64, ia64)

Microsoft Visual C++ 10.0 with Visual Studio 2010 (x86, x64, ia64)





얘도 뭐... 3G 이긴 한데...


만약 setuptools 패키지 버전이 설치 요건보다 낮다면, 호환성 향상을 위해 setuptools 를 업그레이드 해야 한다.


> pip install --upgrade setuptools
cs


Python... 다른 언어들하고 호환되는 건 너무 좋은데 뭐 이렇게 필요한게 많냐...




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,