Как стать автором
Обновить
20
0
Даниил Васильев @hello_my_name_is_dany

Backend Engineer

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

Сериализация C++ с полиморфизмом и прототипами

Время на прочтение6 мин
Количество просмотров20K
Уже достаточно давно заинтересовался темой сериализации, а если конкретно, то сериализацией объектов, хранящихся по указателю на базовый класс. Например, если мы хотим загружать интерфейс приложения из файла, то скорее всего нам придется заполнять полиморфными объектами контейнер по типу “std::vector<iWidget*>”. Возникает вопрос, как подобное реализовать. Этим я недавно решил заняться и вот что получилось.

Для начала я предположил, что нам все-таки придется унаследовать в базовом классе интерфейс iSerializable, такого вида:

class iSerializable
{
public:
    virtual void serialize (Node node) = 0;
};
Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии18

Изучаем C++ через программирование игр

Время на прочтение3 мин
Количество просмотров82K
Привет, Хабрахабр.

В этом посте мы хотим вам рассказать о хорошей книге Майкла Доусона «Beginning C++ Through Game Programming». Многие знакомы с творчеством Майкла по книге «Программируем на Python», которая многим пришлась по вкусу. Когда-то мы рассказывали о ней в нашем блоге. Мы еще не приняли окончательное решение по поводу издания книги, поэтому решили в очередной раз посоветоваться с вами. В качестве рецензии мы перевели мнение сайта www.gamedev.net. По содержанию книга по С++ напоминает Python, так как в ней выдержан такой же стиль — обучение через программирование игр.


Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии35

16 занимательных проектов для вашего нового Raspberry Pi

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


Новый Raspberry Pi стал меньше, дешевле (всего $20) и энергоэффективней. Неплохое обновление для устройства, которое и так отлично продаётся. Мы собрали наиболее крутые проекты на базе Pi, которые можно реализовать как на новой, так и на оригинальной модели.
Читать дальше →
Всего голосов 41: ↑27 и ↓14+13
Комментарии52

.NET Server Core, кросс-платформенная разработка, Visual Studio 2015 и другие анонсы Microsoft Connect()

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

Сегодня в Нью Йорке проходит конференция Microsoft Connect(), на которой анонсированы новые продукты и технологии. Выпущена предварительная версия Visual Studio 2015, специальная бесплатная редакция Visual Studio Community 2013, Visual Studio 2013 update 4, открывается исходный код .NET Server Core, выпущена предварительная версия .NET 2015, обновлены инструменты кросс-платформенной разработки на базе Apache Cordova, в Visual Studio появился эмулятор ОС Android. Это действительно новый этап в развитии инструментов разработки Microsoft, и мы рады рассказать о деталях.
Читать дальше →
Всего голосов 110: ↑104 и ↓6+98
Комментарии83

Как свободное ПО способствовало успеху Стива Джобса и Apple

Время на прочтение4 мин
Количество просмотров2.6K
Все мы отмечаем успешную карьеру Стива Джобса и благодарны ему за огромные улучшения в компьютерных интерфейсах и электронных устройствах. Он просто великолепен. Но в то же время Apple — централизованная, контролируемая организация с жёстким надзором за App Store и анонсами новых продуктов. Скрытая причина того, что сейчас недовольные пользователи и приверженцы свободного ПО обратили свою историческую антипатию к Microsoft в сторону Apple — то, что эта компания представляет собой блестящую бизнес-историю в новой эпохе. Поэтому я хочу примирить обе стороны и рассказать, насколько важным является свободное ПО для успеха Джобса и Apple.
Читать дальше →
Всего голосов 141: ↑93 и ↓48+45
Комментарии149

ВКонтакте API для .Net

Время на прочтение1 мин
Количество просмотров65K
image
Добрый день, друзья!

Хочу рассказать вам о своём небольшом open source проекте, а именно реализация ВКонтакте API для .Net. В общей сложности пилю его уже полтора года. Сделано еще не всё, а что сделано под катом.
Читать дальше →
Всего голосов 44: ↑35 и ↓9+26
Комментарии17

Как я писал свой чат

Время на прочтение13 мин
Количество просмотров65K
Привет, Хабр!
В статье я написал, о том как разрабатывал чат. О его архитектуре и о технических решениях принятых в ходе его разработки.

Чат представляет собой клиент-серверное приложение с элементами p2p.
С поддеркжой:
  • Личных сообщений.
  • Комнат.
  • Передачи файлов.
  • Голосового чата.




Исходный код проекта: GitHub
Читать дальше →
Всего голосов 65: ↑33 и ↓32+1
Комментарии20

Вышла книга «Getting Started with LLVM Core Libraries»

Время на прочтение2 мин
Количество просмотров13K
Думаю, многим, также, как и мне, книга «Getting Started with LLVM Core Libraries» покажется интересной. Это первая книга, посвященная целиком и полностью LLVM. В основном, как следует из названия, ориентирована на новичков, которые только обратили свое внимание на LLVM, но уже имеют опыт программирования на C++.
Небольшое описание содержимого книги
Всего голосов 25: ↑25 и ↓0+25
Комментарии8

Где регистрировать домен. Сравнение цен

Время на прочтение5 мин
Количество просмотров54K
До недавнего времени у меня было три проблемы с регистрацией доменов:

  • Выбрать домен и быстро проверить его занятость.
    Любой регистратор доменных имен предлагает вам форму, в которую вы вводите желаемое слово, просит ее отправить, подождать несколько секунд, узнать свободно ли имя. Затем повторить. Если вы в высококонкурентной нише, где все словарные имена заняты, то провести за этим увлекательным занятием можно несколько часов. Эту проблему для меня несколько лет подряд решал domainr, который проверяет домены как только ты вводишь их названия.

  • Отложить несколько удачных доменов, чтобы после выбрать лучший.
    Это невероятно, но практически ни один сервис, кроме namemesh, не дает добавить домены в избранное. К сожалению, он просит зарегистрироваться, как мы все это любим. На сайтах регистраторов задача решается при помощи корзины. Сначала добавляем все в заказ, затем выкидываем лишнее. Долго, неудобно, нет вариантов перед глазами.

  • Купить домен там, где его продают и где он дешевле.
    Проблема аккредитации регистраторов касается в первую очередь newTLD-доменов (.bike, .restaurant, .tools и прочие). У вашего любимого регистратора легко может быть .travel, но отсуствовать .work. Узнать, кто может зарегистрировать для вас уже привычный домен .io нетривиальная задача, не говоря уже о том, чтобы найти место, где сделать это дешевле.

    Задача регистратора в том, чтобы внести запись о домене в единую базу данных и предоставить набор сервисных услуг, связанных с адресом (DNS, SSL и прочие). Текущие реалии таковы, что почти все регистраторы предлагают одинаковые услуги, но берут за это совершенно разные деньги. И если разница в 300 рублей на покупку .ru-домена у разных регистраторов не особенно принципиальна, то зарегистрировать десяток typo-доменов в зоне .net может стоить от 3 000 до 13 000 рублей в зависимости от регистратора ($8.99 / 650 р / $34.99).

Три недели назад была закончена работа над очередным проектом и я оказался в свободном плавании. Думая над тем, чем заниматься дальше, я просматривал накопившийся список идей. Хотелось сделать что-то простое, освоить пару новых технологий и решить насущную проблему. Внезапно, пазл сложился.
Читать дальше →
Всего голосов 64: ↑59 и ↓5+54
Комментарии68

Pythonista. Пишем на Python для iOS

Время на прочтение3 мин
Количество просмотров101K
Планшет iPad от компании Apple — всем известное и не нуждающееся в рекламе устройство. Но очень часто хочется использовать всю мощь этого устройства не только для игр и развлечения, а для серьёзной работы. Например для написания программ. Несмотря на 4-x летнею историю развития этого гаджета и наличие разных моделей удобных сред для программирования под iOS существует крайне мало. (Оговорюсь сразу, во избежании дальнейшей путаницы: программирование на iOS — значит написание кода и запуск программы на iPad или iPhone, а программирование для iOS — написание приложения, которое может быть выложено в App Store.)



Недавно я наткнулся на великолепную программку Pythonista, которая позволяет писать на iOS для iOS.
Читать дальше →
Всего голосов 31: ↑28 и ↓3+25
Комментарии17

Microsoft раскрыла исходный код компилятора С#

Время на прочтение1 мин
Количество просмотров75K
После ухода Стива Балмера компания Microsoft продолжает радовать приятными новостями: спустя несколько лет наконец-то вышел MS Office для iPad, опубликован исходный код JS-библиотеки WinJS (Windows Library for JavaScript), и даже в IE11 внедрили достойные инструменты веб-разработки.

А вот теперь самый большой сюрприз: сегодня запущен сайт .NET Foundation, на котором «для начала» собрано 24 проекта с открытыми исходными кодами, в том числе недавно вышедший .NET Compiler Platform (Roslyn)!


Читать дальше →
Всего голосов 135: ↑129 и ↓6+123
Комментарии137

Пишу игрушечную ОС (доступнее о планировщике)

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

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

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

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

Далее задачи будем называть потоками. Изначально задачи были однопоточными, и поток выполнения всегда соответствовал задаче. В настоящее время это уже не так, поэтому задача логически разделилась на два родственных понятия: процесс, как контейнер ресурсов, и поток, как независимая последовательность исполнения кода.
Читать дальше →
Всего голосов 51: ↑50 и ↓1+49
Комментарии29

Разбираемся в С, изучая ассемблер

Время на прочтение11 мин
Количество просмотров91K
Перевод статьи Дэвида Альберта — Understanding C by learning assembly.

В прошлый раз Аллан О’Доннелл рассказывал о том, как изучать С используя GDB. Сегодня же я хочу показать, как использование GDB может помочь в понимании ассемблера.

Уровни абстракции — отличные инструменты для создания вещей, но иногда они могут стать преградой на пути обучения. Цель этого поста — убедить вас, что для твердого понимания C нужно также хорошо понимать ассемблерный код, который генерирует компилятор. Я сделаю это на примере дизассемблирования и разбора простой программы на С с помощью GDB, а затем мы используем GDB и приобретенные знания ассемблера для изучения того, как устроены статические локальные переменные в С.
Читать дальше →
Всего голосов 76: ↑70 и ↓6+64
Комментарии31

Игра в 30 команд Ассемблера

Время на прочтение29 мин
Количество просмотров61K
В прошлом году были популярны темы, как написать программу за 30 строк кода. Все примеры были сделаны на JavaScript. Для запуска таких программ требуется не только веб страница, но и браузер, разные библиотеки, ядро ОС. На самом деле работают не 30 строк кода, а десятки, сотни мегабайты программного кода, находящиеся в памяти компьютера.
А можно ли написать не полностью бесполезную программу за 30 строк ассемблера, без лишних библиотек и мегабайт ОС?
В этой статье я опишу, как можно сделать крестики-нолики за 30 строк ассемблера. UPD Теперь всего за 20 строк. UPD2 И 18 или 16 строк без единого условного ветвления.
Читать дальше →
Всего голосов 121: ↑107 и ↓14+93
Комментарии32

SASM – IDE для ассемблера

Время на прочтение4 мин
Количество просмотров120K
Здравствуйте, уважаемые хабравчане!

Данным постом хочу представить сообществу проект, который время от времени писался мной последний год: SASM (SimpleASM) — IDE для разработки программ на языке ассемблера x86 и x86-64.

image

SASM — простая кроссплатформенная (доступна на Windows и Linux) среда разработки для языков ассемблера NASM, MASM, GAS, FASM с подсветкой синтаксиса и отладчиком. Программа работает «из коробки» и хорошо подойдет для начинающих изучение языка ассемблера. Основана на Qt. Распространяется по свободной лицензии GNU GPL v3.0.

Исходники лежат в репозитории на GitHub.
Бинарники можно скачать на сайте программы.

Под катом Вы найдете немножко истории и более подробное описание возможностей.
Читать дальше →
Всего голосов 131: ↑126 и ↓5+121
Комментарии39

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность