Search
Write a publication
Pull to refresh
4
0
Send message

Список ноотропов, покупка которых не окажется пустой тратой денег

Reading time5 min
Views311K

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

Читать далее

Как я искал работу в США во время пандемии, подался на 200 вакансий и получил оффер на $380K

Reading time41 min
Views42K

Украинский профильный ресурс DOU.UA опубликовал статью о нелегком пути релокации специалиста в США во время пандемии, где он также отвечает на дополнительные вопросы и комментарии.

Адам Леос — Senior Software Engineer в Roku. Пару лет назад он принял решение о релокации и в итоге выбрал своей целью США. Всего за три месяца Адам с нуля собрал все необходимое для подачи на визу О1, но потом в историю вмешалась пандемия. О том, с какими трудностями он столкнулся из-за карантина, как искать работу на американском IT-рынке, как получить большое количество офферов и выторговать самую выгодную компенсацию, разработчик рассказал в интервью DOU.UA

Читать далее

Multithreading

Reading time77 min
Views229K

Разработчики часто сталкиваются с необходимостью разработки многопоточных приложений, поэтому вопросы многопоточности требуют детального изучения. Давайте познакомимся с основными терминами, используемыми в источниках информации о многопоточности, рассмотрим задачи и проблемы многопоточности и изучим средства стандартной библиотеки C++, которые помогут создавать многопоточные приложения.

Читать далее

Приёмы неблокирующего программирования: полные барьеры памяти

Reading time9 min
Views9.8K

В первых двух статьях цикла мы рассмотрели четыре способа упорядочить доступ к памяти: load-acquire и store-release операции в первой части, барьеры чтения и записи в память — во второй. Теперь пришла очередь познакомиться с полными барьерами памяти, их влиянием на производительность, и примерами использования полных барьеров в ядре Linux.


Рассмотренные ранее примитивы ограничивают возможный порядок исполнения операций с памятью четырьмя различными способами:


  • Load-acquire операции выполняются перед последующими чтениями и записями.
  • Store-release операции выполняются после предыдущих чтений и записей.
  • Барьеры чтения разделяют предыдущие и последующие чтения из памяти.
  • Барьеры записи разделяют предыдущие и последующие записи в память.

Внимательный читатель заметил, что одна из возможных комбинаций в этом списке отсутствует:

Чтение выполняется... Запись выполняется...
… после чтения smp_load_acquire(), smp_rmb() smp_load_acquire(), smp_store_release()
… после записи ??? smp_store_release(), smp_wmb()
Оказывается, обеспечить глобальный порядок записей и последующих чтений из памяти гораздо сложнее. Процессоры вынуждены прилагать отдельные усилия для этого. Сохранение такого порядка стоит недёшево и требует явных инструкций. Чтобы понять причину этих особенностей, нам придётся спуститься на уровнь ниже и присмотреться к тому, как процессоры работают с памятью.
Читать дальше →

Почему вы должны попробовать Rust

Reading time16 min
Views46K

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

Как убедиться, что в моем приложении нет проблем и уязвимостей, связанных с неправильной работой с памятью? Как быть уверенным в том, что любой доступ к общим объектам правильно защищен? Как свести к минимуму любую работу, не связанную напрямую с написанием кода?

Цель данной статьи не рассказать о доселе невиданных возможностях Rust (сразу говорю, что тут ничего нового "Растоманы" не найдут), на Хабре вы итак найдете множество интересных статей о внутренностях языка и интересных случаев использования. Моя цель рассказать о том, что он предлагает в качестве решения обозначенных выше проблем, как это будет выглядеть со стороны программиста, и почему это важно.

Читать далее

Шпаргалка полезных команд GDB

Reading time3 min
Views65K

Для кого она нужна?


1) начинающих реверсеров, знающих особенности обратного проектирования, и желающих изучить такой отладчик как GDB


2) как подсказка тем кто постоянно работает с IDA, Ghidra или любым другим мощным и надежным инструментом, но в силу тех или иных обстоятельств решить задачу проще и быстрее с помощью GDB, и не очень хочется залезать в официальную документацию и снова все вспоминать

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

40 ситуаций, о которых вас спросят на собеседовании

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

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

11 фраз, которые нельзя произносить на собеседовании // Инфографика

Reading time2 min
Views28K
Да, мы знаем, что на собеседовании все самые важные слова вылетают из головы и получается что-то вроде «да я… это… работал в компании, у меня есть навыки… коммуникации». В общем, тренируемся и разбираемся в том, почему некоторые фразы лучше оставить при себе.


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

Отладка Makefile /часть 1/

Reading time11 min
Views21K

Отладка makefile - это что-то из черной магии. К несчастью, не существует такой вещи как makefile отладчик, чтобы изучить ход выполнения конкретного правила или как разворачивается переменная. Большую часть отладки можно выполнить с помощью обычных print’ов и проверкой makefile. Конечно, GNU make немного помогает своими встроенными методами и опциями командной строки. Один из лучших методов отладки makefile это добавить отладочные перехваты (hooks) и использовать техники безопасного программирования, на которые можно будет опереться, когда дела пойдут совсем плохо. Далее представлено несколько основных техник отладки и практик безопасного программирования, которые будут, на мой взгляд, наиболее полезными.

Дай две!

Эффекты травления

Reading time7 min
Views8.3K

До недавнего времени я думал, что люди, которые верят в прямоугольные печатные проводники, примерно столь же нормальны, как те, кто верит в квадратные волны и плоскую землю. Однако, когда меня еще раз спросили об этом, я понял, что всё не так очевидно, как мне казалось прежде, – причем не только для новичков, но и для всех остальных. За последние годы я изучил множество книг по проектированию печатных плат и целостности сигналов, но, читая большую часть отраслевой литературы, вы не узнаете, что проводники имеют не прямоугольную, а какую-то другую форму. Интересно, правда?
Читать дальше →

std::atomic. Модель памяти C++ в примерах

Reading time11 min
Views131K

Для написания эффективных и корректных многопоточных приложений очень важно знать какие существуют механизмы синхронизации памяти между потоками исполнения, какие гарантии предоставляют элементы многопоточного программирования, такие как мьютекс, join потока и другие. Особенно это касается модели памяти C++, которая была создана сложной таковой, чтобы обеспечивать оптимальный многопоточный код под множество архитектур процессоров. Кстати, язык программирования Rust, будучи построенным на LLVM, использует модель памяти такую же, как в C++. Поэтому материал в этой статье будет полезен программистам на обоих языках. Но все примеры будут на языке C++. Я буду рассказывать про std::atomic, std::memory_order и на каких трех слонах стоят атомики.

Читать далее

Lock-free структуры данных. Основы: Модель памяти

Reading time18 min
Views103K

В предыдущей статье мы заглянули внутрь процессора, пусть и гипотетического. Мы выяснили, что для корректного выполнения параллельного кода процессору необходимо подсказывать, до каких пределов ему разрешено проводить свои внутренние оптимизации чтения/записи. Эти подсказки – барьеры памяти. Барьеры памяти позволяют в той или иной мере упорядочить обращения к памяти (точнее, кэшу, — процессор взаимодействует с внешним миром только через кэш). “Тяжесть” такого упорядочения может быть разной, — каждая архитектура может предоставлять целый набор барьеров “на выбор”. Используя те или иные барьеры памяти, мы можем построить разные модели памяти — набор гарантий, которые будут выполняться для наших программ.

В этой статье мы рассмотрим модель памяти C++11.
Читать дальше →

[Личный опыт] Фронтенд-инженер из лондонского Facebook: как попасть в FAANG?

Reading time17 min
Views19K
Как готовиться к собеседованиям, чтобы устроиться в компанию уровня FAANG? Вместе с Олегом Громовым, фронтенд-инженером из лондонского офиса Facebook (ex. Yandex, Toptal etc.), составили план подготовки по мотивам прошедшего вебинара — опираясь на его личный опыт.

Обсуждаем:

  • плюсы-минусы работы в крупных компаниях,
  • оформление резюме,
  • как проходят скрининг, алгоритмическая и архитектурная секции,
  • какова роль английского и soft skills — на поведенческой секции и в целом на собеседовании,
  • где тренироваться необходимым навыкам для каждого этапа: собрали полезные ссылки.


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

Почему без тимлида не обойтись: нюансы формирования комплексной команды разработчиков и работа на удаленке

Reading time7 min
Views8.5K


От тимлида зависит многое — эффективность команды, достижение поставленных целей, профессиональный рост сотрудников. И чтобы разобраться в нюансах работы тимлида, мы поговорили с Иваном Михеевым, Deputy CTO в компании AGIMA. У Ивана многолетний опыт управления большими командами, включая отдел разработки с общей выработкой от 10 000 до 15 000 часов в месяц: PHP, Python, Mobile, Front-End, DevOps, QA.
Читать дальше →

Коты в коробочках, или Компактные структуры данных

Reading time12 min
Views29K

image


Как быть, если дерево поиска разрослось на всю оперативку и вот-вот подопрет корнями соседние стойки в серверной? Что делать с инвертированным индексом, жадным до ресурсов? Завязывать ли с разработкой под Android, если пользователю прилетает «Память телефона заполнена», а приложение едва на половине загрузки важного контейнера?


В целом, можно ли сжать структуру данных, чтобы она занимала заметно меньше места, но не теряла присущих ей достоинств? Чтобы доступ к хэш-таблице оставался быстрым, а сбалансированное дерево сохраняло свои свойства. Да, можно! Для этого и появилось направление информатики «Succinct data structures», исследующее компактное представление структур данных. Оно развивается с конца 80-х годов и прямо сейчас переживает расцвет в лучах славы big data и highload.


А тем временем на Хабре найдется ли герой, способный пересковоговорить три раза подряд
[səkˈsɪŋkt]?

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

Ещё один манифест

Reading time9 min
Views9.8K
Эджайл то, эджайл сё. Про эджайл сейчас не говорит только ленивый. Да и ленивый говорит. Все говорят. Из каждого утюга, даже выключенного из сети, топят за эджайл. Такое ощущение, что просто эпидемия какая-то разразилась. И не подумайте, что я только про ИТ. Коучи учат неофитов проводить стендапы с ретроспективами и жить по спринтам в любых бизнес-сферах: от булочных до парикмахерских. А некоторые менеджеры, наслушавшись коучей, так увлекаются, что забывают о природе данного явления, заставляя внедрять гибкие методологии негибкими методами: «Так, с завтрашнего дня мы все становимся гибкими. Что за «хихи»? Гибкими я сказал, а то всех нагну!». Так в чем же природа эджайл, на чем он зиждется?
Читать дальше →

Японский робо-отель «уволил» половину своих роботов из-за создаваемых ими проблем

Reading time3 min
Views34K

Источник: futurism.com

Летом 2015 года в Японии была открыта гостиница, обслуживанием постояльцев в которой занимались роботы. Общее количество роботизированных систем в отеле исчислялось сотнями. Так, например, в лобби посетителей встречали сразу три электронных сотрудника: динозавр, андроид и гуманоидный робот.

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

Изба-читальня или подборка проф.литературы

Reading time14 min
Views9.7K


Достаточно давно копила, выбирая из различных интервью, советов, статей и пр., списки книг из серии «Что бы такого еще почитать» на тему интерфейсов, психологии поведения и бизнеса.

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

Наведение порядка заняло не один мой человеко час, и с мыслью «Чего добру пропадать» решила поделиться им с читателями Хабра. Надеюсь, он принесет пользу и сэкономит время на поиски литературы.

Список разбивала на четыре категории:

  1. Книги про бизнес;
  2. Книги по проектированию — не вносила в список классику, а дополняла чем-то новым (на мой взгляд);
  3. Книги о психологии поведения;
  4. Книги про тексты.

Для некоторых книг нашла саммари, ссылки прилагаются.

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

Очень хочется этой статьей нанести максимальную пользу не только себе, но и коллегам.
Читать дальше →

Как работают библиотеки виртуального окружения

Reading time5 min
Views12K
Вы когда-нибудь задумывались о том, как работают библиотеки виртуального окружения в Python? В этой статье я предлагаю ознакомится с главной концепцией, которую используют все библиотеки для окружений, такие как virtualenv, virtualenvwrapper, conda, pipenv.

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

Когда Python запускает интерпретатор, он начинает искать директорию с модулями (site-packages). Поиск начинается с родительской директории относительно физического расположения исполняемого файла интерпретатора (python.exe). Если папка с модулями не найдена, то Python переходит на уровень выше, и делает это до тех пор, пока не будет достигнута корневая директория. Для того, чтобы понять, что это директория с модулями, Python ищет модуль os, который должен лежать в файле os.py и является обязательным для работы питона.
Читать дальше →

Конференция DEFCON 22. «Вооружение Ваших домашних питомцев. Боевая Киска и cобака для отказа сервиса». Джен Бренсфилд

Reading time15 min
Views5.7K
Добрый день, DEFCON! Я рад присутствовать здесь. Меня зовут Джен Бренсфильд, я главный инженер по безопасности компании Tenacity и очень люблю свою работу, поэтому, когда наступает уик-энд, я просто не могу дождаться утра понедельника! Сегодня я расскажу Вам о том, как вооружить свою кошку, это весёлая история, со своими победами, поражениями и целой кучей слайдов.



Итак, зачем мне понадобилось вооружать своего питомца?

Известно, что 15% мирового Интернет-трафика посвящено кошкам. Кроме того, я часто выступаю с презентациями по поводу систем безопасности перед техническими и не техническими специалистами. Я заметил, что технические подробности утомляют людей, они начинают скучать, закатывать глаза и думать о посторонних вещах. Чтобы привлечь их внимание, я стал разбавлять свои презентации слайдами с картинками кошек и рассказывать о них разные смешные истории. Например, я начинаю презентацию такой картинкой:



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

Я не был бы собой, если бы мне в голову не пришла мысль: «Стоит добавить в этот ошейник маленькую WiFi-ищейку, и мы получим настоящую Боевую Киску»!

Information

Rating
10,345-th
Registered
Activity