19 April 2018, 20:28 MSK
Любой хороший предприниматель знает, как важно в бизнесе иметь как можно больше информации о своих клиентах. Одна из таких полезных вещей — источник клиента: с какого канала продаж он пришёл, по какому объявлению кликнул, какой поисковый запрос ввёл и так далее. Поэтому любой хороший сайт отслеживает эти и другие данные, собирая статистику. Эту статистику можно передавать в CRM-систему и использовать для анализа эффективности рекламных компаний.
Если клиент заполняет форму непосредственно на сайте — запомнить данные об его источнике не составляет труда. Но что делать в том случае, если клиент, перейдя на сайт, не заполнял никаких форм, а просто позвонил? Данные с сайта не передаются в телефон, поэтому по-простому узнать, откуда пришёл клиент, совершивший звонок, не выйдет.
Для решения этой проблемы есть одна хитрость, которая называется коллтрекинг. Обычно, когда говорят про коллтрекинг, подразумевают дорогие сервисы с необходимостью накупить кучу телефонных номеров, которые будут подсовываться посетителям сайта в зависимости от источников (статический коллтрекинг) или сессий (динамический коллтрекинг). Всё это влетает в копеечку. Я расскажу, как сделать простой коллтрекинг бесплатно своими руками без регистрации и без смс, не нужно будет даже дополнительные номера покупать. Отмечу, метод не волшебный и обладает как плюсами, так и минусами.
Сегодня очень много людей ищет товары и услуги прямо со смартфонов. Почти половина трафика в рунете — с мобильных устройств. Важным моментом здесь является то, что люди, зайдя на сайт со смартфона, не перепечатывают телефонный номер в звонилку, а просто кликают по нему. Суть метода заключается в том, чтобы отследить клик по телефонному номеру на сайте, запомнить нужные данные о посетителе по клику, а затем связать звонок с кликом на основе временных меток.
16 April 2018, 23:52 MSK
Сегодня Роскомпозор начал думать, что заблокировал мессенджер Телеграм.
Около полутора лет назад я рассказывал, как сделать своего бота для Телеграма, который умеет принимать сообщения и отвечать на них. Но очень часто встаёт другая задача: необходимость отправлять какие-нибудь сообщения или уведомления от бота самому себе прямо из скрипта на PHP (например, с сайта). Это могут быть заявки из формы на сайте, сообщения мониторинга чего-либо, уведомления от каких-нибудь скриптов, ежедневные/еженедельные отчёты и т.д. Можно придумать тысячу сценариев, как это использовать.
Для начала необходимо создать бота. Как я уже писал в прошлой заметке, управление вашими ботами происходит через другого спецбота @BotFather. Для начала нужно добавить его в контакты и что-нибудь ему написать, после чего вы увидите список доступных команд. Отправьте боту команду /newbot, затем напишите в чат имя вашего бота, затем напишите уникальный логин вашего бота (должен заканчиваться на «bot»). В ответ вы получите авторизационный токен — сохраните его и никому не сообщайте. Этот бот будет отправлять нам сообщения.
У Телеграма довольно жёсткая политика конфиденциальности (поэтому там нет спама, как во всяких Вайберах), из-за которой ботом запрещено отправлять сообщения живым пользователям до тех пор, пока пользователь сам не начал беседу с ботом. Поэтому напишите любое сообщение вашему новому боту. Сделать это нужно всего один раз.
Далее необходимо узнать ваш внутренний айди в Телеграме. Проще всего это сделать с помощью бота @ShowJsonBot. Напишите любое сообщение этому боту. В ответ вам придут некие данные в формате JSON. Найдите поле chat, а в нём поле id. Это и есть ваш внутренний айдишник.
Теперь у нас всё готово для отправки сообщений из PHP прямо в Телеграм. Это можно сделать при помощи следующего скрипта:
<?php
// сюда нужно вписать токен вашего бота define('TELEGRAM_TOKEN', '999999999:XXXXXXXXXXXXXXXXXXXXXXXXXXXX');
// сюда нужно вписать ваш внутренний айдишник define('TELEGRAM_CHATID', '99999999');
message_to_telegram('Привет!');
function message_to_telegram($text) {     $ch = curl_init();     curl_setopt_array(         $ch,         array(             CURLOPT_URL => 'https://api.telegram.org/bot' . TELEGRAM_TOKEN . '/sendMessage',             CURLOPT_POST => TRUE,             CURLOPT_RETURNTRANSFER => TRUE,             CURLOPT_TIMEOUT => 10,             CURLOPT_POSTFIELDS => array(                 'chat_id' => TELEGRAM_CHATID,                 'text' => $text,             ),         )     );     curl_exec($ch); }
На этом всё. Если вы хотите, чтобы я сделал бота в Телеграме или другом мессенджере специально для вас, напишите мне: @vkirkizh.
1 April 2018, 22:20 MSK
Когда я нахожусь за границей в поездках, мне необходим мобильный интернет (смотреть карты, строить маршруты, гуглить инфу про места, читать отзывы, искать рестораны, отвечать на почту и т.д.), также мне необходимо оставаться на связи по телефону на своём номере.
Покупать каждый раз местную симку в каждой новой стране — плохая идея. Во-первых, местная симка решает только проблему с интернетом, но не с разговорами. Во-вторых, как правило, все они имеют предоплаченный тариф — то есть, надо заранее решить, сколько ты потратишь денег, неиспользованные средства сгорят. В-третьих, надо тратить время, специально куда-то ехать, чтобы купить эту симку. Не вариант.
Поэтому раньше я всегда пользовался дорогим роумингом. Недавно я был в Берлине и затестил новый способ оставаться всегда онлайн за границей, который гораздо бюджетнее.
Сначала решаем проблему с тем, как дёшево звонить и принимать звонки на своём номере за пределами России. Для этого нам нужен оператор Мегафон (увы, другие не подойдут). Я на нём уже более 15-ти лет, так что всё ОК. У Мегафона есть специальная услуга Мультифон (именно обычный Мультифон, а не Мультифон-Бизнес). Она бесплатная и позволяет совершать/принимать звонки, а также отправлять/принимать смски через интернет вместо GSM по своему домашнему тарифу (по сути, это превращает обычный телефон в IP-телефон). Для этого надо поставить специальное приложение Emotion (iOS, Android). Выглядит оно вот так:
emotion
Переключатель в правом верхнем углу позволяет выбирать между GSM-сетью и интернетом. На скриншоте выбран режим IP-телефонии (звонки и смс через интернет). В этом режиме, где бы мы ни находились, звонки и смски будут стоить столько же, сколько в домашнем регионе без всякого роуминга. Главное, чтобы был интернет. Звонить и отправлять смс нужно именно через это приложение, также в это приложение будут поступать входящие (на айфоне можно не бояться закрыть приложение — у меня всё отлично работало, звонки приходили даже с выключенным приложением, про андроид не в курсе). Если рядом есть вай-фай — больше ничего не нужно. Но, если не сидеть целыми днями в отеле или ресторанах, то вай-фая рядом не будет.
Теперь решаем проблему с дешёвым мобильным интернетом. Я перепробовал несколько вариантов и остановился на международной симке, которая называется Дримсим. Сама симка Дримсим с доставкой стоит 10€. Весь прикол в том, что во многих странах интернет через неё стоит очень дёшево (по сравнению с роумингом). Например, почти во всей Европе 1 гигабайт трафика будет стоить 10€. При этом, тарификация покилобайтная, и нет никаких ограничений (в том числе, на раздачу интернета на другие устройства в режиме модема). Одной симкой с одним счётом можно пользоваться в любой стране. У Дримсима есть своё удобное приложение:
drimsim
Работает это следующим образом. Вы заказываете симку, вам её привозят курьером (если заказать по специальной ссылке, то и мне, и вам дадут по 5€ на счёт). Далее пополняете счёт (это можно сделать любой банковской картой). Перед поездкой вынимаете вашу мегафоновскую симку и втыкаете дримсимовскую, включаете в мегафоновском приложении режим IP-телефонии. Профит. Если разговаривать по телефону через интернет через это приложение, трафика тратится очень немного. У меня получалось меньше 100 мегабайт за час разговора (это меньше 1€). Раньше я тратил минимум 10€ в день на роуминг, а теперь столько же трачу за целую короткую (4-5 дней) поездку.
Через Дримсим также можно совершать звонки напрямую, но это не имеет смысла. Во-первых, звонки будут идти с британского (+44) номера. Во-вторых, цены на звонки совсем не такие интересные, как цены на интернет.
Я пользовался связкой Дримсим+Мегафон в Германии и остался полностью доволен. Но у данного решения есть небольшой минус: Мегафон блокирует смски от банков в своём приложении. Частично это решается включением пуш-уведомлений, но не все банки так умеют. Плюс обычно подтверждения операций покупок по карте в интернете всё равно приходят в виде смсок. Также, к сожалению, далеко не во всех странах поддерживается LTE.
16 March 2018, 20:40 MSK
Дахау — один из первых концентрационных лагерей нацистов, находится недалеко от Мюнхена — столицы Баварии. Сейчас на этом месте открыт мемориальный комплекс в память о жертвах и узниках лагеря. Я побывал здесь во время поездки в Германию в августе 2017.
IMG_6393
11 March 2018, 03:40 MSK
Я долго думал, стоит ли публиковать в блоге не свой код, и решил, что иногда всё-таки стоит, потому что решение описываемой в этом посте проблемы в рунете мне найти не удалось.
Сразу к делу. В мобильном Сафари уже несколько Айосов подряд есть такая замечательная кнопка (вызывается по долгому нажатию на значок перезагрузки страницы в адресной строке):
request-desktop-site
Такая же кнопка есть в Хроме на Андроиде и Айосе. В английском интерфейсе называется «Request Desktop Site».
К сожалению, работает она по-дурацки: когда нажимаешь эту кнопку, браузер просто подменяет свой юзер-агент с мобильного на десктопный, и всё. Кто-нибудь верстает сайты так, чтобы подсовывать браузерам разные стили в зависимости от юзер-агента? Обычно нет.
6 March 2018, 00:20 MSK
Проблема подчёркивания ссылок в вебе стоит очень давно. Лично я согласен с Ководством Лебедева в том, что ссылки всегда должны быть подчёркнуты.
К сожалению, самый очевидный способ подчеркнуть ссылку — CSS-свойство text-decoration: underline; — имеет массу недостатков. Более-менее красиво такие ссылки будут выглядеть только у пользователей мака или айоса, причём, в любом браузере (спасибо, Эппл). Покажу на примере своего блога.
Внешний вид стандартных ссылок в ИЕ:
text-decoration-underline-ie
Это, конечно, никуда не годится. Линия очень жирная. Внешний вид стандартных ссылок на маке:
text-decoration-underline-mac
Уже лучше, линия тонкая (1 пк), но всё равно есть минусы. Во-первых, линия пересекает нижнюю часть буквы «у». Во-вторых, никаким образом кастомизировать (подвинуть по высоте, покрасить в другой цвет) линию не получится. В-третьих, работает только на яблочных девайсах. Таким образом, использовать свойство text-decoration — не вариант. Мы не будем рассматривать свойства text-decoration-style и другие, потому что их поддерживает полпроцента браузеров. Ищем другие пути.
4 March 2018, 01:10 MSK
— А погнали в Казань?
— Так зима же.
— Да пофиг.
— Погнали.
IMG_0527
24 February 2018, 18:30 MSK
9 августа, среда:
— Поехали в Нарву на машине на выходные?
— Может быть, тогда и в Таллин заедем ещё?
— Долго, давай лучше просто в Таллин самолётом.
— Давай. А что по билетам?
— В пятницу утром туда, вечером в воскресенье обратно.
— Отлично.
IMG_5850
20 February 2018, 20:55 MSK
История об ещё одном виде мошенничества в социальной сети ВКонтакте, с которым я столкнулся совсем недавно. Возможно, кому-то пригодится.
У меня есть один развлекательный паблик, который я веду в свободное время (веду не под настоящим именем, поэтому позвольте мне остаться анонимом и не приводить ссылок — на суть дела это не повлияет).
Недавно мне приходит сообщение с предложением продать сообщество:
диалог1
Выходит неплохая цена, учитывая несколько десятков тысяч человек в паблике. Я не собирался ничего продавать, но у меня закрались подозрения, что здесь не всё чисто, поэтому я продолжил диалог.
19 February 2018, 20:18 MSK
Представьте, что у вас возникла необходимость прямо с веб-страницы заказа в вашей CRM-системе открывать папку с файлами, которые к этому заказу относятся. Но не просто отображать содержимое папки, а прямо на компьютере открывать проводник с этой папкой.
К сожалению, сделать это «в лоб» не получится. Во-первых, браузеры умеют открывать только веб-страницы, а не программы на компьютере. Во-вторых, политика безопасности браузеров запрещает доступ ко всему, что явно не разрешено, тем более, доступ к файловой системе.
Вы можете резонно предположить, что есть протокол file:// (я позволю себе использовать здесь и далее слово протокол, хотя правильнее, конечно, схема URI), который позволяет браузерам открывать локальные файлы, но с ним также есть две проблемы:
  1. он не может отобразить список файлов в папке;
  2. такие ссылки нельзя открывать с внешних (не локальных) веб-страниц.
Чтобы решить данную проблему, мы будем использовать свой протокол с собственным обработчиком. Метод будет работать в Виндоус и потребует некоторых (очень простых) действий на компьютере. В ХТМЛ-коде это будет выглядеть как-то так:
<a href="myproto://C:/My Folder/123">открыть папку</a>
Можно из Джаваскрипта:
window.open('myproto://C:/My Folder/123');
Сначала необходимо придумать название протокола (у меня будет myproto) и зарегистрировать его в системе. Для этого в любом месте (хоть на рабочем столе) создаём файл с расширением .reg (например, myproto.reg) и следующим содержимым:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\myproto] "URL Protocol"="" @="URL:Myproto Protocol"
[HKEY_CLASSES_ROOT\myproto\shell]
[HKEY_CLASSES_ROOT\myproto\shell\open]
[HKEY_CLASSES_ROOT\myproto\shell\open\command] @="\"C:\\myproto.bat\" \"%1\""
Здесь myproto — название моего только что созданного протокола. Можете изменить на своё (но не используйте стандартные названия протоколов типа http, ftp, mailto и прочие).
Запускаем файл. Винда выдаст несколько вопросов и предупреждений, со всеми соглашаемся. Всё, больше этот файл на этом компьютере не нужен, можно удалять.
Далее в корне диска C: необходимо создать файл myproto.bat со следующим содержимым:
@echo off
set "path=%~1"
setlocal enabledelayedexpansion
set path=%path:myproto://=%
set path=%path:"=%
set path=%path:/=\%
set path=!path:%%20= !
set path=!path:%%5C=\!
C:\Windows\explorer.exe "%path%"
Здесь также меняем myproto на название вашего протокола. Это и будет его обработчик.
Всё готово. Теперь вы можете прямо из браузера (абсолютно любого) на данном компьютере открывать папки в проводнике в отдельном окне, просто открыв ссылку вида myproto://C:/My Folder/123.
К сожалению, данные действия придётся проделать на всех компьютерах, где необходима такая функциональность. Но, как правило, подобные вещи используются во внутрикорпоративных приложениях, где число пользователей известно и ограничено.