Pull to refresh
8
0
Send message

Хранение данных в Postgresql

Level of difficultyMedium
Reading time10 min
Views12K

В этом тексте хочется подробнее рассмотреть хранение данных в PostgreSQL на физическом уровне.

Для начала определимся с общеизвестными вещами. Данные хранятся в таблицах, таблицы находятся в схемах, схемы, в свою очередь, в базах данных. Под данными я тут подразумеваю одну или несколько строк. В качестве примера будем рассматривать эталон критики, по моему личному мнению, цитаты Линуса Торвальдса.

Подробнее под катом
Total votes 16: ↑15 and ↓1+18
Comments3

Обобщённые типы. Часть 1/3. Полиморфные типы высокого рода

Level of difficultyMedium
Reading time37 min
Views6.3K

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

Читать первую часть обзора
Total votes 16: ↑16 and ↓0+18
Comments5

Анатомия htmx

Level of difficultyMedium
Reading time15 min
Views14K



Hello world!


По данным 2023 JavaScript Rising Stars библиотека htmx заняла второе место в разделе Front-end Frameworks (первое место вполне ожидаемо принадлежит React) и десятое место в разделе Most Popular Projects Overall.


htmx — это библиотека, которая предоставляет доступ к AJAX, переходам CSS, WebSockets и Server Sent Events прямо из HTML через атрибуты, что позволяет создавать современные пользовательские интерфейсы (насколько сложные — другой вопрос), пользуясь простотой и мощью гипертекста. На сегодняшний день у библиотеки почти 30 000 звезд на Github. Удивительно, что до такого решения мы додумались только сейчас, учитывая, что весь функционал был доступен уже 10 лет назад (вы сами убедитесь в этом, когда мы изучим исходный код htmx).


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

Читать дальше →
Total votes 23: ↑21 and ↓2+28
Comments8

1 апреля — о серьёзном: факапы бэкапов

Level of difficultyEasy
Reading time10 min
Views13K

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

Боишься ли ты не делать бэкапы?
Total votes 46: ↑45 and ↓1+63
Comments80

Как устроено пространство, в котором думают языковые модели?

Level of difficultyHard
Reading time5 min
Views19K

С момента выхода первой статьи «Attention is All You Need» я с жадностью и любопытством, присущими любому исследователю, пытаюсь углубиться во все особенности и свойства моделей на базе архитектуры трансформер. Но, если честно, я до сих пор не понимаю, как они работают и почему так хорошо обучаются. Очень хочу разобраться, в чём же причина такой эффективности этих моделей, и есть ли предел их возможностей?

Такому изучению трансформеров «под микроскопом» и посвящена наша научная работа, только что представленная на конференции EACL 2024, которая проходила на Мальте — «The Shape of Learning: Anisotropy and Intrinsic Dimensions in Transformer-Based Models». В этой работе мы сфокусировались на наблюдении за пространством эмбеддингов (активаций) на промежуточных слоях по мере обучения больших и маленьких языковых моделей (LM).

Читать далее
Total votes 44: ↑43 and ↓1+55
Comments18

Desert Racer: Первая игра, разработанная исключительно на CSS с возможностью управления свайпом

Level of difficultyMedium
Reading time11 min
Views10K

Я разработал игру Desert Racer, чтобы показать уникальные и инновационные приемы, которые используют только CSS, включая функционал свайпа и детектирования столкновений, выполненные исключительно средствами CSS. На мой взгляд, это первые в своем роде решения. Вы вольны бросить вызов этому утверждению. В данной статье мы рассмотрим упомянутые техники и обсудим общие этапы создания игры со свайп-управлением.

Идеален ли CSS для этой задачи? На данный момент, возможно, нет. Однако CSS начинает заменять некоторые функции обработчиков событий JavaScript. Я надеюсь, что эта статья внесет вклад в продвижение к этой цели. В конце концов, как творческому человеку, мне нравится использовать неподходящие инструменты для создания чего-то, что считается невозможным — это вызов, который я не могу игнорировать. У меня было предчувствие, что это должно работать, и оно оправдалось.

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

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

Сложная архитектура простых приложений

Level of difficultyMedium
Reading time14 min
Views8.7K

По мотивам Adidas Running (ex. Runtastic)

Как я бы проектировал это интересное, но малоизвестное у нас приложение в роли архитектора.

Предыстория

Рынка систем электронных соревнований (в 2012 г) нет, но есть огромный интерес к спортивному образу жизни и к соревнованиям. В США не менее 50 миллионов (!) человек (это примерно 15% всего населения) хотя бы раз в неделю выходят на пробежку.

Адидас имеет объем продаж 20–30 млрд долл. в год.

Основной рынок – США, остальные страны – второстепенные рынки.

Посмотреть архитектуру
Total votes 12: ↑10 and ↓2+12
Comments4

Бьемся с индексацией парных неравенств в PostgreSQL

Level of difficultyMedium
Reading time6 min
Views4.8K

Я уже не раз писал, что условия с несколькими неравенствами (<, <=, >=, >) обычно плохо подходят для индексирования "классическим" btree, вызывают "тормоза", и необходимо придумывать различные нетривиальные подходы в PostgreSQL, чтобы добиться хорошей производительности подобного запроса.

В этой статье мы не только рассмотрим способы решения подобных задач "в общем виде", но и покажем, как нам удалось автоматизировать их решение в рамках функционала рекомендаций индексов нашего сервиса анализа планов explain.tensor.ru и его новых возможностях.

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

Монорепозиторий с pnpm и typescript для фронтенда на React и бэкенда на Node.js

Level of difficultyMedium
Reading time3 min
Views6.2K

Устанавливаем pnpm, создаем воркспейсы для фронта и бека, импортируем что угодно из одного в другое, типизируем запросы и избавляемся от бойлерплейта.

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

Рекомендации при работе с PostgreSQL

Level of difficultyMedium
Reading time10 min
Views27K

Доброго времени суток. Основываясь на своём опыте хочу представить некоторые рекомендации при разработке кодовой базы на SQL.

Данные рекомендации получены горьким опытом, так что надеюсь, они Вам помогут :)

Читать подробнее и больше не косячить
Total votes 51: ↑48 and ↓3+51
Comments53

Бардак в GNOME — это не случайность

Level of difficultyMedium
Reading time13 min
Views57K

GNOME удалось добиться, казалось бы, невозможного: это самая ограниченная по возможностям и раздутая десктопная среда для Linux. Но это не просто случайность. Это результат высокомерия и дилетантства основных разработчиков, превративших архитектурные решения GNOME в шедевр хаоса. Чтобы лучше понять, что происходит, давайте проанализируем некоторые из примеров. Даже если ни один из них не затрагивает непосредственно вас, стоит понять modus operandi ведения проектов GNOME и то, как они вредят сообществу Linux.
Читать дальше →
Total votes 132: ↑124 and ↓8+147
Comments274

Как я пытался писать функциональные компоненты без хуков на react

Level of difficultyEasy
Reading time6 min
Views9.1K

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

Читать далее
Total votes 10: ↑5 and ↓5+4
Comments37

Люди не понимают ООП

Level of difficultyMedium
Reading time15 min
Views118K

«ООП для меня означает лишь обмен сообщениями, локальные ограничения и защиту, сокрытие состояния процесса и крайне позднее привязывание», — Алан Кэй (человек, придумавший термин «объектно-ориентированное программирование»)1

Похоже, многим не нравится объектно-ориентированное программирование. Первое, что приходит в голову, когда слышишь эту трёхбуквенную аббревиатуру — это пример с автомобилем, наследование, геттеры, сеттеры и ObjectFactoryFactorySingleton.

Мне это всегда казалось довольно странным. Мне не только нравится ООП, я ещё и считаю, что часто это лучший/наиболее очевидный способ моделирования задачи. И ниже я расскажу, почему.
Читать дальше →
Total votes 126: ↑119 and ↓7+140
Comments461

Ода бесполезности споров

Level of difficultyEasy
Reading time6 min
Views35K

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

Традиционно начну издалека. Меня всегда интересовал вопрос: Почему ученые, раз такие умные, не вступают в дискуссии с обывателями, одержимыми разными лженаучными глупостями – ведь показать им истину не сложно: наука выработала многоженство инструментов, способных убедительно доказать любой спорный вопрос: от наличия законов Менделя на примере садовых мушек, до отмены «Новой Хронологии» через дендрохронологический анализ.

Сейчас я знаю ответ – переубедить сторонников лженаучных теорий невозможно. Но вовсе не потому, что они серьёзно заблуждаются. А в точности до наоборот – их невозможно переубедить, потому что они не заблуждаются вообще.

Рассмотрим это на историческом примере:
Total votes 224: ↑217 and ↓7+246
Comments475

Трудности маскирования текстового поля

Level of difficultyEasy
Reading time6 min
Views10K

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

Хороший UI/UX помогает пользователю избежать большинства таких проблем. Инструментов контроля огромное количество, сегодня расскажу про один их них — создание маски для поля ввода силами Javascript.

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

Молодые математики открывают новую главу в изучении простых чисел

Level of difficultyEasy
Reading time11 min
Views41K
Анимация отсева по Эратосфену, где показаны кратные величины каждого простого числа, простирающиеся вдоль числовой оси.

Более 2000 лет назад греческий математик Эратосфен разработал метод поиска простых чисел, получивший название решето Эратосфена, который остаётся актуальным по сей день. Его идея заключалась в том, чтобы определять простые числа вплоть до заданной точки путём постепенного «отсеивания» тех, которые таковыми не являются. Начинается отсев с вычёркивания всех чисел, кратных 2 (кроме самой 2), затем кратных 3 (кроме 3). Следующее число, 4, уже оказывается вычеркнуто, значит, очередным шагом идёт вычёркивание всех чисел, кратных 5 и так далее. Все оставшиеся в итоге числа считаются простыми, то есть такими, которые делятся только на 1 и на самих себя.

Эратосфен работал со всем множеством простых чисел, но вы можете использовать вариации его метода для поиска таких, которые будут обладать особыми свойствами. Хотите найти «близнецов», которые отличаются всего на 2 единицы, например, 11 и 13 или 599 и 601? Для этого есть свой отсев. Интересуют простые числа, которые на 1 больше полного квадрата, например, 17 или 257? И для этого тоже есть свой отсев.
Читать дальше →
Total votes 48: ↑44 and ↓4+62
Comments39

Поговорим об оптимизирующих компиляторах. Сказ седьмой: борьба с проверками диапазонов

Level of difficultyMedium
Reading time10 min
Views6.5K

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

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

Не набирайте тексты в интернете, или Обфускация времени между нажатиями клавиш в SSH

Level of difficultyEasy
Reading time5 min
Views47K


В августе этого года в ssh(1) (клиент OpenSSH) внесено изменение с поддержкой обфускации тайминга нажатий клавиш, то есть интервалов между временем нажатия клавиш на клавиатуре.

Спрашивается, почему разработчики озаботились такими нюансами информационной безопасности? Но причина есть. И на самом деле такие меры должны предпринять все программы, которые допускают ввод паролей в интернете (или вообще любого конфиденциального текста). В первую очередь, браузеры и мессенджеры.
Читать дальше →
Total votes 95: ↑95 and ↓0+95
Comments125

Мнение три года спустя: стоил ли того переход с JavaScript на Rust?

Level of difficultyMedium
Reading time7 min
Views39K

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

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

Спустя три года, выполнив несколько развёртываний в продакшен, написав электронную книгу и выпустив примерно сто пакетов на crates.io, я решил, что настало время поделиться своими мыслями о Rust.

Читать далее
Total votes 40: ↑39 and ↓1+53
Comments64
1
23 ...

Information

Rating
Does not participate
Location
Россия
Registered
Activity

Specialization

Fullstack Developer
Junior
React
TypeScript