• Как "прокачать" Trello?

    zamboga
    @zamboga
    Бизнес-аналитика, фин. моделирование, дашборды
    Быстрое знакомство и описание Trello
    • Философия Trello
    https://netology.ru/blog/trello
    • Как использовать Trello для планирования
    interesno.co/myself/3128a1df69ba
    • 12 советов для тех, кто пользуется Trello
    www.lookatme.ru/mag/live/things/214757-trello-tips...


    Расширения Сhrome для Trello
    • Полезные расширения и настройки
    https://lifehacker.ru/2016/04/12/10-dopolnenij-dly...
    betteri.ru/post/rukovodstvo-po-produktivnoy-rabote...
    ○ Мои надстройки https://i.imgur.com/bHbdtiK.png
    ○ Для управления расширениями Хром: SimpleExtManager

    ○ Надстройки Google chrome (использую постоянно)
    § Boards for Trello
    § Card Colors for Trello
    § Next Step for Trello
    § Plus for Trello (тайм-трекинг, отчёты, Scrum)
    § Pro for Trello, FREE Trelo tweaks
    § Reports for Trello
    § Toggl Button: Productivity & Time Tracker
    § Trellists: Trello Lists Master
    § Trello List Wizard
    § Multiselect for Trello (платный)

    ○ Надстройки Google chrome (использую периодически)
    § List Highlighter for Trello
    § Slim Lists for Trello
    § Trelabels for Trello
    § Trello List Filter
    § TrelloExport
    § Ultimella, the features pack for Trello

    • Система отчетов
    https://reportsfortrello.com/
    https://www.toggl.com/ (надо поставить расширение toggl для хром)
    www.plusfortrello.com

    • Диаграма Ганта
    https://elegantt.com/
    Gantt for Trello | by Placker.com

    • Для автозадач:
    https://echofortrello.com (попроще) (прекратил существование)
    https://butlerfortrello.com (посложнее, но и функционал шире)
    https://ifttt.com/applets/299813p-schedule-daily-o...

    Список тайм-трекеров для Trello
    https://help.trello.com/article/941-time-tracking

    Расширения Хром для тайминга времени Trello на основе техники Pomodoro
    • Timeneye
    ○ Плюсы
    § Размытый фон при запуске таймера -> фокус на задаче
    ○ Минусы
    § Простой таймер, без помидорок
    § Автоматом не заполняет поля "проект", "задача" и т.д. Хотя мог бы брать все это из Trello
    ○ Итог
    § Не понравился, неудобный

    • Pomello
    ○ Плюсы
    § Добавляет символ "помидорки" или "галочки" к каждой выполненной задаче, + число помидорок (даже дробных)
    § Очень простой и удобный
    § Плашка "овер всех окон" с обратным отсчетом
    ○ Минусы
    § Нет отчетов
    ○ Итог
    § Использую из-за символов "помидорки"

    • PomodoneApp
    ○ Плюсы
    § Обратный отсчёт в трее
    ○ Есть отчеты
    § Управляет задачами в Trello: можно закрыть любую, она автоматом переместиться в "done"
    § Подцепляет теги и проект, это удобно, не надо самому ставить.
    ○ Минусы
    § Отчеты в Toggle удобнее
    ○ Итог
    § Использую, т.к. нравится обратный отсчет в трее, не так "давит", как Pomello

    • Toggl
    ○ Плюсы
    § Можно логгировать отдельно подзадачи из чеклистов Trello
    § Очень крутые, подробные и красивые отчеты
    ○ Минусы
    § Автопауза не связана с Trello
    § Все управление задачами — только через web-trello
    § Не берет "теги" из Trello
    ○ Итог
    § Использую постоянно, т.к. нужны отчеты
    Ответ написан
    Комментировать
  • Как создать общее свойство для элементов?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Нужно указать тип элементов, которым требуется указать стили. В DataGrid ячейки находятся в элементе DataGridCell, а заголовки - в DataGridColumnHeader.
    <DataGrid>
        <DataGrid.Columns>
            <DataGridTextColumn Header="Qwe"/>
            <DataGridTextColumn Header="Rty"/>
            <DataGridTextColumn Header="Uio"/>
        </DataGrid.Columns>
        <DataGrid.Resources>
            <Style TargetType="DataGridColumnHeader">
                <Setter Property="Width" Value="100"/>
            </Style>
        </DataGrid.Resources>
    </DataGrid>

    Можно положить стиль не в ресурсы, а в специальный контейнер. Разница в том, что стиль в ресурсах применяется во все вложенные подходящие элементы, даже вложенные внутри ячеек (например, в другой DataGrid внутри ячейки). Стиль в ColumnHeaderStyle будет использован только в заголовках этого DataGrid. Пример:
    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="Width" Value="100"/>
        </Style>
    </DataGrid.ColumnHeaderStyle>

    Если указывать стиль элементов, то этот стиль не добавляется к текущему, а заменяет предыдущий стиль. Чтобы стиль добавлялся к уже существующем стилю, то стиль нужно наследовать от старого:
    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="DataGridColumnHeader" BasedOn="{StaticResource {x:Type DataGridColumnHeader}}">
            <Setter Property="Width" Value="100"/>
        </Style>
    </DataGrid.ColumnHeaderStyle>
    Ответ написан
    4 комментария
  • Как не утонуть в океане информации?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    0. На хабре мир не замкнулся так же, как и на вконтакте)
    1. Когда "наткнулись" при "рабочем" поиске (когда делаете работу по текущему проекту) на интересную информацию - кладите статью (+линк) в папку рядом с проектом, применительно к которому Вы на нее набрели или отталкиваясь от темы статьи (рядом с другим проектом).
    2. По тематически-узконаправленному ("лучевому") поиску - вы найдете не более 5 статей. Это первоисточники и образовательные (примеры, производительность и т.д.) Все другие - "адский trash" и плагиат.
    3. Не ищите "от нечего делать": время потратите - толку 0.
    4. Используйте всю мощь поисковой строки гугла (символы управления приоритетами и т.д.) для отсеивания "мусорных" ссылок.
    5. На любую тему обсуждений - есть только 1 ресурс-лидер, который цитируют во всем интернете. Интересна тема - станьте участником такого сообщества и получайте уведомления по почте.
    6. Сначала планируете цель, затем идёте "в лес по грибы" за информацией. Если наоборот - всё...: Вас "засосёт" чёрная дыра технологий и читать Вы будете ВЕЧНО!!!
    7. Главное правило: статья должна прочитываться сразу или "привязываться" к вашей цели и отправляться в папку (см. п.1)
    И помните:
    тостер - для отдыха
    гугл - для работы

    UPD: Как правильно искать информацию
    Ответ написан
    14 комментариев
  • Какую cms или онлайн-конструктор выбрать для товарных лендингов?

    sim3x
    @sim3x
    Берете фреймворк и пилите решение под себя
    Ответ написан
    Комментировать
  • Как вы "обрабатываете" контент и материал, который изучаете?

    @LAG_LAGbI4
    я всё в еверноуте храню.
    Ответ написан
    Комментировать
  • Почему самописный софт не запускается на других компьютерах или работает некорректно?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Как вариант не все dll в комплекте с приложением
    Ответ написан
    Комментировать
  • Каким должен быть правильный контроллер?

    Deroy
    @Deroy
    Senior Developer, Software Architect
    Отвечу с позиции опыта на больших и средних проектах:

    Как говорят другие ответчики - D3lphi и Александр Шаповал , контроллер должен содержать минимум логики, и нет "единого правильного способа" его реализовать.

    Однако, исходя из своей практики, для обеспечения таких качеств проекта как сопровождаемость, тестируемость и изменяемость, я поступаю следующим образом:

    Контроллер, каким бы он не был и как бы не организовывался - содержит только обработку входных данных (валидация и преобразование) и преобразование выходных данных в нужный формат

    Логика и оркестрация которая в 80% случаев и является предметом спора о том как стоить контроллер (речь всех этих вызовах сервисов, управления потоками данных между ними, последовательности действий и пр), находятся в отдельном классе согласно паттерну Unit of Work - что позволяет легко покрыть все что связано с логикой вменяемыми юниттестами без танцев с бубном.

    Т.е. структура в итоге такая:

    {view} <--> {controller} <---> {unit_of_work} -->>> {{{..lots of services...}}}

    по сути класс семейства UnitOfWork - это полный сценарий обработки входных и выходных данных , с оркестрацией потоков данных и порядком действий, возможно какой то мелкой вспомогательной логикой, эдакий фронтенд над сервисами, заточенный под каждое конкретное действие извне (сам паттерн предполагает что класс создается на каждый отдельных случай и почти один в один описывает UseCase логику как она пришла от бизнеса (заказчика/аналитиков/моей головы/etc).

    Сами классы семейства UnitOfWork (имеется ввиду в одном приложении) могут иметь собственные иерархии наследования и композии - в угоду бизнес логики и дабы не дублировать код - главный критерий - это полная независимость бизнес и сервис слоев от контроллера. - что и является на мой взгляд "каноничным" вариантом реализации композии M и C в MVC.

    У меня, как у человека который не пишет фронты в принципе (имею ввиду сам UX/UI), но постоянно занимается сервисами, рестом, библиотеками - этот подход выработался по одной просто причине:
    взаимодействие с командой, я предоставляю "библиотеку"(не в классическом понятии этого слова) полностью абстрагированную от любых фронтов, оттестированную, полностью функциональную - а люди пишут к ней шаблонные обвязки где только валидация данных и рендер нужного формата под HTTP/Sockets/AMQP/etc типа всяких там CRUD/REST или RPC
    Ответ написан
    Комментировать
  • Как вы организовали хранение данных к проектам?

    opium
    @opium
    Просто люблю качественно работать
    по заказчикам все по папкам раскидываете
    закончили работу переместили в архив с годом
    итого в активной папке ну пяток активных заказчиков.
    Ответ написан
    Комментировать
  • Как хранить домашний медиа архив (фото, видео, аудио)?

    svd71
    @svd71
    Лет 5 назад задумался над этим вопросом, прочитал кучу инфы про хранение данных.
    Можно разделить эти данные на два вида: доступные(по скорости и возможностям) и безопасные.
    Самое надежное хранение - это перепоручить работу профессионалам. Облака именно из этой серии. Но безопасность весьма сомнительная. Но тоже нашел выход.
    Все доступные бытовые носители не надежны в принципе. Даже dvd болванки подвержены старению, особенно дешевые китайские. А что говорить о надежности жестких дисков. И стоит ли говорить о хранении на ленте в этом контексте (кстати ленту для профилактики нужно периодически перематывать - иначе перемагничивание по слоям идет).
    Но скорость доступа на этих носитеояз довольно высока.
    Поэтому польщуюсь следующей конфигурацией:
    Дома организован NAS сервер с доступом в сеть и возможностью подключать внешние диски. Фото и виде материал дублирую не только на внешних дисках, но и на dvd (ранее CD, подумываю о Blue Ray). Окромя того этот мой домашний сервер периодически подключаю к бесплатным аккаунтам в облаке и сохраняю там те же самые файлы, но упакованные, сжатые и кодированные.
    В итоге инфа 3 раза дублированна.
    Ответ написан
    Комментировать
  • Не включается ПК после чистки. Причина?

    Livencor
    @Livencor
    Большой сборник вопросов
    Советую разобрать (снять провода питания, снять видеокарту, дополнительные навесы - все, кроме куллера и процессора.), продуть контакты, и снова собрать. Возможно пыль попала на контакты в пазы или где-нибудь отходит провод или что-нибудь не до конца защелкнули и тд. Внимательно осматривайте железо, когда будете снова собирать - все контакты, все провода и тд.
    Ответ написан
    Комментировать
  • Как вызвать на C# функцию по клику с нажатой горячей клавишей?

    Young_khv
    @Young_khv
    ASP.NET Developer
    Реализация зависит от платформы Вашего приложения.
    На WinForms необходимо подписаться на событие Form_KeyPress, внутри него проверить код нажатой клавиши и если это пробел (code == 32) - вызывать функцию.

    Для WPF необходимо добавить KeyEventHandler на событие this.KeyDown во время выполнения Window_Loaded (ну и, конечно, реализовать соответствующий обработчик)

    Если Вы работаете в web, то отлавливать нажатие нужно средствами JS (ну или можно взять JQuery https://api.jquery.com/keypress/)
    Ответ написан
    Комментировать
  • Минимальные настройки безопасности Linux на VPS?

    Tyranron
    @Tyranron
    Ряд моментов Вы уже сделали, но я все равно их опишу для полноты списка.

    1. Создать отдельного пользователя и хороший пароль на sudo. Не использовать больше root напрямую. Совсем.

    2. SSH. Отключаем метод аутентификации по паролю. Если Вам не нужны другие методы, то их тоже можно отключить, оставив только publickey. Отключаем возможность аутентификации root'ом. Включаем использование только 2й версии SSH протокола.

    3. Устанавливаем Fail2Ban и настраиваем чтобы после нескольких неуспешных попыток подключения по SSH банило по IP на длительное время. Кол-во попыток и время бана можно тюнить в меру своей паранойи. У меня, например, банит на час после 2х неуспешных попыток.

    4. Iptables. Действуем по принципу "запрещено все, что не разрешено". Запрещаем по умолчанию весь INPUT и FORWARD трафик снаружи. Открываем на INPUT'е 22 порт. В дальнейшем открываем порты/forwarding по мере необходимости. Если у нас предполагаются сервисы на соседних серверах нужные только для внутренней коммуникации (Memcached, Redis, и т.д.), то открываем для них порты только для определенных IP. Просто так торчать наружу для всех они не должны.

    5. Настраиваем автоматические обновления apt-пакетов. Уровень security. То есть так, чтобы обновления безопасности накатывались автоматически, но при этом не выполнялись обновления со сменой мажорной версии (дабы обезопасить себя от "само сломалось").

    6. Устанавливаем ntpd. Серверное время должно быть точным. Также временную зону сервера лучше всего установить в UTC.

    7. TLS (не SSL) используем везде где можем. Через Let's Encrypt получаем бесплатные валидные сертификаты. В конфигах веб-серверов, mail-серверов, и других приложений торчащих наружу (в том числе и OpenVPN), запрещаем/убираем использование слабых шифров. Все ключи/параметры генерируем не менее 2048 бит. Самоподписные сертификаты подписываем с помощью SHA-256 (не SHA-1). Diffie-Hellman параметры (dh.pem) под каждый сервис лучше сгенерить отдельно. Проверяем TLS сервисов через Nmap. Минимальный grade должен быть A, не должно быть warning'ов.

    8. Правильный менеджмент пользователей/групп. Приложения/сервисы не должны запускаться под root'ом (разве что они действительно этого требуют и иначе никак). Для каждого сервиса создается свой пользователь.

    9. Если предполагается upload файлов через PHP (либо другие скриптовые языки), в директории, куда эти файлы загружаются (и которая доступна снаружи), должно быть жестко отключено любое выполнение скриптов/бинарников, что на уровне ОС (x права), что на уровне веб-сервера.

    Это была база.
    Дальше, в меру своей паранойи можно за'harden'ить сервер ещё следующими моментами:
    - SELinux, chroot
    - доступ к SSH только с определенных IP (нужно иметь 3-4 VPN-сервера под рукой)

    UPD И да, все это помнить/настраивать руками каждый раз может быть запарно. Используйте Ansible и автоматизируйте процесс (там родные и YAML, Jinja2 и Python).
    Ответ написан
    10 комментариев
  • Как построить свой рабочий день фрилансеру?

    Ilyasyakubov
    @Ilyasyakubov
    Муж, Логист ВЭД, IT-блогер
    Давай так, котлеты отдельно - мухи отдельно. Твоя проблема это на самом деле две проблемы:
    1. Нарушен режим сна. Это поправить легче всего. Вне зависимости от того во сколько ты ляжешь сегодня спать, встань завтра в 7:00, на следующий день повторить и зациклить. Первые два дня будет тяжело - потом все выправится.
    2. Ты не умеешь в тайм-менеджмент, что в 21 веке как-то совсем прискорбно. Поправить это посложнее, но тоже реально. Списки дел, дневник, планирование дел на конкретные часы - все это фигня полная и в эпоху постмодернизма не работает. Все что тебе нужно сделать на первом этапе это прочесть книгу "Getting Things Done" Дэвида Аллена, она совсем небольшая и в ней есть все ответы. Прочесть можно за день, если штудировать то за 2-3.
    P.S. Обязательно прочти "Семь навыков высокоэффективных людей" Стивена Р. Кови. Название может казаться пафосным, не обращай на этот факт внимания, книга просто маст рид.
    P.P.S. Если после этого останутся вопросы - пиши, с удовольствием отвечу.
    Ответ написан
    3 комментария
  • Как эффективно использовать GIT одному человеку в разных проектах?

    @heahoh
    Full stackoverflow developer
    Посмотрите на SourceTree: разделение на проекты, ветки под фичи и баги да и вообще удобный и приятный в использовании GUI для Git. И почитайте про git flow
    Ответ написан
    Комментировать
  • Как организовать Linux шлюз для интернета, что бы трафик локальной сети шел через tor. Возможные пути решения, мануалы?

    @Fixid Куратор тега Linux
    Вижу два простых решения:
    Выбираем машину для прокси
    1) Ставим tor с офф сайта, после запуска автоматически будет доступен прокси 127.0.0.1:8090
    дальше через iptables форвардим все входящие запросы на этот локальный сервер.
    Это был самый простой вариант
    2) Улучшаем: ставим pfsense (можно в виртуалку, ресурсы не жрет), указываем два gateway: 127.0.0.1:8090 (tor) и 192.168.0.1 (обычный роутер с инетом). Потом через iptables и alias в админке указываем правила форварда трафика. На DHCP сервере в качестве gateway указываем pfsense.

    Теперь клиенты будут идти через pfsense, который в зависимости от правил будет проксировать через локальный tor или будет перенаправлять на роутер. Можно практически неограниченно улучшать: контролировать и маскировать трафик, добавить кэш сервер (реально ускорить работу через tor), делать шаблоны для каждого пользователя и т.д. Все это делается очень просто, мануалы на русском, за 3-4 часа можно все настроить
    Ответ написан
  • Переход из backend во frontend?

    @Maa-Kut
    Работа с БД на сегодняшний день хорошо обеспечивается целой плеядой всевозможных ORMов; можно даже SQL не знать: тягай себе сущности простыми Linq-запросами и радуйся. А у очень многих веб-приложений логика работы с БД сводится к простому CRUD, т.е. никаких зубодробительных хранимок и сложносочиненных транзакций писать не приходится. Если взять EF Code First, то даже базу руками создавать не надо. В общем, не вижу проблемы.

    Что до проектирования, то тут разочарую. Программист, который не умеет проектировать (хотя бы на каком-нибудь уровне), - это не программист, а мелкий кодер (ненамного выше уровнем, чем секретарша-машинистка). И уход во фронт - не панацея, т.к. современный фронт - это километры скриптов и всевозможные фреймворки. Т.е. там тоже придется проектировать, и немало (иной раз похлеще, чем в бэке - зависит от специфики приложения).

    Если бизнес-логику рисовать совсем невмоготу, то остается скинуть это на кого-то другого. Кто-то другой сделает все нужные сервисы, работу с БД и другими источниками данных и эти сервисы вам предоставит в виде библиотеки, WCF-сервиса, через REST или еще как-то. Ну а вам останется нарисовать на ASP.NET фронт, в нужных местах сервисы подергивая. В принципе, в больших проектах подобное разделение на программистов фронта и бэка вполне себе применяется и часто бывает оправданно.
    Ответ написан
    Комментировать
  • Какую литературу читать новичку по C#?

    @Firik67
    Middle PHP Developer
    А. Троелсен "Язык C# 5.0 и платформа .Net 4.5"
    Ответ написан
    2 комментария