21

Просмотрщик постов пикабушников (версия 1.0, MVP)

* - MVP - minimum viable product, минимальный работоспособный продукт


Привет, Пикабу!

Меня зовут Сергей, мне 25 и я программист (хлоп-хлоп).

Летом 2019 года решил побаловаться каким-нибудь полезным пет-проектом. Итак, представляю вам программку Pikabu Profile Posts Viewer!

С ее помощью можно одним махом просмотреть все посты пользователя.


А ТЕПЕРЬ ПО ПОРЯДКУ:

0) Обязательно устанавливаем .NET Framework 4.6.2 — без него программа не запустится.

По умолчанию уже установлен в Windows 10 (v1607 и далее).

Пользователям Windows 7, 8.1, 10 (v1507-v1511) надо скачать его с сайта Майкрософта — https://dotnet.microsoft.com/download/dotnet-framework/thank....

Windows 8 в пролете, простите :(.

1) Запускаем программу.

Сверху — поле для ввода имени интересующего юзера, кнопка поиска постов в профиле, галочка укорачивателя ссылок (см. далее), кнопка сохранения найденного в текстовый файл Блокнота.

Ниже — строка статуса, показывающая сейчас, что программа готова к работе.

В правом углу — кнопка «О программе».

Ну и остальное место — табличка, куда будут выводиться посты.

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

2) Вводим имя пользователя. Если ввести меньше 5 символов, выдаст ошибку, т.к. таких коротких ников на Пикабу нет.

3) Нажимаем кнопку Найти посты.

Программа отправится на поиски, визуально «зависнув» на некоторое время. Сколько — зависит от кол-ва постов в искомом профиле и скорости вашего интернета. У меня на ADSL 10Мб/с понадобилось 15-75 секунд. На монстрах вроде IProcione не проверял :).

Пока она «виснет», можете заняться чем-нибудь другим.

На галочку пока не обращаем внимания.

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

3) Программа загрузит посты и отобразит их списком.

Строка статуса показывает, сколько всего постов имеется и на скольких страницах, а также, сколько из них удалось загрузить (это не одно и то же — если вдруг пропадет свет и т.п., отобразится только то, что успели выхватить, да и то не всегда).

Если в поле рейтинга стоит «DELETED», значит, пост был мягко удален (в браузере отображается значок корзины).

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

4) Нажимаем кнопку сохранения.

Если удалось сохранить, строка статуса сообщит об этом.

В папке, куда вы положили файл программы, появится папка "Pikabu userprofiles", а в ней — текстовые файлы (имена которых соответствуют именам пользователей).

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

5) Программа сохранит данные в текстовые файлы.

Данные сохраняются таким же списком, только вместо колонок — табуляция. Кроме того, в начале файла еще раз указывается имя пользователя, а в конце — дата последней «выхватки» данных (понятно, что легко правится вручную, но сейчас не об этом).

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

6) Можете делать теперь с ними что угодно — например, быстро перейти к посту годичной давности, просто скопировав ссылку и вставив в браузер, а не мотая профиль пользователя до Х-й страницы.


НЮАНСЫ:

1) Колонки в таблице можно менять местами, но ТОЛЬКО после закачки данных (иначе — некорректно отобразятся).

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

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

2) При нажатии на заголовок колонки списка данные отсортируются по возрастанию/убыванию.

Это может занять время почти столько же, а то и больше, чем потрачено на скачку постов. Связано с временной сложностью алгоритма сортировки.

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

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

Недочет: поскольку все данные в списке компьютер видит как текст, то все колонки сортируются как текст — посимвольно, в т.ч. и № п/п и рейтинг (числа по сути) (см. рис.). Подобное встречается и у других программ, вроде Total Commander, но все же бывает неудобно. Надеюсь поправить со временем.

Частичный обход недочета: поскольку дата у всех постов разная, то сортировка по дате автоматически = сортировке по порядку (№ п/п).

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

3) Галочка укорачивания ссылок убирает текст — ведь он может быть любым — из ссылок на посты, оставляя только номер истории (см. рис.).

Нажимать ее следует ПЕРЕД скачкой постов.

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

4) Добавлена простенькая поддержка исключений, например, если отвалился инет, или страница не найдена.


СКАЧАТЬ: http://www.mediafire.com/file/oii09nxdecfkldk (zip-архив, 161 Кб, в распакованном виде — 628 Кб)


ТЕХНИЧЕСКИЕ ПОДРОБНОСТИ ДЛЯ ПРОГРАММИСТОВ:

1) Написано на языке программирования С# с использованием библиотеки HtmlAgilityPack в среде разработки Microsoft Visual Studio Professional 2017.

2) Версия .NET framework – 4.6.2.

3) Исходный код на Github (без папки packages): https://github.com/serhiy1994/PikabuProfilePostsViewer . Можете форкнуть, тем более, что в коде остались некоторые логические дыры в закомменченных строках. Потом смерджу, если хотите.

4) Программа работает медленновато еще и потому, что я не умею в асинхронное программирование :(.


БАГ-РЕПОРТЫ И ЗАМЕЧАНИЯ: оставляйте под соответствующим комментом. Постараюсь пофиксить и обновить релиз.


БЛАГОДАРНОСТИ:

1) Двум десяткам пикабушников, чьи интересные посты заставили меня что-то придумать, чтоб их оперативно посмотреть (полный список выложу позже);

2) персонально @iranaut и @Malica за их существование в качестве пикабушников(-иц);

3) прочий народ — коллеги-программисты, чьи советы мне помогли (указаны в окне About).


Приятного пользования!

Найдены дубликаты

+11

2) Вводим имя пользователя. Если ввести меньше 5 символов, выдаст ошибку, т.к. таких коротких ников на Пикабу нет.

Даладно?!

+7

Однако, испытываю двоякие чувства. Автору 25 лет. Программированием зарабатывает на жизнь. Но (в посте упомянуты оговорки, но...) - не может в многопоточное программирование, которое на C# реализуется левой пяткой. "Программа "виснет" секунд на 25" - двадцать первый век, что мешает почитать несколько примеров, и убрать всю обработку в не-GUI поток? А оттуда - через Invoke дёргать обновление какого-нибудь прогресс-бара?


Объснить себе могу это только одним - автор на позиции джуниора, и не увлекается самообразованием, хотя учебного материала - тонны.


Короче, поддержу так: ещё много работы над приложением надо сделать до того, как выкладывать. Юзер нынче избалованный ;)

раскрыть ветку 17
+5

зашел на гатихаб проекта, ТС забыл тег "жесть" поставить

раскрыть ветку 3
0

а можно конкретней? (спокойным любознательным тоном)

раскрыть ветку 2
+1
1. Зачем тут многопоточность?
2. Прогресс при многопоточности дёргать не очень.
раскрыть ветку 6
-1

1. Затем, что при получении информации с URL в основном потоке - GUI фризится, это не айс;

2. Очень даже очень, есть штатные методы синхронизаци с GUI-потоком, тот же Invoke.


З.Ы. Вы программист?

раскрыть ветку 5
-1

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

раскрыть ветку 5
0

значит, я прав хотя бы в одном - вы на позиции джуниора, и задачи перед вами стоят самые простые. Потому как я уже лет 10 (минимум) как не припомню приложения, которое довольствовалось бы только одним GUI-потоком в своей работе. Тем более - у вас есть хороший стимул самообразоваться и почитать про то, как просто и легко организуется многопоточность средствами .NET.

раскрыть ветку 4
+9

А не легче перейти в профиль целевого юзера?

раскрыть ветку 4
+2

А зачем?? ))

раскрыть ветку 3
+4
Иллюстрация к комментарию
0
Иллюстрация к комментарию
раскрыть ветку 1
+6

Ну, на домашнем компе, фиг с ним...

А на рабочем ноуте с Хрюшей? А на рабочем компе с Убунтой?

Но все-равно не понял, нафига мне это надо?

раскрыть ветку 8
+3

На убунте должно норм работать через моно.

раскрыть ветку 3
+2

вот нет у меня моно, не было необходимости, а вы предлагаете монстра 200-300мб ставить ради бесполезной утилиты?

раскрыть ветку 2
0
А на рабочем ноуте с Хрюшей? А на рабочем компе с Убунтой?

Не совсем понял, что вы хотите спросить. ХР и Юбунту не поддерживает.

раскрыть ветку 3
+1

Более распространённый целевой фреймворк выбрать религия не позволяет?

раскрыть ветку 2
+3

Кто это, Серёжа?

Иллюстрация к комментарию
раскрыть ветку 3
0

комп, на котором я все это программировал - бабушкин)

раскрыть ветку 2
+1

А можно на русский переключиться? А то я с французским не дружу

раскрыть ветку 1
+5
В мире, который перешёл на облачнее сервисы и веб-приложения самое время писать решение требующие ставить не только саму программу, но и Фреймворк.
Это яркий пример антиработы программиста. Потрачены часы, а результат вносит во вселенную больше бардака, чем было до его появления
раскрыть ветку 5
+2

заводы и крупные предприятия пользуются не веб-приложениями, а приложениями с простейшим гуём на уровне qt - чтобы быстро работало на любом чайнике. Любое веб-приложение будет работать медленней, чем делающее то же, но на нативном языке.
Но тут скорее ясли и первые шаги, особенно учитывая SharpDeveloper..

раскрыть ветку 4
-2

При чем тут заводы к Пикабу?

Автор запилил бесполезный продукт на самой неудобной для ЦА платформе.

Хочешь учиться - решай логические задачи. Парсить чужой контент и лепить выборки это уровень любого software-trainee.


Любое веб-приложение будет работать медленней, чем делающее то же, но на нативном языке.

А вот тут уже вы сами плывете =)

1. веб-приложение подразумевает клиент-серверный подход. Считать на клинте сейчас дурной тон, максимум хранить часть данных в локал сторадже.

2. что такое нативный язык? Пусть Реакт будет фреймврком, тогда JS - нативный язык в браузере пользователя.

3. все завист от задачи и методов решения. Задаче автора даже приложение не надо, достаточно срипта на пыхе

раскрыть ветку 3
+3

Нахуя?

раскрыть ветку 5
+3

@serhiy1994 прикрутите автоматическую возможность минусования, что уж там

раскрыть ветку 3
0

по одному или всех постов сразу?)

раскрыть ветку 2
+1

У нас тут не бабушкины компы, а даже SSD есть

+2
Программа отправится на поиски, визуально «зависнув» на некоторое время

Погромист Серёжа... Прикрути прогрессбар или хотя бы анимацию какую.

раскрыть ветку 11
+2

Программист Сережа не осилил многопоточность

раскрыть ветку 10
0
Торопился шедевр релизнуть
раскрыть ветку 4
-1
А зачем тут многопоточность?
раскрыть ветку 4
+1
Товарищ Майор одобряет!
+1
А в чем его практическая польза? Это все можно делать и без нее.
+1
Развивайся, молодец, но зачем это надо не особо понятно, если можно зайти в профиль, а там уже по любым фильтрам поискать что надо.
раскрыть ветку 1
0

лично для меня - скорость работы)

+1
Ждём мобильную оффлай версию
+1

Меня зовут Сергей, мне 25 и я программист
хм, а у меня ты помечен как

Иллюстрация к комментарию
раскрыть ветку 1
0

логично - программерством зарабатываю на жизнь, а приправы - хобби)

-2

Коммент для баг-репортов

раскрыть ветку 3
+3

1) имена короче 5 символов есть. Как  минимум, 0x00
2) асинхронность не ускорит работу, а просто сделает так, чтобы интерфейс не "зависал". Загугли Task

await Task.Run(()=>{

//опреация

});
Для ускорения нужно параллелить, например вместо foreach использовать Parallel.ForEach


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

раскрыть ветку 1
+1

Про имена подтверждаю

+1
Четыре символа
Иллюстрация к комментарию
-2

Я у мамы программист..  )))

раскрыть ветку 1
+2

Я у бабушки программист ))

Иллюстрация к комментарию
Похожие посты
37

Что находится между идеей и кодом? Обзор 14 диаграмм UML

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

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


UML, как мы знаем, является стандартизированным языком моделирования, состоящим из интегрированного набора диаграмм, разработанных, чтобы помочь разработчикам систем и программного обеспечения в определении, визуализации, конструировании и документировании артефактов программных систем, а также, к примеру, для бизнес-моделирования.


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


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


Для тех, кому лень читать и кто предпочитает смотреть и слушать: https://youtu.be/0I9aIP5gKCg


Основные цели дизайна UML:

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

Обеспечить механизмы расширяемости и специализации для расширения основных понятий.

Быть независимым от конкретных языков программирования и процессов разработки.

Обеспечить формальную основу для понимания языка моделирования.

Поощрять рост рынка объектно-ориентированных инструментов.

Поддержка высокоуровневых концепций разработки, таких как совместная работа, структуры, шаблоны и компоненты.

Интегрировать лучшие практики.


Диаграммы UML подразделяют на два типа - это структурные диаграммы и диаграммы поведения.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

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


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


Теперь пару слов о каждой из них


Диаграмма классов

https://youtu.be/sVVJp5a41o4


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


Три наиболее важных типа отношений в диаграммах классов (на самом деле их больше), это:

-- Ассоциация, которая представляет отношения между экземплярами типов, к примеру, человек работает на компанию, у компании есть несколько офисов.

-- Наследование, которое имеет непосредственное соответствие наследованию в Объектно-Ориентированном дизайне.

-- Агрегация, которая представляет из себя форму композиции объектов в объектно-ориентированном дизайне.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма компонентов

https://youtu.be/OiVyha3sf_I


На языке унифицированного моделирования диаграмма компонентов показывает, как компоненты соединяются вместе для формирования более крупных компонентов или программных систем.


Она иллюстрирует архитектуры компонентов программного обеспечения и зависимости между ними.

Эти программные компоненты включают в себя компоненты времени выполнения, исполняемые компоненты, а также компоненты исходного кода.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма развертывания

https://youtu.be/Yz8phtJoP7I


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

Артефакты представляют собой конкретные элементы в физическом мире, которые являются результатом процесса разработки.


Диаграмма моделирует конфигурацию времени выполнения в статическом представлении и визуализирует распределение артефактов в приложении.

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

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма объектов

https://youtu.be/tVW5oHNfAvc


Статическая диаграмма объектов является экземпляром диаграммы класса; она показывает снимок подробного состояния системы в определенный момент времени. Разница в том, что диаграмма классов представляет собой абстрактную модель, состоящую из классов и их отношений.

Тем не менее, диаграмма объекта представляет собой экземпляр в конкретный момент, который имеет конкретный характер.Использование диаграмм объектов довольно ограничено, а именно - чтобы показать примеры структуры данных.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма пакетов

https://youtu.be/237BWanM4Ak


Диаграмма пакетов - это структурная схема UML, которая показывает пакеты и зависимости между ними.

Она позволяет отображать различные виды системы, например, легко смоделировать многоуровневое приложение.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма составной структуры

https://youtu.be/nsuJcMNaKeE


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


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

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма профилей

https://youtu.be/qBws7AfvDL8


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

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма прецедентов

https://youtu.be/BdAcxboG5No


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

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

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма деятельности

https://youtu.be/Z8PHBsNXAgc


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

Они описывают поток управления целевой системой, такой как исследование сложных бизнес-правил и операций, а также описание прецедентов и бизнес-процессов.

В UML диаграммы деятельности предназначены для моделирования как вычислительных, так и организационных процессов.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма состояний

https://youtu.be/ojCcUvGfpi8


Диаграмма состояний - это тип диаграммы, используемый в UML для описания поведения систем, который основан на концепции диаграмм состояний Дэвида Харела. Диаграммы состояний отображают разрешенные состояния и переходы, а также события, которые влияют на эти переходы. Она помогает визуализировать весь жизненный цикл объектов и, таким образом, помогает лучше понять системы, основанные на состоянии.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма последовательности

https://youtu.be/ycg3njrkk1c


Диаграмма последовательности моделирует взаимодействие объектов на основе временной последовательности. Она показывает, как одни объекты взаимодействуют с другими в конкретном прецеденте.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма Коммуникации

https://youtu.be/KVLJj9xOq0E


Как и диаграмма последовательности, диаграмма коммуникации также используется для моделирования динамического поведения прецедента. Если сравнивать с Диаграммой последовательности, Диаграмма коммуникации больше сфокусирована на показе взаимодействия объектов, а не временной последовательности. На самом деле, диаграмма коммуникации и диаграмма последовательности семантически эквивалентны и могут перетекать одна в другую.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма обзора взаимодействия

https://youtu.be/E0OJG8ojEAg


Диаграмма обзора взаимодействий фокусируется на обзоре потока управления взаимодействиями. Это вариант Диаграммы деятельности, где узлами являются взаимодействия или события взаимодействия. Диаграмма обзора взаимодействий описывает взаимодействия, в которых сообщения и линии жизни скрыты. Мы можем связать «реальные» диаграммы и добиться высокой степени навигации между диаграммами внутри диаграммы обзора взаимодействия.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Временная диаграмма

https://youtu.be/NKTyDQUkLoM


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

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма
Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Зачем в UML столько диаграмм?


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

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

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

Например, кодер должен понимать проект системы и уметь преобразовывать проект в код низкого уровня.

Напротив, технический писатель интересуется поведением системы в целом и должен понимать, как функционирует продукт.

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



Аве!

Показать полностью 17
76

«Даром преподаватели…» или с помощью моделирования восполняем пробелы в знании азов электроники

В минувшем году у меня наступило осознание того, что слова популярной песни Аллы Борисовны относятся ко мне.

Похоже, что в юношеские года: «Даром со мною мучился самый искусный маг». Многие азы из мира электроники я так и не усвоил.

Было принято решение взять «какую-нибудь книжку» по теме. К сожалению, учебник по микропроцессорной технике был заброшен уже на 40 странице. Оказалось, что просчитать в уме значения на выходе всяческих цепочек из логических элементов, триггеров, шифраторов, мультиплексоров для меня сложновато, поэтому чтение книги превращалось в пытку с 10-ти минутным залипанием над каждой схемой в попытке понять почему именно на выходе триггера получается «1» или «0».


Однако, недавно мне в руки попался контроллер (Canny 3 tiny), который программируется без единой строчки кода. Программа для него представляет собой схему, на которой размещены всё те же элементы: логические блоки («И», «Или», «Не» и т.п.), триггеры, сумматоры и так далее, которые остаётся только между собой соединить.


Вы спросите: «Почему я ни с того ни с сего пишу про какой-то контроллер?».

Оказалось, что в среде разработки программы для контроллера есть режим симуляции схемы, в котором можно потыкать все эти элементы, задать значения на входах и посмотреть, что будет на выходе. Это очень сильно облегчает восприятие учебного материала.


Думаю, что программа изначально не задумывалась разработчиками для обучения азам электроники. Некоторые моменты могут быть неочевидными, поэтому я решил поделиться с вами парой примеров такого необычного её применения.
«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост

Для начала нам понадобится сама среда разработки CannyLab. Её можно бесплатно скачать на сайте разработчиков. Среда разработки представляет собой .zip архив. Её не нужно устанавливать, достаточно просто распаковать архив и запустить файл cannylab.exe. Права администратора не требуются, а значит программу можно использовать, например на компьютерах с ограниченными правами пользователя. На момент написания статьи актуальная версия среды разработки была 1.41.


На Windows 10 у меня выпадет предупреждение SmartScreen о том, что программа взята из неизвестного источника, не бойтесь и смело нажимайте «Выполнить в любом случае». Я проверил папку встроенным антивирусом, ничего подозрительного не нашел. Да и после её использования я проверял всю систему в автономном режиме, тоже ничего подозрительного не нашлось.


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


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

Запустите программу, выберите любой контроллер (я выбирал для своего Canny 3 tiny, но думаю это не принципиально)

Выберете элемент «Логическое умножение» и перетащите его на свободное пространство справа.

«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост

Нажмите один раз левой кнопкой мыши (ЛКМ) на зеленые квадратики и растяните линию для вывода (синюю) потом нажмите 2 раза ЛКМ, чтобы линия зафиксировалась. Проделайте так со всеми входами и выходами.

«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост

Нажмите на иконку в виде красного жука, после чего откроется симулятор

«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост

В режиме симуляции нажмите правой кнопкой мышки (ПКМ) на синие линии идущие ко входу, выберите опцию «Установить значение».

«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост

Обратите внимание, что ввести значение можно в разных форматах (символьном, бинарном, шестнадцатеричном), но мы выберем привычный нам десятеричный формат и введем любое значение.

«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост

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

«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост

Как видим, на выходе вполне ожидаемо получается единица.

«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост

Можно построить и более сложную схему.

«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост

Обратите внимание, что если в данной схеме на вход «R» триггера подать «0», то триггер установится один раз и не будет сбрасываться при изменении значения на входе «S». Собственно, именно этого наглядного представления мне не хватало, пока я читал учебник. Именно поэтому я и решил написать для вас статью.


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


Мы используем детектор переднего фронта в паре со счетчиком. Детектор дает единичный импульс если сигнал на входе изменится, например, с «0» на «1».

«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост
«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост

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

«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост
«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост
Одна беда данные не сохраняются и при следующем открытии окна симуляции все значения будет необходимо ввести заново.


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

«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост

Блок конвертора позволяет число «10», представленное в двоичном формате, разложить на отдельные составляющие. На выходе значение «1» будет появляться только у соответствующего разряда числа.

Второй блок «Побитовое ИЛИ» — суммирует в бинарном формате два числа. Обратите внимание, что в случае, если у обоих чисел в каком-нибудь разряде значение «1» при суммировании единица не переноситься в следующий разряд.

«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост

Кстати, с помощью Wine среду разработки Cannylab, можно запустить и в ОС Linux. Эмулятор при этом вроде работает без сбоев.

«Даром преподаватели…»  или с помощью моделирования восполняем пробелы в знании азов электроники Электроника, Информатика, Программа, Программирование, Обучение, Симуляция, Лайфхак, Длиннопост

Как я уже указал в начале статьи, Cannylab вряд ли предусматривался для обучения азам электроники (и информатики), поэтому набор элементов не так велик, как хотелось бы.

Наверняка есть какие-то opensource инструменты, выполняющие похожий функционал, но мне попался именно этот.


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


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


P.S. Схемку из этой статьи можно скачать у меня в GitHub.

Показать полностью 15
2230

Величайшая программа из когда-либо написанных

Величайшая программа из когда-либо написанных Программа, Программирование, Шахматы, Текст

Как вы думаете, какую из существующих программ можно назвать самой великой? Можете ли вы сказать про одну из своих программ, что она круче всех остальных? Есть мнение и, прямо скажем, далеко не безосновательное, что такую программу написал Дэвид Хорн в 1983 году: шахматы в один килобайт для ZX81.


Дэвид Хорн — это не какая-нибудь байка. Он достиг того, что многие из нас вообще сочли бы невозможным. Он написал шахматы с искусственным интеллектом (!) для плохо документированной и полной багов машины, содержащей всего один килобайт памяти. Мы говорим о Sinclar ZX81.


Задумайтесь на секунду об этом количестве памяти. Один килобайт. 1024 байта. Вы могли бы хотя бы записать правила шахмат менее, чем за тысячу символов? Это сама по себе нетривиальная задача. Запустите свой любимый компилятор и соберите минимальное приложение, которое только возможно. Скорее всего оно уже будет занимать больше одного килобайта, хотя не делает вообще ничего полезного.


Так, подождите-ка. Один килобайт — это же общий объём памяти. Сколько из этого было доступно программисту? Ответ есть по ссылке в конце статьи, пользоваться можно было всего 672 байтами! Даже эта короткая статья занимает больше.


И в этих шахматах был ИИ. Не то чтобы это был очень умный ИИ, но тем не менее он был. То есть программа могла не только показывать доску, проверять правильность ходов, определять победителя (или ничью), но еще и выбирать ходы для себя и разыгрывать их.


Было еще кое-что. Дэвид не только продумал и реализовал идею шахмат в столь малом объеме памяти. Он еще опубликовал их полный исходный код с подробным объяснением того, как именно всё было сделано, в феврале 1983 года в журнале «Your Computer». Эта статья прямо таки погружает нас в захватывающую 8-битную атмосферу тех времён, когда существенные ограничения заставляли программистов писать по настоящему компактный и эффективный код.


Программа: http://users.ox.ac.uk/~uzdm0006/scans/1kchess/

Источник: http://thad.frogley.info/archive/the_greatest_program.html

302

Мой первый "Фотошоп"

Рисовалка. Нашел блокнот с избранными моими программrами. Написана на бейсике под ZX-Spectrum, точнее у меня был "Парус" со встроенным языком Basic. И когда сломался магнитофон, с которого игры грузились с аудиокассет пришлось выучить встроенный в него язык.

Мой первый "Фотошоп" Photoshop, Basic, Рисование, Программа, Язык, Программирование, Детство, Длиннопост
Мой первый "Фотошоп" Photoshop, Basic, Рисование, Программа, Язык, Программирование, Детство, Длиннопост

А вот и мечта детства.

Мой первый "Фотошоп" Photoshop, Basic, Рисование, Программа, Язык, Программирование, Детство, Длиннопост
Показать полностью 2
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: