Pull to refresh
1
0
Владимир Пестов @KozzyKoder

User

Send message

Хитрости Chrome DevTools

Reading time1 min
Views22K


Илья Григорик из компании Google собрал подборку малоизвестных функций Chrome DevTools, которые можно использовать для оптимизации производительности. Илья также упоминает несколько сторонних плагинов и библиотек, полезных для разработчика, и многочисленные другие хитрости: например, возможность дебаггинга iOS-приложений или кода, исполняемого на подключённом Android-устройстве.
Total votes 36: ↑28 and ↓8+20
Comments14

Жизнь без объектов

Reading time5 min
Views21K
(Перевод)

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

Таким образом, я постепенно отказываюсь от объектно-ориентированной парадигмы, несмотря на то, что использовал в основном её последние 17 лет моей профессиональной деятельности. У меня появляется чувство, что объекты это то, что мешает нам писать лапидарный, структурированный и повторно используемый код.
Читать дальше →
Total votes 181: ↑160 and ↓21+139
Comments226

Additional XCode SDK — что это такое, и почему вам это не нужно

Reading time3 min
Views10K
Apple привносит в мир много нового. Удачные нововведения приживаются, а неудачные понемногу отмирают. Кстати неудачных решений оказывается не так уж и мало и я считаю это абсолютно нормальным. В конце концов мы уважаем Apple именно за готовность идти на риск и экспериментировать:)

Все это в полной мере относится и к средствам разработки. В прошлой заметке я писал о нестандартном алгоритме поиске заголовочных файлов в XCode. Сегодня я хочу подробнее остановиться на так называемых SDK — в XCode этим термином называют комплект библиотек и заголовочных файлов под определенную версию iOS или Mac OS. Зачем нужны SDK в понимании xCode?
Читать дальше →
Total votes 23: ↑18 and ↓5+13
Comments10

Перестаньте писать классы

Reading time9 min
Views184K
Фото Джэка Дидриха из профиля на G+ Признак того, что объект не должен быть классом — если в нём всего 2 метода, и один из них — инициализация, __init__. Каждый раз видя это, подумайте: «наверное, мне нужна просто одна функция».

Каждый раз когда из написанного класса вы создаёте всего один экземпляр, используете только раз и тут же выбрасываете, следует думать: «ой, надо бы это отрефакторить! Можно сделать проще, намного проще!»

Перевод доклада Джэка Дидриха, одного из ключевых разработчиков языка Питон. Доклад прозвучал 9 марта 2012 на конференции PyCon US.
Читать дальше →
Total votes 234: ↑206 and ↓28+178
Comments148

Как два программиста хлеб пекли

Reading time5 min
Views259K


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

Итак, представим себе, что есть два программиста. Один из них умный, прочёл кучу статей на Хабре, знает каталог GoF наизусть, а Фаулера — в лицо. Другой же делает всё просто. Первого будут звать, например, Борис Н., а второго — Маркус П. Само собой, имена вымышленные, и все совпадения с реальными людьми и программистами случайны.

Итак, к ним обоим приходит проектный менеджер (если в вашей вселенной PM не ходит сам к программистам, назовите его как-то иначе, например BA или lead, сути это не изменит) и говорит:
— Ребята, нам нужно, чтобы делался хлеб.

Именно так, «делался», без уточнения способа производства.

Как же поступят наши программисты?
Читать дальше →
Total votes 380: ↑348 and ↓32+316
Comments328

Как из болота вытягивать ITшника или об общении в стрессовых ситуациях

Reading time21 min
Views274K

Неприятности случаются… Неожиданно плохой фидбек, проблемы с заказчиком или коллегами, не повысили зарплату, странные баги, внезапный овертайм или закрытие проекта — подобные события запускают цепочку реактивных реакций:

  • Нет, тут есть ошибка -> сами гады -> а может все не так и плохо -> ппц -> ладно, давай выкручиваться

В этой цепочке человек ведет себя реактивно, предсказуемо… и, часто, совершает глупости. Это напоминает машину состояний, входом в которую являются неожиданное событие. Состояния машины — цепочка психологических защит: отрицание, гнев, торг и депрессия, а выход — принятие новой информации.
Из подобных состояний часто приходится вытаскивать коллег, заказчиков, и себя самого.
Под хабракатом, кроме описания этапов, есть ответы на вопросы:

  • Как узнать каждое состояние и предугадать следующее?
  • Как помочь выйти себе и собеседнику из цепочки?
  • Что не делать, чтобы не усугубить ситуацию?
Читать дальше →
Total votes 199: ↑186 and ↓13+173
Comments88

Реальная оценка или почему наступают дедлайны?

Reading time3 min
Views63K
image

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

Для пущей точности я сделал таблицу, которая помогает перевести программистские оценки в приближенные к реальности.
Читать дальше →
Total votes 138: ↑127 and ↓11+116
Comments108

Что такое Selenium?

Reading time4 min
Views548K
Время от времени мне приходится распутывать терминологические хитросплетения, связанные с употреблением словосочетаний, в которых встречается слово Selenium – Selenium 2.0, Selenium IDE, Selenium RC, Selenium WebDriver, Selenium Server, Selenium Grid.

Путаница возникает во многом из-за того, что нигде нет чёткого описания всех этих терминов на одной страничке, и я постараюсь восполнить этот информационный пробел.
Читать дальше →
Total votes 42: ↑36 and ↓6+30
Comments31

Code Venture: Инвестиции человеко-часами

Reading time7 min
Views3.8K
Добрый день, дорогой читатель. Я программист на С++ с общим стажем работы приближающимся к отметке 5 лет.
В 2010 году наша команда участвовала в дисциплине "прикладное программирование", во многих конференциях. Защищая наш продукт(подробнее в профиле) мы получили 2 международное, несколько первых всероссийских и региональных мест. < — Этот абзац попросили вставить друзья «для весомости».
Вчера меня посетила идея, как дать зеленый свет стартапам, сделать этот мир лучше, контролировать качество кода появляемых в свет приложений.
Чтение этой статьи не займет больше 15 минут, но я очень хочу что бы вы прочитали внимательно. Чтение увлекает(как кажется мне и моим друзьям), и не создает мыслительной нагрузки(никаких формул, никакого кода, никаких технологий). Разговор пойдет о не-финансовом инвестировании в проекты.
Вкратце: я специалист в своей области, у меня есть свободное время. Как мне инвестировать в проекты в запуске которых я заинтересован?
Читать дальше →
Total votes 15: ↑9 and ↓6+3
Comments13

NoSQL базы данных: понимаем суть

Reading time9 min
Views570K
В последнее время термин “NoSQL” стал очень модным и популярным, активно развиваются и продвигаются всевозможные программные решения под этой вывеской. Синонимом NoSQL стали огромные объемы данных, линейная масштабируемость, кластеры, отказоустойчивость, нереляционность. Однако, мало у кого есть четкое понимание, что же такое NoSQL хранилища, как появился этот термин и какими общими характеристиками они обладают. Попробуем устранить этот пробел.


Читать дальше →
Total votes 137: ↑133 and ↓4+129
Comments75

Уважение к учителю или «Профессор, а где Ваш репозиторий на GitHub?»

Reading time2 min
Views42K


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

Некоторые из моих студентов — гики. У них уже есть достаточно много опыта в программировании, иногда даже на столь экзотических языках, как Clojure. Я надеюсь, что их время, потраченное на мои занятия, будет столь же полезно, как и для менее опытных учеников. Даже продвинутые студенты обычно много ещё не знают о построении сложных программных систем.

После интересного разговора с одним из таких студентов я подумал о роли доверия между учителем и учеником. Студент вынужден верить, что его профессор знает достаточно, чтобы его учить. Большинство студентов действительно в это верит, основываясь на авторитете университета или учёной степени лектора. Это делает работу преподавателя слегка полегче, да :). Если учитель будет вынужден перед каждым уроком, для каждого отдельного ученика доказывать свою квалификацию и право преподавать предмет — дела пойдут намного медленнее.

Как только преподавание курса было начато, каждое взаимодействие профессора и студента либо усиливает первоначальное доверие, либо разрушает его. Это одна из самых важных частей учебного процесса и, к сожалению, это не то, на чём фокусируются многие преподаватели.
Читать дальше →
Total votes 156: ↑144 and ↓12+132
Comments90

Почему лучше верстать в соответствии с БЭМ — практические примеры

Reading time5 min
Views61K
Про БЭМ (методология написания CSS от ЯндексБлок__Элемент_Модификатор ← наиболее правильная запись расшифровки) нынче можно услышать на каждом шагу. Дело оказалось благим и покатилось по миру. Яндекс даже полез в W3C (связано это или нет — не знаю, но надеюсь, что да — [на самом деле нет]).

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

За сим возьму на себя смелость привести несколько примеров с которыми вы (конечно если вы каким-то образом связаны с вёрсткой) сталкиваетесь, не побоюсь этого слова, ежедневно. И что изменится в таких ситуациях если бы вёрстка была изначально выполнена в БЭМ.
Читать дальше →
Total votes 87: ↑64 and ↓23+41
Comments285

Завершён перевод книги «Pro Git»

Reading time1 min
Views194K
Что может быть лучшим подарком на день знаний для программиста? Конечно, полезная книга ;) Поэтому команда переводчиков «Pro Git» поднапряглась и доделала перевод книги на русский язык.

«Pro Git» — это довольно обширная обучающая книга о Git от Скотта Шакона — активного участника разработки проектов Git и GitHub. Автор рассматривает в тексте всевозможные аспекты работы с Git'ом, начиная с установки программы и базовых принципов работы децентрализованных систем контроля версий, и заканчивая рассмотрением внутреннего устройства Git'а и созданием валидных объектов в базе Git'а собственными руками. Несмотря на довольно обширный материал и затрагивание довольно специфических тем, книга написана довольно простым языком, содержит массу примеров и иллюстраций, и поэтому должна быть понятна и новичкам, только начинающим знакомиться с системами контроля версий.

Последняя версия перевода книги доступна в форматах pdf, epub, mobi.
Также доступна онлайн-версия перевода, но она, к сожалению, не обновлялась с мая.
Читать дальше →
Total votes 141: ↑135 and ↓6+129
Comments55

Space Engine — Вселенная на ладони

Reading time8 min
Views98K
My God, it's full of stars!
Arthur C. Clarke

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

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

Но вот, чуть больше года назад, я совершенно случайно наткнулся на вселенную Space Engine, и она просто взорвала мне мозг и размазала его по полу своим масштабом и невероятной детализацией.
Читать дальше →
Total votes 195: ↑190 and ↓5+185
Comments88

Когда быть хорошим плохо

Reading time4 min
Views64K
Я хотел бы начать с истории:

Учитель керамического дела объявил в день открытия, что разобьет класс на две группы. «Те, кто сидят слева» — сказал он: «будут оцениваться только по количеству проделанной работы, те, кто справа — только по её качеству». Его методика была проста, в последний день он принесет весы и взвесит работу группы «количество»: 50 фунтов горшков это «5», сорок фунтов горшков это «4» и так далее. Те, кто оцениваются по «качеству», однако, должны сделать один, пусть и совершенный, горшок, чтобы получить «5». Время сдачи пришло, и обнаружился любопытный факт: работы лучшего качества были сделаны в группе, оцениваемой по количеству. Похоже, в то время, как группа «количество» упорно штамповала свои работы и училась на своих ошибках, группа «качество» теоретизировали об идеале и, в конце концов, только и могла показать свои старания и грандиозные теории об идеале, а также кучу бесполезной глины.

Читать дальше →
Total votes 172: ↑157 and ↓15+142
Comments66

Отношения классов — от UML к коду

Reading time7 min
Views757K
Введение

Диаграмма классов UML позволяет обозначать отношения между классами и их экземплярами. Для чего они нужны? Они нужны, например, для моделирования прикладной области. Но как отношения отражаются в программном коде? Данное небольшое исследование пытается ответить на этот вопрос — показать эти отношения в коде.
Читать дальше →
Total votes 25: ↑22 and ↓3+19
Comments21

Обзор инструментов для визуального сравнения и разрешения конфликтов слияния

Reading time6 min
Views135K
На хабре уже было много статей о распределенных системах управления версиями (DVCS), их сравнений, а также сравнений GUI-клиентов для них. Также были обсуждения плагинов к IDE для работы с git и mercurial. Но практически не было информации об инструментах визуального сравнения и разрешения конфликтов слияния.

diff and merge
Недавно я «перескочил» с mercurial (который до сих пор считаю более удобным и логичным) на git, потому что, подавляющее большинство проектов, которые мне интересны, используют git и хостятся на github. В связи с этим, встал вопрос о пересмотре арсенала инструментов, в частности вопрос выбора инструмента визуального сравнения и слияния (diff and merge). Дабы восполнить недостаток информации на хабре, я решил написать этот мини-обзор. Как говориться — по горячим следам.

Под катом Вы также найдете примеры настроек Git для использования с DiffMerge и WinMerge под Windows. Думаю многим сэкономит время.
Читать дальше →
Total votes 53: ↑46 and ↓7+39
Comments45

Видеоматериалы, блоги и подкасты для .NET разработчика

Reading time5 min
Views17K
Видеоматериалы


В одной из своих статей Бьёрн Страуструп (папа С++) признался, что он не признает видео материалы в качестве источника для самообразования. И с ним сложно не согласиться, когда речь касается изучения с нуля языка программирования или технологии. Я правда сомневаюсь, что можно одолеть такого монстра, как С++ или стать гуру WPF лежа на диване и просматривая обучающее видео типа «Узнай все за 24 часа». Но если вы ставите себе цель познакомиться с некоторой технологией или новой возможностью языка программирования, или просто послушать философско-компьютерные размышления умного товарища, то в этом случае веб-касты, записи конференций или другой вид видеоматериалов может быть очень кстати.
Читать дальше →
Total votes 53: ↑48 and ↓5+43
Comments19

Noty — необычайно гибкий плагин jQuery для вывода уведомлений

Reading time1 min
Views31K

Почти месяц назад вышла вторая версия прекрасного и замечательного jQuery Notification plugin для вывода самых разнообразных уведомлений на сайте, странно что Хабр вообще обошёл его стороной, исправлю ситуацию.
Читать дальше →
Total votes 113: ↑110 and ↓3+107
Comments27

Information

Rating
Does not participate
Location
Челябинск, Челябинская обл., Россия
Date of birth
Registered
Activity