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

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

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

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

LLM и ее невозможный ASCII art

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

LLM и ASCII art - казалось бы взаимоисключающие понятия. Какое отношение лингвистическая модель может иметь к графическим образам?

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

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

Новости

Rust 1.80.0: типы LazyCell, LazyLock, проверяемые имена и значения cfg, эксклюзивные диапазоны в шаблонах

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

Команда Rust рада сообщить о новой версии языка — 1.80.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.80.0 вам достаточно выполнить команду:


$ rustup update stable

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


Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках.

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

Разнообразные орбиобразия

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

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

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

Кратко про сетевые протоколы в Golang: TCP, QUIC и UDP

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

Сегодня мы кратко рассмотрим то, как реализовать такие протколы, как TCP, UDP и QUIC в Golang.

Начнем с TCP.

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

Истории

Переадресация портов в Kubernetes: команда kubectl port-forward

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

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

Переадресация портов — это процесс перенаправления сетевого трафика с одного порта на другой, что позволяет получать доступ к внутренним сервисам кластера Kubernetes из внешней сети.

Команда kubectl port-forward позволяет перенаправлять трафик с локального компьютера на определенный порт внутри пода

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

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

Как написать мод для TrackMania 2020 и не запутаться

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

Привет, Хабр! Меня зовут Вова, я разработчик в Selectel. В прошлом году серии TrackMania исполнилось 20 лет. Это игра моего детства и мне захотелось «размять свои юные олдскулы», посмотреть, что изменилось, и применить новые навыки.

В этой статье кратко расскажу запутанную историю серии, придумаю себе проблему в игре и героически решу самописным модом. Материал будет также интересен мододелам других игр — инструментарий здесь прекрасен.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+25
Комментарии1

Реализация сапёра в 100 строках чистого Ruby

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

Ruby — весьма экспрессивный язык, в котором очень многое зачастую можно реализовать буквально в ста строках кода. Именно поэтому мне так нравится искать способ создать то же самое, но в более сжатом виде.1

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

В нашем случае мы проделаем это на примере старого доброго «Сапёра». Помню, как играл в него на Windows XP ещё пацаном. Если и вы разделяете аналогичные воспоминания, то приветствую вас, мои друзья-миллениалы!
Читать дальше →
Всего голосов 23: ↑21 и ↓2+32
Комментарии2

Пожалуй, самый простой способ спасти ваше .NET-приложение, или Prometheus (и не только) спешит на помощь

Уровень сложностиСредний
Время на прочтение32 мин
Количество просмотров2.8K
Существует множество возможных проблем приложений, которые удается заметить лишь с опозданием. Особенно когда релиз уже состоялся… К счастью, существует пара ключевых инструментов, которые выручают почти в любой ситуации, — и вряд ли найдется что-то проще.



Меня зовут Александр Пугач, я — Senior .NET Developer в проекте Data Warehouse «Лаборатории Касперского» (да-да, вы могли не знать, но у нас в компании широко используются .NET и «шарпы»).

В этой статье я расскажу, как работать с метриками в .NET на примере OpenTelemetry и Prometheus — систем, которые помогают отслеживать проблемы в работе приложений и быстро на них реагировать, обеспечивая стабильную и отказоустойчивую работу сервисов.

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

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

Заставляем работать MinIO и Postgresql вместе

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

Всем привет, в этой статье я хочу рассказать, как у меня получилось интегрировать MinIO и Postgres, а именно, что после каждой загрузки картинки в объектное хранилище у нас появляется запись в БД.

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

Выбор JavaScript фреймворка: Сравнение React, Angular и Vue Глазами Разработчика

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

В мире фронтенд-разработки существует множество различных фреймворков, которые помогают сделать процесс создания веб-приложений более удобным и эффективным. Я являюсь частью этого мира уже более 4-х лет, сейчас занимаю должность фронтенд разработчика в компании Loyalty Labs. За все время в IT я познакомилась с разными инструментами и фреймворками, и хотела бы обсудить трёх "гигантов" в области frontend: React, Angular и Vue.

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

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

Подсветка элементов онбординга. Spotlight onboarding / Highlight element. SwiftUI iOS15+

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

Всем привет! Меня зовут Саша, я iOS-разработчик компании Ozon. Я занимаюсь разработкой и развитием мобильного приложения продавца. Сегодня хотел бы поделиться опытом нашей команды по кастомизации онбординга для вашего мобильного приложения.

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

- Как представить новую фичу пользователю?

- Как сделать так, чтобы пользователь не пропустил добавленный функционал?

- Как повысить количество взаимодействий с новым функционалом?

Также возникает вопрос упущенного этапа продажи новой фичи — подача обновления пользователю.

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

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

Интерполяция: рисуем плавные графики с помощью кривых Безье. Версия 2

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

Доброго времени суток, харбачитатель.

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

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

TypeScript + React: путь к идеально типизированному коду

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

Частенько сталкиваются с проблемой поддержания типовой безопасности в React-проекте. Код разрастается, и управление типами становится всё сложнее. Ошибки, вызванные неправильной типизацией, приводят к крашам и длительным отладкам. Тогда приходит время внедрения TypeScript!

В статье рассмотрим как TypeScript может помочь решить проблемы с типизацией и сделать React-код идеально типизированным.

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

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

Создание игр на Unity: с чего начать?

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

Создание игр на Unity: с чего начать?

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

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

Чем заменить Docker Hub в России

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

Не так давно все наблюдали блокировку Docker Hub в РФ, которая длилась с 30 мая по 3 июня. Хотя сейчас Docker Hub вновь доступен, я успел разработать некоторую автоматизацию для переноса всех своих проектов и решил ими поделиться (пускай и очень поздно). В этом посте я расскажу как жить с блокировкой и как быстро перевести текущие проекты, использующие Docker Hub.

Читать далее →
Всего голосов 17: ↑7 и ↓10-1
Комментарии8

Случайные блуждания: связь с резистивным расстоянием (часть 3)

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

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

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

Ускорение генерации токена LLM в два раза для больших контекстов

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров1.3K
Помимо ChatGPT и многочисленных конкурентов в облаке с веб-мордами и/или API, существует огромная экосистема для запуска LLM на собственном железе. На Huggingface на любой бюджет найдется модель для скачивания, которая влезет в видеопамять (или в RAM, можно и на CPU запускать, если пользователь терпеливый). Вчера здесь на Хабре была очень неплохая обзорная статья.

Самые популярные open source тулы для локального запуска LLM — llama.cpp и vllm (и их многочисленные обертки). У них немного разные ниши, и дальше я буду писать о llama.cpp. Она поддерживает все возможные комбинации железа и ОС — Linux, MacOS, Windows; x86 CPU, Arm, Apple Silicon CPU & GPU, Nvidia, AMD,… Но автор и мейнтейнер — Георгий Герганов использует для разработки Mac Studio. Почему такой выбор железа?

Производительность генерации каждого токена LLM в одном потоке ограничена вычислительной мощностью в процессе построения KV-кэша (анализ промпта до генерации первого токена), и пропускной способностью памяти при генерации последующих токенов. При этом в обоих случаях очень полезно уметь быстро загружать веса из видеопамяти в ALU видеокарты (или CPU).
Читать дальше →
Всего голосов 10: ↑10 и ↓0+17
Комментарии5

Простые приёмы, которые сделают ваш код нагляднее

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

Упорядоченный, опрятный, хорошо написанный для восприятия код помогает быстрее выявлять случайные ошибки, и позволяет глазам быстрее "парсить" код, что в целом ускоряет время выполнения задач. В этой статье я, Андрей Рик, fullstack-разработчик с 10+ лет опыта коммерческой разработки, рассказываю как и зачем писать опрятный код.

Читать статью
Всего голосов 20: ↑11 и ↓9+7
Комментарии53

Использование алгоритма Бойера-Мура-Хорспула в Java с примером решения задачи с LeetCode

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

Алгоритм Хорспула используется для нахождения подстроки в строке. Например, у нас есть строка «The game is over» и подстрока «over». Алгоритм Хорспула вернет значение первого вхождения подстроки «over» в строку «The game is over», а именно 12. 

Фактически, данный алгоритм является упрощенным алгоритмом Бойера-Мура, который, считается работает лучше, чем стандартный алгоритм на случайных текстах, но в худшем случае его скорость равна |needle| * |haystack| вместо 3 х |haystack|. 

Тем не менее, для восприятия, на мой взгляд, он гораздо проще.

Итак, погнали.

Условие задачи с leetcode: https://leetcode.com/problems/find-the-index-of-the-first-occurrence-in-a-string/description/

Как работает алгоритм?

Строка и подстрока совмещаются по первому символу, и начинаются сравниваться от последнего символа к первому.

Для примера возьмем строку: «aabcdadbc» и подстроку «adb»

Совмещаются строки следующим образом (слева направо):

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

justCTF 2024 [teaser] — blockchain

Уровень сложностиСложный
Время на прочтение22 мин
Количество просмотров356

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

Погрузиться в решение CTF-задач
Всего голосов 4: ↑4 и ↓0+8
Комментарии0
1
23 ...

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