Pull to refresh
96
0
Александр @lastmac

Весёлый разработчик

Send message

Записываем PNG без мам, пап и внешних библиотек

Reading time9 min
Views17K

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

Формат изображения PNG известен с 1996 года, а на Хабре опубликовано несколько статей о декодировании этого формата. И ни одной — о кодировании. Я расскажу, как сохранить PNG своими руками на случай, если вам тоже придется это делать. Например, в академических целях.

Под катом вас ждет подробный разбор каждого байта на множестве иллюстраций.
Читать дальше →

А в чем проблема работать с файлами?

Level of difficultyMedium
Reading time53 min
Views37K

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

Меня увлекла тема отказоустойчивости, а конкретно - отказоустойчивой работы с файлами. В этой статье я попытался соединить все полученные знания:

Кто участвует в процессе записи

Ошибки, которые могут произойти

Что от нас зависит, а что нет

И самое главное - как это этого защититься

Читать далее

Вкатываемся в Machine Learning с нуля за ноль рублей: что, где, в какой последовательности изучить

Level of difficultyEasy
Reading time26 min
Views307K

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

Читать далее

Сохранение древовидной структуры в Visual Studio с CMake или создание папок в проекте

Level of difficultyEasy
Reading time7 min
Views6.6K

В этой простенькой статье расскажу о проблемах, с которыми я столкнулся при изучении CMake, и о их решениях. Если кратко, то с помощью функции из репозитория, а также замечанию от пользователя Sazonov, у меня получилось сделать древовидную структуру как в проводнике.

Читать далее

Руководство по CMake для разработчиков C++ библиотек

Reading time18 min
Views108K

Данное руководство позволит читателю составить полную картину того, как организовать сборку C++ библиотек с использованием современных возможностей CMake. Предполагается, что читатель имеет представление о базовых понятиях из мира CMake и динамических/статических C++ библиотек, так как в руководстве они могут не объясняться.

Читать далее

«Скажи мне свой адрес и я скажу как зовут твоего соседа», или как дешево и быстро проверять любой объект недвижимости

Reading time3 min
Views39K

Все, что понадобится — подтвержденная учетная запись на Госуслугах и небольшая плата за сведения

СМИ время от времени сотрясают скандалы связанные с тем, что у того или иного государственного служащего находят дома, квартиры, участки и другую недвижимость. Их сменяют другие скандалы о том, что имя  чиновника в государственных реестрах зашифровывается.

Как удается узнавать собственников недвижимости? Неужели любой может узнать кто владеет тем или иным участком, домом или квартирой?

Да, данные о собственниках недвижимости открыты всем желающим. В этом посте Вы узнаете как получить данные о настоящем и предыдущем собственнике, залогах, арестах на любой объект недвижимости в России, будь то соседние квартиры по лестничной клетке или земельный участок на Камчатке.

Все что Вам нужно для этого - подтвержденная учетная запись на госуслугах. С помощью нее заходим на официальный сайт Росреестра.

Сколько это стоит?

Официальная плата Росреестра от 1 до 5 рублей за одну выписку. Доступ к выпискам оплачивается по УИН на сайте Росреестра пакетами от 100 шт. до 500 000 шт.

Читать далее

Всё, о чём должен знать разработчик Телеграм-ботов

Reading time15 min
Views704K

Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй "как я создал такого-то бота" и туториалов вроде "как создать бота, который будет говорить hello world". При этом многие неочевидные моменты просто нигде не описаны.

Как вообще устроены боты? Как они взаимодействуют с пользователями? Что с их помощью можно реализовать, а что нельзя?

Подробный гайд о том, как работать с ботами — под катом.

Читать далее

Как раздвинуть кости черепа, чтобы легче дышалось: место, где в стоматологии сошлись сразу три новые технологии

Reading time10 min
Views40K
image
Этими винтами хочется попадать в нужное место кости очень точно и под очень правильным углом.

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

Коротко это выглядит так: делаем оптический слепок рта внутриротовым сканером изнутри, накладываем поверх этого данные КТ, загоняем в аналог Архикада для ортодонтов (Dolphin), совмещаем, рассчитываем оптимальное место для имплантов — мини-винтов, печатаем навигационный шаблон из пластика и выпекаем лазером аппарат, потом вставляем одно в другое, потом вкручиваем это в пациента и радуемся. Получается идеальная точность. А это, знаете ли, важно, когда вы решаете взять и раздвинуть кости черепа ребёнку.

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

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

«А про посадку читайте в следующем номере…» — так вот он, этот номер

Reading time20 min
Views51K


Заход на посадку и уход на второй круг — по статистике самые опасные этапы полёта.

Давайте разбираться, как это работает, и пользуясь моментом, посмотрим как устроена электронная система управления современным самолётом.

Но перед тем, как мы начнем, я вынужден обозначить эдакий дисклеймер: я действующий пилот Airbus семейства 320, который является самолетом 4-го поколения (отличительный признак которого — наличие технологии Fly-by-Wire). Соответственно, многие специфические системы и процедуры, описываемые в посте, будут привязаны к данному типу. На других типах (например Boeing 737 Classic/NG/MAX, которые являются самолетами предыдущего, 3-го поколения без технологии Fly-by-Wire) процедуры и логика построения и работы систем может значительно различаться. И да, я не имею отношения к инженерно-авиационной службе и службе ОрВД (организации воздушного движения), поэтому уж простите возможные огрехи в описании матчасти.

Итак, приступим.

Zip-файлы: история, объяснение и реализация

Reading time76 min
Views105K


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

В статье очень подробно объясняется, как работают Zip-файлы и схема сжатия: LZ77-сжатие, алгоритм Хаффмана, алгоритм Deflate и прочее. Вы узнаете историю развития технологии и посмотрите довольно эффективные примеры реализации, написанные с нуля на С. Исходный код лежит тут: hwzip-1.0.zip.
Читать дальше →

Лазерный станок своими руками

Reading time4 min
Views107K


Привет, Хабр! Сегодня расскажу о своем лазерном станке для резки фанеры и гравировки кожи. Цель была как всегда – максимум функционала за минимум денег).
Читать дальше →

22 сайта для программиста, которые помогут заговорить на английском

Reading time3 min
Views133K
Хабр, привет!

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

Приступим!

Учить лексику


Плагины, мобильные приложения и сайты, которые помогут перевести и запомнить незнакомые термины с русского на английский и обратно.

ЛеоПереводчик

С этим плагином удобно переписываться с коллегами. Он автоматически переводит непонятные слова и выражения. Незаменимый инструмент, когда нет времени на доскональные переводы и нужен срочный ответ.
Читать дальше →

10 мифов о бешенстве

Reading time7 min
Views342K
Всем привет.

Чуть более года назад мне пришлось столкнуться с такой неприятной штукой, как подозрение на заражение бешенством. Прочитанная вчера статья о прививках для путешественников напомнила мне о том случае — в особенности отсутствием в ней упоминаний бешенства, хотя это крайне широко распространенный (особенно в России, Азии, Африке и Америке) и очень коварный вирус. К сожалению, связанным с ним рискам далеко не всегда придается должное значение.

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

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

Давайте разберемся, почему такое отношение к этому заболеванию крайне опасно.
Читать дальше →

Солнечный спектр по-китайски

Reading time2 min
Views56K
Год назад я рассказывал о появлении осветительных светодиодов нового поколения, спектр света которых близок к солнечному, за что эти светодиоды получили название SunLike. Тогда они были очень дорогими. Сейчас цена упала и появились китайские аналоги.


Читать дальше →

Внутри Quake: всегда рассматривайте альтернативы

Reading time15 min
Views20K
image

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

Должен признаться: меня достал классический рок. В последний раз я с радостью слушал что-нибудь из Cars или Boston довольно давно, около 20 лет назад. Кроме того, меня никогда особо не привлекали Боб Сигер и Queen, не говоря уже об Элвисе, так что здесь мало что изменилось. Но я понимал, что нечто изменилось, когда мне хотелось переключить радио, услышав Allman Brothers, или Steely Dan, или Pink Floyd, или, господи, прости, Beatles (но только на таких вещах, как «Hello Goodbye» и «I’ll Cry Instead», а не «Ticket to Ride» или «A Day in the Life»; я ещё не зашёл настолько далеко). Долго искать причины этого не пришлось; я слушал одни и те же песни четверть века, и просто от них устал.

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

Мы говорим о десятилетней девочке, росшей на постоянной диете из старых хитов. Ей нравятся мелодии, легко запоминающиеся песни и хорошие певцы. Ничего из этого не найдёшь, слушая станцию про альтернативный рок. Поэтому неудивительно, что когда я включил радио, она первым делом сказала «Фу!»

Но вот что меня удивило: послушав какое-то время, она сказала: «Знаешь, папа, а на это на самом деле интересно».

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

Внутри Quake: определение видимых поверхностей

Reading time17 min
Views35K
image

Ветеран программирования трёхмерной графики Майкл Абраш на примере разработки первого Quake рассказывает о необходимости творческого мышления в программировании.

Много лет назад я работал в теперь уже не существующей компании-производителе видеоадаптеров Video Seven. Там я помогал в разработке клона VGA. Мой коллега Том Уилсон, долгие месяцы круглосуточно работавший над разработкой VGA-чипа Video Seven, стремился сделать VGA как можно более быстрым, и был уверен, что его производительность оптимизирована почти по максимуму. Однако когда Том уже вносил в конструкцию чипа последние штрихи, до нас донеслись слухи, что наш конкурент Paradise достиг ещё большей производительности в своём разрабатываемом клоне, добавив в него FIFO.

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

У Тома не было ни логических элементов, ни достаточно времени на реализацию полного FIFO, но ему удалось реализовать FIFO глубиной в одну операцию, что позволяло процессору обгонять VGA-чип на одну операцию записи. Том не был уверен, что это даст хорошие результаты, но это было единственное, что он смог сделать, поэтому он реализовал эту систему и передал чип в производство.
Читать дальше →

Заметки фитохимика. Зеленый банан, или Не забудь покормить микробиоту

Reading time20 min
Views103K

Как то уж так повелось со времен голодной студенческой юности, что я чаще на остатки денег покупал себе бананы, а не чипсы или гречку. Причин этому наверное может быть много, от "в Беларуси бананы дешевле картошки", до "банан как и шоколад способствует мозговой активности". Но факт остается фактом. Если хурма фрукт сезонный, то банан — это такая штука которая сопровождает нас по жизни постоянно. Как не отдать долг и не черкнуть заметку. Кроме того, про проведенному мной среди знакомых мини-опросу, одним из основных фруктов, которые с вероятностью 99% будут практически на каждом Новогоднем столе, также является банан. А ведь правильный банан еще нужно найти...


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



Ну а за ответом — традиционно, под кат.

Читать дальше →

Топ-10 фильмов про ИТ

Reading time7 min
Views172K
Привет, Хабр!

Летом в нашем ланитовском блоге мы делали подборку сериалов про ИТ (и хакеров), а теперь в преддверии Нового года пришло время полного метра. Такие «Топ-10 фильмов про ИТ» появляются примерно раз в год, и список там примерно один и тот же: «Хакеры» с Джоли, «Пароль «Рыба-меч» и «Матрица».

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

Так вот, про подборку. Мы решили предложить вам  фильмы посвежее. Под катом нет Джоли и знаменитой сцены из «Пароль „Рыба-меч“», но есть фильмы про ИТ, суперкомпьютеры, и информационную безопасность, большинство из которых выпущены в 2010–2018 годах.

Кадр из фильма «Апгрейд»

Что происходит при создании контейнера Flexbox?

Reading time9 min
Views26K

Это перевод статьи Rachel Andrew, являющейся одним из разработчиков спецификаций CSS.


В короткой серии статей я собираюсь потратить некоторое время на детальную распаковку Flexbox — точно так же, как я делала в прошлом с grid. Мы рассмотрим, для чего был разработан Flexbox, что он действительно делает хорошо, а когда мы не можем выбрать его в качестве способа компоновки.


В этой статье мы подробно рассмотрим, что на самом деле происходит при добавлении display: flex в вашу таблицу стилей.

На Highload++ 2018 полный вперед

Reading time9 min
Views4.9K
Highload++ — знаковое событие в мире IT и своеобразный ежегодный чекпойнт для любого разработчика высоконагруженных систем. Это самая большая и крутая профессиональная конференция для разработчиков в России. На ней много всего: участников, событий, докладов, партнеров и экспертов. В 2017 году Highload++ собрал 2600 человек и, конечно, это не предел. Это мегасобытие, на котором просто нужно быть, в 2018 году пройдет в Москве 8 и 9 ноября.



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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity