Результаты поиска
Какой язык сценариев следует поддерживать в существующей кодовой базе?
Я смотрю на добавление функциональности сценариев к существующей кодовой базе и взвешиваю плюсы/минусы различных пакетов. Lua, вероятно, самый очевидный выбор, но мне было интересно, есть ли у людей какие-либо другие предложения, основанные на их опыте.
Сценарии будут запускаться при определенных событиях и могут оставаться резидентными в течение определенного периода времени. Например, при запуске скрипт может определить несколько опций, которые программа представляет пользователю в виде нескольких кнопок. При выборе одной из этих кнопок программа уведомит сценарий, где могут произойти дальнейшие события.
Это единственные реальные требования;
- Должна быть кроссплатформенная библиотека, которая компилируется из исходного кода
- Скрипты должны иметь возможность вызывать зарегистрированные функции на стороне кода
- Код должен иметь возможность вызывать функции на стороне скрипта
- Используется в кодовой базе C/C++.
Модульное тестирование драйверов kernel
Я ищу платформу тестирования для среды Windows kernel. Пока что я нашел cfix . Кто-нибудь пробовал это? Есть ли альтернативы?
Как сопоставить путь устройства linux с именем диска windows?
Я пишу приложение, которое на каком-то этапе выполняет низкоуровневые дисковые операции в среде Linux. Приложение на самом деле состоит из 2 частей, одна работает на Windows и взаимодействует с пользователем, а другая-это часть linux, которая работает с LiveCD. Пользователь выбирает Windows букв диска, а затем часть linux выполняет действия с соответствующими разделами. Проблема заключается в поиске соответствия между буквой диска Windows (например, C:) и именем устройства linux (например, /dev/sda1). это мое текущее решение, которое я оцениваю как уродливое:
храните информацию о разделах (например, букву диска, количество блоков, серийный номер диска и т. д.) в Windows в некотором заранее определенном месте (т. е. в корне системного раздела).
прочитайте список разделов из /proc/partitions. получите только те разделы, которые имеют основной номер для SCSI или IDE жестких дисков и второстепенный номер, который идентифицирует их как реальные разделы, а не целые диски.
Попробуйте mount каждый из них с помощью файловой системы ntfs или vfat. Проверьте, содержит ли смонтированный раздел информацию, хранящуюся в приложении Windows.
После нахождения необходимой информации, написанной приложением Windows, сделайте фактический матч. Для каждого раздела, найденного в /proc/partitions, приобретите серийный номер диска (через hdio_get_identity syscall), количество блоков (от /proc/partitions) и смещение диска (/sys/blocks/drive_path/partition_name/start), сравните это с информацией Windows и, если это соответствует - сохраните букву диска Windows вместе с именем устройства linux.
В этой схеме есть несколько проблем:
Это отвратительно. Запись данных в Windows, а затем чтение их в Linux превращает тестирование в кошмар.
Основной номер устройства linux сравнивается только с устройствами IDE или SCSI. Это, вероятно, не удастся, т. е. на дисках USB или FireWire. Можно добавить эти типы дисков, но ограничение приложения только известным подмножеством возможных устройств кажется довольно плохой идеей.
похоже, HDIO_GET_IDENTITY работает только на дисках IDE и SATA.
/sys/block hack не может работать на других дисках, кроме IDE или SATA.
Есть идеи, как улучшить эту схему? Возможно, есть другой способ определить имена windows, не записывая все данные в приложение windows?
P.S. Язык приложения-C++. Я не могу это изменить.
Модульное тестирование драйверов kernel
Я ищу платформу тестирования для среды Windows kernel. Пока что я нашел cfix . Кто-нибудь пробовал это? Есть ли альтернативы?
Используете ли вы MDA/MDD/MDSD, какой-либо подход, основанный на модели? Будет ли это будущее?
Языки программирования имели несколько (r)эволюционных этапов в своей истории. Некоторые люди утверждают, что подходы, основанные на моделях, будут следующей большой вещью. Есть такие инструменты, как openArchitectureWare, AndroMDA, скульптор/Fornax платформы и т. д. это обещает невероятное повышение производительности. Тем не менее, я сделал опыт, что это либо довольно легко в начале, чтобы начать работу, но также застрять в какой-то момент, когда вы пытаетесь что-то, что было непредвиденным или довольно трудно найти достаточно информации, которая говорит вам, как начать свой проект, потому что может быть много вещей, чтобы рассмотреть.
Я думаю, что важным пониманием, чтобы получить что-либо из модели, управляемой чем-то, является понимание того, что модель не обязательно представляет собой набор красивых картинок или модель дерева или UML, но может также быть текстовым описанием (например, государственная машина, бизнес-правила и т. д.).
Что вы думаете и что говорит вам ваш опыт? Есть ли будущее для разработки моделей (или как бы вы это ни называли)?
Обновление: похоже, что в этой теме нет большого интереса. Пожалуйста, дайте мне знать, если у вас есть какой-либо (хороший или плохой) опыт работы с моделями подходов или почему вы думаете, что это не интересно вообще.
Могу ли я иметь агрегаты "incomplete" в DDD?
DDD утверждает, что вы должны получать доступ к сущностям только через их совокупный корень. Так скажем, например, что у вас есть совокупный корень X, который потенциально имеет много дочерних сущностей Y. Теперь, для некоторого сценария, вы действительно заботитесь только о подмножестве этих объектов Y за один раз (возможно, вы показываете их в списке подкачки или что-то еще).
Это OK для реализации репозитория, так что в таких сценариях он возвращает неполный агрегат? То есть. объект X, коллекция Ys которого содержит только интересующие нас экземпляры Y, а не все из них? Это может, например, привести к тому, что методы на X, которые выполняют некоторые вычисления с участием Ys, не будут вести себя так, как ожидалось.
Возможно, это указывает на то, что рассматриваемая сущность Y должна рассматриваться как повышенная до агрегированного корня?
Моя текущая идея (в C#)-использовать отложенное выполнение LINQ, чтобы мой объект X имел IQueryable для представления его отношений с Y. Таким образом, я могу иметь прозрачную ленивую загрузку с фильтрацией... Но заставить это работать с ORM (Linq до Sql в моем случае) может быть немного сложно.
Есть еще умные идеи?
WCF-объекты домена и IExtensibleDataObject
Типичный сценарий. Мы используем старой школы XML internally web-сервисов для обмена данными между серверами фермы и нескольких распределенных и локальных клиентов. Никакие третьи лица не участвуют, только наши приложения, используемые нами и нашими клиентами.
В настоящее время мы размышляем о переходе от модели XML WS к модели WCF/object-based и экспериментируем с различными подходами. Один из них включает в себя передачу объектов домена / агрегатов непосредственно по проводу, возможно, вызывая атрибуты DataContract на них.
Используя IExtensibleDataObject и DataContract с помощью свойства Order на DataMembers, мы должны быть в состоянии справиться с простыми проблемами управления версиями свойств (помните, что мы контролируем всех клиентов и можем легко принудительно обновить их).
Я постоянно слышу, что мы должны использовать выделенные объекты передачи данных только для передачи данных ( DTOs ) по проводу.
Почему? Есть ли еще причина для этого? Мы используем одну и ту же модель домена на стороне сервера и на стороне клиента, конечно, предварительно заполняя коллекции и т. д. только в том случае, когда это считается правильным, и свойства коллекции "necessary." используют принцип Service locator и IoC для вызова либо NHibernate-based "service" для прямой выборки данных (на стороне сервера), либо клиента WCF "service" на стороне клиента для связи с фермой серверов WCF .
Итак-почему мы должны использовать DTOs ?
Экспорт документов из google-docs через python-api
простой код экспорта из google docs
# -*- coding: utf-8 -*-
import gdata.docs
import gdata.docs.service
gd_client = gdata.docs.service.DocsService()
gd_client.ClientLogin('login@gmail.com', 'superpassword')
#загружаем файл print.html в google docs
ms = gdata.MediaSource(file_path='print.html', content_type="text/html")
entry = gd_client.Upload(ms, 'NewDocument')
#экспортируем файл в doc
file_path = 'print.doc'
gd_client.Export(entry, file_path)
на выходе формат файла pdf, а не doc.
# -*- coding: utf-8 -*-
import gdata.docs
import gdata.docs.service
gd_client = gdata.docs.service.DocsService()
gd_client.ClientLogin('login@gmail.com', 'superpassword')
#загружаем файл print.html в google docs
ms = gdata.MediaSource(file_path='print.html', content_type="text/html")
entry = gd_client.Upload(ms, 'NewDocument')
#экспортируем файл в doc
file_path = 'print.doc'
gd_client.Export(entry, file_path)
Ассоциации файлов локальных документов в Google docs
Собственно следующий вопрос: можно ли создать ассоциацию офисных файлов (типа .doc, .xls) находящихся на локальном диске для открытия непосредственно в Google docs, через браузер?
Google docs offline?
Google отключил поддержку gears для своих документов. Как теперь экспортировать документы, желательно с обратной синхронизацией, так, чтобы сохранялись кириллические названия? И то же для Google Apps?
Как вставить документ из Google Docs в пост ЖЖ?
Столкнулся с этим вопросом попытавшись вставить html-код, предлагаемый гуглом для расшаривания документа, в ЖЖ-пост.
Этот код представляет собой iframe-тег, но некоторые теги, как оказалось, в ЖЖ запрещены и при отправке поста просто вырезаются из него.
Я узнал про замечательный тег <lj-embed>, в который нужно оборачивать вставляемый элемент, заменяя <iframe> на <object>. Такое решение работает в опере, хроме, фаэрфоксе, но не в ие-8.
Ресайз панелей google docs
В интерфейсе google docs (в ff и google chrome) на экране навигации по документам, если увеличить левую панель, передвинув хэндлер (синий блок между панелью папок и документов) более чем на половину экрана — не удается восстановить прежние габариты панелей в состояние по-умолчанию.
Кто сталкивался или встречал решение?
381   2   15:12, 19th August, 2020
Публикация диаграмм google docs
Недавно Гугл обновил диаграммы в google docs. Теперь диаграмма стала более интерактивной и представляет из себя не просто картинку, и для публикации за пределами документов дается новый код вида:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/static/modules/gviz/1.0/chart.js"> {"chartType":"AreaChart","dataSourceUrl":"//spreadsheets.google.com/tq?key=0Ag3ElM39fEO6dDZIeVpwTU1McHBXQ3hOVVY4U28tQ1E&range=A15%3AQ16&gid=0&transpose=1&headers=1&pub=1","options":{"reverseCategories":false,"pointSize":0,"minValue":0,"is3D":false,"logScale":false,"lineSize":2,"wmode":"opaque","title":"\u0411\u0435\u0433 \u043a\u043c.","pointSizeOther":0,"maxValue":50,"isStacked":false,"mapType":"hybrid","displayAnnotations":true,"showTip":true,"min":0,"titleY":"","dataMode":"markers","titleX":"","maxAlternation":1,"max":50,"colors":["#3366CC","#DC3912","#FF9900","#109618","#990099","#0099C6","#DD4477","#66AA00","#B82E2E","#316395"],"smoothLine":false,"lineWidth":"2","labelPosition":"right","hasLabelsColumn":true,"legend":"none","allowCollapse":true,"reverseAxis":false,"width":694,"height":329},"packages":"corechart","refreshInterval":5} </script>
Но у меня возникала проблема, не одна из диаграмм при вставке этого кода на веб страницу не публикуется, в чем может быть проблема? Плюс меня больше устраивала публикация диаграммы именно картинкой, потому что новый код можно опубликовать не везде где мне нужно. Но как я понимаю старые диаграммы уже не вернуть. По этому поводу нет соображений ни у кого?
В общем: Почему не публикуется новый вид диаграмм? И есть ли возможность публиковать картинкой как раньше?
<script type="text/javascript" src="//ajax.googleapis.com/ajax/static/modules/gviz/1.0/chart.js"> {"chartType":"AreaChart","dataSourceUrl":"//spreadsheets.google.com/tq?key=0Ag3ElM39fEO6dDZIeVpwTU1McHBXQ3hOVVY4U28tQ1E&range=A15%3AQ16&gid=0&transpose=1&headers=1&pub=1","options":{"reverseCategories":false,"pointSize":0,"minValue":0,"is3D":false,"logScale":false,"lineSize":2,"wmode":"opaque","title":"\u0411\u0435\u0433 \u043a\u043c.","pointSizeOther":0,"maxValue":50,"isStacked":false,"mapType":"hybrid","displayAnnotations":true,"showTip":true,"min":0,"titleY":"","dataMode":"markers","titleX":"","maxAlternation":1,"max":50,"colors":["#3366CC","#DC3912","#FF9900","#109618","#990099","#0099C6","#DD4477","#66AA00","#B82E2E","#316395"],"smoothLine":false,"lineWidth":"2","labelPosition":"right","hasLabelsColumn":true,"legend":"none","allowCollapse":true,"reverseAxis":false,"width":694,"height":329},"packages":"corechart","refreshInterval":5} </script>