Pull to refresh
7
0
Алексей @boov

User

Send message

LibreOffice: страшный сон бухгалтера

Reading time21 min
Views71K


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

Введение


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

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

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

Эволюция системных вызовов архитектуры x86

Reading time13 min
Views46K

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

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

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

Reading time16 min
Views25K

enter image description here


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

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

Простой монитор системы на Flask

Reading time4 min
Views15K
Привет, Хабр!

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


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

Git: советы новичкам – часть 1

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



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

Position-independent code (PIC) в разделяемых библиотеках на x64

Reading time8 min
Views13K

enter image description here


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

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

Лекции Технопарка. Курс «Алгоритмы и структуры данных» (осень 2016)

Reading time3 min
Views38K

image


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


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

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


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

Математика для искусственных нейронных сетей для новичков, часть 1 — линейная регрессия

Reading time8 min
Views157K
Оглавление

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

Введение


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

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

Создаем ELF-файл с отладочной информацией (DWARF) вручную (для микроконтроллеров ARM)

Reading time27 min
Views31K

Введение


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

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

Reading time3 min
Views95K


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

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

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

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

Реализация словаря в Python 2.7

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

Сингулярность действительно близко

Reading time2 min
Views78K
image

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

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

Билл Гейтс

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

The New York Times

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

The New York Sun

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

OpenVPN: создание сервера на Windows

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

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

Как и автор статьи об установке OpenVPN на Linux, я не нашел нормальной статьи, да еще и такой, чтоб описывалось все до мелочей. В этой статье на Хабрахабре я постараюсь максимально доступно все объяснить. Итак, поехали!
Читать дальше →

Here be dragons: Управление памятью в Windows как оно есть [3/3]

Reading time5 min
Views148K

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

μTorrent


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

Here be dragons: Управление памятью в Windows как оно есть [1/3]

Reading time8 min
Views181K

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

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

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

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

Береги зрение, используй f.lux

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



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

Jiayu G3 — Китайский телефон с европейским качеством

Reading time3 min
Views720K

— 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

Reading time3 min
Views192K

Хочу представить вам обзор интересного 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

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

Как устроиться на работу в Google

Reading time4 min
Views850K
Работать где-то мечтают не все. Работать в компании Google мечтают многие, кто решил связать свою жизнь с IT.

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

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

Шаг 1 — резюме.

В компании Google к резюме особое отношение. Получая миллионы заявок в год, компания выбирает несколько сотен сотрудников. Именно поэтому отличное резюме — первый шаг к работе мечты.
Что писать в резюме нужно обязательно:

  • e-mail, телефон для связи
  • все места учёбы (ВУЗы), дополнительное образование
  • Опыт работы*
  • Личные качества (придумайте что-то оригинальнее отзывчивости, стрессоустойчивости, коммуникабельности)
  • Хобби
  • Reference — люди, которые могут дать вам рекомендации
  • Знание языков

*Опыт работы в резюме для Google (и вообще для западных компаний) — это не только должность, компания, но и те успехи и достижения, которых вы добились на позиции. Если вы продажник — покажите цифры. Если программист — то как именно ваша работа улучшила работу компании. Работу рекомендуется указывать всю, а не только по профилю (если работали в МакДоналдсе, то даже такое стоит указать).

Что не нужно писать в своём резюме:
  • Дату рождения, личные данные
  • Есть ли водительские права
  • Семейное положение
  • Прочую «шелуху», которая только отвлечёт рекрутера

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity