Задать вопрос
  • Чем заменить такую конструкцию?

    search
    @search
    мама говорит что я особенный
    if (["Andy", "Vasjya", "Petya"].includes(name))
    Ответ написан
    Комментировать
  • Парсинг результата в Angular 5+, как правильно?

    search
    @search
    мама говорит что я особенный
    Когда будите работать над Http Interceptor, как посоветовал Ivan Stroykin, проработайте обработку ошибок как следует. Интерсептор не должен возвращать null в случае ошибки. Он должен делать return Observable.throw(error).

    Еще одно общее наблюдение: старайтесь функции, не использующие this выносить в отдельный файл (не сервис). Т.е. делать как-то так:

    // get-data-response.ts
    export function getDataResponse<T>(response: IResponse<T>) {
        if (response && response.data) {
          return response.data;
        } else {
          return null;
        }
      }


    Так намного больше шансов на то что функция будет переиспользована где-то еще и не захламлена ненужными подробностями. Да и юнит-тестировать такой код гораздо проще.
    Ответ написан
    4 комментария
  • Angualar HttpInterceptor: почему не могу получить response?

    search
    @search
    мама говорит что я особенный
    В коде интерсептора перепутан респонз и реквест.

    Что сейчас происходит:

    1. Интерсептор перехватывает объект реквеста
    2. Интерсептор добавляет в реквест { body: {data: messages} }
    3. Интересептор передаёт реквест дальше на обратоку

    Я так понимаю, идея интерсептора в том, чтоб ловить реквест и вместо передачи реквеста дальше на обратоку, возвращать ответ.

    Попробуйте как-то так:

    import {
      HttpRequest, 
      HttpEvent,
      HttpHandler,
      HttpInterceptor,
      HTTP_INTERCEPTORS
    } from '@angular/common/http';
    
    import { Injectable } from '@angular/core';
    
    import { Observable } from 'rxjs/Observable';
    
    import { messages } from 'src/fake-backend/data/messages/messages';
    
    import { of } from 'rxjs/observable/of';
    
    @Injectable()
    export class FakeBackendInterceptor implements HttpInterceptor {
      constructor() { }
    
      intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    
        console.log('HTTP REQUEST INTERCEPTED BY THE MOCKED BACKEND');
    
        return of(new HttpResponse({body: {data: messages}}));
      }
    }
    Ответ написан
    2 комментария
  • В чем практическая польза итераторов в JS?

    search
    @search
    мама говорит что я особенный
    Полезность итераторов в том что это открытый интерфейс для любой структуры данных. Как вы уже поняли, любой класс/объект в JS может обладать интерфейсом итератора. Идея итератора в том чтобы скрыть внутреннее представление структуры данных от потребителя этих данных. Например, если вы работаете с какими-либо замысловатыми структурами данных, типа бинарных деревьев. Пользователю совсем не обязательно знать как ваш класс/объект хранит бинарное дерево. Пользователь просто его получает и проходит по всем его элементам в цикле. В дальнейшем, вы можете, при необходимости, заменить одну структуру данных на другую, не меняя самого пользователя. Например, вы можете заменить бинарное дерево на б-дерево прозрачно для самого пользователя (пользователь не будет знать что вы подменили структуры, он по прежнему получает что-то что можно проитерировать и ему этого достаточно).

    Для того чтоб глубже понять суть вопроса, можно погуглить про инкапсуляцию и SOLID (в вашем случае, принцип Open/closed).
    Ответ написан
    1 комментарий
  • Как понимать понятие perfomance в маркетинге?

    search
    @search
    мама говорит что я особенный
    У слова "performance" два перевода: "производительность" и "представление". В ваших примерах используется второй вариант перевода.
    Ответ написан
    Комментировать
  • Почему ошибка при запуске gulp?

    search
    @search
    мама говорит что я особенный
    Уберите строчку require('owl.carousel') из gulp.js, потому что это не часть процесса сборки. И подключите owl.carousel тем же способом, каким подключаются и другие клиентские библиотеки. Например, попробуйте разобраться как подключается jQuery и подключите карусель таким же образом.
    Ответ написан
    1 комментарий
  • Angular 2 ngFor?

    search
    @search
    мама говорит что я особенный
    ngFor не работает с объектами, которые нельзя проитерировать. Нужно привести data['in'] к массиву. Попробуйте так:

    this.listers = Object.values(data['in']);
    Ответ написан
    3 комментария
  • Является ли хорошей практика использовать connect действительно часто?

    search
    @search
    мама говорит что я особенный
    Вообще, вся эта история с умными/глупыми компонентами, - о том как эти самые компоненты переиспользовать. Правило левой руки такое: если код зависит от внешнего состояния, то такой код становится сложно переиспользовать. Это относится не только к компонентам, но и к любому коду. connect добавляет зависимость от внешнего состояния, поэтому компонент, завязанный на connect преиспользовать и сложно.

    Но вполне нормально юзать connect на любых компонентах. И, если коннект затрудняет переиспользование какого-то конкретного компонента, то всегда можно отвязаться от connect'a и передавать пропсы напрямую из компонента-родителя. Эдакий способ разработки снизу-вверх.
    Ответ написан
    Комментировать
  • Удаленная работа для системного администратора, такое есть в природе?

    search
    @search
    мама говорит что я особенный
    То с чем обычно удалённо работают админы:
    Облака: AWS, Azure, Digital Ocean и т.п.
    DevOps: CI/CD, Heroku и вот это всё
    Наверняка что-то еще.

    Когда сам фрилансил, то даже не брался за настройки серверов и релиз процессов, всегда убеждал заказчика нанять квалифицированного специалиста для этого. Долгое время работал с человеком, который брал 50 баксов в час за свою работу, но потом повысил планку и мы расстались, но продолжали общаться время от времени. По его словам, недостатка в работе он не видел. Так что по собственному опыту скажу что админ-фрилансер - это очень возможно.

    Такие дела.
    Ответ написан
    Комментировать
  • Где найти желаюших для разработки фотореалистичного 3D на основе физмоделирования?

    search
    @search
    мама говорит что я особенный
    Пожалуй, лучший способ заинтересовать подходящих людей - это продемонстрировать свои достижения и прогресс.

    Достижения можно продемонстрировать, выложив эти самые достижения на гитахаб.

    Прогресс можно продемонстрировать, заведя блог и публикуя в нём идеи и способы их реализации.

    Если всё это проделывать на английском языке, то пул потенциальных помощников можно расширить с 260 миллионов до полутора миллиардов. Это соотношение весьма приблизительно.
    Ответ написан
    4 комментария
  • Как отобразить данные через контроллер в AngularJS?

    search
    @search
    мама говорит что я особенный
    Скорее всего у вас ошибка в вызове api.clients.allCompany.

    Судя по коду эта функция передаёт какие-то данные в первый аргумент коллбэка, но то что этот перавый аргумент - $scope - очень маловероятно.

    Попробуйте заменить

    api.clients.allCompany("", function($scope, response) {		
        console.log(response.data);
        $scope.clientsCompany = response.data;
    });


    на

    api.clients.allCompany("", function(_, response) {		
        console.log(response.data);
        $scope.clientsCompany = response.data;
    });


    Это должно помочь. Но рекомендую разобраться что конкретно api.clients.allCompany передаёт в коллбэк.
    Ответ написан
    6 комментариев
  • Почему не работает map в Angular 4?

    search
    @search
    мама говорит что я особенный
    HttpClient работает так, что в функцию map прилетит уже готовый распаршенный json ответ, а не Response.
    Ответ написан
    2 комментария
  • Стоит ли использовать Redux при разработке на Angular 5?

    search
    @search
    мама говорит что я особенный
    вот тут я немного коснулся менеджмента состояний в ангуляре:
    ангуляр не предоставляет никаких средств для менеджмента состояния и попытки запихнуть состояние системы в переменную сервиса (это первое к чему приходят почти все разработчики на ангуляре) обычно заканчивается непредсказуемым поведением системы по мере её разрастания и невозможностью переиспользовать компоненты.


    На сложном проекте без толкового менеджмента состояний очень легко наломать дров.

    В принципе проект можно начать без редакса и прикрутить его по мере необходимости.
    Ответ написан
    7 комментариев
  • Что можно почитать на предмет отправки логов на сервер в angular?

    search
    @search
    мама говорит что я особенный
    Вот отличный сервис https://sentry.io

    Хостить логи у них на серваке стоит денег, но это опен соурсный проект, так что вы можете поднять свой сервак и это будет бесплатно (если под словом "бесплатно" понимать "настройка и поддержка сервера собственными силами").

    Пока что не встречал чего-то лучше или хотя-бы аналогичного.

    Вот тут описана интеграция с ангуляром https://docs.sentry.io/clients/javascript/integrat...

    ПС

    Понимаю что это слегка не по теме, и вы хотели изучить вопрос логирования в JS. Но если воспользоваться этим сервисом хоть раз, то можно очень хорошо понять как происходит логирование в 21 веке.
    Ответ написан
    Комментировать
  • Как не уничтожать компонент Angular 2+?

    search
    @search
    мама говорит что я особенный
    Вот полезная статья, которая многое проясняет https://medium.com/@dan_abramov/smart-and-dumb-com...

    Идея в том чтоб каждый вопрос находился в своём компоненте и этот компонент был "тупым". Имеется ввиду что сам компонент на хранит ответ пользователя и не знает как его получить извне. Он получает предыдущий ответ пользователя через @@Input и отдаёт новый ответ пользователя через @@Output. Само состояние никогда не хранится в компоненте-вопроса.

    Весь список вопросов менеджится внешним компонентом и внешний компонент решает какой вопрос показывать. Так же внешний компонент собирает и хранит ответы пользователей из @@Output компонентов-вопросов. И при переходе назад на предыдущий вопрос предаёт этот ответ в @@Input компонента-вопроса для того чтоб тот корректно отобразил предыдущий ответ пользователя.

    Еще ангуляр не предоставляет никаких средств для менеджмента состояния и попытки запихнуть состояние системы в переменную сервиса (это первое к чему приходят почти все разработчики на ангуляре) обычно заканчивается непредсказуемым поведением системы по мере её разрастания и невозможностью переиспользовать компоненты. Вообще это полезное правило для любого ООП фреймворка, а не только для ангуляра: не допускайте появление состояний в сервисах, если хотите когда-то их переиспользовать. Хорошая новость: можно научиться писать так чтоб состояния в сервисах не появлялись никогда и не под каким предлогом. Это будет достойный код.

    Если вернуться в к Ангуляру, с его полной неспособностью менеджить состояния из коробки, то советую взглянуть на https://github.com/ngrx/platform. Это редакс для ангуляра. На данный момент юзаю его на нескольких проектах, полёт нормальный. Не серебряная пуля, конечно, но многократно лучше чем то ничего, которое предлагает ангуляр из коробки. Если не знакомы с редаксом, то придется поуродствовать сначала. Но это окупается. Ну и не понимать редакс - как-то не комильфо для соврменного продвинутого программиста.
    Ответ написан
    Комментировать
  • Как исключить изображения из правила в .htaccess?

    search
    @search
    мама говорит что я особенный
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond expr "%{tolower:%{REQUEST_URI}} =~ /(.*)/"
    RewriteRule [A-Z] %1 [R=301,L]


    Хозяйке на заметку: заглавные буквы в именах файлов считается дурной практикой в мире веб разработки, потому что почти всегда сайт будет работать на линукс сервере, файловая система которого чувствительна к регистру. Т.е. /ABC.js и /abc.js будут восприниматься линуксом как разные файлы. Строчные буквы, в свою очередь, стали стандартом в адресах ресурсов и очень высока вероятность того что на каком-то из этапов ввода или обработки адреса, регистр будет потерян, как, например, в вашем случае.

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

    search
    @search
    мама говорит что я особенный
    ReactJS не относится к реактивному программированию. React - это фреймворк представления. И, да, его название может ввести в заблуждения.

    За реактивное программирование в JS отвечает библиотека RxJS. И вы правы, примеров в стиле "вот так это делается на jQuery, а вот так это делается на RxJS" вы врядли найдёте. Вообще, если начать набирать в гугле "RxJS vs " то гугл будет подсказывать полную чушь, потому что Rx невозможно сравнить с не-Rx.

    Вот неплохая статья, в которой Rx используется, так сказать, по назначению https://habrahabr.ru/company/infopulse/blog/338910/

    Не совсем представляю себе что такое AsyncTask, но Слушатель - это шаблон проектирования. А Rx - это парадигма программирования. Сравнивать шаблон и парадигму так же сложно как сравнивать кирпичный дом и деревянную доску. В Rx предусмотрена сущность Subject, которая как раз и представляет поведение шаблона Слушатель.
    Ответ написан
    1 комментарий
  • Про конкуренцию на фрилансе?

    search
    @search
    мама говорит что я особенный
    • индусы и "хорошие специалисты" - это разные непересекающиеся ниши;
    • заказчики тоже разделяются на новичков (не знающих разницу между индусом за 5 долларов в час и тяжеловесом за 50) и опытных. Чтобы стать опытным заказчиком нужно хоть раз обжечься об индуса;
    • заказчики в основном аматоры, но на том же апворке можно встретить и приличные компании. Компании в основном ищут грамотных спецов и не жалеют денег;
    • если у вас нет отличного профиля с историей заказов, то вам предстоит как-то доказать что вы не индус;



    PS
    Как-то у своей хорошей подруги из Индии спросил "почему индусы такие дряные программисты?". Она ответила что это культурная особенность. В Индии во многих школах запрещено задавать вопросы (во всяком случае так было раньше), поэтому программист выполняет задание настолько, насколько он его понял и редко ставит под сомнение идеи начальника/заказчика. Такие дела.
    Ответ написан
    2 комментария
  • Возможен ли AngularJS, без роутинга?

    search
    @search
    мама говорит что я особенный
    Да, возможно.

    1. Создаёте компонент angular.module('Monorythm').component('monorythm', {})
    Вот документация по компонентам https://docs.angularjs.org/guide/component

    2. На html странице указываете место, где будет рендериться компонент

    3. Затем бутстрепите прилажение angular.bootstrap(document.body, ['Monorythm']);

    Вуаля.

    Набрасал для вас пример
    https://jsfiddle.net/sneas/gtrwzsn1/525/

    а вот этот нашел в интернете при помощи поисковой системы Гугл
    https://jsfiddle.net/langdonx/gtrwzsn1/
    Ответ написан
    4 комментария
  • Можно ли делать бизнес логику в Angular?

    search
    @search
    мама говорит что я особенный
    Вы можете всё что угодно. Стоит ли так делать? Нет, не стоит. Хотя бы потому что это будет крайне ненадежно. Например, любой школьник насуёт вам в лог по самое нихачу и повалит вашу систему.
    Ответ написан