Торрента полезна в хозяйстве

Сложилась такая ситуация: сотруднику в командировке понадобилось получить большой объём данных, и чем раньше – тем лучше.

Дано: объём данных 10гб. Входящий канал – 200к, есть некоторые ограничения. В офисе исходящий канал 50к, ограничений нет. На крайний случай есть домашний канал – 100к исходящего канала.

Решение первое: порезать по частям и заливать на бесплатные файлопомойки.

Во-первых, пока не зальёшь полностью кусок, скачать нельзя.
Во-вторых – не безопасно, без докачки, таймауты.
В-третьих, для меньшей ручной работы и постоянного мониторинга требуется дополнительный софт.

Решение второе: порезать по частям и поднять файлы на локальном http/ftp сервере.

Если необходимо разделить файлы на два исходящих канала – требуются дополнительные движения извилин и мониторинг.

Для надёжности требуется контроль целостности. Если контроль не сошёлся – требуется перекачивать весь том. Если в архиве большой файл размазан на несколько томов, то проверка целостности может потребовать все тома. Требуется работа мозга или рук для правильной нарезки и выверки. Контролировать нумерованные тома легче, чем отдельные файлы – но это не значит что их не надо контролировать вообще.

Решение третье: торрента и p2p-соединения.

1. На исходящем канале поднимается торрента (в виде мю-торрента, легковесного клиента).

2. В мю-торренте подбирается исходящий порт, видимый для клиента. В случае ограничения можно выбрать “полезные” порты: 80, 8080, 443 и подобные. Если требуется, порт необходимо открыть(прокинуть) на мопеде через “порт-форвардинг”. Порт тестируется (получателем) через браузер до достижения успешного результата в виде “инвалид реквест”.

3. В качестве вспомогательного инструмента можно воспользоваться сервисом типа динднс, это безусловно полезно если провайдер интернета  даёт динамический айпи-адрес. Да и вообще динднс в хозяйстве может пригодиться.

4. Создаётся торрент-файл для целевой папки. Треккер в него прописывать не надо (впрочем можно копнуть сюда). Добавляем веб-сиды для “раздающих”.

5. Торрент-файл отправляем (по почте) получателю и подкладываем в мю-торрент, перехешируем и запускаем.

6. На входящем канале получатель также ставит мю-торренту и добавляет торрент файл. Сразу всё может и не зафырчит, следует вручную добавить раздающего на закладке Пиры. Требуется указать его в виде ip-адрес:порт (см пункты 2 и 3).

7. Затем с файлами и торрент-файлом перемещаемся к домашней точке раздачи. Пробегаемся по пунктам 1-2-3-5.

Результат – достигается суммарная исходящая скорость 50к+100к, нет особой возни с балансировкой, томами и файлами, контроль целостности достигается микроблоками и легко исправляется. Архивация не требуется в целях контроля целостности, только для сжатия данных. Папка с тучей файлов или один большой файл – также особого значения не имеет.

Другие решения: например, можно попробовать работать через файлосинхронизационные сервисы совместно с хранилищами – хостинг, лайв, гугл, дропбокс и так далее по списку.

Сумма прописью. Нюанс

Есть совершенно несекретный функциональный модуль SPELL_AMOUNT, который позволяет получить необходимую для печатных вещей “сумму прописью”:

Пример вызова SPELL_AMOUNT

Методом проб было найдено, что для рублей пишутся слова “ХХ копеек”, хотя для остальных валют подобного эффекта не наблюдается.

(далее…)

Мелкие трюки в кассовой книге

Стандартная кассовая книга хоть и хороша собой, однако имеет ряд нюансов:

  1. Нет возможности управлять нумерацией создаваемых документов
  2. Нет возможности заместить печатную форму
  3. Имеется ненужная пользователю вкладка “Поступления чеков”
  4. Нет возможности менять контрольный счёт контрагента на альтернативный

(далее…)

Кэширование данных отчёта – тривиальная реализация

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

Кэширование данных отчёта нам может пригодиться в нескольких случаях, например:

  1. Отчёт часто требуется, но долго выполняется; при этом от результатов особой оперативности не требуется;
  2. Результат выполнения данного отчёта требуется отразить в другом отчёте (сводном); но при этом рассчитывать в сводном отчёте множество под-отчётов не хочется;

Для начала допустим, что:

  • отчёт имеет простые и стабильные параметры;
  • процедуры сбора и показа данных строго разделены;
  • данные отчёта находятся в одной внутренней таблице.

(далее…)

Телевизор — это …

Переслушиваю читанный давно роман. Пелевин. Чапаев и Пустота.

– А вот скажите, – заговорил он, – чего хочет человек, вернувшийся домой из опасного путешествия, после того как утолит жажду и голод?
– Не знаю, – сказал Сердюк. – У нас обычно телевизор включают.
– Не-е-е, – сказал Кавабата. – Мы в Японии производим лучшие телевизоры в мире, но это не мешает нам осознавать, что телевизор – это просто маленькое прозрачное окошко в трубе духовного мусоропровода. Я не имел в виду тех несчастных, которые всю жизнь загипнотизированно смотрят на бесконечный поток помоев, ощущая себя живыми только тогда, когда узнают банку от знакомых консервов. Речь идет о тех людях, которые достойны упоминания в нашей беседе.

   – Так как же ты, Петька, дошел до такой жизни, что спрашиваешь меня, своего боевого командира, всегда ли то, что происходит у тебя в голове, – это то, что происходит у тебя в голове, или не всегда?

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

 

Александр Скляр в качестве чтеца — силён, бесспорно.

Удивительные алгоритмы

Бороздя просторы своих подписок, наткнулся между делом на нечто. В чём суть этого бессмысленного и беспощадного ненормального приёма программирования:

Требуется выполнить деление двух целых чисел с точностью до четырёх знаков после запятой, но используя только оператор простой замены подстроки.

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

Обуреваемый скептицизмом, решил переложить на язык ABAP.

Реально работает!

Результат алгоритма Маркова

Пример кода выложил отдельно в виде SLNK.

Тонкости в ABAP-редакторе

Исправление регистра

В редакторе кода есть кнопка “Структурная печать”.

По умолчанию она выправляет отступы в тексте, однако там есть ещё опция преобразования регистра. Если душа лежит к одному из этих подходов – вперёд и с песней.

Настройки структурной печати

 

Вот наблюдаем некоторый бардак:

до обработки

А вот что стало после обработки:

после обработки

Хитрый поиск

В окне поиска есть галочка “Регулярные выражения”:

Поиск с регулярными выражениями

По регулярным выражениям можно учебники писать, однако краткая вводная информация доступна по пумпочке справа от искомого текста. Можете дополнительно полистать документацию, но не обязательно саповскую – регулярные выражения (Regular Expressions, RegExp, регэкспы) используются в огромном количестве других систем в разных вариациях.

Вот несколько примеров, которые обычным поиском просто не решаются:

Поиск всех слов, начинающихся на букву Z:

\<Z\w*\>

Поиск всех “слов” из трёх знаков:

\<…\>

Поиск строк – любых вариантов из списка (bsis, bsas, bsik, bsak, bsid, bsad):

bs[ia][dks]

Внесистемная группировка данных

В практике программирования бывает необходимость выделить несколько однородных карточек в особую группу. Счета главной книги для особого использования, группа контрагентов входящих в особый “холдинг”, список материалов-синонимов и так далее.

Хорошо, если такую группировку получается легко реализовать на базе самих карточек.

Один из универсальных подходов – применение наборов (используются в Report Writer). Здесь особо без разницы, какие именно карточки хотите сгруппировать – тип данных можно указать вручную.

(далее…)

Ccылки на транзакции и настройки из браузера

Немного хитрости и смекалки позволяют делать прямые ссылки на транзакции и объекты настроек в SAP.

Стоит только щёлкнуть по ссылке на сайте или в документе, и в SAPGUI открывается нужная транзакция или раздел.

Баловство без реальной необходимости, хотя…

Вот ниже вполне работоспособные ссылки (на моём компьютере):

(далее…)