Pull to refresh
0
0
morfeylatulipe @morfeylatulipe

User

Send message

Будущее наступило, восстание машин уже идёт. Просто ползучим методом

Level of difficultyEasy
Reading time16 min
Views4.9K
В отличие от большинства своих статей, сегодня я не буду рассказывать ни о каких своих находках в области разработки железа или программ. Сегодня меня тянет пофилософствовать о глобальной проблеме – отношению ряда ответственных работников к внедрению программных систем в повседневную жизнь.

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

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


Читать дальше →
Total votes 35: ↑27 and ↓8+27
Comments29

Почему я отказался от Disqus и вам тоже пора

Reading time2 min
Views52K
Замена Disqus на Commento снизила размер страниц в 10 раз

Когда я завёл блог, то установил Disqus для комментариев. Это был естественный выбор: сайты по всему интернету ставили Disqus, его легко настроить, и есть бесплатный вариант использования. Я спокойно интегрировал движок комментариев и двинулся дальше.

Но вот в чём дело: я всегда знал, что Disqus немного раздувает страницы. Я ведь писал о веб-производительности и обычно старался оптимизировать страницы. Но я просто предположил, что Disqus прибавляет немного лишних килобайт. Логика: если он сильно раздувает страницы, все бы уже давно отказались от него. Очевидно, Disqus старается не увеличивать трафик, верно?

Я ошибался.
Читать дальше →
Total votes 146: ↑145 and ↓1+144
Comments48

SQLAlchemy 2.0 для новичков

Level of difficultyEasy
Reading time6 min
Views6.2K

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

Предполагается, что вы знакомы с базовым синтаксисом языка Python и, возможно, новичок в программировании.

Читать далее
Total votes 11: ↑7 and ↓4+5
Comments6

Ассемблер для программистов на языках высокого уровня: Hello World

Level of difficultyMedium
Reading time6 min
Views23K

Если вы начинали изучение программирования с JavaScript, Rust, C или любого другого высокоуровневого языка, то ассемблерный код может показаться вам непонятным или даже пугающим.

Рассмотрим следующий код:

section .data
  msg db "Hello, World!"

section .text
  global _start

_start:
  mov rax, 1
  mov rdi, 1
  mov rsi, msg
  mov rdx, 13
  syscall

  mov rax, 60
  mov rdi, 0
  syscall

К счастью, по второй строке мы можем понять, что он делает.

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

С чего же вообще начать?

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

Завершив прочтение этого руководства, вы сможете ориентироваться в ассемблерном коде, будете знать, где искать информацию, и даже сможете самостоятельно писать простые программы.
Читать дальше →
Total votes 61: ↑57 and ↓4+69
Comments41

Версионирование. Автоматизация. А может всё вместе?

Level of difficultyMedium
Reading time6 min
Views3K

Всё уже придумано, просто настрой под себя и пользуйся.

Всем привет, я Дмитрий Валеев — DevOps инженер в команде разработки фреймворка для тестирования устройств на заводах Аквариус. И это моя первая маленькая статья на Хабр:)

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

Узнать больше
Total votes 13: ↑11 and ↓2+14
Comments2

Потоки событий бесполезны без действий

Level of difficultyEasy
Reading time9 min
Views5.3K

Каждая точка данных в системе, регулярно генерирующей данные, соответствует событию (Event). Потоки событий (Event Stream) — это непрерывный поток событий или точек данных. Иногда потоки данных называют в сообществе разработчиков потоками данных (Data Stream), потому что они состоят из непрерывных точек данных. Event Stream Processing — это действия, выполняемые с генерируемыми событиями.

В этой статье подробно рассматриваются потоки данных и Event Stream Processing, рассказывается, как работает Event Stream Processing, объясняются различия между Event Stream Processing и Batch Processing, преимущества и способы применения ESP, а завершается она наглядным примером Event Stream Processing.
Читать дальше →
Total votes 23: ↑22 and ↓1+30
Comments0

Flutter + чистая архитектура: разбираем на примере

Reading time17 min
Views76K

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

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

Flutter - стремительно набирающий популярность фреймворк для разработки кроссплатформенных приложений. В списке поддерживаемых платформ - iOS, Android, web, в бете находится поддержка десктопа.

Под катом - рассказ о том, как построить flutter-приложение с использованием идей чистой архитектуры.

Читать далее
Total votes 22: ↑21 and ↓1+24
Comments36

Использовать LLM в оффлайне — LocalAI, Ollama, Flowise

Level of difficultyEasy
Reading time5 min
Views14K

Привет, Хабр.

В этой статье о том, как без написания кода поставить себе локально и использовать LLM без подключения к сети. Для меня это удобный способ использования в самолёте или in the middle of nowhere. Заранее выгрузив себе нужные файлы, можно делать анализ бесед саппорта с клиентами, или получить саммарайз отзывов из стора на приложение, или оценить резюме/тестовое задание кандидата...

Читать далее
Total votes 9: ↑8 and ↓1+7
Comments5

Legacy PHP-FPM в Kubernetes

Level of difficultyMedium
Reading time8 min
Views7.2K

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

Узнать больше
Total votes 13: ↑13 and ↓0+13
Comments6

Flowise: доступ к AI без кода

Level of difficultyEasy
Reading time8 min
Views7.2K

Привет, Хабр!

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

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

Как приручить нейросеть: практический опыт

Reading time5 min
Views24K

Итак, в прошлой статье я уже немного рассказывал о том, что с LLM можно работать и даже построить определенный RAG. Как и обещал, перейдем к практике! :)

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

Читать далее
Total votes 26: ↑26 and ↓0+26
Comments16

Deeplinks и Flutter

Reading time5 min
Views14K

В мире Android и iOS разработки есть механизм диплинков. Диплинк представляет из себя обычную ссылку, при переходе на которую у вас открывается приложение (если таковое имеется) и зачастую показывается определенный контент. В этой статье мы разберемся, как заимплементить диплинки для нашего Флатер приложения для двух платформ: Android и iOS.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments12

Посторонись, Copilot: подборка разнообразных AI-инструментов для разработчиков

Level of difficultyEasy
Reading time4 min
Views34K

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

Читать далее
Total votes 26: ↑24 and ↓2+30
Comments8

Почему в Петербурге так сложно построить карьеру VP of engineering

Reading time7 min
Views35K
Привет, Хабр! Меня зовут Святослав Кулаков, я VP of Engineering в Aurea Software. Вся моя жизнь прошла в Питере: я родился и вырос на улице Союза Печатников напротив Мариинского театра, учился во второй гимназии с углублённым изучением английского языка и физмата, поступил в Университет аэрокосмического приборостроения (ГУАП). После учёбы я работал в нескольких софтверных компаниях в России и США, но в итоге всё вернулся в Санкт-Петербург и оставался тут даже когда это казалось верной дорогой к карьерному болоту.



На основании своего личного опыта я расскажу о том, почему многим IT-специалистам нереально найти в Санкт-Петербурге работу по своему уровню, как работает механизм перетягивания лучших специалистов — как минимум, в Москву, а то и сразу в США или другие страны. И о том, как мне всё-таки удалось найти в родном городе свою лучшую работу на данный момент. Но обо всём по порядку.

Из Санкт-Петербурга в Санкт-Петербург через Санкт-Петербург


Моя трудовая биография началась с позиции Java-разработчика в небольшой софтверной компании в 1999 году. За следующие 9 лет я продвинулся по карьерной лестнице до позиции Эккаунт Менеджера, где мне подчинялось более 100 человек. Кризис 2008 года сбил нас на взлёте, и моей следующей записью в трудовой стала должность Lead IT Process Manager в московском отделении Deutsche Bank. Полтора года спустя мне поступило заманчивое предложение из США: консультировать бизнес-клиентов компании Grid Dynamics в вопросах оптимизации процессов разработки.
Читать дальше →
Total votes 60: ↑53 and ↓7+46
Comments179

Принцип подстановки Лисков

Reading time6 min
Views52K

Всем привет, меня зовут Константин. Я занимаюсь разработкой на Java в Tinkoff.ru и люблю SOLID. В этой статье мы сформулируем принцип подстановки Лисков, покажем его связь с принципом Открытости-Закрытости, узнаем, как правильно формировать иерархию наследования и ответим на философский вопрос о том, является ли квадрат прямоугольником.


Читать дальше →
Total votes 43: ↑33 and ↓10+30
Comments76

Принцип Единой Ответственности (SRP) на примере Laravel

Reading time4 min
Views9.2K
Принцип SRP (Принцип Единой Ответственности) — один из основополагающих принципов написания поддерживаемого кода. В этой статье я покажу как применить данный принцип на примере языка PHP и фреймворка Laravel.

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

Конечно, в статьях и книгах это описывается в качестве примера, но часто воспринимается как призыв к действию в рабочих проектах. Такой подход неизбежно приведет к неконтролируемому разрастанию класса и сильно усложнит поддержку кода.
Читать дальше →
Total votes 12: ↑9 and ↓3+9
Comments14

Микросервисы со Spring Boot. Часть 3. Создание микросервиса конвертации валют

Reading time13 min
Views31K
Это третья часть серии статей по основам микросервисных архитектур, в которой вы узнаете, как создать микросервис конвертации валют.

В этой серии статей вы познакомитесь с концепцией микросервисов и узнаете, как создавать микросервисы с помощью Spring Boot и Spring Cloud.

Это руководство поможет вам изучить основы микросервисных архитектур. Мы также начнем рассматривать базовую реализацию микросервиса со Spring Boot.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments3

Использование Liquibase для управления структурой БД в Spring Boot приложении. Часть 1

Reading time5 min
Views95K
В этой статье я разберу использование утилиты Liquibase в Spring Boot приложениях для версионирования структуры реляционной БД и миграции этой структуры с одной версии на другую. В первой части разберем базовый пример, а во второй поговорим об использовании liquibase-mave-plugin для отката изменений и автоматической генерации скриптов через сравнение структур БД.

Начнем с того, что создадим простейшее приложение на Spring Boot + JPA (Hibernate). В этом нам поможет Spring Initializr. Из зависимостей выбираем JPA, MySQL и Web. Liquibase тоже можно подключить на этом шаге, но для лучшего понимания мы это сделаем далее вручную.
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments40

Использование Liquibase для управления структурой БД в Spring Boot приложении. Часть 2

Reading time7 min
Views39K
В предыдущей части мы разобрались с основными возможностями Liquibase и написали базовый пример Spring boot приложения, который использует Liquibase для инициализации БД. Полный код базового приложения можно увидеть тут на GitHub. В этой статье мы поговорим про liquibase-maven-plugin и те дополнительные возможности, которые он нам дает для версионирования структуры БД. Начнем с того, как автоматически создавать скрипты при помощи функции сравнения.

Предположим, что нам понадобилось внести какие-либо изменения в структуру нашей БД. Например, мы хотим, чтобы email не мог быть null. Безусловно, для такого маленького изменения можно было бы подкорректировать код и скрипты вручную, но как быть если изменений будет больше? В этом случае к нам на помощь придет встроенная в Liquibase возможность сравнения БД. Интересной её особенностью является то, что сравнивать можно не только две базы данных, но и базу данных с набором JPA сущностей в нашем приложении. Именно так мы сейчас и поступим!
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments12

Микросервисы со Spring Boot. Часть 2. Создание микросервиса Forex

Reading time11 min
Views23K
Это вторая часть серии статей по основам микросервисных архитектур, в которой показывается, как создать микросервис с помощью Spring Boot и заставить его работать с Spring MVC, JPA, Hibernate и H2.

В этой серии статей вы познакомитесь с концепцией микросервисов и узнаете, как создавать микросервисы с помощью Spring Boot и Spring Cloud.

Это руководство поможет вам изучить основы микросервисных архитектур. Мы также начнем рассматривать базовую реализацию микросервиса со Spring Boot.

Мы создадим пару микросервисов и заставим их общаться друг с другом с помощью сервера имен Eureka (Eureka Naming Server) и Ribbon для балансировки нагрузки на стороне клиента.
Читать дальше →
Total votes 2: ↑2 and ↓0+2
Comments0

Information

Rating
Does not participate
Registered
Activity