• Тестирование производительности кода в ОС Linux с примерами

      Когда я занялся изучением Java, одной из первых задач, которую я пытался решить было определение четных/нечетных чисел. Я знал несколько способов как это сделать, но решил поискать «правильный» способ на просторах интернета. Информация по всем найденным ссылкам говорила мне об единственно правильном решении вида x % 2, с целью получения остатка от деления. Если в остатке 0 — число четное, если в остатке 1 — нечетное.

      Со времен ZX Spectrum я помнил еще один способ и он связан с представлением числа в двоичной системе. Любое число в десятичной системе можно записать как сумму степеней двойки. Например, для одного байта, а это 8 бит, любое число в десятичной системе может быть представлено как сумма чисел 128+64+32+16+8+4+2+1.

      Это просто последовательность степеней двойки. При переводе числа в двоичную систему, если нам нужно учитывать число, в двоичном представлении это будет единица, если не нужно, то это будет 0.

      Например:

      10 = 1010 (8+0+2+0)
      13 = 1101 (8+4+0+1)
      200 = 11001000 (128+64+0+0+8+0+0+0)

      Сразу можно обратить внимание на то, что нечетное число может дать только нулевая степень двойки со значением 1, все остальные степени двойки будут четные по определению. Это автоматически означает, что с точки зрения двоичной системы счисления, если мы хотим проверить любое число на четность, нам не нужно проверять все число, какое бы большое оно не было. Нам нужно проверить только первый бит (самый правый). Если он 0, то число четное, так как все остальные биты дают четное число, и наоборот, если в самом правом бите единица, то число гарантировано нечетное, потому что все остальные биты дают только четное значение.
      Чтобы проверить только правый бит в числе, можно использовать несколько способов. Один из них бинарный AND.
      Читать дальше →
    • Основы 3D-моделирования для 3D-печати

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

        Из оговорок, отмечу, что данные рекомендации относятся в основном к методу 3D-печати FDM(FFF), при котором пластиковый пруток топится подвижным экструдером, формирующим деталь слой за слоем.

        Разработка 3D-модели начинается с создания эскиза. Это может быть рисунок на бумаге, материальный прототип, мысленный образ и пр. На что важно обратить внимание при создании такого эскиза и самой модели разберем подробно.
        Читать дальше →
      • Укрощаем мультимедиа с помощью ffmpeg

          Внезапно ваш диск под завязку забит фотографиями и видео, а впереди новые поездки. Что делать, покупать новый, арендовать дисковое пространство на облаке, или может лучше сжать видео файлы через ffmpeg?





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

          Читать дальше →
        • Кто же был на сервере?

          • Tutorial
          Наступает момент, когда системному администратору необходимо определить дату последнего входа в систему каждого из пользователей, а также подготовить список тех аккаунтов, которые этого так и не сделали. Если б Вы ранее не знали команду lastlog, то удивились бы, насколько легко и быстро она может предоставить Вам эти данные.


          Читать дальше →
        • Linux-контейнеры дома: зачем и как




            Рассуждения


            При упоминании словосочетания «контейнерная виртуализация», многим на ум сразу же приходят Virtuozzo и OpenVZ, а также Docker. Ассоциируется же это все, в первую очередь, с хостингом, VPS и другими подобными вещами.

            Дома, на личных компьютерах многие используют виртуальные машины: в основном, пожалуй, Virtualbox. Как правило, для того, чтобы работая под Linux, иметь под рукой Windows или наоборот. Однако, при наличии множества родственных Linux-операционок, я стал замечать, что использование виртуальных машин — это, мягко говоря, нерационально.
            Читать дальше →
          • Дело о загадочном Access denied

              Утром в службу поддержки обратился один из разработчиков корпоративного приложения. Он не мог сделать копию с базы данных MS SQL Server, и просил выяснить причину ошибки.

              Первое с чего стоит начать — проверить ошибку на воспроизводимость.
              Попробуем снять копию командой:
              BACKUP DATABASE [SDB] TO DISK=N'\\FS1\Backup\sdb_full.bak' WITH COPY_ONLY
              

              Читать дальше →
            • PcDuino3 Nano, серьезный конкурент Raspberry Pi B+, за $ 39

                Raspberry Pi, от существующих на рынке отладочных плат отличается очень низкой ценой и большим функционалом. Но остальные игроки не дремлют, и постепенно наращивают функциональность, и снижают стоимость.
                Так еще в конце сентября, Linksprite анонсировала PcDuino3 Nano, отладочную плату построенную на двухядерном AllWinner A20 SoC, с Arduino-совместимой площадкой. Это позволяет подключать Arduino платы расширения к PcDuino3 Nano, как будто это Arduino UNO. Дополнительно есть SATA разъем для подключения HDD или SSD.
                PcDuino3 Nano, это менее габаритная и более дешевая версия PcDuino3, без Wi-Fi модуля, LVDS, и I2C интерфейса. Плата не поддерживает подключение Li-Po аккумуляторных батарей, но добавлен еще один USB порт по сравнению со старшей моделью.
                PcDuino3 Nano
                PcDuino3 Nano
                Читать дальше →
              • Регулируемый источник питания из БП ATX на TL494. Часть 1 — железо

                  Всем привет!

                  Сегодня хотел бы рассказать Вам о своём опыте переделки самого обычного китайского БП ATX в регулируемый источник питания со стабилизацией тока и напряжения(0-20А, 0-24В).

                  В этой статье мы подробно рассмотрим работу ШИМ контроллера TL494, обратной связи и пробежимся по модернизации схемы БП и разработке самодельной платы усилителей ошибок по напряжению и току.

                  image
                  Читать дальше →
                • Car Hacking: так ли безопасны системы безопасности автомобиля?



                    Автомобили обросли огромным количеством электроники, начиная со спидометра и заканчивая контроллером тормозной системы. Все эти устройства связаны в единую локальную сеть, что дает простор для попыток влезть в нее и немного там обжиться. В этой статье я расскажу, как устроен среднестатистический автомобиль, и постараюсь посеять в тебе паранойю и страх (смайл).
                    Читать дальше →
                  • Реверс-инжениринг драйверов USB-устройств на примере машинки на радиоуправлении

                      Перевод статьи DRIVE IT YOURSELF: USB CAR

                      image

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

                      Красота свободного софта в том, что эту проблему можно решить самостоятельно (если вы программист). Конечно, всё зависит от сложности оборудования. С трёхмерной веб-камерой у вас может и не получится – зато многие USB-устройства довольно просты, и вам не придётся нырять в глубины ядра или закапываться в С. В этом уроке мы с вами при помощи Python по шагам изготовим драйвер к игрушечной радиоуправляемой машинке.

                      Процесс по сути будет реверс-инженирингом. Сначала мы подробно изучим устройство, затем сохраним данные, которыми оно обменивается с драйвером в Windows, и попытаемся понять, что они означают. Для нетривиальных протоколов вам может потребоваться как опыт, так и удача.
                      Читать дальше →
                    • Простейший измеритель ESR электролитических конденсаторов

                        Собственно, как я уже когда-то очень давно обещал, расскажу про простейший измеритель ESR. В дальнейшем буду писать не ESR, а ЭПС(эквивалентное последовательное сопротивление), поскольку лень переключать раскладку. И так, кратко, что же такое ЭПС.
                        Читать дальше →
                      • Радиоэлектроника, или как я начал её постигать

                        Добрый день, уважаемое сообщество.

                        Меня все время удивляли люди, которые понимают в радиоэлектронике. Я всегда их считал своего рода шаманами: как можно разобраться в этом обилии элементов, дорожек и документации? Как можно только взглянуть на плату, пару раз «тыкнуть» осциллографом в только одному ему понятные места и со словами «а, понятно» взять паяльник в руки и воскресить, вроде как почившую любимую игрушку. Иначе как волшебством это не назовёшь.

                        Расцвет радиоэлектроники в нашей стране пришёлся на 80-е годы, когда ничего не было и все приходилось делать своими руками. С той поры прошло много лет. Сейчас у меня складывается впечатление, что вместе с поколением 70-х уходят и знания с умением. Мне не повезло: половину эпохи расцвета меня планировали родители, а вторую половину я провёл играя в кубики и прочие машинки. Когда в 12 лет я пошёл в кружок «Юный техник» — это были не самые благополучные времена, и ввиду обстоятельств через полгода пришлось с кружком «завязать», но мечта осталась.

                        По текущей деятельности я программист. Я осознаю, что найти ошибку в большом коде ровно тоже самое, что найти «плохой» конденсатор на плате. Сказано — сделано. Так как по натуре я люблю учиться самостоятельно — пошёл искать литературу. Попыток начать было несколько, но каждый раз при начале чтения книг я упирался в то, что не мог разобраться в базовых вещах, например, «что есть напряжение и сила тока». Запросы к великому и ужасному Гуглу также давали шаблонные ответы, скопированные из учебников. Попробовал найти место в Москве, где можно поучиться этому мастерству — поиски не закончились результатом.

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



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

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

                          • Tutorial
                          image
                          При проектировании промышленных приборов, к которым предъявляются повышенные требования по надёжности, я не раз сталкивался с проблемой защиты устройства от неправильной полярности подключения питания. Даже опытные монтажники порой умудряются перепутать плюс с минусом. Наверно ещё более остро подобные проблемы стоят в ходе экспериментов начинающих электронщиков. В данной статье рассмотрим простейшие решения проблемы — как традиционные так и редко применяемые на практике методы защиты.
                          Читать дальше →
                        • Нескучные выходные или «тачка на прокачку»

                            Некоторое время назад я сказал: "«Тюнить» авто лично мне как-то не интересно...", но «никогда не говори „никогда“». Звезды встали в таком порядке, что пришлось экстренно сменить машину Peugeot 307sw на Mazda5.

                            Машина ездит, все хорошо, но некоторые «плюшки», которые были в прежней машине штатно, почему-то отсутствовали в текущей.

                            Одна из таких полезных вещей — парктроник. Установка парктроника не является проблемой, но вот как-то «неродной» дисплей парктроника меня в салоне не устраивал. Внутренний перфекционист был жутко против «чужеродного тела».
                            Заводи, поехали!
                          • Администрирование глазами C++ программиста

                              Продолжаем цикл пятничных статей "X глазами C++ программиста" (1, $$). В этот раз под катом вас ждут впечатления заядлого С++ программиста от мира администрирования. Боль, страдания, радости и прочие эмоции как всегда вынесены под спойлеры.

                              Надеюсь будет интересно профессиональным администраторам посмотреть на потуги С++ника, ну а С++ разработчикам узнать для себя что-то новое.
                              Показывай конфиги
                            • Web-технологии глазами С++ программиста

                                Год назад знакомые попросили сделать меня сайт с динамическим контентом. Тогда о Web я знал чуть больше чем ничего, но попробовать было интересно.

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

                                Надеюсь будет интересно Web разработчикам посмотреть на потуги С++ника, ну а С++ разработчикам узнать для себя что-то новое.

                                Что там у тебя...
                              • Восстанавливаем локальные и доменные пароли из hiberfil.sys

                                Утилита mimikatz, позволяющая извлекать учётные данные Windows из LSA в открытом виде, существует с 2012 года, однако помимо хорошо освещённого функционала восстановления паролей из памяти работающей ОС у неё есть ещё одна довольно интересная возможность. Далее я приведу пошаговую инструкцию, как при помощи нехитрых действий извлечь учётные данные из файла hiberfil.sys.

                                Подготовка


                                Для осуществления задуманного нам понадобятся следующие утилиты:
                                Читать дальше →
                              • Офис на Linux — мой опыт

                                  Предисловие


                                  Возникла у меня с полгода назад задачка: быстро и с минимальными затратами организовать работу аудиторской фирмы после переезда и резкого расширения штата сотрудников. Имелся десяток стареньких компьютеров, NAS c RAID-массивом, около ста тысяч рублей денег на всё про всё. Надо было умудриться купить ещё несколько компьютеров и сделать так, чтобы «тормоза», к которым сотрудники уже почти привыкли, хотя бы не усилились. Появились и рабочие места вне офиса, по области, с не очень-то «толстым» каналом в Интернет. Плюс ко всему имелось пожелание улучшить безопасность: новые сотрудники должны быть ограничены в доступе к некоторым базам данных, не могли скопировать базы к себе на «флэшку» и т.п.

                                  Понятно, что в такой (впрочем, как почти в любой) фирме всё вертится вокруг 1С (в данном случае — 8.2). Используются файловые базы данных, это для заказчика весьма важно. Узкое место здесь — сеть. Ну, предположим, заменить 100-мегабитное оборудование на гигабитное несложно, но есть ещё и вопрос безопасности: файлы в общем доступе — хорошая дырка. А ведь есть ещё и удалённые рабочие места. Очевидно, что я стал смотреть в сторону терминального доступа.

                                  Покрутив в голове и электронных таблицах различные варианты коммерческих терминальных серверов известных фирм я понял: в бюджет не уложиться. Зато, как я помнил, 1с версии 8.3 существует в виде «нативной» реализации под Linux, при этом конфигурации от 8.2 с ней вполне совместимы. Проведя пару экспериментов дома, я решился и вышел к заказчику с предложением: «делаем терминальное решение полностью на Linux!» Заказчик отреагировал здраво: «хоть на чёрте лысом делай, но чтоб в понедельник всё работало!» И я взялся за работу.

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