반응형

2022/04 9

javascript 얕은복사, 깊은복사에 대한 이해

복사는 값의 전달을 목적으로 합니다. 문서를 복사하는 것처럼 컴퓨터 내에서도 파일을 복사하거나 하죠. 컴퓨터 사용 시 흔하게 파일을 복사합니다. 원본이 있을테고 복사한 파일은 원본과 똑같지만 원본은 아닙니다. 그리고 복사본을 수정한다고 해도 원본은 변하지않고 복사본만 수정되겠죠. 위와 같은 방식이 일반적인 사람들이 익숙해져 있는 사고방식입니다. 실제 생활에서의 복사본은 원본과 연결되지 않습니다. 그리고 이 방식을 깊은복사라고 이해해 두시면 되겠습니다. 얕은복사 전에 참조를 먼저 javascript만 공부하신 분이라면 대략 다음과 같이 얕은 복사를 이해 또는 암기하고 계실겁니다. 객체를 얕은복사를 하면 객체의 원소 중 원시타입이 아닌 객체에 대해 참조를 공유한다. 네 이 말은 맞습니다. 하지만 전 이렇게 ..

파이썬 클래스 getter, setter와 네임맹글링(name mangling)

getter와 setter의 사용 의미 getter/setter 클래스의 속성값에 직접 접근 막기 위함에 목적이 있습니다. 직접 접근을 막고 정해둔 메소드로만 접근하게 함으로서 메소드의 특성도 얻게되므로 값의 조작이나 값의 검증하거나 제한할 수 있습니다. 파이썬의 getter/setter의 사용법 파이썬에서 getter와 setter는 property 장식자를 사용하여 만들 수 있습니다. 앞으로 제시되는 예제는 3단계를 거쳐 문제점이 수정되어 완성되갑니다. 1단계 - 순수한 getter/setter # getset.py class GetSetTest(): def __init__(self): self.count = 1 def get_count(self): # getter return self.count d..

react-native eslint 설정

eslint란? lint는 linter라고도 하며 소스코드의 문법오류나, 버그등을 찾아주는 도구라 할 수 있습니다. 이러한 linter는 최신 개발환경에는 필수로 자리잡았습니다. 그러므로 어떤 언어든 개발을 하기 앞서 linter의 활용법을 잘 알아야 합니다. 자바스크립트에서 사용하는 linter는 ESlint입니다. 앞서 강의에서 react-native typescript 환경을 설치한 후 시작하도록 하겠습니다. $ npx react-native init TestProject --template react-native-template-typescript 위 설정만으로도 eslint가 설치됩니다. 기본 설치 (V7.32.0) 버전이 설치되는데 최신 버전의 eslint를 설치하도고 싶다면 다음과 같은 과정..

javascript setter/getter naming convention

기본적인 자바스크립트 객체의 속성에 접근은 아무런 제한없이 이루어지면 속성의 변환도 자유롭다. 이런 자유로운 접근은 간혹 잘못된 입력을하는 등의 실수를 초래한다. 어떤 객체의 속성에 넣을 값의 범위를 알거나 제한할 필요가 있다면 속성에 직접 접근은 제한하여 최대한 안전하게 속성값을 사용하도록 만드는 것이 중요한다. 이런 역할을 하는 것이 setter/getter이다. setter/getter는 대부분의 언어들이 문법적으로 지원하며 사용방법도 비슷한다. 이렇게 setter/getter를 사용하면 속성을 비교적 안전하게 사용하도록 하고 좀 더 정교한 추가적인 처리를 할 수 있다. 이 글에서는 setter/getter를 사용하는 핵심을 객체 리터럴 과 클래스 방식 두가지로 설명한다. 먼저 property를 가..

리눅스(Rocky Linux)에서 rust 설치 및 VSCode 설정

리눅스 설치지 과정이지만 윈도우 설치에 대한 내용도 같이 있습니다. 러스트의 설치는 간단하다. 공식문서 참고 $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh $ source ~/.cargo/env 설치를 마친 후 설치 확인 $ rustc --version rustc 1.60.0 (7737e0b5c 2022-04-04) 문서를 보면 일부 러스트 패키지가 C코드에 의존적이기 때문에 링커를 실행할 수 없다는 에러가 발생할 수 있다고 한다. 따라서 C컴파일 환경을 구성하는 것이 좋다. 이 부분은 windows 사용자와 linux 사용자의 구성방법이 다를 수 있다. C 개발환경 설치 windows 사용자 https://visualstudio.mi..

리눅스에서 USB가 안보일 때(인식이 안될 때).

얼마전 USB 부팅 디스크를 만들다가 USB가 시스템에서 보이지 않는 현상이 일어났다. 분명 나의 실수일 듯 한데 원인은 모르겠고 GUI 환경에서는 보이지 않았으나 다음 명령을 치면 콘솔에서는 장치가 확인이 되었다. $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 7.3T 0 disk └─pgdata_sub-pgdata_sub 253:0 0 7.3T 0 lvm sdb 8:16 1 30.2G 0 disk nvme0n1 259:0 0 953.9G 0 disk ├─nvme0n1p1 259:1 0 600M 0 part /boot/efi ├─nvme0n1p2 259:2 0 1G 0 part /boot ├─nvme0n1p3 259:3 0 15.7G 0 part..

Linux 2022.04.09

리눅스에 유니티3D 설치

**유니티 허브**라는 것을 설치하여 유니티 설치 및 프로젝트를 관리할 수 있다. 문서는 https://docs.unity3d.com/kr/2020.3/Manual/GettingStartedInstallingHub.html Unity 허브 설치 - Unity 매뉴얼 Unity Hub는 모든 Unity 프로젝트 및 설치를 관리할 수 있는 관리 툴입니다. 허브를 이용하여 여러 개의 Unity 에디터 설치와 관련 컴포넌트를 관리하고, 새 프로젝트를 생성하고, 기존 프로젝트를 열 docs.unity3d.com 에 자세히 나와 있다 유니티 허브를 실행하면 라이센스를 등록해야하므로 유니티에 가입을 해야한다. 가입 후 유니티 허브에서 로그인을 눌러 가입 또는 로그인을 할 수 있다. - 로그인을 하고 오늘쪽 위 설정(..

게임 2022.04.08

파이썬 강좌 - python abc 추상 클래스

이 강의는 python3 문법입니다. 추상클래스라는 용어는 C++의 추상클래스와 비슷하게 이해할 수 있다. 자바(java)라면 interface라 볼 수 있다. C++이나 JAVA를 몰라도 상관은 없다. 쉽게 말해 추상클래스는 메소드의 구체적인 구현이 없는 클래스를 말한다. 이런 클래스를 왜 만들까 한번 10초만 고민해보자. 추상클래스의 목적은 일종의 틀을 제공해주는 역할을 한다. 이 틀은 추상클래스를 상속하는 클래스들에게 특정 메소드의 구현을 강제하는 효과가 있다. 앞서 말한 C++의 추상클래스라면 메소드를 _순수 가상함수_라는 형식으로 정의하여 이를 상속하는 클래스들에게 순수 가상함수를 강제구현하도록 하는 지시를 하는 것이다. 자바의 경우는 interface가 같은 역할을 한다. 우선 본론에 들어가기..

Rocky linux에서 Ndivia 드라이버 및 cuda 설치

CUDA 설치는 선택사항입니다. CUDA는 GPU를 사용한 병렬처리, 예를들어 텐서플로우에서 병렬처리 사용 등이 아니라면 설치안해도 됩니다. 설치하기 EPEL 패키지 저장소 추가하기 - epel은 추가 패키지 저장소를 뜻한다. $ sudo dnf install epel-release Ndivia driver 저장소를 추가하기 $ sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo kernel devel과 header를 설치 - 그래픽 드라이버를 설치하기 위해서는 kernel devel과 header가 필요하기 때문에 설치합니다. $ sudo ..

Linux 2022.04.06
반응형