Search
Write a publication
Pull to refresh
0
0
Константин Садовский @AsmodeusL

User

Send message

Сказ о том, как сделать машину времени для базы данных и случайно написать эксплойт

Reading time16 min
Views4.6K
Доброго времени суток, Хабр.

Приходилось ли вам задумываться как поменять время внутри базы данных? Легко? Ну в некоторых случаях да, несложно — linux команда date и дело в шляпе. А если нужно поменять время только внутри одного экземпляра бд если их на сервере несколько? А для отдельно взятого процесса базы данных? А? Эээ, так-то, дружок, в этом-то все и дело. Кто-то скажет, что это очередной сюр, не связанный с реальностью, который периодически выкладывают на Хабре. Но нет, задача вполне реальная и продиктована производственной необходимостью — тестированием кода. Хотя соглашусь, кейс тестирования может быть достаточно экзотический — проверить как ведет себя код на определенную дату в будущем. В данной статье я рассмотрю подробно как эта задача решалась, и заодно захватим немного сам процесс организации тестовых и dev-стендов для базы Oracle. Впереди длинное чтиво, устраивайтесь поудобнее и прошу под кат.
Читать дальше →

Больше разработчиков должны знать это о базах данных

Reading time19 min
Views44K
Прим. перев.: Jaana Dogan — опытный инженер из Google, которая в данный момент занимается вопросами наблюдаемости production-сервисов компании, написанных на Go. В этой статье, снискавшей большую популярность у англоязычной аудитории, она в 17 пунктах собрала важные технические детали, касающиеся СУБД (а иногда — распределённых систем в целом), которые полезно учитывать разработчикам крупных/требовательных приложений.



Подавляющее большинство компьютерных систем отслеживают свое состояние и, соответственно, нуждаются в некой системе хранения данных. Я накапливала знания о базах данных в течение длительного времени, попутно совершая ошибки при проектировании, приводившие к потере данных и перебоям в работе. В системах, обрабатывающих большие объемы информации, базы данных лежат в сердце системной архитектуры и выступают ключевым элементом при выборе оптимального решения. Несмотря на то, что работе БД уделяется пристальное внимание, проблемы, которые пытаются предусмотреть разработчики приложений, часто оказываются лишь верхушкой айсберга. В этой серии статей я делюсь некоторыми идеями, которые будут полезны для разработчиков, не специализирующихся в этой области.
Читать дальше →

DevOps vs DevSecOps: как это выглядело в одном банке

Reading time9 min
Views13K


Банк аутсорсит свои проекты многим подрядчикам. «Внешники» пишут код, потом передают результаты в не совсем удобном виде. Конкретно процесс выглядел так: они передавали проект, который прошёл функциональные тесты у них, а затем тестировался уже внутри банковского периметра на интеграцию, нагрузку и так далее. Часто обнаруживалось, что тесты фейлятся. Тогда всё уходило обратно внешнему разработчику. Как вы можете догадаться, это означало большие сроки исправления ошибок.

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

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

Одно простое откровение, что подрядчик имеет полный доступ к коду продукта, уже перевернуло их мир.

В этот момент и началась история DevSecOps, про которую я хочу рассказать.
Читать дальше →

oVirt за 2 часа. Часть 4. Базовые операции

Reading time12 min
Views25K
Сегодня мы рассмотрим ряд базовых операций, которые регулярно потребуется выполнять администратору среды виртуализации. Статья — продолжение серии по oVirt: часть 1, часть 2 и часть 3:

Содержание



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

Веб-сервисы в Oracle

Reading time39 min
Views39K


Веб-сервисы широко применяются для интеграции между компонентами одной системы или между различными системами. Популярность веб-сервисов как способа интеграции обусловлена их универсальностью, а также простотой реализации и отладки. Универсальность связана с передачей данных с помощью интернета и протокола HTTP. Веб-сервисы дают возможность относительно легко построить интеграции между компонентами, написанными на разных языках, запускаемыми на разных операционных системах и платформах. Простота реализации веб-сервисов достигается за счет встроенных во многие IDE средств и компонентов, позволяющих быстро разработать как сам веб-сервис (provider side), так и необходимый код для вызова сервиса на стороне клиента (client side). Отладку сервисов упрощает использование понятных человеку форматов обмена данными — XML и JSON. Кроме того, существует множество утилит для отладки и тестирования сервисов, в том числе нагрузочного.

В этой статье рассмотрим несколько способов создания веб-сервисов непосредственно из СУБД Oracle, то есть без использования сторонних средств.
Читать дальше →

Как прошить Xiaomi Redmi 4 Pro (Prime, Premium) на Android 10

Reading time5 min
Views51K
Если Вы изредка прошиваете свой телефон, или вообще никогда не делали этого, но при этом желаете вдохнуть в старую, но вполне рабочую «лошадку» Xiaomi Redmi 4 Prime/Pro/Premium новую жизнь, то эта статья Вам поможет.

По данной инструкции автор статьи перепрошил свой телефон Xiaomi Redmi 4 Prime с оригинальной (заводской) прошивки (MIUI10, Android 6) на кастомную, то есть выпущенную не разработчиком телефона, но построенную уже на Android 10. Да, да, Android 10. И это для телефона, выпущенного ещё в 2016 году.

В статье приведен один из самых простых (но далеко не единственных) способов прошивки телефона. Для получения лучшего результата, рекомендуется сохранить все данные с телефона и полностью очистить память телефона во время прошивки (пункт 3.2). Конечно, можно и не делать этого. Но разработчики кастомных прошивок и опытные пользователи рекомендуют делать полную очистку, чтобы минимизировать возможные баги после такой установки.
Читать дальше →

Айтишники vs продажники: и треснул мир напополам

Reading time12 min
Views12K
Практически в каждой компании можно встретить противостояние: продажников и маркетологов, админов и бухгалтерии, продажников и айтишников и т.д. В этом явлении нет ничего удивительного: подразделения решают задачи бизнеса, и каждое из них стремится продемонстрировать, что именно их вклад в общее дело ключевой. А и правда: если бы не было инженеров, разработчиков и производства, что бы делали продажники? Неясно. А если бы был классный продукт, но о нём бы некому было рассказать рынку? То-то же. Но тем не менее, такое противоборство порождает не только позитивную для бизнеса конкуренцию, но и вызывает конфликты, срывает сроки и иногда даже портит продукт или проект. Начинается цепная реакция: конфликт → срыв проекта и ухудшение продукта → недовольство клиента → снижение выручки → управленческие проблемы, включая кадровые. А значит, локальный конфликт внутри отделов становится глобальной проблемой бизнеса, которая затрагивает всех. Давайте посмотрим, откуда растут ноги великого противостояния.

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

Революция в ИТ-департаменте (отделе). Нужна ли?

Reading time6 min
Views9.9K
Приходя в новую компанию в роли ИТ директора, мы с вами, коллеги, невольно сталкиваемся с ошибками наших предшественников.

Конечно, в приступах перфекционизма, мы рвемся все сразу же исправить. Ну как же так можно работать? Это же неправильно! Так нельзя! И так далее…

И здесь многие из нас совершают большую ошибку.

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

Ведь как бы плохо не была построена система, какие бы жесткие ошибки не были допущены; — в любом случае система работала, система позволяла бизнес-персоналу зарабатывать деньги и еще куча доводов :)
Читать дальше →

Стоимость денег, типы процентов, дисконтирование и форвардные ставки. Ликбез для гика, ч.1

Reading time9 min
Views66K
Представьте себе ситуацию – вы покупаете машину, и вам предлагают два варианта: заплатить с рассрочкой в несколько месяцев или погасить всю сумму сразу и с небольшой скидкой. Какой окажется выгоднее?

Или, например, вы хотите разместить вклад на год. Можно положить на весь срок под высокий процент или на отдельные короткие сроки под более низкий. Что лучше и насколько?



Все ответы под катом. И добро пожаловать в мир, где время — всегда деньги. До этого вы знали об этом, но теперь — в деталях и с примерами.
Читать дальше →

Про фразовые глаголы-5 (up/down)

Reading time4 min
Views15K
Сначала рекомендуется прочитать предыдущие части:

1. habr.com/ru/post/495794
2. habr.com/ru/post/496190
4. habr.com/en/post/499368

Значение up «до конца, полностью» выражается (помимо приведённых в первой статье) русскими приставками:

из-/ис-: beat – «бить», beat up – «из-бить»; use – «пользовать», use up – ис-пользовать (какой-то ресурс до конца): Masha used up all of my shampoo.

от-: build – «строить», build up – «отстроить»; polish – «полировать», polish up – «от-полировать».

по-: hang – «вешать», hang up – «по-весить» (трубку). Show – «казать/являться», show up – «по-явиться». Vasya showed up on time – Вася пришёл/появился вовремя.

при- в значении приближения [к стандартам]: dress – «одеть», dress up – «при-одеть» (одеть подчёркнуто стильно или ярко). Masha was dressed up – Маша была приодета.

Dress out – «разодеть», только устаревшее. В данном случае up ≈ out, как в русском «при-» ≈ «раз-»: приоделась ≈ разоделась. Up акцентирует завершённость гардероба (наряда), out – содержит ещё лёгкую эмоциональную составляющую «преувеличенности» действия – «раз-одеть».

Dress up/dress out имеют бесчисленные синонимы: tog up = tog out, deck up = deck out, rig up = rig out, fig up = fig out, trick up = trick out. Есть даже fancy up и gussy up, но с out эти глаголы не употребляются.*
Читать дальше →

К чему может привести ослабление уровня изоляции транзакций в базах данных

Reading time5 min
Views22K
Всем привет. На связи Владислав Родин. В настоящее время я являюсь руководителем курса «Архитектор высоких нагрузок» в OTUS, а также преподаю на курсах, посвященных архитектуре ПО.

Помимо преподавания, как вы могли заметить, я занимаюсь написанием авторского материала для блога OTUS на хабре и сегодняшнюю статью хочу приурочить к запуску курса «PostgreSQL», на который прямо сейчас открыт набор.




Введение


В прошлый раз мы с вами поговорили про то, что транзакции в базах данных служат для решения двух задач: обеспечения отказоустойчивости и доступа к данным в конкурентной среде. Для полноценного выполнения этих задач транзакция должна обладать свойствами ACID. Сегодня мы подробно поговорим про букву I (isolation) в данной аббревиатуре.
Читать дальше →

Требования к ПО на пальцах

Reading time5 min
Views121K
Пост про основы разработки требований — без сложных схем, терминов и таблиц, зато с гифками.

image

Если коротко, то основные этапы разработки требований — это:

  1. Зачем нам что-то делать? (нужно больше золота)
  2. Что мы будем делать? (все как у людей, но дешевле)
  3. Как мы это сделаем? (с блокчейном и датасаентистами, естественно)
  4. Когда мы это сделаем? (вчера, а отрефакторим «потом»)

А теперь подробнее.
Читать дальше →

Осторожнее с редактированием bash-скриптов

Reading time2 min
Views65K
Предположим, я написал такой bash-скрипт с названием delay.sh. Как думаете, что он делает?

#!/bin/bash
sleep 30
#rm -rf --no-preserve-root /
echo "Time's up!"

Похоже, он ожидает 30 секунд, а затем выводит сообщение на экран. Здесь никаких фокусов — он делает именно это. Там есть опасная команда в середине, но она закомментирована и не выполняется.

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

Ну, через 30 секунд скрипт удалит все мои файлы.
Читать дальше →

Программист должен решать

Reading time5 min
Views24K


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


Программист должен решать проблемы бизнеса
Программист не должен решать задачи бизнеса


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


Уровни разработчиков


Начну я, пожалуй, с вопросов иерархии и уровней. Раньше я думал, что существует 3 уровня:

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

Как сделать работу с Microsoft Remote Desktop лучше

Reading time7 min
Views172K
Хочу поделиться несколькими советами по настройке удаленного подключения к рабочим местам по RDP. Расскажу как проапгрейдить древний RPC-HTTP до UDP, похвалю и поругаю Windows 10 и AVC, разберу решение нескольких типичных проблем.

Считаем, что для подключения используется Remote Desktop Gateway (RDGW), а в качестве серверов выступают рабочие станции. Использовать RDGW очень удобно, потому что шлюз становится общей точкой входа для всех клиентов. Это дает возможность лучше контролировать доступ, вести учет подключений и их продолжительность. Даже если VPN позволяет подключиться к рабочим машинам напрямую — это не лучший вариант.

RDGW настраивается быстро, просто, а Let's Encrypt и win-acme легко решают проблему с доверенным сертификатом.

Есть три транспортных протокола по которым клиент может подключиться с серверу:

RPC-HTTP (плохо)
HTTP (лучше)
HTTP+UDP (отлично)

Под сервером будем понимать рабочую машину, под клиентом — домашнюю.
Первое, с чего стоит начать, это «плохо» превратить в «отлично».
Читать дальше →

PostgreSQL Antipatterns: навигация по реестру

Reading time4 min
Views11K
Сегодня не будет никаких сложных кейсов и мудреных алгоритмов на SQL. Все будет очень просто, на уровне Капитана Очевидность — делаем просмотр реестра событий с сортировкой по времени.

То есть вот лежит в базе табличка events, а у нее поле ts — ровно то самое время, по которому мы хотим эти записи упорядоченно показывать:

CREATE TABLE events(
  id
    serial
      PRIMARY KEY
, ts
    timestamp
, data
    json
);

CREATE INDEX ON events(ts DESC);

Понятно, что записей у нас там будет не десяток, поэтому нам потребуется в каком-то виде постраничная навигация.

#0. «Я у мамы погроммист»


cur.execute("SELECT * FROM events;")
rows = cur.fetchall();
rows.sort(key=lambda row: row.ts, reverse=True);
limit = 26
print(rows[offset:offset+limit]);

Даже почти не шутка — редко, но встречается в дикой природе. Иногда после работы с ORM бывает тяжело перестроиться на «прямую» работу с SQL.

Но давайте перейдем к более распространенным и менее очевидным проблемам.
Читать дальше →

Усложнение команд консоли, 1979−2020

Reading time14 min
Views30K
Моё хобби — открыть «Философию UNIX» Макилроя на одном мониторе, одновременно читая маны на другом.

Первый из принципов Макилроя часто перефразируют как «Делайте что-то одно, но делайте хорошо». Это сокращение от его слов «Создавайте программы, которые делают одну вещь хорошо. Для новой работы создавайте новые программы, а не усложняйте старые добавлением новых "функций"».

Макилрой приводит пример:

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

Если вы откроете справку для ls, то она начинается с

ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1] [file ...]

То есть однобуквенные флаги для ls включают все строчные буквы, кроме {jvyz}, 14-ти прописных букв, @ и 1. Это 22 + 14 + 2 = 38 только односимвольных вариантов.
Читать дальше →

Почему разработчики такие медленные: распространенные проблемы и их решения

Reading time15 min
Views15K
Привет, Хабр! Представляю вашему вниманию перевод статьи Why Development Teams are Slow: Common Software Jams and Solutions автора Эрика Эллиота.



Если вы больше любите слушать, чем читать, то в аудио формате перевод доступен на Яндекс.Музыке и в Apple Podcasts

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

  • Нереалистичные ожидания
  • Слишком много открытых тикетов
  • Неконтролируемый объем задач
  • Накопление код ревью
  • Плохая подготовка
  • Выгорание разработчиков
  • Баги
  • Текучка кадров

Медлительность разработчиков — не корень проблемы. Это симптом других перечисленных проблем. В 100% случаев, если команда разработки работает слишком медленно — это вина руководителя. Но хорошая новость заключается в том, что вы в силах это исправить. Давайте рассмотрим каждый из пунктов подробнее, чтобы разобраться, что мы можем с каждым из них сделать.
Читать дальше →

6 ключевых вопросов при переводе бизнеса в облако

Reading time6 min
Views4.3K


Из-за вынужденных каникул даже крупным компаниям с развитой IT-инфраструктурой сложно организовать удаленную работу персонала, а у малого бизнеса попросту не хватает ресурсов для развертывания необходимых сервисов. Другая проблема связана с информационной безопасностью: открывать доступ во внутреннюю сеть с домашних компьютеров сотрудников рискованно без применения специализированных продуктов корпоративного класса. Аренда виртуальных серверов не требует капитальных затрат и позволяет вынести временные решения за пределы защищенного периметра. В небольшой статье мы рассмотрим несколько типовых сценариев использования VDS в условиях самоизоляции. Сразу стоит отметить, что статья ознакомительная и ориентирована больше на тех, кто только вникает в тему.
Читать дальше →

Да мой старый laptop в несколько раз мощнее, чем ваш production server

Reading time5 min
Views99K
Именно такие претензии я услышал от наших девелоперов. Самое интересное, что это оказалось правдой, дав начало длительному расследованию. Речь пойдет про SQL servers, которые крутятся у нас на VMware.


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

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity