Маршрут похода: Семинский перевал → Туекта → перевал Чике-Таман → Купчегень → Инегень → река Тургунда → Мульта → Усть-Кокса. Итого: 285 км.
«Тюнгурская тропа» возникла как путь перегона скота из Монголии в Россию в 1920-х годах. После окончания Второй Мировой войны здесь началось строительство дороги Тюнгур — Инегень.
Основной рабочей силой были по одной информации немецкие военнопленные, по другой, более вероятной, наши заключенные, которые в 60-градусном склоне прорубали так называемую «копаную дорогу». Однако задача соединить Чуйский тракт и Усть-Коксинский район Республики Алтай автомобильным сообщением не была выполнена. Госкомиссия дорогу не приняла, посчитав ее слишком опасной для движения, а инженеры и проектировщики были отправлены под суд, некоторые даже расстреляны. В советское время дорогу даже внесли в некоторые автомобильные атласы, но так и не достроили.
Забавно, но «дорога» Иня → Тюнгур до сих пор рисуется на многих сервисах карт как часть Р373.
Один из заказчиков попросил меня немного причесать сайт, заодно прописать цели для Яндекс.Метрики и Google Analytics. Между делом он рассказал мне, что предыдущим «оптимизаторам» удалось разогнать сайт до 100 баллов в PageSpeed Insight, мол, работа по оптимизации была долгая и значение упорно не хотело расти, но однажды подскочило до 100 и на этом закончили.
Я был немного удивлен услышанным, т.к. это был сайт на Joomla на бюджетном шаред-хостинге, с косяками адаптивной версии, неоптимизированными прозрачными PNG-шками по несколько мегабайт весом. В перерыве между работой ради интереса решил замерить баллы, правда через встроенный в Google Chrome Lighthouse.
33 балла в Lighthouse, странно
Опять переспросил заказчика, он говорит что показывает 100, но через сервис на сайте PageSpeed’а. И действительно.
А теперь самое интересное. Идем в index.php в корне сайта, и смотрим. Начало файла.
Я первым делом подумал что сайт завирусован. Однако постороннего кода нигде не было, кроме как в index.php.
Чуйка и тут не подвела. Убираю посторонние вставки и опять проверяю скорость в PageSpeed.
Теперь все стало ясно. Для интереса все же решил разобрать обфусцированный код. Первый проход можно сделать через любой сервис для деобфусцификации, например:
В коде проверяются заголовки User Agent’а: если заходит бот Google, либо PR-CY.RU, то отдаем им «упрощенную версию сайта», либо мобильную, либо десктопную — пустой HTML файл с одним изображением скриншота сайта.
В переменных $p_0 и $p_1 лежит текст с HTML-страницей примерно со следующим содержимым:
Полностью код с содержимым base64 изображения не выкладываю в целях конфиденциальности. Но я думаю общий смысл понятен для тех кто разбирается.
Скрипт проверяет кто заходит на сайт. Если это бот Google или PR-CY.RU, то им заместо сайта отдается скриншот сайта. Из-за небольшого объёма страницы и быстрой загрузки баллы увеличиваются до 100.
Кстати, обратите внимание на CSS в HTML. Ребята действительно «постарались» и сделали так, чтобы скриншот загружался плавно, с анимацией прозрачности. Думаю это для того, чтобы заказчики ничего не заподозрили глядя в скриншоты trace рендеринга страницы, а может такая обманка для Google. Не ясно до конца, но красиво.
Всё было бы смешно если бы не было так грустно для клиентов. Сайт вполне может попасть под блокировку за обман, а деньги за работы уже ушли.
Вот такие вот интересные IT-кадры попадаются, коллегами назвать язык не поворачивается. Полное неуважение к окружающим и к себе в первую очередь.
Для Joomshopping существует официальный поисковый плагин, позволяющий с помощью com_search компонента джумлы находить наши товары. Но есть в этом плагине недостатки:
Ищет он только по товарам. Поиск по категориям отсутствует
Хотелось бы в результатах поиска видеть изображение искомого товара
Первый пункт легко дорабатывается дополнительным запросом в базу. А вот со вторым пришлось немного изменить стандартные шаблоны вывода поиска.
После установки поискового плагина Joomshopping его можно найти по сл. пути: /plugins/search/joomshopping/joomshopping.php
Сначала я дополнил в нем стандартный запрос. Добавил в SELECT поле image_name и через LEFT JOIN добавил таблицу с изображениями товаров.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$query="SELECT prod.product_id AS slug, pr_cat.category_id AS catslug, prod.`".$lang->get('name')."` as title,
CONCAT(prod.`".$lang->get('short_description')."`,' ',prod.`".$lang->get('description')."`) as text,
'2' AS browsernav,
prod.product_date_added AS created,
cat.`".$lang->get('name')."` AS section, ".
//Выбираем поле image_name из таблицы изображений
"pr_img.image_name AS image_name
FROM `#__jshopping_products` AS prod
LEFT JOIN `#__jshopping_products_to_categories` AS pr_cat ON pr_cat.product_id = prod.product_id".
// Добавляем таблицу с изображениями
"LEFT JOIN `#__jshopping_products_images` AS pr_img ON pr_img.product_id = prod.product_id
LEFT JOIN `#__jshopping_categories` AS cat ON pr_cat.category_id = cat.category_id
WHERE ($where) AND prod.product_publish = '1' AND cat.category_publish='1'
GROUP BY prod.product_id
ORDER BY $order
";
Далее я прошелся по результатам этого запроса и сразу исправил ссылку на товар и заместо названия файла картинки прописал полный путь к ней:
Остается только добавить вывод картинки в шаблоне поиска. Шаблон поиска конечно лучше переопределить в папке своего шаблона. Для этого нужно создать в шаблоне папку html, создать в ней папку com_search, а в ней еще одну папку search. В конечную папку скопировать файлы из папки /components/com_search/views/search/tmpl/default.php.
В итоге структура файлов должна быть примерно такой:
Результаты поиска формируются в файле default_results.php, выводим изображение:
Немного исправив шаблоны com_search можно добиться отличного оформления вывода поиска, что особенно актуально для интернет-магазинов:
Кому интересно, выкладываю архив со всеми изменениями. Учтите, что решение может не заработать на вашей конфигурации, возможно придется кое-что поменять. В частности, на другом сайте с Joomshopping мне пришлось поменять названия полей в запросе, т.к. таблицы отличались. Возможно это были разные версии Joomshopping’а.
Написал небольшой iMacros скрипт для добавление пользователей ok.ru в группы со страниц других групп. Работает в Firefox версии iMacros. Возможно кому-нибудь пригодится.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
vargroupUrl=prompt("Введите ссылку на мобильную страницу участников группы, например: http://m.ok.ru/typicalnsk/members");
varmembersSum=prompt("Сколько участников обрабатываем?",300);
vargroupPosition=prompt("№ группы, в которую идут приглашения (ее позиция в списке, 1, 2 или 3 и т.д.)",1);//Группа, в которую идут приглашения, а точнее ее позиция в списке, например 1 - первая, 2 - вторая.
varoffset=prompt("С какого по счету участника начать обработку?",0);// С какого по счету участника начать обработку? (подсчет начинается с 0)
После успешной установки хакинтоша может возникнуть ошибка при загрузке с жесткого диска, вот такая:
Loading Operating System …
boot0: GPT boot0: test boot0: test boot0: GPT boot0: test boot0: test boot0: error
В чем заключается проблема:
Т.к. объем жестких дисков с каждым годом увеличивается, производители вынуждены менять стандартный размер блока диска с 512 байт до 4096 байт. Эти жесткие диски известны как «Advanced Format» или 4K. Сначала размер увеличивали на дисках больше 1 ТБ, однако в скором времени изменения затронут все выпускаемые диски. Из-за этого загрузчик Chimera не может загрузиться как положено.
Прим.: Chimera не грузится, а вот разработчики Clover-загрузчика уже давно исправили эту проблему и загрузка происходит автоматически, без изменений.
Решение №1: Использовать флешку с UniBeast
Решение очень простое, но потребует наличие флешки с установщиком Mac OS.
Прим.: я советую всегда хранить флешку с установщиком Mac OS, в случае, если потребуется распаковать бэкап или выполнить доп. настройку, например, при апгрейде оборудования
Как исправить:
1. Загрузиться в установку Mac OS с флешки с UniBeast
2. Не запуская установку, запустить из меню сверху Дисковую Утилиту (Disk Utility), в ней размонтировать жесткий диск, на который установлена Mac OS X.
3. Запустить Терминал и выполнить следующую комманду:
ZSH
1
dd if=/usr/standalone/i386/boot1h of=/dev/disk0s2
4. Теперь можно выйти из терминала и перезагрузить компьютер
ВАЖНОЕ ЗАМЕЧАНИЕ: Пример кода выше работает в том случае, если ваш жесткий диск подключен к SATA порту 0. Если у вас используется другой порт, то вы можете узнать его из Дисковой Утилиты.
Решение №2: Использовать SATA > USB Адаптер
Это решение сработает, если у вас есть под рукой другой работающий Mac.
Как починить:
1. Установить жесткий диск в запасной Mac, установить систему на этот жесткий диск.
2. После установки, выключить запасной Mac, вытащить жесткий, и подключить его с помощью USB-адаптера к новому Mac
3. Загрузить новый Mac
4. Запустить MultiBeast, произвести установку загрузчика
5. Теперь можно установить жесткий диск как обычно, без адаптеров
Приобрести переходник-адаптер SATA-USB можно в большинстве компьютерных магазинов или заказать на Aliexpress или подобных сайтах.
Данный переходник может пригодится, например, сделать из внутреннего DVD-привода внешний.