На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта (C++) user posted image FAQ Форума user posted image Наши Исходники user posted image Поиск по Разделу user posted image MSDN Library Online (Windows Driver Kit) user posted image Google

Ваше мнение о модераторах: user posted image B.V.
Модераторы: B.V.
Страницы: (3) 1 [2] 3  все  ( Перейти к последнему сообщению )  
> Наполнение FAQ раздела и базы исходников форума, Что требуется, какие поощрения
    В связи с некоторыми вопросами, поступившими за последнее время, решил создать тему и прояснить ситуацию по поводу наполнения нашей базы знаний.

    Итак, на форуме существует две категории разделов:
    • Раздел с часто задаваемыми вопросами, относящимися к конкретному ЯП -- <ЯП> FAQ
    • Раздел с полезными исходниками на любом ЯП, где исходники не обязательно должны решать часто встречающуюся проблему -- Наши Исходники

    Какие исходники нужны форуму:
    • Исходники, решающие часто поднимающийся в разделе или на форуме вопрос, не имеющий (или имеющий не оптимальное) решения ни в одном из разделов двух категорий
    • Исходники, решающие узкий, редко поднимающийся, но не тривиальный вопрос, решения которого нет в разделе Наши Исходники

    Что нужно, что бы ваш код попал в FAQ или в раздел Наши Исходники:
    1. Нужен законченный, работающий исходный код, который наглядно демонстрирует решение того или иного вопроса. Если код предназначен для FAQ, он должен быть написан на ЯП раздела
    2. Код должен сопровождаться описанием "Что код решает", "Как он работает" и "Как им пользоваться"
    3. Код должен использовать только стандартные возможности платформы, для которой он предназначен
    Естественно, крайне желательно, что бы код был написан в хорошем стиле, без магических чисел, магических конструкций и неинформативных названий переменных

    Что вы получаете за пополнение базы знаний форума:
    Прежде всего, благодарность участников форума ;)
    Так же, за каждую тему в FAQ автору полагается от 1-го до нескольких DGM user posted image, на усмотрение модератора раздела. Виртуальные деньги форума всегда отображаются в вашем профиле, рядом с рейтингом. Кроме того, вы можете за них приобрести один из товаров, доступных в нашем магазине DigiMania.


    Спрашивайте, что не ясно, постараюсь ответить :)
    char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
    for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;


    user posted image Чат Исходников в СкайпеНе тормози, форум теперь здесь!Чат Исходников в Дискорде
      Цитата B.V. @
      Зато у нас неоднократно всплывали вопросы по различию флешки от жесткого диска и получения уведомления/управления новым USB-Storage устройством, и такой код однозначно пойдет в FAQ.

      Моя функция http://forum.sources.ru/index.php?showtopi...9368IsFlasDrive подойдёт?

      Цитата B.V. @

      получения уведомления/управления новым USB-Storage устройством

      Немного не понял что имеется ввиду.

      Ещё к примеру я постил код-шаблон для обработки исключений по RAII и в стиле C. Пойдёт в FAQ? Наверняка часто задают, я сам пару тем здесь замечал.

      И вообще какой механизм пополнения FAQ? Вот к примеру вопрос задаётся несколько раз и задающий получает на него ответ в одной теме, и получается как-бы можно уже этот ответ добавлять в FAQ, поскольку несколько раз спрашивается.

      Это сообщение было перенесено сюда или объединено из темы "Аналог команды PAGE системного отладчика"
      Не ошибается лишь тот кто ничего не делает.
        Цитата neokoder @
        Моя функция http://forum.sources.ru/index.php?showtopi...9368IsFlasDrive подойдёт?

        Подойдет, только пост стоит немного почистить от переписки по теме

        Цитата neokoder @
        И вообще какой механизм пополнения FAQ? Вот к примеру вопрос задаётся несколько раз и задающий получает на него ответ в одной теме, и получается как-бы можно уже этот ответ добавлять в FAQ, поскольку несколько раз спрашивается.

        Постарался описать в прикрепленном посте. Ответ, как правило, дается с минимальным описанием, лишней перепиской по теме, и не всегда с законченным кодом. Для добавления в FAQ пост может потребовать некоторой правки
        char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
        for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;


        user posted image Чат Исходников в СкайпеНе тормози, форум теперь здесь!Чат Исходников в Дискорде
          Цитата B.V. @
          Ответ, как правило, дается с минимальным описанием, лишней перепиской по теме, и не всегда с законченным кодом. Для добавления в FAQ пост может потребовать некоторой правки

          Я всегда стараюсь дать законченный код, там где это возможно. :)


          Цитата B.V. @

          Код должен сопровождаться описанием "Что код решает", "Как он работает" и "Как им пользоваться"

          Сделаю.

          Цитата B.V. @
          Постарался описать в прикрепленном посте.

          Значит я понял, что мне надо добавить описание. А вот следующее не очень:

          Цитата B.V. @

          Если код предназначен для FAQ, он должен быть написано на ЯП раздела

          Насколько я увидел, есть только один общий раздел FAQ C++. Т.е. ты имеешь ввиду ЯП это С/С++? Или же у нас в разделе "Системное прогнраммирование" ты сделаешь отдельную тему для FAQ?

          Цитата B.V. @

          Код должен использовать только стандартные возможности платформы, для которой он предназначен


          А вот это не понял, что подразумевается под стандартные возможности платформы? К примеру DecviceIOControl - это стандартные возможности?

          Добавлено
          Цитата B.V. @
          Для добавления в FAQ пост может потребовать некоторой правки

          Да я вообще могу отдельным текстом всё сделать. Или же надо обязательно чтобы была ссылка на пост в теме?

          Сейчас посмотрел Раздел FAQ там вроде тему можно самому создавать. Так что я постю туда IsFlasDrive с описанием?
          Сообщение отредактировано: neokoder -
          Не ошибается лишь тот кто ничего не делает.
            Цитата neokoder @
            Насколько я увидел, есть только один общий раздел FAQ C++. Т.е. ты имеешь ввиду ЯП это С/С++?

            Именно так. У нас один раздел FAQ на все C/C++ разделы из-за сравнительно малой активности пополнения. Как только активность увеличится, вполне вероятно, что С++ WinAPI обзаведется собственным подразделом

            Цитата neokoder @
            А вот это не понял, что подразумевается под стандартные возможности платформы? К примеру DecviceIOControl - это стандартные возможности?

            Подразумевается не использование сторонних компонентов и библиотек, таких, как libusb, fmod, tinyxml и т.п., потому как это отдельные чужие проекты

            Добавлено
            Цитата neokoder @
            Сейчас посмотрел C/C++ FAQ]Раздел FAQ там вроде тему можно самому создавать. Так что я постю туда IsFlasDrive с описанием?

            Нет, темы в этот раздел могут добавлять только модераторы. Ты создаешь тему или пост в этом разделе, а я переношу в раздел FAQ
            char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
            for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;


            user posted image Чат Исходников в СкайпеНе тормози, форум теперь здесь!Чат Исходников в Дискорде
              Цитата B.V. @
              Подразумевается не использование сторонних компонентов и библиотек, таких, как libusb, fmod, tinyxml и т.п.

              Ясно. Т.е. без дополнительных либ, токмо чистый WinAPI и Standard C/C++ Libraries. Ok.

              Добавлено
              Цитата B.V. @
              Нет, темы в этот раздел могут добавлять только модераторы. Ты создаешь тему или пост в этом разделе, а я переношу в раздел FAQ

              в этом разделе имеется ввиду "Системное программирование"?
              Сообщение отредактировано: neokoder -
              Не ошибается лишь тот кто ничего не делает.
                Цитата neokoder @
                в этом разделе имеется ввиду "Системное программирование"?

                Да
                char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
                for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;


                user posted image Чат Исходников в СкайпеНе тормози, форум теперь здесь!Чат Исходников в Дискорде
                  Цитата B.V. @
                  Да

                  Как озаглавливать тему?
                  Не ошибается лишь тот кто ничего не делает.
                    На твое усмотрение. Если название будет соответствовать содержанию, его и оставлю
                    char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
                    for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;


                    user posted image Чат Исходников в СкайпеНе тормози, форум теперь здесь!Чат Исходников в Дискорде
                      В общем трендец! Не вижу больше никакого смысла тратить время на наполнение FAQ, после своих 2-х попыток.
                      Мне просто смешно, когда некоторые здешние спецы(вроде Dem_max и Мальчиша), вместо того, чтобы обращать внимание на функционал парят себе мозг синтаксисом. Откройте тогда FAQ по синтаксису C/C++ и занимайтесь там этим вдвоём на здоровье :) .

                      p.s. хотел было написать следующий FAQ по определению серийника жесткого диска(вопросы такие возникали здесь) в 2-х вариантах, с помощью WMI и DeviceIOControl, но теперь уже точно не буду. А то пришьют :crazy: ещё неправильное использование стиля(есть такой? :) ) С/C++ и будут мне усердно доказывать как правильно писать программы :). Да ну его нафиг такие приколы! :no:
                      Сообщение отредактировано: neokoder -
                      Не ошибается лишь тот кто ничего не делает.
                        Ребята, давайте поактивнее как-то. У вас же есть свои заготовки, можете обработать и выложить, и получить за это DGM'ку
                        char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
                        for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;


                        user posted image Чат Исходников в СкайпеНе тормози, форум теперь здесь!Чат Исходников в Дискорде
                          У меня есть исходник, который писал для друга, чтоб показать разные фичи.
                          Возбудился после его фразы: "так каждый дурак сможет, а вот без стандартной библиотеки, на чистом C и windows api."

                          Программа бесполезная. Делает окошко на windows api и изображает оживление.

                          Но можно посмотреть следующее:

                          0. Компиляция командными файлами.

                          1. отключение стандартных библиотек и функция WinMainCRTStartup.

                          2. Создание главного немодального окна CreateWindowEx, RegisterClassEx.

                          3. Добавление в окно дочерних контролов. WC_STATIC, WC_BUTTON.

                          4. Загрузка внешней библиотеки LoadLibrary, FreeLibrary. и Добавление дочернего контрола richedit.

                          5. Работа с кучей процесса HeapAlloc, HeapFree.

                          6. создание таблици строк в ресурсах и загрузка строки LoadString.
                          Особенно интересна сама компиляция ресурсов под ms vs 2012

                          7. Вывод сообщения об ошибке, т.е. получение текста FormatMessage

                          8. Клавишная навигация по окну. IsDialogMessage, DefDlgProc.

                          9. Обработка акселераторов TranslateAccelerator.

                          Ну и по мелочи немного.

                          Оно такое интересно, или нафиг?

                          Прикладываю во вложении. Код надо бы подчистить. Да и приму замечания. Пишите в личку.

                          Прикреплённый файлПрикреплённый файлumnik.zip (16 Кбайт, скачиваний: 206)

                          Думаю, что в таком виде не очень годится. Если интересно постораюсь оформить.

                          p.s. Друг положил его на дальнюю полочку и сказал, что обязательно посмотрит, когда освободится от текущих дел. А я развлекаюсь наворачиванием.

                          p.p.s. Возможно буду из этого "шаблона" разворачивать боевой код. Может чатик сделаю. Или чего-нибудь по круче.
                          Сообщение отредактировано: Eric-S -
                          Человек должен делать то, что может сделать только он, всё остальное должна делать машина!
                            Цитата Eric-S @
                            У меня есть исходник, который писал для друга, чтоб показать разные фичи.

                            В этом примере много всего ненужного или малоинтересного, к тому же, для ФАКа важен не только пример, но и пояснения принципа работы, или хотя бы, достаточно наглядный код

                            Цитата Eric-S @
                            1. отключение стандартных библиотек и функция WinMainCRTStartup.

                            В принципе, вопрос интересный, но не популярный

                            Цитата Eric-S @
                            7. Вывод сообщения об ошибке, т.е. получение текста FormatMessage

                            А вот это может быть интересно в качестве отдельной мини-статьи. Туда же, было бы очень желательно добавить пример DbgHelp-API с выводом не только подробного описания ошибки, но и стека, загруженных модулей и информации о каждом модуле в отдельности (версия, разрядность и т.д.)
                            char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
                            for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;


                            user posted image Чат Исходников в СкайпеНе тормози, форум теперь здесь!Чат Исходников в Дискорде
                              B.V., вроде бы не часто про это спрашивают, но, ИМХО, будет полезно иметь такую функцию в исходниках. Как считаете?
                              Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт.

                              "Путь глупого правилен в его глазах, но кто слушается совета, тот мудр." (Соломон)

                              "Из слов всевозможных, что сходят с пера,
                              грустней быть не может, чем «если б тогда…»" (Джон Гринлиф Уитьер)

                              Мир вокруг нас
                                Цитата B.V. @
                                В этом примере много всего ненужного или малоинтересного, к тому же, для ФАКа важен не только пример, но и пояснения принципа работы, или хотя бы, достаточно наглядный код


                                Согласен. Много.. С другой стороны простое "hello, world'" или точнее "mi first window неинтересно и легко ищется. А вот что дальше, не всегда и понятно. Тестовый код пишется так, а приближаясь к боевому, уже совсем иначе. Та же обработка ошибок, меня очень напрягла.

                                У меня есть. Предложил к рассмотрению, в качестве исходной точки. Описать и объяснить могу почти всё. Но вот нужно ли кому-то?

                                Цитата Eric-S @
                                1. отключение стандартных библиотек и функция WinMainCRTStartup.


                                Цитата B.V. @
                                В принципе, вопрос интересный, но не популярный


                                С этого всё и началось и это была как раз основная фича всей затеи. Требовался проект без стандартной библиотеки, причом работающий.

                                Дело было 1 апреля, и друг, пытался меня развести, что главной функцией является StartFunction. А не какая-то MainCRTStartup Даже кинул мне упоротый проект, якобы доказывающий его правоту. И что со стандартной библиотекой каждый дурак может.

                                Я же кинулся доказывать, что он не прав. До сих пор не понимаю, это была попытка развода или он гнал на полном серьёзе.

                                Цитата Eric-S @
                                7. Вывод сообщения об ошибке, т.е. получение текста FormatMessage


                                Цитата B.V. @
                                А вот это может быть интересно в качестве отдельной мини-статьи. Туда же, было бы очень желательно добавить пример DbgHelp-API с выводом не только подробного описания ошибки, но и стека, загруженных модулей и информации о каждом модуле в отдельности (версия, разрядность и т.д.)


                                Ха-эм. У меня это всё есть но уже на C++.
                                symbols - загрузка символьной информации, трансформация адреса функции в символьное имя.
                                stack_trace - трассировка стека и возврат его строкового представления
                                messages - локализация сообщений на основе функции FormatMessage
                                Плюс некоторые сервисы, чтоб по ходу исполнения выводить диагностические сообщения об ошибках.

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

                                Но я думаю, что такое надо разбирать по отдельности.
                                1. Локализация и компиляция сообщений .
                                2. Трассировка и распечатка стека.
                                3. перехват исключений и Диагностическое окно с информацией об ошибке.

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

                                Если же упрощать, то конечно можно накалякать чего-нибудь простенькое на чистом си. Но вот в боевом коде, я такого не использовал и не знаю, что ожидать. Будет круто, но бесполезно.
                                Человек должен делать то, что может сделать только он, всё остальное должна делать машина!
                                  Цитата artsb @
                                  B.V., вроде бы не часто про это спрашивают, но, ИМХО, будет полезно иметь такую функцию в исходниках. Как считаете?

                                  Я, честно говоря, не очень понял, чем она отличается от LoadString.. В отличие от последней не смотрит языковой идентификатор?

                                  Цитата Eric-S @
                                  У меня это всё есть но уже на C++.

                                  Собственно, на C++ оно было бы и предпочтительнее :) И да, было бы неплохо так же пройтись немного по C++ Exceptions. Подробно писать в рамках одной статьи не вижу смысла, лучше коротко суть, а при желании, подробности вынести в отдельную статью

                                  Цитата Eric-S @
                                  Правда вот не помню куда потерял класс получающий информацию о модуле. Но что-то такое писал. Получение названия, версии, описания, языка ресурсов, имени разработчика...

                                  Я не совсем это имел ввиду, это уже чтение ресурсов, использование GetFileVersionInfo и сопутствующих
                                  Я же имел ввиду чтение инфы из PE-заголовка посредством DbgHelp

                                  Цитата Eric-S @
                                  Но я думаю, что такое надо разбирать по отдельности.
                                  1. Локализация и компиляция сообщений .
                                  2. Трассировка и распечатка стека.
                                  3. перехват исключений и Диагностическое окно с информацией об ошибке.

                                  Согласен, каждая тема тянет на отдельную статью в ФАК, но было бы так же неплохо иметь обобщенный пример создания отчета
                                  char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
                                  for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;


                                  user posted image Чат Исходников в СкайпеНе тормози, форум теперь здесь!Чат Исходников в Дискорде
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:
                                  Страницы: (3) 1 [2] 3  все


                                  Рейтинг@Mail.ru
                                  [ Script Execution time: 0,2641 ]   [ 22 queries used ]   [ Generated: 17.09.19, 11:13 GMT ]