Pull to refresh
80
0

Пользователь

Send message

Сергей Зонов: «Первый „Спектрум“ я сделал потому, что мне было интересно»

Reading time12 min
Views49K


Музей DataArt существует 10 лет, некоторые экспонаты мы уже представляли в виде постеров. Коллекция продолжает расширяться, но теперь мы решили дополнить ее интервью с людьми, повлиявшими на историю ИТ. Это первый из серии исторических материалов, которые будут выходить в нашем блоге регулярно.

В первой половине 1980-х популярным компьютером в Европе был ZX Spectrum. Когда он пришел в СССР, местные умельцы начали его копировать, перерабатывать и улучшать. Одним из тех, кто сделал свой вариант «Спектрума», был Сергей Зонов. По его схемам собраны десятки тысяч компьютеров.
Читать дальше →

Способы тестирования программного обеспечения

Reading time6 min
Views45K
Всем привет! Уже на следующей неделе мы запускаем новый поток по курсу «Автоматизация веб-тестирования». Этому и будет посвящен сегодняшний материал.

В этой статье рассматриваются различные способы тестирования программного обеспечения, такие как модульное тестирование (unit testing), интеграционное тестирование (integration testing), функциональное тестирование (functional testing), приемочное тестирование (acceptance testing) и т.д.



Есть множество разных типов тестов, которые вы можете применить, чтобы убедиться, что изменения в вашем коде работают по сценарию. Не все типы тестирования идентичны, хотя здесь мы рассмотрим, насколько основные практики тестирования отличаются друг от друга.

Тестирование: ручное или автоматизированное?

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

Король разработки

Reading time15 min
Views213K


Я знаю одного человека — он хороший разработчик, но полнейшая скотина. Когда он начинает говорить, хочется набить ему морду, заткнуть как угодно, лишь бы не слышать, насколько он прав. И эту сумасбродную самоуверенную сволочь еще кто-то слушает, ему поддакивают. Видимо, люди любят сволочей, и им стоит как следует поразмыслить почему.

Полбеды, если он просто шутит, вроде, «разработка приносит мне столько бабок, что поработаю два часа и найму трех нищих врачей стричь мне лужайку». Хуже, когда говорит серьезно: «Ты зря стал писать код. Вся ирония этой индустрии в том, что став хорошим разработчиком, ты обретаешь навыки, которые приводят тебя к выводу, что разработчиком быть плохо».

Недавно у него дела пошли в гору, и там где нормальные люди радуются и расцветают, этот парень, кажется, совсем съехал с катушек. Мы с ним как следует выпили, и он рассказал мне много искреннего дерьма, которое, честно, я бы хотел расслышать обратно.
Читать дальше →

Простой москвич Levelord: интервью с создателем Duke Nukem

Reading time18 min
Views27K
RUVDS совместно с Хабром продолжают проект, состоящий из серии интервью с интересными, на наш взгляд людьми в IT-среде. В прошлый раз мы познакомились с главным «по мозгам» Алисы в Яндексе Борисом Янгелем.

Сегодня представляем вашему вниманию интервью с Ричардом (Levelord) Греем. Levelord — дизайнер легендарных игр Duke Nukem, American McGee’s Alice, Heavy Metal F.A.K.K.2, SiN, Serious Sam, автор знаменитой фразы «You’re not supposed to be here». Ричард родился и провел большую часть жизни в США, но несколько лет назад переехал в Москву к русской жене и дочери.

В интервью принимали участие редактор Хабра Николай Землянский и управляющий партнер RUVDS Никита Цаплин.


→ Англоязычная версия текста и видео здесь

8 приемов работы с CSS: параллакс, «липкий» футер и другие

Reading time4 min
Views64K


От переводчика: перевели для вас статью Брета Кэмерона о хитростях в работе с CSS. Многие моменты пригодятся не только новичкам, но и опытным разработчикам.

Эта статья о приемах работы в CSS, узнав о которых, я восклицал: «Агаааа!». Надеюсь, вы тоже сделаете пару открытий.

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

Я покажу несколько приемов и расскажу о принципах их использования в CSS. Сама по себе статья не о сложностях. Наоборот, она призвана сделать вашу работу более комфортной.

Как были устроены паровозы

Reading time6 min
Views55K


Так выглядит кабина паровоза «Серго Орджоникидзе» (это СО17-1137). Множество трубок сверху — это пароразборная колонка, к каждому потребителю отходит своя труба. А потребителей в уже достаточно зрелом технически паровозе много: две паровые машины слева и справа для движения колёс, свисток, механический углеподатчик, инжекторы для закачки воды, электрический генератор для освещения, насос для воздушной магистрали и так далее.

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

Introscope: ну очень ленивое unit-тестирование

Reading time2 min
Views3.3K

Мы на работе пишем много часто меняющейся бизнес-логики на JS (стартап же). Даже слишком много. И всё это хочется по старой привычке тестировать, но как-нибудь побыстрее, чтобы тесты особо не мешали говнокодить, когда это нужно, и не подгонять под тесты особенно сильно структуру модулей. В какой-то момент пришла мысль, что можно это еще и автоматизировать как-то с помощью простенького babel-плагина, чтобы он для начала все приватные переменные и методы выворачивал в тестовой среде, а в продакшене не трогал. Это оказалось довольно просто и увлекательно. Так появился Introscope, которым мы теперь тестируем всё более-менее сложное.

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

Браузерный сетевой шутер на Node.js

Reading time17 min
Views24K
Разработка многопользовательских игр сложна по множеству причин: их хостинг может оказаться дорогим, структура — неочевидной, а реализация — трудной. В этом туториале я постараюсь помочь вам преодолеть последний барьер.

Статья предназначена для разработчиков, умеющих создавать игры и знакомых с JavaScript, но никогда раньше не писавших мультиплеерные онлайн-игры. Завершив этот туториал, вы освоите реализацию базовых сетевых компонентов в своей игре и сможете развить её во что-то большее! Вот, что мы будем создавать:


Поиграть в готовую игру можно здесь! При нажатии клавиш W или «вверх» корабль приближается к курсору, при щелчке мыши — стреляет. (Если никого нет онлайн, то чтобы проверить, как работает мультиплеер, откройте два окна браузера на одном компьютере, или одно из них на телефоне, ). Если вы хотите запустить игру локально, то полный исходный код выложен на GitHub.
Читать дальше →

Нил Стивенсон: голод инноваций, большие проекты и научная фантастика

Reading time11 min
Views24K
«Седой ветеран из NASA как-то сказал мне, что посадка на Луну корабля серии «Аполлон» было самым великим достижением коммунизма.»
«Это же вы, вы ослабили хватку!» – объявил Майкл Кроу, президент университета штата Аризона. Конечно же, он обращался к писателям Научной Фантастики. Он как будто бы говорит, что ученые и инженеры в боевой готовности и ищут, чем бы таким себя занять. Пришло время писателям НФ начать выполнять свою часть работы и подпитывать нас большими мечтами, полными смысла.
image

Я успел застать тот период, когда у Соединенных Штатов Америки появилась возможность отправлять людей в космос. У меня сохранились самые ранние воспоминания о том, как я сидел на плетеном коврике перед гигантским черно-белым телевизором и смотрел первые запуски кораблей серии «Джемини». Этим летом, в возрасте 51 года (прим. пер. статья 2011 года), совсем даже не преклонном, я смотрел по телевизору с плоским экраном как последний коспический корабль «Шаттл» покинул пусковую площадку. Видя, как программа по освоению космоса приходила в упадок, меня одолевали печаль и горечь. Где моя космическая станция тороидальной формы? Где мой билет на Марс? Хотя, до недавнего момента, я держал свои чувства при себе. У программы исследования космоса всегда были свои противники, но жалобы на спад активности в данной сфере означают поставить себя под удар, чем незамедлительно воспользуются те, в ком нет сострадания к состоятельному, белому американцу средних лет, детские мечты которого так и не воплотились в жизнь.

Тем не менее, я обеспокоен тем, что наша неспособность соответствовать достижениям программы по освоению космоса 60-х годов может быть симптомом общей несостоятельности нашего общества доводить до ума крупные проекты. Мои родители, бабушки и дедушки были свидетелями создания самолета, автомобиля, ядерной энергии, и компьютера – вот лишь несколько примеров.
Читать дальше →

Задачи с собеседований (front-end)

Reading time18 min
Views343K
Так получилось, что за свою карьеру front-end разработчика, я побывала на многих собеседованиях. Тема прохождения интервью не теряет своей актуальности, а в комментариях, когда речь заходит о собеседованиях, начинают ломаться копья. Хочу тоже внести свой вклад и поделиться накопившейся коллекцией вопросов. Прошу.

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

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

Reading time2 min
Views5.2K
Создавая кнопки в уведомлении нельзя просто назначить им слушатели, как мы привыкли делать редактируя интерфейс пользователя. Основным способом назначения действий в уведомлении являются интенты (Intent) — намерения.

И если для того, чтобы назначить кнопке действия перехода в какую-либо Activity достаточно просто создать соответствующий интент, внутри которого и будет описано необходимое действие, а именно — откуда и куда переходим, то в нашем случае необходимо будет сделать следующее: назначить кнопке намерение, передать ему Action для работы с интент фильтром, создать BroadcastReciver, который будет вылавливать наш Intent и уже тогда выполнять необходимый нам метод.
Читать дальше →

Рогозин — не первый: интервью с разработчиком систем жидкостного дыхания Андреем Филиппенко

Reading time34 min
Views30K

Первые эксперименты с жидкостным дыханием, 1987 год, личный фотоархив А. В. Филиппенко.

19 декабря вице-премьер Дмитрий Рогозин продемонстрировал президенту Сербии технологию жидкостного дыхания. Для этого в сосуд с прозрачной жидкостью погрузили сопротивляющуюся таксу по кличке Николас. Через несколько десятков секунд живое животное достали и слили жидкость из лёгких собаки.

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

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

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

16 тонн. Как я спасал гибнущий под нагрузкой сайт на WordPress, имея весьма поверхностные знания в области этой CMS

Reading time8 min
Views43K
Статья будет короткой и сумбурной — я пишу ее с целью скоротать пару часов перед тем как начать откатывать сайт к предыдущему «нормальному» состоянию.

Эта история началась пять часов назад. Ко мне обратился владелец одного тематического новостного сайта. Тематика — спортивные соревнования. У сайта есть две проблемы. Во-первых, в моменты крупных и сильно ожидаемых состязаний количество посетителей на сайте увеличивается на порядок. Вторая проблема — он сделан на WordPress, причем довольно небрежно. Думаю, что изначально это был обычный WP-сайт. Но потом он многократно «дорабатывался»: куда ни попадя втыкались разные рекламные блоки, вводились новые «решения», ставились всякие плагины для «оптимизации» и расширения возможностей. Кроме того, каждый день, на протяжении нескольких лет, появлялось около десятка постов. Размер БД — несколько гигабайт, ‘upload’ идет на десятки гигабайт. Со временем сайт превратился во что-то похожее на это:

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

Проект Cybersyn. Неудачная попытка создать технократию

Reading time13 min
Views37K


Желание что-нибудь автоматизировать — один из главных двигателей прогресса на протяжении всего XX века. От крупных производств этот процесс плавно перекинулся на повседневную жизнь и принялся штурмовать новые рубежи: в 60-е годы на волне создания мощных серийных ЭВМ и развития кибернетики стали появляться идеи масштабных автоматизированных систем управления. Особенно они казались привлекательным для социалистических государств с плановой экономикой.

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

Спасаясь от нищеты, преподаватели предлагают секс за деньги и спят в автомобилях

Reading time8 min
Views43K
Адъюнкт-профессора США сталкиваются с низкой зарплатой и удлинённым рабочим днём, не получают страховок и полноценных зарплат. Некоторые из них, опасаясь оказаться на улице, прибегают к отчаянным мерам



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

В первый раз она занялась непрофильной работой в особенно сложный период, случившийся несколько лет назад, когда её учебную нагрузку внезапно урезали вдвое, и её доход резко просел, из-за чего её чуть не выселили из дома. «Я тогда подумала – ну у меня в жизни же были случаи, когда я занималась сексом один раз и потом прощалась с человеком – чего тут такого ужасного? — говорит она. – Ну и ничего страшного в этом не было».
Читать дальше →

Как работает JS: управление памятью, четыре вида утечек памяти и борьба с ними

Reading time18 min
Views97K
[Советуем почитать] Другие 19 частей цикла
Часть 1: Обзор движка, механизмов времени выполнения, стека вызовов
Часть 2: О внутреннем устройстве V8 и оптимизации кода
Часть 3: Управление памятью, четыре вида утечек памяти и борьба с ними
Часть 4: Цикл событий, асинхронность и пять способов улучшения кода с помощью async / await
Часть 5: WebSocket и HTTP/2+SSE. Что выбрать?
Часть 6: Особенности и сфера применения WebAssembly
Часть 7: Веб-воркеры и пять сценариев их использования
Часть 8: Сервис-воркеры
Часть 9: Веб push-уведомления
Часть 10: Отслеживание изменений в DOM с помощью MutationObserver
Часть 11: Движки рендеринга веб-страниц и советы по оптимизации их производительности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 13: Анимация средствами CSS и JavaScript
Часть 14: Как работает JS: абстрактные синтаксические деревья, парсинг и его оптимизация
Часть 15: Как работает JS: классы и наследование, транспиляция в Babel и TypeScript
Часть 16: Как работает JS: системы хранения данных
Часть 17: Как работает JS: технология Shadow DOM и веб-компоненты
Часть 18: Как работает JS: WebRTC и механизмы P2P-коммуникаций
Часть 19: Как работает JS: пользовательские элементы
В третьем материале из серии, которая посвящена особенностям работы JavaScript, мы поговорим о памяти. Эта тема крайне важна, однако, разработчики нередко игнорируют её. В основе этой ситуации лежат разные причины, среди которых — всё возрастающая сложность современных языков программирования и прогресс в развитии средств автоматического управления памятью. Помимо рассказа о модели памяти JS, мы поделимся с вами несколькими советами, направленными на борьбу с утечками памяти.



По словам автора статьи, в компании SessionStack используют приёмы предотвращения утечек памяти для того, чтобы не допустить неоправданно высокого потребления памяти в веб-приложениях, в которые интегрированы их разработки.
Читать дальше →

Как работает JS: цикл событий, асинхронность и пять способов улучшения кода с помощью async / await

Reading time21 min
Views191K
[Советуем почитать] Другие 19 частей цикла
Часть 1: Обзор движка, механизмов времени выполнения, стека вызовов
Часть 2: О внутреннем устройстве V8 и оптимизации кода
Часть 3: Управление памятью, четыре вида утечек памяти и борьба с ними
Часть 4: Цикл событий, асинхронность и пять способов улучшения кода с помощью async / await
Часть 5: WebSocket и HTTP/2+SSE. Что выбрать?
Часть 6: Особенности и сфера применения WebAssembly
Часть 7: Веб-воркеры и пять сценариев их использования
Часть 8: Сервис-воркеры
Часть 9: Веб push-уведомления
Часть 10: Отслеживание изменений в DOM с помощью MutationObserver
Часть 11: Движки рендеринга веб-страниц и советы по оптимизации их производительности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 13: Анимация средствами CSS и JavaScript
Часть 14: Как работает JS: абстрактные синтаксические деревья, парсинг и его оптимизация
Часть 15: Как работает JS: классы и наследование, транспиляция в Babel и TypeScript
Часть 16: Как работает JS: системы хранения данных
Часть 17: Как работает JS: технология Shadow DOM и веб-компоненты
Часть 18: Как работает JS: WebRTC и механизмы P2P-коммуникаций
Часть 19: Как работает JS: пользовательские элементы

Перед вами четвёртая часть серии материалов, посвящённых внутренним особенностям работы JavaScript. Эти материалы, с одной стороны, направлены на изучение базовых элементов языка и экосистемы JS, с другой, содержат рекомендации, основанные на практике разработки ПО в компании SessionStack. Конкурентоспособное JS-приложение должно быть быстрым и надёжным. Создание таких приложений — та цель, к которой, в конечном счёте, стремится любой, интересующийся механизмами JavaScript.

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

Моноиды, полугруппы и все-все-все

Reading time12 min
Views45K

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


Mark Seeman расскажет о функциональном программировании просто и быстро. Для этого он начал писать цикл статей, посвященных связи между паттернами проектирования и теорией категорий. Любой ООПшник, у которого есть 15 минут свободного времени, сможет заполучить в свои руки принципиально новый набор идей и инсайтов, касающихся не только функциональщины, но и правильного объектно-ориентированного дизайна. Решающим фактором является то, что все примеры — это реальный код на C#, F# и Haskell. Этот хабрапост — перевод самого начала цикла, первых трех статей, слитых воедино для удобства понимания.


Кроме того, с Марком можно пообщаться вживую, посетив конференцию DotNext 2017 Moscow, которая состоится 12-13 ноября 2017 г. в Москве, в «Славянская Рэдиссон». Марк прочитает доклад на тему «From dependency injection to dependency rejection». Билеты можно взять здесь.

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

Весь веб на 60+ FPS: как новый рендерер в Firefox избавился от рывков и подтормаживаний

Reading time16 min
Views68K
До релиза Firefox Quantum остаётся всё меньше времени. Он принесёт множество улучшений в производительности, в том числе сверхбыстрый движок CSS, который мы позаимствовали у Servo.

Но есть ещё одна большая часть технологии Servo, которая пока не вошла в состав Firefox Quantum, но скоро войдёт. Это WebRender, часть проекта Quantum Render.



WebRender известен своей исключительной скоростью. Но главная задача — не ускорить рендеринг, а сделать его более плавным.

При разработке WebRender мы поставили задачу, чтобы все приложения работали на 60 кадрах в секунду (FPS) или лучше, независимо от размера дисплея или от размера анимации. И это сработало. Страницы, которые пыхтят на 15 FPS в Chrome или нынешнем Firefox, летают на 60 FPS при запуске WebRender.

Как WebRender делает это? Он фундаментальным образом меняет принцип работы движка рендеринга, делая его более похожим на движок 3D-игры.
Читать дальше →

Как я браузерный 3D-футбол писала. Часть 1

Reading time8 min
Views22K
Привет, Хабр! Хочу поделиться историей о том, как я браузерный 3D-футбол писала. Началось всё с того, что мой муж любит футбол. Смотрит трансляции, ходит на игры, играет на телефоне. И вот, чтобы сделать ему сюрприз, а также, чтобы хоть ненадолго оторвать от девайса с игрой, решила написать свою игру.



Под катом я расскажу как дружила TypeScript и Three.js и что из этого получилось.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Registered
Activity