Как работают айтишники по версии стоковых фото

Содержание

Прикольные поздравления и картинки с Днем программиста

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

*******

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

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

*******

Ты пишешь программы. Компьютерный мир Тебе не оставил загадок Пускай в твою честь затевается пир, Пускай каждый день будет сладок! Желаем шедевры тебе создавать, Твой разум рассчитан на это, Любовь отыскать, а потом — не терять. Удачи, веселья и света!

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

*******

Желаю тебе в программиста день, Пойти прогуляться и отпустить лень, Мышь отдохнет от ладошки могучей, Кресло, подышит пружиной скрипучей. Ты программист, у компа зависаешь, Все алгоритмы в задачах решаешь, Но, на свой праздник, чуть-чуть отдохни, И на реальность серьезно взгляни.

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

Бьёт по клавишам «маэстро» Непонятные всем гаммы. Ты играешь не с оркестром, А с компьютерной программой! От души в День программиста Мы тебе желаем счастья! Будь по жизни оптимистом, Наш непревзойдённый мастер!

С Днем программиста: прикольные картинки и поздравления

Программист – особый парень, Кодов, цифр властелин. От души тебе желаем Не остался чтоб один. Ты найди себе невесту, Программисткой будет пусть. Чтоб работали вы вместе, И уйдут печаль и грусть!

Брось клавиатуру, отойди от мышки, Выключи компьютер и попрячь сидишки. Улыбнись, товарищ, улыбнись скорее! Твой сегодня праздник! Ну-ка пободрее!

Через две ступени вниз Я бегу, как на пожар: Там сидит мой программист, У него особый дар, Все как в сказке — он «мудрец», Ждет с проблемою гонца, Ну а я и есть «глупец», Что кричит «Беда! беда!». А сегодня поздравляю, Пожелаю, что могу, Про проблемы забываю И с улыбкой руку жму…

Твоя стихия — мир компьютеров бескрайний, Бальзам на душу для тебя — создать свой код, Девчонки для тебя — твои программы, Вся жизнь по алгоритму лишь идет. Тебя сегодня, программист наш, поздравляем, Желаем, чтоб своих друзей не забывал, Твой гибкий ум, твои таланты прославляем, Еще желаем, чтобы чаще отдыхал.

Я не знаю прикольней коллеги, Фантазер, что порою боюсь, То пришлет моё фото в телеге, И, как будто бы, я в ней качусь… Программист наш — чудак и затейник, Мы всегда ждем со страхом приколов, То «оденет» завхозу сотейник, То бухгалтера «выставит» голым… Не поздравить его невозможно, Хором мы пожелаем добра, Мимо я прохожу осторожно, А заметить, то всё — знай — беда…

Многоликий программист, Лидер интернета, Вирусолог, «виндаист», Праздник твой с рассвета! Пусть не будет глюков в жизни, Как по маслу все идет — Деньги, новые проекты, Отдых в Ницце без забот!

Ты — настоящий программист, Компьютер — твой слуга. Так будь всегда, как оптимист — Успех падет к ногам! Мы очень ценим твой талант, Желаем не грустить. Ты — наш компьютерный гигант, Тебя мы будем чтить!

Анализ вредоносного кода Skeleton Key

Перевод

Перевод статьи подготовлен специально для студентов курса «Реверс-инжиниринг».

Краткое содержание

Исследователи Dell SecureWorks Counter Threat Unit (CTU) обнаружили вредоносное ПО, обходящее проверку подлинности в системах Active Directory (AD), в которых реализована однофакторная (только пароль) аутентификация. Злоумышленники могут использовать пароль по своему выбору для аутентификации в качестве любого пользователя. Эта вредоносная программа получила название «Skeleton Key» (универсальный ключ).
Исследователи CTU обнаружили Skeleton Key в клиентской сети, которая использовала однофакторную аутентификацию для доступа к веб-почте и VPN, предоставляя злоумышленникам беспрепятственный доступ к службам удаленного доступа. Skeleton Key развертывается как патч в памяти на контроллерах домена AD жертвы, чтобы позволить злоумышленнику аутентифицироваться в качестве любого пользователя, в то время как легитимные пользователи продолжают аутентификацию как обычно. Обход аутентификации Skeleton Key также позволяет злоумышленникам с физическим доступом залогиниться и разблокировать системы, которые аутентифицируют пользователей на скомпрометированных контроллерах домена AD.

Ошибка 6. Неправильный порядок обхода по пикселям изображения, приводящий к замедлению работы программы

Память в компьютере одномерна. Двумерные изображения хранятся в памяти в виде одномерных массивов. Обычно они записываются построчно: сначала идёт 0-я строка, затем 1-я и т.д.
Последовательный доступ к памяти осуществляется быстрее, чем произвольный. Это связано с работой кэша процессора, который помещает данные из памяти в кэш большими блоками, например, по 64 байта для современных процессоров. В этот блок попадают сразу несколько соседних по горизонтали пикселей. Значит, при обращении к последующим пикселям в той же строке скорость доступа будет выше, чем к последующим пикселям в столбце.

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

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

Зачем мы ездим на научные конференции

Привет, это Smart Engines. Десант из 28 разработчиков систем распознавания на основе искусственного интеллекта только что вернулся из Амстердама, где мы принимали участие в международной научной конференции по компьютерному зрению ICMV. В статье мы постараемся объяснить, почему мы так много времени уделяем науке и ездим на научные конференции.Сегодня в мире развития науки и высоких технологий произошла катастрофическая подмена понятий: за науку выдается то, что наукой не является ни в каком приближении, учеными называют программистов и инженеров, наукой называют решение простейших инженерных задач. В информационном пространстве роль фундаментальной науки в развитии технологий явно занижена. Многие забывают, что сенсорный экран айфона — это не сам по себе сенсорный экран айфона, а воплощение в жизнь идей фундаментальных исследований полупроводниковых гетероструктур нашего соотечественника нобелевского лауреата Ж.И. Алферова. Карты Google (или Яндекcа) — это не просто карты в мобильнике, а воплощение фундаментальных исследований в области вычислительной геометрии. И кстати фильм “Аватар” — это тоже на 99% вычислительная геометрия.

Как за 14 дней мы придумали и запустили благотворительный сервис Русская Digital-Стена 2020

Однажды вечером, заработавшись в студии допоздна, мы осознали, что до Нового года осталось всего 30 дней. Грядущий 2020 год обещает быть очень символичным — минуло 20 лет жизни в новом тысячелетии. Это были важные и насыщенные годы: у нас появился Wi-Fi, айфоны, соцсети и еще много чего цифрового. В это время развивался русский Digital, создавались новые компании, которые перевернули рынок it-технологий в России. И нам захотелось как-то показать, кто эти новые герои — так родился проект «Русская Digital-Стена 2020». В этой статье мы рассказываем о процессе его создания от идеи до реализации.

Компьютерное зрение всем, даром


20 лет назад, в 1999 году, компания Kyocera выпустила первый мобильный телефон с цифровой камерой – Visual Phone VP-210. С тех пор, благодаря невероятно большому и растущему рынку мобильных устройств связи, ПЗС-матрицы цифровых камер совершили невероятный скачок по всем параметрам. Чувствительность, диапазон, размер, энергопотребление, но что ещё важнее – цена.
В наших реалиях модуль камеры, вообще-то весьма технологически сложное устройство, может стоить всего несколько долларов. Это кардинально меняет взгляд на многие процессы и задачи. Ранее сложной задачей было заполучить камеру, технически удовлетворяющую минимальным требованиям. Пройдя такое испытание, решение вопросов обработки изображений казалось лишь приятными хлопотами. Теперь же вопрос софта, который будет обрабатывать информацию с камеры, стоит более остро. Планка физического и экономического доступа к технологии упала так низко, что коснулась границы компетентности пользователя.
Давайте на реальных примерах рассмотрим, насколько сложно (или просто) сейчас работать с изображениями и какие задачи под силу айтишнику иной специализации.

Кто такой фронтенд-разработчик

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

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

story копипаста программист детство

~2002 год. Мне ~12 лет. Батя покупает первый компьютер.  

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

Далее, коротко события нескольких лет:- Я, чувствуя несправедливость, начал играть втяхаря.

— Батя, застав с поличным, забрал кабель от системника на работу.

— Я взял кабель у друга.- Батя забрал кабель от монитора.- Я сделал второй кабель из шнура для старого магнитофона.

— Батя, поставил пароль на windows.

— Я научился обходить пароль через безопасный режим и учетку администратора.- Батя, посмотрев журнал системных событий windows, поставил пароль на bios.

— Я, прочитав мануал материнской платы, сбросил его с помощью джампера.

— Батя дал мне п*зды.- Я не отчаивался. Использовав социальную инженерию и кличку нашей кошки, я подобрал пароль.- Батя, заподозрив что-то не ладное в пустом журнале событий, который я постоянно очищал, сменил пароль на более надежный.- Я приуныл. — Батя купил цифровую камеру.- Я, пойдя на риск и приклеив включенную камеру к потолку, снял как вводится пароль.

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

Слишком тяжело мне дался этот компьютер чтобы разбазаривать его возможности на игрушки, наверно тогда подумал я =D

Развернуть

Настройка окружения в CLI. WSL Windows Terminal

Tutorial

Есть люди, которые большинство рабочего времени проводят в консоли, есть те, кто пользуются терминалом при необходимости, запуская что-то по инструкциям. Но я думаю, что каждый айтишник, будь он разработчиком, сисадмином, сетевым инженером, или даже senior yaml developer`ом, пользуется command line interface. Далеко не все задумываются об улучшении рабочего окружения в CLI и повышении продуктивности работы в терминале. Мне хотелось бы поделиться своим опытом настройки окружения для работы с Linux из Windows.
Из статьи вы узнаете, какими средствами и каким терминалом актуально пользоваться в настоящее время для запуска Linux приложений в Windows 10. Речь пойдёт о WSL 2 и Windows Terminal, набирающим всё большую популярность у пользователей, которым для работы нужен Linux

Так как большинство use-case`ов у меня связаны с удалённым подключением через SSH, большая часть информации будет релевантно для случаев удалённых подключений, со всеми особенностями, связанными с этим (пробросом ssh ключей через ssh agent, пробросом X-сервера, управлением подключениями etс).Внимание! Под катом много картинок и ужатого, но местами объёмного, gif`а, рекомендуется открывать статью при наличии соответствующего доступа к интернету. Заходите под кат, если вам актуален запуск Linux утилит под Windows, оптимизация работы в окружении CLI, или вы просто любите технические тексты и цветные терминалы

Текст я постарался скрасить скринкастами и скриншотами терминала, чтобы было не скучно.

Ставьте нереальные задачи

Значит, в бой. На столе рисовать нельзя, иначе искажается перспектива, и рисовать пришлось прямо на стенке, на пришпиленном к ней листе бумаги. Жутко неудобно, скажу я вам. Я обозначила очертания холмов и причудливо завернувшиеся флаги на мачте, как смогла нарисовала две фигурки. Но в итальянских просторах оказалось еще множество оттенков и деталей. Оставалось уже совсем немного времени, а я все сравнивала, правильно ли перенесла их на бумагу (как всякий корректор, привыкший строго проверять факты). Прозрение наступило внезапно, когда я вдруг поняла, что моя картина не должна повторять в точности то, что изображено на снимке. Она вообще может быть какой угодно. Я радостно сообщила всем: «Рерих тоже не рисовал деталей!», взяла толстую кисть «не того» размера, купленную накануне в магазине «Скрепка», и провела сочную, густую синюю линию горизонта. Хотела бы я сказать, что окунулась снова в детство, но рисование в нашей школе отсутствовало по причине отсутствия учителя. Это был восторг малыша от того, что он оставляет след: «Я есть!» — радость от чистоты цвета и оттого, что «поймал» на бумагу эти летящие линии и простор.

За оставшиеся десять минут картина была готова. Я как будто оказалась сама там, внутри. И вдруг вспомнила, что снимок-то мой на самом деле был неудачным! Диафрагма меня тогда подвела и, пока я доставала камеру, успели уйти люди, прийти другие, а ветер сменился полным штилем. Я совершенно об этом забыла. Но если взять краски, можно вернуть тот момент таким, каким он был: не упавшие безвольно, а огромные, в полнеба, флаги маленького государства, которое не позволило себя завоевать даже Наполеону, но и не ввязывалось в войну ни с кем.

Как Kafka стала былью

Привет, Хабр!

Я работаю в команде Tinkoff, которая занимается разработкой собственного центра нотификаций. По большей части я разрабатываю на Java с использованием Spring boot и решаю разные технические проблемы, возникающие в проекте.

Большинство наших микросервисов асинхронно взаимодействуют друг с другом через брокер сообщений. Ранее в качестве брокера мы использовали IBM MQ, который перестал справляться с нагрузкой, но при этом обладал высокими гарантиями доставки.

В качестве замены нам предложили Apache Kafka, которая обладает высоким потенциалом масштабирования, но, к сожалению, требует практически индивидуального подхода к конфигурированию для разных сценариев. Кроме того, механизм at least once delivery, работающий в Kafka по умолчанию, не позволял поддерживать необходимый уровень консистентности из коробки. Далее я поделюсь нашим опытом конфигурации Kafka, в частности расскажу, как настроить и жить с exactly once delivery.

Какие языки программирования и технологии нужно изучать для 3D

Здравствуйте Юрий.

Ответьте пожалуйста на такой вопрос. Я увлекаюсь 3d графикой некоторое время, и со школы мечтаю работать в мультипликационной студии. Но т.к. дизайнерские (художественные) способности развиты не были, учусь на программиста (2 курс). Т.к. после третьего надо уже идти работать, у меня возникают противоречия, в каком направлении продолжать развитие.

Программирование перспективно и позволяет хорошо зарабатывать, но не так интересно. И пойдя по этому пути, я заберу у себя время на развитие дизайнерских способностей и навыков работы с 3d.

Поэтому я думаю над тем, что бы использовать навыки программирования в 3d и найти работу которая объединяет в себе 2 эти специальности. Что бы оставаясь программистом, работать и с 3d графикой. Тогда, разобравшись в себе, я смогу либо остаться в этой роли, либо перейти в одну из этих специальностей уже в чистом виде.

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

Например сетап персонажей. Стоит ли углубляться в эту область? И на сколько важную роль играет в нём программирование?

Теперь мой ответ.

Совмещать программирование и 3D можно. Причём в разном процентном соотношении.

Существует несколько вариантов такого совмещения:

  • Создание своих или чужих 3D игр на готовых игровых движках. Вот, к примеру, я с другом-программистом (Сергеем) делаю игру. Чтобы сделать игру на движке Unity понадобится знание языка Javascript, .NET (C#), баз данных, облачных технологий (Microsoft Azure) — это то, что использует Сергей.
  • Разработка игрового движка с нуля.
  • Создание сайтов для просмотра и редактирования 3D контента прямо в браузере онлайн (HTML5, WebGL).
  • Написание плагинов/рендереров для 3ds Max, Maya, Houdini и других 3D-пакетов. Здесь нужно знать язык Python или С++. А начать можно с написания скриптов на MAXScript (для 3ds Max) или MEL (для Maya). Скрипты обычно решают повседневные проблемы/задачи 3D-шников, которые они повторяют по много раз. К примеру, перед тем как нажать кнопку Render (даже если он тестовый), нужно выбрать нужную папку, создать там новую папку, придумать имя для файла, указать расширение изображения, выбрать настройки для сохранения картинки и только потом нажать Рендер. Это всё можно автоматизировать, а значит сэкономить тридешнику уйму времени.
  • Устроится в R-n-D отдел какой-то анимационной студии. Это почти то же самое, что и пункт выше, но здесь вы будете писать инструменты, которые никто, кроме вашей команды, не сможет использовать
  • Выбрать практически любую классическую профессию 3D- или VFX-художника. В любом таком деле вы найдёте применение вашим навыкам программиста.

Распишу последний пункт поподробней.

  • Вы захотели стать моделером. У моделера есть куча повторяющихся операций, которые он выполняет часто, а значит их можно автоматизировать с помощью скриптов.
  • Вы мечтаете сетапить персонажей. Где-то 10-15% времени вам придётся что-то программировать и как-то улучшать даже существующий риг (не говоря уже о создании рига с нуля).
  • Вы желаете устроится в отдел рендера. Здесь также пишут код — пишут свои шейдера.
  • Вы хотите стать лайтером? Одел лайтинга пишет свои тулзы для освещения.
  • Вам сильно хочется что-то взрывать, тогда вам дорога в отдел динамики. Тут пишут свои инструменты для управления динамикой, симуляцией одежды, волос, частиц (дыма, огня, жидкостей) и так далее.
  • Казалось бы только художники по текстурам не нуждаются в навыках программирования, но и здесь всё не так просто. Посмотрите, к примеру, на инновационный пакет Substance Painter, где текстуры рисуются не кисточкой, а эффектами погоды, которые накодил какой-то программист.

Может вы еще какие примеры приведёте, где можно совмещать работу программиста и тридешника?

А если не знаете с чего начать изучать 3D, то вам точно сюда.

Подпишитесь на обновление блога3 причины для этого

P.S. Программист на заглавной картинке нарисован в Photoshop художником Bruno Hamzagic de Carvalho. .

О проблемах транслятора Python и переосмысление языка

Из песочницы

— Сколько нужно архитекторов, чтобы реализовать язык программирования?
— Сто. Один будет писать реализацию, а 99 — говорить, что могут сделать лучше.

В этой статье я хочу затронуть не столько сам язык, сколько детали реализации CPython и его стандартной библиотеки, которые гарантируют, что у вас не будет никаких простых способов сделать приложение на питоне ни многопоточным, ни быстрым, ни легко поддерживаемым, и почему было создано столько альтернативных реализаций (PyPy, Cython, Jython, IronPython, Python for .NET, Parakeet, Nuitka, Stackless, Unladen Swallow), половина из которых уже умерла, и вряд мало кто понял, почему у них не было шансов победить в борьбе за выживание против других языков. Да, есть GDScript, который призван решить проблемы с производительность, есть Nim, который призван решить вообще все проблемы, не обязывая при этом пользователя чрезмерно явно объявлять типы. Однако, учитывая огромную инертность индустрии, я осознаю, что в ближайшие 10 лет новые языки точно не займут значимой ниши. Однако, я верю в то, что питон возможно сделать эффективным, изменив стиль написания кода, по большей части сохранив оригинальный синтаксис, и полностью сохраняя возможность взаимодействия кода нового и старого стиля. Я буду концентрироваться на проблемах CPython, а не ближайшего его конкурента, PyPy, поскольку PyPy на самом деле прыгает вокруг всё тех же проблем CPython.

C Russia: как это было

Если в начале пьесы вы говорите, что на стене висит код на С++, то к концу он должен непременно выстрелить вам в ногу.
Бьярне Строуструп

С 31-го октября по 1-е ноября в Петербурге прошла конференция C++ Russia Piter – одна из масштабных конференций по программированию в России, организуемая JUG Ru Group. Среди приглашённых спикеров – члены комитета по стандартизации C++, докладчики с CppCon, авторы книг издательства O’Reilly, а также мейнтейнеры таких проектов, как LLVM, libc++ и Boost. Конференция ориентирована на опытных разработчиков на C++, желающих углубить свою экспертизу и обменяться опытом в живом общении. Студентам, аспирантам и преподавателям университетов предоставляются очень приятные скидки.
Московское издание конференции можно будет посетить уже в апреле следующего года, а пока наши студенты расскажут, что интересного они узнали на прошедшем мероприятии. 

Использвание GitHub CI для Elixir проектов

В октябре запустил actions, которые позволяют выполнять CI, не отходя от кассы, в которой этот самый код хранится. Это действительно очень удобно. Как только кто-то отправляет pull request, или просто загружает новые изменения на сервер, или что-то еще специальное (список событий, к которым можно прикрутить actions может быть найден в официальной документации), сборка запускается. Также поддерживаются запланированные повторяющиеся задачи (по принципу cron).

Можно создавать конвейеры действий, названные рабочими процессами (workflows). И все это прекрасно, и смахивает на светлое будущее — за исключением документации.

Как подружить PyTorch и C. Используем TorchScript

Tutorial

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

Особенное внимание уделю реализации проекта на Windows, поскольку, хотя исследования в ML обычно делаются на Ubuntu, конечное решение часто (внезапно!) требуется под «окошками»

Примеры кода для экспорта модели и проекта на C++, использующего модель, можно найти в репозиториии на GitHub.

Ошибка 8. Отказ от абстракций

Боязнь плодить сущности — типичная ошибка новичков, она приводит к проблемам с читаемостью и восприятием кода. Здесь можно привести много примеров.

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

2. Дублирование кода при работе с цветными изображениями, приводящее к ошибкам (см. пример выше). Вместо copy-paste кода и замены на и на достаточно было бы использовать перегрузку операторов. В три раза меньше кода, в три раза понятнее.

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

4. Использование трёхмерных массивов для хранения цветных изображений вместо создания отдельного класса для изображения. В дополнение к предыдущему пункту, приходится помнить, какой из индексов соответствует какой цветовой компоненте. Также видел, как трёхмерные массивы используются для хранения векторов, как в виде , так и в виде . Запутаться легко.

5. Использование массива вместо класса. Угадайте, что возвращает следующая функция?

Ответ: массив из 11 элементов, каждый из элементов имеет свой сакральный смысл, непонятный без длительного анализа кода. Не делайте так! Заведите класс и назовите каждое из полей по-человечески.

6. Переиспользование переменных с изменением семантики. Видите в коде и и думаете, что это призводные по и по ? А вот и нет, это модуль и угол:

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

Находим текст на вывесках и упаковках с помощью смартфона

Проблема автоматического поиска текста на изображениях существует достаточно давно, как минимум с начала девяностых годов прошлого века. Они могли запомниться старожилам повсеместным распространением ABBYY FineReader, умеющим переводить сканы документов в их редактируемые варианты.
Сканеры, подключённые к персональным компьютерам, отлично работают в компаниях, но прогресс не стоит на месте, и мир захватили мобильные устройства. Круг задач работы с текстом тоже поменялся. Теперь текст нужно искать не на идеально прямых листах А4 с чёрным текстом на белом фоне, а на различных визитках, красочных меню, вывесках магазинов и много ещё на чём, что человек может встретить в джунглях современного города. Реальный пример работы нашей нейросети. Картинка кликабельна.

Основные требования и ограничения

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

Front-end веб-разработчик

Если мы заходим на сайт и там есть кнопочки, которые меняют местоположение и цвет при наведении на них мышкой, то это дело рук front-end разработчика. Он пишет весь код на JavaScript, который выполняется без перезагрузки страницы на стороне клиента.

Где работает?

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

Что делает?

Разрабатывает динамику пользовательского интерфейса. Если в компании нет верстальщика, то еще и переводит PSD-шаблоны в HTML-код.

Технологии

  • HTML и UI фреймворки (Bootstrap, Foundation, Pure);
  • CSS и препроцессоры (SASS/LESS);
  • JavaScript + фреймворки/библиотеки на этом языке (Jquery, ReactJS, AngularJS, BackboneJS);
  • Утилиты для сборки проектов (Grunt, Gulp, Bower).

Инженер прикладного программного обеспечения

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

Работа прикладного инженера заключается в написании кода, его последующей компиляции, отладке и тестировании. Иногда специалист обновляет или вносит изменения в уже существующее ПО. Для программирования использует высокоуровневые языки Java, C#, C++, Python, PHP. Прикладные программисты редко трудятся в одиночку. В основном, они являются участниками стартапов, или входят в штат сотрудников компании, занимающейся разработкой компьютерного софта.

«Программист» – интересная и разнообразная профессия с множеством направлений и специализаций. Одни делают виджеты для сайтов и проектируют API, другие пишут код для серверов или корпят над графикой Disciples III. Каждый, кто любит программировать, может реализовать себя в веб-разработке, стать именитым создателем игр или писать программы для спутников НАСА.

Как стрела

На первом занятии мы расположились на стульях полукругом и мирно слушали лекцию о графике Эшера. Предложение достать бумагу и начать рисовать было полной неожиданностью. В ту же минуту один из членов нашей команды просто… сбежал. Всем остальным пришлось взять по листу замечательной плотной бумаги формата А3 и черному маркеру. И никаких карандашей или ластиков! Каждому предстояло изобразить идею движения, равновесия, а также создать фрактальную графику в духе Эшера. Несколько минут в комнате стояла тишина. Паника, как оказалось, была не только у меня. Белое, чистое пространство листа притягивало взгляд, и во многих взглядах читалась жалость.Графику называют искусством черного и белого, но это не искусство контраста, как могло бы показаться на первый взгляд. Скорее она требует умения выделить главное, суть, и обозначить ее единой линией. «Подобно тому как стрелок из лука точно намечает себе цель, натягивает тетиву и выпускает стрелу, так и пишущий должен сосредоточиться, представить себе форму знаков, а затем с уверенностью в себе сильно и решительно вести кистью». Так говорил китаец Чанг Ие. Оказалось, рисование — это не релакс (как я думала), а настоящий мозговой штурм. За пару минут в моей голове пронеслись наскальные рисунки из школьных учебников, когда-то виденные гравюры, иллюстрации к книгам, какие-то неясные идеи и образы. Пока вдруг я не поняла, что могу начать, и эта линия будет твердой.

Боитесь ли вы чистого листа? Сделать что-то не так, что-то испортить и даже просто начать? Я боюсь многих вещей, но белый лист бумаги вызывает только любопытство: а что же получится на этот раз? Иногда получается ерунда. Но у меня есть новехонький толстый альбом для рисования, и я просто отрываю из него новый лист, не успев огорчиться.

Локализация React приложении

Всем привет!

До нового года остаются считанные дни. Наткнулся на свой список дел, которые собирался сделать в 2019-м, среди них оказалось и написать статью на Хабр. Самое время заскочить в уходящий вагон).

Сразу оговорюсь, пиарю свой велосипед, если такое Вам не по душе, то можете смело пропускать статью.

Что такое локализация?

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

Итог: общие рекомендации для начинающих работать с изображениями

  1. Не используйте системные объекты Bitmap, HBITMAP и им подобные.
  2. Прежде, чем использовать библиотеки для работы с изображениями, начните с написания велосипедов, а уже затем бросайтесь в бой.
  3. Используйте тип float для хранения значений пикселей, если типа byte не хватает для хранения значений пикселей как по точности, так и по диапазону. А набравшись опыта, вы сможете использовать арифметику с фиксированной точкой и добиться максимальной эффективности.
  4. При преобразовании из float в byte помните об ошибках округления и выход за границы типа.
  5. Помните об отрицательных значениях.
  6. Совершайте обход по пикселям изображения в правильном порядке.
  7. Тщательно тестируйте код.
  8. Не бойтесь плодить сущности. Код должен быть понятным.
  9. Используйте математические операции с умом.
  10. Учите язык.
  11. Не пытайтесь показать мастерство.
  12. Читайте учебники по обработке изображений — там много всего полезного пишут.

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

→ Visual Studio 2015, C++
→ Visual Studio 2015, C#

Версий под Linux нет — студенты, использующие Linux, обычно не испытывают проблем с такими вещами.

Ну и на закуску — просто картинки.

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

Увеличение с помощью бикубической интерполяции.

Ссылка на основную публикацию