23-11-13 (월)
회고
오늘 파일업로드 작업이 너무 길어져서 시간대비 효율이 좋지 않았습니다. 내일 기능 마무리를 하고 나머지 시간에 오류를 잡는데 시간을 많이 할애해야할것 같습니다.
23-11-12 (일)
회고
오늘은 어제작업시간보다 시간은 줄었지만 효율이 비슷하게 나왔습니다. 매일 목표는 추가기능 두개씩 작업하는건데 현재까지는 목표를 잘 달성하고있고 앞으로 이틀동안 두개씩 지금처럼 하면 화요일까진 완성하고 수요일에 오류를 잡는걸 목표로 하고있습니다.
23-11-11 (토)
쿠키, 세션, 캐시
- 쿠키는 사이트를 방문하고 이용할 때 브라우저에 저장되는 내용들이다.
- 쿠키의 한계는 내가 임의로 고치거나 지울 수 있고 심지어 남이 훔쳐보거나 도둑질하기도 쉽다.
- 세션을 사용하는 사이트에 접속하면 서버에서는 사용자를 구분하기 위한 기한이 짧은 임시 키 하나를 브라우저에 보내서 쿠키로 저장한다.
- 사용자가 사이트 안의 페이지들을 돌아다닐때 사용자의 중요한 정보들은 서버의 메모리나 데이터베이스에 저장되고 브라우저가 이 사이트의 페이지들에 접속할 때마다 http 요청에 이 키를 실어서 전송하고 서버는 그 키를 확인하고 사용자임을 인식해서 사용자의 정보들을 가공해서 응답으로 보내준다.
- 쿠키는 사용자의 편의를 위하되 지워지거나 조작되거나 가로채이더라도 큰 일은 없을 그런 수준의 정보들을 부라우져에 저장하는데 사용된다.
- 사용자나 다른 누군가에게 노출되어서는 안되는, 서비스 제공자가 직접 관리해야 할 정보들은 세션으로 서버 안에서 다뤄진다.
- 캐시란 개념은 웹 뿐만 아니라 컴퓨터의 메모리 부분이나 안드로이드 등 다양한 곳에서 쓰이는데 거의 공통적인 의미로 가져오는데 이용이 드는 데이터를 한번 가져온 뒤에는 임시로 저장해두는것이다.
23-11-10 (금)
비트연산자들을 알아보자
- & : 이 기호는 앰퍼센드(ampersand)라 불리는데 프로그래밍에서도 AND라 불린다.
- | : 이 기호는 버티컬 바 (vertical bar)라고 불린다.
- ^ : 이건 캐럿(caret)이라는 기호인데 XOR 연산자로 불린다.
- ~ : 이 물결표, 틸더(tilde)는 NOT 연산자이다.
- << , >> : 이 둘은 각각 left, right shift로 불린다.
- Bit : 컴퓨터에서 쓰는 비트(bit), 즉 0이나 1의 값을 가질 수 있는 디지털 정보의 최소 단위를 말한다.
- & 연산자로 두 숫자를 연산하면, 비트 자리수들 중에 양쪽 모두 1인 것들만 1로, 나머지는 0으로 내보낸다.
- | 연산자는 OR을 뜻한다.
- ^는 양쪽의 값이 다르면 1을, 같으면 0을 내보낸다.
- ~연산자는 단항 연산자이다. 0은 1로, 1은 0으로 뒤집어준다.
- <<, >>는 이자리수들 전체를 왼쪽 또는 오른쪽으로 주어진 칸 수 만큼 shift, 이동시킨다.
- &와 | 연산자는 자바, C, C++, C# 등의 언어들에서는 이것들을 그냥 &&,|| 연산자처럼 불리언 자료형의 논리 연산에 사용할 수 있다. &는 양쪽 모두가 true일 때, | 는 하나라도 true일 때 true를 반환한다.
- &과 |에는 다른 점이 있는데 바로 단축 평가(short-circuit evaluation)가 되지 않는다. => 각 불리언 값이 뭐든간에 부수작용은 일단 다 일어나야 되는 상황이 있을때 사용한다.
- & : 먼저 주어진 정수가 홀인지 짝인지 알아낼 때 &를 쓴다. 일반적으로 널리 사용되는 방법은 2로 나눈 나머지를 본다.
- ^ : swap 즉 두 변수의 값을 서로 뒤바꿔야 할 때 일반적으로는 이와 같이 또 다른 변수를 만들어서 거기에 임시로 값을 담아둔다. 그런데 XOR 연산자를 사용하면 따로 변수를 사용하지 않고 담아둘 수 있다.
- 연산자들을 활용한 비트마스킹을 사용하면 소규모 코드에서 이를 간결하게, 그리고 성능 면에서도 보다 빠르고 자원을 덜 소모하도록 구현할 수 있다.
회고
어제보다 확실히 작업량이 많아졌지만 아직 시간대비 효율이 안나왔습니다. 내일 시간투자는 오늘과 비슷하게 하지만 좀더 집중력을 높여서 작업을 해야겠습니다.
yml 파일 설정에서 너무 많은 시간을 잡아먹고 힘을 너무 많이 뺀게 집중력 저하에 원인 같습니다.
23-11-09
레포지토리 생성
자료형과 정적/동적 타입 (+ 컴파일/인터프리터 언어와의 관계)
-
자료형들이 데이터를 메모리에 저장하는 방식들은 언어마다의 각 자료형 각각의 범주에 포함되는 모든 데이터들을 가장 효율적으로 저장해서 메모리를 절약할 수 있도록 설계 되어있다.
-
자료형은 데이터를 저장할 때 뿐 아니라 주어진 위치에서 데이터를 읽을 때도 중요하다.
-
실제 자료형들은 데이터를 저장하는 방식들도 여러가지이기 때문에 읽어들인 비트들을 어떻게 해석하는지도 자료형에 따라 결정된다.
-
컴파일 언어는 코딩을 마치고 나면 프로그래밍 언어로 짠 코드를 컴파일이란 과정을 통해서 다른 형태로 바꿔주게 되는데 그 결과물은 기계어일 수도 있고 자바의 .class 파일처럼 가상머신용 바이트 코드일 수도 있다.
-
컴파일이란 작업을 거치고 나서 그 결과물을 실행하는 것이 컴파일 언어의 특성이다.
-
인프리터 언어는 코딩 후 다른 과정을 거치지 않는다.
-
개발자가 작성한 코드가 그대로 실행할 곳으로 보내져서 인터프러터라는 것을 통해 바로바로 기계어로 통역되어 실행된다.
-
보통 컴파일 언어들은 정적 타입, 인터프리터 언어들은 동적타입의 자료형을 갖고 있다.
-
정적 타입이란 변수 등에 지정된 자료형을 바꿀 수 없는 것을 말한다. 반면 동적 타입을 사용하는 언어들에서는 변수에 얼마든 다른 자료형의 값을 넣을 수 있다.
-
컴파일 언어는 코드를 실행하거나 배포하기 전 즉 개발 과정에서 컴파일이란 과정을 거치기 때문에 코드 중 철자나 문법 상에 문제가 있을 때 이 단계에서 오류를 발생시켜서 잡아낼 수 있기 때문에 컴파일 언어는 개발자에게 자료형의 일관성을 요구하는 정적 타이핑에 보다 유리하다고 할 수 있다.
회고
- 동원예비군으로 인해서 작업시간과 공부시간이 적었습니다.
- 내일 작업량을 대폭 늘릴 예정입니다.