Продолжая серию статей по метапрограммированию, подготовил выжимку из достаточно объемной своей работы о повышении уровня абстракций в информационных системах. Хабр конечно любит практические решения, и их таки есть у меня, но материала много и я вынужден разделить его на несколько статей. А для иллюстрации эффективности подхода, могу сказать, что внедрение его во множестве живых проектов позволило повысить эффективность разработки в десятки раз, например, создавать приложения баз данных со структурой в несколько сотен таблиц за неделю и портировать решения между платформами за считанные часы. Эта статья носит характер теоретический и наполнена специфической терминологией, без которой, к сожалению, она была бы значительно объемнее.
Читать полностью »
Рубрика «Программирование» - 1041
Perl6 — Условные операторы, циклы
2012-10-15 в 16:07, admin, рубрики: for, loop, perl, perl6, Программирование, циклы, метки: for, loop, perl6, циклы 1. Особенности работы с переменными и литералами в Perl6
2. Perl6 — Операции над переменными, анонимные блоки
В данной статье мы рассмотрим условные операторы и циклы, а также проведем несколько небольших экспериментов по их использованию.
Пишем свой отладчик под Windows [часть 1]
2012-10-15 в 12:24, admin, рубрики: c++, windows, отладка, Отладчик, Программирование, системное программированиеВступление
![Пишем свой отладчик под Windows [часть 1] Пишем свой отладчик под Windows [часть 1]](https://www.pvsm.ru/images/pishem-svoi-otladchik-pod-Windows-chast-1-.jpg)
Все мы, время от времени, используем дебаггер для отладки программ. Отладчик может использоваться с C++, C#, Java и ещё сотней других языков. Он может быть как внешним (WinDbg), так и встроенным в среду разработки (Visual Studio). Но вы хоть раз задавались вопросом, как же работает отладчик?
И вам повезло. В этом цикле статей мы разберёмся от и до, как же работает отладка изнутри. В этой статье рассматривается только написание отладчика под Windows. Без компиляторов, линковщиков и других сложных систем. Таким образом, мы сможем отлаживать только исполняемые файлы, так как мы напишем внешний отладчик. Эта статья потребует от читателя понимание основ многопоточности.
Читать полностью »
Есть интересная задача: Поиск двух пропущенных чисел в массиве целых чисел
2012-10-14 в 18:36, admin, рубрики: qt, ruby, Алгоритмы, Программирование, метки: Qt, ruby, Алгоритмы Есть интересная задача: есть массив целых чисел. Числа идут подряд от 1 до k. Но в
массиве пропущены два числа. Как найти эти числа?
Решил поделиться своим решением и реализацией (на Ruby) самого простого из них (еще два приведу в виде алгоритмов).
Способ 1.
Читать полностью »
Обзор кода в комментариях
2012-10-14 в 13:51, admin, рубрики: code review, DVCS, Git, Mercurial, simple, Программирование, разработка, метки: code review, DVCS, Git, mercurial, simpleОбзор кода полезен и делать его можно разными способами: патчами по почте, сидя рядом лицом к лицу или используя специализированные инструменты/плагины. Каждый способ имеет свои плюсы и минусы, однако мы предлагаем ещё один, который позволяет нам использовать то, что у нас уже есть. Читать полностью »
Perl6 — Операции над переменными, анонимные блоки
2012-10-13 в 17:11, admin, рубрики: perl, perl6, Программирование, метки: perl6 1. Особенности работы с переменными и литералами в Perl6
В предидущей статье я описывал особенности работы с переменными, а так же затронул контексты. В данной статье, я хочу поделиться результатми своих экспериментов и поисков на тему использования переменных, а так же коротко описать особенности анонимных блоков кода.
Приступим
Готовим Sublime Text 2 для front-end
2012-10-13 в 14:32, admin, рубрики: front-end, Веб-разработка, Программирование, редактор кода, Софт, метки: front-end, sublime-text-2, редактор кодаНи для одного опытного программиста или верстальщика не секрет, что настроенная под себя среда разработки (не в смысле IDE, а в более общем) — жизненная необходимость. Было время, как я делал очередную верстку в практически голом Notepad++ на единственном мониторе, поочередно открывая Photoshop, браузер и редактор. Сегодня, в эпоху «автоматизации всего», мне сложно представить, как вообще можно было так работать.
Sublime Text 2 — популярный расширяемый кроссплатформенный текстовый редактор, для которого написано множество плагинов если и не на все случаи жизни, то на многие. В этом посте я попытаюсь рассказать как из этого конструктора сложить удобный инструмент front-end разработчика для работы с HTML, CSS и JavaScript.Читать полностью »
Недокументированные возможности в банковских системах ДБО
2012-10-13 в 9:35, admin, рубрики: безопасность, взлом, информационная безопасность, Программирование, хакер, метки: безопасность, взлом, хакерЭто история совершенно реальна и ее главный герой осужден по ст. 159 и ст. 272 УК РФ в данный момент отбывает наказание в виде 2 лет лишения свободы в г.Челябинске СИЗО-1, причем осужден он был совершенно бездоказательно, экспертизы подделаны (их в последствии исключили из доказательной базы), нет свидетелей которые бы дали показания против него. Даже сеансы связи выходов в интернет с домашних ПК не совпадали с временем хищений денежных средств но для следствия и суда это было не важно, так как от силовых структур была дана установка посадить под любым предлогом. В приговоре у этого человека написано:
совершил мошенничество неустановленным способом с неустановленными лицами в неустановленное время и в неустановленном месте.
Интересная формулировка с учетом того что подсудимый в банке не работал и не знал клиентов банка, не был установлен способ хищений.
Checkstyle и Java. Поможет ли автоматическая инспекция кодa?
2012-10-12 в 17:22, admin, рубрики: checkstyle, java, Песочница, Программирование, метки: checkstyle, java
В последнее время на Хабре заметно участились статьи об автоматизации и оптимизации код-ревью, инспекциях кода и других способах поддержания кода крупных проектов в достойном виде (например, статья 1, статья 2, статья 3).Думаю, постоянные читатели уже встречали предыдущие посты (первый, второй), где мои коллеги рассказывали об использовании Java-библиотеки Checkstyle и делились нашим совместным опытом по ее расширению. Последние труды нашей команды по написанию дополнительных чеков (проверок) для Checkstyle вошли в новую сборку нашего дополнения для Eclipse Checkstyle-плагина Eclipse-cs (sevntu-checkstyle 1.5.3, 4.09.2012).Мы продолжаем эксперименты по автоматизации поиска ошибок на этапе написания Java — кода. Мы убедились в том, что писать свои проверки для Checkstyle несложно — точнее совсем просто! Сложнее написать чек, действительно уникальный и полезный в разработке (а еще сложнее — позже договориться со всеми членами команды разработчиков о совместном использовании нового чека). В этом посте я постараюсь описать последние достижения нашей команды в направлении разработки новых чеков для Checkstyle. Также ниже я хотел бы немного осветить принцип действия, полезность и ограничения библиотеки Checkstyle, Eclipse Checkstyle-плагина и нашего к нему дополнения.Читать полностью »
Создание «нестандартного» кастомного объекта для AutoCad, работающего без Object Enabler
2012-10-12 в 13:13, admin, рубрики: autocad, CAD/CAM, ObjectARX, Программирование, метки: Autocad, c++, ObjectARX Добрый день.
Те, кто имеет дело с AutoCAD и сторонними решениями для него, наверняка, сталкивались с проблемой прокси объектов, для отображения или перемещения которых требуется установить библиотеки, с помощью которых были созданы данные объекты или так называемые Objects Enablers, от тех же разработчиков. Это достаточно неудобно. Например, получили вы документ от заказчика/субподрядчика и видите только квадраты.
Хочу поделиться с Вами личным опытом создания «нетрадиционного» объекта для AutoCad. За основу взят анонимный блок. Свойства объекта хранятся отдельно в BlockReference::ExtensionDictionary. Что дает возможность стороннему приложению или скрипту получить к ним доступ и считать их, а при желании изменить, без наличия оригинальных библиотек. Примитивы внутри блока всегда отрисовываются в соответствии со своим состоянием. Да и вообще, устойчивость работы AutoCAD значительно выше. Со стороны все выглядит просто. Но при попытке реализовать данный механизм были выявлены различные «подводные камни». Об этом по порядку.
Читать полностью »
