kamyshev.code
1.86K subscribers
40 photos
565 links
Архитектура, код, софт-скиллы и всё остальное. Вопросы, пожелания, комментарии — @igorkamyshev

https://kamyshev.me
Download Telegram
​​Научиться обращаться с данными

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

Завтра в OTUS стартует курс "Реляционные СУБД" и там всему этому научат. Проектирование базы данных, специфика разных SQL-баз, оптимизация запросов.

Как обычно, доступно вступительное тестирование.

#данные #партнерский_материал
Индустрия умирает

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

Тематическая статья — Теперь хороших разрабов меряют по просмотрам и подписчикам — и это плохо

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

Слайды тематического доклада — Front-end innovation is over

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

3 июня в 20.00 МСК OTUS проводит вебинар Dagger 2 для Android-разработчиков.

Казалось бы — где связь? Dagger 2 — это один из самых популярных DI-контейнеров для Android-разработки. На вебинаре будут побробно рассмотрены правильные способы работать с ним.

#проектирование #партнерский_материал
Нужная книга

Coders at Work — cборник интервью 15 крутейших программистов, которые стоят у истоков индустрии.

Самые известные из них:
+ Дуглас Крокфорд, один из создателей JavaScript
+ Кен Томпсон, создатель UNIX
+ Дональд Кнут, ну вы знаете
+ Брэд Фицпатрик, создатель Живого Журнала
+ Берни Козелл, участник первой реализации сети ARPANET

Невероятно интересно читать как складывалась профессиональная жизнь этих людей.

#softskills
​​Svelte

Последнее время меня все больше занимает скорость работы сайтов. Я переписал свой сайт, чтобы он стал быстрым. И внимательно смотрю на альтернативные решения в мире фронтенд-фреймворков.

Пару недель назад познакомился со Svelte. Это простой фреймворк для построения реактивных интерфейсов, который имеет очень маленький (иногда даже нулевой) рантайм. И это поразительно. Кроме этого, Svelte работает быстро. Я не сравнивал его с другими фреймворками, но он быстр достаточно, чтобы этого не замечать.

В Svelte я встретил две проблемы, которые мне сильно мешают:
+ Отсутствие поддержки TypeScript. Я люблю статическую типизацию, без нее мне тяжело писать код.
+ Тулинг. Редакторы кода сейчас не слишком хорошо умеют общаться с Svelte, да и привычные инструменты (Prettier, ESLint) не слишком приветливы в этому фреймворку.

Авторы обещают в следующей версии добавить нормальную поддержку TS, а тулинг подтянется с популярностью. Попробуйте этот фреймворк на маленьком пет-проекте, он классный,

#фронтенд #производительность
Инструментируй это

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

Роман Дворнов рассказал, как он написал свое решение для инструментирования кода и упрощения работы с компонентными фреймворками в браузере.

Запись доклада

#удобство_разработки
​​Языки: основы

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

А OTUS уже совсем скоро (27 июня) запускает курс "Разработчик С++". Это довольно хардкорный курс, и для начала занятий нужно знать базовый синтаксис С++, уметь оценивать сложность алгоритмов, разбираться в основах SQL и многопоточного программирования.

Но это того стоит. На курсе научат асинхронному программированию, работе с шаблонами и обработке больших данных.

Чтобы записаться на курс, нужно пройти вступительное тестирование.

#языки #партнерский_материал
​​Очень странное тестирование

На HolyJS слушал доклад про тестирование на основе свойств. Мне понравилась эта техника написания юнит-тестов.

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

function sum(a, b) {
if (a === 3 && b === 4) {
return 7
}

return 3
}


Такая функция пройдет несколько тестов с примерами. Для 1+2, 2+1, 3+4 она работает корректно. Чтобы найти проблему, не заглядывая в код, нужно придумать еще несколько тест-кейсов. Если функция сложнее — в ней не так просто найти граничные случаи.

Если подходить к тестированию со стороны свойств функции, то нужно выделить суть операции, производимой функцией. Для сложения все довольно просто — от перестановки слогаемых сумма измениться не должна. Тогда можно сгенерировать 1000 случайных чисел и попробовать для них вызывать функцию с разным порядком аргументов. Результат для одинаковых чисел должен оставаться одинаковым.

Конечно, это свойство не дает гарантии корректности работы функции (например, она может всегда возвращать 0, или перемножать числа). Поэтому нужно найти еще несколько свойств и написать тесты и для них.

Искать свойства сложно. Но хорошо написанные тесты на основе свойст дают больше уверенности в корректности функции, чем хорошо написанные тесты на основе примеров.

Для JavaScript есть классная бибилиотека — fast-check. Генерирует случайные наборы данных в заданных диапозонах, интегрируется со всеми популярными тест раннерами, умеет еще много чего.

#тестирование
Веб-воркеры

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

Это простая технология, которая поддерживается почти всеми браузерами (даже ie11).

Хорошая вводная лекция на тему — Как построить дом, если ты — веб-воркер

#фронтенд #производительность
​​WASM

Вчера публиковал пост о веб-воркерах. Вторая технология, важная для производительности фронтенда — WebAssembly. Это такой способ выполнять не-JS код в браузере. Со всеми вытекающими — можно проводить сложные вычисления на Rust, и строить графики на Python.

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

13 июня в 20-00 МСК OTUS проводит открытый урок "WebAssembly". Там подробно расскажут о WebAssemby, принципах его работы и кейсах применения.

#фронтенд #производительность #партнерский_материал
Deno

На HolyJS слушал доклад про Deno. Это был не очень хороший доклад про крутую технологию от интересного человека.

Deno — это рантайм для TypeScript (можно запускать и JavaScript), который должен стать лучшей версией Node.js.

Три ключевых приемущества:
+ распределенное хранилище пакетов — любая библиотека импортируется просто по URL;
+ безопасность — по умолчанию у приложения нет доступа до важных штук (сеть, диск, устройства) и их нужно выдавать явно;
+ поддержка TypeScript из коробки.

Технология еще совсем сырая — использовать ее в реальных приложениях не стоит. Но осенью обещают стабильный релиз.

Тематические материалы:
+ Deno on GitHub
+ Распаковываем фреймворк
+ Deno — новый Node.js?

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

#js