• Как разобраться в структуре разметки (непонятно для чего необходим один кусок кода)?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    обёртки это div с классом ct?
    На них указывают якорные ссылки,
    нужны они, что бы срабатывали правила содержащие :target,
    в друг друга они вложены для того что бы все элементы внутри низ были вложены во всех них и можно было задавать одинаковые каскадные правила типа:

    #t4:target .p1,
    #t5:target .p1
    background black
    Ответ написан
    3 комментария
  • Почему не работает регулярка?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    "~regexp~iu" - нужно добавить модификатор u это значит utf8.
    и соответственно проверить, что исходник и приходящая на проверку строка в utf8
    Ответ написан
    Комментировать
  • Как сделать рассылку писем с vps?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Если рассылка белая, то sendy.co
    Ответ написан
    Комментировать
  • Как работают таймеры в играх?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Вариантов много, в зависимости от качества соединения, приемлемости лагов и возможностей мошенничества.
    Но нужно понимать что анимацию в таких играх на сервер не завязывают, игровой сервер отвечает за корректность изменения состояний игрового мира и может выдать текущее состояние игровых объектов.

    В общем случае суть где то такая:
    1) на сервер отсылается запрос "посадить_укроп_в_грядке_с_координатами(5,5)"
    2) Сервер, запоминает состояние грядки в координате 5,5 и присылает ответ, что всё ок, расти будет 300 секунд.
    3) Клиент запускает таймер на 300 секунд, по которому будет меняться анимация того как растёт укроп
    4) По истечению 300 секунд клиент переводит укроп в координатах 5,5 в состояние "готов к уборке"
    5) Пользователь жмёт собрать укроп, на сервер уходит "собирать_урожай_в_координатах(5,5)"
    6) Сервер проверяет, что прошло достаточно времени (т.е. 300 секунд +/- лаги) и даёт ответ, что да можно собирать укроп. И сохраняет состояние грядки как пустая, а укроп перекидывает в амбар.

    Так же стоит отметить, что секунда на сервере, ещё кое как, близка астрономической, но вот 1 секунда на JS в браузере может быть какой угодно.
    Поэтому никто секунды не считает, считают дельту по времени.
    Т.е. создают объект на который в котором запоминаются таймауты в секундах, текущее время и функции которые будут вызваны по их истечению. Потом setinterval/setTimeout допустим раз в 1 сотою секунды проверяет дельты текущего времени к сохранённым в этом объекте, и если дельта больше чем таймаут то дёргает функции обработчики.

    Для начального варианта сетевого протокола достаточно просто отсылать HTTP запросы по событиям, по мере роста проекта будет понятно в какую сторону оптимизировать протокол т.к. вариаций тут реально много.
    Ответ написан
    Комментировать
  • Как установить тему, если нет .jar-файлов?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Просто скачайте jar для вашей темы или соберите его.
    Ответ написан
    Комментировать
  • Суть виртуальной машины Java?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Ну смотрите процессор компьютера понимает опкоды, для разных процессоров свои опкоды, x86 , AMD64, ARM и т.д.

    Компилируемыми языками называют те, что в итоге компиляции дают код исполняемый на конкретном процессоре. Простую программку без проблем можно компилировать под разные процессоры, но скомпилированную под один нельзя запустить на другом.

    Интерпретируемые языки поступают иначе, они имеют в своём составе интерпретатор, который транслирует код программы в опкоды процессора. Соответственно реализовав один раз интерпретатор по разные платформы мы получаем кроссплатформенный язык.

    Виртуальня машина java это тоже интерпретатор по сути, но ему на вход идёт не сама java программа, а её трансформированный вариант, т.е. уже проверенный и более удобный для VM.

    Да вы всё правильно поняли, без JVM программа на java не запуститься не где. Замечу что например в симкарте вашего телефона есть процессор на котором запущена JVM и софт который на ней исполняется, это я к тому, что кроссплатформенность у java действительно широка.
    Ответ написан
    Комментировать
  • Как ускорить адаптацию сайта?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    В бутстрапе вообще не стоит использовать то, что есть напрямую.
    В бутстрапе нужно брать LESS/SASS и там наследовать и переопредлять нужные классы и генерировать нужные размерности сетки для каждого случая. То что там по дефолту это для очень быстрых прототипов или очень простых задач. В целом бутстрап это LESS/SASS фремворк который значительно упрощает работу верстальщика.

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

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Они не хотят платить за системы.
    Они платят за сокращение трудозатрат и времени причём во всех плоскостях.
    Например можно уволить внедренцев, программистов и админов - супер.
    Для ведения учёта нужно 0.2 землекопа - вообще супер.
    И так далее, от общего к частному.

    Ну или у вас квази-монополия продукта на соответствие каким то ФЗ.
    Ответ написан
  • Почему не получается определить количество результатов в запросе к mysql на php?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    1) Сомневаюсь, что вы используете mysql 3-ей версии, а ведь исключительно для поддержки совместимости с этим старым хламом расширение mysql ещё есть в некоторых не свежих версиях пхп. А так оно устарело в районе 5-10 лет, используйте mysqli.
    2) у вас расхождение в вопросе, в скрипте вы смотрите количество строк в ответе, а при при выполнении запроса руками смотрите на результат. Тёплое с мягким не находите?

    3) Ваша проблема в кодировках, а правильный вопрос почему не ищет кириллицу. Ваша проблема скорее всего в неверном character set и collotion на стороне mysql, которые могут быть выставлены на уровне сервера, бд, таблицы и поля (если не определено внизу, то берётся значение сверху). И ещё более вероятно, что вы залили или пишете utf дамп/данные в базу которой кодировка latin или cp1251 (они обе совпадают с utf8 в части латиницы) в этом случае на клиенте всё как бы ок, а кириллицу mysql не понимает.
    Ответ написан
    Комментировать
  • Сохранение счетчиков из кеша в базу данных, алгоритм?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    1) можно просто по крону выполнять в консольную команду типа cut access.log -d' ' -f 7 | sort | uniq -c и сбрасывать результат в базу.
    2) мемкеш не будет удобен, рано или поздно он начнёт сам удалять счётки, по тайм ауту или по нехватке памяти и это надо иметь ввиду, соответственно и решение должно быть рассчитано на потери. Т.е. например если в мемкеш ключ пуст, то забираем значение из базы и кладём в него, для отображения тоже используем значение из мемкеша, при запросе страницы инкрементируем ключ в мемкеш. А вот значение в базе обновляем например из методом описным в первом пункте. Соответственно играясь с временем жизни записей в мемкеше и частотой парсинга логов будем регулировать возможные лаги в значениях счётчика.
    3) парсинг логов можно заменить на очереди типа rabbitmq
    4) в большинстве случаев можете не париться и вынести счётчики в redis.io
    Ответ написан
    Комментировать
  • Вычитание и сложение в запросе mysql?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Хоть я и не очень почему строка/запись названная ячейкой, зачем скобки перед плюсом и что такое цепляться.
    Но ниже приведённый запрос сделает то, что вы хотите.
    SELECT 
    SUM(IF(date = '2016-02-13',0-number1,number1)) as number1,
    SUM(IF(date = '2016-02-13',0-number2,number2)) as number2
     FROM table 
     WHERE `date` IN('2016-02-17','2016-02-15','2016-02-13')
    Ответ написан
  • Cron каждую секунду, начиная с определенной даты?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    например пишете в консоле типа такого
    echo "while true ; do ./my-script & ; sleep 1; done" | at -t 02181200

    Запуститься в 18 фев. в 12:00
    Но не совсем раз в секунду, будет время работы my-script + пауза в одну секунду
    Ответ написан
    Комментировать
  • Почему в яндексе, мэйле не кодят на C#?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Историческая причина:
    C# и .NET в целом это долгие страдание MS в попытках потеснить JAVA SUN . Тут дело в том что они сначала делали свою JAVA (J++ MSJVM) но проиграли долголетние суды против SUN. Если бы они не проиграли, то есть вероятность, что .net не появился бы.
    Когда названные компании отстраивали разработку MS ничего не мог им предложить, кроме неопределённой судьбы своей версии JVM.

    Прагматичная причина:
    На каждый чих нужно лицензировать что то из стека MS технологий/продуктов, даже если это небольшие деньги на фоне оборота, то это не удобно ибо таких чихов у них 100 500 в день.

    Практическая причина:
    Для этих компаний очень болезнен vendor lock. Отчасти конкурентные преимущества этих компаний построены на подпиливании открытого ПО, на MS стеке это не возможно.
    Ответ написан
    Комментировать
  • Как проверить все элементы на отсутствие фокуса?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    https://developer.mozilla.org/en-US/docs/Web/API/D...

    $(document).keyup(function(event){
      var $srchForm = $("input#search-form"),
      $lnk_logo = $("a.lnk-logo");
      if (event.keyCode == 9 && document.activeElement.tagName == 'BODY') {
        $srchForm.focus();
      }
    });
    Ответ написан
  • Как хранить массив элементов в базе данных?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Если вам не нужно делать выборки по значениям этого массива то сеарилизация уместна.
    Ответ написан
    Комментировать
  • Как отследить вызов метода объекта PHP?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Неужели единственный способ - это в каждое объявление функции прописывать static::createInstance()

    Можно написать класс обёртку, но зачем?
    Если вам для двух статичных методов нужен одинаковый конструктор, то вывод напрашивается сам собой, вам не нужны статичные методы.

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

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    ini_set('session.cookie_domain', '.site.ru' );
    Ответ написан
    Комментировать
  • Почему неправильно срабатывает событие?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    у P нет смысла preventDefault(), он не А у него нет поведения по умолчанию

    zamena и text задаются где то за пределами приведённого кода и соответственно этот код может не работать из за них

    обилие on off не ясно, видимо это попытка реагировать на текущие состояние, тогда логичней использовать $().click(function(e){ $(this).attr() // или .addClass() или .data() }) для хранения состояния.

    Ну и наконец в приведённом коде нет навешивания событий на listFileText о проблеме с которым вы спрашиваете.

    Вы спрашивали про, что то такое https://jsfiddle.net/ywmo1etq/
    если ваши появляются динамически то click поменять на on,
    обновление в пример на потере фокуса
    Ответ написан
  • Компрессия картинок на вашем сайте. Как реализовать?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    1) Гугл JS-сом сравнивает реальный размер картинки и тот в котором он отображается.
    2) Он обязательно вырезает мета информацию из файла картинки, она в некоторых случаях может быть больше больше самой картинки.
    Потом для jpeg, где предусмотрен параметр сжатие/компрессия от 0 до 100, скорее всего ругается если он больше 70-75. Т.к. от 75 до 100 разницы обычно не видно, а размер заметно меньше. (100 это без сжатия)

    Для png можно менять битность (8,16,24,32,48,64) изменить, если она используется не эффективно. Битность это количество битов используемое для кодирования одного пикселя от неё зависит количество доступных цветов и глубина альфаканала. Т.е. png8 это 256 цветов без альфы. Параметра компрессии у png нет.

    Для GIF это от двух до 256 цветов в заказной палитре, чем меньше цветов палитре тем меньше файл.

    Соответственно автоматическая оптимизация для PNG и GIF может быть только путём анализа цвета в каждом пикселе, на лету это муторно и ресурсоёмко. И соответственно этим почти никто не заморачивается.

    Так же у этих форматов есть несколько доп опций, которые так же влияют на размер картинки, но не значительно.
    Ответ написан
    5 комментариев
  • Насколько актуально\необходимо ООП в вебе?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Разработка в команде на ООП намного проще.
    Соло на ООП обычно гораздо проще разобраться, что сам написал месяц, год, два, три назад, точнее даже наоборот позволяет что-то поправить не поломав всё или выдрать не разбираясь как оно работает в целом. За это и любят.

    Мой моральный порог без ООП где-то строк 500 кода, но чаще и того меньше.
    Ответ написан
    Комментировать