Pull to refresh
2
0
danmiru @danmiru

User

Send message

Портрет Нуба

Reading time17 min
Views6.5K
Чем старше я становлюсь, тем менее важной становится запятая. Пусть читатель сам решает, где ему ставить паузы. — Elizabeth Clarkson Zwart


Примерно так я комментировал свой код двадцать лет назад (внимание, чуток драмы):

/*
 * Когда мы дойдем сюда, наша структура уже будет готова. 
 * К тому же, мы создали достаточно большой буфер, в который 
 * можно засунуть все входные данные, плюс есть немного места
 * про запас. Я не уверен, понадобится ли оно, но хуже не будет. 
 * Теперь нам надо обновить счетчик, предполагая, что клиент 
 * уже прочитал значение, но еще не использовал его. Сначала 
 * я хотел переложить обязанность инкремента на плечи вызывающего
 * кода. С другой стороны, это означает, что инкремент нужно делать всем, 
 * поэтому я решил, что будет лучше перенести его сюда. Но мы можем 
 * пересмотреть это решение позже, если вдруг кому-то из внешних функций 
 * захочется делать инкремент самому.
*/
counter++; // инкрементировать счетчик для потребляемого значения

/*
 * Теперь нужно просмотреть весь буфер с данными. Для этой 
 * операции нам понадобится еще один индекс, иначе перед 
 * выходом из функции мы потеряем начальное значение. 
 * Я хотел назвать эту переменную ‘ref’, потому что в некотором
 * смысле мы будем обращаться с ней как со ссылкой на данные. 
 * В конце концов я пришел к выводу, что самым лучшим  
 * названием для нее будет ‘pos’. Если что, я не против обсудить
 * это решение.
*/
char* pos = buffer; // начинаем наш обход данных

/*
Теперь, мы...
*/


Ну что, узнаете? А должны! Если быть предельно невежливым, весь код выше написал нуб. (Между прочим, если вы не знаете, кто такой нуб, значит вы — нуб).

Читать далее
Total votes 235: ↑163 and ↓72+91
Comments171

NTRUEncrypt криптосистема будущего?

Reading time9 min
Views11K
Вся современная асимметричная криптография в настоящее время основывается на двух простых и понятных принципах: вера и надежда. Вера в то, что при выполнении условия P≠NP, криптосистема не взламываема за полиномиальное время. Надежда, что квантовый компьютер так же далек от нас как созведие Кассиопеи. Так вот два эти принципа настолько ненадежны и с математической точки зрения трудно доказуемы, что единственным выходом из сложившейся ситуации можно считать приобретение шапочки подобной той, что изображена на картинке слева. Альтернатива? Она существует. Относительно молодая криптосистема NTRUEncrypt, которая, возможно сможет победить два этих принципа и вполне возможно станет прототипом для всей асимметричной криптографии «постквантовой» эпохи. Подробный анализ этого самого быстрого асимметричного алгоритма стойкого к атакам с применением квантовых компьютеров
читайте далее
Total votes 77: ↑76 and ↓1+75
Comments84

Почему фрилансер и заказчик часто считают друг друга идиотами

Reading time10 min
Views96K
Мне повезло: я побывал по обе стороны баррикад и теперь знаю, что и как делает заказчик на проектах разного уровня и что делает фрилансер, чтобы получить или провалить такой проект. В итоге я уверен, что 95% фрилансеров говорят с заказчиком на разных языках.

Осторожно, butthurt.

Читать дальше →
Total votes 240: ↑225 and ↓15+210
Comments87

Прокрастинация разрушила мою жизнь, часть 2: интересные ответы нытику

Reading time7 min
Views34K
Вчера я опубликовал перевод топика «Прокрастинация разрушила мою жизнь» одного из североамериканских хлопцев с Hacker News. Сегодня вы можете ознакомиться с интересными ответами HN-юзеров.

юзер Isamu



Психолог Пирс Стил в своей книге «Уравнение прокрастинации» считает, что проблема заключается не в перфекционизме, а в импульсивном управлении.
Хотя у вас нет проблем с тем, чтобы начать работу, прокрастинация начинается позже. Вот мой конспект книги:
Читать дальше →
Total votes 48: ↑41 and ↓7+34
Comments28

Корпоративный троллинг — 3, или сдача работ без лишних забот

Reading time11 min
Views20K
В предыдущих статьях (первая, вторая) мы бегло и в шутливой форме прошлись по примерам противодействия, которое оказывают нам сотрудники заказчика на различных этапах проекта. Сегодня предметом рассмотрения будет сдача работ, и мы подойдем к этому этапу во всеоружии, чтобы ни один тролль не прорвался. Получилось много букв, но, надеюсь оно того стоит.

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

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

В этой статье я без лишних шуток (какие уж тут шутки!) и максимально последовательно (ну, для блога, конечно) опишу процесс сдачи проектных работ. Разумеется, многие вещи опытным коллегам покажутся очевидными. Пусть. Зато менее опытные коллеги или желающие примерить ответственную роль сдающего на себя найдут эту публикацию полезной и познавательной.
Читать дальше →
Total votes 95: ↑92 and ↓3+89
Comments27

Роль техдира в Agile — игра в Тетрис

Reading time6 min
Views2K
Вы обсудили с Заказчиком и договорились выпустить в ближайшем релизе важные для продукта фичи, которые так давно и с нетерпением ждут Пользователи. Вы на крыльях несетесь на PlanningPoker, начинается оценка и бац…

— Давайте не лезь в этот модуль. Код недокументирован, все начнет глючить и сыпаться, особенно биллинг.
— До нас работала команда дураков, они учились программировать на этом проекте. Если сюда лезть, в команде упадет мотивация…
— Как это работает… Это надо в код смотреть. Люди, писавшие, уже ушли, документации нет. Месяц минимум.
— Мы залили данные, и все стало тормозить. Надо спринт посвятить исследованию причин. (и так несколько спринтов подряд)

Вы понимаете, что происходит что-то странное, что проект «заболел», что можно было наверно этого избежать, если знать заранее…

Постараемся понять, кому «бить морду» сейчас и кого отмутузить профилактически когда к нам придет следующий проект — чтобы избежать подобного коллапса.

Читать дальше →
Total votes 53: ↑49 and ↓4+45
Comments36

Корпоративный троллинг. Часть вторая

Reading time6 min
Views5K
Сегодня мы разберем разновидности противодействия, которые встречаются при очных мероприятиях — на презентациях и переговорах. Конечно, трудно охватить одним махом обширнейшую сферу черной риторики, черного пиара и прочей черной мерзости, которая сопровождает любое наше даже самое благое начинание. Но хабралюди народ опытный, информацию искать обученный. Как говорится, хороший инженер не обязан все знать, но он должен уметь быстро добывать необходимые знания. Сам я не являюсь гуру ни в переговорах, ни в риторике, но имел опыт общения с настоящими мастерами своего дела, которые в Хабр писать никогда не станут, даже если знают о существовании этого ресурса. Мне кажется, что этот опыт, обобщенный и очищенный от эмоций, будет многим интересен.
Читать дальше →
Total votes 140: ↑132 and ↓8+124
Comments57

Корпоративный троллинг. Часть первая

Reading time4 min
Views8.5K
В коммерческой деятельности одним все время что-то нужно от других. В проектном бизнесе вы жаждете втюхать свои услуги. Вам нужно получить прибыль. Заказчику тоже много чего нужно. Но, независимо ни от чего вам нужно продать услуги и получить за них деньги. На каждом этапе вам будут оказывать сопротивление. Сегодня я начну рассказ о том, кто и как будет оказывать вам сопротивление и что вы можете сделать для того, чтобы этому противостоять.

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

Итак, займемся классификацией троллей и их приемов. Сегодня — формальный троллинг. В другой раз троллинг очный.
Читать дальше →
Total votes 115: ↑97 and ↓18+79
Comments94

Как доделать игру

Reading time9 min
Views27K
На блоге одного из создателей Aquaria и Spelunky есть любопытный пост с советами для тех, кто испытывает проблемы с доведением до конца своих игровых проектов. Этот список советов оказался для меня своего рода «зеркалом», в котором отражены многие проблемы, с которыми сталкивался я сам, и я был удивлен тем, насколько хорошо автору удалось уловить суть этих проблем и предложить свои решения, зачастую бескомпромисные.
image
Приближаясь к заключительной стадии разработки моей игры, я много думал о том, как завершать выполнение проектов в целом. Я заметил, что вокруг много действительно талантливых разработчиков, у которых возникают проблемы с доведением до конца игровых проектов. По правде говоря, я и сам оставил позади себя ряд незавершенных игр… Думаю, у многих та же ситуация. Не всякий проект удается, по разным причинам. Однако если вы стали замечать, что постоянно забрасываете проекты, которые имеют неплохой потенциал, вероятно, стоит оглянуться назад и изучить тому причины.
Читать дальше →
Total votes 142: ↑135 and ↓7+128
Comments54

Основы и заблуждения насчет JavaScript

Reading time9 min
Views55K

Объекты, классы, конструкторы

ECMAScript, будучи высоко-абстрактным объектно-ориентированным языком программирования, оперирует объектами. Существуют также и примитивы, но и они, когда требуется, также преобразуются в объекты. Объект — это коллекция свойств, имеющая также связанный с ней объект-прототип. Прототипом является либо также объект, или же значение null.
В JavaScript нет привычных классов, но есть функции-конструкторы, порождающие объекты по определенным алгоритмам (см. Оператор new).

Прототипное делегирующее наследование


Классическое наследование очень похоже на то, как люди наследуют гены своих предков. Есть какие-то базовые особенности: люди могут ходить, говорить… И есть характерные черты для для каждого человека. Люди не в состоянии изменить себя — свой класс (но могут поменять собственные свойства) и бабушки, дедушки, мамы и папы не могут динамически повлиять на гены детей и внуков. Все очень по земному.

Теперь представим другую планету, на которой не такое как на Земле генное наследование. Там обитают мутанты с «телепатическим наследованием», которые способны изменять гены своих потомков.
Разберем пример. Отец наследует гены от Дедушки, а Сын наследует гены от Отца, который наследует от Дедушки. Каждый мутант может свободно мутировать, и может менять гены своих потомков. Например у Дедушки был зеленый цвет кожи, Отец цвет унаследовал, Сын тоже унаследовал цвет. И вдруг Дед решил: «надоело мне ходить зеленым — хочу стать сними», смутировал (изменил прототип своего класса) и «телепатически» распространил эту мутацию Отцу и Сыну, вобщем посинели все. Тут Отец подумал: «Дед на старости лет совсем двинулся» и поменял свой цвет в генах обратно на зеленый(изменил прототип своего класса), и распространил «телепатически» свой цвет сыну. Отец и Сын зеленые, Дед синий. Теперь как бы дед ни старался Отец и сын цвет не поменяют, т.к сейчас Отец в своем прототипе прописал цвет, а Сын в первую очередь унаследует от Прототипа Отца. Теперь Сын решает: «Поменяю ка я свой цвет на черный, а моё потомство пусть наследует цвет от Отца» и прописал собственное свойство, которое не влияет на потомство. И так далее.
Читать дальше →
Total votes 174: ↑161 and ↓13+148
Comments96

Быстрая маркировка изображений с использованием внешних контуров

Reading time9 min
Views8.8K
В статье расскажу как достаточно быстро перечислить связные объекты на бинарном растре. Этот алгоритм мы использовали для распознавания изображений и текстов; он отличается от подобных высокой скоростью обработки (на картинках до 3200x2400, с некоторыми оговорками, он отрабатывает за миллисекунды) и доступностью в понимании (при наличии некоторых знаний C++). Отмечу, что исходная картинка будет трактоваться алгоритмом как «только для чтения» (зачем портить то, с чем могут работать другие методы), и в связи с этим, алгоритму потребуется небольшое количество дополнительной памяти. Кроме того, внешние контуры являются полезным объектом для анализа и векторизации изображений.
Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments9

Собираем Atari Punk Console

Reading time3 min
Views29K
В комментариях к топику с комиксом об азах пайки кто-то отметил, что лучший Hello World! для начинающего радиолюбителя — это мультивибратор — генератор прямоугольных колебаний.

Всё верно, но на первый взгляд сам по себе мультивибратор кажется довольно скучным. Однако в компании с одновибратором (да, всё это довольно смешно звучит) его можно превратить в Atari Punk Console — простейший электронный музыкальный инструмент, схема которого впервые была опубликована в 80х годах изобретателем Форрестом Мимсом.

Обретя популярность благодаря своей простоте и обросшее огромным числом модификаций устройство до сих пор является неотъемлемой частью некоторых субкультур и часто используется музыкантами, пишущими в жанре 8-bit и около него. Адресовав соответствующий запрос Google вы увидите выдачу длиной более чем в 2 млн. страниц среди которых примеры изготовления, синтезаторов и секвенсоров на базе APC, корпусов к нему и пр.

Под катом лежит модифицированная принципиальная схема, список компонентов, рекомендации по сборке в домашних условиях. Так же есть видео с демонстрацией, а ленивым доступен комплект для сборки.
Читать дальше →
Total votes 60: ↑59 and ↓1+58
Comments32

Наглядная демонстрация алгоритмов сортировки

Reading time1 min
Views34K
Трансильванский университет Sapientia представил свой новый обучающий курс по алгоритмам сортировки. Стоит отметить талант создателей и высокую наглядность пособия.



Под катом есть еще видео
Читать дальше →
Total votes 181: ↑160 and ↓21+139
Comments46

Нечёткий поиск в тексте и словаре

Reading time13 min
Views262K

Введение


Алгоритмы нечеткого поиска (также известного как поиск по сходству или fuzzy string search) являются основой систем проверки орфографии и полноценных поисковых систем вроде Google или Yandex. Например, такие алгоритмы используются для функций наподобие «Возможно вы имели в виду …» в тех же поисковых системах.

В этой обзорной статье я рассмотрю следующие понятия, методы и алгоритмы:
  • Расстояние Левенштейна
  • Расстояние Дамерау-Левенштейна
  • Алгоритм Bitap с модификациями от Wu и Manber
  • Алгоритм расширения выборки
  • Метод N-грамм
  • Хеширование по сигнатуре
  • BK-деревья
А также проведу сравнительное тестирование качества и производительности алгоритмов.
Читать дальше →
Total votes 171: ↑170 and ↓1+169
Comments33

10 вещей, которые должен знать каждый Senior Flash Developer

Reading time3 min
Views11K
Я собеседовал нескольких Flash/Flex разработчиков в качестве потенциальных сотрудников Roundarch. Для меня, самой сложной частью собеседования было понять, какие именно вопросы задавать, чтобы оценить уровень Flash-разработчика. Поэтому, я создал этот список. Этот список позволяет мне оценить уровень и опыт разработчика, которого я собеседую.

Если вы ещё не достигли уровня «Senior-developer», то прочитайте список и изучите информацию по ссылкам из него. Если вы посчитаете этот список устаревшим, то, пожалуйста, критикуйте его и расскажите о других ссылках в комментариях.
Читать дальше →
Total votes 71: ↑48 and ↓23+25
Comments41

Так сколько шариков для гольфа действительно поместится в школьный автобус?

Reading time2 min
Views41K
Прочитал недавно заметку «15 Вопросов на собеседовании в Google, из-за которых вы можете почувствовать себя глупым» в интернете и самый же первый ответ на самый первый вопрос мне не понравился. Человек я дотошный, поэтому решил математически вычислить количество тех самых шариков для гольфа.

image

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

Давайте разберемся.
Читать дальше →
Total votes 142: ↑110 and ↓32+78
Comments126

Способы «защиты» flash-приложений

Reading time20 min
Views40K

Здравствуйте. Я попытаюсь рассказать о нескольких способах защиты от исследования кода, мошенничества и воровства, используемых при разработке flash-приложений, а также о том, как можно обойти некоторые из них.
Стоит заметить, что сейчас существует немало отличных презентаций и работ на эту тему (см. ссылки в конце статьи), однако, я бы хотел немного подробней расписать некоторые нюансы, и объединить множество информации по теме в одном месте. По крайней мере, я постараюсь это сделать.
Читать дальше →
Total votes 119: ↑109 and ↓10+99
Comments33

UART и с чем его едят

Reading time10 min
Views865K
После Vogue истерии появилось множество вопросов, как подключить плату к компьютеру. И многие люди даже не понимают, что же такое UART. И я решил рассказать здесь какой это мощный инструмент.

image
Роутер превращается в компьютер, если к нему по UART подключить клавиатуру и дисплей

От телеграфа к COM-порту


Протокол UART (Universal asynchronous receiver/transmitter) или, по-русски, УАПП (универсальный асинхронный приемопередатчик) — старейший и самый распространенный на сегодняшний день физический протокол передачи данных. Наиболее известен из семейства UART протокол RS-232 (в народе – COM-порт, тот самый который стоит у тебя в компе). Это, наверное, самый древний компьютерный интерфейс. Он дожил до наших дней и не потерял своей актуальности.

Надо сказать, что изначально интерфейс УАПП появился в США как средство для передачи телеграфных сообщений, и рабочих бит там было пять (как в азбуке Морзе). Для передачи использовались механические устройства. Потом появились компьютеры, и коды ASCII, которые потребовали семь бит. В начале 60-х на смену пришла всем известная 8-битная таблица ASCII, и тогда формат передачи стал занимать полноценный байт, плюс управляющие три бита.
Читать дальше →
Total votes 198: ↑192 and ↓6+186
Comments97

Бизнес-план. Статья 3. Описание продукта. Кто сказал, что это будут покупать?

Reading time3 min
Views11K
Приветствую всех!
Продолжаем писать бизнес-план

Статья 1. Начало
Статья 2. Описание бизнеса

Темой этой статьи является то, что вы продаете.

Что мы продаем?


Как вы помните, я часто рекомендую вам задавать себе побольше вопросов. Сегодня не исключение.
Итак, какой вопрос является лучшим на тему вашей продукции? «Каков наш продукт или услуга?» Нет.
Нужно задавать себе следующий вопрос: «Что мы продаем?». Казалось бы, разницы нет. Ан нет, есть.
Присмотримся внимательнее: например, вы думаете, что продаете молотки, гвозди, краску, обои, ламинат. Однако клиенты у вас покупают не это. Клиенты покупают улучшенный интерьер дома, решение мелких проблем по хозяйству, и прочее. Заметили разницу? Думать о своем продукте лучше уровнем вверх, прослеживая его комплексные цели. Так будет легче позиционировать и продавать.
Вышеуказанный подход позволит вам ставить более четкие цели. В примере выше цель — обеспечить возможность ремонта, улучшения жилищных условий клиентам. Ребята из 37Signals продают не программу Basecamp для проджект-менеджеров, а возможность командам совместно управлять проектами и укладываться в сроки.

Почему это будут покупать?


image
* перевод «Твоя мама это неподходящий рынок для проверки»
Читать дальше →
Total votes 45: ↑37 and ↓8+29
Comments7

«От хорошего к великому» (в цитатах) — Часть 2

Reading time6 min
Views19K
imageКак и обещал, выкладываю вторую часть цитат, выделенных маркером во время прочтения одной из лучших (с моей точки зрения) книг о бизнесе — книги Джима Коллинза «От хорошего к великому».

См. также (первая часть).

***

Собрание руководителей Pitney в начале года — это обычно 15-минутное обсуждение результатов прошлого года, почти всегда превосходных, и два часа обсуждения «неприятных вещей», которые могут помешать росту компании в будущем.

***


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

Читать дальше →
Total votes 60: ↑51 and ↓9+42
Comments32

Information

Rating
Does not participate
Registered
Activity