Как стать автором
Обновить
-10
2.1

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

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

Права в Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Время на прочтение21 мин
Количество просмотров596K
Всем привет. Это перевод статьи из книги RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 and EX300.

От себя: Надеюсь статья будет полезна не только начинающим, но и поможет более опытным администраторам упорядочить свои знания.

Итак, поехали.

image
Читать дальше →
Всего голосов 63: ↑57 и ↓6+51
Комментарии33

Как я выбил собеседование в Facebook

Время на прочтение5 мин
Количество просмотров95K
imageЗдравствуйте, уважаемые читатели Хабрахабра!

В этой статье я расскажу о том, как мне, ничем не примечательному студенту, без особых проблем удалось выбить собеседование в одной из компаний списка «Biggies» — Facebook.

Сразу к делу: решение задачки школьного уровня на гитхабе. Прилепил тематическую мордочку, сделал все в традициях Objective-C, должно компилиться на маках. Надеюсь, данное чтиво откроет глаза многим русским студентам, насколько просто можно попасть в крупные компании своей мечты.

К сожалению, FB не является моей приоритетной целью; поэтому съезжу на интервью, посмотрю на вопросы и напишу следующую статью о том, что же спрашивали и что же я могу спросить на интервью в моей студии.

Заинтересовавшихся прошу под кат.
Читать дальше →
Всего голосов 228: ↑128 и ↓100+28
Комментарии140

Настройка автовакуумирования в PostgreSQL

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров5.6K

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

Сегодня поговорим о том, как правильно настраивать автовакуумирование в PostgreSQL — одном из механизмов, который позволяет базе данных оставаться "в форме" и поддерживать производительность на должном уровне. Если неправильно подойти к настройке, можно столкнуться с деградацией скорости обработки запросов и внезапным ростом объема данных.

Читать далее
Всего голосов 16: ↑14 и ↓2+18
Комментарии12

Эффективная генерация сортируемых GUID для первичных ключей БД на клиенте

Время на прочтение12 мин
Количество просмотров21K

Использовать Guid.NewGuid() в качестве первичного ключа в базе данных — плохая с точки зрения производительности идея. Это связано с тем, что в SQL Server, MySQL и некоторых других БД для первичных ключей создаются кластерные индексы, которые определяют, как строки будут храниться на диске. GUID — это по сути случайное значение, поэтому новая строка может попасть в начало, середину или конец таблицы. Серверу БД в этом случае придётся перемещать другие строки, что приведёт к фрагментации данных, а их извлечение может занять больше времени, если вам нужно извлечь несколько добавленных последовательно записей (например, когда вы добавляете набор связанных сущностей, которые потом будут извлекаться вместе — БД понадобится прочитать данные из разрозненных страниц вместо последовательного чтения набора данных).

Поэтому, чаще всего, лучше пользоваться сгенерированными БД первичными ключами. В SQL Server, например, есть функция NEWSEQUENTIALID(), которая генерирует последовательные GUIDы. Зачем может понадобиться генерировать ключи именно на клиенте и как это правильно сделать?

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии35

Шаблоны для эффективной работы с DOM с помощью современного чистого JavaScript

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



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

Читать дальше →
Всего голосов 34: ↑34 и ↓0+44
Комментарии5

Пару ласковых о GMail

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров68K

Если многобукв - переходите к разделу TLDR ниже

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

Я пользуюсь GMail уже лет 20, с момента его появления, с тех пор как появились и предложили невиданный по тем временам гигабайт бесплатного места. А ещё отличный веб-клиент и антиспам. С тех данный продукт Корпорации если не Добра, то по крайней мере Нейтралитета стал №1 для меня и даже не мыслил о чём-либо другом. Нужно создать ящик под какую-то задачу? В первую очередь всегда шёл на Google Mail. Пока недавно Gmail не сказал мне "да не пошёл бы ты в известном направлении", после чего я впервые в жизни всерьёз задумался об альтернативах.

Дело вот в чём. Пару лет назад я создал аккаунт в одной видеоигре, к нему зарегистрировал ящик в Gmail, он использовался только для принятия писем с кодом при входе в игру, больше ни для чего. В эту игру я захожу раз в год, в ящик соответственно тоже, он для меня третьестепенной важности, поэтому мне даже в голову не приходило подключать какие-то дополнительные средства входа вроде 2FA или одноразовых ключей. Я бережно придерживаюсь сетевой гигиены, меня не взламывают и аккаунты не угоняют. И даже если это вдруг произойдёт - большой трагедией не станет, ну потрачу лишние 5 минут своего времени и воспользуюсь функцией восстановления доступа к аккаунту, ведь у мега-корпорации Google с более чем двадцатилетним опытом на рынке наверняка есть развитые средства восстановления доступа, не так ли?

Читать далее
Всего голосов 77: ↑69 и ↓8+81
Комментарии206

Удалённый доступ к Linux-десктопу. Лучшие RDP-серверы и клиенты 2022 года

Время на прочтение6 мин
Количество просмотров133K

Что делать, если нужно получить удалённый доступ к серверу или десктопу Linux? Или подключиться к Windows-машине с Linux-десктопа? Какие клиенты RDP и FTP подходят лучше всего под Debian и Red Hat / CentOS? Интересно посмотреть, что нового появилось в последнее время.
Читать дальше →
Всего голосов 32: ↑31 и ↓1+44
Комментарии35

Запускаем игры под Wine c поддержкой Native Wayland

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

Wine Wayland


Иллюстрации к статье подготовлены нейросетью freepik.com.


Многие люди на планете играют в видеоигры. Игры помогают улучшить когнитивные способности, провести приятно свободное время. Данная статья посвящена тому, как запустить Windows-игры под Linux в Wayland.


Эта статья могла бы быть: ставим Wine(Proton) и XWayland, запускаем игры, успех, но нет. В данном материале мы будем сами собирать Wine, решать проблемы, а так же наш Wine будет работать напрямую с Wayland композитором без прослойки в виде XWayland. Плюсы такого метода — лучшая производительность и меньше инпут лаг. Благодаря Wine 9.0 это стало возможно, но не все так просто, как может показаться читателю с первого взгляда. Для примера мы запустим игры: Overwatch 2 через Battle.net клиент и Aimbeast, KovaaK's, Apex Legends через Steam.


Если вас заинтересовала статья, то добро пожаловать под cut.

Читать дальше →
Всего голосов 41: ↑41 и ↓0+41
Комментарии58

Обзор графических оболочек Linux

Время на прочтение9 мин
Количество просмотров217K

Наверняка вы хоть раз сталкивались с многообразием графических оболочек для ОС Linux. В этом присутствует частичка красоты этой системы — в множестве вариантов взаимодействия с этой ОС. Без сомнений — это универсальный инструмент.

Если вы уже используете Linux или только начинаете знакомство с ним, вам наверняка не захочется сидеть и перебирать все существующие оболочки, чтобы понять, подойдёт одна из них именно вам или нет. Потому мы сделали краткий обзор самых популярных рабочих сред вместе с ответами на часто задаваемые вопросы.
Читать дальше →
Всего голосов 49: ↑29 и ↓20+19
Комментарии149

Хитрости и трюки при использовании Wine

Время на прочтение5 мин
Количество просмотров236K
image

Всем привет!
Прочел статью про «Все тонкости настройки Wine», оказалось, что там далеко не все тонкости. Поэтому написал этот пост как дополнение тому.

В данном посте в основном вольный перевод оф. документации, а так же несколько своих и чужих хитростей при работе с вайн.
Скорее всего данный пост будет интересен новичкам и обычным пользователям GNU\Linux. Тем не менее добротные советы от специалистов не будут лишними.
Читать дальше →
Всего голосов 122: ↑113 и ↓9+104
Комментарии49

Основы JavaScript для начинающих разработчиков

Время на прочтение11 мин
Количество просмотров156K
Материал, перевод которого мы сегодня публикуем, посвящён основам JavaScript и предназначен для начинающих программистов. Его можно рассматривать и как небольшой справочник по базовым конструкциям JS. Здесь мы, в частности, поговорим о системе типов данных, о переменных, о массивах, о функциях, о прототипах объектов, и о некоторых других особенностях языка.


Читать дальше →
Всего голосов 29: ↑24 и ↓5+19
Комментарии21

GPT для чайников: от токенизации до файнтюнинга

Время на прочтение13 мин
Количество просмотров107K

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

Читать далее
Всего голосов 26: ↑25 и ↓1+29
Комментарии11

Насколько быстр Javascript? Симулируем 20 миллионов частиц

Уровень сложностиПростой
Время на прочтение23 мин
Количество просмотров23K

Я бросил себе вызов: симулировать 1000000 (миллион) частиц на чистом Javascript на телефоне, используя только CPU и добившись 60 FPS.

Поехали.

Задача не особо сложна, если выполнять всю работу на GPU, но правило гласит, что нужно пользоваться только CPU, при этом работая на JS, так что никакого WASM.

Читать далее
Всего голосов 109: ↑108 и ↓1+133
Комментарии34

Поиск по префиксу или тайные операторы PostgreSQL

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров5.2K

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

Интересно, что там?
Всего голосов 15: ↑15 и ↓0+20
Комментарии8

Эй, запрос! Ты живой? Как легко обработать блокировки в PostgreSQL

Время на прочтение8 мин
Количество просмотров57K
Доброе время суток! Администрирование и сопровождение реляционных баз данных чаще всего является нетривиальной задачей. Иногда запросы, работавшие быстро, внезапно начинают «тормозить» по непонятным причинам, размер таблиц растет и в целом производительность базы данных снижается.

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

Чтобы разобраться в сложившейся ситуации, администратору БД необходимо понять, какой процесс блокирует и какой процесс является блокируемым, а также иметь возможность отменить или «убить» блокирующий процесс и в конце проверить результат.

В этой статье я хочу коснуться темы блокировок в PostgreSQL и рассказать об инструментах для работы с ними. Но сначала попробуем разобраться в самой теме.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии1

COUNT(*)

Время на прочтение7 мин
Количество просмотров122K


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

Давайте начнем с простого… Эти запросы отличаются чем-то друг от друга с точки зрения конечного результата?

SELECT COUNT(*) FROM Sales.SalesOrderDetail
SELECT COUNT_BIG(*) FROM Sales.SalesOrderDetail
Подробнее
Всего голосов 84: ↑57 и ↓27+30
Комментарии74

Рецепты для хворающих SQL-запросов

Время на прочтение7 мин
Количество просмотров59K
Несколько месяцев назад мы анонсировали explain.tensor.ru — публичный сервис для разбора и визуализации планов запросов к PostgreSQL.

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



Прислушивайтесь к ним, и ваши запросы «станут гладкими и шелковистыми». :)

А если серьезно, то многие ситуации, которые делают запрос медленным и «прожорливым» по ресурсам, типичны и могут быть распознаны по структуре и данным плана.

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



Давайте чуть подробнее рассмотрим эти кейсы — как они определяются и к каким рекомендациям приводят.
Всего голосов 23: ↑23 и ↓0+23
Комментарии28

Мониторинг PostgreSQL. Новые возможности анализа производительности 1С и других систем. Часть 1: счётчики

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров13K

В данной статье хочу поднять тему, которая представляет собой одну большую боль для администраторов, разработчиков и тестировщиков высоконагруженных (и не очень) систем под управлением PostgreSQL. Даже не «боль», а «БОЛЬ»!

Удивительно, что за почти 30 лет существования PostgreSQL не появилось нормальных инструментов для получения вменяемых счетчиков и трассировок. Все, кто работают с MS SQL Server используют профайлер. Это обязательный и привычный инструмент, который позволяет вылавливать запросы, интересные нам в рамках исследования. Вылавливать как все запросы без разбора, так и какие-то единичные запросы, которые удовлетворяют правилам отбора. Кроме того, можно настроить не одну трассу, а столько сколько нужно, с разными фильтрами. Эти трассы содержат очень богатый набор измерений для анализа: – Reads физические и логические; Writes; SPID, Процессорное время; план запроса (хэш плана), количество строк и т.д.

Многие компании стали всерьез рассматривать СУБД PostgreSQL как замену MSSQL и сталкиваются с тем, что возможностей для ее мониторинга просто нет – она как черный ящик, в котором наощупь вылавливаешь какую-ту информацию и пытаешься систематизировать ее хоть как-то.

Читать далее
Всего голосов 12: ↑6 и ↓6+1
Комментарии14

Извлечение текста из файлов PDF при помощи Python

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

▍ Введение


В эпоху больших языковых моделей (Large Language Model, LLM) и постоянно расширяющейся сферы их применений непрерывно растёт и важность текстовых данных.

Существует множество типов документов, содержащих подобные виды неструктурированной информации, от веб-статей и постов в блогах до рукописных писем и стихов. Однако существенная часть этих данных хранится и передаётся в формате PDF. В частности, выяснилось, что за каждый год в Outlook открывают более двух миллиардов PDF, а в Google Drive и электронной почте ежедневно сохраняют 73 миллионов новых файлов PDF (2).

Поэтому разработка более систематического способа обработки этих документов и извлечения из них информации позволит нам автоматизировать процесс и лучше понять этот обширный объём текстовых данных. И в выполнении этой задачи, разумеется, нашим лучшим другом будет Python.
Читать дальше →
Всего голосов 38: ↑37 и ↓1+53
Комментарии10

Очередной «урок» по ExtJS. Шаблоны элементов

Время на прочтение3 мин
Количество просмотров4.7K
Привет всем! Во-первых всех хочу поздравить с Рождеством! Счастья всем и здоровья!
Во-вторых, хочу сообщить тем, кому интересно, что я разместил на своем сайте еще один урок по ExtJS, в котором мы попытаемся разобраться с шаблонами элементов.
Вообще сразу хотел бы отметить следующий факт: с прошлым постом получилась одна маленькая неприятность — много хабрапипл меня пытались убедить в том, что я творю Зло, что занижаю порог вхождения в сакральные технологии и оказываю медвежью услугу тем, кто в результате изучения моих корявых уроков напрочь теряет шанс стать нормальным кодером. В связи с этим хочу сразу определить несколько моментов:
1) Я вполне допускаю что высказалось немало действительно хороших специалистов в этой области, тем не менее прошу вас впредь не тратить свое время на подобные убеждения, ибо во-первых, с вами я не согласен, а во-вторых, выложите более адекватные уроки и нужность моих кривых уроков сразу пропадет сама собой.
2) Я еще раз повторюсь, что на звание авторитетной мануалы мои уроки не претендуют. Для меня программирование — хобби, и познания у меня больше дилетанские, и видение такое же, потому лексикон и примеры соответствующие. Но вполне возможно именно по-этому их понять начинающему легче, чем сразу с головой окунаться в изучение официальной доки на буржуйском языке. Потому, если у вас глубокие познания в программировании, вы вряд ли найдете что-то новое в моем материале, разве что захотите налить грязи и показать насколько вы крутой кодер на фоне остальных неучей. Не надо! Мы итак это знаем. Потому не флудьте почем зря. Здесь материал для начинающих и тех, для кого кодинг — хобби.
Читать дальше →
Всего голосов 14: ↑8 и ↓6+2
Комментарии11

Информация

В рейтинге
1 323-й
Зарегистрирован
Активность