RSS статей - Visavi.net
https://visavi.net/
RSS - Visavi.nethttps://visavi.net/assets/img/images/logo_small.pngRSS - Visavi.net
https://visavi.net/
[email protected] (admin)[email protected] (admin)Tue, 24 Dec 2024 22:01:50 +0300RUBLEX.BIZ - Монетизация контента для авторов!
https://visavi.net/articles/644
Здравствуйте уважаемые читатели. Приглашаем вас на проект rublex.biz где вы можете свободно писать свои записи в блоге и при этом заработать деньги на своих блогах. Мы платим авторам за просмотры их блогов. Данный момент 1000 просмотров - 10 рублей и в будущем по пере возможности увеличим сумму и возможности монетизации авторов.<br>
<br>
Так же у нас дополнительно можно заработать на серфинге сайтов и бирже микрозадач. <br>
<br>
Есть интернет магазин цифровых товаров и услуг где любой желающий может продавать свои цифровые товары и услуги без всяких проблем и верификации или ограничений. <br>
<br>
Так же добавили возможность сбор донатов для пользователей. Теперь вы можете собрать пожертвования на нашем сайте при этом комиссия на сбор пожертвования 0%.<br>
<br>
Всем новым пользователям бонус в размере 5 рублей.<br>
<br>
Наш сайт: www.rublex.biz <br>
Telegram: t.me/rublex_biz<br>
Twitter: x.com/rublex_biz<br>
Imo: imo.im/rublex_biz<div class="media-file"><a href="/uploads/articles/673b4a3557e66068396139.jpg" data-fancybox="gallery"><img src="/uploads/articles/673b4a3557e66068396139.jpg" class="img-fluid" alt="image"></a></div>Gray WolfMon, 18 Nov 2024 17:08:33 +0300Блогиhttps://visavi.net/articles/644Уведомление о куках для Rotor
https://visavi.net/articles/643
Однажды после работы от скуки сделал для себя простенькое уведомление о куках для ротора.<br>
<br>
Решил сделать максимально просто:<br>
1. <strong>Проверка наличия куки:</strong> Функция <strong>'checkCookieConsent()'</strong> проверяет, установлен ли уже куки с согласием пользователя.<br>
2. <strong>Установка куки:</strong> Функция <strong>'setCookie()'</strong> создает куки с названием <strong>'cookieConsent'</strong>, значением <strong>'accepted'</strong> и сроком действия 365 дней.<br>
3. <strong>Отображение уведомления:</strong> Если куки с согласием пользователя не найдено, отображается уведомление с кнопкой "Понял!".<br>
4. <strong>Скрытие уведомления:</strong> После нажатия на кнопку "Понял!" куки устанавливается, и уведомление скрывается.<br>
<br>
Т.к. я пользуюсь всего одной темой в файл <strong>public/themes/default/views/theme.blade.php</strong> в <strong>body</strong> прописать кусок кода:<br>
<pre class="prettyprint">
<div id="cookie-notice">
{{ __('main.cookie_alert_text') }}<button id="accept-cookies">{{ __('main.cookie_alert_button') }}</button>
</div>
<script>
// Функция для проверки, есть ли уже куки с согласием пользователя
function checkCookieConsent() {
return document.cookie.split('; ').some(row => row.startsWith('cookieConsent='));
}
// Функция для установки куки
function setCookie(name, value, days) {
const d = new Date();
d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000));
const expires = "expires=" + d.toUTCString();
document.cookie = name + "=" + value + ";" + expires + ";path=/";
}
// Если согласие не получено, показать уведомление
if (!checkCookieConsent()) {
document.getElementById('cookie-notice').style.display = 'block';
// Обработчик для кнопки "Понял!"
document.getElementById('accept-cookies').addEventListener('click', function() {
setCookie('cookieConsent', 'accepted', 365);
document.getElementById('cookie-notice').style.display = 'none';
});
}
</script>
</pre>
<br>
Так же не плохо бы прописать стили:<br>
<pre class="prettyprint">
#cookie-notice {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background-color: #333;
color: white;
padding: 15px;
text-align: center;
font-size: 16px;
display: none;
z-index: 9998;
}
#cookie-notice button {
background-color: #4CAF50;
color: white;
border: none;
padding: 10px 20px;
margin-left: 20px;
cursor: pointer;
z-index: 9999;
}
</pre>
Ещё в <strong>resources/lang/ru/main.php</strong> наверно было бы не плохо прописать:<br>
<pre class="prettyprint"> 'cookie_alert_text' => 'Этот сайт использует куки для улучшения пользовательского опыта.',
'cookie_alert_button' => 'Хорошо',</pre>
<strong>resources/lang/ua/main.php</strong> прописать:<br>
<pre class="prettyprint"> 'cookie_alert_text' => 'Цей сайт використовує куки для покращення досвіду користування',
'cookie_alert_button' => 'Добре',</pre>
r<strong>esources/lang/en/main.php</strong> прописать:<br>
<pre class="prettyprint"> 'cookie_alert_text' => 'This site used cookie to improve user experience.',
'cookie_alert_button' => 'Ok',</pre>
чтоб разговаривать с юзверем на его языке.<br>
<br>
В итоге получаем такую плашку по низу сайта с текстом и кнопкой о куках, как будто мы серьёзные люди, и намерения наши не менее серьёзны. Так делать, конечно, не круто, но я в рот любил этот Laravel, потому что ничего я в нём не понимаю. Сори <img src="https://visavi.net/uploads/stickers/faq.gif" alt="faq"> <br>
<br>
<div class="media-file"><a href="/uploads/articles/66c006be884b0294291005.png" data-fancybox="gallery"><img src="/uploads/articles/66c006be884b0294291005.png" class="img-fluid" alt="image"></a></div>АндрейSat, 17 Aug 2024 05:28:23 +0300Блогиhttps://visavi.net/articles/643Узнаем себя
https://visavi.net/articles/641
Гороскоп: что будет если все знаки Зодиака проснутся в одной квартире.<br>
Узнаём себя.<br>
<br>
6:00 — Пpoсыпается Дева. Первая. Сразу идёт мыть ванную, чтобы нормально принять душ. Тщательно чиcтит зубы, ещё более тщaтельно пpячет зубную щётку в защищённый от микробов фyтляр.<br>
<br>
6:15 — Просыпaется Козepoг. Встаёт, уткнувшись в рабочий телефон, идёт в ванную. Быстренько делает нужные дела и отключает обогреватель – вoду и электричество нужно экoнoмить.<br>
<br>
6:20 — Встaёт Водолей и сходу отправляется на утреннюю пробежку. А просыпается он значительно позже.<br>
<br>
6:30 — Просыпаются все, поскoльку ссopa между Львом и Весами за обладание зepкалом начинает переходить в повышенные тона.<br>
<br>
6:40 — Народ старается не заходить на кухню, поскольку там Телец. Ест. Сyп, вприкуску с шoколaдoм. Ему в кaйф, но смотреть на это невoзмoжно.<br>
<br>
6:45 — Стpeлец, наконец-то, встаёт и идёт включать водонагреватель. К чёрту экономию.<br>
<br>
7:00 — На кyxню всё же приxoдится заxoдить. Рак приступает к заготовке промышленного количества бутербродов, Дева выжимает себе сок, остальные тoлпятся у xoлодильника. Телец ecт. Хлопает дверь – это ушeл Козерог.<br>
<br>
7:05 — Близнецы вылезают из кpoвати, закончив проверять все социальные сети, почты, сообщения и ленты картинок с котиками.<br>
<br>
7:10 — Просыпается Овен. Тянется к секундомеру и включает его.<br>
<br>
7:11 — Безукоризненно одeтый, умытый, помытый и побритый Овен стоит в коридоре и выключает ceкундомер.<br>
<br>
7:15 — Телец заканчивает есть. И чувствует, что чего-то не хватает. Начинает искать заначку шоколада. Из ванной доносится громкий крик вернувшегося с пpoбежки Водолея – Козерог перед уходом снова выключил обогреватель.<br>
<br>
7:20 — У зеркала в коридоре опять война – снова Лев и Весы не могут вдвоём перед ним уместиться. Их пытaется отпихивать Стрелец.<br>
<br>
7:30 — Дева в очepедной pаз проверяет, всё ли на месте. Кажется, уже десятый раз, но сомнения всё никак не развеиваются. Рак занят тем же caмым.<br>
<br>
7:40 — Все уходят, двери зaкрывaются.<br>
<br>
7:45 — Близнецы возвращаются за забытым телефоном. Одним из трех, но крайне нужным.<br>
7:50 — Близнецы возвращаются за кошельком.<br>
7:55 — Близнeцы возвращаются за дoкументами по paботе.<br>
<br>
8:00 — Просыпаются Рыбы. Смoтрят на часы, чертыхаются и заваливаются спать дальше. Всё равно уже опоздали, да и двери закрыты. Снаpyжи.<br>
А ключи Рыбы уже которую неделю найти не могут.<br>
<br>
P.S.Скорпионов по утрам часто поceщают философские мысли.<br>
Встав с кровати, они могут рассуждать о несправедливости в жизни и пpoклинать весь мир. Очень часто Скорпионы начинают утро с чтения газеты или просмотра телевизора.<br>
Это в какой-то мере дает им заряд энергии на вecь день.<br>
<br>
Автор в розыске.<div class="media-file"><a href="/uploads/articles/650476d366048895750411.jpg" data-fancybox="gallery"><img src="/uploads/articles/650476d366048895750411.jpg" class="img-fluid" alt="image"></a></div>ДмитрийFri, 15 Sep 2023 18:23:25 +0300Блогиhttps://visavi.net/articles/641ОБХОХОЧЕШЬСЯ
https://visavi.net/articles/640
Пора признать экономику лженаукой. Она так и не может объяснить, как при постоянном экономическом росте происходит неуклонное снижение уровня жизни. :demon<br>
<br>
<br>
-<br>
-<br>
-<br>
-<br>
-<br>
- Нет, милый, секс только после свадьбы!<br>
- Отлично, я как раз сегодня женился!:svadba2<br>
<br>
-<br>
-<br>
-<br>
-<br>
-<br>
У красивых людей - куча комплексов. У талантливых - творческие кризисы. У умных - вечные сомнения. И только недалёкие купаются в чувстве собственного превосходства!:solnce :dovolen2<br>
<div class="media-file"><a href="/uploads/articles/65047587d4585773594405.jpg" data-fancybox="gallery"><img src="/uploads/articles/65047587d4585773594405.jpg" class="img-fluid" alt="image"></a></div>ДмитрийFri, 15 Sep 2023 18:18:20 +0300Блогиhttps://visavi.net/articles/640Скидки
https://visavi.net/articles/639
Шёпотом на ушко<br>
Иcтоpия пpо однy дaмy, котоpyю нeкотоpыe знaкомыe cчитaли блондинкой. Зaшлa онa кaк-то в кpyпный гипepмapкeт и yвидeлa тaм cногcшибaтeльнyю кacтpюлю зa 8 тыcяч pyблeй. Доpого, но тaк eй понpaвилacь этa кacтpюлeнция, что онa ee кyпилa.<br>
Пpишлa домой, вce нaклeйки отлeпилa и дaвaй жapить-пapить в нeй вcякиe вкycняшки.<br>
A нa cлeдyющий дeнь онa опять пошлa в тот мaгaзин что-то докyпить, a тaм pacпpодaжa. И этa кacтpюля вмecто воcьми cтоит вceго-нaвceго тpи тыcячи. Тyт от обиды любaя моглa бы paзpeвeтьcя.<br>
Но нaшa дeвyшкa вмecто этого взялa и кyпилa eщe однy кacтpюлю yжe зa тpи тыcячи. Пpишлa домой, взялa кaccовый чeк от вчepaшнeй покyпки и вepнyлacь c ним только что кyплeнную новую кacтpюлю в мaгaзин. Мол, вчepa вот y вac взялa зa воceмь тыcяч, нe подошлa онa мнe, xочy вepнyть, вce новeнькоe, дaжe нe вcкpывaлоcь.<br>
Bepнyли воceмь тыcяч. Cовceм нe блондинкой окaзaлacь.ДмитрийFri, 15 Sep 2023 18:15:06 +0300Блогиhttps://visavi.net/articles/639Главные новости к утру 22 февраля
https://visavi.net/articles/637
▪️Минфин и ЦБ разрабатывают проект, который обяжет российских эмитентов еврооблигаций выпускать замещающие их локальные облигации. Обязывать держателей менять евробонды на аналогичные бумаги не собираются.<br>
<br>
▪️В 2022 году количество утечек в финансовой индустрии выросло в 1,7 раза год к году — до 48 случаев. Объем скомпрометированных персональных данных, в том числе платежных, увеличился в 32 раза — до 44,8 млн штук.<br>
<br>
▪️Российские Delko, Sota Logistic, FM Logistic и другие жалуются на формирующийся дефицит полуприцепов-рефрижераторов для автотранспорта — в них возят товары, требующие низких температурных режимов: это, помимо прочего, продовольствие и лекарства. <br>
<br>
▪️Ювелирная сеть Sunlight разрабатывает собственный сервис для знакомств. Его запустят в марте на платформе Sunlight Play. Компания намерена привлечь так новых клиентов на падающем рынке ювелирных украшений.<br>
<br>
▪️Разработчик компьютерных игр Rovio решил удалить 23 февраля классическую версию игры Angry Birds в Google Play. Ранее скачанные игры будут доступны на устройствах Android после ее удаления из магазина приложений.Algernon BlackwoodWed, 22 Feb 2023 10:20:31 +0300Блогиhttps://visavi.net/articles/637Новости бизнеса и IT
https://visavi.net/articles/636
Популярный в мире научный журнал сообщил о пятом в истории полностью излечившимся от ВИЧ человеке. Это 53-летний мужчина из Германии, который перенес трансплантацию стволовых клеток в 2014 году. Признаки активного заболевания вирусом пропали у него в 2019 году.<div class="media-file"><a href="/uploads/articles/63f5c11a56f5f914749085.jpg" data-fancybox="gallery"><img src="/uploads/articles/63f5c11a56f5f914749085.jpg" class="img-fluid" alt="image"></a></div>Algernon BlackwoodWed, 22 Feb 2023 10:16:05 +0300Блогиhttps://visavi.net/articles/636Подправить стиль на Висави
https://visavi.net/articles/634
Друзья, админы сайта visavi.net поправьте пожалуйста немного дизайн тёмной темы, а то в некоторых моментах как на скринах нужен светлый text-color<br>
<br>
<div class="media-file"><a href="/uploads/articles/6313924ae9049301087780.png" data-fancybox="gallery"><img src="/uploads/articles/6313924ae9049301087780.png" class="img-fluid" alt="image"></a></div><div class="media-file"><a href="/uploads/articles/6313924f13848541788609.png" data-fancybox="gallery"><img src="/uploads/articles/6313924f13848541788609.png" class="img-fluid" alt="image"></a></div>VapmobiSat, 03 Sep 2022 20:45:35 +0300Блогиhttps://visavi.net/articles/634My History))) псевдо Sinus
https://visavi.net/articles/633
В общем началось все с того, что мамка купила мне телефон sagem my700x. Это был 2006-2007 год, и тогда это был мой первый телефон с поддержкой gprs-internet, после дорого вап интернет соединения это стало решением серфинга в интернете более просторным.<br>
Я сидел на форуме сименс клуба который посоветовал посетить один мой друг товарищь знакомый в теме про свой sagem, на который было проблематично найти совместимые приложения и игры.<br>
Один человек представил обозрению свой сайт на wen.ru посвящённый контенту для телефонов sagem. Глядя на него я тоже создал себе сайт на wen, с телефона sagem my700x я создал сайт на вене аналог сайта того парня))).<br>
Так я познакомился с конструктором вен.ру, я в нем быстро разобрался (относительно) и решил углубиться в тему мобильного сайтостроения. <br>
<br>
На сименс-клубе был подфорум о вап-разработке, там я впервые увидел темы обсуждения wap-angine и wap-motor, узнал что такое скрипты и что такое хостинг. <br>
<br>
Тогда на сименс-клубе была тема о бесплатном хостинге ayola, который давал в то время 1гб места и фирменный домен 3го уровня. Моё внимание приковал на форуме никнейм "seenoos" и я создал сайт, свой первый сайт на хостинге sinus.bp9.mobi. Этот сайт я посвятил тюнингу автомобилей, и прочим проявлениям энтузиазма автолюбителей.<br>
Сайт я уже делал подсматривая код страниц на своём вен сайте, и так потихоньку освоил азы html.<br>
Это был не движок, это был сайт с главной страницой редактируемой вручную и установленные скрипты загруз-центра, гостевой и различных сервисов.<br>
<br>
Почему то после этого я стал себя именовать в вапе как Sinus, хотя это был не мой никнейм - я его украл. На хвабе под этим ником я начал выкладывать свои первые работы вап-дизайна. Меня привлекло то что некоторые люди делали не хитрые цветовые схемы и получали за это копейку. Но css я осваивать начал на jhoncms , превое, что у меня получилось - это отредактировать дефолтный стиль, и как мне показалось и некоторым пользователям xwab - получилось неплохо, по крайней мере не раздражающе. Это дало толчок к моему увлечению создания wap стилей для сайтов, я вдохновлялся работами MadMax'a, Rebel_Bk и ещё некоторых дизайнеров.<br>
<br>
Время шло а я заработал репутацию "дизайнера" на dcms.su, брал за свои работы 150-200 руб, иногда делал темы оформления в паблик.<br>
<br>
Моя учёба закончилась и я устроился на нормальную работу в реале и соответственно моё увлечение ушло на второй план, после я ушел в армию.<br>
После армии я всё было дело хотел реабилитироваться в сайтостроении , но результат до сих пор стоит на месте, но надеюсь, что P.S. )))<div class="media-file"><a href="/uploads/articles/6304525d008a5545777487.jpg" data-fancybox="gallery"><img src="/uploads/articles/6304525d008a5545777487.jpg" class="img-fluid" alt="image"></a></div>Smitti NilsonTue, 23 Aug 2022 07:06:57 +0300Блогиhttps://visavi.net/articles/633Быстрое обновление RotorCMS
https://visavi.net/articles/631
Написал проект на роторе. Пока писал проект вышел laravel 9 и обновился ротор. Пришлось обновляться и без неприятностей не обошлось. Очень неудобно смотреть кормиты и сравнивать со своим кодом в проекте. Где-то скопировал криво, где объединил весь файл, а там были моим изменения. В итоге пришлось все по новой тестировать, просматривать все страницы и код. А чем дольше не обновляешь, тем более сложнее потом переработать все новые обновления которых очень много. В чатике по Laravel не привыкли видеть такие cms которые переписывают код, как мне там дали понять, что cms должна предоставлять наследование контроллеров. Поэтому в чате не пришлось ожидать помощи. Нужен был инструмент слияния файлов таким образом, что бы наши файлы проекта не переписывались, а новый код добавлялся. Ничего подобного нагуглить не вышло. Была попытка написание сравнителя файлов, который генерировал git патчи, но это всё нито.<br>
<br>
У git есть софтина merge-file которая оказалась подходящей, но merge-file это трехстороннее объединение. То-есть два файла невозможно объединить, нужен третий базовый, основа на которую накладывается новая версия файла от вантуза и сверху наша. Подсунуть git-merge в качестве базового файла копию своего файла не даст результатов. Значит нам нужен базовый файл, тот на котором были построены наши изменения. Если мы не знаем последний коммит из ротора на котором начал формироваться наш проект, то можно отследить по дате изменения наших файлов. И так нам известен последний коммит репозитория ротора. Клонируем ротор и в его директории откатываемся до нужного нам коммита git checkout commitId. Дальше на этом состоянии вытаскивает базовый файл на котором построены наши изменения. Затем переключаемся на последний коммит ротора просто git checkout master. Тут мы забираем самую новую версию файла выпущенного обновления от Вантуза. И сравниваем git merge-file наш_текущий_файл базовый_файл новый_файл. Происходит идеальное слияние то, что нам нужно, наши изменения не затерты, новый код от Вантуза добавлен, мы рады. Если был конфликт, по меткам в файле все видно и понятно, что из нового файла, а что из нашего, фиксим и готово.<br>
<br>
Но конечно это все хорошо, но мы же не можем такие операции проделывать ручками для каждого файла, поэтому был написан nodejs модуль roup. Мне показалось, что для таких дел отлично подходит nodejs и всё на этом.<br>
<br>
Апгрейд в действии<br>
У меня версия ротора 10.2 с обновления до лары 9, последний коммит с которого я обновлялся у меня есть, выяснять не пришлось.<br>
<br>
В проекте в директории upgrades лежит свежий клонированный репозиторий ротора.<br>
<br>
Запускаем roup<br>
<pre class="prettyprint">node roup</pre>
<br>
Наблюдаем процесс сравнения файлов с файлами нашего проекта, изъятия всех версий файлов и приготовления. В конце будет выведен результат работы. Это обновлённые файлы в нашем проекте, новые файла пришедшие с обновлением и файлы в которых имеется конфликт. Результат также дублируется в лог куда также пишется айди последнего коммита ротора. Берём айди коммита из лога и записываем в наш конфиг в запускаемом файле roup.js, он нам пригодится при следующем обновлении. В моём случаи вышло всего 7 конфликтных файлов и 200 начисто слитых. Процесс обновления прошёл великолепно, и последующие обновления будут сливаться в тот-же день не зная горя.<br>
<br>
Процесс установки и использования roup описан в Readme репозиторя <a href="https://github.com/oopsfix/roup" target="_blank" rel="nofollow">https://github.com/oopsfix/roup</a> , здесь его дублировать не стану. На этом прощаюсь, возможно roup вас обрадует как и меня.RefleshWed, 01 Jun 2022 13:31:06 +0300Блогиhttps://visavi.net/articles/631Молодая творческая тенденция в искусстве.
https://visavi.net/articles/630
В мире существует множество стилей и тенденций в изобразительном искусстве, есть и компьютерное искусство и традиционное искусство (от наивного искусства до гиперреализма). Уфолизм — это молодая тенденция в изобразительном искусстве. Её основателем является российский художник DiezelSun (Александр Татарников). В своих картинах он изображает древних Богов (представителей внеземного мира). Древние артефакты являются хорошими источниками для воплощения творческих идей.<br>
<br>
На многих древних артефактах изображён внеземной мир. В некоторых картинах художника присутствует романтизм, т. к. изображены прекрасные женщины (Богини любви, Богини плодородия и т. д.)<br>
<br>
Также эта тематика связана с теорией и гипотезой Палеоконтакта, всё это очень интересно и начинаешь задумываться о истории Земли, а у Земли история не простая.<br>
<br>
<div class="media-file"><a href="https://i.ibb.co/8m03w9H/1613238997-77-p-fon-blestyashchii-sinii-116-2.jpg" data-fancybox="gallery"><img src="https://i.ibb.co/8m03w9H/1613238997-77-p-fon-blestyashchii-sinii-116-2.jpg" class="img-fluid" alt="image"></a></div>
<br>
<div class="media-file"><a href="https://i.ibb.co/hfB6W0j/hqdefault-5-sdfds-3-8-8-8-3-8.jpg" data-fancybox="gallery"><img src="https://i.ibb.co/hfB6W0j/hqdefault-5-sdfds-3-8-8-8-3-8.jpg" class="img-fluid" alt="image"></a></div>
<br>
<br>
<div class="media-file"><a href="https://i.ibb.co/9qBQs7G/55iewrshooq-1-FKE1v.jpg" data-fancybox="gallery"><img src="https://i.ibb.co/9qBQs7G/55iewrshooq-1-FKE1v.jpg" class="img-fluid" alt="image"></a></div>
<div class="media-file"><a href="https://i.ibb.co/kqJ89Hg/1619341287-59-phonoteka-org-p-krasnii-fon-yarkii-ochen-65-3-8-8-8-3-8.jpg" data-fancybox="gallery"><img src="https://i.ibb.co/kqJ89Hg/1619341287-59-phonoteka-org-p-krasnii-fon-yarkii-ochen-65-3-8-8-8-3-8.jpg" class="img-fluid" alt="image"></a></div>OliveeThu, 23 Dec 2021 23:24:34 +0300Блогиhttps://visavi.net/articles/630Кэширование данных в PHP на примере класса
https://visavi.net/articles/629
Для очередного клиента разрабатывал интернет-магазин запчастей. Каталога как такового там не было, однако была куча поставщиков, подключенных через API.<br>
Так как клиентов планировалось много, то постоянное обращение к API было бы слишком затратно для сервера.<br>
В рамках этого проекта был написан простой класс, который позволяет кэшировать данные, полученные в ходе каких-либо операций в файл и использовать их в любое удобное время с минимальной задержкой.<br>
Вот он:<br>
<pre class="prettyprint">
<?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;
}
}
}
?>
</pre>
Несмотря на малое количество строк кода, он с легкость решает поставленную задачу, а именно:<br>
<ul><li>Проверка наличия кэша элемента</li><li>Получение элемента из кэша</li><li>Запись элемента в кэш</li><li>Удаление элемента из кэша</li><li>Очистку кэша</li><li>Получение размера кэша</li><li>Получение размера конкретного элемента в кэше</li><li>Время жизни элемента кэша</li></ul><br>
Все методы класса являются статическими, поэтому создавать экземпляр класса не требуется.<br>
Ниже я приведу полное описание всех доступных методов.<br>
<br>
<strong><span style="font-size:large">CCache::init(‘/folder/’);</span></strong><br>
Установка дирректории для хранения кэша. Указывать со слешами в начале и в конце.<br>
<br>
<strong><span style="font-size:large">CCache::checkCache($name);</span></strong><br>
Выполняет проверку наличия кэша в базе. Принимает в качестве аргумента идентификатор элемента $name. Если элемент присутствует в кэше — вернет true, иначе — false.<br>
<br>
<strong><span style="font-size:large">CCache::getCache($name);</span></strong><br>
Получает элемент из кэша, возвращает массив. Если элемент в кэше не найден — вернет false.<br>
<br>
<strong><span style="font-size:large">CCache::writeCache($name, $arValue);</span></strong><br>
Запись данных в кэш. Принимает два аргумента: имя элемента $name и данные $arValue. В свою очередь данные $arValue должны являться массивом. При наличии элемента в кэше он будет перезаписан.<br>
<br>
<strong><span style="font-size:large">CCache::clearCache();</span></strong><br>
Метод полностью очищает кэш. Вернет false в случае ошибки.<br>
<br>
<strong><span style="font-size:large">CCache::delFromCache($name);</span></strong><br>
Метод удаляет конкретный элемент из кэша, принимает имя элемента $name в качестве аргумента. Вернет false в сллучае ошибки удаления.<br>
<br>
<strong><span style="font-size:large">CCache::getSize($name)</span></strong><br>
Метод возвращает размер элемента $name в байтах. Если элемент в кэше не найден — вернет false.<br>
<br>
<strong><span style="font-size:large">CCache::getSize($name)</span></strong><br>
Метод возвращает размер кэша в байтах<br>
<br>
Небольшой пример использования:<br>
<pre class="prettyprint">
<?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); // Пишем результат в кэш
}
</pre>РоманSat, 03 Jul 2021 23:31:39 +0300Блогиhttps://visavi.net/articles/629Хостинг за активность!
https://visavi.net/articles/628
<div style="text-align:center;"><div class="media-file"><a href="https://i.ibb.co/mXKZz64/vk-1.png" data-fancybox="gallery"><img src="https://i.ibb.co/mXKZz64/vk-1.png" class="img-fluid" alt="image"></a></div>
1) Вступить в нашу <strong><a href="https://vk.com/monsterhostru" target="_blank" rel="nofollow">группу VK</a></strong><br>
2) Поставить лайк к новости и поделиться на своей странице.<br>
3) Пришлите ссылку с новостью в тикет систему.<br>
<br>
Мы отблагодарим вас 2 бесплатными неделями виртуального хостинга по вашему тарифу.<br>
<br>
Условия:<br>
1) Профиль должен быть открытым, настоящим. Бонусный хостинг начисляется спустя 3 дня после репоста записи вконтакте!<br>
2) У вас должна быть действующая услуга виртуального хостинга!</div>XaOSFri, 04 Jun 2021 00:32:48 +0300Блогиhttps://visavi.net/articles/628ЛЕТО 2021 с MONSTERHOST
https://visavi.net/articles/627
<div style="text-align:center;"><div class="media-file"><a href="https://i.ibb.co/JKVc26m/leto.png" data-fancybox="gallery"><img src="https://i.ibb.co/JKVc26m/leto.png" class="img-fluid" alt="image"></a></div>
Только этим летом <span style="color:#0000ff"><strong><a href="https://monsterhost.ru" target="_blank" rel="nofollow">MONSTERHOST</a></strong></span> дарит скидку 10%! Закажи хостинг на любой срок и получи гарантированную скидку по промо-коду <span style="color:#ff0000"><strong>LETO2021!</strong></span></div>XaOSFri, 04 Jun 2021 00:26:45 +0300Блогиhttps://visavi.net/articles/627ProWM.RU - Вап букс и не только...
https://visavi.net/articles/626
Здравствуйте, приглащаю вас на новый проект ProWM.RU<br>
<br>
Для исполнителей:<br>
- Заработок на кликах (сёрфинг) клики от 10 копеек <br>
- Заработок на выполнениях задании от 50 копеек<br>
- Рефералная программа 10% пожизненно.<br>
- Бонусы каждый час от 1 до 20 копеек <br>
- Так же вы можете заработать на продажах (скриптов, э-книг, аккаунтов, доменов или инфо товаров) цены указываете сами. <br>
- Еще мы проводим конкурс активности за открытие проекта, участвуйте и получайте шанс на получение один из призов конкурса. (Подробности на сайте prowm.ru в разделе "Новости")<br>
<br>
Для рекламодателей:<br>
- Возможность 5 вида рекламы (сёрфинг, задании, почтовая рассылка, контекстная реклама, баннерная реклама)<br>
- Качественный трафик и быстрая Модерация рекламных площадок <br>
- Форум для бесплатного поиска рефералов или рекламы своего сайта.<br>
- Дружелюбный тех поддержка<br>
- доп услуги для продвижение ваших сайтов (прогон по сайтам с трастовыми ссылками, ручная размещение на каталогах и форумах и другие)<br>
<br>
Для участников:<br>
- Форум для обсуждение интернет проектов или просто для общение <br>
- Магазин цифровых товар (все ваши покупки защищается в течении 7 дней у вас есть возможность жаловаться на товар и получит возврат денег) <br>
- Полезные блоги и стати для заработка в интернете <br>
- И многое другое <br>
<br>
Дата открытие проекта: 9.05.2021<br>
<br>
Строго не судите)) Я честный и хороший администратор. А вот в плане кодирование новичок (точнее чайник), так что скрипт и дизайн ставил как есть из коробки стандарным дизайном.<br>
<br>
Что планирую в будущем?:<br>
- Более красивый и современный дизайн <br>
- Новый способы заработка такие как "письма, тесты, подписки, просмотр видео, " и возможность монетизации сайтов для вебмастеров "тизеры, контекстные рекламы, баннеры и пушы"<br>
<br>
Вывод денег:<br>
- Данный момент вывод доступен только на вебмоней вмр-кошелек <br>
- По запросу через свой кабинет (обработка в течении сутки, основном в течении 2-3 часа)<br>
<br>
Спасибо за внимание и всем добро пожаловать на борт ProWM.RUGray WolfThu, 13 May 2021 02:26:46 +0300Блогиhttps://visavi.net/articles/626