Pull to refresh

Реализация настоящего 3D эффекта в своих проектах

Working with 3D-graphics *
Sandbox
image

Сегодня я попробую без nVidia 3D Vision, специальных очков и 120Hz монитора добиться настоящего 3D картинки. Работа будет произведена с помощью графической библиотеки GLScene для Delphi/Lazarus/Borland C++ на ПЭВМ с посредственными характеристиками. Вы можете повторить указанные действия, используя фотоаппарат, программы с функцией моделирования 3D изображения (например, MathCAD, Maya, etc) или любым GAPI. В конце статьи мы должны получить объемное изображение вне монитора, к которому можно будет «прикоснуться». Это не революция в технологиях, а простой стереоскопический эффект, который в быту является небольшой, но полезной для зрения забавой.
Читать дальше →
Total votes 48: ↑40 and ↓8 +32
Views 7.5K
Comments 65

Lazarus 1.0 увидел свет!

Website development *Open source *Delphi *
В то время как поклонники и ненавистники Delphi ломают копья по поводу, недавно анонсированной, версии XE3, ребята из команды Lazarus 29 августа объявили о выходе Lazarus 1.0.

Для тех кто не в курсе, Lazarus — это IDE и набор классов для FreePascal, который эмулируют Delphi. Проект был открыт в далеком 1999 году усилиями трёх разработчиков: Cliff Baeseman, Shane Miller и Michael A. Hess. История более детально описана в Wiki.
Читать дальше →
Total votes 103: ↑92 and ↓11 +81
Views 47K
Comments 83

Lazarus как он есть

Website development *Delphi *
Sandbox
Довольно часто наше нежелание разбираться в вопросе и уверенность в собственной логике рождает неверные предположения. Эти предположения, высказанные как утверждения на публичной площадке, могут прочно осесть в чужих головах и сформировать ложные отрицательные представления.

Так в комментариях к недавней теме «Lazarus 1.0 увидел свет!» были высказаны некоторые неверные утверждения, а также задан ряд вопросов оставшихся без ответов. Являясь разработчиком Lazarus и FPC уже довольно продолжительное время, я могу и хочу дать ответ на большинство связанных с этими продуктами вопросов и развеять некоторые неверные предположения.

Утверждение: Размер исполняемых файлов оставляет желать лучшего. Виноват компилятор, компоновщик и др.
Читать дальше →
Total votes 64: ↑59 and ↓5 +54
Views 25K
Comments 77

Ввод дробных значений без смены раскладки

Delphi *Algorithms *
Sandbox
Как часто вам приходится вводить в интерфейс какой-либо программы/web-сервиса дробные значения? Если часто, то, вероятно, вы сталкивались с неадекватным поведением таких полей. Я, например, довольно регулярно бьюсь лбом об абсолютно тупые формы. Хотите знать, почему ввод дробных значений может довести до белого каления, и что с этим делать? Добро пожаловать по кат.
Читать дальше →
Total votes 28: ↑15 and ↓13 +2
Views 15K
Comments 55

Использование Direct3D с высокоуровневыми библиотеками компонентов VCL/LCL

Programming *Delphi *
Sandbox
Данная публикация адресуется новичкам в области программирования компьютерной графики, желающим использовать графическую библиотеку Microsoft DirectX. Сразу оговорюсь:
— затронутая тема, наверняка, относится и к OpenGL, но я это не проверял опытным путём (созданием приложений под OpenGL), поэтому в заголовке упоминаю только Direct3D;
— приводимые здесь примеры кода относятся к языкам Delphi/FreePascal, но перечисленные «рецепты» по большому счету универсальны в пределах целевой ОС (Windows) — их можно применять к любому языку программирования и, с высокой вероятностью — к любой высокоуровневой библиотеке компонентов, помимо VCL (Delphi) и LCL (Lazarus);
— данная публикация не затрагивает тему создания каркасного приложения Direct3D и методов работы с графическими библиотеками DirectX и OpenGL; все эти вещи хорошо освещены в других источниках, и мне практически нечего к этому добавлять.

Итак, ближе к теме. При разработке приложений с трёхмерной графикой для построения каркаса учебного (а тем более — рабочего) приложения обычно рекомендуется использовать чистый Win32 API… Но если очень хочется использовать в своих приложениях ещё и преимущества высокоуровневых библиотек компонентов, тогда добро пожаловать под кат.
Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Views 9.9K
Comments 21

DxGetText — GNU Gettext for Delphi and C++ Builder

C++ *Delphi *
Tutorial
Посчастливилось мне как-то работать под руководством СТО, который по совместительству соавтор одного интересного проекта — GNU Gettext for Delphi and C++ Builder. Заценил я его только в Delphi, но этого достаточно чтоб понять принцип работы и разобрать какими фичами он обладает.
Вкратце это библиотека, позволяющая внедрять качественную локализацию в продукт общепринятым способом, работает так:
  1. пишем код, почти как обычно;
  2. запускаем приложение, сканирующее исходники на предмет текста, который нужно перевести;
  3. генерим РО файлы;
  4. переводим их в любом удобном редакторе;
  5. компилим РО файлы в МО файлы;
  6. на выбор либо внедряем перевод прямо в ЕХЕ либо кладём МО файлы рядом;
  7. наслаждаемся результатом — язык приложения можно менять даже без перезапуска.

Чем этот способ крут:
  • минимум изменений в коде приложения;
  • никаких DLL и сторонних компонентов, всё OpenSource;
  • РО файлы — достаточно распространенный инструмент перевода, что значит перевод можно даже отдать на аутсорс, и переводчик знает что с этим делать;
  • перевод всего — формы, фреймы, месседжбоксы, и всё что угодно;
  • корректный перевод слов в множественном числе в любом языке;
  • полная поддержка Unicode.
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Views 11K
Comments 10

Высокопроизводительный long polling чат

High performance *Open source *System Analysis and Design *
Sandbox

Предыстория


image Есть сайт на Laravel с посещаемостью real-time в 700-1000 человек. Ранее сайт использовал чат стороннего разработчика. Он использовал WebSockets.

Всё было прекрасно, пока в один прекрасный момент разработчик чата отказался его поддерживать в связи с высокой нагрузкой. С этого момента начались поиски альтернативных чат-систем…
Читать дальше →
Total votes 20: ↑8 and ↓12 -4
Views 22K
Comments 39

Security Week 08: кража мышей через свисток, операция «Блокбастер», Linux Mint с бэкдором

«Лаборатория Касперского» corporate blog Information Security *
Помимо обозначенных в заголовке новостей недели, продолжает развиваться история с противостоянием Apple и ФБР, или более точно — борьба между вендорами и государством на поле законодательства. Более подробно я об этом написал в предыдущем дайджесте, в комментариях к которому было замечено одно показательное сомнение в важности данной темы. Дескать, какая разница, заставят Apple написать бэкдор к своему же устройству или не заставят — все равно ЦРУ (АНБ, другие комбинации из трех букв) сломает и так, без суда.

Может ли ЦРУ (АНБ, итд) взламывать айфоны или не может — мы не знаем, и достоверно не узнаем никогда. Но суть конфликта заключается в том, что Apple пытаются заставить «сломать» собственный смартфон самостоятельно. Компания же сопротивляется, выступая (не прямым текстом, конечно) за разделение труда: задача Apple максимально защитить персональные данные своих клиентов (от кого угодно), задача спецслужб — сделать так, чтобы защита не мешала расследованию преступлений. Об этом говорится в поданном вчера ходатайстве Apple — там юридическим языком оформлены ранее публично высказанные претензии. Самое важное: по мнению Apple ФБР просит слишком много. Типичное действие суда — потребовать у компании дать то, что у нее уже есть (данные из iCloud, логи, исходные коды софта). Но в данном случае от Apple требуют создать что-то новое — инструмент для взлома телефона, которого раньше у компании не было. В Apple назвали такой бэкдор GovtOS (или ГосОсь, если хотите).

Определилась ситуация и с возможными последствиями для индустрии. С одной стороны, если Apple заставят сделать бэкдор, это создаст прецедент для других подобных запросов, и не только в США. Как выяснилось, уже сейчас на рассмотрении находятся запросы по минимум десяти устройствам Apple, где суд требует от Apple сломать свою же защиту. С другой стороны, независимо от результата судебных баталий, данный кейс может заставить Apple решить проблему с помощью технологий, а именно — изменить софт и железо будущих устройств так, что у производителя в принципе не будет возможности добыть пользовательские данные. Вообще никак. В New York Times пишут, ссылаясь на анонимные источники, что работа уже начата.

А теперь к другим новостям. Все выпуски дайджеста — тут.
Читать дальше →
Total votes 15: ↑11 and ↓4 +7
Views 12K
Comments 1

Целевые атаки на польские банки: технический анализ

ESET NOD32 corporate blog Antivirus protection *
На польском портале ZaufanaTrzeciaStrona.pl, посвященном кибербезопасности, не так давно появилась новость об успешных атаках на польские банки (версия на английском здесь). Инцидент был охарактеризован как «серьезнейший». Данные подтвердили Symantec и BAE Systems. Список жертв пополнили учреждения из Мексики и Уругвая, а также другие цели по всему миру.

image

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

Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Views 6.4K
Comments 4

Безболезненная прививка объектного мышления

Delphi *ООP *
Sandbox

Или как можно проще об основных принципах ООП в Lazarus и FreePascal


Часть I


Изучать ООП (объектно-ориентированное программирование) можно двумя способами: или прочитать сотню книжек, в которых дается голая теория об устройстве классов и принципах наследования, полиморфизма, инкапсуляции, но так ничему и не научиться, или перестать беспокоиться и попытаться на практике освоить новые приемы, переработав, к примеру, готовые коды, а лучше с нуля изготовив что-то простое, но красивое.


Во всех книгах, посвященных паскалю, delphi и lazarus (я нашел аж целых две о последнем), очень схожая часть, посвященная ООП. По этим книгам можно много узнать о том, насколько круче ООП устаревшего структурного подхода, но так и не получить достаточных навыков применения этого на практике. Конечно, любой программист, использующий визуальные IDE, уже по умолчанию использует ООП, так как все компоненты и структурные элементы визуального приложения представляют собой объекты, однако свои собственные структуры и абстракции перенести в парадигму ООП бывает очень сложно. Чтобы понять всю прелесть и оценить открывающиеся перспективы, я решил сделать небольшое приложение, которое в конечном итоге превратилось в простенький screensaver. Заодно вспомнил о существовании тригонометрии.

Приложение будет рисовать на экране в случайных местах пятьдесят полярных роз с разными характеристиками: размер, цвет, количество лепестков. Потом их же затирать и рисовать новые, и т.д. Используя принципы структурного программирования, можно, конечно, сделать обычный многомерный массив объемом на 50 и в нем сохранять все уникальные характеристики. Однако стоит вспомнить, что паскаль подразумевает строгую типизацию данных, а, следовательно, массив не может состоять их элементов с разными типами. Можно сделать массив из записей (record), но чего уж мелочиться, от записи до класса — один шаг. Вот его мы и сделаем.

Total votes 11: ↑10 and ↓1 +9
Views 16K
Comments 28

Lazarus вездесущий

«Лаборатория Касперского» corporate blog Information Security *
Взлом Sony Entertainment, ограбление центробанка Бангладеш и дерзкие атаки на систему SWIFT по всему миру, уничтожение данных южнокорейских медиа- и финансовых компаний. Казалось бы, между этим акциями нет ничего общего. И каждый раз это были одни и те же ребята из группы Lazarus.

Впечатляют и масштаб кампаний, и разнообразие, и объем затрат – только наши исследователи смогли увязать с Lazarus более 150 вредоносных инструментов! Фактически для каждой атаки хакеры писали новые инструменты – от эксплойтов до стирателей. Код был новый, но не полностью, что в конечном итоге их и выдало. Подробный отчет об известной деятельности Lazarus содержит 58 страниц, здесь же я приведу наиболее любопытные моменты.
Читать дальше →
Total votes 35: ↑32 and ↓3 +29
Views 15K
Comments 23

WannaCry: анализ, индикаторы компрометации и рекомендации по предотвращению

Cisco corporate blog System administration *Antivirus protection *IT Infrastructure *Cisco *
В прошлую пятницу, аккурат под конец дня, когда все администраторы и специалисты по безопасности засобирались по домам и дачам, мир облетела новость о начале беспрецедентной атаке WannaCry. По истечении пары дней уже можно сказать, что не зря название этой атаки ассоциируется с песней Кита Урбана «Tonight I Wanna Cry» («Сегодня я хочу плакать»). Ее масштабы оказались достаточно зловещими — на момент написания число жертв превысило 230 тысяч и это число может вырасти, когда многие вернутся с выходных и отпусков и включат свои домашние и рабочие компьютеры. Мы, в нашем подразделении Cisco Talos, еще в пятницу опубликовали свое исследование данной вредоносной программы и сейчас хотели бы поделиться отдельными ключевыми моментами с пользователям Хабра.

WannCry
Читать дальше →
Total votes 42: ↑39 and ↓3 +36
Views 88K
Comments 58

ESET: кибергруппа Lazarus переключилась на Центральную Америку

ESET NOD32 corporate blog Antivirus protection *
Группа Lazarus получила известность после кибератаки на Sony Pictures Entertainment в 2014 году. В 2017 году группа сохраняет активность, используя широкий спектр вредоносных инструментов, включая вайпер KillDisk.

Наше исследование показало, что Lazarus с большой долей вероятности стоят за атакой на онлайн-казино в Центральной Америке и некоторые другие цели в конце 2017 года. В этих инцидентах атакующие использовали одни и те же инструменты, в том числе KillDisk, который запускался на скомпрометированных устройствах.

Читать дальше →
Total votes 5: ↑4 and ↓1 +3
Views 1.7K
Comments 1

История создания домашнего облака. Часть 1. Настройка среды Debian для повседневного использования

Configuring Linux **nix *Backup *Software DIY
Tutorial
Когда-то давно, в 2011 году, я пришёл на хабр со статьёй «Debian Server для новичка», которая представляла из себя систематизацию различной информации и представление её в актуальном и работоспособном виде. Данная статья так же позиционируется как справочный материал для новичка или обычного пользователя Linux, этакий мой небольшой вклад в популяризацию Linux. По сути, всё о чём я буду писать – это некая развёрнутая инструкция по установке и настройке домашнего облачного сервиса Nextcloud с нуля.



Созданная виртуальная машина с Nextcloud отработала с марта 2017 года практически без сбоев и осенью 2017 года я задумался о статье. У меня осталось много записей и комментариев в части решения различных проблем и нюансов, я долго вынашивал идею всё же привести всё это в порядок и опубликовать и новогодние праздники 2018 года мне в этом помогли. Надо сказать, что статья запоздала как минимум на полгода, но, думаю, что установить и настроить актуальные версии Debian и Nextcloud по аналогии с нижеприведённой информацией не составит большого труда, хотя, как известно, дьявол кроется как раз в деталях.
Ниже читатель познакомится с предпосылками создания своего облака и получит работающие инструкции по стартовой настройке Debian, лёгкому тюнингу среды Gnome3, компиляции, сборке и установке пакетов для Debian, установке и настройке сервисов Apache, SQL и PHP и начала работы с ними, генерации и подключения самоподписного сертификата SSL для виртуального хоста Apache, установка и настройка Nextcloud. Я не стал оформлять эту статью как технический мануал или туториал с длинной вереницей команд, а решил попробовать написать статью как рассказ, но без ущерба технической составляющей. Опытный пользователи Linux вряд ли тут найдут что-то новое, но, возможно, смогут прочитать его как тематическую историю в минутку своего свободного времени.
Читать дальше →
Total votes 40: ↑27 and ↓13 +14
Views 56K
Comments 97

Deprecated! Автоматизация получения сведений из ЕГРЮЛ с помощью Freepascal

Delphi *


В своей работе (юридической) я готов автоматизировать всё, что только поддаётся этому. Но пока прокачанные нейросетями роботы из утопии Германа Грефа не появились и не отняли всю работу у рядовых юристов, рутина надолго останется нашим главным спутником. Автоматизация этой рутины — то, чем я периодически занимаюсь на протяжении последних лет, будь то многочисленные таблицы в excel с кучей формул, позволяющих быстро распечатать сотню однотипных документов-рассылок в word'е, ну или автоматически генерируемые отчеты. Но есть и такие вещи, которые простыми формулами и подстановками не сделаешь. Здесь на помощь приходит программирование, которым я увлекаюсь с детства, и так уж вышло, что началось это с delphi. Сейчас мне проще, чем в C# или python, осваивать которые начал недавно, сделать быстро какой-то проект в среде Lazarus, используя freepascal. И да, я на полном серьёзе считаю, что возможностей этой среды более, чем достаточно. Поэтому автоматизировать ЕГРЮЛ, как вы догадались, предстоит с помощью паскаля.

Читать дальше →
Total votes 25: ↑23 and ↓2 +21
Views 9.7K
Comments 15

Реалистичные тени для roguelike

Graphic design *
Sandbox
image

Доброго времени, Хабр-сообщество.

Много лет назад, натолкнулся на пост (1). Тогда меня озадачила возможность создать интересные элементы для геймплея в roguelike (2). Допустим противник может находиться за стеной, мы его не видим, пока мы не столкнёмся с ним в зоне прямой видимости. Но более мне по душе ситуация, когда мы, путешествуя по коридорам подземелья, раскрываем особенности расположения объектов постепенно на основе области видимости.
Читать дальше →
Total votes 42: ↑41 and ↓1 +40
Views 9.4K
Comments 26

Lazarus — пишем компонент для анимации спрайтов

Perfect code *Delphi *Game development *
Tutorial
Вместо предисловия

В одесской школе ученики 8-го класса на уроках информатики используют бесплатную кроссплатформенную среду разработки Lazarus (официальный сайт), внешне и внутренне очень напоминающую любимый многими Delphi, использующую версию Object Pascal под названием Free Pascal и в действительности сильно упрощающую процесс вхождения в программирование.

Но детям неинтересно писать программу для вычисления силы тяжести по непонятной им пока формуле F=mg. Практически все дети, которых я пытался учить программированию, с первого занятия хотят написать игру. К счастью, Lazarus прекрасно подходит и для написания несложных игр.

Правда, для создания анимированных спрайтов мне понадобился компонент, отображающий произвольный фрагмент изображения (на котором изображены несколько разных проекций одного и того же персонажа в разных фазах движения), а такого компонента в стандартной поставке нет. Написать его самому оказалось совсем несложно, и об этой технологии я и хочу рассказать в этой статье.
Читать дальше →
Total votes 40: ↑35 and ↓5 +30
Views 13K
Comments 34

Lazarus — простая анимация при помощи компонента TImageFragment

Perfect code *Delphi *Game development *
Tutorial
Вместо предисловия

В моей недавней статье Lazarus — пишем компонент для анимации спрайтов я описал процесс создания простого компонента TImageFragment, позволяющего отображать заданный фрагмент изображения.

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

При таком подходе отдельные кадры анимации в разных проекциях размещаются на одном изображении, а компонент для отображения спрайта показывает только один выбранный фрагмент этого изображения, используя свойства OffsetX и OffsetY (смещение левого верхнего угла фрагмента изображения по горизонтали и по вертикали).

Множество таких готовых изображений можно найти в Сети — например, вот на этом сайте.
Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Views 10K
Comments 0

Как устроен фреймворк tiOPF для delphi/lazarus. Шаблон «Посетитель»

Delphi *ООP *
Tutorial

От переводчика


Есть две причины, по которым я взялся перевести несколько материалов по разработанному двадцать лет назад для не самой популярной ныне среды программирования фреймворку:

1. Несколько лет назад я, познав многие прелести работы с Entity Framework как ORM для платформы .Net, тщетно искал аналоги для среды Lazarus и в общем для freepascal.
Удивительно, но хорошие ORM для нее отсутствуют. Всё, что тогда удалось найти — open-source проект под названием tiOPF, разработанный еще в конце 90-х годов для delphi, позже портированный под freepascal. Однако этот фреймворк коренным образом отличается от привычного вида больших и толстых ORM.

Визуальные способы проектирования объектов (в Entity — model first) и сопоставления объектов с полями таблиц реляционной базы данных (в Entity — database first) в tiOPF отсутствуют. Разработчик сам позиционирует этот факт как один из недостатков проекта, однако в качестве достоинства предлагает полную ориентацию именно на объектную бизнес-модель, стоит лишь один раз похардкодить…
Читать дальше →
Total votes 10: ↑8 and ↓2 +6
Views 3.7K
Comments 2

Утилита для человеческого shadow подключения неадмина к RDP сессиям пользователей в WinServer 2012R2

Delphi *Server Administration *Development for Windows *
Проблема в период карантинной работы предприятия стала следующей: действительно нужно минимизировать количество посещений кабинетов специалистами, обслуживающими и консультирующими по прикладному ПО, да и сказать откровенно, пользователи частенько злоупотребляют помощью специалистов не желая вникать в сам вопрос, мол «придут — помогут — сделают, а я пока покурю/попью кофе и т.п.». Консультация по телефону при совместном доступе к серверу эффективнее, если просматривать удаленный экран.


Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Views 38K
Comments 11
1