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

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

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

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

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

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

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

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

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

newaitix

  • 3
    вклад
  • 308
    вопросов
  • 20
    ответов
  • 65%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как обновить кэш?

    yarkov
    Алексей Ярков @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Сборщик какой-то есть? В любом можно настроить так, чтобы в имя файла добавлялся хэш.
    Ответ написан более года назад
    3 комментария
    3 комментария
  • Что работает быстрее?

    maksutovn
    Nurdaulet Maksutov @maksutovn
    Начинающий php программист, графический дизайнер
    Теоретически единственное различие между ними состоит в том что механизм @import включает CSS (таблицу стилей). А <link> механизм HTML. Однако браузеры обрабатывают их по-разному. НО все равно <link> явное преимущество с точки зрения производительности.

    Стив Содерс написал обширное сообщение в блоге, сравнивающее оба механизма, под названием «Не используйте @import». Это название говорит само за себя.
    Ответ написан более года назад
    4 комментария
    4 комментария
  • Почему пользовательская функция отображается как native code?

    space2pacman
    Ярослав Иванов @space2pacman
    Просто царь.
    ymapsReady.toString
    
    ƒ (){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=this.__sentry_original__||this;return r.apply(n,e)}
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Почему пользовательская функция отображается как native code?

    hzzzzl
    hzzzzl @hzzzzl
    нашел такую строчку в одном из скриптов

    new Promise(function(e,t) {
      if(window.ymaps)  window.ymaps.ready(e);
      else{window.ymapsReady=e }
    ....


    new Promise(e => window.test = e)
    
    test // ƒ () { [native code] }

    то есть это резолв промиса, че дальше с ним делают хз, вероятно через ymapsReady() напрямую вызывают коллбек загрузки карты, что-то типа кеширования
    https://static.avito.ru/s/cc/chunks/fc1eca0e9cfdd5...
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Как округлить число?

    maxon12007
    Максим Лепеха @maxon12007
    Округление до 5 в большую сторону: Math.ceil(x/5)*5
    5e6c046f478b7040971591.png
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как правильно сложить все в массив?

    Stockholm Syndrome @StockholmSyndrome
    если массив всегда отсортирован по categoryLevel, то строчку
    .sort((a, b) => a.categoryLevel - b.categoryLevel)
    можно убрать
    const groupData = (arr) => {
    	return arr
    		.sort((a, b) => a.categoryLevel - b.categoryLevel)
    		.reduce((acc, curr) => {
    			const {categoryLevel, parentCategoryId} = curr;
    			const index = acc.findIndex((a) => 
    				(a[categoryLevel - 1] || {}).categoryId === parentCategoryId);
    			if (index !== -1) {
    				acc[index][categoryLevel] = curr;
    			} else {
    				acc.push([curr]);
    			}
    			return acc;
    		}, [])
    		.map((a) => a.map((o) => o.name).join(' - '));
    };
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Как найти все нужные элементы объекта?

    Stockholm Syndrome @StockholmSyndrome
    const findParents = (id, arr) => {
      for (let i = 0, l = arr.length; i < l; ++i) {
        const {category: {categoryId, categoryDescription}, children} = arr[i]; 
        const obj = {categoryId, categoryDescription};
        if (categoryId === id) {
          return [obj]; 
        } else {
          const result = findParents(id, children);
          if (result) {
            return [obj, ...result];
          }
        }
      }
    
      return null;
    };
    Ответ написан более двух лет назад
    4 комментария
    4 комментария
  • Как сделать такое окно входа?

    notiv-nt
    Михаил @notiv-nt
    Как ваше ничего? Да, моё тоже
    https://developers.google.com/web/updates/2016/04/...
    https://credential-management-sample.appspot.com/
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Как работают медиазапросы?

    Eridani
    Антон @Eridani
    Мимо проходил
    <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0 minimal-ui">
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Как узнать откуда был загружен iframe?

    granty @granty
    Откуда был загружен iframe никак не узнать (узнать-то можно, но в вашем случае это не поможет).

    1. яваскрипт не сработает, тк политика «Одинакового источника» (Same Origin Policy) запрещает доступ из ифрейма к window.top.location.href, если они имеют разные происхождения (грубо говоря - разные домены).
    Проверить window.top != window.self браузер даёт, а доступ к фактическому url из window.top - нет.

    2. на сервере проверять переменную $_SERVER['HTTP_REFERER'] (кто запросил загрузку страницы) смысла тоже нет - если у ифрейма установлен атрибут referrerpolicy:
    <iframe referrerpolicy='no-referrer'>
    реферер не будет прислан (будет, но только в IE/Edge и Safari_IOS).


    Но сделать то, что вы хотите - можно легко. На странице надо издать HTTP-заголовок CSP с директивой frame-ancestors:
    header( "Content-Security-Policy: frame-ancestors https://ваш_сайт.ru http://ваш_сайт.ru https://www.facebook.com https://facebook.com https://www.google.com https://google.com;" );

    это разрешит открывать эту страницу в ифрейме с собственного домена ваш_сайт.ru(без поддоменов!) по http:/https:.
    И сайтам facebook.com и google.com с www или без (но только если фэйсбук/гугль загружены по https: - а их и невозможно загрузить по http:).

    PS: если ваш сайт доступен и по www - добавьте в "волшебную" строку:
    https://www.ваш_сайт.ru http://www.ваш_сайт.ru
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как разместить блоки по горизонтали?

    Ankhena
    Ankhena @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Почему блок formproductslider не прокручивается по горизонтали?

    Потому что по горизонтали у него нет переполнения.
    Но зато есть по вертикали.
    Если вы уберете overflow: hidden; то увидите, где у вас дочерние блоки.

    Нужно задать родителю display:flex и нужные вам параметры.
    float убрать.
    Вот так: https://jsfiddle.net/702h618b/
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как разместить блоки по горизонтали?

    rockfeeler
    Антон Усачев @rockfeeler
    Фронтендер, дизайнер, верстальщик-перфекционист
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как это делается?

    wapster92
    WapSter @wapster92 Куратор тега CSS
    sourcemap - в него записываются исходники верстки или js. Браузер читает этот файл и говорит где данный стиль в исходниках (грубо говоря)
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как определить базовый домен?

    Tomio
    Максим @Tomio
    backend developer (python, php)
    Покопайте библиотеку https://github.com/jeremykendall/php-domain-parser
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Почему такое возможно?

    Minifets
    Александр @Minifets
    Hello world!!!
    См. документацию curl_exec

    Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки. Однако, если установлена опция CURLOPT_RETURNTRANSFER, при успешном завершении будет возвращен результат, а при неудаче - FALSE.


    $return=json_decode(curl_exec($curl),true);

    Здесь вы пытаетесь распарсить не json, а bool тип данных. А json валится на поток вывода. Чтобы этого не было, укажите в curl флаг CURLOPT_RETURNTRANSFER = true.

    curl_setopt_array($curl,[
      CURLOPT_USERPWD=>"$api_token:$signature",
      CURLOPT_URL=>$url,
      CURLOPT_RETURNTRANSFER => true,
    ]);


    И будет вам счастье.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Date.now в php?

    sriver @sriver
    js newbie
    а что именно вывели команды php ? а то "черт знает что" и "не работает" - не очень точные описания
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как получить title страницы?

    Kozack
    Alex @Kozack Куратор тега JavaScript
    Thinking about a11y
    Вариант с php — рабочий. Если сервер вам возвращает не тоже что вы видите в браузере, значит в запросе к стороннему сервису нужно передавать user-agent и cookie. Чтобы сторонний ресурс обрабатывал ваш запрос с сервера так же как и запрос с браузера.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Какой tasks manager выбрать?

    zamboga
    Антон Киселёв @zamboga
    #Запускаю стартапы
    https://bitrix24.ru +встроенный тайм трекер или toggl (родной)
    https://planfix.ru +встроенный тайм трекер или toggl (не родной, форк, гуглится toggl planfix edition)

    А вообще имеет смысл разделить учет времени и таскер.
    Тогда вот вам из моей копилки:

    • Тайм-трекеры
    ○ https://Toggl.com — отдельный софт в трее, расширение под хром, приложение на андроид. Интеграция с кучей сервисов (трело, асана и т.д.). Хоткеи тоже есть. Бесплатного тарифа вполне достаточно. автотрекинг
    ○ https://TimeDoctor.com — платный. Делает скриншоты. Удобен для компании. Есть отдельный софт в трее, хоткеи. Интеграция с кучей сервисов.
    ○ https://pomelloapp.com — простой помидоро-трекер, интеграция с трелло. Хоткеи есть, в трее не сидит, простенький бар поверх всех окон
    ○ https://PomoDoneApp.com — простой помидоро-трекер, интеграция с трелло. Хоткеи есть, в трее показывает таймер с обратным отсчетом времени.
    ○ https://tmetric.com — простой трекер, интеграция с трелло, есть десктопное приложение, помидорок нет. Хоткеи есть, сидит в трее
    ○ https://www.timecamp.com — есть куча интеграций, расширение хром, приложение в трее, автотрекинг
    ○ https://toptal.com/tracker/
    ○ Grindstone https://www.epiforge.com/grindstone/
    ○ https://www.primaerp.com
    ○ https://tahometer.com
    ○ https://aTimeLogger
    ○ https://myhours.com
    ○ https://wakatime.com
    ○ savemytime.co/en неплохое приложение, где дела при каждом включении смартфона высвечиваются, но оплата там очень большая за такую прогу.
    ○ Статьи
    § https://habrahabr.ru/company/xakep/blog/254119/
    § https://habrahabr.ru/post/327310/
    § https://habrahabr.ru/post/24070/
    § https://habrahabr.ru/post/177225/
    § Чем удобнее всего учитавать время работы над конкретной задачей?

    • Автоматические тайм-трекеры
    ○ https://RescueTime.com - только в автоматическом режиме логирует, в каких приложениях/сайтах проводите время, и выводит подробную статистику. Бесплатного аккаунта хвататет за глаза. Все приложения/сайты можно разбить по категориям продуктивности.
    ○ https://ManicTime.com - как и rescuetime, в автоматическом режиме логирует приложения и сайты + мощный стэндалон тайм-трекер, все приложения можно разбить по категориям, которые придумываешь сам. Очень гибкий в настройках, сидит в трее, есть хоткеи, разные типы таймеров. Платный. Статья danila.org.ua/otrabotannyie-chasyi-moy-podhod
    ○ https://timingapp.com/ -- аналог manictime и rescuetime
    ○ https://motivateclock.org/
    ○ www.timesnapper.com/professional.aspx#qReports

    • Запись дел, таскеры, системы управления задачами
    ○ https://www.wunderlist.com — Очень простой и удобный таскер. Бесплатного аккаунта за глаза.
    ○ https://planfix.ru/prices/ — На бесплатном аккаунте проекты и задачи вести можно полноценно, но бесплатном акке урезан CRM и воронка продаж. Цена 290, 490 или 640 р /человека в месяц - в зависимости от возможностей системы. Интересные тарифы и возможности, есть тайм-трекер (2016)
    ○ https://megaplan.ru/calculation/ — Цена 250р с человека в месяц (2016)
    ○ https://www.bitrix24.ru/prices/ — сложный комбайн
    ○ https://yandex.ru/tracker/ -- от 93 руб/чел/мес
    ○ https://basecamp.com/3/pricing — 29$ без клиентов, 79$ с клиентами (2016)
    ○ https://www.wrike.com/price/ — Ограничения бесплатного варианта по вложенности задач и функциональности всей системы. Есть мобильный приложения. Понравилась внутри. На бесплатной версии нет подзадач. (2016)
    ○ https://asana.com/pricing — Есть бесплатный вариант. Но на ощупь - неинтуитивная кака. Соловьев советовал ее. (2016)
    ○ worksection.com/price.html — Бесплатно только на 2-х (2016)
    ○ https://zettaplan.ru/price/ (2016)
    ○ www.teambridge.ru — От 1000₽ (2016)
    ○ https://www.producteev.com/pricing — Вроде есть бесплатный полнофункциональный вариант и приложения для мобильных. Но в проекте вложенность = задача-подзадача = мало. И как-то все убогенько (2016)
    ○ https://pyrus.com/ru/pricing — От 9р с человека в день (2016)
    ○ promo.advanta-group.ru/advanta — От 5454р (2016)
    helpcenter.onlyoffice.com/ru/faq/free-cloud.aspx — По сравнению с wrike ограничения только по вложенности задач, в остальном полнофункциональна. Но нет мобильных приложений. Внутри нормальная. (2016)
    ○ https://workflowy.com/ — неограниченная вложенность подзадач, гибкое управление задачами, есть теги. Ограничение на сотню задач в месяц. Выглядит, как списки с вложенными списками (2016)
    ○ synkra.com/login — Унылое говно со списком дел в один уровень (2016)
    ○ https://ru.todoist.com/business — По описаниям все красиво, но в бесплатном варианте тупо список одноуровневых дел, вообще не юзабельно. В бесплатном варианте нет обсуждений. (2016)
    ○ https://pla niro.com/ru/pricing — Похож на битрикс, но попроще и симпотичнее. Только платный (2016) (удалить пробел в ссылке)
    ○ https://taiga.io/pricing.html
    ○ https://activecollab.com
    ○ teamer.ru/about
    ○ scrumy.com
    ○ www.redmine.org
    ○ https://www.teamwork.com/
    ○ https://workdoer.com.ua/
    ○ https://taskmenizer.com
    ○ https://glip.com/
    ○ https://itasks.pro
    ○ https://clickup.com
    ○ https://pr an.pro/ (удалить пробел в ссылке)
    ○ https://ticktick.com/
    • Сравнение систем управления проектами и задачами
    ○ saas-guide.com
    ○ topsaas.ru
    • Канбан-доски и карточки
    ○ https://trello.com — Система досок и карточек-канбан.
    ○ https://you gile.com -- сильно похоже на трелло, бесплатный функционал до 1 Гиг места в облаке без каких либо ограничений (удалить пробел в ссылке)
    ○ Jira https://ru.atlassian.com/software/jira
    ○ https://www.favro.com/
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Получить адрес?

    sergiks
    Сергей Соколов @sergiks Куратор тега JavaScript
    ♬♬
    Для безопасности пользователей нет возможности получить title страницы на чужом сайте, если сайт явно не прописал такую возможность для вашего домена. Google не прописал, поэтому title вы не получите.

    Чтобы это таки сделать, вам надо на вашем сервере настроить проксирование запросов. Т.е. скрипт ваш будет образаться именно к вашему сайту, например: https://vash-site.com/proxy/google.com – а все запросы к /proxy/* будут проксироваться на указанный после слеша домен.

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

    dimonchik2013
    Dimonchik @dimonchik2013
    non progredi est regredi
    по звездам

    будет точнее, чем ИП мобильных
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • Следующие →
Самые активные сегодня
  • Evgenii
    • 8 ответов
    • 0 вопросов
  • pindschik
    pindschik
    • 8 ответов
    • 0 вопросов
  • Dr. Bacon
    • 7 ответов
    • 0 вопросов
  • Денис
    • 5 ответов
    • 1 вопрос
  • CityCat4
    CityCat4
    • 6 ответов
    • 0 вопросов
  • deminpersona
    Денис Демин
    • 3 ответа
    • 1 вопрос
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

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

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