Как стать автором
Обновить
2
0
Игорь Шмель @ishmel

Golang разработчик

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

Книга «Продвинутые алгоритмы и структуры данных»

Время на прочтение7 мин
Количество просмотров31K
image Привет, Хаброжители!

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

Вы постоянно сталкиваетесь с бесчисленными проблемами программирования, которые поначалу кажутся запутанными, трудными или нерешаемыми. Не отчаивайтесь! Многие из “новых” проблем уже имеют проверенные временем решения. Эффективные подходы к решению широкого спектра сложных задач кодирования легко адаптировать и применять в собственных приложениях, а при необходимости создавать собственные структуры данных под конкретную задачу. Сбалансированное сочетание классических, продвинутых и новых алгоритмов обновит ваш инструментарий программирования, добавив в него новые перспективы и практические методы.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+12
Комментарии3

Go. О покрытии кода интеграционными тестами и флаге -cover

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

Инструменты покрытия кода помогают понять, какая часть кодовой базы выполняется (или, как еще говорят, покрывается) при выполнении данного набора тестов. Какое-то время Go поддерживал измерение покрытия кода на уровне пакета, введенное в Go 1.2, она включалась флагом команды go test -cover.


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


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


Двоичные файлы интеграционных тестов создаются командой go build, а не go test, поэтому инструментарий Go до сих пор не предоставлял простого способа сбора профиля покрытия этих тестов.


С версии Go 1.20 программы с инструментированием покрытия можно создавать командой go build -cover, а затем, чтобы расширить область покрытия, передавать эти инструментированные двоичные файлы в интеграционный тест.


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

Читать дальше →
Всего голосов 4: ↑1 и ↓3-2
Комментарии0

10 удивительно зрелищных простейших клеточных автоматов

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

Самое простое представление двумерного клеточного автомата основано на двух характеристиках: клетки имеют всего 2 состояния; правила изменения состояния зависят только от количества живых соседей из окрестности Мура первого порядка (8 окружающих).

Такая категория КА называется «Life-like», по названию самого известного автомата с такими характеристиками – «Conway's Game of Life». Игра «Жизнь» Конвея работает на правиле B3/S23, т.е. для рождения клетки требуется ровно 3 живых соседа, для выживания – 2 или 3. Во всех других случаях клетка умирает (или же остаётся пустой).

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

Сегодня взглянем на самых интересных представителей.

?
Всего голосов 158: ↑158 и ↓0+158
Комментарии24

Как проводить Code Review по версии Google

Время на прочтение5 мин
Количество просмотров128K
Вопросы код-ревью меня интересуют очень давно. Много раз возникали те или иные проблемы то с качеством кода, то с климатом в коллективе. И действительно, code review — это если не единственное, то одно из самых главных мест для возникновения конфликтов в коллективе разработчиков.

И вот недавно при подготовке к очередному выпуску подкаста "Цинковый прод" я узнаю, что Google опубликовал свод правил по проведению Code Review, битком набитый ценными мыслями. Весь материал довольно объемный и не влезет в одну статью, поэтому я постараюсь выделить наиболее интересные (мне) мысли.


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

Читать дальше →
Всего голосов 154: ↑147 и ↓7+140
Комментарии134

Как выстроить процессы и перестать издеваться над командой

Время на прочтение10 мин
Количество просмотров56K
Всем привет! Сегодня хотел поговорить о процессах разработки. По мере роста компании не только развивается сам бизнес, но и копятся проблемы внутри, в частности в процессе разработки. Часто их пытаются решить внедрением каких-то практик и новомодных методологий. Увы, это насильное перестраивание процесса по книжкам и тренингам нередко это приводит к ещё большим проблемам — издевательству над людьми.

Недавно я выступал на конференции Saint TeamLead Conf 2019, в докладе я рассказал о том, как смог найти ряд проблем в рабочем процессе и потом постепенно поборол их. Здесь я постараюсь описать наиболее ценные практики, которые мне помогли не только наладить рабочий процесс, но и перестать издеваться над разработчиками. У сотрудников изменилось отношение к компании в целом и рабочему процессу.
Всего голосов 48: ↑46 и ↓2+44
Комментарии34

Ssh-chat

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

Привет, Хабр. Console chat отличная вещь, но для фронтендеров, а что если вы хотите такой же, но для бэкэнда. Если да, то эта статья для вас. Но какой инструмент часто используют в бэкенде? Правильно ssh, так что представляю sshchat.

Читать дальше →
Всего голосов 25: ↑21 и ↓4+17
Комментарии41

Темный день для Vue.js

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

Сегодня я был изумлен тем, как обычно позитивное и дружелюбное сообщество Vue.js скатилось в печальное противостояние. Две недели назад создатель Vue Эван Ю опубликовал предложение (RFC) с новым функциональным API для компонентов в грядущем Vue 3.0. Сегодня критическое обсуждение на Reddit и аналогичные комментарии на Hacker News вызвали наплыв разработчиков в изначальный RFC с возмущениями, порой даже чересчур резкими.

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

Камеры глубины — тихая революция (когда роботы будут видеть) Часть 2

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


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

Как говорит Стив Бланк (по другому поводу, впрочем): «Хотите успеха — выходите из здания». Ниже речь пойдет про камеры глубины, работающие вне помещений. Сегодня эту тему сильно двигают автономные автомобили, но, как мы увидим, не только.


Источник: Innoviz Envisions Mass Produced Self-Driving Cars With Solid State LiDAR

Итак, камеры глубины, т.е. устройства снимающие видео, в каждом пикселе которого расстояние до объекта сцены, работающие при солнечном свете!

Кому интересно — добро пожаловать под кат!
Читать дальше →
Всего голосов 87: ↑87 и ↓0+87
Комментарии59

Ещё лучшая ZIP-бомба

Время на прочтение25 мин
Количество просмотров127K
В статье показано, как создать нерекурсивную zip-бомбу, которая обеспечивает высокую степень сжатия путём перекрытия файлов внутри zip-контейнера. «Нерекурсивная» означает, что она не зависит от рекурсивной распаковки декомпрессорами файлов, вложенных в zip-архивы: здесь всего один раунд. Выходной размер увеличивается квадратично от входного, достигая степени сжатия более 28 миллионов (10 МБ → 281 ТБ) в пределах формата zip. Ещё большее расширение возможно с помощью 64-разрядных расширений. Конструкция использует только наиболее распространённый алгоритм сжатия DEFLATE и совместима с большинством парсеров zip.

  • zbsm.zip 42 kB → 5.5 GB
  • zblg.zip 10 MB → 281 TB
  • zbxl.zip 46 MB → 4.5 PB (Zip64, менее совместима с парсерами)

Исходный код:
git clone https://www.bamsoftware.com/git/zipbomb.git
zipbomb-20190702.zip

Данные и исходники иллюстраций:
git clone https://www.bamsoftware.com/git/zipbomb-paper.git
Читать дальше →
Всего голосов 176: ↑176 и ↓0+176
Комментарии53

Инженер Amazon создал блокирующее устройство с ИИ, которое не пускает в дом кота с уличной добычей

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

Инженер Amazon Бен Хэмм разработал умный блокиратор, который не дает его коту по кличке Метрик приносить внутрь дома пойманных охотничьими лапками и зубками и по факту уже мертвых птиц и крыс.
Читать дальше →
Всего голосов 84: ↑81 и ↓3+78
Комментарии171

15 когнитивных искажений

Время на прочтение9 мин
Количество просмотров180K
Люди сталкиваются с большим объёмом информации, часть из которой достоверна, а часть освещает интересующую область односторонне, а иногда и сознательно искажённо.

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



Начнём с того, что люди не всегда мыслят рационально. Это данность, которая обусловлена принципами работы нашего интеллекта, выработанными в процессе эволюции. Условно, представим разум, разделённый на две Системы. Устройство разума не так однозначно, но описанное упрощение позволит понять причины искажений. Первая система генерирует решения и гипотезы быстро «если коснёмся горячего предмета, то отдёрнем руку». Вторая, принимает решения путём логических рассуждений. Первая Система генерирует гипотезы, а вторая принимает их или отвергает. Такой способ мышления медленный и энергозатратный. Логическое рассуждение используется людьми реже и требует больших усилий. Это причина большинства когнитивных искажений.

Так, галочка «по умолчанию согласен» позволила увеличить количество согласных на донорство до 86% в Швеции, тогда как в Дании, где при получении прав нужно самостоятельно ставить согласие, т. е. принимать осознанный выбор, количество согласных на донорство 4%.
Читать дальше →
Всего голосов 63: ↑62 и ↓1+61
Комментарии114

Уязвимости вашего приложения

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

Актуальны ли ещё угрозы XSS? Прошло около 20 лет с тех пор, как Cross Site Scripting (XSS) появился как вид атаки. С тех пор мы получили богатый опыт и знания, защита наших сайтов стала намного сложнее, а многочисленные фреймворки были призваны оберегать нас от ошибок. Но последние данные показывают совсем другую картину: в первых кварталах 2017 года количество сообщений об XSS-атаках и количество найденных уязвимостей выросло в несколько раз.


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


Прототипом статьи является доклад на конференции HolyJS 2017 Moscow. Алексей — фронтенд-тимлид/архитектор в компании EPAM Systems и один из лидеров сообщества FrontSpot в Минске. Основные области профессиональных интересов: архитектура и инфраструктура приложений, управление разработкой.


В этом тексте огромное количество картинок со слайдов. Осторожно, трафик!

Читать дальше →
Всего голосов 48: ↑47 и ↓1+46
Комментарии29

Нащупает ли дно российская космонавтика в 2018?

Время на прочтение4 мин
Количество просмотров40K
Прошедший год стал праздником на улице критиков Роскосмоса — частная компания SpaceX выполнила сравнимое с государственным космическим агентством количество пусков (точные цифры будут вызывать споры из-за принадлежности «Зенита» и пусков с Куру). При этом все пуски SpaceX были коммерческими, и компания на них зарабатывала деньги, а из российских пусков только в четырех у основной полезной нагрузки был коммерческий заказчик. Конечно, нельзя напрямую сравнивать частную компанию и государственное агентство, но еще совсем недавно Россия не только лидировала по количеству запусков, но и серьезную их долю занимали коммерческие. В таких условиях самым важным становится вопрос — продолжится ли падение дальше, или же мы увидим в 2018 году признаки улучшения ситуации?


Фото: Роскосмос
Всего голосов 76: ↑65 и ↓11+54
Комментарии494

Физические итоги 2017 года

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


Привет, Гиктаймс! Настало время подвести научные итоги 2017 года вместе с Американским физическим сообществом. На этот раз редакция APS постаралась на славу и подготовила крайне занимательную подборку новейших достижений фундаментальной науки. Сегодня поговорим о них поподробнее.

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

Кератопластика – последний вариант «починить» глаза, если всё плохо (и кое-что про современные методы)

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

Нейлон 10/0 (чтобы шить роговицу)

Для операции «последнего шанса» или пересадки роговицы нужны донорские ткани. Конкретно нас интересует ткань толщиной 500–600 микрон для сквозной кератопластики. Дальше с этой плёнкой нужно работать руками, шить тонкой нейлоновой нитью. Потом, когда роговица срастётся, снимать шов. Никаких биоразлагаемых материалов — их продукты распада начнут лизироваться и могут вызывать воспаление, что исключит положительный результат операции. Более того, трансплантат рекомендуется прошить по периметру дважды — это повышает шансы его правильной и равномерной фиксации. Второй слой нейлона чаще всего вообще не снимается, потому что пока он не мешает — не трогаем.

Но давайте начнём с самого начала. Конкретно — с ситуаций, когда человеку может потребоваться эта непростая для России, но совершенно привычная в Германии операция. Она бывает трёх видов:

  • Сквозная, то есть удаление всей роговицы пациента, например, диаметром от 7 до 8,5 мм и пришивание новой.
  • DALK, то есть пересадка роговичной ткани за исключением десцеметовой мембраны и эндотелия.
  • DMEK, то есть «установка» только слоя десцеметовой мембраны и эндотелиальных клеток вместо такого же слоя у пациента.

Кератопластика в Германии — операция очень распространенная. В нашей клинике в Марбурге я и мой заведующий отделением за прошлый год сделали 210 пересадок, за год до этого — 236 пересадок. С марта этого года в московской клинике SMILE EYES мы начали пересаживать роговичную ткань — и послойные, и сквозные пересадки.
Всего голосов 46: ↑45 и ↓1+44
Комментарии16

Зрение ИТ-специалиста: что нужно знать лично вам

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


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

— Я решил остановиться на очках, но боюсь, что мне в лицо откроется подушка автомобиля, и они станут контактными линзами. Что делать?
По моему хирургическому опыту, современные подушки безопасности не травмируют очкариков. Глаза и лицо повреждаются осколками лобового стекла обычно. Если вы беспокоитесь о сохранности очков, то подумайте про современные, с поликарбонатными линзами, они невероятно прочные, на краш-тестах по ним машина ездит.

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

— Могу ли я очками испортить зрение?
Если вы видите плохо и не надеваете очки, вы теряете часть информации об окружающем мире и при этом создаете дополнительную нагрузку на зрительный аппарат. Есть проблема — нужна оптическая коррекция. А испортить глаза очками можно как один из наших коллег из клиники в Марбурге – он уснул в стеклянных очках за компьютером дома, упал лицом на клавиатуру, и осколок стекла вошёл в хрусталик. Сначала заменили хрусталик, потом через год понадобилась трансплантация.
Читать дальше →
Всего голосов 64: ↑63 и ↓1+62
Комментарии159

Отслойка сетчатки — что о ней важно знать

Время на прочтение11 мин
Количество просмотров231K
Отслойка сетчатки является грозным глазным заболеванием, которое без хирургического лечения чаще всего приводит к полной потере зрения.

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

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

Отслойка сетчатки глаза

Своевременность операции дает шанс на сохранение зрения, в Германии по стандарту операция должна быть выполнена в течение 24 часов после постановки диагноза. В России таких стандартов нет. Но каждому пациенту я говорю, что отслойка сетчатки «как свежезамороженная рыба» – через пару дней уже «не первой свежести».
Всего голосов 80: ↑79 и ↓1+78
Комментарии58

Нотной грамоте учат неправильно*

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

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


Предполагается, что студент должен страдать самостоятельно освоить ноты, путем многократного повторения. И вообще, если «ниасилил», значит у тебя нет Таланта — иди мести двор.


Представьте что было бы, если бы обычной грамоте учили так же. Но мы, почему-то, в большинстве своем читать и писать таки научились.


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


* Дисклеймер

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


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


Я не утверждаю, что именно я первым нашел этот способ и вполне допускаю, что он был известен и ранее. Да и странно было бы, если за пятьсот лет никто этого не заметил. Вот только в интернетах об этом ничего не слышно, а все известные мне музыканты повторяют одни и те же малоэффективные мантры.


Эффективность я оценивал исключительно на себе, поскольку сей субъект оказался самым доступным для исследования.

Читать дальше →
Всего голосов 124: ↑123 и ↓1+122
Комментарии212

Изготовление современного традиционного лука

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

Попробуем описать такую сферу деятельности, как традиционное лукостроение. Рассмотрим необходимые знания, навыки, технологии и инструменты необходимые для создания луков на уровне «продвинутый любитель».
Читать дальше →
Всего голосов 51: ↑49 и ↓2+47
Комментарии142

Как прочитать большой файл средствами PHP (не грохнув при этом сервак)

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

Перевод статьи Christopher Pitt.


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


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


Fragmented terrain


Последняя проблема и будет рассмотрена в этом уроке.

Читать дальше →
Всего голосов 64: ↑59 и ↓5+54
Комментарии47
1

Информация

В рейтинге
Не участвует
Откуда
Киров (Кировская обл.), Кировская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer, Fullstack Developer
Lead
От 350 ₽
Golang
Git
Linux
PostgreSQL
Docker
OOP
RESTful API
gRPC
Apache Kafka
DDD