Сайт Романа ПарпалакаБлогИзбранное

Избранное

* Клиент хочет копировать эксель-таблицы на сайт

26 августа 2015 года, 22:10

Попробуем новый для этого блога формат советов.

Клиент хочет копировать отформатированные таблицы из Экселя в визуальный редактор на сайте, чтобы ничего не менялось. Мы разработали сайт на базе Вордпресса, и в нем это не получается, форматирование не сохраняется. Возможно ли в принципе то, что хочет клиент? Если нет, то как это красиво и обоснованно ему объяснить?

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

Как применить это решение в вашем конкретном случае — не знаю. Возможно, поможет плагин tinymce-advanced. Если нет, придется править исходный код.

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

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

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

P.S. Присылайте вопросы по технологиям и отношениям с людьми в разработке сайтов.

Ключевые слова: веб-разработка, совет | Комментарии (1)

* Последовательная загрузка торрентов

26 февраля 2015 года, 23:30

Самая важная функция торрентов, помимо собственно файлообмена, — это последовательное скачивание файлов.

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

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

Пионер технологии uTorrent

Впервые подобная функция под названием streaming появилась в uTorrent версии 3.0. Он скачивал подряд несколько первых фрагментов и умел отдавать их через встроенный сервер потокового видео. Просматривать это потоковое видео можно было через плеер VLC. По мере просмотра зона последовательной предзагрузки продвигалась вперед, чтобы обеспечить систему достаточным для воспроизведения набором данных.

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

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

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

Во-вторых, в этой схеме не работает перемотка видео. Вы что-то не расслышали? Вернуться на 10 секунд назад не сможете. И было бы не так страшно, если бы перемотку в принципе отключили. Но при попытке перемотать видео оно сбрасывалось к началу, что особенно печально, если вы уже посмотрели половину фильма. После сброса спасало проигрывание просмотренного фрагмента на большой скорости. Либо ожидание полного скачивания.

Потом я сообразил, что можно запустить два плеера одновременно: VLC на большой скорости без звука, чтобы обеспечить последовательную загрузку данных, и обычный плеер с незавершенным файлом. И, наконец, я выставил в параметрах мю-торрента размер области предзагрузки заведомо больше размера файла (параметр streaming.min_buffer_piece), чтобы она никогда не заполнялась.

Итоговая схема:

  • запускаешь торрент на скачивание;
  • нажимаешь на кнопку «Поток»;
  • открываешь файл в обычном плеере.

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

Я использовал такую схему несколько лет. Но в прошлом году вышла версия мю-торрента 3.4, из которой потоковый просмотр фильмов по мере загрузки выпилили. Причем не до конца: пустое место от кнопки «Поток» реагировало на нажатие и запускало потоковую загрузку! Но из-за отключенной возможности регулировать размер области предазгрузки большой пользы в этом не было.

Нормальная реализация в qBittorrent

Некоторое время я использовал предыдущую версию с выключенными обновлениями. Но, настраивая новый ноутбук, я подумал, что пляски с бубном вокруг мю-торрента должны закончиться. Изучил аналоги и нашел программу qBittorrent. Она не такая навороченная, как мю-торрент. Но мне ее возможностей достаточно. И честная последовательная загрузка включена в штатные функции и доступна без дополнительной настройки.

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

А как вы скачиваете фильмы? Используете последовательную загрузку? Будете ли использовать?

Ключевые слова: софт, интерфейсы | Комментарии (6)

* Линч

21 февраля 2012 года, 22:18

Разбор ошибок в рекламе из предыдущего поста в известном формате. Алик Кириллович указал 5 ошибок. Я нашел еще 7.

Это всё, или мы что-то проглядели?

Добавлено: Анатолий Буров напомнил в комментариях про «ОКРОШКУ».

Ключевые слова: дизайн | Комментарии (5)

* Непослушные программы

1 февраля 2012 года, 23:11

Иногда в отношениях между людьми оказывается полезным следующий принцип: «Не делай того, о чем тебя не просили». Его нужно применять и к разработке программного обеспечения. Чтобы пояснить эту мысль, расскажу историю.

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

Как оказалось, «умный» Андроид без спросу синхронизировал контакты в телефоне и в почте. В ходе этого процесса он объединил номер телефона и e-mail в один общий контакт. При этом где-то в глубине настроек была установлена галочка «скрывать контакты gmail». Из-за нее номер телефона и пропал из списка. Если бы программное обеспечение не делало того, о чем его не просили, я бы не оказался в затруднительной ситуации.

Во-первых, я не пользуюсь адресными книгами в почте и не понимаю, зачем они нужны. Когда мне нужно написать письмо, я открываю предыдущее письмо от этого человека и нажимаю «ответить». Если это новое письмо, я стираю старую тему и пишу новую. Тем не менее, почта Гугла молчаливо создавала список контактов.

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

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

Она сообщает, что придется открыть еще одно соединение с сервером, и спрашивает, согласен ли я. Разумеется, я согласен на всё что угодно, чтобы окно терминала наконец-то открылось.

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

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

А ваши программные продукты послушные?

Ключевые слова: дизайн, софт | Оставить комментарий

* Чурофметика

21 января 2012 года, 17:29

Слушатели Эха Москвы помнят недавнее интервью Чурова, в котором он опровергает математику:

Чуров совершенно правильно назвал свою аналогию с конфетками наперсточничеством. Я собираюсь показать это, предложив адекватную аналогию.

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

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

Известно, что в одну упаковку в силу ограниченности объема можно поместить не больше 100 конфет. Но так как конфеты до упора никто не набивает, разумно ожидать, что в среднем (где-то больше, где-то меньше) в упаковках будет, скажем, 45 конфет. Для начала наш герой строит гистограмму, где по горизонтальной оси отложено общее количество конфет в упаковке, а по вертикальной — число встретившихся упаковок с данным количеством конфет. Он ожидает увидеть более-менее симметричную колоколообразную кривую с максимумом на 45 конфетах (более того, подобное исследование у конкурентов известной торговой сети показало именно такой результат).

Как же удивляется исследователь, обнаружив нечто совершенно неожиданное!

Здесь примечательны три вещи. Во-первых, кривая несимметрична: много упаковок с завышенным количеством конфет. Во-вторых, имеется большой пик в районе 100 конфет. В-третьих, встречаются небольшие пики в районе 80 и 90 конфет, которые можно объяснить только любовью фальсификаторов, подсыпающих конфеты, к круглым числам.

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

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

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

«Это прекрасно, но какое отношение имеют все эти конфеты к выборам и причем здесь Чуров?» — спросит нетерпеливый читатель. Если заменить конфеты разных цветов на проценты за ту или иную партию, а упаковки эм-энд-эмсов на избирательные участки, то наше конфетное расследование превратится в описание фальсификаций на выборах.

Подобный анализ проводился для выборов 2007 — 2009 годов и для последних думских выборов (идея несколько подробнее описана в первом материале). Анализ показывает, например, что на последних выборах Единая Россия получила не 49%, а 34%.

Вот такие, господин Чуров, конфетки!

Ключевые слова: политика, математика, видео | Комментарии (6)

* О переводе сокращений

22 октября 2010 года, 17:04

Наконец я смог сформулировать, чем мне не нравится способ «переводов» сокращений, при котором получаются РСС, ХТМЛ и ЮСБ.

Если бы транслитерацией пользовались раньше, мы бы имели УСА вместо США. Со временем «УСА» стало бы писаться как «Уса». Сейчас все бы говорили так: «Уса напала на Ирак». Или вот так: «Ты был в Усе?»

Что же делать с иностранными сокращениями в русских текстах? Правильный ответ — адаптировать. В качестве удачного примера можно привести ЧПУ (человекопонятный урл). В английском есть аналогичное сокращение — SEF (Search Engine Friendly). Как обеднел бы язык, если бы вместо ЧПУ использовалось механически транслитерированное СЕФ!

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

Однако адаптация — далеко не универсальное решение. Так уж получается, что в русском языке переводы компьютерных терминов приживаются плохо. Поэтому нет ничего страшного в том, чтобы в специальных текстах честно писать RSS или HTML, а не прятаться за ничего не обозначающими РСС или ХТМЛ:

XHTML 2.0 оказался непопулярным стандартом, поэтому стал разрабатываться новый стандарт, HTML 5.

Если в текстах для широкой аудитории очень хочется избежать использования нерусских букв, можно передать звучание аббревиатуры:

Страницы всемирной паутины создаются на специальном языке Эйч-Ти-Эм-Эль.

Однако в этом случае лучше всего вообще отказаться от попыток перевода сокращения и передать смысл другими словами:

Страницы всемирной паутины создаются на специальном языке гипертекстовой разметки.
Ключевые слова: язык | Комментарии (3)

* Универсальная мера всех форм взаимодействия материи

23 марта 2010 года, 23:05

В комментариях к одной старой заметке написали следующее:

Универсальная мера всех форм взаимодействия материи?

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

Я их ненавижу. Это вопрос договоренности и определений. Ответ на него не сообщает о природе ничего. Действительно, только человеку приходит в голову мерить что-нибудь. Да еще и требовать от меры универсальности.

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

Совершенно по-другому обстоят дела с задачами. Например, в поле тяжести Земли тела падают вертикально вниз. Можно спросить: а как будет двигаться заряженное тело, если добавить еще и магнитное поле? Это хороший вопрос. И прелесть физики в том, что выкладки на бумаге могут дать ответ. И если вдруг появляется человек, оспаривающий результат, в крайнем случае можно провести эксперимент и доказать несогласному его неправоту.

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

Ключевые слова: физика | Комментарии (1)

* Ксилометазолин

28 октября 2009 года, 22:09

Сегодня зашел в аптеку. Нет, за каплями для носа.

— У вас есть ксилометазолин?

Вообще, ксилометазолин — отличные капли, очень помогают переносить насморк. Фармацевт с умным видом нажала кнопки на клавиатуре, посмотрела на монитор и выдала:

— Ксилометазолин — это действующее вещество. Оно может встречаться в разных лекарствах.

Она перечислила четыре совершенно не запоминающихся названия (единственное, что в них мелькало, это буквосочетание «рино») и поинтересовалась, какое же из них мне нужно.

Ее ответ, как и следовало ожидать, сразу же поставил меня в ступор. Я-то ксилометазолином пользуюсь не первый год. У меня сразу же всплыл в памяти этот воображаемый диалог:

Представьте, что вам позарез понадобился знаменитый учебник по русскому языку Д. Э. Розенталя. Вы приходите в библиотеку и видите кучу полок с тысячами всевозможных книг. Вы зовёте библиотекаря, и спрашиваете:
— У вас есть Розенталь?
— Конечно! У нас каждая десятая книга содержит учебник Розенталя.
— Какая удача! Дайте мне его, пожалуйста.
— Какой именно?
— Как какой? Обычный, по которому все учатся!
— Понимаете, у нас все Розентали в разных обложках, разной толщины, разного содержания, многие без подписи или подписаны неправильно.
— Не путайте меня, дайте мне обычный учебник, свежий, 3-е издание, серенький.
— Это невозможно, в библиотеке отдельных учебников мало, почти все Розентали входят в сборники. Хотите «Самый Полный Сборник Материалов по Русскому Языку»? У нас их сотни, все очень толстые и разные.
— Бог с вами, давайте. А кто составитель-то? Розенталь?
— Нет, некто Вася Пупкин.
— Аааааааааааа!!!

источник

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

— А сколько они стоят?

Фармацевт выбрала один из препаратов и сказала, что он стоит 162 рубля, а остальные — дешевле. Ее ответ никак мне не помог в принятии решения. Скорее наоборот. Разумеется, я не готов платить за капли для носа 162 рубля. Но мой следующий вопрос попал в точку:

— А галазолин у вас есть?

По моим ощущениям и воспоминаниям галазолин хуже ксилометазолина, но лучше уж галазолин, чем кот в мешке за 162 рубля.

— Есть, но там другое действующее вещество, — со знанием дела сказала фармацевт. — Хотя нет, то же, — добавила она, вернувшись с лекарством. Стоит 34 рубля 90 копеек.

Ключевые слова: lytdybr | Оставить комментарий

* Госэкзамен

15 июня 2007 года, 18:41

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

Одна из них была такой. Кусочек льда, имеющий форму параллелепипеда размером 10×10×8 сантиметров, плавает в воде с температурой 20 °C. Через 20 минут он переворачивается на 90°. Оценить, через какое время перевернется айсберг размером 500×500×300 метров, если температура моря составляет 5 °C.

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

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

Еще несколько фактов об экзамене. В одном из вариантов была забавная опечатка: «ядерный ректор».

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

Ключевые слова: учеба, физика | Комментарии (4)

* Скрип мела

22 февраля 2007 года, 20:57

Мел, которым пишут по доске, имеет свойство скрипеть. Впрочем, вы должны это знать. Не то, чтобы он всегда скрипит. Но как скрипнет — мало не покажется. В свое время я исследовал это явление. Самое главное условие — мел должен быть достаточно длинным. Таким, какой он бывает в упаковках. Короткие кусочки мела не скрипят. От доски тоже многое зависит. Идеальный вариант — стеклянные матовые доски. Мел нужно держать за один конец, прижав его к доске, чтобы другой конец был свободным. Мел должен быть расположен почти перпендикулярно к поверхности доски, свободный конец можно немного отклонить против направления движения. Достаточно начать передвигать мел, как раздается громкий скрип, приводящий окружающих в замешательство. На других досках результат менее предсказуем, возможно, придется экспериментально подобрать оптимальное давление и угол отклонения. Если доска не «запела», можно попробовать провести описанную процедуру на оконном стекле. Оно при этом не царапается, так как мел мягче стекла. Следует отметить, что нужно не переусердствовать в извлекании звуков, так как мел может поломаться. Получившиеся кусочки слишком короткие, и они не поют.

Вчера мы с другом пришли в аудиторию раньше преподавателя и обнаружили длинный мел. Я сразу же вспомнил вышеописанную забаву и стал извлекать звуки из него. Доска не запела. С оконным стеклом получилось удачнее. В тот момент, когда аудитория была наполнена страшными звуками, приоткрылась дверь и из нее показалась голова нашего преподавателя. Когда он понял, что происходит, произнес:
— А, я думал, тут кого-то насилуют.

Ключевые слова: lytdybr | Комментарии (3)
Поделиться
Записи