Задать вопрос
  • Что делать если команда говнокодит?

    sompylasar
    @sompylasar
    Не нужно забывать, что крупные и долгоживущие проекты переписываются регулярно (не с ног до головы, естественно, но энтропию стараются уменьшать). Об этом пишет Google, это известно о Facebook, это можно наблюдать по коду ВКонтакте, и т. д. На коленке слепленный с нуля прототип будет работать до тех пор, пока не потребует внесения в него изменений. Вносить изменения в существующий и работающий продукт – это не то же самое, что слепить с нуля прототип.
  • Что такое потоки в node.js?

    sompylasar
    @sompylasar
    Уточните в вопросе: имеется в виду thread или stream?
  • Библиотека асинхронных запросов для react?

    sompylasar
    @sompylasar
    Блокировать UI можно, если на асинхрон выставлять таймауты и обработчики ошибок.
  • Верно ли я понимаю суть webpack, таск-раннеров, requirejs и модулей?

    sompylasar
    @sompylasar
    Алексей Николаев: Не загружается сразу то, что авторы приложения посчитали второстепенным по отношению к функциям, обеспечивающим первое впечатление. В youtube, например, это видеоплеер, который вне зависимости от системы сборки является большим и сложным модулем.
  • Модульность на фронтенде?

    sompylasar
    @sompylasar
    С Angular проблема ясная: Angular — это фреймворк. React-компоненты, если они разработаны с переносимостью в уме — прекрасно переносятся.

    Про много кода из зависимостей на борту — это и есть повторная используемость кода. Гораздо рациональнее для крупных приложений не экономить мегабайты, а экономить трудоемкость поддержки: воспользоваться компонентом, который поддерживает сообщество из некоторого количества разработчиков (больше одного — себя), который имеет тесты, документацию, нежели напилить его же с поначалу урезанным набором функций, а затем получится с тем же, но только с добавленной необходимостью поддержки напиленного самостоятельно. К сожалению, многие библиотеки пытаются вобрать в себя много функций, становятся монолитными и даже фреймворками, но не в состоянии предоставить интерфейс, позволяющий подключать эти функции по отдельности (смогли jQuery — кастомная сборка, lodash — частичные импорты и отдельные пакеты по функциям, и т. п.).

    Про управление зависимостями в процессе выполнения приложения (dependency injection et al.) — это вообще отдельный разговор. Внятного IoC-контейнера на JS пока не сделали (есть тот, что из Angular, отдельно, есть cujojs/wire, но всё как-то громоздко) — да, приходится разрабатывать свои велосипеды, пока кто-нибудь не опубликует качественно разработанный в рамках большого приложения велосипед в Open Source.
  • За и против использования bootstrap?

    sompylasar
    @sompylasar
    nepster09:

    > Но мое мнение, что место бутстрапу для бэток и админок.

    Ага, точно.

    > Сам я использую SMACSS и scss + postcss. А вот CSS Modules не зашли, так как у нас все через сервер, а там классы меняются при каждом компилинге или вы имели ввиду вебпак ?

    Webpack конечно, обязательно. Куда уж без него...
  • За и против использования bootstrap?

    sompylasar
    @sompylasar
    > sompylasar: что значит больших продуктов ? Вы вообще понимаете что такое бутстрап и что такое большой продукт ? Покажите хоть 1 большой продукт, который использует бутстрап ? ВК? Фейсбук ? Может быть твиттер ? Бутстрап это инструмент, который решает 90% базовых задач для мелких и средних проектов.

    nepster09: Наоборот! Вы как-то меня неправильно поняли. Я как раз против того, чтобы пихать бутстрап в большие продукты, даже на начальной стадии (единственный вариант, когда это допустимо – это когда делается прототип на выброс).

    > Вы из тех кто пихает бутстрап куда нужно и не нужно со всеми "600+ глобальных переменных" ?

    Я как раз из тех, кто разрабатывает большие продукты (веб-приложения) с временем жизни, доработки поддержки в несколько лет. Префиксованный БЭМ, CSS Modules, модульный подход в разработке вообще и в верстке в частности.

    В одном из продуктов, к сожалению, как раз начали с бутстрапом (отдали на откуп junior'у, а потом было уже поздно), и теперь мучаемся, выпилить никак не можем. Думаю, вы понимаете, о чем я.
  • За и против использования bootstrap?

    sompylasar
    @sompylasar
    latteo: Зависит не от размера компании, а от размера продукта и длительности его существования и сопровождения (поддержки, доработки). Рано или поздно приходится задумываться о поддерживаемости, модульности, устойчивости кода к изменениям.

    Бутстрап -- это 600+ глобальных переменных. Если это на мысли не наталкивает, значит, вероятно, вы не делали больших продуктов с длительным сроком жизни.

    А стиль кодирования и методологию верстки нужно не фреймворком навязывать, а принципами, от фреймворка не зависящими (и уже под них подбирать фреймворк, если потребуется -- а зачастую разрабатывать его самостоятельно).
  • Правильный frontend?

    sompylasar
    @sompylasar
    Владислав автор просит правильный фронтенд, зачем предлагать ему тупиковый путь? Когда опыта нет, то нет чутья, что хорошо, а что - не очень.
  • Правильный frontend?

    sompylasar
    @sompylasar
    В современном фронтенде разделяют по компонентам (HomePage, AboutPage, Button и т.д.), а не по технологиям (JS, CSS, HTML).
  • Битовое отрицание в JS

    sompylasar
    @sompylasar
    После дробных операций над ним.

    Например, выделение части временного интервала, заданной дробным числом:
    var now = new Date().getTime();
    var initial = {
      start: now - 1000 * 60 * 60 * 24, //< The day before.
      end: now
    };
    var initialSize = (initial.end - initial.start);
    var zoomCenter = 0.5;
    var zoomFactor = 0.3;
    var zoomed = {
      start: initial.start - (zoomCenter) * (initialSize * -zoomFactor),
      end: initial.end + (1 - zoomCenter) * (initialSize * -zoomFactor)
    };
    var zoomedDate = new Date(Math.floor(zoomed.start)); //< (~~zoomed.start) would overflow.
    
  • Битовое отрицание в JS

    sompylasar
    @sompylasar
    code.google.com/p/chromiumembedded/issues/detail?id=190#c5

    ECMAScript-спецификация не поддерживает int64, поэтому для внутреннего представления в Number для чисел больше int32 используется double.
  • Битовое отрицание в JS

    sompylasar
    @sompylasar
    Да, целыми, но timestamp'ы из Date#getTime являются int64 или даже double (с миллисекундами).
  • Angular vs Knockout на больших списках

    sompylasar
    @sompylasar
    Нельзя, в angular dirty checking, то есть изменение переменных мониторится с некоторой периодичностью и отрисовывается.

    Это не так. Не «с периодичностью», а только после кода, который мог изменить данные.

    habrahabr.ru/post/165275/
    Весь вопрос в том, когда производить эту проверку? Непрерывно, по таймеру? Учитывая, что модель данных может быть довольно сложной, то непрерывно производящиеся проверки могут сильно ухудшить UX. В Angular этот вопрос решается путем автоматического вызова функции $digest после каждого участка кода, предположительно могущего изменить данные. Это ключевой момент — проверка выполняется тогда и только тогда, когда данные могли быть изменены (например, при действии пользователя), и никогда не выполняется в других случаях. Если вы ожидаете изменения данных в какой-то другой момент времени (например, при поступлении события от сервера или завершении какого-либо процесса), вы должны явно указать Angular, что стоит выполнить проверку, вызвав функцию $apply.
  • Какие существуют способы хранения ресурсов в мобильном HTML5-приложении?

    sompylasar
    @sompylasar
    Спрайты — приложение не использует CSS для работы с ресурсами (а даже если бы и — то CSS бы получился многомегабайтным). Или Вы не CSS-спрайты имеете в виду?

    А что тогда используется? Спрайты — это общее понятие для группировки изображений в одно с дальнейшим выделением отдельных частей по смещениям и размерам. Если используется HTML, то может ли использоваться canvas? В этом случае можно загружать блоки картинок и «резать» их на лету (копировать в нужное место только некоторую область блока картинок).

    Если есть возможность каким-либо образом читать изображения из ресурсов, то base64 я бы не использовал, поскольку он Чуть более объемный, чем исходные бинарные данные (по одному лишнему байту на каждые 3 исходных байта).
  • Как организовать систему видеонаблюдения?

    sompylasar
    @sompylasar
    Опередили! Я тоже хотел рекомендовать Ivideon. Если кому-то будет полезно, вот видео по использованию на Youtube: