Обновить
1095.35

Программирование *

Искусство создания компьютерных программ

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

Заглядывайте на стенд Рег.ру на ИТ-пикнике

17 августа в Москве в музее-заповеднике “Коломенское” пройдет ИТ-пикник, где соберутся IT-специалисты вместе со своими семьями. Там будем и мы. Приходите знакомиться!

Чем можно заняться на нашем стенде

→ Сконструировать облако из сладкой ваты именно для ваших ИТ-проектов, будь то миграция базы данных или масштабирование интернет-магазина. 

→ Замедлиться в уголке ЦОД-медитации, где можно будет насладиться расслабляющей атмосферой под звуки серверов дата-центра. А рядом вас будет ждать фотозона и бассейн с шариками и фламинго.

→ Проверить удачу и покрутить IT-барабан. Самые азартные смогут испытать свое везение, проверить собственные знания и получить крутые подарки. 

Что еще будет на ИТ-пикнике

→ Лекции. Эксперты расскажут о продуктовой разработке, архитектуре и качестве, кибербезопасности и менеджменту в ИТ. Параллельно будет идти научпоп-лекторий.

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

→ Музыка. Главный хедлайнер ИТ-пикника — Леонид Агутин! Выступление будет на главной сцене фестиваля.

Приходите на наш стенд, чтобы познакомиться поближе с облачными продуктами Рег.ру. Для регистрации на мероприятие переходите по ссылке.

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

Заметки в Телеграме - легко! Знакомьтесь, SUDAKIDAI ✍️

Часто находите интересные статьи в Телеграм-каналах, которые хочется сохранить на потом? Или просто нужно быстро записать идею, не выходя из мессенджера?

SUDAKIDAI - ваш личный помощник по сбору и хранению заметок прямо в Телеграме!

Как работает SUDAKIDAI:

  1. Пересылаете пост в бота @SUDAKIDAI_bot.

  2. ИИ-мотор на базе YandexGPT бота анализирует текст, выделяет ключевые моменты, определяет категорию и подбирает релевантные тэги.

  3. Ваша заметка готова! Она доступна в мини-приложении бота с удобным облаком тэгов для быстрого поиска нужной информации.

Преимущества SUDAKIDAI:

  • Простой интерфейс: интуитивно понятный и удобный для использования.

  • Автоматическая обработка: ИИ делает всю "черную работу" по структурированию информации.

  • Быстрый поиск: с помощью облака тэгов вы мгновенно найдете нужную заметку.

  • Бесплатный: SUDAKIDAI доступен для всех пользователей Телеграм.

Не теряйте ценную информацию!

Пробуйте SUDAKIDAI уже сегодня!

Ссылка на бота @SUDAKIDAI_bot

P.S. Делитесь своим опытом использования SUDAKIDAI в комментариях!

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

Теги:
Всего голосов 3: ↑2 и ↓1+3
Комментарии7

Как создать веб-приложение на базе VK Mini Apps 📱

Написали пошаговую инструкцию, в которой:

  • показываем, как создать интерфейс на основе готовых адаптивных VKUI‑компонентов;

  • затрагиваем все основные библиотеки социальной сети;

  • устанавливаем сертификаты и подключаем проксирующий сервер;

  • разворачиваем в облаке и загружаем на платформу VK;

  • добавляем приложение в каталог, чтобы его легко находили пользователи.

Особые навыки администрирования не понадобятся. Берем небольшие вычислительные мощности (1 CPU с 512 МБ RAM) и простой Docker-файл.

Начать изучение →

Теги:
Всего голосов 8: ↑8 и ↓0+10
Комментарии0

Математическая задача про кофейню

Привет, Хабровчане! Делимся интересной задачей. Попробуете решить? Пишите варианты ответов в комментариях.

Условия: Аня выбирает напиток в кофейне. В меню:

  • 7 видов кофе,

  • 2 вида горячего шоколада,

  • 5 видов чая.

Кофе и горячий шоколад готовят на обычном, соевом или овсяном молоке. Кофе может быть и без молока (а горячий шоколад всегда с молоком). Ещё в кофейне есть 8 сиропов, по желанию можно 1 или 2 разных добавить в кофе.

Вопросы:

  1. Аня берёт каждый день разные варианты напитков. Сможет ли она за три года перепробовать все возможные?

  2. Бариста сказал, что теперь любой из напитков можно сделать горячим или холодным. Сколько времени теперь понадобится Ане, чтобы попробовать все варианты?

Решение задачи опубликуем в комментариях :)

Больше подобных задач в бесплатном тренажере «Основы математики для цифровых профессий».

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

Легенда инфобеза Мокси Марлинспайк обвинил Agile в торможении инноваций в области программного обеспечения. По его словам, «магия» разработки ПО была утрачена за 20 лет из-за того, что разработчиков запихнули в «чёрные ящики абстракций», и это лишило их свободы, необходимой для инноваций.

«У любого, кто управляет инженерной организацией, будет некая философия управления, которая в некотором роде является нижестоящей или производной и как-то связана с гибкой методологией», — сказал Марлинспайк. Он считает, что гибкие команды в конечном итоге оказываются изолированными.

С ним согласился и генеральный директор Thistle Technologies Виндоус Снайдер.

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

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

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

«Работники кибербезопасности — это те, кто сидели в библиотеке, изучали заклинания, на самом деле понимали, как все это работает… как в мире Гарри Поттера. Единственное, что нужно, чтобы использовать эти знания, — это компьютер. И он даже не обязательно должен быть хорошим», — заключил Марлинспайк.

Теги:
Всего голосов 4: ↑4 и ↓0+7
Комментарии5

Всем привет!

Ну что, началось)
https://www.piter.com/collection/all/product/programmirovanie-na-python-s-pomoschyu-github-copilot-i-chatgpt

Ок, ещё одна книжка про ChatGPT. Смотрим аннотацию: «Используя GitHub Copilot, можно простым языком описать, что должна делать программа, а искусственный интеллект тут же сгенерирует ее. Узнайте, как создавать и улучшать программы на Python с помощью ИИ, даже если прежде вы не написали ни строчки компьютерного кода.».

И ещё: « Глава 4 — первая из двух глав, в которых вы научитесь читать код на языке Python. Действительно, Copilot будет писать код за вас, но вам нужно уметь читать его, чтобы определить, будет ли он делать то, что вы хотите. И не волнуйтесь: Copilot поможет вам читать код!»

И это не ролик, не статья, целая книга... Войти в IT, если с первого раза не получилось) Интересно, на собесах Copylot уже используют?)

Меня только один вопрос мучает: если человек не захотел или не смог освоить язык программирования или фреймворк - как хорошо он сможет спроектировать сервис или алгоритм?

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

Ежемесячный дайджест: новое за июль☀️

📺 Показали удобный способ, как развернуть Telegram-бота с сервисом Evolution Container Apps на бесплатном вебинаре. А в ближайших планах: 

💼 Разобрали кейс: АТОЛ — компания, которая занимается полным циклом разработки и производства оборудования для транспортной телематики поделилась, как улучшила производительность критически важных приложений 1C после миграции IT-инфраструктуры в Облако VMware от Cloud.ru. Другие кейсы можно посмотреть на нашем сайте.

📝 Поделились опытом и экспертизой:

☁️ Даем еще две недели, чтобы попробовать облако Cloud.ru юрлицам и ИП бесплатно. Успевайте подать заявку до 31 августа 2024 года!

🎧 Спросили у Максима Смирнова — frontend-разработчика из Т-Банка, кто такой frontend-архитектор, чем хорош фреймворк Angular и почему в работе так важна гибкость. Ответы в новом подкасте на YouTube-канале Cloud.ru

До встречи в сентябре!

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

Полезные ресурсы для начинающих разработчиков

Собрали IT-версию пакета с пакетами — подборку с подборками. Внутри каждой из них вы найдёте бесплатные курсы, телеграм-каналы, YouTube-каналы, книги, тренажёры и статьи. Они помогут изучить основы языков программирования, углубить знания и применить их на практике. 

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

→ Все курсы по программированию

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

Только не говорите, что я один этого не знал.

Если ссылку любого репозитория на GitHub, например такую:

https://github.com/Bednyakov/takewords

Дополнить строкой vscode.dev, чтобы получилось:

https://vscode.dev/github/Bednyakov/takewords

Проект откроется в онлайн редакторе Visual Studio Code.

Теги:
Всего голосов 11: ↑10 и ↓1+13
Комментарии3

Всем привет!

В продолжение предыдущего поста попробую сам себе возразить.
Предположим, что наши DevOps инженеры круто настроили pipeline: все атрибуты, которые должен настроить разработчик, параметризованы. Например, с помощью чартов Helm.
Значит ли это, что разработчик может расслабиться и не изучать все эти ваши Deployment, EnvoyFilter, VirtualService ...? Мой ответ - нет. И вот почему.

  1. если рассуждать дальше, то и Docker разработчику не нужен. Пусть его же DevOps-ы настраивают. А я на Tomcat встроенном запущу. Но вспомним в чем суть Docker - единая среда у разработчиков, тестировщиков и ПРОМа. Что позволяет избежать большой части ошибок, возникающих из-за разницы настроек окружения. Не всех, но большого числа

  2. окей, Docker пусть будет. А k8s? Но идея та же. Приложение в облаке ведёт себя по другому, чем в standalone. Его может в любой момент прибить k8s и поднять на другой node. А это ограничивает возможности локального кэширования. В облаке несколько приложений может работать параллельно. Это нужно учитывать, например, при чтении из топика Kafka. Более того число подов может меняться - см. HorizontalPodAutoscaler. Еще момент - по умолчанию у нас ephemeral storage и надеяться на сохранение логов после перезапуска нельзя. А ещё одно из Cloud Native требований - быстрый старт приложения, опять же из-за потенциального перезапуска в любой момент. На этот момент не всегда обращают внимание, хотя варианты улучшения времени запуска есть.

    Надеюсь, я вас убедил. Если нет - жду в комментах

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

Почему бы не сделать runtime языка С++ проще и легче? почему бы не сделать его перенос в том числе проще? Когда я задался этим вопросом, я решил, что во чтобы то ни стало, я напишу свой RT, для тех, кто пишет под слабые машины, или тех, кто пишет под bare metal среду. результат вы можете посмотреть на гитхабе: вотъ

Когда я работал, я старался максимально всё упростить, при этом сохранив юзабельность. не знаю как для других, но лично мне было важно сохранить исключения, для меня это удобно. но в С++ они жутко дорогие из-за RTTI (RunTime Type Information), и на bare metal реализуется с большим напрягом. выход прост - использовать статусы вместо типов. но чтобы оставить всем знакомый и удобный синтаксис исключений и позволить функциям возвращать что-то вместо статуса, где это везде лепят, я переделал всё на тупо макросах :>

так же я понял, что сложность моей работы и сложность переносимости этой вещицы усложнится, если прям всё с нуля пилить, поэтому просто воспользовался libc, выпилив libc++. Пришлось сделать обёртки над new и delete, но это не так уж и сложно, просто вызывать malloc/free.

Так же я невероятно сильно намучился в попытках сделать всё используя стандартный синтаксис С++. Потратил несколько часов в попытках разобраться как оторвать исключения от использования rtti, возился в флагах, писать cxa, gxx и unwind с нуля, даже лез в ассемблерный код в попытках вырезать надоеду, но по итогу сдался и просто слепил всё из макросов.

Всем добра <3

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

Впечатлился случайно найденным ресурсом и убил час, чтобы(, несмотря на кривое юзабилити,) найти оглавление. Вот оно:

https://opendsa-server.cs.vt.edu/home/books
(Sample OpenDSA eTextbooks)

Это один из (потенциально многих) несвязанных инстансов открытого движка для прохождения курсов по Computer Science и создания новых. Крутая его фишка: визуализация алгоритмов, структур данных и концепций, таких как стили вызовов функций - ещё и с упражнениями для закрепления.

Контента бездна, рекомендую прокликать ссылки.

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

Десять ресурсов для практики 

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

LeetCode
HackerRank
GeeksforGeeks
Codewars
Codeforces
CheckiO
Exercism
Coderbyte
CodeChef
Edabit

В бесплатных частях курсов Практикума мы также добавили возможность попрактиковаться (подойдёт совсем начинающим). Присмотритесь, подходит ли вам такой формат:

для фронтенд-разработчиков: напишете простую программу на JavaScript и сделаете страницу интерактивной;
для java-разработчиков: напишете консольное приложение;
для android-разработчиков: найдёте ошибки и запустите приложение «Конвертер валют»

Теги:
Всего голосов 6: ↑6 и ↓0+9
Комментарии3

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

Всем привет!

Когда заходит речь о разделении обязанностей между разработчиками и DevOps инженерами, споры обычно возникают в двух моментах - манифесты k8s\Openshift и CI джобы - они же джобы сборки. Поговорим про первые.
Мое мнение - за манифесты k8s\Openshift должны отвечать разработчики. Почему? А вот почему:

  1. liveness\readiness probes - только разработчики знают, по каким url они находятся. Конечно в мире Spring Boot и Actuator есть некая стандартизация, но не везде и не всегда. И не всегда actuator подходит для healthcheck, но это отдельная тема

  2. liveness\readiness timeouts - разработчики точно знают сколько времени старт пода. DevOps-ы могут это время эмпирически определить, но это требует времени)

  3. timeouts, circuit breaker, retry - опять же только разработчики могут сказать, реализовали они их на прикладном уровне или требуется настройка на уровне Service Mesh. Могут быть требования корпоративной архитектуры\сопровождения ПРОМ, их определяющие, но опять же не везде и не всегда.

  4. куда пишутся логи, какие существуют метрики, где их можно взять. Снова можно повториться, что где-то это стандартизировано, где-то нет.

  5. любые другие тонкие облачные настройки - переменные среды, значение параметров в ConfigMap, поддержка graceful shutdown .... Наверняка DevOps или сопровождение со всем этим разберется. Но будет ли это эффективно?

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

Написал web-сервис чтобы помочь возрастным родителям отправлять показатели счётчиков в коммунальные службы.

Дисклеймер: в данном посте рассмотрен мой личный опыт, опыт моих близких для которых данное решение работает в текущий период времени. Выбор стэка для реализации мои личные предпочтения, это pet-проект, делаю что хочу ;)

Мои родители в возрасте, они пользуются интернетом, но некоторые технологии даются очень тяжело. В тоже время, ряд (провинциальных) коммунальных компаний принимают показания счётчиков только по почте. Нет приложений, вэб-сайтов чтобы их отправить. Счётчики олдскульные и менять не планируют. И давно уже хотелось попробовать axum после многих лет с actix ;)

В итоге я написал крохотный web-сервис, который предоставляет собой web-интерфейс с минимумом телодвижений. Выбираешь адрес из списка, счётчик и указываешь значение. Автоматически подставляется предыдущий месяц как период оплаты, но можно выбрать другой. Жмёшь "Отправить" и письмо в нужном формате улетает по нужному адресу. Копия письма улетает моим родителям.

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

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

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

Коротко про стэк: rust, axum, config (конфигурация через yaml), terra (шаблонизатор), для фронта взят svelte (love.jpg)

Спасибо за внимание :)

Код и скриншоты проекта

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

Всем привет!

Хочется сказать пару слов о практике T-Shape. Это когда помимо основной специальности - например, разработки, ты развиваешься в чем-то еще. Если рассмотреть состав типовой команды, то это аналитик или тестировщик. Может быть DevOps или НТ. Или даже сопровождение ПРОМ. Насколько я знаю, такая практика есть в Яндексе. Рассмотрим плюсы и минусы на примере разработчика-тестировщика.

Плюсы очевидны:

  1. взаимозаменяемость членов команды

  2. упрощение найма за счет унификации

Но есть и минусы.

  1. суть работы тестировщика - найти проблемы в коде, рассматривая его как черный ящик. Именно потому, что тестировщик не знает, что внутри, но знает, как должно работать, ему удается найти "новые" баги. Конечно, можно ввести практику: код пишет один разраб, а тестирует другой. Но это усложнение и человеческий фактор.

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

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

    Итог - практика интересная, но требует высокой инженерной культуры и подвержена влиянию человеческого фактора

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

Интересный пример, когда определение friend T (где T — шаблонный параметр) имеет смысл:

template <class T>
class Badge {
   friend T;
   Badge() { }
};

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

class VFS {
   ...
public:
   void register_device(Device&);
   void unregister_device(Device&);
};

Предполагается, что эти методы будут вызываться внутри конструкторов (и деструкторов) Device и нигде (и никем) больше. Но как закрепить наше ожидание на уровне API?

Распространенное решение — вынести (un)register_device в приватную часть, а Device объявить другом:

class VFS {
private:
   friend class Device;
   void register_device(Device&);
   void unregister_device(Device&);
};

И это действительно запрещает всем кроме Device обращаться к данным методам. Но это так же разрешает Device обращаться ко всем остальным членам VFS!

Выразить же желаемое наиболее четко и ясно нам помогает как раз таки класс Badge, приведенный в самом начале статьи: мы можем оставить методы (un)register_device публичными, но при этом сделать их первым аргументом значение Badge<Device>:

class VFS {
    ...
public:
    void reg_Device(Badge<Device>, Device&);
    void unregister_device(Badge<Device>, Device&);
};

Теперь чужак не может использовать эти методы, потому что он не может сконструировать Badge<Device>, а а сам Device может вызывать их где и как пожелает:

Device::Device()
{
    VFS::instance().register_device({}, *this);
}

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

Концентрация полезных ссылок в июньском облачном дайджесте🔥

🔥 Предлагаем бесплатно попробовать облако Cloud.ru: подскажем, какой сервис лучше выбрать под вашу задачу, выделим грант или тестовый период и поможем мигрировать в облако. Подать заявку можно до 31 августа 2024 года.

✨ Обновили навигацию, дизайн и документацию на нашем сайте — провели большое UX-исследование, результаты которого легли в основу улучшений. Подробнее.

☁️ Выдаем Evolution free tier — бесплатный объем облачных ресурсов для тестирования и запуска pet-проектов. А за привязку карты при первой регистрации в личном кабинете — 4 000 бонусов (= 4 000 рублей), которые действуют 60 дней. С их помощью можно подключить к виртуальной машине любые сервисы, например, публичный IP и SNAT-шлюз. А в статье на Хабре разобрали мифы о бесплатных облачных ресурсах и частые вопросы про наш free tier.

💸 Предлагаем зарабатывать вместе с Cloud.ru: присоединяйтесь к реферальной программе, рекомендуйте наши облачные сервисы клиентам, коллегам или друзьям и получайте вознаграждение 15%. Теперь участвовать могут не только юридические лица и ИП, но и самозанятые.

🚀На конференции GigaConf 2024 анонсировали новую модульную облачную платформу Cloud․ru Evolution Stack для создания частного, гибридного или распределенного облака с учетом существующего IT-ландшафта компании. Подробнее в нашем Telegram-канале.

До встречи в августе!

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

В открытом доступе появился литкод по машинному обучению с задачами по линейной алгебре и deep learning.

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

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

Состоялся релиз отладчика GDB 15.1 (первый выпуск серии 15.x, ветка 15.0 использовалась для разработки).

Проект GDB поддерживает отладку на уровне исходных текстов для широкого спектра языков программирования (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust) на различных аппаратных (i386, amd64, ARM, Power, Sparc, RISC-V) и программных платформах (GNU/Linux, *BSD, Unix, Windows, macOS).

Ключевые улучшения:

  • для сборки GDB и GDBserver теперь необходим компилятор, поддерживающий C++17 (как минимум GCC 9);

  • внесены улучшения в Python API;

  • продолжена реализация протокола DAP (Debugger Adapter Protocol). Добавлена команда set debug dap-log-level для управления ведением логов для DAP. Добавлена поддержка запроса cancel и возможность формирования события process;

  • в протокол удалённой отладки добавлена поддержка пакетов QThreadOptions и qIsAddressTagged, а также реализована команда set/show remote thread-options-packet;

  • в индекс добавлена информация о функции main, что позволяет ускорить запуск при использовании с некоторыми большими исполняемыми файлами;

  • объявлены устаревшими MPX-команды show/set mpx bound, поддержка которых прекращена Intel в 2019 году.

Источник: OpenNET.

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

Вклад авторов