Override VS Overload
Overriding
상속에서 나온 개념
부모 클래스의 메소드를 하위 클래스에서 재정의 하는 것
Overloading
같은 이름의 메소드를 여러개 정의하는 것
매개 변수의 타입이 다르거나 갯수가 달라야 한다.
리턴 타입과 접근 제어자는 영향을 주지 않는다.
다형성
하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 말한다.
컴퓨터 관련 잡지식들을 모아둡니다.
상속에서 나온 개념
부모 클래스의 메소드를 하위 클래스에서 재정의 하는 것
같은 이름의 메소드를 여러개 정의하는 것
매개 변수의 타입이 다르거나 갯수가 달라야 한다.
리턴 타입과 접근 제어자는 영향을 주지 않는다.
하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 말한다.
노드로 이어진 자료 구조
국제표준화 기구에서 개발한 모듈.
이론적으로 네트워크의 역할을 계층별로 나눠서 설명하는 것
상위계층에서 온 데이터에 헤더와 트레일러를 씌워 캡슐화를 하는데, 헤더에는 주로 송신자와 수신자, 트레일러에는 주로 오류검출을 위한 데이터를 씌운다.
|Layer|Data|Layer|Desc|Desc2|
|7|Data|Application|Network Process to Application|사용자가 편리하게 사용할 수 있는 UI 제공|
|6|Data|Presentation|Data representation and Encryption|어플리케이션 별로 이해 가능한 포맷으로 데이터를 변환해주며, 데이터 암호화, 복호화 압축등의 기능도 제공|
|5|Data|Session|Interhost communication|양 끝단의 응용프로세스가 통신을 관리하기 위한 방법을 제공한다|
|4|Segment|Transport|End-to-End Connection and Reliability|서비스를 구분하고 데이터의 전송을 담당하는 계층. 상위계층에서 넘어온 데이터를 안전하게 전송하도록 제어기능을 제공하고, 수신한 데이터를 정확한 어플리케이션으로 전달하는 역할|
|Layer|Data|Layer|Desc|Desc2|
|3|Packet|Network|Path Determination and IP (Logical Addressing)|논리적 주소를 기반으로 데이터 전송 경로를 결정하는 계층. 통신이 가능한 물리적인 구역을 논리적으로 구분시켜 식별하게 해줌. 경로를 결정하는 역할도 있다.|
|2|Frames|Data Link|Mac and LLC (Physical addressing)|물리적으로 구성된 네트워크 환경이며, 통신 프로토콜을 지원해주는 계층|
|1|Bits|Physical|Media, Signal and Binary Transmission|데이터링크 계층에서 받는 bit열을 전기신호(0, 1)로 전송하는 역할|
우선 순위 큐(데이터들은 우선순위를 가지고 있고, 높은 우선순위가 먼저 나간다.)를 위하여 만들어진 자료구조
배열, 연결리스트, 힙을 이용하여 힙을 구현할 수 있다.
네트워크 트래필 제어
운영체제 작업 스캐줄링
한동한 세상 돌아가는 일에서 멀어진거 같다는 생각이 들었다. CS CS 뭐 이러길래 CS가 뭐냐고 물었더니
CS (Computer Science)라고 한다고 한다. 그래서 검색을 해봤더니 컴공에서 배우는 커리큘럼이라고 한다는데.. 다들 그렇게 쓰는데, 나만 모른다면 안되자나.
암튼 프로그래머스로 뭔가 검증을 받을 일이 있었는데, 현타가 왔다. 툴에대한 이질감도 좀 들었고, 검색제한과 어시스턴스의 기능이 빠진곳에서의 현실자각이라고 할까...
앞으로 열흘간 기본부터 다시 한번 다지는 시간을 가져보려고 한다.
주소 | 메모리 | |
---|---|---|
~ | 스택 영역 | 컴파일타임 - 함수 호출과 관계되는 지역변수와 매개변수가 저장. 함수의 호출시 할당. 완료시 소멸 |
힙 영역 | 런타임 - 동적 할당(malloc) | |
데이터 영역 | 전역/정적 변수, 문자열 상수 저장 | |
0 | 코드 | 실행할 프로그램 코드(어셈블리) |
스택 영역은 메모리의 높은 주소에서 낮은 주소로 할당됨.
스택영역에 저장되는 함수의 호출 정보를 스택 프레임(stack frame)이라고 함
힙 영역은 메모리의 낮은 주소에서 높은 주소로 할당됨.
사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.
스택은 지역변수를 사용하고 소멸하기 때문에, 스택과 힙이 충돌하는 오버플로우 발생 가능성
설계 문제에 대한 해답을 문서화 하기 위해 고안된 형식 방법이다. 건축학에서 부터 발전하였다.
Gof(Gang of Four)라 불리는 네명의 컴퓨터 과학 연구자들이 쓴 서적 'Design Patterns: Elements of Reusable Object-Oriented Software('재이용이 가능한 객체지향 소프트웨어의 요소')'이다.
graph LR
A(Action)-->C(Controller)
C(Controller)-->V(View)
C(Controller)-->M(Model)
M(Model)-->V(View)
Model, View, Controller로 구성되어 있다.
Controller는 1:n으로 view와 연결됨
Controller는 View를 선택할 뿐 직접 업데이트는 하지 않는다? (View는 Controller를 알지 못함)
단순
View와 Model의 의존성이 높다.
graph LR
A(Action)-->V(View)
P(Presenter)-->V(View)
V(View)-->P(Presenter)
P(Presenter)-->M(Model)
M(Model)-->P(Presenter)
Model, View, Presenter로 구성되어 있다.
Presenter는 View에서 요청한 정보로 Model을 가공하여 View에게 전달해 준다.
Presenter는 View와 1:1 관계이다.
graph LR
A(Action)-->V(View)
V(View)-->VM(View Model)
VM(View Model)-->M(Model)
M(Model)-->VM(View Model)
Model, View, View Model로 구성되어 있다.
View Model은 View를 표현하기 위해 만든 View를 위한 Model이다.
MVVM패턴은 Command 패턴과 Data Binding 두가지 패턴을 사용하여 구현되었다.
ViewModel과 View는 1:n 관계이다.
뭐 설명할 건 없다.
위 프로그램을 설치하면 원격으로 코드 수정이 가능하다.
Visual Studio Code를 사용하여 javascript를 편집할 일이 생겼다.
(개인적으로 뭔가 해보고 싶은놈이 생겨서.. 소스 분석 및 테스트가 필요했다.)
편집툴이 뭐가 좋을까 고민하다가 Visual Studio Code를 선택했는데...
자잘 자잘하게 수정하다보니 어디를 고쳤는지 확인이 불가능해져서, git이 필요해졌다. svn만 사용하다보니.. git은 익숙하지 않은데 그것보다 어디있는지 찾을수가 없었다.
간단히 답을 드린다면, 위와 같이 설정에서 추가할 수가 있다.
그런데, 아무리 실행해도 실행이 되지 않는 것이였다.
(사실 Visual Studio Code를 다운받고 정상 실행이 안되서 좀 당황했었다.)
git 클라이언트를 설치했음에도 불구하고, git 설정이 되지 않은것처럼 보였다.
"난 개발자라고.." 분노가 치밀었다.
다른 블로그들을 보니 git scm을 설치하라고 하는데...
"난 개발자자나??" 라며 "macOS에는 디폴트로 git이 설치 되어 있는데??"라는 의심을 품었다.
역시 이 문제가 아니였다.
Xcode 설치 완료후 정상 구동... 확인
스택오버플로어에 유능하신 분들이 내게 답을 주었다...
"새 맥북이라 XCode 설치를 완료 하지 않았기 때문이라는 것을"
그런데 또 다른 난관에 부딪혔다.
git 사용자 정보 설정창은 보이지 않았다.
어딨니? 로그인 하는 창아...
뭔가 싶어 SourceTree 를 설치해봤는데 정상동작 확인...
역시 설정문제라는 판단이 들어서 검색을 해보았더니... ㅠㅠ
역시 맘에 들지 않는 답변들만 있어서.. 아래 명령어로 가이드를 받아서 진행하면된다.
$ git commit
이메일 하고 사용자 이름 등록하면 실패가 나는데 아래와 같이 등록해주면 잘됨.
git config --global user.name "유저네임"
그리고, git commit을 다시 때려주면, git push를 하라고 함. 이때 패스워드 입력하면 잘됨.
참고로 시놀로지 나스 git 접속 방법은 다음과 같다.
ssh://(NAS에생성했던계정)@(NAS의 DDNS):(포워딩한 port)/volume1/homes/(사용자계정폴더)/(Repository 폴더명)