Simulative – Telegram
7.39K subscribers
1.7K photos
70 videos
1 file
1.26K links
Привет! Мы — образовательная платформа в сфере аналитики Simulative: simulative.ru

Создаём курсы-симуляторы, где обучаем не на «апельсинках», а на кейсах из реального бизнеса.

Наш уютный чат: @itresume_chat
Поддержка: @simulative_support
Download Telegram
​​✍🏻 5 советов по оптимизации SQL-запросов ✍🏻

Ошибки, долгие паузы и "раздумья" компьютера, возмущенное жужжание процессора и гул успокаивающего его вентилятора...

Вам это знакомо?🤔

Сегодня разберем 5 советов по оптимизации SQL-запросов, которые позволят Вам сохранить и без того хрупкие "нервы" процессора и свои, в том числе!

В статье рассматриваем:

→ Как вывести всё, да не всё
→ Как сузить круг "подозреваемых"
→ Как существенно облегчить работу
→ Как правильно объединяться
→ И много что еще!

Обещаем, Вы обязательно узнаете что-то новое!😏

Приятного чтения!


#sql
​​Дайджест вакансий за 01.02.2021 - 08.02.2021 🕵️‍♂️


Программист Python (Удаленно)

Зарплата: от 140 000 до 180 000 руб.от 30 000 до 40 000 руб.

Компания: ООО ФК ПУЛЬС

Занятость: Полная занятость, удаленная работа

Опыт: 1–3 года

Ключевые навыки: Python, Django + DRF, Celery, Linux, SQL (MySql\ PostgreSQL)

Дополнительные навыки: Администрирование БД, AWS или Google Cloud, Git, Unit Test, Functional Test, Docker

Ссылка на вакансию: https://vk.cc/bYa8bn


AI разработчик

Зарплата: от 70 000 до 100 000 руб.

Компания: Университет искусственного интеллекта

Занятость: Полная занятость, удаленная работа

Опыт: 1–3 года

Ключевые навыки: Python (Keras, TensorFlow, PyTorch), Object Detection, Computer vision, ML, Deep learning

Ссылка на вакансию: https://vk.cc/bYa93n


Data Scientist

Зарплата: от 120 000 до 180 000 руб.

Компания: ООО МАГ Девелопмент

Занятость: Полная занятость, удаленная работа

Опыт: от 2 лет

Ключевые навыки: Математическая статистика, Machine learning, Python/Scala, Pandas, NumPy, Sklearn, XGBoost, Plotly, Matplotlib, Seaborn, SQL (MS SQL и ClickHouse )

Дополнительные навыки:Jupyter Notebook, Pycharm, Terminal (Linux/MacOS), Gitlab, Jira

Ссылка на вакансию: https://vk.cc/bYaadv


Back-end разработчик Python

Зарплата: от 140 000 руб. до 170 000 руб

Компания: Специальные системы и технологии

Занятость: Полная занятость, удаленная работа

Опыт: от 3 лет

Ключевые навыки: Python2.7/3.5, SQL, Фреймворки: Flask, FastApi, Базы данных: MSSQL, PostgreSQL, MySQL, Сервера: IIS, Nginx, Сетевые протоколы и технологии: ASGI, WSGI, REST, XML, JSON, Совместная разработка: Git/GitLab, Очереди задач: RabbitMQ, Redis, Python/Celery, Опыт написания юнит-тестов (Jest+Enzyme), JIRA, ООП

Ссылка на вакансию: https://vk.cc/bYa7Iq


Программист SQL

Зарплата: до 130 000 руб.

Компания: Севстар

Занятость: Полная занятость, удаленная работа

Опыт: не требуется

Ключевые навыки: SQL (предпочтительно PostgreSQL, PL/pgSQL)

Дополнительные навыки: git, Java Core, Spring Framework, docker, perl

Ссылка на вакансию: https://vk.cc/bYaaGT


Разработчик BI (remote)

Зарплата: от 3 000 USD

Компания: Nitka Technologies

Занятость: Полная занятость, удаленная работа

Опыт: от 2 лет

Ключевые навыки: SQL, SAP Data Services, ETL-процессы

Дополнительные навыки: Python, AWS, Разговорный английский язык

Ссылка на вакансию: https://vk.cc/bYa7ln


Товарный аналитик в ecommerce-проект

Зарплата: до 130 000 руб.

Компания: СТАРТЕКС

Занятость: Полная занятость, удаленная работа

Опыт: не требуется

Ключевые навыки: Power BI, Qlik, Tableau, 1С, Excel, SQL, Создание аналитической отчётности и/или прогностических моделей

Ссылка на вакансию: https://vk.cc/bYabbU


#vacancy
☕️Понедельник - самое подходящее время для того, чтобы поменять жизнь!

Сегодня Елизавета, член команды IT Resume, рассказывает в блоге Типичный программист о том, как ей удалось выйти из космических войск и войти в IT 😅

Приятного чтения 👍🏻

#itresume
​​⚠️ Почему прямо сейчас нужно попробовать Numpy 1.20.0?

Недавно вышел релиз Numpy 1.20.0 - большое обновление. Много всего завезли, много чего убрали, многое пофиксили. Вот самое интересное:

1️⃣ Новая функция permuted

Теперь, например, можно независимо друг от друга перемешать элементы по размерностям 2D массива.

2️⃣ Скользящие окна sliding_window_view

Теперь работать с оконными вычислениями стало проще. В смежных библиотеках они уже были, теперь и в Numpy завезли. Бегом переписывать свои скользящие средние 😏

3️⃣ Ушли алиасы для встроенных типов

Знаете, чем отличается int и numpy.int? Ничем, теперь эту путаницу устранили.

4️⃣ Давайте без финансов

Финансовые функции irr, npv и прочие отправили в пакет numpy_financial. Чтобы не вносили смуты.

5️⃣ Аргумент where в функция all, any, std, mean и var

Теперь удобно считать математические характеристики или использовать any/all только с частью многомерного массива. Для этого достаточно указать параметр where.

Естественно, это не все изменения - их очень много. Полный список можно почитать здесь 👉🏻 http://bit.ly/3a2Fvy4

Кстати говоря, если полазить по исходникам на Github, то можно увидеть много забавного. Например, разработчики пишут, что у них неправильно работают какие-то куски кода 😂

PS. Были жалобы, что после обновления перестали работать части старого кода. Таких было немного, но были. Будьте внимательны ☺️

#python
​​GROK IT!

Задача по Python: Что выведет код?

Правильный ответ раскроем завтра 😏


#grokit #python
​​GROK IT! Ответ на задачу про вычитание множеств 🔔

Вчера опубликовали задачу по Python: Что выведет код?

Ответ: {1, 2}

💥 Объяснение:

В данном примере у нас есть 2 множества (set). Этот контейнер содержит набор уникальных элементов в случайном порядке.

Первое и очевидное желание - просто вычесть второе множество из первого почленно. Тогда получится {-2, -2, -2}.

Вторая идея, которая приходит после этого - но множество содержит же только уникальные значения. Значит из {-2, -2, -2} должно остаться только {-2}.

Однако, нет. При вычитании двух множеств выполняется другая операция - симметрическая разность. И в итоговое множество попадают только те элементы, которые ЕСТЬ в первом сете, но НЕТ во втором. В данном случае, это {1, 2}.

❗️Таким образом, правильный ответ - {1, 2}.


#grokit #python
💥 6 отличий списков и кортежей в Python 💥

Частая дилемма: что использовать - списки или кортежи. По этой же теме задают много вопросов на собеседованиях.

Сегодня разберем 6 отличий list и tuple в Python:

✓ Литералы
✓ Длина
✓ Мутабельность
✓ Размер
✓ Ключи словаря
✓ Возможности

🗣 Общая рекомендация такая:

→ Заносите в кортеж известные наборы данных. Например, информацию о пользователе с сайта:

» ('Vasya', 'Pupkin', 'Python')

→ Заносите в списки множество схожих элементов. Например, перечисления:

» 'Banana', 'Orange', 'Apple'

Однако, это не все возможные ситуации. Например, если Вам нужно избежать случайного изменения - используйте кортежи, там никто ничего поменять не сможет. Этакая "проверка на дурака". Если Вам нужно сэкономить немного места - также используйте кортежи.

#python
​​⭐️ Супер-звезда Python. 5 способов использования оператора * ⭐️

Если Вы думаете, что оператор * - это просто оператор умножения, то Вы ошибаетесь! 😏

Сегодня в статье рассмотрим 5 способов использования оператора-астериска.

Приятного чтения!

#python
​​Рубрика «Вопросы с собеседований» 💥

Какие виды вероятностных распределений Вы знаете?

Ответ:

Распределение вероятностей - это закон, описывающий значения, которые принимает случайная величина и вероятность их появления.

По основной классификации вероятностные распределения бывают:

✓ Дискретными
✓ Непрерывными

Дискретное распределение - распределение случайной величины, если она принимает не более чем счетное число значений. Счетное - значит можно пронумеровать их натуральными числами.

Примеры дискретных распределений: Бернулли, Биномиальное, Пуассоновское, Геометрическое.

Непрерывное распределение - распределение случайной величины, если существует такая неотрицательная функция плотности, что вероятность попадания в заданный интервал равна интегралу от плотности по этому интервалу.

Примеры непрерывных распределений: Равномерное, Гауссовское, Гамма, Экспоненциальное, Коши, Хи-квадрат.


#interview_problems #math
10 ошибок начинающих программистов

1️⃣ Писать неопрятный код

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

Профессионал должен знать, как оформлять код на том или ином языке программирования.

Читайте нашу статью про то, как оформлять код SQL 👉🏻 https://vk.com/@itresume-krasivyi-kod-zalog-zdorovya-sql


2️⃣ Не гуглить

Вторая частая ошибка - не гуглить. Что делает неопытный программист:

→ Пристает к коллегам
→ Тупит
→ Тратит кучу времени, чтобы решить проблему

Что делает опытный специалист:

→ Гуглит и находит готовое решение

Потренируйтесь и загуглите прямо сейчас 👉🏻 Как программировать на Python, если боишься змей?


3️⃣ Не писать комментарии

"Зачем писать комментарии, я же и так знаю, что такое переменная a, b и myvar&" - именно такой логикой, видимо, руководствуется подавляющее большинство новичков. Однако, так делать не надо.

Опытный программист всегда снабжает свой код емкими и понятными комментариями, чтобы даже коллега с другого проекта все понял. Заметьте, "емкий" не равно "суперобъемный".

Как бы Вы прокомментировали этот код? 👉🏻 if a != b: myvar += 1


4️⃣ Писать слишком много комментариев

Если после прочтения предыдущего пункта Вы бросились неистово комментировать каждую строчку, то так делать тоже не стоит :)

Избыточные комментарии только загрязняют код - лучше давать понятные имена переменным, чем объяснять, что "a" - это "не a, а счетчик посетителей". Можно же просто назвать customer_counter, верно?

Новичок или профессионал писал этот код? 👉🏻

 import numpy as np #импортируем библиотеку, а еще я очень люблю котиков - они очень милые!


5️⃣ Упертость

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

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

Мы знаем, что у Вас тоже есть такой кусок кода (даже если Вы опытный спец) 👉🏻 Начните новую жизнь, удалите его безвозвратно и попробуйте заново :)


6️⃣ Отсутствие системности

Начинающий программист свято верит, что сможет написать код сходу, без плана и схемы. Ха-ха. Юный подаван, Сила еще не полностью открылась тебе.

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

Выполните это упражнение прямо сейчас 👉🏻 Напишите схему, как будет выглядеть программа, которая каждый день будет Вам напоминать составлять план.


7️⃣ Погоня за скоростью

Многие начинающие программисты, находясь под впечатлением от института, тратят очень много времени на ускорение своего кода.

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

Конечно, о скорости думать нужно, но только когда весь остальной код в порядке. Дядюшка Кнут сказал: "Преждевременная оптимизация – корень всех зол".

А еще один наш знакомый сказал: "В 21 веке дешевле купить сервер помощней, чем тратить кучу денег на оптимизацию". Спорная позиция, но смысл в этом есть.

Ребят, что-то код тупит, как можно его ускорить? 👉🏻 a = b*2


8️⃣ Бесконечное обучение

Многие разработчики-новички (да и не только разработчики) делают одну и ту же ошибку: постоянно проходят курсы, смотрят видео, читают туториалы и так далее. Но забывают самое главное - применять это все на практике.

Вырвитесь из ада туториалов!

Прямо сейчас прочитайте этот туториал и попробуйте его на практике! 👉🏻 https://vk.com/@itresume-polnyi-razbor-lineinoi-regressii-i-metodov-regulyarizacii-v
​​9️⃣ Отрицательное отношение к критике

Молодые (в плане опыта) специалисты часто резко реагируют на критику со стороны более опытных коллег. Они думают, что их недооценивают, ущемляют, унижают или что-то еще.

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

Самое время закрыть триггер 👉🏻 Напишите в комментариях, почему наш код - плохой. Не важно, какой код, просто выговоритесь 😂

🔟 Изобретение велосипеда

Еще одна народная забава - регулярно изобретать новый велосипед. Зачем пользоваться готовыми инструментами, если можно все наколхозить самому? Действительно.

Ну, вообще, в большинстве случаев надо пользоваться готовыми библиотеками и фреймворками:

→ Там уже все реализовано
→ Там уже поработали над скоростью
→ Там уже предусмотрели баги

Но это, конечно, не точно.

Однако, давайте чего-нибудь заколхозим 👉🏻 Напишите с нуля сверточную нейронную сеть. На Алголе, конечно же.

🔔 Во многих пунктах Вы узнали себя? 😅
​​GROK IT!

Задача по математике: Как называется определитель матрицы вторых частных производных?

Правильный ответ раскроем завтра 😏

#grokit #math
GROK IT! Ответ на задачу про определитель матрицы 🔔

Вчера опубликовали задачу по математике: Как называется определитель матрицы вторых частных производных?

Ответ: Гессиан

💥 Объяснение:

Матрица Гессе - матрица, составленная из вторых частных производных функции нескольких переменных. Определитель такой матрицы называется Гессианом.

Лапласиан - дифференциальный оператор, обозначается Δ, и состоит из суммы вторых производных.

Матрица Якоби - матрица из первых частных производных. Якобиан - определитель такой матрицы.

Гамильтониан - оператор полной энергии в квантовой теории.

❗️Таким образом, правильный ответ - Гессиан.

#grokit #math
​​Дайджест вакансий за 08.02.2021 - 15.02.2021 🕵️‍♂️

Data scientist (Аналитик)

Зарплата: от 40 000 до 80 000 руб.

Компания: ООО Займиго МФК

Занятость: Полная занятость, полный день

Опыт: не требуется

Ключевые навыки: Python, Статистический анализ, Построение прогностических моделей, MS Excel

Ссылка на вакансию: https://vk.cc/bYurdP


Data Scientist / Аналитик данных

Зарплата: до 200 000 руб.

Компания: Медиалогия

Занятость: Полная занятость, полный день

Опыт: не требуется

Ключевые навыки: Python, Создание ML/DL моделей с помощью Tensorflow/Keras/PyTorch

Дополнительные навыки: GitHub

Ссылка на вакансию: https://vk.cc/bYuska


Стажер (Аналитик данных)

Зарплата: от 40 000 до 50 000 руб.

Компания: ООО Гензис

Занятость: Полная занятость, полный день

Опыт: не требуется

Ключевые навыки: SQL, Реляционные БД, Линейная алгебра, Статистика

Дополнительные навыки: Python

Ссылка на вакансию: https://vk.cc/bYusNG


Младший Аналитик

Зарплата: от 30 000 до 60 000 руб.

Компания: ООО АРЕС

Занятость: Полная занятость, удаленная работа

Опыт: не требуется

Ключевые навыки: Понимание многомерных моделей данных (сводные таблицы в Excel, Power Query), MS Excel

Дополнительные навыки: MS Excel Solver, VBA, SQL, Python

Ссылка на вакансию: https://vk.cc/bYutoi


Аналитик данных

Зарплата: от 150 000 руб.

Компания: ООО СЕВЕРГРУПП МЕДИЦИНА

Занятость: Полная занятость, удаленная работа

Опыт: 1–3 года

Ключевые навыки: BI (Tableau / Qlik / Power BI / Oracle BI), R\ Python, SQL, Excel, Математическая статистика

Ссылка на вакансию: https://vk.cc/bYuu4m


Data Scientist ASR (Automatic Speech Recognition)

Зарплата: от 230 000 руб.

Компания: Wanted

Занятость: Полная занятость, удаленная работа

Опыт: от 2 лет

Ключевые навыки: Python (Pytorch/TensorFlow), понимание архитектур (CNN, RNN, LSTM, GRU, Transformers), NLP, Английский (intermediate)

Дополнительные навыки: Опыт обработки шумных аудио сигналов

Ссылка на вакансию: https://vk.cc/bYuvDG


Data Scientist / Machine Learning Engineer

Зарплата: до 100 000 руб.

Компания: Ingate

Занятость: Полная занятость, удаленная работа

Опыт: 1–3 года

Ключевые навыки: Python, SQL, Создание БД, Алгоритмы Machine Learning, Математическая статистика, Математическое моделирование

Ссылка на вакансию: https://vk.cc/bYuwn5

#vacancy
​​😇 Всего одна конструкция для очистки кода

Один из главных загрязнителей Вашего кода - вложенные функции.

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

В языке R предусмотрены конвейеры (pipe) для такой ситуации. Они позволяют:

1. Декомпозировать код
2. Сделать его более читаемым
3. Облегчить процесс отладки и поиска ошибок

Чтобы продемонстрировать наглядно сразу все преимущества такой конструкции, часто прибегают к шуточным примерам. Посмотрите - что было до использования конвейера и что стало после. Разница очевидна.

#rstat