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

Разработка

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

Про решаемость пятнашек

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

Привет, я создатель известного в узких кругах приложения 15 Puzzle для Android.

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

Читать далее
Всего голосов 72: ↑73 и ↓-1+74
Комментарии46

Чтение на выходные: «Чистая архитектура. Искусство разработки программного обеспечения» Роберта Мартина

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

Сегодня в рубрике снова Роберт Мартин. Он же — «дядюшка Боб». Мы уже отзывались о нём тепло в материале о другой его книге на Хабре, так как при чтении от страниц буквально веет оптимизмом и заботой о людях и идеалах — в виде чистого кода и не только. Мы планируем перечитать всего его книги. На этот раз взяли с полки «Чистую архитектуру».

Роберт Мартин — инженер и программист. Причем кодит он с 12 лет и с тех пор, когда писать код нужно было ещё на бумаге (это не шутка). Как автор он пишет отличные и понятные книги с чистой и лаконичной структурой: никакой воды, немного личных историй, всё по делу, по содержанию и иногда в табличках. Отнюдь не удивительно, что и с архитектурой программного обеспечения у него тоже всё хорошо.

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

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

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

Я хочу рассказать вам об одном инструменте для работы с соцсетями. Рабочее название его - «менеджер репутаций». Технически он довольно прост, а вот стоящая за ним идея требует пояснений. Не знаю, существуют ли аналогичные программы, мне ничего подобного обнаружить не удалось. Во-всяком случае, концепция ни откуда не заимствовалась, а рождалась постепенно, по мере накопления опыта. Она достаточно непривычна, попробую объяснить ее наглядно.

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

А рядом с ним — помощник по информации. И он подает своему боссу незаметный для окружающих знак — вот это полезный человек, с ним стоит пообщаться. А вот это — наоборот, ходячая неприятность, лучше с ним в контакты не вступать. Про некоторых, особенно важных людей, помощник подает знак по собственной инициативе. Про других просто сигнализирует - «есть дополнительная информация». Про третьих — по собственной инициативе вообще внимания не обращает. Но и про первых, и про вторых, и про третьих — по первой просьбе своего шефа готов представить ему справку, краткую или развернутую — кто этот человек, откуда он, в каких действиях он и его организация были замечены и .т.п. Понятно, что такой помощник — это ценный специалист, такой есть далеко не у каждого начальника, не говоря уж о простых смертных...

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

Эффект Монреаля: почему языкам программирования нужен Царь стилей

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

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

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

Какое подмножество C++ или Kotlin вы используете? Что вы предпочтёте: project.toml или requirements.txt? Теперь у вашего языка есть возможность поэтапной типизации с помощью аннотаций типов. Хотите ей воспользоваться? Как вы реализуете конкурентность: с помощью многопоточности, Tokio или std::async?

Чем более экспрессивный язык, тем сложнее всё становится. И здесь на сцену выходит Go. И речь не только о gofmt, но и о его стандартной библиотеке и согласованности. В Kotlin вам приходится гадать, что лучше использовать для ошибок: исключения или объекты Result? В случае же Go вам всё ясно – ищем err. Да, это многословно, но зато предсказуемо.

Экспрессивные языки прекрасны, но часто создают путаницу. Вы можете использовать богатый и комплексный язык, поддерживающий миллион способов реализации одного и того же. Именно это я хочу вам показать. Как же сохранить всю эту мощь, но уменьшить беспорядок? Как избежать возникновения 500 поддиалектов? Но прежде, чем переходить к решениям, обсудим Scala.
Читать дальше →
Всего голосов 50: ↑52 и ↓-2+54
Комментарии22

Истории

Детки, не учитесь кодить. Вместо этого освойте моделирование

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

«Я хочу творить, а не быть следствием чужого творчества. Я хочу принадлежать к тем, кто создает смыслы, а не быть плодом этого смысла».

Представьте себе ситуацию. Скоро истекут сроки подачи документов в колледж. Очередная партия новичков изберет профессию, адепты которой постоянно задаются вопросом: «А нужны ли будут программисты через год... через пять лет... или через десять лет?». И хотя горячие дебаты на этот счет уже улеглись, в воздухе висит немой вопрос: не настанет ли час, когда крупные языковые модели, такие как ChatGPT, заменят нас на поприще написания кода. Неважно, кто ты — абитуриент, зависший в нерешительности перед выбором ВУЗа, или матерый кодер, я предлагаю тебе остановиться и кое-что переосмыслить. А поможет нам в этом деле... кукла Барби.

Читать далее
Всего голосов 39: ↑33 и ↓6+27
Комментарии48

Make Habr Hard Again: «железная» номинация «Технотекста»

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

Новый «Технотекст» стартовал в конце прошлого года. Посмотрев список номинаций, некоторые авторы-инженеры YADRO, которые занимаются разработкой и программированием серверов, СХД, микроэлектроники, не поняли, какую из них выбрать. Раньше же была отдельная «железная» номинация… Куда пропала? 

Не долго думая, мы написали организаторам конкурса и спросили, как нам вернуть важную, на наш взгляд, тему в фокус обсуждения хабросообщества. Так и запустили номинацию «Железо: проектирование и технологии производства» — свои тексты на эту тему вы можете отправлять до 15 апреля включительно. А чтобы немного подогреть к ней интерес, собрали «хардверные» призы для лучших текстов. В тексте рассказали больше о призах и условиях участия. Больше о призах и условиях участия читайте под катом. 

Что у вас там?
Всего голосов 56: ↑57.5 и ↓-1.5+59
Комментарии10

Создание серверного Live Chat приложения с использованием Next.js, Fauna и WunderGraph для GraphQL Live Queries

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

Пошаговое руководство по созданию масштабируемого, чат-приложения реального времени с использованием серверных технологий... с небольшой помощью от NextAuth.js для входа через GitHub. Кому нужны WebSockets, когда у вас есть Live Queries? Не нам!

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

Но что, если ваше приложение является серверным - работает на инфраструктуре, управляемой облачным провайдером, таким как AWS или GCP?

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

Итак, какое решение для создания приложений в реальном времени на серверных архитектурах? Давайте выясним! Давайте создадим этот чат в реальном времени в стиле Slack/Discord, используя Next.js в качестве нашего JS-фреймворка, Fauna (с использованием GraphQL) в качестве нашей базы данных, и WunderGraph в качестве Backend-for-Frontend (BFF), который обеспечивает связь между ними. Наше приложение также будет использовать вход через GitHub, и мы будем использовать знаменитый NextAuth (теперь Auth.js!) для наших нужд в области аутентификации.

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

Подключение к активной сессии пользователя (powershell-gui)

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

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

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

Автоматизация 2D-проектирования в линейке nanoCAD: инструменты и практика

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

Рассмотрим автоматизацию ключевых задач инженера-проектировщика: оформление проектно-конструкторской документации по СПДС; проектирование КМ, КЖ, КЖИ; разработку ПОС, ПОД и ППР; автоматическую векторизация и оцифровку сканов чертежей.

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

Как не надо проверять размер массива в С++

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

Как часто вам приходится сталкиваться с конструкцией sizeof(array)/sizeof(array[0]) для определения размера массива? Очень надеюсь, что не часто, ведь на дворе уже 2024 год. В заметке поговорим о недостатках конструкции, откуда она берётся в современном коде и как от неё наконец избавиться.

Читать далее
Всего голосов 84: ↑83.5 и ↓0.5+83
Комментарии103

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

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

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

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

Что такое semantic-release и как с ним работать

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

Привет! Я — Алексей Бондаренко, работаю в команде Платформа Банки.ру. Сегодня хочу рассказать о semantic-release и его практическом применении на примере упрощения разработки и внедрения библиотеки в проект. 

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

Разбираемся в новом роутинге в Go 1.22

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

В начале февраля 2024 года вышел Go 1.22. Вот, что нового и интересного принёс новый релиз: сделали более безопасное поведение переменных в циклах, добавили функции-итераторы в качестве rangefunc-эксперимента и улучшили шаблоны роутинга. В этой статье я сфокусируюсь на последнем, самом долгожданном, для многих, обновлении — шаблонах http-роутинга.

Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии3

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

Китайская электроника: в КНР постепенно переходят на собственное ПО и чипы. Что происходит?

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

КНР уже давно реализует программу развития отрасли разработки и производства электроники в стране. Причём достаточно успешно — настолько, что сейчас в ряде государственных учреждений планируется переход с чипов AMD и Intel на китайские процессоры. Кроме того, собираются в Китае замещать и ПО — в большинстве случаев на Linux-дистрибутив UOS. Подробности — под катом.

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

Клетка ХV. Картирование типов клеток

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

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

В рамках проекта Атлас клеток человека (Human Cell Atlas) создан такой атлас и уже используется. Он включил данные, полученные сразу несколькими международными исследовательскими коллективами. Развитие современных технологий секвенирования РНК отдельных клеток (scRNA-seg) показало, что типы клеток человеческого организма очень многообразны, сейчас насчитываются сотни различных типов. В предлагаемой работе приводится характеристика транскриптома, в рамках которого осуществляется картирование клеток, его структура и динамичность.

Транскриптом называют молекулу РНК, образующуюся в результате транскрипции (экспрессии соответствующего гена или участка ДНК). Примерами транскриптов являются: матричные РНК (мРНК). В статье приводится характеристика транскриптома, его структура и динамичность. Методы исследования транскриптов. Кодирующие и некодирующие РНК, их классификация, микро РНК, siРНК, нано-РНК, сборка транскриптов кратко рассматриваются в публикации.

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

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

Разрабатываем Nix в России

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

Спринт — особый формат мероприятий, который разработчики Nix и NixOS придумали, чтобы собираться вместе и вместе работать на проектами.

Что-то вроде хакатона, но без элемента соревновательности. Следующий спринт, если всё получится, пройдёт в Казани в августе. Здесь начало истории...

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

Превращаем голосовое сообщение в структурированную заметку

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

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

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

Как System/360 спасла IBM и переписала историю вычислений

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

7 апреля 1964 года, шестьдесят лет назад, компания IBM анонсировала семейство компьютеров с архитектурой IBM System/360. Автор книги «От хорошего к великому» Джим Коллинз включил System/360 в тройку лучших бизнес-достижений всех времен, наряду с моделью T Форда и первым реактивным лайнером Boeing 707.

IBM System/360 стала символом целой эпохи в истории информационных технологий. Именно для System/360 изобрели 8-битный байт. Также IBM/360 стала первой 32-разрядной компьютерной системой. В этой статье погрузимся в историю и узнаем, как IBM System/360 совершила технологический прорыв и превратила производство мэйнфреймов в крупномасштабный производственный процесс.

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

Fashion is ML profession! Материалы митапа

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

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

В Lamoda Tech мы создаем продукты, которые решают самые разные задачи пользователей и бизнеса. На митапе 28 марта мы рассказали, какие ML-модели работают у нас в проде и как мы строили эту работу. 

Делимся с вами видео выступлений и презентациями.

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

Business Intelligence — быстрый старт

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

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

В этой статье мы создадим .NET приложение для визуализации исторических реальных BI данных компании IBM о стоимости акций на нью-йоркской бирже за последние дни, код примера.

С учетом опыта над зарубежными (MercerInsight) и отечественными (Visiology) BI продуктами, а также над оригинальными BI системами для крупных отечественных IT компаний, у меня, честно говоря, сложилось впечатление, что популярным решением для визуализации и чуть ли не стандартом де-факто являются HighCharts. Безусловно, есть альтернативы (даже условно CrystalReports, DevExpress и т.д.), в этой статье будут использованы именно HighCharts, мы увидим их особенности и преимущества. Также для простоты будет просто обычный JS, но обычно в реальных проектах используются HighCharts в связке с одним из TypeScript фронтендным фреймворком.

Создадим новый MVC .NET проект (например, .NET 8) из .NET CLI и добавим dev HTTPS сертификаты:

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