Рубрика «Программирование» - 559

Избегание ада с помощью монад - 1

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

Ад проверки на null

Данная проблема возникает когда несколько частичных функций (функции которые могут не вернуть значение) нужно выполнить последовательно.
Такие функции обычно приводят в глубоко вложенному и сложно читаемому коду с чрезмерным количеством синтаксического шума.

var a = getData();
if (a != null) {
  var b = getMoreData(a);
  if (b != null) {
     var c = getMoreData(b);
     if (c != null) {
        var d = getEvenMoreData(a, c)
        if (d != null) {
          print(d);
        }
     }
  }
}

Читать полностью »

image

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

Читать полностью »

На этой неделе мы публикуем подборку из задач и вопросов, которые даёт на собеседованиях Uber. Задачи подобрали различного уровня сложности от «Easy» до «Hard», чтобы всем было интересно. Условие дано на английском языке.

Ответы, как и прошлый раз, опубликуем в течение недели. Круто, если вы будете писать в комментариях свои варианты решений )

Вопросы:

1. Какие KPI вы бы использовали, если бы запустили новый сервис Uber в определенной части мира и хотели знать, насколько он успешен?

2. Какой проект, над которым вы работали, провалился? Могли бы вы сделать что-нибудь, чтобы предотвратить его провал?
Читать полностью »

image Всем привет! Это уже девятый выпуск дайджеста на Хабрахабр о новостях из мира Python. В сегодняшнем выпуске вы найдёте интересные материалы, касающиеся Django, создания интерпретаторов, алгоритмов и многого другого. Присылайте свои актуальные материалы, а также любые замечания и предложения, которые будут добавлены в ближайший дайджест.

А теперь к делу!
Читать полностью »

[Санкт-Петербург] Андрей Ершов — CRDT. Бесконфликтная синхронизация данных - 1

Уже в этот вторник, 23 мая, после долгого перерыва, в офисе DINO Systems состоится встреча CodeFreeze с Андреем Ершовым, специалистом по распределенным системам. Тема встречи — CRDT. Бесконфликтная синхронизация данных.
Читать полностью »

Я, в трезвом уме и доброй памяти, рассказываю как, в 2017 году начать программировать для исчезнувшей платформы.
Шло 12 мая 2017 года. Лежащий снег за окном и включённое отопление навевали мысли о вечном, и мой взор упал на шикарный промышленный КПК под управлением PalmOS.

Программирование для Palm в 2017 году - 1
Терминал сбора данных

Когда-то он мне был отдан, но я им ни разу так и не пользовался. По началу у него не было шнурка для СОМ-порта. А потом в процессе искусственной подпайки к контактам — был оборван шлейф от материнской платы кредла до разъёма порта КПК. Так и лежал мёртвым грузом.

И восхотел я реанимировать данный пальм, а чтобы была мотивация, решил для начала поглядеть какие бывают эмуляторы под linux, дабы посмотреть какое ПО есть и стоит ли овчинка выделки. И с поиском, установкой эмулятора немного увлёкся… Снега, холодная погода мая так повлияли на меня, что я решил попробовать писать для данного КПК. Тем более, что Palm — это КПК моей студенческой молодости, тогда это был безумно крутой гаджет. Тогда я не умел программировать под них, но очень хотел. Спустя больше 14 лет (почувствуй себя старым, ага) — решил таки попробовать это сделать.
Если вам интересно, как эмулировать данный КПК, а ещё лучше писать для него ПО, то поехали читать дальше. Читать полностью »

Зло в функциях сравнения
Возможно, читатели помнят мою статью под названием «Эффект последней строки». В ней идёт речь о замеченной мной закономерности: ошибка, чаще всего, допускается в последней строке однотипных блоков текста. Теперь я хочу рассказать о новом интересном наблюдении. Оказывается, программисты тяготеют к тому, чтобы допустить ошибку в функциях сравнения двух объектов. Такое утверждение выглядит неправдоподобным, однако, я покажу огромное количество примеров ошибок, которые шокируют читателя. Читайте новое исследование, будет интересно и страшно.
Читать полностью »

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

«55.55% — вероятность того, что ящики зажгутся одним и тем же цветом, когда мы выбираем две двери наугад, в соответствии с теорией скрытых параметров».

Все мое знакомство с теорвером буквально заорало об ошибке. Но есть нюанс… Я тоже могу ошибаться. Так давайте проверим!
Читать полностью »

Тема может и банальная, но когда программа начинает работать как то не так, и вообще вести себя очень странно, часто приходится читать логи. И много логов, особенно если нет возможности отлаживать программу и не получается воспроизвести ошибку. Наверно каждый выработал для себя какие то правила, что, как и когда логировать. Ниже я хочу рассмотреть несколько правил записи сообщений в лог, а также будет небольшое сравнение библиотек логирования для языков php, ruby и go. Сборщики логов и системы доставки не будут рассматриваться сознательно (их обсуждали уже много раз).
Читать полностью »

Эра Python. Начало - 1

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

Боюсь вызвать (или нет?) очередную волну холивара, но старый добрый и любимый до сих пор во многих школах и ВУЗах (наш не исключение) Pascal, мягко говоря, не подходит для неокрепшей психики студентов, которым с первого курса преподают программирование на этом языке. И, что печально, но легко объяснимо, несчастные дети не понимают, зачем им это чудо нужно и где они его будут применять в реальной жизни. Да-да, я в курсе, что в мире чистый Pascal не используется, а предназначен в основном для знакомства с азами программирования. Но скажите, зачем из пяти лет обучения, студенту тратить полгода или год (зависит от фантазии лектора) на это самое ознакомление на примере мертвого языка, который после придется априори забыть, если можно сразу изучать перспективный и, главное, широко используемый язык программирования?
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js