Задать вопрос
  • Есть ли альтернативы организации виртуальной памяти в операционных системах и железе ?Другими словами почему нету ос с сборкой мусора подобно Jvm?

    @popov654
    Специалист в области веб-технологий
    Всё намного проще. Прикол в том, что для ряда операций вроде видеоускорения и маппинга текстур в видеопамять (браузеры, игры, видеоплееры) нужен прямой доступ к памяти. Мне кажется, по ряду причин такие диапазоны невозможно будет контролировать на предмет невыхода за границы, либо такие проверки слишком замедлят доступ.

    Те программы, которые не работают напрямую с железом и не требуют сильно высокого быстродействия - да, почему нет, ваш вариант вполне рабочий. Типа, условная JVM как ОС, а программы - объекты и потоки в ней.
    Ответ написан
    Комментировать
  • Как исправить проблему запрета загрузки смешанного содержимого в Chrome?

    @popov654 Автор вопроса
    Специалист в области веб-технологий
    Пока что решил проблему прописав абсолютные адреса в правилах перенаправления в .htaccess для проблемного подкаталога. Но имхо это ужасный костыль, так что буду рад услышать более удачные варианты
    Ответ написан
  • Почему в Mac OS звук в Chrome хуже, чем через QuickTime Player?

    @popov654
    Специалист в области веб-технологий
    Скорее всего потому, что Хром использует встроенный, а не системный аудиокодек. Такое бывает, это нормально.

    У меня на Windows XP в своё время хром давал звук через HTML5 весьма своеобразный (как бы акцент на ударной секции, точнее на ритме мелодии), при этом через Flash через PPAPI плагин (Flash тогда ещё работал) звук был ровнее, но какой-то грязный. Самый лучший вариант был через NPAPI Flash плагин в Firefox. Тестировал на Windows XP в 2016 году, Firefox был версии 42, Chrome версии 45. Flash был не помню какой (вроде бы 27), сравнивал несколько разных версий, разницы не услышал.

    При этом на Windows 7 выше, как писали на форумах, Хром якобы умел использовать системный аудиокодек. Но то было давно и касалось mp3 аудио, тогда ВК ещё использовал этот формат.
    Ответ написан
    Комментировать
  • Какой выбрать легкий и простой дистрибутив Linux для серфинга интернета?

    @popov654
    Специалист в области веб-технологий
    Попробуйте Linux Lite (сделан на основе Ubuntu, реально очень лёгкий и сбалансированный). У меня стоит в виртуалке, выглядит очень неплохо.
    Ответ написан
    Комментировать
  • Не могу войти в Oracle Cloud, что делать?

    @popov654
    Специалист в области веб-технологий
    А если мне нужно просто скачать JRE или JDK с их сайта, я тоже не могу зайти даже через VPN. Как они определяют страну, кто-нибудь знает? Через Accept-Language заголовки браузера? Или через email, используемый для подтверждения аккаунта (я регал на ящик с mail.ru)?
    Ответ написан
  • Как сделать, чтобы красные круги оставались на одних и тех же местах при изменении ширины экрана?

    @popov654
    Специалист в области веб-технологий
    Я не подскажу точное решение, но как я понимаю, ваша проблема из-за того, что у вас картинка срезается благодаря object-fit (и через background тоже бы срезалась), и координаты точек в процентах считаются не от картинки, а от элемента. Например, top: 20% превратится в 30% относительно верха картинки, если 10% её высоты осталось за краем.

    Мне кажется, вам нужно поместить точки в контейнер, зафиксировать ему либо ширину в 100% (смартфоны), либо высоту на фиксированной величине (десктоп), а второй параметр считать или через aspect свойства, или через JS для поддержки любых браузеров. При этом точки размещать в этом контейнере, а картинку сделать его фоном с background: contain для десктопа, когда контейнер шире изображения, а для мобильных просто задать явно ширину background в пикселях больше ширины экрана, а высоту в auto для сохранения пропорций, чтобы края изображения по горизонтали срезались. Либо делайте для смартфонов контейнер со скроллом, что практичнее для пользователя.

    Или если вам не критично то, что у вас срезается часть схемы (хотя должно быть критично), можете оставить cover как сейчас (либо background-size: cover), разместить в центре контейнера невидимый блок размером в 1px, точки вкладывать в него и задавать им отрицательные координаты, привязав всё к центру как в школе на графиках. И поставить overflow: hidden на контейнере, чтобы точки тоже скрывались при вылете за края.
    Ответ написан
    1 комментарий
  • Как лучше организовать хранение и представление данных?

    @popov654 Автор вопроса
    Специалист в области веб-технологий
    Отвечаю сам себе: действительно, самым простым способом оказалось хранить списки целых чисел в отдельном поле для каждого контейнера. При удалении и добавлении нужно просто будет обходить все контейнеры и корректировать числа, большие искомого значения на единицу вверх или вниз.

    К тому же, в JS удаление элемента из массива делается одним вызовом splice(), так что с "перестроением массива" я тут конечно загнул.

    От разметки отказался, данные по координатам теперь хранятся во вложенном объекте layout.
    Ответ написан
    Комментировать
  • Как синхронизировать папки на разных компьютерах?

    @popov654
    Специалист в области веб-технологий
    Если вам хочется непременно напрямую - то поднимайте VPN и юзайте любую программу типа HandyBackup или её бесплатные аналоги (например, z-sync как вариант). Если облако всё-таки вариант - мне лично нравится сервис Sync (очень компактный клиент, возможность выбирать произвольные каталоги на диске для синхронизации, а не только в рамках одной папки, и поддержка Windows XP, что для меня очень важно). Сейчас аналогов с поддержкой этой ОС в принципе больше нет.
    Ответ написан
    Комментировать
  • Насколько сложно написать систему подсчета количества однотипных действий человека на видео?

    @popov654
    Специалист в области веб-технологий
    Я может полный бред сейчас напишу, но возможно, есть математические методы, как определить скелеты людей на видео (начать с поиска контрастных областей, отделив людей от фона, а потом попытаться построить векторы конечностей), и задать приседания как определённые движения скелета человека в пространстве? В конце девяностых так распознавали порнографию на видео, была очень хорошая точность. Про это есть даже статья на Хабре. Имхо, это получится проще, быстрее в разработке, чем нейросеть с её обучением, а главное - не потребует огромную базу образцов для обучения находить.
    Ответ написан
    Комментировать
  • Является ли это нарушением авторских прав?

    @popov654
    Специалист в области веб-технологий
    Отчасти они правы. В рекламе запрещено использовать наименования конкурирующих брендов, есть такая тема. Поэтому пишут обычно общие слова "по сравнению с ... других торговых марок". А ещё есть требование не вводить людей в заблуждение, поэтому в грамотной рекламе внизу мелким шрифтом пишут "по результатам тестирования лаборатории XXX в YYY году".
    Ответ написан
  • Не работает usort?

    @popov654 Автор вопроса
    Специалист в области веб-технологий
    Чтобы не путать читателей, да и справедливости ради, привожу верный код ниже.

    Ошибка была в том, что нельзя возвращать из функции сортировки значения, отличные от 0, 1 или -1 (как минимум в PHP 5.3).

    Спасибо Andrzej Wielski за подсказку :)

    <?php
       $search = $_GET['search'];
       
       $url = "http://popov654.pp.ru/mp3.php?search=".(preg_match("/Chrome/", $_SERVER['HTTP_USER_AGENT']) ? urlencode(iconv('cp1251', 'UTF-8', $_GET['search'])) : urlencode($_GET['search']));
       if (isset($_GET['page']) && (int)$_GET['page'] > 0) $url .= "&page=".(int)$_GET['page'];
       $ch = curl_init();
       curl_setopt($ch, CURLOPT_URL, $url);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt($ch, CURLOPT_HEADER, 0);
    
       $output = mb_convert_encoding(curl_exec($ch), 'CP1251', 'UTF-8');
       curl_close($ch);
    
       $template = '|<div class="x-track" data-mp3id="([0-9]+)" data-artist="([^"]+)" data-name="([^"]+)" >\\s*<a href="javascript:" class="x-icons x-play x-icon-play" title="[^"]+">&nbsp;</a>\\s*<a href="javascript:" style="display: none;" class="x-icons x-pause x-icon-pause" title="[^"]+">&nbsp;</a>\\s*<strong><a href="[^"]+" title="[^"]+">[^>]+</a></strong> -  <a href="[^"]+" title="[^"]+">[^>]+</a>  \\(([0-9]+:[0-9]{2})\\)|';
       preg_match_all($template, $output, $matches, PREG_SET_ORDER);
    
       preg_match_all('|<a href="./search/[^?]+\\?p=[0-9]+">([0-9]+)</a>|', $output, $a, PREG_SET_ORDER);
       $page_count = count($a) > 0 ? $a[count($a)-1][1] : 1;
    
       $words = explode(" ", $_GET['search']);
    
       function reorder(&$m) {
          global $words;
          for ($i = 0; $i < count($m); $i++) {
             if (preg_match('/^'.$_GET['search'].'(\\s|$)/', $m[$i][2]) || preg_match('/^'.$_GET['search'].'(\\s|$)/', $m[$i][3])) $m[$i][5] = 1;
             else if (preg_match('/\\s'.$_GET['search'].'(\\s|$)/', $m[$i][2]) || preg_match('/\\s'.$_GET['search'].'(\\s|$)/', $m[$i][3])) $m[$i][5] = 0.8;
    
             else {
                for ($j = 0; $j < count($words); $j++) {
                   if (preg_match('/(^|\\s)'.$words[$j].'(\\s|$)/', $m[$i][2]) && preg_match('/(^|\\s)'.$words[$j].'(\\s|$)/', $m[$i][3])) {
                      $m[$i][5] = 0.7;
                      break;
                   }
                   if (preg_match('/(^|\\s)'.$words[$j].'(\\s|$)/', $m[$i][2]) || preg_match('/(^|\\s)'.$words[$j].'(\\s|$)/', $m[$i][3])) {
                      $m[$i][5] = 0.6;
                      break;
                   }
                }
             }
    
             if (!isset($m[$i][5])) $m[$i][5] = 0.4;
          }
    
          usort($m, usort($m, function($a, $b) {
             if ($a[5] == $b[5]) return 0;
             return ($a[5] > $b[5]) ? -1 : 1;
          });
       }
    
       reorder($matches);
       $result = '';
       for ($i = 0; $i < count($matches); $i++) {
          if ($result != '') $result .= ', ';
          $result .= '{"artist":"'.$matches[$i][2].'", "title":"'.str_replace('"', '\\"', $matches[$i][3]).'", "time":"'.$matches[$i][4].'", "url":"http://mixpromo.net/getsong/'.$matches[$i][1].'"}';
       }
       echo '{ "pages": '.$page_count.', "items": ['.$result.'] }';
    
    ?>
    Ответ написан
    Комментировать
  • Кто отвечает за мобильную версию сайта?

    @popov654
    Специалист в области веб-технологий
    В проектах, где я участвовал, мобильную версию рисовали отдельно (т.к. сильно другое расположение блоков, что-то вовсе убирается за ненадобностью, более крупные иконки, шрифты, и т.д.)

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

    Однажды заказали мобильную вёрстку лендинга специалисту на фрилансе, поскольку я был на другом проекте занят. Сделал в целом рабочий вариант, но смотрелось это так вырвиглазно (и местами работало тоже не идеально), что я потом половину работы переделывал. А макетов не было вообще, сэкономили - человек всё по наитию делал. Вот и результат - размеры текстов от балды, отступы от балды, выравнивания где-то нет, где-то неверное.
    Ответ написан
    Комментировать
  • Нужно ли делать дизайн мобильной версии или верстальщик разберется?

    @popov654
    Специалист в области веб-технологий
    Конечно, нужно. Верстальщик - не дизайнер. Мобильная версия очень сильно отличается от десктопной (посередине между ними есть ещё планшетная, а иногда и 2-3 вариации с плавными изменениями). При так называемом "адаптивномм" дизайне отличий между версиями меньше, и они идут плавнее по мере изменения размера экрана, но они всё равно есть. Верстальщик без дизайнера грамотно всё это не продумает, факт.
    Ответ написан
    Комментировать
  • Как реализовать отправку уведомлений?

    @popov654
    Специалист в области веб-технологий
    Не является прямым ответом на вопрос, но всё же вынесу сюда, вдруг кому-то пригодится. Получить DOM дерево документа можно используя XHR2, указав правильный тип ответа: https://jsfiddle.net/b1k50r43/. Либо просто $(xhr.responseText).find(selector), если подключена jQuery :)

    Также стоит учесть, что если речь не идёт о расширении (с ним проблем не будет), то нужны правильно настроенные заголовки CORS, чтобы запрос на другой домен прошёл, либо использовать самописный прокси-скрипт на PHP...
    Ответ написан
    1 комментарий
  • Почему textarea не подстраивает ширину автоматически?

    @popov654 Автор вопроса
    Специалист в области веб-технологий
    Проблема решилась обёртыванием textarea в div. Почему div умеет вычислять ширину автоматически, а img, button, и textarea - нет (даже если им поставить display: block), для меня загадка.
    Ответ написан
  • Как называется такой(кхм.. странный) SESSION?

    @popov654
    Специалист в области веб-технологий
    Не путайте сессии с куками. Файлы сессий хранит на сервере PHP, браузер хранит лишь id сессии. SQL напрямую исправить на клиенте не получится.
    Ответ написан
    5 комментариев
  • Как синхронизировать локальную папку с sftp?

    @popov654
    Специалист в области веб-технологий
    Поищите аналоги Z-Sync (это утилита под Windows) или GoodSync
    Возможно, где-то есть Linux версии. Под виндой там со скоростью очень хорошо, отслеживаются изменения для каждой папки, передаются только изменённые данные, куча настроек (можно задать, чтобы удалённые локально не удалялись удалённо, ставить расписания, назначать пред- и пост- операции и т.д.), разные типа точек синхронизации (FTP/SFTP в наличии), возможность возобновления синхронизации после внезапной остановки (у второй утилиты). Обе имеют бесплатный период, у второй 14 или 30 дней полноценный триал, потом отрубается.
    Ответ написан
    2 комментария
  • Где найти шрифты, похожие на логотип Brainstorage.me?

    @popov654
    Специалист в области веб-технологий
    ИМХО очень похожий используется в Instagram или где-то в похожих сервисах. Надпись "Retrica" на фотографиях довольно похожим шрифтом выводится, например. Тот шрифт точно публичный, или во всяком случае должны быть аналоги. И новый логотип ВК (на латинице который) использует что-то такое.
    Также могу предложить попробовать этот сервис: webfont.ru
    Ответ написан
    Комментировать