서버프로그래밍
김태현 강사님
sapyeongkim@gmail.com
관계형 데이터 베이스
최근에는 low 어쩌구 비관계형 데이터베이스가 주목 받고있지만,,
코딩에서 legacy는 부정적인 의미 - 오래된 것, 바뀌어야 마땅한 것
0.1을 표현할 수 없음 0.0999999924325 이런식의 값으로 더해짐
실수중에 일부는 이진수로 표현이 안되기떄문에 0.1을 100번 곱하면 (0.5는 이진수로 표현 가능)
9.99999999999999998이런식으로 나옴
실수(double, float)를 다룰때는 =를 사용하기보다 <, >로 사용하기
decimal.. (자바에서는 Decimal 클래스 사용.. 다들 대응하는 그런 방법들이 존재함)
변수 : 메모리의 기억 공간
public, private, protected, internal
값타입과 참조타입
한 기능을 수행하는 단위, 기능단위로 데이터 처리
가상함수란 베이스 클래스에서 상속받는 클래스에게 재정의 가능하도록 제공하는 문법,, 전략패턴
추상클래스는 추상멤버가 하나라도 있는 클래스 , 추상적인 개념을 나타낼때 사용
is는 형변환 체크 연산자이고 리턴타입이 bool이며 형변환 ~~ as는 형변환 연산자 리턴타입이 해당타입의 인스턴스이며
실패시 null 리턴
IDE - 통합된 개발환경
- VCS - 버전 컨트롤 시스템(형상관리라고하나 버전관리가 더 맞음)
-> 기록이 다 남고 그 전 시스템으로 돌이킬 수가 있음
-> Issue tracking system이 도입된다면 고객이 접수를하면 그 고객의 할당된 이슈들이 다 보여짐(현재 활성화된)
- 디버거
- Linker
- Text Editor
- Compiler
우리 window 자체도 com으로 만들어져 있음. MS word에서 엑셀 차트를 그대로 표현할 수 있는데 이게 com 때문
active X까지도 연동이됨 com 으로 인해서!
그 회사의 시스템을봐라, 개발자를 키우는건 시스템이다 (체계)
-> VCS, Issue tracking system 이 두가지를 쓰고 있는 회사인지 보기 + code reveiw (건전한 기술적인 비판)
절대 하지말아야할 질문 - 야근 많이합니까? ㅎ 이딴거~
vcs
cvs, svn, tfc => 지금은 사실 git 으로 정통이 되었음!
svn : 중앙 집중식 구성 (엄청좋은서버에 수십만명이 달라붙는 식)
github : 보안이나 백업등의 문제는 여기서 다 알아서 해줌! -> 오픈 소스의 성지가 되어벌임
기능중에 branch라는 것이 있는데 일종의 스냅샷이라고 생각하면 됨!
공개하고 싶은 코드들은 github에 올려놓고 ~~~ gitlab도 있음!
reshaper - pyCharm을 써보세용 , Rider도요.
학교 이메일 쓰면 reSharper 꼭 한번 써보기! visual studio extension for .NET Developers!! 스피트가 진짜 좋음
예를들어, 추상클래스의 생성자가 public이 될 이유가 전혀 없는데 (문법적으로는 문제가없음) 만들어져 있으면 이런것도 봐줌! 제한이 뜸 이부분은 protected로 하면되는데 왜 이렇게하냐 물어봐줌 ㅎ
이런 툴을 통해서 패턴 매칭을 배움!
[숫자야구 만들기]
콘솔앱 [.NET Framework] 사용
- git 설치하기
setting -> colla~~ 여기서 협력자를 추가할 수 있음!
코드를 수정하고 난 후에는 반드시 커밋과 푸시를 하기!
최신버전을 가져오고 나서 푸시를 해야 충돌이 적어짐!
프로젝트를 마치기 전에 포킹을 꼭 해야함! 빠이빠이 하기전에 꼭 하기!
branch 만들기
ctrl + alt + f3 분기 왔다리 갔다리 할 수 있음!
fetch 나 pull을 하면 상대방이 만든 분기를 볼 수 있음!
cw + tab + tab 하면 Console.WriteLice() 나옴!!!!
int 는 사실상 구조체임!!!!
int i1 = int.Parse(s); -> Parse : 문자열을 읽어서 의미있는 데이터 타입으로 바꾸는 것
int32 이런거는 .Net 프레임웤에서 사용되는거고 우리가 알고있는 int, flaot 같은것은 사실 별칭이다.
int32 - 32비트 정수 즉, 4바이트
-> 인텔리 코드라고 함 (ms가 만들어 놓은것임)
* string interporation(??) - (파이썬에서는 $대신 f를 씀)
Console.WriteLine($"당신이 입력한 값은 '{s}'입니다.");
코드의 품질을 좌우하는 결정적인 요소는 단위테스트 ! ( 사실우리나라에선 잘안함 ㅠ 소비자가 해줌,, ㅎ 말이안됨)
/******************************************************************/
bad smell 이 나는 코드를 개선하는 작업을 리팩토링이라고 함.
refactoring - 내부 구조를 개선하는 작업
/******************************************************************/
못생긴 코드 - 소프트웨어의 복잡도가 높음!
면접에서 ~~를 왜 쓸까요? 대답하면 1. 소프트웨어의 복잡도를 낮추기위해서, 높히기위해서~ 대답하거나 2. 보안
이 두가지에서 대답하면 거의 맞을 확률이 높음! ㅎ..
코드에 숫자가 바로 들어오는 상수같은 경우
magin number, hard-coded number 라고 말함 (부정적인 의미)
ctrl + . 치면 상수 만들어주는거 있떤데 뭔지 알아보기
상수지정 -> ~~ 해서 만들기
shift + F2 = 모든 참조 찾기
C#에서는 배열을 collention이라고 부름 (.NET Framework에서) - collention, data structure, vector
vector - 넓은 의미로는 여러개의 값이라는 뜻 (힘, 방향 두개의 값을 가지고 있는 데이터) 3~4개의 값
배열보다는 list를 쓰는 것이 좋을 것
public - 프로젝트 사이간에도 쓸 수 있음
internal - 해당 모듈 안에서만
클래스 - 붕어빵 틀
객체(오브젝트)
인스턴스(클래스로 만든 변수 -> 근데 이게 또 객체라고 부를 수 있음)
변수
함수
메서드 (클래스의 멤버인 함수) - c#은 모든 함수는 클래스 안에 있어야 하기때문에 기본적으로 메서드)
변수
필드 (클래스의 멤버인 변수)
c와 c++ 의 차이점은 구조체에 함수를 집어넣을 수 있다 없다 의 차이 (이걸로 어마어마한 변화가 생김)
-> 비로소 객체지향 프로그래밍이 되버림
잘 짠 코드는 .을 기점으로 주어부와 술어부가 나뉘어짐. result.Print() 이런식!!!! 만들어놓고 옆에 도움에서 함수만든뒤
내용에 복붙하면 됨!
result.Caculate(); 도 같은 방식으로 만듦
상수들을 가지고 있는 클래스 Constant
* 찾기해서 이름 바꾸는것 보다 드래그하고 오른쪽 버튼을 눌러서 이름바꾸기 하면 클래스 이름만 바뀌는 정확하게 우리가 원하는 동작을 함!
* 클래스간의 결합도를 낮춘다 -> 클래스 단위로 띄어놓음!
'Archive' 카테고리의 다른 글
0906 10-인터페이스 (0) | 2019.09.06 |
---|---|
0906 09-가상메서드-추상메서드 (0) | 2019.09.06 |
0906 서버프로그래밍 기초3 (0) | 2019.09.06 |
0905 FackCraft (0) | 2019.09.05 |
0905 서버프로그래밍 기초 2 (0) | 2019.09.05 |