develop.16: Обсуждение вопросов программирования


1 . . . 7 8
Reply to: wXAyfQAOsi1dkicCtLhV
From: Difrex (tavern,23) 29.08.18 06:24 UTC
To: Anotheroneuser
Subject: Re: Emacs: как вставить одно и то же слово
Anotheroneuser> Не-не ) Ты сказал, что можно -- это главное. Может попробую написать сам.. Иначе так никогда не начну. То же, блин, и с играми: учиться программированию с нуля слишком долго.

Ок, пиши сам =). Направлю тебя в нужном направлении:
В GNU Emacs есть функция *query-replace-regexp* которая по-дефолту забиндина на C-M-%
Если знаешь регекспы, то там становится вообще просто :).

Только регион выдели, в который будешь вставлять.

*** Sent from my GNU Emacs

Reply to: WPWcJfPQjQA3ZvGujqfO
From: Anotheroneuser (syscall,27) 29.08.18 08:23 UTC
To: Difrex
Subject: Re: Emacs: как вставить одно и то же слово
Вот спасибо )

> Если знаешь регекспы, то там становится вообще просто
Не, не знаю. Но надо себя заставить...
Уж очень полезен этот трюк с одновременным добавлением слов куда-надо.

From: Anotheroneuser (syscall,27) 14.09.18 09:38 UTC
To: All
Subject: Разгрёб фото и пр. материалов. Перемещение, классификация
Прошу помощи.. Искал-искал, но пока тщетно. Многие из нас сталкиваются с такой проблемой, но немногие умеют писать сценарии для BASH.

Съёмный диск объёмом 1 Тб
На нём кучи каталогов, в которые я годами сваливал каталоги с фото- аудио- видео- и пр. материалами.
Кое-какая классификация есть, но она такова, что приходится постоянно рыться, буквально утопая в воспоминаниях и теряя ценные силы (потому что, ясен хрен, всплывающие образы вызывают эмоции, а это -- штука энергопотребляющая)

Хочется решить вопрос одним-двумя телодвижениями. Начал искать сценарий для следующего плана:

Фотоматериалы
1. Из всех каталогов рекурсивно переместить в каталоги, классифицируя так:
- ГГГГ
-- ММ
--- ДД
2. Переименовать их по времени получения снимка (из EXIF) c точностью до секунды. Чтобы они в каталоге ДД лежали последовательно. Это важно, т.к. иначе теряется смысл: все записи будут спутаны. Они и так спутаются, т.к. я их делал в одно время, а снимал -- в другое. Так была организована система.

Ну и всё, наверное..

Аналогичным образом поступить с аудио- видеоматериалами. Только пока недоисследовал, какие у них там свойства. Наверняка ж есть время создания.

И ещё вопрос такой.
Если бы вы имели привычку вести записи от руки, а затем оцифровывали бы их и переносили в машину, стали бы вы удалять подлинники?
Сам подлинники уничтожаю.. Хотя, не знаю, правильно ли это. Цифра она что.. а подлинник -- он подлинник.

Reply to: RCiF09yDlGGBOUGhGsSF
From: Anotheroneuser (syscall,27) 14.09.18 09:52 UTC
To: Anotheroneuser
Subject: Re: Разгрёб фото и пр. материалов. Перемещение, классификация
А, хочу добавить!
Обращаюсь, только если есть у кого готовое решение. Или просто за советом по тактике : правильно или неправильно. Может, что ещё

Reply to: AjaaCyaZR7Mw61A8gBfU
From: Andrew Lobanov (tavern,1) 14.09.18 11:32 UTC
To: Anotheroneuser
Subject: Re: Разгрёб фото и пр. материалов. Перемещение, классификация
Anotheroneuser> А, хочу добавить!
Anotheroneuser> Обращаюсь, только если есть у кого готовое решение. Или просто за советом по тактике : правильно или неправильно. Может, что ещё

Готового решения не имею, но можно попробовать написать. На выходных могу попытаться, если раньше никто не поможет.

+++ IDEC-Mobile
+++ Лично я вижу в этом перст судьбы — шли по лесу и встретили программиста.

Reply to: T1dWPduI4THStANdy10A
From: Anotheroneuser (syscall,27) 14.09.18 12:17 UTC
To: Andrew Lobanov
Subject: Re: Разгрёб фото и пр. материалов. Перемещение, классификация
> На выходных могу попытаться
Не.. Не хочу напрягать.
Корячусь сейчас сам. Нашёл программу fdupes -- пробую для начала дубликаты вычистить. А потом буду что-нибудь делать. Может, графической программой какой..
Начинаю усваивать, почему люди хвалят консольные программы. Графические приложения, несмотря на свою графичность, иногда так неочевидны, что трандец.
Пользователю нужен обычный алгоритм, который позволяет решение принимать (практически бездумно), а ему ребусы предлагают разгадывать. Лучше уж сразу в консоль залезть и оттуда править миром

Reply to: T1dWPduI4THStANdy10A
From: Anotheroneuser (syscall,27) 14.09.18 12:50 UTC
To: Andrew Lobanov
Subject: Re: Разгрёб фото и пр. материалов. Перемещение, классификация
Оказывается, есть много решений.
Например, такое.
====
find /media/vm/Transcend -type f -name '*.jpg *.jpeg *.png' -exec mv -i {} /home/vm/Изображения  \;
====
Сойдёт? Но на Transcend фотографий просто дохренищи. Может, 200 Гб.
Задумка такова:
1. Переместить все:
1.1. Фотографии в Изображения
1.2. Видео в Видео
1.3. Аудиозаписи в Аудиозаписи
2. Классифицировать всё по
2.1. ГГГГ
2.1.1. ММ
2.1.1.1. ДД
3. Переименовать все материалы по дате и времени их получения с точностью до секунды

Остальное -- хлам, в принципе.. Так что, лететь ему в цифровое нигде.
Винт отформатирую в ext4, чтобы не было ограничений на размер загружаемого материала.

Дальше информационная система будет устроена с помощью org-mode, откуда просто буду ссылаться на материалы. Они поступают ежедневно на телефон (фото, аудио, видео) и синхронизируются с ЭВМ через Syncthing.

Как тактика? Наверное, паровоз Черепановых, но у меня больше нет идей ))

Reply to: RCiF09yDlGGBOUGhGsSF
From: btimofeev (mira, 24) 14.09.18 19:54 UTC
To: Anotheroneuser
Subject: Re: Разгрёб фото и пр. материалов. Перемещение, классификация
Anotheroneuser> 1. Из всех каталогов рекурсивно переместить в каталоги, классифицируя так:
Anotheroneuser> - ГГГГ
Anotheroneuser> -- ММ
Anotheroneuser> --- ДД

Как минимум это умела делать программа Shotwell. Это менеджер фотографий для гнома. Если не ошибаюсь она по-умолчанию импортирует фотографии в такую структуру директорий.

Reply to: zKVh5hLDUA9xmpUA4eDE
From: Anotheroneuser (syscall,27) 15.09.18 17:40 UTC
To: btimofeev
Subject: Re: Разгрёб фото и пр. материалов. Перемещение, классификация
> Shotwell

Слушай, да, спасибо! Она делает -- только что попробовал.
Она сгребает фото в свою собственную библиотеку и размещает их там хронологически.
Если для этого она берёт данные EXIF, то, конечно, ж... полная там будет с фотографиями )) Посмотрел: почти всё перепутано.

Есть горы снимков, которые вообще не были датированы: указано 1 января 1980 года, но этого не может быть. И есть изображения, которые вообще не содержат какой-либо информации.

Reply to: mtNNAWH1he47fTqzNPcv
From: btimofeev (tavern,13) 15.09.18 18:34 UTC
To: Anotheroneuser
Subject: Re: Разгрёб фото и пр. материалов. Перемещение, классификация
Anotheroneuser> Если для этого она берёт данные EXIF, то, конечно, ж... полная там будет с фотографиями )) Посмотрел: почти всё перепутано.

А откуда ей ещё брать эту инфу?

Anotheroneuser> Есть горы снимков, которые вообще не были датированы: указано 1 января 1980 года, но этого не может быть. И есть изображения, которые вообще не содержат какой-либо информации.

Попробуй посмотреть через программу exiftool. Она кстати умеет переименовывать файл по дате https://m.habr.com/post/232267/

Reply to: mtNNAWH1he47fTqzNPcv
From: Andrew Lobanov (tavern,1) 16.09.18 05:38 UTC
To: Anotheroneuser
Subject: Re: Разгрёб фото и пр. материалов. Перемещение, классификация
Anotheroneuser> Если для этого она берёт данные EXIF, то, конечно, ж... полная там будет с фотографиями )) Посмотрел: почти всё перепутано.


Anotheroneuser> Есть горы снимков, которые вообще не были датированы: указано 1 января 1980 года, но этого не может быть. И есть изображения, которые вообще не содержат какой-либо информации.

Тогда я не понял изначальную задачу. Откуда брать дату и время, если не из exif?

+++ IDEC-Mobile
+++ Лично я вижу в этом перст судьбы — шли по лесу и встретили программиста.

Reply to: FkoPdPHJGPP3FfAvYwcJ
From: Anotheroneuser (syscall,27) 16.09.18 06:53 UTC
To: Andrew Lobanov
Subject: Re: Разгрёб фото и пр. материалов. Перемещение, классификация
AL> Тогда я не понял изначальную задачу. Откуда брать дату и время, если не из exif?

Из EXIF, больше неоткуда.
Написал про 1980 год (меня тогда на свете ещё не было) просто так. Удивился, что дата такая.

+++ А вы пощупайте-пощупайте! В нашем деле главное — пощупать.

Reply to: KAGUAnVcASmxMADmyhLW
From: Andrew Lobanov (tavern,1) 16.09.18 09:20 UTC
To: Anotheroneuser
Subject: Re: Разгрёб фото и пр. материалов. Перемещение, классификация
AL>> Тогда я не понял изначальную задачу. Откуда брать дату и время, если не из exif?

Anotheroneuser> Из EXIF, больше неоткуда.
Anotheroneuser> Написал про 1980 год (меня тогда на свете ещё не было) просто так. Удивился, что дата такая.

Грубо говоря, это "нулевое значение даты". Хотя странно, что 1980, а не 1970.

+++ IDEC-Mobile
+++ Лично я вижу в этом перст судьбы — шли по лесу и встретили программиста.

From: Andrew Lobanov (tavern,1) 23.09.18 06:00 UTC
To: All
Subject: JavaFX WebView
А есть у нас джависты? Очень хочется в сабже открывать ссылки в системном браузере. Или хотя бы в заданном браузере (как в цезии). Но не в самом вебвью. В интернете нашёл пример воркэраунда, который должен был это делать, но не только не понял как он должен работать, но и не смог заставить его работать.

+++ IDEC-Mobile
+++ Лично я вижу в этом перст судьбы — шли по лесу и встретили программиста.

From: vit01 (mira, 1) 02.10.18 01:52 UTC
To: All
Subject: org-mode и выход из дома
У меня в org-mode на каждый день есть актуальное расписание занятий в универе и не только

Обычно я выхожу из дома за N минут до начала 1 пары

Задачи

1. Сделать такие уведомления в org-mode, чтобы напоминали, когда пора выходить
2. Таймер обратного отсчёта [время до выхода из дома HH:MM и/или до начала пары]

Если для 1 задачи можно сделать костыль через SCHEDULED, то насчёт обратного отсчёта не знаю, куда копать

Можете подсказать простое и красивое решение?

+++ Отправлено через IDEC Mobile
+++ GNU/Linux, Android, physics, MLP:FIM

Reply to: TxKOFIBHyoxkA4m1Ey8M
From: Difrex (tavern,23) 02.10.18 13:33 UTC
To: vit01
Subject: Re: org-mode и выход из дома
vit01> 1. Сделать такие уведомления в org-mode, чтобы напоминали, когда пора выходить
vit01> 2. Таймер обратного отсчёта [время до выхода из дома HH:MM и/или до начала пары]
Посмотри код pomidoro-mode - там есть и таймер и уведомления

vit01> Можете подсказать простое и красивое решение?
Нужно писать самому =)

+++ А небо все точно такое же, как если бы ты не продался

Reply to: 917BTUbEGQJbRf7qRXmm
From: vit01 (mira, 1) 07.10.18 03:25 UTC
To: Difrex
Subject: Re: org-mode и выход из дома
vit01>> Можете подсказать простое и красивое решение?
Difrex> Нужно писать самому =)

Таки заморочился и написал то, что требуется :)

https://github.com/vit1-irk/org-agenda-timeleft

Приятно удивил тот факт, что org-mode умеет перегонять расписание в машиночитаемый CSV

Получается, с помощью org-mode можно не только автоматизировать своё личное расписание, но и делать более сложную обработку информации. Например, статистику строить или даже какую-нибудь систему для умного дома сделать

+++ Отправлено через IDEC Mobile
+++ GNU/Linux, Android, physics, MLP:FIM

From: vit01 (mira, 1) 14.11.18 14:36 UTC
To: All
Subject: org-mode и Github Projects
У Гитхаба есть фича под названием Projects. Это что-то вроде Kanban-списков для составления планов. Каждый Project содержит в себе набор карточек, в каждой из которых можно хранить заметки и отмечать сделанные дела.

В репозитории IDEC Mobile есть основной план, доступный всем, в котором я открываю и закрываю задачи. Всё бы хорошо, но, имея под рукой такой мощный инструмент как Emacs, крайне расточительно лезть каждый раз в браузер, чтобы поглядеть на список дел по проекту с кодом.

Давайте это исправим, используя python и org-mode

1. $ pip install PyGithub
Документацию по пакету можно посмотреть здесь: https://pygithub.readthedocs.io/en/latest/introduc tion.html

2. Получаем access-token для API Гитхаба
Идём сюда: https://github.com/settings/tokens
Получаем Personal Access Token с доступом к вашим репозиториям, копируем

3. Создаём python-скрипт с подобным содержанием:

====
#!/usr/bin/env python3

from github import Github

g = Github("your-access-token")

# 0 - это первый проект, в данном случае он единственный
prj = g.get_user().get_repo("idec-mobile").get_projects()[0]

# вывод форматируется в виде списка org-mode
print("\n+ {" + prj.name + "} <" + prj.html_url + ">")
for column in prj.get_columns():
        print("\n\t+ " + column.name)

        for card in column.get_cards():
                if card.archived:
                        continue
                
                print("\t\t+ " + str(card.note))
====

4. В файле org-mode прописываем блок для запуска кода
:results output raw ставить обязательно, иначе org-mode будет оформлять вывод скрипта как текст вроде цитаты, а нам надо, чтобы он был в виде org-списка

====
#+BEGIN_SRC shell :results output raw
~/path/to/your/python/script
#+END_SRC
====

5. Если в Emacs не настроен org-babel, то в конфиге прописать вот это (свои языки прописать по желанию)

====
  (org-babel-do-load-languages
   'org-babel-load-languages
   '(
     (shell . t)
     (python . t)
     (emacs-lisp . t)
     (C . t))
   )
====

6. Можно запускать. Не забудьте chmod +x для питоноскрипта
Для выполнения кода в org-mode надо лишь навести курсор на блок этого кода и нажать C-c C-c

Список гитхабопроектов появится рядом с меткой #+RESULTS:

From: Anotheroneuser (syscall,27) 22.11.18 17:36 UTC
To: All
Subject: Emacs. Редактирование одного текста в нескольких местах
Наверняка, такое уже случалось у кого-нибудь.
Один текст *.org, который надо видеть и изменять в нескольких местах.
Не подскажете какой-нибудь идейно правильный выход? :) Если делю экран на два, то там всё синхронно происходит, а это неудобно. Если открыть emacs дважды, тоже, кажется, выходит какая-то хрень.

Reply to: bi36U9W4Zu86wagsE8X
From: vit01 (mira, 1) 23.11.18 12:27 UTC
To: Difrex
Subject: Re: Документация
vit01>> Недавно решил попробовать Jenkins потыкать и настроил его для нашего репозитория с документацией. По нажатию пары кнопочек дока компилируется из markdown и заливается на сайт.

Difrex> Дженкинс тяжел, но фичаст.

Вот я потому дженкинс и решил попробовать - из-за его тяжёлости и фичастости. Хочется оценить в работе все возможные фишки CI и потом сформировать личные предпочтения.

Difrex> Я использую Gitea+Drone CI - все легко настраивается и работает, а главное, что и как в Gitlab CI, весь билд описывается в одном ямле.

До сих пор есть небольшие сомнения на счёт всего этого.
"Может быть, достаточно было ограничиться одним bash-скриптом?"

Почитал бы с удовольствием хороший обзор на разные CI в плане юзабилити и имеющихся фич.

+++ Отправлено через IDEC Mobile
+++ GNU/Linux, Android, physics, MLP:FIM

Reply to: zKVSoLWRYOv45aN5kJmE
From: Anotheroneuser (syscall,27) 24.11.18 11:11 UTC
To: Anotheroneuser
Subject: Re: Emacs. Редактирование одного текста в нескольких местах
Не нашёлся выход. Наверное, самым идейно-верным будет скопировать материал и открывать их ­— один для изменений, другой — для чтения...
Если б можно было хотя бы read only открывать тот же материал .org. Чтобы не плодить копии.

From: Anotheroneuser (syscall,27) 13.01.19 20:39 UTC
To: All
Subject: Mutt
Не найдётся у кого-нибудь muttrc для mail.yandex? Или ссылки на нормальное руководство.
Ухрюкаться можно, пока разберёшься.

Reply to: NlDfG9IFa10Z5sbPUhWX
From: Andrew Lobanov (tavern,1) 14.01.19 04:15 UTC
To: Anotheroneuser
Subject: Re: Mutt
Anotheroneuser> Не найдётся у кого-нибудь muttrc для mail.yandex? Или ссылки на нормальное руководство.

Ну так mutt это только читалка. Unix-way же. Гуглиться надо, например, про связку mutt + fetchmail + procmail + msmtp.

Mutt для чтения и написания писем, fetchmail скачивает почту с сервера, procmail сортирует её, msmtp отправляет почту.

Если не забуду, тр вечером посмотрю у себя. Где-то должны были остаться конфиги для этого добра.

+++ IDEC-Mobile
+++ Лично я вижу в этом перст судьбы — шли по лесу и встретили программиста.

Reply to: 0cETm76Oycp6AbJcTNjK
From: Anotheroneuser (syscall,27) 14.01.19 05:36 UTC
To: Andrew Lobanov
Subject: Re: Mutt
> Гуглиться надо, например, про связку mutt + fetchmail + procmail + msmtp.
Вчера до глубокой ночи занимался этим. Всякий раз приходил к выводу, что люди, которые пишут инструкции, не намерены возиться с нами — непрофессиональными пользователями. Да, там есть объяснения, целые руководства и т.д. В них излагается принцип работы программы и рычаги управления ею. Но представления о программе это не очень-то даёт. Нужен какой-то алгоритм или что-нибудь наглядное.
Если разберусь, попробую что-нибудь такое нарисовать ))

> Mutt для чтения и написания писем, fetchmail скачивает почту с сервера, procmail сортирует её, msmtp отправляет почту
Вот прикинь, насколько графические приложения калечат мозг. На собственном примере понимаю, до какой степени сложно въехать в то, что раньше давалось очень легко. Установил Thunderbird и понеслось.
А некоторым и Thunderbird сложно установить. И появляются люди, которые соблазняют возможностью обмениваться данными и вообще ни о чём не задумываться (разные WhatsApp и остальное).
Говорю это без всякого фанатизма, бешеных глаз и дрожащих рук (в которых зажаты свитки с сакральными знаниями)). Просто немного жаль, что раньше не приходило в голову разобраться с этим.

Reply to: MGmM3HxshKrQQGpcYYF4
From: Andrew Lobanov (tavern,1) 14.01.19 08:23 UTC
To: Anotheroneuser
Subject: Re: Mutt
>> Гуглиться надо, например, про связку mutt + fetchmail + procmail + msmtp.
Anotheroneuser> Вчера до глубокой ночи занимался этим. Всякий раз приходил к выводу, что люди, которые пишут инструкции, не намерены возиться с нами — непрофессиональными пользователями. Да, там есть объяснения, целые руководства и т.д. В них излагается принцип работы программы и рычаги управления ею. Но представления о программе это не очень-то даёт. Нужен какой-то алгоритм или что-нибудь наглядное.

Вот конфиги мои:

~/.fetchmailrc
====
defaults
#set daemon 120

poll imap.yandex.ru
    proto IMAP
    user 'username@yandex.ru'
    pass 'password' is 'username@yandex.ru' here
    mda 'procmail -d %T';
====

Опцию "set daemon 120" можно раскомментировать. Тогда fetchmail будет раз в 2 минуты проверять почту.

Опция "mda 'procmail -d %T';" вызывает procmail, который раскладывает почту по ящикам.

~/.procmailrc
====
MAILDIR=$HOME/Mail
LOGFILE=/dev/null
LOGABSTRACT=no
VERBOSE=off
FORMAIL=/usr/local/bin/formail
DEFAULT=$MAILDIR/default

:0 Whc: .msgid.lock
| $FORMAIL -D 16384 .msgid.cache

:0
* ^From:.*A.Kuronen@*
$MAILDIR/spam

:0
* ^From:.*naumen@urfc.ru*
$MAILDIR/naumen

:0
* ^To:.*username@yandex.ru*
$MAILDIR/mbox
====

Здесь правила для сортировки писем настроены. Письма от A.Kuronen попадают в ящик spam, уведомления от документооборота - в ящик naumen, а письма, написанные мне - в ящик mbox.

Для отправки писем используется программа msmtp.

~/.msmtprc
====
account default
host smtp.yandex.ru
from username@yandex.ru
user username
password password
auth login
====

Ну и для чтения использутся mutt. У меня его конфиг основывался на каком-то файле, найденном в сети.

~/.muttrc
====
# Сброс настроек
ignore *
unignore  Date To From: Subject

#
# Здесь оставлено место для цветовой гаммы...
#

# Забиндить на кнопку 'G' прием почты
macro index G "!fetchmail -k -f ~/.fetchmailrc"
macro pager G "!fetchmail -k -f ~/.fetchmailrc"
macro generic G "!fetchmail -k -f ~/.fetchmailrc"

#добавление адреса в адресную книгу
macro index a "|abook --add-email\n" 'add sender to abook'
macro pager a "|abook --add-email\n" 'add sender to abook'
#поиск по адр. книге
set query_command="abook --mutt-query '%s'"

# В mutt нет адресной книги, поэтому мы польземся алиасами
#source "~/.mail_aliases"
#set alias_file="~/.mail_aliases"

# Кириллизация всего и вся ;)
set allow_8bit=yes
set ascii_chars=yes
set charset="utf8"
set send_charset="koi8-r:us-ascii:iso-8859-1:utf-8"
set signature="~/.signature"

# Не пищать!
set beep=no

# Внешний вид просмотрщика ящика
set index_format="%4C %Z %D %-25.25F %s"
set to_chars="  TCF"
set sort=threads

# Что считать за квотирование
set quote_regexp="^([ \t[A-Za-z]*]*[>+])+"

# Какие заголовки отображать
hdr_order Date From To Subject

# Весьма удобная штука
set pager_context=1
set pager_index_lines=6

# Различные предустановки ответов
set include=ask-yes
set fast_reply=yes
set confirmappend=no

# К написанию писем
set edit_headers=yes
set attribution="On %d, %n wrote:"
set date_format="%Y.%m.%d %H:%M"
set indent_string="> "
set editor="mcedit"

# Почтовые ящики
set spoolfile="~/Mail/mbox"
set folder="~/Mail"
mailboxes =mbox
set mbox="~/Mail/default"
set mbox_type=mbox
set postponed="~/Mail/postponed"
set record="~/Mail/sent"
set sort_browser=reverse-size

# Все связанное с отсылкой писем
set realname="Andrew Lobanov"
set from="Andrew Lobanov "
set envelope_from=yes
set sendmail="/usr/bin/msmtp -oi"

# ПЖП пусть отдохнет...
set pgp_verify_sig=no

color header cyan black .
color header yellow black ^From
color header yellow black ^Subject
color body yellow black [_a-z\.\$A-Z0-9-]+@[a-zA-Z0-9\./\-]+
color body yellow black (http|ftp)://[_a-zA-Z0-9\?\=\&\@\%\#\:\,\./~\-]+
color quoted green black
color signature cyan black
color attachment yellow black
color tree white black
color indicator black cyan
color status white blue
color tilde blue black
color normal white black
color index green black ~N

auto_view text/html

set timeout=1    #Прверять через какое число минут почту
set mail_check=1
====

Надеюсь, другие пользователи подскажут что-нибудь ещё или смогут помочь советом с тем, что есть.

+++ Caesium/0.4 RC1
+++ Лично я вижу в этом перст судьбы — шли по лесу и встретили программиста.

Reply to: n3D5kpkF9pNuftDO62Ep
From: Anotheroneuser (syscall,27) 14.01.19 15:54 UTC
To: Andrew Lobanov
Subject: Re: Mutt
Ого! Благодарю тебя. Сейчас попробую...

1 . . . 7 8