В сети по рабочим дням с 12:00 до 14:00 по Москве, иногда бываю доступен по вечерам ~21:00. Максимальный срок ответа на почту -- сутки. Если ответа нет, то значит письмо потерялось в спаме.
Не пользуюсь службами мгновенных сообщений (icq, jabber и т.д.). Если очень нужно что-то обсудить, могу позвонить по телефону или через skype.
Плачу по завершению проекта. Использую сервис безопасных сделок, комиссию беру на себя.
Условия для всех проектов: Исполнитель отчуждает Заказчику исключительные права на создаваемую Программу в полном объеме для использования их любым способом и в любой форме, включая перечисленные в ст. 1270 ГК РФ. Действие передаваемых исключительных прав не ограничивается территориальными пределами. Исполнитель не сохраняет за собой права использовать Разработки самостоятельно или предоставлять аналогичные права на их использование третьим лицам.
Мне нужен рабочий пример, как перехватить функцию GetSysColor из user32.dll. Перехватчик должен возвращать или переопределённое мною значение или результат оригинальной функции GetSysColor, если переопределения не было.
Тестировать буду примерно таким кодом:
[code]int _tmain(ing argc, _TCHAR* argv[]) {
DWORD v = GetSysColor(2);
printf("Got color: %x\n", v);
/* Maybe load your dll here */
set_color_override(2, 0x777777);
hook_GetSysColor();
v = GetSysColor(2);
printf("Got color: %x\n", v); // Expected: 0x777777
}
[/code]
Перехват должен работать только для текущего процесса, другие приложения должны остаться незатронутыми. Код должен быть потокобезопасным.
Код должен работать без дополнительных зависимостей типа Detours.
В документации на Ворд-макросы надо переделать изображения:
- снять скриншоты в английском интерфейсе Ворда,
- добавить поясняющие элементы.
Вторая задача:
- дать мне инструкцию, как самостоятельно повторить результат в gimp'е или другом свободном редакторе.
Скриншоты должны быть приведены к единому виду. Наверное, должна быть только одна или две ширины. Если есть украшения, то одинаковые.
Скриншоты должны отличаться от текста, не смешиваться с ним.
Документ, из которого делать скриншоты, во вложении, называется GeWoVa_v100.docm. Текущие скриншоты в самом документе.
Два картинки из главы "What is GeWoVa" надо сделать на основе "ForIntroduction.docx". Зелёные пятна на рисунке -- это эмблема Экселя.
Предлагаю делать задачу в два этапа. На первом этапе вы берёте два изображения, делаете несколько вариантов и я выбираю, какой мне больше нравится. Если мне ничего не понравится, я оплачиваю первый этап, и мы расстаёмся. Надеюсь, это не случится.
В комментарии к своему предложению укажите желаемую сумму за первый этап.
Одностраничный сайт программного продукта надо привести в порядок. Требуется, чтобы
* посетителю приятно взглянуть на сайт, и
* легко нажать на ссылку "download".
== Технические требования ==
Основа для дизайна: см. файл ideal_home_page.pdf в zip-файле во вложении к проекту. Можно передрать один-в-один.
Нужен валидный (x)html и вообще то, что не стыдно показать хорошим html-верстальщикам.
== Пояснения ==
Тексты и картинки для наполнения и проверки дизайна лежат в zip-файле в папке source_data.
Кнопку "download!" надо перерисовать.
Фотку приведите к подходящему размеру.
Блоков номер 4 и 9 (см. ideal_home_page.pdf) нет, вместо них -- большой длинный текст. Дальше пояснения по нему.
Оформление надо тоже улучшить, чтобы он по стилю подходил к шапке.
Изменить картинки и их размер невозможно.
Разделитель "DO IT NOW! download!" должен выделяться.
== Передача прав ==
Исполнитель отчуждает Заказчику исключительные права на создаваемую Программу/Дизайн в полном объеме для использования их любым способом и в любой форме, включая перечисленные в ст. 1270 ГК РФ. Действие передаваемых исключительных прав не ограничивается территориальными пределами. Исполнитель не сохраняет за собой права использовать Разработки самостоятельно или предоставлять аналогичные права на их использование третьим лицам.
Нужно написать прорамму на Си, которая:
* запускает другую программу,
* ждёт её завершения,
* если в stderr/stdout что-то есть, сообщает пользователю от этом.
На Python это выглядит примерно так:
:: import sys, subprocess, wx
:: cmd = ' '.join(sys.argv[1:])
:: p = subprocess.Popen(cmd, stderr=subprocess.STDOUT,
:: stdout=subprocess.PIPE)
:: s = p.stdout.read()
:: if not s:
:: sys.exit(p.returncode)
:: app = wx.App()
:: wx.MessageBox(parent=None, caption="Unexpected output",
:: message="Unexpected output from the program:\n"+s,
:: style=wx.OK|wx.ICON_INFORMATION)
:: sys.exit(p.returncode)
(На всякий случай: в этом примере грубая ошибка. Если в stdout/stderr попало больше текста, чем системный буфер, то программа блокируется. Поэтому Вам надо не просто перевести код на Си, но и переписать его правильно.)
Технические требования:
* Поддержка Windows 2000 и выше.
* Компилятор: gcc или Visual C Express.
* Малый размер экзешника.
* Файл проекта должен содержать также иконки (нарисуйте-найдите без разницы что) и всё, что ожидается от типичной windows-программы.
* Какую программу запускать: путь берётся из ресурсов. Если не задан, использовать "program\program.exe".
* Надо не забыть передать аргументы командной строки.
* Код возврата -- как у завершившейся программы.
Есть дерево (wxTreeCtrl), элементы которого находятся в шести состояниях. Надо придумать такой дизайн, чтобы состояние было ясно с первого взгляда. А затем запрограммировать этот дизайн.
=== Состояния ===
Элемент может быть или "просто элемент", или "тег". Смысл тега такой же, как и на web20-сайтах, так что дизайн элемента-тега стоит сделать узнаваемым.
Как "просто элемент", так и "тег" имеет три состояния:
1) "нормальное"
2) "удалено": тут логично было бы аккуратно зачеркнуть элемент, но я с ходу не нашёл, можно ли так сделать.
3) "содержит удаление": это значит, что сам элемент не удалён, но где-то в глубине в поддереве что-то удалено.
За основу можно взять скрипт test.py во вложении. Он наполняет wxTreeCtrl элементами во всех шести состояниях, используя шесть функций design_*.
=== Оплата ===
Объём работы неясен, поэтому предлагаю 1) почасовую оплату 2) разбить проект на два этапа.
Первый этап. Вы тратите один час на краткое описание Вашего дизайна и на оценку того, сколько времени займёт реализация. Я в любои случае плачу за тот час, даже если окажется, что воплотить дизайн невозможно.
Если я согласен в Вашим предложением, переходим ко второму этапу: реализация.
=== Необходимое зло ===
Исполнитель отчуждает Заказчику исключительные права на создаваемую Программу в полном объеме для использования их любым способом и в любой форме, включая перечисленные в ст. 1270 ГК РФ. Действие передаваемых исключительных прав не ограничивается территориальными пределами. Исполнитель не сохраняет за собой права использовать Разработки самостоятельно или предоставлять аналогичные права на их использование третьим лицам.
Макрос выводит окошко с деревом-оглавлением документа. Пользователь выбирает главы, нажимает на кнопку, и макрос удаляет выбранные главы.
Язык реализации (в порядке предпочтения): Python, JavaScript, всё остальное.
Требуется написать инструкцию по эксплуатации для вымышленного прибора. В руководстве должны быть основные структуры, в том числе:
* рисунки с легендами,
* таблицы,
* ссылки на главы, рисунки и таблицы,
* предупреждения об опасности,
* список сокращений,
* алфавитный указатель.
Оформление не нужно. Картинки можно нарисовать как курица лапой, но чтобы было понятно.
Смысл: текст и (в будущем) оформление будут использоваться как шаблон описания для настоящих изделий.
Во вложении к проекту -- моя неудачная попытка описать генератор энергии на основе гидравлического вечного двигателя. Вы можете по желанию или взять этот текст за основу, или же предложить что-то своё.
Во вложении текстовый файл. В нём таблицы. Человеку это очевидно, а вот компьютеру нет. Надо перевести таблицы в удобный для компьютера вид, например, в excel.
Копия файла для быстрого просмотра: http://uucode.com/tmp/20110913/vim-index.txt
Нужно сделать unit testing framework для PDF-файлов, и в качестве примера использования написать тесты для PDF-файла во вложении:
Тест 1: Расстояние между базовыми линиями строк равно 12pt
Тест 2: Расстояние между разделительными линиями равно 25pt
Тест 3: Ссылки начинаются с новой строки, в заданном формате
Тест 4: Базовые линии строк в таблице выровнены
Тест 5: Заголовок секции начинается с новой страницы
LaTeX-файл, из которого сделан PDF, тоже во вложении. Его можно изменять и смотреть, будут ли тесты отлавливать изменения в layout'е. Кроме того, если надо, в LaTeX-файле можно добавить подсказки для процедур тестирования.
Язык программирования: Python. Если уж совсем никак, то готов смириться с другим удобным языком программирования типа Perl или Ruby, но точно не с Java или C.
Платформа: Linux (точнее, любая posix-система). Можно использовать непитоновые библиотеки и инструменты, например poppler или ghostscript.
Мне нужен код на языке Scheme R5RS для обработки шахматных партий. Играть в шахматы ему не надо, достаточно только отслеживать доску и ходы:
* Загрузка позиции из PGN
* Сохранение позиции в PGN
* Сделать ход, записанный краткой или полной нотацией
* Необязательно: создать список возможных ходов
Имущественные права на код переходят ко мне.
В заявках упомяните, какой подход вы собираетесь использовать для представления позиции (желательно избежать "изобретения велосипеда").