• С чего начинать проектировать приложение?

    Jeiwan
    @Jeiwan
    Сначала нужно расписать функционал приложения по пунктам: составить список тех функций, которые будут у приложения. Далеко в будущее заходить не надо, так как планы могут поменяться.
    Потом взять те пункты, без которых приложение не состоится, самые минимальные и базовые вещи, и сделать их. Например, для магазина это: витрина товаров, возможность заказать товар, указав адрес доставки. Корзина и регистрация на этом этапе не обязательны, так как магазин может работать и без них. А без витрины и возможности заказать товар не может. После реализации этих базовых функций уже можно накручивать функционал дальше.
    Суть в том, что на каждом этапе у тебя должно быть законченное, рабочее приложение. Разница между этапами — степень проработки деталей функционала приложения. Это метод прогрессивного джипега :) Или agile.
    Чтобы понять, с чего начать, нужно посмотреть на приложение глазами пользователя: пользователь заходит на сайт, видит витрину товаров, видит описание у товара, цену, другие параметры, кнопку купить и т. д. То есть нужно реализовывать сценарии поведения пользователя. Можно даже acceptance-тесты накатать — помогает собрать мысли.
    Ответ написан
    Комментировать
  • С чего начинать проектировать приложение?

    ColCh
    @ColCh
    Веб разработчик
    Проектирование нужно начинать с архитектуры. Основная идея - разбить систему на модули, каждой из которых выполняет свою задачу (single responsibility principle). Каждый модуль содержит компоненты. Компоненты в модулях сильно связны (cohesion) и слабо связаны (coupling). Каждый составной элемент - чёрный ящик, куда подаётся и выводится информация. Для устойчивости нужно интерфейс у этих ящиков документ документировать. Для построения API рекомендую building apis you won't hate.

    Начинайте проектировать сверху, а имплементировать - снизу.

    Ещё пара, но это уже advanced и немного мимо кассы ... вместо наследования используйте композицию. Поймите принципы ООП и ФП, используйте иммутабельность там, где нужно часто проверять, изменились ли данные...
    Ответ написан
    Комментировать
  • Где найти пример идеального UX/UI?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Может кто наталкивался на хорошие статьи на тему, что бы ссылку дизайнеру кинуть или тыкнуть заказчика мордой в теорию.

    В последнее время сам себя тыкаю в замечательную статью - UX/UI Best Practices: 125 Easy Tweaks to Optimize .... Там обо всем простыми словами и с примерами.
    Ответ написан
    2 комментария
  • Существует ли типовая архитектура мессенджера?

    @akass Автор вопроса
    Developer
    Прошло много лет, я прокачал скиллы и знаю что ответа на этот вопрос нет. Всем спасибо)
    Ответ написан
    Комментировать
  • Какие курсы по дизайну UX и UI выбрать?

    KpoBaTb
    @KpoBaTb
    Единственные стопроцентные адекваты — Горбунов и товарищи. К слову, денег берут по курсам, а не за всё обучение сразу. Если проходите по баллам на следующий, тогда оплачивается следующий. В общем, рекомендую только их. Тут профит в том, что пусть у них чуть дороже, но пользы во много раз больше. Если не хотите платить, просто откройте дрибл/беханс и копируйте понравившиеся макеты до посинения. Скил подтянете.
    Ответ написан
    Комментировать
  • Какие курсы по дизайну UX и UI выбрать?

    Ivnika
    @Ivnika
    С таким опытом зачем вам эти курсы? Я пока не видел толкового именно по повышению уровня, большинство для начинающих
    Ответ написан
    Комментировать
  • Что здесь с математикой не так?

    @AVKor
    И. М. Виноградов. Основы теории чисел. стр. 8.
    Ответ написан
    Комментировать
  • Что нужно знать ux/ui дизайнеру на 2018 год? И как он отличается от веб дизайнера?

    Chipr
    @Chipr
    UX/UI designer
    На мой взгляд, UX/UI дизайнер — это современное предоставление о T-образной модели специалиста. Основная специализация сильно зависит от компании или проекта. Базовые вещи, конечно же, типографика, цвет, композиция, css, html, принципы анимации и соответствующие инструменты и сервисы, это минимум для junior позиции. Психофизиология стала очень важна. Различные паттерны поведения, особенности человеческого организма и т.п. Сюда же будет входить работа с метрикам, исследования, статистикой, CJM-ми и пр.
    А дальше уже все будет зависеть от специализации. Кого-то растят в лиды, кого-то в продакты и т.п. В целом, базовые знания необходимы по всем этапам разработки. У нас в компании дизайнер плотно работает с BA, разработчиками и самим клиентом. Поэтому приходится читать больше по этим отраслям.
    Ответ написан
    Комментировать
  • Существуют ли заочные курсы или стажировка по анализу данных на русском языке?

    @lPolar
    data scientist
    ИМХО, тут есть несколько аспектов:
    1. Как написал brainick , математический бэкграунд и английский в data science практически обязателен.
    Причин этому несколько: отсутствие хорошей литературы на русском языке (как по теории, так и по программированию), обилие английских терминов (lift/top/cross-validation и прочие), значение которых в переводной литературе порой объяснятся весьма туманно.
    2. Если говорить о конкретной литературе, которую стоит почитать, я бы выделил несколько уровней:
    Уровень 0
    1. Бизнес-аналитика - Паклин, Орешков (самое базовое и обзорное введение)
    2. Статистика/Тервер ( по мне, хороши книги Айвазяна/Мхитаряна)
    3. SQL - в обязательном порядке. Мне в свое время помогла книга "SQL для простых смертных"
    4. Изучаем Python - М. Лутц (наиболее полная книга по языку, все что нужно для data science здесь точно есть)
    5. Программируем коллективный разум (к слову сказать, вот в этой книге отличный перевод)
    Уровень 1
    1. Математические основы машинного обучения и прогнозирования - Вьюгин (книга сложная, без подготовки по учебникам НМУ на тему анализа и линейной алгебры лучше не подходить)
    2. Python for Data Analysis (pandas во всей красе, тут нечего добавить)
    3. Примеры и статьи по построению моделей в sklearn - на хабре в последнее время часто мелькают статьи на эту тему, там все достаточно хорошо расписано.
    Уровень 2
    1. Hadoop и иже с ним ("Hadoop в действии", "Programming Pig")
    2. Apache Spark - достаточно почитать описание Python API.
    Тут есть еще один момент - не стоит слишком привязываться к одному языку и фреймворку.
    Одна из неприятных проблем python+pandas+sklearn заключается в том, что эта связка слабо масштабируется - при 2-3-4 гб данных становится сложно разместить их в оперативной памяти. Я знаю про chunk-reading+partial_fit, но точность таких моделей оставляет желать лучшего.
    С другой стороны, если обрабатывать эти данные в pyspark, то теряется все удобство pandas.DataFrame и так далее. Отрасль data science быстро развивается и обрастает новыми технологиями, так что нужно все время держать руку на пульсе.
    UPD: в spark 1.3 появились DataFrame.
    Ответ написан
    4 комментария
  • Зачем использовать pandas и numpy для анализа данных?

    @asd111
    Python используется потому что его можно потом встроить в рабочее приложение. Так делает гугл, яндекс и др.
    Numpy и т.п. библиотеки написаны на С поэтому они не такие медленные как кажется.
    Там где не хватает скорости python библиотек написанных на С, используется С++ а не SQL.
    SQL подходит для некоторых задач, но нарисовать график с помощью SQL нельзя, а с помощью тех же python библиотек возможно. В анализе данных часто строят графики, считают векторные и т.п. произведения, на SQL такое писать неудобно.
    Если не используется SQL или python, то используют обычно wolfram mathematica или mathcad и т.п. математические программы где удобно считать матрицы, векторы, производные и удобно строить графики.
    С помощью python пишут софт, в котором используется результат анализа данных, поэтому и саму обработку данных пишут на python(или на С++).
    Для python есть большие machine learning библиотеки наподобие google tensor flow https://www.tensorflow.org/ что опять же говорит о том, что данный язык является стандартом для написания прикладных приложений, связанных с machine learning, так же как SQL является стандартом для работы с БД.
    Ответ написан
    2 комментария
  • Синхронный и асинхронный код, почему так называется?

    MarcusAurelius
    @MarcusAurelius
    автор Impress Application Server для Node.js
    А сам код синхронным не называется, это его по ошибке или для упрощения так называют. Синхронным и асинхронным называется только API ввода-вывода, т.е. операции, прерывающие исполнение кода и требующие от системы обратиться к внешнему устройству, работающему не синхронно с центральным процессором. Операции ввода-выдвода, каковые есть: работа с дисками, портами, контроллерами, периферийными устройствами, как клава, мыша, тачскрин, разные датчики, вебкамера, сетевые карты, блютузы и другие радиомодули, принтеры, видеокарты и прочее. Все они получают задание от программы, и исполняют его отдельно, своими мощностями. Потом внешние устройства присылают программе сигнал о статусе исполнения и, возможно, полученные данные. Программа все это время может ждать (если у нее синхронное API, т.е. блокирующее) или что-то делать (если асинхронное, т.е. не блокирующее). Если программа ждет, не переходит к выполнению следующего действия, то это синхронный ввод-вывод, потому, что осуществляется процесс синхронизации программы с внешним устройством. Внешне устройство посылает прерывание, которое обрабатывает операционная система и через несколько слоев драйверов оно попадает в программу, обычно в виде колбека или события. Если программа ждала, то вызов API не завершался, она все время слушала, когда придет событие о завершении операции ввода вывода, а получив его API отдает ответ и управление переходит к следующей команде, что и называется, синхронизацией с периферийным устройством. Если программа не ждала, то вызов API сразу завершается и не блокирует поток выполнения программ, это называется асинхронным API, потому, что процесс синхронизации не происходит явно, а ответы возвращаются через события.
    Ответ написан
    3 комментария
  • Post и Get запросы, какая между ними разница и что лучше и для каких целей?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Общего между ними то что они работают одинаково. Разницы между ними технически никакой. А вот идеологические различия есть.

    Я расскажу о них в контексте PHP. Прошу заметить что протокол HTTP к PHP имеет косвенное отношение потому что он создавался для обмена html страницами а PHP просто расширяет возможности и того и другого.

    GET запрос используется чтобы получить данные а POST чтобы отправить. (Напоминаю что технически они работают одинаково).

    Поэтому в контексте PHP опираясь на эту идеологию сделали следующим образом:
    1. При каждом запуске PHP по умолчанию создаются суперглобальные массивы ($_GET, $_POST).
    2. Если в строке запроса есть вопросительный знак(?). То все что после него считается параметрами GET запроса они представлены в формате 'ключ'='значение' и в качестве разделителя используется знак амперсанда (&)
    Пример:
    GET /index.php?name=Андрей&surname=Галкин
    это строка запроса, тут 2 параметра. эти параметры попадут в массив $_GET.
    3. $_POST заполняется другим способом. содержимое этого массива заполняется из "заголовков запроса". То есть из места, скрытого от глаз в явном виде. Всю рутину по созданию таких заголовков берет на себя браузер. Хотя иногда и что-то редактируется в заголовках в ручную.

    Чаще всего пост запрос используется в формах (для отправки данных).

    Например у нас есть форма для входа 2 поля логин и пароль.

    Представим что мы используем GET метод. Тогда при отправке формы мы перейдем на следующий адрес /login.php?login=Андрей&password=123 согласитесь что так передавать такую информацию совсем не безопасно. Любой может открыть ваш браузер и начиная вводить адрес сайта он из истории может увидеть ваши пароли и логины.

    А вот если бы мы указали методом POST то мы бы получили следующий запрос:
    POST /login.php (login=Андрей&password=123) то что в скобочках было бы скрыто и никак не сохранено в браузере.

    Теперь другая ситуация например форма поиска. Мы вводим текст и получаем страницу с результатами. Вот тут уместнее GET форма. потому что нам было бы удобно сразу иметь ссылку на результат поиска, то есть добавить в строку запроса можно выразится "Публичные параметры", которыми можно поделиться. И как результат в строке браузера будет конкретная ссылка на текущую страницу. Мы можем ее скопировать, и разместить где-нибудь, или например скинуть другу. И получить при переходе одну и ту же страницу. А не просить других людей зайти на сайт и в поиск вбить определенную фразу чтобы получить необходимую страницу.

    В общем подводя итог:
    GET - это чтобы получить определенную страницу в определенном виде ( сортировка, текущая страница в блоге, строка поиска и т.п. ).
    POST - для оправки данных которые не влияют на отображение страницы, в том плане что эти данные влияют только на результат выполнения скрипта ( логины, пароли, номера кредиток, сообщения и т.п. ).

    И еще одна хорошая новость их можно комбинировать, например
    POST /index.php?page=login (login=Андрей&password=123) Думаю я уже достаточно объяснил что из этого получится и какие параметры в какой массив попадут.
    Ответ написан
    2 комментария
  • Книги по Python для начинающих?

    AgentProvocateur
    @AgentProvocateur
    На основе многих рекомендаций и отзывов.

    Начало:

    1. Сэнд "Hello World. Занимательное программирование"
    2. Доусон "Программируем на Python"
    3. Любанович "Простой Python"

    Закрепление:

    1. Лутц ("Изучаем", "Программируем", "Карманный справочник")
    2. Рамальо "Python - к вершинам мастерства"
    3. Саммерфилд "Python на практике"

    Прикладное применение:

    1. Митчелл "Скраппинг веб-сайтов на Python"
    2. Свейгарт "Автоматизация рутинных задач с помощью Python"
    3. Маккинни "Python и анализ данных"

    Django:

    1. Djangogirls
    2. Головатый "Django. Подробное руководство"
    3. Документация
    Ответ написан
    5 комментариев
  • Что почитать по SQL Server Analysis Services?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    SQL Server Analysis Services * Cube Development Cookbook
    MDX with Microsoft SQL Server * Analysis Services Cookbook
    Ответ написан
    Комментировать
  • Какие есть хорошие книги по архитектуре приложений?

    @akimdi
    есть пару книг, я сам собирал долгое время, но информации действительно мало.
    вот ссылка https://yadi.sk/d/TIjekwdAmiBWa
    Ответ написан
    Комментировать
  • Photoshop или Illustrator в веб дизайне?

    tigroid3
    @tigroid3
    PHP, YII2, SQL, Postgres, Docker, SPHINX, GIT
    По хорошему, в PS общая картина отрисовывается, а в AI или Corel всякие элементы по типу кнопок и лого.
    Например, в дальнейшем, заказчик захочет увеличить лого и придётся танцевать с бубном с растровой картинкой. Поэтому лучше, мелочи, которые будут вставляться картинкой, рисовать в векторе)
    Ответ написан
    Комментировать
  • Node.js в качестве server-side для enterprise приложения?

    Stdit
    @Stdit
    По моему опыту, nodejs — удобная, стабильная и быстрая штука, имеющая отличное сообщество и много хороших библиотек в npm. Преимущества можно перечислять долго, лучше сразу перейти к проблемам.

    — Сложно найти готовых к работе толковых программистов, даже среди фронтендщиков. Но можно обучить. На обучение и понимание среды nodejs, API, асинхронности, замыканий, калбэков, событий, функционального подхода — уходит примерно месяц-два.
    — Библиотеки из форнтендов использовать можно, но только если они грамотно написаны и оптимизированы для перманентной работы. Иначе есть риск, что они сожрут всю память или повесятся.
    — Сервер nodejs обычно однопоточный, со всеми вытекающими. Имеется возможность форкать и открывать дочерные процессы, на это нужны дополнительные затраты труда. Но это требуется только в исключительных случаях.
    — Код пишется в основном легко, если следовать чёткому стандарту, который обычно навязывается используемым фреймворком. Однако javascript, ввиду своей нестрогости, неустойчив к коррозии, в спешке или по неопытности можно наделать рака и превратить жизнь своей команды в ад.
    — При сложной логике со множеством вызовов можно без злого умысла нагородить «лестниц» из калбеков. Однако, проблема решается разными вариантами библиотек управления задачами (async, Q, и т.д.). Вообще лучше делать максимальную декомпозицию кода, создавать бесчисленные функции внутри функций — не очень хорошая практика.

    По поводу камней:
    — Обычно, всякие руководства и мануалы типа «hello world» используют один сокет для соединения с БД. На практике оказалось, что если этот сокет зависает под тяжёлым запросом, то все остальные запросы прилежно ждут его освобождения. Поэтому первое, что нужно сделать в новом проекте — это подключить database connection pool.
    — Случилось так, что количество одновременных подключений к серверу перевалило за тысячу, и внезапно возникли необъяснимые аномалии и отказы. Как выяснилось, страшного ничего не произошло, и нужно было просто в операционной системе разрешить открывать на порядок больше файловых/сокетных дескрипторов.
    — Память для nodejs лучше ограничивать ключами запуска и отдавать больше для БД (если они на одной машине). В противном случае nodejs не спешит запусктать сборщик мусора (это ведь затратная операция) и разрастается.
    — Перезагрузки nodejs из-за внезапных падений от багов решаются специальными библиотеками, например forever.
    — Чтобы nodejs не вылетал из-за исключений, нужно ставить глобальный обработчик uncaughtException, который пишет их в лог или сразу шлёт на мыло ответственному лицу.
    — Нужно не забывать отвязыватсь обработчики от событий по окончании работы подписанного на событие объекта (removeListener()).

    По поводу фреймворков, используем express, потому что он красивый, простой и мы к нему привыкли.
    Ответ написан
    2 комментария
  • Оправдано ли будет использование NodeJS в качестве бэкенда крупного приложения?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Paypal и Netflix используют Node.js. У обоих нагрузки очень даже приличные.
    В плане масштабируемости думайте об архитектуре. Можно и на perl написать приложение, которое за секунду будет обслуживать миллион клиентов.
    Node.js будет прекрасно работать в качестве движка для типичного веб-приложения вроде магазина, чата или CRM. Если у вас очень много компонентов, например тысячи, логичнее приложение разбить на модули и сделать вместо одного приложения несколько, которые можно запускать по-отдельности (здесь уместно упоминание микросервисной архитектуры). Разумеется запросы нужно распределять с помощью балансировщика.
    Есть еще такая вот штука https://serverless.com/ - ее можно масштабировать практически до бесконечности. Были бы деньги.
    Node.js будет плохо работать в области процессинга данных, например генерация картинок, потоковая обработка видео, нейронные сети и т.д. Здесь лидеры C, C++, Go, Rust, Java.
    Можно даже создать гибридное приложение - большую часть выполнить на Node.js, а критичную по производительности на другом языке. Например генерация миллиона прайсов в сутки в старый xls или векторный pdf, упаковка в архив и рассылка - не самая лучшая идея для Node..JS. То же C++ здесь будет вне конкуренции.
    Ответ написан
    19 комментариев
  • Верстка -> Frontend -> Full Stack developer - какой оптимальный путь развития?

    @Lev_Shestov
    Помимо серверных языков, нужно знать еще и SQL и логику работы с базами данных, соответственно, нужно выбрать и СУБД для изучения.
    Помимо фреймворков на php, если Вы не владеете никаким серверным языком, можно поглядеть еще на другие технологии (кроме php + MySQL), например, Python + Django + PostgreSQL, C# + ASP.MVC + MSSQL и т.д.
    Ответ написан
    Комментировать