Pull to refresh
8
0

QA Engineer

Send message

Из разработчика в PM-а за 90 дней

Reading time21 min
Views24K


В последнее время в сфере IT наблюдается определенная тенденция. Стартапы пренебрегают менеджментом, и все решения, как правило, принимает основатель. Когда стартап начинает расти, возникает необходимость в новых сотрудниках. И тогда срочно требуются менеджеры. Основатель обращается за помощью к своему лучшему разработчику: «Я в беде. Сможешь управлять этой командой вместо меня?»
Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments2

Новый профилировщик памяти в Visual Studio 2015

Reading time3 min
Views29K
Долгие годы С++ программисты, пишущие под Linux язвительно пеняли разработчикам на С++ под Windows отсутствием в Visual Studio нормального профилировщика памяти. Вот в Линуксе, дескать, есть Valgrind, который решает все проблемы, а в студии что: расставляй какие-то макросы, анализируй какие-то логи — мрак. Клевета! Хотя и правда. Вернее, это было правдой до выхода Visual Studio 2015, в которой наконец-то (ура 3 раза!) присутствует нормальный профилировщик памяти, позволяющий ловить утечки памяти с закрытыми глазами, одной левой и даже не просыпаясь!

В этой статье мы посмотрим, что он умеет и как им пользоваться.


Читать дальше →
Total votes 49: ↑43 and ↓6+37
Comments13

Анатомия программы в памяти

Reading time6 min
Views85K
Управление памятью – одна из главных задач ОС. Она критична как для программирования, так и для системного администрирования. Я постараюсь объяснить, как ОС работает с памятью. Концепции будут общего характера, а примеры я возьму из Linux и Windows на 32-bit x86. Сначала я опишу, как программы располагаются в памяти.

Каждый процесс в многозадачной ОС работает в своей «песочнице» в памяти. Это виртуальное адресное пространство, которое в 32-битном режиме представляет собою 4Гб блок адресов. Эти виртуальные адреса ставятся в соответствие (mapping) физической памяти таблицами страниц, которые поддерживает ядро ОС. У каждого процесса есть свой набор таблиц. Но если мы начинаем использовать виртуальную адресацию, приходится использовать её для всех программ, работающих на компьютере – включая и само ядро. Поэтому часть пространства виртуальных адресов необходимо резервировать под ядро.

image

Это не значит, что ядро использует так много физической памяти – просто у него в распоряжении находится часть адресного пространства, которое можно поставить в соответствие необходимому количеству физической памяти. Пространство памяти для ядра отмечено в таблицах страниц как эксклюзивно используемое привилегированным кодом, поэтому если какая-то программа пытается получить в него доступ, случается page fault. В Linux пространство памяти для ядра присутствует постоянно, и ставит в соответствие одну и ту же часть физической памяти у всех процессов. Код ядра и данные всегда имеют адреса, и готовы обрабатывать прерывания и системные вызовы в любой момент. Для пользовательских программ, напротив, соответствие виртуальных адресов реальной памяти меняется, когда происходит переключение процессов:
Читать дальше →
Total votes 62: ↑61 and ↓1+60
Comments24

В чем прелесть Gentoo: Мифы и реальность

Reading time4 min
Views106K
В ходе прочтения этой статьи и комментариев к ней, у меня сформировалось стойкое ощущение, что большинство пользователей, использующих другие дистрибутивы, имеют не совсем верное представление о gentoo-like системах. Скорее всего виновато в этом само словосочетание «source-based».

Кто-то, услышав его, представляет при этом компьютер, дымящийся от усилий, прикладываемых при бесконечной компиляции очередной утилиты. Кто-то вспоминает dependency-hell, который поджидает нас при установке тарболов. Кто-то считает, что это дистрибутив для малолетних шк энтузиастов, готовых родину продать за ускорение системы и снижение времени загрузки на пару секунд. Некоторые бегут в шоке узнав про практически полное отсутствие графических средств администрирования.
Так как я считаю что данный дистрибутив сильно недооценен, и, как следствие, его использует меньше людей чем могло бы (а чем шире сообщество, тем лучше), я решил описать свою, возможно глубоко субъективную, позицию по данному вопросу и постараться убедить читателей, что дистрибутив вовсе не столь брутален и хардкорен, как могло показаться.
Читать дальше →
Total votes 105: ↑82 and ↓23+59
Comments221

Ускоренный курс по нотациям в теории языков программирования

Reading time10 min
Views31K
Программисты часто сталкиваются с проблемами чтения математических нотаций, когда пытаются разобраться с теоретическими основами какого-либо языка программирования. Также с ними толкнулся и я в своих теоретических изысканиях. К счастью, мне очень помогла замечательная статья Джереми Сиека (Jeremy Siek), чьим переводом я хочу с вами поделиться. Надеюсь она поможет многим программистам-«не математикам».
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments4

Как работает yield

Reading time6 min
Views668K
На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

Вот исходный вопрос:
Как используется ключевое слово yield в Python? Что оно делает?

Например, я пытаюсь понять этот код (**):
def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild

Вызывается он так:
result, candidates = list(), [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
        candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
        return result


Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

Подробный и обстоятельный ответ
Total votes 141: ↑136 and ↓5+131
Comments41

10 правил хорошего тона при описании багов

Reading time6 min
Views196K
Здравствуйте, меня зовут Наталья, я инженер по тестированию компании Docsvision.
Иногда, когда я просматриваю ошибки, записанные новенькими (а иногда и старенькими) тестировщиками, рука машинально тянется к лицу. В голове возникает только одна мысль:



«Что? Что я сейчас прочитала?»

В интернете много информации о том, ЧТО обязательно должно присутствовать в баг-репорте. А я решила поделиться с вами своими мыслями о том, КАК нужно писать баг-репорт, чтобы было понятно, о чём вы пишете.
В первую очередь, я писала это для инженеров по тестированию и инженеров технической поддержки, которые передают нам баги, присланные заказчиками. Также моя статья может помочь сформировать описание возникшей проблемы при обращении пользователя в техподдержку: корректное описание позволяет без дополнительных вопросов быстрее обработать инцидент.
Вообще её может быть полезно почитать всем членам команды разработки ПО, которые фиксируют своё общение в багтрекинговой системе.
Читать дальше →
Total votes 56: ↑36 and ↓20+16
Comments65

Code contracts vs валидация входящих данных

Reading time4 min
Views13K
Правила валидации входящих данных часто принимают за контракты в коде (как, собственно, и наоборот). Давайте разберемся в чем отличие между этими двумя понятиями и в каких случаях они применимы.
Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments16

30 бесплатных онлайн-курсов, которые помогут запустить свой бизнес

Reading time1 min
Views29K
Впереди — последний месяц лета. Как его провести — решает каждый сам для себя. Я же предлагаю вам провести время с пользой для дела. Представляю 30 бесплатных онлайн-курсов по бизнесу и предпринимательству, которые помогут вам запустить свое дело с нуля: от генерации бизнес-идеи и оценки бизнес-плана до ведения собственной бухгалтерии.

image
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments4

Доклад с SQA Days — Тест-дизайн: проще читать или проще писать

Reading time7 min
Views21K
Александр Александров — «дедушка тестирования» в СНГ делал доклад на юбилейной 15-ой SQA Days в Москве.

Слайды:
www.slideshare.net/VLDCORP/ss-33747358

Видео выступления:


Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments0

Читаем электронные книги на английском без словарей и переводчиков

Reading time3 min
Views98K
1. Интро. Личное



Я готовлюсь к языковому экзамену IELTS (International English Language Testing System) — пожалуй, самому популярному
тесту на знание английского. Если хочется эмигрировать, найти работу в международной компании — диплом IELTS очень пригодится. Шкала оценок — от 0 (от испытуемого не удалось получить даже внятного мычания) до 9 (экcперт — испытуемый чертовски хорош и может устроиться даже редактором лондонской газеты).

Для учебы, например, в США, нужно не менее 6.5 баллов (бывает и 6, но не часто), для работы — 7 и выше. А для эмиграции, допустим, в Канаду — чем выше оценка, тем лучше. Мой прогнозируемый балл перед сдачей теста — 5.5. Значит, что я могу читать газеты, смотреть кино, вести беседы в знакомых ситуациях, писать ответы на письма. Но для работы в центральном офисе Гугла явно недостаточно.

Что же делать, чтобы подтянуть уровень языка? Конечно же, начать использовать его в своей жизни как можно чаще и больше. Например, читать книги на английском.
Далее
Total votes 90: ↑88 and ↓2+86
Comments109

Лекции Технопарка. 1 семестр. Web-технологии

Reading time4 min
Views172K
Сегодня этим постом мы открываем цикл еженедельных публикаций учебных материалов Технопарка. Если кто-то ещё не знает, Технопарк — это совместный образовательный проект Mail.Ru Group и МГТУ им. Н. Э. Баумана. На данный момент здесь проходит обучение по 20 IT-дисциплинам 91 наиболее талантливый студент. Технопарк существует с 18 ноября 2011 года, а первые счастливчики приступили к занятиям в декабре 2011 года.

Обучение в Технопарке совершенно бесплатное, оно проходит после занятий в университете. Стать участниками проекта могут студенты 3-5 курсов. Хотя для 2 и 6 курсов можем сделать исключение. Обучение длится 2 года, оно разбито на 4 семестра, в каждом из которых проходят по 3-4 предмета. Первый блок первого семестра посвящён всему, что связано с web-технологиями, от истории возникновения до программирования и безопасности web-приложений.

Лекция 1. Введение


На вводном занятии вы познакомитесь с краткой историей развития интернета, основными трендами в развитии web-приложений, облачных сервисов и мобильных приложений. Также на лекции разобрано устройство и работа несложного web-приложения, обсуждены такие фундаментальные понятия, как система адресации в интернете, домены, HTML-страницы и протокол HTTP. Напоследок кратко рассказано о CGI-скриптах, их назначении и особенностях работы.


Читать дальше →
Total votes 55: ↑51 and ↓4+47
Comments11

Аннотация к «Effective Modern C++» Скотта Майерса

Reading time11 min
Views56K
Пару месяцев назд Скотт Майерс (Scott Meyers) выпустил новую книгу Effective Modern C++. Последние годы он безусловно является писателем №1 «про это», кроме того он блестящий лектор и каждая его новая книга просто обречена быть прочитана пишущими на С++. Более того, именно такую книгу я ждал давно, вышел стандарт С++11, за ним С++14, уже виднеется впереди С++17, язык стремительно меняется, однако нигде так и не были описаны все изменения в целом, взаимосвязи между ними, опасные места и рекомендуемые паттерны.

Тем не менее, регулярно просматривая Хабр, я так и не нашел публикации о новой книге, похоже придется писать самому. На полноценный перевод меня конечно не хватит, поэтому я решил сделать краткую выжимку, скромно назвав ее аннотацией. Еще я взял на себя смелость перегруппировать материал, мне кажется для короткого пересказа такой порядок подходит лучше. Все примеры кода взяты прямо из книги, изредка с моими дополнениями.
Читать дальше →
Total votes 52: ↑52 and ↓0+52
Comments42

Пять популярных мифов про C++, часть 2

Reading time17 min
Views46K
Часть 1

4.2 Разделённое владение shared_ptr

Не у каждого объекта может быть один владелец. Нам надо убедиться, что объект уничтожен и освобождён, когда исчезает последняя ссылка на него. Таким образом, нам необходима модель разделённого владения объектом. Допустим, у нас есть синхронная очередь, sync_queue, для общения между задачами. Отправитель и получатель получают по указателю на sync_queue:

void startup() 
{ 
  sync_queue* p = new sync_queue{200}; // опасность! 
  thread t1 {task1,iqueue,p}; // task1 читает из *iqueue и пишет в *p 
  thread t2 {task2,p,oqueue}; // task2 читает из *p и пишет в *oqueue 
  t1.detach(); 
  t2.detach(); 
} 

Читать дальше →
Total votes 48: ↑43 and ↓5+38
Comments62

58 признаков хорошего интерфейса

Reading time16 min
Views380K
У хорошего интерфейса пользователя высокая конверсия и его просто использовать. То есть, он хорош и для бизнеса, и для использующих его людей. Вот список опробованных нами идей.

1 Один столбец вместо нескольких


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

image
Читать дальше →
Total votes 226: ↑182 and ↓44+138
Comments102

Путь жаворонка 2: At the End of the Rainbow

Reading time6 min
Views32K
В мае сего года я описывал эксперимент по переходу из состояния «совы» в режим «жаворонка» — вставать в 5 утра каждый день. На момент публикации статьи эксперимент продолжался пол месяца и имел следующие результаты и бонусы:
  • Появилось время на занятие гитарой (игра «Rocksmith 2014», утро).
  • Ввиду смещения рабочего графика на час назад, появилась возможность посещать недоступные ранее тренировки (с 18:00).
  • Появилось время на изучение английского языка (доступ в группы с 18:00, утро).
  • Более комфортный путь на работу и с работы (метро до часа пик).
  • Нормальные завтраки.
  • Субъективно увеличилась продолжительность суток

Минусы:
  • Компьютерные игры сошли на нет.
  • Стали меньше смотреть кино. Вообще совместной деятельности в будни стало меньше (хотя в выходные — больше)
  • 6 часов сна, всё же, мало при активном образе жизни, даже (или особенно) если основная активность приходится на мозг.

С тех пор прошло много времени. Получил несколько раз вопросы по разным каналам о результатах. Возможно, кому-то ещё будет интересно. А мне будет полезно упорядочить их в своей голове.
Эксперимент продолжался до конца сентября. Неплохо, если учесть, что изначальная планируемая длительность составляла месяц, а начался он в апреле. Да и нельзя сказать, что он кончился, поскольку изменения в жизни и распорядке произошли существенные. Их можно разбить на две подтемы. Они под катом. Статья содержит только описание личного опыта и является логическим завершением предыдущей.
Читать дальше →
Total votes 23: ↑18 and ↓5+13
Comments25

Для тех, кому влом писать планы

Reading time5 min
Views64K
Рекомендую заранее статью про то, как работать в потоке, и статью про спонтанное планирование (для тех, кто ненавидит тайм-менеджмент).

Суть простая — иногда появляются мысли у людей, типа, почему полно книг «Как...», но почти нет «Зачем...». А многие просто страдают от прокрастинации, и пытаются безуспешно жить по методикам, где требуется железная сила воли и организованность — работа по плану.

Ниже немного моих соображений, как быть тем, у кого эта тема не прет, но нужно как-то организовать свои дела.
Читать дальше →
Total votes 26: ↑18 and ↓8+10
Comments4

6 уроков Flappy Bird для предпринимателей

Reading time7 min
Views33K


Еще несколько месяцев назад, открывая социальную сеть или сайт, вы неизбежно сталкивались с упоминаниями о «Flappy Bird». То, что начиналось, как очередной независимый проект одного-единственного разработчика из Вьетнама, стало глобальной сенсацией, вызвавшей невероятное количество слухов, дискуссий и загадок, а также суматоху, отчужденность и безмерный гнев.

Хотел ли создатель игры Донг Нгуен (Dong Nguyen) намеренно вызвать что-то из вышеперечисленного? Ни в малейшей степени. После того, как буря улеглась, он впервые нарушил свое молчание с тех пор, как удалил игру из магазинов приложений для iOS и Android, сказав, что он сделал это ради блага самих же игроков, т.к. боялся, что игра вызывает слишком сильную зависимость. Гипотетически, это совсем даже неплохо для разработчика игр.

Но немного вникнув, я подумал, что бесценные уроки из этого могут извлечь не только независимые разработчики игр, надеющиеся создать еще одну Flappy Bird, но и начинающие, а также уже действующие предприниматели любой сферы деятельности. Так что давайте почтим память ныне покойной птички, запомнив все то, чему она нас научила, и подумав, как мы можем нести это наследие дальше, применяя некоторые из ее уроков на практике.
Читать дальше →
Total votes 35: ↑25 and ↓10+15
Comments11

Проектирование RESTful API с помощью Python и Flask

Reading time15 min
Views276K
В последние годы REST (REpresentational State Transfer) стала стандартной архитектурой при дизайне веб-сервисов и веб-API.

В этой статье я покажу вам как просто создавать RESTful веб-сервисы используя Python и микрофреймворк Flask.

Что такое REST?


Характеристика системы REST определяется шестью правилами дизайна:

  • Клиент-Сервер: Должно быть разделение между сервером, который предлагает сервис и клиентом, который использует ее.
  • Stateless: Каждый запрос от клиента должен содержать всю информацию, необходимую серверу для выполнения запроса. Другими словами, сервер не обязан сохранять информацию о состоянии клиента.
  • Кэширование: В каждом запросе клиента должно явно содержаться указание о возможности кэширования ответа и получения ответа из существующего кэша.
  • Уровневая система: Клиент может взаимодействовать не напрямую с сервером, а с произвольным количеством промежуточных узлов. При этом клиент может не знать о существовании промежуточных узлов, за исключением случаев передачи конфиденциальной информации.
  • Унификация: Унифицированный программный интерфейс сервера.
  • Код по запросу: Сервера могут поставлять исполняемый код или скрипты для выполнения их на стороне клиентов.

Читать дальше →
Total votes 40: ↑33 and ↓7+26
Comments32

Параллельное программирование с CUDA. Часть 1: Введение

Reading time11 min
Views128K

Еще одна статья о CUDA — зачем?


На Хабре было уже немало хороших статей по CUDA — раз, два и другие. Однако, поиск комбинации «CUDA scan» выдал всего 2 статьи никак не связанные с, собственно, алгоритмом scan на GPU — а это один из самых базовых алгоритмов. Поэтому, вдохновившись только что просмотренным курсом на Udacity — Intro to Parallel Programming, я и решился написать более полную серию статей о CUDA. Сразу скажу, что серия будет основываться именно на этом курсе, и если у вас есть время — намного полезнее будет пройти его.
Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments36

Information

Rating
Does not participate
Location
Железнодорожный (Московск.), Москва и Московская обл., Россия
Date of birth
Registered
Activity