Pull to refresh
8
0
crazyprog @crazyprog

User

Send message

Работаем с банковскими (рабочими) днями

Reading time1 min
Views15K
Полгода назад при разработке системы финансового учета поднялся вопрос о идентификации банковский дней. Произошло это в следующем контексте — при выставлении счета отводится некий промежуток времени (в банковских днях) по истечению которого надо трубить тревогу, если счет еще не оплачен.
Читать дальше →

Кластеризация: алгоритмы k-means и c-means

Reading time3 min
Views185K
Добрый день!

Как и обещал, продолжаю серию публикаций о технологии Data Mining. Сегодня хочу рассказать о двух алгоритмах кластеризации (k-means и c-means), описать преимущества и недостатки, дать некоторые рекомендации по их использованию. Итак, поехали…

Кластеризация — это разделение множества входных векторов на группы (кластеры) по степени «схожести» друг на друга.

Кластеризация в Data Mining приобретает ценность тогда, когда она выступает одним из этапов анализа данных, построения законченного аналитического решения. Аналитику часто легче выделить группы схожих объектов, изучить их особенности и построить для каждой группы отдельную модель, чем создавать одну общую модель для всех данных. Таким приемом постоянно пользуются в маркетинге, выделяя группы клиентов, покупателей, товаров и разрабатывая для каждой из них отдельную стратегию (Википедия).

Читать дальше →

Верстка на HTML5

Reading time3 min
Views65K
html5

Несмотря на то, что стандарт HTML5 официально не утвержден, использовать его можно уже сейчас. Большинство браузеров уже понимают новые структурные элементы и для его использования достаточно добавить новый doctype.
Читать дальше →

Веб-аналитика: анализируй это! Часть 3. Базовые метрики

Reading time4 min
Views22K
Предыдущие части:
Часть 1. Вступление
Часть 2. Сбор данных

Пришло время поговорить о метриках — тех величинах, которые считает любая система статистики. Начнем с прямых метрик — тех, которые можно посчитать легко и без применения формул.
Читать дальше →

JetBrains открыла программу EAP для Web IDE

Reading time1 min
Views2.1K
JetBrains открыла программу 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

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

Reading time6 min
Views247K
Первая статья цикла

Интро


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

8 полезных регэкспов с наглядным разбором

Reading time2 min
Views274K
О мощи и гибкости регулярных выражений написано много, и их использование давно уже является стандартом для различного рода операций над текстом. Пожалуй, чаще всего регэкспы работают при валидации вводимых данных — здесь им практически нет альтернативы, если не считать громоздкий циклический разбор с кучей неочевидных проверок. Начнём с самого простого:

1. Часть ЧПУ (человекопонятный URL)


По сути, слово с дефисами.

Паттерн: /^[a-z0-9-]+$/
short_url

Примеры посерьёзнее

Профессиональный программист: ремесленник или художник?

Reading time2 min
Views3.1K

В начале расскажу небольшую предисторию, которая подвигла меня написать этот топик.

В один прекрасный момент я почувствовал, что программирование (на работе) перестало приносить мне былое удовольствие. Данный кризис я могу отнести к тому, что стал заниматься новыми задачами не по разработке, а по поддержке проектов. Задачи стали рутинными и не интересными: вставь check box в ui, посмотри и запусти проект, подготовь список вопросов, добавь scroll bar в окошко и т.д. Вдвойне неприятен тот факт, что я знаю, как улучшить систему (существующая ооочень далека от идеала, что бы это понять, достаточно посмотреть на такой участок кода (java): String molStr = new String(""). И это только цветочки =), но мне это не дают делать по причине того, что «заказчик буде не доволен». Проекты сделаны с использованием устаревших технологий (Java 1.4, WL 8.1, всё остальное в том же духе), но новые возможности просто игнорируются: «нет времени, мы и так не успеваем». Рефакторинг не проводится (хотя проекты в нём отчаянно нуждаются), связанность (coupling) классов велика, а связность (cohesion) низка, но никого этот факт не беспокоит, про производительность даже и говорить не буду… По прошествию некоторого времени стало казаться, что идёт попытка улучшить огромный антипаттерн.

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

Тут я понял, у нас с начальником большой разрыв в понимании смысла этого слова. Вот какое объяснение этого термина я нашёл в словаре Ожегова: «Профессионал – человек, занимающийся чем-нибудь, как профессией (в отличие от любителя)», «Профессия – основной род занятий, трудовой деятельности», «1. Человек, который имеет склонность, пристрастие к чему-нибудь. 2. Тот, кто занимается чем-нибудь в свободное время, не как профессионал».

Мне кажется, что программист это скорее профессионал-любитель (в 1ом значении этого термина), похожее мнение я вычитал в книге Роберта Гласса «Креативное программирование». Начальник считает, что программирование это лишь средство зарабатывания денег, хотя для меня это нечто большее («Ты живёшь в каком-то идеальном мире»).

Хотелось бы услышать Ваше мнение на этот счёт? Что такое программирование: искусство или ремесло?

P.S. Мне кажется, что хоть программирование это мой хлеб, возможность заработать, но нельзя садиться писать код без творческого подхода.

Первоклассным специалистом может стать каждый!

Reading time3 min
Views9.6K
Вы думаете лучшими специалистами в своем деле становятся талантливые и гениальные люди? Нет, быть лучшим — это возможность каждого нормального человека! И у тебя, Хаброжитель, эта возможность тоже есть!
Читать дальше →

Алгоритмы на графах — Часть 2: Сортировка сетей

Reading time5 min
Views23K

Пролог

В продолжение опубликованной на выходных статьи.

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

Жизнь во фрилансе глазами программиста

Reading time3 min
Views57K
Вот уже два с половиной месяца как я занимаюсь фрилансом, за это время накопился опыт, которым хочу поделиться с общественностью.

Вход


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

Трудности


Читать дальше →

Nagios: уведомление через SMS

Reading time3 min
Views7.4K
Nagios: уведомление через SMS

Всвязи с увеличением количества серверов возникла необходимость в их мониторинге с возможностью оповещения при возникновении проблем. Выбор пал на Nagios, так как пару лет назад, работая в компании телеком-оператора работал с ним.
Одним из условий была возможность оповещения посредством SMS сообщений.
Итак, что имеем и как все это заставить работать вместе:
— Linux (Debian 5) сервер с установленным Nagios (процесс первоначальной установки и настройки самого Nagios не буду описывать в данной статье)
— Мобильный телефон (в данном случае Nokia 3110), подключаемый посредством USB кабеля
— Желание все это дело заставить работать вместе :)

Читать дальше →

Организация видео трансляции

Reading time2 min
Views173K
Предлагаю сообществу поделиться своим опытом в области видео трансляций.
Может получится создать что-то на подобии мини пособия.
Схема простая: кто-то задает вопрос, а знающий ответ – делиться информацией. И всё это попадает в топик.
Попробую начать из того, что узнал по советам и ответам на форумах.
Читать дальше →

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

Reading time6 min
Views382K

Интро



Этой статьей я начинаю цикл статей об известных и не очень структурах данных а так же их применении на практике.

В своих статьях я буду приводить примеры кода сразу на двух языках: на Java и на Haskell. Благодаря этому можно будет сравнить императивный и функциональный стили программирования и увидить плюсы и минусы того и другого.

Начать я решил с бинарных деревьев поиска, так как это достаточно базовая, но в то же время интересная штука, у которой к тому же существует большое количество модификаций и вариаций, а так же применений на практике.
Читать дальше →

Java по-русски. Часть первая: Книги

Reading time2 min
Views497K
Не так давно я проводил опрос «Какие материалы о Java вас интересуют на русском языке?» среди посетителей Хабра. Вторым этапом моего исследования будет обзор существующих русско-язычных ресурсов.

Книги


За 2009 на Ozon.ru можно найти 8 книг по Java (всего за последние 3 года их вышло 22 — примерно по 7 в год, на books.ru набор примерно такой же, так что наша выборка довольно репрезентативна). Посмотрим, что это за книги?
Читать дальше →

Обзор литературы по Data Mining

Reading time7 min
Views66K
Добрый день!

Публикация нескольких статей о Data Mining показала высокий интерес сообщества к данной теме. Много вопросов было задано по типу «где почитать» и «с чего начать». Предлагаю вашему вниманию подборку литературы, ресурсов для уверенного старта в данной области.

Читать дальше →

Алгоритмы на графах — Часть 1: Поиск в глубину и проблема взаимоблокировок

Reading time6 min
Views67K
Недавно на Хабре была статья, посвященная алгоритмам на графах. С позволения автора, мой первый хабратопик продолжит цикл.

Хотелось бы осветить вопросы применения некоторых алгоритмов, для решения задач программирования.
Достаточно жизненный пример, с которым сталкивался не один разработчик — это deadlock. По сути deadlock – это взаимоблокировка, в результате которой система, или какие-то отдельные процессы начинают конкурировать за один ресурс.
В жизни такие ситуации встречаются, например, когда два человека желают пропустить друг друга на входе, предположим, в аудиторию. Однако после 3-4 фраз «только после вас!», кто-нибудь всё же пройдет первым.
На уровне программного обеспечения всё сложнее, пока программы не способны думать, машинный аналог фразы «только после вас!» будет повторяться вплоть до перезагрузки.
Как исполняющая система может повлиять на этот процесс? Вот тут нам на помощь и приходят алгоритмы на графах.
Для начала определимся, что же будет элементами нашего графа, и как его составить.
Читать дальше →

Getters & Setters в Javascript

Reading time9 min
Views29K
Много людей знают, что такое getter'ы и setter'ы во многих языках программирования. Есть эти чудесные штуки и в JavaScript, хоть узнал я об этом совсем недавно (темень я необразованная). Речь пойдёт не только и не столько про методы getSomeProperty()/setSomeProperty(...), а про более интересную реализацию — псевдо-аттрибуты, при изменении которых будут вызываться функции-обработчики.

Дальше...

Information

Rating
Does not participate
Location
Зеленоград, Москва и Московская обл., Россия
Registered
Activity