Pro WEB & IT – Telegram
Pro WEB & IT
1.29K subscribers
87 photos
6 videos
1 file
340 links
Про IT в целом, WEB технологии, программирование и не только. Разбираю вопросы с собеседований и IT головоломки. Для тех, кто хочет найти работу по душе: https://news.1rj.ru/str/geekjobs
Download Telegram
Как сгенерить символьно числовой ID на JS не прибегая к библиотекам с md5 и тому подобное? На самом деле на JS легко генерятся простые несекурные ID, а так же легко сгенерить UUID. Как всегда 1 минута на прочтение магических рун: https://goo.gl/6QqrsL
Мы опубликовали результаты нашей ЗП аналитики по фронтендерам. Наши данные очень хорошо отражают реалии, ведь мы ежедневно работаем с сотнями фронтендеров и у нас большое число заказчиков именно по этой профессии.

Аналитика показывает очень интересные тенденции и распределение заработных плат фронтендеров. В целом это логично и ожидаемо, но пока не увидишь своими глазами — не поверишь.

https://vc.ru/33311-rynok-zarplat-frontend-razrabotchikov
Есть очень старая задачка: создать массив N размерности и заполнить его числами от 0 до N. Были времена, когда ее спрашивали на собеседованиях. Сейчас вряд ли кто-то всерьез будет спрашивать про нее на техническом интервью, но в жизни и быту она периодически встречается. Раньше для этих целей использовали сложную конструкцию вида:


let n = 10
const arr = Array.apply(null,{length:n}).map(Number.call, Number)


Отчасти эта задача и была интересна для собеседования своей “магией”. Если человек мог написать такую конструкцию и объяснить что тут просиходит — он точно знал как работает call, чем отличается от apply, что такое array-like объект, как устроен класс Array в JS и так далее. Сейчас это уже не обязательно, ведь у нас есть ES6+.

С приходом новых стандартов ES2016 и прчих задача стала скучна, а реализация стала более читаемая и идиоматична. Теперь эта же задача может быть решена таким образом:

const arr = [...Array(n)].map((_,i)=>i)

Спред оператор можно заменить на Array.from(), например и тому подобные:

const arr = Array.from(Array(n)).map((_,i)=>i)

В итоге задача сошла на нет и ее уже редко где встретишь на собеседовании. А были времена, когда меня такое спрашивали и были времена, когда я не мог ответить на этот вопрос 🙂

Если покопаться, можно найти еще разновидности, но они будут повторять эти базовые концепции. Просто будут другие методы и способы инициализации стартового экземпляра Array.
Небезызвестный Сергей Рубанов aka @chicoxyzzy мне напомнил, что Array.from принимает 2й необязательный аргумент. Так что педпоследний пример можно переписать так:

const arr = Array.from(Array(n), (_, i) => i)

или так

const arr = Array.from({ length: n }, (_, i) => i)
Во 1х - все таки довел выпуск до финала. Во 2х, теперь есть возможность выпуск слушать не только в SC, на сайте и айтюнс, но и в телеге, прямо тут

Слушать на сайте и в SC: https://radiojs.ru/2018/02/radiojs-51/

Слушать в телеге:
https://news.1rj.ru/str/itradiostream
С утра меня сподвигли заглянуть в квест ReturnTrue. Так как я потерял ссылку на свои решения, пришлось бытро проходить по новой. Часть задач ушли во 2й сезон и чтобы их увидеть, нужно теперь решать еще и 2й сезон. И вот пока решал задачи, вдруг осенило, что заполнить числами массив можно еще одним способом (вчера я как раз писал про это):

const arr = [...Array(n).keys()]

Вообще подумал, что стоит разобрать челлендж, так как там очень интересные задачи и есть очень сложные. Чего стоит random4. Кстати про рандом - это отдельная тема, которую хочется так же разобрать и обсудить. Но обо всем по порядку…

Кстати, если кто-то не знал, предлагаю порешать https://alf.nu/ReturnTrue
Мой ник MAY✪R. В квесте от меня запушено 4 задачи =)
Очень крутая реализация мимишной формы авторизации. Фишка вся в анимированном аватаре, который следит за действиями. Это шедевр. Сразу захотелось разобраться как это делается и научиться делать похожие

https://codepen.io/dsenneff/pen/QajVxO?editors=1010
Если вас интересует возможность построения универсальной архитектуры, которая будет в себе позволять использовать любой фреймворк, для начала стоит ознакомиться с тем, что другие уже успели сделать в этом направлении. Подборка статей на тему Микросервисной архитектуры на клиенте https://goo.gl/JTC9Te
Получить конфиг файл Nginx, как он видит его или достать данные из памяти - задачи, с которыми может столкнуться веб разработчик (фулстек, девопс, админ, nodejs, etc…). Потеряли все конфиги, а на сервере есть запущенный Nginx, который работает? Не беда, все данные можно восстановить из памяти, но придется помучаться

https://medium.com/@frontman/nginx-tips-tricks-bcd0fe600614
Вопрос: как написать простой генератор псевдослучайных чисел? А можно ли предсказать что выдаст Math.random() ?
Заинтригованы?
Мысли про мнение Петра Мязина про TS (смотри ссылку на подкаст выше). Петр рассказал хорошую позицию по отношению к TS и да, наверное так оно и нужно. Мне нравится его подход и в чем-то я даже согласен.

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

Про проекты: Мое имхо, не пихать TS там, где это замедлит разработку. Лендинги с джиквери - да, не нужно TS. Простой плагин для браузера - не нужно TS. Сложный плагин дл ябраузера - возможно нужно. Парсер чего-то - не факт что нужно. Базовые библиотеки для парсинга для переиспользования - мб нужно.

Сервер на ноде - это уже сервис и, в зависимости от того, что он будет делать и сколько планируется иметь логики - либо нужно, либо нет, но скорее нужно, чем нет. Но, возможно, вместо ноды нужно взять Go, PHP, Python. Тема обширная и я ее постараюсь раскрыть, возможно даже в cледующем выпуске RadioJS.
Новости фронтенда: Житель Москвы переписал свою квартиру на Vue.js. К чему это я? А к тому, что 22 марта планируется первый Moscow Vue Meetup. Готовим доклады 🙂
Небольшой пост про итераторы, как альтернативный способ обхода списков, который мало кто использует, но в них есть свяо прелесть. Главное знать, что так тоже можно

https://goo.gl/WN4ymM
Сообщество фронтенд подкастеров решили выкладывать выпуски подкастов дополнительно в специальном канале - https://news.1rj.ru/str/itradiostream

Сейчас к этому каналу присоеденились: RadioJS, FW, 5min React, 5min Angular, ФЮ, Девшахта, 5min PHP

Вы можете послушать все свежие выпуски в этом канале или по старинке. Это всего лишь новый источник. Кстати, на телефонах канал превращается в плейлист. Очень удобно.
Приведение типов в JS считается одной из сложных тем. Но на самом деле это не так. Нужно выучить всего пару правил и вы сможете легко читать, понимать и предсказывать поведение интепретатора. Данный материал - это подготовительная статья для следущих интересных, про перегрузку и полиморфизм в JS. Но обо всем по порядку

https://goo.gl/dWNxPN
Я очень люблю соревнования по программированию игрового AI. Когда-то, в 2012 участвовал в Russian AI Cup и мне очень нравилась эта инициатива. Сейчас уже нет столько свободного времени, но все же я не пропускаю такие события и , как минимум, заглядываю хотя бы на старте. И вот сейчас пришло письмо о запуске нового сезона MiniAiCup 2: по мотивам игры AgarIO.

Приглашаются к участию все желающие. Регистрация на сайте http://aicups.ru/. Чемпионат будет проходить по мотивам игры Agar.io — двухмерной массово-многопользовательской браузерный игры в жанре экшн.

Стратегии AI можно писать на:
- NodeJS 6
- Go 1.10
- Python
2.7/3.5
- PHP7
- Java 1.8
- C# Mono 4.3
- C++11

Глаза разбегаются. Попробую на Go или Python 3, пока не решил.