Как стать автором
Обновить
0
0
Максим Фадеев @Severus54

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

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

Алгоритм формирования кроссвордов

Время на прочтение10 мин
Количество просмотров37K
Эта история начинается с публикации «Самый сложный кроссворд, составленный компьютером». В ней приведен один из самых сложных кроссвордов, составленных программой (см. ниже).



Я был уверен, что все кроссворды давным-давно генерируются программно и был несколько удивлен тем, что это может быть проблемой. Замечу, что речь идет именно о «канадских» кроссвордах, в которых каждое слово имеет пересечение с другим словом на каждой букве или очень близких к ним по сложности. В моей работе аналитика, не так много действительно сложных задач, поэтому мне стало интересно попробовать разработать алгоритм, который мог бы это сделать. Результат размышлений, подкрепленный программой для генерации кроссвордов, приводится в этой статье.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии15

Классификация знаний в области программирования

Время на прочтение7 мин
Количество просмотров188K
2 года назад я написал статью о классификации знаний в области программирования. Это было на волне интереса и моей активной деятельности по самообразованию в компьютерных науках. Написал статью и забыл о ней. Публиковать на Хабре не собирался. В конце концов, она базируется на моем личном опыте и знаних, которые могут оказаться весьма субъективны.

Недавно, на фоне постоянно поступающих вопросов «как научиться программированию?», я вспомнил про этот материал и перечитал его. Прошло уже 2 года, пополнился опыт, добавились знания, изменились взгляды. Но эта статья для меня не утратила актуальности, и я не нашел почти ничего, что хотел бы в ней изменить. Мне показалось, что она все же достойна публикации. И, возможно, кому-то она поможет в собственном профессиональном развитии.

Но прежде, чем «запустить» материал, еще небольшое отступление. О том, почему вообще я все это писал. Дело в том, что у нас в странах бывшего СССР с образованием в области IT очень туго. С одной стороны нет программ обучения, которые подготовят специалистов на должном уровне (наверное, за очень редкими исключениями, которые можно отнести к погрешности). С другой стороны, из-за широких возможностей самообразования, программисты и не спешат учиться в ВУЗах — все стремятся начать практиковать как можно раньше. Часто изучается только одно направление (например PHP+Mysql — самое популярное) и в бой. Причем, на этом все заканчивается. В итоге у нас огромное количество программистов, которые и базовых вещей не знают. Отсюда вытекают проблемы с качеством кода, и с эффекивностью алгоритмов, с велосипедированием.

Но программирование — это полноценная область знаний, которая требует в том числе и инженерной подготовки. Точно так же, как строительство или телекоммуникации. Да, построить дом (особняк) можно своими руками и без образования. А поднять большинство сайтов можно прочитав пару книг по PHP и HTML. Но многоэтажку без специальной подготовки не построишь, как и Гугл не напишешь, не зная основ.

Возможности для самообразования в компьютерных науках сейчас огромны. Единственное, чего не хватает, — это системности подготовки. Как разобраться, что и в какой последовательности изучать? Мне кажется, что этот материал поможет разложить по полочкам области знаний в компьютерных науках и составить для себя программу изучения по книгам. Выбор книг — тема отдельная, в рамки статьи не входит, но это можно обсудить в комментариях.

Поехали.
Читать дальше →
Всего голосов 78: ↑57 и ↓21+36
Комментарии52

Tree — убийца JSON, XML, YAML и иже с ними

Время на прочтение11 мин
Количество просмотров172K
Здравствуйте, меня зовут Дмитрий Карловский и я… много думал. Думал я о том, что не так с XML и почему его в последнее время променяли, на бестолковый JSON. Результатом этих измышлений стал новый стандарт формат данных, который вобрал в себя гибкость XML, простоту JSON и наглядность YAML.

image Tree — двумерный бинарно-безопасный формат представления структурированных данных. Легко читаемый как человеком так и компьютером. Простой, компактный, быстрый, выразительный и расширяемый. Сравнивая его с другими популярными форматами, можно составить следующую сравнительную таблицу:
Больше — лучше JSON XML YAML INI Tree
Человекопонятность 3 1 4 5 5
Удобство редактирования 3 1 4 5 5
Произвольная иерархия 3 3 3 1 5
Простота реализации 3 2 1 5 5
Скорость парсинга/сериализации 3 1 1 5 5
Размер в сериализованном виде 3 1 4 5 5
Поддержка поточной обработки 0 0 5 5 5
Бинарная безопасность 3 0 0 0 5
Распространённость 5 5 3 3 0
Поддержка редакторами 5 5 3 5 1
Поддержка языками программирования 5 5 3 5 1
Читать дальше →
Всего голосов 275: ↑168 и ↓107+61
Комментарии629

14 вопросов об индексах в SQL Server, которые вы стеснялись задать

Время на прочтение26 мин
Количество просмотров1.1M
Индексы — это первое, что необходимо хорошо понимать в работе SQL Server, но странным образом базовые вопросы не слишком часто задаются на форумах и получают не так уж много ответов.
Роб Шелдон отвечает на эти, вызывающие смущение в профессиональных кругах, вопросы об индексах в SQL Server: одни из них мы просто стесняемся задать, а прежде чем задать другие сначала подумаем дважды.


От переводчика
Данный пост является компиляцией двух статей Роба Шелдона:

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

Перейти к чтению
Всего голосов 40: ↑37 и ↓3+34
Комментарии44

Целеполагание и контроль деятельности на основе матрицы Эйзенхауэра

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


Мы уже писали о том, как справиться с останавливающими нас на пути к достижению своих целей страхом и прокрастинацией. Однако после того, как мы вышли из “мёртвой зоны” бездействия и замотивировали себя на результат, мы можем впасть в другую крайность: после длинного 8-12 часового рабочего дня не получается сказать, что же, собственно, удалось сделать. И главное – какой результат от приложенных усилий мы получили? Продвинул ли он нас к поставленным целям?

В результате легко обнаружить себя в ситуации, когда “крутишься как белка в колесе”, а дела словно стоят на месте. Копится только усталость. Ощущения от достигнутых высот так и не появляется.
Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии6

Моделирование функциональных объектов

Время на прочтение9 мин
Количество просмотров14K
Продолжение статьи.
В данной статье я рассматриваю понятие функционального объекта и объясняю как можно трактовать модели функциональных объектов. Для торопящихся советую заглянуть сразу в конец статьи — в главу «Эксперименты и сотрудники», где дана готовая интерпретация модели, исходя из описанных здесь постулатов.

Понимание и познание



Когда мы описываем предметную область, мы думаем, что пытаемся ПОЗНАТЬ ее, а на самом деле занимаемся ПОНИМАНИЕМ предметной области и описанием своего понимания. Разницу между знанием и пониманием стоит подчеркнуть. Дело в том, что те модели, которые мы строим, являются субъективными, и потому являются отражением нашего понимания предмета, но не знания о предмете. Причина, по которой знание недостижимо, – это противоречивость того способа, который мы выбрали в качестве инструмента познания – расчленение объекта на части (анализ) и сборка их вместе (синтез) Моделирование объекта как целого и как композиции. Поэтому можно сказать, что мы нацелены прежде всего на понимание, но не на познание. Вопросами понимания занимается герменевтика. Понимание у каждого свое. Нет смысла спорить о том, у кого оно лучше или хуже. Можно спорить лишь о том, какое понимание способно объяснить более широкий круг практических задач, или является непротиворечивым в рамках определенных аксиом. Требовать от понимания большего нельзя. Например, я могу утверждать, что та модель, которую я предлагаю к рассмотрению, более полно описывает наше представление о реальности, чем модель, построенная на принципах реляционных данных. Но не могу сказать, что предлагаемая мной модель верно описывает наше представление о мире. Те же, кто не видят разницы между пониманием и знанием, часто претендуют в своих спорах на знание истины. Если рассуждать логически, и предположить, что истина постижима, то результатом ее постижения стало бы невозможность выразить его словами.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии22

Пример написания функциональных требований к Enterprise-системе

Время на прочтение16 мин
Количество просмотров361K
Недавно мой друг, программист, рассказал, что он не читает требования, а вместо этого приглашает аналитика на чашку чая, они вместе садятся, и аналитик рассказывает, что должно быть реализовано. Мой друг — умный человек и хороший программист, и причина, почему он получает знания о требованиях именно так, не в том, что ему лень читать документацию, а в том, что, даже прочитав ее, он до конца не разберется, что же надо сделать. В данной статье я хочу рассказать, как можно написать требования к программному продукту так, что программисты не просто используют требования, но и участвуют в их написании; на основе собственно опыта я хочу показать, каким образом можно описать требования, чтобы эти описания были достаточными для реализации системы.

Целью нашей разработки было создание с нуля учетной системы для одной из крупных российских компаний. Система была призвана заменить текущую, написанную в конце 90-х. В результате были реализованы платформа и один из бизнес-модулей. В реализованной части было порядка 120 объектов, 180 таблиц, около 30 печатных форм.

Хочу оговориться, что подход, описанный ниже, не универсален для написания любого ПО. Он подходит для систем уровня предприятия, которые строятся на основе объектно-ориентированного подхода: учетных, CRM-, ERP-систем, систем документооборота и т.п.

Вся документация на наш программный продукт состояла из следующих разделов:
  • Общая часть
    • Список терминов и определений
    • Описание бизнес-ролей
  • Требования
    • Бизнес-требования
    • Общие сценарии
    • Сценарии использования
    • Алгоритмы и проверки
    • Системные требования
    • Нефункциональные требования
    • Требования к интеграции
    • Требования к пользовательскому интерфейсу
  • Реализация
  • Тестирование
  • Руководства
  • Управление

Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии36

Формализм Лагранжа в задачах с сухим трением

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

Введение


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



Тонкий однородный стержень массы m = 2 кг, длины AB = 2l = 1 м в точке A шарнирно прикреплен к невесомому ползуну, перемещающемуся в горизонтальных шероховатых направляющих. В начальный момент времени стержень расположен вертикально, затем его отклоняют от вертикали на ничтожно малый угол и отпускают без начальной скорости. Необходимо составить уравнения движения данной механической системы и найти закон её движения. Коэффициент трения между ползуном и направляющими равен f = 0,1.


Прежде чем приступить к решению задачи предлагаемым автором методом, рассмотрим немножко элементарной теории, касающейся сухого трения.
Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии23

10 советов фрилансерам, как расставлять приоритеты задачам

Время на прочтение9 мин
Количество просмотров27K
Вы когда-нибудь задумывались: «А сколько стоит пароход построить?”, “А сколько — дизайн-макет сделать?”, “А из чего складывается такая цена?»

Пароход — штука архисложная; его стоимость — это цена на материалы (металл, пластик и что там ещё нужно), оплата труда рабочих верфи, амортизация на износ оборудования, оплата инженерных изысканий и так далее и тому подобное…

А что с дизайн-макетом? Из чего складывается его цена? Ну, допустим, вложим в стоимость “амортизацию оборудования” — деньги на ПК и ПО, которые регулярно нужно обновлять. А что ещё? Остается, собственно, только оплата труда дизайнера-верстальщика. А как её рассчитать? Тут способов два: либо оплата за человеко-часы (сколько времени потратил — столько и оплатили); либо другой более распространенный подход — сдельная оплата (т.е. оценил бриф-ТЗ на макет, прикинул его сложность, назвал стоимость).

Что в первом случае (прямо), что во втором (косвенно), стоимость будет зависеть от времени, которое вы тратите на свою работу. А из чего складывается это время? Есть факторы внутренние: мотивация, навыки работы, муза, в конце концов… Они подвластны лишь вашей силе воли, тут дза-дзен и прочее самосовершенствование вам в помощь. Но остаются ещё и факторы внешние: от обстановки в рабочем кабинете до методологии, по которой вы работаете, — и с ними всё интереснее…


Читать дальше →
Всего голосов 33: ↑25 и ↓8+17
Комментарии7

Уютный книжный пост для вас и вашего проекта

Время на прочтение8 мин
Количество просмотров131K
Как заработать миллион за день, стать искусным оратором за неделю, похудеть на 100 кг за 2 дня, стать успешным в тысяча ста начинаниях и прочая мишура регулярно засоряет наше информационное пространство. А порой так хочется взять в руки книгу, которая не просто съест кусок вашего свободного времени повествуя о неприменимых в отечественных реалиях вещах, но и подкинет хотя бы несколько полезных советов, способных оказать позитивное влияние на развитие вашей личности и вашего проекта.

Если вы хотите найти и/или поделиться хорошими книгами, добро пожаловать под кат.

image

Читать дальше →
Всего голосов 76: ↑62 и ↓14+48
Комментарии45

Карьера менеджера проекта vs организация

Время на прочтение17 мин
Количество просмотров67K
В предыдущей статье «Медовый месяц менеджера: как его провести с пользой» мы говорили о том как происходит назначение на позицию менеджера и что может делать новый менеджер первые месяцы работы в должности. Давайте продолжим разбираться в этой теме.

Как построить карьеру менеджера проектов?


Нужно ли расти из технического специалиста или целенаправленно, с нуля учиться на менеджера? Смогу ли я управлять коллективом, не умея выполнять задания, которые я даю своим сотрудникам? Что ждет меня через 3-5-7 лет? Что предпринять сейчас, чтобы приблизиться к собственной мечте (и какова вообще она — карьерная мечта руководителя проектов)?

Я больше 10 лет занимаюсь проектным менеджментом и такие вопросы слышу часто (да что там — задаю их и сам себе). Единственно-верных ответов, конечно, не существует, а вот собственными соображениями я поделиться могу.

Сам я давно пришел к убеждению, что ни у специалистов по кадрам, ни у тех, кто занимается проф. ориентацией, нет ответов ни на эти, ни на более конкретные вопросы. Например, «Может ли менеджер проектов перейти из сферы ИТ, скажем, в строительство?».

Мы знаем, примеры есть. Однако, когда и почему такие переходы оказываются успешны — ответить затрудняемся.

Часто работодатели не ограничиваются в вакансии требованиями к знаниям проектного управления и общему стажу, а обязательно требуют релевантный опыт (например — 5 лет в управлении разработкой сайтов или внедрения ERP и т.п.). Сами менеджеры тоже стараются строить карьеру с таким прицелом, чтобы развиваться в наиболее симпатичной области. Но это на уровне интуиции. А можно ли подвести под нее какие-либо правила?
Читать дальше →
Всего голосов 38: ↑33 и ↓5+28
Комментарии9

Если вы хотите следовать своей мечте, скажите «нет» отвлекающим делам

Время на прочтение4 мин
Количество просмотров162K
imageСтатьи, написанные Oliver Emberton, постоянно вызывают повышенный интерес. Сегодня представляем вам перевод самой свежей публикации автора.

Дисклэймер: мы не ставили себе цель дословного или абсолютно точного перевода оригинала. Главное — передать его смысл. Просим помнить об этом при прочтении. Итак, начнем!

Если вы хотите следовать своей мечте, скажите «нет» отвлекающим делам!

Наш мозг порой ведет себя как пляжный мячик, наполненный пчелами. Сотни противоречащих друг другу импульсов толкают нас в разные стороны.
Читать дальше →
Всего голосов 71: ↑57 и ↓14+43
Комментарии24

Адреса памяти: физические, виртуальные, логические, линейные, эффективные, гостевые

Время на прочтение6 мин
Количество просмотров107K
Мне периодически приходится объяснять разным людям некоторые аспекты архитектуры Intel® IA-32, в том числе замысловатость системы адресации данных в памяти, которая, похоже, реализовала почти все когда-то придуманные идеи. Я решил оформить развёрнутый ответ в этой статье. Надеюсь, что он будет полезен ещё кому-нибудь.
При исполнении машинных инструкций считываются и записываются данные, которые могут находиться в нескольких местах: в регистрах самого процессора, в виде констант, закодированных в инструкции, а также в оперативной памяти. Если данные находятся в памяти, то их положение определяется некоторым числом — адресом. По ряду причин, которые, я надеюсь, станут понятными в процессе чтения этой статьи, исходный адрес, закодированный в инструкции, проходит через несколько преобразований.



На рисунке — сегментация и страничное преобразование адреса, как они выглядели 27 лет назад. Иллюстрация из Intel 80386 Programmers's Reference Manual 1986 года. Забавно, что в описании рисунка есть аж две опечатки: «80306 Addressing Machanism». В наше время адрес подвергается более сложным преобразованиям, а иллюстрации больше не делают в псевдографике.
Читать дальше →
Всего голосов 51: ↑49 и ↓2+47
Комментарии11

Умей говорить «нет» и умей говорить «да»

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

Умей говорить «нет»


Старший разработчик Валера работает в роли тимлида на большом и важном проекте для большого и важного заказчика. За окном шумит жаркое лето, по пыльным улицам бегут по своим делам прохожие, голуби крутят пируэты в необъятном казахстанском небе. Жизнь прекрасна – пилотный запуск намечен на конец ноября, команда набрала хороший темп и идет по графику. И тут Валера боковым зрением замечает, как на иконке Скайпа появилась желтая точка – кто-то о нем вспомнил и написал сообщение. Это руководитель проекта: «Зайди ко мне…»
Читать дальше →
Всего голосов 193: ↑183 и ↓10+173
Комментарии34

Выразительный JavaScript: Тайная жизнь объектов

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

Содержание




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

Джо Армстронг, в интервью Coders at Work


Термин «объект» в программировании сильно перегружен значениями. В моей профессии объекты – стиль жизни, тема священных войн и любимое заклинание, не теряющий своей магической силы.

Стороннему человеку всё это непонятно. Начнём же с краткой истории объектов как концепции в программировании.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии5

Инструменты и методология управления проектом на примере pivot'а стартапа

Время на прочтение13 мин
Количество просмотров23K
В предыдущей статье мы рассказали историю нашего стартапа, рассмотрев три ключевых составляющих: “Идею”, “Реализацию” и “Продажи”. Из-за большого объема статьи вопрос реализации формально описать не хватило места. Исправлять это будем в данной публикации.

Управление командой начинается с планирования и проектирования. Существуют десятки, если не сотни, методологий управления проектами: от “Разработки по ReadMe” до громоздкого, зато на все случаи жизни PMBOK. Как программисты, бывает, изобретают велосипеды, так и проект-менеджеры могут этим грешить. Если с методологией мы могли позволить себе некоторые вольности, то инструмент подбирался уже без “велосипедостроения”…


Читать дальше →
Всего голосов 22: ↑12 и ↓10+2
Комментарии5

12 вопросов к вам про работу с людьми

Время на прочтение1 мин
Количество просмотров15K
После полушуточных опросов про методологии в проектах и адекватность самооценки решились провести более масштабное исследование.

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

Мы понимаем, что картина мира тренеров искажена, так же как картина мира врача, который видит людей с их недугами. И это натолкнуло нас на мысль — провести большое исследование, которое покажет действительное состояние дел в отрасли и расставит все на свои места.

Также понимаем, что времени у всех не так много, поэтому постарались сформулировать вопросы емко и ужать все в 12 вопросов:

12 вопросов к вам про работу с людьми >>
Под катом - полезный подарок тем, кто поучаствует в опросе
Всего голосов 24: ↑12 и ↓120
Комментарии40

Помнить все: Evernote и Anki

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


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

Я хочу достичь следующих целей при использовании системы:

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

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

  • Мой опыт по описанному вопросу
  • Проблемы запоминания
  • Теоретическое разрешение проблем
  • Практическое разрешение проблем с Evernote
  • Практическое разрешение проблем с Anki
Читать дальше →
Всего голосов 83: ↑78 и ↓5+73
Комментарии65

Инструменты быстрого прототипирования

Время на прочтение9 мин
Количество просмотров205K
Прототипы, как инструменты дизайна, находятся на подъёме, и вот почему. Я твёрдо верю, что прототипирование помогает нам в процессе создания качественных пользовательских интерфейсов. Мы работаем в мире богатых, обладающих динамикой интерфейсов пользователя как в сети, так и на наших устройствах. Интерфейсы, которые мы создаём, интерактивны, откликаются на воздействие пользователя и обладают эмоциями. Прототипы позволяют сформулировать чувства и функции дизайна так, как этого не могут сделать простые экранные формы. Но как выбрать лучший инструмент прототипирования для работы?
Много текста. Читать дальше
Всего голосов 63: ↑58 и ↓5+53
Комментарии52

13 причин не быть управленцем

Время на прочтение12 мин
Количество просмотров461K
Так уж сложилось, что последние несколько лет я занимал самые разнообразные руководящие должности в полудюжине компаний, занимающихся разработкой программного обеспечения разного рода. Довелось побывать и тимлидом, и менеджером проекта, и группы проектов, руководителем отдела и руководителем технического направления; подопечных бывало от двух до ста пятидесяти человек, да и размеры компании варьировались от трёх до двухсот тысяч работников. Неизменным оставалось только одно: чисто управленческая работа, постепенный и окончательный отход от технических задач.

А сейчас, в период между Рождеством и Новым Годом, когда особенно обострена склонность к углублённой рефлексии, приходит понимание того, что, знай я некоторые «инсайдерские» подробности управленческой деятельности заранее – сделал бы совсем другой выбор лет эдак семь назад.

Вот поэтому и родился этот немного хаотичный и очень разнокалиберный список моментов, которые очень хотелось бы передать куда-то обратно, примерно в 2005 год – дайте знать, если кто-то вдруг уже научился это делать! А пока, может быть кто-то найдёт некоторые из перечисленных ниже пунктов не до конца очевидными, или даже полезными для себя; было бы приятно осознавать, что удалось помочь кому-то сделать более осознанный выбор профессии – или просто о чём-нибудь важном задуматься.
Итак, поехали
Всего голосов 441: ↑410 и ↓31+379
Комментарии340
1

Информация

В рейтинге
Не участвует
Откуда
Кикнур, Кировская обл., Россия
Дата рождения
Зарегистрирован
Активность