• Введение в SOLID: новый редецентрализованный интернет Тима Бернерса-Ли

    • Translation
    Создание нового децентрализованного интернета долгие годы волнует умы специалистов. Профессор Тим Бернерс-Ли пошел еще дальше и нашел способ редецентрализовать интернет. Что это значит, как с этим связан проект Solid и что такое «поды»? Читайте в нашем переводе статьи Arnav Bansal, опубликованной на сайте freeCodeCamp.
    Читать дальше →
  • LibreOffice: страшный сон бухгалтера


      LibreOffice — мощный офисный пакет, который бесплатен для частного, образовательного и коммерческого использования. Его разработчики делают замечательный продукт, который во многих сферах используется в качестве альтернативы Microsoft Office. Команде PVS-Studio всегда интересно взглянуть на код таких известных проектов и попробовать найти в них ошибки. В этот раз сделать это было легко. Проект содержит много ошибок, которые могут привести к серьёзным проблемам. В статье будут рассмотрены некоторые интересные дефекты, найденные в коде.

      Введение


      LibreOffice — очень крупный C++ проект. Поддерживать проект такого объёма — сложная задача для команды разработчиков. И, к сожалению, складывается впечатление, что качеству кода LibreOffice не удаётся уделять достаточного внимания.

      С одной стороны, проект просто огромный, не каждый инструмент статического или динамического анализа осилит анализ 13к файлов исходного кода. Столько файлов участвует в сборке офисного пакета вместе со сторонними библиотеками. В основном репозитории LibreOffice хранится около 8к файлов исходного кода. Такой объём кода создаёт проблемы не только разработчикам:

      Читать дальше →
    • Эволюция системных вызовов архитектуры x86

        Про системные вызовы уже много было сказано, например здесь или здесь. Наверняка вам уже известно, что системный вызов — это способ вызова функции ядра ОС. Мне же захотелось копнуть глубже и узнать, что особенного в этом системном вызове, какие существуют реализации и какова их производительность на примере архитектуры x86-64. Если вам также интересны ответы на данные вопросы, добро пожаловать под кат.

        Читать дальше →
      • Position-independent code (PIC) в разделяемых библиотеках

        • Translation

        enter image description here


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

        Читать дальше →
        • +65
        • 14.8k
        • 9
      • Простой монитор системы на Flask

          Привет, Хабр!

          Недавно возникла необходимость сделать простой и расширяемый монитор использования системы для сервера на Debian. Хотелось строить диаграммы и наблюдать в реальном времени использование памяти, дисков и тп. Нашел много готовых решений, но в итоге сделал скрипт на python + Flask + psutil. Получилось очень просто и функционально. Можно легко добавлять новые модули.


          Читать дальше →
        • Git: советы новичкам – часть 1

          В Playrix приходит много новых сотрудников и большинство из них не работали с Git. Особенно это касается гейм-дизайнеров и художников. Хотя и для программистов это не редкость – опыт работы с другими системами контроля версий не слишком помогает. Например, часто встречается опыт работы с SVN. Но Git заметно отличается по идеологии. Заучить, какие кнопки нажимать, в большинстве случаев не сложно, но шаг в сторону – и уже трудно понять, что происходит.



          Поэтому мы решили написать ознакомительный материал. Мы поговорим о системе контроля версий и логике её работы, с самых азов. С Git можно работать с помощью  разных клиентов, потому в статье не пойдет речь об интерфейсе пользователя. Это может показаться непривычным, но это сделано намеренно. Вместо этого мы сфокусируемся на рабочем каталоге, коммитах, ветках, командах pull, push и прочих. Когда вы разберетесь в этих понятиях, вам останется выбрать один из Git-клиентов и освоить его интерфейс.
          Читать дальше →
        • Position-independent code (PIC) в разделяемых библиотеках на x64

          • Translation

          enter image description here


          Привет, я все еще Марко и все еще системный программист в Badoo. На прошлой неделе я опубликовал перевод о PIC в шареных библиотеках, но есть вторая часть – про разделяемые библиотеки на х64, поэтому решил не оставлять дело незаконченным.

          Читать дальше →
          • +49
          • 8.1k
          • 1
        • Лекции Технопарка. Курс «Алгоритмы и структуры данных» (осень 2016)

            image


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


            • «Введение. Исполнители. Абстракции интерфейсов. Рекурсия»;
            • «Жадные алгоритмы»;
            • «Сортировки»;
            • «Поиск. Списки»;
            • «Деревья»;
            • «Хеш-таблицы».

            Четыре лекции курса читает Степан Мацкевич, руководитель группы извлечения онтологической информации в компании ABBYY. Он был ведущим программистом при написании серверной части продукта ABBYY InfoExtractor на основе технологии ABBYY Compreno (анализ текстов и перевода).


            Еще две лекции ведет Георгий Иванов, разработчик Поиска Mail.Ru, занимающийся задачами обработки поисковых запросов.

            Читать дальше →
            • +51
            • 34k
            • 5
          • Математика для искусственных нейронных сетей для новичков, часть 1 — линейная регрессия

            Оглавление

            Часть 1 — линейная регрессия
            Часть 2 — градиентный спуск
            Часть 3 — градиентный спуск продолжение

            Введение


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

            Цикл рассчитан на базовый ВУЗовский математический уровень читающего. Код будет написан на Python3.5 с numpy 1.11. Список остальных вспомогательных библиотек будет в конце каждого поста. Абсолютно все будет написано с нуля. В качестве подопытного выбрана база MNIST — это черно-белые, центрированные изображения рукописных цифр размером 28*28 пикселей. По-умолчанию, 60000 изображений отмечены для обучения, а 10000 для тестирования. В примерах я не буду изменять распределения по-умолчанию.
            Читать дальше →
          • Создаем ELF-файл с отладочной информацией (DWARF) вручную (для микроконтроллеров ARM)

            Введение


            С недавнего времени я увлекся микроконтроллерами. Сначала AVR, затем ARM. Для программирования микроконтроллеров существует два основных варианта: ассемблер и С. Однако, я фанат языка программирования Форт и занялся портированием его на эти микроконтроллеры. Конечно, существуют и готовые решения, но ни в одном из них не было того, что я хотел: отладки с помощью gdb. И я задался целью заполнить этот пробел (пока только для ARM). В моем распоряжении была плата stm32vldiscovery с 32-битным процессором ARM Cortex-M3, 128кБ flash и 8 кБ RAM, поэтому я и начал с нее.
            Писал я кросс-транслятор Форта конечно на Форте, и кода в статье не будет, так как этот язык считается экзотическим. Ограничусь достаточно подробными рекомендациями. Документации и примеров в сети по предмету почти нет, некоторые параметры подбирались мной путем проб и ошибок, некоторые — путем анализа выходных файлов компилятора gcc. Кроме того, я использовал только необходимый минимум отладочной информации, не касаясь, например, relocation-ов и множества других вещей. Тема очень обширна и, признаюсь, разобрался я с ней только процентов на 30, что оказалось для меня достаточным.
            Читать дальше →
            • +30
            • 23.5k
            • 3
          • Книги, по которым мы в детстве учили программирование и будем учить детей



              Когда я зашел в гости к Робокурс (они учат ребятишек 7-13 лет программированию и робототехнике), то увидел коллекцию раритетных книжек по программированию и вспомнил былое, 286-е без жесткого диска, BASIC из оперативки и прочее.

              Я был в восьмом и от одноклассника узнал, что есть «Краевая станция юнных техников» (КСЮТ), где помимо выпиливания лобзиком кордовых авиамоделей есть и инновационный кабинет по программированию. Записался туда. Там были и первые сетевые баталии в NETWARS, и первая порнокартинка, и война за пароль главного администратора. Адекватных книг практически на было, особенно по горячо любимому мной бейсику (только «Программышка» и еще одна розовенькая книга, откуда я узнал, что такое массив и что с ним можно делать).

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

              Под катом кратенький обзор одной современной и нескольких олдскульных советских книжек по робототехнике и программированию для детей из коллекции преподавателей. (Бонус — обзор манги по электричеству.) А в комментах — ваши первые книги.
              Читать дальше →
            • Реализация словаря в Python 2.7

              В этой статье пойдёт речь о том, как реализован словарь в Python. Я постараюсь ответить на вопрос, почему элементы словаря не упорядочены, описать, каким образом словари хранят, добавляют и удаляют свои элементы. Надеюсь, что статья будет полезна не только людям, изучающим Python, но и всем, кто интересуется внутренним устройством и организацией структур данных.
              Читать дальше →
            • Сингулярность действительно близко

                image

                Привет. Меня зовут Марк и я перевожу адаптирую и интерпретирую книгу Р. Курцвейла «The Singularity Is Near». Если вам не знаком Курцвейл и вы первый раз услышали про Сингулярность — посмотрите что об этом думают другие:

                «Рэй Курцвейл дает самые точные прогнозы искусственного интеллекта и будущего, из каких–либо мне известных. Его книга интригующе рассказывает о ближайшем будущем, в котором информационные технологии продвинутся так далеко и так быстро, что это позволит человечеству выйти за рамки биологических ограничений и изменить наш вид так, как мы пока еще не можем себе представить»

                Билл Гейтс

                «Любой человек может понять главную идею Курцвейла: технологии человечества развиваются так же, как растет снежный ком, что означает фантастические перспективы в ближайшем будущем. Это понятно всем. Но для более любознательных есть интересные детали и подробности….»

                The New York Times

                «Волнующий и чрезвычайно глубокий взгляд на человечество как вид. Курцвейл является блестящим ученым и футуристом…»

                The New York Sun

                Это настольная книга любого «истинно верующего» технократа, трансгуманиста и футурофила, если в двух словах. Именно эта книга считается лучшей работой Курцвейла и одной из лучших книг, описывающих ближайшее будущее человечества как биологического вида.
                Читать дальше →
              • OpenVPN: создание сервера на Windows

                Openvpn — виртуальная частная сеть. С ее помощью мы можем:
                • Создать защищенный канал свзяи, в то время, когда мы сидим с бесплатного Wi-Fi в кафе.
                • Обмениваться файлами между участниками сети.
                • Раздавать интернет испульзуя общий шлюз.

                Основные преимущества:
                • Простота настройки.
                • Безопасность.
                • Не требует дополнительного оборудования.
                • Высокая скорость и стабильность.

                Как и автор статьи об установке OpenVPN на Linux, я не нашел нормальной статьи, да еще и такой, чтоб описывалось все до мелочей. В этой статье на Хабрахабре я постараюсь максимально доступно все объяснить. Итак, поехали!
                Читать дальше →
              • Here be dragons: Управление памятью в Windows как оно есть [3/3]


                  Каталог:
                  Один
                  Два
                  Три

                  μTorrent


                  Это, пожалуй, самая забавная часть. При очевидно высоких навыках программирования, авторы либо не читали, либо не поняли вот этот документ. Вот что происходит с дефолтными настройками:
                  Читать дальше →
                • Here be dragons: Управление памятью в Windows как оно есть [1/3]


                    Каталог:
                    Один
                    Два
                    Три

                    Менеджер памяти (и связанные с ним вопросы контроллера кеша, менеджера ввода/вывода и пр) — одна из вещей, в которой (наряду с медициной и политикой) «разбираются все». Но даже люди «изучившие винду досконально» нет-нет, да и начинают писать чепуху вроде (не говоря уже о другой чепухе, написанной там же):
                    Грамотная работа с памятью!!! За все время использования у меня своп файл не увеличился ни на Килобайт. По этому Фаерфокс с 10-20 окнами сворачивается / разворачивается в/из трея как пуля. Такого эффекта я на винде добивался с отключенным свопом и с переносом tmp файлов на RAM диск.

                    Или к примеру μTorrent — у меня нет никаких оснований сомневаться в компетентности его авторов, но вот про работу памяти в Windows они со всей очевидностью знают мало. Не забываем и товарищей, производящих софт для слежения за производительностью и не имеющих ни малейшего понятия об управлении памятью в Windows (и поднявших по этому поводу истерику на пол интернета, на Ars-е даже был разбор полетов). Но самое потрясающее, что я видел всвязи с управлением памятью — это совет переместить pagefile на RAM-диск:
                    Из моих трех гигабайт под RAM disk был выделен один (на тот момент, когда на лаптопе еще была установлена XP), на котором я создал своп на 768МБ ...

                    Цель данной статьи — не полное описание работы менеджера памяти (не хватит ни места ни опыта), а попытка пролить хоть немного света на темное царство мифов и суеверий, окружающих вопросы управления памятью в Windows.
                    Читать дальше →
                  • Береги зрение, используй f.lux

                      Почти четыре года прошло с момента упоминания на Хабре программы f.lux, настоящего лекарства для тех, у кого устают глаза из-за монитора.



                      Программа изменяет цветовой профиль монитора, в зависимости от времени суток. Ночью глаза меньше устают от тёплых цветовых тонов (3400 K), днём — от холодных (6500 K), которые больше соответствуют дневному свету.
                      Читать дальше →
                    • Jiayu G3 — Китайский телефон с европейским качеством


                        — CPU: MTK 6577 Dual Core 1.0GHz
                        — GPU: PowerVRTM SGX Series5 3D
                        — OS Android 4.0 Ice Cream Sandwich (ICS)
                        — Память: оперативная (RAM): 1GB/ внутренняя (ROM): 4GB
                        — Поддерживает Micro SD Memory Card (TF-Card), до 32GB
                        — Габариты: 135 x 65 x 10.8 mm
                        — Масса: 156 g
                        — Экран: 4.5 дюйма, матрица IPS, ёмкостный мультитач(7 точек) и стекло Gorilla Glass
                        — HD-разрешение (1280 x 720 pixels)
                        — Поддержка сетей: (2 сим-карты) Network Dual SIM G+G W+G
                        — 2G:GSM 850/900/1800/1900MHz
                        — 3G:WCDMA 850/900/1900/2100MHz
                        — Встроенный GPS & A-GPS
                        — Bluetooth with EDR & A2DP
                        — Wi-Fi IEEE 802.11 b/g
                        — Две камеры: основная 8.0 / фронтальная 1.3 мегапикселей
                        — Gravity Sensor, Proximity Sensor, Light Sensor
                        — Литий-ионная батарея 2750 mAh
                        Читать дальше →
                      • Обзор MiniTV MK808 с Android 4.1


                          Хочу представить вам обзор интересного MiniTV. Данное устройство в последнее время набирает популярность, уже появилось несколько прошивок от энтузиастов, а вот обзора на хабре еще не было. Девайс был куплен мною на одной известной азиатской торговой площадке за 63 доллара вместе с клавиатурой (без клавиатуры его стоимость 52$). За такую стоимость мы получаем устройство с интересными характеристиками:
                          • ЦП: Dual ARM Cortex A9 RK3066 (Два ядра, работает на 1ГГц, теоретически можно разогнать до 1.6ГГц)
                          • ГП: Mali-400MP (Четыре ядра)
                          • ОЗУ: 1Гб DDR3
                          • Сеть: WiFi:802.11 b, g, n
                          • ОС: Android4.1.1 jelly bean
                          • Внутреннее хранилище на 8Гб
                          • Дополнительно: 1 х miniHDMI, 1 x USB, 1 x miniUSB, 1 x microSD card reader

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