Search
Write a publication
Pull to refresh
-1
0
Send message

Тридцать шесть градусов красоты

Reading time11 min
Views17K
Сеточные системы координат, в которых плоскость делится на одинаковые симметричные элементы — на квадраты, треугольники, шестиугольники, достаточно известны. Им соответствуют квадратная, треугольная, шестиугольная симметрия. Но еще существует симметрия десятиугольная.

В ней плоскость не делится на десятиугольники, вместо этого все линии расположены под углами кратными 36°. Координаты в этой системе можно записывать целыми числами, по два целых числа на горизонтальное и вертикальное направление.



Расскажу как это нарисовать.
Читать дальше →

11 кругов ада для тех, кому не хватает опыта на новой работе

Reading time12 min
Views125K
image
Eugene Smith, «Country Doctor» («Сельский доктор», 1948 г.)

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

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

И это всё правда. И я даже скажу категорично: обучение новым видам деятельности и вообще сам процесс постижения нового – это очевидное благо.

Но теперь представьте себе такую ситуацию: вы проходите онлайн-курсы, читаете какие-то учебники, ходите на воркшопы, и в какой-то момент оказываетесь на заветной позиции (сменили работу, получили повышение или открыли своё дело); вы смогли убедить других людей в своей годности, оказались среди профессионалов, и теперь вам нужно действовать… и тут руки начинают дрожать, глаза и мысли – метаться: вы не имеете ни малейшего представления, что именно делать – из-за нехватки опыта. Иными словами, вы – выскочка, и вы это поняли.
Читать дальше →

Команды для работы с JavaScript-консолью в браузерах и повышение производительности труда программиста

Reading time5 min
Views67K
Если вы занимаетесь веб-программированием, это значит, что вам не надо рассказывать о том, насколько в вашей работе важна отладка. Нередко для записи данных в логи, для их форматирования или вывода на экран используют внешние библиотеки, не учитывая при этом того факта, что в распоряжении программистов имеются JavaScript-команды для работы с консолями, которые встроены в браузеры. И обладают эти консоли гораздо более серьёзными возможностями, чем может показаться на первый взгляд.

image

Пожалуй, первое, что многим приходит в голову при слове «консоль» — это команда console.log(). Однако, она — лишь одна из многих подобных команд. Материал, перевод которого мы сегодня публикуем, посвящён особенностям работы с консолью JavaScript.
Читать дальше →

Вольный опус про найм, собеседования и трэш на рынке IT-кадров

Reading time11 min
Views96K

Нынче программист может не найти работу в двух случаях: он либо клинический дятел и неадекват, либо хочет в качестве оклада звездолёт. Во всех остальных случаях "в девках" он долго не задерживается. Однако вопрос "кто кого на***л?" интересует обе стороны "противостояния". Так же всем хочется знать цену вопроса и как бы расширить целевую аудиторию, побыстрее найти наилучшее предложение и отвадить всяких отмороженных. Ну и, конечно же, есть чисто-программерское "чтобы внутренний перфекционист был спокоен". Обо всём этом по чуть-чуть и поразмышляю в текстовой форме.

Клац

Курс о Deep Learning на пальцах

Reading time2 min
Views176K
Я все еще не до конца понял, как так получилось, но в прошлом году я слово за слово подписался прочитать курс по Deep Learning и вот, на удивление, прочитал. Обещал — выкладываю!

Курс не претендует на полноту, скорее это способ поиграться руками с основными областями, где deep learning устоялся как практический инструмент, и получить достаточную базу, чтобы свободно читать и понимать современные статьи.

Материалы курса были опробованы на студентах кафедры АФТИ Новосибирского Государственного Университета, поэтому есть шанс, что по ним действительно можно чему-то научиться.


Читать дальше →

Про рынок ИТ в России по-честному

Reading time16 min
Views159K
В последние несколько лет мои переживания по поводу российского рынка ИТ только усиливались. Все началось с кризиса рубля 2014 года (а может, и раньше), и с тех пор меня не покидает ощущение, что многие российские компании, особенно провинциальные, завязали себе глаза, заткнули ватой уши и все еще пытаются сделать вид, что ничего не происходит. Я много общался с разными компаниями, с HR, с разработчиками, и составил список неутешительных тезисов о том, что представляет собой как программистский рынок, так и культура разработки в целом, ведь это вещи взаимосвязанные. По моим субъективным оценкам, эти тезисы справедливы для ~60% российских компаний, хотя, казалось бы, те другие 40% компаний, которые мы знаем и любим, должны были заставить задуматься. Но я очень подозреваю, что это эти 60% просто надеются на русский “авось”, и подвергаются так называемой willful blindness, а иногда и намеренно мутят воду. Итак, по-честному, что же происходит?

Дисклеймер 1. Ни ссылок, ни имен, ни пруфов не будет. Как известно, в Интернете можно найти подтверждение или опровержение любому тезису, поэтому не вижу большого в том смысла, покуда это не диссертация, а мнение. Моя цель — предоставить другую точку зрения, основанную на личностном опыте веры на личном опыте.

Дисклеймер 2. В статье приводится собирательный образ. Вряд ли стоит ожидать, что есть стопроцентное совпадение хотя бы с одной компанией. Те или иные черты могут встречаться там или здесь; важно не то, что есть какие-то конкретные компании с этими проблемами. Важно то, что сами по себе проблемы существуют, и о них надо говорить.
Читать дальше →

Пишите код, который легко удалять и отлаживать

Reading time10 min
Views23K


Простой в отладке код — это код, который не дурачит вас. Труднее отлаживать код со скрытым поведением, с плохой обработкой ошибок, с неопределённостями, недостаточно или избыточно структурированный, или находящийся в процессе изменения. В достаточно больших проектах вы в конце концов сталкиваетесь с кодом, который не можете понять.

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

Умение писать код, который легко отлаживать, начинается с понимания, что вы ничего не помните о ранее написанном.
Читать дальше →

Перехват функций в ядре Linux с помощью ftrace

Reading time22 min
Views12K
ниндзя-пингвин,  En3lВ одном проекте, связанном с безопасностью Linux-систем, нам потребовалось перехватывать вызовы важных функций внутри ядра (вроде открытия файлов и запуска процессов) для обеспечения возможности мониторинга активности в системе и превентивного блокирования деятельности подозрительных процессов.

В процессе разработки нам удалось изобрести довольно неплохой подход, позволяющий удобно перехватить любую функцию в ядре по имени и выполнить свой код вокруг её вызовов. Перехватчик можно устанавливать из загружаемого GPL-модуля, без пересборки ядра. Подход поддерживает ядра версий 3.19+ для архитектуры x86_64.
Читать дальше →

Руководство по промисам для тех, кто хочет в них разобраться

Reading time9 min
Views36K
Лес чуден, тёмен — глянь в глубину.
Но прежде я все долги верну…
И много миль, пока я усну,
Так много миль, пока я усну...

Роберт Фрост

image

Промисы — это одно из самых замечательных новшеств ES6. JavaScript поддерживает асинхронное программирование посредством функций обратного вызова и с помощью других механизмов. Однако при использовании функций обратного вызова мы сталкиваемся с некоторыми проблемами. Среди них — «ад коллбэков» и «пирамида ужаса». Промисы — это паттерн, который значительно упрощает асинхронное программирование на JS. Асинхронный код, написанный с использованием промисов, выглядит как синхронный и лишён проблем, связанных с коллбэками.

Материал, перевод которого мы сегодня публикуем, посвящён промисам и их практическому использованию. Он рассчитан на начинающих разработчиков, которым хочется разобраться с промисами.
Читать дальше →

9 полезных приёмов для тех, кто программирует на JavaScript

Reading time4 min
Views38K
Автор материала, перевод которого мы сегодня публикуем, рассказывает о девяти полезных приёмах работы, которые могут пригодиться JavaScript-программисту. Он говорит о том, что эти приёмы позволяют экономить время, и о том, что ими пользуются профессионалы.


Читать дальше →

Задачи с собеседований (front-end)

Reading time18 min
Views341K
Так получилось, что за свою карьеру front-end разработчика, я побывала на многих собеседованиях. Тема прохождения интервью не теряет своей актуальности, а в комментариях, когда речь заходит о собеседованиях, начинают ломаться копья. Хочу тоже внести свой вклад и поделиться накопившейся коллекцией вопросов. Прошу.

image
Читать дальше →

Топ VSCode расширений, которые ускорят вашу разработку на JavaScript

Reading time5 min
Views160K
VSCode — это кроссплатформенный редактор с открытым исходным кодом, ставший любимым среди программистов, особенно среди веб-разработчиков. Он быстрый, расширяемый и имеет массу возможностей и настроек. Если вы до сих пор не работали с ним, то советую попробовать.

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


Читать дальше →

Что за чёрт, Python

Reading time24 min
Views103K


Недавно мы писали о забавных, хитрых и странных примерах на JavaScript. Теперь пришла очередь Python. У Python, высокоуровневого и интерпретируемого языка, много удобных свойств. Но иногда результат работы некоторых кусков кода на первый взгляд выглядит неочевидным.


Ниже — забавный проект, в котором собраны примеры неожиданного поведения в Python с обсуждением того, что происходит под капотом. Часть примеров не относятся к категории настоящих WTF?!, но зато они демонстрируют интересные особенности языка, которых вы можете захотеть избегать. Я думаю, это хороший способ изучить внутреннюю работу Python, и надеюсь, вам будет интересно.


Если вы уже опытный программист на Python, то многие примеры могут быть вам знакомы и даже вызовут ностальгию по тем случаям, когда вы ломали над ними голову :)

Читать дальше →

15 когнитивных искажений

Reading time9 min
Views185K
Люди сталкиваются с большим объёмом информации, часть из которой достоверна, а часть освещает интересующую область односторонне, а иногда и сознательно искажённо.

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



Начнём с того, что люди не всегда мыслят рационально. Это данность, которая обусловлена принципами работы нашего интеллекта, выработанными в процессе эволюции. Условно, представим разум, разделённый на две Системы. Устройство разума не так однозначно, но описанное упрощение позволит понять причины искажений. Первая система генерирует решения и гипотезы быстро «если коснёмся горячего предмета, то отдёрнем руку». Вторая, принимает решения путём логических рассуждений. Первая Система генерирует гипотезы, а вторая принимает их или отвергает. Такой способ мышления медленный и энергозатратный. Логическое рассуждение используется людьми реже и требует больших усилий. Это причина большинства когнитивных искажений.

Так, галочка «по умолчанию согласен» позволила увеличить количество согласных на донорство до 86% в Швеции, тогда как в Дании, где при получении прав нужно самостоятельно ставить согласие, т. е. принимать осознанный выбор, количество согласных на донорство 4%.
Читать дальше →

Спросите Итана: если вещество состоит из точечных частиц, почему у предметов есть размеры?

Reading time6 min
Views19K

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

Основная идея атомной теории состоит в том, что на наименьшем, фундаментальном уровне материю, из которой всё состоит, после какого-то предела уже нельзя делить далее. Эти итоговые строительные блоки материи были бы буквально неделимыми, ἄτομος. Спускаясь на всё меньшие масштабы, мы обнаруживаем, что молекулы состоят из атомов, а те состоят из протонов, нейтронов и электронов, а протоны и электроны можно дальше делить на кварки и глюоны. И хотя кажется, что кварки, глюоны, электроны и прочие являются точечными частицами, у состоящей из них материи есть реальные, конечные размеры. Почему так происходит? Именно это хочет узнать наш читатель:
Многие источники постулируют, что кварки – точечные частицы. Можно было бы подумать, что состоящие из них объекты – нейтроны – тоже точечные. Что не так в моём рассуждении? Или же они связываются между собой таким образом, что у получающегося нейтрона оказывается некий размер?

Давайте отправимся к мельчайшим масштабам и посмотрим, что там происходит.
Читать дальше →

Наш опыт создания редактора блок-схем для веб приложения

Reading time3 min
Views19K

К любой компании, которая занимается инструментами для разработчиков, рано или поздно приходит делегация клиентов. Со словами «программистов нет, задачи простые, нужен визуальный редактор». Автоматикой телефонных и видеозвонков мы занимаемся уже много лет, кому и зачем звонит робот хорошо себе представляем, VueJS любим, голова не болит. Почему бы не сделать? Под катом — закулисье и техническая сторона того, что маркетинг красиво назвал «Smartcalls».
Читать дальше →

Вопросы для собеседования бэкенд-разработчика

Reading time16 min
Views201K
Этот список появился как личная памятка по темам, которые я обсуждал с коллегами и друзьями и в которых хотел разобраться поглубже…

Я не большой любитель задавать технические вопросы на собеседованиях: по мне так лучше посидеть с кандидатом (или кандидаткой) за клавиатурой над каким-то реальным кодом, реальной проблемой — и целый день заниматься парным программированием, желательно поочерёдно с остальными членами команды. Но я считаю, что некоторые технические вопросы могут быть хорошей отправной точкой для начала увлекательного и приятного разговора и позволят глубже узнать друг друга.

В этом репозитории собран ряд вопросов, связанных с серверной частью, которые можно использовать при проверке потенциальных кандидатов. Ни в коем случае не рекомендуется задавать все вопросы одному кандидату: это займет несколько часов и вообще не имеет смысла, потому что они охватывают слишком широкий спектр тем. Никто не может знать всего. Выберите наиболее актуальный раздел и самые интересные вопросы, чтобы развернуть беседу.
Читать дальше →

8-битный компьютер с BASIC и VGA-выходом на Arduino

Reading time3 min
Views43K
C помощью Arduino можно собрать 8-битный ретро-компьютер с Basic (похожий на ZX Spectrum) с выводом цветного изображения на VGA-монитор.

Кроме того, этот проект можно использовать как простой способ вывода текстовых сообщений на монитор.



Сама по себе, идея использовать Arduino для создания компьютера с BASIC не нова, но насколько я знаю, все они не поддерживают вывод цветного изображения. В некоторых проектах использовались LCD-мониторы, а в других — библиотека TVout, которая выводит чёрно-белое изображение. Кроме того, многие из этих проектов требуют дополнительные модули и специальные платы расширения. Тут же нужно всего-то иметь два Arduino, несколько резисторов, плюс разъёмы для PS/2 клавиатуры и VGA-монитора.

Для проекта нужно две платы Arduino: один будет основным (или «мастером»), в нём работает интерпретатор Tiny Basic Plus (это порт Tiny Basic на языке Си, адаптированный для поддержки Arduino). Также этот Arduino управляет PS/2 клавиатурой. Вывод из первого Arduino через последовательный порт отправляется на второй Arduino, который с помощью библиотеки VGAx генерирует VGA-сигнал.

Программу на языке BASIC в собранный нами компьютер можно будет ввести с помощью PS/2 клавиатуры, а результат можно будет посмотреть на VGA-мониторе: разрешение получившегося изображения 24 столбца на 10 строк, размер символов — 5х6 пикселей, доступно 4 цвета.
После введения программы, её можно будет сохранить в энергонезависимой памяти самого Arduino, а также код программы предусматривает управление I/O пинами Arduino.

Если готовы, начнём!

Чеклист фронтенд-разработчика

Reading time12 min
Views71K
Глеб Летушов, редактор-фрилансер, адаптировал для блога Нетологии чеклист с Github от David Dias. Этот чеклист уже переводили, но так как на Хабре его нет, мы решили, что он пригодится. В чеклисте собран полный список элементов, которые необходимо проверить перед запуском и публикацией сайта.



Список основан на многолетнем опыте фронтенд-разработчиков, а дополнения собраны из общедоступных источников.
Читать дальше →

Недокументированные приемы CSS

Reading time8 min
Views56K
Всем привет! Зовут меня Дмитрий Григоров. Работаю фронтедером в Райффайзенбанке в команде RBO PRO. Я расскажу и покажу вам, как можно творчески применять данные возможности CSS. В статье мы рассмотрим следующие темы:

  • Фоны и рамки;
  • Фигуры;
  • Визуальные эффекты.

Information

Rating
6,744-th
Registered
Activity

Specialization

Backend Developer, Frontend Developer
Lead
Git
Linux
Python
React
TypeScript
JavaScript
Ansible
Rust