Как стать автором
Обновить

Все потоки

Сначала показывать
Порог рейтинга
Уровень сложности

Разбор задачи A отборочного этапа Yandex Cup 2023 — iOS

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 76

Недавно закончился отборочный этап Yandex Cup для разработчиков по различным направлениям, одним из которых была мобильная разработка под iOS. Как раз про нее и поговорим, а точнее про задания, которые были там представлены. Стоит отметить, что их сложность выше среднего, по этой причине, думаю, каждый подчеркнет для себя что-нибудь новое. Хотелось бы сразу сказать о том, что некоторые используемые конструкции/инструменты языка/фреймворков были для меня не новы, но в жизни встречался с ними редко, поэтому приходилось читать и на практике воспроизводить код из условия, экспериментируя с ним. Правильных ответов у меня не было, и решал я уже после окончания отборочного этапа. Если заметите какие-либо неточности в формулировках, в размышлениях, в ответах, буду рад обсудить это в комментариях.

Приступим! :-)

Читать далее
Рейтинг 0
Комментарии 0

Новости

Синтаксический разбор CSV строчек

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

В программировании микроконтроллеров часто надо производить синтаксический разбор (парсинг) CSV строчек. CSV это просто последовательность символов, которые разделены запятой (или любым другим одиночным символом: ; | /). CSV строчки можно, например, повстречать в NMEA протоколе от навигационных GNSS приемников. Любой URL это в сущности та же самая CSV строчка.

В этом тексте я написал как производить синтаксический разбор CSV строчек.

Читать далее
Рейтинг 0
Комментарии 3

Квитанции как способ отражения сделанной работы на уровне типов

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 63

Функциональное программирование одной из целей ставит отражение логики программы в типах входных/выходных значений функций. Типы аргументов и результатов накладывают существенные ограничения на то, как может быть реализована функция. Тем самым, позволяют делать разумные выводы о работе функции, ориентируясь только на её сигнатуру. Такое явление называется "параметричность". Замечательным примером параметричности служит такая сигнатура:


val f: [A] => A => A

Эту сигнатуру можно прочитать так: для любого типа, получив значение этого типа, вернуть какое-то значение того же типа. Исходя из того, что тип может быть любым, и никаких операций над этим типом мы не определили, единственной продуктивно завершающейся реализацией является identity. Здесь и далее мы исключаем непродуктивные решения вида f(a) = f(a) (зависание/отсутствие завершения) или f(a) = throw Exception() (исключение).


Для представления эффектов часто используется конструкция IO[A]. Значение из этого объекта можно получить, только выполнив код, содержащийся внутри. Довольно часто можно столкнуться с ситуацией, когда само значение нам не настолько интересно, как факт выполнения определённой операции. Обычно используется тип возвращаемого значения IO[Unit]. В этой заметке предлагается воспользоваться параметричностью, чтобы получить определённые гарантии.

Читать дальше →
Рейтинг 0
Комментарии 0

Белоснежно чистый код

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

Что такое чистый код? Это то, что все ищут, но никто не может найти. Люди редко могут сойтись на том, что это такое и как это реализовать на практике. Можно найти бесчисленное число статей на эту тему, и эта станет ещё одной. Я попытаюсь разобраться в том, что такое чистый код сам по себе, в отрыве от языков, парадигм и сфер применения. 

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

Истории

Написание Частного технического задания (ЧТЗ)

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 415

Всем привет! Меня зовут Мишинёва Екатерина, я – ведущий технический писатель с опытом работы в сфере IT более 10 лет.

Рассмотрим подробнее.

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

Flutter VS React Native

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

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

Поскольку мобильные телефоны становятся умнее, пользователи также становятся умнее с каждым днем. Каждый клиент перед выбором и покупкой изучает его функции и используемые технологии. Когда дело доходит до разработки ОС Android и iOS, каждая компания задумывается о том, как лучше всего предоставить своим клиентам мобильное приложение с превосходным пользовательским интерфейсом (пользовательский интерфейс) и выдающимся UX (пользовательский опыт). Компании стараются предоставлять приложения, совместимые с несколькими платформами и позволяющие быстрее разрабатывать их в одном месте. Затем на место приходят Flutter и RN (React Native). Оба являются кроссплатформенными платформами для разработки мобильных приложений.

Читать далее
Всего голосов 9: ↑3 и ↓6 -3
Комментарии 4

QCustomPlot + FetchContent

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

Изыскание на тему безболезненной интеграции библиотеки QCustomPlot в cmake без похода в браузер за исходниками.

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

Реверс мобильных приложений на cocos2dx

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

Хочу поделиться своим опытом в реверс инженеринге приложения на lua cocos2d-x. Файлы приложения зашифрованы xxtea, а ключи шифрования находятся в .so файле внутри приложения.

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

Чем смешнее, тем умнее! О пользе юмора в процессе обучения

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

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

Немного личных наблюдений

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

О юморе и информации...
Всего голосов 8: ↑4 и ↓4 0
Комментарии 0

Разговоры о Курсах, годнота или нет?

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

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

Давайте рассмотрим все "за" и "против". Для этого возьмём две противоположные точки зрения на эту тему. Первая точка зрения - Невозможно за 6-12 месяцев подготовить вменяемого джуна, не говоря уже о более высоких грейдах. 

Соответственно, любые курсы не могут дать нормальной базы, а как следствие, они бесполезны и не могут стоить тех денег, которые за них просят (30 -300 тыс.). По этому мнению, это не более, чем развод на деньги, и само собой, ни о каком трудоустройстве после них говорить нельзя. 

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

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

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

Читать далее
Всего голосов 13: ↑4 и ↓9 -5
Комментарии 18

Архитектуры RL: DDPG иPPO

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 268

Привет, уважаемые читатели Хабра!

В RL существует множество алгоритмов, каждый из которых имеет свои преимущества и недостатки.

DDPG (Deep Deterministic Policy Gradients) - это алгоритм, объединяющий в себе идеи из двух областей: DPG (Deterministic Policy Gradients) и DQN (Deep Q-Network). DDPG подходит для задач с непрерывным действием, и он стал основой к примеру для управления роботами и автономному вождению.

PPO (Proximal Policy Optimization) - это алгоритм, который сосредотачивается на обучении стратегии (policy) с учетом границ для обновлений. PPO стал популярным выбором благодаря своей стабильности и хорошей производительности в различных средах. Он также широко используется в научном обучение, ИИ героев в играх и в других областях.

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

Во второй раз — повезет?

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

Почти настало время для шоу с массивной ракетой Starship от SpaceX.
SpaceX снова планирует утренний старт ракеты.
Ars Technica, Эрик Бергер, 04.11.2023

Читать далее
Всего голосов 18: ↑15 и ↓3 +12
Комментарии 5

Ускоряем запуск Spring Boot-приложений в контейнере

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

Знаете ли вы, что Spring Boot-приложение в контейнере может запускаться за миллисекунды? При этом без ущерба для производительности, памяти, паритета окружений разработки-продакшена, без ограничений возможностей языка Java, и почти без изменения кода приложения. Но как? С помощью Liberty 23.0.0.10-beta…

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

Ближайшие события

Битва пет-проектов
Дата 25 сентября – 30 ноября
Место Онлайн
HolyJS
Дата 2 – 12 ноября
Время 15:00 – 19:00
Место Санкт-Петербург Онлайн
IT Recruiting – HR Forum 2023
Дата 8 – 10 ноября
Время 9:00 – 18:00
Место Москва
Яндекс Backend Tour
Дата 13 – 26 ноября
Время 18:00 – 23:00
Место Москва Нижний Новгород Екатеринбург Новосибирск Санкт-Петербург Онлайн
Национальный рекламный форум
Дата 15 – 17 ноября
Время 10:00 – 19:30
Место Москва
Онлайн IT HR-конференция HR42
Дата 17 – 18 ноября
Время 10:00 – 14:00
Место Онлайн
Импульс Т1
Дата 17 ноября
Время 13:00
Место Иннополис Онлайн
HighLoad++ 2023
Дата 27 – 28 ноября
Время 9:00 – 20:00
Место Москва Онлайн
Импульс Т1
Дата 1 декабря
Время 12:30
Место Москва Онлайн

12 GitHub записок

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

Наверное, многие помнят детскую (или не очень) игру: "12 записок". В ней нужно последовательно искать записки, в которых есть подсказки, указывающие на место, где лежит следующая записка из цепочки в 12 элементов. Игра длится до тех пор, пока не будет найдена последняя записка. Играть можно как командами, так и индивидуально. Побеждает тот, кто первый найдёт последнюю записку. Давайте вспомним босоногое детство, смешаем старые идеи с новой реальностью и попробуем изобрести 12 записок заново: 12 GitHub записок. 

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

Публикация в Awakari из произвольных источников

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

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

Читать далее
Рейтинг 0
Комментарии 0

От идеи до реализации: создание игры с помощью нейросетей

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

В эпоху быстро развивающихся технологий и искусственного интеллекта мы стоим на пороге новой эры творчества. Инструменты, такие как Midjourney, DALL•E 3 и GPT-4, предоставляют уникальные возможности для творцов различных направлений. Было решено исследовать этот потенциал, создав игру "Angry Pumpkins" в качестве эксперимента. Весь код был написан с помощью GPT-4, в то время как для графической части были использованы Midjourney и DALLE. Игра была создана за 10 часов и насчитывает 600 строк кода.

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

Постоянная тонкой структуры и магия чисел

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

"Когда я умру, первым делом посчитаю спросить у дьявола, – каков смысл постоянной тонкой структуры?" Вольфганг Паули

Так написано в статье в Википедии о этом числе.

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

Что отдельно интересно, все упражнения крутились вокруг некого числа около единицы, но никакие константы и их комбинации не подходили, и статья изначально задумывалась как констатация факта загадочности числа. Но неожидано сегодня получилась точность "аш 16 знаков, Карл!", и понял, что таким занимательным фактом нужно сразу делиться с другими людьми, интересующимися физ-мат дисциплинами.

Как то сама пришла в голову мысль связать "1+1=2", постоянную Дирака и волновую функцию. Исключил из выражения волновой функции массу, подставил скорость света с минусом и планковскую длину, перевел величины в безразмерный вид, и просто следовал за числами, составляя аппроксимацию с постоянной тонкой структуры и математическими константами, что бы это не означало.

Вот что получилось:

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

Road Run, или как я свою первую игру делал. Часть 2

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

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

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

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

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

Что такое класс типов?

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

Давайте разберем, что такое класс типов. Обратимся к формальному определению:

Класс типов (type class) — это абстрактный параметризованный тип, который позволяет добавлять новое поведение к любому закрытому типу данных без использования подтипов.

Класс типов - это в первую очередь про "поведение". Когда мы определяем класс типов, то неявно заключаем "контракт", в котором описываем желаемое для определяемого класса типов поведение.

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

Что такое деление по модулю в JavaScript?

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

Всем привет, меня зовут Максим Иванов, я Frontend-разработчик, и когда-то мы с другом писали переводы на Хабрахабр. Было интересно, но в какой-то момент я прекратил эту деятельность. Спустя 5 лет я решил снова попробовать писать про мою любимую профессию. Сегодня поговорим о математическом операторе в JavaScript, который представляет из себя символ процента.

Читать далее
Всего голосов 11: ↑1 и ↓10 -9
Комментарии 12