vault backup: 2026-05-26 21:21:43
This commit is contained in:
@@ -1,22 +0,0 @@
|
||||
---
|
||||
status: seed
|
||||
type: concept
|
||||
tags: []
|
||||
created: 2025-12-17
|
||||
updated: 2026-05-26
|
||||
title: В случае ошибок на принтере Kyocera FS-1020MFP
|
||||
---
|
||||
|
||||
# В случае ошибок на принтере Kyocera FS-1020MFP
|
||||
|
||||
E-0008 ("Cover open" — открыта крышка)
|
||||
Сработало просто закрытие задней крышки. У тебя была открыта именно задняя откидная крышка — закрыл, ошибка пропала. Никаких кнопок не понадобилось.
|
||||
|
||||
E-0001 ("Non-genuine toner" — неоригинальный картридж)
|
||||
Сработала комбинация: зажать Mode Select + Stop/Reset (Стоп/Сброс) одновременно на 3+ секунды. Важно: НЕ зелёная "Старт", а именно кнопка Mode Select (рядом со "Стоп/Сброс", левее неё). До этого пробовали зажимать "Старт" и "Стоп" по 5 секунд — не помогало, заработало только Mode Select + Stop/Reset.
|
||||
|
||||
После сброса загорелось "01" — это не ошибка, а нормальный режим готовности (количество копий по умолчанию = 1). Принтер ожил, печать и копирование заработали.
|
||||
|
||||
E-0017 ("Not connected") — это не аппаратная ошибка, а отвалившийся USB. Решение: нажать Стоп/Сброс, подключить USB-кабель, проверить драйвер.
|
||||
|
||||
Если коротко — главная рабочая комбинация для сброса ошибки картриджа: Mode Select + Stop/Reset, удерживать 3+ сек.
|
||||
@@ -1,211 +0,0 @@
|
||||
---
|
||||
status: seed
|
||||
type: concept
|
||||
tags: []
|
||||
created: 2025-12-17
|
||||
updated: 2026-05-26
|
||||
title: Знания Ruby
|
||||
---
|
||||
|
||||
# Знания Ruby
|
||||
## Значение по умолчанию
|
||||
|
||||
В Ruby широко используется такой код:
|
||||
|
||||
```
|
||||
a ||= 'что-то'
|
||||
# a = a || 'что-то'
|
||||
```
|
||||
|
||||
Он используется для задания значения по умолчанию. Такое возможно и почти всегда безопасно из-за очень ограниченного списка _falsey_ значений. Единственное место, где этот способ не сработает – там, где `false` это допустимое значение.
|
||||
|
||||
## Предикаты
|
||||
|
||||
В Ruby в отличие от большинства других языков принято использовать предикаты практически для всех часто встречающихся проверок. Например, как мы обычно проверяем, что число равно нулю? С помощью сравнения с нулем. В Ruby это тоже работает, но это не Ruby Way:
|
||||
|
||||
```
|
||||
0.zero? # true
|
||||
1.zero? # false
|
||||
2.positive? # true
|
||||
|
||||
# чётное/нечётное
|
||||
8.even? # true
|
||||
8.odd? # false
|
||||
|
||||
''.empty? # true
|
||||
'wow'.empty? # false
|
||||
|
||||
something.nil?
|
||||
|
||||
# не пустой массив
|
||||
items.any?
|
||||
# пустой массив
|
||||
items.empty?
|
||||
```
|
||||
|
||||
## Логические операторы
|
||||
|
||||
Логический тип в Ruby представлен привычными значениями `true` и `false`, а также набором операторов `&&` (и), `==` (равно), `||` (или) и `!` (не):
|
||||
|
||||
```
|
||||
true && false # false
|
||||
false || true # true
|
||||
```
|
||||
|
||||
В отличие от многих других языков сравнение с логическим значением в Ruby строгое, то есть `true` и `false` равны только самим себе:
|
||||
|
||||
```
|
||||
true == 1 # false
|
||||
false == nil # false
|
||||
```
|
||||
|
||||
Что не отменяет возможности использовать в логических выражениях значения любых типов:
|
||||
|
||||
```
|
||||
0 && 'one' # "one"
|
||||
nil && false # nil
|
||||
```
|
||||
|
||||
В Ruby только `nil` и `false` рассматриваются как _falsey_, все остальные значения в логических выражениях приводятся к `true`.
|
||||
|
||||
Условия в Ruby выглядят похожими на условия в других языках:
|
||||
|
||||
```
|
||||
def sentence_type(text)
|
||||
# проверяем последний символ в строке
|
||||
if text.end_with?('?')
|
||||
'question' # снова нет return
|
||||
elsif text.end_with?('!')
|
||||
'exclamation' # и тут
|
||||
else
|
||||
'statement' # и тут
|
||||
end
|
||||
end
|
||||
|
||||
sentence_type 'anybody here?' # question
|
||||
sentence_type 'Hexlet for humans' # statement
|
||||
sentence_type 'boo!' # exclamation
|
||||
```
|
||||
|
||||
В Ruby условиям не нужны скобки. Выражения пишутся сразу после ключевого слова `if`. Для дополнительных условий используется ключевое словое `elsif`. И для всего остального — привычный `else`. В конце добавляется `end`.
|
||||
|
||||
В примере используется предикат (функция, возвращающая `true` или `false`) `end_with?()`. Ключевое отличие Ruby от других популярных языков — в использовании знака вопроса на конце, вместо `is` и его аналогов в начале. Этот подход перекочевал из Lisp-языков.
|
||||
|
||||
---
|
||||
|
||||
В Ruby встроен оператор `<=>` (spaceship). Этот оператор удобно использовать в функциях сортировки для определения того, нужно менять местами два соседних элемента или нет. Всего у функции возможны три разных варианта возврата:
|
||||
|
||||
```
|
||||
1 <=> 1 # 0 числа равны
|
||||
2 <=> 1 # 1 левое больше правого
|
||||
1 <=> 2 # -1 левое меньше правого
|
||||
```
|
||||
|
||||
# Ruby: Условные конструкции (альтернативные варианты)
|
||||
|
||||
Ruby поддерживает множество видов условных конструкций, которые иногда способны сделать код чуть проще и прямолинейнее. Все они встречаются в реальном коде регулярно.
|
||||
|
||||
## Тернарный оператор
|
||||
|
||||
Работает и выглядит аналогично другим языкам:
|
||||
|
||||
```
|
||||
# <expr1> ? <expr2> : <expr3>
|
||||
v = 3 == 4 ? 1 : 0
|
||||
```
|
||||
|
||||
## Постфиксный if
|
||||
|
||||
В Ruby _if_ может стоять не только в начале, но и в конце выражений:
|
||||
|
||||
```
|
||||
do_something() if num.zero?
|
||||
```
|
||||
|
||||
Подобную форму записи принято использовать тогда, когда все выражение помещается в одну строчку.
|
||||
|
||||
## Unless
|
||||
|
||||
В дополнение к _if_, в Ruby есть конструкция _unless_, которая работает в обратную сторону:
|
||||
|
||||
```
|
||||
# Пока (если) something не zero?
|
||||
unless something.zero?
|
||||
# что-то делаем
|
||||
end
|
||||
```
|
||||
|
||||
_unless_ позволяет избавляться от отрицаний, но с ним нужно быть осторожным. Если в предикате используется составное логическое выражение, то _unless_ становится не читаемым:
|
||||
|
||||
```
|
||||
# Попробуйте осознать этот код
|
||||
unless a && b
|
||||
end
|
||||
```
|
||||
|
||||
# Ruby: Строки
|
||||
|
||||
Базовые операции со строками в любом языке – это интерполяция и конкатенация. Как это делается на Ruby:
|
||||
|
||||
```
|
||||
# Конкатенация
|
||||
name = 'H' + 'e' + 'x' + 'l' + 'e' + 't' # Hexlet
|
||||
# Можно даже так
|
||||
name = 'H' 'e' 'x' 'l' 'e' 't' # Hexlet
|
||||
# Интерполяция
|
||||
greeting = "hello #{name}" # hello Hexlet
|
||||
```
|
||||
|
||||
Интерполяция выполняется только в строках с двойными кавычками. Строки, состоящие из одиночных кавычек, воспринимаются "как есть" — по аналогии с PHP.
|
||||
|
||||
```
|
||||
line_feed = "one line\nanother one"
|
||||
# one line
|
||||
# another one
|
||||
```
|
||||
|
||||
Как и в большинстве других языков, интерполяция в Ruby предпочтительнее конкатенации.
|
||||
|
||||
Помимо стандартных конкатенации и интерполяции, строки в Ruby усилены срезами и большим числом полезных методов. Вот лишь некоторые примеры:
|
||||
|
||||
```
|
||||
name = 'ruby'
|
||||
name.upcase # 'RUBY'
|
||||
''.empty? # true
|
||||
name.include? 'ru' # true
|
||||
name.capitalize # Ruby
|
||||
name.length # 4
|
||||
```
|
||||
|
||||
Одна из самых классных возможностей у строк – слайсы. С их помощью можно находить любую подстроку в строке. Слайс — тоже метод, но с дополнительным синтаксисом из квадратных скобок:
|
||||
|
||||
```
|
||||
name = 'ruby'
|
||||
# второй символ (счёт идёт с нуля)
|
||||
name[1] # u
|
||||
# Последний символ
|
||||
name[-1] # y
|
||||
# два символа, начиная с нулевого индекса
|
||||
name[0, 2] # ru
|
||||
# от первого до второго с конца
|
||||
name[0..-2] # rub
|
||||
# от 4 с конца до последнего символа
|
||||
name[-4..] # ruby
|
||||
# и даже регулярные выражения!
|
||||
name[/ru/] # ru
|
||||
```
|
||||
|
||||
```ruby
|
||||
# frozen_string_literal: True
|
||||
|
||||
|
||||
# BEGIN (write your solution here)
|
||||
|
||||
def prepare_card_for_display(num)
|
||||
|
||||
"**#{num[-4..]}"
|
||||
|
||||
end
|
||||
|
||||
# END
|
||||
```
|
||||
@@ -1,50 +0,0 @@
|
||||
---
|
||||
status: seed
|
||||
type: concept
|
||||
tags: []
|
||||
created: 2025-12-17
|
||||
updated: 2026-05-26
|
||||
title: Итераторы для обработки массивов Ruby
|
||||
---
|
||||
|
||||
# Итераторы для обработки массивов Ruby
|
||||
```ruby
|
||||
ary.each { |item| block }
|
||||
|
||||
ary.each_index { |index| block }
|
||||
```
|
||||
![[Pasted image 20260526203807.png|400]]
|
||||
![[Pasted image 20260526203848.png|400]]
|
||||
|
||||
## Практика
|
||||
|
||||
> Найти максимальный и минимальный элементы, введенного пользователем массива, а также их индексы
|
||||
|
||||
```ruby
|
||||
a = gets.chomp.split.map { |i| i.to_i }
|
||||
p a
|
||||
max = min = a[0]
|
||||
maxi = mini = 0
|
||||
for i in 1 ... a.size
|
||||
if a[i] > max
|
||||
max = a[i]
|
||||
maxi = i
|
||||
end
|
||||
if a[i] < min
|
||||
min = a[i]
|
||||
mini = i
|
||||
end
|
||||
end
|
||||
puts "Максимальное число: #{max}, индекс: #{maxi}"
|
||||
puts "Минимальное число: #{min}, индекс: #{mini}"
|
||||
```
|
||||
|
||||
```ruby
|
||||
a = get.chomp.split.map { |i| i.to_i }
|
||||
p a
|
||||
max = a.max
|
||||
min = a.min
|
||||
maxi = a.index(max)
|
||||
mini = a.index(min)
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user