Идея приложения: Как оставить чаевые с банковской карты

Когда 2012 году я гостил в Нидерландах у друга, то обратил внимание на то, что в заведениях где принимали к оплате банковские карты (об оплате картами в Нидерландах можно написать отдельно), на терминале можно было сразу оставить чаевые официанту. В России я такое встречал только у одной службы такси: у них при оплате картой можно было выбрать сумму чаевых (50 или 100 рублей). Не знаю с чем связано отсутствие подобного в России: возможно нужно как-то настроить терминал, а может непонятно какие налоги с этих сумм платить, но отсутствие подобной возможности меня печалит.

В конце прошлого года мне пришла в голову идея такого приложения. Через несколько дней я услышал про приложение Plazius от Сбербанка, нашел какие-то зачатки его конкурентов и «успокоился». А сегодня на обеде, когда не обнаружил в кармане мелких купюр, то снова вспомнил о своей идее.

Читать далее

Тестирование сайта в разных версиях Internet Explorer

Иногда возникает необходимость протестировать веб-сайт в разных версиях Internet Explorer. Microsoft позаботилась об этом и подготовила образы виртуальных машин с Internet Explorer версий 8, 9, 10, 11 и MSEdge.

Бесплатные SSL-сертификаты 2

В конце 2016 года Google решил перевести весь интернет на HTTPS, маркируя в Google Chrome сайты как «надежные» и «ненадежные». И так как Google Chrome — один из популярных браузеров (а кроме того есть еще куча браузеров на его базе), то снова встал вопрос о бесплатных сертификатах. Получение и обновление сертификатов через центр сертификации StartSSL достаточно трудоемкий процесс, и для большого количества сайтов хотелось бы иметь более простое решение.

Читать далее

Хранение файлов в MySQL

В одном проекте было принято решение хранить все файлы в базе данных. В статье Huge File Storage in Database instead of File System описан наилучший вариант — для хранения файлов создается две таблицы: в одной хранятся метаданные, а в другой тело файлов, разбитое на куски по 512 000 байт.

Управление индексацией сайта посредством X-Robots-Tag

Большинство разработчиков довольно редко задумывается о SEO, но иногда появляются специфические задачи связанные с ним: например, информация отображаемая на странице не должна быть доступна для индексирования или же сохранена в кеше поисковика. До недавнего времени я в таких случаях использовал метатег robots, но на днях обнаружил более удобный его аналог в виде http-заголовка X-Robots-Tag. Google поддерживает его с лета 2007 года, Спутник тоже, а вот Яндекс до сих пор нет.

Читать далее

Режимы совместимости Internet Explorer (X-UA-Compatible)

Корпоративные пользователи очень консервативны, вернее консервативны их админы. Если вы что-то делаете для крупного корпоративного заказчика, то забудьте про Google Chrome или Firefox — скорее всего ваше приложение должно работать под Internet Explorer 8.

Читать далее

Включение Subversion Auto-Props

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

Читать далее

Логическая задача про носки

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

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

Читать далее

Universal Analytics и кириллические (idn) домены

На днях закончилось бета-тестирование Universal Analytics, и именно этот продукт пришел на замену Google Analytics, и предлагается использовать на своих ресурсах.

Вместе с названием продукта изменился так же код отслеживания. Теперь в нем в обязательном порядке присутствует имя домена. Код подключения выглядит следующим образом.

  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-46090018-1', 'длиннейший-зарегистрированный-кириллический-домен.рф');
  ga('send', 'pageview');

Но на данный момент этот код не работает. Предполагаю, что связано это с тем, что idn-домены представляются в виде punycode, и длиннейший-зарегистрированный-кириллический-домен.рф выглядит как xn——6cdalgfhccecsmbfadaabhbjgvehta3bfanaqrs0ddbj5as1a6wta0o.xn—p1ai. И для того что бы сбор статистики заработал необходимо заменить idn-представление, на punycode.

  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-46090018-1', 'xn------6cdalgfhccecsmbfadaabhbjgvehta3bfanaqrs0ddbj5as1a6wta0o.xn--p1ai');
  ga('send', 'pageview');