반응형

ruby 11

루비에서 기호를 해시 키로 사용하는 이유는 무엇입니까?

루비에서 기호를 해시 키로 사용하는 이유는 무엇입니까? 사람들은 루비 해시에서 기호를 키로 사용하는 경우가 많습니다. 끈을 사용하면 어떤 장점이 있습니까? 예: hash[:name] 대. hash['name'] TL;DR: 기호를 사용하면 비교할 때 시간이 절약될 뿐만 아니라 한 번만 저장되므로 메모리도 절약됩니다. 루비 기호는 불변(변경할 수 없음)이므로 검색하기가 훨씬 쉽습니다. 짧은 대답: 기호를 사용하면 비교할 때 시간이 절약될 뿐만 아니라 한 번만 저장되므로 메모리도 절약됩니다. Ruby의 기호는 기본적으로 "불변의 문자열"입니다. 즉, 변경할 수 없습니다. 소스 코드 전체에서 여러 번 참조할 때 동일한 기호가 항상 동일한 엔티티(예: 동일한 개체 ID)로 저장됩니다. a = 'name' a.o..

programing 2023.07.21

루비에서 배열을 내림차순으로 정렬하는 방법

루비에서 배열을 내림차순으로 정렬하는 방법 해시 배열이 있습니다. [ { :foo => 'foo', :bar => 2 }, { :foo => 'foo', :bar => 3 }, { :foo => 'foo', :bar => 5 }, ] 는 이 을 이배을다값음따에합정니의 .:bar매 해시마다 는 사용중을 하고 있습니다.sort_by배열 위에서 정렬: a.sort_by { |h| h[:bar] } 그러나 이렇게 하면 배열이 오름차순으로 정렬됩니다.내림차순으로 정렬하려면 어떻게 해야 합니까? 한 가지 해결책은 다음과 같습니다. a.sort_by { |h| -h[:bar] } 하지만 그 부정적인 징후는 적절하지 않은 것 같습니다.제안된 다양한 답변에 대한 벤치마크를 수행하는 것은 항상 유익합니다.제가 알아낸 것은..

programing 2023.07.01

after_create와 after_save의 차이점은 무엇이며 어떤 것을 사용해야 합니까?

after_create와 after_save의 차이점은 무엇이며 어떤 것을 사용해야 합니까? 이다after_create그리고.after_save기능별로 동일합니까? 계정 생성 후 사용자의 이메일로 작업을 하고 싶습니다. 데이터베이스에 저장될 때 해당 작업을 수행하고 싶습니다. 다음 중 어느 것을 사용하는 것이 좋습니다.after_create또는after_save?after_create레코드가 처음 작성된 직후에는 한 번만 작동합니다. after_save개체를 저장할 때마다 작동합니다. 수년 후에 업데이트하는 경우에도 마찬가지입니다. 따라서 이 이메일 작업을 한 번만 수행하고 다시는 수행하지 않으려면 다음을 사용합니다.after_create. 개체가 저장될 때마다 수행하려면 에서 수행합니다.after_sa..

programing 2023.06.21

지정된 디렉토리가 Ruby에 있는지 확인하는 방법

지정된 디렉토리가 Ruby에 있는지 확인하는 방법 저는 지정된 디렉토리의 존재 여부에 따라 서브버전 URL을 자동으로 체크아웃하거나 업데이트하는 스크립트를 작성하려고 합니다. 어떤 이유에서인지 코드가 작동하지 않고 잘못된 경우에도 항상 true를 반환합니다. def directory_exists?(directory) return false if Dir[directory] == nil true end 내가 뭘 잘못하고 있는 거지?찾으려는 파일이 단순한 파일이 아니라 디렉터리인지 여부가 중요한 경우 사용할 수 있습니다.File.directory?또는Dir.exist?파일이 존재하고 디렉터리인 경우에만 true가 반환됩니다. 별도로, 메소드를 작성하는 더 관용적인 방법은 Ruby가 메소드 내부의 마지막 식을 ..

programing 2023.06.16

루비의 블록에 대한 do..end vs curly brace

루비의 블록에 대한 do..end vs curly brace 제 동료 중에는 do를 사용해서는 안 된다고 적극적으로 설득하는 사람이 있습니다.Ruby에서 여러 줄 블록을 정의하기 위해 curly brace를 사용합니다. 저는 짧은 한 줄에만 곱슬곱슬한 교정기를 사용하는 것에 대해 확고하게 생각하고 있습니다.다른 모든 것을 위해 끝.하지만 저는 좀 더 큰 공동체에 연락해서 해결책을 얻으려고 생각했습니다. 그렇다면 어떤 것이 그것이고, 왜 그럴까요? (일부 코드의 예) context do setup { do_some_setup() } should "do somthing" do # some more code... end end 또는 context { setup { do_some_setup() } should(..

programing 2023.06.11

레일즈의 현재 경로는 어떻게 알 수 있습니까?

레일즈의 현재 경로는 어떻게 알 수 있습니까? 레일즈의 필터에 있는 현재 경로를 알아야 합니다.그것이 무엇인지 어떻게 알 수 있습니까? REST 리소스를 수행하고 있는데 지정된 경로가 없습니다.보기에서 특정 항목을 특수하게 사용하려는 경우current_page?다음과 같이: 'users', :action => 'index') %> ...아니면 행동과 아이디... 'users', :action => 'show', :id => 1) %> ...또는 지정된 경로... ...그리고. 왜냐면current_page?컨트롤러와 작업이 모두 필요합니다. 컨트롤러만 신경 쓸 때current_controller?Application Controller의 메서드: def current_controller?(names) na..

programing 2023.06.06

"지도" 방법은 루비에서 무엇을 합니까?

"지도" 방법은 루비에서 무엇을 합니까? 무엇인가..map수행 위치: params = (0...param_count).map 그map메소드는 열거 가능한 개체와 블록을 사용하고 각 요소에 대해 블록을 실행하여 블록에서 반환된 각 값을 출력합니다(사용자가 사용하지 않는 한 원래 개체는 변경되지 않음).map!): [1, 2, 3].map { |n| n * n } #=> [1, 4, 9] Array그리고.Range열거형입니다. mapWith a block은 배열을 반환합니다. map!원래 배열을 변형시킵니다. 이것이 어디에 도움이 되고, 무엇이 다른가?map!그리고.each다음은 예입니다. names = ['danil', 'edmund'] # here we map one array to another, co..

programing 2023.06.06

SSL 오류 루비젬 설치 시 'https://rubygems.org/ 에서 데이터를 가져올 수 없습니다.

SSL 오류 루비젬 설치 시 'https://rubygems.org/ 에서 데이터를 가져올 수 없습니다. 마이클 하틀 튜토리얼을 하려고 합니다.내 보석 세트에 레일 3.2.14를 설치하려고 하면 다음과 같은 문제가 발생합니다. 보석 설치 레일 - v 3.2.14 오류: 유효한 보석 '보석'(= 3.2.14)을 찾을 수 없습니다. 다음 이유가 있습니다. https://rubygems.org/ 에서 데이터를 다운로드할 수 없음 - SSL_connect에서 =1 errno=0 상태가 반환됨=SSLv3 읽기 서버 인증서 B: 인증서 확인 실패(https://s3.amazonaws.com/production.s3.rubygems.org/specs.4.8.gz) 구글 검색 후 루비젬에 SSL이 아닌 소스를 사용할 ..

programing 2023.06.06

루비에서 SHA1 해시를 만들려면 어떻게 해야 합니까?

루비에서 SHA1 해시를 만들려면 어떻게 해야 합니까? SHA 해시 함수require 'digest/sha1' Digest::SHA1.hexdigest 'foo' Base64 인코딩 해시의 경우 Oauth 서명을 검증하기 위해 사용했습니다. require 'base64' require 'hmac-sha1' Base64.encode64((HMAC::SHA1.new('key') Rickshaw::SHA1.hash('LICENSE.txt') => "4659d94e7082a65ca39e7b6725094f08a413250a" > "hello world".to_sha1 => "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed" 여기서 'serialize'는 다른 곳에서 정의된 일부 사용자 기..

programing 2023.06.01

주입 방법에 대한 간단한 설명이 필요합니다.

주입 방법에 대한 간단한 설명이 필요합니다. [1, 2, 3, 4].inject(0) { |result, element| result + element } # => 10 나는 이 코드를 보고 있지만 내 뇌는 숫자 10이 어떻게 결과가 될 수 있는지 등록하지 못하고 있습니다.누가 여기서 무슨 일이 일어나고 있는지 설명해 주시겠습니까?첫 번째 블록 인수는 누적기로 생각할 수 있습니다. 각 블록 실행 결과는 누적기에 저장된 다음 블록의 다음 실행으로 전달됩니다.위에 표시된 코드의 경우, 누산기, 결과가 0으로 기본 설정됩니다.블록을 실행할 때마다 지정된 숫자를 현재 총계에 추가한 다음 결과를 다시 누적기에 저장합니다.다음 블록 호출은 이 새 값을 가지고, 이 값에 추가하고, 다시 저장하고, 반복합니다. 프로세..

programing 2023.06.01
반응형