• Не было печали, апдейтов накачали

      У меня дома используется Debian Sid. Большей частью он весьма и весьма хорош, но местами он слишком Bleeding слишком Edge. Например, когда отгружает пакеты, ломающие работоспособность системы. Вчера приехал wpasupplicant, который сломал мне wifi. Я его откатил, но в процессе я подумал, что многие пользователи не умеют этого делать. Рассказ "как откатить плохой apt-get install/upgrade" — в этом посте.


      Ситуация


      Мы сделали apt-get install что-то, или apt-get upgrade, или даже apt-get dist-upgrade, и после перезагрузки (или даже сразу же) обнаружили, что так нельзя. Сервис не стартует, убрана важная нам фича, кто-то падает и т.д. Мы хотим откатиться. Но вот, незадача — куда именно мы не знаем, потому что какая была версия до обновления мы не знаем.

      Читать дальше →
    • Пишем простой модуль ядра Linux

      • Translation

      Захват Золотого Кольца-0


      Linux предоставляет мощный и обширный API для приложений, но иногда его недостаточно. Для взаимодействия с оборудованием или осуществления операций с доступом к привилегированной информации в системе нужен драйвер ядра.

      Модуль ядра Linux — это скомпилированный двоичный код, который вставляется непосредственно в ядро Linux, работая в кольце 0, внутреннем и наименее защищённом кольце выполнения команд в процессоре x86–64. Здесь код исполняется совершенно без всяких проверок, но зато на невероятной скорости и с доступом к любым ресурсам системы.

      Не для простых смертных


      Написание модуля ядра Linux — занятие не для слабонервных. Изменяя ядро, вы рискуете потерять данные. В коде ядра нет стандартной защиты, как в обычных приложениях Linux. Если сделать ошибку, то повесите всю систему.
      Читать дальше →
      • +24
      • 25.5k
      • 7
    • Инопланетяне, постапокалипсис, Иисус и космические контрабандисты: самые интересные фантастические книги 2017


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

        Читать дальше →
      • Дюжина приемов в Linux, которые действительно сэкономят уйму времени



          Эта статья также есть на английском.

          Однажды вечером, перечитывая Джеффри Фридла, я осознал, что даже несмотря на всем доступную документацию, существует множество приемов заточенных под себя. Все люди слишком разные. И приемы, которые очевидны для одних, могут быть неочевидны для других и выглядеть какой-то магией для третьих. Кстати, несколько подобных моментов я уже описывал здесь.

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

          Под катом — дюжина приемов в командной строке — из личного опыта.
          Читать дальше →
        • Root хуже Михалкова

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


            Вы знаете команду df? Она показывает все подключенные сейчас диски и статистику по ним: сколько место занято, сколько свободно. Например:


            $ df -m
            Filesystem     1M-blocks   Used Available Use% Mounted on
            udev                 224      1       224   1% /dev
            tmpfs                 48      1        47   2% /run
            /dev/dm-0           9204   7421      1294  86% /

            Вы когда-нибудь замечали, что для локальных дисков сумма Used и Available чаще всего меньше общего размера диска? Ненамного, но меньше.

            Читать дальше →
          • Изучаем блокчейн на практике

            • Translation
            • Tutorial
            Вы читаете эту статью потому, что, как и я, с горячим интересом наблюдаете за возрастающей популярностью криптовалюты. И вам хочется понять, как работает блокчейн — технология, которая лежит в ее основе.

            Но разобраться в блокчейне не так-то просто, по крайней мере, по моему опыту. Я корпел над заумными видео, продирался через туториалы и с нарастающей досадой отмечал недостаток иллюстрирующих примеров.

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


            Читать дальше →
            • +22
            • 49.3k
            • 9
          • OPENTadpole: первое кибернетическое животное

              image

              Здравствуйте, уважаемое сообщество GeekTimes! После своего длительного молчания, я хочу представить свой новый проект. OPENTadpole – приложение, состоящее из полноценного редактора нервной системы головастика лягушки и физической эмуляции тела головастика и внешней среды. Возможность с нуля создать, настроить и отредактировать коннектом животного и немедленно увидеть, как Ваше творение отражается в его поведении.


              Читать дальше →
            • Начинаем изучать STM32 или Управляем светом по-умному

                Небольшое вступление


                Однажды, заехав в очередную съемную квартиру, я столкнулся с определенным неудобством, которое достаточно сильно напрягало: выключатель света в основной комнате оказался за шкафом-стенкой, который был прикручен к стене, и его перестановка была невозможна т.к. на это требовалось значительно много времени и сил. Решить данную проблему хотелось очень сильно и в голову пришла одна мысль: сделать дистанционный пульт для управления освещением!

                Именно с идеи создания собственного пультика для управления светом в комнате и началось моё увлечение электроникой, микроконтроллерами и различными радиоустройствами.
                Читать дальше →
              • Реализация и альтернатива основных JQuery функций на чистом JavaScript

                Когда я начинал учить веб-программирование, встретил лучший из всех, по моему мнению, фреймворков — JQuery. В то далёкое время нельзя было представить нормальное программирование без него, так как он мог делать одной строкой то, что делал JavaScript за 95.

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

                Так вот, в этой статье я хочу рассказать о реализациях некоторых функций из JQuery на чистом JavaScript.
                Читать дальше →
              • Майнинг и как он работает: матчасть

                • Tutorial

                Привет, %username%!
                Я расскажу и покажу как работает основа генерации денег в криптовалютах — майнинг. Как создается первый блок, новые блоки и как появляются деньги из ниоткуда.
                Чтобы было проще понять, мы напишем свой импровизированный майнер для импровизированной криптовалюты HabraCoin.
                Читать дальше →
              • Пишем «Hello, World» Telegram бота на Си

                Привет всем, не знаю зачем это надо, но может кому пригодится…

                Дисклеймер: Я ни в коем случае не являюсь профессиональным Си программистом.

                Что нам понадобится:

                1. Любой компьютер на Linux, Ubuntu, Centos, MacOS… с доступом к порту 443 или 8443 из интернета.
                2. Любой Си компилятор
                3. Бибилиотеки openssl, libssl-dev («apt-get install openssl libssl-dev» в терминале, для Ubuntu)
                Читать дальше →
              • Введение в Monero

                • Translation

                Monero — краткая предыстория


                Monero — это криптовалюта, запущенная 18 апреля 2014 года как форк Bytecoin. Bytecoin (не путать с Bitcoin, прим. пер.) был первой цифровой валютой, реализующей протокол CryptoNote (подробнее об этом ниже по тексту). Как только ByteCoin всплыл на форуме Bitcointalk, люди открыли для себя множество подозрительных свойств, вместе с тем фактом, что более 80% всей эмиссии были уже добыты. Таким образом, сообщество приняло решение его перевыпустить, начав с чистого листа, с нулевым премайном. Так появился Monero.

                Читать дальше →
              • 8 платежных сервисов для фрилансеров

                image

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


                  Хорошо зафиксированный пациент в анестезии не нуждается

                  По многочисленным просьбам трудящихся сегодня мы будем заниматься очень важными вопросами:


                  • Как правильно мазать зубы пальцем?
                  • Хорошо ли растворяются пломбы в кислоте?
                  • Почему больно, когда сверлят зубы дрелью без анестезии?
                  • Зачем мазать зубы зеленкой?
                  • Лечение кариеса на дому
                  • Глубокое микрофторирование эмали

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

                  Читать дальше →
                • Основы TCP/IP для будущих дилетантов

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

                    Читать дальше →
                  • Создание умного дома и разработка своего протокола

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

                      Я тут решил забить на всю работу и заняться чем-то для души. Снова взялся за паяльник. Решил автоматизировать дома всё и вся. На старой-то квартире у меня был умный дом или что-то типа того — мог свет в комнате включать через Интернет и всё такое.

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

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

                      На борту микроконтроллера есть всякие I²C, да UART, но они явно не удовлетворяют условиям. В итоге было решено разработать свой велосипед протокол.



                      Читать дальше →
                    • WebRTC, Safari


                        В апреле прошлого года по сети прокатился пресс-релиз о том, что Apple выкатывает поддержку WebRTC в браузерах Safari для Mac OS и iOS. С момента выхода пресс-релиза скоро пройдет ровно год, как Apple продолжает выкатывать WebRTC для Safari. Ждем.


                        Однако ждут не все. Кому-то требуется реал-тайм видео в Safari прямо сейчас и в этой статье мы расскажем как обходиться без WebRTC в браузере iOS Safari и Mac OS Safari и чем можно его заменить.
                        Читать дальше →
                      • 8-киловаттный 4-канальный коммутатор AC с измерением потребления. Часть 1

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


                        Читать дальше →
                      • Разница между nginx и apache с примерами

                        Во время собеседований на роль linux/unix администратора во многих IT-компаниях спрашивают, что такое load average, чем nginx отличается от apache httpd и что такое fork. В этой статье я постараюсь объяснить, что рассчитывают услышать в ответ на эти вопросы, и почему.


                        Здесь важно очень хорошо понимать основы администрирования. В идеальной ситуации при постановке задачи системному администратору выставляют ряд требований. Если же ситуация не идеальная, то, по сути, требование к администратору одно: «Хочу, чтобы всё работало». Иными словами, сервис должен быть доступен 24/7 и, если какое-то решение не удовлетворяет этим требованиям (масштабирование и отказоустойчивость относятся к доступности), то можно сказать, что администратор плохо сделал свою работу. Но если разные решения двух администраторов работают 24/7, как понять, какое из них лучше?


                        Хороший системный администратор при выборе решения при заданных требованиях ориентируется на два условия: минимальное потребление ресурсов и их сбалансированное распределение.


                        Вариант, когда одному специалисту нужно 10 серверов для выполнения задания, а второму всего 2, мы рассматривать не будем, что тут лучше – очевидно. Далее под ресурсами я буду понимать ЦПУ (cpu), ОЗУ (ram) и диск (hdd).


                        Давайте рассмотрим ситуацию: один администратор создал решение, которое требует 10% cpu, 5% ram и 10% hdd от всего вашего оборудования, а второй использовал для этого 1% cpu, 40% ram и 20% hdd. Какое из этих решений лучше? Тут все становится уже не так очевидно. Поэтому хороший администратор всегда должен уметь грамотно подобрать решение, исходя из имеющихся ресурсов.


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