Pull to refresh
5
0.1
Send message

Препарируем Compound File Binary format (CFB), или начинаем парсить DOC

Reading time5 min
Views8.1K
Compound File – это довольно сложный универсальный бинарный формат файлов, лежащий в основе форматов офисных документов до MS Office 2007 (doc, xls, ppt, msg, …), отчасти MS Office 2007+ (например vbaProject.bin внутри xlsm) и других.

Под катом краткое описание как Compound File устроен внутри, которое, надеюсь, будет полезно как ликбез и поможет читателю лучше понимать что делают утилиты или про что пишут в статьях про CFB файлы.


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

Практическое руководство по HashiCorp Consul — Часть 1

Reading time25 min
Views99K


Это часть 1 из серии 2 частей практического руководства по HashiCorp Consul. Эта часть в первую очередь ориентирована на понимание проблем, которые решает Consul и как он их решает. Вторая часть больше ориентирована на практическое применение Consul в реальном примере и будет опубликована на следующей неделе. Давайте начнем.

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

Кто такой одинарный инженер?

Reading time3 min
Views18K
Кто такой «1х-инженер»?

Возможно, вы слышали о «десятикратных» инженерах. Они очень производительны, эффективны, работают буквально за десятерых. Если такие существуют, то наверняка должны быть и одинарные инженеры?

Конечно, такие есть. Давайте попробуем составить список качеств, присущих простому одинарному инженеру. Неполный список.
Читать дальше →

Как мы заставили код, портированный с C#, работать с моделью памяти C++

Reading time19 min
Views7.9K
Привет, Хабр. В прошлой статье я рассказывал о том, как мы создали фреймворк для перевода кода C# на (неуправляемый) C++, чтобы выпускать свои библиотеки, изначально разработанные для платформы .Net, и под C++ тоже. В этой статье я расскажу о том, как нам удалось согласовать модели памяти этих двух языков, добившись работы портированного кода в необычном для него окружении.

Я расскажу о том, какие умные указатели мы используем, и почему нам пришлось разработать для них собственные реализации. Я также расскажу о процессе подготовки кода C# к портированию с точки зрения управления временем жизни объектов, о некоторых проблемах, с которыми мы столкнулись, и о специфических способах диагностики, которыми нам приходится пользоваться при работе.
Читать дальше →

Swagger/OpenAPI Specification как основа для ваших приёмочных тестов

Reading time17 min
Views76K

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


Я занимаюсь автоматизацией тестирования в Яндексе с 2013 года. Из них более четырёх лет автоматизирую тестирование REST API-сервисов. На Heisenbug я рассказал об использовании OpenAPI-спецификации как основы для приёмочных тестов, а также о том, как легко поддерживать автотесты на огромное количество REST API-сервисов и добавлять автотесты на новые проекты.



Под катом — видеозапись и расшифровка моего доклада. Примеры из доклада есть на GitHub.

Дерево синтаксиса и альтернатива LINQ при взаимодействии с базами данных SQL

Reading time9 min
Views11K


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

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

Базы данных: большой обзор типов и подходов. Доклад Яндекса

Reading time28 min
Views84K
Это конспект лекции Татьяны Денисовой tdenisova — бэкенд-разработчика в Яндекс.Учебнике. Вы узнаете, какие бывают базы данных, какие их особенности важно помнить, как в работе с данными учитывать характеристики системы и планы масштабирования, в какую из тем нужно углубиться для решения конкретной задачи. А также как при возникновении багов определить, является ли работа с БД источником проблемы (и если да, то в какую сторону копать).



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

Ленивая инициализация в C#

Reading time4 min
Views35K
Отложенная инициализация или «ленивая» инициализация — это способ доступа к объекту, скрывающий за собой механизм, позволяющий отложить создание этого объекта до момента первого обращения. Необходимость ленивой инициализации может возникнуть по разным причинам: начиная от желания снизить нагрузку при старте приложения и заканчивая оптимизацией редко используемого функционала. И действительно, не все функции приложения используются всегда и, тем более, сразу, потому создание объектов, реализующих их, вполне рационально отложить до лучших времён. Я хотел бы рассмотреть варианты ленивой инициализации, доступные в языке C#.
Читать дальше →

Понимаем планы PostgreSQL-запросов еще удобнее

Reading time4 min
Views19K
Полгода назад мы представили explain.tensor.ru — публичный сервис для разбора и визуализации планов запросов к PostgreSQL.



За прошедшие месяцы мы сделали про него доклад на PGConf.Russia 2020, подготовили обобщающую статью по ускорению SQL-запросов на основе рекомендаций, которые он выдает… но самое главное — собирали ваши отзывы и смотрели за реальными use case.

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

PostgreSQL Antipatterns: убираем медленные и ненужные сортировки

Reading time5 min
Views19K
«Просто так» результат SQL-запроса возвращает записи в том порядке, который наиболее удобен серверу СУБД. Но человек гораздо лучше воспринимает хоть как-то упорядоченные данные — это помогает быстро сравнивать соответствие различных датасетов.

Поэтому со временем у разработчика может выработаться рефлекс «Дай-ка я на всякий случай это вот отсортирую!» Конечно, иногда подобная сортировка бывает оправдана прикладными задачами, но обычно такой случай выглядит как в старом анекдоте:
Программист ставит себе на тумбочку перед сном два стакана. Один с водой — на случай, если захочет ночью пить. А второй пустой — на случай, если не захочет.
Давайте разбираться — когда сортировка в запросе точно не нужна и несет с собой потерю производительности, когда от нее можно относительно дешево избавиться, а когда сделать из нескольких — одну.

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

Защита проекта VBA в MS Excel

Reading time5 min
Views40K
Всем привет! Я обычный пользователь MS Excel. Не являющийся профессиональным программистом, но накопивший достаточно опыта, для установки и обхода защиты проектов VBA.

Дисклеймер:

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

Цель статьи показать слабые и сильные стороны каждого вида защиты проекта VBA в MS Office.

Демонстрация разработанных инструментов, в надстройке Macro Tools VBA, для снятия и установки той или иной защиты. 

Все инструменты реализованы стандартными средствами VBA, без использования дополнительных библиотек. 


Главная панель Надстройки Macro Tools VBA
Читать дальше →

System.Threading.Channels — высокопроизводительный производитель-потребитель и асинхронность без аллокаций и стэк дайва

Reading time18 min
Views45K
И снова здравствуй. Какое-то время назад я писал о другом малоизвестном инструменте для любителей высокой производительности — System.IO.Pipelines. По своей сути, рассматриваемый System.Threading.Channels (в дальнейшем «каналы») построен по похожим принципам, что и Пайплайны, решает ту же задачу — Производитель-Потребитель. Однако имеет в разы более простое апи, которое изящно вольется в любого рода enterprise-код. При этом использует асинхронность без аллокаций и без stack-dive даже в асинхронном случае! (Не всегда, но часто).


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

SQL Server Plan Guide и другие не самые лучшие практики

Reading time11 min
Views13K
Обычно посты об оптимизации запросов рассказывают о том, как делать правильные вещи, чтобы помочь оптимизатору запросов выбрать оптимальный план выполнения: использовать SARGable-выражения в WHERE, доставать только те столбцы, которые нужны, использовать правильнопостроенные индексы, дефрагментированные и с обновлённой статистикой.

Я же сегодня хочу поговорить о другом — о том, что ни в коем случае не относится к best practices, том, с помощью чего очень легко выстрелить себе в ногу и сделать выполнявшийся ранее запрос более медленным, или вообще больше не выполняющимся из-за ошибки. Речь пойдёт о хинтах и plan guides.
Читать дальше →

Не гладь – работай

Reading time1 min
Views5.9K
Как-то на одной вечеринке dj zhivchik принес гладильную доску. Установил ее и сверху поставил микшер. Выглядело странно :)

Решил и я попробовать. Дома откуда-то нашлась вторая гладильная доска. Снял сверху ткань и поролон и вот что получилось:

image

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

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

Бенуа Мандельброт на TED: «Фракталы и искусство изломов»

Reading time9 min
Views8.9K
image

Большое спасибо. Прошу прощения за то, что я сижу. Я очень старый человек.

Моя сегодняшняя тема в определённом смысле весьма особенная, потому что она очень древняя. Изломы – неотъемлемая часть человеческой жизни, они есть всегда. Об этом писали древние. Эта вещь по большей части нам неподконтрольна. И в каком-то смысле они кажутся крайней степенью усложнения – просто сплошной беспорядок.

Есть много видов беспорядка. Так вот, по чистой случайности много лет назад я стал заниматься этой формой усложнения, и, к моему полному удивлению, я нашёл признаки, и, должен сказать, весьма чёткие признаки порядка в изломах. А потому сегодня я хотел бы представить вам несколько примеров того, что это значит. Я предпочитаю слово «изломанность» слову «неровность» потому, что для того, кто изучал латынь, как и я в своей далёкой молодости, неровность – это противоположность ровности. Но ведь это не так.

Ровность есть противоположное к изломанности, потому что мир по большей части предстаёт нам как полный изломов.

Как я спас мир

Reading time4 min
Views37K
image

Обычно я летаю в Москву самолетом. РЖД слишком заплывает за буйки, делая стоимость билета выше чем у авиаперевозчика — при том, что трястись в их плацкарте придется сутки. Но в этот раз мне пришлось поехать поездом — я вез с собой собранный за время карантина ионоулавливатель — здоровенную металлическую дуру килограмм в тридцать весом — провезти её самолетом не было никакой возможности.

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

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

Собеседование наоборот: вопросы соискателя к компании

Reading time6 min
Views77K
Всем привет! Хочу очередной раз поднять тему про найм. Только я собираюсь поговорить об этом с точки зрения кандидата, а не работодателя. Ведь собеседование, вопреки многим стереотипам, процесс двусторонний — вопросы может задавать не только интервьюер, но и сам соискатель. За прошлый год я провёл порядочное количество собеседований, и абсолютное большинство кандидатов огорчило меня отсутствием вопросов о компании, всего 5 человек стали меня расспрашивать о работе.

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

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

Взгляд химика, тестировщика и аналитика данных на чёрную металлургию и большие данные в ней

Reading time12 min
Views6.4K
Всем привет. Меня зовут Александр и я химик тестировщик аналитик данных. Как и многие люди моего поколения, я работаю не по специальности. После химфака МГУ и пяти лет работы младшим научным сотрудником в области химической технологии я переметнулся в IT и стал тестировщиком ПО. Помню, как мама говорила мне, чтобы я попробовал найти работу, где будут сочетаться химия и информационные технологии, но в тот момент я считал, что такого не бывает.

Ну и как это часто бывает, жизнь подбросила новые возможности и вот я в здесь – в компании Datana, где неожиданно для самого себя успешно сочетаю несочетаемое: анализ данных и знание химии.
Читать дальше →

Information

Rating
3,128-th
Registered
Activity