- все элементы теперь активны с самого начала.
- убрал кнопку "разделить". теперь деление на подсети происходит вместе с расчётом. - косметические изменения. Вложение 91976 p.s.: чем бы подсветить "неправильные" маски в выборе? есть более лаконичные решения кроме ComboBox.DrawMode / OwnerDrawnVariable? |
Цитата:
Хотя есть пара моментов, которые все таки точно требуют внимания: 1. Поля с рассчитанными данными хорошо бы сделать readonly. Сейчас они провоцируют в них чего-то вписать самому, а это не имеет смысла, все равно будут сброшены при расчете. 2. Деление на подсети вопросы вызывает. 192.168.0.1/28, 2 подсети. Число хостов:14, 2 подсети по 6. Не сходится. 8 подсетей - 0 хостов в подсети. Что-то где-то теряется. Цитата:
|
Привет.
Хочешь более управляемого интерфейса - откажись от винформс, используй впф. ВПФ более гибкий, позволит тебе нормально привязывать данные к интерфейсу. Но для этого придётся почитать про паттерны проектирования. А зачем кнопка посчитать? Легче было бы пользоваться если бы шёл автоматический рассчёт, как мне кажется. А вместо модалок с сообщениями об ошибках показывать уведомления прям на главной форме. И повторю других, заливай на гитхаб исходники :). |
Цитата:
Цитата:
Цитата:
выход: 14 хостов + адрес сети и броадкаст = 16 вход: делим на 2 подсети выход: 2 сети по 6 хостов = 12 + 2 (к одной добавляется броадкаст, к другой адрес сети) + 2 адреса (первый и последний) исходной сети = 16 вход: делим на 8 подсетей выход: 8 подсетей с адресами самих сетей и первым IP, он же и последний (считай броадкаст) хостов в такой сети нет :) если же посчитать общее кол-во адресов в 8 подсетях, то получим 16 Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
p.s.: Благодарю! :vo: |
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
НО выше меня подтолкнули к минимализму :) добавлю и примеры побитовых операций, НО! мне кажется это может только запутать :dnt: Цитата:
я бы попробовал. НО мне завтра ещё работать :) в моём 841n есть рандом по маске. НО не хочется перенастраивать... в итоге для этого есть и такой функционал в моём приложении ;) сети с 0 хостов имеют смысл. их можно посчитать :) Цитата:
можно проще ;) ...
|
Не обязательно же все на одну форму лепить. Примеры можно сделать во всплывающих сообщениях (к полям). Или в отдельном окне (типа справки).
|
Цитата:
и подспудного материала для начинающих / интересующихся. как показала практика - в обратной связи мне проще всего работать попунктно (Спасибо BigO ;)) я понимаю, что программисты != сисадмины. отсюда интерес ;) напишите что Вам не понятно и что нужно сделать, чтобы было понятнее. попунктно! ;) а я разберусь :) |
- ушёл от текст-боксов
- перенёс инфо-сообщения в главное окно, т. о. избавился от лишних окон - навёл косметику. вроде получше... Вложение 91984 ...
|
|
Гит. Тебе нужен гит. Хотя бы локально. Вон уже сколько версий приложений было. Самому же удобнее будет.
P.S. И версионность вести было бы неплохо. С изменениями от версии к версии (ну типа как ты тут пишешь, только в changelog). Потом прикольно будет, через пару лет наткнешься на исходник и будет приятно вспомнить эту историю эволюции отдельно взятого приложения. Мы для своих продуктов используем семантическое версионирование. Почитай. Интересная концепция, оказалась довольно удобной. |
читать больно из-за отсутствия форматирования кода, имена переменных транслитом с кирилицы - тоже такое себе. плюс винформ уже устарел. если цель - прокачаться, то для десктопа WPF с паттерном MVVM (он уже по ситуации но ознакомиться обязательно), там же про WCF можно прочитать, хоть он сейчас и смотрится аскетично и очень вредный, либо, если кровавый интерпрайс, то тенденция на веб-приложения и тут уже asp.net core + MVC. а второй вариант заставит ещё и html+css минимум подучить, хотя б на базовом уровне, что б натянуть тот же boostrap. ну и очень часто БД нужны, т.е. уже либо t-sql и запросы сложнее "select * from table1", с обобщёнками, времянками, табличными переменными и т.д. либо pl/pgsql т.к. с тенденцией на импортозамещение постгрес становится стандартом для многих компаний. без гита как уже раньше говорили - нафиг надо оценивать код, физически больно:)
|
Вложение 91988
- добавил пояснения при ошибках в выборе IP/Маски - https://github.com/Intern-box/Netute...lavnoe_Okno.cs ;) |
нейминг потешный) хоть и информативный)
|
Цитата:
а мне нравится ;) |
Цитата:
|
Цитата:
Если хочешь улучшить написание кода и нужны комментарии, то вот, что заметил. Не храни всю логику в одном файле формы. Старайся разделять на логические блоки. На классы, так, чтобы каждый класс был вполне себе понятной логической единицей. В качестве именования в шарпах в основном используют CamelCase нотацию (но не всегда конечно). Отсутствие комментариев в коде это нормально, кто бы что ни говорил. Идеальный (которого не существует, кек) код понятно без комментариев благодаря стилю написания и именованию переменных и блоков. Лучше бы вместо массив байт использовать класс с 4 октетами для описания айпи. И переопределить операции для работы с этим классом. В методе byte[] Ocifrovka_IP(string stroka_s_ip) незачем использовать регулярку, тем более она в очень общих чертах написана. У тебя дальше по коду есть IPAddress.TryParse(stroka_s_ip, out ip_adres), как раз с помощью него лучше откинуть неподходящие варианты. Что вызывает вопросы в коде без ответов: Не понятно, зачем столько раз делаешь битовый сдвиг вправо для позиции контрола с надписью. Берёшь ширину групбокса, вычитаешь ширину надписи, делаешь битовый сдвиг вправо и это будет позицией надписи? https://github.com/Intern-box/Netute...e_Okno.cs#L309 Зачем такой способ вычисления квадратного корня (static uint Kvadratnii_Koren(uint kolvo_setei)). Можно же Math.Sqrt и округлить. |
Цитата:
дальше гляну к чему приду... Цитата:
Цитата:
методы старался делать не сложными и понятными. что не понятно, пишите, отвечу ;) Цитата:
Цитата:
на сайте MS об этом есть инфа, НО сходу я не нашёл. Цитата:
выравнивание почему то не сработало. решил так, временно :) Цитата:
|
Часовой пояс GMT +7, время: 18:07. |
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot