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

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

Но мы – круче. В определённых условиях мы умеем надувать огромные перламутровые пузыри, которые потом годами не лопаются. Толку от них нет, но… Красиво же!

Проекты автоматизации

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

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

image

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

Выгорание

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

В этом году я много общался с людьми, не связанными с технологиями, и заметил одну вещь: мы не особо жалуемся на свою работу. Мы жалуемся на плохое руководство и плохие проекты, но не на сам кодинг. Мы воспринимаем горение своей работой как нечто само собой разумеющееся. Вы удивлены? Почитайте вакансии. Любовь к работе — часто одно из обязательных требований. От нас ждут, что мы будем любить свою работу, более того, что мы сделаем программирование центром своей вселенной.
Читать полностью »

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

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

Разработка REST-серверов на Go. Часть 2: применение маршрутизатора gorilla-mux - 1

Это — проблема, с которой сталкиваются все, кто пишет HTTP-сервера, не используя зависимости. Если только сервер, принимая во внимание систему его маршрутов, не является до крайности минималистичной конструкцией (например — это некоторые специализированные серверы, имеющие лишь один-два маршрута), то оказывается, что размеры и сложность организации кода маршрутизатора — это нечто такое, на что очень быстро обращают внимание опытные программисты.
Читать полностью »

Какой самый популярный стиль организации кода вы встречали в корпоративных кодовых базах? Лично я чаще всего видел решение, подразумевающее группировку всех файлов по их типу. Таким образом, к примеру, в системе MVC все контроллеры, все сервисы, все репозитории, все POJO и так далее находятся вместе. Давайте назовем такое решение "стековым" стилем организации кода.

Хватит организовывать код по типу файлов - 1

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

Впервые принципы SOLID были представлены в 2000 году в статье Design Principles and Design Patterns Роберта Мартина, также известного как Дядюшка Боб. 

С тех пор прошло два десятилетия. Возникает вопрос - релевантны ли эти принципы до сих пор? 

Перед вами перевод статьи Дядюшки Боба, опубликованной в октябре 2020 года, в которой он рассуждает об актуальности принципов SOLID для современной разработки.       

Недавно я получил письмо с примерно следующими соображениями:

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

Создание нейронной сети Хопфилда на JavaScript - 1

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

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

Стандартная утилита для управления кластером Kubernetes (kubectl) — достаточно мощный инструмент администрирования, отладки и мониторинга. Но если вы хотите получить сводную информацию о кластере Kubernetes или работать с несколькими ресурсами одновременно, она уже не так эффективна.

Сегодня существует большое количество графических панелей для управления Kubernetes, вероятно, вы уже используете одну из них. Например, это может быть стандартный Kubernetes DashboardЧитать полностью »

Современный мир ПО содержит настолько много слоёв, что оптимизации могут быть в самых неожиданных местах. Знакомьтесь - год 2000, проект HP Dynamo. Это эмулятор процессора PA-8000, работающий на этом же процессоре PA-8000, но с технологией JIT. И реальные программы, запускающиеся в эмуляторе - в итоге работают быстрее, чем на голом процессоре.

td;dr - всё сказано в заголовке

Программистам из HP Labs стало интересно, а что будет, если написать оптимизирующий JIT компилятор под ту же платформу, на которой он работает. Работа заняла несколько лет. Под эмулятором можно было запускать немодифицированные родные бинари. И результаты оказались несколько неожиданными.

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

Прошло тридцать лет, а QBasic по-прежнему лучший - 1

Моему старшему сыну Ноа три месяца назад исполнилось семь лет. Если бы он мог обменять всю свою семью на два часа игры в Minecraft, то сделал бы это без раздумий. Ещё одна любовь всей его жизни — это Super Mario Maker. У меня бегали мурашки, когда я видел, как он играет в уровни, которые я проходил в его возрасте. Примерно пять месяцев назад я покинул свою семью ради ежегодного паломничества на ludum dare: соревнование разработчиков игр, во время которого мы запираемся в квартире с друзьями, возвращаемся в состояние пещерного человека, не спим 48 часов и создаём с нуля готовую игру. Когда я гордо демонстрировал свою революционную игру уровня AAA своей жене, Ноа, разумеется, заинтересовался. Поэтому я познакомил его с миром кода, показал, как из простых слов (он только что научился читать) можно создать настоящую игру. С того самого дня Ноа постоянно просил меня научить делать собственные видеоигры. И в течение следующих пяти месяцев я искал Святой Грааль языка/IDE для детей в надежде превратить эту искру интереса в запоминающийся опыт…

Мои поиски приводили меня на бесконечные форумы, благодаря которым я попробовал бесчисленное множество рекомендуемых языков и платформ: SmallBasic, Pico-8, Smalltalk, Scratch и т.д. Я даже задавал вопросы великим оракулам StackOverflow, но тщетно. Спустя пять месяцев я пришёл к разочаровывающему выводу: ничто и близко не сравнимо с тем, что было у меня в мои годы. 30 лет спустя QBasic по-прежнему остаётся лучшим языком для новичков в программировании.
Читать полностью »

func Map[F, T any](s []F, f func(F) T) []T {
    r := make([]T, len(s))
    for i, v := range s {
        r[i] = f(v)
    }
    return r
}

Как вы уже наверняка знаете, proposal по дженерикам в Golang принят (официально это называется type parameters) и будет имплементирован в go 1.18. Бета будет доступна уже в конце этого года. А это значит, что пора разобраться, на чём в итоге остановились разработчики языка — ведь черновик type parameters постоянно менялся в течение последних лет.

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

Самостоятельно поиграться с дженериками можно здесь

Итак, поехали.

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


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