Моему коллеге понадобилось протестировать веб-форму на предмет максимально допустимого количества символов. Порог был большим, и возник вопрос, как быстро подсчитать число введенных букв и цифр.
Ограничение на количество символов регулярно встречается в различных формах. На рисунке пример со страницы регистрации в Яндекс.
Соответственно, разработчик и/или тестировщик должен проверить, что ограничение действительно работает.
Коллега сразу отбросил вариант с подсчетом нажатий клавиш и довольно быстро вышел из положения с помощью Excel.
[+] Сегодня в программе
Microsoft Excel
У Excel есть удобная функция LEN (ДЛСТР), которая решает задачу моментально.
Понятно, что Excel тут как из пушки по воробьям, но коллега просто взял первое, что подвернулось под руку.
Однако на практике далеко не всегда в наличии есть Office или какое-нибудь стороннее ПО. Те же тестировщики регулярно сталкиваются с «голой» Windows, в которую ничего невозможно установить.
Блокнот
Даже если блокнот приходит в голову, то не совсем очевидно, как решить в нем поставленную задачу. И даже если вы дойдете до того, чтобы включить строку состояния в меню Вид, вас может поджидать сюрприз.
О причинах недоступности пункта меню можно долго ломать голову, если не знать ответ :) Такое происходит, когда в меню Формат включен перенос по словам, т.к. эти опции взаимоисключающие.
Дальше все просто. В строке состояния показывается номер позиции курсора, т.е. длина строки на единицу меньше.
PowerShell
Я уверен, что некоторые читатели в первую очередь подумали о скриптах, и это тоже правильно. Например, в PowerShell, как подсказывает в комментариях Сергей Шуленин, проще всего так.
"123".length
В Windows 10 (PowerShell 5.0), где есть новый командлет Get-Clipboard, можно копировать строку и считывать содержимое буфера обмена.
(Get-Clipboard).length
Наконец, можно обновлять (сохранять) файл со строкой:
(Get-Content "C:\temp\string.txt").length
Дискуссия
Казалось бы, простая задача, а решения интересные, не правда ли? Если у вас есть свой вариант, напишите его в комментариях!
Конечно, идущие в комплекте с Windows приложения зачастую бедноваты функционально, но их возможности нужно знать на случай работы в изолированной среде. Именно в этом направлении я хочу развернуть сегодняшнюю дискуссию. Расскажите в комментариях, как у вас обстоят дела с использованием стандартного ПО на рабочем или учебном месте, в частности напишите:
- В какой организации вы трудитесь (учитесь) – государственной, коммерческой и т.п.
- С какой учетной записью вы работаете — обычной или административной
- Есть ли ограничения на доступ к сайтам в Интернете и насколько они жесткие
- Запрещена ли бумажными и/или программными политиками установка программ без разрешения, обходите ли вы их ;)
- Как много вам приходится пользоваться стандартными приложениями Windows для выполнения рабочих обязанностей и напрягает ли вас осознание того, что с альтернативами вы бы работали эффективнее (приведите примеры)
По поводу последнего пункта, мне тут недавно пришлось пользоваться ножницами (aka Snipping Tool). Казалось бы, что нужно от базовой программы для обработки скриншотов – разноцветные стрелки, прямоугольники и маркер, а также Ctrl + Z. Парадоксально, но из этого списка есть только маркер, да и то неспособный выделять по прямой линии О_о См. также Skitch Touch.
Владимир
В PS можно и так )
Сергей Шуленин
Да можно гораздо проще: ‘123’.length
Владимир
Действительно =)
Vadim Sterkin
Ах, я почему-то брал строку в скобки вместо кавычек :) Добавлю в статью.
Nikolay Karetnikov
Здравствуйте!
Как получить количество, скажем русских сииволов в двуязычной строке
Пример
‘строкасодержащаяenglishsymbol’.lenRU и результат 15
‘строкасодержащаяenglishsymbol’.lenEN и результат 13
Vadim Sterkin
Николай, вам в Скриптовые языки администрирования Windows
Nikolay Karetnikov
Спасибо! Задам вопрос там
Владимир
Не факт, что быстро, но если хранить скрипт в качестве заготовки, то можно и так (подсмотренно на одном форуме)
Пример
http://storage1.static.itmages.com/i/15/1126/h_1448526103_6082113_cf72ccc3ee.png
Herz Mein
Nikolay
Интересная штука. Но и как ваш знакомый использую эксель или ворд.
А на вопросы отвечу. С меня не убудет, а у Вадима, какая никакая, а статистика.
1. Сельская школа.
2. Всегда обычная, в связи с переходом на win 8.1 где это очень хорошо реализовано. (некоторые компьютеры, вообще работают под семейным контролем, для пущей безопасности.)
3. Есть, но не у всех. Очень жестокие, белый фильтр. порядка 5000 сайтов. Из них работают я предполагаю максимум 3000. Настройка на стороне провайдера.
4. Запрещена, программными политиками, на компьютерах Администрации. (Так как сам запретил, посему обходить без надобности.)
5. Стараемся как можно максимальнее использовать не сколько стандартные приложения сколько бесплатные.
но и стандартными приходится работать, блокнот например быстрый и шустрый.
Очень напрягает. Работа с pdf, по сравнению с Foxit Phantom, как небо и земля.
Распознавание текста без ABBYY FineReader, вообще беда. Браузер интернета только Mozilla Firefox (плюс 4 расширения) стандартный IE это 100% просмотр рекламы. Встроенная программа сканирования. не просто тормозит, а порой не работает с некоторыми моделями МФУ. Приходится использовать аналог, благо есть NAPS2. Ну и работа с архивами особенно rar, встроенных средств просто нет, но и zip, просто не удобно работать, но повторюсь есть бесплатные программы.
Михаил Кашин
Не знал что у блокнота есть строка состояния :-)
Алексей Пилипенко
Если перенос по словам отключен, то строка состояния активна
Vadim Sterkin
Алексей, нет. Она еще должна быть включена. О чем и написано в статье.
Виктор Ганелес
А есть идеи, зачем нужно это ограничение?
Чем перенос мешает строке состояния?
Vadim Sterkin
Виктор,
Так запрограммировано, очевидно. Как только перенесли, получается как бы новая строка. Разработчики понимали, что она не новая, но и считать нормально не хотели, поэтому строку состояния просто убрали :)
Павловский Роман
1. Коммерческая организация.
2. На своем ПК с административной учеткой. Последние пару лет, проблем не было (Если не подключать любые неизвестные флешки и серфить по неизвестным сайтам, но антивирусник установлен на всякий случай, так как иногда нужно проверить ПО на зараженность).
3. Сам настраивал ограничения к сайтам, поэтому могу сам для себя и отключить. А вообще правила жесткие — только нужные для работы сайты.
4. Есть запрет, условный, но для себя можно установить нужную программу для облегчения работы. Политики на ПК не настроены на ограничение.
5. Пользуюсь блокнотом, если нужно что-то быстро записать на заметку и пользуюсь калькулятором. В остальном предпочитаю стороннее ПО, желательно бесплатное, если оно по удобству использования не уступает платному. Например: PHP Expert Editor, Notepad++ Portable, MS Office, Filezilla Portable, OpenOffice/LibreOffice Portable, Аудиоплеер foobar2000 Portable, Видеоплеер KMP и PotPlayer Portable, Графический редактор Paint.net, Веббраузер Chome, Firefox, Opera, IE для тестирования совместимости сайтов с браузерами, Клиент SSH Portable, Снятие скриншотов через FSCapture 5.3 Portable (Бесплатная), Для чтения PDF — Foxit Reader Portable, Просмотр изображений через FastStone Image Viewer Portable. Принципе это основные альтернативные программы для работы =) Я специально указал в названии программ слово Portable, так как их можно носить с собой, и в случае чего (проверка, например), просто удалить всю папку с ПО. А так же удобно после переустановки Windows. Не тратится время на установку нужного ПО, а просто запускается портативная версия и работа продолжается.
Vadim Sterkin
Роман, вы сисадмин?
То есть у вас в организации не проверяется соблюдение лицензий? Например, многие бесплатные программы бесплатны только для личного использования.
Павловский Роман
Для обычных пользователей — впринципе это жестко запрещено, а для тех, кто работает в IT-отделе, то пользоваться можно на свой страх и риск, но при первом же звонке (от директора либо начальника) о проверке, все удалить, что без лицензии.
Соблюдение лицензии есть, но для IT-отдела есть небольшие уступки. Как говорит начальник, главное, чтобы Вы работали быстро и качественно.
Антон Дровосеков
1. Полугосударственная организация, а так вообще коммерческая
2. Учётная запись — обычный пользователь. Поэтому мой путь — портативные приложения в %LOCALAPPDATA%
3. Да, конечно ограничения на доступ в интернет есть. Во-первых, он не у всех есть, во-вторых, есть ограничения по трафику, в-третьих — ограничения по сайтам (не сильно строгие, впрочем, первые два барьера надёжно отсекают ото всего лишнего)
4. Всё огорожено и бумажными, и программными (антивирусная программа с возможностью блокировки запуска приложений не из списка) мерами. Съёмные устройства тоже в опале. Да, приходится обходить установкой портативных версий, и нытьём по поводу невозможности запуска необходимых для эффективной работы программ.
5. Почти не пользуюсь стандартными программами. Из стандартных: подключение по RDP, Ножницы да xcopy/robocopy. Остальное: Cygwin (не могу перейти на PoSH, слишком много проще и удобнее делать утилитами из линукса), файлменеджер, Akelpad, FS Viewer, Punto switcher, Paint.NET (его успел установить при смене компьютера, когда имел доступ к правам администратора). Ничего не напрягает, т.к. по факту работаю с альтернативными программами, которые гораздо функциональнее. Без них (особенно Cygwin) работал бы аки мартышка, выполняя однообразные действия.
Да, в курсе насчёт лицензий бесплатных программ для домашнего/триального пользования. Всегда готов удалить лишнее ПО. Пока этого не требуют — эти программы просто не видны в списке установленных, тьфу-тьфу-тьфу.
Vadim Sterkin
Антон, вроде огорожено сильно, но де-факто есть RDP и портативное ПО, которое вы скачали, видимо (т.е. не заблоикровано).
Антон Дровосеков
Огорожено сильно. Приходилось создавать заявки в ТП по поводу невозможности выполнения своих должностных обязанностей в полном объёме, тогда просто пошли навстречу и убрали ограничение по запуску программ белым списком.
Скачать софт из интернета можно, да, но под чужой учётной записью.
На самом деле способов доставки софта на компьютер море, начиная от физического доступа к железу и до посылки самому себе по email в шифрованных архивах. Тренировка для ума, хоть какая-нибудь :) Лишь бы антивирус не взбрыкнул на false positive, а так моя самодеятельность, которая, к тому же, всё-таки сильно ограничена, никому не интересна.
А если по теме, то я согласен с вами, что знать и уметь применять возможности стандартного ПО крайне нужно. Привыкая работать в своей настроенной экосистеме, попадая в чужое рабочее окружение часто испытываешь сильный дискомфорт от отсутствия необходимых инструментов, а работать надо, и желательно при этом эффективно.
Держит в тонусе то, что раньше часто давали компьютеры на предмет разобраться с проблемами. Тогда и не забудется, и как без мышки хоткеями работать, и как запускать основные системные инструменты из командной строки (netplwiz, как пример).
Vadim Sterkin
Антон, в анально огороженных компаниях USB отключен в БИОС, на котором стоит пароль. А запароленные и многотомные архивы просто режутся.
Да, многие ИТ-специалисты так мыслят. И вас сейчас Проничкин яростно плюсует — ЕМНИП, он даже домашний ПК не настраивает по той же причине :)
Владимир Куприков
1. Работаю в коммерческой организации. Всего 11 компьютеров, плюс три ноутбука.
2. Все пользователи работают под учетной записью администратора. Установлены Win7, Win8.1, Win10. UAC не отключен.
3. Ограничений на доступ к сайтам в Интернете нет. Специфика нашей работы не позволяет многим сотрудникам проводить там много времени.
4. Практически все сотрудники не умеют устанавливать программы. Просто так заведено, что это делаю только я один. Те кто умеют устанавливать, спрашивают разрешение у меня. Но таких всего 2 человека, не считая меня. Да им это и не нужно, еще раз повторюсь. Специфика их работы не требует этого.
5. Из стандартных приложений пользуемся: Internet Explorer, Microsoft Edge, Блокнотом, Просмотр PDF, OneNote, Календарь, Калькулятор, Люди, Почта, Просмотр изображений. И совсем забыл, после кризиса встроенный антивирус. :-)
В изолированной среде не хватает: Архиватора RAR, (встроенный ZIP вполне устраивает). Лично мне очень не хватает просмотра (хотя бы просмотра) электронных таблиц, почти вся информация хранится в электронных таблицах.
Есть альтернатива: Windows Phone и OneDrive. Так что в изолированной среде выполняю только установку и настройку.
Vadim Sterkin
Владимир, если «вся информация хранится в электронных таблицах», то почему соотв. ПО не доставляется в изолированную среду?
Владимир Куприков
Нет, ПО доставляется однозначно. Просто под изолированной средой я понял чистую Windows без стороннего ПО. До установки стороннего ПО мне иногда приходится немного работать в чистой Windows. Но под работой, в данном случае, я подразумеваю установку и настройку ОС. Основная моя работа: снабженец, кладовщик, логист, а по совместительству системный администратор. Да и друзьям помогаю.
Просто по Вашей просьбе я смоделировал ситуацию изолированной системы, и что мне не хватает в этом случае для комфортной работы.
Вот как-то так. Надеюсь, объяснил.
Алексей Рыжков
Чистая без доступа к сети? Если с онлайном — то Excel Online/Google Docs, если без сети — то портативки на внешнем харде. Впрочем, вещи очевидные.
Менее тривиальный вариант — расшаренный диск/ftp/рабочая папка/webdav/вебсервер где-нибудь в корпоративной сети, к которй есть доступ почти всегда, и Windows Explorer умеет со всем этим добром работать.
Владимир Куприков
Думал об этом, как нибудь попробую.
Простите, а не подскажете портативку для электронной таблицы. К сожалению не знаю.
Алексей Глухих
Ну… так как я всё ещё обучаюсь, то если бы данная задача была поставлена в учебном заведении, то RAD Studio — новый проект — компонент Edit, и в событии OnKeyPress: ShowMessage(length(Edit.Text)); )
Ну и для статистики:
1. Учебное заведение
2. Обычная, ибо Active Directory.
3. Есть. Фильтр от РТК. Нет доступа к ВК, википедии, ютьюб, переводчикам, яндекс (фильтр настроен криво, работает только часть не по защищённому соединению и с указанием www. в начале адреса). Если страница не найдена, то открывается поисковая система спутник. А вообще — об этом можно рассказывать бесконечно) Но VPN до дома пропускает, потому при необходимости, можно обойти. На Digiralocean доступ есть (где учебные проекты хранятся).
4. Запрещена и так и так. Я — нет необходимости. Свой ноутбук всегда с собой.
5. Долгое время пользовался блокнотом. Затем нашёл более удобным NPP в плане подсветки кода. А так — Paint наше всё)
4
Nikolay
Да как правильно заметили выше.
При выборе бесплатных программ, стараюсь искать такие чтоб бесплатны и для коммерческого использования, правда не знаю относится ли муниципальная сельская школа к коммерческим организациям.
Хотя есть софт где конкретно указано, бесплатно для учебных организаций если таковая пометка есть, то естественно работаю с ним.
Ivan Сибиряк
1. Работаю в государственной
2. Администратор
3. Ограничения есть, достаточно жесткие «де юре». По факту инетом пользуемся
4. Запрещена установка приказами. Всё устанавливается, конечно.
5. Из стандартных — офис. Не напрягает, лучше нет.
Николай
Мои варианты решения:
1. Вставить в Блокнот, сохранить, посмотреть свойства. Сколько байт, столько и символов.
2. Вставить в Word, затем вкладка Рецензирование\Статистика или щелчок по индикатору «Число слов» в строке состояния.
Про использование стандартного ПО на рабочем месте.
1. В государственной.
2. Работаю с обычной, но настройкой занимаюсь только сам, поэтому админская учека присутствует.
3. Раньше были на файлообменники. Сейчас, вроде, сняли.
4. Пока, тьфу, тьфу, тьфу, не запрещена.
5. Из стандартных, пожалуй, блокнот, да калькулятор. Нет, не напрягает.
Антон Дровосеков
В общем случае это далеко не так.
С UTF вообще свои заморочки. Составные символы, вот это всё…
Антон Дровосеков
Например, если не самому набирать ручками, а скопировать строку текста с вебсайта, например. Могут быть казусы.
Lecron
Не знаю, упоминалось ли уже в комментариях, но можно просто создать файл и посмотреть его размер. Это первое, что пришло бы мне в голову для разовой задачи.
Vadim Sterkin
Прямо над вашим комментарием упоминалось и разбиралось, почему можно попасть впросак.
Lecron
Упс. Извиняюсь.
Понимаю, что это частный случай и рекомендовать его в целом, нельзя. Просто меня проблема UTF не коснется, поэтому и не подумал. Пользуюсь ФАРом — ShiftF4, ksgfjbdv (случайный набор символов), ShiftIns, Esc, Left, Enter. Кодовая страница по умолчанию 1251, и при вставке юникодные символы теряют свою юникодность, даже символы с дополнительные модификаторами.
Lecron
С последним способом PS из статьи, с Get-Content, тоже можно попасть впросак.
Для 5 символов «приве», сохраненных в UTF-8 (65001), выдает значение 10.
Первый способ работает, второй, с Get-Clipboard, проверить не могу.
Alexander Galkin
Замечание: Excel не является средством Windows. Это инсталлируемая и недешевая программа ☺.
Есть класс программ типа http://www.funduc.com/countchars.htm (можно ещё нагуглить аналогичные), в которых за гораздо меньшее количество клацаний можно узнать количество символов.
Lecron
Еще вариант. Современный.
Поиск в Гугле по «длина строки онлайн», по первой ссылке привел на страницу сайта cy-pr.com, где есть поле для ввода и простая кнопочка «Посчитать». Все это заняло не больше 10 секунд между появлением идеи и получением результата.
Vadim Sterkin
Да, это все работает, но основной подтекст статьи — изолированная среда.
И интернета там тоже может не быть. И потом, к формам на всяких сайтах надо относиться с осторожностью, когда речь идет о тестировании :)
Lecron
Не спорю. Это просто вариант. Пригодный для получения быстрого результата, обычным пользователем, в разовой задаче. О профессионалах и/или регулярной задаче, речь отдельная. Тут блокнотом тоже не отделаешься.
Да и основной подтекст статьи, по первой строчке «Моему коллеге понадобилось протестировать веб-форму», явно подразумевает наличие интернета, а браузер есть всегда. ;)
Vadim Sterkin
Сервер может быть в локальной сети или на локальной машине. Так и было, кстати.
Lecron
А какая разница, где сервер? Просто я давно не видел, чтобы разработчики/тестировщики, особенно для WEB, не имели интернета (там сейчас вся документация и быстрое решение проблем) и/или настроенной среды (IDE, редакторы, repl) для своей работы, в которых определить длину строки не проблема.
Кстати, вот еще вариант. В принципе похожий на PS, но упоминания заслуживает. В каждом браузере, вроде со времен IE8, есть средства разработчика, в которых есть JS консоль.
а = "бла бла бла"
a.length
Vadim Sterkin
Веб-форма — это не обязательно веб-сайт. Это может быть внутреннее приложение с веб-интерфейсом. Ну и вообще, если есть интернет, задача становится не такой интересной, не правда ли?
А пример с консолью годный, да.
Lecron
Вадим, извините за занудство, но перечитав условия задачи вашего коллеги, я так и не понял, что ему нужно было сделать. Найти перебором ту длину строки, при которой форма выкинет исключение? Или есть известная длина и нужно сформировать соответствующую строку, добавить один символ и проверить форму на переполнение? В любом случае, задача формулируется несколько иначе — создать или подобрать. Так может и решать нужно именно ее?
Например создать строку в 50+1 символ в JS можно так
N=50
new Array(N+1+1).join("x")
Vadim Sterkin
Да.
Да, но надо знать js :)
P.S. Используйте code на панели, плиз.
Lecron
Конечно. Это основа фронтенда. Или PHP. Или еще что-то, что позволяет проводить такие действия. Да хотя бы предложенный Вами PowerShell, который наверное тоже умеет составить строку нужной длины. А еще есть Selenium для тестирования.
Сейчас же, мы решаем просто задачу из спортивного ПК-пользования — Excel, Блокнот, изолированная среда, встроенный софт.
PS. Из своего опыта, я не смог вспомнить, да что вспомнить, даже представить, когда кому-то нужно узнать длину, собственноручно составленной одиночной строки. Да еще в таких условиях.
Николай
Нафига искусственно придумывать сложности? По-умолчанию ведь ANSI.
artem
А ещё, раз уж ты упомянул Excel, с таким же успехом можно вставить в Word и посмотреть «статистику удобочитаемости» (https://twitter.com/vsterkin/status/668007701721571329).
Ещё, наверняка, можно в cmd что-то супер-короткое состряпать для этих целей. Но тут я не силён.
Если говорить о «нецелевом» испольовании стандартного ПО — то думаю, что с огромным отрывом по неочевидности и по практической пользе победит использование IE в качестве Проводника по локальной ФС. (Ты, кажется, уже как-то писал об этом).
А ещё немного не в тему, но для меня самым большим открытием последних лет было то, что чтобы сделать Alt+PrtSrn в RDP, нужно отправить Сtrl+Alt+Minus. На самом деле это даже документировано, но никто не знает, и я в том числе мучался много лет. Остальные комбинации знал. (http://windows.microsoft.com/en-US/windows-vista/What-shortcut-keys-can-I-use-in-Remote-Desktop-Connection).
Vadim Sterkin
В смысле Ctrl+O > Обзор?
artem
Не совсем. Эти окна открыть/сохранить являются, фактически, частью Проводника. Все действия с файлами в них подчиняются правилам Проводника. И если в Проводнике что-то сломано, то эти окна не помогут.
Я говорю о том, что можно прямо в адресной строке браузера написать путь (типа c:\windows\system32\cmd.exe). И браузер даст возможность запустить его.
Vadim Sterkin
Это и в консоли можно написать даже в том случае, когда все плохо. У тебя есть пример из практики что-ли?
artem
На память приходит только один старый случай, когда кто-то вредный подменил ассоциации на файлы .exe. (Я и не знал, что так можно). Т.е. не запускалось ничего — ни проводник, ни диспечтер задач, ни командная строка. IE запустился, потому что в те времена он был на рабочем столе не ярлыком, а объектом какого-то другого типа (наравне с «моим компьютером» и «сетевым окружением»).
Но наверное это и сейчас можно применить с пользой, просто в голову что-то не приходит.
Vadim Sterkin
Так этот случай как раз в моем комменте по ссылке
Herz Mein
Для PowerShell старых версий текст из буфера обмена можно получить через Windows.Forms:
Vadim Sterkin
.NET в действии :)
Maxim
Если человек работает с веб-формами, то поставить ему интерпретатор python не будет большим преступлением :-)
Тогда оценка длины строки:
Lecron
Зачем ставить? Если человек работает с веб-формами, у него, в порядке убывания вероятности, уже есть, repl для js, php, python, perl
Кстати, Вадим, в винде еще есть Windows Script Host, который позволяет писать на VBScript и JScript. Вот еще вариант, если надо спортивное ПК-пользование в ограниченных до беспредела условиях.
wisgest
Скорее всего определил бы в AkelPad’е. Но, если более стандартными средствами (принадлежность к которым Excel или Word для меня спорна) без лишних наворотов и без создания вспомогательных файлов, то запустил бы в командной строке или окне «Выполнить»/«Запуск программы»:
Будет создано окно с полученным числом. В первых двух случаях при запуске через командную строку подопытная строка кроме кавычек также не должна содержать знаков проценнта и при определённых настройках — восклицательных знаков.
Если с наворотами, то можно сразу получить строку из буфера обмена:
Или просто ввести в адресной строке любого браўзера (для решения первоначальной задачи в никакие другие программы и не надо было переходить):
На работе с использованием ПО почти не связан (что-то вроде слесаря-ремонтника).
Vadim Sterkin
Зачёт!