Обновить
1
0

Пользователь

Отправить сообщение

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

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

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

Читать далее

Go gamedev: низкоуровневое API рисования в Ebitengine

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели2.7K

Я уже несколько лет использую игровой движок Ebitengine, но ранее у меня получалось обходиться лишь высокоуровневым способом отрисовки объектов — DrawImage.


Функция DrawTriangles казалась не очень понятной человеку, который привык к концепции "есть спрайт — можно рисовать".


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


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


Читать дальше →

Мем айсберг SQL: погружение в глубины баз данных

Уровень сложностиСредний
Время на прочтение53 мин
Охват и читатели17K

Мем айсберг SQL: погружение в глубины изучения баз данных

Мем айсберг SQL — это вирусное интернет-изображение, изображающее айсберг с несколькими слоями. Вершина айсберга содержит общеизвестные концепции и инструменты SQL, такие как операторы SELECT и JOIN. Однако по мере погружения под воду становятся видны более абсурдные и малоизвестные аспекты SQL.

Читать далее

SOLID в Go и щепотка паттернов

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели8.1K

SOLID-ная статья о принципах SOLID, которую вы можете предложить тем, кто хочет понять эти принципы в контексте языка Go. Или прочитать самостоятельно, если это интересно и вам.

И да, как сказал бы волк из небезызвестного мультика: «SOLID? Шо, опять?»

Читать далее

Паттерны Go — Паттерн «Опции» — ключ к простому рефакторингу в будущем

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели1.9K

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

Читать далее

Golang: context изнутри

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели5.7K

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

Читать далее

Golang: bytes.Buffer изнутри

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

Работая с кодом на Go, любому специалисту приходилось сталкиваться со стандартным пакетом bytes . Внутри него лежит определение Buffer . Что же это такое?

Читать далее

Golang: пакет bytes изнутри

Уровень сложностиСредний
Время на прочтение26 мин
Охват и читатели4.1K

Приветствую, в прошлой статье мы разбирали определение bytes.Buffer изнутри. Теперь хочется обратить внимание на сам пакет bytes. Что за ним скрывается? Каждому разработчику приходилось использовать его будь то в production или локальной разработке. Это достаточно мощный по своим меркам пакет, который предоставляет нам функции для работы с байтами.

Читать далее

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

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.1K

Смотрим, как вездесущий PostgreSQL справляется с нестандартными для реляционной системы управления базами данных (СУБД) ролями: хранением и поиском временных рядов, пар «ключ — значение», эмбеддингов для больших языковых моделей и многомерных кубов. Отвечаем на вопрос: действительно ли так нужно строить сложные архитектуры со множеством разнородных систем хранения данных — MongoDB, Redis, InfluxDB, Pinecone, ClickHouse, Apache Cassandra — или можно обойтись одним PostgreSQL?

Привет, Хабр! Меня зовут Александр Брейман, я доцент департамента программной инженерии факультета компьютерных наук НИУ ВШЭ и по совместительству эксперт Учебного центра IBS по управлению данными и архитектуре ПО. В прошлой статье я рассказывал о миграции с Oracle на PostgreSQL, а сегодня разберу, как последний работает с нетипичными видами данных.

Читать далее

Как американская коррупция превратила физика-ядерщика в быдло-кодера

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели109K

Это история из цикла «как войти в IT», написанная старпером, ветераном броуновского движения, который помнит динозавров. Поэтому его опыт вхождения в ИТ никому не пригодится, но представляет интерес с точки зрения истории.  

Также поделюсь своим мыслями об интерфейсе инженерного ПО. Участвуя в разработках различного ПО, предназначенного для ускорения разработки сложных систем, периодически приходится выслушивать жалобы от новых пользователей на «кривой и устаревший» интерфейс ПО. Однако инженеры, погруженные в проблемы проектирования реальных железок, вообще не задают нам таких вопросов, либо потому, что уже искривили свои руки о кривой интерфейс, либо им это вообще неважно. Более того, есть два примера, когда реальные высокопрофессиональные инженеры в своей области предъявляли претензии обратного свойства, и первая версия кривая версия GUI была удобнее, а вот улучшения делали какие-то полупокеры. 

К написанию данного текста меня подтолкнула беседа с одним из крутых разрабов из «жирной» конторы, с которым мы пересеклись на яхте в Средиземном море. Узнав, что я тоже из Бауманки, и у меня свой бизнес, он заинтересовался и выспрашивал. Как я смог начать бизнес на софте, почему не пошел в большую контору, типа Yandex, Сбер и прочие. У него тоже знакомство с софтом началось как создание собственной разработки по анализу результатов металлургических испытаний в лаборатории, но закончилось работой прогером по найму. Попивая вино на яхте где-то между Турцией и Грецией в 2023 году, он предположил, что, возможно, если бы он продолжал писать софт для металлургических исследований, то, наверное, сейчас мог плавать на своей яхте, а не арендованной, и не около Турции, а на Карибах (но это не точно). А поскольку фарш невозможно провернуть назад, я решил описать свою историю успеха, так как она забавна и поучительна.

Читать далее

Go развивается в неверном направлении

Время на прочтение7 мин
Охват и читатели13K
Язык программирования Go известен своей простотой в использовании. Благодаря продуманному синтаксису, возможностям и инструментарию, Go позволяет писать легко читаемые и поддерживаемые программы произвольной сложности (см. этот список на GitHub).

Некоторые инженеры-программисты называют Go «скучным» и «устаревшим», поскольку в нем отсутствуют передовые возможности других языков программирования, такие как монады, опциональные типы, LINQ, средства проверки заимствований, абстракции с нулевыми издержками, аспектно-ориентированное программирование, наследование, перегрузка функций и процедур и т. д. Хотя эти возможности могут упростить написание кода для определенных областей, они имеют ненулевые издержки в дополнение к преимуществам. Эти возможности обычно хороши для тренировки мозга. Но нам не нужна дополнительная умственная нагрузка при работе с производственным кодом, поскольку мы и так заняты решением бизнес-задач. Основная цена всех этих возможностей – возрастание сложности результирующего кода:
Читать дальше →

Go и pgx. Пагинация в запросах к БД Postgres

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

Доброго дня! Хочу поделиться лайфхаком по реализации универсального способа пагинации в произвольных запроса к БД для получания списков.

Имеем изначально задачу по реализации HTTP REST CRUD сервера на Go. База данных - PostgreSQL. Используемый драйвер - pgx - PostgreSQL Driver and Toolkit.

Задача в общем тривиальная - сделать так, чтоб запросы получали на вход параметры пагинации (номер страницы, количество записей на страницу) и отдавали на выход поля таблицы и общее доступное количество страниц.

Общее количество страниц в таблице БД получить несложно:

Читать далее

Анти-паттерны в Go Web Applications

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели5.9K

В какой-то момент моей карьеры меня перестало радовать ПО которое я разрабатывал.

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

Читать далее

Кратко: как новичку создать чат-бот с Gradio и ChatGPT?

Время на прочтение4 мин
Охват и читатели7.1K

Хотя подключение GPT к интерфейсу Gradio кажется тривиальной задачей, у некоторых новичков возникают трудности, поэтому мы максимально подробно расписали весь процесс создания чат-бота.

Читать далее

Закон Бекхэма в Испании: налоговый режим для цифровых кочевников и стартапов

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели15K

Закон Бекхэма - один из самых частых вопросов по налогам в Испании при получении стартап-визы и визы цифрового кочевника. В 2023 году закон был обновлен, предоставляя еще более значительные налоговые льготы для цифровых кочевников и стартаперов.

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

Читать далее

Почти все, что вы хотели бы знать про Docker

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

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

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

Читать далее

Получение информации с LeetCode о пользователе на Golang

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

В данной статье будет рассмотрено, как можно написать программу на Golang для получения информации о пользователе с помощью API LeetCode. Для разработки будет использоваться библиотека graphql на Golang, чтобы отправить запросы к API LeetCode и получить необходимые данные о пользователе. Для простоты взаимодействия с пользователями будет использован Telegram API. Стоит добавить, что для Телеграм бота не нужно покупать отдельный хостинг, можно все сделать локально, нужно только доступ к интернету.

Продолжить

Кот, меняющий строки

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели4K

Первая и пока единственная сказка из серии cказкок для инженеров-программистов младшего уровня .

Эта статья была опубликована на моём личном блоге. Эта статья практически полностью её повторяет, лишь отредактирована под Хабр (частично).

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

Редактор Хабра подсказывает, что на чтение статьи у вас уйдёт около 21 минуты. Спешу обрадовать, это не так. Хорошо бы запастись как минимум часом.

Читать далее

Потрясающе быстрые теневые стеки для Go

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

Программные теневые стеки могут обеспечить до 8 раз более быструю трассировку стека в Go рантайме по сравнению с раскруткой указателя фрейма, которое было реализовано в go1.21. Это не означает, что данная идея должна сразу же вырваться из лаборатории, но она предлагает интересный взгляд на потенциальное будущее трассировки стека с аппаратным ускорением через теневые стеки.

Читать далее

Об одном использовании gRPC: HTTP-прокси pog-server

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели2.2K

В наше время программисту приходится использовать прокси-сервера. Я пользовался одним, пока не потребовался доступ к ChatGPT: так у меня стало 2 прокси-сервера.

Затем мне потребовался Terraform. Он заработал, однако вместе с этим я делал запросы к Google API, и тот забраковал прокси-сервер. Так мне пришлось балансировать, когда и какой прокси-сервер использовать.

Так появилась задача найти такой кристально чистый IP, чтобы через него были доступны сервисы выше и не только.

Читать далее

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность