Pull to refresh
0
0
Язовцев Сергей @nimbler

User

Send message

Улучшаем GNOME 3

Reading time2 min
Views98K
Привет, Хабралюди!

image

После обновления своего дистрибутива (Russian Fedora) я столкнулся с большим количеством проблем в GNOME 3. В этой статье я постараюсь описать все, собранные мной, методы их решения. Кому интересно, под кат!
Читать дальше →

Создание фреймворка для Canvas: объекты и мышь

Reading time4 min
Views8.1K


Среди вопросов на счёт Canvas чаще всего звучали вопросы по внутренностям фреймворков — как понять, что мышка находится над элементом, как это реализовано в фреймворках. В топике мы реализуем подобный Canvas фреймворк на базе AtomJS.

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

Спрайтовая анимация на CSS 3

Reading time6 min
Views16K
Спрайтовая анимация — одна из тех вещей, которые при всей своей примитивности успешно работают и применяются в компьютерной графике и играх уже больше четверти века. Даже в трехмерных играх есть спрайты — например, билборды взрывов. Во многих браузерных и флеш-играх применяют именно спрайтовую анимацию, так как она очень проста и не требует высокой производительности — просто переключай кадры и все! А с появлением анимации в CSS 3 стало возможным использовать спрайты на своих страницах без яваскриптов.
Подробнее об этом - под катом

Разработка браузерной стратегии

Reading time7 min
Views37K
Всем привет!

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

image

Что представляет собой игра? Видимо наиболее коротким описанием будет «клон Цивилизации» =). Но это не значит что у меня не хватило фантазии придумать что-то свое. Просто сделать «Цивилизацию» было моей мечтой. Вряд ли бы я получил столько удовлетворения от написания другой игры. Ну а фанаты Цивилизации наоборот считают, что моя игра совсем не похожа на Цивилизацию, разве что только с виду. Может это и к лучшему.

Игра называется The Fate of Nation http://fatenation.com

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

Для создания игры я использовал php и MySQL на сервере, html и javascript на клиенте. Flash не используется. Из html5 есть только видео на сайте и несколько областей с канвасом в самой игре — включая поверхность карты и мини-карту. Объем кода клиентской части в несколько раз превышает серверную часть, поэтому в основном буду рассказывать о клиентской разработке, но начнем с сервера.

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

Класс-клиент goo.gl и настройка API

Reading time4 min
Views36K
UPD: репозиторий теперь на Гитхабе.

Здравствуйте, коллеги!

Помню, в свое время меня очень обрадовала новость, что у гугловской сокращалки урлов появились официальные API. В то время я как раз разрабатывал приложение, которому часто требовалось сокращать ссылки новостных лент. Я как раз прикручивал bit.ly, но испытал соблазн попробовать новый сервис от Гугла. Воспользовавшись документацией, я за несколько часов набросал базовый функционал и встроил скрипт в проект.

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

Основные возможности и особенности класса от конкурентов:
Читать дальше →

Dropbox как Git репозиторий

Reading time1 min
Views18K


Хочу поделиться хорошим способом хранения главного репозитория.

Делается это созданием bare—репозитория в папке Dropbox'a:

~/Project $ git init
~/Project $ git add .
~/Project $ git commit -m "first commit"
~/Project $ cd ~/Dropbox

~/Dropbox $ mkdir Repos/YourProject.git
~/Dropbox $ cd Repos/YourProject.git
~/Dropbox $ git init --bare
~/Dropbox $ cd ~/Project

~/Project $ git remote add origin ~/Dropbox/Repos/YourProject.git
~/Project $ git push origin master

Клонируем проект из Вашего репозитория, привязанного к Dropbox аккаунту:

clone ~/Dropbox/Repos/YourProject.git

Теперь можно совершать любые Git операции, которые будут синхронизированы со всеми рабочими машинами.
Все то же самое можно сделать с любым gui клиентом для Git.
Читать дальше →

Как написать ПингПонг при помощи LibCanvas

Reading time7 min
Views7.8K

День добрый. В этом топике я расскажу, как сделать ping-pong при помощи LibCanvas. Я значительно упростил её, оставив только самую важную часть, так как цель топика не создать игру ping-pong, а объяснить основы LibCanvas.

Итак, в топике пошаговая инструкция, как создать ping-pong при помощи LibCanvas (без оптимизаций).
Читать дальше →

Новости LibCanvas

Reading time2 min
Views1.7K
Где-то полгода назад я выкладывал несколько топиков про LibCanvas. Потом было затишье на Хабре, но не в репозитории. Работа активно продвигалась и библиотека обрела новые силы, возможности и базовую документацию.
Читать дальше →

Популярные вопросы на собеседовании по C++ и ответы на них

Reading time9 min
Views352K
Здравствуйте!

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

О том, что спрашивают на собеседовании у C++ программистов, а также об ответах на эти вопросы и пойдет речь в данном посте.
Читать дальше →

Безопасность систем мгновенного обмена сообщениями на базе протокола XMPP: настоящее и будущее

Reading time5 min
Views7.7K
Все чаще многие используют решения на основе протокола XMPP (Jabber) для мгновенного обмена сообщениями, в той или иной степени отказываясь от ICQ. Данный подход, безусловно, является правильным ввиду открытости Jabber – каждый может выбрать какой сервер ему использовать или же вовсе организовать работу своего собственного. Также протокол XMPP прекрасно себя зарекомендовал в корпоративной среде и многие компании уже несколько лет успешно используют Jabber наравне с электронной почтой для обмена информацией.
Принято считать, что коммуникационные решения на базе протокола Jabber являются наименее уязвимыми с точки зрения информационной безопасности. В данной статье я постараюсь проанализировать так ли это на самом деле и какие реальные перспективы имеет протокол XMPP в этом направлении. Вопрос будет рассмотрен в контексте использования протокола для обмена сообщениями как в личных целях на публичных и частных сервисах, так и в корпоративных условиях.

Jabber для личного общения

Нежелательные сообщения

Для личного общения Jabber массово стал использоваться сравнительно недавно, что обуславливает фактическое отсутствие коммерческого спама (или spim’а в терминологии XMPP Standards Foundation). Я специально акцентировал внимание на отсутствии именно коммерческого спама, поскольку в настоящий момент на крупных jabber-серверах имеют место единичные рассылки, которые организовываются при помощи скриптов на Python «школьниками » just for fun и не направлены на продвижение каких-либо товаров и услуг. В ближайшее время возможно появление коммерческого спама в Jabber, однако массового развития как в ICQ он получить не должен. О предпосылках этого хорошо написано в этом посте.
Читать дальше →

Копируем исходный код без нумерации строк

Reading time6 min
Views26K

Бывает при выводе информации требуется ее декорировать для лучшего восприятия, нередко оформление сопровождается в том числе и текстом. При выделении и копировании этой информации, оформление копировать не нужно, т.к. нужна только сама информация, и желательно в исходном виде. То есть при копировании часть выделенного текста не должна попадать в буфер обмена.
В моем случае это исходный код, который сопровождается нумерацией строк, так нагляднее и есть возможность сослаться на строку кода. Однако, если мы хотим скопировать часть кода, то он должен копироваться без номера строки.
Многие highlighter'ы этим грешат, при копировании кода копируют в том числе и номера строк. Выходят из ситуации по разному: либо используют хитрую верстку, при которой возможно несовпадении нумерации со строками (можно заметить на github например), или используют специальную кнопку, которая показывает в отдельном окне код без форматирования. Мне показались эти подходы неудовлетворительными, потому решил найти другое решение.
В данной заметке я опишу решение, к которому в итоге пришел. Решение, конечно, частное, но может кому то оказаться полезным в решении собственных задач.
Читать дальше →

Правильная организация файлов или наше спасение в наших руках

Reading time4 min
Views46K
imageЯ не открою Америку, если скажу, что способ организации файлов в современных ФС мягко говоря не совсем удобен для конечного пользователя. И действительно: иерархическая модель представления данных на основе файлов и каталогов, не менявшаяся уже несколько десятков лет, просто не способна соответствовать современным потребностям в хранении большого количества разнородного контента. И если с музыкальной информацией все более-менее хорошо, благодаря таким медиа-библиотекам, как iTunes или Amarok, то с файлами остальных форматов ситуация до сих пор остается очень печальной.
Читать дальше →

Статический анализ Си++ кода и новый стандарт языка C++0x

Reading time18 min
Views6K
Аннотация
Введение
1. auto
2. decltype
3. Ссылка на временный объект (R-value reference)
4. Правые угловые скобки
5. Лямбда-функции (Lambdas)
6. Suffix return type syntax
7. static_assert
8. nullptr
9. Новые стандартные классы
10. Новые направления в развитии статических анализаторов кода
Заключение
Библиографический список

Аннотация


В статье рассмотрены новые возможности языка Си++, описанные в стандарте C++0x и поддержанные в Visual Studio 2010. На примере PVS-Studio рассмотрено, как изменения языка отразятся на инструментах статического анализа кода.
Читать дальше →

12 полезных дополнений Firefox для Web-разработчиков

Reading time4 min
Views93K
В этой статье я решил собрать популярные и полезные для Web-разработчиков дополнения с кратким описанием.
Конечно, большинство разработчиков знают об их существовании, но я нацеливаюсь на остальную часть. А также на тех, кто использует альтернативные браузеры. Быть может, это подтолкнёт их к переходу на Огнелиса. Ну и вообще, просто хочется собрать всё в одном месте.
Читать дальше →

Тонкости использования селекторов аттрибутов в CSS

Reading time4 min
Views35K
CSS может связываться с HTML элементами используя любые из его атрибутов. Вы наверняка знаете о классах и ID. Проверим это в HTML:
<h2 id="first-title" class="magical" rel="friend">David Walsh</h2>

Этот один элемент имеет три аттрибута: ID, class и rel. Для выбора элемента в CSS вы можете использовать селектор ID (#first-title) и селектор class (.magical). Но знаете ли вы, что можно использовать для выбора атрибут rel? Это так называемый селектор атрибута:
h2[rel=friend] {
  /* woohoo! */
}

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

dynaTrace AJAX — мощный профайлер JS

Reading time3 min
Views6.9K
Недавно в обсуждении статьи шкала браузерности разговор зашел о том, что IE не так уж убог и его должен иметь на своем компьютере каждый уважающий себя веб-разработчик не только для того, чтобы смотреть не съехала ли там верстка, но и потому что для IE созданы, я считаю, лучшие на данные момент средства для дебага и профилирования JS.
Одно из таких средств — это dynaTrace Ajax, скачать который можно здесь.
Далее обилие скриншотов и небольшой рассказ о возможностях dynaTrace

Python Tips, Tricks, and Hacks (часть 2)

Reading time6 min
Views134K
Содержание

Списки. Свёртка списка (reduce). Прохождение по списку (range, xrange и enumerate). Проверка всех элементов списка на выполнение условия (all и any). Группировка элементов нескольких списков (zip). Еще несколько операторов для работы со списками. Продвинутые логические операции с типом set.
Словари. Создание словаря с помощью именованных аргументов. Преобразование словаря в список и обратно. «Dictionary Comprehensions».
Читать дальше →

Information

Rating
Does not participate
Location
Владимир, Владимирская обл., Россия
Date of birth
Registered
Activity