Рубрика «fun»

Видимо я сделала какое-то очень плохое зло, поэтому живу во время перемен. Справиться с эмоциями и повысить свою конкурентоспособность на рынке Data Enigneer’ов мне помогает сайт Hackerrank. На пути к решению вообще всех задач по SQL с этого сайта мне попалась задачка на нетривиальные запросы.

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

Понятно, что можно было сделать как-то так:

SELECT '*' 
UNION ALL
SELECT '* *' 
UNION ALL
...

Но это дико скучно и некрасиво.

Давайте разберемся, как рисовать с помощью SQL, и при этом ощущать себя настоящим творцом!Читать полностью »

Привет! Представляю вашему вниманию перевод статьи «Dark code-style academy: line breaks, spacing, and indentation» автора zhikin2207

image

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

Переводы строк, пробелы и отступы могут убивать.

Как люди читают книги? Сверху вниз, слева направо (по крайней мере — большинство). Это же происходит, когда разработчики читают код. Одна строка кода должна содержать одну мысль, следовательно, каждая строка должна содержать только одну команду. Если вы хотите смутить других разработчиков, вам лучше нарушить эти принципы. И давайте я покажу вам как это сделать.
Читать полностью »

Безумный безусловный обмен

image

Недавно попалась мне задача иммутабельным способом поменять местами два элемента в массиве по их индексам. Задача довольно простая. Поэтому решив её разумным способом:

const swap = (arr, ind1, ind2) =>
  arr.map((e, i) => {
    if (i === ind1) return arr[ind2]
    if (i === ind2) return arr[ind1]
    return e
  })

Захотелось решить её безумным способом. Я подумал, что интересно было бы решить эту задачу:

  • Без операторов сравнения
  • Без циклов и if'ов и тернарных операторов
  • Без использования дополнительных структур данных
  • Без приведения типов

Читать полностью »

FizzBuzz это известная задачка, шутливо или не очень задаваемая на собеседованиях, существует множество вариантов реализации даже для такой простой игры. Существует даже шедевры вроде FizzBuzzEnterpriseEdition.

Предлагаю вашему вниманию еще один вариант, не совсем пятничный, а скорее субботний: FizzBuzz на Scala, functional style.

Читать полностью »

В процессе подготовки к курсу «Основы компиляторов» для студентов 4-го курса я изучал различные эзотерические языки программирования. Вот хорошая статья на эту тему. В статье самым интересным мне показался язык Befunge (Крис Пресс, 1993 год), особо отмечу три его особенности:

  1. Поле программы представляет собой двумерный тор, т.е. физически это прямоугольная матрица команд-символов, замкнутая по верхней(нижней) границе и по левому(правому) столбцу. По полю передвигается указатель команд (каждая команда – это некий символ с координатами x,y), выполняет команду и двигается дальше. Движение может быть во все 4 стороны (по умолчанию направо с точки 0,0), а при выходе за пределы «поля» указатель появляется с противоположной стороны.
  2. В языке есть две команды (p, g), которые меняют само поле, т.е. программа «самопереписывается» в процессе выполнения. Код программы на старте может не быть равен коду на финише. Стартовала программе «123pgpg##@», а закончила работать программа «ABC@1@2@3.14» (не правильный пример).
  3. Крис Пресси отмечал, что хотел создать язык, максимально сложный для компиляции. Де-факто это так, создать именно компилятор, который делает из программы exe-файлы адски сложно, я нашел информацию, что на Си кто-то смог это сделать… Лучше всего создавать транслятор из языка в код на Python, который я все равно называю компилятором для простоты.

Читать полностью »

В данном посте вы прочитаете немного о моих странных изыскания во время вынужденного отпуска по болезни. Речь пойдёт сразу о нескольких вещах, которые не являются «best practice», но так же тоже можно! Итак, здесь будет туториал о том, как установить Archlinux(мой любимый дистр) так, чтобы:

  • без отдельного /boot (просто в /root)
  • / на lvm
  • lvm внутри luks-контейнера
  • с UEFI
  • в виртуальной машине.
  • с secure boot(«сложна», в виртуалке вряд ли получится)

Примечательно, что зашифровано будет всё, кроме EFI system partition с единственным файлом grubx64.efi — EFI-приложением для запуска grub.

Если заинтересовались, — добро пожаловать под кат!
Читать полностью »

Несколько дней назад Хабру исполнилось 12 лет. В честь этого нам в FunCorp захотелось сделать что-то особенное. Мы немного подумали и решили подарить Хабру — Habr.

Как мы разрисовали Habr - 1

Читать полностью »

Это история личного опыта одного UX-дизайнера, который полюбил леттеринг ещё нечётко зная, что это такое.

Я расскажу о том, что такое леттеринг в современном дизайне на примере своей работы над арт-объектом; о трудностях, с которыми я столкнулась и как их решила; о грифельной краске и меловых маркерах. А ещё почему это «хорошо для бизнеса». И будет немного мотивации для дизайнеров, которые хотели бы встать со стула, но не знают как.

Меловой леттеринг для «чайников» на примере работы над арт-объектом - 1
Читать полностью »

Фанфик — это фанатское творчество, just for fun. Их пишется невероятное количество, тут список самых лучших по моему вкусу.

Читать полностью »

Байки из Lab’а - 1

Этим летом нашей компании исполняется 20 лет. Сначала мы хотели написать самопоздравительный текст в стиле «И последним шел Тамерлан. И поднимал он тяжелые камни. И говорил с ними, вспоминая их имена», но потом решили, что еще очень молоды для мемуаров. И вместо этого хотим просто рассказать несколько баек. Причем не обязательно напрямую связанных с кибербезопасностью, короче говоря, все, что как-то выбивается из рутины.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js