Pull to refresh
0
Дмитрий @oryn1kread⁠-⁠only

User

Send message

Дефицит в IT: платите больше

Reading time5 min
Views73K

Недавно мы опросили рекрутеров агентства GetIT о том, какие зарплаты хотят разработчики. Они выкатили нам большой список ожиданий, в зависимости от языков и направлений. Например, верхняя цифра в вилке ожидаемых зарплат для C#-разработчиков — 280 000. И она не самая большая: сеньоры в Android и Java-разработчке рассматривали ожидаемые зарплаты по 400 000. 

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

Читать далее
Total votes 28: ↑20 and ↓8+12
Comments214

Как оценить уровень владения английским языком

Reading time4 min
Views124K


На Хабре много статей о том, как самостоятельно изучать английский язык. Но вот вопрос, а как оценить свой уровень при самостоятельном изучении? Понятно, что есть IELTS и TOEFL, но эти тесты почти никто не сдает без дополнительной подготовки и эти тесты, как говорят, оценивают не сколько уровень владения языком, а скорее умение проходить эти самые тесты. Да и использовать их для контроля самообучения будет накладно.

В этой статье я собрал различные тесты, которые проходил сам. При этом я сверяю свою субъективную оценку владения языком с результатами тестов. А также сравниваю результаты между разными тестами.
Читать дальше →
Total votes 99: ↑95 and ↓4+91
Comments62

Зачем в JavaScript нужен строгий режим?

Reading time9 min
Views52K
Строгий режим (strict mode) — это важная часть современного JavaScript. Именно этот режим позволяет разработчикам пользоваться более ограниченным, чем стандартный, синтаксисом.

Семантика строгого режима отличается от традиционного нестрогого режима, который иногда называют «грязным» (sloppy mode). В таком режиме синтаксические правила языка не так строги, а когда происходят некоторые ошибки, система никак не оповещает о них пользователя. То есть — ошибки могут быть проигнорированы, а код, в котором они допущены, сможет выполняться дальше. Это способно привести к неожиданным результатам выполнения кода.



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

Строгий режим, кроме того, помогает в написании программ, в которых нет недочётов, мешающих JS-движкам оптимизировать код. Далее, в этом режиме запрещено использование элементов синтаксиса, которые могут получить особый смысл в будущих версиях языка.
Читать дальше →
Total votes 40: ↑38 and ↓2+36
Comments13

VPN в каждый дом или как приручить Дракона

Reading time4 min
Views76K

Ниже я расскажу о том, как заменить ваш VPN провайдер собственным сервером, развернутым на DigitalOcean с использованием WireGuard.


В чем главная проблема VPN провайдеров? Вы не знаете что они делают с вашими данными.
Очень мало VPN провайдеров прошли сторонний аудит и почти никто из них не открывает свой код.
Даже в случае открытого кода и пройденного аудита, для параноиков вопрос про то, что же происходит на стороне провайдера — остается открытым.


Решение достаточно простое — развернуть свою VPN ноду.


Я хочу сделать это просто

Читать дальше →
Total votes 34: ↑27 and ↓7+20
Comments130

Как CSS Grid меняет представление о структурировании контента

Reading time8 min
Views18K
Каждый, кто хотя бы немного занимался созданием веб-сайтов, знает, что теги <div> — являются важным строительным блоком для контроля над макетом.

HTML5 представил новые семантические элементы, чтобы помочь в этом. И хотя они являются фантастическим дополнением к языку, они немного похожи на украшение к нашему супу из <div> элементов.



С приходом CSS Grid, нам больше не нужно полагаться на элементы <div> для создания структуры страницы или даже более сложного компонента. Структура буквально определяется родительским элементом, а не тем, как расположено содержимое внутри него.

Это значит, что мы можем получить хороший простой макет, который структурирует содержимое, не обращая внимание на то, как оно изначально организовано с помощью элементов <div>.

Total votes 22: ↑21 and ↓1+20
Comments19

Два любопытных эксперимента над человеческим мозгом, о которых стоит знать

Reading time4 min
Views21K
Первый эксперимент, даже серия экспериментов, была проведена советскими психиатрами в середине прошлого века. Название и авторы этой научной монографии за давностью лет уже стерлись у меня из памяти, поэтому перескажу основные моменты просто от себя.



Это исследование о делегировании разных функций левому и правому полушариям головного мозга. И любопытное там начинается сразу – с методологии исследования. Ибо это не какой-то софт с полями зрения от американских и британских психологов. Это истинный хардкор.

Дело в том, что в середине XX века ситуация с правами человека во всем мире была, мягко говоря, так себе. ГУЛАГ, расовая сегрегация, Гитлер, в конце концов. Ну, а если человек был психиатрический пациент – это, по сути, была подопытная свинка. Им делали электрошок, отрезали куски мозга, и всё это, практически без контроля со стороны гражданского общества.

Одним из методов лечения было оперативное вмешательство в мозг, с целью полного разрушения нервных связей между левым и правым полушарием. Вроде, они припадки так лечили, и, вроде как, даже получалось, не суть. Суть в том, что на выходе человек получался с головным мозгом, в котором два полушария совершенно не общаются между собой. Ему эти связи попросту рассекали скальпелем в ходе операции. И он потом с этим жил всю оставшуюся жизнь.
Читать дальше →
Total votes 44: ↑26 and ↓18+8
Comments24

Ant-карусель на CSS и Javascript

Reading time6 min
Views47K
С появлением CSS3 появилась возможность совершать анимацию без использования JS-библиотек, таких, например, как jQuery. CSS3 свойство transition позволяет плавно изменять другие свойства элемента (width, height, margin, opacity и пр.), задав в качестве параметров время и закон трансформации. Предлагаю небольшую по размерам, но достаточно функциональную карусель на чистом Javascript. Небольшую, как муравей, что гораздо меньше чем сова. Но почти с такими же возможностями.

Ant-карусель позволяет:

  • показывать один или несколько элементов;
  • элементы могут быть показаны в виде конечной или бесконечной ленты (в цикле);
  • автопрокрутка элементов;
  • навигация осуществляется стрелками, индикаторными точками или перелистыванием (для тактильных экранов);
  • автоматически подстраивается под любую ширину экрана.

Помещаем нашу карусель в файл index.html (пример файла см. ниже):

HTML
<div class="ant-carousel">
  <div class="ant-carousel-hider">
    <ul class="ant-carousel-list">
      <li class="ant-carousel-element"><img src="images/img1.jpg" alt="1"> <p>Описание 1</p> </li>
      <li class="ant-carousel-element"><img src=" images /img2.jpg" alt="2"> <p>Описание2</p> </li>
	…
      <li class="ant-carousel-element"><img src=" images /imgN.jpg" alt="N"> <p>Описание N</p> </li>
    </ul>
  </div>
  <div class="ant-carousel-arrow-left"></div><div class="ant-carousel-arrow-right"></div>
  <div class="ant-carousel-dots"></div>
</div>


Здесь использованы элементы <ul><li>, но вместо них можно использовать <div > <div >, если вам это удобнее. Стрелки и индикаторные точки располагаются абсолютным позиционированием в соответствующих контейнерах. Для стрелок используются рисунки в виде треугольных скобок, которые, при желании, вы можете заменить своими рисунками или генерацией изображения псевдо-элементами :before и :after.
Total votes 16: ↑13 and ↓3+10
Comments17

Я написал эту статью, ни разу не посмотрев на клавиатуру

Reading time5 min
Views116K
В начале года я почувствовал, что упёрся в потолок как инженер. Вроде бы читаешь толстые книжки, решаешь на работе сложные задачи, на конференциях выступаешь. А всё не то. Поэтому я решил вернуться к корням и по очереди закрыть навыки, которые когда-то в детстве считал базовыми для программиста.

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


Читать дальше →
Total votes 138: ↑116 and ↓22+94
Comments298

Как придумывать содержательные имена для вашего кода

Reading time4 min
Views13K
Перед вами перевод статьи из блога Better Programming на сайте Medium. В ней программист Daan делится простыми правилами, следуя которым вы сможете давать хорошие имена функциям и переменным.



Будучи разработчиком, вы наверняка тратите много времени на создание переменных и придумывание их имен. Имена повсюду: они нужны для файлов, классов, методов и тех самых переменных.

Так как мы проводим столько времени присваивая имена, очень важно делать это качественно. В данной статье я расскажу вам о нескольких простых правилах, следуя которым вы сможете создавать хорошие имена. Ведь это целое искусство!
Читать дальше →
Total votes 35: ↑24 and ↓11+13
Comments19

IronPython на стороне зла: как мы раскрыли кибератаку на госслужбы европейской страны

Reading time10 min
Views12K
image

Наши специалисты из экспертного центра безопасности всегда держат руку на пульсе и следят за появлением новых интересных и опасных угроз. Именно так в начале апреля 2019 года была обнаружена целевая атака на государственные органы Хорватии. В данном отчете рассмотрена цепочка доставки вредоносного ПО на компьютер жертвы, представлены индикаторы компрометации, а также отмечено использование нового постэксплуатационного фреймворка, который, по нашим данным, ни разу ранее не применялся злоумышленниками.
Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments4

Как выжать максимум пользы из конференции

Reading time4 min
Views3.6K
Вопрос пользы и необходимости ходить на ИТ-конференции часто вызывает споры. Уже не один год я участвую в организации нескольких крупных событий и хочу поделиться рядом советов, как сделать так, чтобы получить максимум от ивента и не задумываться о потерянном дне.

Для начала, что такое конференция


Если вы думаете, что «доклады и докладчики», то это не так. Вернее, не только. Кроме программы, это еще и «тусовка» единомышленников. Единомышленников, активных и заинтересованных в происходящем. Где, если не в таком месте, говорить о профессии, обсуждать кейсы, проекты, нюансы работы. В таких живых беседах рождаются совершенно новые идеи. Благодаря смене обстановки, новым лицам, свежим мыслям, конференция — это источник вдохновения. А если она еще и проходит в другом городе — вообще мини-отпуск. И не стоит отметать тот факт, что участие сотрудника в мероприятии — хороший знак для работодателя, который говорит о мотивации и желании развиваться в профессии. И заслуги могут прямо влиять на отношение к работнику, статус, даже должность или зп.

Вот и получается, что мы идем на конференцию. А получаем:

  1. знания;
  2. тусовку;
  3. отпуск;
  4. вдохновение;
  5. признание заслуг со стороны работодателя.

И, чтобы получить максимальный профит, мы должны из каждого этого пункта выжать по полной.

Теперь по порядку о том, как это сделать.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments9

Асинхронное программирование (полный курс)

Reading time2 min
Views98K

Методы асинхронного программирования


Асинхронное программирование за последнее время стало не менее развитым направлением, чем классическое параллельное программирование, а в мире JavaScript, как в браузерах, так и в Node.js, понимание его приемов заняло одно из центральных мест в формировании мировоззрения разработчиков. Предлагаю вашему вниманию целостный и наиболее полный курс с объяснением всех широко распространенных методов асинхронного программирования, адаптеров между ними и вспомогательных проемов. Сейчас он состоит из 23 лекций, 3 докладов и 28 репозиториев с множеством примеров кода на github. Всего около 17 часов видео: ссылка на плейлист.

Читать дальше →
Total votes 48: ↑48 and ↓0+48
Comments17

Н.М.Д. (Не Моё Дело)

Reading time5 min
Views5.6K
В последние несколько лет передо мной жёстко встал вопрос расстановки приоритетов. Я видела, что многие друзья и коллеги тоже страдали от этого: как понять, какую проблему решать, а какую игнорировать? Где проходит черта?

Установка


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

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

И всё же, несмотря на эти сильные стороны, часто вы чувствуете разочарование. Вы видите вокруг так много проблем, а когда указываете на них, люди иногда злятся. Они плохо воспринимают ваши отзывы. Они не хотят вашей помощи в исправлении ситуации. Коллеги игнорируют замечания, менеджер не слушает, менеджер вашего менеджера сочувственно кивает, а затем продолжает ничего не делать.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments5

Чтение для сов

Reading time1 min
Views6.8K


Однажды, предо мной встала интересная задача — сделать подсветку для электронной книжки. Ну, вообще, это было побочным квестом к восстановлению кнопок на ней, но этот апгрейд меня серьёзно увлёк.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments11

Вы не сможете решить эту задачу на собеседовании

Reading time5 min
Views130K
Привет, Habr. Хочу поделиться с вами одной интересной задачей, которую многие из нас получали на собеседовании, но, вероятно, даже и не догадывались о том, что решаем ее неправильно.

Прежде всего — немного истории. Работая на должностях тимлида и техлида мне порой приходилось проводить собеседования, соответственно нужно подготовить несколько теоретических вопросов, ну и пару несложных задач, на решение которых не должно было бы уйти больше 2х-3х минут. Если с теорией все просто — мой любимый вопрос это: «чему равен typeof null?», по ответу сразу можно понять, кто сидит перед тобой, джун — просто правильно ответит, а претендент на сеньера, еще и объяснит почему. То с практикой — сложнее. Я долго не мог придумать нормальное задание, не изъезженное, типа fizz-buzz, а что-нибудь свое. Поэтому я на собеседованиях давал задания, которые сам проходил, устраиваясь на текущую работу. О первом из них и пойдет речь.
Читать дальше →
Total votes 164: ↑126 and ↓38+88
Comments419

Перенос сайта на статику: мотивация, стоимость, работа

Reading time6 min
Views22K

Недавно мы сделали то, о чём грезят все программисты и дизайнеры — переписали всё с нуля: полный редизайн нашего сайта и написание «движка» с чистого листа. Ниже поведаем о мотивации и процессе миграции с онлайн-CMS на статику.





Читать дальше →
Total votes 53: ↑49 and ↓4+45
Comments46

Декомпозиция и понижение энтропии для программиста на примере головоломки «12 монет, 3 взвешивания найти фальшивую»

Reading time3 min
Views87K
Дано: 12 монет, одна из них фальшивая, отличается только весом. Неизвестно легче или тяжелее. Даны рычажные весы, которые показывают, что груз с одной из сторон тяжелее. За 3 взвешивания необходимо найти фальшивую монетку.

Из опыта советую не спешить, решать письменно. Головоломка «12 монет, 3 взвешивания» несколько раз возникала в моей жизни. Первый раз ее задал мне мой товарищ-олимпиадник, решил я ее после олимпиады и пришлось пару часиков поломать голову. И через несколько лет она далось мне не сразу. Если желаете решить самим — делайте на листочке.

Ниже будет разбор и этапы решения. Этапы проведут по универсальной методике решения задач, которая применима как к программированию, так и к жизни. Благодаря подходу решение головоломки станет простым.
Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments46

Простой парсер арифметических операций

Reading time6 min
Views8.3K
Для учёбы необходимо было написать парсер арифметических операций, который мог бы рассчитывать не только простейшие операции, но и работать со скобками и функциями.

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

Первая проблема, с которой я столкнулся — скобки. Мало того, что они должны выполняться первыми, так внутри них также могут находиться скобки. И так далее.

$(2 + 2) * ((2 * 2) + ((2 * 2) * (2 * 2)))$

Точно такая же история с функциями — в параметрах функции могут находится другие функции и даже целые выражения.

$sqrt(2 * 2; log(4; 2))$
Читать дальше →
Total votes 25: ↑15 and ↓10+5
Comments22

Тайны сознания и математика

Reading time7 min
Views11K
В Древнем Египте математики не пользовались доказательствами. Все их утверждения были лишь эмпирически обоснованы. Но тем не менее, пирамиды стояли, а самолеты летали. И, наверное, никто бы и не требовал строгих доказательств, если бы не желание что-то опровергнуть. Вместе с греками математика обрела новую жизнь, в которой появились такие задачи, как квадратура круга, иррациональность корня из двух и задача о трисекции угла. С этого момента потребовались аксиомы, законы логики и теоремы. Современную же математику интересует еще и то, что возможно доказать, а что — нет. Продвижением стали теоремы Геделя о неполноте, формализация логики и Теория доказательств. Я предлагаю теорию и одну аксиому, которая поможет ответить на часть оставшихся вопросов и обозначить границы нашего сознания. В частности, это вопросы полноты, проблема равенства и аксиоматизация нашего воображения.

Читать дальше →
Total votes 36: ↑27 and ↓9+18
Comments17
1

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Specialist
Junior
From 65,000 ₽
Node.js
JavaScript
Vue.js
SCSS
CSS
HTML
Adaptive layout
BEM
Web development