Все публикации
Быстрое обновление RotorCMS +5
Кодинг
Написал проект на роторе. Пока писал проект вышел laravel 9 и обновился ротор. Пришлось обновляться и без неприятностей не обошлось. Очень неудобно смотреть кормиты и сравнивать со своим кодом в проекте. Где-то скопировал криво, где объединил весь файл, а там были моим изменения. В итоге пришлось все по новой тестировать, просматривать все страницы и код. А чем дольше не обновляешь, тем более сложнее потом переработать все новые обновления которых очень много. В чатике по Laravel не привыкли видеть такие cms которые переписывают код, как мне там дали понять, что cms должна предоставлять наследование контроллеров. Поэтому в чате не пришлось ожидать помощи. Нужен был инструмент слияния файлов таким образом, что бы наши файлы проекта не переписывались, а новый код добавлялся. Ничего подобного нагуглить не вышло. Была попытка написание сравнителя файлов, который генерировал git патчи, но это всё нито.
У git есть софтина merge-file которая оказалась подходящей, но merge-file это трехстороннее объединение. То-есть два файла невозможно объединить, нужен третий базовый, основа на которую накладывается новая версия файла от вантуза и сверху наша. Подсунуть git-merge в качестве базового файла копию своего файла не даст результатов. Значит нам нужен базовый файл, тот на котором были построены наши изменения. Если мы не знаем последний коммит из ротора на котором начал формироваться наш проект, то можно отследить по дате изменения наших файлов. И так нам известен последний коммит репозитория ротора. Клонируем ротор и в его директории откатываемся до нужного нам коммита git checkout commitId. Дальше на этом состоянии вытаскивает базовый файл на котором построены наши изменения. Затем переключаемся на последний коммит ротора просто git checkout master. Тут мы забираем самую новую версию файла выпущенного обновления от Вантуза. И сравниваем git merge-file наш_текущий_файл базовый_файл новый_файл. Происходит идеальное слияние то, что нам нужно, наши изменения не затерты, новый код от Вантуза добавлен, мы рады. Если был конфликт, по меткам в файле все видно и понятно, что из нового файла, а что из нашего, фиксим и готово.
Но конечно это все хорошо, но мы же не можем такие операции проделывать ручками для каждого файла, поэтому был написан nodejs модуль roup. Мне показалось, что для таких дел отлично подходит nodejs и всё на этом.
Апгрейд в действии
У меня версия ротора 10.2 с обновления до лары 9, последний коммит с которого я обновлялся у меня есть, выяснять не пришлось.
В проекте в директории upgrades лежит свежий клонированный репозиторий ротора.
Запускаем roup
node roup
Наблюдаем процесс сравнения файлов с файлами нашего проекта, изъятия всех версий файлов и приготовления. В конце будет выведен результат работы. Это обновлённые файлы в нашем проекте, новые файла пришедшие с обновлением и файлы в которых имеется конфликт. Результат также дублируется в лог куда также пишется айди последнего коммита ротора. Берём айди коммита из лога и записываем в наш конфиг в запускаемом файле roup.js, он нам пригодится при следующем обновлении. В моём случаи вышло всего 7 конфликтных файлов и 200 начисто слитых. Процесс обновления прошёл великолепно, и последующие обновления будут сливаться в тот-же день не зная горя.
Процесс установки и использования roup описан в Readme репозиторя https://github.com/oopsfix/roup , здесь его дублировать не стану. На этом прощаюсь, возможно roup вас обрадует как и меня.
Молодая творческая тенденция в искусстве. +1
Разное
В мире существует множество стилей и тенденций в изобразительном искусстве, есть и компьютерное искусство и традиционное искусство (от наивного искусства до гиперреализма). Уфолизм — это молодая тенденция в изобразительном искусстве. Её основателем является российский художник DiezelSun (Александр Татарников). В своих картинах он изображает древних Богов (представителей внеземного мира). Древние артефакты являются хорошими источниками для воплощения творческих идей.
[cut]
На многих древних артефактах изображён внеземной мир. В некоторых картинах художника присутствует романтизм, т. к. изображены прекрасные женщины (Богини любви, Богини плодородия и т. д.)
Также эта тематика связана с теорией и гипотезой Палеоконтакта, всё это очень интересно и начинаешь задумываться о истории Земли, а у Земли история не простая.
Кэширование данных в PHP на примере класса +4
PHP
Для очередного клиента разрабатывал интернет-магазин запчастей. Каталога как такового там не было, однако была куча поставщиков, подключенных через API.
Так как клиентов планировалось много, то постоянное обращение к API было бы слишком затратно для сервера.
В рамках этого проекта был написан простой класс, который позволяет кэшировать данные, полученные в ходе каких-либо операций в файл и использовать их в любое удобное время с минимальной задержкой.
Вот он:
<?php
/*
Класс для кэширования данных
Роман Сергеевич Гринько
rsgrinko@gmail.com
https://it-stories.ru
*/
class CCache{
private static $cache_dir;
public static function init($dir){
self::$cache_dir = $dir;
}
public static function checkCache($name){ // Проверка наличия элемента в кэше
if(file_exists($_SERVER['DOCUMENT_ROOT'].self::$cache_dir.md5($name).'.tmp')){
return true;
} else {
return false;
}
}
public static function getCache($name){ // Получить элемент из кэша
if(self::checkCache($name)){
return unserialize(base64_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'].self::$cache_dir.md5($name).'.tmp')));
} else {
return false;
}
}
public static function writeCache($name, $arValue){ // Записать элемент в кэш
if(file_put_contents($_SERVER['DOCUMENT_ROOT'].self::$cache_dir.md5($name).'.tmp', base64_encode(serialize($arValue)))){
return true;
} else {
return false;
}
}
public static function clearCache(){ // Очистить кэш
foreach(scandir($_SERVER['DOCUMENT_ROOT'].self::$cache_dir) as $file){
if($file == '.' or $file == '..') continue;
if(!unlink($_SERVER['DOCUMENT_ROOT'].self::$cache_dir.$file)){
return false;
}
}
return true;
}
public static function delFromCache($name){ // Удалить элемент из кэша
if(self::checkCache($name)){
if(!unlink($_SERVER['DOCUMENT_ROOT'].self::$cache_dir.md5($name).'.tmp')){
return false;
}
}
return true;
}
public static function getSize($name){ // Получить размер элемента в кэше
if(self::checkCache($name)){
return $_SERVER['DOCUMENT_ROOT'].self::$cache_dir.md5($name).'.tmp';
}
return true;
}
public static function getCacheSize(){ // Получить размер кэша
$return_size = 0;
foreach(scandir($_SERVER['DOCUMENT_ROOT'].self::$cache_dir) as $file){
if($file == '.' or $file == '..') continue;
$return_size = $return_size + filesize($_SERVER['DOCUMENT_ROOT'].self::$cache_dir.$file);
}
return $return_size;
}
public static function ageOfCache($name) { // Получить возраст элемента кэша
if(self::checkCache($name)){
return (time() - filectime($_SERVER['DOCUMENT_ROOT'].self::$cache_dir.md5($name).'.tmp'));
} else {
return false;
}
}
}
?>
Несмотря на малое количество строк кода, он с легкость решает поставленную задачу, а именно:- Проверка наличия кэша элемента
- Получение элемента из кэша
- Запись элемента в кэш
- Удаление элемента из кэша
- Очистку кэша
- Получение размера кэша
- Получение размера конкретного элемента в кэше
- Время жизни элемента кэша
Все методы класса являются статическими, поэтому создавать экземпляр класса не требуется.
Ниже я приведу полное описание всех доступных методов.
CCache::init(‘/folder/’);
Установка дирректории для хранения кэша. Указывать со слешами в начале и в конце.
CCache::checkCache($name);
Выполняет проверку наличия кэша в базе. Принимает в качестве аргумента идентификатор элемента $name. Если элемент присутствует в кэше — вернет true, иначе — false.
CCache::getCache($name);
Получает элемент из кэша, возвращает массив. Если элемент в кэше не найден — вернет false.
CCache::writeCache($name, $arValue);
Запись данных в кэш. Принимает два аргумента: имя элемента $name и данные $arValue. В свою очередь данные $arValue должны являться массивом. При наличии элемента в кэше он будет перезаписан.
CCache::clearCache();
Метод полностью очищает кэш. Вернет false в случае ошибки.
CCache::delFromCache($name);
Метод удаляет конкретный элемент из кэша, принимает имя элемента $name в качестве аргумента. Вернет false в сллучае ошибки удаления.
CCache::getSize($name)
Метод возвращает размер элемента $name в байтах. Если элемент в кэше не найден — вернет false.
CCache::getSize($name)
Метод возвращает размер кэша в байтах
Небольшой пример использования:
<?php
require_once __DIR__.'/classes/CCache.php';
CCache::init('/cache/'); // устанавливаем дирректорию для кэша
// проверяем есть ли элемент в кэше и время его существования меньше часа
if(CCache::checkCache('test') and CCache::ageOfCache('test')<3600) {
$var = CCache::getCache('test'); // получаем элемент из кэша
} else { // При отсутствии элемента в кэше
$var = $_SERVER; // Выполняем действия для получения этого элемента
CCache::writeCache('test', $var); // Пишем результат в кэш
}
Хостинг за активность! 0
Хостинги
2) Поставить лайк к новости и поделиться на своей странице.
3) Пришлите ссылку с новостью в тикет систему.
Мы отблагодарим вас 2 бесплатными неделями виртуального хостинга по вашему тарифу.
Условия:
1) Профиль должен быть открытым, настоящим. Бонусный хостинг начисляется спустя 3 дня после репоста записи вконтакте!
2) У вас должна быть действующая услуга виртуального хостинга!
ЛЕТО 2021 с MONSTERHOST 0
Хостинги
Хостинг для ваших проектов 0
ХостингиВ сегодняшней статье речь пойдет о хостинг-провайдере Hostiv.Ru. Мы постараемся объективно разобраться в его ключевых особенностях, преимуществах и недостатках. Ведь идеального хостинга не бывает. Или все-таки бывает?
Основные услуги Hostiv.Ru
Как и любой другой хостинг-провайдер, шагающий в ногу со временем, Hostiv.Ru предлагает своим действующим и потенциальным клиентам полный спектр профильных услуг.
Среди них:
- Предоставление виртуального хостинга
- Приобретение и регистрация доменных имен
- Низкая стоимость тарифов (от 8 рублей за месяц)
- Защита от ДДОС-атак
- SSL-сертификаты от Let’s Encrypt
- Минимальная задержка от сервера до любого провайдера
- Тестовый период 3 дня (при оплате заказа)
- Помощь в переезде
- Помощь в настройке тех или иных скриптов
- Тех. поддержка
- Система лояльности с хорошими скидками
Ключевые достоинства и особенности хостинг-провайдера Hostiv.Ru
Использование высокоскоростных SSD-накопителей.
Действительно высокоскоростная и стабильная хостинг-платформа, которая базируется на операционной системе Linux.
Действительно доступные тарифы, независимо от того идет ли речь о покупке виртуального хостинга или же об аренде выделенного сервера.
Профессиональная техническая поддержка, работающая в режиме 24 часа в сутки 7 дней в неделю. Среднее время ответа на запрос в службу поддержки – от 30 минут. Максимально возможная продолжительность ожидания ответа от технического специалиста – 2 часа.
Период бесплатного тестирования услуг хостинга – 3х дней.
Собственная панель управления виртуальным хостингом, при разработке которой были полностью учтены все современные тенденции и пожелания клиентов.
Отсутствие каких-либо ограничений на выделяемые клиенту ресурсы. В частности, такие как количество размещаемых сайтов, количество используемых баз данных MySQL, а также объем трафика.
Полноценная поддержка таких популярных CMS-систем как Drupal, Joomla, WordPress, 1C-Битрикс.
Пропускная способность используемых каналов связи 250 Mb в секунду!
О тарифах хостинг-провайдера Hostiv.Ru
Стоимость безлимитного виртуального хостинга от Hostiv.Ru начинается от 8 рублей в месяц.
Покупка и регистрация домена в зонах .ru и .рф обойдется всего в 199 рублей в год – купить домен.
Вместо заключения
Подводя итог можно сказать, что если вы ищите хостинг, то Hostiv.Ru действительно заслуживает вашего пристального внимания. Обязательно воспользуйтесь 3х дневным периодом (при оплате заказа) бесплатного тестирования, ведь этот хостинг обладает множеством достоинств, а среди недостатков можно отметить лишь некоторые ограничения, присутствующие в тарифном плане «Пробный - 100» .
Мы так нелепо тратим время ... +9
РазноеМы так нелепо тратим время,
К мечте боимся сделать шаг.
Под гнётом страха и сомнений
Поднять готовы – белый флаг.
На берегах пустой надежды
Бездонной лени океан,
Тех кто позволил рабства цепи,
Тех кто загнал себя в капкан...
Но как сбежать от серых будней?
Как снять ошейник для раба?
Как вновь поверить в свои цели?
Влюбиться в жизнь – она одна!
Мы так нелепо тратим время,
К мечте боимся сделать шаг
И в страхе собственных сомнений,
Мы поднимаем белый флаг...
Увеличить скорость интернета, используя VPN +1
Сетевые технологии
Как в несколько раз увеличить скорость интернета, используя VPN соединение
Скорость и стабильность интернет соединения на сегодня являются главными критериями VPN. Иногда, находясь в путешествии, командировке или просто по стечению обстоятельств мы сталкиваемся с тем, что скорость интернета ничтожно мала даже для того, чтобы отправить сообщение из 2 букв в мессенджере. В этой статье Вы узнаете полезные советы, применив которые, Вы сможете в несколько раз увеличить скорость интернета, используя VPN соединение.
Конечно же, первое, что необходимо сделать, это выбрать подходящий VPN сервис. Здесь очень Важно, не прогадать и выбрать с первого раза. Основные критерии тут можно выделить такие:
Большой арсенал серверов
Стабильное соединение
Бесплатные серверы
Возможность использовать на всех устройствах
Идеально соответствует этим всем критериям Netmap VPN. Обладая большим арсеналом серверов, Netmap VPN может обеспечить стабильное соединение и доступ к VPN на любом устройстве и даже браузере. При этом, если у Вас нет возможности купить VPN, то Вы можете воспользоваться бесплатными VPN серверами. Бесплатный Netmap VPN выгодно отличается от других тем, что не ограничивает скорость на бесплатных серверах, а также не показывает рекламу. При этом доступен бесплатный VPN для браузера GoogleChrome, FireFox, а также для устройств на MacOS, iOS, Adroid.
Но купить VPN это только пол дела. Дальше необходимо добиться максимальной скорости соединения при условии плохого интернета. Для этого нужно сделать следующее.
Посетить страничку "Локации VPN серверов". На ней Вы можете видеть нагрузку на серверы в реальном времени, а также проверить ping и скорость к любому серверу. Таким образом Вы выберете самый быстрый сервер.
После того, как Вы определились с самым быстрым сервером, необходимо выбрать протокол с которым скорость интернета будет максимально большой. Конечно, при наличии подписки Netmap VPN, выбор протоколов максимально возможный, поэтому Мы рекомендуем все же купить VPN для достижения наилучшего результата. Купив подписку Вам будут доступны для настройки протоколы OpenVPN, L2TP, IKEv2, PPTP. Если у Вас возникают проблемы с настройкой VPN, Вы можете воспользоваться инструкциями по настройке. Важно отметить, что интернет провайдеры могут ограничивать VPN трафик на определенных протоколах, например дросселировать OpenVPN. При таком условии, L2TP или IKEv2 будет работать значительно быстрее чем OpenVPN.
Дальше, чтобы добиться максимальной скорости, необходимо верно настроить свое устройство, отключите файрволлы, и все что может мешать работе интернета.
После настройки VPN, вы можете проверить скорость интернета, уверены, она Вас приятно удивит.
Для того, чтобы сэкономить на покупке подписки, Вы можете порекомендовать VPN своим друзьям. Если кто-то из них сможет купить VPN по Вашей реферальной ссылке, то Вам вернется 30% c его оплаты. Это более чем выгодно и удобно.
Следуя этим советам вы добьетесь максимальной скорости интернета и сбережете свое драгоценное время.
Как отключить WebRTC? Опасность данной технологии +3
Сетевые технологииЕсли купить VPN, то это не решит проблемы утечки IP через WebRTC. Как отключить WebRTC в браузере GoogleChrome, Safari, Yandex, Opera?
Почти все любят анонимность в сети Интернет. Однако новая технология WebRTC, которую без преувеличения называют убийцей Skype и Flash, лишает нас анонимности в Интернете. Если даже Вы используете VPN, то WebRTC, позволяет узнать Ваш IP-адрес. Давайте попробуем разобраться, что такое WebRTC и как отключить эту технологию в различных браузерах для обеспечения анонимности при использовании VPN.
И так, давайте ответим на вопрос что такое WebRTC?
WebRTC (Web Real-Time Communications) - это технология с открытым исходным кодом, при помощи которого можно организовать передачу потоковых данных между двумя браузерами, а также другими приложениями, которые поддерживают эту технологию. Передача данных работает на основе технологии точка-точка.
У проекта есть свое API, но он находится на стадии разработки. Поэтому еще не сильно распространен, так как если разрабатывать на его основе, в будущем может возникнуть ряд проблем из-за изменения API.
Проще всего описать принцип работы WebRTC если подразумевать эту технологию, как убийцу Skype и Flash. В то время, когда началась война с Flash начали страдать браузерные игры. Однако Flash все еще оставалась ключевой технологией в голосовых видео звонках, только у этой технологии был прямой доступ к микрофону, камере, динамикам, а также она «умела» работать с UDP пакетами.
Но поскольку появилась технология WebRTC, имеющая все эти преимущества и доступна в обычных браузерах, Flash и Skype скоро останутся совсем не удел. И все по тому, что с помощью этой технологии можно звонить с обычной веб-страницы, которая открыта на Android, на веб-страницу, которая открыта в любом другом браузере, например в Chromium на Linux, в абсолютно другой сети. При этом, все передается по обычному p2p соединению.
Надеемся с этим вопросом разобрались. Давайте теперь разберемся, почему эта технология опасна для тех, кто хочет оставаться анонимным в сети.
Все дело в том, что технология сугубо браузерная. VPN меняет Ваш исходящий IP, однако WebRTC работает через Ваш браузер и не может отправлять трафик через VPN. Поэтому Ваш реальный IP легко узнать, если в Вашем браузере включена данная технология.
В последнее время, поскольку WebRTC технология стала доступна во всех популярных браузерах, пользователи которые хотят купить VPN от Netmap, стали задавать вопросы о том, может ли наш VPN скрыть реальный IP, если включена технология WebRTC. Ответ на этот вопрос - НЕТ. Скрыть реальный IP если включена данная технология - можно только выключив технологию - так как это «уязвимость» сугубо Вашего браузера. Также стоит учитывать, что если VPN провайдер обещает, что они выключают WebRTC, если Вы купите их продукт - то Вас, как клиента, обманывают.
Теперь давайте рассмотрим самый Важный вопрос - как отключить WebRTC в Вашем браузере, чтобы оставаться анонимным в Интернете.
Наиболее безопасным способом является отключение WebRTC на уровне браузера. Однако это не всегда возможно и необходимо воспользоваться плагинами. Рассмотрим наиболее удобные и рабочие способы отключения WebRTC.
Самый популярный браузер на сегодняшний день - это GoogleChrome. В новых версиях этого браузера отключить WebRTC в ручную невозможно. Поэтому на помощь приходят плагины. Наиболее популярный на сегодняшний день плагин для отключения WebRTC - WebRTC Control. После установки плагина, от сразу будет активирован. Стоит отметить, что когда мы его тестировали, WebRTC технология оставалась включённой, однако реальный IP не отображался.
Странно, но WebRTC в браузере GoogleChrome для Android отключить проще. Для этого введите в браузере chrome://flags/#disable-webrtc. Далее просто выставьте значение enable.
Пользователям Mozilla FireFox отключить WebRTC проще всего. Кроме того в этом браузере отключение данной технологии реализовано наиболее правильно, а именно на уровне браузера. Специалисты VPN провайдера Netmap рекомендуют использовать этот браузер. Чтобы отключить WebRTC в Mazilla введите в адресную строку about:config. Откроется окно настроек, в котором надо найти параметр media.peerconnection.enabled, и выставить значение false.
Пользователям Mac также очень просто отключить WebRTC. Для этого перейдите в меню «Разработка» в браузере. Выберите пункт Экспериментальные функции, а затем уберите галочку «Remove Legacy WeBRTC API». Готово - WebRTC в Safari отключен.
Осталось два браузера - Yandex и Opera. В них Google Crome без использования плагина не обойтись, так как отключить WebRTC на уровне браузера невозможно. Плагин называется WebRTC Control.
Стоит отметить, что для Google Crome, Mozila, Yandex и Opera есть плагин NoScript. При помощи него можно отключить абсолютно все скрипты в браузере. Для обеспечения максимальной анонимности, лучше использовать его, однако данный способ не подходит тем, кому необходимы скрипты в браузере. Пользуйтесь этим плагином, если Вы действительно уверены что он Вам подходит.
Делая вывод, хотим еще раз отметить, нельзя купить VPN или использовать анонимайзер, чтобы отключить WebRTC. Отключение данной технологии возможно только в Вашем браузере.
Трафик не является фактором ранжирования Google +1
SEO
Google развеял один из SEO-мифов. В официальном аккаунте в Twitter поисковик сообщил, что «трафик на веб-сайт не является фактором ранжирования».
На вопрос «Можно ли считать реферальный трафик фактором ранжирования? Имеет ли он какую-либо корреляцию с SEO?» Google ответил:
Нет, трафик сайта не является фактором ранжирования. Если вы начинаете получать релевантный трафик, и пользователи любят ваш сайт, это отличное начало!
Правда, данный ответ породил еще больше вопросов. Имел ли ввиду поисковик то, что реферальный трафик не является фактором ранжирования или говорил о том, что любой трафик не учитывается при ранжировании, остается загадкой.










