Я слушаю очень много подкастов. Некоторые из них связаны с программированием.
+ ДевШахта — много про софт-скиллы, много про Node.js.
+ Мысли и методы — о непривычном в программировании. Вопросы вычислимости, связи информатики и вселенной.
+ Новости 512 — еженедельные экстра-короткие новостные выпуски.
+ Пятиминутка React — не только React, а скорее фортенд в целом. К сожалению, не выходит с декабря прошлого года.
И еще парочка, они классные, но я перестал их слушать.
+ Frontend Weekend — интервью с разработчиками, чаще фротендерами, но не всегда.
+ Радио-Т — длинные выпуски, обсуждаются новости и статьи.
На случай если кто-нибудь не знает что такое подкасты и не умеет их слушать. Подкаст — это аудио-шоу. Люди говорят что-нибудь в микрофон, вы слушаете это. Удобство формата в его нетребовательности. Можно слушать подкасты в метро, во время уборки дома, прогулки с собакой. Как слушать подкасты.
#рекомендации
+ ДевШахта — много про софт-скиллы, много про Node.js.
+ Мысли и методы — о непривычном в программировании. Вопросы вычислимости, связи информатики и вселенной.
+ Новости 512 — еженедельные экстра-короткие новостные выпуски.
+ Пятиминутка React — не только React, а скорее фортенд в целом. К сожалению, не выходит с декабря прошлого года.
И еще парочка, они классные, но я перестал их слушать.
+ Frontend Weekend — интервью с разработчиками, чаще фротендерами, но не всегда.
+ Радио-Т — длинные выпуски, обсуждаются новости и статьи.
На случай если кто-нибудь не знает что такое подкасты и не умеет их слушать. Подкаст — это аудио-шоу. Люди говорят что-нибудь в микрофон, вы слушаете это. Удобство формата в его нетребовательности. Можно слушать подкасты в метро, во время уборки дома, прогулки с собакой. Как слушать подкасты.
#рекомендации
Самое ценное
Самое ценное, что есть в наших программах — это данные. Данные важно правильно хранить, обеспечивать их доступность, не терять и еще куча всего. И немногие разработчики умеют все это делать хорошо. Но самые страшные факапы связаны именно с утратой или порчей данных.
При этом работать с данными должен уметь любой член команды — разработчик, админ, девопс (многие считают что это отдельная должность).
Если данных много — все эти задачи усложняются. Я абсолютно не представляю как работать с базой данных даже в 100 гигабайт.
Как раз для таких людей OTUS запускает онлайн-курс "Data Engineer". Он о том как работать с большими данными, мониторить и тестировать такие базы, обращаться с распределенными хранилищами.
20 мая (завтра) в 20.00 МСК пройдет вебинар "Lean Data Engineering: большие данные при небольшом бюджете", который предваряет этот курс. Чтобы попасть на него, нужно пройти тестирование.
#данные #партнерский_материал
Самое ценное, что есть в наших программах — это данные. Данные важно правильно хранить, обеспечивать их доступность, не терять и еще куча всего. И немногие разработчики умеют все это делать хорошо. Но самые страшные факапы связаны именно с утратой или порчей данных.
При этом работать с данными должен уметь любой член команды — разработчик, админ, девопс (многие считают что это отдельная должность).
Если данных много — все эти задачи усложняются. Я абсолютно не представляю как работать с базой данных даже в 100 гигабайт.
Как раз для таких людей OTUS запускает онлайн-курс "Data Engineer". Он о том как работать с большими данными, мониторить и тестировать такие базы, обращаться с распределенными хранилищами.
20 мая (завтра) в 20.00 МСК пройдет вебинар "Lean Data Engineering: большие данные при небольшом бюджете", который предваряет этот курс. Чтобы попасть на него, нужно пройти тестирование.
#данные #партнерский_материал
Самое ценное
Продолжим разговор о данных. Я не умею управлять базами данных достаточно хорошо. Как развернуть кластер с кучей нод, бэкапами и мониторингом — для меня загадка. Когда мне нужно написать хоть сколько-нибудь сложный SQL запрос — я гуглю.
Чтобы компенсировать такие пробелы в знаниях, можно отдать задачу управления базой данных кому-то другому. Почти все провайдеры облачных серверов предоставляют управляемые ими базы данных.
+ DO Managed Databases
+ AWS RDS
В чем суть
Провайдер предоставляет базу данных. Поднять ее можно из удобного интерфейса. Никакого обслуживания она не требует, сама бэкапится. Если потребуется масштабировать — все произойдет само, дополнительных усилий не требуется. Провайдер же обеспечивает безопасть базы.
На мой взгляд, это как раз тот случай когда можно отдать сколько-нибудь денег за свое время и спокойствие. Во всех домашних проектах использую DO Managed Databases (просто потому что AWS слишком сложный для меня).
#данные
Продолжим разговор о данных. Я не умею управлять базами данных достаточно хорошо. Как развернуть кластер с кучей нод, бэкапами и мониторингом — для меня загадка. Когда мне нужно написать хоть сколько-нибудь сложный SQL запрос — я гуглю.
Чтобы компенсировать такие пробелы в знаниях, можно отдать задачу управления базой данных кому-то другому. Почти все провайдеры облачных серверов предоставляют управляемые ими базы данных.
+ DO Managed Databases
+ AWS RDS
В чем суть
Провайдер предоставляет базу данных. Поднять ее можно из удобного интерфейса. Никакого обслуживания она не требует, сама бэкапится. Если потребуется масштабировать — все произойдет само, дополнительных усилий не требуется. Провайдер же обеспечивает безопасть базы.
На мой взгляд, это как раз тот случай когда можно отдать сколько-нибудь денег за свое время и спокойствие. Во всех домашних проектах использую DO Managed Databases (просто потому что AWS слишком сложный для меня).
#данные
История: удаленная база и две минуты страха
В 2017 году я работал над генератором интернет-магазинов. И тогда я еще хуже представлял себе как правильно обращаься с данными.
При очередном релизе нужно было обновить схему базы, я просто удалил старую базу и накатил схему новой. Когда я понял, что произошло — я очень напугался и навсегда запомнил, изменять схему базы нужно посредствам миграций/эволюций.
Тематическая статья — Версионная миграция структуры базы данных: основные подходы
Кончилось все хорошо, база в этом приложении была всего лишь зеркалом другого источника данных и мы ее быстро восстановили.
#кейс #данные
В 2017 году я работал над генератором интернет-магазинов. И тогда я еще хуже представлял себе как правильно обращаься с данными.
При очередном релизе нужно было обновить схему базы, я просто удалил старую базу и накатил схему новой. Когда я понял, что произошло — я очень напугался и навсегда запомнил, изменять схему базы нужно посредствам миграций/эволюций.
Тематическая статья — Версионная миграция структуры базы данных: основные подходы
Кончилось все хорошо, база в этом приложении была всего лишь зеркалом другого источника данных и мы ее быстро восстановили.
#кейс #данные
Хорошая практика
В прошлом году гремела статья от инженеров из Хероку о приложениях 12 факторов.
Это отличные советы по построению приложений, прочтите их и жизнь станет проще.
The Twelve-Factor App
#проектирование #общие_знания
В прошлом году гремела статья от инженеров из Хероку о приложениях 12 факторов.
Это отличные советы по построению приложений, прочтите их и жизнь станет проще.
The Twelve-Factor App
#проектирование #общие_знания
12factor.net
The Twelve-Factor App (Русский перевод)
A methodology for building modern, scalable, maintainable software-as-a-service apps.
Golang
Я люблю изучать новые языки программирования. Осенью читал "7 языков за 7 недель", а совсем недавно внимательно смотрел на ReasonML и Dart.
Я уверен, что изучение новых языков — большое благо. Так можно перенять какие-то крутые идеи из параллельных миров и использовать их в своей практике.
Последний год я пристально следил за развитием Go. Это максимально непривычный для меня язык — по большей части из-за особенного Go-way. В нем совсем другие лучшие практики. У них там нет исключений! И это осознанный выбор авторов. При этом язык сверх-популярен. Веб, CLI, все можно писать на Go.
OTUS запускает курс "Разработчик Golang", а 23 мая (завтра) в 20.00 МСК пройдет день открытых дверей на этом курсе. Как обычно, доступно предварительное тестирование.
Пишите впечатления от мероприятия, да и в целом мнения о Golang, будет интересно почитать о вашем опыте.
#языки #партнерский_материал
Я люблю изучать новые языки программирования. Осенью читал "7 языков за 7 недель", а совсем недавно внимательно смотрел на ReasonML и Dart.
Я уверен, что изучение новых языков — большое благо. Так можно перенять какие-то крутые идеи из параллельных миров и использовать их в своей практике.
Последний год я пристально следил за развитием Go. Это максимально непривычный для меня язык — по большей части из-за особенного Go-way. В нем совсем другие лучшие практики. У них там нет исключений! И это осознанный выбор авторов. При этом язык сверх-популярен. Веб, CLI, все можно писать на Go.
OTUS запускает курс "Разработчик Golang", а 23 мая (завтра) в 20.00 МСК пройдет день открытых дверей на этом курсе. Как обычно, доступно предварительное тестирование.
Пишите впечатления от мероприятия, да и в целом мнения о Golang, будет интересно почитать о вашем опыте.
#языки #партнерский_материал
24-25 мая а Питере будет HolyJS.
Буду писать интересные штуки сразу в твиттер — @kamyshev_code.
Я на конференции оба дня, подходите знакомиться.
Буду писать интересные штуки сразу в твиттер — @kamyshev_code.
Я на конференции оба дня, подходите знакомиться.
На выходных сходил на HolyJS. Отличная конференция. Когда выложат доклады — рекомендую посмотреть эти:
Deno, a new way to JavaScript
Райан Даль (автор Node.js) рассказал о своем новом проекте.
Очень странное тестирование
Шокирующий подход к unit-тестированию через свойства.
Подход к типобезопасной разработке на TypeScript
Хороший вводный доклад по TypeScipt.
Modern web testing and automation with Puppeteer
Прекрансный доклад с реальными примерами e2e тестирования с помощью Puppeteer, очень хороший доклад.
Обработка озера данных на Node.js в serverless-архитектуре
Почти ничего не понял, но звучит как невероятно крутой подход. Полезно для расширения кругозора.
Node.js: так же быстро, выше, сильнее с GraalVM
Магия — возможность запускать внутри Node.js кода кусочки на R, Python, Java, Ruby. Впечталяющуая технология, определенно стоит попробовать.
О тестировании на основе свойств и Deno скоро расскажу подробнее.
Deno, a new way to JavaScript
Райан Даль (автор Node.js) рассказал о своем новом проекте.
Очень странное тестирование
Шокирующий подход к unit-тестированию через свойства.
Подход к типобезопасной разработке на TypeScript
Хороший вводный доклад по TypeScipt.
Modern web testing and automation with Puppeteer
Прекрансный доклад с реальными примерами e2e тестирования с помощью Puppeteer, очень хороший доклад.
Обработка озера данных на Node.js в serverless-архитектуре
Почти ничего не понял, но звучит как невероятно крутой подход. Полезно для расширения кругозора.
Node.js: так же быстро, выше, сильнее с GraalVM
Магия — возможность запускать внутри Node.js кода кусочки на R, Python, Java, Ruby. Впечталяющуая технология, определенно стоит попробовать.
О тестировании на основе свойств и Deno скоро расскажу подробнее.
Научиться обращаться с данными
Последнее время я много писал о базах данных, о том, как сложно правильно обращаться с данными. Сейчас многие приложения работают с SQL-хранилищами и важно научиться ими пользоваться.
Завтра в OTUS стартует курс "Реляционные СУБД" и там всему этому научат. Проектирование базы данных, специфика разных SQL-баз, оптимизация запросов.
Как обычно, доступно вступительное тестирование.
#данные #партнерский_материал
Последнее время я много писал о базах данных, о том, как сложно правильно обращаться с данными. Сейчас многие приложения работают с SQL-хранилищами и важно научиться ими пользоваться.
Завтра в OTUS стартует курс "Реляционные СУБД" и там всему этому научат. Проектирование базы данных, специфика разных SQL-баз, оптимизация запросов.
Как обычно, доступно вступительное тестирование.
#данные #партнерский_материал
Индустрия умирает
Сейчас популярно мнение, что хороший разработчик должен быть популярным — вести твиттер, писать статьи и делать опенсорс. Это не здорово, часто крутые специалисты просто не хотят быть медийными.
Тематическая статья — Теперь хороших разрабов меряют по просмотрам и подписчикам — и это плохо
Похожая ситуация и с технологиями. Мы выбираем библиотеки, фреймворки по звездочкам на гитхабе и заметности в твиттере.
Слайды тематического доклада — Front-end innovation is over
Проникся этими идеями и буду стараться в рабочих проектах выбирать лучшие технологии, а не самые популярные, смотреть на скилл разработчика и думать.
Сейчас популярно мнение, что хороший разработчик должен быть популярным — вести твиттер, писать статьи и делать опенсорс. Это не здорово, часто крутые специалисты просто не хотят быть медийными.
Тематическая статья — Теперь хороших разрабов меряют по просмотрам и подписчикам — и это плохо
Похожая ситуация и с технологиями. Мы выбираем библиотеки, фреймворки по звездочкам на гитхабе и заметности в твиттере.
Слайды тематического доклада — Front-end innovation is over
Проникся этими идеями и буду стараться в рабочих проектах выбирать лучшие технологии, а не самые популярные, смотреть на скилл разработчика и думать.
Очень давно я рассказывал о важности инверсии зависимостей внутри приложения.
3 июня в 20.00 МСК OTUS проводит вебинар Dagger 2 для Android-разработчиков.
Казалось бы — где связь? Dagger 2 — это один из самых популярных DI-контейнеров для Android-разработки. На вебинаре будут побробно рассмотрены правильные способы работать с ним.
#проектирование #партнерский_материал
3 июня в 20.00 МСК OTUS проводит вебинар Dagger 2 для Android-разработчиков.
Казалось бы — где связь? Dagger 2 — это один из самых популярных DI-контейнеров для Android-разработки. На вебинаре будут побробно рассмотрены правильные способы работать с ним.
#проектирование #партнерский_материал
Нужная книга
Coders at Work — cборник интервью 15 крутейших программистов, которые стоят у истоков индустрии.
Самые известные из них:
+ Дуглас Крокфорд, один из создателей JavaScript
+ Кен Томпсон, создатель UNIX
+ Дональд Кнут, ну вы знаете
+ Брэд Фицпатрик, создатель Живого Журнала
+ Берни Козелл, участник первой реализации сети ARPANET
Невероятно интересно читать как складывалась профессиональная жизнь этих людей.
#softskills
Coders at Work — cборник интервью 15 крутейших программистов, которые стоят у истоков индустрии.
Самые известные из них:
+ Дуглас Крокфорд, один из создателей JavaScript
+ Кен Томпсон, создатель UNIX
+ Дональд Кнут, ну вы знаете
+ Брэд Фицпатрик, создатель Живого Журнала
+ Берни Козелл, участник первой реализации сети ARPANET
Невероятно интересно читать как складывалась профессиональная жизнь этих людей.
#softskills
Svelte
Последнее время меня все больше занимает скорость работы сайтов. Я переписал свой сайт, чтобы он стал быстрым. И внимательно смотрю на альтернативные решения в мире фронтенд-фреймворков.
Пару недель назад познакомился со Svelte. Это простой фреймворк для построения реактивных интерфейсов, который имеет очень маленький (иногда даже нулевой) рантайм. И это поразительно. Кроме этого, Svelte работает быстро. Я не сравнивал его с другими фреймворками, но он быстр достаточно, чтобы этого не замечать.
В Svelte я встретил две проблемы, которые мне сильно мешают:
+ Отсутствие поддержки TypeScript. Я люблю статическую типизацию, без нее мне тяжело писать код.
+ Тулинг. Редакторы кода сейчас не слишком хорошо умеют общаться с Svelte, да и привычные инструменты (Prettier, ESLint) не слишком приветливы в этому фреймворку.
Авторы обещают в следующей версии добавить нормальную поддержку TS, а тулинг подтянется с популярностью. Попробуйте этот фреймворк на маленьком пет-проекте, он классный,
#фронтенд #производительность
Последнее время меня все больше занимает скорость работы сайтов. Я переписал свой сайт, чтобы он стал быстрым. И внимательно смотрю на альтернативные решения в мире фронтенд-фреймворков.
Пару недель назад познакомился со Svelte. Это простой фреймворк для построения реактивных интерфейсов, который имеет очень маленький (иногда даже нулевой) рантайм. И это поразительно. Кроме этого, Svelte работает быстро. Я не сравнивал его с другими фреймворками, но он быстр достаточно, чтобы этого не замечать.
В Svelte я встретил две проблемы, которые мне сильно мешают:
+ Отсутствие поддержки TypeScript. Я люблю статическую типизацию, без нее мне тяжело писать код.
+ Тулинг. Редакторы кода сейчас не слишком хорошо умеют общаться с Svelte, да и привычные инструменты (Prettier, ESLint) не слишком приветливы в этому фреймворку.
Авторы обещают в следующей версии добавить нормальную поддержку TS, а тулинг подтянется с популярностью. Попробуйте этот фреймворк на маленьком пет-проекте, он классный,
#фронтенд #производительность
Инструментируй это
Да этого доклада я никогда не слышал термина "инструментирование кода". Оказалось, что это супер важная концепция, которая позволяет работать всему нашему тулингу.
Роман Дворнов рассказал, как он написал свое решение для инструментирования кода и упрощения работы с компонентными фреймворками в браузере.
Запись доклада
#удобство_разработки
Да этого доклада я никогда не слышал термина "инструментирование кода". Оказалось, что это супер важная концепция, которая позволяет работать всему нашему тулингу.
Роман Дворнов рассказал, как он написал свое решение для инструментирования кода и упрощения работы с компонентными фреймворками в браузере.
Запись доклада
#удобство_разработки
YouTube
Роман Дворнов, Avito | Инструментируй это | FrontTalks 2015
Все уже привыкли к автоматизации: сборщиками и другими консольными инструментами никого не удивишь. А вот автоматизации самого процесса разработки того, с чем мы имеем дело в браузере, уделяется меньше внимания. Хотя тут многое можно улучшить. Если взглянуть…
Языки: основы
Часто слышу о том, что любой разработчик должен знать С/С++, но сам так и не нашел времени познакомиться с ними. В следующему году я планирую все таки заняться этим.
А OTUS уже совсем скоро (27 июня) запускает курс "Разработчик С++". Это довольно хардкорный курс, и для начала занятий нужно знать базовый синтаксис С++, уметь оценивать сложность алгоритмов, разбираться в основах SQL и многопоточного программирования.
Но это того стоит. На курсе научат асинхронному программированию, работе с шаблонами и обработке больших данных.
Чтобы записаться на курс, нужно пройти вступительное тестирование.
#языки #партнерский_материал
Часто слышу о том, что любой разработчик должен знать С/С++, но сам так и не нашел времени познакомиться с ними. В следующему году я планирую все таки заняться этим.
А OTUS уже совсем скоро (27 июня) запускает курс "Разработчик С++". Это довольно хардкорный курс, и для начала занятий нужно знать базовый синтаксис С++, уметь оценивать сложность алгоритмов, разбираться в основах SQL и многопоточного программирования.
Но это того стоит. На курсе научат асинхронному программированию, работе с шаблонами и обработке больших данных.
Чтобы записаться на курс, нужно пройти вступительное тестирование.
#языки #партнерский_материал
Очень странное тестирование
На HolyJS слушал доклад про тестирование на основе свойств. Мне понравилась эта техника написания юнит-тестов.
Ее суть очень проста — мы должны тестировать не работу функции на примерах, а логику ее работы.
Такая функция пройдет несколько тестов с примерами. Для 1+2, 2+1, 3+4 она работает корректно. Чтобы найти проблему, не заглядывая в код, нужно придумать еще несколько тест-кейсов. Если функция сложнее — в ней не так просто найти граничные случаи.
Если подходить к тестированию со стороны свойств функции, то нужно выделить суть операции, производимой функцией. Для сложения все довольно просто — от перестановки слогаемых сумма измениться не должна. Тогда можно сгенерировать 1000 случайных чисел и попробовать для них вызывать функцию с разным порядком аргументов. Результат для одинаковых чисел должен оставаться одинаковым.
Конечно, это свойство не дает гарантии корректности работы функции (например, она может всегда возвращать 0, или перемножать числа). Поэтому нужно найти еще несколько свойств и написать тесты и для них.
Искать свойства сложно. Но хорошо написанные тесты на основе свойст дают больше уверенности в корректности функции, чем хорошо написанные тесты на основе примеров.
Для JavaScript есть классная бибилиотека — fast-check. Генерирует случайные наборы данных в заданных диапозонах, интегрируется со всеми популярными тест раннерами, умеет еще много чего.
#тестирование
На 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. Генерирует случайные наборы данных в заданных диапозонах, интегрируется со всеми популярными тест раннерами, умеет еще много чего.
#тестирование