Всем привет! Я хотел бы поделиться своим опытом по расширению высоконагруженного кластера ClickHouse, немного о том как работает репликация и шардирование.
Тестируем собственную батарейку для Django с pytest и tox
Итак, у нас есть идея потрясающей и всем необходимой батарейки для Django. После того, как мы написали весь код мы готовы релизнуть нашу батарейку в PyPI. Однако перед этим мы должны разобраться с несколькими моментами.
Python service layer: основы оформления бизнес-логики на примере Django-приложений
Django - отличный фреймворк, но он, на самом деле, толком не дает, да и не должен давать, ответ на вопрос, каким образом лучше всего хранить вашу бизнес-логику. Хранение бизнес-логики в моделях или views имеет множество недостатков, которые обычно начинают проявляться при росте кодовой базы проекта. Чтобы решить эти проблемы, разработчики часто начинают искать способы выделения бизнес-логики в своем приложении.
В этой статье я хотел бы попробовать дать стартовую точку на пути выделения слоя бизнес-логики у себя в приложениях и навести на новые мысли тех разработчиков, которые считают выделение этого слоя в своих приложениях чем-то излишним.
Так же хочу обратить внимание, что цель данной статьи не в том, чтобы дать правила, которым требуется слепо следовать, но в том, чтобы указать направление. Сервисный слой и в принципе его наличие, это такая вещь, которую нужно адаптировать под нужды вашей команды, компании и бизнеса.
На самом деле, изложенный далее текст относится не только к Django-проектам. Разрабатывая веб-приложения, используя другие инструменты, вроде Flask, люди используют те же концепции веб-разработки, причём часто именно в таком же виде, как они реализованы, в Django - views, request-response объекты, middlewares, модели, формы.
Непопулярный pwsh
Несмотря на уже довольно давно пройденный рубеж одной операционной системы, PowerShell (далее просто pwsh) по-прежнему не занимает топовых позиций среди прочих языков, что, впрочем, нисколько не смущает киберпреступность. Первый зловред был написан ещё во времена первого поколения могучего шелла, затем были различного рода постэксплуатационные "фреймворки" для скомпрометированных систем, ну а там уж и анекдотов насочиняли. В смысле, была понаписана масса ненужного в информационном плане барахла вроде tips of day или how to do. Иными словами, информационная безопасность в контексте pwsh грозила перерасти в некий stand up, если бы не внезапно для многих случившаяся кроссплатформенность, на которой-то и споткнулись ряд проектов, не говоря уже о матёрых скриптописателях. Как ни странно, но в большинстве статей посвящённых расследованию инцидентов компрометации систем посредством pwsh используется пятая версия последнего. Между тем малварь, написанная на pwsh, существует и под Linux, и под MacOS, что великодушно игнорируется некоторыми ИБ экспертами, - винить во всём Microsoft уже не столько необходимо, сколько вошло в привычку.
Актуален ли еще Solid?
Перевод статьи Роберта Мартина
Недавно я получил письмо:
В течение многих лет проверка понимания принципов SOLID было стандартной частью нашей процедуры приема на работу. Предполагалось, что кандидаты хорошо знакомы с этими принципами. Однако в последнее время один из наших менеджеров, который больше не занимается программированием, усомнился в том, что это разумно. Его аргументы заключались в том, что принцип открытости-закрытости (open–closed principle) больше не очень важен, потому что большая часть кода, который мы пишем, не содержится в больших монолитах, а внесение изменений в небольшие микросервисы безопасно и легко. Принцип подстановки Лисков (Liskov substitution principle) давно устарел, потому что мы не уделяем столько внимания наследованию, как 20 лет назад. Я думаю, нам следует рассмотреть позицию Дэна Норта по SOLID: «Просто напишите простой код».
В ответ я написал следующее письмо:
Принципы SOLID остаются актуальными и сегодня, как и в 90-е годы (и даже до этого). Это потому, что программное обеспечение не сильно изменилось за все эти годы. Оно не сильно изменилось даже с 1945 года, когда Тьюринг написал первые строчки кода для электронного компьютера. Программное обеспечение по-прежнему представляет собой операторы if, циклы while и операторы присваивания - последовательность, выбор и итерацию.
Каждое новое поколение любит думать, что их мир сильно отличается от мира предыдущего поколения. Каждое новое поколение ошибается в этом. Это то, что каждое новое поколение узнает, когда приходит следующее новое поколение, чтобы рассказать им, насколько все изменилось. Итак, давайте рассмотрим принципы один за другим.
Правила «идеального программиста»
Когда меня спрашивают про мой опыт работы программистом, в частности про время потраченное от первого, до последнего рабочего куска кода, я привык отвечать — «От пары лет, до пары месяцев». До текущего момента этот ответ был довольно странный, но имеющий право на жизнь, ибо может показаться, что полученный опыт работы «IT-шником-одиночкой» (кем я и был до недавнего времени) не в IT компании довольно сложно применить к боевой разработке и в расчет к опыту профессиональной деятельности применяться не должен. Но это не так. Недавно мне довелось перечитать один из бестселлеров трилогии дядюшки Боба -«Идеальный программист» и сквозь призму времени, довольно странного опыта и изученного материала я готов обозначить, пожалуй, главные навыки, которые должен иметь, либо развивать «Идеальный программист». Данный список является несколько абстрактным, что делает его применимым не только для разработки, но и для других сфер.
Что должен, но не знает про конкуренцию в PostgreSQL каждый разработчик?
Опыт показывает, что разработчики редко задумываются о проблемах, которые могут возникать при многопользовательском доступе к данным. При этом практически любое web-приложение является многопользовательским и так или иначе использует блокировки при доступе к данным в БД. При неправильном использовании эти блокировки могут больно бить по пользователям, а иногда и по системе в целом. Поэтому рано или поздно каждый разработчик многопользовательских систем должен задуматься о том, как ему начать работать с БД так, чтобы пользователи не мешали другу другу. Многие считают, что это сложно, давайте вместе убедимся, что это не так.
Во все порты: одна карта и три картридера
Казалось бы, выбор картридера очевидным образом влияет на скорость карт памяти: модели с интерфейсом USB 3.x всегда быстрее их предков с USB 2.0, но все ли картридеры USB 3.x одинаково шустрые? Есть ли для них смысл в USB 3.2 Gen 2 (10 Гбит/с), или же это заведомый overkill и маркетинговый шум?
Мне захотелось проверить это на примере работы microSDXC Transcend 340S на 256 ГБ (TS256GUSD340S) с тремя разными картридерами. Для чистоты эксперимента выбрал ридеры той же фирмы (благо, их часто закупают). Ниже привожу результаты тестов, но для начала опишу основные условия их проведения.
Материнка: Asus Maximus VIII Hero (старая, но всё ещё добрая);
Камень: Core i7-7700K на частоте 4500 МГц (45x100x4+HT);
Оперативка: 2 планки по 8 Гб Kingston HyperX DDR4-3466 в двухканальном режиме;
Два твердотельника по полтерабайта: WD Black SN750 (под систему) + TS512GSSD452K (хранилка);
Б/п: SSR-750TR (он же Seasonic Prime TX-750).
Картридеры: Transcend HUB5C, RDF9K2 и RDF5
Операционка: 64-разрядная Win 7 с последними обновками (ESU).
Небольшая автоматизация небольшого производства
Практически все инженеры, причастные к разработке в небольших компаниях, занимаются, по мимо самой разработки, приемосдаточными испытаниями и отладкой уже серийных изделий. Чаще всего изделия подвергаются климатическим испытаниям, испытаниям на виброустойчивость, в целом список испытаний зависит от целевого назначения изделия и места его эксплуатации, в общем изделие загоняют в критические режимы работы. Если испытания производятся силами организации, то место их проведения обрастает кучей проводов и контрольно-измерительными приборами конечно разработчик знает, что со всем этим делать, но если вам повезло, и ваша организация имеет человека, призванного заниматься приемосдаточными испытаниями то конечно его нужно вводить в курс дела и объяснять, как работать с этим изделием. Частенько, предприятия, даже не большие, выпускают не один продукт, а несколько(ну или разные модификации одного детища) и конечно к отладке каждого из вариантов нужно, так или иначе, подготавливать рабочее место, что не облегчает и точно не ускоряет работу. Но есть из этого выход, который облегчит если не жизнь, то хотя бы рабочий процесс наладчику, и инженеру, и инженеру-наладчику, а имя этому выходу - стенд для испытаний.
К-распределение плотности вероятности. Единорог среди всех распределений
На Хабре имеется небольшое количество статей, главным образом в помощь начинающим аналитикам данных, в которых описываются всевозможные статистические распределения случайных величин. Упоминания об одном единственном я в них не нашел. Имя ему К-распределение. Хочу вам показать этого единорога.
На практике такое распределение используется, как правило, довольно узкими специалистами. В основном при математическом моделировании работы радиолокационных станций (РЛС), а также радаров с синтезированной апертурой и то в определенных условиях. Аналитиками данных в повседневной жизни конечно же не используется. Хотя, возможно К-распределение может описывать какие-то процессы, кто знает, эта сторона вопроса требует дополнительного изучения. Предлагаю аналитикам данных над этим подумать, а также всем желающим.
Как делали онлайн карту объектов культурного наследия
В нашем рассказе речь пойдет про то, как мы реализовывали проект “Сохраним наследие” и делали онлайн карту памятников истории и культуры historymap.online. Это небольшая обзорная статья про наш проект. Она не содержит каких либо решений только общую концепцию. В дальнейшем планируем более детально описать этапы работ.
Создание унифицированного UI без мам, пап и кредитов
Всем привет! Меня зовут Артём и я разработчик в команде Operations & Support Tools. Наша команда занимается разработкой софта для взаимодействия поддержки с пользователями, с целью решения любых возникших у пользователей проблем.
В прошлый раз один из моих коллег рассказывал, как реализовано взаимодействие сервисов у нас в Платформе. Те, кто пропустили эту статью, могут найти её по ссылке. Сегодня я хочу рассказать про приложение, которое раскрыло возможности Contract API с новой стороны. Знакомьтесь, Contract UI.
Ещё одна автоматизация сталинки
Очередная статья c теорией и практикой на тему домашней автоматизации...
Являюсь давним читателем хабра, но только сейчас созрел написать статью.
В ней будет отображено как текущее состояние дел, так и немного истории. Конкретного финиша нет: совершенствовать можно почти до бесконечности.
Рассчитываю как поделиться идеями и опытом, так и набраться критики и предложений.
iPadOS в стиле Windows 95
Я решил нарисовать интерфейс, который объединяет стиль Windows 95 и логику управления из IPadOS. До меня (по крайней мере, я не встречал подобных концептов).
Как в оригинальном айпаде, сверху находятся часы, трей и индикаторы Wi-Fi. Снизу находится док, где слева расположены, закрепленные в док, приложения, а справа - запущенные приложения (которые не закреплены в док). По центру сетка приложений и виджетов.
Основы работы с PostgreSQL в Docker
В данной статье рассматриваются некоторые особенности начала работы с СУБД PostgreSQL в Docker, которые могут быть полезны читателю, если он только начинает познавать искусство работы с контейнерами. Написать сие произведение меня побудило отсутствие статей, которые полностью покрывают базовые вещи в начале работы с PostgreSQL в Docker. В этой статье мы не будем подробно рассматривать принципы работы PostgreSQL, однако напишем несколько базовых запросов для того, чтобы протестировать работу контейнера.
Аудио-графическое шифрование или как звук в картинку спрятать
Под покровом вечера пятницы, поглощая хмельные запасы нашей необъятной и листая любимый Хабр, я наткнулся на плеяды статей о шифровании. Что только куда не зашифровывали, от совсем уж банального шифра Цезаря до менее банального шифрования изображений в аудиофайл. Наслаждаясь достойным вечера чтивом, в голову зашел не разувшись интересный вопрос: "-А кто-нибудь звук в картинку прятал?". Зудящая жажда знаний заставила меня смахнуть с живота остатки кальмаровых колец и сесть за свою рабочую лошадку.
Сравнение лучших сервисов для мониторинга цен конкурентов: преимущества и отличия
Все познается в сравнении! В этой статье описывается 5 наиболее популярных сервисов мониторинга цен конкурентов. Ознакомившись, вы узнаете, какой стандартный набор функций имеет каждый из сервисов, какие особенности и преимущества у каждого, стоимость услуг и многое другое...
Разрыв между производством и потреблением данных
Думаю, многие согласятся, что современный русский язык находится под постоянным давлением со стороны английского в части заимствований. Мы уже обыденно произносим и понимаем фразу типа «когда юзер пытался залогиниться через АДэ, в браузере что-то заглючило, надо винду ребутнуть, наверное». Так получается короче, быстрее, но, кажется, это может плохо кончиться в итоге. Эллочка-людоедка, новояз Оруэлла и бейсик-инглиш Огдена, ю ноу. Корень проблемы в корнях. И мы теряем корни в буквальном смысле слова. Свои корни теряем, а чужие нам не позволяют правильно понимать смысл слов. Поясню на примере.
О чём говорят люди, когда обсуждают Data Governance и Data Management на русском? Давайте разбираться.
Есть в английском два слова примерно об одном и том же: «governance» и «management». При этом «governance» однокоренное с «government» (правительство). Аналогично, в русском языке есть два самых употребляемых слова на эту тему: «управление» и «руководство». При этом, «управление» — однокоренное со словом «правительство». Кроме того, слово «management» восходит к латинскому «manus» (рука), а «руководство» прямо содержит в себе корень слова «рука».
С точки зрения корней, логично переводить «governance» как «управление» (отсылка к «правительству»), а «management» как «руководство» (отсылка к «руке»).
А с точки зрения взаиморастворения культур не всё так однозначно, ибо у них есть «data management» и отдельно «data governance», и всем понятно, что это разные вещи. Там люди чётко понимают, что «governance» выше, чем «management». А у нас редкий человек объяснит, чем «управление» отличается от «руководства». Вот и получается, что использовать Data Governance и Data Management в русском очень трудно, особенно так, чтобы тебя поняли.
Дюна, Дюночка, Дюна́…
В последние две недели я наблюдаю в Рунете некую истерию вокруг новой экранизации «Дюны»: одни хвалят, другие ругают, а третьи оставляют сдержанные отзывы. Сейчас о «Дюне» не пишет только ленивый. Ну вот и я решил вставить свои 5 копеек.
Code Review – зачем и как использовать в команде?
В статье рассказывается про процесс Code Review, подходы к реализации, как использовать в команде и на что обращать внимание во время Code Review.
Code Review - это процесс проверки и анализа кода задачи разработчиком перед ее релизом. CR (Code Review) выполняется не тем человеком, который делал задачу, а другими членами команды. Результатом CR является обратная связь по выполненной задаче: необходимость внести правки, либо готовность задачи к последующему тестированию и релизу.