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

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

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

Решение японских кроссвордов с помощью SAT солвера

Время на прочтение7 мин
Количество просмотров21K
На Хабре было несколько статей по решению японских кроссвордов, где авторы придумывали различные способы как такие кроссворды решать. В комментарии к статье Решение цветных японских кроссвордов со скоростью света я высказал мысль, что, поскольку, решение японских кроссвордов является NP-полной задачей, то и решать их надо с использованием соответствующего инструмента, а именно SAT солвером. Поскольку моя идея была встречена весьма скептически, я решил попробовать ее реализовать и сравнить результаты с другими подходами. Что из этого получилось можно узнать под катом.
Читать дальше →
Всего голосов 60: ↑58 и ↓2+56
Комментарии37

Open Source спутниковая интерферометрия PyGMTSAR (Python InSAR)

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.9K

С тех пор, как я рассказывал на хабре про мой открытый проект спутниковой интерферометрии PyGMTSAR (Python InSAR библиотека) для обработки и анализа радарных данных спутников Sentinel-1, прошло много времени и сегодня PyGMTSAR представляет собой наиболее мощный инструмент среди всех открытых InSAR. Притом, PyGMTSAR действительно общедоступен, поскольку не требует скачивать огромные данные, устанавливать программное обеспечение и так далее — достаточно просто открыть ссылки на Google Colab в браузере и посмотреть и запустить готовые примеры или адаптировать их для своей территории и области интереса. Предлагаемые Google Colab примеры включают в себя создание отдельных интерферограмм для анализа результатов сейсмических событий (землетрясений) и наводнений, создание рельефа, анализ серий интерферограмм для мониторинга оползней и проседаний грунта. И все эти возможности доступны в один клик онлайн на Google Colab и в Docker контейнерах. Для профессионалов предоставляется полностью программируемая среда для выполнения InSAR задач и интерактивной 3D визуализации, доступная на Google Colab, в Docker контейнерах, на GitHub Action runners, и, конечно, на локальных компьютерах и на облачных хостах.


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

Основы обработки радиолокационных данных дистанционного зондирования Земли

Уровень сложностиСредний
Время на прочтение31 мин
Количество просмотров10K

В настоящее время все более востребованными становятся данные радиолокационного наблюдения (РЛН) с космических аппаратов дистанционного зондирования Земли. Наблюдая повышенный интерес к этой предметной области с одной стороны и явный недостаток информационных материалов по теме обработки радиолокационных данных ДЗЗ с другой, решили написать статью, которая, надеемся, будет полезна для всех интересующихся темой ДЗЗ.

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

PostgreSQL под капотом. Часть 5. Простой SELECT запрос

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

Приветствую!

В этой статье рассмотрим какой путь проходит простой SELECT запрос. От стадии сырой строки до отправки ответа клиенту.

А еще:

Работу со статистикой приложения через API Linux.

Реализацию динамического списка.

«Наследование» в C.

Как ведется работа с диском в БД.

Немного легаси.

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

Как ИТ-специалисту развить у себя умение работать в команде

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

Умение работать в команде — один из самых востребованных навыков в разработке и не только. Без него не получится эффективно взаимодействовать с коллегами и достигать рабочих целей. Пару лет назад рекрутинговая компания Hays провела опрос, результаты которого показали, что умение работать в команде занимает первое место среди soft skills в списке требований работодателей — с учетом того, что 96% нанимателей признали гибкие навыки важнее технических.

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

Под катом разбираем, как ИТ-специалисту самостоятельно развить навык командной работы, и даем полезные рекомендации.

Читать далее
Всего голосов 30: ↑27 и ↓3+27
Комментарии4

Как работает ChatGPT: объясняем на простом русском эволюцию языковых моделей с T9 до чуда

Уровень сложностиПростой
Время на прочтение30 мин
Количество просмотров427K

В последнее время нам почти каждый день рассказывают в новостях, какие очередные вершины покорили языковые нейросетки, и почему они уже через месяц совершенно точно оставят лично вас без работы. При этом мало кто понимает — а как вообще нейросети вроде ChatGPT работают внутри? Так вот, устраивайтесь поудобнее: в этой статье мы наконец объясним всё так, чтобы понял даже шестилетний гуманитарий!

Погнали →
Всего голосов 299: ↑292 и ↓7+343
Комментарии283

Адаптивная антенна на беспилотном летательном аппарате или как одновременно увеличить дальность связи и подавлять помехи

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

Можно ли одновременно увеличить дальность связи с беспилотным летательным аппаратом (БЛА) и подавлять помехи без увеличения габаритов, массы и энергопотребления бортового модема? В настоящей статье мы рассмотрим как это можно сделать с помощью адаптивной антенной системы. Статья написана для разработчиков и эксплуатантов БЛА и является продолжением цикла статей автора про связь с БЛА.

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

Книги по SQL: что почитать новичкам и специалистам

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

SQL — декларативный язык программирования, который используют для описания, изменения и извлечения информации в реляционных базах данных. Язык структурированных запросов популярен у программистов, разработчиков и администраторов баз данных. В этом обзоре собрали 6 книг, которые помогут на старте изучения SQL и при углублении в тему.

Читали ли вы какие-нибудь из них? Или, может, вы можете дополнить этот список? Делитесь в комментариях!
Читать дальше →
Всего голосов 36: ↑33 и ↓3+40
Комментарии23

Обзор методов множественного доступа в беспроводной связи. Часть 6. Комбинируем методы и подводим итоги

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

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

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

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

Обзор методов множественного доступа в беспроводной связи. Часть 4. Сад расходящихся лучей: Пространственное разделение

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

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

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

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

Что такое MLOps? Самый подробный текст про работу с ML-системами, который вы найдете в интернете

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


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

Сохраняйте текст в закладки, потому что на данный момент это, возможно, самое полное описание MLOps на русском языке (и не перевод очередной англоязычной статьи!). Подарим мерч Selectel тому, кто пришлет ссылку на более развернутое описание концепции в комментариях.
Читать дальше →
Всего голосов 43: ↑43 и ↓0+43
Комментарии13

Заблуждения программистов о времени

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

Музей-скансен эпохи Средневековья в Дании в режиме обычной работы (слева) ставит целью воссоздать повседневную жизнь города на стыке XIV и XV веков. Для съёмок фильма (справа) он «погрязнел»

Для киносъёмок в музей под открытым небом Middelaldercentret внесли несколько изменений. Вместо аккуратной каменной улицы развели неприятную кашицу из грязи, не самые роскошные стеклянные окна прикрыли досками и развесили везде выцветшее тряпьё. Здания как следует измазали чем-то коричневым, кое-где зачем-то перемешав субстанцию с соломой. В случайное здание воткнули факел, а не попытались изобразить лучину или фонарь.

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

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

Попытки собрать заблуждения про время и часовые пояса на Хабре уже были шесть и десять лет назад. Но без контрпримеров не так интересно.

Заблуждение 1. В сутках 24 часа или 86 400 секунд


Иногда и кое-где стрелки часов переводят, создавая сутки длиной в 23 и 25 часов — всё очевидно. Будет неплохо углубиться в случаи поэкзотичней.
Читать дальше →
Всего голосов 152: ↑145 и ↓7+177
Комментарии313

Как я несколько лет боролся с прокрастинацией и победил: полное практическое руководство

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

Постоянно откладываешь дела на потом и не видишь в этом проблемы? Мне это знакомо. Расскажу как не повторить моих ошибок и почему пора это прекращать. Не откладывай эту статью на потом!

Начать читать
Всего голосов 125: ↑100 и ↓25+95
Комментарии174

Почему уходят из 1С?

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

Скромная "ответочка" на статью про то, что 1С-ники гораздо умнее коллег из других ЯП.

Как IT специалист, знакомый с теми и другими, постараюсь оппонировать утверждениям из оригинальной статьи.

Читать далее
Всего голосов 127: ↑120 и ↓7+133
Комментарии532

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 3. Первый подход к асинхронности

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

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

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

Но, к счастью, существует и третий вариант — кооперативная многозадачность с помощью системного вызова select и его аналогов (poll, epoll и других). Он позволяет мультеплексировать несколько задач в одном потоке выполнения и в сущности является обычной синхронной программой. А потому никаких дополнительных трат процессорного времени и времени разработчиков не требуется.

Читать далее
Всего голосов 14: ↑12 и ↓2+11
Комментарии4

Что такое логическое программирование и зачем оно нам нужно

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

У того, кто в детстве не писал на Прологе — нет сердца, а у того, кто пишет на нём сегодня — нет мозгов. (оригинал)

Если вас всегда терзали мучительные сомнения — что за фигня это Логическое Программирование (ЛП) и вообще зачем оно нужно? То это статья для вас.


Можно по-разному разделить языки программирования на группы (часто их называют парадигмами программирования), например, вот так:


  • структурное: программа разбивается на блоки — подпрограммы (изолированные друг от друга), а основными элементами управления являются последовательность команд, ветвление и цикл.
  • объектно-ориентированное: задача моделируется в виде объектов, которые отправляют друг другу сообщения. Объекты обладают свойствами и методами. Абстракция. Инкапсуляция. Полиморфизм. Ну в общем, все в курсе.
  • функциональное: базовым элементом является функция и сама задача моделируется в виде функции, а, точнее, чаще всего в виде их композиции, если f(.) и g(.) — это функции, то f(g(.)) — это их композиция.
  • логическое: вот тут, как правило, начинается феерия — если про первые три написаны сотни статей, книг, обзоров, презентаций и учебников, то здесь мы в лучшем случае видим что-то про Prolog и разработки времён Pink Floyd и Procol Harum (ну хоть с музыкой им тогда повезло) и на этом история заканчивается.

Вот эту оплошность я и собираюсь сегодня исправить.


Важнейший тезис этой статьи:


Логическое программирование != Prolog.

И вообще последний вам скорее всего не нужен. А вот первое вполне может быть.


Структура статьи:


  • Что такое Пролог и почему он вам скорее всего не нужен
  • Зачем оно надо, или краткое введение в Answer Set Programming
  • Решаем задачи на ASP
  • Комбинаторная оптимизация
  • Вероятностное ЛП: ProbLog
  • ЛП на классической логике FO(.) и IDP
  • Sketched Answer Set Programming
  • Экспериментальный анализ
  • Тестирование и корректность программ
  • Заключение
Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии22

Обработка изображений на Python

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

В процессе этой статьи будет разработан фильтр для изображения, который позволит показать контуры фигур на изображение.

При помощи формул, описанных в статье можно найти значение каждого пикселя опираясь на соседей этого пикселя.

Далее реализация на python с подробными пояснениями.

Итоги работы и полная версия обработанного изображения.

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

Родинки — это плохо? Разбираемся с эстетикой и раком кожи (не всё так страшно)

Время на прочтение12 мин
Количество просмотров61K
Родинки уже который год ставят рекорды по мифам и страшилкам. Одно только клиническое исследование «Даже однократное посещение солярия повышает риск развития рака кожи в два раза!» чего стоит! Пруф.

Но бояться их не надо. Их надо отслеживать. Я лучше расскажу, что из себя представляют родинки, как самостоятельно отслеживать, всё ли с ними хорошо. Ну и про ультрафиолет тоже расскажу.


Стадии развития меланомы

Зачем нужно разбираться в теме? Затем, что даже если родинка, например, пугающе чёрная или приподнята над кожей — это ещё не значит, что всё плохо. А вот небольшое коричневое пятнышко, у которого края стали неровными (а вы и не замечали, чтобы они и раньше были ровными), — это вполне может быть меланомой, то есть раком кожи.

Ниже будут примеры того, чего бояться не надо, а что, вовремя замеченное, спасёт вас от очень неприятных последствий.
Читать дальше →
Всего голосов 97: ↑94 и ↓3+120
Комментарии68

Россия 2022: как не потерять все (или хотя бы попытаться)

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


Peace, Хабр!


Честно говоря, я долго думал, как бы потактичнее начать. Но ничего не придумал. Поэтому напишу прямо: я хочу, чтоб моя жена и ребенок ни в чем не нуждались. И у меня была уверенность, что могу им дать все, что потребуется: от любви до игрушечной железной дороги.


Сегодня пошел 8-ой день, как от этой уверенности почти ничего не осталось.


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

Читать дальше →
Всего голосов 191: ↑158 и ↓33+163
Комментарии712

Инженерный подход к разработке ПО. От теории к практике

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

Как проверить идеи, архитектуру и алгоритмы без написания кода? Как сформулировать и проверить их свойства? Что такое model-checkers и model-finders? Что делать, когда возможностей тестов недостаточно?


Привет. Меня зовут Васил Дядов, сейчас я работаю программистом в Яндекс.Почте, до этого работал в Intel, ещё раньше разрабатывал RTL-код (register transfer level) на Verilog/VHDL для ASIC/FPGA. Давно увлекаюсь темой надёжности софта и аппаратуры, математикой, инструментами и методами, применяемыми для разработки ПО и логики с гарантированными, заранее определёнными свойствами.


Это вторая статья из цикла (первая статья тут), призванного привлечь внимание разработчиков и менеджеров к инженерному подходу к разработке ПО. В последнее время он незаслуженно обойдён вниманием, несмотря на революционные изменения в подходе и инструментах поддержки.

Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии29
1

Информация

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