Pull to refresh
3
0
Кирилл Хорошилов @hokid

Full Stack developer

Справится ли ChatGPT с внесением изменения в код?

Level of difficulty Easy
Reading time 7 min
Views 4.1K
Московский кредитный банк corporate blog Python *Programming *Artificial Intelligence
Tutorial

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

В результате из кода с цикломатической сложностью 19 получился код с цикломатической сложностью 5, при этом сам код изменился до неузнаваемости.

Мне стало любопытно сможет ли ChatGPT описать что делает этот код и реализовать в нем новое требование.

Что из этого вышло — узнайте в тексте статьи.

Покажите что получилось
Total votes 7: ↑5 and ↓2 +3
Comments 11

Как при помощи Rust в 150 раз ускорить код на Python

Level of difficulty Easy
Reading time 6 min
Views 22K
SkillFactory corporate blog Python *Programming *Rust *
Translation

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


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


Обзор


Проблему решим в 6 шагов:


  1. Решим вопрос о том, почему функция медленная.
  2. Подготовим проект.
  3. Перепишем функцию в Rust.
  4. Скомпилируем код на Rust и разместим его в пакете Python.
  5. Импортируем пакет Python в проект.
  6. Выполним бенчмарк чистого Python и функции на Rust.

Пакет maturin скомпилирует Rust-код и преобразует его в готовый к работе пакет Python.


1. Решим вопрос о том, почему функция медленная


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

Читать дальше →
Total votes 42: ↑27 and ↓15 +12
Comments 42

Может ли наша реальность быть суммой всех прочих реальностей

Reading time 9 min
Views 9.2K
Popular science Physics
Translation

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

Читать далее
Total votes 45: ↑38 and ↓7 +31
Comments 17

Fitter —  сшиватель API/Website's, часть личного проекта которую хотел опенсорснуть

Level of difficulty Easy
Reading time 4 min
Views 2.5K
High performance *Programming *HTML *Go *Open data *
Case

Добрый вечер всем!

Возможно выбрал не лучшее время для охвата аудитории, но тем не менее главное чтоб продукт был хороший, а не статья о нем. Последние несколько недель я пишу приложение в рамках которого надо собирать огромное количество информации из сети(запросы к API/парсинг HTML кода) и под конец 4-ой интеграции я подумал что надо бы это максимально облегчить(не дело это пересобирать приложение под каждый чих интеграции), возможно это не лучшая преамбула, но хотя бы была реальная проблема решение к которой хотелось показать и заопенсорнуть.

Итак Fitter = сшиватель достаточно жаргонный перевод, но мне он кажется что лучше всего подходит. Я делал эту штуки исходя из следующих предположений:

Читать далее
Total votes 7: ↑6 and ↓1 +5
Comments 9

О «раздутом пузыре» нейросетей

Level of difficulty Medium
Reading time 8 min
Views 89K
Python *Programming *Machine learning *Artificial Intelligence Natural Language Processing *
Opinion

На днях я наткнулся на одно любопытное видео.

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

Утверждения:

1. Закон Мура больше не выполняется из-за фундаментальных физических ограничений ⇒ масштабирование нейросетевых моделей по вычислительному бюджету невозможно.

2. Нейросетевые модели внедряются слишком медленно.

3. Ответы нейросетевых моделей неконтролируемы и неинтерпретируемы.

Дальше обсудим каждое из них.

Читать далее
Total votes 140: ↑136 and ↓4 +132
Comments 171

Магия нейросетей: как математика помогает создавать искусственный интеллект

Level of difficulty Medium
Reading time 5 min
Views 8.2K
Machine learning *Popular science Artificial Intelligence Science fiction The future is here
Opinion

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

Однако, даже если принцип чёрной коробки тут и абсолютно уместен, то вот магии действительно никакой нет. Зато как и у всего в нашем мире там есть математика, очень много математики. Может ли математика внутри современных генеративных нейросетей порождать логические структуры и системы с новыми свойствами(во время обучения) подобно тому, как простые правила игры жизнь порождают многообразие её жителей? Безусловно, хотя бы потому что современные нейросетевые архитектуры являются тьюринг‑полными, что было показано например здесь.

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

Всем материалистам добро пожаловать...
Total votes 10: ↑7 and ↓3 +4
Comments 5

Пишем расширение Chrome, которое ворует вообще всё

Reading time 10 min
Views 17K
Information Security *Google Chrome Browser extensions Browsers
Tutorial
Translation

Пусть Manifest v3 и ограничил возможности браузерных расширений, но я считаю, что они далеко не исчерпаны. Чтобы доказать это, создадим расширение Chrome, крадущее максимально возможное количество данных.

Мы добьёмся двух целей:

  • Исследуем грани возможного для расширений Chrome
  • Продемонстрируем, что вы подвержены опасности, если не будете аккуратны с тем, что устанавливаете.

Примечание: на самом деле реализация этого расширения — злодейство. Вам не следует использовать в злонамеренных целях полномочия расширений, красть пользовательские данные и создавать зловредные браузерные расширения. Любые реализации, производные расширения или применение этих техник без разрешения Национальной баскетбольной ассоциации не рекомендуются.
Читать дальше →
Total votes 41: ↑39 and ↓2 +37
Comments 12

Сказ о том как pet-project превратился в небольшой пассивный доход (часть 1)

Level of difficulty Easy
Reading time 5 min
Views 34K
Programming *Nginx *Go *
Case

Я backend разработчик с опытом около 3-х лет, пишу в основном на Golang. Проработал в нескольких крупных российских компаниях. Сейчас я параллельно со своей работой пытаюсь сделать удобный, дешевый VPN сервис с высокой пропускной способностью. В этой статье я хочу просто рассказать про жизненный цикл своего проекта. Возможно кому-то будет просто интересно почитать, а кто-то может почерпнуть что-то новое для себя.

Читать далее
Total votes 55: ↑52 and ↓3 +49
Comments 40

Пишем GPT в 60 строк NumPy (окончание, 2/2)

Level of difficulty Medium
Reading time 15 min
Views 8.4K
Python *Algorithms *Mathematics *Machine learning *Artificial Intelligence
Tutorial
Translation
image

В первой части поста мы начали реализацию с нуля GPT всего в 60 строках numpy.

Во завершающей части мы загрузим в нашу реализацию опубликованные OpenAI веса обученной модели GPT-2 и сгенерируем текст.
Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Comments 5

Зачем нужен личный сайт в 2023 году

Level of difficulty Easy
Reading time 7 min
Views 21K
RUVDS.com corporate blog Website development *Instant Messaging *Server Administration *History of IT

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

Потом выросли соцсети типа ЖЖ, «Одноклассников», «ВКонтакте» — и личные странички сошли на нет. Кто теперь вспомнит о тех бесплатных хостингах, которые рекламировались на каждом углу?

Но сейчас история делает новый виток — и персональные сайты опять входят в моду, только на современных технологиях.
Читать дальше →
Total votes 86: ↑80 and ↓6 +74
Comments 100

Как я делаю OCR

Level of difficulty Easy
Reading time 1 min
Views 6.8K
Machine learning *
Recovery mode
🤖 Machine learning season

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

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

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

Для решения проблемы я написал собственную программу для разметки данных.

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

Читать далее
Total votes 39: ↑38 and ↓1 +37
Comments 2

Гайд по эвент-сорсингу

Level of difficulty Medium
Reading time 19 min
Views 6.8K
Programming *Designing and refactoring *API *Microservices *
Tutorial

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

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

Читать
Total votes 29: ↑24 and ↓5 +19
Comments 103

Пишем GPT в 60 строк NumPy (часть 1 из 2)

Level of difficulty Medium
Reading time 16 min
Views 53K
Python *Algorithms *Mathematics *Machine learning *Artificial Intelligence
Tutorial
Translation

В этом посте мы начнём реализацию с нуля GPT всего в 60 строках numpy. Во второй части статьи мы загрузим в нашу реализацию опубликованные OpenAI веса обученной модели GPT-2 и сгенерируем текст.
Читать дальше →
Total votes 96: ↑94 and ↓2 +92
Comments 32

О сущностях, DTO, ORM и Lazy Load

Reading time 3 min
Views 12K
Website development *.NET *Designing and refactoring *C# *
Объектно-ориентированная парадигма — стандарт для прикладного ПО. Реляционные СУБД — стандарт хранения данных в прикладном ПО. Да, можно писать и на Haskell и хранить данные исключительно в ClickHouse. Но речь о мейнстриме.

ORM позволяет натянуть сову на глобус сделать вид, что RDBMS'а нет и данные хранятся в объектной модели, более подходящей для ООП. Остается «маленькая» такая проблемка — эта абстракция, как и многие другие, «течет». Там где в объектной модели ссылка на другой объект в базе данных foreign key и id. В момент материализации сущности мы встаем перед выбором:

  1. Загрузить все и упасть с out of memory / timeout
  2. Явно указать какие зависимости мы хотим загрузить, а какие — нет и нарушить принцип tell don't ask
  3. Загружать зависимости неявно по требованию с помощью Lazy Load и получить проблемы с производительностью где-то в вызываемом коде

Какую-же ногу себе отрезать: левую или правую?

TLDR Lazy Load не так плох, если использовать только для записи и не использовать при чтении. Но все не так просто и есть куча нюансов.
Режь правую!
Total votes 30: ↑26 and ↓4 +22
Comments 6

Основы компьютерных сетей. Тема №3. Протоколы нижних уровней (транспортного, сетевого и канального)

Reading time 26 min
Views 284K
System administration *IT Infrastructure *Cisco *Network technologies *
Tutorial

Приветствую всех читателей. Пришло наконец время поговорить о протоколах, находящихся на нижних уровнях. В этой статье будут разобраны протоколы канального, сетевого и транспортного уровней. Присаживайтесь поудобнее и читайте на здоровье.
Читать дальше →
Total votes 46: ↑42 and ↓4 +38
Comments 10

Основы компьютерных сетей. Тема №2. Протоколы верхнего уровня

Reading time 29 min
Views 472K
System administration *IT Infrastructure *Cisco *Network technologies *
Tutorial
И снова всем привет! Сегодня речь пойдет о протоколах верхнего уровня. Разберем, как они работают, из чего состоят и где применяются теоретически и на практике.


Приятного чтения
Total votes 44: ↑43 and ↓1 +42
Comments 27

Основы компьютерных сетей. Тема №1. Основные сетевые термины и сетевые модели

Reading time 14 min
Views 1.1M
System administration *IT Infrastructure *Cisco *Network technologies *
Tutorial
Всем привет. На днях возникла идея написать статьи про основы компьютерных сетей, разобрать работу самых важных протоколов и как строятся сети простым языком. Заинтересовавшихся приглашаю под кат.


Читать дальше →
Total votes 35: ↑30 and ↓5 +25
Comments 61

Обзор исходного кода Quake 2

Reading time 51 min
Views 57K
Game development *Image processing *Reverse engineering *
Translation
image

Около месяца свободного времени я уделил чтению исходного кода Quake II. Это был удивительный и поучительный опыт, потому что в движок idTech3 внесено большое изменение: Quake 1, Quake World и QuakeGL объединены в одну красивую архитектуру кода. Особенно был интересен способ, которым достигли модульности, несмотря на то, что язык программирования C не обеспечивает полиморфизма.

Quake II во многих отношениях является блестящим образцом программного обеспечения, потому что это был самый популярный (по количеству лицензий) трёхмерный движок всех времён. На его основе было создано более 30 игр. Кроме того, он ознаменовал переход игровой индустрии от программной/8-битной системы цветов к аппаратной/24-битной. Этот переход произошёл примерно в 1997 году.

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

Процесс «подчистки» меня сильно увлёк: в статье теперь более 40 мегабайт видео, скриншотов и иллюстраций. Сейчас я не знаю, стоили ли мои труды того, и нужно ли публиковать в будущем необработанные заметки в ASCII, выскажите своё мнение.
Total votes 111: ↑110 and ↓1 +109
Comments 63

Производительность старта JavaScript

Reading time 11 min
Views 27K
VK corporate blog High performance *Website development *JavaScript *Client optimization *
Translation


Веб-разработчики знают, как легко разрастаются размеры веб-страниц. Но загрузка страницы — это не просто передача байтов по проводу. Когда браузер загрузил скрипты, ему нужно их отпарсить, интерпретировать и запустить. В статье мы внимательно рассмотрим эту фазу и узнаем, почему она может стать причиной замедления запуска вашего приложения и как это исправить.
Total votes 55: ↑55 and ↓0 +55
Comments 3

Information

Rating
Does not participate
Location
Краснодар, Краснодарский край, Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer
Senior
From 200,000 ₽
JavaScript
CSS
HTML
React
TypeScript
Node.js