• Форкнутый репозиторий на github?

    @Redeve
    Веб-макаке не хватит и 640гБ
    https://docs.github.com/en/github/collaborating-wi...
    Удаление частного (приватного) репозитория приведет к удалению всех его форков.
    Удаление публичного репозитория не приведет к удалению его форков.
    Ответ написан
    Комментировать
  • Отследить изменения конкретного поля в бд, возможно?

    @bkosun
    Используйте триггеры:

    CREATE TRIGGER `after_update_table_name` AFTER UPDATE ON `table_name`
     FOR EACH ROW BEGIN
    
    	IF `OLD`.`field_name` <> `NEW`.`field_name` THEN
    		# Your action
    	END IF;
    
    END


    https://dev.mysql.com/doc/refman/8.0/en/trigger-sy...
    Ответ написан
    Комментировать
  • Защита от случайного удаления или как подстраховаться перед удалением контента?

    DevMan
    @DevMan
    confirm именно для этого и придуман.
    на стороне сервера можно делать soft delete: не удалять реально, а устанавливать флаг удаления.
    Ответ написан
    Комментировать
  • Обучение программированию, что делать если застрял?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Писать что-то свое, такой большой и интересный(для тебя) пет прожект. И если что то не идет - временно отвлечься и писать его любимого. Вроде и отвлекся, и вроде как по теме работаешь. Ну и заодно писать учишься, ошибки свои решаешь, а это гораздо более мотивированно чем абстрактные задачи решать. Даблкилл.
    Ответ написан
    1 комментарий
  • Странно стал вести себя composer?

    glaphire
    @glaphire
    PHP developer
    На офф. сайте композера есть инструкция, как с этим бороться. Возможно что что-то сбилось в реестре или поменялись пути или права на папки, связанные с композером и проектом. Поищите на stackoverflow вопросы с этой ошибкой, там много вариантов и наверняка один из них подойдет для решения.
    Ответ написан
    Комментировать
  • Визуальный редактор bitrix удаляет теги?

    AlexanderTsymbal
    @AlexanderTsymbal
    tsymbal.su
    Сталкивался. Бороться с редактором Битрикс бессмысленно.
    Тут 2 варианта:
    1. Запретить модераторам сайта, не имеющим опыта работы с html/php-кодом, трогать содержимое сайта. И самому редактировать и сохранять с выключенным редактором, только в режимах html/php-кода. Если клиент согласится на поддержку сайта на аутсорсе (в вашем лице) - то вам это даже хорошо, будет постоянная работа :).
    2. Организовать структуру редактируемых участков кода таким образом, чтобы <svg> и другие "нежелательные" для редактора битрикс теги не "встречались" с редактором. Это, конечно, повлечёт раздувание количества инклудов, что несущественно снизит скорость загрузки страниц. Но тем не менее, можно с чистой совестью отдавать проект клиенту, не боясь, что при первой правке что-то слетит к чертям :)
    Ответ написан
    Комментировать
  • Ubuntu Переодически крашится?

    hint000
    @hint000
    у админа три руки
    В другой SATA-порт на материнке подключите жесткий диск. Если не поможет, то SATA-кабель поменяйте. Но скорее всего проблема именно с портом на материнке.
    Чтобы быть спокойным (ну... относительно спокойным) насчёт состояния жесткого диска, установите пакет smartmontools, и запускайте из командной строки smartctl (ключи смотреть в man'е) для просмотра SMART.
    Не лишним будет запустить на сутки тестирование оперативки.

    P.S. если зафигачить /var/log (или весь /var) на другой физический диск, то появится шанс узнать, что обо всём этом думает сама система.
    Ответ написан
    Комментировать
  • Не работает функция php?

    rammtw
    @rammtw
    Press CTRL+S to save project
    Если по простому, то у вас заканчивается цикл, и в else условие никогда не попадет.
    Тут можно добавить еще один return count($arrStr), после цикла

    $sentence = 'jabjcdel';
    $j = 0; // Работает
    //$j = 1; // Работает 
    
    function longStr(string $str, int $j){
        $len = strlen($str);
        $arrStr = [];
        while ($j < $len) {
            if(!in_array($str[$j], $arrStr)){
                $arrStr[] = $str[$j];
                $j++;
            } else {
                 return count($arrStr);
            }  
        }
        return count($arrStr);
    }
    
    
    $a = longStr($sentence, $j);
    var_dump($a);
    Ответ написан
    2 комментария
  • Не применяются стили css на мобильных устройствах?

    @afanasiyz
    Javascript-разработчик
    Потому что вы используете 'max-device-width'
    А у айфона ретина, в случае с семеркой - 667 пикселей ширина, но max-device-width - 667 * 2, и оказывается вне условий ваших медиа квери.

    перепишите max-device-width на max-width, min-device-width на min-width (попробуйте), и должно все заработать
    Ответ написан
    4 комментария
  • Скрипт js не работает в браузере а в песочнице работает?

    Kublyakov
    @Kublyakov
    скрипт выполняется до полной загрузки страницы
    1. https://learn.javascript.ru/onload-ondomcontentloaded
    2. тег script из head уберите и вставьте перез закрывающим тегом body
    Ответ написан
    Комментировать
  • Скрыть\показать блок по клику js?

    y0u
    @y0u Куратор тега JavaScript
    dev
    1 способ
    в JS:
    document.getElementById('hider').onclick = function() {
      document.getElementById('config-btn').classList.toggle('hidden');
    }

    в CSS:
    .hidden {
      display: none;
    }


    2 способ
    document.getElementById('hider').onclick = function() {
    	var el = document.getElementById('config-btn');
      el.style.display === 'none' ? el.style.display = 'initial' : el.style.display = 'none';
    }
    Ответ написан
    2 комментария
  • Удаление из бд через get работает только при двойном клике?

    @dimuska139
    Backend developer
    Вызывай $allComments = $connection->query("SELECT * FROM comments ORDER BY comment DESC"); после секции if ($_GET['del']) {...}, а не до.

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

    Ну а вообще я тебе не советую сырые данные подставлять напрямую в запросы к базе. Это уязвимость - sql-инъекции. См. доку - там примеры есть, как надо.

    P.s. данные для подключения к базе тоже не надо хардкодить в скрипте - выноси в конфиг, который пропиши в .gitignore-файле, чтобы он в систему контроля версий не попал. Можно такие секьюрные данные хранить в env-файлах - тебе в этом поможет вот эта библиотека.

    P.p.s. старайся не смешивать логику и представление. Посмотри, как это реализовано в известных фреймворках. А то у тебя view (представление) смешано с взаимодействием с БД, что как бы такое себе в плане качества кода.
    Ответ написан
    1 комментарий
  • Конвертирование Unix времеми в понятную дату почему не работает?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Учим азы житейской логики.

    Чтобы заявлять что "Конвертирование Unix "времеми" в понятную дату не работает", нельзя конвертировать "то что приходит из базы". Потому что ты не знаешь, что приходит из базы.

    Чтобы делать такие заявления, надо брать метку времени юникс, и конвертироввть именно её.

    А если конвертирование не работает при получении данных из базы, то взять полученные данные двумя пальчиками и внимательно посмотреть на свет: а что ж у тебя такое диковинное лежит в базе данных под видом метки времени Юникс. оператор var_dump() тебе знаком?

    В общем, главное правило программиста - не только совершить какое-то действие, но и проверить, что на вход были поданы корректные данные, а на выходе лежит то что ожидалось.
    Ответ написан
    2 комментария
  • Выезжающая картинка, как реализовать?

    @Programmir
    Выше уже написали. Старайся сам разбирать код. Наводишь на элемент, получаешь код и видишь, что у блока position:fixed и right:-220px. В гугл хром можно поставить галочку на :hover, и ты увидишь, что у блока уже right:0 и transition: all 0.3s ease-out;
    Ответ написан
    Комментировать
  • Скрипт jquery можно как то короче записать?

    Например, так:
    $(document).ready(function () {
    	$('a#link1, a#link2').click(function (e) {
    		$(this).toggleClass('active');
    		if ($(this)[0].id == 'link1') $('#content1').toggle();
    		else $('#content2').toggle();
    		e.stopPropagation();
    	});
    
    	$('#content1, #content2').click(function (e) {
    		e.stopPropagation();
    	});
    
    	$('body').click(function () {
    		var link = $('a#link1');
    		if (link.hasClass('active')) {
    			link.click();
    		}
    		var link2 = $('a#link2');
    		if (link2.hasClass('active')) {
    			link2.click();
    		}
    	});
    });
    Ответ написан
    Комментировать
  • Почему некорректно работает слайдер slick?

    UnluckySerivelha
    @UnluckySerivelha
    Разные настройки слайдера для разной ширины экрана в slick делаеются по-другому:
    $('.responsive').slick({
      dots: true,
      infinite: false,
      speed: 300,
      slidesToShow: 4,
      slidesToScroll: 4,
      responsive: [
        {
          breakpoint: 1024,
          settings: {
            slidesToShow: 3,
            slidesToScroll: 3,
            infinite: true,
            dots: true
          }
        },
        {
          breakpoint: 600,
          settings: {
            slidesToShow: 2,
            slidesToScroll: 2
          }
        },
        {
          breakpoint: 480,
          settings: {
            slidesToShow: 1,
            slidesToScroll: 1
          }
        }
        // You can unslick at a given breakpoint now by adding:
        // settings: "unslick"
        // instead of a settings object
      ]
    });

    Раздел "Responsive Display" - kenwheeler.github.io/slick
    Ответ написан
    Комментировать
  • Грамотная разметка адаптивной верстки?

    Кросбрайзерный дизайн, с растягиванием в низ, если контента мало то низ будет как бы пустой, а этот метод растягивает.

    <div class="wrapper">
    <header class="header">
    Верх
    </header>
    
    <main class="content">
    Центр
    </main>
    
    </div>
    
    <footer class="footer">
    Низ
    </footer>
    
    </body>


    <b>CSS с нормализацией.</b>
    
    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;}
    html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}
    article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
    audio,canvas,video{display:inline-block}
    audio:not([controls]){display:none;height:0}
    [hidden]{display:none}
    a{outline:none; text-decoration: none;}
    abbr[title]{border-bottom:1px dotted}
    pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word}
    sub,sup{font-size:75%;line-height:0;position:relative}
    sup{top:-0.5em}
    sub{bottom:-0.25em}
    fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
    button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
    button,input{line-height:normal}
    button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
    button[disabled],input[disabled]{cursor:default}
    input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
    input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
    input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
    button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
    textarea{overflow:auto;vertical-align:top}
    input:focus,button:focus,select:focus,textarea:focus{outline:none}
    table{border-collapse:collapse;border-spacing:0}
    img { border: 0; }
    :focus::-webkit-input-placeholder {color: transparent}
    :focus::-moz-placeholder          {color: transparent}
    :focus:-moz-placeholder           {color: transparent}
    :focus:-ms-input-placeholder      {color: transparent}
    
    *{
      padding: 0;
      margin: 0;
    }
    html{height:100%;}
    * html body{height:100%;}
    
    html, body{
      font-family: tahoma, Helvetica, sans-serif;
      font-size: 14px;
      height: 100%;
      background: #fff;
    }
    .wrapper {
      width: 100%;
      min-width: 1100px;
      min-height: 100%;
      height: auto !important;
      height: 100%;
    }
    .header {
      width: 100%;
      height: 150px;
      background: #ffffff;
    }
    .content {
      padding: 0 0 150px;
    }
    .footer {
      margin: -245px auto 0;
      min-width: 1100px;
      height: 245px;
      position: relative;
    }
    Ответ написан
    Комментировать
  • Какая правильная адаптация сайта?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Можно использовать "пошаговое" уменьшение.
    Сжимая окно сайта, смотреть, на каком разрешении экрана "ломается" верстка и уменьшать / переносить / выключать элементы верстки.
    Подход кропотливый, но не создает проблем в виде перевестки на бутстрап.
    Но в большинстве своем, куда более качественный, чем та же адаптация сайта на простой бутстрап.
    Количество "шагов" и размер "шага" определяется всегда индивидуально.
    Готовой "таблетки" при таком рецепте нет.
    Я чаще всего использую шаг 50 или 100 пикселей.
    Плюсом этого метода является возможность удобно разместить все элементы адаптива в отдельном файле css.
    Называть можно как угодно его, у меня всегда media.css, подключается после основного файла стилей.

    @media screen and (max-width: 1200px) {
        .content {
            font-size: 50px;
        }
    }
    @media screen and (max-width: 1000px) {
        .content {
            font-size: 44px;
        }
    }
    Ответ написан
    2 комментария
  • Почему не подключается файл css?

    deniscopro
    @deniscopro Куратор тега WordPress
    WordPress-разработчик, denisco.pro
    Если дело, действительно, в кэше браузера, то можно поставить галочку "Disable cache" на вкладке "Network" в инструментах разработчика, либо менять версию файла стилей после его изменения.
    Ответ написан
    Комментировать