Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Клуб профессиональных программистов :: Выпуск #91


Клуб профессиональных программистов "Весельчак У"
Информационная рассылка сайта и форума.  Выпуск No91 (2010-04-19).

Здравствуйте, уважаемые читатели!

Содержание.



Вводная

Эта статья возникла после очередной попытки вспомнить, как оно там конфигурируется, чтобы все работало ;-)

Сам Doxygen представляет собой инструмент для создания онлайн-документации к Вашему любимому и выстраданному коду. Он бесплатен, посему очень любим фирмами.


Инсталляция

Сначала загружаем сам doxygen, затем — графический инструмент graphviz, с помощью которого можно строить диаграммы:


Комментарии

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


...


Целиком статью вы можете прочесть на нашем сайте в разделе «Направления и технологии::Инструменты и технологии проектирования ПО». Статья содержит множество скриншотов с пояснениями по настройке программы.



Вопросам бекапа посвящено огромное количество статей. Но в основном они крутятся вокруг стратегии и принципов. А у меня задача банальная — сделать бэкап и забыть о проблеме до восстановления. Но чтобы не забылось, а потом и вспомнилось — этому и посвящена эта заметка.


Исходные данные.


1. Работающий сервер (вот-вот скоро умрет). Сервер построен на обыкновенной PC-станции, но и задачи у него только маршрутизация и прокси. Вот с такой конфигурацией диска:


      # df -h
      Filesystem     Size    Used   Avail Capacity  Mounted on
      /dev/ad0s1a    496M    341M    115M    75%    /
      devfs          1.0K    1.0K      0B   100%    /dev
      /dev/ad0s1e    496M     12K    456M     0%    /tmp
      /dev/ad0s1f     16G    5.7G    8.9G    39%    /usr
      /dev/ad0s1d    1.2G    214M    913M    19%    /var

2. Пока неработающий сервер. На него и буду восстанавливать данные. Объем жесткого диска такой же, поэтому можно не беспокоиться о нехватке места.

3. Отсутствие промежуточных носителей.

4. Еще в наличии handbook, как на родном языке для freebsd языке, так и на русском (а вдруг неправильно переведу?) и естественно — manы.


Приступим.


...


Целиком статью вы можете прочесть на нашем сайте в разделе «Администрирование ОС::Unix».



  • Программирование :: Общий
  • На практике, как музыкант, много раз сталкивался с разными плагинами и железками, но когда попытался смоделировать в MATLAB и сравнить с теми же плагинами - появилось много вопросов. Наверняка здесь есть люди, разбирающиеся в этой тематике.

    1. По какому принципу компрессор из состояния компрессии переходит в состояние релиза? Сколько-то времени ждет, чтобы амплитуда сигнала опустилась ниже порога и не поднималась обратно? Не очень ясно, как он отслеживает амплитуду - ведь сигнал может быть низкочастотный, например - синусоида 20гц. Период большой, пол периода сигнал с низкими значениями по y, тем не менее компрессор не переходит в релиз в этот момент. На данный момент реализовал как проверку - если N подряд идущих значений не превышают порог, то компрессор идет в релиз. Но не уверен, что это корректная реализация=)

    2. Как осуществляется пересчет значения сигнала в момент компрессии? Всегда думал, что в соответствии с ratio уменьшается tmp = (cur_y - threshold), а потом new_y = threshold + tmp. Но в таком виде компрессор трещит. Кроме этого, стал сравнивать с Waves RComp - он вообще масштабирует сигнал так, что максимальный уровень равен порогу. Как же принято пересчитывать сигнал на практике?

    3. Нужно построить эффект типа "эксайтер". В интернете есть статья Михаила Чернецкого, где он рассказывает в общих чертах об устройстве эксайтеров. Там есть загадочный блок генерации гармоник (http://rus.625-net.ru/archive/z0899/6.htm). Занимался ли кто-нибудь подобными алгоритмами? У меня только одно предположение - FFT, нахождение основного тона и подмешивание синусоиды с частотой в два раза больше. Но такая реализация при работе в реальном времени будет подмешивать гармоники от предыдущего фрагмента сигнала к последующему, что, видимо, не совсем правильно. Как должна реализовываться эта генерация гармоник?
  • Всем привет!
    Задача следующая.
    Нужно найти и распознать (на изображении) штрих код code 39. Начитался про нейросети? сейчас каша в голове.
    Что можете посоветовать, какая НС лучше подходит под данный тип задачи?
    Либо НС тут будет излишней?
    Спасибо заранее!
  • Программирование :: С/С++
  • Код очереди:
    Код:
    class queue
    {
    private:
      int head, tail; // начальный и конечный индексы
      int q[10]; // очередь из десяти элементов

    public:
      queue() : head(0),tail(0) // конструктор
      {}
      void enqueue(int number) // добавление в очередь
      {
      q[tail] = number;
      tail = (tail+1) % 10;
      }
      int dequeue () // удаление из очереди
      {
      int temp = q[head];
      head = (head+1) % 10;
      return temp;
      }
    };
    Не понимаю: Зачем переносить последний элемент в начало?
    (Автор кода говорит, так положено во всех очередях)
  • Eсть MDI chaild форма созданная сторонней программой(gupta),
    в нее встраивается нужная мне форма написанная на net,
    теперь я хочу управлять размерами MDI chaild формы с помощью winapi
    при этом вызов функции SetWindowText нормально устанавливает текст
    SetWindowSize отрабатывает без ошибок, но размер окна не изменяет.
    Так же не получается изменить размер MDI chaild созданного в нете,
    но тут еще и ошибку дает мол не корректный хандел
     
  • Программирование :: С/С++ :: WinAPI & Visual C++
  • Сегодня в 9-ке получил вот такое при попытке копирования контейнера в динамический массив:
    Цитировать
    3>.\Matrix.cpp(28) : warning C4996: 'std::copy': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
    3>        C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(2550) : see declaration of 'std::copy'


    Вопрос: это что, теперь динамические массивы напрямую настоятельно не рекомендуются? В 8-ке такой паранойи не помню.
    Сначала strcat-ы были deprecated, теперь вот это. В 10-ке операторы new[] и delete[] ещё warning-и не выдают?  :)

    Я, конечно, понимаю всю глубину заботы о чужих кривых руках. Но когда руки достаточно прямые, или нет возможности обойти кривизну уже имеющегося решения - то такие вещи раздражают.
    И тем более, не спасают от кривизны рук. Допустим, сегодня я занесу эту директиву SCL_SECURE_NO_WARNINGS, чтобы компилятор не наезжал на правильный код, а завтра кто-то (хоть бы и я сам) напишет кривой код, а предупреждение-то уже подавлено. Получается, этакий очень навязчивый и неудобный сервис: всё время пользоваться - плохо, отказываться - тоже не очень.

    Пока единственный способ жить с этим, который я вижу, такой.
    Перед релизом или при багах отрубать все такие директивы и смотреть ворнинг за ворнингом, делая полное ревью кода. Или делать специальные конфигурации с подавлением и без подавления предупреждений. В любом случае, жизнь проще как-то не становится :)
    На такие вещи сложно полагаться, потому что в любой момент кривые руки могут испортить настройки, и тогда ты действуешь на основании неверных представлений о ситуации.
  • MS VC++ 6  + MFC.
    Работа с диалогами.
    Огромный комплекс. После внесения некоторых изменений программа начала падать в процессе работы.

    Стек:

    CThreadLocalObject::GetData(CNoTrackObject * (void)* 0x5f48efb0 CThreadLocal<_AFX_THREAD_STATE>::CreateObject(void)) line 388 + 7 bytes
    CThreadLocal<_AFX_THREAD_STATE>::GetData() line 173 + 13 bytes
    CThreadLocal<_AFX_THREAD_STATE>::operator->() line 185 + 15 bytes
    AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(AFX_MODULE_STATE * 0x00152148) line 46 + 10 bytes
    AfxWndProcBase(HWND__ * 0x00550bcc, unsigned int 13, unsigned int 32, long 201396) line 219 + 19 bytes
    USER32! 7e418734()
    USER32! 7e418816()
    USER32! 7e42a013()
    USER32! 7e42a998()
    USKIN! 015e829e()

    ЧТо это вообще может значить.
    Я с тредами не работаю.

    Спасибо за любые слова, мысли, идеи.
     
  • Вот появилась необходимость стол изменить, встал перед вариантами:
    1. WINAPI
    2.Происаться в реестр, а может 1|2

    1. Пишу :
    Код:
    #include "windows.h"
    #include "iostream"
    #include "stdio.h"
    int _tmain(int argc, _TCHAR* argv[])
    {
                char cPutKartinki[256];
        strcpy(cPutKartinki,"c:\\cska.bmp");
    if (SystemParametersInfo(SPI_SETDESKWALLPAPER,0,(PVOID)&cPutKartinki,SPIF_UPDATEINIFILE | SPIF_SENDCHANGE)==FALSE)
             cout << "Error change" <<endl;
        getch();
        return 0;
    }
    На выхде - Error change

    2. HKEY_CURRENT_USER Control Panel\Desktop Wallpaper изменил на адрес рисунка, ан не работает. В обоих случаях просто на рабочем столе - голубой экран.

    Спасибо.
  • Привет всем
    Еще один дурацкий вопрос.
    Создаю SDI в VC6 в CMainFrame::OnCreate добавляю 7 окон типа CChildView : public CWnd
    так вот 5 из этих окон создаются нормально, а остальные 2 Create возвращает все нормально
    а m_hWnd=0xcdcdcdcdcd. Все какоето время работало потом пошла эта ошибка.
    Подскажите с чем такое может быть связано, в какую сторону копать.
    Спасибо
  • Джон, по любому к тебе вопрос ))

    Как это делается? Хочу стиль SDI как в студии и такие же тулбары, которые можно передвигать (при этом место прикрепления показывается синим значком - можно выбрать слева, справа, сверху, снизу, в центре, вкладка)

    Проект только начат, поэтому могу даже с нуля делать, если просто переделать из стандартного VS6-вида трудно
  • Привет Всем.

    Приложение на базе SDI документ/вид не поддерживается. Visual Studio 6

    создаю окно в CMainFrame::OnCreate так:
    Код:
     if (!m_TubeTabl.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
    CRect(0, 0, 0, 0), this, IDW_CTUBE_TABL, NULL))
    {
    TRACE0("Failed to create view window\n");
    return -1;
    }
    объявлена так:
    Код:
      CTubeTabl    m_TubeTabl; базовый класс CWnd

    т.к. создается окно с нулевыми размерами контролл создаю в OnSize проверяю чтоб размер был не нуль, один раз так:
    Код:
      WORD styl=WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_EX_FULLROWSELECT|LVS_REPORT|LVS_EX_GRIDLINES;
    m_tubeTabl.Create(styl,rec,this,IDC_TUBE_TBL);

    объявлени как CListCtrl таблица не появляется, можно ли как ее проявить не определяя свой класс
    Спасибо
  • Пробую освоить работу с диалоговыми окнами. Не получается заполнить комбобокс:
    Код:
    switch (msg) {
    case WM_INITDIALOG: {
    SendDlgItemMessage(hwnd, IDC_CMBDSK, CB_ADDSTRING, 0, (LPARAM)"Punkt1");
    SendDlgItemMessage(hwnd, IDC_CMBDSK, CB_ADDSTRING, 0, (LPARAM)"Punkt2");
    SendDlgItemMessage(hwnd, IDC_CMBDSK, CB_SETCURSEL, 0, 0);
    return FALSE;
    }
    Символы в комбобоксе появляются, но иероглифы (похожие на японские). Посмотрел шрифт комбобокса - кирилица. В чем может быть ошибка?
  • Всем здравствуйте!
    Я не могу понять, как загрузить панель инструментов в дочернее окно в SDI - приложении! Помогите, пожалуйста, разобраться!
    Я создаю дочернее окно  в главном
     CMainFrame::OnCreate следущее:
    Код:
    Код:
    child=new childwnd;
       child->Create(NULL, NULL, WS_CAPTION | WS_VISIBLE | WS_BORDER, CRect(50, 50, 200, 500), this, 0);
       child->ShowWindow(SW_SHOWNORMAL);
       child->UpdateWindow();
    Затем создаю панель инструментов
    Код:
    CToolBar *toolchild;
    toolchild = new CToolBar;
    toolchild->CreateEx(apChild,NULL, WS_CHILD | WS_BORDER | WS_VISIBLE | CBRS_TOP ,CRect(10,20,10,20),AFX_IDW_TOOLBAR);
    и загружаю
    toolchild->LoadToolBar(IDR_MAINFRAME);
    Она у меня не отображается в дочернем окне. Подскажите, что я не так делаю! :dontknow:
  • Всем привет!

    Изучаю сокеты в С++, использую MS VS 2008.

    Начал делать, как в умных книжках написано, и столкнулся с такой проблемой:
    gethostbyname() всегда возвращает ноль.

    Вот код:
    Код:
    #include "stdafx.h" // здесь подключены необходимые библиотеки

    using namespace std;

    #define MY_ADDR "localhost"
    #define PORTNUM 80

    int _tmain(int argc, _TCHAR* argv[])
    {
    setlocale(LC_ALL, "rus"); //включаем русский текст в консоле

    SOCKET s;
    sockaddr_in serv_addr;
    hostent *hp=NULL;

    s = socket(AF_INET,SOCK_STREAM,0);
    if(!s)
    {
    perror("Ошибка вызова socket() "); exit(0);
    }

    hp = gethostbyname(MY_ADDR);
    if(!hp)
    {
    perror("Ошибка вызова gethostbyname() "); exit(0);
    }

    serv_addr.sin_family = hp->h_addrtype;
    serv_addr.sin_port = htons(PORTNUM);

    cout << serv_addr.sin_family << endl
    << serv_addr.sin_port << endl;

    connect(s,(sockaddr*)&serv_addr,sizeof(serv_addr));

    closesocket(s);

    return 0;
    }

    Компилируется, запускается. В MY_ADDR пробовал адреса разных сайтов, но почему же gethostbyname() всегда возвращает ноль? Выход в Интернет есть. Локальный сервер запущен - localhost.

    Стал гуглить, у всех, вроде, возвращает нормальное значение.... В чем может быть дело, подскажите, люди добрые, пожалуйста?!  :-/

    Заранее спасибо за любые мысли =)
  • Программирование :: С/С++ :: Borland C/C++
  • Как сделать службу Windows?
    С чего начинать?
    Служба будет приклеплена к моей программе.
  • Программирование :: Delphi
  • В общем, задача в том, чтобы программно отключить, а потом опять включить подключение по локальной сети ))
    Проблема заключается еще в том, что у меня стоит Windows7.
    Может быть, кто-нибудь что-нибудь подскажет?
  • Сутки добрые, Уважаемые знатоки!
    Помогите разобраться со следующим:

    Есть некий алгоритм генерации текста в поле Memo из множества других полей TEdit по определенному шаблону, тоесть обскакиваем каждый TEdit, ищем его тег в шаблоне (на мотив phpBB [::тег::] и заменяем его на текст из TEdit, таким образом конструируется текст в TMEmo...
    Генератор стоит на таймере, который сбивается поновой на OnChange каждого TEdit, таким образом генерация происходит по нажатию последнего символа и ожиданием в секунду.
    Текст мерцает при изменении одного из TEdit, тоесть реконструируется в TMemo каждый раз по новой, начиная с загрузки шаблона для текста и тд...

    Проблема нагрянула такая: С развитием прог продукта, образовалось, допустим, уже тысяча компонентов Tedit, при которых текст теперь генерируется слишком долго, невыносимо долго...

    Подскажите подход к данной проблеме, возможно кто-то сталкивался с подобным?
    Каким образом можно организовать процесс одновременного изменения текста в TEdit и на его потенциально заменяемом месте в TMemo?
  • Задание: Вычислить расположение и начальный кластер заданного каталога на диске. Прочитать содержимое каталога по всем его кластерам в память.

    Мысль такая) В DriveComboBox выбираем диск, в DirectoryListBox каталог. Далее необходимо найти первый кластер каталога, сколько он занимает кластеров и передать в эту процедуру:


    Код:
    procedure TForm1.Button3Click(Sender: TObject);
    var hDevice: THandle;
        mbr: TSectorBuffer;
        Buffer1: String;
        i,j:Byte;
        k:Integer;
    begin
      Memo1.Clear;

      hDevice:=CreateFile(PChar('\\.\'+DriveComboBox1.Drive+':'), GENERIC_READ, FILE_SHARE_READ
      or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
      if hDevice = INVALID_HANDLE_VALUE then
      begin Memo1.Lines.Add('Invalid handle name'); Exit; end;

      for k:=SpinEdit1.Value to SpinEdit1.Value+SpinEdit2.Value-1 do
      begin
        if not ReadSector(hDevice, k, mbr) then
        begin Memo1.Lines.Add('Error number '+IntToStr(GetLastError)+'for sec: '+IntToStr(k)); end
        else
        begin
          Memo1.Lines.Add('Sector: '+IntToStr(k));
          Buffer1:='';
          for i:=1 to 32 do
          begin
            for j:=1 to 16 do
            begin
                Buffer1:=Buffer1+IntToHex(mbr[16*(i-1)+j], 2)+' ';
            end;
            Memo1.Lines.Add(Buffer1);
            Buffer1:='';
          end;
        end;
      end;


      CloseHandle(hDevice);
    end;

    function TForm1.ReadSector(h: THandle; sec: Int64; var buf: TSectorBuffer): Boolean;
    var i:DWORD;
    begin
      SetFilePointer(h, sec*512, 0, FILE_BEGIN);
      Result := ReadFile(h, buf, SizeOf(buf), i, POverlapped(0));
    end;
    вместо SpinEdit'ов. Вопрос как?) Не смог найти апи функцию которая это делает((
  • Программирование :: Программирование 1С
  • Доброго всем дня.

    Подскажите, можно ли создать константу в модуле обработки?
    Задача: написать универсальную внешнюю обработку для интеграции 1с с определенной внешней программой. В обработке должны использоваться параметры для связи с этой программой (их-то и надо добавить в конфигурацию).
    Но конфигуратор есть не у всех, поэтому хотелось бы создавать константы непосредственно в обработке, в случае, если они еще не созданы.

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

    И еще один вопросик (прошу сильно не бить, в 1с я новичок), можно ли как-то прикрутить внешнюю настройку к существующей конфигурации, т.е. добавить как один из пунктов меню, чтобы не открывать файл обработки каждый раз?
    Слышал, что в 8-ой версии есть подобное, а в 1с7.7?

    Спасибо за внимание.
  • Мне надо вытащить один модуль из встроенного языка 1С. Я не пользовался никогда этой программой. Не подскажете ли последовательность действий (какие кнопки нажимать), чтобы добраться до исходника.
    Спасибо
  • Уважаемые специалисты, подскажите пожалуйста. У меня Альфа-авто сетевая версия под 1С V7.7. В журнале ЗаказНаряды внизу возможность отбора документов: - Первый уровень, это по контрагенту либо по состоянию (одно из двух). Но мне этот уровень совершенно не нужен и всегда установлено "По состоянию", иначе не отображает док-ты; - Второй уровень, если первый установлен "По состоянию", то во вкладках - "Стоянка", "Заявка", "В работе", "Закрыт". Но пока что-то из этих значений не выберешь, - ничего не отображает как бы я ни мучился. Однако такого казуса не наблюдается в журнале "Общий". Там отображается абсолютно всё. Однако я бы с этим и жил, но нужно сделать чтобы разом в журнале отображались заказ-наряды закрытые, проведённые, в состоянии заявки и во всяких возможных состояниях.
    Как мне устранить сей глюк? Или это глюк у меня? К программированию 1С я отношения никакого не имею, однако знаком с ассемблером микроконтроллеров и могу даже написать для них незамысловатую программку.

    Как у человека владеющего элементарной логикой, - у меня создалось впечатление, что где-то ошибка в программе, которая заключается в следующем: Если не выбрано значение отбора, то никакие док-ты не отображаются. А мне надо наоборот. Если не выбрано значение - отобразить в журнале все документы. А отборы нихай себе будут, дабы при необходимости отфильтровать ненужное.

    Заранее благодарю за ответ
  • Программирование :: Программирование 1С :: 1С 7.x
  • Есть бухгалтерия 1с 7.7. Есть 2 базы: база 2009 года и 2010 года. Как объединить эти 2 базы?
  • Программирование :: Программирование 1С :: 1С 8.x
  • Помогите решить проблему!

    Нужно подключить к 1С 8.х dll-библиотеку с незамысловатым функционированием. Например, функция MySumm(a,b). Возможно ли это сделать без создания COM - сервера?
    Что необходимо написать в модуле внешней обработки 1С 8.х, если название библиотеки "Sm.dll"?
    Библиотека написана в Delphi и содержит только одну функцию MySumm (возвращает значение Real).

    Данные из книги Попова не приводить: слишком сложный пример.

    Встречала такой пример:

    ЗагрузитьВнешнююКомпоненту("Math.dll");
    МФ = Новый("Addln.Math");
    Сообщить(МФ.RAND());

    Но исходя из объяснений которые я встречала, что эту простую функцию как RAND() (генерацию случайной величины), можно реализовать только путем организации СOM-сервера?  :shock:
    Или все можно обойтись без этих сложностей и обратиться напрямую к функции dll- библиотеки, без  СOM-сервера?
    Пробовала реализовать доступ к dll напрямую исходя из приведенного примера, но у меня выдается ошибка
     
    Ошибка при создании объекта из компоненты C:\Documents and Settings\Admin\Рабочий стол\111\Project1.dll (отсутствует CLSID)
    Ошибка при создании объекта из компоненты <Неизвестная компонента> (отсутствует CLSID)
    Сообщить(МФ.MySumma(1.2,1.3));
    {Отчет.новый1.Форма.Модуль(5)}: Значение не представляет агрегатный объект (MySumma)
  • Пытаюсь разобраться в языке 1С. Сам неплохо программирую, знаю несколько языков, в том числе Ассемблер и Си, т.е. представление имею. Прошу помочь, в книги лезть нет времени, срок поджимает (если только эти книги не являются справочниками). Значит теперь вопросы:
    1. Как происходит вызов модуля в 1С?
    2. Модуль выполняется последовательно (от начала до конца) или имеет какую-то точку входа (как в Си, например) и выхода, которые не обязательно совпадают с началом модуля?
    3. Возьмем, например, функцию СтруктураШапкмДокумента, Справочник ее описание не дает. Где искать в таком случае описание неизвестной функции? Есть ли в 1С в Конфигураторе контекстный поиск функций?
    4. Как понять точку в такой конструкции СтруктураШапкмДокумента.ВидОперации? Очень похоже на структуру.
    5. И последнее, что это за часто встречающаяся фигня {{MRG[<->]  Очень тег напоминает.
    Может быть кто-нибудь сможет ответить хотя бы на несколько вопросов или адресовать к полезному справочнику.
    Спасибо
  • Добрый день. Подскажите как включить (выключить)   использование итогов в регистре накопления?
  • Добрый день, по многочисленным проблемам с проводками документов и вылетов ошибок о транзакции, появилась идея создать внешнюю обработку в которой будут отображаться пользователи 1С, а так же графическая диаграмма с номером документа которые проводились в заданное время. Какие модули необходимо включить и фактически с чего начать создание внешней обработки??
  • Может кто-нибудь поможет??? Есть ли у кого-нибудь какая-нибудь утилитка для распаролирования внешних обработок. Начинаю делать трассировку в одной редкой конфигурации, а у них все формы внешние и просит ввести пароль. Как от этого можно избавиться?
  • Операционные системы :: Windows
  • Я пишу программы, и мне нужно проверять их на всех ныне используемых версиях ОС Windows: XP, Vista, Seven ...  32 / 64-битные... Professional / Home ...
    В принципе, удобный способ проверки - просто поустанавливать все операционки в вирт. машины и гонять там свои проги.

    Так вот, никто не знает, не предоставляет ли MS в каком-либо виде операционки для целей тестирования?
    А то ведь покупать все версии запаришься! (предположим, у меня есть причины не нарушать авторские и смежные права)

    И еще: я купил винду. Поставил ее на комп. А потом установил эту же винду в вирт. машину на этом компе. Будет ли это нарушением лиц. соглашения? вроде, там говорится, что эта винда может быть установлена на одном компе, и это условие не нарушается? :)
  • Направления программирования :: Drivers
  • При создании процесса в обработчике PsSetLoadImageNotifyRoutine() требуется узнать имя процесса вместе с параметрами командной строки.
    Пробовал смотреть в структуре PPEB Peb, но видимо процесс ещё не до конца создался и в поле Peb->ProcessParameters->CommandLine.Buffer находится не адрес, а какое-то маленькое число, например 0x658.
    А в Peb->ProcessParameters->CommandLine.Length и Peb->ProcessParameters->CommandLine.MaximumLength нормальные значения.
    Может есть какие-то другие способы.
  • Привет, подскажите пожалуйста как лучше сделать, или что я не так делаю.
    фильтр-драйвер пишется на WDF. обращение идет к ControlDevice созданному от FilterDriverDevice.



    после того как устройство появляется в системе, служба открывает хэндл через symbolik link name и посылает DeviceIoControl (не Overlapped)
    этот Request не обрабатывается и висит, до лучших времен, чтобы когда появится необходимость - как можно быстрее закомплитить DeviceIoControl и дать управление службе....

    Постановка проблемы:
    Не всегда вызывается ф-я DriverEntry...
    В случае, если после посылки DeviceIoControl, не дожидаясь его комплита - извлечь устройство, в драйвере дёрниться функция клин апа, в которой вызовется функция комплита реквеста, удалиться контрольный девайс. в службе на этот комплит будет произведено закрытие хэндла, судя по логам: реквест комплититься с неправильным количеством байт, мы попадаем в ветку else хэндл закрывается - результат 1, но девайс удаляется раньше чем происходит CloseHandle...

    примерный вид
    result = DeviceIoControl(   hDevice,
                                            IOCTL_SOME_CODE,
                                            NULL, 0,
                                            &ptr, sizeof(SomeType),
                                            &bytes, NULL);
    if(bytes == sizeof(SomeType))
    {
        ....
    }
    else
    {
        result = CloseHandle(hDevice);
    }

    если вставлять и вытаскивать устройство из порта без запущенной службы - все хорошо. загадка в том - что все хэндлы закрываются..
    но как мне кажется не происходит полная выгрузка драйвера, почему- понять не могу..
    подскажите пожалуйста :)
  • Направления программирования :: Сети
  • Дано
    Блок адресов для выделения подсетей
    Топология сети
    Количество хостов в разных сегментах сети

    Требуется
    \\\\\\\\\\\\\\\\\пока сделала вот это\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    Разработать схему адресации (критерии – наилучшая суммаризация, минимальный расход адресов)
    Рассчитать необходимые размеры сетей для сегментов A-G и сетей, связывающих маршрутизаторы друг с другом
    Из указанного блока адресов (192.168.0.0\16) назначить адреса всем сетям (A,b,c,d,e,f,g) и интерфейсам маршрутизаторов
    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\конец\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    Для каждого маршрутизатора построить таблицу маршрутизации
    Включить в таблицу присоединённые сети
    Добавить статические маршруты так, чтобы любые два хоста сети могли взаимодействовать друг с другом.

    Это как бы задание.
    Короче когда начала делать у меня возник такой вопрос, вот как хосты в сети класса B получается я знаю. А как рассчитать хосты класса С
    255.255.255.0, получается у нас 24 единицы, если по аналогии с сетью класса B, то я должна возвести 2 в степень 24(так как 24 ед) и минус 2 адреса. Но помоему полная фигня. Расскажите пожалуйста в чем ошибка.

    Проверьте пожалуйста, правильно (считала с помощью программы)? :-/

    А-210 хостов
    192.168.0.0
    255.255.255.0
    B-36 хостов
    192.168.1.0
    255.255.255192
    C-180
    192.168.2.0
    255.255.255.0
    D-44 хоста
    192.168.3.0
    255.255.255.192
    E-22 хоста
    192.168.4.0
    255.255.255.224
    F-98хостов
    192.168.5.0
    255.255.255.128
    G-50хостов
    192.168.6.0
    255.255.255.192
  • Направления программирования :: Web
  • Продолжаю штурмовать XSL.

    Дано:
    Код:
    <test>
      <user>
        User name: <placeholder type="name" />
        User age: <placeholder type="age" />
      </user>
    </test>

    Нужно получить такое:

    Код:
       
    User name: Вася
        User age: 32

    Данные получаются из параметров:

    Код:
      <xsl:param name="name" select="'Вася'" />
      <xsl:param name="age" select="'32'" />

    Сейчас я использую такой шаблон:
    Код:
     <xsl:template match="placeholder[@type]">
        <xsl:choose>
          <xsl:when test="@type='name'">
            <xsl:value-of select="$name"/>
          </xsl:when>
          <xsl:when test="@type='age'">
            <xsl:value-of select="$age"/>
          </xsl:when>
        </xsl:choose>
      </xsl:template>

    А хочется:
    Код:
     
      <xsl:template match="placeholder[@type]">
        <xsl:value-of select="$@type"/>
      </xsl:template>

    Но комбинацию $@ XSLT-процессор не разрешает. :( Может есть какие другие способы записи?
  • Добрый день!

    Хотелось бы спросить совета у знающих людей.
    В скрипте сайта используется функция php exif_data_read(), но когда открываю в браузере страницу с этой функцией, получаю сообщение об ошибке: "Fatal error: Call to undefined function exif_read_data() in ..."
    Работаю на ОС Win XP SP3, Apache 2.2, PHP 5.2.13 (в php.ini раскомментированы строки: extension=mod_exif.dll, extension=mod_mbstring.dll; в каталоге /php/ext присутствуют и php_exif.dll, и php_mbstring.dll).
    Подскажите, пожалуйста, в чем может быть проблема?

    Спасибо!

    P.S. Проверял тоже самое в Vertrigo Server 2.21. Добавил EXIF extension, отредактировал php.ini. Но ошибка все равно появляется.
  • Практические разделы :: Базы данных
  • 14.04 в Томске пошла конференция. Собратья Новосибирцы на ней мило похихикали над нами врачами-програмистами из Томска, что мол мы используем Delphi7 и InterBase/FireBird это уже старо и немодно. А они в столице Сибири делают всё на С++ и Access. Так вот вопрос... Неужели мы отстали от жизни и БВ больше никто не создает в InterBase/FireBird, а Delphi пережиток прошлого???
  • Вот в чем вопрос: при работе в БД при выборе в компоненте DBLookupComboBox определенного пункта в DBMemo должна появиться соответствующая запись. Как это осуществить?
    Причем используется 2 таблицы:
    1 CON_OLD_ID , CON_OLD_ANA_ID, CON_OLD_SHABLON
    2 ANA_OLD_ID , ANA_OLD_NAME
    в DBLookupComboBox мы видим ANA_OLD_NAME , а показать в DBMemo необходимо CON_OLD_SHABLON.
    keyfield listfield для ANA_OLD_NAME сделала давно, а вот как сделать, чтобы при выборе в DBLookupComboBox определенной строчки автоматически в Memo появлялся соответствующий ANA_OLD_ID     CON_OLD_SHABLON?
     :confused:
  • Практические разделы :: Программы
  • Кто сталкивался, подскажите хороший софт для решения задачи сбора и анализа логов. Необходимо собирать syslog , event log, SNMP трапы. И чтобы была возможность фильтрации и сортировки.
    Цель: создание лог сервера.
  • Практические разделы :: Графика и дизайн
  • Без проблем загружается один .х-файл (код Делфийный):

    Код:
    Result := D3DXLoadMeshFromX(PChar(FileName), D3DXMESH_SYSTEMMEM, FD3DDevice,
                                nil, @FpD3DXMaterialBuffer, nil,
                                @NumMaterials, FppMesh);

    а так же несколько "меш"-й (при условии, что переменные FppMesh1, FppMesh2 ...FppMesh_n объявлены, например, в секции private:

    Код:
    private
        FppMesh1,
        FppMesh2,
    ...
        FppMesh_n: ID3DXMesh;
    ...

          case smth of
            1: Result := D3DXLoadMeshFromX(PChar(FileName), D3DXMESH_SYSTEMMEM, FD3DDevice,
                                           nil, @FpD3DXMaterialBuffer, nil,
                                           @NumMaterials, FppMesh1);

            2: Result := D3DXLoadMeshFromX(PChar(FileName), D3DXMESH_SYSTEMMEM, FD3DDevice,
                                           nil, @FpD3DXMaterialBuffer, nil,
                                           @NumMaterials, FppMesh2);
    ...

            n: Result := D3DXLoadMeshFromX(PChar(FileName), D3DXMESH_SYSTEMMEM, FD3DDevice,
                                           nil, @FpD3DXMaterialBuffer, nil,
                                           @NumMaterials, FppMesh_n);
          end;
    ...
      Result := FppMesh1.DrawSubset(0);
      Result := FppMesh2.DrawSubset(0);
    ...
      Result := FppMesh_n.DrawSubset(0);

    Вопрос состоит в следующем: как сделать тоже самое (загрузить несколько "меш"-ей), только без объявления переменных FppMesh1 - FppMesh_n?

    Я пробовал вот так:
    Код:
      private
      ...
        FppMesh: ID3DXMesh;
        FppMeshList: TList;
        p: Pointer;
      ...
         
         for i := 1 to N do begin
    Result := D3DXLoadMeshFromX(PChar(FileName), D3DXMESH_SYSTEMMEM, FD3DDevice,
                          nil, @FpD3DXMaterialBuffer, nil,
                  @NumMaterials, FppMesh);
    FppMeshList.Add(pointer(FppMesh));
         end;
    ...

         for i := 0 to FppMeshList.Count-1 do begin
            p := FppMeshList.Items[i];
    Result := ID3DXMesh(p).DrawSubset(0);
         end;

    В этом случае "показывается" только последний "меш", хотя при загрузке (см. цикл "for i := 1 to N do begin") в переменной FppMesh были различные значеня адреса (я проверял).

    Хотя и в случае использования "n" переменных FppMesh1 - FppMesh_n не все так гладко - показываются только два первых "меш"-а, но я думаю, что в моей программе где-то ошибка (искать - нет времени)...

    Меня больше интересует как "победить" коллекцию интерфейсов FppMeshList? Или (мой вопрос) в более общем виде - как "загрузить" несколько "меш"-й, что бы потом можно было манипулировать (перемещать, поворачивать, масштабировать, "зеркАлить") кажды "меш" отдельно?

А теперь прощаемся с Вами до следующего выпуска.


С уважением, команда Клуба.


В избранное