멋진 인쇄는 출력 형식을 irb로 지정하는 멋진 보석입니다. &pry 가독성을 높일 수 있습니다. 예를 들어... 이것은 awesome_print로 해시를 표시하는 것입니다. 다음과 같이 보입니다: 하지만 어떻게 작동합니까? 진실은 오직 한 곳, 즉 코드에서만 찾을 수 있습니다. ― 로버트 C. 마틴 소스 코드를 살펴보고 알아봅시다! 멋진 인쇄 저는 프로젝트 구조(파일 및 폴더)에 대한 간략한 개요와 함께 코드 읽기 세션을 시작한 다음 앞으로의 탐색에 집중할 수 있는 질문을 하고 싶습니다. 그래서 제가 생각해낸
올바른 Ruby 방법을 사용하면 작업을 많이 줄일 수 있다는 사실을 알고 계셨습니까? 익숙한 방법이 많을수록 작업 코드를 더 빠르게 생성할 수 있습니다. &이 코드는 성능과 품질 모두에서 더 좋아질 것입니다. 그래서 오늘은 그동안 보지 못했던 재미있는 방법 7가지를 소개하고자 합니다. 내용 1 Integer#digits 메소드(Ruby 2.4) 2 탭 방식 배열#values_at 3개 4 해시#transform_values(루비 2.4) 5 커널#itself(루비 2.2) 6배열#count 7 열거 가능한#cycle 8 요약
차이점을 찾기 위해 요소별로 두 배열을 비교한다고 가정해 보겠습니다. 또는 모든 인덱스에서 가장 큰 수를 찾거나 키 목록과 값 목록을 병합하여 해시를 만들고 싶을 수도 있습니다... ...이를 수행하는 어려운 방법은 다음과 같습니다. 예 : a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.map.with_index { |_, idx| [a[idx], b[idx]] } # [[1, 1], [2, 2], [3, 3], [4, 6], [5, 8]] 그렇게 하면 작업이 완료되지만 예쁘지 않죠? 또한 무슨
오늘은 Ruby transpose 방법을 사용하여 Ruby에서 그리드를 처리하는 방법을 배울 것입니다. 다차원 배열 형태의 완벽한 그리드(예:3×3 정사각형)가 있다고 상상해 보세요. 그리고 행을 가져와 열로 변환하려는 경우 . 왜 그렇게 하시겠습니까? 한 가지 용도는 고전 게임인 tic-tac-toe입니다. 보드를 그리드로 저장합니다. 그런 다음 승리한 움직임을 찾으려면 행을 확인해야 합니다. , 열 &대각선 . 문제는 그리드를 배열로 저장하는 경우 행에만 직접 액세스할 수 있다는 것입니다. 열렬한 방법 직접 액세스란
새로운 Ruby 버전은 계속 개선되고 있으며 Ruby 2.5도 다르지 않습니다. 루비 2.5 다음과 같은 최적화를 소개합니다. 큰 문자열이 생성되면 문자열 보간 속도가 약 72% 빨라집니다. String#prepend는 하나의 인수만 제공되는 경우 약 42% 더 빠릅니다. Enumerable#sort_by, Enumerable#min_by 및 Enumerable#max_by가 약 50% 빨라집니다. 몇 가지 벤치마크를 살펴보겠습니다! 문자열 보간 성능 이 최적화를 위해 커밋 메시지에서 예제 코드를 가져왔습니다. requi
Ruby 기술을 연습하고 작업할 작은 프로젝트를 찾고 있다면 바로 찾아오셨습니다. 오늘은 여러분과 함께 링크 단축기 응용 프로그램을 만들려고 합니다. 링크 단축기란 무엇인가요? 분명히 전에 본 적이 있을 것입니다... 다음과 같은 짧은 링크: https://t.co/eKBRm2tTUF 이 URL을 방문하면 원래 URL로 리디렉션됩니다. 하지만 어떻게 작동합니까? 아이디어는 이 코드를 매핑하는 것입니다. eKBRm2tTUF 예에서는 데이터베이스의 원래 URL로 이동합니다. 간단한 개념이지만 처리해야 할 몇 가지 사
Ruby 개발에 Atom을 사용하는 경우 플러그인(packages Atom에서) 편집기로 생산성을 향상시킬 수 있습니다. 하지만 Atom의 패키지 저장소에는 수천 개의 패키지가 있습니다! 어떤 것을 사용해야 하나요? 또한 더 빠르게 작업할 수 있는 유용한 키보드 단축키는 무엇입니까? Atom 사용자라면 이 기사를 좋아할 것입니다. 바로 여기에서 다루는 내용이기 때문입니다! 최고의 아톰 패키지 Atom 패키지는 편집기에 새로운 기능을 추가합니다. 편집기의 인터페이스 자체에서 설치할 수 있습니다. 설정을 엽니다(CTRL +
접두사 트리(트라이라고도 함)는 단어 목록을 구성하고 특정 접두사로 시작하는 단어를 빠르게 찾는 데 도움이 되는 데이터 구조입니다. 예를 들어, cat 또는 cape와 같이 ca로 시작하는 모든 단어를 사전에서 찾을 수 있습니다. 이 사진을 보세요: 이것은 접두사 트리입니다. 루트(* ) 표시된 노드(예:e 및 t ) 단어를 찾습니다. 이 기사에서는 Ruby에서 고유한 접두사 트리를 구현하는 방법과 이를 사용하여 문제를 해결하는 방법을 배울 것입니다! 접두사 트리 구현 Ruby에서 이것을 구현하기 위해 Node를 사용
Ruby는 의도적으로 일부 오류 및 예외를 숨깁니다. 때때로 이것은 유용할 수 있습니다. Kernel#loop를 사용할 때와 같이 블록이 있는 메소드, loop StopIteration일 때 중지됩니다. 예외가 발생합니다. 그러나 다른 경우에는 디버깅 세션이 훨씬 더 어려워질 수 있습니다. 몇 가지 예를 살펴보겠습니다! 숨겨진 예외:비교 가능한 모듈 + 메서드 첫 번째 예는 Comparable 모듈 및 <=> 방법. 예시 : class MyObject attr_accessor :value inclu
없음... 정말 무엇입니까? 음, nil 빈 또는 기본 값을 나타내는 데 사용되는 특수 Ruby 객체입니다. 또한 거짓 값입니다. 즉, false처럼 동작합니다. 조건문에서 사용될 때. 지금 : nil은 하나만 있습니다. object_id가 있는 개체 4 중 (또는 8 64비트 Ruby에서) 이것이 nil인 이유의 일부입니다. 특별합니다. nil.object_id # 4 자세히 살펴보겠습니다! Nil 값은 어디에서 오는가? 많은 메서드가 nil을 반환할 수 있습니다. 결과적으로. 값을 요청했지만 해당 값을 사용할 수
문자열은 일련의 문자입니다. 문자열은 객체이므로 이를 사용하여 작업을 수행할 수 있는 많은 메서드가 있습니다. 이 기사에서는 가장 유용한 Ruby 문자열 메소드를 발견할 것입니다. 예시와 함께! 내용 1 문자열 길이를 얻는 방법 2 문자열이 비어 있는지 확인하는 방법 3 문자열 보간이란 무엇입니까? 4 부분 문자열 추출 방법 5 문자열에 다른 문자열이 포함되어 있는지 확인하는 방법 6 루비 문자열을 채우는 방법 7 대소문자를 무시하고 문자열 비교 8 문자열을 자르고 공백을 제거하는 방법 9 문자열 접두사 및 접미사 10 문자
방금 함수형 프로그래밍에 대해 들었고 몇 가지 질문이 있을 수 있습니다. 좋아요... 함수형 프로그래밍이란 정확히 무엇인가요? 객체 지향 프로그래밍과 비교하면 어떤가요? Ruby에서 함수형 프로그래밍을 사용해야 합니까? 어떻게 작동하는지 더 잘 이해할 수 있도록 이 질문에 답변해 드리겠습니다. 함수형 프로그래밍이란 무엇입니까? 단순한 유행어나 멋진 단어가 아니라 오래전부터 존재했지만 최근 다시 인기를 얻고 있는 실제 프로그래밍 패러다임입니다. 그리고 이 패러다임의 이면에 있는 기본 아이디어는 생각보다 이해하기 쉽습니다.
기호는 다음과 같습니다. :테스트 기호를 변수와 혼동하는 사람도 있지만 변수와는 아무 상관이 없습니다... ...기호는 문자열과 훨씬 비슷합니다. . 그렇다면 Ruby 기호와 문자열의 차이점은 무엇입니까? 문자열은 데이터 작업에 사용됩니다. . 기호는 식별자입니다. . 이것이 주요 차이점입니다. 기호는 단순히 다른 종류의 문자열이 아니라 다른 목적을 가지고 있습니다. 기호를 사용하는 경우 기호의 가장 일반적인 용도 중 하나는 메소드 및 인스턴스 변수 이름을 나타내는 것입니다. . 예 : attr_reader :제목
C 확장을 작성하면 C에서 Ruby와 상호 작용할 수 있습니다. C의 속도로 최적화하려는 특정 중요한 방법이 있거나 C 라이브러리와 Ruby 간의 인터페이스를 생성하려는 경우 이 작업을 수행할 수 있습니다. 대안은 FFI 모듈을 사용하는 것입니다. 지금 : C 확장자를 작성하는 방법을 알아봅시다! 첫 번째 C 확장 extconf.rb라는 파일을 만듭니다. 다음 콘텐츠: require mkmf create_header create_makefile foobar 그런 다음 ruby extconf.rb를 실행합니다. 그러면
시간 복잡도는 컴퓨터 과학에서 배울 수 있는 가장 흥미로운 개념 중 하나이며 이해하는 데 학위가 필요하지 않습니다! 특정 알고리즘이나 프로그램이 느린 이유를 이해하는 데 도움이 되기 때문에 흥미롭습니다. 및 더 빠르게 만들기 위해 무엇을 할 수 있습니까? 이것을 자신의 코드에 적용할 수 있습니다. 이것은 모든 멋진 알고리즘을 뛰어넘습니다 이 기사의 뒷부분에서 설명하겠지만 컴퓨터 과학 서적에서 찾을 수 있습니다. 하지만 먼저 무엇이 느리고 무엇이 빠른지에 대해 이야기해야 합니다. 느림 vs 빠름 150ms(밀리초) 동안 10
Ruby에서 메모리 할당은 어떻게 작동합니까? Ruby는 페이지라고 하는 청크로 메모리를 가져오고 여기에 새 개체가 저장됩니다. 그럼... 이 페이지가 가득 차면 더 많은 메모리가 필요합니다. Ruby는 malloc을 사용하여 운영 체제에서 더 많은 메모리를 요청합니다. 기능. 이 malloc 기능은 운영 체제 자체의 일부이지만 사용할 수 있는 대체 구현이 있습니다. 이러한 구현 중 하나는 Google의 tcmalloc입니다. TCmalloc은 Google 성능 도구 제품군의 일부입니다. 이러한 도구를 사용하여 R
메모리 누수를 찾는 방법에 대한 몇 가지 기사가 있습니다. 그러나 하나를 만드는 것은 어떻습니까? Ruby에서 메모리 누수가 어떻게 보이는지 알 수 있도록 흥미로운 연습이 될 것이라고 생각합니다. 몇 가지 예를 살펴보겠습니다. 간단한 누출 배열에 새 개체를 추가하기만 하면 메모리 누수가 발생할 수 있습니다. 좋아요 : a = [] b = {} loop { sleep(1) 10_000.times { a << abc } puts GC.stat(b)[:heap_live_slots] } 이것은 매초 10k 문
데코레이터 디자인 패턴이란 무엇입니까? Ruby 프로젝트에서 이 패턴을 어떻게 사용할 수 있습니까? 데코레이터 디자인 패턴은 새로운 기능을 추가하여 개체를 향상시키는 데 도움이 됩니다. 클래스를 변경하지 않고도 사용할 수 있습니다. 예를 살펴보겠습니다! 로깅 및 성능 이 예에서는 rest-client와 같은 gem을 사용하여 HTTP 요청을 만들고 있습니다. 다음과 같습니다. require restclient data = RestClient.get(www.rubyguides.com) 지금 : 일부 요청에 로깅을 추
전략 디자인 패턴에 대해 이야기합시다! 이 디자인 패턴은 메소드 내부의 주요 알고리즘을 변경하는 데 도움이 됩니다. 클래스에 하드코딩하는 대신 이 알고리즘을 구현하는 클래스를 전달하면 됩니다. 그리고 내가 알고리즘이라고 하면 멋진 컴퓨터 과학 알고리즘이 아니라 결과를 얻기 위해 일련의 단계를 따르는 모든 코드를 의미합니다. 전략 패턴을 사용하는 경우 이 패턴이 정확히 어떤 문제를 풀고 있습니까? 개방/폐쇄 원리 문제. 이 원칙은 다음과 같이 말합니다. 소프트웨어 엔터티(클래스, 모듈, 메서드)는 확장을 위해 열리고 수
가장 중요한 두 가지 객체 지향 원칙은 응집력과 결합입니다. 결속력 클래스 내부의 모든 메소드 간의 관계에 관한 것입니다. 동일한 인스턴스 변수 및 매개변수 세트를 사용하고 있습니까, 모두 동일한 목표를 위해 함께 작동 ? 아니면 모든 방법이 서로 분리되어 느껴지나요? 커플링 클래스가 다른 클래스에 얼마나 종속되어 있는지, 시스템의 나머지 부분에 얼마나 연결되어 있는지, 이 클래스가 개별적으로 사용되는 능력입니다. 이 두 개념 모두 특정 렌즈 세트를 통해 코드 기반의 모든 클래스를 보는 데 도움이 됩니다. 이 렌즈는 수업