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
@@ -0,0 +1,44 @@
---
status: seed
type: guide
tags:
- other
- printer
- kyocera
created: 2026-05-26
updated: 2026-05-26
title: Kyocera FS-1020MFP — ошибки
source: "[[В случае ошибок на принтере Kyocera FS-1020MFP]]"
---
# Kyocera FS-1020MFP — ошибки
## E-0008: Cover open
Причина: открыта крышка.
Что сработало: закрыть заднюю откидную крышку. Никаких кнопок нажимать не понадобилось.
## E-0001: Non-genuine toner
Причина: принтер видит неоригинальный картридж.
Что сработало: зажать `Mode Select` + `Stop/Reset` на 3+ секунды.
Важно: нужна именно `Mode Select`, а не зелёная кнопка `Start`. Комбинация `Start` + `Stop` не помогла.
После сброса на экране появилось `01`. Это не ошибка, а нормальный режим готовности: количество копий по умолчанию равно 1.
## E-0017: Not connected
Это не аппаратная ошибка, а отвалившийся USB.
Что сделать:
1. Нажать `Stop/Reset`.
2. Подключить USB-кабель.
3. Проверить драйвер.
## Коротко
Главная рабочая комбинация для сброса ошибки картриджа: `Mode Select` + `Stop/Reset`, удерживать 3+ секунды.
@@ -1,13 +1,15 @@
---
status: seed
status: processing
type: knowledge
tags:
- programming
- ruby
created: 2026-05-17
updated: 2026-05-17
updated: 2026-05-26
title: Ruby - массивы
source: "[[Ruby - массивы]]"
source:
- "[[Ruby - массивы]]"
- "[[Итераторы для обработки массивов Ruby]]"
---
# Ruby — массивы
@@ -95,3 +97,76 @@ a.sample(n) # n случайных элементов
a.select { |x| block } # массив элементов, для которых block == true
```
## Итераторы
`each` перебирает элементы массива:
```ruby
ary.each { |item| block }
```
Пример:
```ruby
arr.each do |x|
if x > 0 && x % 5 == 0
arr_out << x
end
end
```
`each_index` перебирает индексы:
```ruby
ary.each_index { |index| block }
```
Похожий проход по индексам:
```ruby
(0...arr.size).each do |i|
if arr[i] > 0 && arr[i] % 5 == 0
arr_out << arr[i]
end
end
```
### Поиск минимума, максимума и индексов
Императивный вариант:
```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 = gets.chomp.split.map { |i| i.to_i }
p a
max = a.max
min = a.min
maxi = a.index(max)
mini = a.index(min)
```
@@ -1,13 +1,15 @@
---
status: seed
status: processing
type: knowledge
tags:
- programming
- ruby
created: 2026-05-17
updated: 2026-05-17
updated: 2026-05-26
title: Ruby - основы языка
source: "[[Ruby - основы языка]]"
source:
- "[[Ruby - основы языка]]"
- "[[Знания Ruby]]"
---
# Ruby — основы языка
@@ -66,6 +68,40 @@ nil.class # => NilClass
**Неявное:** при математических операциях `Integer + Float``Float`.
## Значения по умолчанию
Для присваивания значения по умолчанию часто используют `||=`:
```ruby
a ||= 'что-то'
# то же самое, что:
a = a || 'что-то'
```
Это работает из-за того, что в Ruby только `nil` и `false` считаются falsey. Все остальные значения, включая `0`, пустую строку и пустой массив, в условиях считаются truthy.
Ограничение: `||=` не подходит, если `false` — допустимое сохранённое значение.
## Предикаты
В Ruby проверки часто оформляют методами-предикатами с `?` на конце:
```ruby
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
@@ -96,6 +132,142 @@ else puts "другое"
end
```
### Альтернативные условия
Тернарный оператор — короткая форма `if/else`, когда нужно выбрать одно из двух значений:
```ruby
condition ? value_if_true : value_if_false
```
Пример:
```ruby
age = 20
status = age >= 18 ? 'adult' : 'minor'
# => "adult"
```
Обычный `if/else` для того же случая:
```ruby
status =
if age >= 18
'adult'
else
'minor'
end
```
Тернарный оператор удобен, когда обе ветки короткие и возвращают простые значения:
```ruby
message = user.nil? ? 'Гость' : user.name
price = discount ? base_price * 0.9 : base_price
```
Если логика занимает несколько строк, лучше использовать обычный `if/else`. Вложенные тернарные операторы тоже лучше не писать: они быстро становятся нечитаемыми.
Плохой вариант:
```ruby
result = a > 0 ? 'positive' : a < 0 ? 'negative' : 'zero'
```
Постфиксный `if` используют для коротких выражений:
```ruby
do_something if num.zero?
```
`unless` выполняет блок, если условие ложно:
```ruby
unless something.zero?
do_something
end
```
Сложные условия внутри `unless` лучше не писать: `unless a && b` читается хуже явного `if`.
## Логические операторы
```ruby
true && false # => false
false || true # => true
!true # => false
```
Сравнение с логическими значениями строгое:
```ruby
true == 1 # => false
false == nil # => false
```
Логические операторы возвращают не обязательно `true` или `false`, а последнее вычисленное значение:
```ruby
0 && 'one' # => "one"
nil && false # => nil
```
## Оператор `<=>`
`<=>` называют spaceship-оператором. Он возвращает `-1`, `0` или `1` и часто используется при сортировке:
```ruby
1 <=> 1 # => 0
2 <=> 1 # => 1
1 <=> 2 # => -1
```
## Строки
Конкатенация:
```ruby
name = 'H' + 'e' + 'x' + 'l' + 'e' + 't'
name = 'H' 'e' 'x' 'l' 'e' 't'
```
Интерполяция работает только в двойных кавычках:
```ruby
greeting = "hello #{name}"
line_feed = "one line\nanother one"
```
Полезные методы:
```ruby
name = 'ruby'
name.upcase # => "RUBY"
name.include?('ru')
name.capitalize # => "Ruby"
name.length # => 4
```
Срезы:
```ruby
name = 'ruby'
name[1] # => "u"
name[-1] # => "y"
name[0, 2] # => "ru"
name[0..-2] # => "rub"
name[-4..] # => "ruby"
name[/ru/] # => "ru"
```
Пример маскирования номера карты:
```ruby
def prepare_card_for_display(num)
"**#{num[-4..]}"
end
```
## Циклы
| Оператор | Назначение |