백엔드

    [Haskell] 하스켈 기초반 6강 - 패턴 매칭과 if 표현식 및 let 바인딩

    이번 시간에는 하스켈에 패턴 매칭이라는 것을 배워보고 if 표현식 및 let 바인딩을 알아보겟습니다. if / then / else 하스켈 문법은 if...then...(else...) 형태의 흔한 조건 표현식을 지원합니다 가령 인자가 a보다 작으면 (-1) 을반환하는 함수를 생각 해보면 인자가 0이면 0을, 인자가 0보다 크면 1을 반환합니다. 그런 일을 하는 signum이라는 함수가 이미 정의되 있지만 설명을 위해서 직접 정의해 봅시다. mySignum x = if x 0 then 1 else 0 이것을 다음과 같이 실행해볼 수 있습니다. *Main> mySignum 5 1 *Main> mySignum 0 0 *Main> mySignum (5-10) -1 ..

    [Redis] Redis - Redis 집합

    이번 시간에는 Redis 집합체에 대해 알아보도록 하겠습니다. Redis Sets Redis Sets이란 고유 문자열(구성원)의 순서 없는 집합을 의미합니다. Redis Sets를 사용하여 다음 작업을 효율적으로 수행할 수 있습니다. 고유 항목 추적(예: 지정된 블로그에 게시물을 엑세스하는 모든 고유 IP 주소 추적) 관계(예: 주어진 역할을 가진 모든 사용자 집합)를 나타냄 교차점, 결합 및 차이와 같은 공통 집합 연산을 수행 Redis Sets 사용 다음과 같이 사용자 123 및 456의 즐겨찾기 부분에 사용자가 읽을 책 ID 집합을 저장합니다. > SADD user:123:favorites 347 (integer) 1 > SADD user:123:favorites 561 (integer) 1 > S..

    [Rust] Rust 개념 - 1.보편적인 프로그래밍 개념 - 데이터 타입들

    이번 시간에는 Rust의 보편적인 프로그래밍 개념인 데이터 타입들에 대해 알아보도록 하겠습니다. Rust의 데이터 타입들 Rust에서 사용되는 모든 값들은 어떠한 타입을 가지고 있습니다. 그러니 어떤 형태의 데이터인지 명시하여 Rust에게 알려주면서 이를 통해 데이터를 어떻게 다룰 것인지 알수 있도록 해야 합니다. 이번 장에서는 언어에 포함되어 있는 여러 타입들을 살펴보고자 합니다. 타입은 크게 스칼라와 컴파운드 둘로 나뉠 수 있습니다. 이번 장에서 전체에 걸쳐 명심해야 함 점은 Rust는 타입이 고정된 언어라는 점 입니다. 이것이 의미하는 바는 모든 변수의 타입이 컴파일 시 반드시 정해져 있어야 한다는 겁니다. 보통 컴파일러는 우리가 값을 사용하는 지에 따라서 타입을 추측할 수 있습니다. 이번 장에서는..

    [Redis] Redis - Redis 리스트

    이번 시간에는 Redis 리스트에 대해 알아보도록 하겠습니다. Redis 리스트 Redis list는 문자열 값에 연결된 목록으로 다음과 같은 용도로 사용됩니다. 스택 및 대기열 구현 백그라운드 작업 시스템에 대한 대기열 구축 Redis 리스트 사용법 Redis 리스트를 사용하기 위해서는 다음과 같은 코드를 입력해줍니다. 리스트를 대기열 처리 (처음에 입력후 출력) > LPUSH work:queue:ids 101 (integer) 1 > LPUSH work:queue:ids 237 (integer) 2 > RPOP work:queue:ids "101" > RPOP work:queue:ids "237" 목록을 스택처럼 처리 (첫번째 입력, 마지막 출력) > LPUSH work:queue:ids 101 (i..

    [Haskell] 하스켈 기초반 5강 - 타입의 기초2

    이번 5강에서는 지난번 배운 타입의 기초에 2번째 시간입니다. 이번 장에서는 숫자 타입들이 하스켈에서 어떻게 처리되는지 보여주고 타입 시스템의 몇 가지 중요한 특성을 소개하는 시간입니다. Num 클래스 수학에는 함께 더할 수 있는 수의 종류에 몇가지 제약이 존재합니다. 예를 들어서 2 + 3(두 자연수) (-7) + 5.12(음의 정수와 실수) 1/7 + π(유리수와 무리수).. 등이 있습니다.이것들은 모두 타당하며 사실 모든 임의의 두 실수는 덧셈이 가능합니다. 그런 일반성을 가장 단순하게 포착하려면 하스켈에서는 일반화된 Number 타입이 필요하고 그런 (+)의 시그니처는 단순히 아래와 같아야 합니다. (+) :: Number -> Number -> Number 하지만 이런 설계는 컴퓨터가 산수를 하..

    [PostgreSQL] Postgresql 강좌 - 9.JOIN 문법

    JOIN JOIN 문법은 FROM에서 2개 이상의 테이블을 결합하여 다수의 행을 검색하는 것을 말합니다. JOIN의 일반적인 문법으로는 다음과 같습니다. T1 join_type T2 [ join_condition ] JOIN할 두 테이블을 입력하고 어느 타입의 JOIN을 사용할 것인지 입력 해 줍니다. JOIN절은 여러가지 타입이 존재하는데 JOIN Type [INNER] JOIN LEFT [OUTER] JOIN RIGHT [OUTER] JOIN FULL [OUTER] JOIN CROSS JOIN JOIN 타입에 대한 설명은 다음과 같습니다. JOIN 예제 예제를 실행하기 위해서 T1테이블과 T2 테이블을 생성합니다. CREATE TABLE T1( num integer PRIMARY KEY, name v..

    [deno] deno 설치와 환경변수 설정하기

    이번 시간에는 deno를 직접 설치하고 환경변수를 설정하는 방법을 알아보겠습니다. Deno 설치법 Deno는 macOS, 리눅스, 윈도우에서 작동합니다.Deno는 단인 이전 실행 파일이라 외부 종속성이 없기 때문에 maOS에서는 M1(arm64)과 인텔(x64) 실행 파일을 모두 제공합니다. 리눅스 및 윈도우즈에서는 x64만 지원하고 있습니다. macOS 설치법 curl -fsSL https://deno.land/x/install/install.sh | sh Windows PowerShell 설치법 irm https://deno.land/install.ps1 | iex cargo를 사용한 설치법 cargo install deno --locked 설치 후 버전확인 deno를 설치했다면 아래 명령어로 den..

    [deno] deno란 무엇인가?

    이번 시간에는 가장 쉽고 안전한 런타임 언어 Deno에 대해서 알아보도록 하겠습니다. Deno의 탄생 Deno는 2018년 네트워크 애플리케이션 개발언어인 Node.js의 개발자 Ryan Dahl(라이언 달)이라는 개발자를 통해 개발된 언어입니다. Deno는 자바스크립트 V8 엔진 및 Rust 프로그래밍 언어를 기반으로 하는 Javscript 및 TypeScript 용 런타임 언어로서 생산성에 중심을 두는 언어입니다. Deno의 개발자 Dahl은 2018년 "Node.js에 관한 후회 10가지"강연에서 Deno를 발표했습니다. Deno는 별도 패키지 관리 프로그램이 필요 없는 언어로써, 단일 실행 파일 내에서 런타임 및 패키지 관리자의 역할을 명시적으로 수행하기 때문 입니다. Deno의 역사 Ryan D..

    [Redis] Redis - Redis 문자열

    이번 시간에는 Redis 문자열에 대해 알아보도록 하겠습니다. Redis 문자열 Redis 문자열은 텍스트, 직렬화된 객체 및 이진 배열을 포함한 일련의 byte를 저장합니다. 따라서 문자열은 가장 기본적인 Redis 데이터 유형입니다. 문자열은 캐싱에 자주 사용되지만 카운터를 구현하고 비트 연산도 수행할 수 있는 추가기능을 지원합니다. Redis 문자열 사용법 Redis에서 문자열을 사용하기 위해서는 다음과 같이 입력해줍니다. > SET user:1 salvatore OK > GET user:1 "salvatore" 직렬화된 JSON 문자열을 저장하고 지금부터 100초후에 만료되도록 설정합니다. SET ticket:27 "\"{'username': 'priya', 'ticket_id': 321}\"" ..

    [Redis] Redis 설치하기 - Linux 기준

    [redis] 공식문서 파해치기 이번 시간에는 비관계형 데이터베이스 중 하나인 Redis 에 대해 알아보는 시간을 가져봅시다. Redis란? Redis Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker koras02.tistory.com 저번 시간에 Redis 공식문서에 대해 알아보았고 이번 시간에는 Linux 기준으로 Redis를 설치해 보고 테스트해도록 하겠습니다. 리눅스에서 Redis 설치 리눅스에서 Redis를 설치하는 방법은 공식 packages.redis.io에서 안정적인 최신 버전의 Redis를 설치할 수 있습니다. sudo apt ..

    [redis] 공식문서 파해치기

    이번 시간에는 비관계형 데이터베이스 중 하나인 Redis 에 대해 알아보는 시간을 가져봅시다. Redis란? Redis Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker redis.io Redis 공식문서 사이트에 들어가면 첫 번째 문단에 바로 이런 말이 적혀있습니다. Redis는 수백만 명의 개발자가 데이터 베이스, 캐시, 스트리밍 엔진 및 메시지 브로커로 사용하는 오픈 소스이며 메모리 내 데이터 저장소입니다. 5년 연속 가장 사랑받는 데이터베이스로 선정된 Redis는 개발자와 설계자 및 오픈 소스 기여자로 구성된 커뮤니티를 중심으로 점차 성장..

    [Haskell] 하스켈 기초반 4강 - 리스트와 튜플

    이번 4강의 시간에는 하스켈의 리스트와 튜플에 대해 배워보도록 하겠습니다. 리스트와 튜플 하스켈에서는 여러 개의 값을 관리하기 위한 근본적인 구조체가 두 가지가 있는데 바로 리스트와 튜플입니다 둘다 여러 값을 하나의 합성값으로 묶음으로써 작동합니다. 리스트 먼저 GHCi 에서 리스트 몇 개를 만들어 봅시다. Prelude> let numbers = [1,2,3,4] Prelude> let truths = [True, False, Flase] Prelude> let strings = ["it's", "perfect", "good", "strings"] 각괄호는 리스트의 범위를 제한하며 개개인의 원소들은 쉼표로 구분합니다. 여기서 중요한 제약으로는 리스트 내의 모든 원소는 타입이 같아야 합니다. 타입이 혼재..