Как реализовать хранение и работу каталога папок в PostgreSQL? Есть большое количество вариантов. Но хочется, чтобы реализация выглядела лаконично, не нарушала прозрачность выполняемых операций, не вызывала блокировок, не требовала большого вовлечения клиента в специфику работы и т.д. Потому сегодня попробуем реализовать хранение древовидных структур и работу с ними без использования триггеров, блокировок, дополнительных таблиц (представлений) и внешних инструментов в SQL.
Пользователь
Как я начал заниматься спортом по 2-3 часа в день
Удаленный режим работы и хобби, связанные с сидячим образом жизни, привели мою спину в неблагоприятное состояние. Трех и даже пяти сессий физической активности в неделю при отсутствии необходимости постоянно двигаться не достаточно для нормального функционирования.
Надо было что-то менять. Нейрохирург посоветовал завести собаку, чтобы не было возможности избежать прогулки хотя бы раз в день. Я же пошел другой дорогой, о которой хочу рассказать.
Я бы пересмотрел вообще всё
В программировании нет вообще никаких непреложных истин. Даже самые очевидные правила могут иметь контекст, в которых их применять нельзя. К сожалению в 99% организаций есть прям заповеди, обязательные к исполнению. И есть правила, которые считаются правилами хорошего тона (как не сморкаться в занавеску). Однако всегда бывают ситуации, когда лучше все-таки сморкаться.
Вот примеры.
1) Например, DRY — don’t repeat yourself. Хорошее полезное правило, но его можно довести до маразма. Из того что я встречал на практике: есть два разных по бизнес-смыслу раздела, которые начинались с простого CRUD, и многие части (и фронта и бека) выглядели во многом абсолютно одинаково. Если их объединить с помощью общей высосанной из пальца абстракции и тем самым избавиться от небольшого дублирования кода, то потом (очень скоро) можно будет сойти с ума, потому что эти две вещи скоро разъедутся, обрастая кастомными фичами, и абстракция будет только вредить. Нельзя абстрагировать неабстрагуемое, даже если DRY нарушен.
«[Немного] дублирования обходится гораздо дешевле, чем неправильная абстракция» — Сэнди Мец
Т.е. DRY — хороший принцип, но бывают исключения.
Джон Кармак взялся за сильный ИИ — и у него особый подход. Список фундаментальной литературы для начала
В рубрике «Выдающиеся программисты 21 века» уже была статья про гения программирования Джона Кармака, создателя движков для Doom, Quake и других культовых игр. Потом он занялся разработкой ракет (они в Armadillo Aerospace реализовали вертикальную посадку раньше SpaceX), а затем — систем VR, софта для Oculus Rift и других устройств. Сейчас началась четвёртая фаза в его карьере.
В интервью изданию Dallas Innovates 52-летний Кармак рассказал о новом проекте — системе сильного ИИ (AGI), над которым он работает самостоятельно, без участия больших корпораций, как отшельник в своём особняке в Далласе.
Сильный ИИ общего назначения не будет уступать среднему человеку в понимании происходящего и решении проблем. По оценке Кармака, с вероятностью 60% такая система (альфа-версия) будет создана до 2030 года, с вероятностью 95% — до 2050 года. Это самая важная и интересная задача, которая сейчас стоит перед человечеством.
Что не так с Metaverse
Если Цукерберг переедет жить в VR, то ему там будет одиноко: никто за ним не последует
Meta* может оказаться той ошибкой, которая похоронит даже Facebook. Мертворождённый проект, на который Цукерберг сделал амбициозную ставку, сам по себе, конечно, крупнейшую в мире социальную сеть в мире не уничтожит. Но фокус на «Мете» в тот момент, когда к самому «Фейсбуку» подкрадываются проблемы возраста — как самого сервиса, так и его аудитории, украдёт у него самое дорогое: время, необходимое для трансформации. Скорее всего, и сам Цукерберг понимает, что эпоха «Фейсбука» прошла — поэтому и сделал ставку на «Мету». Но эта ставка могла оказаться преждевременной, потому что, по всем признакам, эпоха VR ещё не наступила.
*Meta, Facebook и Instagram признаны экстремистской организацией и запрещены в России.
MIT, Гарвард и Лига плюща: как я поступала в лучшие ВУЗы США
О том, как я пыталась поступать в самые лучшие ВУЗы планеты на прикмат и что я из этого вынесла.
Как не выстрелить себе в ногу, обрабатывая ошибки в голанге
А пока мы все сидим и ждём выхода Go 2 с его новой схемой обработки ошибок, программы писать надо прямо сейчас. Так что от обработки ошибок никуда не деться.
У меня в руках реальный проприетарный проект, который работает на одной из моих серверных ферм. Всё запущено и крутится на golang от начала и до конца. В этой статье я собрал и описал большое количество вариантов обработки ошибок, с которыми столкнулся в проде.
Итак, поехали.
Chrome DevTools: Хитрости при отладке
В сети полно обзоров Chrome DevTools, которые демонстрируют многочисленные возможности этого прекрасного инструмента. DevTools настолько большие, что познать их полностью, как мне кажется, уже почти невозможно.
В этой заметке я бы хотел остановиться на различных нюансах, полезных при отладке. Какие-то из них я почерпнул в сети (например в комментариях на Хабре), до каких-то додумался сам. Надеюсь вы найдёте для себя что-нибудь полезное.
Под катом:
— Как отладить popup-ы, которые исчезают при потере фокуса
— Как убить повисший JS-цикл, не убивая вкладку
— Различные нюансы работы с breakpoint-ми
— Методы ведения войны с sourceMaps
— Перехват network-запросов
— Как отладить race-condition
— Почему стоит опасаться галочки "disable cache"
— Что делать если у вас не Hi-DPI экран?
Бесплатный персональный OpenVPN-сервер на базе Oracle Cloud
На этот раз статья будет короткой и во многом самоочевидной. Потому что большинство потенциальных пользователей просто не знают о такой возможности, а сама настройка проста, как апельсин.
Oracle, придя на рынок облачных сервисов, активно привлекает новых клиентов. И одним из инструментов такого привлечения являются Always Free сервисы - зарегистрировавшийся клиент может пользоваться каким-то достаточно ограниченным набором ресурсов, как это следует из названия, бесплатно и неограниченно во времени. В список этих ресурсов входит два compute инстанса (каждый 2 ядра, 1GB RAM, 45GB HDD), которые можно использовать подо что угодно, но в нашем случае мы можем построить на них полностью бесплатный OpenVPN-сервер, буквально не умея практически ничего, кроме тыкания в кнопку Next. Чем мы и займемся.
Опасности пользования онлайн-менеджерами паролей
Введение
Я потратил немало времени на то, чтобы разобраться с поверхностью атаки популярных менеджеров паролей. Думаю, я провёл больше времени над их анализом, чем кто-либо ещё, поэтому у меня есть право на мнение.
Во-первых, давайте кое-что проясним. По какой-то причине, только пару тем вызывают более горячее обсуждение, чем пароли. Возможно, политика и религия, но на этом всё. Поэтому вы вполне можете не согласиться с моим мнением.
Во-вторых, каждому нужно использовать уникальные пароли. Вам не обязательно применять для этого менеджер паролей, подойдёт любая работающая система. Вполне приемлемо пользоваться блокнотом, лежащим в ящике стола.
Итак, начнём.
Python: 18 задач на вывод символов по заданному шаблону
Здесь продемонстрировано 18 примеров кода. Начинающие программисты вполне могут проработать всё по порядку, а опытные могут разобраться именно с тем, что им нужно. Главное — понять, как устроен тот или иной пример. Отсутствие чёткого понимания того, что происходит в программах, способно сыграть злую шутку с тем, кто, например, заучив фрагмент кода и воспроизведя его на собеседовании, попытается объяснить то, как именно этот код работает. А тех, кто проводит собеседование, часто интересуют именно такие вот разъяснения.
Что делать, если украли смартфон
Евгений (MalDeckard) Черешнев поделился личным опытом и написал исчерпывающий гайд, который может помочь многим людям и предостеречь от последствий:
У меня на днях украли смартфон — профессиональный вор-велосипедист на скорости выхватил из рук прямо в центре города и был таков. Это может случиться с кем угодно и в любой стране мира. Я, в силу профессиональной деформации вокруг IT, данных, приватности и безопасности, к ситуации был морально готов и знал, что делать. Друзья, с которым поделился историей посоветовали написать памятку, которую может использовать каждый человек, даже далекий от айти. Этот текст — эта самая памятка. Смартфон она вам не вернет. Но, если кому-то поможет снизить ущерб и сэкономит седых волос — значит, не зря потратил время на написание, а вы — на прочтение.
Справедливости ради, большинство воров уже в курсе того, что каждый смартфон — это, по сути, радиомаяк, по которому всегда можно укравшего отследить. Поэтому они редко оставляют его включенным — практически сразу достают и выбрасывают SIM-карту, сам телефон вырубают и сдают на запчасти за копейки. Что крайне обидно — ибо шансы того, что, например, мой iPhone 12 Pro Max 512 банально разберут на экран, аккумулятор и несколько особо востребованных микросхем — стремятся к 100%. То есть, вор украл крайне дорогой девайс, а получит за него или хрен или (если он идиот) — срок. Но это не всегда так. Иногда можно получить реально грузовичок и тележку проблем. Во-первых, в ряде типов краж (как в моем случае) телефон попадает в руки плохого парня в разлоченном состоянии и есть риск, что злоумышленник девайс специально не залочит — будет держать его активированным и извлекать из него максимальную пользу, на что у него будет в теории до 24ч (после чего сработает система защиты в заводских настройках и снова попросит ввести пин-код, даже, если телефон до сих пор разлочен).
Как я изучал структуры данных и алгоритмы для собеседования в FAANG
Эта история началась в 2015 году, когда стартап, к которому я присоединился как «сотрудник-основатель», закрылся через шесть месяцев после первого раунда инвестиций, и я искал новую работу. Первое моё собеседование было с Codecademy, где на этапе телефонного разговора меня заверили: «Не волнуйтесь, мы не задаём сумасшедших вопросов об алгоритмах или что-то в этом роде». И я им поверил…
Индексы в PostgreSQL — 7
Мы уже познакомились с механизмом индексирования PostgreSQL и с интерфейсом методов доступа, и рассмотрели хеш-индексы, B-деревья, индексы GiST и SP-GiST. А в этой части займемся индексом GIN.
GIN
— Джин?.. Джин — это, кажется, такой американский спиртной напиток?..
— Не напиток я, о пытливый отрок! — снова вспылил старичок, снова спохватился и снова взял себя в руки. — Не напиток я, а могущественный и неустрашимый дух, и нет в мире такого волшебства, которое было бы мне не по силам.
Лазарь Лагин, «Старик Хоттабыч».
Gin stands for Generalized Inverted Index and should be considered as a genie, not a drink.
README
Общая идея
GIN расшифровывается как Generalized Inverted Index — это так называемый обратный индекс. Он работает с типами данных, значения которых не являются атомарными, а состоят из элементов. При этом индексируются не сами значения, а отдельные элементы; каждый элемент ссылается на те значения, в которых он встречается.
Хорошая аналогия для этого метода — алфавитный указатель в конце книги, где для каждого термина приведен список страниц, где этот термин упоминается. Как и указатель в книге, индексный метод должен обеспечивать быстрый поиск проиндексированных элементов. Для этого они хранятся в виде уже знакомого нам B-дерева (для него используется другая, более простая, реализация, но в данном случае это несущественно). К каждому элементу привязан упорядоченный набор ссылок на строки таблицы, содержащие значения с этим элементом. Упорядоченность не принципиальна для выборки данных (порядок сортировки TID-ов не несет в себе особого смысла), но важна с точки зрения внутреннего устройства индекса.
GraphQL + Typescript = любовь. TypeGraphQL v1.0
ЗTypeGraphQL v1.0
19 августа вышел в релиз фреймворк TypeGraphQL, упрощающий работу с GraphQL на Typescript. За два с половиной года проект обзавёлся солидным комьюнити и поддержкой нескольких компаний и уверено набирает популярность. Спустя более 650 коммитов у него более 5000 звёзд и 400 форков на гитхабе, плод упорной работы польского разработчика Михала Литека. В версии 1.0 значительно улучшилась производительность, схемы получили изоляцию и избавились от прежней избыточности, появились две крупные фичи — директивы и расширения, фреймворк был приведён к полной совместимости с GraphQL.
Как я научился проходить архитектурные секции
Ученые уточнили возраст Вселенной
Новые измерения сделали вклад и в разрешение одной из самых важных на сегодняшний день проблем астрофизики: Насколько быстро расширяется Вселенная?
Результаты были опубликованы в двух научных статьях, выложенных в открытый доступ на сайте препринтов arXiv. Статьи проходят процесс проверки и рецензирования. (pdf).
ACT Collaboration — Часть новой карты реликтового излучения
Космология – это наука о прошлом, настоящем и будущем нашей Вселенной. Многое в этой науке завязано на скорость расширения, поэтому физики так охотятся за этим значением. Константа Хаббла (H0) – это значение, описывающее, насколько быстро расширяется Вселенная на разном расстоянии от нас.
Docker-compose: идеальное рабочее окружение
Здрасте!
В последнее время все чаще задумываюсь об оптимальности рабочего процесса и хотелось бы поделиться своими изысканиями в данном вопросе.
В данном посте поговорим про docker-compose, который по моему мнению является панацеей в вопросе организации и оптимизации рабочего процесса разработчика.
Описывать все я буду почти на пальцах, поэтому если вы до этого ни разу не слышали про docker (что странно), ни разу с ним не работали и хотите в нем разобраться, то прошу под кат.
Полный цикл тестирования React-приложений. Доклад Авто.ру
Алексей:
— Для начала надо немного рассказать, что такое Авто.ру. Это сайт по продаже машинок. Там есть поиск, личный кабинет, автосервисы, запчасти, отзывы, кабинеты дилеров и многое другое. Авто.ру — очень большой проект, очень много кода. Весь код мы пишем в большой монорепе, потому что это все перемешивается. Одни и те же люди делают схожие задачи, например, для мобильных и десктопа. Получается много кода, и монорепа нам жизненно необходима. Вопрос — как ее тестировать?
Прямая работа с SMS-сервисом МТС: история одной интеграции
В этой статье я поделюсь опытом прямой интеграции с крупным российским сотовым оператором (обратите внимание: именно напрямую, а не через шлюзы), а также на вводном уровне порассуждаю об околоSMS-ных технологиях и протоколе SMPP — без скучных таблиц и спецификаций, в стиле короткой детективной истории.
Information
- Rating
- 3,024-th
- Location
- Россия
- Registered
- Activity