Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Как обновить устаревшее мобильное приложение и не утонуть в легаси
Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
webirus

Сергей Горячев

Тыжверстальщик! Наверстай мне упущенное...
  • 1227
    вклад
  • 372
    вопроса
  • 1573
    ответа
  • 39%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Оповещение о просроченных задачах в Redmine

    rustamxp @rustamxp
    скрипт уведомляет постановщика, исполнителя и наблюдателей о том, что сегодня deadline по задаче.

    в первом select необходимо ("1","2","4") заменить на те id, при которых задача считается незавершенной. посмотреть соответствие id и названия статуса можно в таблице бд issue_statuses.

    и не забудьте изменить переменные с параметрами доступа к бд и почтовому аккаунту.

    #!/bin/bash

    mysql_h="db.local"
    mysql_l="redmine"
    mysql_p="password"
    mysql_db="redmine"

    mail_h="mail.local"
    mail_l="mail_login"
    mail_p="mail_pass"

    date=`date +%Y-%m-%d`

    #директория в которой лежит скрипт
    cd /usr/home/scripts/redmine/
    mkdir -p data
    rm -rf data/*

    /usr/local/bin/mysql -h$mysql_h -u$mysql_l -p$mysql_p -D$mysql_db -e \
    "select id,assigned_to_id,author_id from issues where due_date='$date' and status_id in ("1","2","4")" \
    | grep -v id | while read l
    do
    issue_id=${l% * *}
    mkdir data/$issue_id
    echo 'redmine.local/issues/'$issue_id'' > data/$issue_id/body.html

    assigned_to_id=${l% *}
    assigned_to_id=${assigned_to_id#* }
    echo $assigned_to_id >> data/$issue_id/id_list.txt

    author_id=${l#* * }
    echo $author_id >> data/$issue_id/id_list.txt

    /usr/local/bin/mysql -h$mysql_h -u$mysql_l -p$mysql_p -D$mysql_db -e \
    "select user_id from watchers where watchable_id='$issue_id'" \
    | grep -v user_id | while read m
    do
    echo $m >> data/$issue_id/id_list.txt
    done

    cat data/$issue_id/id_list.txt | sort | uniq | while read n
    do
    let i++
    if [ $i -eq 1 ]
    then x=\"$n\"
    else x=$x,\"$n\"
    fi
    echo $x > data/$issue_id/id_tmp.txt
    done

    /usr/local/bin/mysql -h$mysql_h -u$mysql_l -p$mysql_p -D$mysql_db -e \
    "select mail from users where id in (`cat data/$issue_id/id_tmp.txt`)" \
    | while read mail
    do
    if [ "$mail" != "mail" ]
    then
    /usr/local/bin/smtp-cli \
    --missing-modules-ok --server=$mail_h --port=465 --ipv4 --ssl \
    --user=$mail_l --pass=$mail_p --from="Redmine <$mail_l>" \
    --to "$mail" --subject="Redmine DEADLINE Issue $issue_id" \
    --body-html=data/$issue_id/body.html
    fi
    done
    done
    Ответ написан более трёх лет назад
    2 комментария
    Нравится 1 2 комментария
  • Какой грабер для joomla посоветуете?

    pavelcarcass
    Павел Грузных @pavelcarcass
    ИТ-менеджер из г. Иркутска
    У меня на одном из сайтов крутится FeedGator, грабит полнотекстовую RSSку сайта-источника и автоматически делает публикации.
    Ответ написан 16 нояб. 2020
    Комментировать
    Нравится 1 Комментировать
  • Как построить структуру проекта, если используется CMS?

    anatoly_kulikov
    Анатолий Куликов @anatoly_kulikov
    Помог ответ? Отметь решением!
    Как вариант - сделать два сценария, первый просто собирает все файлы без минификаций и прочего, а второй делает production-сборку и автоматом выкладывает на сервер.

    Если у вас есть sass/pug, то его в любом случае нужно обрабатывать до css/html. Положите его в папку с темой, назовите типа sourse и нормально.
    Ответ написан 03 сент. 2020
    2 комментария
    Нравится 1 2 комментария
  • Почему flex блоки не одной высоты?

    develx
    xdevelx @develx
    Web developer
    Для #cashback202008 .cashback202008__pravilaitem уберите height: 100%;
    Ответ написан 18 авг. 2020
    1 комментарий
    Нравится 2 1 комментарий
  • Как лучше реализовать такую структуру?

    sHARek @sHARek
    https://grid.layoutit.com
    Ответ написан 07 авг. 2020
    Комментировать
    Нравится 1 Комментировать
  • Удалить строку из файла, которая содержит определенный тест?

    Flysink @Flysink
    Используй регулярку, пример:
    $file = file('test.txt');
    
    foreach($file as $index => $line)
    	if(preg_match("/(.*),".$id."/", $line))
    		unset($file[$index]);
    		
    file_put_contents("test.txt", implode('', $file));
    Ответ написан 19 июл. 2020
    3 комментария
    Нравится 1 3 комментария
  • Как правильней сделать заглушку 18+?

    ulrich-schnauss
    Ульрих @ulrich-schnauss
    Системный администратор, веб-разработчик
    И снова здравствуйте, Сергей!

    Проверять соответствующий cookie, и если его нет, значит пользователь зашел первый раз (или неделя прошла) и перенаправить его на спец. страницу 18+, где он должен будет ввести дату рождения. После чего записать куки сроком на 7 дней и в течение этого времени пользователя больше не раздражать :)
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 6 Комментировать
  • Как получить данные только после определенного тега?

    Kozack
    Alex @Kozack Куратор тега JavaScript
    Thinking about a11y
    Например так
    document.body.querySelectorAll('.separator:last-of-type ~ p')
    Ответ написан 10 февр. 2020
    Комментировать
    Нравится 1 Комментировать
  • Как получить данные только после определенного тега?

    Stalker_RED
    Stalker_RED @Stalker_RED
    Например так:

    сорри за дурацкие названия, не хочу зря голову ломать, мне хватает даже загадки "для чего оно такое надо"
    Ответ написан 10 февр. 2020
    Комментировать
    Нравится 1 Комментировать
  • Как добраться до значения в html?

    KickeRocK
    Andrew @KickeRocK
    FrontFinish
    https://jsfiddle.net/kickerock/rvtg1dnj/8/
    Ответ написан более года назад
    Комментировать
    Нравится 1 Комментировать
  • Почему iframe вместо открытия страницы в блоке перегружает всю основную страницу?

    Aetae
    Aetae @Aetae
    Тлен
    На внешнем ресурсе защита от фреминга.
    Вам может помочь атрибут sandbox у iframe, если защиту делали неудачники, но никаких гарантий.
    Ответ написан более года назад
    1 комментарий
    Нравится 1 1 комментарий
  • Как сверстать такой блок?

    wapster92
    WapSter @wapster92 Куратор тега Вёрстка
    Ответ написан более года назад
    Комментировать
    Нравится 5 Комментировать
  • Можно ли создать сайт с помощью, только, html, css, python?

    Dr. Bacon @bacon
    Можно создать используя только html.
    Ответ написан более года назад
    1 комментарий
    Нравится 4 1 комментарий
  • Как показать/скрыть элемент по классу?

    fetis26 @fetis26
    Ну, за фронтенд!
    Потому что getElementsByClassName возвращает массив элементов и нужно пробегаться по каждому.
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 2 Комментировать
  • SEO - как правильно верстать ссылки?

    profesor08
    profesor08 @profesor08
    Третий невозможен, ссылка в ссылке работать не будет.
    Ответ написан более года назад
    Комментировать
    Нравится 4 Комментировать
  • Можно ли реализовать условия на JS в массиве?

    yarkov
    Алексей Ярков @yarkov Куратор тега JavaScript
    Проект "Жизнь после смерти" - lifeafterdeath.ru
    karta: [
      ['stop', {}, 1],
      ['step', lvl === 12 ? "up" : "down", { x: 1, y: 2 }, 2],
      ['step', "up", { x: 2, y: 1 }, 3],
      ['stop', {}, 4]
    ],
    Ответ написан более года назад
    Комментировать
    Нравится 3 Комментировать
  • Можно ли реализовать условия на JS в массиве?

    h88p @h88p
    Pre-Junior HTML Developer
    var karta = [
      ['stop', {}, 1],
    	(() => { 
    		if (lvl == "12") {
        		return ['step', "up", { x: 1, y: 2 }, 2]
    		} else {
           		return ['step', "up", { x: 2, y: 1 }, 2]
        	}
    	})(),
      ['stop', {}, 3]
    ]
    Ответ написан более года назад
    5 комментариев
    Нравится 2 5 комментариев
  • Как присвоить каждому элементу по одному разному классу?

    delphinpro
    Сергей delphinpro @delphinpro
    frontend developer
    ЗАЧЕМ???

    Есть псевдо-класс :nth-child()

    ul li:nth-child(1) {}
    ul li:nth-child(5) {}
    Ответ написан более трёх лет назад
    3 комментария
    Нравится 3 3 комментария
  • Как сделать отставание прокрутки фона?

    JaxAdam
    Adik Izat @JaxAdam
    Junior Full-Stack Developer
    Свойство background-position и событие window.onscroll(). Почитайте, поиграйтесь.
    Пример того, что вы ищете:
    вот тут
    Ответ написан более года назад
    4 комментария
    Нравится 2 4 комментария
  • Как в PHP сделать правильнее выполнение условия при множестве схожих условий?

    Дмитрий Кравченко @mydearfriend
    $wordsArray = ['one','two','three'];
    if(in_array($a,$wordsArray)){
      //code here
    }
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 10 Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • Следующие →
Самые активные сегодня
  • SoreMix
    SoreMix
    • 12 ответов
    • 0 вопросов
  • sergiks
    Сергей Соколов
    • 7 ответов
    • 0 вопросов
  • firedragon
    Владимир Коротенко
    • 7 ответов
    • 0 вопросов
  • DevMan
    DevMan
    • 6 ответов
    • 0 вопросов
  • delphinpro
    Сергей delphinpro
    • 5 ответов
    • 0 вопросов
  • Drno
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации