Обновить
0
0
Владимир Савин @WowaBBS

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

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

Детские шалости: как Roblox стала одной из самых дорогих игровых компаний современности

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

Убыточная детская платформа для создания компьютерных игр Roblox с третьей попытки вышла на биржу, и её рыночная оценка тут же побила все самые смелые прогнозы. Сейчас она стоит больше, чем Take-Two (издатель Grand Theft Auto) и Ubisoft (разработчик серии Assaisin’s Creed) вместе взятые. Под катом — о том, как стартап, который часто называют «новым Minecraft», смог добиться такого результата.

Читать далее

Софт для самохостинга: что нового в 2023 году

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


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

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

Разработка BIOS на языках высокого уровня

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров29K
Ничего лишнего: материнская плата, видеокарта и ROM-BIOS

Меня давно волнует вопрос, как подступиться к разработке на голом железе, на чистом си. Хотелось понять, каким же образом идёт запуск BIOS, u-boot, grub и прочих первичных загрузчиков. Ведь необходимо перейти от ассемблера к тёплому ламповому си и соблюсти условие, собрать всё это в линукс любимым компилятором gcc.

Хотя я и имею достаточный опыт BareMetal-разработки, тем не менее, всё это были чужие проекты со своим кодом. А мне хотелось понять, как начать свой проект с чистого листа, когда есть только чистая железка и идея. Толковых статей как подступится к этой задаче достаточно мало, при этом совершенно непонятно, с какого же края к ней подходить.

Здесь я хочу свести основные моменты разработки BIOS в одном месте и разобраться обо всех проблемах, которые я получил во время своих опытах в разработке (первая и вторая части).
Читать дальше →

NFC приходит в web

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

Это должно было быть примерно в 2012 году, когда Google выпустил первые телефоны с поддержкой NFC (Google Nexus S) вместе с обновлением для Android, которое позволило разработчикам использовать API NFC. Я хорошо помню, что заплатил несколько евро за несколько тегов NFC, чтобы попробовать (сегодня эти теги стоят очень дёшево). Хотя я был очень убежден, и команда CX Labs анонсировала множество прототипов, таких как покупки с помощью NFC, Apple потребовалось много лет, чтобы внедрить NFC и, наконец, открыть API для своих разработчиков. О NFC почти забыли... Но сейчас 2021 год, и большинство телефонов имеют встроенное оборудование NFC. Основной вариант использования - платежи, эмуляция карты NFC - один из трех режимов работы NFC, и большинство из нас ежедневно используют Apple или Google Pay.

Это означает, что функция NFC широко доступна для разработчиков, но, честно говоря, она не очень часто используется, кроме как через платежные приложения, поддерживаемые Google/Apple. Но только в мае 2021 года вышел Chrome для Android 91, который теперь поддерживает веб-NFC - любой веб-разработчик может экспериментировать и использовать NFC на простых HTML-страницах. Хотя Safari от Apple и другие браузеры снова опаздывают в игру, это может снова ознаменовать момент для нового прорыва в технологии NFC. Web NFC снижает барьер для разработчиков и, что более важно, функциональность NFC теперь может быть частью Интернета: никаких установок.

Читать далее

Вкатываемся в ангельский без репетиторов

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

Привет, {{ username }}!

Добро пожаловать в очередную статью про изучение английского.

Постараюсь емко обобщить свой опыт самостоятельного изучении языка от A1 до B2 за 1-2 года. Информация релеванта для технарей 25+ лет, однако подойдет для широкого круга интересующихся.

Мнение автора субъективно. Представленные материалы, инструменты и best practices дадут вам базовое знание языка, однако не смогут подготовить к собеседованию, IELTS/TOEFL, чтению классической литературы и т.п.

Вкатиться

Стохастический язык программирования на основе алгоритмов Маркова

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

MarkovJunior — это вероятностный язык программирования, в котором программы являются сочетаниями правил перезаписи, а инференс выполняется при помощи распространения ограничений. MarkovJunior назван в честь математика Андрея Андреевича Маркова, придумавшего и исследовавшего то, что сейчас называется алгоритмами Маркова.
Читать дальше →

Семейство алгоритмов Ascon — новый стандарт легковесной криптографии

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

Режим работы шифра Ascon, см. список условных обозначений на схеме

В феврале 2023 года Национальный институт стандартов и технологий (NIST) выбрал стандарт легковесной криптографии для RFID, датчиков, Интернета вещей и других устройств с ограниченными аппаратными ресурсами. Победителем конкурса стало семейство шифров Ascon (файл zip, спецификации, changelog).
Читать дальше →

Создаем свой собственный язык программирования с использованием LLVM. Часть 4: Поддержка составных типов

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

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

Читать далее

Call Stack Logger — инструментирование функций как способ отслеживания потока выполнения программы

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

Доводилось ли вам когда-нибудь работать над C++ проектом с такой огромной кодовой базой, что понимание того, что на самом деле происходит во время выполнения программы, требует кучи времени и сил? Откуда и какие функции вызываются? Вам когда-нибудь поручали исправить баг в таком проекте, прилагая лишь логи, которые приближают вас к нахождению первопричины проблемы так же, как Моисей к земле обетованной? А попытки воспроизведения бага не дают вам никакой полезной информации? Если ваш ответ да – пожалуйста, присаживайтесь поудобнее.

Читать далее

Интеграция библиотеки на Swift в UE4

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

Недавно возникла задача интеграции кода, который был написан только на Swift в проект на UE4. При этом вариант "давайте быстренько перепишем все на Objective C" не рассматривался. Готового решения нигде не нашел, пришлось, как это часто бывает, копать и вширь и вглубь. Задача была успешно решена и чтобы помочь кому-то еще, решил написать туториал.

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

Руководство Google по стилю в C++. Часть 7

Время на прочтение40 мин
Количество просмотров11K
Часть 1. Вступление

Часть 6. Специфика Google
Часть 7. Ещё возможности C++
Часть 8. Именование


Это последняя переведённая часть руководства Google по стилю в C++.
Спасибо за замечания и комментарии к переводу.
Надеюсь это руководство будет полезным подспорьем для программистов на C++.
Исходная статья (fork на github), обновляемый перевод.
И ещё здесь много букв.
Читать дальше →

Происхождение и эволюция аллокатора памяти в С

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

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

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

Читать далее

Простая аутентификация на PHP

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

Многие новички до сих пор попадают в тупик при написании простейшей аутентификации в PHP. На Тостере с завидной регулярностью попадаются вопросы о том, как сравнить сохраненный пароль с паролем полученным из формы логина. Здесь будет краткая статья-туториал на эту тему.

Disclaimer: статья рассчитана на совершенных новичков. Умудрённые опытом разработчики ничего нового здесь не найдут, но могут указать на возможные недочёты =).

Читать далее

Пишем простой Path Tracer на старом добром GLSL

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

На волне ажиотажа вокруг новых карточек от Nvidia с поддержкой RTX, я, сканируя хабр в поисках интересных статей, с удивлением обнаружил, что такая тема, как трассировка путей, здесь практически не освящена. "Так дело не пойдет" - сказал я и решил, что неплохо бы запилить что-нибудь небольшое из этой темы, да и так, чтобы другим полезно было. Тут как кстати API собственного движка нужно было протестировать, поэтому решил - запилю-ка я свой простенький path-tracer прямо во фрагментном шейдере. Что из этого вышло, думаю вы уже догадались по превью к этой статье

Читать далее

Неклассические контейнеры в C++

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

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

В стандартную библиотеку C++ входит несколько контейнеров. Кроме этого, в Open Source есть несколько контейнеров, которые покрывают больше юзкейсов. Я опишу устройство интересных контейнеров вне STL и их отличия от классических контейнеров.

Читать далее

С++17 wrapper для OpenSSL: ECDH и AES 256

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

В данной статье мы рассмотрим простую реализацию связки алгоритма согласования ключей Диффи-Хеллман на элиптических кривых и алгоритма симметричного шифрования AES 256 с использованием библиотеки OpenSSL для организации защищённого соединения.

Читать далее

Новые мини-ПК, на которые стоит обратить внимание: от ASUS c Intel Jasper Lake до EliteMini HM90 с Ryzen 9 4900H

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

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

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

Установка Google сервисов на Windows Subsystem for Android

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

Энтузиаст смог установить Google сервисы и приложения на WSA. Оригинал тут.

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

Внимание, после установки WSA, перестает запускаться эмулятор Android Studio. С этой проблемой еще не разобрался! И не говорите потом, что я вас не предупреждал :)

Читать далее

Работаем с сетевыми адаптерами через Pcap-драйверы

Время на прочтение16 мин
Количество просмотров14K
Работой с сетью в наше время никого не удивишь. Насколько я знаю, работать с сокетами нынче обучают уже на втором курсе соответствующих специальностей. Так что в целом, сетевые навыки должны быть у многих программистов. Но иногда требуется не просто работать с сетью, а делать это с предопределёнными параметрами, будь то расстояние между пакетами либо какое-то нестандартное их содержимое. Понятно, что речь идёт не о повседневной жизни, а об отладке либо тестировании проектов. В этом нам поможет работа через Pcap-драйверы. Например, через драйвер Npcap, устанавливающийся вместе с программой Wireshark.



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

В общем, думаю, имеет смысл свести все сведения воедино. Кому интересно – приступаем!
Читать дальше →

Timsort — самый быстрый алгоритм сортировки, о котором вы никогда не слышали

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

Timsort: Очень быстрый, O(n log n), стабильный алгоритм сортировки, созданный для реального мира, а не для академических целей.

Timsort — это алгоритм сортировки, который эффективен для реальных данных, а не создан в академической лаборатории. Tim Peters создал Timsort для Python в 2001 году. 

Timsort сначала анализирует список, который он пытается отсортировать, и на его основе выбирает наилучший подход. С момента его появления он используется в качестве алгоритма сортировки по умолчанию в Python, Java, платформе Android и GNU Octave.

Нотация Big O для Timsort — это O(n log n). Чтобы узнать о нотации Big O, прочтите это.

Читать далее

Информация

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