Pull to refresh
1
0
Send message

Распространённые ошибки изменения схемы базы данных PostgreSQL (Николай Самохвалов)

Reading time22 min
Views11K


Postgres.ai делает возможным работу с полноразмерными базами данных в CI, значительно улучшая качество разработки и тестирования.


Разрабатываемый компанией открытый инструмент, Database Lab Engine, позволяет создавать полноразмерные клоны баз данных любого размера за секунды. Используя такие клоны, вы можете тестировать изменения, оптимизировать SQL-запросы и быстро развёртывать независимые тестовые стенды.
Вебсайт компании – https://Postgres.ai/ – содержит также SaaS-версию Database Lab.

Читать дальше →
Total votes 14: ↑13 and ↓1+13
Comments9

Blazor WebAssembly: соединительные линии в SVG

Reading time4 min
Views3.9K

Demo | GitHub

В статье описан способ реализации соединительных линий между SVG объектами. Соединительные линии автоматически перестраиваются при изменении положения объектов. Попутно рассмотрен метод OnParametersSet.

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

Вертебро-базилярная недостаточность — болезнь программиста с тысячью лиц

Reading time13 min
Views25K


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

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

Однако в то же время все перечисленные симптомы, столь непохожие друг на друга, характерны и для вертебро-базилярной недостаточности (ВБН), а причиной развития данного недуга может оказаться искривление шейного отдела позвоночника, вызванное неправильной осанкой при длительной работе за компьютером. Что же это за болезнь и как не допустить ее развития? Об этом мы и расскажем в сегодняшнем материале.
Читать дальше →
Total votes 39: ↑37 and ↓2+48
Comments24

Детальная настройка браузера Firefox

Reading time15 min
Views120K

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

Надеюсь она немножко поможет в популяризации этого чудесного браузера.

Читать далее
Total votes 43: ↑40 and ↓3+47
Comments96

Как root-права и альтернативные прошивки делают ваш android смартфон уязвимым

Reading time54 min
Views125K

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

Часто для этого рекомендуется получение прав суперпользователя в системе (root-права), удаление системных приложений от Google и от производителя устройства, или даже полная замена стандартной ОС на альтернативные сборки, чаще всего LineageOS (бывший CyanogenMod). При этом первым шагом в этом процессе всегда будет так называемая "разблокировка загрузчика". Во время её выполнения устройство несколько раз покажет нам страшные предупреждения о том, что теперь оно станет более уязвимо для злоумышленников, но мы смело нажимаем "подтвердить" и шьём root или самую свежую сборку кастомной прошивки, не задумываясь о том какие проблемы создаёт нам незаблокированный загрузчик. 

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

Интересующихся приглашаю под кат.

Читать далее
Total votes 98: ↑94 and ↓4+119
Comments210

.NET в целом: обзор от Скотта Хансельмана

Reading time14 min
Views24K


Скотт Хансельман — ключевой человек для .NET-сообщества: например, на конференции Microsoft Build он ведёт презентацию для разработчиков, а у его микроблога в Twitter около 250 000 подписчиков.


При этом в мире .NET он очень давно. Ещё в 2003-м преподавал C#, то есть был глубоко погружён в тему практически с её появления. А последние 13 лет работает в Microsoft, наблюдая за всем изнутри и общаясь с разработчиками из других компаний.


Поэтому ему хорошо видна общая картина: он лично наблюдал, как эта экосистема развивалась со временем, и знает, как она используется разными разработчиками для разных целей. И этим летом на нашей конференции DotNext он выступил с докладом, посвящённым не каким-то конкретным деталям, а как раз общему обзору .NET — от прошлого до будущего. А мы решили сделать для Хабра текстовую расшифровку, чтобы стало можно не только посмотреть доклад на английском, но и прочитать на русском.

Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments33

Как PostgreSQL работает с диском. Илья Космодемьянский

Reading time20 min
Views17K

Расшифровка доклада 2014 года Ильи Космодемьянского "Как PostgreSQL работает с диском".


Часть поста, конечно, устарела, но здесь рассмотрены фундаментальные моменты PostgreSQL при работе с диском, которые актуальны и сейчас.


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


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


"Железо", настройки операционной системы, файловой системы и PostgreSQL: как и для чего выбирать хороший setup, что делать, если конфигурация "железа" не оптимальна, и какие ошибки могут сделать бесполезным самый дорогой RAID-контроллер. Увлекательное путешествие в мир батареек, "грязных" и "чистых" страниц, хороших и плохих SSD-дисков, покрасневших графиков мониторинга и ночных кошмаров системных администраторов.

Total votes 12: ↑10 and ↓2+9
Comments1

Личный IM-мессенджер со сквозным шифрованием только для своих

Reading time10 min
Views41K
В этой статье я рассказал, как сделать собственный безопасный мессенджер только для своей тусовки параноиков.

Сейчас есть много IM-мессенджеров с end-to-end шифрованием, но вариантов, которые можно быстро развернуть на своем сервере гораздо меньше.



Изучая варианты, мой взгляд упал на Delta Chat, о котором на Хабре уже упоминали — мессенджер без централизованной серверной инфраструктуры, использующий почтовые сервера для доставки сообщений, что позволяет развернуть его, например, на своем домашнем сервере и общаться с устройств, в том числе не имеющих доступ в интернет.

Среди преимуществ этого подхода можно отметить:

  • Вы сами управляете своей информацией, в том числе ключами шифрования.
  • Вы не отдаете свою адресную книгу никому.
  • Нет необходимости использовать телефонный номер для регистрации.
  • Наличие клиентов под все популярные системы: Windows, Linux, Android, MacOS, iPhone.
  • Дополнительное шифрование STARTTLS/SSL при передаче сообщений, обеспечиваемое почтовым сервером.
  • Возможность настроить удаление старых сообщений с устройства (исчезающие сообщения).
  • Возможность настроить удаление сообщений с сервера, при получении.
  • Быстрая доставка, благодаря IMAP push.
  • Групповые защищенные чаты.
  • Поддержка передачи файлов, фото и видео.
  • Сервер и клиент относятся к открытому ПО и совершенно бесплатны.

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

Интересный факт: Роскомнадзор уже требовал от разработчиков Delta Chat предоставить доступ к пользовательским данным, ключам шифрования и зарегистрироваться в государственном реестре провайдеров, на что Delta Chat ответили отказом, т.к. не имеют собственных серверов и не имеют доступа к ключам шифрования.
Читать дальше →
Total votes 45: ↑45 and ↓0+45
Comments41

VPN в домашнюю локалку

Reading time4 min
Views44K


TL;DR: я устанавливаю Wireguard на VPS, подключаюсь к нему с домашнего роутера на OpenWRT, и получаю доступ к домашней подсети с телефона.

Если вы держите на домашнем сервере личную инфраструктуру или у вас дома множество девайсов управляемых по IP, то вы наверняка хотите иметь к ним доступ с работы, из автобуса, поезда и метрo. Чаще всего для аналогичных задач приобретается IP у провайдера, после чего порты каждого сервиса пробрасываются наружу.

Вместо этого я настроил VPN с доступом в домашнюю локалку. Плюсы такого решения:

  • Прозрачность: чувствую себя как дома при любых обстоятельствах.
  • Простота: настроил и забыл, не надо думать о пробросе каждого порта.
  • Цена: у меня уже есть VPS, для таких задач современный VPN почти бесплатен по ресурсам.
  • Безопасность: ничего не торчит наружу, можно оставить MongoDB без пароля и никто не утащит данные.

Как всегда, есть и минусы. Во-первых, вам придётся настраивать каждый клиент по отдельности, в том числе, на стороне сервера. Может быть неудобно при наличии большого числа устройств, с которых хочется иметь доступ к сервисам. Во-вторых, у вас на работе может оказаться совпадающая по диапазону локалка — придётся разрешать эту проблему.
Читать дальше →
Total votes 30: ↑27 and ↓3+37
Comments38

Точечная маршрутизация на роутере с OpenWrt. WireGuard и DNSCrypt

Level of difficultyMedium
Reading time13 min
Views127K
Данный материал не является призывом к действию и публикуется исключительно в образовательных целях.

UPD 14.10.2023
Эта статья немного устарела. Здесь можно узнать, как использовать готовые списки IP-адресов, что не совсем актуально. Актуальная статья с маршрутизацией по доменам: https://habr.com/ru/articles/767464/


UPD 16.10.2022


  • Исправлены конфиги для Openwrt 22
  • Добавлен community список
  • В скрипт добавлена проверка загрузки файлов. Которая решает проблему, если при старте устройства не удалось сразу загрузить списки
  • DNSCrypt изменён на DNSCrypt v2

UPD 15.03.2023


  • Добавлена логика для работы с доменами, используются список доменов из community
  • Изменена проверка загрузки файлов в скрипте
  • В Ansible playbook теперь можно выбрать определённые списки

UPD 20.04.2023
Если у вас роутер получает IPv6 адрес, то роутинг будет работать криво. Пока нет инструкции для IPv6, поэтому нужно будет его выключить на роутере.


Часть 2: Поиск и исправление ошибок


Чем отличается от подобных материалов?


  • Реализация на чистом OpenWrt
  • Использование WireGuard
  • Конфигурация роутера организуется с помощью конфигов OpenWrt, а не кучей в одном скрипте
  • Предусмотрены ситуации при рестарте сети и перезагрузке
  • Потребляет мало ресурсов роутера: подсети содержатся в ipset, а не в таблицах маршрутизации. Что позволяет развернуть это дело даже на слабых устройствах
  • Автоматизация конфигурации с помощью Ansible (не требуется python на роутере)
Читать дальше →
Total votes 62: ↑61 and ↓1+60
Comments106

babooshka tv, как самодельный видео-показатор сместил «точку сборки» моих пожилых родителей

Reading time17 min
Views38K

Дорогие друзья. Так получилось, что предыдущую мою публикацию унесло НЛО, сочтя ее чрезмерно политизированной. Это вторая попытка опубликовать этот текст. Мне, увы, так и не удалось выяснить, какие конкретно формулировки являются на Хабре запретными. Поэтому я убрал все названия и все упоминания популярных персон и телевизионных каналов, чтобы лишний раз не вызывать беспокойство в пылких сердцах особо сердобольных читателей и, тем самым, умерить накал страстей в комментариях. Это мое скромное детище было придумано с единственной целью, вынуть моих любимых родителей из телевизионного "информационного пузыря" и предоставить им дополнительную и, вместе с тем, привычную по формату альтернативу из наших семейных роликов, а так же разнообразных видео из сети Интернет, интересных и полезных для расширения кругозора. Надеюсь, что на этот раз НЛО оставит пост в покое, а вы, дорогие коллеги, получите удовольствие от прочтения.


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


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


Родители впервые смотрят нашумевший пару лет назад эпический фильм про он-вам-не-димона
Родители впервые смотрят нашумевший пару лет назад на Youtube фильм. (На крышке телевизора "голый" RPI первой модели, пруф оф концепт, так сказать)

И вот последнее меня более всего расстраивало....
Total votes 114: ↑107 and ↓7+140
Comments220

Защищённые прокси — практичная альтернатива VPN

Reading time9 min
Views76K

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

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

В этой статье расказано о преимуществах защищённого прокси перед VPN и предложены различные реализации, готовые к использованию.
Читать дальше →
Total votes 23: ↑22 and ↓1+27
Comments52

Идеальное резюме разработчика

Reading time7 min
Views102K
Привет! Недавно прошел бесплатный вебинар, где наши эксперты в прямом эфире препарировали резюме разработчика и наглядно разбирали, каким должно быть идеальное CV IT-инженера. Только факты: в этой статье изложены все ключевые моменты, которые стоит учитывать при создании резюме, а также масса любопытных советов, призванных помочь вам стать еще более желанными на рынке.


Читать дальше →
Total votes 21: ↑12 and ↓9+9
Comments23

.NET: Лечение зависимостей

Reading time23 min
Views38K
Кто не сталкивался с проблемами из-за assembly redirect? Скорее всего все, кто разрабатывал относительно большое приложение, рано или поздно с этой проблемой столкнется.

Сейчас я работаю в компании JetBrains, в проекте JetBrains Rider, и занимаюсь задачей миграции Rider на .NET Core. Ранее занимался общей инфраструктурой в Контуре, облачной платформой хостинга приложений.



Под катом — расшифровка моего доклада с конференции DotNext 2019 Moscow, где я рассказал о трудностях при работе со сборками в .NET и на практических примерах показал, что бывает и как с этим бороться.
Total votes 44: ↑44 and ↓0+44
Comments17

Установка GPU версии HPL с OpenBLAS

Reading time7 min
Views2.5K
Для попадания в список ТОП 50, 100, 500 HPC (High Performance Computing) комплексов подходят результаты тестирования, полученные с помощью бенчмарка HPL (High Performance Linpack).

Бенчмарк Linpack (Linear Algebra PACKage) реализует алгоритм решения СЛАУ методом LU разложения. Этот пакет общедоступен, прост в установке и запуске. Хорошо подходит для демонстрации производительности CPU.

Все, кто знаком с архитектурой графических ускорителей могут предположить, что еще лучше этот пакет подойдет для тестирования вычислительных устройств с архитектурой GPU. Однако, в сети доступна для скачивания версия 2011 года, с CUDA под архитектуру Fermi.

В данном руководстве я приведу пример сборки и запуска HPL для GPU.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments0

DBA: находим бесполезные индексы

Reading time12 min
Views19K
Регулярно сталкиваюсь с ситуацией, когда многие разработчики искренне полагают, что индекс в PostgreSQL — это такой швейцарский нож, который универсально помогает с любой проблемой производительности запроса. Достаточно добавить какой-нибудь новый индекс на таблицу или включить поле куда-нибудь в уже существующий, а дальше (магия-магия!) все запросы будут эффективно таким индексом пользоваться.

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

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

Доработки происходят итеративно силами множества распределенных команд, которые бывают разнесены не только в пространстве, но и во времени. И тогда, не зная всей истории развития проекта или особенностей прикладного распределения данных в его БД, можно легко «напортачить» с индексами. Но соображения и проверочные запросы под катом позволяют заранее предсказывать и обнаруживать часть проблем:

  • неиспользуемые индексы
  • префиксные «клоны»
  • timestamp «в середине»
  • индексируемый boolean
  • массивы в индексе
  • NULL-мусор
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments6

Коронавирус 2019-nCoV. FAQ по защите органов дыхания и дезинфекции

Reading time16 min
Views583K
Китайский коронавирус, он же «пневмония Уханя» на неделе стал одной из самых горячих тем. В классической «кто виноват и что делать» меня, традиционно, волнует только вторая часть. Сегодня под катом — статья про дезинфекцию, маски и обеззараживание помещений. Объединил в одной статье несколько заметок из своего телеграм-канала. Кладем в закладки и шлем друзьям!


Стоп! 2019-nCoV
Total votes 79: ↑72 and ↓7+89
Comments409

Подделка серверных запросов, эксплуатация Blind SSRF

Reading time7 min
Views9.3K
Есть такая штука, называется SSRF. Про нее написано немало, но все же, я расскажу тебе вкратце.

Допустим, ты заходишь на сайт, заполняешь профиль и доходишь до пункта “загрузить аватарку”. А у тебя выбор — загрузить файл или указать ссылку.
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments2

Как рассказать об основных компонентах Android за 15 минут

Reading time17 min
Views22K

Введение


В этой статье пойдет речь о том, как рассказать человеку, ранее не знакомому с программированием под Android, об основных его компонентах. Заинтересовать и показать, что все не так сложно, как многие думают. При этом сделать это за 15 минут и не уходя в объяснение какой-то базовой теории, которую каждый может прочитать сам и вернуться уже с уточняющими вопросами.


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


Не секрет, что в Интернете размещено огромное количество статей на эту тему, но в моем случае повествование будет немного отличаться: здесь будет только наглядная практика, без определений и прочих деталей. То есть смотрим — видим — комментируем происходящее. Смотрится, на мой взгляд, все достаточно просто и наглядно, куски кода получились тоже небольшие и очень простые, готовые к быстрому использованию в собственном проекте. Мне кажется, такой подход дает достаточно широкую обзорную картину классических инструментов Android, и при написании первого приложения вместо вопросов "что мне использовать" будут более конкретные вопросы "как именно мне использовать компонент Х". А уже все подробности об этом человек сможет узнать сам — если захочет.

Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments1

Безопасный способ обмена JWT в ASP.NET Core + SPA

Reading time8 min
Views42K

Вступление


Идентификация по JWT (JSON Web Token) — это довольно единообразный, согласованный механизм авторизации и аутентификации между сервером и клиентами. Преимущества JWT в том, что он позволяет нам меньше управлять состоянием и хорошо масштабируется. Неудивительно, что авторизация и аутентификация с его помощью все чаще используется в современных веб-приложениях.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments10

Information

Rating
Does not participate
Registered
Activity