• Как работает память в Python

      Ни одна компьютерная программа не может работать без данных. А данные, чтобы программа имела к ним доступ, должны располагаться в оперативной памяти вашего компьютера. Но что такое оперативная память на самом деле? Когда произносишь это словосочетание, многие сразу представляют «железную» плашку, вставленную в материнскую плату, на которой написано что-то типа 16Gb DDR4 2666MHz. И они, разумеется, правы — это действительно физический блок оперативной памяти, в котором, в итоге, все данные и оказываются. Но прежде, чем стать доступной внутри вашей программы, на память (как и на всё остальное аппаратное обеспечение) накладывается куча абстракций.

      Читать далее
      • +28
      • 4,3k
      • 1
    • Андрей Терехов: от Фортрана до Питона



        Этой осенью Андрей Терехов — завкафедрой системного программирования Матмеха СПбГУ, профессор, доктор физмат наук — рассказывал нашим коллегам об истории популярных языков программирования и их проникновении в СССР. Вместе с Андреем Николаевичем мы подготовили на основе его лекции материал о том, как разные языки пересекали железный занавес, как их транслировали на разные архитектуры, как некоторые из них входили в моду. Общие тенденции и личные впечатления — для всех, кто хочет составить общее представление об истории вопроса.
        Читать дальше →
      • Смешные собеседования: истории ИТ-рекрутеров (часть 1)

          Недавно мы на Хабр Карьере устроили конкурс ко дню эйчара и попросили эйчаров и ИТ-рекрутеров рассказать нам о самых смешных собеседованиях, которые стали легендами в их компаниях. И в ответ получили столько историй, что хватило бы на небольшую книгу! Оказывается, работая эйчаром, можно познакомиться с семьёй и домашними любимцами кандидата, узнать о его кулинарных предпочтениях, стать объектом романтического внимания или свидетелем ДТП. 

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

          Читать далее
        • Развертывание офисных рабочих мест Zextras/Zimbra в Яндекс.Облако

            Введение

            Оптимизация офисной инфраструктуры и развертывание новых рабочих мест — серьезная проблема для компаний всех типов и размеров. Оптимальным вариантом для нового проекта является аренда ресурсов в облаке и приобретение лицензий, которые можно использовать как у провайдера, так и в собственном ЦОД. Одним из решений для такого сценария является Zextras Suite, который позволяет создать платформу для совместной работы и корпоративных коммуникаций предприятия как в облачной среде, так и на своей инфраструктуре.
            Читать дальше →
          • Виртуальная АТС. Часть 1: Простая установка Asterisk на Ubuntu 20.04

            • Tutorial


            Из-за перехода на удаленку в небольших компаниях часто возникают проблемы с телефонной связью. Обычно такие фирмы сидят в арендованных офисах, а услуги телефонии им оказывает бизнес-центр. О подключении сотрудников из дому придется позаботиться самостоятельно: самый недорогой способ это сделать — развернуть бесплатный сервер VoIP с открытым исходным кодом Asterisk на виртуальной машине. В статье для примера мы использовали Ubuntu 20.04, но этот рецепт подойдет и для других версий популярного дистрибутива — 18.04 и 18.10, а также (в теории, мы не проверяли) для актуальных версий Debian.
            Читать дальше →
          • Улучшение Python-кода: 12 советов для начинающих

            • Перевод
            В мои обязанности входит наём Python-разработчиков. Если у заинтересовавшего меня специалиста есть GitHub-аккаунт — я туда загляну. Все так делают. Может быть, вы этого и не знаете, но ваш домашний проект, не набравший ни одной GitHub-звезды, может помочь вам в получении работы.

            То же самое относится и к тестовым задачам, выдаваемым кандидатам на должность программиста. Как известно, мы, когда впервые видим человека, формируем первое впечатление о нём за 30 секунд. Это влияет на то, как мы будем, в дальнейшем, оценивать этого человека. Мне кажется несправедливым то, что люди, обладающие привлекательной внешностью, добиваются всего легче, чем все остальные. То же самое применимо и к коду. Некто смотрит на чей-то проект и что-то тут же бросается ему в глаза. Ошмётки старого кода в репозитории — это как крошки хлеба, застрявшие в бороде после завтрака. Они могут напрочь испортить первое впечатление. Может, бороды у вас и нет, но, думаю, вам и так всё ясно.



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

            В чём разница между новичком и более опытным разработчиком? Новичок не работал с устаревшими кодовыми базами. Поэтому он не видит ценности в том, чтобы вкладывать время в написание кода, который легко поддерживать. Часто новички работают в одиночку. Они, в результате, не особенно заботятся о читабельности кода.
            Читать дальше →
          • Удаление узлов из красно-чёрного дерева


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

              Использовано изображение портала cartoonbank.ru

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

              Теперь поговорим об удалении элементов.

              Возьмём, для примера, вот такое красно-чёрное дерево:


              Читать дальше →
              • +21
              • 5,2k
              • 7
            • Хакаем WhatsApp, часть 2 – разбор Whatsapp VOIP протокола

              • Перевод


              В это статье я хочу рассказать как я вскрыл несколько частей WhatsApp VoIP протокола с помощью джейлбрейкнутого iOS устройства и набора разных программ для анализа.

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

              Всем кому это тоже интересно, добро пожаловать под кат.
              Читать дальше →
              • +11
              • 6,8k
              • 1
            • Black [O]lives Matter: раса, криминал и огонь на поражение в США. Часть 2

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

                Поехали!
              • Подробный разбор стоимости жизни в Кремниевой Долине

                  Самое дорогое место в США


                  В прошлой статье мы подробно разобрали структуру средних зарплат программистов в Кремниевой Долине, а теперь было бы неплохо понять, сколько придётся потратить на оплату счетов, и сколько же денег останется в итоге, ведь область залива Сан-Франциско традиционно считается самым дорогим местом в США, уступая по стоимости жизни разве что центру Манхеттена (а по некоторым данным уже давно обогнала Нью-Йорк).

                  image

                  Если Вам проще воспринимать информацию на слух или в режиме видео-ролика, то специально для Вас готово 18-минутное видео с тайм-кодами в комментариях.
                  Читать дальше →
                • Простой P2P сервер на python


                  Одноранговая сеть или проще P2P сеть — это сеть в которой все пользователи равны и имеют равные права. Отличительная особенность таких сетей от обычных в том, что в ней нет единого сервера, к которому подключаются пользователи, вместо этого они подключаются друг к другу. Существуют гибридные варианты таких сетей, в котором присутствует сервер, выполняющий только координирующую работу.


                  Сегодня я хочу предложить простой вариант реализации P2P сервера для такой сети на языке python.

                  Читать дальше →
                • Сети для самых маленьких. Часть нулевая. Планирование

                  • Tutorial
                  Это первая статья из серии «Сети для самых маленьких». Мы с товарищем thegluck долго думали с чего начать: маршрутизация, VLAN'ы, настройка оборудования.
                  В итоге решили начать с вещи фундаментальной и, можно сказать, самой важной: планирование. Поскольку цикл рассчитан на совсем новичков, то и пройдём весь путь от начала до конца.

                  Предполагается, что вы, как минимум читали о эталонной модели OSI (то же на англ.), о стеке протоколов TCP/IP (англ.), знаете о типах существующих VLAN’ов (эту статью я настоятельно рекомендую к прочтению), о наиболее популярном сейчас port-based VLAN и о IP адресах (более подробно). Мы понимаем, что для новичков «OSI» и «TCP/IP» — это страшные слова. Но не переживайте, не для того, чтобы запугать вас, мы их используем. Это то, с чем вам придётся встречаться каждый день, поэтому в течение этого цикла мы постараемся раскрыть их смысл и отношение к реальности.

                  Схема сети

                  Начнём с постановки задачи. Есть некая фирма, занимающаяся, допустим, производством лифтов, идущих только вверх, и потому называется ООО «Лифт ми ап». Расположены они в старом здании на Арбате, и сгнившие провода, воткнутые в пожжёные и прожжёные коммутаторы времён 10Base-T не ожидают подключения новых серверов по гигабитным карточкам. Итак у них катастрофическая потребность в сетевой инфраструктуре и денег куры не клюют, что даёт вам возможность безграничного выбора. Это чудесный сон любого инженера. А вы вчера выдержали собеседование и в сложной борьбе по праву получили должность сетевого администратора. И теперь вы в ней первый и единственный в своём роде. Поздравляем! Что дальше?
                  Читать дальше →
                • Разблокируем интернет с помощью Mikrotik и VPN: подробный туториал

                  • Tutorial

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

                  В качестве VPN я выбрал SoftEther: он настолько же прост в настройке как и RRAS и такой же быстрый. На стороне VPN сервера включил Secure NAT, других настроек не проводилось.

                  В качестве альтернативы рассматривал RRAS, но Mikrotik не умеет с ним работать.  Соединение устанавливается, VPN работает, но поддерживать соединение без постоянных реконнектов и ошибок в логе Mikrotik не умеет.

                  Настройка производилась на примере RB3011UiAS-RM на прошивке версии 6.46.11.
                  Теперь по порядку, что и зачем.
                  Читать дальше →
                • ICQ New: инструкция по разведению ботов



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

                    Некоторое время назад в ICQ сильно обновилась платформа ботов. Она стала более дружелюбной, понятной и удобной. С помощью Python-библиотеки от разработчиков мы и будем создавать своего первого бота.
                    Читать дальше →
                  • Гайд: Свой собственный L2TP VPN

                    • Tutorial
                    Покопавшись по просторам интернета в поисках софта для построения своего собственного VPN, постоянно натываешься на кучу гайдов связанных с неудобным в настройке и использовании OpenVPN, требующим проприетарного клиента Wireguard, только один SoftEther из всего этого цирка отличается адекватной реализацией. Но мы расскажем, так сказать, о нативной для Windows реализации VPN – Routing And Remote Access (RRAS).

                    По странной причине, никто ни в одном гайде не написал про то, как это все развернуть и как включить на нем NAT,  поэтому мы сейчас все исправим и расскажем, как сделать свой собственный VPN на Windows Server.

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


                    Читать дальше →
                  • Установка OpenCV-Python на виртуальной среде для суперчайников

                    Здесь вы найдете пошаговый пример установки библиотеки OpenCV на Python.


                    • Установка Python
                    • Установка виртуальной среды
                    • Установка OpenCV + jupiterlab, numpy, matplotlib
                    • Тестирование

                    Все тестировала на планшете Microsoft Surface, Windows 10 Pro, c 64-битной операционной системой.


                    Предположим, что на вашем устройстве ничего не установлено заранее.


                    1. Сначала установим Python.
                      Скачиваем нужную версию и запускаем .exe файл. Не забываем установить галочку add path. Я установила Python 3.7.3 от 25 марта 2019 г., потому что новая на данный момент версия Python 3.7.4 от 8го июля 2019 г. работала некорректно, а именно в терминале некоторые команды зависали. Открываем командную строку.
                    2. Устанавливаем virtualenv.
                    Читать дальше →
                    • +6
                    • 12,2k
                    • 1
                  • Как GPU-вычисления буквально спасли меня на работе. Пример на Python

                    • Перевод
                    Привет, Хабр!

                    Сегодня мы затрагиваем актуальнейшую тему — Python для работы с GPU. Автор рассматривает пример, тривиальный в своей монструозности, и демонстрирует решение, сопровождая его обширными листингами. Приятного чтения!


                    Читать дальше →
                  • Как облегчить себе жизнь при использовании Git (а также подборка материалов для глубокого погружения)

                    • Перевод

                    Tree of Dragons II by surrealistguitarist

                    Для тех, кто каждый день использует Git, но чувствует себя неуверенно, команда Mail.ru Cloud Solutions перевела статью фронтенд-разработчика Шейна Хадсона. Здесь вы найдете несколько трюков и советов, которые могут немного облегчить работу с Git, а также подборку статей и мануалов более продвинутого уровня.
                    Читать дальше →
                  • Идеальное резюме разработчика

                      Привет! Недавно прошел бесплатный вебинар, где наши эксперты в прямом эфире препарировали резюме разработчика и наглядно разбирали, каким должно быть идеальное CV IT-инженера. Только факты: в этой статье изложены все ключевые моменты, которые стоит учитывать при создании резюме, а также масса любопытных советов, призванных помочь вам стать еще более желанными на рынке.


                      Читать дальше →
                    • Как самостоятельно изготовить электронную подпись

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


                      Мне тоже захотелось стать хоть немного «опытным» и разобраться в этой кухне изнутри. Для интереса я научился генерировать PGP-ключи, подписывать документы неквалифицированной подписью и проверять ее достоверность. Понимая, что никакой Америки не открыто, я, тем не менее, предлагаю этот краткий туториал для таких же, как и я, дилетантов в вопросах работы с ЭЦП. Я постарался особо не углубляться в теорию и в детали, а написать именно небольшое и краткое введение в вопрос. Тем, кто уже работает с ЭЦП, это вряд ли будет интересно, а вот новичкам, для первого знакомства — в самый раз.

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