Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Что такое киберугрозы нулевого дня и как с ними бороться
Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
GeneMoss

Eugene Mosyukov

void
  • 138
    вклад
  • 0
    вопросов
  • 110
    ответов
  • 54%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Dompdf кириллица вся в вопросах почему?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    Шрифт не поддерживает юникод или кириллицу. Скачайте другой шрифт, с гарантированной поддержкой юникода и кириллицы.
    Ответ написан более двух лет назад
    7 комментариев
    Нравится 7 комментариев
  • Почему yii2 скрывает изображения?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    Вероятнее всего, у Вас в браузере какой-нибудь AdBlock установлен, который для Вас и «вырезает» баннеры.
    Ответ написан более двух лет назад
    Комментировать
    Нравится 3 Комментировать
  • Как сделать что бы плавно шло назад?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    Вы все сделали правильно, но в .block после transition потеряли двоеточие.
    Ответ написан более двух лет назад
    1 комментарий
    Нравится 1 комментарий
  • Почему выдает Cannot read innerHTML?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    Вы в селекторе потеряли #, исправьте на:
    document.querySelector('#result')
    Ответ написан более двух лет назад
    1 комментарий
    Нравится 1 комментарий
  • Как решить проблему с Eslint?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    Вместо return; сделайте return "";

    ESlint исходит из того, что Ваша функция должна возвращать строку, вместо этого Вы возвращаете undefined. Очень желательно придерживаться того, чтобы функция всегда возвращала один и тот же тип данных, либо выбрасывала исключение при ошибке, тогда, когда Вам захочется вернуть null/undefined.
    Ответ написан более двух лет назад
    5 комментариев
    Нравится 2 5 комментариев
  • Импорт json а из гугл таблиц?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    $.ajax({
      url: "https://spreadsheets.google.com/feeds/list/1NzcKjtoS-p_Gz6ILOa3JB1aVgoPMC7mgepWtz9uBmgo/od6/public/values?alt=json",
      crossDomain: true, // это решает проблему с отсутствием Access-Control-Allow-Origin
      dataType: "jsonp", 
      success: function(data){
        console.log(data)
      }
    });


    Подробнее про это можно почитать тут: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
    Ответ написан более двух лет назад
    1 комментарий
    Нравится 2 1 комментарий
  • Почему функция срабатывает только со второго раза?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    Возьмите хэш прям из ссылки:
    var hash = $(this).attr('href');

    https://codepen.io/anon/pen/mjemJE
    Ответ написан более двух лет назад
    1 комментарий
    Нравится 1 комментарий
  • Почему получаю undefined при выводе свойства объекта?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    У Вас кавычки лишние, исправьте на:
    choose = size+"_"+amount;
    Ответ написан более двух лет назад
    Комментировать
    Нравится 2 Комментировать
  • Где можно стащить список российских городов?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    На гитхабе можно найти много списков с разной доп. информацией и разной степень актуальности, например:
    https://github.com/pensnarik/russian-cities
    Ответ написан более двух лет назад
    1 комментарий
    Нравится 1 1 комментарий
  • Какие есть JS библиотеки для оформления кода?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    На Тостере используется https://highlightjs.org/
    Ответ написан более двух лет назад
    Комментировать
    Нравится 2 Комментировать
  • Можно ли вызвать приватный метод внутри анонимной функции?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    Нужно связать Ваше замыкание с нужным объектом:
    $class = new Klass;
    $closure = function($someValue) use($amount) {
        return $this->test($amount, $someValue);
    };
    $closure = $closure->bindTo($class, 'Klass');
    $class->check($data, $closure);
    Ответ написан более трёх лет назад
    Комментировать
    Нравится Комментировать
  • Как в PHP получить объект по пути из переменной?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    $object = new Object; // Инициализация объекта, который содержит property «a»
    
    $path = 'a->b->c';
    $properties = explode('->', $path);
    
    $getProperty = function($obj, $property) {
        // Тут какие-нибудь проверки на существование, на instanceof и т. п.
        return $obj->$property;
    };
    
    $result = array_reduce($properties, $getProperty, $object);
    
    // $result -- это последний property в цепочке, т.е. -- «c»


    UPD: Как я понял, автор хочет хранить пути доступа к узлам в XML-файле. Для этого проще использовать xpath и хранить строки вида '/a/b/c'.
    $xml = new SimpleXMLElement('<xml><a><b><c>test</c></b></a></xml>');
    $result = $xml->xpath('//a/b/c');
    Ответ написан более трёх лет назад
    1 комментарий
    Нравится 3 1 комментарий
  • Выбор языка программирования для GUI?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    Для GUI можно использовать, например, electron.atom.io — используется JS, HTML, CSS. На его основе построены такие приложения как Atom, Slack и Microsoft Visual Studio Code. Легко достигается кроссплатформенность.

    Но и JavaFX для GUI вполне себе сносный.
    Ответ написан более трёх лет назад
    Комментировать
    Нравится Комментировать
  • Да в чем проблема?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    Вы считываете строку: string IsFilm1 = Console.ReadLine;, а сравниваете с булевым типом if (IsFilm1 = true), к тому же неправильно сравниваете, нужно писать ==.

    В Вашем случае нужно исправить на IsFilm1 == "true" — т.е. сравнение строки со строкой.
    Ответ написан более трёх лет назад
    5 комментариев
    Нравится 4 5 комментариев
  • Годный ли обработчик формы?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    Не делайте такие длинные методы. Не копипасте. Отделяйте построение запроса от данных. И не надо все делать static.

    public static function saveStaff($options) 
    {
        if (self::isValidStaff($options)) {
            $staffFields = self::getFilledStaffFileds($options);
            $qb = new QueryBuilder( Db::getConnection() );
            $qb->where('id = 1')->update('staff', $staffFields);
        }
    }
    
    public static function getFilledStaffFileds($options)
    {
        $staff = [];
        if ($options['director_surname']) {
            $staff['surname'] = $options['director_surname'];
        }
        if ($options['director_surname']) {
            $staff['name'] = $options['director_name'];
        }
        if ($options['director_surname']) {
            $staff['ot4'] = $options['director_ot4'];
        }
        if ($options['director_surname']) {
            $staff['oklad'] = $options['director_oklad'];
        }
        if ($options['director_surname']) {
            $staff['date_start'] = $options['director_date_start'];
        }
    
        return $staff;
    }
    
    function static function isValidStaff($options)
    {
      return isset($options['surname']) 
        || isset($options['name'])
        || isset($options['ot4']) 
        || isset($options['oklad'])
        || isset($options['date_start']);
    }


    И использовать какой-нибудь построитель запросов, типа такого:
    class QueryBuilder {
        protected $db;
        protected $where = '';
        
        public function __construct($db) {
            $this->db = $db;
        }
        
        public function where($where)
        {
            $this->where = trim($where);
            return $this;
        }
        
        public function update($table, $params)
        {
            $values = [];
            foreach ($params as $key => $value) {
                $values[] = "`{$key}` = :{$key}";
            }
            
            $sql = 'UPDATE `' . $table . '` SET ' . join(', ', $values);
            if ($this->where) {
                $sql .= ' WHERE ' . $this->where;
            }
    
            $result = $this->db->prepare($sql);
            foreach ($params as $key => $value) {
                $result->bindParam(':' . $key, $value, PDO::PARAM_STR);
            }
            return $result->execute();
        }
    }

    P. S. Лучше пользоваться готовыми компонентами.
    P. P. S. Наверняка есть опечатки, набирал без IDE.
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 2 Комментировать
  • Как обернуть в ссылку хештег?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    $string = '#небо #море';
    echo preg_replace('/#([a-zа-я0-9]+)/ui', '<a href="tag/$1">#$1</a>', $string);
    Ответ написан более трёх лет назад
    2 комментария
    Нравится 1 2 комментария
  • В чём преимущество автозагрузчика классов?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    А можно избавиться от строки $obj = new MyClass(); и создавать экземпляр автоматически в момент $obj->displayVar();?
    Естественно заранее не создавая "впрозапас" по экземпляру каждого класса.

    Не совсем четкое требование, но по описанию похоже на синглтон. Т.е. вызывать вот так:
    MyClass::getInstance()->displayVar();
    MyClass::getInstance()->foo();
    MyClass::getInstance()->bar();

    Объект создастся в момент первого вызова.

    В классе реализовать вот так:
    class MyClass {
      protected static $instance = null;
      
      protected __construct() { }
    
      public static function getInstance() {
        if (is_null($this->instance)) {
          self::$instance = new self();
        }
        return self::$instance;
      }
    }
    Ответ написан более трёх лет назад
    2 комментария
    Нравится 2 комментария
  • Как проверить строчку на наличие нескольких цифр подряд?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    Идея, конечно, у Вас так себе. Но сделать это можно так:
    $tel = filter_input(INPUT_POST, 'tel');
    $spam = ! preg_match('/[0-9]{2}/', $tel);

    /[0-9]{2}/ — это называется регулярным выражением. Обозначает: [0-9] — любя цифра, {2} — повторяется 2 раза. Вместо [0-9] можно указать эскейп-последовательность \d — которая обозначает любая цифра. Можно написать \d\d — будет искать две любые цифры.
    Ответ написан более трёх лет назад
    1 комментарий
    Нравится 1 комментарий
  • Как поменять тип документа в браузере?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    У Вас все нормально. Ошибки никакой нет. Хром всего лишь говорит, что нет соответствующих стилей (xslt) для преобразования XML в читабельный вид и что Вы видите голые данные, именно те, которые Вам и нужны.
    Ответ написан более трёх лет назад
    1 комментарий
    Нравится 1 1 комментарий
  • Практическое использование Http2?

    GeneMoss
    Eugene Mosyukov @GeneMoss
    void
    Частично проблему можно решить, если использовать загрузку видео с нескольких доменов. Таким образом, можно немного увеличить число одновременных соединений.
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 4 Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Следующие →
Самые активные сегодня
  • SoreMix
    SoreMix
    • 12 ответов
    • 0 вопросов
  • firedragon
    Владимир Коротенко
    • 8 ответов
    • 0 вопросов
  • sergiks
    Сергей Соколов
    • 7 ответов
    • 0 вопросов
  • Drno
    • 6 ответов
    • 0 вопросов
  • delphinpro
    Сергей delphinpro
    • 5 ответов
    • 0 вопросов
  • DevMan
    DevMan
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации