[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/개발상식 30

Docker란?

서버를 구축하는 것은 귀찮은 일이다. 새로운 환경인 서버에 언어, 웹서버, DB, 자동배포툴 등을 모두 설치해야하기 때문이다. 거기다 개발환경에 따라 도구의 버전 역시 중요하기 때문에 이 역시 신경써줘야 한다. 서버를 운영하다보면 서버를 옮기거나 확장할 일이 많다. 이 때마다 서버환경을 똑같이 구축해주는 것은 상당히 귀찮다. 거기다 다른 사람이 구축한 서버를 처리해야하는 일이 발생할 경우 매우 번거로운 상황이 된다. 또한 한 서버에서 여러 서비스를 돌릴 때 각 서비스의 개발환경이 다른 경우 이를 처리해주기 어렵다. Docker? 이런 서버운영의 어려움을 해결해주는 것이 Docker이다. 개발도구들이 설치된 모습을 '이미지'화하여 DockerHubd에 업로드하고 다운로드한다. 이미지로 저장된..

CI/CD란?

CI/CD란? CI(Continuous Integration) : 지속적 통합 CD(Continuous Deployment) : 지속적 배포 코드 저장소(Github, BitBucket, GitLab)에 코드를 통합시키면 CI로 통합된 코드에 에러가 없는지 체크하고 CD로 배포한다. 설치형 도구인 Jenkins 클라우드형 도구인 Travis CI, Circle CI 등이 있다. 코드 저장소인 Github, BitBucket,GitLab 등에서 자체 제공하는 기능들도 있다. (Github Actions,GitLab CI/CD,BitBucket Pipelines) 설치형 : Jenkins 내 컴퓨터 혹은 서비스가 돌아갈 서버에 직접 설치 후 사용한다. (윈도우, 맥, 리눅스 모두에서 사용 가능) 설치 시 해..

유데미(Udemy) 한글자막 undefined 해결 (21.07.15)

https://fomaios.tistory.com/entry/Udemy-%EC%8B%A4%EC%8B%9C%EA%B0%84-%ED%95%9C%EA%B8%80-%EC%9E%90%EB%A7%89%EC%9C%BC%EB%A1%9C-%EB%B3%B4%EB%8A%94-%EB%B0%A9%EB%B2%95featChrome Udemy 실시간 한글 자막으로 보는 방법(feat.Chrome) 안녕하세요 Foma 입니다! 저는 평소에 공부를 할때 Udemy를 자주 이용하는편인데요. 영어를 잘하진 못하지만 그냥 꾸역꾸역 영어로 들으면서 강의를 들을때가 많았습니다. 그래서 거의 코드를 보 fomaios.tistory.com 영어실력이 좋지 못한 나는 늘 유데미 강의의 자막을 실시간 번역하여 수강한다. 번역 퀄리티가 완벽하지는 않지..

함수형 프로그래밍이란?

함수형 프로그래밍? 절차지향 프로그래밍,객체지향 프로그래밍, 함수형 프로그래밍 등을 '프로그래밍 패러다임'이라고 한다. 그 중 수학과 밀접하게 연관되어 함수의 사용을 메인컨셉으로 하는 것이 함수형 프로그래밍이다. 수학에서 주어진 데이터를 처리해 결과값을 도출하듯, 내외부 소통이 한정된 파이프라인(=함수)들을 묶어가며 프로그램을 구성해 나간다. Haskell, OCaml 등 함수형에 특화된 프로그래밍 언어도 있고 자바스크립트, 자바, 코틀린, Go, C++ 등 최근 객체지향과 더불어 함수형 프로그래밍 특징을 접목한 언어들도 많다. 프로그래밍 언어 역사와 함수형 프로그래밍 1958년 첫번째 함수형 프로그래밍 언어라고 할 수 있는 LISP가 등장했다. 우리가 보통 제일 처음으로 많이 배우는 프로그래밍 언어인 ..

명령형 UI와 선언형 UI

명령형 UI(Imperative UI), 선언형 UI(Declartive UI) 명령형 방식에서는위와 같은 작업을 위해서는 ViewB에 접근해서 selector 혹은 findViewById등의 도구로 인스턴스b를 찾고나서야, 하나씩 작업을 수행할 수 있다. 이러한 방식은 UI를 '어떻게' 구성하는지 개발자가 직접 상세히 기술하는 것이기 때문에 생산성을 많이 낮춘다. // Imperative style b.setColor(red) b.clearChildren() ViewC c3 = new ViewC(...) b.add(c3) 반면 선언형 방식의 경우 속해 있는 것들의 '선언'만 바꿔주면 된다. 즉, '어떻게'보다 '무엇을'에 집중할 수 있는 것이다. // Declarative style return Vie..

SSH(Secure Shell Protocol)

SSH(Secure Shell Protocol) SSH : 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜. 데이터전송과 원격제어 두가지 용도로 주로 사용된다. Public key와 Private key가 서로 복잡한 수학적 관계를 맺으며 인증과정을 만들어내기 때문에 다른 프로토콜에 비해 안전하다. SSH Server와 SSH Client로 구성되며, SSH Client가 입력한 명령이 SSH Server로 전달되어 SSH Server가 설치된 컴퓨터를 조작하게 된다. 그렇게 조작된 결과는 SSH Client에게 다시 전송된다. openssh openssh? ssh 서비스중 하나 $ sudo apt..

Linux - web server & apache

web server 인터넷은 클라이언트와 서버간의 소통으로 구성되어 있다. 클라이언트는 서버에게 request를, 서버는 클라이언트에게 response를 보내주며 상호작용하는 것이다. 클라이언트를 하는 컴퓨터에서는 웹브라우저가 정보를 요청(request)하는 역할을 한다. (ex. firefox, ie, chrome) 서버역할을 하는 컴퓨터에서는 웹서버가 정보를 전달(response)해주는 역할을 한다. (ex. apache, nginx, iis) 사실 Linux를 서버로 운용하기 위해 사용할 수 있는 방법은 여러가지가 있다, 하지만 그 중 가장 보편적이면서도 편리한 것이 웹서버이기 때문에 웹서버가 흔히 쓰인다. apache $ sudo apt-get install apache2 apache 패키지를 설..

SPA(Single Page Application)? (Angular, React, Vue)

SPA(Single Page Application) 다양한 MVC 프레임워크로 편리한 개발이 가능해졌지만, 특정 페이지를 업데이트할 때 페이지를 리다이렉션하는 불편함이 있었다. 예를 들어 좋아요를 누르는 등의 간단한 작업을 하더라도 새로고침을 해야하는 것이다. 그런 불편함을 해소하기 위해 등장한 것이 Angular나 React, Vue같은 Single Page Application이다. 이러한 Single Page Application의 서버는 단순히 html,css,javascript 정보를 브라우저에 전송한다. 이 때 포함된 javascript 코드가 웹서버처럼 html 페이지를 랜더링해주는 역할을 한다. 그리고 필요한 데이터(EX. 좋아요 갯수, 좋아요 여부 등)가 저장되는 백엔드 서버는 따로 구성..

Github를 이용해 페이지 배포하기 (gh-pages)

Github Pages 깃허브를 이용해 웹 사이트를 무료로 호스팅할 수 있는 서비스 사용자가 깃허브 레포에 자신의 웹 프로젝트 빌드 결과물을 업로드하면 깃허브가 그를 호스팅한다. 일반 사용자는 public 레포에 대해서만 무료 호스팅이 가능하고, private 레포를 호스팅하기 위해선 깃허브 프로 계정이 필요하다. 설치 아래 커맨드를 입력해 본인의 node.js 프로젝트에 gh-pages 패키지를 설치한다. npm i gh-pages 프로젝트의 package.json에 homepage 항목을 추가한다. { "homepage" : "https://(GitHub ID).github.io/(Repository name)/" } 프로젝트 package.json의 script에 predeploy와 deploy를 ..

ORM 이란

ORM(Object-Relational Mapping) 객체 관계 매핑(Object-relational mapping; ORM)은 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다. 객체 지향 언어에서 사용할 수 있는 "가상" 객체 데이터베이스를 구축하는 방법이다. 객체 관계 매핑을 가능하게 하는 상용 또는 무료 소프트웨어 패키지들이 있고, 경우에 따라서는 독자적으로 개발하기도한다. (출처 : 위키백과) django를 예로 들자면 파이썬 클래스를 통해 데이터테이블의 형태를 정의하고, 해당 클래스의 인스턴스를 추가함으로써 데이터를 추가할 수 있도록 하는 것이다. 데이터베이스를 프로그래밍 언어 다루듯 다룰 수 있어 용이하다.