минулій статті ми дізналися, як за допомогою утиліти pg_filedump можна відновити дані, або, принаймні якусь їх частину, повністю вбитої бази даних PostgreSQL. При цьому передбачалося, що ми звідки знаємо номери сегментів, що відповідають таблиці. Якщо ми знаємо частина вмісту таблиці, її сегменти дійсно не складно знайти, наприклад, простим grep'ом. Однак у більш загальному випадку це не так-то просто зробити. До того ж, передбачалося, що ми знаємо точну схему таблиць, що теж далеко не факт. Так от, нещодавно ми з колегами зробили новий патч для pg_filedump, що дозволяє розв'язати названі проблеми.
Читати далі →

Приклад відновлення PostgreSQL таблиць за допомогою нової мега фічі pg_filedump



Дозвольте я розповім вам про одну класної фиче, яку ми з колегами з Postgres Pro нещодавно запилили в утиліті pg_filedump. Ця фіча дозволяє частково відновлювати дані з бази, навіть у разі, якщо база була сильно пошкоджена і інстанси PostgreSQL з такою базою вже не запустиш. Звичайно, хочеться вірити, що потреба в такому функціоналі виникає вкрай рідко. Але на всякий випадок щось подібне хотілося б мати під рукою. Читайте далі, і ви дізнаєтеся, як ця фіча виглядає у дії.
Читати далі →

Імпортуємо DXF креслення в програмі на Java, наступаючи на всі граблі цього «простого» формату

AutoCAD і подібні йому САПР давно вже стали стандартом в області проектування, і не дивно що таким же стандартом стали широко використовувані в них формати файлів DWG/DXF. Так що якщо ви розробляєте якесь рішення для архітекторів і проектувальників, то вміння працювати з цими форматами (ну або хоча б з одним з них) — must have фіча вашого продукту.



В рамках свого вебсервиса для симуляції руху пішоходів довелося і мені потурбуватися імпортом генпланів в цих форматах. Раніше з САПР я справи не мав, тому наївно думав «та що там, подумаєш — ще один формат креслень, лінії і багатокутники, що там може бути складного?». Але в процесі роботи з'ясувалося що складного там може бути достатньо, деякі нюанси цілком схожі на стародавні милиці, що тягнуться з глибин століть, при цьому багато речей толком не задокументовані в специфікаціях самого формату (наприклад робота з блоками або з кривими). Мабуть вони вважаються очевидними для будь-якого кресляра, але що робити якщо ви родом з іншої області, і таких знань не маєте?

Загалом під катом — перерахування граблів і рішень, які не вдалося нагуглити і довелося добувати полуночными пильнуваннями над кресленнями.

Читати далі →

Формат зберігання даних HV як спроба вирішення проблеми наочного зберігання текстових полів



Не так давно переді мною постало завдання мати можливість зберігати дані в текстовому вигляді, щоб з ними працювала не тільки програма, але міг прочитати і відредагувати (а також створити з нуля в текстовому редакторі) осіб. Для цього вже існує безліч зручних і гарних форматів, наприклад JSON, YAML, XML і так далі. Але в розглянутих системах траплялися моменти, які, все ж, трохи не сподобалися.

Приділю особливу увагу яскравому незручності більшості таких форматів (природно, на мій погляд), в тому числі і дуже потужних і популярних, — проблемі, пов'язаної з зберіганням тексту: як записати текстове поле, яке може містити будь-які символи, щоб його вміст не доводилося міняти, і воно не вплинуло на парсинг, адже там можуть зустрітися і різні підрядка, що збігаються зі службовими комбінаціями, і різні нестандартні відступи.
Читати далі →

Розбір форматів: 3d-моделі зсередини

image

Ще одна стаття про розборі форматів, для літнього недільного вечора, невелика і розважальна. На цей раз мова піде про 3d-моделях. Принципи зберігання даних для будь-яких моделей однакові, але формати файлів вельми різноманітні. Навіть в умовах одного і того ж движка розробники намагаються все модифікувати і впихнути що-небудь своє, адже у комерційних версіях у них є можливість змінювати код движка, і вони їй зазвичай користуються.

Читати далі →

Розбір форматів: запаковані хешірованние ресурси



У минулих двох статті я розповів про особливості форматів даних звукової підсистеми сучасних ігор. Щоб не втомлювати читачів, перейду до дещо іншої теми. Якою б движок не використовувала гра, їй потрібно десь зберігати ресурси і витягувати їх звідти в потрібний момент. Іноді ресурси в архіві мають ідентифікатор, так і читабельне ім'я файлу. Але існує досить багато движків, де імен у файлів немає, а є тільки хеш. Як же в такому разі можна щось розібрати в ресурсах?

Розглянемо це на прикладі досить рідкісного движка bitsquid. Він простий і компактний, але, тим не менш, має всі необхідні для сучасних ігор можливості. У минулому році bitsquid разом з його розробником був куплений компанією Autodesk, і тепер вони збираються схрестити його з Maya і зробити свій власний ігровий движок, який, як вони обіцяють, буде чимось неймовірним.

Читати далі →

Розбір форматів: звуковий пакет в Unreal Engine



Минулого разу я розповів про дослідженні зв'язку звуку з текстом в движку UE3. Розгляну докладніше більш простий випадок — розбір пакету звуків Bioshock Infinite, з якого починалася повна локалізація цієї гри на російську мову.

Розбір ресурсів — це як розгадування ребуса або кросворду: починаємо з одного боку, і поступово дізнаючись значення все нових полів, розгадуємо все інше. Спочатку структура ресурсів гри була для нас як темний ліс. Але поступово ми дізнавалися про них все більше і більше, одне тягло за собою інше, і в результаті були досліджені і модифіковані практично всі ресурси гри: звук, текстур, 3D-моделі. Приклад напису, зміненої у вигляді моделі разом з текстурою, картами освітлення і відображення, світяться лампочками, відблисками і тінню, можна бачити на картинці.

Але почалося все це з простої на перший погляд завдання: знайти, де в грі знаходиться звук, і як його можна замінити.

Читати далі →

Розбір формату файлів локалізації Microsoft Office

Ви ніколи не помічали, що у функції AGGREGATE в Excel у другого набору аргументів неправильне опис аргументів? Фактично, у другому наборі опису аргументів взяті упереміш з другого і першого наборів. Цей баг точно відтворюється в Excel 2010, 2013. Мені стало цікаво, чому так відбувається, адже не можуть Microsoft так халатно ставитися до інтерфейсу одного з своїх основних продуктів. Підсумком став повний розбір формату файлів локалізації MS Office.


Читати далі →

Tree - вбивця JSON, XML, YAML і іже з ними

Доброго дня, мене звуть Дмитро Карлівський і я… багато думав. Думав я про те, що не так з XML і чому його останнім часом проміняли, на безглуздий JSON. Результатом цих роздумів став новий стандарт формат даних, який увібрав у себе гнучкість XML, простоту JSON і наочність YAML.

imageTree — двовимірний бінарно-безпечний формат представлення структурованих даних. Легко читається як людиною, так і комп'ютером. Простий, компактний, швидкий, виразний і розширюваний. Порівнюючи його з іншими популярними форматами, можна скласти наступну порівняльну таблицю:
— краще JSON XML YAML INI Tree
Человекопонятность 3 1 4 5 5
Зручність редагування 3 1 4 5 5
Довільна ієрархія 3 3 3 1 5
Простота реалізації 3 2 1 5 5
Швидкість парсинга/серіалізації 3 1 1 5 5
Розмір в серіалізовать вигляді 3 1 4 5 5
Підтримка потокової обробки 0 0 5 5 5
Бінарна безпека 0 0 0 0 5
Поширеність 5 5 3 3 0
Підтримка редакторами 5 5 3 5 1
Підтримка мовами програмування 5 5 3 5 1

Читати далі →

Архітектура прототипу і формату даних 3D кадастру в Росії

    В даний час система державного кадастру та реєстрації об'єктів нерухомості заснована на двомірному поданні об'єктів, включаючи земельні ділянки, будівлі, споруди. Проте існуючий підхід не вичерпує всіх ситуацій в реальному тривимірному світі, що при існуючому двомірному підході викликає проблеми в постановці на кадастровий облік і реєстрацію прав для ряду об'єктів. Проблему реалізації 3D кадастру обговорюють вже досить давно в багатьох країнах, Росія — не виняток. У даній статті я спробував висвітлити ключові моменти проекту з реалізації тривимірного кадастру, зокрема ту сферу, яка найближче прилягає до IT структурам.
 
Читати далі →