Как стать автором
Обновить
0
0
Nemoden @So1

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

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

Agile: танцы с бубном или наука

Время на прочтение3 мин
Количество просмотров15K
Множество достаточно опытных разработчиков и менеджеров пробовало Agile, и им не понравилось. Многие директора, руководители и специалисты даже не пробовали, ибо считают Agile религией, которая помогает, если в неё верить, либо, вообще, только создают впечатление эффективности у «верующих».



Понять последних можно, ведь большинство статей и agile-евангелистов говорят, примерно следующее: «Делайте так, как говорит методология, и ваш проект попадёт в рай. Если нарушите хотя бы одну из практик, то Agile покарает вас»
Так есть ли прок от Agile?
Всего голосов 42: ↑31 и ↓11+20
Комментарии59

Пишем простенький веб-эмулятор терминала на PHP

Время на прочтение6 мин
Количество просмотров18K
Я думаю, очень много людей думало над тем, чтобы сделать свой эмулятор терминала на PHP, и обычно останавливались на решениях вроде следующего:
<?php echo '<form><input name="cmd" /></form>'; if(isset($_GET['cmd'])) system($_GET['cmd']);

Конечно же, такое решение вызывает целый набор проблем, самая незначительная из которых — это то, что ошибки на экран не попадают. Есть и намного более значительные вещи, например запуск vi просто «подвесит» выполнение команды и придется открывать новую консоль и писать killall vi. И что уж точно не получится сделать, так это выполнить команды ssh или sudo, которые требуют чтения пароля прямо с терминала. Я постараюсь показать способ, с помощью которого можно устранить большую часть описанных выше проблем.
Читать дальше →
Всего голосов 69: ↑63 и ↓6+57
Комментарии69

Пишем свою книгу

Время на прочтение5 мин
Количество просмотров35K
imageВ данной статье я поделюсь информацией о том, как написать свою IT-книгу. Расскажу о подводных камнях, взаимодействии с издательским агентством, налоговой и банками. Процесс может немного варьироваться от издательства (и страны), но основные моменты не должны меняться.
Читать дальше →
Всего голосов 76: ↑74 и ↓2+72
Комментарии95

Работа с виртуальными машинами KVM. Введение

Время на прочтение4 мин
Количество просмотров77K
Как и обещал, начинаю серию статей о том, как мы делали услугу аренды выделенных серверов на базе KVM.

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

Читать дальше →
Всего голосов 45: ↑43 и ↓2+41
Комментарии38

How to become a ZCE

Время на прочтение3 мин
Количество просмотров9.9K
Наверное многие из вас сдавали тесты на таких ресурсах как Retratech или Specialist. А вы задумывались зачем? Чтобы отразить результат в своем резюме? Чтобы оценить свой уровень? Подобные ресурсы не предложат вам ничего, кроме некачественных вопросов и сомнительных достижений. Их цель — получение прибыли на печати ничего не стоящих в профессиональной среде сертификатов. Чтобы получить результат вам нужно
Читать дальше →
Всего голосов 33: ↑30 и ↓3+27
Комментарии89

Оптимальная параллелизация юнит-тестов или 17000 тестов за 4 минуты

Время на прочтение10 мин
Количество просмотров27K
Сегодня мы поговорим про разработанную нами утилиту, которая оптимизирует тестирование PHP-кода с помощью PHPUnit и TeamCity. При этом нужно понимать, что наш проект — это не только веб-сайт, но и мобильные приложения, wap-сайт, Facebook-приложение и много чего ещё, а разработка ведется не только на PHP, но и на C, C++, HTML5 и т.д.

Методы, которые мы описываем, прекрасно адаптируются под любой язык, любую систему тестирования и любое окружение. Поэтому наш опыт может оказаться полезным не только разработчикам веб-сайтов на PHP, но и представителям других областей разработки. Кроме того, в ближайшем будущем мы планируем перевести нашу систему в Open Source ― без обязательной привязки к TeamCity и PHPUnit ― наверняка она кому-нибудь пригодится.
Читать далее
Всего голосов 66: ↑58 и ↓8+50
Комментарии31

Фильтрация смс спама с помощью наивного байесовского классификатора (код на R)

Время на прочтение8 мин
Количество просмотров28K
Привет. В этом посте мы рассмотрим простую модель фильтрации спама с помощью наивного байесовского классификатора с размытием по Лапласу, напишем несколько строк кода на R, и, наконец, протестируем на англоязычной базе данных смс спама. Вообще, на хабре я нашел две статьи посвященные данной теме, но ни в одной не было наглядного примера, чтобы можно было скачать код и посмотреть результат. Также не было упоминания про размытие, что существенно увеличивает качество модели, без особых затрат усилий, в отличие, скажем, от сложной предобработки текста. Но вообще, запилить очередной пост про наивного байеса меня побудило то, что я пишу методичку для студентов с примерами кода на R, вот и решил поделиться инфой.

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

Порождающие грамматики Хомского

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

Небольшое предисловие


Этот текст является продолжением поста , в котором автор попытался как можно более просто и без сложных математических выкладок описать понятия формального языка и грамматики. На этот текст пришло достаточно много откликов и автор счел себя обязанным написать продолжение.

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

Читать дальше →
Всего голосов 58: ↑53 и ↓5+48
Комментарии13

Про отток разработчиков из свободных проектов, преподавание Python в качестве первого языка и другие темы

Время на прочтение2 мин
Количество просмотров33K
Долго думал над заголовком, в итоге в него попали пара интересных вопросов из докладов прошедшей недавно, уже восьмой по счету, конференции «Свободное программное обеспечение в высшей школе».

Мероприятие это традиционно проводится зимой в уютном здании Университета города Переславля-Залесского Ярославской области, в несколько как бы семейной обстановке, а потому совсем широкой общественности не известное. А меж тем, каждый год бывают весьма любопытные доклады, и еще более интересные докладчики. Четыре из них хотелось бы выделить в этом топике, хотя внимания заслуживают все. По традиции тематика докладов (особенно в первый день) выходит за рамки тематики конференции, и тем интереснее их слушать.

1) «СПО. Кризис среднего возраста?» (Хотел вынести в заголовок топика один из слайдов доклада — «Куда уехал цирк?», но воздержался)
В преддверии 30-летнего юбилея движения GNU, известный аналитик Антолий Якушин, человек широчайших познаний в области программного обеспечения, подводит некоторые итоги и, в частности, рассказывает: куда направлен отток разработчиков свободных проектов, так ли это страшно, почему в MIT сейчас так мало свободных проектов, почему Столлман не является социалистом и прочие животрепещущие вопросы



Читать дальше →
Всего голосов 73: ↑61 и ↓12+49
Комментарии23

Модульный подход к разработке web-приложений с использованием JavaScript: AMD и RequireJS

Время на прочтение3 мин
Количество просмотров161K
RequireJSПри разработке приложений с модульной структурой на JavaScript возникает две проблемы:
  • описание и удовлетворение зависимостей различных частей приложения, необходимость организации подключения зависимостей на серверной стороне;
  • экспорт переменных в глобальную область видимости и их коллизия.

Обе эти задачи решаются при использовании подхода Asynchronous Module Definition. Он сводится к описанию модулей функцией define и подключению их с помощью require. На данный момент есть несколько инструментов, реализующих AMD. Я начал своё знакомство с ними с RequireJS и был удивлён, насколько удобно и просто можно описывать зависимости модулей. Расскажу, как это работает, на простом примере.
Читать дальше →
Всего голосов 56: ↑50 и ↓6+44
Комментарии97

Обзор исходного кода Quake 3: Архитектура (Часть 1)

Время на прочтение5 мин
Количество просмотров105K
Так как у меня была одна неделя до моего следующего контракта, я решил закончить мой цикл статей id. После Doom,Doom Iphone, Quake1, Quake2, Wolfenstein iPhone и Doom3, я решил изучить код, который я еще не рассматривал: idTech3 — 3D движок Quake III и Quake Live.
Читать дальше →
Всего голосов 157: ↑152 и ↓5+147
Комментарии27

Как делать удобные ajax-сайты

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

Сразу скажу, что существуют такие web-приложения, которые лишены указанных ниже недостатков (например, Gmail, Хабрахабр). Но это — счастливые исключения, лишь подтверждающие правила.

1. Трудность навигации


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


Довольная Гаечка наконец-то нашла нормальный ajax-сайт!
Читать дальше →
Всего голосов 111: ↑91 и ↓20+71
Комментарии91

Интерактивная обучалка ветвлению в Git

Время на прочтение1 мин
Количество просмотров80K
Некий Питер Коттл (Peter Cottle) сделал интерактивную обучалку по основам ветвления в Git. Есть несколько простых обучающих уровней, где нужно сделать пару коммитов, а затем merge или rebase, есть и сложные уровни, над которыми придется подумать. Можно также сохранять уровни и делиться ими с друзьями.

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

image
Читать дальше →
Всего голосов 162: ↑156 и ↓6+150
Комментарии38

Flight — новый js-фреймворк от Twitter

Время на прочтение4 мин
Количество просмотров52K
Сегодня команда Twitter представила общественности собственный фреймворк. Flight — это легкий компонентный javascript фреймворк, каждый компонент которого описывает поведение элементов на странице. На самом деле, вы скорее всего уже видели Flight в действии, потому что Twitter использует его для своих приложений. Вы можете посмотреть демонстрацию возможностей фреймворка в виде простейшего почтового клиента (код на github).

Новый фреймворк использует ES5-Shim для поддержки ES5 в старых браузерах и jQuery для манипуляции DOM. Также потребуется одна из реализаций AMD, например require.js или loadrunner.
Зачем нам еще один фреймворк?!
Всего голосов 145: ↑141 и ↓4+137
Комментарии39

Никогда не отвлекай программиста

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

Крис Парнин (Chris Parnin) из технологического института Джорджии решил восполнить этот недостаток и опубликовал чрезвычайно насыщенную статью со ссылками на различные исследования по этой теме.

Для начала, несколько фактов, которые относятся ко всем работникам интеллектуального труда. Задача, прерванная по ходу выполнения, занимает в два раза больше времени и содержит вдвое больше ошибок, чем та же задача, которая выполнялась без прерывания (Czerwinski:04). Офисные сотрудники вынуждены отвлекаться при выполнении 57% задач (Mark:05). Опросы говорят о том, что сотруднику требуется в среднем 15 минут, чтобы вернуться в нормальный ритм после того, как его отвлекли (vanSolingen:98).
Читать дальше →
Всего голосов 263: ↑248 и ↓15+233
Комментарии180

Отладка PHP приложений на удаленном хосте при помощи XDebug и vim в Linux

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

Введение


В PHP приложениях отладка при помощи var_dump, debug_backtrace и прочих полезных функций не всегда удобна, и возникает потребность в полноценном отладчике. Эта статья — для тех, кто по каким-либо причинам не хочет использовать IDE, поддерживающие отладку PHP приложений из коробки, вроде NetBeans или PhpStorm, а хочет использовать для этих целей vim, и при этом отладка происходит на удаленном хосте.
Читать дальше →
Всего голосов 39: ↑33 и ↓6+27
Комментарии31

Прокрастинация. Новые задачи. Часть 2

Время на прочтение5 мин
Количество просмотров110K
Сегодня мы продолжим борьбу с прокрастинацией.

Поговорим о новых задачах, узнаем что такое РЭПТ и для чего нужен план, существует ли кооперативная работа и когда это всё кончится?

Интересно?
Добро пожаловать под кат
Всего голосов 37: ↑33 и ↓4+29
Комментарии38

Прокрастинация. Символическая система вознаграждения. Часть 1

Время на прочтение7 мин
Количество просмотров154K
Что такое прокрастинация? Это термин в психологии, который подразумевает склонность к постоянному откладыванию дел или мыслей. Прокрастинация не является ленью, лень это отсутствие или недостаток трудолюбия. В чём проявляется прокрастинация? В том, что человек осознаёт выполнение важных дел, но откладывает их на потом или заменяет дела развлечениями. Когда сроки подходят, он либо бросает всё, либо пытается выполнить работу за короткий промежуток времени, с предсказуемым результатом.

Для тех кто хочет преодолеть прокрастинацию быстро, просто прочитав эту статью
Подробности под катом
Всего голосов 60: ↑55 и ↓5+50
Комментарии54

Как устроены массивы в PHP

Время на прочтение6 мин
Количество просмотров74K
В прошлой статье я рассказывал о переменных, теперь пойдет речь о массивах.

Что такое массивы на уровне PHP?


На уровне PHP, массив — это упорядоченный список скрещенный с мэпом. Грубо говоря, PHP смешивает эти два понятия, в итоге получается, с одной стороны, очень гибкая структура данных, с другой стороны, возможно, не самая оптимальная, точнее, как выразился Anthony Ferrara:
PHP arrays are a great one-size-fits-all data structure. But like all one-size-fits-all <anything>, jack-of-all-trades usually means master of none.

Ссылка на письмо



(на картине изображен HashTable с Bucket-ами, В. Васнецов)
Читать дальше →
Всего голосов 90: ↑77 и ↓13+64
Комментарии40

PHPUnit: Mock объекты

Время на прочтение7 мин
Количество просмотров92K
Довольно часто при написании модульных тестов нам приходится сталкиваться с тем, что тестируемый класс зависит от данных из внешних источников, состояние которых мы не можем контролировать. К таким источникам можно отнести далеко расположенную общедоступную базу данных или службу, датчик какого-нибудь физического процесса и пр. Либо нам необходимо убедиться, что некие действия выполняются в строго определенном порядке. В этих случаях к нам на помощь приходят Mock объекты (mock в переводе с английского — пародия), позволяя тестировать классы в изоляции от внешних зависимостей. Использованию Mock объектов в PHPUnit посвящается эта статья.
Читать дальше →
Всего голосов 14: ↑11 и ↓3+8
Комментарии7

Информация

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