Как стать автором
Обновить
0
0

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

Отправить сообщение

С — не низкоуровневый язык

Время на прочтение11 мин
Количество просмотров79K


Ваш компьютер не является быстрой версией PDP-11


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

Меня зовут Антон Довгаль, я С (и не только) разработчик в Badoo.

Мне попалась на глаза статья Дэвида Чизнэлла, исследователя Кембриджского университета, в которой он оспаривает общепринятое суждение о том, что С — язык низкого уровня, и его аргументы мне показались достаточно интересными.

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

Производители процессоров не одиноки в этом. Разработчики компиляторов C/C++ тоже внесли свою лепту.
Читать дальше →
Всего голосов 206: ↑198 и ↓8+190
Комментарии296

Индексы в PostgreSQL — 1

Время на прочтение17 мин
Количество просмотров395K

Предисловие


В этой серии статей речь пойдет об индексах в PostgreSQL.

Любой вопрос можно рассматривать с разных точек зрения. Мы будем говорить о том, что должно интересовать прикладного разработчика, использующего СУБД: какие индексы существуют, почему в PostgreSQL их так много разных, и как их использовать для ускорения запросов. Пожалуй, тему можно было бы раскрыть и меньшим числом слов, но мы втайне надеемся на любознательного разработчика, которому также интересны и подробности внутреннего устройства, тем более, что понимание таких подробностей позволяет не только прислушиваться к чужому мнению, но и делать собственные выводы.

За скобками обсуждения останутся вопросы разработки новых типов индексов. Это требует знания языка Си и относится скорее к компетенции системного программиста, а не прикладного разработчика. По этой же причине мы практически не будем рассматривать программные интерфейсы, а остановимся только на том, что имеет значение для использования уже готовых к употреблению индексов.

В этой части мы поговорим про разделение сфер ответственности между общим механизмом индексирования, относящимся к ядру СУБД, и отдельными методами индексного доступа, которые в PostgreSQL можно добавлять как расширения. В следующей части мы рассмотрим интерфейс метода доступа и такие важные понятия, как классы и семейства операторов. После такого длинного, но необходимого введения мы подробно рассмотрим устройство и применение различных типов индексов: Hash, B-tree, GiST, SP-GiST, GIN и RUM, BRIN и Bloom.
Читать дальше →
Всего голосов 104: ↑103 и ↓1+102
Комментарии59

Интерактивное видео и с чем его едят

Время на прочтение8 мин
Количество просмотров16K
Полгода назад за чашечкой кофе программист, режиссер и геймдизайнер вели дружескую беседу на тему того, что кинематограф становится скучным. «Да, спецэффекты становятся круче, количество D становится больше, но этим сейчас малого кого можно удивить. Людей цепляет сюжет. А теперь представьте, что когда-нибудь мы будем смотреть смотреть фильмы, которыми можно управлять?»
— Я бы убил Джона Коннора.
— А я бы не выбросил бузинную палочку и стал плохим волшебником.
— А я бы на месте Поттера воспользовался маховиком времени, чтобы спасти его родителей, а не клювокрыла.



И, как говорится, понеслось…

На прошлой неделе мы спросили Хабражителей интересно ли узнать о технических аспектах создания игры. Сейчас мы готовы представить плоды нашей работы и рассказать с какими трудностями столкнулись, как с ними боролись и какие результаты получили.
Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии40

Научись командовать

Время на прочтение11 мин
Количество просмотров24K
Захотелось поделиться чудесным процессом разработки, с которым недавно познакомился. Я раньше не видел такого подхода, и люди, как только с ним знакомятся, долго не могут понять и принять такой способ построения игр. И, если честно, я сам понял все не в первую неделю. Но после некоторого освоения я уже забыл как делать игры иначе. В планах написать цикл статей, но начнем с малого и постепенно будем наращивать понимание что и зачем и с чем это есть.

Как кое-кто уже мог догадаться, я сегодня расскажу про паттерн “Command” и как его использовать для разработки игр с использованием движка Unity 3D. Это один из ключевых паттернов в этом подходе. Код будет упрощенным, но рабочим и должен дать понимание процесса.
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии32

Как Облако@mail.ru спасло все* мои файлы и что из этого вышло

Время на прочтение10 мин
Количество просмотров116K


Однажды я увидел этот баннер и решил, что бесплатный терабайт мне совсем не помешает, тем более, что мой архив фотографий и документов как раз лежал на терабайтном винчестере. Признаюсь, я очень опасался ставить на компьютер программу с логотипом mail.ru, но стремление к халяве пересилило. Я зарегистрировался, получил место, установил клиент, настроил его и забыл.

А несколько месяцев назад произошло неизбежное — мой жёсткий диск с архивом приказал долго жить. К счастью, к тому времени все файлы были скопированы в облако и ничего не потерялось.
Но радоваться было рано
Всего голосов 80: ↑72 и ↓8+64
Комментарии118

Новые подкасты о профессиональной разработке под Android

Время на прочтение3 мин
Количество просмотров22K
Привет, Хабрахабр! Мы долго думали, чем порадовать крупнейшее Dev-комьюнити рунета, и решили, что русскоязычные подкасты про Android-разработку от лучших разработчиков в индустрии — самое то. Собрать спикеров, подготовить темы и найти площадку для размещения было непросто, но мы справились. Встречайте!


Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии11

ActiveRecord немного про грабли, Relations и индексы

Время на прочтение8 мин
Количество просмотров23K
Хочу рассказать Вам о наболевшем: о работе с AR в целом и с Relation в частности; предостеречь от стандартных садовых изделий, которые легко могут испортить жизнь и сделать код медленным и прожорливым. Повествование будет основываться на Rails 3.2 и ActiveRecord того же разлива. В Rails 4, конечно же, много чего нового и полезного, но на него ещё перейти нужно, да и фундамент в любом случае один и тот же.

Сей материал, по большей части, предназначен для начинающих, ибо автору очень больно смотреть на извлечение содержимого целых таблиц в память в виде ActiveRecord объектов и на прочие отстрелы конечностей при использовании AR. Разработчикам, познавшим дзен, топик вряд ли принесёт пользу, они могут лишь Помочь, дополнив его своими примерами и назиданиями.
Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии41

Давайте поковыряем This War of Mine глубже: что в игромеханике?

Время на прочтение11 мин
Количество просмотров111K


Игра гениальная. Она ещё год назад взорвала кучу изданий тем, как быстро и эффективно доносит до игрока ужасы войны. Поэтому предлагаю забраться немного «под капот». Сразу говорю — игра не наша, и отношения к нам не имеет.

Вообще, я, пожалуй, стану на протяжении пары месяцев рассказывать про хардкор gamedev, точнее, того, что наши коллеги называют game science. Начну с простых и понятных вещей. С далеко не идеальной игромеханики, работающей при этом как часы. Или как удар в голову.

Итак, напомню: основная задача игры — погрузить человека в состояние «быть гражданским на войне и попробовать выжить», чтобы даже до самых отмороженных дошло, как это плохо. Соответственно, всё остальное строится именно вокруг этого. При этом сама по себе игра должна быть:
  • Интересной.
  • С простым порогом входа.
  • Реалистичной для задач погружения.

Ясное дело, создатели немного намухлевали — но это становится заметно только после детального разбора. Ясно, что логика сеттинга иногда спорит с механикой и геймплеем. Ясно, что недостатков куча, но всё в целом — очень крутое. Поэтому поехали докапываться до мелочей.

Внимание, ниже немного спойлеров и много скриншотов (трафик).
Читать дальше →
Всего голосов 69: ↑62 и ↓7+55
Комментарии77

Deploy приложения на RoR 4 с помощью Capistrano 3

Время на прочтение16 мин
Количество просмотров63K

Представьте: Вы — веб-разработчик, который только недавно освоил Ruby on Rails. И тут Ваш первый проект подходит к стадии, когда его нужно выложить в интернет.
Вы, конечно, можете залить его на Heroku, но тамошние цены немного кусаются. Остается только купить VPS, настроить его и выложить проект туда.
«Что может быть проще? Найду какой-нибудь гайд, да следаю всё по нему» — подумаете Вы. Вот только гайдов, которые не просто выкладывают команды, но и объясняющие, что эти команды делают, — единицы, да и те используют уже устаревшую вторую версию Capistrano.

Поэтому я решил написать свой гайд, в котором постараюсь подробно рассмотреть:
  • Первичную настройку сервера
  • Установку и настройку nginx (с модулем PageSpeed), postgresql, redis
  • Установку rvm, rails
  • Настройку гема foreman для управления процессами Вашего приложения
  • Настройку сервера Unicorn
  • Настройку гема Capistrano (v3.1) для автоматизации деплоя


Я надеюсь, что этот гайд будет полезен не только новичкам, но и разработчикам со стажем.

Читать дальше →
Всего голосов 27: ↑23 и ↓4+19
Комментарии33

Большой список научно-фантастических сериалов

Время на прочтение20 мин
Количество просмотров417K
image
Кадр из заставки сериала «Грань»

Предисловие

На Geektimes и Habrahabr уже были статьи со списком Sci-Fi сериалов (Фантастические сериалы — обзор от фаната, Фантастические сериалы и др.). Но все они либо содержали достаточно мало сериалов и/или поверхностную информацию о них самих, либо были предвзяты в отношении тех или иных сериалов.

В данной публикации я постараюсь предоставить большой список научно-фантастических сериалов. А благодаря голосованию — узнать какие сериалы на самом деле нравятся пользователям Geektimes.
Читать дальше →
Всего голосов 58: ↑47 и ↓11+36
Комментарии189

Фоны старых квестов — методы разработки, секреты, советы

Время на прочтение12 мин
Количество просмотров43K


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

Давайте, впрочем, вернемся к теме сегодняшней публикации. Считаю это маленьким открытием, и мне непременно нужно поделиться им с теми, кто собирается соединить некоторый отрезок своей жизни с тем, что может называться классической адвенчурой. Быть может это поможет вернуть на рынок игры, которые немного оттеснят «хипстерский пиксель» заменив его на то, что может напомнить времена лучших игр от «Westwood Studios», «Sierra» и «Lucas Arts». Предположу вскользь, что множество художников и так знают это. И, тем не менее — я не заметил публикаций на эту тему. Наша братия не спешит делиться своими секретами, сохраняя некую монополию на собственные открытия.

Я хотел приурочить эту статью к началу разработки собственной адвенчуры. Но кто знает, когда это произойдет? А вам эта информация может помочь уже сейчас. Стоит ли откладывать? Думаю, что нет. Лопаты в руки.


Продолжить копать
Всего голосов 107: ↑103 и ↓4+99
Комментарии59

Codebattle: игра для программистов

Время на прочтение1 мин
Количество просмотров41K
Привет, Хабрахабр!

Мы в Хекслете любим не только учиться и учить, но и развлекаться. Но развлекаться по-своему, по-программерски. Поэтому мы запустили Codebattle. Это игра для программистов.

Идея очень простая: вам и сопернику дается задача, вы решаете ее на выбранном вами языке. Вы видите код соперника в реальном времени, результаты запуска тестов и можете общаться с ним и зрителями в чате. Кто первый решит задачу (удовлетворит тестам) — тот победил.


Читать дальше →
Всего голосов 35: ↑31 и ↓4+27
Комментарии58

Аутентификация в Rails-приложениях с помощью Devise. Часть 1: базовая настройка

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

Devise — это ruby-гем, предоставляющий возможности для аутентификации в rails-приложениях. Devise работает в связке с гемом Warden, который в свою очередь предоставляет сам механизм для аутентификации в rack-базированных ruby-приложениях. Основные особенности Devise описаны ниже:
  • основан на Rack;
  • является законченным MVC-решением, основанным на Rails;
  • разрешает вход в систему по нескольким моделям одновременно;
  • основан на модульности: использует только то, что вам действительно необходимо.

Итак, приступим к установке и настройке Devise для вашего rails-приложения. Дальнейший процесс для удобочитаемости будет разбит на отдельные шаги.
Читать дальше →
Всего голосов 29: ↑22 и ↓7+15
Комментарии19

Площадки для браузерных игр

Время на прочтение7 мин
Количество просмотров29K
Допустим, я создал браузерную игру, а что дальше? Если для мобильных — есть магазины Google Play, App Store, Windows Store и куча всяких альтернативных. Можно найти площадки для распространения сборок standalone — Desura, Steam, Itch.io. Но когда задумываешься о судьбе браузерки, то невольно впадаешь в ступор. И куда ее?

Думать о судьбе своего детища необходимо еще на начальном этапе разработки. Так, в случае с Dangerous Insects, я уже знал, где и как буду размещаться, хотя от игры в лучшем случае был только диздок. Вот и с HTML5 захотелось заранее прощупать почву.
Читать дальше →
Всего голосов 19: ↑13 и ↓6+7
Комментарии8

Лайфхаки для веб-разработчика

Время на прочтение3 мин
Количество просмотров44K
Обожаю трюки и лайфхаки. Каждый раз радуюсь, когда удается упростить очередную рутинную операцию. А так как работаю я, вот уже 8 лет, веб-программистом, то рутинные операции и лайфхаки у меня программерские. Вот этим и хочу с вами поделиться.
Часть трюков до меня уже описали на хабре, часть я взял из других источников, часть придумал сам. Буду благодарен если в комментариях к посту вы напишете, какие трюки используете вы.

Использование ** в zsh


Таким образом я ищу файлы в папке по расширению рекурсивно:
ls **/*.json

файлы с размером выше чем 1 мегабайт:
ls -lh **/*(Lm+1)

Быстро и уверенно удаляем мусор из репозитория в python проекте и судорожно правим. gitignore:
git rm --cached **/*.pyc


Читать дальше →
Всего голосов 55: ↑35 и ↓20+15
Комментарии51

Git Wizardry

Время на прочтение17 мин
Количество просмотров449K
1 Введение


В своей прошлой заметке я постарался осветить в общих чертах стиль работы с
распределенной системой контроля версий git и указать на отличия по сравнению с
классическими централизованными СКВ. Целью было прежде всего обобщение опыта
работы с системой без упоминания тонкостей синтаксиса отдельных команд.

Данный же топик задумывался как непосредственное введение в работу с git, нечто
среднее между tutorial и обобщенной справкой, до которого все же рекомендуется
прочитать упомянутое выше введение. Сознательно избегаются технические
подробности работы git, употребляются только общие для СКВ термины и
ограничивается список упоминаемых команд.

Читать дальше →
Всего голосов 89: ↑66 и ↓23+43
Комментарии76

Удаленное редактирование файлов в Sublime Text 2 по SSH

Время на прочтение1 мин
Количество просмотров43K
Речь пойдет об использовании rmate, небольшого скрипта позволяющего из консоли открыть удаленный документ в локальном текстовом редакторе, вместо nano или vim, он был написан для TextMate и те кто перешел на ST2 с этого редактора, наверняка пользуются этим инструментом, да и «матерые разрабы» не найдут в посте много нового, но если вы только начали пользоваться ST2 и единственный инструмент удаленного редактирования о котором вы слышали, это плагин SFTP, добро пожаловать под кат за подробностями.
Читать дальше →
Всего голосов 28: ↑22 и ↓6+16
Комментарии23

Оттачиваем мастерство работы в консоли

Время на прочтение3 мин
Количество просмотров64K
После того, как у меня появился новый монитор на рабочем месте, я начал новую итерацию улучшения своего «безмышечного» (mouse-less, прим. пер.) опыта. Вы же знаете, что это значит, не так ли? Это значит, что каждый раз, когда вы беретесь за мышку, убирая руку с клавиатуры, вы тратите немного времени и энергии. Если вам нужно набирать много текста (а я много пишу кода), это становится существенным.

Так же существует следующий уровень «безмышечного» опыта, когда вы стараетесь избежать труднодоступных клавиш, например Delete, Backspace, Escape или даже Enter.

Если вы держите руки в стандартной позиции для 10-пальцевой слепой печати, более удобно нажать Ctrl-m вместо того, чтобы тянуться мизинцем к энтеру.

image
Читать дальше →
Всего голосов 68: ↑65 и ↓3+62
Комментарии116

Подальше от обыденной реальности: фантастические романы, которые стоит прочитать

Время на прочтение4 мин
Количество просмотров141K
image

Фантастика как жанр заставляет читателей и писателей выйти за пределы разумного, дать волю своему воображению и отправиться в неизведанные миры. За это мы и любим этот жанр. RoboHunter этой осенью предлагает с головой погрузиться в мир научной фантастики.
Читать дальше →
Всего голосов 63: ↑59 и ↓4+55
Комментарии273

Управление сложностью в проектах на ruby on rails. Часть 1

Время на прочтение5 мин
Количество просмотров20K
В этой серии статей я соберу бОльшую часть своего опыта разработки на Ruby on Rails. Эти методики позволяют контролировать сложность и облегчают сопровождение проекта. Большинство из них придумал не я, и, по возможности, буду указывать источник.

Основная проблема проектов на RoR в том, что, как правило, всю логику пытаются уместить в модели, контроллеры и представления. Т.е. код находится только в моделях(ActiveRecord::Base), контроллерах, хэлперах и шаблонах. Такой подход приводит к печальным последствиям: код становится запутанным, долго делаются фичи, появляются регрессии, у разработчиков пропадает мотивация. В качестве примера можно посмотреть на исходники redmine.

Выход из данной ситуации довольно-таки очевидный. Будем делать проекты не на ruby on rails, а с использованием ruby on rails. Как это будет выглядеть: мы никуда не уходим от MVC и Rails, просто пересмотрим Model, View, Controller. Для начала расширим понятие модели. Модель — это не просто класс-наследник ORM. Модель — это вся бизнес логика приложения. Модель включает в себя: модели, сервисы, политики, репозитории, формы и другие элементы, которые я опишу далее. Так же расширим представления. Представления — это шаблоны, презентеры, хелперы, билдеры форм. Контроллеры — это все то, что связано с обработкой запросов: контроллеры, responders.
Читать дальше →
Всего голосов 22: ↑16 и ↓6+10
Комментарии17
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность