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

Backend Engineer

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

9 фактов, которые знают программисты, и не знают все остальные

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

Факт 1


Под капотом самых критичных программ, которые вы используете на ежедневной основе (Mac OS X или Facebook) содержится ужасное количество хаков и костылей, которые с трудом уживаются друг с другом. Это как если бы вы разобрали боинг 747 и увидели, что топливопровод держится вешалкой для одежды, а шасси смотаны изолентой.

Бен Черри
Читать дальше →
Всего голосов 237: ↑164 и ↓73+91
Комментарии88

10 заповедей программирования без эго

Время на прочтение3 мин
Количество просмотров57K
image«Программирование без эго» — перевод понятия egoless programming. Смысл в том, что разработчик осознанно отодвигает эго на второй план ради эффективности в работе. При разработке Web-payment.ru — сайта о платежных системах с каталогами и мониторингом обменников — мы стараемся руководствоваться этими принципами. Если кто-то благодаря этому посту тоже начнет применять их в своем проекте, мы будем очень рады, ведь они помогают избежать конфликтов и несут в себе добро. Перевод и редактура moigagoo.

О программировании Стивен начал говорить с отцом за 2 недели до его смерти. Стивену было 22, он изучал графдизайн в колледже и почти получил степень бакалавра. Его отцу было 62 — больше, чем большинству отцов. Когда он только начинал программировать в Теннессийском техническом университете в 60-е, то писал код на Фортране на перфокартах. Знал он очень много.

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

Когда Стивен приехал домой на каникулы, отец рассказал ему про 10 заповедей программирования без эго. Он распечатал их, и вдвоем со Стивеном они обсудили каждый пункт. Из-за внезапной смерти отца Заповеди стали одной из немногих программистских тем, которые Стивен успел обсудить вместе с ним. Возможно, именно поэтому они ему так запомнились.
Читать дальше →
Всего голосов 72: ↑58 и ↓14+44
Комментарии37

Raspberry Pi 2: 4 ядра, гигабайт ОЗУ, в шесть раз больше производительности

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

Возможно, цена останется прежней — 35 $


Без особых подготовок глава Raspberry Pi Foundation Ибен Аптон рассказал изданию The Register о новой модели Raspberry Pi. Согласно его заявлению, теперь это относительно полноценный компьютер, оглядываясь на характеристики которого не нужно повторять «он стоит всего лишь 35 долларов».

Основные изменения новой модели под названием Raspberry Pi 2 Model B: однокристальная система Broadcom BCM2836 с четырьмя ядрами ARMv7 Cortex-A7 частотой 900 МГц и Broadcom VideoCore IV 250 МГц, 1 гигабайт ОЗУ, как минимум в шесть раз больше производительности, чем у B+, и бесплатная Windows 10. Вот результаты выдачи команды uname -a новой платы.
Читать дальше →
Всего голосов 53: ↑50 и ↓3+47
Комментарии60

Исследование защиты PVS-Studio

Время на прочтение4 мин
Количество просмотров55K
PVS-Studio

Приветствую! Это мой первый пост на Хабре в принципе, но не первая статья о взломе ПО вообще, поэтому навык писать все с начала и по шагам, для начинающих крякеров, у меня есть. В данной статье я расскажу о том, как был отучен от триальности PVS-Studio.
Читать дальше →
Всего голосов 144: ↑123 и ↓21+102
Комментарии131

Видео от пользователя: MacOS внутри ReactOS

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

Под катом спрятано видео, на котором один из пользователей нашего проекта демонстрирует работу приложений для MacOS внутри ReactOS при помощи Mini vMac.
Читать дальше →
Всего голосов 46: ↑29 и ↓17+12
Комментарии46

Социальная сеть на Android за несколько выходных — часть I (клиент)

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

Введение


Несмотря на обилие социальных сетей, за последние несколько лет появился целый ряд новых, оригинальных и необычных социальных приложений, таких как just yo, snapchat, secret, и пр. Успех приложения just yo, ограниченного единственной функцией – отправкой сообщения фиксированного содержания, меня заинтересовал и мы с друзьями тоже решили попробовать написать очередную социальную сеть на Android. Нашей целью было очертить круг задач общий для большинства подобных приложений, предложить их решения и подготовить скелет, из которого каждый сможет сделать что-то своё и оригинальное, не тратя время на решение рутинных вопросов. С результатами работы можно сразу ознакомиться на githubandroid клиент и сервер на ruby on rails.
Читать дальше →
Всего голосов 30: ↑25 и ↓5+20
Комментарии7

Отправляем SMS из .Net приложения на C#

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

Все что нам понадобится для отправки SMS это 3G USB модем, SIM карта, Visual Studio и немного времени. Моей целью не является описать все возможные настройки COM порта или формата PDU. Я хотел бы предоставить вам готовое решение, которое можно использовать в качестве сниппета в своих проектах.
В качестве примера рассмотрим 2 консольных приложения. Почему консольных? Да потому, что в них нет ничего лишнего и проще разобрать код. Почему два? Потому, что есть два распространенных варианта отправки сообщений. Самый простой вариант – это отправка сообщений в текстовом режиме. Минусом этого варианта является то, что он не поддерживает отправку кириллицы. Плюсом то, что возможна отправка 160-ти символов. Второй вариант, более сложный, позволяет отправлять текст длиной до 70-ти символов в формате Unicode.
Читать дальше →
Всего голосов 24: ↑20 и ↓4+16
Комментарии22

Компьютер маленького человечка

Время на прочтение3 мин
Количество просмотров38K
Все мы знаем машину Тьюринга и машину Поста. Это абстрактные вычислительные машины, придуманные математиками для теории алгоритмов. Компьютер маленького человечка (Little man computer) — модель компьютера, предназначенная для обучения тому, как устроен и работает компьютер. Эта модель была предложена профессором Стюартом Мэдником в 1965 году и успешно используется для обучения студентов начальных курсов как в области программирования, так и конструирования компьютеров.

Что делает этот человечек ?
Всего голосов 35: ↑33 и ↓2+31
Комментарии20

Еженедельная сборка Vivaldi 1.0.129.2

Время на прочтение2 мин
Количество просмотров7.9K
Всем привет!

Представляем вам очередную еженедельную сборку браузера Vivaldi под номером 1.0.129.2. Вкратце, чем занимались, что сделали и что сломали.

Добавлена функция закрытия вкладок двойным кликом. Вы просили — мы сделали.

Также одним из популярных запросов было добавление визуальной индикации загрузки фоновых вкладок. Без этого было непонятно, что происходит со страницами, открытыми в фоне — уже загрузились или процесс ещё идёт? Теперь мы добавили индикатор, сообщающий о статусе загружаемых страниц.

На днях мы приступили к реализации ещё одного популярного запроса — возможности импорта данных из других браузеров и, в частности, из Chrome. Но сразу вынуждены предупредить: функция работает пока очень нестабильно и может приводить к крэшу браузера. Кроме того, функция недоступна пока на Mac платформах. Другими словами, мы это делаем, но пока лучше данную функцию не трогать руками — подождите, пока ситуация стабилизируется в следующих сборках. Любители экстремального тестирования могут экспериментировать без ограничений, но не забывайте отправлять нам сообщения о найденных ошибках.
Читать дальше →
Всего голосов 28: ↑16 и ↓12+4
Комментарии58

Assembler вместе с C++ в Visual Studio 2013

Время на прочтение4 мин
Количество просмотров108K
Идея этой статьи отнюдь не новая, но, поскольку мне пришлось потратить два дня на разбор всех ошибок компиляции и линковки, а также поиск ответов на свои вопросы, решил, что читатели Хабра заслуживают экономии времени. Тех, кто желает быстро узнать, как использовать одновременно *.asm и *.cpp файлы в проекте, как вызывать методы C++ из ассемблера и наоборот, прошу пожаловать под кат.
Читать дальше →
Всего голосов 33: ↑29 и ↓4+25
Комментарии29

Полноценный веб-сайт на C++ и немного диванной аналитики

Время на прочтение20 мин
Количество просмотров129K
Но зачем?
Тут должна быть картинка про троллейбус

Невежливо отвечать вопросом на вопрос, но: а почему бы и нет? Просто потому, что можно.
Ладно, я пошутил. Чтобы пояснить причину, хотелось бы кратко описать историю моего знакомства с веб-разработкой. Но, дабы не нарушать последовательность повествования, я решил поместить ее в конце. В общем, с причинами мы еще разберемся.

Думаю, многим знакома такая разновидность веб-форумов, как имиджборды. Да-да, вы правильно поняли — именно на примере имиджборды я расскажу об опыте создания сайта на C++. Что же сподвигло меня заняться столь сомнительной пользы проектом? Левая пятка. В этом случае действительно никаких особых причин не было. Просто проснулся однажды утром и понял — хочу. Но это все лирика.

На Хабре хватает статей о веб-сайтах на C++: например, с использованием FastCGI или CppCMS. Но все это — HelloWorld'ы и туториалы. Я же вам расскажу о полноценном (пусть и не идеальном с точки зрения архитектуры и чистоты кода) проекте, постараюсь осветить различные тонкости.
Перейдем же к делу
Всего голосов 51: ↑45 и ↓6+39
Комментарии85

Разработка сайтов (веб-приложений) на C++ (и не только) в виде подключаемых библиотек (*.so, *.dll)

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

Введение (лирика)


Около двух лет я занимался веб-разработкой, создавая сайты и веб-приложения на языке PHP. Вот только в веб-разработку я попал по стечению весьма странных жизненных обстоятельств. Не сказать, что мне было это не интересно — мне, как раз, было очень интересно узнать, как создаются сайты и как вообще работает интернет.

Но, в то же время, меня всегда привлекало низкоуровневое программирование. Ещё во время учёбы мне очень понравился язык программирования C++. Только негде было его применять, кроме как для своего развлечения. Дальше я опустился пониже — изучил Assembler. Понял, как работает процессор (хотя слишком поверхностно) и как выполняются программы на самом деле.

Со всем этим набором знаний и опыта я попал в веб-разработку. Всё поначалу казалось весьма и весьма хорошо, оказалось гораздо проще, чем я думал. А со временем приелось, стало слишком просто, неинтересно, нет простора для оптимизаций и интересных решений. Генерируешь веб-странички, пишешь и подключаешь js-скрипты, оформляешь страницы с помощью css. Чувствовал, что больше не развиваюсь как программист.
Читать дальше →
Всего голосов 66: ↑42 и ↓24+18
Комментарии82

Упаковка, компрессия и защита сборок

Время на прочтение7 мин
Количество просмотров11K
последняя редакция статьи доступна на сайте makeloft.xyz

Материалы этой статьи описывают механизмы компоновки, компрессии, динамической загрузки, а также пути элементарной защиты .NET-сборок стандартными средствами среды разработки Visual Studio. Однако, возможно, нижесказанное будет в некоторой степени справедливо и для других программных платформ.

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

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

image
Читать дальше →
Всего голосов 19: ↑14 и ↓5+9
Комментарии7

Open source проекты: Media Player Classic и SharpDevelop. Первые впечатления

Время на прочтение7 мин
Количество просмотров27K
Нечто невообразимое творится в мире разработки: популярные программы, фундаментальные библиотеки выкладываются в open source. У обычных разработчиков появляется возможность вносить изменения в известные продукты. Вот и я, устав от ежедневной рутины, решил попробовать что-то новое, почувствовать полёт творческой мысли и приобщиться к великому. Говоря более простым языком, решил подключиться к какому-либо open source проекту.

Почему именно open source? Меня привлекает:
  • отсутствие строгих сроков разработки
  • свободный выбор задач
  • свободный выбор способа реализации задач
  • возможность внести свои изменения в популярный продукт

В этой статье я хотел бы описать первый опыт работы с двумя проектами: Media Player Classic — Home Cinema и SharpDevelop. Хотелось бы дать общие рекомендации по работе с open source проектом на начальном этапе. Статья не содержит полноценного анализа исходного кода или рекламы новой функциональности, в ней описаны лишь первые впечатления о работе с проектами. Возможно, статья привлечет внимание разработчиков к описанным в ней проектам и к разработке open source в целом.
Читать дальше →
Всего голосов 61: ↑52 и ↓9+43
Комментарии14

Windows 10 приходит на Raspberry Pi 2

Время на прочтение2 мин
Количество просмотров82K
Статья – перевод статьи одного из наших любимых авторов, настоящего гика, Скотта Хансельмана.

Я – искренний фанат Raspberry Pi. Я использую три штуки дома, одну для мультимедиа-центра, одну для 3D-печати и одну просто на поиграть. Теперь же у меня еще больше хорошего, после новости о том, что была анонсирована Raspberry Pi 2. За $35 я получаю компьютер, который можно засунуть в карман, и у которой есть несколько отличных моментов:
  • Она все еще небольшая! Размера Raspberry Pi B+. То, что у меня работало, будет работать и дальше. ;)
  • HDMI! Ethernet! Порт под камеру!
  • Micro USB для питания!

ПРИ ЭТОМ
  • Четырехядерный 900 MHz ARM Broadcom Cortex A7 с BCM2836 на чипе – от 3 до 6 раз увеличения производительности. Вау.
  • 1 гиг RAM (поделено с GPU)



Вообще, мне нравится использовать Raspberry Pi как отдельный девайс (“Dedicated Device”).
Она, конечно, компьютер общего назначения, но при этом такой дешевый и мощный, что его можно использовать под одну конкретную задачу, и работать он будет прекрасно.
Читать дальше →
Всего голосов 59: ↑46 и ↓13+33
Комментарии39

Ядро .Net (GC, JIT, interop, ...) в Open Source

Время на прочтение5 мин
Количество просмотров36K
Мы рады сообщить что CoreCLR теперь находится на github и теперь вы имеете доступ ко всем его исходным кодам. CoreCLR является средой исполнения .NET Core, выполняя такие функции как сборку мусора или компиляции в конечный машинный код. .Net Core – это модульная реализация .Net, которая может быть использована как база для огромного количества сценариев, масштабы которых варьируются от простых консольных утилит до веб-приложений, хостящихся в облаке. Чтобы понять, чем отличается .Net Core от .Net Framework, посмотрите на пост «Введение в .Net Core»

Теперь вы можете скачивать исходники CoreCLR, бранчеваться, и делать pull requests, также вы можете компилировать его прямо на своем ПК. Мы выпустили полную и актуальную реализацию CoreCLR, которая включает RyuJIT, .Net GC, родной Interop и множество других компонент .Net runtime. Данный релиз следует тем же принципам, что и все наши последние релизы библиотек, вышедших в open-source: сделать весь .Net Framework open sourced.

Сегодня ядро .Net компилируется и отрабатывает (видимо имеется в виду CI) на Windows. Мы добавим имплементации для специфических для Mac и Linux платформенных вещей в ближайшие пару месяцев. Также мы уже имеем некоторый специфический для Linux код в .Net Core, однако мы только начали портировать с Windows на остальные платформы. Напротив, мы хотели открыть исходные тескты с самого начала, чтобы вы вместе с нами пропутешествовали бы к другим платформам, возможно, внося свой вклад.
Читать дальше →
Всего голосов 74: ↑64 и ↓10+54
Комментарии40

Обновление с Windows 7/8.1 до Windows 10 TP через Windows Update

Время на прочтение3 мин
Количество просмотров1.5M
Согласно анонсу Windows 10 будет предложена бесплатно в качестве обновления на все Windows 7 и Windows 8.1 системы в течение первого года после публичного выхода. Как именно? Через Windows Update. Нужно понимать, что это предложение обновления, а не лицензия. То есть лицензия на Windows 7 позволит автоматически обновить систему в течение года. Серийного номера, образа, коробки или наклейки предложено не будет. При этом также обещано, что те кто обновятся сейчас на Windows 10 Technical Preview получат затем через Windows Update версию Consumer Preview, Release Preview, а далее и финальной версии. С выходом январского Windows 10 Technical Preview (10.0.9926) появилась также и небольшая утилита для Windows 7 и Windows 8.1, после установки которой, Windows 10 приходит на ваш ПК в виде обновления. Именно об этом я и буду рассказывать ниже.

Для тех, кто хочет попробовать Windows 10 Technical Preview уже сейчас, буду неоригинальным, — это предварительная версия, часть функционала не работает, могут возникнуть проблемы с драйверами и сторонним ПО. Продолжаем. Если вы хотите обновить ваш Windows 7 до Windows 10, загрузите специальную утилиту Prepare с сайта Microsoft, для Windows 8.1 существует аналогичная утилита подготовки.

Я буду показывать процесс обновления для русской Windows 7 Professional, английской Windows 8.1 Single Language и английской 8.1 Professional with MediaCenter. Сразу скажу, медиацентр не переживёт обновления, — текущая версия Windows 10 Technical Preview его не поддерживает и обновит на обычный Windows 10 Professional TP. Тем, кому важен Windows MediaCenter рекомендую дождаться Consumer Preview или более новых сборок.
Читать дальше →
Всего голосов 41: ↑36 и ↓5+31
Комментарии152

Лучший неудобочитаемый код

Время на прочтение2 мин
Количество просмотров9.1K
Все мы привыкли иногда/много писать плохой, часто — неудобочитаемый код, в результате получая недовольные лица коллег. Но если мы уж очень любим писать неудобочитаемый код, то постараемся быть лучшими. И так, лучшие неудобо-кодеры 2011.

Победитель конкурса

#include <iostream>

class ___000___
{
public:
  ___000___(int _) { m_____ = _; }
  ~___000___() {}

  void _1_2_3_4_5_() { std::cout << m_____; }
  int ____2_2___() { return m_____ * m_____; }
private:
  int m_____;
};
Читать дальше →
Всего голосов 110: ↑70 и ↓40+30
Комментарии63

Пишем интерпретатор скрипта и стековую машину

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

В этой статье речь пойдет о довольно необычном проекте. Однажды меня посетило желание написать свой интерпретатор какого-нибудь скриптового языка и исполняющую машину для него. Просто для того, чтобы посмотреть, как оно внутри работает. Такая цель звучит не очень благородно и я отложил затею в долгий ящик, т.к. мне хотелось более полезной формулировки.
Как-то раз, один мой знакомый посетовал, что нужно написать скрипт автоматизации на WSH, но ни VBScript, ни Javascript он не знает. Тут «благородная» формулировка возникла сама собой… нужно помочь товарищу. В результате был написан компилятор и исполняющая машина, позволяющая исполнять скрипты для Windows Script Host, не прибегая к VBScript и JS. Под катом — краткая предыстория проекта и его внутреннее устройство и сам язык программирования.
Читать дальше →
Всего голосов 50: ↑41 и ↓9+32
Комментарии35

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

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

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

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

Информация

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