pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Почему Mac неверно отображает размер файлов?

Лучший ответ: потому что кб - это 1000 б, а не 1024 б.
https://ru.wikipedia.org/wiki/Двоичные_приставки#....

Худший ответ: Программист считает, что  в километре 1024 метра.
На самом деле, формально Mac показывает правильные данные. Приставки Кило, Мега, Гига и т.д. - десятичные, то есть 103, 106, 109 и т.д. Для двоичных приставок есть свои названия: 
KiB, Киби = 210 = 1024
MiB, Меби = 220 = 10242
GiB, Гиби = 230 = 10243
TiB, Теби = 240 = 10244
PiB, Пеби = 250 = 10245
Но эти названия практически не употребляются.
Вопрос: Как решить проблему с разделителем строк git/phpstorm?

Лучший ответ: Вам сообщение об "ошибке" дало уже ответ на Ваш вопрос. Вам нужно настроить GIT, а не PHPStorm. И даже команду Вам написали, которую нужно выполнить.
Поломаться ничего не должно. Это просто способ переноса строк в файлах.

Худший ответ: Как решить данную проблему?
Не использовать CRLFС чего могла появиться данная проблема?
Возможно изначально файл создавался под виндой, либо вы явно указали использовать CRLF.
Как вариант в каталоге проекта создайте файл .gitattributes примерно следующего содержания (если ваши расширения файлов отсутствуют - допишите по аналогии)*.php text eol=lf
*.js  text eol=lf
*.sh  text eol=lf
*.sql text eol=lf

*.json text eol=lf

*.yaml     text eol=lf
*.yml      text eol=lf
*.yml.dist text eol=lf

*.xml      text eol=lf
*.xml.dist text eol=lf

*.css  text eol=lf
*.less text eol=lf

*.jade text eol=lf
*.twig text eol=lf

composer.lock text eol=lf

.htaccess text eol=lf
.bowerrc  text eol=lf
.jshintrc text eol=lf

*.j2   text eol=lf
*.conf text eol=lf
*.md   text eol=lf
В этом случае git самостоятельно заменит CRLF на LF
Вопрос: Посмотрел netstat -ta получил непонятный адрес?

Лучший ответ: то же самое что и 0.0.0.0
в вашем случаем протокол ipv6
https://ip-calculator.ru/blog/ask/v-chem-raznitsa-...

Худший ответ: Полагаю это адрес в IPv6 записи.
Вот пример такого адреса 2dfc:0:0:0:0217:cbff:fe8c:0
Вопрос: Какую базу данных выбрать для частого обновления данных?

Лучший ответ: Ну Redis вы вполне правильно указали, 500rps он спокойно выдержит, даже с локами на весь весь ключ.
Ещё sophia.systems посмотрите, её вроде как tarantool использует внутри.

Худший ответ: Попробуйте RethinkDB
Вопрос: Где хостится habrahabr, toster?

Лучший ответ: dig habrastorage.org +short
95.213.152.170

whois -h whois.ripe.net -- 95.213.152.170 -T route
route:          95.213.152.0/24
descr:          SELECTEL-NET
origin:         AS49505
mnt-by:         MNT-SELECTEL
created:        2016-10-05T01:36:29Z
last-modified:  2016-10-05T01:36:29Z
source:         RIPE
Кстати, DNS на хетзереdig habrahabr.ru SOA +short
ns1.habradns.net. servers.tmtm.ru. 2017121304 28800 7200 604800 86400

dig ns1.habradns.net +short
88.198.175.104

whois -h whois.ripe.net -- -T route 88.198.175.104
route:          88.198.0.0/16
descr:          HETZNER-RZ-NBG-BLK4
origin:         AS24940
org:            ORG-HOA1-RIPE
mnt-by:         HOS-GUN
created:        2006-01-02T08:59:04Z
last-modified:  2006-01-02T08:59:04Z
source:         RIPE
А почта в leasewebdig habrahabr.ru MX +short
10 mxs.habramail.net.

dig mxs.habramail.net. +short
82.192.95.169

whois -h whois.ripe.net -- -T route 82.192.95.169
route:          82.192.64.0/19
descr:          LEASEWEB
origin:         AS60781
remarks:        Leaseweb
mnt-by:         LEASEWEB-NL-MNT
created:        2014-03-10T14:11:29Z
last-modified:  2015-09-30T23:00:03Z
source:         RIPE
Остальное все за куратором и cdn.

Худший ответ: В свое время у них стояли сервера в хетзнер и украинском датацентре который сгорел
Вопрос: Не вижу верстку товаров woocommerce.Где искать?

Лучший ответ: Скопируйте содержимое папки wp-content/plugins/woocommerce/templates/ в папку своей темы wp-content/themes/yourtheme/woocommerce/ и правьте нужные шаблоны.

Худший ответ: Каталог верстается на хуках. Явного html там очень мало.
Вопрос: Скрипт «установки» php движка. Как реализовать?

Лучший ответ: Реализуемо ли такое вообще?
Нет, не реализуемо. Это засекреченные разработки советских ученных.
А если серьезно, то что вы хотите услышать? Как это писать?
При входе человека на сайт, нужно проверять, установлено ли приложение (Есть множество вариантов, как это можно сделать: проверять наличие какого-либо файла(ов), проверять наличие какой-либо информации в нем (них) и тд). И, в зависимости от результата этой проверки, либо пускать его на сайт, либо выводить "окно установки". Во время установки собираем необходимую информацию. Производим создание необходим таблиц БД (Для подключения к ней, используем то, что указал юзер). Создаем пользователя администратора. В конце, генерируем файлы конфигурации. В них, как минимум, нужно занести информацию для соединения с базой данных. Остальные настройки можно хранить как в таких же файлах конфигурации, так и в базе данных, например.
Ну вот, собственно, и все.

Худший ответ: Реализуемо ли такое вообще? Если да, то какими средствами? 
Средствами PHP.
Вопрос: Можно ли составлять семантическое ядро по частям, пошагово?

Лучший ответ: Конечно можно. Никакой разницы нет.

Худший ответ: Конечно можно. Никакой разницы нет.
Вопрос: Каким образом распределить код в модели и виде?

Лучший ответ: В модель не надо пихать вьюху. 
Приходит в контроллер, из него в модель и из модели в контроллер, а из контроллера во вьюху.

Худший ответ: controller - для запросов
view - для html
model - для данных
То что Вы сделали - это адская чепуха.
Вопрос: Почему мобильные версии сайтов иногда делают на поддоменах, а иногда нет?

Лучший ответ: Если мобильная версия сильно отличается по верстке - делают как отдельный сайт на поддомене, на сервере определяют устройство и делают переадресацию. Если различия можно реализовать через медиа запросы в css, то делают одну. 
Но могут быть и другие более экзотические варианты.

Худший ответ: Критерий один — сложность разработки и поддержки этого всего. Если у сайта изначально нет адаптивности, если его разметка препятствует адаптивности, если используется куча сложных затратных скриптов, которые на телефоне в мобильной версии не нужны, — используют мобильную версию для упрощения задачи. 
Если же сайт изначально адаптивный, то сами понимаете. 
В принципе, любой сайт можно сделать адаптивным, вопрос в стоимости разработки и поддержки такого решения. Порой там такие legacy-решения тянутся, что мама не горюй. Проще, дешевле и быстрее сделать отдельную мобильную версию.
Вопрос: По какой теме в наше время можно создать биржу?

Лучший ответ: Без шуток: 
- биржа дронов (перспективно); 
- (актуально уже вчера) биржа ж/д вагонов для зерна, щебня (дефицит вагонов к сентябрю/ноябрю) - сделать фьючерсы на вагоны или хотя бы логистику перевозок сыпучих товаров по ж/д; 
- не поверишь, но есть спрос на брошенные форумы от mybb.ru - я бы на бирже прикупил бы десяток "летучих голландцев" для рекламы а искать лень (смотришь на webtalk.ru брошенные форумы и просишь админку тут: forum.mybb.ru/viewforum.php?id=30 ) - в принципе можно оформить и через Telderi впоследствии, а лоты конкретно по форумам - сделай отдельный сайт; 
- биржа безтопливных генераторов (спрос будет бешеный), как собственно и предложений "вечных двигателей" от изобретателей... тогда тебе не команда разработчиков нужна а боеспособная армия для защиты от нефтепузиков ));
... )))
P.S. ну и наверное формирующийся рынок демократии, в истинном смысле: "власть народа" - поясню
мало "двигателей" и "рычагов" для изменений, но много тупых законопроектов, которые надо пересмотреть. Политические партии заигрались в свою позицию/оппозицию и настолько далеки от чаяний простого люда, как 1917 от 2018г Вся структура замшела и недееспособна. А вот конректно движение типа "душа народа" которая бы не являлась партией и законно бы собирала подписи и писала бы петиции - обращения с мнотысячными подписями РЕАЛЬНЫХ людей - такого пока нет. 
Что мешает организовать движение по соцсетям, обрабатывать заявки, грамотно юридически составлять обращения и в электронном виде проводить референдумы, опросы, голосования? 
Т.е. реально сделать биржу демократии.
Извини, идея пока сыровата, на праздники с приятелями просто рассуждали по этой теме, но суть в принципе думаю понятна ))

Худший ответ: Свободной ниши скорее всего не найдете, а слишком узкопрофильные скорее всего не будут интересны.
В одиночку с нуля будет не возможно, как минимум пара единомышленников не помешают, как и инвестиции со стороны.
Вопрос: Частая смена мест работы. Как вести себя при поиске?

Лучший ответ: Я за 1,5 года сменил 2 места, и спокойно нашел третье, индустрия к этому нормально относится

Худший ответ: пофиг вобще! Индустрия ИТ такая вещь - динамическая. Лучше прыгать, быть в поиске.
А вобще это бич индустрии, да ! Разрабы переходят с проекта на проект из 1 компании в другую - часто просто из-за зп. Не заканчивают проекты.
Слышал такое.
Вопрос: В каком месте задается ширина блока?

Лучший ответ: Используйте последнюю версию - fancyapps.com/fancybox/3

Худший ответ: Ответ на ваш вопрос в этой части кода:<a class="gallery" href="#testube"><img alt="" src="images/atb_s.jpg" /></a>

<div style="display:none" id="testube">
  <!-- HTML - код ролика -->
  <object width="425" height="344">
    <param name="movie" value="http://www.youtube.com/v/sh08XGBE8qc&hl=ru&fs=1"></param>
    <param name="allowFullScreen" value="true"></param>
    <param name="allowscriptaccess" value="always"></param>
    <embed src="http://www.youtube.com/v/sh08XGBE8qc&hl=ru&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed>
  </object>
</div>
Скрипт (он кстати называется fancybox) не "прописывает" (это слово имеет императивный оттенок), а просто дублирует размеры блока, т.к. контейнер позиционирован абсолютно. Блок как бы сам отвечает за свои размеры.
И да, последняя версия лучше во всех смыслах.
Вопрос: Как думаете, какая cms на сайтах типа work.ua?

Лучший ответ: Чем "короче" домен, тем более вероятно что что-то самописное.

Худший ответ: Я бы точно делал на Joomla + DJClassfields, либо на Joomla + ZOO.
А вообще,, самописка, достаточно посмотреть robots.txt
Вопрос: Могут ли украсть карту Apple Pay?

Лучший ответ: Читаем внимательно статью
https://habr.com/post/422551/
При бесконтактной оплате, ваш телефон (или карта) только лишь подписывает конкретную транзакцию и не передаёт данных самой карты.

Худший ответ: Чек вылези и Вам его отдали? ТОгда врят ли утекли, там же юр лицо светится.
А разве доставка обычно платная ???Оо хотя коненчо смотря на какую цену....
Сумма для запроса пина зависит и от Вашего банка, и от кому оплачиваете... и от настроек конкретного клиента\терминала.
Если боитесь что утекли - блокируйте и смените карту в банке. Благо не долго
Вопрос: Как понять каой SSD(PCI-E) мне подходит?

Лучший ответ: Откройте спецификацию на свой ноутбук и узнаете, можно ли туда установить ссд. А то, может так сложиться, что туда только wifi/wwan модуль можно поставить.

Худший ответ: mSata или (хз что это такое microsata - наверно один и тот же), ПСИэкспрессы не такие - см. на видухи какие
Вопрос: Как восстанавливать энергию через определённое время?

Лучший ответ: Можно очень просто. Сохраняешь в бд последнее время, когда игрок обновил энергию. Потом, при следующем запросе ты смотришь, пора? Далее, если необходимо, проверяешь, сколько раз стоило восстановить энергию. Ну и добавляешь необходимое количество пунктов.

Худший ответ: Сохраняйте timestamp последнего обновления и обновляйте энергию при каждом обращении к информации для этого игрока (или даже при каждом обращении к информации игрока, которому нужно вернуть энергию).
Вопрос: Почему из функции возвращается временный объект?

Лучший ответ: Там будет не временный объект, а тот же самый объект, что вы создали внутри функции. Даже копирования не будет. Хотя, у вас тут объект срезаться может поэтому ещё вопрос. Почитайте про RVO/NRVO.
Я немного поправил ваше решение:Foo get_foo(const char *msg)
{
    return Foo_2(msg);
}
Так будет лучше.
Но! Тут важно понимать, что делать так в реальном коде нельзя, т.к. объект класса Foo_2, при некоторых условиях, срежется до объекта класса Foo. В вашем случае -- это не проблема. Но можно переписать как-то так, например:const Foo &get_foo(const char *msg)
{
    static Foo_2 foo2(msg);
    return foo2;
}
Этот код тоже не для всех случаев подходит, т.к. get_foo будет возвращать всегда один и тот же объект с одним и тем же сообщением.

Худший ответ: У тебя тут не внутренняя переменная возвращается, а копия объекта.
*r создается новый объект который инициализируется конструктором копирования из локального, тоже самое было бы если бы вернул temp
Ошибка была бы при функции вида Foo& get_foo(const char *msg)
Вопрос: Безопасна ли такая реализация личных сокет-запросов?

Лучший ответ: Довольно странная схема взаимодействия, особенно про "отправлять всем". 
При подключении к сокет серверу каждый клиент отправляет идентифицирующую информацию, id, name, что угодно. Далее, когда вы хотите отправить сообщение и оно должно быть не для всех, то отправляйте только тем, для кого предназначено сообщение. У вас должен получиться некий массив объектов, в котором есть идентифицирующая информация, по которой вы будете вычислять кому отправлять и ссылки на соединение, в которое отправлять данные. Перед отправкой сообщения проходитесь по массиву, если инфа проходит по критериям, то отправляйте, нет, значит берёте следующий элемент

Худший ответ: Если у Вас реализация на socket.io - то можете сделать реализацию через комнаты. При подсоединении сам сокет можно кидать в определенные комнаты: комната со всеми коннектами одного пользователя со всех устройств, комната для уведомлений, комната по правам доступа и т.д. И в дальшейшем делать emit по определенной комнате.
Ваш вариант предполагает отправку данных всем, что не является верным, поскольку проверка происходит на клиентской стороне, а что делать, если будет некое "конфиденциальное" оповещение?
Вопрос: Как выучить интернет-маркетинг с нуля?

Лучший ответ: Чтобы взяли хотя бы ассистентом, нужны знания Excel, Word, грамотный русский язык, базовое владение Яндекс.Директ и Google Adwords, понимание концепции SEO, умение ориентироваться в интерфейсе Яндекс.Метрики и/или Google Analytics, не бояться слов "паблик", "вовлечённость", "виральность". Если хотя бы с первыми тремя пунктами всё ок, то рекомендую следующий порядок действий:
1. Ознакомиться с официальными справками по системам Яндекс.Директ и Яндекс.Метрика. Это реально самый лучший, удобный и актуальный учебный материал.
2. Попробовать ознакомиться с официальной справкой Google Analytics и Google Adwords. Здесь сложнее, но базу почерпнуть можно.
3. Пройти подготовку к экзаменам по Google Adwords. Попробовать сдать экзамены по Google Adwords, Яндекс.Директ и Яндекс.Метрике (Яндекс.Эксперт пока на реконструкции, но когда закончите подготовку, уже должен быть в строю). Конечно, экзамен с первого раза не сдадите, но знания приблизятся к практике.
4. Завести свой сайт или лендинг. Поставить на них Google Analytics, Яндекс.Метрику. Как вариант, получить доступ к аналитике сайта друга. Просматривать все отчёты, стараться понять их смысл и цель применения на практике.
5. Заведите свою группу или паблик в Вконтакте и/или Facebook. Освойте управление и считывание статистики.
6. Предложить бесплатно на фрилансе, или в виде помощи другу, настройку и ведение рекламной кампании в Яндекс.Директ. Попробовать подобрать запросы. Стараться понять как тратятся деньги, как этим управлять, что от чего зависит. Как вариант, вложить 5000 рублей в рекламу ранее заведённого сайта, считая это вкладом в своё образование.
7. Параллельно читать статьи на сайте SEONews и Searchengines, особенно его форум, а также тематические группы и паблики Вконтакте.
8. И слушать вебинары Яндекса, Google, сторонних порталов.
9. Заходите на рекрутинговые сайты, типа HH.ru или Мой Круг ищите вакансии специалистов по контекстной рекламе, SEO, интернет-маркетингу и просматривайте требования, чтобы иметь понимание где нужно ещё подтянуть знания.
10. Устройтесь на работу помощником интернет-маркетолога.
В принципе, всё. Если пройдёте через все эти этапы и обретёте эти знания, то Вас с радостью возьмут в агентство. Я бы даже позавидовал человеку, который идёт работать уже с таким фундаментом - развиваться дальше будет легко.
Успехов в начинании!

Худший ответ: Не очень хороший выбор. Чем сильнее кризис - тем меньше нужны маркетологи. Я бы на вашем месте выбрал более IT-профессию.
Вопрос: Как сделать форму с логическим меню?

Лучший ответ: Если я правильно понял, то плагин Contact Form 7 в связке с Conditional Fields for Contact Form 7 полностью решает вашу задачу.
Так же рекомендую к прочтению информацию о паре аддонов для contact form 7

Худший ответ: В Gravity Forms если собирать форму, то любой элемент формы может быть поставлен условием любого другого. Conditional выставляется примерно как на этом скриншоте.
Вопрос: Как читать log-файлы access.log?

Лучший ответ: Похоже на работу сканера прокси, учитывая GET запросы к чужим сайтамТут у человека такая же проблема

Худший ответ: логи легко читаются:5.9.89.80 - ip клиента - -    - данные http авторизации[09/Jan/2019:18:52:40 +0300] - дата и время запроса"GET http://shaiyaresurgence.com/en/?DT9FBEYS4L71I1P8OS HTTP/1.1" - сам запрос499 - код ответа сервера0 - кол-во переданных от сервера байт"-" - http referer"Mozilla/5.0 (BlackBerry; U; BlackBerry 9850; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.254 Mobile Safari/534.11+" - user agent
по факту - на 99% это запроса от бота: 
* ip адрес 5.9.89.80 - из пула хостера Hetzner
* 499 - бот не дождался ответа сервера и сразу закрыл соединение
* да и запросы некорректные (если стандартный формат лога не меняли) - там не должно быть протокола и хоста, то есть вместо "GET http://shaiyaresurgence.com/en/?DT9FBEYS4L71I1P8OS HTTP/1.1" должно быть "GET /en/?DT9FBEYS4L71I1P8OS HTTP/1.1"
- самое простое забанить ip на firewall
по поводу logrotate: 
Обычно он запускается всего 1 раз в сутки (скрипт лежит в /etc/cron.daily) и сразу по достижению 5М ничего не произойдет. Более того параметр delaycompress говорить что первая копия (*.log.1) архивироваться не будет, сожмется только вторая.
хотите - можете перенести /etc/cron.daily/logrotate в /etc/cron.hourly и запуск logrotate будет каждый час
Вопрос: Как не переборщить с желанием все спроектировать прежде чем писать код?

Лучший ответ: >не нравится как он написан
пффф а ты что думал,  в сказку попал? тебе и не должно нравиться, это для бизнеса где-то на 25 месте находится. 
-----
чесно говоря я вообще не слышал чтоб реально на практике УМЛ использовали, для проектирования (хотя тема когда-то и была на хайпе). 
Ну да на черновиках набрасывают общие идеи, сам код также может быть тем черновиком для идей, но это всего-лишь черновик. 
=======
>"Давай декомпозируем на задачи и начнем делать. По ходу реализации разберемся"
очень грамотный, взвешенный подход. Основная проблема не опытных людей, попытка сразу выдать идеальный результат в вакууме, люди которые поопытнее знают что это сделать не возможно, а попытка идеальной проектировки приведет только к переусложнению и ухудшит разработку и вместо того чтоб гибко подгонять решение под постепенные уточнения, вы будете стремится все подогнать под рамки какой-то первой "идеальной" идеи реализации, на основе первого восприятия задачи (которое часто ошибочно).

Худший ответ: 2 часа на проектирование, опционально 2 часа на обсуждение, а дальше делать.
Вопросы и уточнения в любом случае появятся в процессе.
Декомпозировать - это хорошо. Вопрос лишь в том, КАК декомпозировать. Это по сути и есть общая архитектура, которую стоит продумать заранее.
Вопрос: Как увеличить скорость поиска в sphinx?

Лучший ответ: Увеличиваем память до 256, а лучше еще больше.Разносим индексы на разные машины ( у Sphinx есть возможность подключать агентов)Даже в рамках одной машины настраиваем количество агентов поиска равное количеству потоков которые может выполнять сервер (например 4хядерный процессор с HyperThreading  =  8 потоковУточняем срок обновления индекса. Кешируем результаты поиска на отдельном сервере в мемкеш/файлы. 
Все эти рецепты можно применять как по-отдельности, так и совместно.
Конкретные цифры с количеством машин, агентов поиска, объема памяти под индексы и под кеш нужно высчитывать в зависимости от конкретного решения.

Худший ответ: все просто, ты использовал конструкцию, sql_field_string = TEXT, то есть ты добавил все поля из базы из этой колонки в поиск, соответственно поиск все засунул без изменений в индекс, и он стал жирным. убирай это. сделай поиск без этого, а уже результаты цепляй из базы, получится один запрос в базу со всем твоим текстом, весить будет гроши. то есть, сфинкс при ответе выдает, учитывая офсет и лимит записи в поиске, именно те поля которые ты указал в конфиге, типа ид прайс и тд, в данном случае еще и текст. лишнего он выдавать не должен, искать да, но не выдавать. Соответственно делаешь запрос к сфинксу, потом из его хитов вылавливаешь айдишники и цепляешь к ним запрос из бд.
Вопрос: Как вернуться к нужной позиции на странице при нажатии кнопки Назад?

Лучший ответ: Делается просто: 
По событию onscroll пишем в localStorage.scrollTop заначение скрола.
По событию onload читаем из localStorage.scrollTop и устанавливаем позицию scrollTop у элемента с главным скролом.selector = 'body';   /* <--- cюда положи селетор на элемент с основным скролом */
$('document').on('load', function(){ $(selector).attr('scrollTop', localStorage.scrollTop); }
$(selector).on('scroll', function(){ localStorage.scrollTop = $(selector).attr('scrollTop'); }
P.S. Для юзабельности, обязятельно должен быть элемент перемещающий на начало страницы.

Худший ответ: Эту процедуру делает за Вас браузер. Если вы хотите иначе. Вам нужно писать JS-скрипт, который будет мониторить данные перемещения и открывать спрятанный список. Один из вариантов - якоря + history для изменения адресной строки. Тот же history может отслеживать, вернулся ли пользователь по ссылке. А Вам всего то и нужно применить знания о якоре для открытия списка.
Вопрос: Что быстрее и лучше map() или foreach() или for() в javascript?

Лучший ответ: Зависит от реализации в конкретном движке. Например в десктопном хроме может выиграть один подход, в фаерфоксе другой, а в сафари третий.
К счастью, оптимизировать такие штуки приходится редко, разве что для графики иногда.

Худший ответ: Пару дней назад тестили в Node 6.x , Node 8.x и последнем Chrome (на jsperf.com ).
Господа, все тесты показали, что быстрее всего работает for , который начинается с конца массива. То есть:for (var i = array.length; i >= 0 ; i--)
Вопрос: В чем отличие многобайтовой кодировки от Юникода?

Лучший ответ: https://msdn.microsoft.com/ru-ru/library/cwe8bzh0.aspx 
https://ru.wikipedia.org/wiki/DBCS
До появления Unicode тоже были кодировки с размером символа более байта.

Худший ответ: ну если это как по аналогии Mysql то разница что многобайтовая кодировка это расширенный юникод (к примеру добавлены эмоджи)
Вопрос: Как изменить css свойство animation-delay для тех, кто вернулся на посещенную страницу?

Лучший ответ: /* Cookie function */
function getCookie(name) {
    var matches = document.cookie.match(new RegExp(
        "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
    ));
    return matches ? decodeURIComponent(matches[1]) : undefined;
}

if (getCookie('isVisited')) {
    // меняем CSS
} else {
    // Устанавливаем куки
    document.cookie = 'isVisited=true; path=/';
}

Худший ответ: При загрузке страницы проверяйте куки у юзера. Если куки нет - ставьте, если есть - скрывайте видео
Вопрос: Как создать таблицу Ганна на php + js?

Лучший ответ: looping in a spiral
По ссылке можно видеть до чёрта вариантов реализации того что вам нужно, на многих языках. В том числе на JS, в том числе с циклами, в том числе без циклов (определение значения ячейки по (x,y)).

Худший ответ: мой вариант реализации "на коленке", для изменения размера массива измените переменную size. Делалось очень быстро, просто из интереса прохода по спирали. 
https://jsfiddle.net/k97L4v1h/