• Какие есть хорошие книги по архитектуре приложений?

    @hummerd
    Всех с наступающим!
    Это тема, видимо, плохо формализуется и потому как-то книг особо хороших нет.

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

    Смотрите на архитектуру с разных сторон. Со стороны менеджера (сколько будет стоить разработка с такой архитектурой?), со стороны пользователя (Легко ли вставить в такую архитектуру все, даже самые бредовые хотелки пользователя?), со стороны программистов (а хорошо ли будет писать под такую архитектуру?) и т.д.

    Опасайтесь субъективной оценки архитектуры - многие считают плохой любую архитектуру, придуманную кем-то другим. Если человек ругает архитектуру, добейтесь конкретных ответов, почему она плохая, а не расплывчатых обвинений, вроде "не гибкая", "архаичная" и т.д.
    Ответ написан
    Комментировать
  • Самая удобная система управления проектами?

    @YuriHx
    Trello + расширение для него: Plus For Trello

    Плюсы Trello здесь уже довольно подробно описали, и на самом деле, перепробовав в десяток разных систем, однозначно выбрал его за сочетание простоты и гибкости. Есть не менее простые типа BaseCamp или уже помянутого здесь (не к ночи)) Teamer, но они очень сильно проигрывают в гибкости, т.е. ограничивают возможности, которые в более-менее серьезном проекте чаще всего нужны. С другой стороны есть много сложных либо в развертывании, либо в освоении систем, написанных "чужими для хищников", с которым больше времени уйдёт на то, чтобы заставить всю команду в них разобраться (особенно если не все в ней - гики), чем экономится от их использования (не буду показывать пальцем, чтобы не усиливать холивар, все, кто уже вляпался в такие хоть раз, знают о чем я)).

    Ещё одна важная фича Trello, о которой здесь ещё не было сказано - отличная официальная мобильная версия (по крайней мере для Android, iOS лично не пробовал).

    Ну а Plus For Trello делает из Trello вообще конфетку. Изначально это расширение для Chrome, которое добавляет трекинг времени, отчеты и множество разных удобных и полезных фишек. Сделано очень удобно, так что к обычному использованию Trello добавляется совсем немного простых действий, а на выходе получается куча новых возможностей. Мне из них больше всего нравятся отчеты и Burn-down графики с фильтрацией по всему что угодно и группировкой. Можно отслеживать оценочное, использованное и оставшеся время по каждой задаче или юзеру или тегу или в целом по проекту и т.д.
    При этом всё это бесплатно, открыто, с локализацией и очень быстро развивается и поддерживается (обновления раз в 1-2 недели).
    Есть ещё приложение для Android, которое пока отстает по функционалу от расширения, но также развивается.
    Ответ написан
    Комментировать
  • Какие есть хорошие книги по архитектуре приложений?

    dmitry_pavlov
    @dmitry_pavlov
    World-class .NET freelance contractor (remotely)
    По архитектуре приложений ничего дельного нет. Все что мне доводилось видеть - это описание того или иного подхода, рассморение его достоинств. Общего обзора по этой теме нет (я не встерчал). Чтобы разбраться в вопросе архитектуры ПО, начинайте читать отсюда и дальше по ссылкам из блока see also. Это, пожалуй, будет самый быстрый способ. Если что-то непонятно по тому или иному вопросу - подчитывайте статейки по этой теме (их много даже на русском на всяких хабрах и подобных ресурсах).

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

    Я сам так сделал когда-то. Весьма неплохо разобрался :)
    Ответ написан
    1 комментарий
  • Какие есть хорошие книги по архитектуре приложений?

    @SergeyZelensky-Rostov
    вот есть книга, но есть одно но книги очень быстро устаревают, особенно касаемо веб-разработки, так что не старайтесь особо зацикливаться на их прочтении.
    Веб-приложение - работает по архитектуре клиент-сервер
    Роль бэкэнда и фронтэнда проста для восприятия, бэкэнд серверная часть(сервер) приложения, по-сути разницы между бэкендом сервиса, сайта или мобильного приложения - нет,выполняют одну и туже функцию, сбор и обработка данных, предоставления данных в удобном формате клиенту. Что касаемо клиента (в частном случае фронтенда ) он может выполнять массу вещей, самое распростаненное это GUI ( формы, таблицы ,кнопочки и т.д.), который дает пользователю общаться с программой, вводить данные получать данные в различных формах, производить пред-валидацию данных ( Всегда проверяйте данные на сервере, будьте параноиком - не верьте не кому), и еще кучу всего .
    API
    API (интерфейс программирования приложений, интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай]) — набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах.
    wikipedia

    и так если GUI для человека , то API интерфейс для программ, к примеру нам необходимо получать курс валют в в виде таблицы в нашем приложении , в этом случае мы как раз и будем использовать API сервиса, предоставляющего такую информацию.
    REST - хорошая статья
    Ответ написан
    Комментировать
  • Как создать устанавливаемый образ ОС, и какие есть способы клонирования серверов?

    sixhundredsixtyfive
    @sixhundredsixtyfive
    У меня для этого написан скрипт, он клонирует работающую систему "на лету" на другой подключенный физический диск или в файл виртуального образа (vdi, vmdk, qcow2). Есть опции скрипта позволяющие зашифровать весь диск клона. Это нужно когда клонирую систему на ноут например и есть вероятность потерять ноутбук. Или запускаю склонированную систему на чужих серверах виртуализации.
    В скрипте задействованы следуюшие утилиты:
    1. parted для разбивки диска для клона
    2. cryptsetup для шифрования
    3. lvm - упрощает жизнь
    4. rsync для копирования файлов
    5. chroot чтобы сделать на склонированнрй системе пункты 6 и 7
    6. grub-install, update-grub
    7. update-initramfs
    Ответ написан
  • ПЛИС, в каком сейчас состоянии?

    @Mirn
    Знать МК и ПЛИС на порядок лучше чем просто МК. При помощи ПЛИС подключенной к МК можно существенно быстрее и лучше делать сложные проекты в которых нужно управлять чем то сложным или быстрым или где нужно множество выводов (более 100шт например) и тд. Таким образом такой разработчик может сделать почти всё что связано с железом ... (за исключением того что связанно с сетями езернет и инетом - для этого нужны одноплатные ARM Cortex Ax с полноценным Люниксом и полноценными сетевыми протоколами).
    Даже простую периферию чаще проще и быстрее сделать на плис чем разбираться с таймерами, ДМА и тд
    Но это дороже и плата болше, зато разделение хорошее - плис дёргает ножками и делает реалтайм, а МК считает и управляет и дёргает низкоскоростным или не реалтаймовым железом как дисплей, кнопки и тд
    Более того такой разработчик по факту становится незаменимым ... а это в какой то степени и минус - уйти в отпуск почти невозможно, а з/п редко когда могут поднять - часто денег нет и з/п уже максимальная на предприятии.
    Ответ написан
  • Какие контейнерные системы для линукса Вы знаете?

    Olej
    @Olej
    инженер, программист, преподаватель
    LXC, вот здесь достаточно о настройках: контейнеры LXC
    Ответ написан
    Комментировать
  • Как изучаем Python?

    yorko
    @yorko
    Data Scientist
    Для знакомства с основами языка, алгоритмами и структурами данных есть неплохой курс в виде тетрадок Ipython.
    Ответ написан
    1 комментарий
  • Какие цели и задачи у Docker в production?

    Мы используем Docker для установки Java приложений вместе с окружением. В скрипте сборки собирается контейнер из Docker-файла в него ставится все что нужно, запихиваются настройки и само приложение.
    Можно вызвать команду deployment-a, если есть настройки доступа к удаленным серверам.
    Да, деплоймент упрощается значительно.
    Но главная причина по которой мы используем Docker - это возможность зафиксировать окружение. В java многое для этого сделано, легко можно собрать приложение с заданным набором версий библиотек. Но вот отслеживать версии окружения (серверов приложений и т.д.) приходилось ручками или в документации. Что вело к возникновеню понятных проблем. С Docker-ом вся конфигурация описана в файле и лежит в Git и версионируется вместе с приложением.
    Ответ написан
    5 комментариев
  • Как построить, структурировать изучение и повторения анг. языка?

    Extremesarova
    @Extremesarova
    Биоинформатика, машинное обучение, анализ данных.
    1) LinguaLeo. Это онлайн-платформа для изучения и практики иностранного языка, на которой по данным сервиса, на сентябрь 2014 года на нём зарегистрировано 9 500 000 пользователей.
    С помощью этого сайта можно изучать грамматику, тренировать слова, читать тексты, слушать аудио, смотреть видео (все, конечно же, на английском языке). Грамматических курсов огромное количество для всех уровней владения языком (многие из них платные, но их цена равна 1-3 занятиям у репетитора). Написаны профессионально с примерами и заданиями для проверки знаний. При регистрации для нормального обучения необходимо будет купить годовой "золотой статус" за 700-1000 рулей (цена день ото дня варьируется), который позволит вам открыть доступ ко всей функциональности (кроме некоторых платных курсов).
    LinguaLeo постоянно начинает сотрудничества с крутыми международными образовательными онлайн-платформами. Последние из них: Coursera, British Council, TED. Эти платформы предоставляют, в основном, видео, в связи с этим, в видеоплеер был встроен специальный инновационный интерактивный перевод, который позволяет быстро добавлять слова из видео себе в словарь, а потом изучать и тренировать их.
    При регистрации будет проведен тест на знание английского языка и будут предоставлены индивидуальные рекомендации по изучению. Там есть огромное число тематических наборов слов для изучения. Более того, вы можете сами создавать такие наборы. Я вот уже давно это практикую, например, для разных книг у меня разные наборы слов.
    Сервис имеет мобильные приложения для всех популярных платформ.
    Уникальный сервис (я уже с 2012 года здесь занимаюсь). Не нужно жалеть 1000 рублей! An Education is Priceless.
    Также для lingualeo есть удобное расширение для браузера (у меня chrome), которое при нажатии на английское слово сразу дает перевод, озвучивает произношение и позволяет добавить его к себе в словарь для дальнейшего изучения.
    2) Duolingo. Отличный сервис для изучения языка. На десктопной версии сайта вы сможете тренировать грамматику (без теории, только практика), а так же сможете переводить тексты и загружать свои. То есть, если вы видите какую-нибудь интересную статью на каком-нибудь сайте, то можно ее загрузить на этот сайт и удобно переводить - будет предложен перевод для каждого предложения и каждого слова.
    Имеются приложения для iOS и Android. В мобильных версиях только грамматика.
    3) Memrise. Лондонский стартап. Тут можно тренировать слова. Реализован интервальный алгоритм запоминания. Кто будет заниматься рекомендую курс Upper-intermediate English от Cambridge (тут уже нужно знать базовые слова) и курс, который поможет выучить эти базовые слова.
    4) Anki. Невероятно мощная и бесплатная программа (windows, mac, android, для iOS платная), которая использует технику интервальных повторений, о которой говорилось в предыдущем пункте. Все можно настроить под себя :)
    Очень крутой сервис. С помощью интервального алгоритма слова запоминаются очень хорошо даже, если сначала вы их совсем не знаете.
    Видите незнакомое слово, добавляете его, пишите перевод, добавляете произношение, и пример использования.
    4) Cambridge - English Grammar in Use. Это приложение, основанное на знаменитой книге. Тут полный курс грамматики (есть британское произношение примеров - очень хорошее). Есть приложение и для iOS. Стоит ~ 600 рублей. Полностью на английском. И для его выполнения рекомендую пройти базовые слова (можно использовать пункт 3).
    5) BBC Learning Language. Отличный сайт, созданный специально для изучения английского языка. Можно выбрать уровень знаний. Там вы найдете курсы, видео, подкасты.
    Да, точно, подкасты.
    6) Подкасты. Есть, по крайней мере, 3 приличных подкаста по изучению английского языка.
    ESL Podcast - самый лучший подкаст (IMHO). Два типа выпусков : диалог и беседы на определенные темы.
    6 Minute English - часть проекта BBC Learning Language. Тоже очень крутой подкаст.
    British Council - слушайте подксаты, смотрите видео, все все все.
    Grammar Girl, The English We Speak, ...
    7) Видео и каналы на YouTube. Мне больше всего нравится группа каналов от сайта engvid. Там интересно рассказывают про разные вещи: и грамматика, и произношение, и идиомы, и фразовые глаголы и многое другое. На сайте можно выбирать видео по уровню владения языком. Если вы зарегистрируетесь на lingualeo, то у них есть специальный раздел при сотрудничестве с engvid с тем интерактивным плеером, про который я писал раньше. Очень мне эти видео нравятся.
    Видео - ororo.tv . Тут можно смотреть разные сериалы и мультики, но больше часа в день платно. Этим сервисом я не часто пользовался последнее время.
    8) Совсем недавно узнал про такую возможность обучения. Создателя этой системы зовут A.J. Hoge. А сама система называется Effortless English System.
    Во-первых, у него есть подкаст. Можно слушать тут. А, если у вас есть устройство на андроиде или iOS, то там можно скачать какой-нибудь проигрыватель для подкастов, найти там этот подкаст и многие другие, и слушать там. Называется он Effortless English Podcast.
    Во-вторых, у него есть курсы, которые описаны на сайте (рейтинг по 180 отзывам 4.73/5 - круто).
    Вот тут можно видео посмотреть на кого нацелен этот курс. Я не знаю какой у вас уровень по знанию слов и грамматики (его можно поднять с помощью предыдущих пунктов, для слов хорош memrise, для всего остального lingualeo), но вам должно подойти в любом случае (как и мне), потому что разговорный английский очень сложно развить, не разговаривая с носителями языка, а тут должно быть очень классно.
    Подкаст бесплатный, а сами курсы вы можете найти на популярных трекерах. Точнее здесь. И там еще есть ссылка на Power English. Вот я него я и хочу начать, а пока только подкасты слушал.
    Общие рекомендации:
    Английским рекомендую заниматься каждый день. Выделять, хотя бы, 20 минут (лучше час).
    Кроме специальных сервисов вы можете читать книги на английском (можно на сайте LinguaLeo). Для начала можно читать детские сказки (простая грамматика и слова), потом переходить к популярным книгам, сюжет которых вы знаете и читали не раз - к таким, которые больше всего нравятся. Мне вот нравится серия книг про Гарри Поттера и я её перечитываю на английском языке. Я еще скачал аудиокниги по этой серии и очень классно слушать, и одновременно читать - получается сразу два навыка тренируются. Как я уже сказал, что на lingualeo есть эта серия и я читаю там - удобно, видишь незнакомое слово, ткнул на него и оно добавилось в словарь, и потом можно проходить его на различных тренировках (слово - перевод, перевод - слово, собрать слово из букв, аудирование, и другие). Кстати, на lingualeo тоже добавили интервальную тренировку, но она чуть хуже, чем на memrise.com.
    Более того, я рекомендую вам читать новости на английском (лучше конечно британские) - The Guardian, The Telegraph; но и американские можно, например, Business Insider.
    Ну и, конечно же, читайте тематическую литературу. Там будет необходимая в профессии лексика.
    Ответ написан
    2 комментария
  • С чего начинается CI?

    comm1x
    @comm1x
    Web-developer
    Для внедрения CI последовательность достаточно проста:
    1. VCS. Для начала внедрите git, не обязательно сложности с gitlab. Для 3 человек хватит и приватного репозитория на bitbucket.
    2. Приемочные тесты. Берем фреймворк для тестирования (я люблю Codeception, но их много и других), и напишите пару приемочных тестов на критические части (оплата, регистрация напр.).
    3. Юнит-тесты. Покройте юнит-тестами основные части проекта (для первой итерации хватит и 5-10% покрытия кода).
    4. Автоматизируем. Определяемся с CI, настраиваем ее, настраиваем хуки репозитория и уведомления о success/fail-билдах по почтам разработчиков.

    Коротко можно описать так: должен быть гит, и должны быть тесты.
    Теперь до непрерывного деплоя рукой подать. Скорее всего, когда вы до этого дойдете, вы уже будете примерно представлять как лучше организовать этот процесс, потому что здесь вариантов великое множество. Начиная от самописных деплой-скриптов и готовых deploy software типа Capistrano, заканчивая разверткой и подменой бэкендов и сменой docker-контейнеров.
    Ответ написан
    Комментировать
  • Как развивать навык менеджмента интернет-проектов?

    dmitry_pavlov
    @dmitry_pavlov
    World-class .NET freelance contractor (remotely)
    Если речь идет о менеджере проекта по разработке ПО, надо будет всреьез разобраться с процессом разработки программного обеспечения - https://en.wikipedia.org/wiki/Software_development...

    А в целом менеджер - должен понимать процессы и роли в проекте и уметь ими управлять. Есть несколько подборок книг habrahabr.ru/company/devrainsolutions/blog/163113 и www.livelib.ru/tag/project+management
    Ответ написан
    Комментировать
  • Как вы освоили шаблоны проектирования?

    27cm
    @27cm
    TODO: Написать статус
    Вот вам 12 маленьких задач на 12 паттернов:
    github.com/zfcampus/zendcon-design-patterns

    1. Открываете папку с паттерном.
    2. Читаете README.md с описание задачи.
    3. Открываете exercise.php и пытаетесь решить задачу, применив соответствующий паттерн.
    4. При необходимости вспоминаете теорию: github.com/domnikl/DesignPatternsPHP
    5. Сверяетесь с решением в solution.php.
    Ответ написан
    7 комментариев
  • С чего начинается CI?

    akubintsev
    @akubintsev
    Опытный backend разработчик
    CI - это автоматизированная сборка проекта на основе версионного контроля и прогон тестов.

    Собственно, начинать надо с задачи реализации деплоя.
    Деплой сделать - задача нетривиальная. Есть для этого разные инструменты и универсального решения нет. Отладить процедуру деплоя нужно для сборок в CI и для продакшена/стейджа.
    Лично я для своего последнего маленького проекта для выкладки в продакшн выбрал deploybot.com - в принципе всё, что нужно есть, в том числе и хорошая интеграция с DigitalOcean.

    Что касается инструмента для CI, то из бесплатных обычно пользуются Jenkins. Я пробовал в последнем проекте PHP CI - тоже годно, но не настолько гибкий инструмент.

    Выкладку на продакшн/стейдж можно настроить по-разному. Например по коммиту в специальную ветку, по ключевым словам в коммите или вообще вручную. На прод однозначно стоит делать выкладку вручную.

    А, еще один немаловажный момент. Для успешного функционирования этого всего дела нужно внедрить версионирование схемы БД и фикстуры (для CI).

    Жизненный цикл у нас был такой. Тимлид определяет некий не большой, но и не очень маленький набор фич, которые должны попасть в новую версию приложения. Все тикеты связаны с версиями. И поэтому может случится так, что даже готовую фичу он определит в другую версию продукта.
    Каждая готовящаяся к релизу версия получает свою ветку в git и там делается мердж нужных коммитов с фичами. Каждый коммит автоматически тестируется в CI.
    Когда все фичи сделаны и коммиты слиты, то можно залить на стейдж сервер и погонять вживую версию в условиях близких к боевым. И наконец, если всё хорошо, то делается деплой на продакшн.
    Ответ написан
    Комментировать
  • Ошибка в построении результатов интегрирования?

    @nirvimel
    from scipy.integrate import odeint
    from numpy import linspace
    from matplotlib import pyplot
    
    
    def epid(y, t):
        k = 0.00003
        L = 250000
        return k * y * (L - y)
    
    
    t = linspace(0, 12, 61)
    y = odeint(epid, 250, t)
    
    pyplot.plot(t, y)
    pyplot.show()
    Ответ написан
    Комментировать
  • Какую систему управления проектами выбрать непрофессионалу?

    @T13Nemo
    Product owner
    JIRA Software?

    Evernote это, конечно, прекрасно, но у Atlassian есть Confluence. А это - отличнейшая wiki.

    Что касается интеграции с GCalendar, у Atlassian есть плагин Team Calendar, который можно интегрировать с гугловым.

    Функционала по кастомизации процессов, задач, карточек на доске более чем достаточно.

    Бонусом с Jira можно приобрести bitbucket для хранения кода и bamboo для CI-среды.
    Также у них есть неплохой мессенджер hipchat.
    Ну и на поддержку можно включить service desk, а на long-term planning - portfolio

    Ключевые преимущества jira для нас:
    1. Предоставляется по подписке
    2. Все продукты компании тесно интегрированы между собой
    3. Мощнейшее комьюнити - на любой ответ гугл выдаёт с десяток статей
    4. Множество плагинов от сторонних компаний, которые можно быстро подключить

    Здесь можно почитать о комплексном решении, которое они предлагают:
    https://www.atlassian.com/continuous-delivery
    Ответ написан
    1 комментарий
  • Как правильно построить архитектуру клиент-сервер приложения?

    @swdmitriy
    Java/android developer
    Хорошая русскоязычная статья о связке Service+ContentProvider+Loader - Android архитектура клиент-серверного приложения
    Ответ написан
    Комментировать
  • Как изучаем Python?

    @kozlo_22
    Я в своё время читал Лутца. Очень хорошо прдойдет новичкам в программировании.
    Вот тут список литературы есть, все разбито по уровню знаний https://wiki.python.org/moin/PythonBooks.
    Ну а лучше всего учиться на примерах. Пробуйте решать практические задачи.
    Ответ написан
    1 комментарий
  • Как защититься от прослушивания траффика?

    NeiroNx
    @NeiroNx
    Программист
    1. Чистая операционная система и оборудование.
    2. Адекватный браузер с отключенными Cookie, анализом скриптов.
    3. Шифроваванный тунель (VPN) до надежного сервера - c физическим обменом ключами.

    Нередко провайдер может модифицировать трафик и выволнять JavaScript инъекции.
    Ответ написан
    Комментировать
  • Как изучить Spring?

    @aol-nnov
    ну, как-как..
    spring in action, petclinic и spring.io :)
    ну, и практитка, естественно! и, да, не spring ради spring-а, а именно практическое применение. на одном энтузиазме и учении "на будущее" далеко не уедешь )
    Ответ написан
    4 комментария