Search
Write a publication
Pull to refresh
0
0
Send message

Goblin Wars II.NET – история создания сетевой игры на C# с нуля

Reading time18 min
Views28K
Добрый день, уважаемые хабровчане. Представляю вашему вниманию свой небольшой проект – сетевой 2D-шутер на C#. Несмотря на то, что визуальная составляющая весьма простая – в наш век уже никого не заинтересуешь 2D-играми, некоторые архитектурные решения могут заинтересовать людей, собирающихся написать свою игру. В статье я расскажу о вариантах реализации ключевых моментов игры.
Читать дальше →

Скринкаст: монада Maybe на языке C#

Reading time1 min
Views21K
Небольшая иллюстрация того, как на языке C# реализовать монаду Maybe и зачем это вообще нужно. Смотреть видео рекоммендуется в разрешении 720p.



Сопутствующую статью можно найти тут (англ. яз.). Комментарии приветствуются!

Удаленное управление сеансом пользователя windows стандартными средствами

Reading time3 min
Views310K
Однажды мне захотелось управлять одним из домашних компьютеров удаленно, но при этом взаимодействовать с текущим пользователем, но компьютер был довольно слабый и при запуске например TeamViewer’а нагрузка процессора поднималась до 98% и компьютер начинал заметно тормозить. Попробовал стандартный RDP, но тогда «выбивался» текущий пользователь и для входа локально приходилось набивать пароль. Но чуть позже мне случайно попалась команда shadow.
Читать дальше →

Добыча и переработка игрового трафика

Reading time17 min
Views26K
Вступление

В 2007, чтобы оптимизировать рекламу наших игр, был сделан свой движок для ротации рекламы. Так родилась наша рекламная сеть. Она быстро выросла в крупную баннерную сеть, ориентированную исключительно на рекламу онлайн-игр и околоигровых ресурсов. Сегодня мы хотим поделиться своими наблюдениями и опытом. Надеемся, что материал будет полезным молодым командам, но что-то интересное смогу почерпнуть и опытные коллеги.

Материал посвящен следующим темам:

  • переработка и анализ трафика;
  • методы добычи трафика;
  • инструменты оптимизации добычи трафика.


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

Изучить Github за 15 минут

Reading time1 min
Views127K
TryGit — интерактивный обучающий курс по Github в стиле Codecademy. Курс состоит из 25 мини-уроков, которые знакомят пользователя с базовыми понятиями и основными командами git, при этом ученик своими руками вводит команды в консоль, смотрит результат и читает сопровождающие надписи с объяснением происходящего.



Вот таким в будущем должно стать обучение в школах!

Конечно, 15-минутное введение не заменит полноценного учебника. Для обучения можно рекомендовать бесплатную книгу Pro Git и видеокурс Getting Git.

MongoDB: производительность запросов на диапазонах

Reading time3 min
Views16K
Если вы путешествовали по территории индексов MongoDB, вы возможно слышали принцип: Если ваши запросы содержат сортировку, то добавте сортированное поле в конец индекса который используется в этих запросах.

Во многих случаях когда запросы содержат условия равенства как например {“name”: “Charlie”}, принцип который выше очень полезен. Но что о нем можно сказать со следующим примером:

Запрос:
db.drivers.find({"country": {"$in": ["A", "G"]}).sort({"carsOwned": 1})
Индекс:
{"country": 1, "carsOwned": 1}

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

Драйвер — это просто

Reading time7 min
Views102K
Многие считают что самому создать драйвер для Windows это что-то на грани фантастики. Но на самом деле это не так. Конечно, разработка драйвера для какого-то навороченного девайса бывает не простой задачей. Но ведь тоже самое можно сказать про создание сложных программ или игр. В разработке простого драйвера нет ничего сложного и я попытаюсь на примерах это показать.
Читать дальше →

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

Reading time3 min
Views14K
Привет, хочу сказать, что мне очень нравится делать подборки для хабры. Много положительных отзывов, много комментариев, а значит моя работа полезная и я ее делаю не зря. Поэтому сегодня я хочу представить вам собрание различных ресурсов, на которых любой дизайнер сможет найти много полезного и интересного. Кому интересно, прошу под кат.
Читать дальше →

Превращение шума в музыку: эволюционный алгоритм + краудсорсинг

Reading time2 min
Views10K


Профессор эволюционной биологии Арманд Лерой (Armand Leroi) решил проверить, насколько эволюционные алгоритмы подходят для генерации музыки. Его базовый тезис состоит в том, что приятная мелодия — это результат естественного отбора (эволюции) звуков. Результаты эксперимента подтвердили, что случайный шум действительно может превратиться в музыку без помощи композитора. Научную работу и образцы сгенерированных мелодий можно изучить на сайтах DarwinTunes и Evolectronica.
Читать дальше →

Наш процесс разработки: 50 месяцев эволюции

Reading time9 min
Views44K
Нашей компании уже 6 лет. Она была основана на принципах agile и росла на них. Мы использовали Extreme Programming с самого первого дня, добавили немного Scrum позже и в конце концов переключились на Kanban. Хочется поделиться бесценным опытом и рассказать об изменениях нашего процесса разработки за последние 4 года.



Много ужасных таблиц и красивых картинок

Сколково на вашем столе (или история о том, как я делал электронное устройство с нуля)

Reading time19 min
Views67K
Сегодня, оглядываясь назад, я ловлю себя на мысли, что тот опыт и знания, которые я получил в процессе разработки, имеют не меньшую ценность, чем непосредственный результат моих усилий. Получив четкое представление о процессе и о многих «подводных камнях», сопутствующих такого рода затее, я всерьез подумываю о том, чтобы приступить к еще более смелому проекту, о котором я постараюсь рассказать уважаемому сообществу чуть позднее.

А пока, обо всем по порядку…

Prague Electronic Tour Guide. Клубникина.
Катя Клубникина изображает счастливого туриста с первым макетом устройства на шее.

Часть первая. Предыстория.



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

Надо сказать, что до этого я практически 13 лет занимался тем, что принято называть собирательным термином «визуальная коммуникация», а именно, рисовал графический дизайн, снимал рекламу и делал дизайн в движении, а позднее, имея изрядный школьно-студенческий программерский багаж, стал интересоваться разработкой интерактивного ПО, в т.ч. применительно к набиравшей обороты web-индустрии.

И всё бы ничего, как вдруг...

Как вывести Paypal в России? Как открыть виртуальный счёт в США?

Reading time3 min
Views82K
В один прекрасный день я задался вопросом — как выводить деньги из Paypal в Россию? Есть фишка — прямой вывод денег из Paypal для тех, кто не имеет счёта в Америке закрыт, т.е. не имея bank account в Америке, вы никак не сможете вывести деньги напрямую.

Однако мне было действительно жалко терять большой процент на комиссиях обменников (бешеные накрутки), поэтому я искал выход.

Ниже привожу инструкцию из 8 пунктов.
Читать дальше →

Оптимизация и Generics в CLR

Reading time7 min
Views6.9K
В этой статье Джон Скит будет описывать как простейшие конструкции языка замедляют вашу программу и как их можно ускорить.

Как и в любой работе, сваязанной с производительностью приложений, результат может варьироваться в зависимости от условий (в частности, например, 64-разрядный JIT может работать несколько иначе), и в большинстве случаев это не должно вас волновать. Несмотря на это, относительно небольшое количество разработчиков пишут продакшен-код, состоящий из большого количества микрооптимизаций. Потому, пожалуйста, не принимайте этот пост как призыв к усложнению кода ради иррациональной оптимизации, которая якобы ускорит вашу программу. Используйте это только там, где это реально может понадобиться.

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

Взломать Wi-Fi за 10 часов

Reading time12 min
Views1.5M
Еще не так давно казалось, что беспроводная сеть, защищенная с помощью технологии WPA2, вполне безопасна. Подобрать простой ключ для подключения действительно возможно. Но если установить по-настоящему длинный ключ, то сбрутить его не помогут ни радужные таблицы, ни даже ускорения за счет GPU. Но, как оказалось, подключиться к беспроводной сети можно и без этого — воспользовавшись недавно найденной уязвимостью в протоколе WPS.


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

Как заработать на десктопном приложении?

Reading time4 min
Views10K
Сегодня у многих компаний как крупных, так и не очень, возникает желание получить доход и испробовать различные направления. Ориентация на один узкий сегмент рынка — это ошибочная стратегия в условия бурного и высоконкурентого развития современных технологий по всем направлениям и тематическим нишам.

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

Работающий трансформатор с деревянным сердечником, или простая грозозащита для компьютеров и телевизоров

Reading time10 min
Views98K
У великого русского поэта Тютчева не было компьютера и сети, иначе он бы не писал: «Люблю грозу в начале мая». В последние годы актуальность грозозащит стала поменьше — оптика, беспроводные технологии, но все же все же.
Если к вам в квартиру заходит кабель, и этот кабель — не оптический, гроза представляет угрозу для вашего оборудования.

Если у вас есть телевизор и он подключен к общей сети — кабельное ТВ, коллективная антенна (вдруг) — к чему угодно, что находится за пределами квартиры, гроза представляет угрозу для телевизора, (причем даже бОльшую, чем для компьютера).
Будем защищаться

Система мониторинга MongoDB (MMS)

Reading time2 min
Views6.2K


Несколько часов назад ко мне в почту упало письмо с уведомлением о новом сервисе от компании 10gen, спонсоров MongoDB. Этот облачный сервис позволяет мониторить ваши сервера и слать алерты, если что-то пойдет не так.
Читать дальше →

Ошибки трансферта технологий №3 / «Ошибки оффшоров» + АПДЕЙТ

Reading time18 min
Views9.3K
Оказывая помощь в выводе разработок и бизнесов на внешние зарубежные рынки, приходится постоянно наблюдать одни и те же ошибки, и как следствие — неудачи и потери.
Читать дальше →

Ошибки трансферта технологий №2 / «Ошибки раскрытия»

Reading time6 min
Views1.7K
Оказывая помощь в выводе разработок и бизнесов на внешние зарубежные рынки, приходится постоянно наблюдать одни и те же ошибки, и как следствие — неудачи и потери.
Читать дальше →

Как правильно сортировать контент на основе оценок пользователей

Reading time5 min
Views93K


В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

Постановка проблемы


Вы занимаетесь веб программированием. У вас есть пользователи, которые оценивают контент на вашем сайте. Вы хотите разместить высоко оцененный контент наверху, а низко оцененный — внизу. Для этого на основе пользовательских оценок вам нужно вычислить некий «рейтинг».

Неправильное решение №1

Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)

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

Information

Rating
Does not participate
Registered
Activity