• Какой js фреймворк выбрать на замену angular js?

    @MaxKorz
    Переписать Angular 1.6 на Angular 7 не составит большого труда(если проект написан без велосипедов и лютого гавнокода). Я лично переписывал два проекта на новый angular.

    HTML не придется сильно менять (большую часть angular 1 директив можно заменить на angular 7 биндинги с помощью простого поиска по тексту). JS естественно придется переписать, но многое вам будет знакомо (модули, директивы, компоненты, сервисы, dependency injection)

    С чем придется познакомиться:
    - Angular CLI
    - Typescript
    - RxJS
    - Отсутствие scope, digest cycle и промисов(http запросы делаются с помощью RxJs)
    - Новые html биндинги
    - Новый роутинг

    Этот гайд очень поможет в переходе: https://angular.io/guide/ajs-quick-reference
    Ответ написан
  • Работа ngOnInit в Ангуляр?

    @MaxKorz
    Не забывайте что объекты и массивы передаются по ссылке.
    Передавая данные в компонент убедитесь что вы передаете копию данных (или делайте копию в ngOnInit), иначе при изменении данных они будут меняться везде куда они были переданы.
    Ответ написан
  • How to create full website on Angular 7, examples pls?

    @MaxKorz
    Сделайте копию своего интернет банка. Зачем вам пример написания? Используйте знания полученные на курсе.
    Ответ написан
  • Какие технологии используются для сжатия/конвертирования?

    @MaxKorz
    Без установки всяких софтин
    как вы это себе представляете? Думаете конвертаторы встроены в язык что ли?

    Суть сайтов-конвертаторов примерно такова:
    1. Юзер закачивает файл
    2. Файл кладется в сервер очередей (например у PHP это Gearman)
    3. Когда до файла доходит очередь, на нем выполняется задача по конвертации
    4. Суть задачи - в запуске программы на сервере которая делает необходимую работу (конвертация/архивирование - это работа сторонней программы установленной на сервере, а точнее, десятка программ, каждая для своей цели, например конвертацию word -> pdf делает одна программа, png -> jpg делает другая, * > zip - третья, и т.д.)
    5. Когда задача выполнена, файл отдается обратно пользователю

    Если очередь не нужна(для личного пользования), то нужно сделать только пункт 4 - найти под каждую задачу свою программу для выполнения этой самой задачи
    Ответ написан
  • Какие есть рекомендации по организации кода верстки?

    @MaxKorz
    Делается две директории.
    src\
    dist\

    в src размещается все оригинальное - то с чем работает разработчик:
    - оригинальный HTML/Haml/Pug
    - оригинальный CSS/Sass/Scss/Less
    - оригинальный JS/TS
    - оригинальные изображения
    - шрифты
    и т.д.

    Структуру папок внутри src придумывайте сами исходя из проекта (та структура папок что вы привели в вопросе вполне нормальная)

    То есть папка src - это исходный код всего вашего проекта.

    Скрипт(grunt/gulp/webpack и т.д.) берет оригинальные файлы и производит с ними манипуляции:
    - компиляция препроцессорами(если нужно)
    - минификация и объединение CSS
    - минификация и объединение JS
    - минификация html
    - сжатие изображений
    - объединение изображений в спрайты
    и т.д.

    Результат работы скрипта попадает в папку /dist. Обычно разработчик вообще не в курсе как выглядит код в результате обработки. И лезть в этот код нужно лишь для откладки самой сборки.

    На рабочий сервер(где хостится сайт) заливается только содержимое папки /dist.
    В гит загружается папка /src. Результат сборки (папка /dist) коммитится очень редко (в основном авторами плагинов)
    Ответ написан
  • Что означают эти страшные буквы?

    @MaxKorz
    Какая-то программа (скорее всего антивирус) блокирует файл с которым работает npm.

    При такой ошибке можно попытаться запустить команду заново. Но лучше просто решить эту проблему в системе (разобраться какая программа может читать файлы одновременно с npm).
    Ответ написан
  • Какой хак для Webkit-браузеров использовать для полноценной работы главной страницы?

    @MaxKorz
    Не нужны для Webkit никакие хаки. И для других браузеров тоже. Чтобы все было кроссбраузерно и легко:
    1. Переверстайте весь сайт без использования миллиметров. На пикселях.
    2. Не ясно зачем вам inline-table
    3. Сократите CSS селекторы
    4. Удалите все плагины для определения браузеров
    Ответ написан
  • Является ли одна и та же картинка по http и https дублем для поисковиков?

    @MaxKorz
    Да, любая информация(текст, изображение, pdf документы, и т.д.) доступная по 2 адресам сразу (любым) - это дубликаты.

    Вы что-то настроили неправильно, раз картинки не переадресуются.
    Ответ написан
  • Сравнение двух процессоров AMD. Почему такая разница в производительности?

    @MaxKorz
    более современный техпроцесс (14 нм против 32 у старого)
    У нового больше кэш L1 (4x64+4x32 Кб против 4x16+2x64 Кб)
    вот в чем разница

    Больший размер быстрого L1 кэша очень сильно влияет на производительность. Процессор сохраняет самые важные(часто запрашиваемые) данные в быстром кэше, который доступен практически моментально, и тем самым экономит на обращении к оперативной памяти (которая относительно L кэшей очень медленная)

    Новый процессор поддерживает новые высокопроизводительные инструкции AVX2. Если я правильно понимаю, это улучшенная версия SSE инструкций, прирост производительности может быть двухкратным (AVX2 vs SSE2).

    Современный техпроцесс это не только меньшее тепловыделение. Если я правильно понимаю, 14нм позволяет разместить больше транзисторов на той же площади.
    У AMD FX-4300 - 1200 млн транзисторов, а у AMD Ryzen 5 1400 - 4800 миллионов транзисторов.

    Также старый в отличие от нового поддерживает HyperThreading.
    Новый процессор имеет 4 ядра и 8 потоков (то есть каждое ядро может выполнять по 2 задачи одновременно). У AMD FX-4300 только 4 потока (по задаче на ядро).
    Ответ написан
  • Стоит ли перед началом работы переустанавливать винду?

    @MaxKorz
    Я переустанавливаю винду если меняю область работы. То есть когда накопилась куча тяжелых установленных программ в которых больше нет необходимости.

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

    То есть, когда винда полетит не по твоему желанию, с данными будет все в порядке (если все сделать правильно)
    Ответ написан
  • Какой ВУЗ Москвы выбрать?

    @MaxKorz
    МГУ имени М.В. Ломоносова
    НИУ ВШЭ
    МГТУ им. Н.Э. Баумана
    НИЯУ МИФИ
    МТФИ

    Направления:
    Информатика и вычислительная техника
    Прикладная информатика
    Программная инженерия
    Информационная безопасность
    Прикладная математика и информатика

    Если ваш племянник не мега-отличник, который может поступить в топовые вузы, то лучше в ВУЗ не поступать вообще, он там ничему полезному для профессии не научится и только потеряет время. Первую работу в программировании можно получить через 6-18 месяцев самообучения (в зависимости от желания и умения самообучаться). Если поступить в абы-какой ВУЗ, то человек только потеряет 4 года жизни и получит диплом на котором можно разве что колбасу резать.

    Племянник хочет изучать программирование.
    ему ничего не мешает делать это самостоятельно пока он учится в школе. Есть множество книг и сайтов со всей необходимой информацией.
    Ответ написан
  • С чего начинать собирать свой игровой компьютер ???

    @MaxKorz
    Компьютер месяца — декабрь 2018 года

    Для мощных игр (ГТА5, например).
    слишком расплывчатый запрос.
    Есть очень большая разница между компом для игры на минималках на 1600x900, и для игры на максималках на 4k.
    Ответ написан
  • Есть ли драйвера на Linux?

    @MaxKorz
    Не использовать Linux, раз не можете с ним разобраться. Все драйвера есть, их нужно уметь искать и устанавливать.
    Ответ написан
  • Как вы оптимизируйте свою работу? Что используйте для увеличения производительности?

    @MaxKorz
    простую работу делаю долго например верстаю страницу три дня

    Если речь не про прокрастинацию, а именно про работу, то вот несколько советов:

    1. Научитесь печатать не смотря на клавиатуру. Рекомендую клавиатурный тренажёр Stamina.
    2. Лучше узнайте свои инструменты. Большинство действий, которые вы делаете мышкой, можно делать быстрым нажатием парой клавиш. Рекомендую https://www.shortcutfoo.com/
    3. В продолжении предыдущих пунктов - освойте навигацию по тексту с помощью клавиатуры. Например, для перехода в начало строки достаточно нажать на кнопку Home на клавиатуре. Многие редакторы имеют свои шорткаты, например ctrl+D во многих редакторах выполняет дублирование текущей строки.
    4. Освойте Emmet (этот плагин встроен во множество IDE или подключается отдельно). Вместо того, чтобы вручную писать <div class="container"></div> достаточно написать div.container и нажать TAB
    5. Для верстки - освойте препроцессоры (как для HTML так и для CSS)
    Ответ написан
  • Как можно тестировать динамическое создание компонентов?

    @MaxKorz
    Попробуйте так:
    import {BrowserDynamicTestingModule} from '@angular/platform-browser-dynamic/testing';
    
    TestBed.configureTestingModule({
      declarations: [
        TestComponent,
        // other components...
      ],
      providers: [
        ModalService
      ]
    });
    
    TestBed.overrideModule(BrowserDynamicTestingModule, {
      set: {
        entryComponents: [ModalComponent]
      }
    });
    Ответ написан
  • Почему происходит ошибка?

    @MaxKorz
    У методов класса свой синтксис объявления. Там нельзя применять стрелочную функцию. Правильный код:
    class TestClass {
        constructor() {}
    
        testFunc() {}
    }
    Ответ написан
  • Как писать Css в % или em?

    @MaxKorz
    Не рекомендуется задавать отступы в %. Поведение отступа заданного в % не интуитивно и плохо подстраивается под потребности дизайна.

    Согласно спецификации:
    1. Горизонтальные отступы в % рассчитываются от ширины контейнера. Здесь все логично
    2. Вертикальные отступы в % так же рассчитываются от ширины контейнера. В этом ваша проблема.
    Это касается как margin, так и padding.

    Как еще не рекомендуется задавать отступы:
    1. С помощью em, т.к. em подвержен каскадности, и это будет лишь добавлять сложности.
    2. С помощью vw и vh, т.к. эти значения зависят от ширины экрана. И вы просто замучаетесь подстраивать эти значения чтобы верстка не ехала на всех разрешениях (от самых маленьких - мобильных, до огромных - 2k и 4k)

    Как можно задавать отступы:
    1. С помощью пикселей. Это самый простой способ, и он же единственно приемлемый для pixel-perfect верстки.
    2. С помощью rem. Используя rem легче достичь гармоничности между размером шрифта и размером отступов. Этот метод применяется в Bootstrap 4. Если макет не рассчитан на использование rem, то достичь идеального совпадения верстки и макета будет сложновато.
    3. С помощью calc. Если умеете, и если иначе достичь результата нельзя.
    Ответ написан
  • Как правильно использовать package-lock.json?

    @MaxKorz
    npm install на сервере выполнялся с ошибкой, пока я не удалил package-lock
    Не надо было удалять. Зачем бездумно удалять? Почему бы не разобраться с ошибкой? По вашей аналогии, если начнет болеть палец на ноге, его надо просто отрубить, а не вылечить.

    Как же его правильно использовать, кроме того как бездумно коммитить?
    Команда npm install производит не только установку пакетов, но и обновление package-lock.json. Чтобы установить пакеты из package-lock.json (например, при развертывании проекта в новом окружении), нужно выполнять команду npm ci, тогда npm просто установит все пакеты и не затронет существующие конфиги.

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

    UPD: Зачем этот файл нужен - объясняю на личном примере:
    Я сам не понимал зачем нужен этот файл, долго противился его использовать, и даже запретил npm его создавать. А история такова: я постоянно работал над своим проектом, ставил, удалял, обновлял пакеты, все как обычно. В итоге, сделав перерыв на 2 месяца, мне понадобилось внести изменения в проект, а я был далеко от ПК на котором велась разработка проекта.

    Я скачал из репозитория весь проект на свой ноутбук, запустил npm install и попытался собрать проект, а он не собирается - происходит ошибка, которой раньше не было. Через часы отладки выяснилось, что у меня все пакеты установлены с флагом ^ - то есть в package.json прописано (к примеру) "slider": "^1.0.0". Таким образом, на моем ПК, где проект был с самого начала, был установлен пакет версии 1.0.0 (актуальная версия на момент установки), а при чистой установке всех зависимостей через npm install установилась последняя версия 1.9.9. Как понимаете, такой скачок подразуемвает очень много изменений, и к сожалению не все авторы добросовестно следуют правилам semver (при breaking change нужно обновлять мажорную версию пакета), и изменения в последней версии оказались не совместимы с моим кодом.

    Что делает package-lock.json - он запоминает все установленные пакеты, все их версии и зависимости на момент установки, и позволяет использовать всю эту информацию для установки пакетов. То есть, если бы у меня в тот момент был package-lock.json в файлах проекта, я бы просто сделал npm ci на своем ноутбуке, и у меня установилась бы не последняя версия пакета slider, которую я не тестировал, а та версия, которую запомнил package-lock.json - версия 1.0.0, которая мной протестирована. С тех пор я никогда не удаляю package-lock.json, и я больше никогда не испытывал подобных проблем.
    Ответ написан
  • Можно ли как то ускорить Angular2+ ssr?

    @MaxKorz
    так то получается что есть lazyModules и подгружаются в зависимости от роута, но сами все библиотеки грузятся сразу...
    Если импортируете библиотеку в lazy module, то она и будет находится только в этом lazy module, и будет загружаться внесте с ним (точнее, бибилиотека и lazy module окажутся в одном файле)

    Установите webpack-bundle-analyzer, запустите
    ng build --stats-json && webpack-bundle-analyzer dist/stats.json
    и смотрите что и где у вас оказалось. Может у вас все библиотеки в каждом модуле присутствуют по какой-то причине.

    Я честно не имел опыта с Universal, может он так работает, что не зависимо от наличия lazy modules весь код попадает в один файл, но сомневаюсь.

    Еще не помешает настроить gzip и кэширование на вашем сервере. У меня 750 килобайт спокойно жмутся до 240 килобайт.
    Ответ написан