Мысли, почему система, где сервисы общаются через общую шину сообщений проще, чем где общение идет через API.

В системе с API/REST системы синхронно друг к другу обращаются, для этого:

  1. требуется обработка ошибок на всех уровнях (допустим процесс А вызывает Б а тот вызывает В)
  2. плюс обработка таймаутов
  3. плюс логгирование ошибок (pl7: логированием занимается вызывающая сторона) т.е в вызывающей стороне должно быть понимание какие ошибки могут произойти на вызываемой стороне как об этом лучше сообщить и что делать вообще

В системе с сообщениями, у процесса есть шина, он кладет в нее запрос. В результате может появится:

  1. ответ с результатом
  2. ошибка (уже сформированная обрабатывающей стороной, в едином формате более менее)
  3. или таймаут (который, как мне кажется, будет более естественно выглядеть в этой конфигурации). А процесс, который обрабатывает сообщения, сам занимается из получением, сам их обрабатывает, сам обрабатывает свои внештатные ситуации (про которые он в курсе), сам ведет свои логи и знает куда и как сообщать об ошибках.

Поэтому мне и кажется, что система на общей шине будет проще и легче, чем система построенная на API.

~~OWNERAPPROVE~~

Прочитал обсуждения.blog Холивара для. API vs шина сообщений
Yes() No() Clear

Yes:
Не прочитано ()!

No:

21.11.2018 15:38 · nikolay_carbonsoft1 · 3 комментариев (-я)
Правило 1.4 Priority: Users, Developpers, Machine
Приоритет при выборе решений: сначала удобство для пользователей, потом удобство для программистов, и только при самой крайней необходимости, оптимизация для компьютера.

Куда отнести техническую поддержку? В программистов или пользователей? Или в отдельную сущность?

Например:

юзеры > техподдержка > программисты > машина

Для bash crab_indent, crab_syntax

Может быть усилим это PyCharm + BashSupport + External Tools (crab_indent, crab_syntax)?

У BashSupport много подсветок очевидных ошибок синтаксиса, на которые могут не реагировать crab_indent/crab_syntax, но он не такой придирчивый, как ShellCheck.

+ шаблон strongbash скрипта - https://gist.github.com/strizhechenko/2cfd4e0ce006cbc4e5f8f7054a8d76f9 заменить стандартный, чтобы Add new bash script добавляло сразу готовый код, который сразу работает по стронгбашу и не надо делать одну и ту же работу каждый раз.

~~OWNERAPPROVE~~

13.06.2018 07:20 · олег_стрижеченко · 1 Комментарий

Я думаю что от strongbash будет немного больше пользы, если помимо «как делаем» добавится «зачем это нужно».

Мне к примеру не нравится вот такой подход: http://opencarbon.ru/соглашения_кода:strongbash#strongbash010

Причины:

  • если файл используется многократно (1 запись, 10 чтений)

  • автокомплит

  • читаемость

~~OWNERAPPROVE~~

16.02.2018 04:43 · олег_стрижеченко · 0 комментариев (-я)

crab_example - набор примеров, на которые ушло много времени на поиск или часто забываются.

crab_example - это и утилиты командной строки и примеры кода и краткие инструкции.

crab_example - позволяет сэкономить огромное колво часов.

crab_example - использование и развитие утилиты является обязательным для всех.

Если Вы потратили время на гуглопоиск или чтение man добавляйте пример в http://opencarbon.ru/example:example_новые_сюда

Есть поддержка кастомных статей, точнее их url.

new* Добавлена поддержка многостраничных примеров и автоматический парсинг всех статей http://opencarbon.ru/example

УСТАНОВКА

Ставим crab
wget 'http://opencarbon.ru/html/crab_install.sh' -O - | bash  или обновляем через crab_update
для уверенности можно обновить кеш статей crab_example update, кеш устаревает через день и сам обновится при первом использовании

ИСПОЛЬЗОВАНИЕ crab_example tag1|word1 [tag2|word2]

Пример

crab_example mdadm

или

crab_example mdadm сохранить

или

crab_example bash substring

или

crab_example bash init

или

crab_example debug php

crab_example debug oprofile

или

crab_example git

НОВЫЕ СТАТЬИ добавляйте в

http://opencarbon.ru/example:example_новые_сюда

Админ отсортирует.

Внимание!!! Все утилиты написанные в стиле Open Carbon7 должны содержать встроенный example в –help

~~OWNERAPPROVE~~

24.04.2017 08:50 · admin · 11 комментариев (-я)

Предлагается заменить

#!/bin/bash
echo "$0 START" >&2
echo "$0 SUCCESS" >&2
exit 0

на

#!/bin/bash
echo "$0 $@ [$$] START" >&2
echo "$0 $@ [$$] SUCCESS" >&2
exit 0

~~OWNERAPPROVE~~

19.04.2017 09:34 · sergey_osintsev · 2 комментариев (-я)

crab_sys.sh - это унификация удобных функций для ускорения разработки на bash.
Способ распространения и место расположения не регламентировано, рекомендуется тем же способом, что и сам скрипт.
0. Включает set -euEo pipefail
1. SIC! Отлавливает ошибки и показывает номер строки и контекст с ошибкой, что ускоряет отладку в разы
2. Автоматически пишет START SUCCESS FAIL для соблюдения stronbash, можно отключить

__SILENT=TRUE


3. Содержит встроенный sys::usage
Пример использования:

#!/bin/bash
set -eu
. /opt/crab/crab_utils/bin/crab_sys.sh
 
sys::usage "$@"
### --help утилита поиска примеров http://www.opencarbon.ru и можно свои добавлять списки
### --help Usage:
### --help crab_example sed  - примеры sed
### --help crab_example bash string - примеры bash подпримеры работы со строками
### --help crab_example update - обновить кеш всех списков
 
echo TODO
exit 0
### version 30.03.2017
set -euEo pipefail
__ARGV=
 
# revers argv
for __ARG in ${BASH_ARGV[@]:1}; do
        __ARGV="$__ARG $__ARGV"
done
 
__BASH_SOURCE=${BASH_SOURCE[1]}
 
[ "${__SILENT:-}" = "" ] && echo "START ${__BASH_SOURCE} $__ARGV" >&2
 
trap '__exit $? CMD=${BASH_COMMAND// /%%%%%} $@' ERR
__exit(){
        set +eu
        local STATUS=$1
        local CMD=
        local ARGV=
        shift
        if [[ "${1}" == "CMD="* ]]; then
                CMD=${1//CMD=/}
                CMD=${CMD//%%%%%/ }
                shift
                ARGV="$@"
        else
                echo ""
                echo "__exit $STATUS $@"
                CMD="__exit"
                ARGV=
        fi
        echo ""
        echo "ERROR_PROG=$__BASH_SOURCE  $__ARGV ERROR_STACK=${BASH_SOURCE[@]:1}"
        echo "ERROR_SOURCE=${BASH_SOURCE[@]:1:1} $ARGV ERROR_CMD=\"${CMD}\" ERROR_STATUS=$STATUS LINENO=${BASH_LINENO[@]:0:${#BASH_LINENO[@]}-1} FUNC: ${FUNCNAME[@]:1}"
        echo ""
        #echo grep -n "${CMD}" ${BASH_SOURCE[@]:1:1} -B 5 -A 5 grep "^${BASH_LINENO[@]:0:1}:" -B 5 -A 5
        #grep -n "${CMD}" ${BASH_SOURCE[@]:1:1} -B 5 -A 5 | grep "^${BASH_LINENO[@]:0:1}:" -B 5 -A 5
        grep -n  . "${BASH_SOURCE[@]:1:1}" -B 5 -A 5 | grep "^${BASH_LINENO[@]:0:1}:" -B 5 -A 5 --color
        exit ${STATUS:-0}
}
 
trap '__trapexit $?' EXIT
__trapexit(){
        set +eu
        if [ $1 = 0 ]; then
                [ "${__SILENT:-}" = "" ] && echo "SUCCESS ${__BASH_SOURCE} $__ARGV" >&2
        else
                echo "FAILED ${__BASH_SOURCE} $__ARGV" >&2
        fi
        exit $1
}
 
sys::usage(){
        [ "${1:---help}" != "--help" ] && return 0
        (
                set +e
                echo
                grep -H '# [-][-]help' ${__BASH_SOURCE} | sed -n 's/^.*[/]\(.*\)[ ]*[ #]*--help[ ]*\(.*\)/\1 \2/p'
                exit 0
        )
        [ "${1:-}" = "--help" ] && exit 0 || exit 255
}

~~OWNERAPPROVE~~

19.04.2017 06:00 · sergey_osintsev · 7 комментариев (-я)

Принято все кроме #!/usr/bin/env bash
Нужно использовать shebang #!/bin/bash
Не нужно использовать shebang переносимости #!/usr/bin/env bash

Если кто хочет подискутировать - давайте аргументы.

Также добавлено исправлено два новых правила которые скоро попадут в crab_syntax

bashxxx

Запрещено удалять tmp в trap EXIT. создание временного файла это своего рода with file и его удаление это end with, чтоб было понтяно где он более не нужен аля область работы с файлом. И если файл остался в тмп то это признак, что есть ошибка в логике.

bashxxx+1

Запрещено в утилитах передавать результаты через промежуточные файлы. Только errno stdout stderr. В исключительных случаях имя файла должно быть в argv или конфиг в argv.

bashxxx+2

Выборочно использовать

spellshell

~~OWNERAPPROVE~~

19.04.2017 05:46 · sergey_osintsev · 5 комментариев (-я)

Нужно все выводить в стдаут и стдерр и использовать коды возврата.

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

~~OWNERAPPROVE~~

04.04.2017 11:41 · admin · 5 комментариев (-я)

Если не знаете как решить указанную crab_syntax проблему, создайте коммент здесь

http://opencarbon.ru/соглашения_кода:strongbash

~~OWNERAPPROVE~~

04.04.2017 08:27 · sergey_osintsev · 4 комментариев (-я)

Предыдущие записи >>

~~OWNERAPPROVE~~