Ruby 애플리케이션에 무슨 일이 일어나고 있는지 궁금하시다면… 멋진 GUI 도구가 없습니다. … 하지만 ObjectSpace 모듈이 있습니다! 객체 공간 애플리케이션의 현재 상태에 대한 정보를 제공합니다. 작동 원리를 알아보겠습니다. 객체 계산 ObjectSpace 사용 프로그램에서 현재 살아 있는 개체를 알 수 있습니다. 개체가 살아 있다는 것은 무엇을 의미합니까? 개체를 가리키는 참조가 있는 한 개체는 살아 있습니다. 참조는 변수나 상수와 같은 개체에 액세스하는 방법일 뿐입니다. 개체에 도달할 수 없으면 메모리에
미니테스트가 무엇인가요? Minitest는 Ruby 테스트 라이브러리입니다. , 코드 TDD 스타일에 대한 테스트를 작성할 수 있습니다. Rails &DHH가 즐겨 사용하는 기본 테스트 프레임워크입니다. 일부 사람들은 단순성과 주요 대안(RSpec)에 비해 코드가 적기 때문에 선호합니다. 이 사진에서 볼 수 있듯이 : 이제 이 게시물은 어떤 것을 선택해야 하고 어떤 것이 더 낫다는 이야기가 아닙니다. 이 게시물은 Minitest 작동 방식에 관한 것입니다. . 궁금한 점이 있으면 가장 좋아하는 것을 사용하세요. 하
왜 포트 스캐너를 만들고 싶습니까? 포트 스캐너를 작성하는 것은 전송 계층인 TCP 프로토콜의 기초를 배울 수 있는 좋은 방법입니다. 대부분의 인터넷 프로토콜(HTTP 및 SSH 포함)에서 사용됩니다. Ruby 네트워크 프로그래밍 작동 방식에 대해 자세히 알아보는 것도 좋은 연습입니다. 포트에 대해 이야기하면서 시작하겠습니다! 포트란 무엇입니까? 우리가 포트에 대해 이야기할 때 우리가 실제로 말하는 것은 무엇입니까? O.S.의 항구 (운영 체제) 수준은 프로세스와 관련된 파일 설명자일 뿐입니다. 파일 설명자 stdout과
크리스마스에 새로운 Ruby 버전을 출시하는 것이 전통이 되었습니다. 그리고 이 게시물에서는 Ruby 2.4의 가장 흥미로운 변경 사항 중 일부를 다루려고 합니다. 그러면 뉴스를 따라갈 수 있습니다. 🙂 키워드가 있는 float#round 앱에서 float를 사용하는 경우 floor를 사용하시기 바랍니다. 또는 ceil 반올림을 위해 Float#round 메소드가 Ruby 2.4에서 기본 동작을 변경하기 때문입니다. 예 : # Ruby 2.3 (2.5).round 3 # Ruby 2.4 (2.5).round 2 기본
Ruby에는 TracePoint를 사용하여 액세스할 수 있는 추적 시스템이 내장되어 있습니다. 수업. 추적할 수 있는 것 중 일부는 메서드 호출, 새 스레드 및 예외입니다. 왜 이것을 사용하시겠습니까? 특정 메소드의 실행을 추적하려는 경우에 유용할 수 있습니다. 호출되는 다른 메서드와 반환 값이 무엇인지 확인할 수 있습니다. 몇 가지 예를 살펴보겠습니다! 메소드 호출 추적 대부분의 경우 TracePoint가 필요합니다. 내장 메소드가 아닌 애플리케이션 코드(예:넣기, 크기 등)를 추적합니다. call을 사용하여 이 작업을
이 기사에서는 Ruby 포장 및 압축 풀기 방법에 대해 알아볼 것입니다! 하지만 이러한 방법이 필요한 이유는 무엇입니까? 텍스트 작업은 바이너리 데이터 작업보다 훨씬 쉽습니다. . 텍스트를 사용하면 다음을 사용할 수 있습니다. 정규 표현식 scan과 같은 메소드 &match gsub 그러나 이진 데이터로 작업하려면 몇 가지 추가 작업이 필요합니다. 여기에서 Array#pack 및 String#unpack 메서드가 작동합니다. 간단한 문자열로 시작하여 더 흥미로운 내용으로 넘어가는 몇 가지 예를 보여드리겠습니다. 문자열
내가 가장 좋아하는 데이터 구조 중 하나는 간단하고 강력하기 때문에 해시 테이블입니다. 키-값 쌍을 저장하는 효율적인 방법이므로 이전에 사용해 본 적이 있을 것입니다. 해시 테이블 구현 이면에는 연구할 가치가 있는 몇 가지 흥미로운 컴퓨터 과학 개념이 있으며, 이것이 바로 이 기사에서 우리가 할 일입니다! 버킷 및 해시 함수 해시 테이블의 기본 아이디어는 우리가 효율적으로 (O(1)에서 ) 키로 인덱싱된 데이터를 검색합니다. 간단히 복습하자면 다음은 Ruby에서 해시 테이블을 사용하는 것과 같습니다. 가격 ={ 사과:0.50
평등은 두 가지가 같은 것을 의미합니다. Ruby에서는 객체와 값을 비교하여 동일한 객체인지 확인합니다. 질문은... Ruby에서 두 가지를 어떻게 비교합니까? 좋아요 : 1 == 1 # true 이미 알고 계실 것입니다... 하지만 == 구문이 아니라 메서드입니까? 영향이 큽니다. 자신의 클래스에서 이 메서드를 구현하여 클래스를 더욱 강력하게 만들 수 있습니다. 이 게시물에서 배우게 될 내용입니다! 두 개체를 동일하게 만드는 것은 무엇입니까? 다음과 같이 두 문자열을 비교할 수 있습니다. foo == fo
CS(Computer Science) 학위가 없다면 뭔가 놓치고 있는 것 같은 느낌이 들 수도 있습니다... 또는 CS가 너무 추상적이어서 유용하다고 느낄 수도 있습니다... 아니면 Ruby가 이미 당신을 위해 모든 노력을 기울이고 있다는 것을... 어쨌든… 해시, 스택 및 대기열과 같은 데이터 구조의 기본 사항을 이해하면 도움이 됩니다. 이 게시물에서 : Ruby에서 스택을 사용하는 방법을 알게 될 것입니다. 바로 실천에 옮길 수 있는 실용적인 컴퓨터 과학 개념! Ruby의 스택 이해 Ruby에서 스택이란 무엇입니
Ruby 내부를 간단히 둘러보고 싶으신가요? 그럼 당신은 대접을받을 것입니다. 때문에 … Ruby 객체가 메모리에 배치되는 방식과 내부 데이터 구조를 조작하여 멋진 작업을 수행하는 방법을 함께 탐구할 것입니다. 안전벨트를 매고 Ruby 인터프리터의 세계로 여행을 떠날 준비를 하세요! 배열의 메모리 레이아웃 배열을 생성할 때 Ruby는 약간의 시스템 메모리와 약간의 메타데이터로 이를 백업해야 합니다. 메타데이터 포함 : 배열 크기(항목 수) 어레이 용량 수업 객체 상태(고정 여부) 메모리에서 데이터가 저장된 위치에 대한
OOP(객체 지향 프로그래밍)의 모든 기능을 사용하고 있습니까, 아니면 놓치고 있습니까? 객체 유형에 따라 결정을 내리는 경우 중요한 OOP 기능인 다형성을 놓치게 됩니다. 유형 결정은 일반적으로 case 문(OO 친화적이지 않음) 내에서 이루어지며 이 기사에서는 이를 제거하여 더 나은 코드를 작성하는 방법을 배웁니다. 유형 확인 먼저 다형성을 활용하지 않는 예를 보여드리겠습니다. 우리는 바위, 종이, 가위 게임을 구현하고 하나의 Game을 만들기로 결정했습니다. 가능한 모든 이동에 대해 클래스 및 하나의 클래스. 승자를
IO처럼 작동하는 개체를 찾고 있습니까? 객체(파일, 소켓 등)이지만 문자열처럼 제어할 수 있습니까? 그런 다음 StringIO 당신을 위한 것입니다. 몇 가지 예와 주의해야 할 사항을 보여드리겠습니다. 기본 예 StringIO를 생성하려면 개체: io = StringIO.new(abc) 그런 다음 gets와 같은 메서드를 사용하여 이 객체에서 읽을 수 있습니다. , read &each_line . 가장 유용한 방법으로 편리한 표를 만들었습니다. 메서드 설명 얻기 입력 한 줄 읽기 읽기 특정 양의 바이트 읽기(기
이것은 Practical Computer Science 시리즈의 다음 편으로, Ruby를 사용하여 실제 문제를 해결하기 위해 고전적인 컴퓨터 과학 개념을 적용하는 방법을 배우게 될 것입니다. 오늘은 그래프 이론에 대해 이야기하겠습니다. . 이진 트리에 대해 들어본 적이 있을 것입니다. 이진 트리는 다음과 같습니다. 문제는 이진 트리가 그래프의 특수한 버전일 뿐이므로 그래프가 얼마나 널리 퍼져 있는지에 대한 아이디어를 제공해야 한다는 것입니다. 그래프 이론의 기초에 대한 개요부터 시작하여 몇 가지 실용적인 용도와 이를 Ru
Ruby에서 구조체란 무엇입니까? 구조체는 기본 제공 Ruby 클래스이며 값 개체를 생성하는 새 클래스를 만드는 데 사용됩니다. 값 개체는 관련 속성을 함께 저장하는 데 사용됩니다. 예시 : Point 두 좌표(x &y ). 이 데이터를 다양한 방식으로 나타낼 수 있습니다. 좋아요 : 배열 [10, 20] 해시 { x: 10, y: 10 } 객체 Point.new(10, 20) Point가 두 개 이상인 경우 , 객체 접근 방식을 사용하는 것이 좋습니다. 하지만... 이 두 값을 함께 저장하기 위해 전체 클
Rails/Ruby에 마법이 너무 많다는 말을 들어보셨을 수도 있습니다. 그런데 그 아이디어는 어디서 나온 거죠? Rails의 마법이란 정확히 무엇인가요? 그리고 그 마법을 없애기 위해 무엇을 할 수 있나요? 내 생각은 이렇다 : 무언가가 마술처럼 느껴질 때 그것은 당신이 모르는 무언가가 있기 때문에 일부 정보가 빠져 있기 때문입니다. 마치 마술처럼 비법을 알면 마술은 없다 . 소프트웨어 개발에서 트릭을 아는 것은 실제로 작동하는 방식을 이해하는 것과 같습니다. . 예시를 보자! 이 예는 BCrypt에 관한 것입니다
메타프로그래밍은 아주 멋진 단어처럼 들리지만, 과연 좋을까? 유용할 수 있지만 많은 사람들이 메타프로그래밍을 사용하는 데 약간의 비용이 든다는 사실을 깨닫지 못합니다. 우리는 같은 페이지에 있습니다... 메타프로그래밍이란 정확히? 저는 메타프로그래밍을 다음과 같은 방법을 사용하는 것으로 정의합니다. 코드 구조 변경(예:define_method ) 실제 Ruby 코드의 일부인 것처럼 문자열을 실행합니다(예:instance_eval ) 일부 이벤트(예:method_missing)에 대한 반응으로 수행 ) 그렇다면 메타프로그
Ruby에서 상수란 무엇입니까? 상수는 항상 대문자로 시작하는 변수 유형입니다. 외부에서만 정의할 수 있습니다. 메타프로그래밍을 사용하지 않는 한. 상수는 변경되지 않아야 하는 값에 사용되지만 Ruby는 변경을 방지하지 않습니다. 이렇게 생겼어요 : FRUIT = orange 지금 : 상수는 중요한 주제이기 때문에 이 기사에서 자세히 살펴보겠습니다! 상수 정의 방법 상수는 선언하는 데 특별한 기호나 구문이 필요하지 않습니다. 첫 글자를 대문자로 만들기만 하면 됩니다. 다음은 유효한 상수입니다. : ABC = 1 G
Ruby에서 배열을 정렬하는 것은 쉽습니다! 멋진 알고리즘을 작성할 필요가 없습니다 원하는 결과를 얻을 수 있습니다. 그렇다면 무엇이 필요할까요? Ruby의 내장 정렬 방법 이해하기 이것 : 정렬 정렬 기준 정렬! 이러한 방법은 어떻게 작동하며 왜 다른가요? 이것이 이 기사에서 알게 될 것입니다. sort로 시작하여 배열을 정렬하는 다양한 방법을 배웁니다. 메소드를 찾은 다음 sort_by를 살펴봅니다. 고급 정렬(여러 값별) 등을 위한 것입니다. 해보자! 정렬 및 정렬 사용법 배우기! 루비 메서드 가장 기본적
Ruby의 컴퓨터 공학 실용 시리즈의 세 번째 항목입니다! 오늘은 연결 리스트에 대해 알아보겠습니다. 그렇다면 연결 목록이란 무엇입니까? 이름에서 알 수 있듯이 연결 목록은 데이터를 목록 형식으로 저장하는 방법입니다(감사합니다, Captain Obvious!). 연결된 부분은 데이터가 노드에 저장되고 이러한 노드가 서로 순차적으로 연결된다는 사실에서 비롯됩니다. 배열과 어떻게 다릅니까? 연결된 목록과 배열 연결 목록은 배열과 성능 특성이 다릅니다. 이것이 다른 것보다 하나를 선택하려는 이유 중 하나입니다. 이것은 연결
Sinatra는 Ruby 웹 프레임워크입니다. Rails의 남동생 같아요... Sinatra가 어떻게 작동하는지 살펴보겠습니다. : 프로젝트에 Sinatra가 필요하면 어떻게 됩니까? 경로 일치는 어떻게 작동합니까? 요청 및 응답은 어떻게 처리되나요? 질문은 많지만 시간은 너무 짧습니다... 문제 없습니다! 나는 당신을 위해 열심히 일했고 당신이 더 빨리 배울 수 있도록 이 질문에 답하는 이 기사를 준비했습니다! 시나트라 초기화 모든 것이 하나의 파일로 시작됩니다:sinatra.rb . 이 파일이 하는 모든 일은 m