• Скрипт настройки Windows 10

    Давно хотел поделиться своим скриптом по автоматизации настройки Windows 10 (на данный момент актуальная версия 18363), да все руки не доходили. Возможно, он будет кому-то полезен целиком или только его части. Конечно, будет проблематично описать все пункты настройки, но постараюсь выделить самое важное.

    Если кому-то интересно, то добро пожаловать под кат.
    Читать дальше →
  • Мелкая питонячая радость #7: три штуки по цене одной — консольная анимация, алгоритмы и отладка

      На этой неделе достаточно крупных мелких радостей не нашлось, зато нашлись 3 совсем мелкие мелкие радости.


      termtosvg


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


      image


      Традиция, бесспорно, хорошая и правильная. Только записывать такие анимации бывает трудно/лень/некогда. Авторы termtosvg пристрелили всех зайцев одим выстрелом и дали программистам прекрасную штуку для записи консольных демок.

      Читать дальше →
      • +31
      • 7.6k
      • 9
    • Бытие современного фуллстек-разработчика


        Я живу на периферии технологической тусовки. И на периферии в географическом смысле. А это значит, что:


        • Я никогда не был на профессиональных конференциях. Просто потому, что никогда не предоставлялось такой возможности.
        • Я никогда не покупал обучающие курсы: для меня странно платить за то, что можно изучить самому в этих ваших интернетах или по книгам. Заманчиво, конечно, получить концентрированные знания, подкрепленные выполнением практических заданий, заполучить сертификат. Но на это у меня никогда не было ни средств, ни времени.
        • Я адепт цифрового аскетизма: не по своей воле, но как порождение вечной перестройки в нашей стране. В короткие периоды финансовой стабильности я обновляю электронику по остаточному принципу. Вот и сейчас пишу этот текст на Core2Duo десятилетней давности. Все еще жду следующего стабильного плато на кривой моих доходов.
        • Раза три в своей жизни я покупал игры. В 90-е. Это были кассеты для отживающего своё Спектрума. На покупку ПО я смотрю с удивлением: когда все пользовались пиратским ПО, то и я пользовался, не понимая сути вопроса. А потом, в начале двухтысячных, полностью перешел на Linux и покупать стало нечего.
        Читать дальше →
      • Используйте __main__.py

        • Translation

        Зачем нужен __init__.py знает, наверное, любой питонист, но что насчёт __main__.py? Я видел немало проектов либо рабочих, либо на Github, которые не используют это магический файл, хотя могли бы сделать свою жизнь проще. На мой взгляд, __main__.py это лучший способ для взаимодействия с питоновскими модулями, состоящими из нескольких файлов.


        Но давайте сначала разберёмся: как большинство людей запускают свои скрипты на Python?


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


        if __name__ == '__main__':
            main(sys.argv)

        Когда вы скармливаете скрипт интерпретатору, магическая глобальная переменная __name__ получает значение __main__. Таким образом мы узнаём, что это не импорт, а именно запуск. Например:


        python myapp.py

        И это прекрасно работает для одиночного файла.


        Проблема


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


        .
        ├── README.me
        ├── requirements.txt
        ├── setup.py
        └── src
            ├── __init__.py
            ├── client.py
            ├── logic.py
            ├── models.py
            └── run.py

        Но пользователю, который склонировал проект из репозитория будет непонятно — какой из этих файлов главный? Неужели run.py? А может client.py? Где же искать знакомую строку if __name__ == '__main__'? Вот здесь-то __main__.py и способен проявить себя.

        Читать дальше →
      • ARM MBED OS. Работа с произвольным МК STM32 под PlatformIO

          imageКогда в январе сего года я писал материал о файловой системе LittleFS (интегрированной в состав arm mbed os), то обещал в скорейшем времени описать создание проекта с arm mbed os для произвольного микроконтроллера STM32. Как известно, онлайн IDE от ARM (а точнее, выделенного подразделения Arm mbed) поддерживает, во-первых, строго определенное число отладочных плат, и число их невелико; во-вторых, экспортирует онлайн-примеры, на базе которых можно строить какие-то свои проекты, только для наиболее известных IDE: ARM, uVision KEIL и IAR. Более того, некоторые примеры не экспортируются вовсе. То есть, доступны для экспорта или только варианты для IAR, или только для KEIL, и так далее. Так что, как в то время показалось, научиться “прикручивать” arm mbed os к любому МК было бы не лишним вовсе.

          Однако, жизнь вносит свои коррективы в любые планы, и работать в этом направлении длительное время не получалось. Но вопрос оставался открытым, и теперь, по прошествии значительного времени, я возвращаюсь к тематике.
          Читать дальше →
          • +20
          • 17.8k
          • 7
        • Что нужно запомнить программисту, переходящему на Python

          • Tutorial

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


          Однако в какой-то момент перл исчерпал себя и я решил заняться питоном, сначала просто делал что-то и разбирался с тем, что нужно для данной задачи, а потом понял, что нужны какие-то систематизированные знания и прочитал несколько книг:


          • Билл Любанович «Простой Python. Современный стиль программирования»
          • Дэн Бейдер «Чистый Python. Тонкости программирования для профи»
          • Бретт Слаткин «Секреты Python: 59 рекомендаций по написанию эффективного кода»

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


          В итоге у меня накопились какие-то заметки об особенностях питона, которые, как мне кажется, могут быть полезны тому кто пожелает мигрировать на него с других языков.

          Читать дальше →
        • STM32 и FreeRTOS. 2. Семафорим по-черному

          • Tutorial
          Часть первая, про потоки

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

          Читать дальше →
          • +23
          • 45k
          • 2
        • Ручной монтаж сложных плат на компонентах 0402, 0603, QFN, LQFP и THT

            Приветствую!



            Сегодня речь пойдет о том, как добиться высокого качества монтажа на платах с большим количеством компонентов — до 1500шт (можно и больше при плотном монтаже или при сборке 1-2 плат одновременно — не более). Потребность в таком сложном монтаже обычно возникает при изготовлении первого макета или нескольких образцов, чтобы убедиться в правильности трассировки печатной платы (основных сложных моментов) или же при разовом производстве. После получения такого макета можно начинать отлаживать программное обеспечение и вносить корректировки в плату. Заводская сборка, в этом случае, не совсем подходит из-за ее стоимости, подготовки конструкторской документации, подборки компонентов, сроков, макетирования и многого другого (под катом картинки на 8Мб).
            Читать дальше →
          • Параллельное программирование с CUDA. Часть 2: Аппаратное обеспечение GPU и шаблоны параллельной коммуникации

            • Tutorial

            Содержание


            Часть 1: Введение.
            Часть 2: Аппаратное обеспечение GPU и шаблоны параллельной коммуникации.
            Часть 3: Фундаментальные алгоритмы GPU: свертка (reduce), сканирование (scan) и гистограмма (histogram).
            Часть 4: Фундаментальные алгоритмы GPU: уплотнение (compact), сегментированное сканирование (segmented scan), сортировка. Практическое применение некоторых алгоритмов.
            Часть 5: Оптимизация GPU программ.
            Часть 6: Примеры параллелизации последовательных алгоритмов.
            Часть 7: Дополнительные темы параллельного программирования, динамический параллелизм.
            Читать дальше →
          • Роскомнадзор сам нарушает 152 ФЗ РФ?

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

            image
            Читать дальше →
          • На пороге дополненной реальности: к чему готовиться разработчикам (часть 2 из 3)


              Это продолжение (см. часть 1) стенограммы одноименного доклада с конференции ADD-2010.

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

                image
                В статье я расскажу о том, как я делал лазерный дальномер и о принципе его работы. Сразу отмечу, что конструкция представляет собой макет, и ее нельзя использовать для практического применения. Делалась она только для того, чтобы убедится в том, что фазовый дальномер реально собрать самому.
                Читать дальше →
              • Установка OpenFOAM на Ubuntu 14.04

                • Tutorial

                OpenFOAM — свободно распространяемый инструментарий вычислительной гидродинамики для операций с полями (скалярными, векторными и тензорными). На сегодня является одним из «законченных» и известных приложений, предназначенных для FVM-вычислений.В частности пакет позволяет решать задачи гидродинамики ньютоновских и неньютоновских вязких жидкостей как в несжимаемом, так и сжимаемом приближении с учётом конвективного теплообмена и действием сил гравитации. Для моделирования турбулентных течений возможно использование RANS-моделей, LES- и DNS-методов. Возможно решение дозвуковых, околозвуковых и сверхзвуковых задач.

                На данный момент инсталляционные пакеты доступны для следующих версий ОС
                • 12.04 LTS codename precise
                • 12.10 codename quantal
                • 13.04 codename raring
                • 13.10 codename saucy

                Однако, инсталляционный пакет ОС Ubuntu 14.04 отсутствует. Поэтому для версии 14.04, необходимо самостоятельно собрать OpenFOAM 2.3 Это является достаточно не простой задачей для новичков, которые недавно используют данную операционную систему.
                Этому и посвящена статья.
                Читать дальше →
              • Коды Рида-Соломона. Простой пример

                Гауссово котэБлагодаря кодам Рида-Соломона можно прочитать компакт-диск с множеством царапин, либо передать информацию в условиях связи с большим количеством помех. В среднем для компакт-диска избыточность кода (т.е. количество дополнительных символов, благодаря которым информацию можно восстанавливать) составляет примерно 25%. Восстановить при этом можно количество данных, равное половине избыточных. Если емкость диска 700 Мб, то, получается, теоретически можно восстановить до 87,5 Мб из 700. При этом нам не обязательно знать, какой именно символ передан с ошибкой. Также стоит отметить, что вместе с кодированием используется перемежевание, когда байты разных блоков перемешиваются в определенном порядке, что в результате позволяет читать диски с обширными повреждениями, локализированными близко друг к другу (например, глубокие царапины), так как после операции, обратной перемежеванию, обширное повреждение оборачивается единичными ошибками во множестве блоков кода, которые поддаются восстановлению.

                Давайте возьмем простой пример и попробуем пройти весь путь – от кодирования до получения исходных данных на приемнике. Пусть нам нужно передать кодовое слово С, состоящее из двух чисел – 3 и 1 именно в такой последовательности, т.е. нам нужно передать вектор С=(3,1). Допустим, мы хотим исправить максимум две ошибки, не зная точно, где они могут появиться. Для этого нужно взять 2*2=4 избыточных символа. Запишем их нулями в нашем слове, т.е. С теперь равно (3,1,0,0,0,0). Далее необходимо немного разобраться с математическими особенностями.

                Поля Галуа


                Многие знают романтическую историю о молодом человеке, который прожил всего 20 лет и однажды ночью написал свою математическую теорию, а утром был убит на дуэли. Это Эварист Галуа. Также он несколько раз пытался поступить в университеты, однако экзаменаторы не понимали его решений, и он проваливал экзамены. Приходилось ему учиться самостоятельно. Ни Гаусс, ни Пуассон, которым он послал свои работы, также не поняли их, однако его теория отлично пригодилась в 60-х годах ХХ-го века, и активно используется в наше время как для теоретических вычислений в новых разделах математики, так и на практике.
                Читать дальше →
              • EmBlocks — IDE для STM32

                  Я обещал поделиться своей настроенной средой Em::Blocks.
                  Выполняю обещание.


                  Что такое Em::Blocks?


                  Это IDE на основе Code::Blocks — кросс-платформенной быстрой среды разработки со встроенным скриптовым языком и очень гибкой настройкой, ориентированной под С/С++ разработку. В среде есть встроенные шаблоны для кучи различных случаев и возможность подключать любые компиляторы.
                  EmBlocks в отличие от CodeBlocks не кросс-платформенная, она существует только под Windows.
                  Зато вместе с ней поставляется специальная версия CodeSourcery тулчейна, которая позволяет плотнее интегрировать тулчейн с IDE. Версия в комплекте всегда свежая.

                  Достоинства EmBlocks


                  • быстрая, т.к. написана в native коде
                  • расширяемая и хорошо автоматизируется с помощью скриптов
                  • шаблоны проектов можно настроить на свой вкус
                  • можно самому изменить диалог мастера создания проекта
                  • не требует установки — можно носить с собой на флешке и легко перенести с настройками на другой комп
                  • из коробки поддерживает отладку через ST-Link и J-Link
                  • бесплатная
                  • неплохо поддерживается на собственном форуме

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

                  Технологический процесс с проектными нормами 32 нм.
                  Два ядра ARMv7 с тактовой частотой 1,3 ГГц
                  Оперативная память – 1 Гбайт.


                  Технологический процесс с проектными нормами 150 нм.
                  Одно ядро PowerPC с тактовой частотой 200 МГц.
                  Оперативная память – 256 Мбайт.


                  Сверху – параметры центрального процессора iPhone5, внизу – марсохода Curiosity. Бортовой компьютер марсохода стоит приблизительно в двести раз дороже нового айфона. Почему так? Центральный процессор космического аппарата должен быть устойчивым к воздействию радиации. На Хабре уже была хорошая обзорная статья о космической электронике, а я постараюсь подробнее рассказать о физических принципах и эффектах, стоящих за сбоями и отказами в космосе.
                  Читать дальше →
                • Уроки по электрическим цепям — линии передачи, часть 2



                    Эта статья — перевод. Начало здесь.
                    Источник.

                    В программе:
                    1) Провода болтаются в воздухе, но источник тока/напряжения видит короткое замыкание.
                    2) На одном конце провода амплитуда равна 0 Вольт, а на другом — 1 Вольт. Как это возможно?
                    3) Согласование 75 Ом источника сигнала с 300 Ом нагрузкой при помощи правильно подобранного кабеля.

                    Стоячие волны и резонанс


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

                    На рисунке показано, как треугольная падающая волна зеркально отражается от открытого конца линии. Для простоты, линия передачи в этом примере показана как единая жирная линия, а не как пара проводов. Падающая волна идёт слева направо, а отражённая – справа налево.
                    Читать дальше →
                  • 90 рекомендаций по стилю написания программ на C++

                    • Translation
                    От переводчика. Искал в интернете простой и легко применимый гайдлайн по написанию программ на C++. Мне понравился один из вариантов, и я решил его перевести и опубликовать. Если хабрапользователи хорошо встретят этот топик, могу перевести и другие связанные документы, а также гайдлайны по написанию кода от других компаний.

                    1 Введение


                    Настоящий документ содержит рекомендации по написанию программ на языке C++.

                    Рекомендации основаны на установившихся стандартах, собранных из различных источников, личного опыта, частных требований и потребностей определённых проектов, а также почерпнутых из источников (см. ниже).

                    Но для появления ещё одного списка рекомендаций, помимо указанных источников, есть несколько причин. Основная причина — их излишняя обобщённость, поскольку зачастую требуется задать частные правила (в особенности правила именования). Данный документ содержит комментарии, что делает его более удобным в использовании при проведении ревизий кода, чем другие уже существующие документы. К тому же, рекомендации по программированию обычно вперемешку содержат описания проблем стиля и технических проблем, что не совсем удобно. Этот документ не содержит каких-либо технических рекомендаций по C++, делая упор на вопросах стиля.
                    Читать дальше →
                  • От идеи до гаджета. Путь «Самурая» в России (часть 2)


                      Добрый день!
                      Продолжу рассказ о создании защищенной флешки Samurai. Первую часть рассказа Вы можете прочесть здесь — От идеи до гаджета. Путь «Самурая» в России.
                      Когда идея была более или менее сформулирована, мы приступили к ее реализации.

                      Прототип (ноябрь 2007)


                      Сначала был разработан макет флешки, размеры которого нас особо не тревожили. В итоге он получился размером с пачку сигарет.
                      В момент разработки появился клиент, который немедленно приобрел 20 таких «флешек». Это была плата, обтянутая термоусадкой, с выпуклостями от кнопок клавиатуры.
                      Читать дальше →
                    • Демонстрация сбоев программы при отсутствии барьеров памяти

                        Джефф Прешинг (Jeff Preshing) опубликовал отличную демонстрацию, как нормальный код C++ возвращает непредсказуемый результат на многоядерных процессорах со слабо упорядоченной обработкой очереди запросов (Weakly-Ordered CPU), то есть на ARM-процессорах. Например, на iPhone или каком-нибудь современном Android-устройстве.

                        Простая программа C++ с двумя потоками 20.000.000 раз прибавляет единичку к значению, защищённому мьютексом, — и каждый раз на выходе получается разный результат, который меньше 20.000.000!



                        Как говорится, наш враг — CPU.
                        Читать дальше →