Как стать автором
Обновить
-1
0

Пользователь

Отправить сообщение

Функторы, аппликативные функторы и монады в картинках

Время на прочтение 5 мин
Количество просмотров 189K
Вот некое простое значение:


И мы знаем, как к нему можно применить функцию:


Элементарно. Так что теперь усложним задание — пусть наше значение имеет контекст. Пока что вы можете думать о контексте просто как о ящике, куда можно положить значение:


Теперь, когда вы примените функцию к этому значению, результаты вы будете получать разные — в зависимости от контекста. Это основная идея, на которой базируются функторы, аппликативные функторы, монады, стрелки и т.п. Тип данных Maybe определяет два связанных контекста:


data Maybe a = Nothing | Just a

Позже мы увидим разницу в поведении функции для Just a против Nothing. Но сначала поговорим о функторах!
Читать дальше →
Всего голосов 184: ↑175 и ↓9 +166
Комментарии 60

Больше разработчиков должны знать это о базах данных

Время на прочтение 19 мин
Количество просмотров 43K
Прим. перев.: Jaana Dogan — опытный инженер из Google, которая в данный момент занимается вопросами наблюдаемости production-сервисов компании, написанных на Go. В этой статье, снискавшей большую популярность у англоязычной аудитории, она в 17 пунктах собрала важные технические детали, касающиеся СУБД (а иногда — распределённых систем в целом), которые полезно учитывать разработчикам крупных/требовательных приложений.



Подавляющее большинство компьютерных систем отслеживают свое состояние и, соответственно, нуждаются в некой системе хранения данных. Я накапливала знания о базах данных в течение длительного времени, попутно совершая ошибки при проектировании, приводившие к потере данных и перебоям в работе. В системах, обрабатывающих большие объемы информации, базы данных лежат в сердце системной архитектуры и выступают ключевым элементом при выборе оптимального решения. Несмотря на то, что работе БД уделяется пристальное внимание, проблемы, которые пытаются предусмотреть разработчики приложений, часто оказываются лишь верхушкой айсберга. В этой серии статей я делюсь некоторыми идеями, которые будут полезны для разработчиков, не специализирующихся в этой области.
Читать дальше →
Всего голосов 68: ↑67 и ↓1 +66
Комментарии 27

Как встроить ColorPicker в JavaScript Гант для изменения цвета задач

Время на прочтение 10 мин
Количество просмотров 3K


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


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


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

Во многих современных приложениях для управления проектами для решения таких задач используются диаграммы Ганта. И я взялся за реализацию ее функциональности в нашем приложении.


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

Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 0

41 вопрос о работе со строками в Python

Время на прочтение 9 мин
Количество просмотров 137K
Я начал вести список наиболее часто используемых функций, решая алгоритмические задачи на LeetCode и HackerRank.

Быть хорошим программистом — это не значит помнить все встроенные функции некоего языка. Но это не означает и того, что их запоминание — бесполезное дело. Особенно — если речь идёт о подготовке к собеседованию.

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


Читать дальше →
Всего голосов 65: ↑62 и ↓3 +59
Комментарии 40

Добавляем параллельные вычисления в Pandas

Время на прочтение 2 мин
Количество просмотров 16K

Возможно вы сталкивались с задачей параллельных вычислений над pandas датафреймами. Решить эту проблему можно как силами нативного Python, так и с помощью замечательной библиотеки — pandarallel. В этой статье я покажу, как эта библиотека позволяет обрабатывать ваши данные с использованием всех доступных мощностей.


Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 5

Почему я не использую веб-компоненты

Время на прочтение 7 мин
Количество просмотров 18K

Я пишу это в основном для себя в будущем, чтобы у меня было куда сослаться, когда кто-нибудь спросит меня, почему я скептичен в отношении веб-компонентов и почему Svelte не компилируется в веб-компоненты по умолчанию. (Тем не менее, он может компилироваться в веб-компоненты, а так же интегрироваться с ними, что подтверждается превосходной оценкой на Custom Elements Everywhere).


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

Всего голосов 48: ↑45 и ↓3 +42
Комментарии 53

Программист-защитник сильнее энтропии

Время на прочтение 8 мин
Количество просмотров 8.1K
© Dragon Ball. Goku.

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

Вспоминается эффект FlashForward из голливудских блокбастеров, когда главный герой видит грядущую катастрофу и остаётся предельно спокойным, потому что заранее знает, что она произойдёт, и имеет от неё защиту. Идея защитного программирования в том, чтобы защититься от проблем, которые сложно или вовсе невозможно предвидеть. Программист-защитник ожидает появления ошибок в любом месте системы и в любой момент времени, чтобы предотвратить их до того, как они нанесут ущерб. При этом цель не в том, чтобы создать систему, которая никогда не падает, это всё равно невозможно. Цель в том, чтобы создать систему, которая падает изящно в случае любой непредвиденной проблемы.

Давайте разберёмся подробнее, что входит в понятие «падать изящно».

  • Падать быстро. В случае непредвиденной ошибки все операции должны завершаться сразу же, особенно если последующие вычисления тяжёлые или могут привести к порче данных.
  • Падать аккуратно. Если возникла ошибка, программа должна освободить все ресурсы, снять локи, удалить временные и наполовину записанные файлы, закрыть соединения. Дождаться завершения критических операций, прерывание которых может привести к непредсказуемым результатам. Либо безопасным способом аварийно завершить эти операции.
  • Падать явно и красиво. Если что-то сломалось, сообщение об ошибке должно быть простым, лаконичным и содержать важные детали из того контекста системы, где возникла ошибка. Это поможет команде, которая отвечает за систему, максимально быстро разобраться в проблеме и исправить её.
Читать дальше →
Всего голосов 31: ↑31 и ↓0 +31
Комментарии 6

Писатели про… Писатели про… Писатели прод, или Как в России вымерли и возродились фантасты

Время на прочтение 8 мин
Количество просмотров 34K
В Хеллоуин положено говорить о страшном, поэтому сегодняшний наш блог – о современной российской фантастике.

Профессиональные писатели-фантасты, как известно, вымерли в России где-то во второй половине 2011 года, когда в издательствах все начало сыпаться к чертям собачьим. Продажи «художки» тогда резко просели, причем практически по всем позициям, за исключением детской литературы. Издатели схватились сначала за голову, потом за карман, и, неоптимистично позвенев мелочью, обратились к народу.

Большинству издаваемых ими авторов они сказали примерно то же самое, что заявил один вредный дед своему популярному впоследствии внучку: «Ну, Лексей, ты — не медаль, на шее у меня — не место тебе, а иди-ка ты в люди…».

И те пошли. В люди, или еще куда – история умалчивает. Но именно 2012 год выкосил весь подлесок профессиональных писателей от второго эшелона и ниже. Гонорары упали настолько, что «жить с пера» могли себе позволить только звезды первой величины.

Русская фантастика, безусловно, не умерла – ее и дустом вывести непросто, — но писательство перестало быть профессией, став чистой воды хобби.

image

Однако не прошло и пяти лет, как вымершая было популяция была восстановлена: фантасты-профессионалы воскресли в лучших традициях фениксов и ренессансов. Воскресило их магическое слово «прода».
Читать дальше →
Всего голосов 100: ↑83 и ↓17 +66
Комментарии 500

Как устроен гибридный игровой ИИ и в чём его преимущества

Время на прочтение 10 мин
Количество просмотров 12K
В продолжение некогда поднятой в нашем блоге темы игрового искусственного интеллекта поговорим о том, насколько применимо к нему машинное обучение и в каком виде. Своим опытом и выбранными на его основе решениями поделился эксперт по вопросам ИИ в Apex Game Tools Якоб Расмуссен.



В последние годы ведётся много разговоров о том, что машинное обучение кардинально изменит игровую индустрию, ведь эта технология уже стала прорывной во многих других цифровых приложениях. Но не стоит забывать, что игры устроены намного сложнее, чем симулятор вождения автомобиля, программа управления дроном или алгоритмы распознавания лиц на изображении.
Читать дальше →
Всего голосов 39: ↑32 и ↓7 +25
Комментарии 7

Метрики производительности для исследования невероятно быстрых веб-приложений

Время на прочтение 10 мин
Количество просмотров 12K
Есть одно высказывание: «Что ты не можешь измерить, то ты не можешь улучшить». Автор статьи, перевод которой мы сегодня публикуем, работает в компании Superhuman. Он говорит, что эта компания занимается разработкой самого быстрого в мире почтового клиента. Здесь речь пойдёт о том, что такое «быстро», и о том, как создавать инструменты для измерения производительности невероятно быстрых веб-приложений.


Читать дальше →
Всего голосов 36: ↑35 и ↓1 +34
Комментарии 3

Оптимизируем веб с Виталием Фридманом: скорость загрузки, память, CPU

Время на прочтение 10 мин
Количество просмотров 16K
Это второй пост о всевозможных трюках во фронтенд-разработке. В нем затронут вопрос оптимизации сайта, скорости его загрузки на устройствах с недостаточным объемом оперативной памяти и медленным CPU.

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



В основе материала — расшифровка доклада Виталия с конференции HolyJS 2018 Piter.
Всего голосов 33: ↑31 и ↓2 +29
Комментарии 3

Я хочу, чтобы сайты открывались мгновенно

Время на прочтение 10 мин
Количество просмотров 139K
Здравствуйте, меня зовут Александр Зеленин и я веб-разработчик. Я расскажу, как сделать так, чтобы ваш сайт открывался быстро. Очень быстро.


Я хочу, чтобы мой сайт открывался быстро
Всего голосов 130: ↑122 и ↓8 +114
Комментарии 87

Думаешь, ты знаешь Си?

Время на прочтение 4 мин
Количество просмотров 52K
image

Многие программисты утверждают, что знают С. Ну что ж, у него самый известный синтаксис, он существует уже 44 года и он не захламлен непонятными функциями. Он прост!

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

Если вы думаете что он прост — пройдите этот тест. В нем всего 5 вопросов. Каждый вопрос в принципе одинаковый: какое будет значение возврата?
Всего голосов 60: ↑44 и ↓16 +28
Комментарии 270

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность