Pull to refresh

Comments 92

UFO just landed and posted this here
Радминь имели ввиду?)
птица скорби Симург возносит свои крылья над администратором
Вообще-то в иранском первоисточнике это птица справедливости и счастья.
UFO just landed and posted this here
Заповедь нулевая: не обобщайте.

Только по косвенным признакам стало ясно, что упоминаемые «программисты» пишут исключительно прикладные программы под последние версии Windows для пользователей, не умеющих залезать в настройки.
Минусующие, объяснитесь, пожалуйста.
Вам не очевидно, к примеру, что настройками по умолчанию не покрыть всех нужд пользователей и администраторов? Что для доустановки исполняемых (?) модулей приложения логично требовать такие же права, как для установки самого приложения? И, кстати, какие вообще проблемы могут возникнуть у англоязычных создателей англоязычных программ, если их программы запускают в системе с другой локалью?
И, кстати, какие вообще проблемы могут возникнуть у англоязычных создателей англоязычных программ, если их программы запускают в системе с другой локалью?
У создателей — никаких, наверное. А вот у пользователей может возникнуть проблема с использованием отличного от английского языка, если программист не подумал об этом. Вспомните времена Windows 95 — многие программы тогда не понимали вводимую кириллицу. Да и сейчас иногда такие встречаются. Некоторые даже установить не получится.
У некоторых программ до сих пор бывают проблемы с кириллическими путями (например при записи в папку пользователя если имя пользователя в системе указано на русском, или другом отличном от английского языке)
У меня андроид-эмулятор по этому не хочет дебажиться…
Проблема «Я.Онлайн». Администратор устанавливает программу для пользователя. Пользователь ее запускает. Модуль Jabber выключен, он нажимает кнопку «Включить». Происходит скачивание, попытка установки (разумеется, что никаких окон «Введите пароль админа» не вылезает), ошибка установки, модуль не включается.

Администратор запускает под своим логином, нажимает «Включить» — под его профилем Jabber включается. Но не под профилем пользователя.

Выход: дать пользователю права админа. Запустить «Я.Онлайн». Нажать «Включить». Дождаться установки. Отобрать права админа.

Логика, блин.
Ха, пути. Вон, P-CAD (покойся с миром, верный друг) долгие годы не мог открыть файл, в котором встречалась русская буква «я» в надписях и обозначениях.
Тогда уж в кучу: SQL Express 2008 R2 не может установиться, если в качестве администратора БД назначить пользователя, имя которого совпадает с именем компьютера.
а в винде вообще нигде нельзя, чтобы имя пользователя совпадало с именем компьютера
В каком «нигде» этого нельзя? Я пять лет сижу на работе как PAVEL\pavel, и ошибка появилась впервые.
Скажем, в win7 при инсталляции нельзя указать имя пользователя, совпадающее с именем компьютера.
И в XP нельзя.

Вот в домене можно сделать пользователя с именем, равным NT4-имени домена.
Скажем, в win7 при инсталляции нельзя указать имя пользователя, совпадающее с именем компьютера.
Но не возникает никакой ошибки, если такого пользователя создавать уже после инсталляции, также как и не возникнет ошибки при задании нового имени компьютеру.
Схема электрическаЯ принципиальнаЯ
Мы в Corel надписи пририсовывали в университете.
Они просто не умеют ссылки в нтфс делать и им от этого очень грустно
А симлинки-то тут причем?
> Заповедь нулевая: не обобщайте.
Это вы программисту говорите «не обобщайте»? Серьёзно?
Блаженны разработчики, которые изначально создают свои продукты в атмосфере неанглоязычной, ибо они унаследуют грамотный подход.

Разработчик, никогда не создававший продукт, рассчитанный на работу минимум с двумя языками с различным направлением письма не познал дзен локализации. Простого «в атмосфере неанглоязычной» тут не хватит.
Подпишусь. Многие «русские» программы типа QIP, The Bat, Пунто и т.п. работали некорректно (когда я ими пользовался), если была выбрана нерусская локаль. Хотя казалось бы, их программистам было известно, что существуют другие языки, но они расчитывали, что у их пользователей будет только русская винда :(
До комплекта. Анкета ПНВД от ФМС для составления загранпаспортов не дружит с нерусской локалью. Пришлось локаль с США на русскую менять, чтобы анкету нормально заполнить. Другое же творение, в виде Abylon Selfcert не захотела понимать бусурманской локали неамериканской. Увы. Такие вот беды.
Самое интересное начинается когда языка три хотя бы. Тогда уже не работает $lang == 'ru' ? 'Привет' : 'Hello'; и подобные схемы.
Это не самое интересное, это банальщина и рутина. Интересна глубокая локализация (и попытка сделать это хоть как-то универсально), например учет традиций и предрассудков, принятых в конкретной местности.
05/01/2001 — какой день, первое мая или пятое января?
Где как, а что? Вы действительно считаете это интересной проблемой?

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

А вот, скажем, как вам локализация строк типа «Найден(-ы) %d файл(-а, -ов)» и т.п., с учётом языков где, в зависимости от параметра, приходится выбирать из нескольких форм множественного числа, разных падежей и склонений, форм вежливости или даже разных порядков слов в предложении? И всю эту развесистую языковую логику нужно по-максимуму впихнуть в формат файла ресурса, который вовсе не приспособлен для запихивания какой-либо логики — или же загрязнять этой уродливой алогичной «логикой» свой красивый и логичный код.
В ICU это как-то так:
{0,plural,one{Найден}few{Найдены}many{Найдено}other{Найдено}} {0,number,integer} {0,plural,one{файл}few{файла}many{файлов}other{Найдено}}
Это идет в языковой файл/ресурс.
Да, есть такое в отдельно взятом раю, только не везде этот рай доступен, увы…
А у вас что за чистилище?
Может я не писал под win но gettext с таким вполне себе штатно и неплохо справляется.
Существует программа-экзорцист «Application verifier» от Церкви Microsoft, с помощью которой программисты могут избежать многих описанных в статье грехов.
Если это прочитает тот, кто пишет программы для Пенсионного Фонда. Будь ты проклят, подонок. Столько крови попортил людям.
Отче, я согрешил.
Вопрос по делу чтобы сразу поправить: как в Java узнать путь к директории пользователя, если не знаешь наверняка на какой ОС будет запущено приложение (Windows, Linux, Mac)?
Ответ наудачу: сначала определить, под какой ОС работаем и далее уже платформозависимым методом определить путь?
Навскидку вот.

Ну а если без подробностей, то System.getProperty("user.home") вернет домашнюю папку. Ну а для Windows придется попотеть, да, поскольку как мудро сказано по ссылке, «само понятие домашней папки пользователя в Windows крайне изменчиво».
— Тестируй все диалоги на измененном DPI
— Помни о локали и первых проблемах ее: форматах даты и разделителях дробной части
— Тестируй всё на самой сирой и убогой машине, что у тебя есть (если нет — воздвигни виртуалку и держи её в чёрном теле).
— И на самой шибкой машине тоже тестируй.
ЯндексДиск нарушает 3 заповедь, чем весьма печалит меня, отъедая 50 Мб от выделенного мне 150-тимегабайтного профиля.
Программисты под *nix по умолчанию непогрешимы?:)
Нет, среди них много любителей easy_install на продакт и т.д. Процесс создания devops программиста из программиста обычного — отдельная песня. Там всё тоже сложно и много думать.
Есть мнение, что изначально через игольное ушко протаскивали канат, а верблюд появился в результате ошибки перевода.
да, там на греческом разница не очень большая:
κάμηλος верблюд
κάμῑλος канат
а канат по смыслу лучше подходит
Я в языках не силен, но читал где-то обратную версию:
что в Иерусалиме была в те времена калитка в наружной стене, настолько маленькая, что человек протискивался там чуть не боком. Ну а верблюда там протащить было никак нельзя. И вот эта дверка и называлась «Игольное ушко».
Даже и добавить нечего. Все согрешения видал, каждый раз поминая разработчиков. Не один я в этом случае.
>> Не мельчи
Это вообще к дизайнерам. А если писать про дизайнеров то выйдет целая книга.
>> Не возжелай записи в директорию приложения
Правильно ли так делать если планируется portable программа?
Пиши куда в настройках программы указано, и создавай правильные настройки инсталлятором, согласно пожеланиям исталлирующего.
Тогда возникает вопрос, где искать эти самые настройки. Я видел программу, которая искала настройки в своей директории или в профиле пользователя в зависимости от того, присутствует ли в названии исполнимого файла программы слово «Portable».

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

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

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

Аналогично можно их оттуда читать при возникновении исключения.
Я обычно поступаю следующим образом. Если в папке с программой лежит файл настроек, то программа работает в портабельном режиме, если такого файла нет, то все настройки пишутся в профиль юзера.
Список грешников можно расширить упомянув Сбербанк с его банк-клиентом. Не редкость когда (особенно бухгалтерам) пользователям приходиться давать права хотя бы локального админа :( либо менять права папок. За собой не замечаю, что есть привычка все складывать по полкам рядом с основным модулем программы.
Спасибо просветился :)
Аминь!
UFO just landed and posted this here
Не возжелай записи в директорию приложения
… а ежели возжелал — убирай нафиг из программы манифест!

Кстати, сисадмин может попробовать удалить манифест из программы самостоятельно — иногда это приводит к чудесам
крайне сомнительной выглядит установка программ в профиль пользователя, что любит делать, например, браузер Chrome (а версию для всех пользователей компьютера нужно скачивать отдельно)
Не подскажите, где? А то комплект декстопных программ от гугла прикрыли, а больше ссылок я не нашел.
Какое хорошее слово «standalone», надо бы запомнить его…
Автору большой респект и удачи в нелегком деле общения с end-users.
На вавилонскую тему к заповеди «Не мельчи» можно добавить, что не стоит все же превращать интерфейс в башню — экраны с высотой 768 (и даже 600) пикселей все же существуют, а диалоги всякого рода настроек и анкет частенько бывают ориентированы будто на портретную, а не альбомную ориентацию экрана, вытягиваясь сверху вниз и оставляя кучу свободного места по бокам. В итоге за краем экрана оказываются именно кнопки подтверждения, отмены, продолжения.
У вас исключительно потребительский подход. Критиковать проще всего. Если бы вы поработали программистом, то пересмотрели бы свои взгляды.

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

Хлебнули мы лиха с этой домашней директорией. Точнее её расположения для системной учетной записи, от которой стартуют Службы. Мало того что она расположена в совершенно разных местах разных версий ОС Windows, так расположение зависит еще и от того, 32 или 64 битная версия ОС используется. Попробуй объясни юзеру где искать логи заглючившей службы.
Служба — особый объект. Во-первых, службу принципиально невозможно установить копированием файлов, а следовательно, всегда есть инсталлятор, который может и права на папку с логами ей дать. Во-вторых, для службы не существует понятия пользователя, который с ней работает — и нет проблемы смешивания файлов разных пользователей.
Во-вторых, для службы не существует понятия пользователя, который с ней работает
Не совсем так. На практике службы часто запускаются не от SYSTEM, а от специального доменного пользователя, чтобы обеспечить доступ к каким-то ресурсам внутренней сети. Часто это делается вручную, а не инсталлятором.
Я говорил о пользователи, который работает за компьютером, а не об учетной записи.
Логи ВСЕГДА искать в «просмотре событий». А вы что, логи в винде в файлы пишете?
Конечно в файл. У нас кроссплатформенный проект.
А какие ещё платформы? И что, там тоже в файлы?
Windows различных версий, в т.ч. серверные. Linux. По моему мнению файлы — самый православный лог. его по крайней мере можно прислать почтой или скормить какому-нибудь специализированному анализатору логов.
Ненавижу в линухе программы, пишущие логи в файлы. Только syslog! А он уж пусть сам разбирается, в файлы или куда там ещё.
И в винде, соответственно, eventlog. Который, кстати, тоже можно выгружать в файлы, или отправлять в syslog с помощью el2sl.
Ненавижу в линухе программы
Прям таки ненавидите? Какую-то кучку байтов?

>>И в винде, соответственно, eventlog. Который, кстати, тоже можно выгружать в файлы
Что-то не помню такой опции в ХР и 2К, которые вынуждены поддерживать. Могу ошибаться конечно.

Кроме того иногда службы надо запускать в нескольких экземплярях со своими логами. Или запускать как приложения в целях отладки. Потом разобраться в eventlog'е где чьи сообщения — нереально.
Это зависит от того, насколько грамотно прописан модуль который отвечает за этот процесс…
Кроме того существует волшебная опция debug, включение которой должно выводить больше информации, вот ее-то и можно выкладывать в файл.

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

Кроме того, наверное данные вы тоже предпочитаете таскать из файлов, а не из базы данных, ведь парсинг строки куда удобнее…
я вот вообще думаю перейти на логирование в базу, чтоб анализ всякий делать проще было
Это не всегда удобно для администрирования. В том плане что для того чтобы вытащить эту информацию и повесить на нее какой-то триггер — необходимо подключаться к базе данных, а я, в общем случае, полагаю что пускать систему мониторинга внутрь приложения, тем более в базу, идея не очень хорошая. В том случае если вывод лога ведется в штатную систему журналирования (syslog, eventlog) — данный триггер проще сделать и обслуживать.
Нет, это имеется ввиду отдельный сервер логирования, собирающий логи с двух десятков других серверов.
А на мой взгляд оба способа хороши для подходящих к ним задач.
Выдирать из базы логи не на много сложнее, чем из текстового файла.
Главное бекапить базу регулярно. И проверять, чтобы разбекапливалась нормально.
Не, неважно куда логи будет складывать сислог. Важно, чтобы все приложения складывали логи в сислог, а его я уже настрою как мне надо.

Сейчас хочется переделать в духе: локально в файлы + пересылать на удалённый сервер. А удалённый сервер, где собираются со всех серверов — кладёт в базу.
или отправлять в syslog с помощью el2sl
Попробуйте это объяснить не слишком квалифицированному клиенту, расположенному в другом часовом поясе.
Добавлю как пользователь: ув. демиурги, делайте же в своих диалогах то, что нужно скопировать так, чтобы это можно было скопировать!
Ага, print screen + распознавание, знакомый процесс ))) Руки чешутся чтон-ть комун-ть оторвать :-)
Вы пользуетесь ctrl+C для копирования текста MessageBox в windows?

Пример:
[Window Title]
Параметры экрана

[Main Instruction]
Вы хотите сохранить эти параметры экрана?

[Сохранить изменения] [Отменить изменения]

[Footer]
Возврат к прежним параметрам экрана через 13 сек.
Sign up to leave a comment.

Articles