Данила Мигалин (@miga) живет в Вильнюсе и работает инженером в Uber.
Рубрика «Программирование» - 88
Разрабы становятся админами, а админы — разрабами. Интервью с инженером Uber, где разделение исчезло совсем
2021-02-11 в 16:07, admin, рубрики: devops, Go, golang, Rebrain, Блог компании Ребреин, интервью, ПрограммированиеC и C++: межъязыковые интерфейсы
2021-02-11 в 9:17, admin, рубрики: C, c++, Блог компании RUVDS.com, Программирование, разработкаКак известно, C и C++ — это родственные языки между которыми есть много общего. Но их пути, с годами, расходятся всё сильнее. В общих чертах дело обстоит так: код, написанный на одном из этих языков, не может быть скомпилирован под видом кода, написанного на другом. Этому мешает множество больших и маленьких различий между языками. Причём, речь идёт не только о синтаксических различиях. Некоторые общие синтаксические конструкции могут иметь разную семантику. Поэтому обычно нет никакого смысла в том, чтобы компилировать код, написанный на C, с помощью C++-компилятора. Не стоит доверять тем, кто утверждает обратное.
Правда, есть одна сфера, где обычно наблюдается согласие между C и C++. Это — ABI (Application Binary Interface, двоичный интерфейс приложений). Структуры данных и функции одного языка могут быть, в той или иной мере, использованы в другом языке. C и C++, кроме того, достаточно сильно пересекаются в области спецификаций интерфейсов, вследствие чего один и тот же заголовочный файл можно использовать из кода, написанного на обоих языках.
В этом материале я постараюсь собрать то общее, что есть у C и C++ и предложу некоторые рекомендации, которые позволят достаточно хорошо сочетать эти языки. Это, правда, будет всего лишь рассказ, иллюстрирующий точку зрения C-программиста, который хочет создавать интерфейсы для C++.
Читать полностью »
Почему бухгалтеров мы можем обучать, а программистов — нет
2021-02-10 в 19:28, admin, рубрики: Блог компании gms & g-mate, интервью, карьера, Карьера в IT-индустрии, обучение программированию, Программирование, собеседования, управление персоналом, Учебный процесс в ITКажется, мы делаем всё, чтобы писать хороший код: читаем книги, слушаем подкасты, ходим на конференции и изучаем лучшие практики. Почему же результат оставляет желать лучшего? Новые языки осваиваются медленно, код превращается в адского монстра, а джуны месяцами учатся понятно называть идентификаторы.
Позвали Григория Петрова, DevRel’а Evrone.com (ex. Voximplant, Radmin, Digital October Center) и вдохновителя сообщества Moscow Python, рассказать, как писать хороший код самому и научить команду. А еще обсудили, как понять, какие механизмы нас тормозят, и как посмотреть на нейрофизиологию через призму прикладной разработки и руководства технической командой. Разговор оказался настолько интересным, что сделали статью по его следам.
Наш гость сам себя называет генералистом. Пишет на большинстве мейнстримовых языков разработки, кроме Haskell, и интересуется нейрофизиологией. В какой-то момент он посмотрел на свой предыдущий опыт работы и понял, что ему нравится писать документацию, объяснять сложные вещи простым языком и общаться с разработчиками, но не руководить. Поэтому позиция DevRel (Developer Relations) оказалась для него оптимальной.
Культ лучших практик
2021-02-10 в 13:44, admin, рубрики: best practices, Блог компании Mail.Ru Group, никто не читает теги, Программирование, Совершенный код, Терминология IT, управление разработкойЛучшие практики, несмотря на термин, не всегда хороши. В программировании многие из них не оправдывают своего названия. Они распространяются не благодаря своим заслугам или доказательствам эффективности, а из-за эффекта авторитета и использования обществом. По мере их распространения теряются нюансы. А с потерей нюансов становится легче заниматься их евангелизмом. В сочетании с нехваткой опыта это может привести к возникновению культа лучших практик. Представьте команду, которая одержима их использованием — скажем, разработкой через тестирование (test-driven development) или написанием пользовательских сценариев, — до такой степени, что это уже вредит. В эту ловушку попадали многие, в том числе и я.
Почему лучшие практики могут быть вредны? Почему мы любим им следовать? Когда и как они мешают? Чтобы ответить на эти вопросы, нужно понять, откуда берутся эти практики и как они распространяются в программировании.
Читать полностью »
Как создать кастомный плагин для Dart-анализатора
2021-02-10 в 11:29, admin, рубрики: dart, flutter, open source, Блог компании Wrike, Программирование, статический анализПривет! Меня зовут Дима, я frontend-разработчик в компании Wrike. В этой статье я расскажу про то, как написать плагин для анализа кода на Dart. Текст будет полезен тем, кому не хватает текущей функциональности дартового анализатора по статическому анализу или если вам просто захочется попробовать написать простой анализатор самостоятельно.
Rust Foundation
2021-02-10 в 10:00, admin, рубрики: cargo, clippy, open source, Rust, rustc, rustdoc, rustfix, rustfmt, новости технологий, перевод, Программирование, системное программирование, управление проектами, языки программирования
Сегодня от имени команды Rust Core я рада объявить о Rust Foundation — новой независимой некоммерческой организации, управляющей языком программирования Rust и его экосистемой, которая исключительно ориентирована на поддержку всех сопроводителей — тех, кто создаёт проекты и управляет ими. Первое совещание Rust Foundation состоится завтра, 9 февраля, в 16:00 СТ (22:00 UTC+3). Совет директоров состоит из 5 директоров из компаний-учредителей: AWS, Huawei, Google, Microsoft и Mozilla, и 5 директоров из управления проектом. Двое из них — представители Core Team (Основной команды), трое — разных частей проекта: Reliability (Надёжности), Quality (Качества) и Collaboration (Взаимодействия).
Enum в PHP 8.1 — для чего нужен enum, и как реализован в PHP
2021-02-07 в 14:34, admin, рубрики: enum, php, Программирование, Разработка веб-сайтовЧерез несколько дней заканчивается голосование по первой итерации реализации enum в PHP 8.1 . Уже видно, что голосов “за” гораздо больше, так что давайте кратко пройдемся и посмотрим, что же нам приготовили авторы языка.
Зачем нужны enum?
Зачем вообще нужны enum? По сути они служат цели улучшенного описания типов. Давайте рассмотрим пример без енумов и с ними. Допустим, у нас продаются машины трех цветов: красные, черные и белые. Как описать цвет, какой тип выбрать?
class Car {
private string $color;
function setColor(string $color): void {
$this->color = $color;
}
}
Если мы опишем цвет машины как простой string, то во-первых при вызове $myCar->setColor(..) непонятно, что за строку туда писать. “red” или “RED” или “#ff0000”, а во вторых, легко ошибиться, просунув туда случайно что-то не то (пустую строку, к примеру). То же самое будет, если использовать не строки, а числа, например.
Пишем программу для компьютера ALTAIR 8800 1975г выпуска
2021-02-07 в 13:09, admin, рубрики: 8080, ALTAIR 8800, diy или сделай сам, ассемблер, Научно-популярное, Программирование, старое железоПривет.
В истории вычислительной техники существуют определенные события, повлиявшие на ход истории. Одним из таких было появление первого массового персонального компьютера.
В те годы компьютеры использовались лишь учеными и инженерами на больших предприятиях. И тут появляется компьютер, купить который может любой желающий. Altair 8800Читать полностью »
Размышления о Rust
2021-02-06 в 6:42, admin, рубрики: Rust, tokio/futures, Компиляторы, ПрограммированиеВсем привет. Не сразу, но я полюбил Rust. И эта любовь привела меня в бескрайние моря лоулевельного кода. О том, что мне удалось найти - под катом.
Секретный тип данных
Если вы читали Rust Book, то наверняка помните похожий код-сниппет:
fn unwrap<T>(option: Option<T>) -> T{
let unwrapped = match option{
Some(val) => val,
None => panic!("This cannot be None!")
};
return unwrapped;
}
fn main() {
let unwrapped = unwrap(Some(0));
}
Конвертеры маршрутов в Django 2.0+ (path converters)
2021-02-05 в 14:01, admin, рубрики: django, path converters, python, URLResolver, Блог компании Яндекс.Практикум, Конвертеры, Программирование, регистрация маршрутов, Яндекс.практикумВсем привет!
Маршрутизация в Django со второй версии фреймворка получила замечательный инструмент — конвертеры. С добавлением этого инструмента появилась возможность не только гибко настраивать параметры в маршрутах, но и разделять зоны ответственности компонентов.
Меня зовут Александр Иванов, я наставник в Яндекс.Практикуме на факультете бэкенд-разработки и ведущий разработчик в Лаборатории компьютерного моделирования. В этой статье я расскажу о конвертерах маршрутов в Django и покажу преимущества их использования.
Первое, с чего начну, — границы применимости:
- версия Django 2.0+;
- регистрация маршрутов должна выполняться с помощью
django.urls.path
.
Итак, когда к Django-серверу прилетает запрос, он сперва проходит через цепочку middleware, а затем в работу включается URLResolver (алгоритм). Задача последнего — найти в списке зарегистрированных маршрутов подходящий.
Для предметного разбора предлагаю рассмотреть следующую ситуацию: есть несколько эндпоинтов, которые должны формировать разные отчёты за определённую дату. Предположим, что эндпоинты выглядят так:
Читать полностью »