ruby (8) 썸네일형 리스트형 문자열 내에 링크가 있으면 <a href> 구문을 추가해주는 헬퍼 def convert_link_in_string( string ) regex = "\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]" content = string if string.match( regex ).present? && string.match( regex )[0].present? && string.match( regex )[0].include?('http') link = string.match( regex )[0] content = string.gsub(link, "#{ link }") end return raw( content ) end Devise로 이메일 인증 구현하기 환경루비 버전 : ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin17]레일즈 버전 : Rails 5.1.6 구현필요한 잼은 두가지이다. Devise 버전 : 4.4.3mailgun 버전 : 1.1.6 인스톨을 하고 디바이스로 유저를 생성한다. $ rails g devise User 가장 먼저 모델(여기서는 User)에 confirmable 을 추가해준다. class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authe.. 개발 문서, 어떻게 작성하는게 좋을까? 나는 나름 꼼꼼이라면 한 꼼꼼한다고 자부한다.정리도 나름 잘한다고 생각한다. 언제나 프로젝트를 진행할때는 깃허브의 위키에 개요나 내용을 적어두고 시작하고 했었다. 문제는 엄청나게 안정화된 프로젝트가 아니라면 수정해야할 사항이 넘처난다는 것이다.때로는 기존에 작성된 내용을 통체로 갈아 엎어야 할때도 많다. ㅜㅜㅜㅜ 그래서 이제는 위키를 버리고 이슈를 사용중이다.이슈를 이용해서 변경사항의 히스토리를 기록하는 것이다. 개발이라는 것은, 결국 프로젝트의 실시간 진화(?)에 가깝다.멈춰있는 프로젝트란 존재하지 않는다. 점점 쓸모없어질 것이니까 말이다. 중요한점은 히스토리화 하고, 나중에 잘 찾을 수 있어야 한다는 것이다.그런점에서 깃허브는 빗버킷보다는 '보기가 편하다' 개인적으로. 고정된 문서인 위키 > 이슈로 .. 루비 정규식 테스트 사이트 http://www.rubular.com 정규식을 테스트 할라면 엄청 귀찮고 감도 잘 안온다. 그럴때 위 사이트를 이용하면 매우 손쉽게 가능 예제 )정규식에 쓸 내용 : [0-9]{4}+\.[0-9]{2}+\.[0-9]{2}텍스트에 쓸 내용 : 2018.02.09 07:30 테이블을 생성할때 상태(state) 설정에 대한 고찰 서비스를 개발하다보면 모델 생성을 위한 테이블 생성시 모델의 상태 항목을 추가할 경우가 많다. 보통은 boolean형으로도 충분한 경우가 많지만 또 많은 경우에 true, false 외에 제 3의 상태가 필요한 경우가 많다. 그렇다고 특정경우에 boolean, Integer를 병행하면 코드의 일관성이 깨져서 좋지 못한 방법이 된다.(쿼리를 날릴때마다 해당 테이블의 상태값이 Boolean인지 Integer인지 생각하는건 좋지 않다.) 처음부터 Integer로 하는 것이 좋다. 아마도... 인덱스가 걸려있는 컬럼을 지우면 어떻게 될까? 데이터 수집 서비스를 하나 운영하다, 쓸모없는 컬럼이 생겨서 삭제하고 싶어졌다. 문제는 해당 테이블이 1억 2천만 줄이라는 사실......... 과연 컬럼을 삭제하면 인덱스는 어떻게 되지??????결론은 해당 컬럼만 빠진 인덱스가 생긴다. 요약:루비온 레일즈에서 1억 2천만 줄의 테이블에서 다중 인덱스가 걸린 컬럼 하나를 삭제함약 1시간이 걸려서 컬럼이 삭제됨인덱스는 해당 컬럼만 제외하고 존재함 레일즈 벨리데이션은 믿을 수 있는가? 초당 약 50개를 insert하는 시스템을 구축하고 있다. 0.1초에 5개를 insert한다.데이터는 간단한데 4개의 String 데이터를 insert하는 구조이다. 그 중 컬럼 A + C는 중복 될 수 없다.A에 “고기” C에 “강남”이면 다시 테이블에 A가 고기고 C가 강남인 데이터가 들어갈 수 없다.즉 복합 고유키 설정이다. 나는 모델에 벨리데이션을 줘서 해당 규칙을 유니크로 만들었다. > validates : A , uniqueness: { scope: :C } 아니 근데 왠걸…..계속해서 중복값이 들어온다. 여러가지 방안으로 분석한 결과,놀랍게도 시분초까지 완벽하게 일치하는 데이터 여러개가 입력되었다. 해당 row는 id값만 달랐다. 레일즈의 벨리데이션은 완벽하게 자신의 역할을 수행하지 못한다는.. Map, Filter, Reduce - 컬렉션타입을 더 쉽고 편리하게! [이미지 출처 : https://www.joshmorony.com/filtering-mapping-and-reducing-arrays-in-ionic-2/] Swift에는 컬렉션타입을 사용할 때 매우 편리하게 쓸 수 있는 몇 가지의 함수를 제공한다.루비 개발자라면 익숙한 Map, Filter, Reduce가 그것이다. 이 3가지 함수는 데이터를 주로 처리하는 작업의 양을 획기적으로 줄여주기 때문에 필수적으로 익혀두는 것이 좋다. Map 맵은 컬렉션타입을 순환하여 특정 값을 결과값으로 리턴해 준다. 예제를 보자. let number: Array = [1, 2, 3, 4, 5] number 배열은 총 5개의 값을 가지고 있다. 만일 해당 값에 일괄적으로 * 2를 하고 싶다면 print( number.map(.. 이전 1 다음