Pull to refresh
8
0
Send message

Статья подозрительно похожа на вот этот ролик https://youtu.be/oL0umpPPe-8 В видео материал проработан гораздо глубже.

Однажды у нас был косяк, когда нужно было сгенерировать preview для документа, который создал пользователь (читай хавать произвольные данные). Для этого мы использовали Headless chrome, я обмазал все try/catch и retry policy, но всё равно прилетел документ, где пользователь нафигачил огромных картинок и в итоге браузер завис в отдельном процессе без возможности его как либо убить, кушая 100% CPU на AppService Plan'е.

Эмм, ну может я недостаточно внимательно читал, но из этого абзаца я понял, что я могу себе настроить произвольные нотификации.

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

А как мне обойтись без мат. операций, если я хочу, к примеру, получить уведомление, если цена на алюминий выросла на 5%? Нужно иметь же возможность записать что-то вроде newPrice > oldPrice * 1.05, разве нет?

Не подкажете, у какой фин. организации вы на аутсорсе? Чтобы знать, чьими услугами не пользоваться :)

А если серьёзно, лично я являюсь ярым противником запуска произвольного юзерского кода у себя на сервере. При таких простых правилах вряд ли можно получить доступ к переменным окружения. Но я полагаю, что у вас есть поддержка мат.операций и пользователь может создать правило, к примеру, с факториалом от 100? И тогда как минимум улетит ваш облачный бюджет.

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

Интересно, что такое должно произойти, чтобы работодатель нес за тебя ответственность? Ожог от слишком горячего кофе? Растяжение кисти от игры в настольный футбол?


На мой взгляд, b2b — самый лучший вариант, но без пмж не зарегестрировать фирму. В связи с этим umowa o dzielo — это единственный вариант фрилансить в Польше, когда у заказчика нет офиса в Польше.

Еще забыли упомянуть про 26 рабочих дней отпуска в году — больше чем в Норвегии. За это можно многое простить.

Немного поправлю неточности и добавлю от себя:
С чего вы взяли, что umowa o dzieło, самый худший вариант? Там налог не 17%, а 8.5 для "креативных творцов".


Забыли сказать про koszty autorskie. В трудовом договоре прописывается сколько процентов времени вы занимаетесь "креативной" работой. Для программистов пишут 70-80%, с этой суммы идет пониженный налог. 100% не пишет никто — будут проблемы с налоговой. В месяц получается на 1.5-2 тыс злотых чистыми больше в зависимости от зп.


Этот калькулятор зарплат получше будет: https://www.bankier.pl/narzedzia/kalkulator-placowy


70-80% поляков в ИТ работает на B2B (читай ИП на субподряде). Налоги 1500зл + 19%, но их хотят сейчас сильно поднять. Плюсом считается то, что можно очень много расходов списать на расходы фирмы, уменьшив облагаемую налогом часть. Например, машина, топливо, техника.


По моему мнению, этот сайт более релевантный для поиска работы https://justjoin.it/

Решение, может, и рабочее, но по-моему автор немного накостылил. Паттерн решения такого рода задач — это редирект пользователя на страницу /logout?redirectUrl=page_to_redirect. Компонент Logout делает свои дела, например, шлёт запрос на сервис, чистит localStorage, а затем перенаправляет на страницу, указанную в параметре redirectUrl.

Добалю свои 5 копеек, для тех программистов, кого еще не убедила статья. На мой взгляд, слепая печать существенно увеличивает вашу производительность благодаря тому что ваши мысли как бы напрямую «превращаются в код». Т.е. при обычной печати, вы сформулировали мысль в своей голове, зафиксировали ее в «мозговом буфере», перенесли фокус на клаву, напечатали соответствующий код и т.д.
В случае же слепой печати все промежуточные стадии пропадают. Ваши пальнцы на подсознательном уровне преобразуют мысль в код, соответственно снижается когнитивная нагрузка. Также мысль не прерывается и вы можете писать более сложные конструкции, большие блоки с одного захода.
Какие-то прохладные аргументы. Все перечисленные проблемы — это проблемы DOM API, а не тайпскрипта, как уже отписались выше. Так или иначе ваш дарт транспилится в JS и работает с тем же самым DOM API.

Не мне, конечно, вас судить, но вы оторвали себя от ангуляр комьюнити, получив взамен весьма сомнительные плюшки. Я даже не нашел в оф документации, есть ли там реактивные формы. Кстати, если в дарте есть свой аналог rxjs — Futures, как они уживаются с rxjs, на котором и работает Ангуляр?

Во блин, оказывается, AngularDart — это совершенно другой фреймворк, который не имеет никакого отношения к Ангуляру с 2016года. Умеет же гугл давать названия фреймворкам.

Ну и возвращаясь к вашим джуниорам, тяжело им, наверное, осваивать инструмент, которым пользуется 1.5 человека, помимо гугла.
Если не секрет, в чем смысл использовать Дарт с Ангуляром? Ангуляр (2+) с самой беты написан на тайпскрипте и разработчкики дали ясно понять, что отказываться от него не намерены. Ангуляр и тайпскрипт это как 2 палочки твикс.

Сам использую Ангуляр, начиная с беты и для меня выбор Дарта кажется просто диким.
Ваш пример не работает, если я сделаю 4 клика, то он сработает как тройной. И у вас опять же присутсвует неявное состояние count.
В перемере, который я выслал, надо было оставить комментарии, конечно. Он был для внутреннего пользования.
Кода на rxjs получилось 6 строчек: с 55 линии по 61. Все что выше, это описание naive подхода, чтобы можно было показать ход мыслей от простого подхода к продвинотому.

Вы получили документ по ссылке example.org/foo/bar. По какой ссылке нужно его сохранять, чтобы не нарваться на двусторонний канал?

Не понял, что вы имели в виду. Ресурс по этой ссылке изменяется через PUT/PATCH на example.org/foo/bar. При чем тут вообще каналы?
Про спагетти я неверно выразился. Имелось в виду неявное состояние, которое является бичем любой системы и async/await этому активно способствует.
Каков глубинный смысл в том, что http.get — observable, если он возвращает ровно одно значение?

Смыслов тут несколько. Во-первых, с fetch api можно получать и прогресс запроса, т.е. ваше утверждение не совсем верно. Во-вторых, и на мой взгляд самое главное, Promise нельзя отменить, а от Observable можно отписаться, что ведет к отмене запроса.
Я вам дал несколько простых пирмеров, где промисов уже недостаточно. Неужели вы никогда не писали свой typeahead? Или, например, 3 зависимых селекта Страна -> Регион -> Город. На каждом шаге нужно сделать запрос, чтобы загрузить список регионов и городов. Если меняем страну нужно сбросить регион и город. Поверх этого неплохо было бы еще навернуть нормальный retry policy. При ошибке запроса делаем еще один, потом через 500мс, потом 2000мс, потом кидаем ошибку. Хотел бы я посмотреть, как это смотрится без реактивности.
Как же мне понятны ваши аргументы и как же вы неправы :) Был на вашем месте пару лет назад, когда начинал работать с Ангуляром. Считал observable каким-то выпендрежем без цели. Сейчас мне больно смотреть на спагетти с async/await.
Почему observable?

Потому что выбор правильных абстракций — это половина успеха, а весь наш мир — это один большой поток событий, который движется только вперед (кстати, поэтому двусторонний канал уже излишество) и именно поэтому CQRS шагает по планете вместе с функциональным программированием.
Чтобы прочувствовать rxjs попробуйте написать свой triple/quad click в качестве упражнения классически на таймаутах, а потом с rxjs. Я даю такое задание своим джуниорам. Тут можете подсмотреть ответ. У меня получилось уложиться в 5 строчек.
А чтобы его полюбить, напишите свой хороший typeahead с отменой HTTP запросов на промисах и с rxjs, почувствуйте разницу.
Вроде все понятно, что имелось мною в виду. Так выглядит процесс разработки без ютит тестов. Мне гараздо проще замокать DAL и уже работать над бизнес-логикой без лишней боли.
Простите за грубость, но мне показалось, что автор написал статью как настоящий шарлатан: сначала вбросил невалидные тезисы, которые принял как данность, а потом накатал простыню с умными терминами и формулами.
Во-первых, откуда вы взяли 40% на юнит тесты? По моим личным и коллег наблюдениям, код чуть более сложнее чем Hello world с тестами пишется быстрее чем без них. Особенно это касается, если вы пишите метод, который изменяет состояние приложения. Каждый раз подчищать живую базу во время разработки — это же просто каторга! А если вам нужно еще добавить фичу, которая шлет email, когда изменения сделаны? Что, будете каждый раз высылать себе письмо?
Во-вторых, вы говорите, что сайт в дауне, это, конечно, плохо но не смертельно. Чтож соглашусь, не все пишут модули управления ракетами. А что если после очередного изменения магазин начитает слать посылки вместо адреса доставки на адрес инвойса? И это происходит в течение месяца. У нас была такая фигня, только перепутались email'ы. Ручное тестирование прошло нормально, потому что тестировщики всегда используют один и тот же email. А простой юнит-тест легко бы отловил эту ошибку. Заказчики тогда были в ярости.
Ну и в-третьих. Если у вас уходит 40% на тесты, то с вашим говнокодом точно что-то не так. На лицо толсные сервисы или контроллеры, срочно требуется инъекция CQS :)
Ребят, вот вам еще статей на год веперед:
const vanillaJsLibs = ['jQuery', 'openlayers', 'leaflet', 'quilljs', 'codemirror']
const frameworks = ['Angular', 'AngularJS', 'React', 'Vue', 'Ember', 'Knockout']
frameworks.forEach(framework => {
  vanillaJsLibs.forEach(jsLib => {
    console.log(`
    Как использовать библиотеку ${jsLib} с фреймворком ${framework} (когда это действительно необходимо)`)
  })
})

А если серьезно, хоть это и перевод, но подключать либы в Ангулярное приложение через тэг script это уже за гранью добра и зла.

Вы, кстати, забыли в примере с fetch вызвать complete.
Ещё оставлю это для тех, кто хочет понять switchMap раз и навсегда https://youtu.be/rUZ9CjcaCEw

Information

Rating
Does not participate
Registered
Activity