Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Игра «История одной фермы» - увлекательное и бросающее вызов вашим серым клеточкам приключение, от которого невозможно оторваться!

История одной фермы - маджонг

Маджонг, Казуальные, Приключения

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Web + Web-программирование

С этим тегом используют

IT Программирование Сайт Веб-разработка Дизайн Javascript Программист HTML Все
165 постов сначала свежее
107
Web.Study
Web.Study
2 года назад
Web-технологии

58 байтов удовольствия. Выглядит красиво почти где угодно⁠⁠

Как сделать сайт красивым на всех дисплеях?


Я перерыл половину Хабра в поисках САМОГО простого способа в минимум кода и кто ищет, тот всегда найдет. Под эту задачу подойдут следующие 58 байт:

58 байтов удовольствия. Выглядит красиво почти где угодно Программирование, IT, Полезное, CSS, Frontend, Web-программирование, Web, Веб-разработка, Веб-дизайн, Длиннопост

Давайте их разберём.


max-width: 38rem


Похоже, в большинстве браузеров по умолчанию используется размер шрифтов 16px, то есть 38rem — это 608px. Поддержка дисплеев разрешением минимум 600px кажется разумным

выбором.



padding: 2rem

Если ширина дисплея становится меньше 38rem, тогда благодаря этому отступу всё остаётся достаточно красивым до ширины примерно в 256px. Хотя это может казаться необязательным, на самом деле мы одним выстрелом убиваем двух зайцев: отступ также создаёт необходимое пространство сверху и снизу.



margin: auto


Это всё, что нужно для центрирования страницы, потому что main — это блочный элемент под семантическим html5.



Важное замечание: чтобы добиться этого результата, мне понадобилось на удивление много попыток. Возможно, это связано с тем, что я ничего не знаю о «современной» веб-разработке или (к чему я склоняюсь больше) говорит о том, насколько тяжело сохранять простоту в этом сложном мире.


Дополнение 1: после обсуждений я изменил значение padding на 1.5rem, чтобы улучшить компромисс между мобильными и десктопными дисплеями.

Дополнение 2: мне напомнили о ch unit, и он мне понравился! После этого я поменял значение на 70ch/2ch, что выглядит примерно так же, но на 2 байта меньше; только padding стал чуть меньше (это хорошо для мобильных).



100 байтов CSS, которые выглядят красиво где угодно (расширенная версия)


Это простой CSS, который будет хорошо выглядеть на большинстве дисплеев:

58 байтов удовольствия. Выглядит красиво почти где угодно Программирование, IT, Полезное, CSS, Frontend, Web-программирование, Web, Веб-разработка, Веб-дизайн, Длиннопост

Давайте его разберём.


max-width: 70ch


«удобный для чтения диапазон» обычно составляет в ширину 60-80 символов, и в CSS можно выразить это напрямую при помощи единицы измерения ch.



padding: 3em 1em


Если ширина дисплея оказывается меньше указанного выше max-width, то этот padding предотвращает растягивание текста на мобильных от края до края. Чтобы оставить пробелы сверху и снизу, мы используем 3em.



margin: auto


Это всё, что необходимо для центрирования страницы; применяется к html, потому что у сайта Дэна нет семантического тега </p>, который, скорее всего, существует на большинстве сайтов. То, что верхний тег центрирует себя относительно ничего, не совсем логично, но так делает большинство браузеров.



line-height: 1.75


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



font-size: 1.5em


Я заметил, что в последнее время тенденции дизайна и размеры экранов склоняются к увеличению размера шрифтов. Или, возможно, я старею. Если вы хотите, чтобы пользователи могли его масштабировать, выбирайте em или rem вместо px.



Можно использовать :root вместо <html>, чтобы гарантировать наличие какого-нибудь селектора, но эта тонкость слишком сложна для меня и добавляет ещё один символ.



Ещё 100 необязательных байтов

58 байтов удовольствия. Выглядит красиво почти где угодно Программирование, IT, Полезное, CSS, Frontend, Web-программирование, Web, Веб-разработка, Веб-дизайн, Длиннопост

Пользуйтесь


И кстати, мы здесь рассказываем не только про CSS и банально, там нас будет удобнее читать :3

Показать полностью 3
[моё] Программирование IT Полезное CSS Frontend Web-программирование Web Веб-разработка Веб-дизайн Длиннопост
32
20
MaxSholts
2 года назад
Информационная безопасность IT

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2)⁠⁠

Началась 3-я неделя наших приключений, организованных разработчиком игр и ютубером NoobGameDev, и мы продвинулись уже очень далеко - на доске детектива почти не осталось места. А это значит, что всего будет 3 статьи по данному мероприятию: "Часть 1", "Часть 2 (эта)", и "Часть 3 - финал". Рекомендую прочитать первую часть, чтобы быть в курсе, потому что я буду довольно часто на неё ссылаться. Так же оставлю ссылку на оригинальную новость от автора. Теперь к делу.

В данный момент доска детектива выглядит следующим образом (зелёным выделены изменения с прошлой статьи)

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

В предыдущей части я говорил, что мы нашли подозрительные теги в аудиозаписи оставленной автором во Вконтакте. Мы поняли намёк на собаку Морти (из "Рик и Морти") по кличке Снафлс (Snuffles). Но после этого некоторые обратили внимание на тег "Other" со значением "Deep Sound".

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

Это была подсказка - существует программа "Deep Sound" для сокрытия информации в аудио файлах. И после недолгого перебора пароль был подобран. Им оказалась кличка пса - "Snuffles". Внутри был .txt документ со ссылкой.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

Страница по найденной ссылке перевела нас на архив Google Диска. Он оказался без пароля и в нём находилось 25 изображений с именами по типу "00001 11111 00000 10111 11000.png".

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

На первый взгляд всё понятно - нужно собрать из этого QR код. Проблема лишь в том, что для 25 данных кусков существует 25! = 15 511 210 043 330 985 984 000 000 комбинаций. Мягко говоря, многовато! Но из этого числа подавляющее большинство кодов будут не валидными. Это заставило нас немного изучить структуру QR кодов.

Так же мы сразу догадались, что имена изображений это тоже QR. Потому что имя состоит из пяти блоков по пять цифр (нулей, либо единиц), то есть 0 - белый цвет, 1 - чёрный (слева направо и сверху вниз).

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

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

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

Это расположение изображений, в котором точно можно быть уверенным (иначе QR не прочитается). Оставалось 8 изображений, что составляет 8! = 40 320 вариантов комбинаций. Это уже значительно меньше. Ясно, что нужно делать - писать "перебиратор" и считывать полученные результаты. Но для подобного квеста у нас по прежнему маловато людей, поэтому все наши попытки впопыхах написать нечто подобное не увенчались успехом. Однако, один из участников заметил, что все QR коды в квесте очень похожи. И спустя ночь, на утро, он выдал рабочий QR код. Оказалось, что он просто наложил получившуюся мозаику на какой-то из QR кодов, встречавшихся ранее в квесте, и таким образом подобрал рабочий вариант! Организатор квеста, ни много ни мало, был в возмущённом восторге) К тому же мы сразу собирали QR из имён файлов, а не из картинок, миновав тем самым один из проходных этапов.

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

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

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


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

Новая ветвь


Основным нашим прорывом стала новая ветвь квеста. Ей оказалась спектрограмма аудиодорожки видео из YouTube.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

В ней была спрятана строка: 66303638313537322e787370682e7275. Использовав первый же сайт с набором декодеров удалось расшифровать HEX строку, результат - ссылка на новый сайт.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

В этот раз по ссылке нас ждала игра "Змейка". А в коде страницы был комментарий "Only the best of the best are awarded the truth" (Только лучшие из лучших удостаиваются правды). Мы поняли, что нужно будет поиграть.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

Спустя несколько "забегов" мы определили, что игра выдаёт некий код каждому, кто займёт первое место в ТОП участников (но о коде позже), а так же если удавалось собрать больше 50 яблок, то из точки столкновения змейки расходился QR код. Но, так как он размером с игровое поле, то врезаться нужно было строго в середине поля (по вертикали). А это не так просто, как кажется.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

Собрав немного скриншотов, нам удалось слепить из них очередной QR код, который привёл нас к загадочной двери, с забавным замком.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

При нажатии на замок, он произносил фразу "Ответь мне, мальчик который выжил". Так же браузер запрашивал разрешение на использование микрофона. Поэтому очевидно было, что от нас ждут голосового ответа.

К этому моменту (об этом я рассказывал в первой части) у нас уже была книга о Гарри Поттере и был книжный шифр, который мы расшифровали, и ждали его применения. У нас получилась фраза "Смотри внимательнее, потому что дорога возникает под шагами того, кто идёт". Именно это каждый из нас кричал в микрофон, чтобы его фраза распозналась, и чтобы услышать заветный ответ.

"Теперь дорога свободна". После этой фразы нас перенаправило на страницу с выбором пути. Однако, видимо, наш выбор особой роли не играл (может, это для статистики, а может, как-то повлияет в будущем - пока не ясно).

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

Механизм (котик)


Данная страница представляет из себя металлическую "лямбу" всю в "нажиматорах" и индикаторах, и с "крутилятором" в правом нижнем углу).

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

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

DateTime.Now, по всей видимости, указывает на сегодняшнюю дату, а Сейф, как-то связан с сейфом. По остальным подсказкам на данный момент у нас идей особо нет.


Первый дисплей - это зашифрованное при помощи Энигмы сообщение. Коды к шифрам (о них я писал выше) помогают дешифровать только первое слово. И за несколько дней мы поняли, что сообщение меняется каждый день.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

Исходное сообщение: VJUBALA L EPZB UQE VO NUDFK SZ FBB HWQM
Его расшифровка: DOROTHY R TIVG RHS BC OMKYE FL IRG CIXJ


В данном сообщении, как и во всех, что мы видели, первое слово является женским именем, но после него получается "тарабарщина". Но, как вы могли заметить, минимум один раз нам удалось перейти ко второму дисплею. Один из участников взял сегодняшний код (CROQLWU UGSCRRY PA EKJGMCTCBR WG S HLTEBXK TTLWP), декодировал по примеру выше (ELEANOR HKHEYZM AU XCVALLLUKG CO U ETKNEYB PDIEI) и прогнал результат через BruteForcer. В итоге получилась фраза (пословица): NOTHING IS IMPOSSIBLE TO A WILLING HEART (перевод: "Нет ничего невозможного для желающего сердца"). Это и стало ключом. Однако, завтра фраза сменится и у нас нет уверенности, что данный метод сработает и с ней, так что данный этап нами полностью ещё не покорён.

Сейф (бабки)


На данной странице находится сейф, который похож на сейф из сцены с котом. На нём имеется кодовый замок (5 групп по 7 цифр), лимбовый замок и замочная скважина, которая, при нажатии на неё, требует загрузки файла изображения.

На сейфе так же имеется Памятка, в которой написано "1. Ввести код. 2. Покрутить крутилку. 3. Вставить ключ. 4. Нажать на значок ключа, чтобы открыть". И по всей видимости, основная сложность сейфа в том, что необходимо вводить сразу три ключа. Так как нет никаких сообщений о том какой из ключей был не верным.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

В предыдущей части я писал о том, что мы нашли реплику игры Flappy Bird, и что счёт в ней шёл не корректно. В конце концов мы добили данную последовательность: "1-2-3-8-9-6-4-1-2-7-5-6-4-9-0-0-7-5-2-2-4-9-1-7-5-9-0-4-6-1-7-5-2-1-0-4-9-3-8" (далее начинался адекватный счёт: 40-41-42-... и т.д). И я бы об этом не упомянул сразу после сейфа, если бы ни одно "но": в сцене с котом, в телевизоре часто появлялся эпизод из фильма "Защитник", в котором речь шла о длинном скучном числе, где каким-то образом расставлены 7-ки и 5-ки, а так же 3-ки и 8-ки. К тому же говорилось, что данное число - шифр от сейфа.

И в найденной нами последовательности данные цифры тоже стоят по каким-то правилам:
"1-2-3-8-9-6-4-1-2-7-5-6-4-9-0-0-7-5-2-2-4-9-1-7-5-9-0-4-6-1-7-5-2-1-0-4-9-3-8". Но как я уже говорил, проверить эту теорию мы сможем только когда найдём остальные 2 ключа.

О менее приятном


Это были наши удачи. А теперь о том, с чем нам повезло немного поменьше и разгадка чего может являться частью пазла.


Ранее мы нашли вордовский документ с множеством непонятных чисел. Они остаются загадкой и сейчас. Но в какой-то момент, один из участников скинул скриншот открытого документа, а другой заметил, что он очень похож на штрих-код. И после небольших преобразований, нам удалось его считать.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

Штрих-код считался и у нас появилась новая загадка: число из 11 цифр. Мы принялись подставлять его в различные нерешённые задачи, пытаться декодировать и прочее. Но один из новоприбывших участников сразу же спросил, что-то типа "А вы звонили на штрих-код?".


Это число оказалось номером телефона: 8-863-333-94-71. Позвонив по нему, мы услышали автоответчик.


Запись автоответчика


Любители аниме сразу поняли, что это японский. Это же подтвердил и Google переводчик.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

Исходя из перевода можно точно сказать, что речь об аниме "Shaman King" и, вероятнее всего, о конкретном духе - Амидамару. Но как или чем он нам сможет помочь пока не понятно.

Шрифты из Телеграм


В прошлой части нам кое-как удалось получить набор букв из картинки со шрифтами. Так же мы сумели проявить надпись OurSecret.

Спустя некоторое время нам удалось понять, что надо тщательно гуглить все незнакомые слова. В итоге была найдена очередная программа для стеганографии - OurSecret. Используя её и полученный ключ "BMWFACTHLS", нам удалось вытащить текстовый файл с новой ссылкой.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

Эта ссылка привела нас к изображению с именем "barber.png", находящимся на Google Диске. Картинка хотела открываться не во всех редакторах, но спустя какое-то время один из участников поиздевался над картинкой и прислал результат. После этого мы поняли, что использовался приём, который называется Наполнением за границами изображения. И после некоторого времени подбора значений в HEX редакторе удалось получить полное изображение.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

Скрытое сообщение было ссылкой, которая привела нас к странице с точками и полем для ввода.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

Если ввести неверное значение, то поле ввода пропадает. Но это утка. Так как происходит редирект на страницу http://a0694523.xsph.ru/index.php и если убрать "index.php", то поле ввода появляется снова.
В данным момент мы не знаем, что от нас требуется. Самая правдоподобная версия в том, что перед нами участок карты звёздного неба или набор созвездий. Но пока что это всё, что у нас есть.

Опять Морзе


Буквально в момент написания статьи была обнаружена ещё одна ветка в стартовом видео на YouTube. Ей оказалась Морзянка. То, что все изначально приняли за засвет от светодиода какого-то устройства, оказалось посланием.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

Это оказалась ссылка на новый сайт, где нас встретил персонаж Коржик из Улицы Сезам

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

На странице так же имеется неприметная форма для ввода. Сам Коржик говорит "OMMM NOM NOM NOM". При неверном вводе фраза немного меняется, но форма ввода остаётся активной. Помимо прочего, так как это похоже на намёк на cookie-файлы, то мы проверили и их. Мы нашли куку с именем "Monster" и значением: 0DF5B38B2D4B4BBEA13D626CA7C6D4A3366EB07F3C594C9179BE0D34F8832B36.

Каким образом зашифровано данное сообщение, и что является ключом, если он нужен, мы пока что не знаем.

Странные имена


И ещё одна вещь, о которой хотелось бы рассказать - это имена файлов и комментарии, которые мы иногда находим. Сначала мы думали, что это рандомный набор букв, но все эти "имена" написаны заглавными буквами и имеют плюс/минус одинаковую длину. Мы не думаем, что это совпадение. На данный момент есть предположение, что это связано с картинкой в видео на YouTube. И помимо прочего, данные записи появились и на доске детектива.

Неплохой ARG квест для IT-шников, в котором ты не участвуешь… (часть 2) Arg, Ctf, Квест, Игры, Головоломка, Загадка, Шифр, Криптография, Стеганография, Информационная безопасность, IT, Логика, Ребус, Программирование, Шифрование, Web, Web-программирование, Гифка, Видео, Длиннопост

Так же эти картинки отображают и некоторые этапы квеста. Например: змея - змейка; лук - Тор; дух - Амидамару; ножницы - обрезанная картинка; печенье - Коржик; Шелдон - клингонский; птица - Flappy Bird; матрёшка - матрёшки; книга - Гарри Поттер...
И на всех этих этапах мы находили странные именования. Возможно, что в итоге это соберётся в некую ссылку или же станет для нас очередной загадкой.

Подытожим


Квест идёт уже 2 недели. Разнообразие впечатляет. Загадок много, очень много. Квест явно был рассчитан на гораздо большее число участников. Впереди ещё есть, что разгадывать. После прошлой статьи число участников выросло, из-за этого мы и смогли так далеко зайти. Поэтому я снова оставлю ссылку на дискорд сервер, где мы бьёмся с квестом. Надеюсь, что и в этот раз к нам присоединятся новые люди, чтобы общими усилиями пройти эту игру)


Напишите как вам задания? Есть ли какие-то идеи, которые смогут нам помочь? И спасибо, что прочитали!)

Показать полностью 24 1
[моё] Arg Ctf Квест Игры Головоломка Загадка Шифр Криптография Стеганография Информационная безопасность IT Логика Ребус Программирование Шифрование Web Web-программирование Гифка Видео Длиннопост
4
Sergeytolkachyov
Sergeytolkachyov
2 года назад

Dependency Injection Containers (DI контейнеры) в Joomla 4⁠⁠

Этот текст - перевод статьи из нового портала документации для разработчиков Joomla, раздел "Основные концепции".

Введение

Joomla 4 внедряет практику контейнеров внедрения зависимостей (DI контейнеры, DIC) в Joomla. Эта статья призвана объяснить, почему мы внедряем их и как их использовать в Joomla.

DI контейнеры уже давно существуют в экосистеме PHP для поддержки целей внедрения зависимостей. Например, Symfony представила эту концепцию в 2009 году.
Есть несколько причин, по которым пришло время внедрить их в Joomla 4:
1. Тестирование — одной из тем Joomla 3 были глючные релизы. Нам нужно иметь возможность тестировать классы и компоненты более простым способом. Внедрение зависимостей позволяет значительно упростить внедрение классов Mock, что, мы надеемся, позволит нам уменьшить количество ошибок.

2. Нужно уменьшить количество магии в Joomla - Joomla имеет большое количество "волшебных" файлов, названия которых нужно угадывать. Это увеличивает количество времени, которое люди, плохо знакомые с Joomla, тратят на изучение соглашений по именованию файлов. Предоставление конкретного класса в расширениях позволяет нам легко тестировать совместимость расширений с другими расширениями (например, категориями и ассоциациями).

Глобальный контейнер
Внедрение глобального контейнера зависимостей очень слабо заменяет класс Factory (ex. JFactory). Однако его не следует путать с прямой заменой. Так, например, в ваших контроллерах в CMS вместо \Joomla\CMS\Factory::getDocument(); стоит использовать $this->app->getDocument();.

Это использует внедренное приложение и поэтому упрощает тестирование.

Ссылки по теме на Хабре:

- Опубликован скорректированный план выпуска релизов Joomla 4 и Joomla 5

- Распространенные ошибки при написании плагинов Joomla 4

Создание объекта в контейнере

Чтобы поместить что-то в глобальном DI-контейнере Joomla проще всего передать анонимную функцию. Пример для логгера ниже:

Dependency Injection Containers (DI контейнеры) в Joomla 4 Разработка, Joomla, Ооп, Di, PHP, Cms, Framework, Web, Web-программирование, Длиннопост

Функция share принимает два обязательных параметра и необязательный третий параметр:

1. $key - имя сервиса (dataStore key) - почти всегда является именем класса, который вы создаете.

2. $value - Анонимная функция принимает единственный параметр — экземпляр контейнера (это позволяет вам получать любые зависимости из контейнера). return — это сервис, который вы хотите поместить в контейнер.

3. $protected - (необязательный параметр) - это булев параметр, определяет, защищена ли служба от перезаписи (т. е. разрешено ли кому-либо еще переопределять ее в контейнере). Как правило, для основных служб Joomla, таких как объекты сессии (Session), это true.


Теперь рассмотрим более сложный пример:

Dependency Injection Containers (DI контейнеры) в Joomla 4 Разработка, Joomla, Ооп, Di, PHP, Cms, Framework, Web, Web-программирование, Длиннопост

Здесь видно, что мы добавили две вещи — начали использовать зависимости (роутер API получает приложение API из контейнера) и мы также создали алиас для ApiRouter (в Joomla 4 существует 5 типов приложений - Application - Site, Administrator, Cli, API и Installation, а также могут быть созданы свои типы - Т.С.). Это означает, что контейнер создает экземпляр ApiRouter тогда, когда распознает использование класса.  Зато в нашем коде для простоты мы сможем запустить следующий вызов, чтобы получить роутер (That means whilst the container recognises that if it needs to build an ApiRouter instance it can do that. But in our code to keep things simple we can also run to retrieve our router).


Factory::getContainer()->get('AmazingApiRouter');


В то время как в Joomla наши провайдеры могут выглядеть более сложными, потому что логика создания объектов внутри анонимной функции более сложна - все они следуют этой базовой идее.

ПровайдерыПровайдеры в Joomla — это способ регистрации зависимости в сервис-контейнере. Для этого создайте класс, реализующий Joomla\DI\ServiceProviderInterface.

Это дает вам метод регистрации, который содержит контейнер. Затем вы можете снова использовать метод share, чтобы добавить любое количество объектов в контейнер. Затем вы можете зарегистрировать их в контейнере с помощью \Joomla\DI\Container::registerServiceProvider. Вы можете посмотреть, как мы регистрируем все сервис-провайдеры, здесь, в методе \Joomla\CMS\Factory::createContainer.

Dependency Injection Containers (DI контейнеры) в Joomla 4 Разработка, Joomla, Ооп, Di, PHP, Cms, Framework, Web, Web-программирование, Длиннопост

Контейнер компонентаКаждый компонент также имеет свой собственный контейнер (который находится в разделе администратора (administrator section) Joomla). Однако этот контейнер не подвергается воздействию. Он нужен только для того, чтобы получить системные зависимости и позволить классу представлять ваше расширение. Этот класс является классом Extension и как минимум должен реализовывать интерфейс соответствующего типа расширения. Например, компонент должен реализовать \Joomla\CMS\Extension\ComponentInterface (libraries/src/Extension/ComponentInterface.php). Для получения полной информации о реализации в Вашем расширении мы рекомендуем обратиться к официальной документации Joomla «Разработка компонента MVC для Joomla 4».

Использование контейнера компонента в другом расширении

Вы можете легко получить контейнер другого расширения через объект CMSApplication. Например, Factory::getApplication()->bootComponent('com_content')->getMVCFactory()->createModel('Articles', 'Site');

Получите контейнер com_content, получите MVC Factory и получите ArticlesModel фронтенда Joomla. И это будет работать в любом расширении во фронтенде, бэкэнде или API Joomla (в отличие от старого метода LegacyModel::getInstance()).

ДополнительноВ документации Joomla Framework есть отличный пример того, почему внедрение зависимостей полезно для вашего приложения и как DIC помогает его структурировать. Читать на GitHub.

От переводчикаЗамечания и пожелания по переводу приветствуются.

Показать полностью 3
[моё] Разработка Joomla Ооп Di PHP Cms Framework Web Web-программирование Длиннопост
0
24
Web.Study
Web.Study
2 года назад
Web-технологии

4 крутые функции JavaScript, о которых не знает большинство junior разработчиков⁠⁠

С помощью JavaScript можно делать одно и то же разными способами. С выпуском каждой новой спецификации ECMAScript добавляются новые методы и операторы, чтобы сделать код более коротким и читабельным.


Канал с вкусностями для новичков во front-end

4 крутые функции JavaScript, о которых не знает большинство junior разработчиков Программирование, IT, Разработка, Javascript, Web, Web-программирование, Веб-разработка, Длиннопост

1. Object.entries

Большинство разработчиков используют метод Object.keys для итерации по объекту. Этот метод возвращает только массив ключей объекта, а не значения. Можно использовать Object.entries для получения как ключа, так и значения.

4 крутые функции JavaScript, о которых не знает большинство junior разработчиков Программирование, IT, Разработка, Javascript, Web, Web-программирование, Веб-разработка, Длиннопост

Чтобы выполнить итерацию по объекту, можем сделать следующее:

4 крутые функции JavaScript, о которых не знает большинство junior разработчиков Программирование, IT, Разработка, Javascript, Web, Web-программирование, Веб-разработка, Длиннопост

Оба подхода, описанные выше, возвращают один и тот же результат, но Object.entries позволяет легко получить пару ключ-значение.



2. Метод replaceAll

В JavaScript, чтобы заменить все вхождения строки другой строкой, нам нужно использовать регулярное выражение, подобное следующему:

4 крутые функции JavaScript, о которых не знает большинство junior разработчиков Программирование, IT, Разработка, Javascript, Web, Web-программирование, Веб-разработка, Длиннопост

Но в ES12 в String.prototype добавлен новый метод replaceAll, который заменяет все вхождения строки другим строковым значением:

4 крутые функции JavaScript, о которых не знает большинство junior разработчиков Программирование, IT, Разработка, Javascript, Web, Web-программирование, Веб-разработка, Длиннопост

3. Числовой разделитель


Можно использовать символ подчеркивания «_» в качестве числового разделителя, для упрощения подсчета количества нулей в числе.

4 крутые функции JavaScript, о которых не знает большинство junior разработчиков Программирование, IT, Разработка, Javascript, Web, Web-программирование, Веб-разработка, Длиннопост

Разделитель также можно использовать с числами BigInt, как в следующем примере:

4 крутые функции JavaScript, о которых не знает большинство junior разработчиков Программирование, IT, Разработка, Javascript, Web, Web-программирование, Веб-разработка, Длиннопост

Это делает число более читабельным.



4. document.designMode


Связанный с интерфейсным JavaScript, designMode позволяет редактировать любой контент на странице. Просто откройте консоль браузера и введите следующее:

4 крутые функции JavaScript, о которых не знает большинство junior разработчиков Программирование, IT, Разработка, Javascript, Web, Web-программирование, Веб-разработка, Длиннопост

Это полезно для дизайнеров, так как им не нужно каждый раз менять что-то в коде в соответствии с изменениями на экране.



Заключение


Рассмотренные трюки и фичи способны ускорить работу разработчика, а их использование не только необходимо, но и полезно. Продолжайте познавать скрытые возможности языка, изучать всевозможные трюки и повышать свой скилл, а мы поможем новым чтивом. Удачи!

Показать полностью 7
[моё] Программирование IT Разработка Javascript Web Web-программирование Веб-разработка Длиннопост
5
Sergeytolkachyov
Sergeytolkachyov
2 года назад

Создание модулей с учётом новой структуры Joomla 4⁠⁠

Joomla 4 "под капотом" претерпела немало изменений относительно предыдущих версий. Её кодовую базу сообщество разработчиков регулярно подтягивают до современных реалий, вводя актуальные технологии в ядро CMS. Так, например, если раньше загрузка классов была вариациями на тему include, то в Joomla 4 появился лоадер, приведённый к PSR-4. Ядро CMS переводится на концепцию сервис-провайдеров, внедрены DI-контейнеры. Эти изменения влекут за собой изменения в структуре компонентов, модулей и плагинов.

В данной статье пойдёт речь о том, как создать модуль для Joomla 4 с новой структурой файлов и классов. Как создать новый (или апгрейдить старый) модуль так, чтобы он ещё долго прослужил на Joomla 4 и Joomla 5?
Статья на Хабре

Joomla Cms Разработка Веб-разработка PHP Web Web-программирование Текст
9
7
Web.Study
Web.Study
2 года назад
Web-технологии

Анимированная полка с вещами на CSS⁠⁠

Телеграм - https://t.me/havaevau_webstudy

Анимированная полка с вещами на CSS Программирование, IT, Web-программирование, Web, Веб-дизайн, Веб-разработка, CSS

Сodepen-проект «My Stuff» наглядно демонстрирует современные возможности препроцессоров для HTML и CSS, а именно Pug и SCSS. Посмотрите сами, как относительно малым количеством строк, можно реализовать интересный анимированный рисунок:


https://codepen.io/annampawl/pen/yLvoGQY

Показать полностью 1
[моё] Программирование IT Web-программирование Web Веб-дизайн Веб-разработка CSS
5
7
Web.Study
Web.Study
2 года назад
Web-технологии

Полоса прокрутки (scrollbar) - один из самых неиспользуемых элементов в веб-разработке. Как с ним работать?⁠⁠

Полоса прокрутки присутствует сегодня на любом сайте видимо или невидимо. Это вполне обыденный элемент, на который обычно никто не обращает особого внимания.


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


Телеграм - https://t.me/havaevau_webstudy

Полоса прокрутки (scrollbar) - один из самых неиспользуемых элементов в веб-разработке. Как с ним работать? Программирование, IT, Разработка, Web-программирование, Web, Веб-дизайн, CSS, Длиннопост

Основы


Бывает, что содержимое элемента не помещается в нем, так как оно слишком велико. И чтобы сделать содержимое прокручиваемым, можно использовать overflow: auto. Благодаря ему полосы прокрутки будут отображаться по умолчанию.


Вы можете кастомизировать скроллбар используя свойства scrollbar с префиксом -webkit в сочетании с обычными свойствами ширины scrollbar-width и цвета scrollbar-color.


Хочу сказать про плагин postcss-scrollbar - он создает свойства скроллбара с префиксом -webkit из стандартных свойств. Это дает возможность получить получить кросс-браузерные стили, например через такой код:

.scroll-container {
overflow: auto;
scrollbar-width: thin;
scrollbar-color: hsl(0 0% 50%);
/* postcss-scrollbar will add the -webkit version automatically! */
}


Темы и scrollbar


На многих сайтах при переключении на темный режим скроллбары "застревают" в белом

Полоса прокрутки (scrollbar) - один из самых неиспользуемых элементов в веб-разработке. Как с ним работать? Программирование, IT, Разработка, Web-программирование, Web, Веб-дизайн, CSS, Длиннопост

Есть отличные свойства - color-scheme, через которые это можно исправить. Но юзать их вам придется не только в ситуациях с полосой прокрутки. Можете почитать об этом более подробно здесь - https://web.dev/color-scheme/


html {
/* defer to OS preference */
color-scheme: dark light;
/* override, assuming the theme toggler sets a data-theme attribute */
&[data-theme=light] { color-scheme: light; }
&[data-theme=dark] { color-scheme: dark; }
}


Как предотвратить смещение верстки


При использовании overflow: auto может возникнуть проблема - смещение верстки. Решить её поможет overflow: overlay - скроллбар никогда не будет занимать место и/или overflow: scroll - полоса прокрутки всегда будет на месте


А с помощью scrollbar-gutter: stable вы можете "сказать" браузеру, чтобы он зарезервировал место для полос прокрутки.


.scroll-container {
overflow: scroll;
@supports (scrollbar-gutter: stable) {
overflow: auto;
scrollbar-gutter: stable;
}
}

На этом все, прокачивайте свои скроллбары, пишите: был ли у вас опыт в их кастомизации?

Показать полностью 2
[моё] Программирование IT Разработка Web-программирование Web Веб-дизайн CSS Длиннопост
30
0
MADCRAFTER
2 года назад

Вопрос к контент-менеджерам⁠⁠

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

[моё] Создание сайта Web Web-программирование Контент Товары Интернет-магазин Текст
7
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии