vault backup: 2026-05-26 21:21:43

This commit is contained in:
Dmitry
2026-05-26 21:21:43 +03:00
parent 614c8d5d1b
commit a30d83cb2d
8 changed files with 324 additions and 45 deletions
@@ -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+ сек.
-211
View File
@@ -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)
```