Web socket이란 무엇인가??웹 소켓이란 서버와 클라이언트 사이에 효율적인 양방향 통신을 가능하게 하는 기술이다. 실시간 채팅 어플리케이션을 사용할 때 새로고침이 없이도 다른 사람이 작성한 텍스트를 바로 바로 확인할 수 있는데 바로 Websocket 때문에 가능한 것이다. Web socket을 왜 사용하나요?기존에는 HTTP 통신을 이용해서 클라이언트와 서버가 통신을 하였습니다. HTTP는 기본적으로 Stateless 상태이기 때문에 클라이언트가 Request를 할 때만 서버에서 Response를 하게 됩니다. 이 때 발생할 수 있는 문제점은 서버는 업데이트가 되었지만, 클라이언트가 refresh를 하지 않으면 업데이트가 반영되지 않은 상태로 유지된다는 점입니다. 이전에는 프론트엔드 쪽에서 Long..
BDD와 TDD의 차이점?RSpec은 behavior-driven development (BDD) 프로세스에 효과적인 테스트 코드 작성법이다. 개발자가 직접 특징을 읽을 수 있고, 어플리케이션의 유효성을 체크할 수 있다. BDD를 간략하게 요약하자면, BDD는 테스트 케이스를 작성함에 있어서 좀 더 자연어에 가깝게 작성한다는 것이다.TDD와 BDD가 하는 것은 근본적으로 동일하지만 BDD는 테스트 양식을 함수 단위(코드 단위)가 아닌 어플리케이션 사용자의 행동(소프트웨어 명세)를 기준으로 테스트를 하는 방법입니다.이런 식으로 테스트 코드를 사용자의 행동에 따라서 분류하는 것이 바로 BDD이다. TDD는 함수를 테스트 단위로 한다면 BDD는 사용자의 시나리오를 단위로 테스트를 한다는 점에서 차이가 있다. ..
안녕하세요 강정호입니다. 오늘은 인터프리터 언어와 컴파일 언어의 차이에 대해서 알아보겠습니다. 인터프리터언어인터프리터 언어는 원시코드(프로그래머가 작성한 소스코드)를 기계어로 변환하는 과정없이 한줄 한줄 해석하여 바로 명령어를 실행하는 언어를 말합니다. R, Python, Ruby와 같은 언어들이 대표적인 인터프리터 언어입니다. 인터프리터가 직접 한 줄씩 읽고 따로 기계어로 변환하지 않기 때문에 빌드 시간이 없습니다. Runtime 상황에서는 한 줄씩 실시간으로 읽어서 실행하기 때문에 컴파일 언어에 비해 속도가 느립니다. 실행속도는 느리지만 코드 변경시 빌드 과정없이 바로 실행이 가능하다는 장점이 있습니다. 루비를 사용해보면 소스코드를 고치고 서버를 다시 시작하지 않아도 변경사항이 반영된 상태로 테스트를..
응답 액션에서의 처리 결과를 출력하기 위한 메서드가 있습니다. (줄여서 응답 메서드라고 하겠습니다.) 액션 메서드에서는 기본적으로 이러한 메서드를 모두 사용해 응답을 생성합니다. 메서드 설명 render 템플릿 호출 또는 글자/스크립트 출력 등, 범용적인 출력 redirect_to 지정된 주소로 처리를 리다이렉트 send_file 지정된 파일을 출력 send_data 지정된 바이너리 데이터를 출력 템플릿 파일을 출력 - render 메서드응답에서 가장 많이 사용되는 기본적인 메서드가 render입니다. 액션에서 명시적으로 응답 메서드를 호출하지 않으면 자동으로 render 메서드가 호출되어 템플릿 파일을 실행. 1. 액션 이름과 다른 이름의 템플릿 호출 예) ctrl#res_render 액션 => ctr..
안녕하세요 강정호입니다. 오늘은 navigation바에 로그인, 로그아웃 링크를 처리하는 것에 대해 알아보겠습니다. 작성해야할 내용1. _navigation.html.erb에서 링크 처리하는 부분2. application_controller: protected_from_forgery, helper_method, 메서드 3개. 그리고 _navigation.html에서 메서드에 어떻게 접근이 가능한지 알아보기3. UserController에서 before_action이 하는 역할에 대해서.4. || = 가 정확히 무엇인지 이해하고 작성하기.5. 와 의 차이에 대해 알아보기. ApplicationController에 로그인 유효검사 메서드 작성class ApplicationController < ActionC..
안녕하세요 강정호 입니다. 오늘은 게시물 페이징 처리를 해보겠습니다. 페이징처리 Gem file페이징 처리를 하기 위해서는 2가지 Gem 파일이 필요합니다. # 페이징을 할 수 있게 해주는 젬파일 gem 'will_paginate', '3.1.0' gem 'bootstrap-will_paginate', '0.0.10' will_paginate Gem : 이것의 역할은 페이징을 하는 메서드를 미리 구현해 놓았습니다. 그래서 페이지 번호, 한 페이지 당 게시물 수를 파라메터로 넘기면 View 페이지에서 페이징 처리가 될 수 있도록 해주는 라이브러리 입니다. bootstrap-will-paginate Gem : 이것의 역할은 페이징 한 것을 View에서 보기 좋게 UI화 하는 것입니다. 그래서 페이지 번호를 ..
구분자 문법: 일반적인 문자열, 배열, 정규표현식 외에 구분자를 이용하여 만드는 문자열을 리터럴이라고 한다. 리터럴은 %문자로 시작하고 그 다음에 하나의 문자가 따라온다. 구분자 종류종류 뜻 참조 %q 작은 따옴표로 묶인 문자열 %Q, q 큰 따옴표로묶인 문자열 %w 토큰의 배열 %r 정규표현식 패턴 %ㅌ 셀 명령어 정수와 부동소수점루비에서의 정수는 2가지 종류이다. Fixnum, Bignum Fixnum이 범위를 초과할 때마다, 그 객체는 자동으로 Bignum 객체로 변환된다. 입력 숫자 변환 타입 비고 123456 123456 Fixnum 0d123456 123456 Fixnum 123_456 123456 Fixnum 밑줄(언더바)는 무시한다. -543 -543 Fixnum 음수 0xaabb 4370..
Test::Unit 프레임워크의 기능1) 개별테스트를 표현하는 방법을 제공한다.2) 테스트를 구조화하는 프레임워크를 제공한다.3) 테스트를 수행하기 위한 유연한 방법을 제공한다. 단언문 assert사용 이유 1) 테스트 안에서 개별적인 if문들을 여러개 길게 늘어 놓지 않기 위해서2) 각 단언문은 기대되는 결과를 적을 수 있는 방법과 실제 결과를 전달하는 방법 제공 RSpec 프레임워크RSpec 프레임워크 : BDD 프로세스에서 사용하는 툴 BDD란? : 어플리케이션의 개발과정을 확인하는 사람이 읽을 수 있는 명세서를 적는 일--> 그렇게 때문에 테스트 코드에 자세한 설명이 첨부되어 있다. 1. describe 함수를 설명하는 방법 describe 키워드를 사용해서 어떤 함수를 설명하려는지 명확하게 해야..
메서드 이름에서 모호함 해소하기상황 : 같은 이름을 가진 메서드가 클래스에 있고, 그 부모 클래스에도 있고, 믹스인에도 있을 때? 루비의 검색 방식1) 객체의 클래스 자체를 검색2) 클래스에 포함된 믹스인3) 상위 클래스와 상위 클래스의 믹스인을 검색 다른 파일 포함하기 require & load load 메서드 : 1) load 메서드가 실행될 때마다 해당 이름을 가진 루비 소스코드를 포함 ex) load 'filename.rb'2) 무조건 해당 소스를 로드. --> 바뀐 소스를 다시 불러오는데 이용 가능 require 메서드 : 1) 해당 파일을 단 한번만 업로드 한다.ex) require 'filename'2) 공유된 바이너리 라이브러리 로드 가능 :리눅스에서는 .os, 윈도우에서는 .dll 파일이..
안녕하세요 강정호입니다. 이번 포스팅에서는 블로그에 가입한 모든 회원을 리스트로 보여주는 기능을 구현해보겠습니다. 1단계 : 라우터와 UserController에 메서드 생성라우터GET /users(.:format) users#index 라우터가 위와 같이 설정되어 있기 때문에 UserController에 index 메서드를 생성하여 요청을 받을 수 있도록 합니다.class UsersController < ApplicationController def index @users = User.all end모든 User 객체를 DB로부터 받아옵니다. 이를 @users에 할당하고 users 폴더의 index.html.erb 페이지에 전달합니다. 2단계 : 사용자 리스트 화면 생성index.html.erb 의 소스..
안녕하세요 강정호입니다. 오늘은 루비온레일즈로 유저 정보와 프로필 이미지 보여주기 기능에 대해서 어떻게 구현하였는지 알아보겠습니다. 1단계 : 라우터와 UserController 메서드 맵핑유저 정보 보기 라우터:GET /users/:id users#show 그래서 UserController에 다음과 같이 show 메서드를 생성합니다.def show @user = User.find(params[:id]) endparams 메서드로 :id를 파라메터로 받습니다. localhost:3000/users/1 URL에서 1을 :id로 받아 User를 검색하여 인스턴스 변수에 반환합니다. params 메서드에 대한 자세한 내용은 다음과 같습니다.params 링크 4 매개 변수컨트롤러의 액션에서는 사용자로부터 전송된..
안녕하세요 강정호입니다. 오늘은 레일즈로 회원가입하는 코드에 대해서 알아보겠습니다. [회원 가입 폼] {class: "form-horizontal", role: "form"}) do |f| %> [ ] 회원가입에 필요한 파라메터로는 username, email, password 3가지가 있습니다. 각각의 파라메터는 Symbol 형태로 Controller에 전송됩니다. :username, :email, :password로 되어야 컨트롤러에 전송됩니다. Spring에서 name='username' 으로 작성해야 파라메터가 전송되는 것과 같은 원리입니다. [UserController 코드] # Sign up을 누르면 new 라우팅으로 연결되어 new.html로 연결된다. # 하지만 @user = User.ne..
안녕하세요 강정호입니다. 오늘은 Rails Console에서 데이터 컬럼의 생성, 삭제, 변경, 유효성 체크 등을 해보겠습니다. Rails console 시작명령어 : $ rails console rails console을 터미널에 입력하면 레일즈 콘솔창이 실행이됩니다. 여기에서 데이터 컬럼을 조작할 수 있습니다. 데이터 조회명령어 : $ 모델 이름.all $ Article.all 명령어를 입력하면 데이터 테이블에 있는 Article 레코드들을 모두 조회합니다. 데이터 생성명령어 : $ 모델 이름.create(title: "내용", description: "내용") $ Article.create(title: "this is title", description: "this is description") 을..
안녕하세요 강정호입니다. 오늘은 모델, 마이그레이션, 레일즈 콘솔에 대해 공부해보겠습니다. Active Record란 무엇인가?Active Record : MVC에서 말하는 M에 해당하는 것. 즉 Model에 해당하는 것. 데이터베이스에 항구적으로 보존될 필요가 있는 비즈니스 객체를 편하게 생성하고 사용할 수 있게 해줍니다. Active Record는 ORM 시스템에 기술되어 있는 'Active Record 패턴'을 구현한 것입니다. ORM 프레임워크로서의 Active RecordActive Record에는 다양한 기능이 구현되어 있으며, 그 중에서 아래에 언급한 것들이 특히 중요합니다. 1) 모델과 그의 데이터를 표현한다.2) 모델간의 관계(Association)을 표현한다.3) 관련된 모델을 이용해서..
루비온 레일즈 라우팅, 컨트롤러, View 페이지 설정 포스팅하기
안녕하세요 강정호입니다. 오늘은 레일즈 프로젝트를 시작하는 방법에 대해 설명드리겠습니다. 레일즈 프로젝트가 시작이 안되서 2일동안 삽질을 하였네요 ㅠㅠ 아까운 내 2일... 다시는 이런 실수를 하지 않기 위해 다음과 같이 기록합니다. RubyMine IDE를 사용하여 설명하겠습니다. 1단계 : Ruby API 프로젝트를 생성합니다. 위와 같은 설정으로 Rails API를 생성합니다. 2단계 : Gemfile 파일을 확인한다. Gemfile 파일을 확인해서 gem 라이브러리가 mysql로 설정되어 있는지 확인합니다. 제가 에러가 난 이유가 이 부분이 sqlite3로 되어 있어서 에러가 발생했습니다. 3단계 : database.yml 설정 변경하기로컬 컴퓨터에 있는 mysql의 root계정, 비밀번호, 데이..
sample_hash={'a'=> 1, 'b'=>2, 'c'=>3}my_details={:name=>'mashrur', :favcolor=>'red'}my_details['favcolor']sample_hash['a'] my_hash={a:2} another_hash={a:1, b:2, c:3} another_hash[:a] #Hash의 키만 가져온다.sample_hash.keys sample_hash.each do |key, value| puts "The class for key is #{key.class} and the value is #{value.class}"end sample_hash.each do |key, value| puts "The class for key is #{key.class} a..
- Total
- Today
- Yesterday
- 월부닷컴
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- Spring boot
- 항해솔직후기
- 부동산공부
- 깃
- 개발자 회고
- 도커
- github
- Inception
- pop_back
- 인셉션
- resize
- 관계대수
- 파라메터
- Use case
- docker
- push_back
- front
- 2023년
- 월급쟁이부자들
- GIT
- 항해플러스후기
- 유즈케이스
- 열반스쿨기초반
- 내년은 빡세게!!
- 깃허브
- 재테크공부
- 폭포수
- 항해플러스백엔드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |