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

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


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

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

  • Программирование :: Общий
  • Подскажите,пожалуйста,как моделировать в матлабе с помощью нейронных сетей? Может литературу какую-нибудь подскажете? Основная проблема в том,как выбрать из большого количества сетей несколько самых оптимальных для моделирования(с самой большой скоостью работы и т.д.). Их надо как-то протестировать в матлабе... А вот как,я не знаю. Подскажите,что-нибудь!
  • Народ, необходимо написать батник.  Который проверял бы наличие файла в одной директории и копировал потом его в другую директорию.
    Но проблема в том, что я раньше никогда батники не писал  :shuffle:

    Может кто подсоветует литературу как научиться их писать
  • Программирование :: Технологии разработки программных систем
  • Читая блог Вада, заметил, что его в последнее время тянет на функциональный подход и Haskell. Возможно потому, что этот подход ближе к чистой математике, нежели к жутким реалиями разных сырых SDK. Так сказать, горний мир и пища духовная для программиста и прикладного математика :)

    Посему ставлю вопрос ребром.

    В лямбда-исчислении Чёрча любая функция от N аргументов разлагается на композицию функционалов. Т.е., например, f(x, y) = (g(x))(y), где g - не функция, а функционал - т.е. такое особое выражение, результатом вычисления которого является функция или другой функционал (как, например, неопределённые римановы интегралы в математике).

    В связи с этим возникают широкие возможности для организации ленивых вычислений. Общая суть подхода сводится к тому, чтобы в некоторой точке древовидного вычислительного процесса наметить ответвление, но не углубляться в эту ветвь до тех пор, пока не потребуется результат её исполнения. Чем-то это похоже на шаблоны C++ и generic-типы в других языках, только они обрабатываются компилятором, а в функциональных языках такие подстановки происходят прямо во время исполнения.

    Возьмём простую задачу поиска минимума в списке чисел.

    Алгоритмический подход в лоб известен, думаю, всем (а те, кому он не известен, уже закрыли эту тему, придя в полное уныние от предыдущих абзацев) - это перебор списка с запоминанием лучшего решения из уже перебранной части.
    Код: (Pascal)
    const
    N = 100;
    type
       ArrayRangeType = 1..N;
       ArrayItemType = Real;
       ArrayType = array [ArrayRangeType] of ArrayItemType;
    function Min(a: ArrayType): ArrayItemType;
    var
       i: Integer;
       result: ArrayItemType;
    begin
       result := High(ArrayItemType);
       for i := Low(ArrayRangeType) to High(ArrayRangeType) do
          if a[i] < result then
             result := a[i];
       Min := result;
    end;

    Другой подход (кстати, будто бы упомивашийся у кого-то из классиков - то ли Кнута, то ли Дейкстры) связан с богатством средств языка. Т.е. если в языке есть встроенная сортировка, то гораздо компактнее (но зато хуже по объёму вычислений) использовать её:
    Код: (JavaScript)
    function min(array)
    {
       if(array instanceof Array && array.length > 0)
          return array.sort()[0];
       else
          return NaN;
    }

    Второй вариант более близок к идеям функционального подхода, но нет предела совершенству.

    Без сортировки просто найти минимум достаточно просто через рекурсию:
    Код: (Common Lisp)
    (defun mmin(l) (if l ((lambda(h t) (if t ((lambda(x y) (if (< x y) x y)) head (mmin t)) h)) (car l) (cdr
    l)) nil))
    (Чёрт, совсем забыл, как можно внятно форматировать код на Lisp :).)

    Вопрос: можно ли тот же алгоритм быстрой сортировки Хоара таким образом представить в виде композции функционалов и функций, чтобы избавиться от последовательности операций: сортировка списка, взятия i-го элемента. Т.е. составить такую функцию от двух аргументов: списка и номера элемента в списке f(a, i), которая бы обеспечивала возврат i-го в порядке возрастания элемента списка, при этом рассматривая сортировку не как операцию над всем списком, а как операцию доступа к элементу списка, возможно, выполняясь частично - лишь по мере необходимости доступа к i-му элементу?
  • Программирование :: .NET технология от и до
  • Добрый день. Хотелось бы узнать, каким способом можно сохранять настройки разработанного приложения?
    Я знаю разве что с помощью файла и реестра.
  • Программирование :: .NET технология от и до :: WinForms
  • Есть форма, на которую накиданы контролы.

    Поверх всего в некоторые моменты времени появляется "всплывающий" UserControl, который по замыслу должен быть полупрозрачным (с включенным alpha-каналом цвета). Этот контрол добавляется в коллекцию Controls формы и удаляется из неё по мере надобности.


    Проблема в том, что сквозь его полупрозрачность виднеется голый фон формы, а все прочие контролы, по идее находящиеся под ним, оказываются невидимыми.

    Как это можно победить?

    Один из вариантов - размещение этого контрола внутри крайнего верхнего, но это не подходит, поскольку всплывающий контрол имеет разные размеры и порывает собой разные части разных контролов в разные моменты времени. При попытке внедрить его в другой контрол, при выводе происходит clip его изображения по границе контрола-контейнера.
  • Программирование :: С/С++
  • Приветствую всех...
    Возникла проблема, я сам не могу найти решения, помогите, пожалуйста, хотя бы наводку в какое направления рыпаться...

    Проблема такая... надо заменить в бинарнике "слово" типа Char на более длинное по отношению к имеющемуся... не получается... :insane: то есть получается, но портится структура файла... надо как я думаю сдвинуть несколько битов к концу файла, а в образованный "прогал" (вместо нулей) дописать более длинное слово (как-бы вставить)... но как это сделать ума не приложу... :-/

    P.S. Если это важно файл весит 100 Мб...
  • auto completion, command history

    хочу прикрутить к внутриигровой консоли auto completion, command history ( примеры можете посмотреть в gvim, зы пробовал в нем покопаться, но не понял как это сделали) 

    какие библиотеки стоит посмотреть на эту тему?
  • Программирование :: С/С++ :: ANSI С/С++
  • Здравствуйте!
    Столкнулся с такой проблемой при сортировке списка. %-)

    Есть структура:

    Код:
    struct PackObject
    {
        bool            Placed;         // Помещен ли на карту текстур
        string          SceneAlias;     // Имя сцены

        string          TexFile;
        int             TexWidth;
        int             TexHeight;
        bool            TexMipMap;
        bool            TexGray;
        bool            TexJpeg;

        string          ObjAlias;          // Имя родительского объекта
        TRect           ObjRect;
        int             AniFrameNumber;    // Порядковый номер кадра
        int             AniFrames;
        int             AniFramesPerLine;
    };

    А также контейнер list, элемент которого задан соответсвующей структурой.
    Код:
    typedef list<PackObject>               PackObjectsArray;
    typedef list<PackObject>::iterator     PackObjectsIterator;

    Требуется отсортировать данный контейнер наполненый некой информацией по
    1) Имени сцены "SceneAlias"
    2) Аттрибутам текстуры TexMipMap;TexGray;TexJpeg;
    3) По размерам текстуры  TexWidth; TexHeight;

    ЭТО НЕ ОЗНАЧЕТ СДЕЛАТЬ 3 РАЗНЫХ СОРТИРОВКИ!!! ЭТО ЗНАЧИТ ЧТОБЫ СВЕРХУ ВНИХ ОБЪЕКТЫ БЫЛИ ОТСОРТИРОВАННЫ ПО ДАННЫМ КРИТЕРИЯМ!

    Т.е.
    1) Scene1  JPEG  MIPMAP GRAY 1000x900
    2) Scene1  JPEG  MIPMAP GRAY 800x900
    3) Scene1  JPEG  MIPMAP 1000x900
    4) Scene1  JPEG  MIPMAP 700x700
    5) Scene1  JPEG  GRAY 1500x1500
    6) Scene1  JPEG  GRAY 700x700
    7) Scene1  JPEG  2000x700
    8) Scene1  JPEG  1000x700
    8 ) Scene1  100x100
    9 ) Scene1  100x50
    10) Scene2 .......

    Т.е. номера пунктов 3-ех аттрибутов являются как бы приоритетами (важностью) 1) 2) 3)


    НО ПРОБЛЕМА НЕ В ТОМ КАК ОТСОРТИРОВАТЬ!!!!!!

    Проблема заключается в том что функция PREDICATE для списка LIST отказывается сортировать корректно его элементы!

    Вот один из испробованных мною вариантов PREDICATE функции (до этого я пытался делать эту функцию разными способами в том числе перегрузкой скобок ()  и  перегрузкой знака ">" )

    Код:
    bool PackPred(PackObject &obj1, PackObject &obj2)
    {
        bool result = false;

        if (sortmem_apartscenes)
        {
            // Cортируем по имени сцены в алфавитном порядке
            string str1 = obj1.SceneAlias;
            string str2 = obj2.SceneAlias;
            size_t minlen = (str1.length() > str2.length()) ? str2.length() : str1.length();
            for (size_t i = 0; i < minlen; i++)
            {
                if (str1[i] > str2[i])
                {
                    result = true;
                    break;
                }
            }
            if (str1.length() > str2.length()) result = true;
        }

        // Объекты одной сцены сортируем по параметрам текстуры
        if (sortmem_apartjpeg)
        {
            if ((obj1.TexJpeg) && (!obj2.TexJpeg))  result = true;
        }

        if ((obj1.TexMipMap) && (!obj2.TexMipMap)) result = true;
        if ((obj1.TexGray)   && (!obj2.TexGray))   result = true;

        // Возвращаем результат сравнения размеров
        int width1  = obj1.TexWidth;
        int height1 = obj1.TexHeight;
        int width2  = obj2.TexWidth;
        int height2 = obj2.TexHeight;
        // Хотябы один размер был больше
        if ( ((width1  > width2) && (width1  > height2)) ||
             ((height1 > width2) && (height1 > height2)) ) result = true;*/   
        return result;
    };

    Пояснения!
    1) Переменные bool sortmem_apartscenes и bool sortmem_apartjpeg являются глобальными. Увы от них избавится не вышло а добавлять еще 3 варианта сортировки было бы некрасиво. Перед сортировкой эти переменные устанавливаются в нужное значение.

    2) Переменные TexJpeg TexMipMap и TexGray пробывал сравнивать знаком > но все равно безрезультатно.

    3) bool result - это якобы варинт написания функции как в Дельфи. Просто во время отладки я заметил очень странную весчь. Оказывается в PREDICATE функции при к примеру "return true" не происходит выход из функции а продолжает обрабатывать всею последующие команды =-O Я не понимать что это за баг?

    4) Если проверять по отдельности то разделив на 3-и блока всю функцию сортировки

    - мы получим что 1-ый блок с сортировкой по алфавиту, не выполняется (хотя список элементов string успешно сортирует имена файлов но только в другом участке в другом контейнере в моей работе)

    - 2 блок кода выполняется только отдельно к примеру только сортировка по JPEG аттрибуту.

    - 3 блок сортироки по размерам блестяще выполняется.

    ПРИТОМ! Если по всем 3 блокам одновременно я пытаюсь сортировать данный список то у меня получается что
    1) По именам сцен сортирует но имена сцен и без того изначально были уже в отсортированном виде еще при добавлении в список элементов (отсортировать в обратном порядке при изменении знака > на  знак < ничего не меняется но если блок убрать то порядок теряется)
    2) Также сортирует по именьшению сверху вниз размеров текстур.
    Аттрибуты же текстур остаются в произвольном порядке....:(


    Как это можно вылечить. Может кто уже сталкивался со сложными сортировками?
  • Программирование :: С/С++ :: WinAPI & Visual C++
  • условная одноразовая breakpoint

    как создать?

    функция запускаемая в каждом кадре начинает себя странно вести после того как по кропке v в пустой список добавлено значение, но работает нормально если добавление произошло не в пустой список

    или как отладить?
  • Вообще тема .NET-овская на C#, но больше посвящена тонкостям WinAPI, чем .NET, поэтому помещаю сюда.


    Хочу сделать главное окно приложения полностью skin'изированным. Т.е. без стандартой рамки и заголовка. Однако нужно сделать штатно двигаемым, изменяющим размеры и правильно максимизирующимся на рабочем столе.

    Я беру обычну форму Borderstyle="Sizeable," делаю override её свойства CreateParams и выставляю там флаги:
    WS_MAXIMIZEBOX, WS_MINIMIZEBOX, WS_SYSMENU, WS_THICKFRAME

    Получается форма без заголовка с тонкой системной sizeable-рамкой и с системным меню, в котором включены стандартные действия: Move, Maximize, Minimize, Сlose.

    Ну реализация кнопок максимизации, минимизации и закрытия формы тривиальна.

    Вопросы:

    1) Что делать с перемещением формы? Т.е. при нажатии мышью в некоторой области формы (собственной реализации заголовке) форма должна двигаться вместе с мышью. Обращаю внимание, что смена Location формы - неправильное решение. Так как в Windows в режиме "перетаскивать содержимое окна при перемещении" такой подход ещё может сработать, а вот в старом режиме, когда появляется двигающаяся рамка нового положения окна, такой подход уже не работает. Вернее работает, но "отрывается от коллектива" - такой режим включается там, где запрещена интенсивная графика (на дохлых машинах или при работе через Remote Desktop), и в этом смысле приложение должно вести себя адекватно.

    Была у меня идея послать в WndProc собственноручно собранный Message WM_SYSCOMMAND SC_MOVE (аналог выбора Move в системном меню). Однако почему-то ничего не происходит ни при посылке в WndProc, ни в DefWndProc. При выборе Move в системном меню появляется нужная рамка, но двигается она лишь клавиатурой, а мышью не двигается.

    2) При максимизации такого окна, оно распахивается в full screen, скрывая task bar. Вот это тоже нежелательное явление, и хочется от него избавиться. Как?
  • Программирование :: Delphi
  • В IBExpert в скрипте этот запрос работает замечательно!
    INSERTEX into STROYMATERIALS (NAME_MATERIAL, HARAKTERISTIKA, ID_org) from csv 'C:\12.csv';

    Но стоит его поместить в Delphi:

    s:='INSERTEX into STROYMATERIALS (NAME_MATERIAL, HARAKTERISTIKA, ID_org) from csv '''+path+'''';
    if Dm.WQuery1.open then Dm.WQuery1.Close;
    Dm.WQuery1.SQL.Clear;
    Dm.WQuery1.SQL.Add(s);
    Dm.WQuery1.ExecQuery;

    как сразу же выскакивает ошибка: "Неизвестная команда InsertEx"
    Помогите!
  • Программирование :: VisualBasic
  • Пожалуста помогите плиз.     
    Как выбрать или использовать или нажать программно на команду из контекстного меню "Обновить".
    Для чего мне это нужно:
    Когда зоходишь в "Свойство папки" и делаешь "показывать скрытые файлы и папки"  после нажатия ОК скрыты папки или файлы сразу видны, а если это делаешь через VB, тоесть изменяешь ключ реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced "Hidden". И покамись не выполнишь команду обновить с контекстного меню фалы и папки не будут видны.

    Пожалуста подскажите мне как выполнить эту Каманду "Обновить" через VB 6.
  • Программирование :: Java
  • Доброго времени суток...
    я начинающий программист и столкнулся с недостатком знаний в такой вот теме ^.
    Проблема такая: у меня в бд oracle есть таблица (oracle 10g), как только туда добавилась запись, триггер который висит на этой таблице должен взять URL из другой таблицы и послать на этот URL запись,которую добавили, полностью как она есть. формат записи фиксированный. По взятому URL находится java программа которая постоянно "слушает" входящее сообщение, как только оно пришло, начинается обработка.
    Пожалуйста помогите...я в отчаянии. И еще просьба с кодом. Если можно хотябы схематично накидать триггер,как отправить это сообщение, и java приемник (какие там обьекты и методы юзать).
    Заранее большое спасибо за ответ.
  • Направления программирования :: Сети
  • Здравствуйте, можете подсказать, возможно ли разбить сеть на нечетное количество подсетей, и как в этом случае заимствуются биты? И еще начал сети изучать недавно, изучаю по книгам Вито Амато "Основы организации сетей Cisco" и вспомогательное руководство программы сетевой академии. Второе оно более подробное а в первом больше примеров и как то более понятней. Хочу сдать на сертификат. Что посоветуете по каким материалам лучше изучать?
  • Практические разделы :: Программы
  • Господа кто нибудь уже юзал новую версию пакета, как  впечатления?
  • Учимся программировать :: Срочно пАмАгите!!!
  • Quaternions 180

    на кой при поворотах квантерионами проверять поворот на 180 градусов?

    почему условие проверяется равенством скалярного произведения векторов -1 ( если не по русски звучит то имел ввиду dotProduct ) ?

    как я понимаю в этом случае, скорее всего где-то всплывает деление на 0, если да то где?

  • Доброго времени суток!
    Знатоки и знающие люди, проверьте, пожалуйста, мои ответы ( выделены) на след. вопросы:

     Для проверки простых циклов с количеством повторений 10 нужно выполнить
    1
         Варианты ответа:
         1) 10 прогонів
         2) 20 прогонів
         3) 5 прогонів
         4) нет правильного ответа

         Затраты на устранение ошибок в программах на этапе эксплуатации больше затрат на этапе разработки в x раз
         Варианты ответа :
         1) х = 10 ? 20
         2) х = 60 ? 100
         3) х = 5 ? 10
         4) х = 20 ? 30

         Пусть заданное сложное условие вида В & (Е1= Е2), где В - булевое выражение, Е1, Е2 - арифметические выражения. Которой будет множество, которое ограничивает?
         Варианты ответа :
         1){(false,=), (true,<), (true, >), (true,=)}
         2) {(false, true), (true, false), (true, true)}
         3) {(false, false), (true, true), (true false)}
         4) нет правильного ответа

    (http://s61.radikal.ru/i171/0907/d6/f2c039b2d8e1.jpg)

         Какими должны быть размер класса CS и количество операций, которые переопределяются подклассом N00 соответственно.
         Варианты ответа :
         1) CS <= 20, N00 <= 3
         2) CS => 20, N00 => 4
         3) CS <= 10, N00 > 4
         4) нет правильного ответа

    (http://i007.radikal.ru/0907/4f/082a2c0b51f7.jpg)

    (http://s40.radikal.ru/i087/0907/dd/c7117dd766a8t.jpg)

    Заранее благодарен.
  • Учимся программировать :: Начинающим
  • msvc9 manifest

    зачем нужен файл манифеста?
  • Помогите разобраться с составлением SQL запросов  в С++!
  • multithreading

    у меня возникает чувство, что через несколько итераций проект свалится в самопальную реализацию потоков вытесняющей многозадачности

    что можно почитать по subj для полного ньюба?

    какие технические риски могут возникать при попытках использования потоков?

    какие особенности настройки среды и тестирования под msvc9ex xp и g++ 4.1 linux для использования потоков?

    насколько оправдано использование потоков под linux?




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

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

В избранное