Ruby에서 inspect 메서드는 어떻게 동작할까요? 그리고 왜 사용하는 걸까요? 이 글에서 그 답을 알아봅니다. 문자열이나 배열을 출력하면 내용물이 그대로 화면에 나타납니다. 예시: puts [1,2,3] 1 2 3 그런데 직접 만든 클래스의 객체를 출력하면 어떻게 될까요? 이런 결과를 보게 됩니다: #<Cat:0x29458e0> 왜 그럴까요? Ruby에게 이 클래스를 사람이 이해할 수 있는 형태로 표시하는 방법을 알려주지 않았기 때문입니다. to_s 같은 메서드를 정의하면 이 기본 동작을 바꿀 수 있습니다.
행렬(Matrix)은 스프레드시트와 같은 형태의 데이터를 저장하고 다룰 수 있는 2차원(2D) 배열입니다. 행렬은 다음과 같은 용도로 활용됩니다: 체스, 체커 등 보드 게임의 게임판 표현 통계 및 데이터 분석 플롯(plot)과 그래프 생성 행렬은 매우 강력한 자료구조이기 때문에 사용법을 익혀두면 큰 도움이 됩니다. Ruby에서 행렬 만들기 가장 간단한 방법은 배열을 중첩하여 행렬을 만드는 것입니다. 다음과 같이 작성합니다: matrix = [ [1,2,3], [4,5,6], [7,8,9] ] 위 코드는 3×3 행렬
좋은 프로그래머가 되려면 수학을 잘 알아야 할까요? 경우에 따라 다릅니다! 하루 종일 CRUD(생성·조회·수정·삭제) 애플리케이션만 작성한다면 수학 지식은 크게 필요하지 않습니다. 하지만 코딩 테스트 문제를 풀거나 개발자 면접을 준비하는 등 조금 더 흥미로운 작업을 하고 싶다면, 몇 가지 기본 개념을 익혀두는 것이 큰 도움이 됩니다. 이 글에서 배울 내용: 모듈로 연산자(%) 진법(수 체계) 비트마스킹 Ruby에서 이 개념들을 실제로 적용하는 방법까지 다루는 실용적인 가이드입니다. 그럼 시작해 보겠습니다! Ruby 모듈로 연산자
Ruby에서 initialize 메서드는 객체 생성 과정의 일부로, 객체의 초기값을 설정할 수 있게 해주는 특별한 메서드입니다. 다른 프로그래밍 언어에서는 이를 생성자(constructor)라고 부릅니다. 왜 initialize 메서드가 필요할까요? 예를 들어 좌표 x와 y 두 개의 값을 필요로 하는 Point 클래스가 있다고 가정해 보겠습니다. 그렇다면 이 값들을 어떻게 객체에 전달해야 할까요? 바로 이렇게 말입니다: Point.new(10, 20) new 메서드는 Point 클래스나 접근 가능한 다른 클래스로부터 새로운 객체
새롭고 흥미로운 루비 젬(gem)을 찾고 계신가요? 그렇다면 dry-rb를 한번 살펴보세요. dry-rb는 개발에서 자주 마주치는 문제들에 대한 해결책을 제공하는 젬 모음입니다. 18개 이상의 루비 젬으로 구성되어 있으며, 각 젬은 서로 함께 사용할 수도 있고 독립적으로 사용할 수도 있습니다. 대표적인 젬은 다음과 같습니다: dry-initializer dry-struct dry-validations dry-events dry-transaction 이 글에서는 그중 3가지 젬을 소개해 드리겠습니다. dry-rb가 어떤 가능성을
Ruby에서 주석(comment)은 코드 자체에는 영향을 주지 않으면서, 나중에 코드를 읽는 나 자신이나 다른 개발자에게 유용한 정보를 남기는 역할을 합니다. 잘 작성된 주석은 코드의 의도를 명확히 하고 협업 효율을 크게 높여줍니다. 이 글에서는 Ruby에서 사용할 수 있는 5가지 주석 유형과 각각의 올바른 사용법을 예제와 함께 살펴보겠습니다. 1. 한 줄 주석(Single-line Comment) Ruby에서 가장 많이 사용되는 주석 형태입니다. # 기호를 사용하며, 해당 기호 이후부터 줄 끝까지의 모든 내용이 주석으로 처리됩니
개발자로서 하루 중 상당한 시간을 에디터 안에서 보내게 됩니다. 그래서 자신에게 편안하고 생산성을 높여주는 에디터를 고르는 것이 무엇보다 중요합니다. 이 글에서는 여러분에게 맞는 Ruby IDE / 에디터를 선택하는 데 도움을 드리겠습니다. 이 결정 때문에 너무 고민할 필요는 없습니다. 일단 하나를 골라 몇 주간 사용해 보고 느낌을 확인하세요. 나중에 언제든 다른 에디터로 바꿀 수 있습니다. 좋은 에디터를 고르는 기준 다음 사항들을 살펴보세요: Ruby 관련 플러그인이 풍부하게 제공되어 작업을 더 쉽게 만들어 주는지 에디터가 오픈
I/O는 입력(Input)과 출력(Output)을 의미하는 용어입니다. 입력이란 컴퓨터, Ruby 메서드, 심지어 우리 뇌처럼 어떤 대상으로 들어오는 모든 데이터와 정보를 말합니다. 입력의 예시: 키보드로 누르는 키 마우스 클릭 읽고 있는 책 반면 출력은 입력의 결과로 나오는 모든 것을 의미합니다. 출력의 예시: 1 + 1의 계산 결과 읽은 기사를 요약해 작성한 글 커피 Ruby에서 I/O라고 하면 일반적으로 파일 읽기, 네트워크 소켓 작업, 화면에 정보 출력을 가리킵니다. IO 클래스 이해하기 IO는 Ruby의 클래스이기도
프로그래밍에서 부울(Boolean)은 논리 판단의 기본이 되는 값입니다. 이 글에서는 Ruby에서 부울 값이 어떻게 동작하는지, 그리고 이를 효과적으로 활용하는 방법까지 차근차근 살펴보겠습니다. 부울(Boolean)이란 무엇인가? 부울은 논리 문장에서 어떤 대상이 true(참)인지 false(거짓)인지를 나타내는 값입니다. 이 값을 통해 프로그램은 조건에 따른 의사결정을 내릴 수 있습니다. 흥미로운 점은 Ruby에는 Boolean이라는 클래스가 존재하지 않지만, 부울 객체는 분명히 존재한다는 사실입니다. 바로 true와 false이
Rake는 Ruby 생태계에서 가장 널리 사용되는 작업 실행기(task runner)입니다. 태스크(Task)란 무엇일까요? 대표적인 예시를 살펴보겠습니다. 데이터베이스 백업 생성 테스트 스위트 실행 통계 데이터 수집 및 리포트 작성 이런 작은 작업들은 Rake가 없다면 프로젝트 곳곳의 여러 파일에 흩어져 관리하기 어려워집니다. Rake는 이러한 작업들에 대한 접근을 하나의 곳에서 중앙 집중식으로 관리해 줍니다. 또한 특정 패턴에 일치하는 파일이나 최근에 수정된 파일을 찾는 것처럼 반복적인 작업도 훨씬 쉽게 처리할 수 있게 해줍
Ruby에서 클래스란 무엇인가? 클래스는 객체 지향 프로그래밍(Object-Oriented Programming, OOP)의 기본 구성 요소로, 객체를 생성하기 위한 청사진(설계도)을 정의하는 역할을 합니다. 객체는 클래스의 산물입니다. 그렇다면 객체란 정확히 무엇일까요? 객체는 고유한 정체성과 자신만의 데이터를 지닌 개별적인 실체입니다. 예를 들어: Book 클래스는 책을 생성하기 위한 설계도가 될 수 있습니다. 이 클래스는 모든 책이 공통으로 가지는 속성을 정의합니다: 제목(title) 저자(author) 페이지 수(pages
새로운 루비 트릭, 패턴, 메서드를 배우는 가장 확실한 방법 중 하나는 다른 개발자들이 작성한 코드를 읽는 것입니다. 하지만 읽을 가치가 있는 흥미로운 코드는 어디에서 찾을 수 있을까요? 다행히 오픈소스 프로젝트와 코딩 챌린지 사이트가 많습니다. 특히 코딩 챌린지 사이트는 자신의 답안을 제출한 후 다른 개발자들의 풀이를 열람할 수 있어 학습에 큰 도움이 됩니다. 이 글에서 다룰 내용: 저는 여러분이 즐겁게 읽을 만한 7가지 코드 예제를 엄선했습니다. 각 예제마다 해설을 곁들여 최대한 많은 것을 얻어 가실 수 있도록 안내해 드리겠습니
Ruby 프로그램을 원하는 시점에 일찍 종료하려면 어떻게 해야 할까요? 일반적으로 프로그램은 모든 명령어를 처리할 때까지 실행됩니다. 아니면 처리되지 않은 예외(exception)가 발생해 프로그램이 비정상적으로 끝나기 전까지만요. 하지만 항상 실행 상태를 유지할 필요가 없는 Ruby 프로그램을 작성한다면, 여러 가지 이유로 프로그램을 조기에 종료하고 싶어질 수 있습니다. 이럴 때 사용하는 것이 바로 exit 메서드입니다. 그렇다면 이 exit 메서드는 어떻게 동작할까요? 지금부터 하나씩 살펴보겠습니다. 프로그램을 멈추는 다양한 방
루비(Ruby) 인터프리터는 루비 코드를 읽어 들여 실행하는 프로그램입니다. 그런데 말이죠… 기본 루비 인터프리터인 MRI에는 흥미롭고 실용적인 명령줄 옵션이 무척 많다는 사실을 알고 계셨나요? 예를 들면: ruby -v 이 옵션은 현재 사용 중인 루비 버전을 화면에 출력해 줍니다. 또한 -e 플래그를 사용하면 별도의 파일 없이, irb에 직접 진입하지 않고도 간단한 코드를 즉시 실행할 수 있습니다. 다음과 같이요: ruby -e puts 123 이러한 플래그들은 -h 옵션으로 확인할 수 있으며, 일부 숨겨진 플래그는 --h
이 글에서는 AJAX가 왜 존재하는지 먼저 이해하고, Rails 프로젝트에서 실제로 어떻게 활용할 수 있는지 차근차근 살펴보겠습니다. 웹사이트에 접속하면 무슨 일이 일어날까요? 서버로부터 페이지가 로딩됩니다. 하지만 새로운 정보를 확인하려면 페이지를 새로고침하거나, 다른 페이지로 이동하는 링크를 클릭해야 합니다. 이것이 바로 동기식(Synchronous) 흐름입니다. 새로운 데이터는 서버에 새로운 페이지를 요청했을 때에만 표시됩니다. 그런데... 페이지 새로고침 없이 언제든 백엔드에서 데이터를 가져와 현재 페이지의 원하는 부분만 업
스코프(scope)는 모든 Ruby 개발자가 반드시 이해해야 하는 핵심 개념입니다. 왜 그럴까요? 수많은 에러 메시지와 혼란이 바로 스코프에서 비롯되기 때문입니다. 그렇다면 스코프란 무엇일까요? 스코프란 특정 시점에 어떤 변수에 접근할 수 있는지를 의미합니다. 변수의 종류에 따라 스코프의 범위도 달라집니다. 스코프는 매우 좁을 수도 있고(지역 변수), 매우 넓을 수도 있습니다(전역 변수). 상태 변경(state mutation)과 이름 충돌 문제를 피하려면 가능한 한 가장 좁은 스코프를 사용하는 것이 좋습니다. 아래에서는 스코프가
Rails에서 렌더링(Rendering)이란 무엇일까요? 렌더링은 Ruby on Rails 애플리케이션의 최종 목표입니다. 우리는 주로 HTML과 Ruby 코드가 섞여 있는 .html.erb 파일 형태의 뷰(View)를 렌더링합니다. 뷰란 사용자가 최종적으로 보게 되는 화면입니다. Rails 앱이 수행해야 하는 모든 작업의 결과물이 바로 뷰이며, 뷰는 로직과 데이터, 뷰 템플릿을 결합하여 사용자의 요청을 처리합니다. 흥미로운 점은 JSON 응답조차 하나의 뷰로 간주할 수 있다는 것입니다. 그렇기 때문에 열심히 만든 작업이 헛되지 않
Ruby의 select 메서드를 사용하면 객체 배열을 손쉽게 필터링할 수 있습니다. 예를 들어 숫자 리스트에서 짝수만 골라내야 한다면 select가 딱 맞는 도구입니다. select 없이 작성하면 다음과 같습니다: even_numbers = [] [1,2,3,4,5,6].each do |n| if n.even? even_numbers << n end end even_numbers 이렇게 간단한 작업에 코드가 꽤 길어지죠? 지금부터 select를 제대로 활용하는 방법을 알아보겠습니다. Select 메서드 기본 예
데이터 구조란 무엇일까요? 데이터 구조(Data Structure)란 데이터를 체계적으로 조직화하고 접근하는 특정한 방식을 말합니다. 대표적인 예시는 다음과 같습니다. 배열(Array) 이진 트리(Binary Tree) 해시(Hash) 각 데이터 구조는 저마다 잘하는 작업이 다릅니다. 예를 들어 해시는 사전(단어와 뜻)처럼 키-값 쌍으로 이루어진 데이터나 전화번호부(이름과 번호) 같은 데이터를 저장할 때 매우 유용합니다. 어떤 데이터 구조들이 존재하는지, 그리고 각 구조가 지닌 특성을 제대로 이해하면 한 단계 더 나은 Ruby
Redis란 무엇일까요? Redis는 인메모리(in-memory) 방식으로 동작하는 데이터베이스로, 다양한 데이터 구조를 제공합니다. 대표적인 데이터 구조는 다음과 같습니다: 키/값(Key/Value) 저장소 리스트(List) 셋(Set) Redis는 Postgres와 같은 전통적인 SQL 데이터베이스와는 완전히 다른 성격을 지니고 있습니다. Redis의 대표적인 활용 분야: 캐싱(Caching) 리더보드(순위표) 구현 방문자 수 집계 빠른 자동완성 추천 활성 사용자 세션 관리 작업 및 메시지 큐 지금부터 Ruby 애플리케이