Fealeron
Интересующийся
Offline
|
|
« : 16-07-2010 12:01 » |
|
Добрый день! Вопрос: предложите ТЗ программы на С++ для новичка. Направление: прикладное программирование, если я правильно понимаю смысл этого.
А теперь подробней: изучаю С++, программированием интересовался давно, но только сейчас решил заняться этим серьёзно. После нескольких месяцев изучения основ С++ хочу сделать что-то серьёзное, что бы было, если и не аргументом в мою пользу на собеседовании, то принесло бы мне новые актуальные знания.
Сложность не знаю как лучше обозначить. Если временными затратами, то готов уделить несколько месяцев на данный проект, занимаясь им по 4-8 часов в день.
Пока что в планах изучение С++, так же интересна java, но она пока что только в планах как дополнительный путь развития. Возможно вы подскажете какое-то более интересное направление.
|
|
|
Записан
|
|
|
|
Dale
|
|
« Ответ #1 : 16-07-2010 12:08 » |
|
Нужно непременно ТЗ, или достаточно просто идеи?
Разработка полноценного ТЗ - довольно длительный и трудоемкий процесс, поглощающий ощутимую часть общего бюджета проекта.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
Fealeron
Интересующийся
Offline
|
|
« Ответ #2 : 16-07-2010 12:10 » |
|
Нужно непременно ТЗ, или достаточно просто идеи?
Разработка полноценного ТЗ - довольно длительный и трудоемкий процесс, поглощающий ощутимую часть общего бюджета проекта.
Да... я погорячился, идея с основными требованиями/характеристиками программы.
|
|
|
Записан
|
|
|
|
Вад
|
|
« Ответ #3 : 16-07-2010 12:24 » |
|
Fealeron, а что именно ты хочешь делать? В смысле, язык C++ в известной степени универсальный, на нём можно писать серверные, десктопные, встраиваемые приложения... Поэтому попробуй подумать, какое направление тебе более интересно: скажем, писать user-friendly десктопные утилиты для разных мелочей, обрабатывать какие-то данные, что-то ещё?
|
|
|
Записан
|
|
|
|
Dale
|
|
« Ответ #4 : 16-07-2010 12:34 » |
|
Да... я погорячился, идея с основными требованиями/характеристиками программы. Сбор требований - тоже довольно продолжительная и трудоемкая работа. Пожалуй, потруднее кодирования.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
Fealeron
Интересующийся
Offline
|
|
« Ответ #5 : 16-07-2010 12:51 » |
|
Fealeron, а что именно ты хочешь делать? В смысле, язык C++ в известной степени универсальный, на нём можно писать серверные, десктопные, встраиваемые приложения... Поэтому попробуй подумать, какое направление тебе более интересно: скажем, писать user-friendly десктопные утилиты для разных мелочей, обрабатывать какие-то данные, что-то ещё?
Так подумав, могу сказать, что не хочется сильно увлекаться какой-то графикой. Интересны программы с каким-то простым визуальным интерфейсом или вообще без него, более интересна обработка каких-то данных, обмен информацией, контроль или управление чем-то. Слишком обобщенно, но пока что не могу сформулировать точнее. Сбор требований - тоже довольно продолжительная и трудоемкая работа. Пожалуй, потруднее кодирования.
Опять не так сказал. Идея + требования на пару предложений, я имею ввиду, не могу привести точные примеры из области программирования, разве что из моей специальности: Система управления чего-то там должна выдерживать нагрузку Х, скорость работы У. Как-то так.
|
|
|
Записан
|
|
|
|
Fealeron
Интересующийся
Offline
|
|
« Ответ #6 : 16-07-2010 12:54 » |
|
Вспомнил про ИИ, тоже, интересное направление.
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #7 : 16-07-2010 12:56 » |
|
XMLEditor, если окажется слишком лёгким, можно в будущем "нагрузить": XPath... XSLT... XSL-FO (эт я конечно уже хватил, но почему бы и нет )
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Fealeron
Интересующийся
Offline
|
|
« Ответ #8 : 16-07-2010 13:34 » |
|
XMLEditor, если окажется слишком лёгким, можно в будущем "нагрузить": XPath... XSLT... XSL-FO (эт я конечно уже хватил, но почему бы и нет ) Интересно, правда, мало представляю всю глубину этого. Может быть кто-то предложит что-то более интересное для меня, если нет, то возьмусь за такой редактор.
|
|
|
Записан
|
|
|
|
Dale
|
|
« Ответ #9 : 16-07-2010 21:11 » |
|
Вспомнил про ИИ, тоже, интересное направление. Для начала это явный перебор. На этой теме немало научных школ обломалось. Могу предложить идею программы, на которую сам все никак не раскачаюсь. Я уже много лет собираю электронную библиотеку (тексты и сканы книг). Периодически перебираю ее, раскладываю книги по папкам, переименовываю файлы (в файлохранилищах им частенько дают невразумительные имена вроде a12345.pdf, по которому нереально распознать нужную книгу). В настоящий момент у меня 6 экземпляров библиотеки (два домашних компьютера, ноутбук, рабочий компьютер, карманный компьютер, флешка). Само собой разумеется, что все они уже давно разные (на одном компьютере скачал новые книги, на другом переименовал, на третьем - перенес в другие папки). Если обзаведусь еще смартфоном и е-буком, ситуация станет еще хуже. Нужна программа синхронизации библиотек - сравнение, отчет о различиях между ними, копирование недостающих книг, переименование и перенос в другие папки при необходимости. По возможности хотелось бы, чтобы она задавала минимум лишних вопросов, действовала самостоятельно, но при этом давала предсказуемый результат. Насчет интерфейса не определился, но хотелось бы, чтобы программа была кроссплатформенной, т.е. работала как минимум под Windows и Linux, работа под Windows Mobile приветствуется. Полагаю, такая программа многим пригодилась бы, ведь помимо книг, такие же точно проблемы возникают с коллекциями фильмов, музыки и т.п.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
Fealeron
Интересующийся
Offline
|
|
« Ответ #10 : 16-07-2010 22:15 » |
|
Могу предложить идею программы, на которую сам все никак не раскачаюсь. ... Идея похожа с тем, о чём я и сам думал, но не собрался (программа сортировки музыки). В общем, решено. Идея нравиться, буду делать, пока что только для текстовых файлов. Спасибо за идеи.
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #11 : 17-07-2010 04:41 » |
|
Dale, Под Linux такой проблемой занимается rsync насколько я знаю, сам просто не пользовался ею. Наверно также можно найти портированный вариант и под винду. Хотя для практики это довольно хорошое задание . Кстати Fealeron, там будет не только текст Также и графика, так как многие книги в DJVU формате идут в сканах.
|
|
« Последнее редактирование: 17-07-2010 04:46 от Finch »
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Fealeron
Интересующийся
Offline
|
|
« Ответ #12 : 17-07-2010 06:04 » |
|
Dale, Под Linux такой проблемой занимается rsync насколько я знаю, сам просто не пользовался ею. Наверно также можно найти портированный вариант и под винду. Хотя для практики это довольно хорошое задание . Кстати Fealeron, там будет не только текст Также и графика, так как многие книги в DJVU формате идут в сканах. Про то, что не только текст, я знаю, и DJVU и PDF различные, в которые могли запихнуть сканы, в общем, будет чем заняться расширяя программу под разные расширения и разное содержание файлов. Если кто-то предложит что-то ещё, то я буду только рад, поставлю в очередь следующими пунктами работы.
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #13 : 17-07-2010 06:09 » |
|
Fealeron, Чтоб тебе не зарываться так глубоко в форматы. Смотри в сторону Хэш функций. Синхронизаторы как правило дальше этого не зарываются.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Fealeron
Интересующийся
Offline
|
|
« Ответ #14 : 17-07-2010 06:23 » |
|
Finch Спасибо, постараюсь остаться в рамках разумного. Правда разбираться с форматами я хотел для того, что бы попробовать их переименовать в нормальные названия.
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #15 : 17-07-2010 06:39 » |
|
Fealeron, Основной принцип *nix программ "Программа должна делать одно действо. Но должна делать его очень хорошо". Так что, тебе в начале нужно научить сихронизировать. А потом уже отдельная программа будет переименовывать. Отдельная программа, которая будет создавать каталоги поиска и так далее. Тебе только затем останется жонглировать этими програмками, чтоб получить ркзультаты. Такие, что не предусмотрено в начале Чтоб синхронизировать. У тебя есть 4 параметра. 1) Директория, где хранятся синхронизируемые файлы. (кстати можно сделать возможность рекурсивной и не рекурсивной синхронизации. 2) Имя файла 2) Дата последней записи в файл 3) Контрольная сумма (MD5, CRC32 ...) Если 2 и 4 параметры совпадают, то можно считать, что файлы идентичны.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #16 : 17-07-2010 06:41 » |
|
Можно Qt воспользоваться - будет кроссплатформа + там уже есть удобные классы для работы с каталогами и файловой системой
|
|
|
Записан
|
|
|
|
Fealeron
Интересующийся
Offline
|
|
« Ответ #17 : 17-07-2010 06:59 » |
|
Finch Значит, в начале буду делать синхронизацию.
Алексей1153++ Да, я собирался использовать Qt, но, пока что, только для построения интерфейса. И с этим буду разбираться.
|
|
« Последнее редактирование: 18-07-2010 08:36 от Fealeron »
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #18 : 17-07-2010 07:38 » |
|
Fealeron, на интерфейс пока забей (ты упомянул, что пока с графикой не хочешь работать). Сделай классы-затычки, где будут методы, имитирующие работу пользователя с программой и работу программы с графикой
|
|
|
Записан
|
|
|
|
Fealeron
Интересующийся
Offline
|
|
« Ответ #19 : 17-07-2010 08:25 » |
|
Алексей1153++ Я собирался вначале сделать это как консольное приложение и потом уже добавить графический интерфейс.
|
|
|
Записан
|
|
|
|
Dale
|
|
« Ответ #20 : 17-07-2010 17:28 » |
|
Я собирался вначале сделать это как консольное приложение и потом уже добавить графический интерфейс. Весьма разумно с самого начала проекта придерживаться шаблона проектирования MVC или MVP, чтобы отделить предметную часть программы от интерфейсной. Тогда относительно просто будет менять "скины", не затрагивая остальное. А наличие интерфейса командной строки позволит вызывать программу из планировщика заданий, регулярно производя автоматическую синхронизацию. Если есть реальное желание взяться за этот проект, постараюсь со своей стороны оказать посильную помощь.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
Dale
|
|
« Ответ #21 : 17-07-2010 17:41 » |
|
Dale, Под Linux такой проблемой занимается rsync насколько я знаю, сам просто не пользовался ею. Наверно также можно найти портированный вариант и под винду. Я тоже не пользовался, только почитал описание, а также закачал несколько аналогичных программ под Windows. Оказалось, что они решают близкую, но все же другую задачу: отслеживать изменения в документах и обеспечивать, чтобы во всех синхронизированных каталогах были самые свежие версии документов. Что-то вроде примитивной системы управления версиями без сервера. В нашем случае файлы остаются неизменными, зато мы можем переименовывать их и/или перемещать в другие каталоги. Программы синхронизации, которые я пока попробовал, отслеживать такие изменения не умеют.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
Fealeron
Интересующийся
Offline
|
|
« Ответ #22 : 18-07-2010 08:35 » |
|
Dale Да, я решил выполнить этот проект. Пока что собираю информацию которая будет полезной.
|
|
|
Записан
|
|
|
|
Dale
|
|
« Ответ #23 : 18-07-2010 13:41 » |
|
Dale Да, я решил выполнить этот проект. Пока что собираю информацию которая будет полезной. Замечательно. Тогда очень рекомендую начать с этого: http://readyset.tigris.org/nonav/templates/index.htmlИ вообще ReadySET - весьма полезная штука, особенно для тех, кто переходит от упражнений из учебника к реальным проектам.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
Fealeron
Интересующийся
Offline
|
|
« Ответ #24 : 19-07-2010 04:28 » |
|
Спасибо, сегодня посмотрю.
|
|
|
Записан
|
|
|
|
Fealeron
Интересующийся
Offline
|
|
« Ответ #25 : 19-07-2010 18:41 » |
|
Почитал немного по этой ссылке... Вот на что она меня подтолкнула сейчас. Попытался составить некоторое подобие задания на разработку. Пока что из того, что понимаю, самым непонятным для меня является обеспечение синхронизации между устройствами. Правда, и задача пере до мной такая ещё ни разу не стояла. Решил, сначала реализовать синхронизацию между разными директориями на одном компьютере, как первую ступень. Поиск копий предполагаю сделать следующим образом: поиск только по названиям (не уверен, что это нужно, но пока что будет), поиск по контрольной сумме файла. Ещё, на счёт синхронизации устройства: посмотрев информацию о rsync (о которой говорил выше Finch), возможно попробую использовать эту технологию в данном проекте (GPL). Но по этому поводу я ещё ничего не смотрел. Вот, часть моих мыслей на данном этапе. С удовольствием выслушаю конструктивную критику.
|
|
« Последнее редактирование: 19-07-2010 18:43 от Fealeron »
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #26 : 19-07-2010 18:49 » |
|
Fealeron, GPL это не технология , а лицензия.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Fealeron
Интересующийся
Offline
|
|
« Ответ #27 : 19-07-2010 18:56 » |
|
Fealeron, GPL это не технология , а лицензия. Кхм, я это знаю, я имел ввиду, что rsync распространяется под GPL лицензией и исходный код доступен на сайте. Да и технология - не самое правильное слово, наверное. Лучше сказать алгоритм или как-то ещё...
|
|
« Последнее редактирование: 19-07-2010 19:01 от Fealeron »
|
Записан
|
|
|
|
Dale
|
|
« Ответ #28 : 19-07-2010 19:01 » |
|
Пока ... самым непонятным для меня является обеспечение синхронизации между устройствами. ... Решил сначала реализовать синхронизацию между разными директориями на одном компьютере, как первую ступень. На самом деле, если этот этап получится, то задачу можно считать решенной. Ведь и сетевой диск, и флешка, и карманный компьютер для программы выглядят так же, как отдельный диск с файловой структурой. Если программа умеет синхронизировать две директории, она умеет практически все, что мы от нее хотим. Поиск копий предполагаю сделать следующим образом: поиск только по названиям (не уверен, что это нужно, но пока что будет), поиск по контрольной сумме файла. От поиска по названиям, скорее всего, особой пользы не будет. Вот пример: понадобилась книга, авторы Хоровиц, Хилл, называется "Искусство схемотехники". На файлообменнике она лежит под названием hh5.djvu (видимо, логика такая: Хоровиц-Хилл, 5-е издание). Если сразу не переименовать, по такому названию ее в жизни не найти. А большинство файлов с книгами и вовсе называется вроде a12345.zip, понимай как хочешь. А вот контрольная сумма - вещь полезная, позволит сопоставить скан одной и той же книги под разными названиями.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
Fealeron
Интересующийся
Offline
|
|
« Ответ #29 : 19-07-2010 19:14 » |
|
На самом деле, если этот этап получится, то задачу можно считать решенной. Ведь и сетевой диск, и флешка, и карманный компьютер для программы выглядят так же, как отдельный диск с файловой структурой. Если программа умеет синхронизировать две директории, она умеет практически все, что мы от нее хотим. Вот именно, практически всё, как реализовать синхронизацию различных директорий, будь то флешка или доступная для работы директория на другом компьютере, я представляю, не вижу тут проблем. Другое дело, как именно будут синхронизироваться папки на разных устройствах. Будет ли происходить обмен данными между двумя клиентами запущенными на разных устройствах или одна запущенная программа будет иметь прямой доступ к директориям на разных устройствах. Хотя, насколько я понимаю, то будет один клиент, папка на компьютере одном и сетевой диск/папка с общим доступом на другом компьютере. От поиска по названиям, скорее всего, особой пользы не будет. Вот пример: понадобилась книга, авторы Хоровиц, Хилл, называется "Искусство схемотехники". На файлообменнике она лежит под названием hh5.djvu (видимо, логика такая: Хоровиц-Хилл, 5-е издание). Если сразу не переименовать, по такому названию ее в жизни не найти. А большинство файлов с книгами и вовсе называется вроде a12345.zip, понимай как хочешь. Согласен, но думаю оставить такую опцию в настройках, как самую простую/быструю, может быть кому-то и понадобиться... А вот контрольная сумма - вещь полезная, позволит сопоставить скан одной и той же книги под разными названиями.
И я такого мнения.
|
|
« Последнее редактирование: 19-07-2010 19:16 от Fealeron »
|
Записан
|
|
|
|
|