여러가지 질문들

아현·2021년 4월 10일
0

blog

목록 보기
6/9

1. for each 와 map함수의 차이점은 무엇인가.

참고: Map과 forEach

  • forEach()는 당신의 Array안에 데이터를 변경하려는 것이 아니라 데이터베이스에 저장하거나 로그아웃하는 것과 같은 작업에 유용할 수 있다.
var arr = ["a", "b", "c", "d"];

arr.forEach(letter => {
  console.log(letter);
});

// a
// b
// c
// d
  • map() 은 데이터를 변경할 때 선호될 수 있다. 더 빠를 뿐 아니라 새로운 배열을 반환하며, 이는 다른 메소들과 함께 사용하는 것 같이 멋진 일을 할 수 있다는 것을 의미한다.(map(), filter(), reduce() 등)
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.map(num => num * 2).filter(num => num > 5);

// arr2 = [6, 8, 10]

map() 메소드는 Array안에 요소들을 호출한다. forEach()와 다른 점은 값을 사용하고 Array와 동일한 사이즈의 새로운 Array을 반환한다.

결론적으로 map을 사용하면, 결과값을 배열로 받을수 있다. 함수 안의 결과값을 계산하지 않고, 배열로 받기 위해서는 map을 사용하는 게 유리하다.

map()은 메모리를 할당하고 리턴 값을 저장하지만, forEach()는 리턴 값을 버리고 항상 undefined를 리턴한다.

forEach()는 콜백함수로 현재 Array를 변환할 수 있으며, 대신에 map()은 새로운 Array를 리턴한다.



2. 갑자기 궁금해진 클립보드의 원리

Ctrl+C & Ctrl+V

  • 복사 기능은 '클립보드'라는 이름의 임시 메모리 블록에 지정한 텍스트 또는 사진 등의 자료가 따로 저장되는 것이며,

  • 붙여넣기 기능은 이 클립보드에 저장된 것을 불러오는 원리이다.

    • 즉, 복사를 할 수 있어도 붙여넣기를 할 수 없다면 의미가 없고, 반대의 경우도 마찬가지라고 할 수 있다.



3. 특수기호 읽는 법




4. 모달창 & 팝업창

팝업창

우선 팝업창이란 현재 열려있는 브라우저 페이지에 또다른 브라우저 페이지를 띄우는 것을 말한다. 창 + 창n 인 것이다. 브라우저에서 이 창을 열기 닫기를 제어할 수 있다. (브라우저에서 팝업창을 강제로 막아놓을 경우 보이지 않는다)

자바스크립트로 팝업창을 띄울 때,

window.onload = function(){

  window.open("popup.html", "", "width=300, height=300");

} // 브라우저가 로드됐을 때 popup.html을 너비 300 높이 300의 창으로 띄운다.

모달창

모달창은 기존의 브라우저 페이지 위에 새로운 윈도우 창이 아닌, 레이어를 까는 것을 말한다. 모달창은 제거를 하지 않고도 페이지를 이동하면 자연히 사라진다. 기존의 페이지와 부모-자식 관계를 갖는다. 브라우저의 새 창 제어 옵션에는 전혀 영향을 받지 않는다.



1. 모달창과 팝업창 목적은 같다.

창을 띄운다는 것은 특정 내용을 사용자에게 어필하고 싶다는 뜻이다. 프로모션을 진행하거나, 서비스에 대한 공지, 주의사항, 안내문 등을 전달해야할 때. 또는 강조해야할 때 새 창을 이용한다.

2. 요즘엔 팝업창을 잘 쓰지 않는다.

예전에는 한 페이지가 로드되면 팝업창이 4~5개씩 뜨기도 했다. 하지만 이는 사용자 입장에서 일일이 X를 누르며 지워야하는 불편함이 있다. 불필요한 팝업창의 등장은 강조해야하는 콘텐츠의 노출을 되려 떨어뜨리는 악효과를 낳는다.

  • 지나치게 많은 수의 팝업창 역시 지양해야 한다.

또 브라우저 옵션에서 팝업창을 차단한 사용자는 팝업창을 볼 수 없다..

(그럼에도 여전히 많은 페이지들은 팝업창을 띄운다. 사용자의 시선을 끌기에 팝업창이 유용하기 때문)

3. 팝업창은 재활용+이동이 자유롭다.

팝업창의 경우 기존의 웹페이지와 분리된 상태에서 코딩을 하기 때문에 비교적 작업 과정이 수월하다. 또 일단 팝업창을 만들어두면 언제든 재활용이 가능하며, 페이지별 이동이 자유롭다.

그래서 이런 팝업창의 이점을 모달창에 적용한 것이 iframe을 이용한 새창띄우기다.

4. 팝업+모달 = iframe 모달

iframe을 통해 모달창 생성을 하면, 모달의 형태로 브라우저 위에 새 레이어가 깔린다. 근데 이 레이어에는 기존 페이지와 별도의 html으로 구현된다. 그래서 개인적인 생각으로는 팝업+모달의 기능을 다 하고 있다고 봄.

별도의 html.. 분리됐다고 보기는 어려운데 이는 기존에 열려있던 페이지의 자식요소로 존재하기 때문. 서로 부모와 자식요소로 호출이 가능하다.



5. 에뮬레이터(emulator)란


  • 에뮬레이터는 다른 프로그램이나 장치를 지원되지 않는 하드웨어에서 소프트웨어를 실행시키기 위한 목적으로 쓰이며

    • 최근 가장 많이 사용하는 형태는 「앱플레이어」 입니다.
  • 에뮬레이터라는 것은 장치 지원이 안되는 하드웨어에서 소프트웨어를 실행시키기 위한 도구이기때문에 장단점이 있을수 밖에 없습니다.

    • 장치 환경이 맞지 않는 경우(pc사양이나 윈도우 업데이트 문제 등 다양한 장치의 환경이 맞지 않는 경우가 있을수 있겠죠?)

      다소 로딩이 느리다거나 씽크가 맞지 않는다거나의 단점이 있을수도 있습니다.

  • 일반적으로 편집 프로그램 어플 같은 경우는 이런것이 큰 문제가 안되겠지만,
    가령 게임의 경우는 사용성에 있어서 심각한 문제가 될수 있습니다.

    에뮬레이터는 안드로이드의 경우는 단적인 한가지 예일뿐이며

    오래되어 더이상 구하기 어려운 게임기와 게임을 사용하고 싶을때 많이 사용을 하곤합니다.

    • 한마디로 잊혀져간, 또는 사라진 오래된 추억의 게임을 현재에도 즐길수 있는 형태로 많이 사용하고 있습니다.

      닌텐도와 소니의 클래식 게임이 이에 해당되며 저작권적으로는 크게 문제되지 않으므로 편히 사용할수 있습니다.


시대가 빠르게 바뀌어가며 1,2년 만에도 바뀌고 사라져가기 때문에 에뮬레이터라는게 생겼으며 특히 안드로이드 기반에 있는 어플들을 사용하기 위해서는 꼭 필요한 것들입니다.



비즈니스 로직이란?

위의 아이디 중복찾기를 다시 예시로 들자면, 아래와 같은 비지니스 로직이 작성될 것입니다.

회원이 작성한 아이디 값 저장하기 -> 회원정보가 있는 데이터베이스 연결 ->
데이터베이스에 회원이 작성한 아이디 값이 있는지 Select ->
회원의 아이디가 이미 있는지 없는지 여부를 데이터화 하여 저장 ->
데이터베이스 연결 끊기 -> View영역에게 가공된 데이터 전달

이러한 비지니스 로직은 유저 눈엔 보이진 않지만, 유저가 바라는 결과물을 올바르게 도출하기 위해 코드로 짜여집니다.

즉, 프로그래머는 유저가 원하는 행위를 컴퓨터에게 잘 전달하기 위해서는 비즈니즈 로직을 잘 구상해야 한다는 의미입니다.

이처럼, 비지니스 로직은 프로그래밍에서 빠질 수 없는 요소이며, 응용 프로그램의 핵심이 됩니다.



6. CLI란?


명령 줄 인터페이스(CLI, Command line interface) 또는 명령어 인터페이스는 텍스트 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 뜻한다.

즉, 작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다.



CLI 작동방식


CLI는 크게 2개 단위로 구성 되어 있다. “입력”과 “출력”이다.


  • 우리는 이런 입출력이 가능하게 해주는 소프트웨어나 하드웨어를 터미널(terminal) 이라고 한다. 또한, 사용자가 입력한 명령어를 해석해 주는 소프트웨어를 셸(shell)이라고 한다.

  • Windows에서는 > 형태로, Mac OS, Linux 등에서는 $ 표시로 사용자의 명령을 기다리는 Command Prompt(명령 프롬프트)가 존재한다.
    사용자는 이 부분에 명령어를 “입력”한다.

  • 사용자가 특정 명령어를 통해 “입력”을 하게되면(보통 엔터키를 입력하여 명령을 종료한다.), 셸 프로그램이 입력 받은 명령어를 해석하고 명령에 해당하는 적절한 내용을 터미널에 출력 해준다.



7. UTF-8 이란?


"유니코드가변 길이 문자 인코딩 방식"


유니코드는 ASCII 인코딩 방식의 문제를 해결하기 위해 2-4byte의 공간에 여유 있게 문자를 할당하고자 등장한 방식이다.

하지만 유니코드 자체는 1바이트로 표현이 가능한 영문자도 2바이트 이상의 공간을 사용하기 때문에 이를 그대로 사용하면 메모리 낭비가 심하고, 따라서 이를 가변 길이 문자 인코딩 방식으로 효율적으로 인코딩하는 대표적인 방식이 바로 우리가 잘 아는 UTF-8 이다.


<UTF-8 바이트 순서의 이진 포맷>



8. 트러블 슈팅(Trouble Shooting) 이란?

참고


  • 트러블 슈팅이란 문제가 발생했을 때 원인을 규명하고 해결하는 작업을 의미한다.

    1. 문제 정의

      • 시스템에서 발생하는 현상을 파악하고 문제를 명확히 표현, 규정하는 단계
    2. 사실 수집

      • 정의된 문제에 대해 대략의 점검 항목과 내용을 결정하고, 자료 수집하는 단계
    3. 원인 추론

      • 수집된 자료를 바탕으로 문제의 원인을 추론하는 단계
    4. 조치 방안 작성 및 구현

      • 추론한 원인에 따른 조치 방안을 마련하고 구현 단계를 거쳐 문제를 해결



9. Third party Package


참고


  • 제조사와 소비자를 연결 해주는 회사 또는 제 3자

    ex) 게임 제조사와 소비자를 연결해주는 게임회사(퍼블리싱)의 관계

    • 중국에 크로스파이어로 성공을 거둔 스마일게이트(게임제조사)와 유저(중국 사용자)를 이어주는 텐센트(퍼블리싱)같은 예시가 있다.
  • 프로그래밍 개발을 하다보면, 편하고 효율적인 개발을 위해, 플러그인이나 라이브러리 또는 프레임워크등을 사용한다.

    ex) 프로그래밍 개발과 개발자 사이에 플러그인, 라이브러리, 프레임워크를 서드파티로 볼 수 있다.

    ex) 개발을 완료 했다면, 응용 프로그램, 어플리케이션, 웹서비스와 같은것처럼 서비스와 사용자를 이어주는 것을 서드파티로 볼 수 있다.

이처럼 제3자로써 중간 다리 역할을 하는 것을 서드파티라한다.

profile
Studying Computer Science

0개의 댓글