목록전체 글 (199)
포도가게의 개발일지
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bqvWZi/btrplhDepqe/JOhRAnUL3Sg1PtdKjOxMIk/img.png)
1. 자바스크립트 - 우선, 자바스크립트는 싱글 스레드(single threaded) 프로그래밍 언어이다. 싱글 스레드라는 건, 한 번에 하나의 call stack을 갖고 있고, 그 말은 다시 말해 한 번에 하나씩만 일 처리를 할 수 있다는 말 2. 자바스크립트의 메모리 구조 자바 스크립트의 메모리 구조는 크게 Heap memory, CallStack Task Queue로 생각해 볼 수 있습니다. 각 영역에서는 무슨 일을 담당하고 이루어질까요? 자바스크립트의 동작은 아래 그림을 통해서 간략하게 알아볼 수 있습니다. 메모리힙 메모리 할당이 동적으로 일어나는 곳 배열을 생성하거나 객체를 생성할 때. 즉, 원시값을 제외한 메모리에 주소값이 할당되어 참조를 해야되는 경우에는 모두 힙에 저장이 된다. Call S..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/WzGn7/btroZFL6Rnu/S5P3kt7qR1nlx8mFKgnPMK/img.png)
Race Conditions? - multi thread 환경을 구축하게 되면 동시성 문제가 항상 뒤따라 온다. - 여러 thread가 경쟁적으로 shared state에 접근한 탓에, 접근 순서에 따라 그 결과가 달라지는 상황을 의미 Atomic Operation - Race condition을 막기 위해서는 각 thread의 접근이 atomic하게 이루어져야 한다. atomic하게 이뤄진다는 것은 기능적으로 분할할 수 없거나 분할하지 못하도록 보증된 동작을 의미한다. - 동시성 프로그래밍의 가장 큰 숙제는 ‘공유자원 관리’일 것이다. 공유자원을 안전하게 관리하기 위해서는 상호배제(Mutual exclusion)를 달성하는 기법이 필요하다. 뮤텍스: 한 쓰레드, 프로세스에 의해 소유될 수 있는 Key ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KvQie/btroStkK4sX/oUxRh1u30jP1UZR31d1Jp1/img.png)
기본적인 입출력 제어 방식 - 예를 들어 하드디스크에서 메모리로 데이터를 이동시킨다. 이때 가장 기본적인 방식인 Programmed I/O(Polling) 방식으로 구현하면 하드디스크에서 데이터를 꺼낸 후 시스템 버스를 통해 CPU 레지스터에 옮겨지고 다시 시스템 버스를 통해 CPU 레지스터에서 메모리로 이동한다. 위와 같은 방식은 CPU를 거쳐가기 때문에 한곳을 더 거쳐가는 지연시간도 있겠지만 가장 큰 문제는 입출력 시간 동안 CPU가 idle 상태로 대기하는 것이다. I/O 디바이스에 비해 CPU는 비교할 수 없을 정도로 고속이기 때문에 그 시간을 낭비한다는 것은 상당히 비효율적이다. 1. DMA( Direct Memory Access) why? - 입출력 시간 동안 CPU가 idle 상태로 대기하는..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0zYjB/btroK0PAMht/nGs099B83MGUfkT4JxIDk0/img.png)
1. select 문법 순서 select from where group by having order by *쿼리의 실행 순서는 from -> where **-> group by ->having ->select -> order by** 2. Order by 특정 칼럼 기준으로 정렬 ASC : 오름차순 1 2 3 4 5 DESC : 내림차순 5 4 3 2 1 select * from student order by age desc; 3 .Where 컬럼 조회의 조건 select * from student where id = 1; and, or 조건 select * from student where sex='남자' and(or) address='서울'; like 조건 % 로 표현 select * from stu..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/CzaxH/btroCxBhytx/3SlCczsBZtKChLjg9OzTE0/img.png)
Segregated list Allocator(분리가용리스트) - seg-list는 explicit의 개선 방법입니다. 할당이 해제되 가용 블록들을 크기별로 모아줌으로써 좀 더 빠른 search가 가능합니다. - explicit 방식과 동일하게 연결리스트를 만들지만 사이즈별로 만들어야 하기 때문에 여러개의 연결리스트가 필요합니다. 여러개의 연결리스트 포인터를 힙에 저장하여 특정한 사이즈의 메모리를 할당하고자 하면 해당 사이즈에 맞는 연결리스트로 이동하여 할당할 블록의 위치를 찾습니다. 할당하는 메모리의 사이즈를 나누는 단위는 정해지지 않았지만 대부분 2^n 단위로 나누게 됩니다. // Global var // seg-list를 table로 만들어줍니다. void *segregated_free_lists[..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/uwdli/btrox1VpU6m/N18I4N7S4ywUGZjI2YhWbK/img.png)
Buddy System why? - 서로 다른 크기의 연속적인 페이지들을 빈번하게 할당 및 해제하는경우 외부 단편화가 생기는 단점이 있다. 남은 공간으로만 봤을 땐 충분해도 실제 커널이 요청한 사이즈를 처리할 수 있는 연속된 페이지가 없다는 의미이다. 버디 시스템은 이러한 외부 단편화를 줄이기 위해 탄생하였다. 이를 통해 연속적인 페이지 단위로 관리가 가능하다. 관리 메커니즘 부터 알아보자. how? 우선 버디 시스템에서는 order 단위로 페이지 할당을 요청한다. 이것은 2^n 단위로만 요청을 할 수 있음을 의미한다. 예를 들어, order 3에 해당하는 페이지를 요청하는 경우 8(2^3 )개의 연속된 페이지들를 요청하는 것이다. struct free_area{ struct list_head free_..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BoySt/btrohSYvaiZ/CAEAmiT9T1kaq5Z17VGOIK/img.png)
value 추출 안돼서 왜 undefined이 계속 나오지 해서 확인한 결과 value안에 안보이는 data들이 들어 있었다.. ㄷㄷ
https://stackoverflow.com/questions/35432749/disable-web-security-in-chrome-48 Disable-web-security in Chrome 48+ I have a problem with the --disable-web-security flag. It is not working in Chrome 48 and Chrome 49 beta on Windows. I've tried killing all of the instances, reboot and run Chrome with the flag fi... stackoverflow.com open -na Google\ Chrome --args --user-data-dir=/tmp/temporary-chro..