• Как правильно верстать фоновые изображения?

    Aligatro
    @Aligatro
    Turn food and coffee into software...
    Можно привязать изображение прямо на body и задать ему bachground-size:cover, a контент на сайте вставлять через секции, и тогда контент должен быть позиционирован так как вам надо.

    Если на body привязать изображение нельзя, тогда есть вариант создать еще 1 блок с изображением внутри и абсолютным позиционирование а высоту экрана считать при помощи js и задавать высчитанную высоту экрана через стили к изображению.

    К сожалению я не совсем уверен, что правильно понял суть вашего вопроса.
    Ответ написан
    4 комментария
  • Как грамотно проанализировать?

    serieznyi
    @serieznyi
    Backend Developer
    У вас очень хаотичная логика.
    Я думаю вам будет проще в первую очередь привести текстовый код из $prog[0] к массиву элементов.
    То есть из
    program {var} begin end
    сделать вот это
    Array
    (
    [0] => {
    [1] => var 
    [2] => } 
    [3] => begin
    [4] => end
    )


    После чего вы можете спокойно пройтись циклом по вышеописанному массиву и найти все лексемы.

    $codeForParsing = "program {var} begin end";
    
    $codeAsArray = textToArray($textForParsing);
    
    $map = [];
    foreach(array_unique($codeAsArray) as $codeItem) {
          if (isset($map[$codeItem])) 
              continue;
    
         foreach($outp as $group => $groupItems) {
              if (($finded = array_search($codeItem, $groupItems)) !== false) {
                    $map[$codeItem] = [$group, $finded];
               }
         }
    }
    
    $result = [];
    foreach($codeAsArray as $codeItem) {
         $result[] = [$codeItem, $map[$codeItem][0], $map[$codeItem][1]];
    }


    В итоге вы получите массив вида
    [
    ['{', 'ogran', индексЛексемы]
    ['var', 'oper', индексЛексемы],
    ['}', 'ogran', индексЛексемы],
    ....
    ]


    который вы уже легко сможете привести к нужному виду
    Ответ написан
    2 комментария
  • Как грамотно анализировать массив?

    jakulov
    @jakulov
    Для обработки массива поэлементно, если не находите подходящей встроенной функции, всегда можно воспользоваться array_map, и написать свою реализацию обработчика.
    0. Учтите что у вас в вопросе написаны не массивы, а строки. массивы будут выглять так:
    <?php
    $prog = array(
        'program analiz', 'begin', 'int i, n ; {Описание переменных}', 'float sum ; {Описание переменных}', 'readln n ; {Указание количества итераций}',
        'sum:= 0.31e-1 ;', 'i:=1 ; ', 'while (i<=n)', 'begin', 'sum:=sum+(1/i);', 'i:=i+1;', 'end', 'writeln sum; {Вывод результата}', 'end.'
    );
    $oper = array('program','var','begin','end','ass','if','then','else','for','to','do','while','read','write','true','false');

    1.
    <?php
    $uncomment = array_map(function($el){
        return preg_replace('/(\{.*\})/', '', $el);
    }, $prog);

    2. Также можно фильтровать массив с помощью собственной функции.
    <?php
    $operators = array_unique(array_filter($oper, function($o) use ($prog) {
        foreach ($prog as $line) {
            if (stripos($line, $o) !== false) {
                return true;
            }
        }
        return false;
    }));

    3. Тут как и в п 1. регулярка и array_map
    <?php
    $ost = [];
    array_map(function($el) use($operators, &$ost) {
        if(preg_match_all('/(\w+)/', $el, $match)) {
            foreach($match as $m) {
                foreach($m as $word) {
                    var_dump($word);
                    if(!in_array(strtolower($word), $operators)) {
                        $ost[] = $word;
                    }
                }
            }
        }
    }, $prog);

    4. ... по аналогии с 3, регулярку только другую подобрать (и с оперторами сравнивать не надо), вот удобный сервис для этого: https://www.regex101.com/
    Ответ написан
    3 комментария
  • Как отобразить контент через определённый div?

    @DailyFuckups
    Если я правильно понял задачу, должно сработать:
    Родительский div c overflow:hidden и position:relative, дочерний -- position:absolute, перемещайте его внутри родительского блока с margin или просто top/left
    Ответ написан
    1 комментарий
  • Чем обусловлена столь высокая стоимость интернета в роуминге?

    @AGet
    Оператор берёт в аренду ресурсы других операторов, и ему это обходится недёшево. Хотя, стоп, если внутри страны... Да, скорее жадность...
    Ответ написан
    Комментировать
  • Какие методы продвижения сайта самые действующие?

    reffy
    @reffy
    Я молодец.

    До Нового Года не успеете. Единственным вариантом будет контекстная реклама: Яндекс Директ и Google Adwords. Контекст для интернет-магазина очень хорошо работает.

    Просто и быстро вникнуть в SEO и продвинуть интернет-магазин не получится. Сроки по продвижению в умелых руках начинаются от 3-х месяцев (и это только первые результаты, а не конечная цель).

    А по теме вопроса: составляете список ключевых слов, оптимизируете страницы под ключи, продвигаете вечными ссылками + статьями. Продвигаете категории товаров + сами товары.

    Вы поймите — SEO это не купил ссылочки и всё продвинулось. Это нудный и рутинный труд и много экспериментов — придётся постоянно вести внутренние работы + внешние, повышать конверсию, получать лояльность пользователей. Плюс, вы очень зависимы по срокам от поисковой системы. Провели работы, ждёте неделю-две-месяц, чтобы оценить результат. Нет результата ждёте ещё, результат не устраивает, опять проводите работу, ждёте.

    Ответ написан
    Комментировать
  • Какие методы продвижения сайта самые действующие?

    afiskon
    @afiskon

    Вот тут писал про свой опыт раскрутки (и не только раскрутки) блога, может поможет.

    Ответ написан
    Комментировать
  • CMS своими руками

    @egorinsk
    Автор, а что гуглить. Есть минимум 3 способа: расковырять простую Open-Source CMS (проблема: найти CMS с хорошей архитектурой и аккуратным кодом), устроиться в компанию, у которой есть своя CMS (а она есть почти у каждой студии), и наконец, написать самому правильно.

    Маны нужны не по написанию CMS, а по используемым продуктам и технологиям.

    Сначала надо определиться с задачей. Установите и попользуйтесь несколькими CMS, просто чтобы увидеть особенности их работы. (если вы не можете это сделать — вам надо изучать основы установки и настройки apache/mysql/whatever, а не CMS писать. Уходите практиковать эти навыки). Также, есть хороший сайт, где установлены демки десятков CMS и можно их посмотреть, не устанавливая.

    Запишите, что вы хотите получить, сделайте наброски страниц. Определитесь с требованиями к вашей CMS. Какие в ней будут модули, как ими можно управлять.

    CMS обычно состоит из 2 частей — т.н. «админки» (запароленный раздел, где меняется конфигурация сайта, добавляются материалы) и публичной части сайта, которую видят пользователи.

    Если вы еще не бросили эту затею, перейдем к следующему пункту. Проектирование архитектуры и написание CMS. Чтобы хорошо писать сложную CMS, нужен опыт и понимание того, как вообще писать сложные программы. Нужно глубокое знание HTTP/HTML/CSS/JS/SQL. А именно:

    — система должна быть модульной, чтобы, написав основу, можно было, не переписывая ее, не спеша добавлять модули и расширять функционал
    — система должна писаться с использованием грамотной архитектуры и аккуратного кода, так как поддержка и переписывание плохого кода будет отнимать у вас слишком много сил. А потом в нем вообще никто не сможет разобраться.

    Что еще надо знать. Во-первых, надо иметь представление что значит MVC или 3-звенная архитектура.

    M в MVC — это Model. CMS скорее всего будет хранить данные в БД — надо знать, что такое и как пишется DBAL (гуглите: PDO), плейсхолдеры в запросах, возможно, Table Gateway, ознакомиться с тем, что такое ORM, и почему PHP-ные ORM так тормозят. Если будете делать модельки, не храните значения полей в публичных свойствах — это неудобно и нарушает инкапсуляцию. Храните их в приватном массиве $attributes.

    V is for View. Надо знать, что такое шаблонизаторы (прочтите мануал по Smarty, Django Templates, HAML и XSLT, чтобы иметь общее представление, какие они бывают). Для PHP хорошие варианты — использовать чистый PHP или XSLT, если осилите. Smarty — устаревший тормозной хлам, Twig тоже имеет недостатки. И не стоит ставить шаблонизатор, только, чтобы писать {$a} вместо [?= $a =].

    Не смешивайте логику (сложные вычисления, обращение к БД) и шаблонизацию. Лучше сделайте 2 файла: один с кодом, другой с шаблоном. В идеале, шаблонизатор получает от контроллера значения переменных и, кроме хелперов, никакого другого кода не вызывает.

    C — контроллеры. Но это самая простая часть, контроллер — это просто класс с методами типа viewAction(), editAction() и роутер, который смотрит на УРЛ и вызывает нужный контроллер. Посмотрите, как устроен Zend_Controller и Zend_Front_Contriller, и сделайте так же, но попроще. выкинув 90% функционала — он вам не понадобится.

    Нужно как-то сделать систему компонентной без сильных связей: чтобы ядро могло работать и без модулей, а добавление модуля не требовало дописывания кода в ядро. Почитайте про Dependency Injection, а также Observer (observer — это когда мы делаем функцию addEventListener()).

    Не используйте хуки, как в Друпал. Это дурной и порочный путь, взятый видимо из древных времен и программирования на Си.

    Что еще. Освоив все эти понятия, у вас в принципе не будет сложностей написать CMS, но почитайте еще мои советы по тому, как писать правильный код с исп. ООП: habrahabr.ru/qa/17158/#answer_70869

    Написание своих велосипедов, в общем, полезно и способствует расширению кругозора разработчика, заставляет его изучать разные подходы к написанию кода.

    Ну что еще. Если (в чем я сильно сомневаюсь) благодаря моему скромного совету вы все же сможете пройти этот нелегкий путь и станете успешным разработчиком, можете заплатить мне денег. Я не против.
    Ответ написан
    Комментировать