Полгода назад при разработке системы финансового учета поднялся вопрос о идентификации банковский дней. Произошло это в следующем контексте — при выставлении счета отводится некий промежуток времени (в банковских днях) по истечению которого надо трубить тревогу, если счет еще не оплачен.
crazyprog @crazyprog
User
Кластеризация: алгоритмы k-means и c-means
3 min
185KДобрый день!
Как и обещал, продолжаю серию публикаций о технологии Data Mining. Сегодня хочу рассказать о двух алгоритмах кластеризации (k-means и c-means), описать преимущества и недостатки, дать некоторые рекомендации по их использованию. Итак, поехали…
Кластеризация — это разделение множества входных векторов на группы (кластеры) по степени «схожести» друг на друга.
Кластеризация в Data Mining приобретает ценность тогда, когда она выступает одним из этапов анализа данных, построения законченного аналитического решения. Аналитику часто легче выделить группы схожих объектов, изучить их особенности и построить для каждой группы отдельную модель, чем создавать одну общую модель для всех данных. Таким приемом постоянно пользуются в маркетинге, выделяя группы клиентов, покупателей, товаров и разрабатывая для каждой из них отдельную стратегию (Википедия).
Как и обещал, продолжаю серию публикаций о технологии Data Mining. Сегодня хочу рассказать о двух алгоритмах кластеризации (k-means и c-means), описать преимущества и недостатки, дать некоторые рекомендации по их использованию. Итак, поехали…
Кластеризация — это разделение множества входных векторов на группы (кластеры) по степени «схожести» друг на друга.
Кластеризация в Data Mining приобретает ценность тогда, когда она выступает одним из этапов анализа данных, построения законченного аналитического решения. Аналитику часто легче выделить группы схожих объектов, изучить их особенности и построить для каждой группы отдельную модель, чем создавать одну общую модель для всех данных. Таким приемом постоянно пользуются в маркетинге, выделяя группы клиентов, покупателей, товаров и разрабатывая для каждой из них отдельную стратегию (Википедия).
+5
Верстка на HTML5
3 min
65K
Несмотря на то, что стандарт HTML5 официально не утвержден, использовать его можно уже сейчас. Большинство браузеров уже понимают новые структурные элементы и для его использования достаточно добавить новый
doctype
.+92
Веб-аналитика: анализируй это! Часть 3. Базовые метрики
4 min
22KПредыдущие части:
Часть 1. Вступление
Часть 2. Сбор данных
Пришло время поговорить о метриках — тех величинах, которые считает любая система статистики. Начнем с прямых метрик — тех, которые можно посчитать легко и без применения формул.
Часть 1. Вступление
Часть 2. Сбор данных
Пришло время поговорить о метриках — тех величинах, которые считает любая система статистики. Начнем с прямых метрик — тех, которые можно посчитать легко и без применения формул.
+28
JetBrains открыла программу EAP для Web IDE
1 min
2.1KJetBrains открыла программу EAP (Early Access Program) для JetBrains Web IDE. JetBrains Web IDE это IDE для веб программирования. Она построена на основе платформы JetBrains IDE Framework.
Web IDE доступна в двух вариантах: в стандартный вариант включена поддержка HTML, CSS, JavaScript. В PHP Developer edition добавляется поддержка PHP и SQL.
Как и все приложения на JetBrains IDE Framework, Web IDE доступна на всех основных платформах: Windows, Linux и MacOS.
Скачать и найти больше информации можно здесь: www.jetbrains.net/confluence/display/WI/Web+IDE+EAP
Web IDE доступна в двух вариантах: в стандартный вариант включена поддержка HTML, CSS, JavaScript. В PHP Developer edition добавляется поддержка PHP и SQL.
Как и все приложения на JetBrains IDE Framework, Web IDE доступна на всех основных платформах: Windows, Linux и MacOS.
Скачать и найти больше информации можно здесь: www.jetbrains.net/confluence/display/WI/Web+IDE+EAP
+25
Структуры данных: бинарные деревья. Часть 2: обзор сбалансированных деревьев
6 min
247KПервая статья цикла
Во второй статье я приведу обзор характеристик различных сбалансированных деревьев. Под характеристикой я подразумеваю основной принцип работы (без описания реализации операций), скорость работы и дополнительный расход памяти по сравнению с несбаланчированным деревом, различные интересные факты, а так же ссылки на дополнительные материалы.
Интро
Во второй статье я приведу обзор характеристик различных сбалансированных деревьев. Под характеристикой я подразумеваю основной принцип работы (без описания реализации операций), скорость работы и дополнительный расход памяти по сравнению с несбаланчированным деревом, различные интересные факты, а так же ссылки на дополнительные материалы.
+53
8 полезных регэкспов с наглядным разбором
2 min
274KО мощи и гибкости регулярных выражений написано много, и их использование давно уже является стандартом для различного рода операций над текстом. Пожалуй, чаще всего регэкспы работают при валидации вводимых данных — здесь им практически нет альтернативы, если не считать громоздкий циклический разбор с кучей неочевидных проверок. Начнём с самого простого:
По сути, слово с дефисами.
Паттерн: /^[a-z0-9-]+$/

1. Часть ЧПУ (человекопонятный URL)
По сути, слово с дефисами.
Паттерн: /^[a-z0-9-]+$/

+88
Профессиональный программист: ремесленник или художник?
2 min
3.1KВ начале расскажу небольшую предисторию, которая подвигла меня написать этот топик.
В один прекрасный момент я почувствовал, что программирование (на работе) перестало приносить мне былое удовольствие. Данный кризис я могу отнести к тому, что стал заниматься новыми задачами не по разработке, а по поддержке проектов. Задачи стали рутинными и не интересными: вставь check box в ui, посмотри и запусти проект, подготовь список вопросов, добавь scroll bar в окошко и т.д. Вдвойне неприятен тот факт, что я знаю, как улучшить систему (существующая ооочень далека от идеала, что бы это понять, достаточно посмотреть на такой участок кода (java): String molStr = new String(""). И это только цветочки =), но мне это не дают делать по причине того, что «заказчик буде не доволен». Проекты сделаны с использованием устаревших технологий (Java 1.4, WL 8.1, всё остальное в том же духе), но новые возможности просто игнорируются: «нет времени, мы и так не успеваем». Рефакторинг не проводится (хотя проекты в нём отчаянно нуждаются), связанность (coupling) классов велика, а связность (cohesion) низка, но никого этот факт не беспокоит, про производительность даже и говорить не буду… По прошествию некоторого времени стало казаться, что идёт попытка улучшить огромный антипаттерн.
На все мои свои замечания по этому поводу, я получал примерно следующий ответ: «Очень хорошо, что ты это заметил, но сейчас времени на исправления нет, но, возможно, в будущем мы это поправим». Но ожидаемый момент будущего всё никак не наступает…
Высказав всё накипевшее во мне начальнику, я получил ответ «Будь профессионалом!».
Тут я понял, у нас с начальником большой разрыв в понимании смысла этого слова. Вот какое объяснение этого термина я нашёл в словаре Ожегова: «Профессионал – человек, занимающийся чем-нибудь, как профессией (в отличие от любителя)», «Профессия – основной род занятий, трудовой деятельности», «1. Человек, который имеет склонность, пристрастие к чему-нибудь. 2. Тот, кто занимается чем-нибудь в свободное время, не как профессионал».
Мне кажется, что программист это скорее профессионал-любитель (в 1ом значении этого термина), похожее мнение я вычитал в книге Роберта Гласса «Креативное программирование». Начальник считает, что программирование это лишь средство зарабатывания денег, хотя для меня это нечто большее («Ты живёшь в каком-то идеальном мире»).
Хотелось бы услышать Ваше мнение на этот счёт? Что такое программирование: искусство или ремесло?
P.S. Мне кажется, что хоть программирование это мой хлеб, возможность заработать, но нельзя садиться писать код без творческого подхода.
+45
Первоклассным специалистом может стать каждый!
3 min
9.6KВы думаете лучшими специалистами в своем деле становятся талантливые и гениальные люди? Нет, быть лучшим — это возможность каждого нормального человека! И у тебя, Хаброжитель, эта возможность тоже есть!
+103
Алгоритмы на графах — Часть 2: Сортировка сетей
5 min
23KПролог
В продолжение опубликованной на выходных статьи.Компиляторы — пожалуй одна из самых интересных тем системного программирования.
Эта статья не расскажет как написать идеальный, или, хотя бы, работающий компилятор, но она поможет прояснить пару аспектов его работы, при помощи метода топологической сортировки сети.
+62
Жизнь во фрилансе глазами программиста
3 min
57KВот уже два с половиной месяца как я занимаюсь фрилансом, за это время накопился опыт, которым хочу поделиться с общественностью.
Вначале нужно как можно большими способами давать знать о том, что вы ищете заказы: говорить знакомым, родственникам, бывшим коллегам, заказчикам бывших коллег, публиковать в социальных сетях, специализированных веб-сайтах. Я подал более двадцати заявок на таких сайтах, прежде чем сработала хотя бы одна. Пару недель это у вас займёт.
Вход
Вначале нужно как можно большими способами давать знать о том, что вы ищете заказы: говорить знакомым, родственникам, бывшим коллегам, заказчикам бывших коллег, публиковать в социальных сетях, специализированных веб-сайтах. Я подал более двадцати заявок на таких сайтах, прежде чем сработала хотя бы одна. Пару недель это у вас займёт.
Трудности
+113
Что нужно настроить в mySQL сразу после установки?
5 min
150KTranslation
Вольный перевод довольно старой статьи с MySQL Performance Blog о том, что лучше сразу же настроить после установки базовой версии mySQL.
+81
Nagios: уведомление через SMS
3 min
7.4KNagios: уведомление через SMS
Всвязи с увеличением количества серверов возникла необходимость в их мониторинге с возможностью оповещения при возникновении проблем. Выбор пал на Nagios, так как пару лет назад, работая в компании телеком-оператора работал с ним.
Одним из условий была возможность оповещения посредством SMS сообщений.
Итак, что имеем и как все это заставить работать вместе:
— Linux (Debian 5) сервер с установленным Nagios (процесс первоначальной установки и настройки самого Nagios не буду описывать в данной статье)
— Мобильный телефон (в данном случае Nokia 3110), подключаемый посредством USB кабеля
— Желание все это дело заставить работать вместе :)
Всвязи с увеличением количества серверов возникла необходимость в их мониторинге с возможностью оповещения при возникновении проблем. Выбор пал на Nagios, так как пару лет назад, работая в компании телеком-оператора работал с ним.
Одним из условий была возможность оповещения посредством SMS сообщений.
Итак, что имеем и как все это заставить работать вместе:
— Linux (Debian 5) сервер с установленным Nagios (процесс первоначальной установки и настройки самого Nagios не буду описывать в данной статье)
— Мобильный телефон (в данном случае Nokia 3110), подключаемый посредством USB кабеля
— Желание все это дело заставить работать вместе :)
+6
Организация видео трансляции
2 min
173KПредлагаю сообществу поделиться своим опытом в области видео трансляций.
Может получится создать что-то на подобии мини пособия.
Схема простая: кто-то задает вопрос, а знающий ответ – делиться информацией. И всё это попадает в топик.
Попробую начать из того, что узнал по советам и ответам на форумах.
Может получится создать что-то на подобии мини пособия.
Схема простая: кто-то задает вопрос, а знающий ответ – делиться информацией. И всё это попадает в топик.
Попробую начать из того, что узнал по советам и ответам на форумах.
+45
Структуры данных: бинарные деревья. Часть 1
6 min
382KИнтро
Этой статьей я начинаю цикл статей об известных и не очень структурах данных а так же их применении на практике.
В своих статьях я буду приводить примеры кода сразу на двух языках: на Java и на Haskell. Благодаря этому можно будет сравнить императивный и функциональный стили программирования и увидить плюсы и минусы того и другого.
Начать я решил с бинарных деревьев поиска, так как это достаточно базовая, но в то же время интересная штука, у которой к тому же существует большое количество модификаций и вариаций, а так же применений на практике.
+92
+33
Java по-русски. Часть первая: Книги
2 min
497KНе так давно я проводил опрос «Какие материалы о Java вас интересуют на русском языке?» среди посетителей Хабра. Вторым этапом моего исследования будет обзор существующих русско-язычных ресурсов.
За 2009 на Ozon.ru можно найти 8 книг по Java (всего за последние 3 года их вышло 22 — примерно по 7 в год, на books.ru набор примерно такой же, так что наша выборка довольно репрезентативна). Посмотрим, что это за книги?
Книги
За 2009 на Ozon.ru можно найти 8 книг по Java (всего за последние 3 года их вышло 22 — примерно по 7 в год, на books.ru набор примерно такой же, так что наша выборка довольно репрезентативна). Посмотрим, что это за книги?
+20
Обзор литературы по Data Mining
7 min
66KДобрый день!
Публикация нескольких статей о Data Mining показала высокий интерес сообщества к данной теме. Много вопросов было задано по типу «где почитать» и «с чего начать». Предлагаю вашему вниманию подборку литературы, ресурсов для уверенного старта в данной области.
Публикация нескольких статей о Data Mining показала высокий интерес сообщества к данной теме. Много вопросов было задано по типу «где почитать» и «с чего начать». Предлагаю вашему вниманию подборку литературы, ресурсов для уверенного старта в данной области.
+46
Алгоритмы на графах — Часть 1: Поиск в глубину и проблема взаимоблокировок
6 min
67KНедавно на Хабре была статья, посвященная алгоритмам на графах. С позволения автора, мой первый хабратопик продолжит цикл.
Хотелось бы осветить вопросы применения некоторых алгоритмов, для решения задач программирования.
Достаточно жизненный пример, с которым сталкивался не один разработчик — это deadlock. По сути deadlock – это взаимоблокировка, в результате которой система, или какие-то отдельные процессы начинают конкурировать за один ресурс.
В жизни такие ситуации встречаются, например, когда два человека желают пропустить друг друга на входе, предположим, в аудиторию. Однако после 3-4 фраз «только после вас!», кто-нибудь всё же пройдет первым.
На уровне программного обеспечения всё сложнее, пока программы не способны думать, машинный аналог фразы «только после вас!» будет повторяться вплоть до перезагрузки.
Как исполняющая система может повлиять на этот процесс? Вот тут нам на помощь и приходят алгоритмы на графах.
Для начала определимся, что же будет элементами нашего графа, и как его составить.
Хотелось бы осветить вопросы применения некоторых алгоритмов, для решения задач программирования.
Достаточно жизненный пример, с которым сталкивался не один разработчик — это deadlock. По сути deadlock – это взаимоблокировка, в результате которой система, или какие-то отдельные процессы начинают конкурировать за один ресурс.
В жизни такие ситуации встречаются, например, когда два человека желают пропустить друг друга на входе, предположим, в аудиторию. Однако после 3-4 фраз «только после вас!», кто-нибудь всё же пройдет первым.
На уровне программного обеспечения всё сложнее, пока программы не способны думать, машинный аналог фразы «только после вас!» будет повторяться вплоть до перезагрузки.
Как исполняющая система может повлиять на этот процесс? Вот тут нам на помощь и приходят алгоритмы на графах.
Для начала определимся, что же будет элементами нашего графа, и как его составить.
+39
Getters & Setters в Javascript
9 min
29KМного людей знают, что такое getter'ы и setter'ы во многих языках программирования. Есть эти чудесные штуки и в JavaScript, хоть узнал я об этом совсем недавно (темень я необразованная). Речь пойдёт не только и не столько про методы
getSomeProperty()/setSomeProperty(...)
, а про более интересную реализацию — псевдо-аттрибуты, при изменении которых будут вызываться функции-обработчики.+61
Information
- Rating
- Does not participate
- Location
- Зеленоград, Москва и Московская обл., Россия
- Registered
- Activity