Задать вопрос
  • Есть ли какая нибудь php библиотека для взаимодействия с AWS Cloud?

    search
    @search
    мама говорит что я особенный
    Комментировать
  • Как отфильтровать массив объектов по значениям из имеющегося объекта?

    search
    @search
    мама говорит что я особенный
    Есть такой способ. Либа называетися lodash. https://lodash.com

    Там это будет выглядеть вот так.

    _.filter([{a: 'b', c: 'd'}, {a: 'b', k: 'p'}, {a: 'c', l: 'p'}], {a: 'b'}) // outputs [{a: 'b', c: 'd'}, {a: 'b', k: 'p'}]


    В лоудеше собрано невероятно много полезных функций. От всей души советую начать ей пользоваться.
    Ответ написан
    Комментировать
  • Какой вариант применения исключений лучше?

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

    Второй вариант неспособен предоставить однозначного решения, потому что о том "что такое исключительная ситуация на уровне программы" можно рассуждать бесконечно.
    Ответ написан
    Комментировать
  • Что в данном примере передается через this?

    search
    @search
    мама говорит что я особенный
    Вы всё верно поняли, по идеи
    [].indexOf.call(document.querySelectorAll(s), this)

    то же что и
    document.querySelectorAll(s).indexOf(this)

    Но document.querySelectorAll() возвращает коллекцию типа NodeList и это не тоже самое что Array, поэтому у неё отсутствует свой метод indexOf(). Так что конструкция [].indexOf.call(document.querySelectorAll(s), this) - это такой хитрый способ выполнить indexOf над объектом у которого нет метода indexOf. Я так подозреваю что где-то в недрах indexOf() превращает this в массив при помощи Array.from(). В этом можно убедиться, например, получив "1" при выполнении [].indexOf.call('abc', 'b') и "-1" при выполнении [].indexOf.call(1, 1).

    По-хорошему изначальную конструкцию можно переписать в

    Array.from(document.querySelectorAll(s)).indexOf(this)


    Тогда она будет вызывать меньше вопросов.
    Ответ написан
    Комментировать
  • Как выполнить привязку к данным в сервисе?

    search
    @search
    мама говорит что я особенный
    В принципе, это можно решить при помощи BehaviorSubject:

    export class MainComponent implements OnInit {
      public orderData$ = new BehaviourSubject<OrderViewModel[]>([]);
    
      ngOnInit() {
        this.orderService.getOrders().subscribe(r=>{
          this.orderData$.next(r);
        });
      }
    }


    <app-yamap [orderData$]="orderData$"></app-yamap>

    Дальше идёт приблизительный код компонента YaMap. Я не знаю какая идея стоит за этим компонентом, но хочу показать как он может принимать и изменять данные переданного в него BehaviourSubject.

    Контроллер карты:
    export class YaMap implements OnInit {
      @Input() orderData$: BehaviourSubject<OrderViewModel[]>;
    
      public addOrder(newOrder: OrderViewModel) {
        this.orderData$.next([...this.orderData$.getValue(), newOrder]);
      }
    }


    Вью карты:
    <order-map-element *ngFor="let order of orderData$ | async">
      {{ order.price }}
    </order-map-element>
    <button (click)="addOrder({price: 14.99})">Add another order</button>


    В данном конкретном случае можно вполне обойтись и без BehaviourSubject и вы шли по верному пути с событием (placemarkSelection)="onPlacemarkSelected($event)" (если я правильно вижу ход мысли). Идея в том чтоб компонент app-yamap просто отображал данные [orderData], но не менял их самостоятельно. Данные должны меняться извне по событию от компонента.

    Почему лучше постараться обойтись без использования BehaviourSubject? Он усложняет код, делая компонент  менее пригодным для переиспользования. Вот замечательный пост Дена Абрамова об "умных" и "тупых" компонентах https://medium.com/@dan_abramov/smart-and-dumb-com... Эта идея применима ко всем компонентным подходам, не только к Реакту. Старайтесь делать как можно больше тупых компонентов и будете чаще кайфовать от гибкости и расширяемости собственного кода.
    Ответ написан
  • Что такое Mixpanel и почему он загружается в сайт без мои разрешения?

    search
    @search
    мама говорит что я особенный
    Это аналитика https://mixpanel.com/

    Если вы не подключаете её напрямую в коде, то скорее всего она подключена через Google Tag Manager и еще каким-нибудь сторонним способом.
    Ответ написан
  • Почему subscribe() не видит nativeElement?

    search
    @search
    мама говорит что я особенный
    Потому что на момент выполнения кода в subscribe(), элемента с id=graph еще не существует. *ngIf отрисует этот элемент не мгновенно после this.trainings = trainings, а только после выполнения функции subscribe().

    Для того чтоб код не имел неприятного запаха из-за setTimeout(), можно передавать trainings в GraphComponent извне. Тогда это будет выглядеть как-то так:

    <app-graph  [trainings]="trainings" *ngIf="trainings.length"></app-graph>
    Ответ написан
    Комментировать
  • Stylelint: как настроить индентацию табами в 4 символа?

    search
    @search
    мама говорит что я особенный
    Сам юзер указывает как отображать таб. Хошь как 2 пробела, хошь как 4, хошь как 8. И да, стайллинт, судя по документации, любит только один единственный таб.

    Табы-пробелы вещь довольно холиварная, но крупные компании вообще используют 2 пробела для отступов. Если что, вот этот стайлгайд по CSS считается эталонным https://github.com/airbnb/css . Так же, покопошившись по интернетам, можно увидеть, что гуглы, фейсбуки, уберы, гитхабы и все-все-все юзают 2 пробела для отступа. Как для CSS так и для JS. Да и любой мало-мальски популярный опенсорсный фронтендный проект тоже предпочитает два пробела одному табу. Причина: так удобнее ревьювить пулл реквесты. Горизонтального скролла нет. Со временем привыкаешь к двум пробелам, хотя почти все начинающие испытывают неподдельные чувства к табам. Такие дела.
    Ответ написан
  • Насколько востребован рынок react и в целом js разработки на фрилансе, в частности на upwork?

    search
    @search
    мама говорит что я особенный
    Изучайте то что вам нравится и будет вам счастье непрерывное.
    Ответ написан
    Комментировать
  • Какой %-поддержки по caniuse считаете приемлемым?

    search
    @search
    мама говорит что я особенный
    На хабре как-то статейка мелькала лет эдак 10 назад. В то время IE6 еще был актуален, но уже умирал, примерно как сейчас IE11. Ребята с рабочим интернет бизнесом в рунете решались прекратить поддержку IE6. Но перед этом они собрали собственные статистические данные. И, как оказалось, при общем количестве юзеров IE6 в несколько процентов, эти самые ретрограды совершали десятки процентов всех покупок на сайте. В итоге они еще долго поддерживали IE6 и это приносило им львиную долю прибыли. Мораль: не принимайте решения с бухты-барахты. Будьте прагматиком, соберите собственную статистику и руководствуйтесь ею.
    Ответ написан
    1 комментарий
  • Как одновременно запустить 2 сервера?

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

    Для того чтоб запустить cкрипты параллельно, используйте одинарный &:
    ng s & json-server --watch db.json --port 3000
    Ответ написан
    Комментировать
  • В чём причина постоянного переделывания кода?

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

    Но если в рамках рефакторинга программист коммитет больше 20 файлов за раз, то есть вариант что он не видит всей картины, поэтому пилит "супергибкую архитектуру". В этом случае, можно сесть вместе с разработчиком и составить майндмеп всех элементов будущей системы и связей между ними. Это будет полезно как для разработчика, так и для менеджера проекта.
    Ответ написан
    5 комментариев
  • Как сделать вывод динамической таблицы в Angular 4?

    search
    @search
    мама говорит что я особенный
    <form [formGroup]="myForm" (ngSubmit)="saveFrom(statsForm.value)">
     <table class="table table-responsive">
      <thead>
       <tr>
        <th>Col 1</th>
        <th>Col 2</th>
        <th>Col 3</th>
        <th>Col 4</th>
        <th>Col 5</th>
        <th></th>
       </tr>
     </thead>
     <tbody formArrayName="itemRows">
        <tr *ngFor="let row of [1, 2, 3, 4, 5]" app-data-table-row [row]="row"></tr>
      </tbody>
      </table>
    </form>


    @Component({
      selector: '[app-data-table-row]',
      template: `
      <td>Hello, World!</td>
      <td>Hello, World!</td>
      <td>Hello, World!</td>
      <td>Hello, World!</td>
      <td>Hello, World!</td>
      <td>Hello, World!</td>
    `
    })
    export class AppDataTableRow {
      @Input('row') row;
    }
    Ответ написан
    Комментировать
  • W3C валидация css написанного scss - какие есть оффлайн инструменты для проверки?

    search
    @search
    мама говорит что я особенный
    Вот пожалуй лучший линтер https://www.npmjs.com/package/stylelint

    Прогонять CSS через валидатор W3C - это очень плохая аматорская идея, не дающая абсолютно никаких выигрышей и невероятно изматывающая разработчиков. Вместо того чтоб писать чистый, пригодный, модульный ЦСС, разработчики начинают изворачиваться дабы ублажить валидатор. Линтера и здравого смысла обычно хватает.

    Лучший валидатор - это браузер.

    UPD

    Очень хороший способ держать цсс в вменяемом состоянии: ставите husky ( https://github.com/typicode/husky ) - это утилита, которая добавляет гитхуки. Затем в package.json в секцию scripts добавляет команду precommit, которая будет вызвать stylelint. Каждый раз, когда девелопер коммитит, будет вызываться гитхук и проверять SCSS. Если в нём обнаружились проблемы, то линтер о них сообщит и коммит не пройдёт. Вроде как WebStorm и другие популярные IDE понимают файл .stylelintrc, в котором будут описаны ваши правила валидации.

    UPD UPD
    Чёрт возьми, Тостер - ресурс для программистов, не поддерживает makrdown и не может распарсить URL. Это просто позор.
    Ответ написан
    5 комментариев
  • AngularJS как исправить ошибку?

    search
    @search
    мама говорит что я особенный
    У класса CategoryComponent отсутствуют аннотации и ангуляр невдупляет что в конструктор передавать.

    сделайте так:
    export class CategoryComponent {...}
    CategoryComponent.$inject = ['$http', '$scope', 'socket'];


    Но вообще чтоб с каждым классом и функцией так не мучаться, люди юзают автоматические аннотаторы типа такого: https://github.com/olov/ng-annotate#tools-support
    Ответ написан
  • Почему показывает is not a constructor?

    search
    @search
    мама говорит что я особенный
    замените
    exports.HelloWorld;
    на
    module.exports = HelloWorld;
    Ответ написан
    Комментировать
  • Как определиться с деятельностью?

    search
    @search
    мама говорит что я особенный
    Моя училка по информатике твердила что для того чтоб научиться программировать, нужна задача, которую интересно решать. Золотые слова. Язык/платформа/технология - это всё вторично, пока нет задачи. Вот варианты как придумать что делать:
    - сервис/сайт/плагин-для-браузера, который был бы полезен лично вам
    - помогите родственникам/друзьям с автоматизацией их бизнеса. Задаром. Просто так. Вам зачтётся 100%
    Ответ написан
    4 комментария
  • Не избыточно ли использовать rxjs/Observable?

    search
    @search
    мама говорит что я особенный
    В ангуляре практически все (если не все) асинхронные операции возвращают Observable. Избегая его использование вы не получите никаких выигрышей, а наоборот сильно усложните себе жизнь выбиваясь из экосистемы фреймворка. Вот статья, которая помогла мне разобраться с rxjs https://habrahabr.ru/company/infopulse/blog/338910/
    Ответ написан
    Комментировать
  • Сколько нужно знать слов, чтобы начать учиться только на английском?

    search
    @search
    мама говорит что я особенный
    10800 по результатам вашего теста. Начал 3 года назад тоже с примерно 3500. Вот, на мой взгляд, лучшая методология изучения языка www.antimoon.com/how/howtolearn.htm

    Немного лайфхаков:
    * гуглите только на английском
    * любой контент смотреть/читать/слушать только на английском. Первые 2 года будет сложно, но оно того стоит

    Вот ради чего стоит напрячься:
    * контент, который доходит до нас в переведенном виде - это процентов 10 от существующего контента. Знание языка даёт доступ к остальным 90%. Это очень много полезной информации. Причём в любой области. Какое бы у вас не было хобби, оно сильно обогатится, если выучить язык
    * если вы программист, то автоматически зарабатываете в 2-3 раза больше соотечественников, работая на буржуев
    * вам открывается доступ к американской/английской стендап комедии, она весёлая и почти не поддаётся переводу
    Ответ написан
    Комментировать
  • Как сделать единую точку входа?

    search
    @search
    мама говорит что я особенный
    Это указывается в .htaccess как-то так

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php [L]


    После этого все запросы на сервер будут обрабатываться в index.php. А в самом индексе смотрите на $_SERVER['REQUEST_URI'] и действуете по обстоятельствам.
    Ответ написан