Pull to refresh

Создание и использование динамических библиотек, написанных на различных языках (C/C++, Pascal)

Programming *
Sandbox

Задача


Передо мной возникла задача написать загрузчик библиотек, имеющий возможность предоставить какие-то интерфейсные функции внешней динамической библиотеке. Решение должно быть максимально кроссплатформенно (как минимум, работать на Linux и Windows). Загружаться должны библиотеки, написанные на различных языках программирования, поддерживающих создание динамических библиотек. В качестве примера были выбраны языки C и Pascal.

Решение


Основной загрузчик библиотек написан на языке C. Для того, чтобы загружаемые библиотеки имели возможность использовать функции основной программы, основная программа разделена на 2 части: на основной и подгружаемый модули. Основной модуль нужен просто для запуска программы, подгружаемый модуль — это также динамическая библиотека, связываемая с основным модулем во время его запуска. В качестве компиляторов были выбраны gcc (MinGW для Windows) и fpc.
Здесь будет приведён упрощённый пример программы, позволяющий разобраться в данном вопросе и учить первокурсников писать модули к своей программе (в школе часто преподают именно Pascal).
Читать дальше →
Total votes 41: ↑35 and ↓6 +29
Views 70K
Comments 9

Lazarus как он есть

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

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

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

Magento Enterprise: Что такое Full Page Cache и почему он нужен

CMS *Website development *PHP *
Sandbox
Magento Enterprise - Full Page Cache

Magento Enterprise: Что такое Full Page Cache и почему он нужен.



Для тех, кто знаком с Magento, не секрет, что этот e-commerce движок довольно требователен к железу. Но разработчики этого интернет-магазина попытались решить эту проблему и придумали много различного рода «ускорялок», без которых, пожалуй, запускать магазин на движке Magento в продакшн не стоит. Слишком долго Magento будет отдавать конечному пользователю страницу. Среди таких «ускорялок» кеши, индексы, компиляция, объединение JS/CSS в один сжатый файл и др.

Одной из основных «фишек» Magento Enterprise является Full Page Cache (далее FPC). Эту «фишку» реализует модуль Enterprise_PageCache, входящий в состав пакета Magento Enterprise.

В статье рассматривается самая свежая на момент написания статьи версия Magento Enterprise: 1.13.1.

FPC позволяет отдавать серверу страницу за считанные миллисекунды, практически не нагружая сервер. Я провел замеры времени отдачи страницы продукта сервером (в одном из проектов, над которым работал), вот результаты:

Magento Enterprise - FPC

  • 65 ms при включенном FPC (когда все блоки были закешированы);
  • 1250 ms при выключенном FPC (при этом все остальные виды кеша включены);
  • 2500 ms при отключенном кеше всех видов.

Почему разница настолько велика? Давайте разберёмся.
Читать дальше →
Total votes 26: ↑11 and ↓15 -4
Views 14K
Comments 6

Использование FPC-библиотеки «InternetTools» в Delphi

Programming *Delphi *HTML *
На самом деле, статья несколько шире – она описывает способ, позволяющий прозрачно задействовать и многие другие библиотеки (причём не только из мира Free Pascal), а InternetTools выбрана из-за своего замечательного свойства – это тот случай, когда (как ни удивительно) отсутствует Delphi-вариант с такими же широкими возможностями и удобством использования.

Эта библиотека предназначена для извлечения информации (парсинга) из веб-документов (XML и HTML), позволяя использовать для указания нужных данных как языки запросов высокого уровня, такие как XPath и XQuery, так и, в качестве одного из вариантов, предоставляя прямой доступ к элементам дерева, построенного по документу.
Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Views 4K
Comments 7

Как заменить себя скриптом. Часть 1. Режимы коротких замыканий в электросети с применением OpenCL

Delphi *Lisp *Energy and batteries Systems engineering *


Длительная однообразная работа неизбежно вызывает приступы автоматизации. На этот раз предпримем попытку автоматизировать настройку устройств защиты электросетей напряжением 6 — 35 кВ.

Самозародившаяся задача требует расчёта коротких замыканий, а поскольку расчётов таких предвидится немало, выполнять их будем с помощью OpenCL, для должной утилизации имеющихся вычислительных мощностей.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Views 3.2K
Comments 17

Энтузиастка модифицировала дизайн Game Boy Pocket, добавив в него шарниры

Timeweb Cloud corporate blog Game development *DIY Games and game consoles Lifehacks for geeks

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

Гики тоже склонны выражать свой индивидуальный стиль, но они делают это «по-технарски». Вместо одежды и причесок они «украшают» свои компьютеры, ПО и игровые консоли. В Сети много историй как энтузиасты придумывают и разрабатывают собственные дизайны для гаджетов и игровых приставок.

Одна из них, программист Эллисон Пэрриш, сделала компактную версию портативной игровой консоли Nintendo Game Boy Pocket 1996 года выпуска. Вдохновившись более поздним Game Boy Advance SP, она изготовила специальный пластиковый корпус с шарниром, чтобы старый монохромный Game Boy можно было сложить. Она назвала его Game Boy Pocket SP.

Эллисон говорит, что всё начиналось как простой прикол. Сообщество моддеров Game Boy сейчас популярно, и один мод, который в настоящее время является распространённым, включает в себя пересадку схемы стандартного складного Game Boy Advance SP (выпущенного в 2003 году) в нескладывающуюся оболочку. И Эллисон подумала: «Если все убирают петлю из Advance SP, почему бы мне не добавить петлю в Game Boy Pocket, у которого её никогда не было?» Хоть Пэрриш и признает, что петли отстой: их сложно проектировать и изготавливать, и вообще по возможности стоит их избегать; она многому научилась, создавая Pocket SP: приобрела новые навыки в проектировании печатных плат, САПР и производстве. Она также многое узнала о дизайне самого Pocket и об истории технологии в целом.
Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Views 4.1K
Comments 19