Как стать автором
Обновить
146
0
Alexander Galkin @alaudo

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

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

Алгоритмы сортировки в виде пошаговой анимации

Время на прочтение1 мин
Количество просмотров65K
Сортировка последовательности данных — один из столпов компьютерной науки. Проблема в том, как делать сортировку наиболее эффективным образом, и эта задача стоит перед исследователями чуть ли не с первого дня после изобретения компьютера. На сайте sorting.at различные алгоритмы сортировки проиллюстрированы в виде пошаговой анимации, для лучшего понимания принципов их работы.


Читать дальше →
Всего голосов 53: ↑38 и ↓15+23
Комментарии19

Новости Windows Azure: анонсы, большие анонсы, мега-анонсы!

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

В течение нескольких прошедших недель платформа Windows Azure получила целый ряд крупных обновлений. Большая часть анонсов состоялась в рамках конференции TechEd North America 2013, которая проходит с 3 по 6 июня в США.

Среди этих анонсов можно выделить следующие основные:

  • Магазин сервисов и данных Windows Azure Store доступен в России;
  • Новые дата-центры в Китае, Японии и Австралии;
  • Поминутная тарификация использования вычислительных ресурсов;
  • Плата за остановленные виртуальные машины больше не взымается;
  • Новинка! Новый облачный сервис BizTalk Services;
  • Глобальная доступность поддержки AMQP в Windows Azure Service Bus;
  • Поддержка пользовательских SSL-сертификатов в Windows Azure Web Sites;
  • Библиотека Node.js для аутентификации с Windows Azure Active Directory;
  • Выпуск Windows Azure Media Services .NET SDK под open source на Github;
  • Обновление сервиса Windows Azure Active Directory;
  • Обновление PowerShell-скриптов для IaaS и PaaS;
  • Значительное улучшение условий подписки MSDN, сценариев разработки и тестирования ПО;
  • Улучшение портала для более удобного информирования о тратах;
  • Обновленный триал для тестирования Windows Azure;
  • Выпущено обновление Training Kit.

Ниже вы найдете более подробное описание каждого нововведения.
Читать дальше →
Всего голосов 41: ↑30 и ↓11+19
Комментарии20

Особенности работы или «За что я люблю JavaScript»: Замыкания, Прототипирование и Контекст

Время на прочтение17 мин
Количество просмотров103K
Зародившись как скриптовый язык в помощь веб-разработчикам, с дальнейшим развитием JavaScript стал мощным инструментом разработки клиентской части, обеспечивающий удобство и интерактивность страницы прямо в браузере у пользователя.

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

Думаю, что большинство программистов, писавших код на JavaScript больше пары дней, сталкивались с этими особенностями. Цель данного топика не открыть что-то новое, а попытаться описать эти особенности «на пальцах» и «недостатки» сделать «преимуществами».

В данном топике будут рассматриваться:

  1. Замыкания
  2. Прототипирование
  3. Контекст выполнения

Читать дальше →
Всего голосов 112: ↑91 и ↓21+70
Комментарии85

Data mining: Инструментарий — Theano

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

В предыдущих материалах этого цикла мы рассматривали методы предварительной обработки данных при помощи СУБД. Это может быть полезно при очень больших объемах обрабатываемой информации. В этой статье я продолжу описывать инструменты для интеллектуальной обработки больших объёмов данных, остановившись на использовании Python и Theano.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии4

Почему стоит изучить Clojure?

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

Что такое хороший язык программирования? Какими качествами и характеристиками он должен обладать? Ответ дать сложно. Вот одно из возможных определений: хороший ЯП должен хорошо решать возложенные на него задачи. Ведь ЯП — лишь инструмент в руках программиста. А инструмент обязан помогать нам в работе. В конце концов, это же и есть причина его создания. Разные ЯП стараются решать разные проблемы (с переменным успехом). Цель, которая ставилась при проектировании Clojure — сделать написанные нами программы простыми. И, как следствие, ускорить их создание, тестирование. А главное, уменьшить время на их понимание, изменение и сопровождение.
Читать дальше →
Всего голосов 112: ↑108 и ↓4+104
Комментарии55

Пишем эмулятор Кубика Рубика

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

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


Читать дальше →
Всего голосов 81: ↑61 и ↓20+41
Комментарии30

Препроцессинг данных и анализ моделей

Время на прочтение8 мин
Количество просмотров31K
Всем привет. В прошлом посте я рассказывал про некоторые базовые методы классификации. Сегодня, в силу специфики последней домашки, пост будет не столько про сами методы, сколько про обработку данных и анализ полученных моделей.

Задача


Данные были предоставлены факультетом статистики Мюнхенского университета. Вот здесь можно взять сам датасет, а также само описание данных (названия полей даны на немецком). В данных собраны заявки на предоставление кредита, где каждая заявка описывается 20 переменными. Помимо этого, каждой заявке соответствует, выдали ли заявителю кредит, или нет. Вот здесь можно подробно посмотреть, что какая из переменных означает.

Нашей задачей стояло построить модель, которая предсказывала бы решение, которое будет вынесено по тому или иному заявителю.


Читать дальше →
Всего голосов 31: ↑27 и ↓4+23
Комментарии15

Рекомендательная система: полезные задачи текстмайнинга

Время на прочтение4 мин
Количество просмотров14K
Я продолжаю цикл статей по применению текстмайнинг-методов для решения различных задач, возникающих в рекомендательной системе веб-страниц. Сегодня я расскажу о двух задачах: автоматическое определение категорий для страниц из RSS-лент и поиск дубликатов и плагиата среди веб-страниц. Итак, по порядку.

Автоматическое определение категорий для веб-страниц из RSS-лент


Обычная схема добавления веб-страниц (вернее, ссылок на них) в Surfingbird такова: при добавлении новой ссылки пользователь должен указать до трёх категорий, к которым принадлежит эта ссылка. Понятно, что в такой ситуации задача автоматического определения категорий не стоит. Однако, кроме ручного добавления, ссылки попадают в базу и из RSS-потоков, которые предоставляют многие популярные сайты. Поскольку ссылок, поступающих через RSS-потоки, очень много, зачастую модераторы (а в этом случае именно они вынуждены проставлять категории) просто не справляются с таким объёмом. Возникает задача создания интеллектуальной системы автоматической классификации по категориям. Для ряда сайтов (например, lenta.ru или sueta.ru) категории можно вытащить непосредственно из rss-xml и вручную привязать к нашим внутренним категориям:

image
image
Читать дальше →
Всего голосов 40: ↑37 и ↓3+34
Комментарии10

Командное взаимодействие во время соревнований CTF

Время на прочтение3 мин
Количество просмотров4.3K
Нет, это не про Quake. Статья будет интересна тем, кто уже знает, что такое соревнования CTF и принимал участие хотя бы в одном подобном мероприятии. Для тех, кто не знает, CTF(Capture The Flag) — соревнования в сфере информационной безопасности, основной целью которых является захват т.н. «флагов», которые в дальнейшем превращаются в очки.

Соревнования длятся 24–48 часов, часто без перерыва, что требует от участников обладания огромным багажом знаний и опыта. Немаловажным фактором является возможность быстрого обмена информацией/знаниями в режиме реального времени. Таким образом, CTF можно рассматривать как модель сжатого во времени процесса, связанного одновременно с анализом данных, мозговым штурмом, поиском и эксплуатацией уязвимостей, разработкой ПО.

Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии21

Результаты отборочного этапа NeoQUEST-2013 и способы прохождения заданий

Время на прочтение11 мин
Количество просмотров7.8K
Всем привет от команды NeoQUEST-2013!
Отборочный этап прошёл, и мы рады подвести его итоги. А итоги таковы, что мы не смогли ограничиться запланированным набором призов и подарков, потому что много участников, вклад которых нельзя не отметить.

Под катом подведение итогов и описание заданий отборочного этапа NeoQUEST–2013.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии2

Экспорт избранного Хабра в FB2 — скоростная PHP-версия

Время на прочтение2 мин
Количество просмотров15K
В своё время я уже видел такой конвертер здесь же на Хабре, написанный на питоне, но он на моей машинке сжирал много-много-много ресурсов и ни разу не смог моё избранное (а это 400+ постов) до конца сохранить, падая то на некорректном файле, то на «кривой» статье. Пришлось переписать, результаты трудов под катом.
Читать дальше →
Всего голосов 41: ↑39 и ↓2+37
Комментарии59

О компиляторах и интерпретаторах

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

Если ты всегда мечтал написать свой язык программирования — добро пожаловать. Здесь ты наверняка найдёшь для себя что-нибудь интересное.

GitHub-юзер yawnt собрал чудесную подборку ссылок для любителей драконов, языков и прочих вкусных внутренностей. А знающие камрады в комментариях наверняка поделятся с тобой и другими яствами.

Пишет yawnt следующее:

С каждым днём мне всё интереснее тема компиляторов, интерпретаторов и дизайна языков программирования в целом. И я решил поделиться с народом ссылками на собранные мной материалы (большую часть мне самому ещё предстоит прочитать :<). Надеюсь, кому-нибудь они окажутся полезными.

Я не включил (и не собираюсь) в список ссылки на официальную документацию, т. к. считаю очевидным, что первым делом следует смотреть именно туда ;P.
Итак, куча интересных ссылок
Всего голосов 116: ↑109 и ↓7+102
Комментарии55

Быстрый набор кода для разработчиков — typing.io

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

Часть подобных проблем можно избежать, используя различные IDE, которые укажут на неправильное название переменной, незакрытые скобки или банальную опечатку.
Читать дальше →
Всего голосов 43: ↑30 и ↓13+17
Комментарии22

Задачи и отмена в .Net — tips & tricks

Время на прочтение11 мин
Количество просмотров101K
С выходом .NET Framework 4.0 в состав BCL была добавлена библиотека Task Parallel Library (TPL), реализующая параллелизм на основе задач. В основе библиотеки лежат типы Task и унаследованный от него тип Task. Эти типы являются обёртками для асинхронных операций; они позволяют абстрагироваться от таких технических деталей, как, например, потоки и синхронизировать асинхронные операции друг с другом.

В этой же версии .NET Framework появился мини-framework для кооперативной отмены асинхронных операций. Состоит он из всего трёх типов:
  • CancellationTokenSource — создаёт маркёры отмены (свойство Token) и обрабатывает запросы на отмену операции (перегруженные методы Cancel/CancelAfter).
  • CancellationToken — маркёр отмены; позволяет несколькими способами отслеживать запросы на отмену операции: опросом свойства IsCancellationRequested, регистрацией callback-функции (через перегруженный метод Register), ожиданием на объекте синхронизации (свойство WaitHandle).
  • OperationCanceledException — исключение, выброс которого по соглашению означает, что запрос на отмену операции был обработан и операция должна считаться отменённой. Предпочтительный способ генерации исключения — вызов метода CancellationToken. ThrowIfCancellationRequested.

Механизм отмены через CancellationToken является стандартным для TPL — есть перегрузки методов, принимающих CancellationToken, исключения OperationCanceledException специальным образом обрабатываются и т.д. Однако, как и в любом другом API, есть свои тонкости, хитрости, best practices.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии5

Пишем игру-клон Super Mario Brothers (часть 1)

Время на прочтение23 мин
Количество просмотров88K
imageДля многих из нас Super Mario Brothers была первой игрой, которая по-настоящему завораживала своим игровым процессом.
Интуитивное управление SMB и великолепный дизайн уровней от Nintendo заставляли проводить часы напролет в виртуальной вселенной сантехника и его напарника.

В этом чудесном туториале от Джейкоба Гандерсена мы создадим собственный платформер; но, так как главным героем будет Коала, мы назовем нашу игру «Super Koalio Brothers!» ;]
Также, чтобы упростить механику, мы забудем о движущихся врагах. Вместо них мы будем использовать шипованные блоки, встроенные в пол. Это позволит нам полностью сконцентрироваться на сердце платформера — физическом движке.

Внимание! Под катом невероятное количество переведенного текста, картинок, кода (код не переведен) и руководство по созданию собственного физического движка!
Читать дальше →
Всего голосов 127: ↑120 и ↓7+113
Комментарии16

Структуры данных: бинарные деревья. Часть 2: обзор сбалансированных деревьев

Время на прочтение6 мин
Количество просмотров244K
Первая статья цикла

Интро


Во второй статье я приведу обзор характеристик различных сбалансированных деревьев. Под характеристикой я подразумеваю основной принцип работы (без описания реализации операций), скорость работы и дополнительный расход памяти по сравнению с несбаланчированным деревом, различные интересные факты, а так же ссылки на дополнительные материалы.
Читать дальше →
Всего голосов 55: ↑54 и ↓1+53
Комментарии28

Накладные расходы памяти у коллекций

Время на прочтение7 мин
Количество просмотров90K
Мне было интересно, какие коллекции сколько съедают дополнительной памяти при хранении объектов. Я провёл замеры накладных расходов для популярных коллекций, предполагающих хранение однотипных элементов (то есть списки и множества) и свёл результаты на общий график. Вот картинка для 64-битной Hotspot JVM (Java 1.6):

Читать дальше →
Всего голосов 67: ↑64 и ↓3+61
Комментарии14

Структуры данных в картинках. LinkedList

Время на прочтение4 мин
Количество просмотров552K
Приветствую вас, хабражители!

Продолжаю начатое, а именно, пытаюсь рассказать (с применением визуальных образов) о том как реализованы некоторые структуры данных в Java.



В прошлый раз мы говорили об ArrayList, сегодня присматриваемся к LinkedList.

LinkedList — реализует интерфейс List. Является представителем двунаправленного списка, где каждый элемент структуры содержит указатели на предыдущий и следующий элементы. Итератор поддерживает обход в обе стороны. Реализует методы получения, удаления и вставки в начало, середину и конец списка. Позволяет добавлять любые элементы в том числе и null.

Прочитать чуть больше
Всего голосов 50: ↑46 и ↓4+42
Комментарии22

Структуры данных в картинках. ArrayList

Время на прочтение3 мин
Количество просмотров882K
Приветствую вас, хабралюди!

Взбрело мне в голову написать несколько статей, о том как реализованы некоторые структуры данных в Java. Надеюсь, статьи будут полезны визуалам (картинки наше всё), начинающим java-визуалам а также тем кто уже умеет писать new ArrayList(), но слабо представляет что же происходит внутри.



Сегодня поговорим о ArrayList-ах

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

Поверить на слово
Всего голосов 89: ↑82 и ↓7+75
Комментарии66

Подборка инструментов для фронт-энд разработки

Время на прочтение2 мин
Количество просмотров134K
Как разработчику, мне очень нравятся инструменты, которые помогают сэкономить время или упростить процесс разработки фронт-энда. В этой статье я собрал мои любимые веб-инструменты для упрощения разработки веб-интерфейсов.

Картинки кликабельны.

Form builder


Формы являются очень важной частью любого веб-сайта, но их верстка может занять продолжительное время. Этот очень удобный инструмент, поможет вам создать красивую веб-форму очень быстро.
image
Читать дальше →
Всего голосов 202: ↑184 и ↓18+166
Комментарии40

Информация

В рейтинге
Не участвует
Откуда
Hamburg, Hamburg, Германия
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer, Database Architect
Senior