К сожалению, сложилось впечатление, что получается «каша из топора», поскольку за всеми дополнениями уже почти не видно самого scrapy, а интеграцию «бесшовной» вряд ли назовёшь.
На Python программирую «со словарём», поэтому правильная настройка и подбор всех составных частей может занять некоторое время. В ходе поиска приемлемой документации по созданию решения сложнее «Hello, world!» наткнулся ещё на Grab:Spider habrahabr.ru/post/142212/, который выглядит более простым, чем scrapy.
Сейчас думаю, что набросаю первую версию платформы для решения своих конкретных задач. После этого смогу уже помериться с другими решениями.
Вы упомянули «все решения вроде Scrapy», а можете привести несколько примеров подобных решений? При поиске натыкался только на Scrapy, если не принимать во внимание поисковики вроде Xapian, Nutch и Solr.
Для меня самого более привлекательным выглядит вариант использования готового решения. В статье привёл семь основных требований к платформе, при этом для разбора нового сайта мне потребуется лишь реализовать парсинг страниц, причём в итерационном режиме. В качестве неплохого критерия предлагаю парсинг форума phpBB. Это должно быть простой задачей, требующей от меня лишь разбора страниц. Если знаете подходящее решение, то дайте, пожалуйста, конкретные рекомендации к реализации.
Частично соглашусь по поводу Data Mining и Data Extraction, но тут очень субъективно, особенно, если учесть, например, обогощение данных при обновлениях.
Паук, который умеет разбирать уже ранее скаченные документы является более продвинутым, чем тот, который этого не умеет. Аналогично с возможностью загрузки дополнительных данных и дополнению ранее полученных. Для измерения интеллекта Интернет-пауков давайте введём понятие «коэффициента интеллекта» аналогично человеческому. Тогда надо взять всех Интернет-пауков, оценить их по критериям (семь уже предложил, можем взять и другие), после чего построить нормальное распределение и можно уже оценивать интеллект. Если учесть количество простейших пауков, то ИнКр будет среди них интеллектуалом. Вам проще всего привести примеры более продвинутых вариантов, которые доступны для использования.
На Scrapy смотрел, но меня смутили два момента. Во-первых, предварительное определение Item, то есть структур данных, что вносит дополнительные неудобства в «быстрый старт», а также нет уверенности, что последующее добавление полей не приведёт к ликвидации уже собранных данных. Во-вторых, не нашёл информации об инкрементальном обходе. В-третьих, нет информации о возможности проведения отдельно от загрузки. Каким образом можно запустить вначале только загрузку, а потом парсинг с обновлёнными скриптами?
К сожалению, примеров реализации более-менее сложных проектов не нашёл. Для простой скачки меня вполне wget устраивает. Парсинг страниц смогу без проблем написать. Вы можете проконсультировать по поводу правильной настройки Scrapy, чтобы он полностью скачал phpBB форум и умел докачивать новые темы и сообщения (без полного обхода всего сайта)?
Вы правы, что модуль мониторинга должен быть связан с остальными модулями, но схема верхнего уровня, поэтому обозначена основная роль — взаимодействие с пользователем: предоставление информации по результатам обработки и инициализация новых итераций. Совсем не показан процесс получения новых заданий для загрузки, но это лишь усложнило бы схему, при этом архитектура принципиально не изменилась бы.
Обычно ситуации с капчами и куками выглядят как зависимость одной страницы от другой. И когда будет происходить загрузка, то система должна знать об этой зависимости и выполнять дополнительный запрос.
В схеме старался максимально уменьшить каждый блок, а также сделать некоторый стандартный набор, который можно будет повторно использовать с помощью минимальной параметризации для другого сайта. Модуль загрузки универсален и может быть единым для всех сайтов.
Модуль загрузки не должен принимать решение о специальных действиях, вроде авторизации на сайте, поскольку параллельно идут и другие запросы к этому же сайту. Если каждый будет авторизовываться, то это просто в два раза увеличит количество запросов, а также приведёт к сомнительной активности в логах сайта.
Хочу отметить, что блоки 1-3 очень тесно связаны между собой. Модуль проверки, фактически, должен выполняться моментально после загрузки, скорее всего, это будет простой callback, но считаю верным их разделить логически.
О зависимостях страниц думал в контексте сохранения ссылки для проверки, не потерялась ли она. Вы натолкнули меня на мысль, что необходимо добавить ещё chain и в модуль загрузки.
Интересно как вы подойдете к реализации. Я подобную систему разрабатывал в одном из проектов,. там у меня схожие принципы применялись. Как раз вот готовлю статью на эту тему.
Вашу статью с интересом прочитаю. Сейчас планирую подойти к реализации максимально просто. У меня есть набор скриптов (на Node.js), которые отлично занимаются загрузкой, но любая ошибка приводит к множеству дополнительных действий на исправление логики, а также времени на повторную загрузку. Начну с более чёткого деления на модули и некоторого обобщения внутренних структур.
Самым неприятным для реализации сейчас представляется модуль обновления и структура хранилища. Мне хочется, чтобы платформа сама позволяла хранить различные именованные сущности, причём с поддержкой версий.
P.S. Где-то надеялся, что уже есть готовое решение, поэтому можно будет обойтись без собственной разработки.
Основная задача кнопки «стоп» — это снятие блокировок:
а) Освобождение блокировки файла и его каталога, чтобы, например, переименовать/переместить или удалить;
б) ArsNG правильно упомянул про блокировку аудиоустройств (WASAPI);
в) Освобождение блокировки сетевых подключений, например, для экономии трафика на мобильном устройстве или самого соединения с удалённым компьютером при воспроизведении сетевых файлов.
Чтобы интерфейс не был перегружен дополнительной кнопкой, которая не всегда нужна, можно на 2-3 секунды после паузы превращать кнопку play в кнопку стоп. Таким образом, если человеку нужна именно кнопка «стоп», то это сработает при двойном нажатии на паузу, причём не понадобится новых комбинаций клавиш или кнопок. Вот небольшой анимированный пример.
P.S. Если уж было упомянуто кэширование в онлайн-плеерах, то оно тоже частичное, поскольку останавливается через некоторое время. То есть у меня нет возможности сказать, чтобы было закэшировано всё произведение полностью, а не первый кусок. Из-за этого вначале просматривается с тормозами, а потом уже нормально. Но это проблема не только онлайн-плееров. Например, у меня foobar не даёт заснуть жёсткому диску, поскольку постоянно подгружает очередной фрагмент файла, а оперативной памяти 4Гб полностью свободно и не используется. Я был бы рад опции, чтобы при наличии свободной памяти следующие 10-20 композиций сразу загружались и не требовали обращения к носителю, который может быть и сетевым.
В статье неявно подразумевается, что человек занимается одинаковыми вещами при различном объёме компенсаций. Но, зачастую, повышение заработной платы приводит к изменению должностных обязанностей и сферы ответственности. Иногда переход из одной сферы в другую тоже подразумевает изменение «зарплатной вилки». Знаю несколько примеров, когда люди уходили на значительное понижение заработной платы лишь для смены рода занятий и потенциального роста через несколько лет.
Что касается низкой заработной платы, то тут тоже не всё так однозначно. В некоторых компаниях постоянно «выжимают» работника и он готов перейти в другую компанию на меньшую компенсацию. Есть на рынке компании, которые платят чуть выше рынка, но на собеседовании заявляют, что у них принят десятичасовой рабочий день. Кому-то хочется быть уверенным, что уйдя с работы он на 15 часов вообще забудет всё, что с ней связано, а кто-то даже ночью думает про свои должностные задачи.
Знаю компанию, где сотрудникам устанавливали в компьютеры новейшие игровые видеокарты, чтобы после рабочего дня могли поиграть между собой. За счёт этого удаётся сохранить коллектив и не повышать сильно зарплату. Есть компании, где установлен душ и оборудованы комнаты отдыха.
Соглашайтесь, оно всё ещё актуально. Сбережёт уйму сил.
Недавно наткнулся на ошибку в Android приложении Яндекс.Метро. Если бы был чемпионкой мира по синхронному плаванию, то обязательно спросил бы: «Кто создавал программу „для галочки“? Кто работал „на отшибись“? Кто слабое звено?».
Вы догадались, что тут я намекал на одну телеведущую? Мне кажется, что это вполне соответствует её амплуа.
Но даже при отключённой функции «Сообщать о пробках» программа продолжает показывать текущее местонахождение (стандартная функция Android всё ещё выключена).
Где именно здесь негатив? Это просто констатация факта наличия ошибки.
Прикрываясь с помощью «AS-IS» компании могут безответственно выпускать программные продукты любого качества. Разгильдяйство не наказывается пока «пипл хавает», можно делать всё «на отшибись»..
Во-первых, здесь речь не идёт о какой-нибудь конкретной компании. Это общее описание ситуации. Во-вторых, в первом предложении обращаю внимание на слово «могут». Я не пишу, что выпускают, а лишь могут. Причина в том, что потребитель окажется сам виноват, что использует продукт.
Достаточно «включить мозг» при разработке и тестировании, чтобы улучшить программный продукт.
В разделе «Заключение» данная фраза соответствует следующей фразе в начале статьи: «В данной статье опишу простые советы, которые помогут улучшить качество программ».
Ну и само название статьи: «Думайте при разработке». Так как вся ваша статья посвящена разбору ошибок во вполне конкретной программе, то и все эти фразы относятся к разработчикам этой самой программы, правда ведь?
Совет «подумать» имеет положительный смысл, чаще всего можно рассматривать как подсказку, предложение «выйти из ступора». Негативными были бы фразы: «А ты вообще думал?», «Чем ты думал?» и т.п.
Что же касается времени.
Ваши варианты лишь подтверждают мою фразу из статьи: «Если в программе используется время, то необходимо аккуратно разрабатывать программу и тестировать её». Если выбирать между «корректная работа при правильных настройках» и «часто корректная работа при ошибочных настройках», то я за первый вариант. В следующий раз обязательно проверю, каким образом люди меняют время на своих устройствах при смене часовых поясов.
Программа отображает маршруты между двумя станциям, но наиболее очевидный (и короткий) не находит.
и почти половина статьи про это. Собственно, это и является проблемой с графом, а не алгоритмической ошибкой.
Ваши рассуждения были бы корректны, если бы речь шла про общий алгоритм работы. Но тут конкретная реализация алгоритма обработки содержала ошибку. Возьмите корректный граф и правильный алгоритм. Теперь скопируйте алгоритм, но при определённом входном условии измените выходные данные.
Есть приложение, все пользуются, довольны — а у меня глюк на глюке
Сталкивался с подобным. Иногда понимание принципов работы и представление о внутренних процессах позволяют предположить, каким образом приложение могло бы работать и что должно было бы делать. Пользователи же чаще используют тот или иной найденный способ без попытки его изменить, причём не всегда задумываются даже об удобстве.
Приведу пару примеров. Одному специалисту потребовалось через подчёркивание соединить два столбца в Excel. Строк было несколько тысяч. Он вручную копировал и соединял отдельные ячейки. Через какое-то время ему рассказали про формулы и помогли написать =СЦЕПИТЬ(C140;"_";D140). Он был рад. Дальше зашёл в эту ячейку, скопировал формулу, зашёл в следующую ячеку, вставил формулу, заменил 140 на 141. Потом скопировал ещё раз и заменил 141 на 142. Через некоторое время понял, что это очень неудобно и долго, поэтому вернулся к ручному соединению ячеек. Эту операцию он выполнял очень быстро.
Однажды сотрудник некоторой компании вернулся из отпуска и обнаружил, что пропала возможность копирования текста из Adobe Reader, а сама программа изменилась. Он решил, что руководство заблокировало эту возможность. Поскольку коллеги регулярно просили прислать фрагменты текста, то сотрудник печатал нужные страницы, потом шёл их сканировать, распознавал и отправлял коллегам. Это было очень неудобно. Я «спас жизнь» выбором 'Select Tool' вместо 'Hand Tool'.
P.S. Пытаясь отправить это сообщение обнаружил, что если нажать «ответить», а потом просто вставить текст из буфера обмена через контекстное меню, то обе кнопки («Предпросмотр» и «Написать») останутся неактивными.
Яндекс — большая компания, и если какой-то один работник увидел вашу статью — это не значит, что информация о ней попала к разработчикам. Тем более сотрудники оставляют комментарии как частные лица, их комментарии не считаются ответом от лица компании. Вы сами написали адрес формы службы поддержки — так сложно написать туда ссылку на статью?
А смысл?
Подумайте и докажите, что в предыдущих сообщениях я был прав. Поверьте, это значительно проще, чем пытаться защитить свою позицию.
Тем более, что всё равно вы уже ушат помоев вылили, и заодно сказали, что разработчики яндекс.метро мозг не включали и не тестировали свой продукт, работали «на отшибись».
Вы заблуждаетесь, не стоить верить всем комментариям, в которых написано, что другие думают. Прочитайте ещё раз статью и попробуйте процитировать хотя бы одно негативное высказывание в адрес компании Яндекс или её разработчиков.
По второй части — это, простите, вы работаете «на отшибись». Вы написали большую статью про тестирование продукта, про необходимость изучения особых точек функционала, а потом пишете, что достаточно будет пары строк.
И какая связь? Я написал, что «Разница в реализации будет всего в пару строк», поскольку надо лишь учитывать часовой пояс телефона и часовой пояс города с метро.
Начнём с простого:
Вопрос посложнее:
Я отключаю интернет и, находясь в Москве, включаю карту метро Минска. Время надо переводить? А если я то же самое делаю находясь в Минске? Как определить, где я нахожусь, без интернета?
Зачем определять, где находитесь? Моменты времени общие для всех. На часах может быть любое значение до тех пор, пока задан верный часовой пояс (для отображаемого времени, а не местоположения).
У меня корректно задано московское время и московский часовой пояс, на часах 00:01. Открываю карту метро Минска. Программа выдаёт, что метро закрыто. Это не соответствует действительности, поскольку в Минске ещё 23:01 (метро закрывается в 00:00), а в Москве метро закроется в 01:00. Ошибка. Сомневаюсь, что вначале было сделано корректно, потом вычислили вероятности и пришли к выводу, что если сделать неправильно, то результат чаще будет правильным.
Как повод для обсуждений — исходные данные графа о времени пересадок. Но вы обсуждения, очевидно, не хотите.
А что с графом? В программе нет явных ошибок в данных по связям станций между собой. Обсуждения люблю, но фантазировать не всегда есть время. Если есть тема — поднимайте.
Вы сделали неправильно. Корректным было бы отправить разработчикам ссылку на эту статью. Вам же вряд ли бы захотелось, чтобы я поливал вас грязью в каком нибудь другом бложике, правда? Особенно если бы ещё в том, другом бложике, написал через пару дней: очевидно, автору статьи насрать на мнение окружающих, потому что он мои комментарии к своей статье в интернете не нашёл и не отреагировал. Глупо звучит, правда? Вы сейчас сделали то же самое. И не надо писать о том, что мол хабр все обязаны читать и т.д.
Давайте не будем передёргивать факты. Я был уверен, что в Яндекс узнают об этой статье. Даже если никто из Яндекса её не прочитает, то обязательно кто-нибудь из знакомых позвонил бы или рассказал. На Хабре есть возможность в профиле написать, что работаешь в Яндексе, поэтому решил проверить, оставлял ли кто-нибудь из компании Яндекс комментарии к этой статье. Нашёл следующий комментарий (находится чуть ниже) пользователя danilchenko. Добавлю к тому комментарию, что правильный адрес обратной связи следующий mobile-feedback.yandex.ru/?from=m-metro, найти его можно (в лицензионном соглашении).
Кстати, вы когда про какие либо фичи пишете (типа попытки определения правильного текущего времени) — то подумайте, на сколько этот кейс популярен и сколько будет стоит их разработка и тестирование. Пока я видел не локальное время на телефоне только у людей, которые забыли его перевести, и при этом изначально ставили ручной перевод часов. Очевидно, что при ответе программы «а метро то уже закрыто» они бы часы перевели. Держать на телефоне московское время, находясь при этом в Минске — очень редкое развлечение.
Разница в реализации будет всего в пару строк, поскольку системе известен часовой пояс, с которым связано отображаемое время. Моменты времени абсолютны, поэтому если конкретное метро закрывается, то оно закрывается в определённый момент сразу для всех, даже если кто-то и окажется в другом часовом поясе.
Что касается перевода стрелок часов, то это тоже делают не все. Например, я перевожу наручные часы, а в телефоне просто добавляю вторые часы с местным временем. Проблем не было. Более того, если приезжаете в город всего на день-два, то вторых часов (на экране) может быть достаточно.
«Нет ничего более постоянного, чем временное».
В большинстве случаев они настолько хорошо закреплены, что никто и не подумает их передвинуть. Например, на станции Серпуховская.
Считаю некорректным писать и разработчикам, и сюда. Для исправления замечаний будет достаточно и этой статьи, если у сотрудников Яндекса будет соответствующее желание.
Найденную ранее ошибку в другом приложении в Яндекс передал, а ошибка в Яндекс.Метро была слишком удобной для иллюстрации статьи, поэтому решил написать на Хабре.
Речь про формулы в Excel? Вы можете привести пример или описать его, к какому классу относятся проблемные функции?
У MS Office 2010 есть элементы, которые открываются как растровые изображения в предыдущих версиях, но обычно об этом предупреждают при сохранении.
P.S. Считаю, что сейчас реальной альтернативы офису нет. Но претензии у меня тоже есть, например, возмущаюсь, когда Excel постоянно пытается преобразовать формат, особенно раздражает, что везде видит даты.
Пару лет назад пытался отказаться от MS Office. Использовал Ubuntu, в которой установил Libre Office. Документами практически ни с кем не обменивался, а для внутреннего использования функций вполне хватало. Интерфейсом был очень недоволен, поскольку даже для выполнения простейших вещей приходилось ломать голову. Например, копирование строки и вставка в Calc. С этим ещё можно жить. Ещё можно пережить продукты некоторых компаний, которые работают только с MS Office.
Основная проблема всех заменителей офиса в том, что они некорректно отображают файлы. Вот пример двух файлов:
Запустите Word, чтобы посмотреть как они должны выглядеть. Попробуйте найти любой другой редактор, который отобразит их в похожем виде, хотя бы совпадёт по разбиению на страницы. (Год назад найти такого не удалось.)
Мне абсолютно наплевать на любые функции, если я не могу просто распечатать присланный мне документ в том виде, в котором его отправили.
P.S. Что касается Windows RT, то там процессор ARM, мне не удалось найти Libre/Open Office под ARM. Только описание возможности сборки wiki.openoffice.org/wiki/ARM
У самого нет, поэтому сказать не могу. Когда сравнивал разные модели, то про макросы не спросил, проблем же с основными функциями не было. Надо будет уточнить.
К сожалению, сложилось впечатление, что получается «каша из топора», поскольку за всеми дополнениями уже почти не видно самого scrapy, а интеграцию «бесшовной» вряд ли назовёшь.
На Python программирую «со словарём», поэтому правильная настройка и подбор всех составных частей может занять некоторое время. В ходе поиска приемлемой документации по созданию решения сложнее «Hello, world!» наткнулся ещё на Grab:Spider habrahabr.ru/post/142212/, который выглядит более простым, чем scrapy.
Сейчас думаю, что набросаю первую версию платформы для решения своих конкретных задач. После этого смогу уже помериться с другими решениями.
Для меня самого более привлекательным выглядит вариант использования готового решения. В статье привёл семь основных требований к платформе, при этом для разбора нового сайта мне потребуется лишь реализовать парсинг страниц, причём в итерационном режиме. В качестве неплохого критерия предлагаю парсинг форума phpBB. Это должно быть простой задачей, требующей от меня лишь разбора страниц. Если знаете подходящее решение, то дайте, пожалуйста, конкретные рекомендации к реализации.
Частично соглашусь по поводу Data Mining и Data Extraction, но тут очень субъективно, особенно, если учесть, например, обогощение данных при обновлениях.
Паук, который умеет разбирать уже ранее скаченные документы является более продвинутым, чем тот, который этого не умеет. Аналогично с возможностью загрузки дополнительных данных и дополнению ранее полученных. Для измерения интеллекта Интернет-пауков давайте введём понятие «коэффициента интеллекта» аналогично человеческому. Тогда надо взять всех Интернет-пауков, оценить их по критериям (семь уже предложил, можем взять и другие), после чего построить нормальное распределение и можно уже оценивать интеллект. Если учесть количество простейших пауков, то ИнКр будет среди них интеллектуалом. Вам проще всего привести примеры более продвинутых вариантов, которые доступны для использования.
К сожалению, примеров реализации более-менее сложных проектов не нашёл. Для простой скачки меня вполне wget устраивает. Парсинг страниц смогу без проблем написать. Вы можете проконсультировать по поводу правильной настройки Scrapy, чтобы он полностью скачал phpBB форум и умел докачивать новые темы и сообщения (без полного обхода всего сайта)?
Вы правы, что модуль мониторинга должен быть связан с остальными модулями, но схема верхнего уровня, поэтому обозначена основная роль — взаимодействие с пользователем: предоставление информации по результатам обработки и инициализация новых итераций. Совсем не показан процесс получения новых заданий для загрузки, но это лишь усложнило бы схему, при этом архитектура принципиально не изменилась бы.
В схеме старался максимально уменьшить каждый блок, а также сделать некоторый стандартный набор, который можно будет повторно использовать с помощью минимальной параметризации для другого сайта. Модуль загрузки универсален и может быть единым для всех сайтов.
Модуль загрузки не должен принимать решение о специальных действиях, вроде авторизации на сайте, поскольку параллельно идут и другие запросы к этому же сайту. Если каждый будет авторизовываться, то это просто в два раза увеличит количество запросов, а также приведёт к сомнительной активности в логах сайта.
Хочу отметить, что блоки 1-3 очень тесно связаны между собой. Модуль проверки, фактически, должен выполняться моментально после загрузки, скорее всего, это будет простой callback, но считаю верным их разделить логически.
О зависимостях страниц думал в контексте сохранения ссылки для проверки, не потерялась ли она. Вы натолкнули меня на мысль, что необходимо добавить ещё chain и в модуль загрузки.
Вашу статью с интересом прочитаю. Сейчас планирую подойти к реализации максимально просто. У меня есть набор скриптов (на Node.js), которые отлично занимаются загрузкой, но любая ошибка приводит к множеству дополнительных действий на исправление логики, а также времени на повторную загрузку. Начну с более чёткого деления на модули и некоторого обобщения внутренних структур.
Самым неприятным для реализации сейчас представляется модуль обновления и структура хранилища. Мне хочется, чтобы платформа сама позволяла хранить различные именованные сущности, причём с поддержкой версий.
P.S. Где-то надеялся, что уже есть готовое решение, поэтому можно будет обойтись без собственной разработки.
а) Освобождение блокировки файла и его каталога, чтобы, например, переименовать/переместить или удалить;
б) ArsNG правильно упомянул про блокировку аудиоустройств (WASAPI);
в) Освобождение блокировки сетевых подключений, например, для экономии трафика на мобильном устройстве или самого соединения с удалённым компьютером при воспроизведении сетевых файлов.
Чтобы интерфейс не был перегружен дополнительной кнопкой, которая не всегда нужна, можно на 2-3 секунды после паузы превращать кнопку play в кнопку стоп. Таким образом, если человеку нужна именно кнопка «стоп», то это сработает при двойном нажатии на паузу, причём не понадобится новых комбинаций клавиш или кнопок. Вот небольшой анимированный пример.
P.S. Если уж было упомянуто кэширование в онлайн-плеерах, то оно тоже частичное, поскольку останавливается через некоторое время. То есть у меня нет возможности сказать, чтобы было закэшировано всё произведение полностью, а не первый кусок. Из-за этого вначале просматривается с тормозами, а потом уже нормально. Но это проблема не только онлайн-плееров. Например, у меня foobar не даёт заснуть жёсткому диску, поскольку постоянно подгружает очередной фрагмент файла, а оперативной памяти 4Гб полностью свободно и не используется. Я был бы рад опции, чтобы при наличии свободной памяти следующие 10-20 композиций сразу загружались и не требовали обращения к носителю, который может быть и сетевым.
У кого-нибудь это работает? Может быть подобная схема установки или AndroVM поможет?
Что касается низкой заработной платы, то тут тоже не всё так однозначно. В некоторых компаниях постоянно «выжимают» работника и он готов перейти в другую компанию на меньшую компенсацию. Есть на рынке компании, которые платят чуть выше рынка, но на собеседовании заявляют, что у них принят десятичасовой рабочий день. Кому-то хочется быть уверенным, что уйдя с работы он на 15 часов вообще забудет всё, что с ней связано, а кто-то даже ночью думает про свои должностные задачи.
Знаю компанию, где сотрудникам устанавливали в компьютеры новейшие игровые видеокарты, чтобы после рабочего дня могли поиграть между собой. За счёт этого удаётся сохранить коллектив и не повышать сильно зарплату. Есть компании, где установлен душ и оборудованы комнаты отдыха.
Вы догадались, что тут я намекал на одну телеведущую? Мне кажется, что это вполне соответствует её амплуа.
Где именно здесь негатив? Это просто констатация факта наличия ошибки.
Во-первых, здесь речь не идёт о какой-нибудь конкретной компании. Это общее описание ситуации. Во-вторых, в первом предложении обращаю внимание на слово «могут». Я не пишу, что выпускают, а лишь могут. Причина в том, что потребитель окажется сам виноват, что использует продукт.
В разделе «Заключение» данная фраза соответствует следующей фразе в начале статьи: «В данной статье опишу простые советы, которые помогут улучшить качество программ».
Совет «подумать» имеет положительный смысл, чаще всего можно рассматривать как подсказку, предложение «выйти из ступора». Негативными были бы фразы: «А ты вообще думал?», «Чем ты думал?» и т.п.
Ваши варианты лишь подтверждают мою фразу из статьи: «Если в программе используется время, то необходимо аккуратно разрабатывать программу и тестировать её». Если выбирать между «корректная работа при правильных настройках» и «часто корректная работа при ошибочных настройках», то я за первый вариант. В следующий раз обязательно проверю, каким образом люди меняют время на своих устройствах при смене часовых поясов.
Ваши рассуждения были бы корректны, если бы речь шла про общий алгоритм работы. Но тут конкретная реализация алгоритма обработки содержала ошибку. Возьмите корректный граф и правильный алгоритм. Теперь скопируйте алгоритм, но при определённом входном условии измените выходные данные.
Сталкивался с подобным. Иногда понимание принципов работы и представление о внутренних процессах позволяют предположить, каким образом приложение могло бы работать и что должно было бы делать. Пользователи же чаще используют тот или иной найденный способ без попытки его изменить, причём не всегда задумываются даже об удобстве.
Приведу пару примеров. Одному специалисту потребовалось через подчёркивание соединить два столбца в Excel. Строк было несколько тысяч. Он вручную копировал и соединял отдельные ячейки. Через какое-то время ему рассказали про формулы и помогли написать =СЦЕПИТЬ(C140;"_";D140). Он был рад. Дальше зашёл в эту ячейку, скопировал формулу, зашёл в следующую ячеку, вставил формулу, заменил 140 на 141. Потом скопировал ещё раз и заменил 141 на 142. Через некоторое время понял, что это очень неудобно и долго, поэтому вернулся к ручному соединению ячеек. Эту операцию он выполнял очень быстро.
Однажды сотрудник некоторой компании вернулся из отпуска и обнаружил, что пропала возможность копирования текста из Adobe Reader, а сама программа изменилась. Он решил, что руководство заблокировало эту возможность. Поскольку коллеги регулярно просили прислать фрагменты текста, то сотрудник печатал нужные страницы, потом шёл их сканировать, распознавал и отправлял коллегам. Это было очень неудобно. Я «спас жизнь» выбором 'Select Tool' вместо 'Hand Tool'.
P.S. Пытаясь отправить это сообщение обнаружил, что если нажать «ответить», а потом просто вставить текст из буфера обмена через контекстное меню, то обе кнопки («Предпросмотр» и «Написать») останутся неактивными.
Подумайте и докажите, что в предыдущих сообщениях я был прав. Поверьте, это значительно проще, чем пытаться защитить свою позицию.
Вы заблуждаетесь, не стоить верить всем комментариям, в которых написано, что другие думают. Прочитайте ещё раз статью и попробуйте процитировать хотя бы одно негативное высказывание в адрес компании Яндекс или её разработчиков.
И какая связь? Я написал, что «Разница в реализации будет всего в пару строк», поскольку надо лишь учитывать часовой пояс телефона и часовой пояс города с метро.
Зачем определять, где находитесь? Моменты времени общие для всех. На часах может быть любое значение до тех пор, пока задан верный часовой пояс (для отображаемого времени, а не местоположения).
У меня корректно задано московское время и московский часовой пояс, на часах 00:01. Открываю карту метро Минска. Программа выдаёт, что метро закрыто. Это не соответствует действительности, поскольку в Минске ещё 23:01 (метро закрывается в 00:00), а в Москве метро закроется в 01:00. Ошибка. Сомневаюсь, что вначале было сделано корректно, потом вычислили вероятности и пришли к выводу, что если сделать неправильно, то результат чаще будет правильным.
А что с графом? В программе нет явных ошибок в данных по связям станций между собой. Обсуждения люблю, но фантазировать не всегда есть время. Если есть тема — поднимайте.
Разница в реализации будет всего в пару строк, поскольку системе известен часовой пояс, с которым связано отображаемое время. Моменты времени абсолютны, поэтому если конкретное метро закрывается, то оно закрывается в определённый момент сразу для всех, даже если кто-то и окажется в другом часовом поясе.
Что касается перевода стрелок часов, то это тоже делают не все. Например, я перевожу наручные часы, а в телефоне просто добавляю вторые часы с местным временем. Проблем не было. Более того, если приезжаете в город всего на день-два, то вторых часов (на экране) может быть достаточно.
В большинстве случаев они настолько хорошо закреплены, что никто и не подумает их передвинуть. Например, на станции Серпуховская.
Преимущество будет более существенным, например, ночью.
Найденную ранее ошибку в другом приложении в Яндекс передал, а ошибка в Яндекс.Метро была слишком удобной для иллюстрации статьи, поэтому решил написать на Хабре.
У MS Office 2010 есть элементы, которые открываются как растровые изображения в предыдущих версиях, но обычно об этом предупреждают при сохранении.
P.S. Считаю, что сейчас реальной альтернативы офису нет. Но претензии у меня тоже есть, например, возмущаюсь, когда Excel постоянно пытается преобразовать формат, особенно раздражает, что везде видит даты.
Вы каким редактором пользуетесь? Попробуйте открыть приведённые в предыдущем сообщении файлы. Что получилось?
P.S. Командировочное удостоверение должно быть на двух страницах, а во втором файле все страницы со второй должны содержать картинку (слайд) вверху.
Основная проблема всех заменителей офиса в том, что они некорректно отображают файлы. Вот пример двух файлов:
Запустите Word, чтобы посмотреть как они должны выглядеть. Попробуйте найти любой другой редактор, который отобразит их в похожем виде, хотя бы совпадёт по разбиению на страницы. (Год назад найти такого не удалось.)
Мне абсолютно наплевать на любые функции, если я не могу просто распечатать присланный мне документ в том виде, в котором его отправили.
P.S. Что касается Windows RT, то там процессор ARM, мне не удалось найти Libre/Open Office под ARM. Только описание возможности сборки wiki.openoffice.org/wiki/ARM