Как стать автором
Обновить
4
Андрей @Lure_of_Chaosread⁠-⁠only

Программист

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

Что означают приставки в британских фамилиях и не только

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

Привет, Хабр! По исследованиям социологов, в Британии сегодня можно насчитать около 45 000 фамилий. И среди них вы наверняка замечали фамилии со странными префиксами вроде O’Hara или McGregor. О них сегодня и поговорим.

Точнее, не конкретно о них, а в целом о фамильных приставках в Британии. Расскажем, как они появились, что значат и как по ним можно определить родину человека. Готовы? Поехали!

Читать далее
Всего голосов 75: ↑69 и ↓6+63
Комментарии16

SDK чата и Kotlin Multiplatform

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

Привет, меня зовут Сергей, я Android Lead в компании Broniboy —  сервисе мультидоставки, который работает не только с ресторанами, но и с магазинами, аптеками и обычными людьми. Учитывая уровень конкуренции на этом рынке, каждый клиент на счету. Достаточно одной ошибки, чтобы потерять его, поэтому нам нужен надёжный канал поддержки пользователей. Наш выбор пал на чат, простой и понятный пользователю канал связи. Он позволяет не только оперативно реагировать на жалобы, но и привности частичку «человечности» в общение с техподдержкой.

Изучив готовые SDK и взвесив все «за» и «против», мы решили написать собственный SDK чата. Одна из основных идей — переиспользование кода между платформами, а сегодня это Android, iOS и Web. Поэтому, для MVP мы решили попробовать Kotlin Multiplatform.

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

Чаты на вебсокетах. Теперь про бэкенд

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

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

Ниже подробности о том, что было до написания кастомных чатов и какие стояли требования к реализации, из каких компонентов они состоят, как вписываются в нашу инфраструктуру и что получилось в итоге. А в конце статьи — ссылки про особенности разработки наших чатов на вебсокетах для iOS и Android.

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

Пишем комикс-приключение на Kotlin

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

Всем привет! Сегодня вас ждет легкая статья, которая расскажет как написать простую мобильную игру-викторину на Kotlin. Здесь я расскажу и наглядно покажу как выглядит Kotlin для мобильной разработки и предложу свои идеи о том, как можно структурировать подобный проект. Что же, не буду томить вас графоманией, вперед! 

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

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

Просмотр HTML-кода — не преступление

Время на прочтение3 мин
Количество просмотров55K
В последнюю версию браузера Chrome 98 добавили функцию, с помощью которой администратор локальной сети может блокировать просмотр HTML-кода страниц в браузере.



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

Всё это происходит на фоне истории с американским веб-разработчиком и журналистом, который нашёл конфиденциальные данные прямо в коде HTML на сайте правительства штата Миссури — и написал про это безобразие. Теперь ему грозит тюремный срок за хакерство.
Читать дальше →
Всего голосов 137: ↑135 и ↓2+133
Комментарии175

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

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

Главная сложность в разработке приложения – накодить его функционал. Например, сделать редактирование текста для приложения-блокнота. Так я полагал, когда был моложе и наивнее.

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

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

Читать далее
Всего голосов 58: ↑57 и ↓1+56
Комментарии20

Мама, я сделал Хабр

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


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


Ссылка на web-приложение для самых нетерпеливых — habra.js.org. Всех остальных — прошу под кат.

Всего голосов 235: ↑231 и ↓4+227
Комментарии158

Как начать писать микросервис на Spring Boot, чтобы потом не болела голова

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

Привет! Меня зовут Женя, я Java-разработчик в Usetech, в последнее время много работаю с микросервисной архитектурой, и в этой статье хотела бы поделиться некоторыми моментами, на которые может быть полезно обратить внимание, когда вы пишете новый микросервис на Spring Boot.


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

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

Фрактальная шизофрения

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


Нет, я не болен. По крайней мере так говорит голос в моей голове. Я наркоман. Вот уже более 15 лет я сижу на игле. Употребляю много, жёстко, до обморочного состояния. Докатился до того, что в последнее время не стесняюсь ни друзей, ни жены, ни детей… Двоих детей! Не люблю бадяженый, люблю чистый, без примесей. За годы перепробовал многое, но в последнее время остановился в поисках. Забавно осознавать, что от одного и того же получаешь одновременно и боль, и радость. Мне бы в лечебку, я даже хочу, я даже знаю в какую. Знаете такие, где продолжаешь употреблять, но под присмотром?

Читать дальше →
Всего голосов 94: ↑86 и ↓8+78
Комментарии63

«Свет мой — зеркальце! — скажи, да дуал мой покажи...»: спроектируй один хороший фреймворк и получи второй в подарок

Время на прочтение3 мин
Количество просмотров1.8K
Камни древних храмов умеют разговаривать, но мало кто им внемлет. Вселенная наполнена звуками, которые мы, люди, не слышим; цветами, которые не видим: иногда дело в объективных ограничениях тела и духа, но бывают также и субъективные причины — недостаток знаний и навыков или неумение ими пользоваться в повседневной практике. Яркий пример второго в мире программирования — сигнатуры функций. Дети ОО-мира в лучшем случае мыслят интерфейсами — это близко, но «не совсем то» и чем внимательнее становишься, тем больше это превращается в «совсем не то». А сигнатуры функций тоже умеют разговаривать.
Читать дальше →
Всего голосов 19: ↑15 и ↓4+11
Комментарии6

Как я создаю сервис рекомендаций сообществ ВКонтакте

Время на прочтение11 мин
Количество просмотров6.7K
Лето заканчивалось, шёл особенно холодный август. Начинался мой 11 класс и я осознал, что сейчас последний шанс (спойлер: нет) на то, чтобы как-то улучшить свою профессиональную компетенцию. Уже несколько лет я усердно делал разные IT проекты, какие-то один, какие-то в коллективе. Но вот все сыны маминой подруги  уже делают что-то красивое. Возможно, бесполезное, но прекрасное внешне. Кто-то делает залипательную симуляцию частиц в виде гифок, кто-то погружается в машинное обучение и делает всякие стайл-трансферы. А я чем хуже? Я так же хочу!

Пример симуляции также есть под катом
Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии13

Современная MVI-архитектура на базе Kotlin

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


За последние два года Android-разработчики в Badoo прошли длинный тернистый путь от MVP к совершенно иному подходу к архитектуре приложений. Мы с ANublo хотим поделиться переводом статьи нашего коллеги Zsolt Kocsi, описывающую проблемы, с которыми мы столкнулись, и их решение.

Это первая из нескольких статей, посвящённых разработке современной MVI-архитектуры на Kotlin.
Читать дальше →
Всего голосов 48: ↑46 и ↓2+44
Комментарии12

Мой любимый файл в кодовой базе Chromium

Время на прочтение6 мин
Количество просмотров86K
Код Хромиума весьма обширен, там каждому найдётся что-то по вкусу. А я вот решил рассказать о своём любимом файле в нём (а у вас есть такой?). Этот файл отражает всё: боль, разочарование, надежду, упорство, силу воли, ответственность за чужие провалы и самопожертвование. Я иногда читаю его и плачу и проникаюсь пониманием, какая же огромная часть айсберга скрыта под водой. Это, в общем, даже не файл с кодом. Это файл с конфигом, описывающим баги видеокарт, которые Хромиуму приходится обходить для нормального отображения своих страниц на разных платформах. Вот он: https://cs.chromium.org/chromium/src/gpu/config/gpu_driver_bug_list.json

О чём вообще идёт речь? Давайте вспомним, как работает браузер: вы набираете какой-то адрес в адресной строке, браузер загружает контент и отображает его. Чуть детальнее об этом рассказывает хорошая статья «What happens when you type google.com into your browser and press enter?» (и сразу несколько её переводов на Хабре). В ней одним из последних пунктов упоминается, мол, «а теперь, когда всё готово, отрисовываем картинку на экране». Ага, вот так берём и отрисовываем, конечно.
Читать дальше →
Всего голосов 186: ↑185 и ↓1+184
Комментарии179

Поле загрузки файлов, которое мы заслужили

Время на прочтение10 мин
Количество просмотров123K
Все течет, все меняется, но только input[type=file] как портил нервы всем начинающим веб-разработчикам, так и продолжает это делать до сих пор. Вспомните себя N лет назад, когда вы только начинали постигать азы создания веб-сайтов. Молодой и неопытный, вы искренне удивлялись, когда кнопка выбора файла напрочь отказывалась менять цвет своего фона на ваш любимый персиковый. Именно в тот момент вы впервые столкнулись с этим несокрушимым айсбергом под названием «Загрузка файлов», который и по сей день продолжает «топить» начинающих веб-разработчиков.

На примере создания поля для загрузки файлов я покажу вам, как правильно прятать input[type=file], настраивать фокус на объекте, у которого фокуса быть не может, обрабатывать события Drag-and-Drop и отправлять файлы через AJAX. А также я познакомлю вас с парой браузерных багов и путями их обхода. Статья написана для новичков, но в некоторых моментах может быть полезна и занимательна даже для матерых разработчиков.
Читать дальше →
Всего голосов 40: ↑36 и ↓4+32
Комментарии19

Пришел, увидел, обобщил: погружаемся в Java Generics

Время на прочтение17 мин
Количество просмотров310K
Java Generics — это одно из самых значительных изменений за всю историю языка Java. «Дженерики», доступные с Java 5, сделали использование Java Collection Framework проще, удобнее и безопаснее. Ошибки, связанные с некорректным использованием типов, теперь обнаруживаются на этапе компиляции. Да и сам язык Java стал еще безопаснее. Несмотря на кажущуюся простоту обобщенных типов, многие разработчики сталкиваются с трудностями при их использовании. В этом посте я расскажу об особенностях работы с Java Generics, чтобы этих трудностей у вас было поменьше. Пригодится, если вы не гуру в дженериках, и поможет избежать много трудностей при погружении в тему.


Читать дальше →
Всего голосов 22: ↑18 и ↓4+14
Комментарии46

Разбор основных концепций параллелизма

Время на прочтение17 мин
Количество просмотров64K
Всем кофе!

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

Поехали!

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

РАЗДЕЛ 1

Вступление

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

РАЗДЕЛ 2

Концепции

Концепция Описание
Atomicity (атомарность) Атомарная операция — это операция, которая выполняется полностью или не выполняется совсем, частичное выполнение невозможно.
Visibility (видимость) Условия, при которых один поток видит изменения, сделанные другим потоком

Таблица 1: Концепции параллелизма

Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии12

Чего из Rust мне не хватает в C

Время на прочтение7 мин
Количество просмотров23K
Об авторе. Федерико Мена-Кинтеро — мексиканский программист, один из основателей проекта GNOME.

Librsvg достиг переломного момента: внезапно выясняется, что легче портировать некоторые основные части из C на Rust, чем просто добавить аксессоры. Кроме того, всё больше «мяса» библиотеки сейчас написано на Rust.

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

Элегия C


Я влюбился в C около 24 лет назад. Выучил азы по второму изданию “The C Programming Language by K&R” в переводе на испанский. До этого я использовал достаточно низкоуровневый Turbo Pascal, с указателями и ручным распределением памяти, так что C казался приятным и придающим сил.

K&R — отличная книга для выработки стиля и лаконичности. Эта маленькая книжка даже научит вас реализовать простой malloc()/free(), что поистине просветляет. Даже низкоуровневые конструкции можно вставлять в самом языке!

В последующие годы я хорошо освоил C. Это небольшой язык с маленькой стандартной библиотекой. Вероятно, идеальный язык для реализации ядра Unix на 20 000 строк кода или около того.
Читать дальше →
Всего голосов 80: ↑76 и ↓4+72
Комментарии178

Зачем солить HTTP-коллбэки

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

Некоторые облачные сервисы хотят двустороннего общения для нотификаций: рассказать вашему backend о завершении долгой операции, показать случившиеся ошибки, предупредить о низком балансе платных услуг — вся вот эта история. И если для общения с сервисами мы привыкли использовать HTTP-запросы, то в обратную сторону есть много вариантов: от проверок статуса раз в десять минут и до постоянного WebSocket или HTTP/2 подключения с нотификациями в реальном времени. Самый простой способ это HTTP callbacks. Вы задаете в админке URL своего бэкенда, а облачный сервис в случае интересных событий делает HTTP-запрос к этому URL с дополнительный информацией в теле запроса. Обратная сторона простоты это безопасность. Как убедиться, что запрос сделал именно облачный сервис, а не злобный хакер Вася? Несколько способов под катом.
Читать дальше →
Всего голосов 31: ↑25 и ↓6+19
Комментарии31

Безопасность в веб-разработке: чек-лист

Время на прочтение5 мин
Количество просмотров19K
Светлана Шаповалова, редактор «Нетологии», адаптировала статью Michael O'Brien, в которой он составил чек-лист для веб-разработчиков, предпочитающих разрабатывать не только удобные, но и безопасные приложения.

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

Если вы уже заразились идеей «минимально жизнеспособного продукта» (англ. MVP — minimum viable product, прим. перев.) и считаете, что за месяц можно создать одновременно полезный и безопасный продукт — подумайте дважды, прежде чем выпускать его. Просмотрев чек-лист, вы поймете, что оставляете немало уязвимостей.


Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии7

Реверс-инжиниринг игры Lost Vikings

Время на прочтение31 мин
Количество просмотров25K
После интересной обратной разработки игрового движка Comprehend (см. Recomprehend) я подбирал новый проект для реверс-инжиниринга игры под DOS. За долгие годы разные люди реверсировали множество старых популярных игр и опубликовали для них спецификации и инструменты. Например, на сайте shikadi.net есть куча информации об играх, в которые я играл в детстве.

Я обнаружил, что для реверс-инжиниринга игры The Lost Vikings компании Blizzard (тогда она называлась Silicon and Synapse), похоже, не предпринималось никаких серьёзных попыток. Игра была выпущена в 1993 году, на закате эры DOS, и очень нравилась мне в юности. The Lost Vikings — это головоломка-платформер, в которой игрок управляет тремя викингами, каждый из которых имеет собственные умения. Викингам нужно объединить свои силы для решения загадок и прохождения уровней с различной тематикой: космический корабль, доисторический мир, Древний Египет. На изображении ниже показан первый уровень игры (источник: Strategy Wiki):

image

Казалось, что эту игру разобрать будет довольно просто. Уровни основаны на тайловых картах и содержат простые загадки: кнопки, включающие и отключающие объекты, передвижные ящики и поднимающий предметы кран. И на самом деле, бóльшая часть проекта по обратной разработке была достаточно прямолинейной. У игры есть один пакетный файл данных, содержащий сжатые блоки файлов. Блоки кодируют различные ресурсы игры, такие как спрайты, карты, звуки и т.д. Я написал несколько утилит, которые можно использовать для просмотра ресурсов игры: The Lost Vikings Tools.
Всего голосов 58: ↑58 и ↓0+58
Комментарии20
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Вильнюс, Литва, Литва
Дата рождения
Зарегистрирован
Активность