Category Archives: 배우기

C# 6.0 완벽 가이드/ LINQ 질의 연산자

개요

  • 표준 질의 연산자들은 다음 세 범주로 나뉜다.
    • 순차열을 입력받고 순차열을 출력하는 연산자(순차열 -> 순차열)
    • 순차열을 입력받고 요소 하나 또는 스칼라값 하나늘 출력하는 연산자
    • 입력 없이 순차열을 출력하는 연산자(생성 메서드)

순차열->순차열

  • 이 범주의 질의 연산자는 하나 이상의 순차열을 입력받고 하나의 순차열을 산출한다. 대부분의 질의 연산자가 이 범주에 속한다. 아래 그림은 이 범주의 질의 연산자 중 순차열의 형태를 바꾸는 것들을 나타낸 것이다.

분류 형식 내용 연산자
필터링(선별) IEnumerable<TSource> -> IEnumerable<TSource> 원래 요소들의 부분집합을 출력한다. Where, Take, TakeWhile, Skip, SkipWhile, Distinct
투영 IEnumerable<TSource> -> IEnumerable<TResult> 주어진 람다 함수를 이용해서 각 요소를 변환한다. SelectMany는 중첩된 순차열을 평평한 순차열로 만든다(평탄화).

LINQ to SQL이나 EF에 대한 Select와 SelectMany는 내부 결합(inner join), 왼쪽 외부 결합(left outer join), 교차 결합(cross join), 비등가 결합(non-equi join)을 수행한다.

Select, SelectMany
결합 IEnumerable<TOuter>, IEnumerable<TInner> -> IEnumerable<TResult>
IEnumerable<TFirst>, IEnumerable<TSecond> -> IEnumerable<TResult>
두 순차열의 요소들을 합친다. Join과 GroupJoin 연산자는 지역 질의에 효율적으로 작동하도록 설계된 것으로, 내부 결합과 왼쪽 외부 결합을 지원한다.

Zip 연산자는 두 순차열을 동시에 열거하면서 각 요소 쌍에 함수를 적용한다. Zip 연산자에서는 두 형식 매개변수의 이름이 TOuter와 TInner가 아니라 TFirst와 TSecond이다.

Join, GroupJoin, Zip
정렬 IEnumerable<TSource> -> IOrderedEnumerable<TSource> 입력 순차열 요소들의 순서를 바꾼다. OrderBy, ThenBy, Reverse
그룹화 IEnumerable<TSource> -> IEnumerable<IGrouping<TKey, TElement>> 입력 순차열의 요소들을 적절히 묶어서 여러 개의 부분 순차열들을 출력한다. GroupBy
집합 연산 IEnumerable<TSource>, IEnumerable<TSource> -> IEnumerable<TSource> 같은 형식의 순차열 두 개를 입력 받아서 합집합, 교집합, 차집합을 출력한다. Concat, Union, Intersect
변환 메서드: 가져오기 IEnumerable -> IEnumerable<TResult> OfType, Cast
변환 메서드: 내보내기 IEnumerable<TSource> -> 배열, 목록, 사전, 조회 객체(lookup), 순차열 ToArray, ToList, ToDictionary, ToLookup, AsEnumerable, AsQueryable

Continue reading

뇌의 구조

  • 그물형성체(망상체, reticular formation)
    • 뇌간과 시상을 연결. 정보를 취사선태개 대뇌피질로 보내는 기능을 한다
  • 교뇌가로섬유(transverse pontine fiber)
    • 뇌에서 가장 두꺼운 신경섬유다발
  • 인간과 동물 운동의 가장 큰 차이는 융통성
    • 동물의 개별적 감각은 인간보다 뛰어나지만, 감각을 통합하여 자유롭게 움직이는 것은 인간보다 못하다
  • 뇌 구조에서도 기억을 담당하는 해마 섬유보다 운동을 담당하는 교뇌가로섬유가 훨씬 두텁게 형성되어 있다.
  • 융통성 있는 운동을 가능하게 하는 것은 개별적 사지 말단 운동이다. 개별적 사지 말단 운동의 대표적인 예가 손가락 운동.

Continue reading

감각은 어떻게 뇌까지 전달되는가?

  • 감각신호를 전달하는 주요 경로
    • 요추, 경추, 연수, 교뇌, 중뇌
  • 감각신호는 연수에서 좌우로 교차한다.
  • 시상에서 전달된 감각신호를 중개한다.
  • 교뇌는 얼굴의 감각정보를 처리한다.
  • 교뇌(다리뇌, pons)
    • 척추동물의 중뇌와 연수 사이에 위치하는 중추신경계의 일부
  • 중뇌(midbrain)
    • 안구, 운동 등 중요 신경이 지나가는 뇌의 가운데 부위. 사이뇌와 다리뇌를 연결한다.
  • 숨뇌(연수, medulla oblongata)
    • 척수와 곧바로 연결되어 있으며, 호흡이나 혈액 순환을 조절한다.
  • 일차체감영역(S1)
    • 촉감과 기타 피부 및 근육의 정보를 일차적으로 처리하는 영역
  • 일차운동피질(M1)
    •  운동뉴런을 움직여 근육이 움직일 수 있게 명령 신호를 보내는 두뇌 영역
  • 시상은 감각정보를 대뇌피질로 중개한다.
  • 팔, 다리, 얼굴의 감각정보는 대뇌피질의 일차체감각영역(S1)에 도달한다.
  • 예측이 가능한 이유는? 감각영역과 운동영역이 밀접하게 위치해 있기 때문.
    • 뇌는 예측머신이다.

Continue reading

척수란 무엇인가?

  • 뇌는 관이다
    • 신경관이 변형되면서 뇌 역시 세분화 된다.
  • 신경관 분화
    • 전뇌는 전뇌 간뇌로 분화
    • 중뇌는 중뇌 후뇌로 분화
      • 후뇌는 교뇌 소뇌로 분화
    • 능뇌는 수뇌로 되었다가 연수로 된다
  • 신경관(수관, neural tube)
    • 척삭동물과 척추동물의 발생과정에 나타나는 외배엽에 유래하는 관상구조. 뇌나 척수가 될 부분이다.
  • 전뇌(forebrain)
    • 척추동물의 세 개의 뇌포 가운데 가장 앞쪽 것을 말한다. 대뇌와 간뇌로 이루어져 있다.
  • 중뇌(midbrain)
    • 안구, 운동 등 중요 신경이 지나가는 뇌의 가운데 부위. 사이뇌와 다리뇌를 연결한다.
  • 능뇌(rhombencephalon)
    • 척추동물의 뇌의 발생 가운데 신경관 윗 부분에 생기는 세 개의 부푼 부분의 맨 뒷부분. 후뇌와 수뇌로 분화한다.
  • 척수의 하행로는 운동, 상행로는 감각을 전달한다
  • 유사한 기능을 하는 기관은 모여있다.

Continue reading

운동의 세가지 형태

  • 운동의 세가지 형태
    • 자율 (autonomy)
      • 의지와는 관계 없이 자동적으로 일어나는 반응. 심근
    • 반사 (reflex)
      • 자극에 대해 기계적으로 일어나는 신체의 국소적인 반응. 골격근
    • 수의
      • 자기 마음대로 하는 것. 골격근
  • 모든 움직임에는 신경이 있어야 한다.
    • 그런데 심장은 신경을 잘라내도 잠시 뛸 수 있음
  • 심장은 근육세포가 변형되서 만들어진 것. 고유 심근과 특수 심근으로 구성된다.
    • 고유 심근(Myocardium proper)은 심장을 펌프질하는 수축 역할을 하며 심장 박동에 관여한다.
    • 특수 심근(impulse conducting system)은 전체 심근의 5%를 차지하며 전기를 만드는 역할을 한다.

Continue reading

12가지 뇌신경의 정체

1

  • 뇌신경의 종류
    1. 후각신경(olfactory nerve)
    2. 시신경(optic nerve)
    3. 동안신경(oculomotor nerve)
    4. 활차신경(trochlear nerve)
    5. 삼차신경(trgeminal nerve)
      • 안신경(ophthalmic nerve)
      • 위턱신경(maxilkuy nerve)
      • 아래턱신경(mandibular nerve)
    6. 외전신경(abducens nerve)
    7. 안면신경(facial nerve)
    8. 전정와우신경(vestibulocochlear nerve)
      • 전정(vestibule) – 균형감각 담당
      • 와우(cochlea) – 소리 담당
      • 두 감각이 하나로 왔다가 분리된다.
    9. 설인신경(glossopharyngeal nerve)
    10. 미주신경(vagus nerve)
    11. 부신경(accessory nerve)
      1. 두개신경근(cranial root)
      2. 척추신경근(spinal root)
    12. 설하신경(hypogiossal nerve)

Continue reading

C# 6.0 완벽 가이드/ LINQ 질의

  • LINQ (Language Intergrated Query; 언어에 통합된 질의)는 지역 객체 컬렉션과 원격 자료 저장소에 대한 형식에 안전한 구조적 질의를 작성하는데 사용하는 C# 언어 기능들과 .NET Framework 기능들을 통칭하는 용어이다. LINQ는 C# 3.0과 .NET Framework 3.5에 도입되었다.
  • LINQ를 이용하면 IEnumerable<T>를 구현하는 임의의 컬렉션(목록, 배열)과 XML DOM에 대해 질의를 수행할 수 있으며, SQL Server 데이터베이스의 테이블과 같은 원격 자료 저장소에 대한 질의도 수행할 수 있다. LINQ는 컴파일 시점 형식 점검의 장점과 동적인 질의 작성의 장점을 모두 제공한다.

첫걸음

  • LINQ의 기본적인 자료 단위는 순차열(sequence)과 요소(element)이다. 순차열은 IEnumerable<T>를 구현하는 임의의 객체이고 요소는 그 순차열에 들어있는 항목이다. 다음 예에서 names는 순차열이고, “Tom”, “Dick”, “Harray”는 요소들이다.
    • 메모리 안에 있는 객체들의 지역 컬렉션이라는 점에서 이런 순차열을 지역 순차열이라고 부른다.
string[] names = { "Tom", "Dick", "Harray" };
  • 질의 연산자(query operator)는 순차열에 어떠한 변환(transformation) 연산을 적용하는 메서드이다. 전형적인 질의 연산자는 입력 순차열 하나를 받아서 출력 순차열을 산출한다. System.Linq의 Enumerable 클래스에는 약 40개의 질의 연산자가 있는데, 이들은 모두 정적 확장 메서드로 구현되어 있다. 이들을 통틀어 표준 질의 연산자라고 부른다.
    • 지역 순차열에 대해 작용하는 질의를 지역 질의(local query) 또는 객체 대상 LINQ 질의라고 부른다.
    • LINQ는 또한 SQL Server 데이터베이스 같은 원격 자료 저장소에서 동적으로 자료를 공급받는 순차열도 지원한다. 그런 순차열은 IQueryable<T> 인터페이스를 추가로 구현하는데, 이 인터페이스에 대응되는 일단의 표준 질의 연산자들이 Queryable 클래스에 있다.
  • LINQ에서 말하는 질의는 순차열들과 질의 연산자들로 이루어진 하나의 표현식이다. 그 표현식을 평가하면 순차열들이 연산자들에 의해 변환된다.
    • 예컨대 Where 연산자를 이용하면 이름들을 담은 배열에서 길이가 4개 이상인 이름만 추출할 수 있다.
string[] names = { "Tom", "Dick", "Harray" };
IEnumerable<string> filteredNames = System.Linq.Enumerable.Where(names, n => n.Length >= 4)

foreach (int n in filteredNames)
  Console.Write(n);  // Dick Harry

Continue reading

C# 6.0 완벽 가이드/ 컬렉션

  • 컬렉션에 관련된 .NET Framework의 형식들은 크게 다음 세 범주로 나뉜다.
    • 표준 컬렉션 프로토콜을 정의하는 인터페이스
    • 바로 사용할 수 있는 컬렉션 클래스
    • 응용 프로그램에 특화된 커스텀 컬렉션을 작성하는데 사용하는 기반 클래스
  • 컬렉션 이름 공간들은 다음과 같다.
이름공간 내용
System.Collections 비제네릭 컬렉션 클래스들과 인터페이스들
System.Collections.Specialized 강한 형식의 비제네릭 컬렉션 클래스들
System.Collections.Generic 제네릭 컬렉션 클래스들과 인터페이스들
System.Collections.ObjectModel 커스텀 컬렉션을 위한 프록시들과 기반 클래스들
System.Collections.Concurrent 스레드에 안전한 컬렉션들

 

열거

  • 컴퓨팅에는 배열이나 연결 목록 같은 간단한 자료구조에서부터 적흑 트리(red/black tree)나 해시테이블 같은 복잡한 것에 이르기까지 다양한 종류의 컬렉션이 쓰인다.
    • 이런 자료구조들의 내부 구현과 외부 특징은 아주 다양하지만, 컬렉션의 내용을 운행하는(traverse) 능력, 다시 말해 컬렉션에 담긴 요소들에 차례로 접근할 수 있는 기능을 제공해야 한다는 점은 거의 보편적이다.
    • .NET Framework는 이를 위해 한 쌍의 인터페이스(IEnumerable과 IEnumerator, 그리고 해당 제네릭 인터페이스들)를 제공한다.
    • 이들을 구현함으로써 내부 구현과 외부 특징이 서로 다른 자료구조들이라도 공통의 운행 API를 소비자에게 노출할 수 있다.

Continue reading

인간의 신경시스템의 진화 과정

  • 핵(nucleus)
    • 세포의 모든 활동을 조절하는 세포내 기관
  • 피질(cortex)
    • 생물체의 기관 겉을 둘러싸고 있는 층
  • 피질하핵(subcortical nucleus)
    • 피질 하부에 있는 세포핵
  • 피질 아래 대표 기관
    • 대뇌기저핵
    • 시생
    • 소뇌 등
  • 대뇌 기저핵
    • 대뇌반구에 있는 회백질. 대뇌핵이라고도 한다.
  • 대뇌피질 두께 2mm안에 신경세포가 모여 있다.
    • 그 신경 세포들이 대뇌 안쪽의 기관들과 연결된다.
    • 꼬리핵(caudate nucleus), 시상(thalamus), 조가비핵(putamen), 창백핵(globus pallidus)

Continue reading

기억의 신경회로

  • 해마 (hippocampus)
  • 내비상피질 EC (entorhinal cortex)
    • 해마의 입출력을 관장하며 냄새를 적절한 기억과 매치시키는 기능
  • 차상회 DG (dentate gyrus)
    • 해마의 하위조직으로 공간 기억과 새로운 기억 형성에 관여
  • Ammon’s horn CA (암몬각)
    • 대뇌 변연계의 한 부분
  • 패턴 분리(pattern separation)
    • 전에 봤던 것과 비슷하지만 다른 거를 분리하는 것
  • 패턴 완성(pattern completion)
    • 기억 저장 부위와 상호작용하여 그 요소와 결합되어 있는 나머지 정보들도 인출. 한 기억 조작으로 전체를 기억하게 하는 것.
    • 부분 단서를 보고도 연관된 기억을 떠올리는 것
  • Object-order Association
    • 사물 혹은 사건에 대한 순서를 연결시키는 영역

Continue reading