Как стать автором
Обновить
11
0
Алексей @AlMag

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

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

Миссия MESSENGER

Время на прочтение3 мин
Количество просмотров1.5K
Давно на Хабре не было постов на космическую тематику. Тем не менее, космические статьи зачастую достаточно интересны хабрасообществу. Слово MESSENGER в заголовке возможно поначалу воспримется как «Instant Messenger», а статья – как очередная новость о детище от Майкрософт. Но речь пойдет немного о другом.
image
Вниманию читателей предлагается небольшая статья о космическом проекте MESSENGER.
MESSENGER – научное исследование планеты Меркурий путем запуска к ней космического корабля.
Имя миссии MESSENGER составлено из английских фраз:
MErcury Surface (Поверхность Меркурия)
Space ENvironment (Космическое пространство)
GEochemistry (Геохимия)
Ranging (Классификация).
Сам же Меркурий, кстати, назван в честь мифического посланника (англ. messenger) богов.

Под катом сведения о проекте и любопытные фотографии.
Читать дальше →
Всего голосов 50: ↑50 и ↓0+50
Комментарии12

Java Zone возвращается

Время на прочтение1 мин
Количество просмотров955
Люди с конференции Java Zone 2010, которые выпустили трейлер к фильму Java 4-ever снова очень хорошо выступили.
На этот раз – клип Lady Java.



Советую почитать текст, который как бы между делом пролетает на фоне. Например то, что написано на BSoD.
Всего голосов 116: ↑98 и ↓18+80
Комментарии27

Нулевые дома

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

Энергосберегающие дома становятся все более популярными в мире. Строительство таких домов – не только дань современной моде, желание выделиться, построить что-то необычное, ультрасовременное. Рост популярности “нулевых домов” обусловлен и чисто экономическими соображениями, возможностью сэкономить на коммунальных платежах в будущем. В статье рассмотрены примеры строительства энергосберегающих сооружений в Китае.
Читать дальше →
Всего голосов 83: ↑79 и ↓4+75
Комментарии106

20 вещей, которые я должен был знать в 20 лет

Время на прочтение3 мин
Количество просмотров715K
1. Мир пытается оставить тебя тупым. Начиная от банковских платежей и процентов и заканчивая чудо-диетами — из необразованных людей легче вытрясти деньги и ими проще управлять. Занимайтесь самообразованием столько, сколько можете — для того, чтобы быть богатым, независимым и счастливым.
Читать дальше →
Всего голосов 544: ↑445 и ↓99+346
Комментарии544

Я не знаю Си

Время на прочтение4 мин
Количество просмотров50K
Цель этой статьи — заставить всех, особенно программистов на Си, сказать «я не знаю Си».
Хочется показать, что тёмные углы в Си значительно ближе, чем кажется и даже тривиальные строки кода несут в себе undefined behavior.
Читать дальше →
Всего голосов 285: ↑268 и ↓17+251
Комментарии309

HelloWorld — это просто?

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

Введение


Открывая любой учебник по языку программирования мы первым делом видим простой прмер, показывающий программисту базовые возможности языка. Обычно в качестве такого примера выступает всеми любимый вывод «HelloWorld» на экран. Все давно привыкли к тому, что такой пример просто реализует минимальную структуру программы, и не дает забросить книгу куда-нибудь в уборную на дальнюю полку. Но существует некоторые языки программирования в которых вывод сообщения на экран не является такой уж тривиальной задачей. Ниже будет приведено несколько простых примеров.
Милости прошу...
Всего голосов 176: ↑120 и ↓56+64
Комментарии29

std::stringstream и форматирование строк

Время на прочтение3 мин
Количество просмотров230K
Ввод и вывод информации — критически важная задача, без выполнения которой любая программа становится бесполезной. В C++ для решения данной задачи традиционно применяются потоки ввода-вывода, которые реализованы в стандартной библиотеке IOStream.

Плюсами такого подхода являются:
— универсальность: не важно, с чем связан поток, — ввод-вывод с консоли, файла, сокета, процесса происходит одинаково;
— прозрачность: программисту не нужно явно указывать тип вводимого или выводимого объекта;
— расширяемость: программист может добавить поддержку ввода-вывода в поток для любого своего объекта, просто перегрузив соответствующие операторы.

В библиотеке IOStream есть также класс stringstream, который позволяет связать поток ввода-вывода со строкой в памяти. Всё, что выводится в такой поток, добавляется в конец строки; всё, что считыватся из потока — извлекается из начала строки.

Он позволяет делать весьма забавные вещи, например, осуществлять преобразование типов:

Читать дальше →
Всего голосов 38: ↑31 и ↓7+24
Комментарии32

Алгоритмы отсечения

Время на прочтение5 мин
Количество просмотров54K
С ростом мощности компьютеров всё большая часть людей пробует работать с графикой. На первый взгляд многие алгоритмы кажутся интуитивно понятными, но, если вы хотите, чтобы ваше приложение работало с приемлемой скоростью, вам придётся изучить классические алгоритмы.

Этот пост посвящён разбору нескольких алгоритмов, направленных на одну и ту же задачу, задачу отсечения отрезков. При генерации изображений могут получаться фигуры произвольной формы и размеров. Зачастую мониторы не могут отобразить сгенерированные изображения целиком. Также иногда возникают ситуации, когда необходимо задать область изображения на экране и выводить изображения только внутри этой области. Для решения этих задач и придуманы алгоритмы отсечения.
Читать дальше →
Всего голосов 57: ↑54 и ↓3+51
Комментарии10

Сжатие изображений с использованием вейвлет

Время на прочтение11 мин
Количество просмотров27K
Вейвлетное сжатие — общее название класса методов кодирования изображений, использующих двумерное вейвлет-разложение кодируемого изображения. Обычно подразумевается сжатие с потерей качества. В статье не будет приведено сложных математических формул, всю теорию можно почитать по ссылкам внизу статьи. Здесь только практика!

Отличие от JPEG


Алгоритм JPEG, в отличие от вейвлетного, сжимает по отдельности каждый блок исходного изображения размером 8 на 8 пикселов. В результате при высоких степенях сжатия на восстановленном изображении может быть заметна блочная структура. При вейвлетном сжатии такой проблемы не возникает, но могут появляться искажения другого типа, имеющие вид «призрачной» ряби вблизи резких границ.
Считается, что такие артефакты в среднем меньше бросаются в глаза наблюдателю, чем «квадратики», создаваемые JPEG.

Пример


Для примера сильно сожмем одно и тоже изображение приблизительно до одного размера:

В начале с использованием JPEG:
7959 байт
(7959 байт)

затем алгоритмом вейвлетного сжатия JPEG 2000:
7813 байт
(7813 байт)

Читать дальше →
Всего голосов 155: ↑133 и ↓22+111
Комментарии77

Алкотестер от facebook

Время на прочтение16 мин
Количество просмотров1.9K
Картинка для привлечения внимания
Все знают социальную сеть facebook. Многие слышали о неких программистских задачках, опубликованных администрацией этой сети с целью поиска программистов в свою контору (хотя, судя по комментариям на форуме, эта практика давно приостановлена). Некоторые пытались эти задачки решать. Кое-кто даже добился в этом успеха. Но лишь единицы поделились своим опытом в этом. А опыт, надо сказать, весьма и весьма полезный. Собравшись с мыслями, я решил слегка исправить это упущение.

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

Итак, алкотестер. Он же breathalyzer. Это задачка snack-сложности по классификации facebook, т.е. по их меркам она совсем не сложная. Что не помешало мне потратить на её решение добрых пару недель(отчасти из-за принципиального желания решить её на Ruby). Эту задачу я делал второй по-очереди, и именно она натолкнула меня на основную идею, побудившую меня прикладывать кучу усилий для поиска решения. А идея была в следующем — я не умею программировать…
Читать дальше →
Всего голосов 126: ↑120 и ↓6+114
Комментарии62

Изобретаем язык программирования для тренировки мозгов. Или эзотерический язык программирования за 5 минут

Время на прочтение2 мин
Количество просмотров6.1K
Изучая вики по эзотерическим языкам я наткнулся на интересный язык программирования Piet. Отличительной особенностью которого является графическое представление программы. Например, эта программа выводит «Hello World!»
image
И показалось мне, что данная программа похожа на QR-Code.
image
Только Piet использует цветовую кодировку. А QR-Code использует комбинацию расположения точек.
Читать дальше →
Всего голосов 84: ↑74 и ↓10+64
Комментарии23

Как писать квайны

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

Многие программисты считают написание квайнов (программ, выводящих свой исходный код) непосильной задачей. И действительно — все эти цепные квайны и квайны различного порядка, при взгляде на которые можно потеряться в, казалось бы, бессмысленном наборе символов…

Однако, на самом деле, написать квайн на каком-либо языке не так сложно, как кажется. Сейчас я расскажу, как сделать это на различных языках программирования. Более того, мы не будем использовать «хаки» интерпретеруемых языков вроде операции вывода исходного кода и функций типа eval и напишем квайны на интерпретируемых и компилируемых языках.
Читать дальше →
Всего голосов 84: ↑80 и ↓4+76
Комментарии56

Спортивное программирование: «С чего начать?»

Время на прочтение1 мин
Количество просмотров93K
Под катом — список из 15 лучших ресурсов, посвящённых Спортивному Программированию.
Читать дальше →
Всего голосов 78: ↑66 и ↓12+54
Комментарии30

Стереоизображение — это просто

Время на прочтение3 мин
Количество просмотров50K
Привет, %username%.

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

Введение


Для начала рассмотрим, как устроено стереоизображение и как на него смотреть.
Читать дальше →
Всего голосов 198: ↑189 и ↓9+180
Комментарии132

Основы фрактального сжатия изображений

Время на прочтение4 мин
Количество просмотров34K
Фракталы — удивительные математические объекты, подкупающие своей простотой и богатыми возможностями по построению объектов сложной природы при помощи всего лишь нескольких коэффициентов и простой итеративной схемы.
Именно эти возможности и позволяют использовать их для сжатия изображений, особенно для фотографий природы и прочих сложных самоподобных изображений.
В этой статье я постараюсь коротко дать ответ на простой вопрос: «Как же это делается?».
Узнать, как это делается
Всего голосов 50: ↑45 и ↓5+40
Комментарии25

Удивительное рядом или как поиздеваться над биржевыми аналитиками (при помощи Excel)

Время на прочтение2 мин
Количество просмотров6.9K
С каналов вроде CNBC люди в костюмах и дорогих аксессуарах вещают с умным видом о предположительном движении того или иного курса. В качестве визуальной помощи они используют графики курсов с нарисованными поверх них линиями разнообразных индикаторов и фигур технического анализа.

Индикатор (в контексте этой статьи) – это просто какая-то функция над ценой. Например, скользящее среднее (moving average). Существуют сотни разных индикаторов.

Фигура технического анализа – это какой-то известный паттерн, например, треугольник, двойное дно, голова и плечи. Фигур этих тоже сотни.
Читать дальше →
Всего голосов 73: ↑51 и ↓22+29
Комментарии66

С++: шаблон «поводок»

Время на прочтение6 мин
Количество просмотров5.3K
Намедни коллега подкинул такую задачку:

«Есть два типа объектов — Human и Dog. Human может владеть некоторой собакой (а может и не владеть). Dog может иметь некоторого хозяина (а может и не иметь). Понятно, что если некоторый объект типа Human владеет некоторым объектом типа Dog, то для данного объекта типа Dog именно данный объект типа Human является хозяином и только он. Причем Dog должен знать, кто его Human, и наоборот. Как бы ты это реализовал?»

Казалось бы, всё просто — заведём два указателя друг на друга у классов Human и Dog и дело в шляпе. Но реализация данной затеи привела меня к идее, как мне кажется, нового шаблона проектирования.
Читать дальше →
Всего голосов 54: ↑51 и ↓3+48
Комментарии42

Нечеткая логика на практике

Время на прочтение5 мин
Количество просмотров137K
Стандартная статья о нечеткой логике обычно грешит двумя вещами:

  1. В 99% случаев статья касается исключительно применения нечеткой логики в контексте нечетких множеств, а точнее нечеткого вывода, а еще точнее алгоритма Мамдани. Складывается впечатление, что только этим способом нечеткая логика может быть применена, однако это не так.
  2. Почти всегда статья написана на математическом языке. Замечательно, но программисты пользуются другим языком с другими обозначениями. Поэтому оказывается, что статья просто непонятна тем, кому, казалось бы, должна быть полезна.

Все это грустно, потому что нечеткая логика — это одно из величайших достижений математики XX-ого века, если критерием брать практическую пользу. В этой статье я попытаюсь показать, насколько это простой и мощный инструмент программирования — настолько же простой, но гораздо более мощный, чем система обычных логических операций.
Читать дальше →
Всего голосов 64: ↑60 и ↓4+56
Комментарии38

Дерево ван Эмде Боаса

Время на прочтение6 мин
Количество просмотров18K
Всем доброго времени суток!

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

Дерево ван Эмде Боаса (van Emde Boas tree) — ассоциативный массив, который позволяет хранить целые числа в диапазоне [0; U), где U = 2k, проще говоря, числа, состоящие не более чем из k бит. Казалось бы, зачем нужно еще какое-то дерево, да еще позволяющее хранить только целые числа, когда существует множество различных сбалансриованных двоичных деревьев поиска, позволяющих выполнять операции вставки, удаления и прочие за O(log n), где n — количество элементов в дереве?

Главная особенность этой структуры — выполнение всех операций за время O(log(log(U))) независимо от количества хранящихся в ней элементов.

Что же там еще есть такого вкусного?
Всего голосов 192: ↑190 и ↓2+188
Комментарии39

Рекурсивный zip-архив

Время на прочтение5 мин
Количество просмотров40K
Многие хабрапользователи наверняка знакомы с квайнами — программами, выводящими собственный исходный код. Сегодня я хочу показать как сделать интересный вариант квайна — ZIP-архив, который распаковывается сам в себя.

Читать дальше →
Всего голосов 171: ↑168 и ↓3+165
Комментарии55
1

Информация

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