Я работаю в одной молодой консалтинговой компании, которая специализируется на вопросах личной эффективности. В отличие от многих других компаний, которые берут и пытаются применять чьи-то готовые техники, мы разработали свою методологию и свой собственный концепт, который называется Энерджи Менеджмент. Сам концепт Энерджи Менеджмента станет предметом следующей статьи, а сегодня мы затронем вопросы эффективности с точки зрения организации команд, дав в качестве примера две известные компании, которые уже упоминались на хабре, и которые так же как и мы не стали брать готовые шаблоны развития, а сделали что-то свое и с нуля. В следующих статьях я планирую рассказать непосредственно о нашем концепте Энерджи Менеджмент, и его принципиальных отличиях от Тайм-Менеджмента.
Григорий Безюк @gbezyuk
Polyglot Developer
Онлайн-курсы Stanford University, Berkley и MIT в доступном виде
2 min
54K
На хабре в последнее время неоднократно анонсировались выложенные в онлайн курсы знатных мировых университетов, в том числе и тех, которые перечислены в заголовке.
Пример такого поста: habrahabr.ru/post/139542
Информации там очень много, вся она разрознена и имеет большую структуру по разделам, что затрудняет скачивание, поэтому было принято решение выкачать оттуда всё что можно и всё что нельзя и сохранить в удобном для изучения формате. Так как судя по всему не все успели записаться на эти курсы, то предлагаю тем кто не успел воспользоваться выложенной оттуда информацией и пройти под кат.
Уверен, что курсов по данным дисциплинам, информативнее и понятнее выложенных, в природе не существует.
Под катом ссылки и список того, что было выложено, что ещё предстоит выложить…
+86
Django Admin Actions — действия с промежуточной страницей
2 min
16KПривет. Полезная штука экшены в админке! Хочу поделиться как можно сделать экшен который после выбора элементов будет отправлять пользователя на промежуточную страницу чтобы с этими элементами можно было сделать что то особенное. Пример? Например у вас есть интернет магазин, таблица товаров. Вы хотите перенести часть товаров из одного раздела (книги) в другой (книги технические). Выбираем нужные книги, выбираем действие «Перенести в другой раздел», жмем применить, переходим на промежуточную страницу, выбираем нужный раздел и жмем сохранить. Здорово? Давайте попробуем.
+23
Как поймать «поток», и как сделать так, чтобы он не сорвался
6 min
49KВступление
Я, как руководитель проектов, всё больше и больше замечаю, что эффективность работы команды (и каждого программиста в частности) – это ключевой фактор, определяющий успех проекта. При эффективной работе даже самые тяжёлые проекты со сжатыми сроками удаётся завершить успешно, а неэффективная способна «завалить» простейшие проекты с минимумом рисков. Поэтому, я хотел бы поделиться своими мыслями об одном из ключевых понятий – понятии «работы потоком».
+201
Курс для тех, кто не боится UNIX и С
1 min
38K
О том, что российские вузы выпускают специалистов, невостребованных рынком труда, говорят многие. Обычно, разговорами все и заканчивается. Очень мало компаний в России идут на контакт с высшими учебными заведениями. Но такие всё же есть.
В прошлом году специалисты SkyDNS и Айдеко подготовили и прочитали в Уральском федеральном университете (УрФУ) курс «Сетевое программирование в UNIX». Спецкурс предназначался для студентов математико-механического факультета УрФУ. «Мы анонсировали его как курс для тех, кто не боится UNIX и С», — рассказал Александр Патраков, ведущий разработчик компании SkyDNS.
+30
Учимся писать модуль ядра (Netfilter) или Прозрачный прокси для HTTPS
19 min
34KЭта статья нацелена на читателей, которые начинают или только хотят начать заниматься программированием модулей ядра Linux и сетевых приложений. А также может помочь разобраться с прозрачным проксированием HTTPS трафика.
Небольшое оглавление, чтобы Вы могли оценить, стоит ли читать дальше:
P.S. Для тех, кому только хочется посмотреть на прозрачный прокси-сервер для HTTP и HTTPS, достаточно настроить прозрачный прокси-сервер для HTTP, например, Squid с transparent портом 3128, и скачать архив с исходниками Shifter. Скомпилировать (make) и, после удачной компиляции, выполнить ./Start с правами root. При необходимости можно поправить настройки в shifter.h до компиляции.
Небольшое оглавление, чтобы Вы могли оценить, стоит ли читать дальше:
- Как работает прокси сервер. Постановка задачи.
- Клиент – серверное приложение с использованием неблокирующих сокетов.
- Написание модуля ядра с использованием библиотеки Netfilter.
- Взаимодействие с модулем ядра из пользовательского пространства (Netlink)
P.S. Для тех, кому только хочется посмотреть на прозрачный прокси-сервер для HTTP и HTTPS, достаточно настроить прозрачный прокси-сервер для HTTP, например, Squid с transparent портом 3128, и скачать архив с исходниками Shifter. Скомпилировать (make) и, после удачной компиляции, выполнить ./Start с правами root. При необходимости можно поправить настройки в shifter.h до компиляции.
+54
Метод динамического программирования для подсчёта числа циклов на прямоугольной решетке
11 min
13KЭта статья адресована тем читателям, кто занимается программированием алгоритмов, и особенно интересуется труднорешаемыми задачами. Тем хабралюдям, которые против размещения алгоритмов на Хабре следует немедленно прекратить читать данную работу.
В статье я покажу как использовать метод динамического программирования по профилю для решения задачи о подсчёте количества гамильтоновых циклов на прямоугольной решётке размером m на n. На Хабре есть несколько статей, посвященных теме динамического программирования (например, эта), но нигде не идёт речь о более сложном применении метода. Данный подход также можно называть методом матрицы переноса, кому как нравится.
Предупреждаю, что статья содержит около 2000 слов (8 страниц А4), но дорогу осилит идущий.
В статье я покажу как использовать метод динамического программирования по профилю для решения задачи о подсчёте количества гамильтоновых циклов на прямоугольной решётке размером m на n. На Хабре есть несколько статей, посвященных теме динамического программирования (например, эта), но нигде не идёт речь о более сложном применении метода. Данный подход также можно называть методом матрицы переноса, кому как нравится.
Предупреждаю, что статья содержит около 2000 слов (8 страниц А4), но дорогу осилит идущий.
+89
Привязка модели данных к представлению на javascript
7 min
3.1KЯ думаю многие пользуются DataBinding`ом в .NET, она же привязка данных. Она позволяет, при выделенной модели данных и независимом визуальном представлении, забыть о синхронизации данных с формой. Привязав один раз properties модели к элементам представления, мы избавляемся от десятков обработчиков onChange и подобных для изменения полей модели, а в случае изменения поля вне gui-интерфейса (например синхронизация модели с базой), мы не будем мешать уровни абстрации, чтобы обновить textBox.text. Давайте данные будут отдельно, gui отдельно. Плюс мы получаем наглядный, легко переносимый код на asp.net или даже на другой язык/платформу.
Синхронизация может быть как в двух направлениях, так и в одном, причем в любую сторону.
С развитием уровня web-ориентированных приложений, появилась возможность реализации подобного решения и на JavaScript. Ну думаю преимущества разделения данных от представления уже много где рассматривались и не раз приводили к холивару, так что упустим этот момент.

Синхронизация может быть как в двух направлениях, так и в одном, причем в любую сторону.
С развитием уровня web-ориентированных приложений, появилась возможность реализации подобного решения и на JavaScript. Ну думаю преимущества разделения данных от представления уже много где рассматривались и не раз приводили к холивару, так что упустим этот момент.
+27
Место под солнцем для нового стартапа
6 min
39KНедавно мы опубликовали историю появления на свет LinguaLeo.ru. Сервис запустился в бета-версии 1 марта. Меньше чем через месяц команда разработчиков возвращается в Москву. Но нам жаль просто так уезжать с острова Ко Чанг — уж очень много было вложено в создание комфортных условий для работы. Поэтому мы хотим поделиться своими впечатлениями, каково это — вести разработку на острове в Таиланде, и в подробностях рассказать, с чем придется столкнуться тем, кто отважится на авантюру и отправится в тропики, чтобы целиком посвятить себя реализации задуманной идеи. И объявляем акцию: мы передадим наше солнечное место хорошим ребятам с новым интересным стартапом!


+100
Обзор 30 хостингов изображений для быстрой публикации. Продолжение, выводы
16 min
80KПродолжаем обзор хостингов изображений для быстрой публикации.
Начало статьи находится по ссылке habr.com/ru/blogs/hosting/89162, а потом переходим сюда.
Начало статьи находится по ссылке habr.com/ru/blogs/hosting/89162, а потом переходим сюда.
+62
Когда картинка красноречивее 1024 слов – прототипирование с MockingBird
2 min
7.3K
Помимо представления самого сервиса, этим постом хотелось также привлечь внимание общественности к полезной практике прототипирования.
+121
CKEditor файловый менеджер
4 min
27KВ связи с выходом новой версии популярного и весьма функционального WYSIWYG редактора, пришлось сделать небольшой файл менеджер.
Причиной тому послужило отсутствие по умолчанию стандартного файл менеджера, есть конечно CKFinder но он на платной основе.
Поискав разные альтернативы решил потратить время на создание простенького но своего файл менеджера на манер CKFinder'а, что вам и представляю.
Пришлось поискать как интегрировать его с редактором, документации мало, но в конце концов вроде получилось :)
Возможности: Загрузка нескольких файлов, создание папок, транслит закачиваемых файлов, переименование, хотя чего перечислять стандартно всё :)
Общий стиль на манер CKFinder в гамме ACDSee 3
Причиной тому послужило отсутствие по умолчанию стандартного файл менеджера, есть конечно CKFinder но он на платной основе.
Поискав разные альтернативы решил потратить время на создание простенького но своего файл менеджера на манер CKFinder'а, что вам и представляю.
Пришлось поискать как интегрировать его с редактором, документации мало, но в конце концов вроде получилось :)
Возможности: Загрузка нескольких файлов, создание папок, транслит закачиваемых файлов, переименование, хотя чего перечислять стандартно всё :)
Общий стиль на манер CKFinder в гамме ACDSee 3
+35
Проблемы сжатия и объединения Javascript
5 min
16K
Начнем с простого: как JS-сжатие способно испортить нам настроение. И как его поднять обратно :)
UPD стартовал конкурс ускорения сайтов. В призах: монитор, веб-камера, мышь. Все гипер-быстрое.
+30
Test Infected
5 min
4.7KВсе, все будут писать тесты
Уже 3 года прошло, с тех пор как я увидел свою первую красную полоску. Что меня дернуло начать писать тесты, уже не важно. Я начал собирать информацию, перечитал весь wiki.agiledev.ru и торжественно запустил свой первый тест на SimpleTest. Конечно, эти тесты были ужасны, да и архитектура тоже (в моем сегодняшнем понимании). Тогда я, наверное, словил большинство ошибок, но зато замечательно провел время :)
Потом перешел на PHPUnit — просто было интересно, чем он отличается от SimpleTest и что в нем такого «навороченного».
А lime — гадость. Чего ребята из Symfony в него так вцепились? Понимаю ветка 1.*, наследие и все такое. Но 2.0 можно было бы и на PHPUnit начинать.Да, мне это было интересно. Я активно писал тесты, даже честно пытался делать это перед тем, как писать код.
+44
Zend_Db_Table_Select Dynamic Finder
4 min
1.3KПривет, Хабр! 
Написал класс, использующий Zend_Db_Table_Select и позволяющий использовать Dynamic Finder в моделях в проектах на Zend Framework. Статья о том, что этот класс умеет, а также ссылка на исходный код предлагаются вашему вниманию.
Dynamic Finder – способ, позволяющий получать данные из таблицы БД, записывая названия искомых полей в виде названия метода класса, а значения этих полей — в качестве аргумента метода. Например, может использоваться в экземпляре класса модели, связанной с какой-либо таблицей БД.
Dynamic Finder позволяет избежать написания ряда методов вида getById(…), getByLoginAndPassword(…), getAllByCountry(…) внутри модели в виде построения полноценных SQL-запросов и выборок. Вместо этого, в данной реализации достаточно подключить Dynamic Finder к модели должным образом, и, далее, программист может использовать эти методы модели непосредственно в контроллере или представлении. При этом реально эти методы в модели вообще не существуют.
Таким образом, экономится время работы программиста.
Dynamic Finder уже был реализован в том или ином виде в различных библиотеках и фреймворках, в частности, в Ruby on Rails.
В данной реализации Dynamic Finder является надстройкой, использующей Zend_Db_Select / Zend_Db_Table_Select, и предназначен для выборок из только одной таблицы.

Написал класс, использующий Zend_Db_Table_Select и позволяющий использовать Dynamic Finder в моделях в проектах на Zend Framework. Статья о том, что этот класс умеет, а также ссылка на исходный код предлагаются вашему вниманию.
Что это, зачем?
Dynamic Finder – способ, позволяющий получать данные из таблицы БД, записывая названия искомых полей в виде названия метода класса, а значения этих полей — в качестве аргумента метода. Например, может использоваться в экземпляре класса модели, связанной с какой-либо таблицей БД.
Dynamic Finder позволяет избежать написания ряда методов вида getById(…), getByLoginAndPassword(…), getAllByCountry(…) внутри модели в виде построения полноценных SQL-запросов и выборок. Вместо этого, в данной реализации достаточно подключить Dynamic Finder к модели должным образом, и, далее, программист может использовать эти методы модели непосредственно в контроллере или представлении. При этом реально эти методы в модели вообще не существуют.
Таким образом, экономится время работы программиста.
Dynamic Finder уже был реализован в том или ином виде в различных библиотеках и фреймворках, в частности, в Ruby on Rails.
В данной реализации Dynamic Finder является надстройкой, использующей Zend_Db_Select / Zend_Db_Table_Select, и предназначен для выборок из только одной таблицы.
+20
А где сейчас ваш клиент?
2 min
1.1KПривет, Хабр.
В данной статье я хочу рассказать Вам о некоторых интересных возможностях получения клиента с минимальными затратами. Данными методами пользуюсь я лично, как руководитель веб-студии «Райнет».
Данная статья будет полезна всем руководителям и менеджерам. Причем ее содержимое лежит «на поверхности», но мало кто задумывается, что это можно и нужно использовать.
В данной статье я хочу рассказать Вам о некоторых интересных возможностях получения клиента с минимальными затратами. Данными методами пользуюсь я лично, как руководитель веб-студии «Райнет».
Данная статья будет полезна всем руководителям и менеджерам. Причем ее содержимое лежит «на поверхности», но мало кто задумывается, что это можно и нужно использовать.
+18
Фотографируем гаджеты для обзора или сайта по-быстрому
3 min
13KTutorial
Топики с обзорами всевозможных гаджетов появляются на хабре достаточно часто и возможно, мой рассказ покажется полезным как раз для такого случая – сделать фотографию гаджета для обзора. Здесь я расскажу как быстро сфотографировать небольшой гаджет с максимально возможным качеством. В крайнем случае, это можно сделать даже камерой телефона, я так и поступлю. Поскольку технические средства в этом топике ограничены, практически любое улучшение используемой техники приведёт к повышению качества результата.
+186
Трехмерный движок для Флеша — Papervision3D. Как и с чем его едят
6 min
12KPapervision3D — это библиотека классов для ActionScript 3.0, которая позволяет создавать полноценные 3D флеш-ролики.
Таким образом пользователю не требуется качать какие-то альтернативные плагины (как это было с VRML, например), кроме собственно Flash Player'a.
Итак, что же повзоляет нам Papervision3D:
— Добавлять во флеш-ролик встроенные примитивы: Plane, Sphere, Cylinder, Cone, Cube, Paperplane, Arrow
— Импортировать модели созданные в 3D-редакторах, вместе с анимацией.
— Накладывать на объекты в качестве материалов однородные цвета, битмапы, мувиклипы и даже потоковое видео
— Использовать источники света
— Накладывать встроенные во флеш фильтры (Blur, Glow и т.п.) на 3D объекты
— Управлять отдельными вершинами и фейсами объектов. Пример
— Назначать на 3D объекты и материалы обработчики событий (клик, наведение мышки и т.п.)
Не стоит забывать, что Papervision3D требователен к ресурсам пользователя, так что не стоит загружать ролик большим количеством моделей и придерживаться максимального количества фейсов 3000
В данной обзорной статье я хочу рассказать немного о самом движке и показать его использование, на примере создания вращающейся сферы. Предполагается, что читатель знаком с основами программирования на ActionScript 3.0
+63
Фрилансерам на заметку
2 min
17KФрилансеры часто рекомендуют своим клиентам оплатить работу через терминалы.
Это удобно для клиентов далеко не всегда знающих, что такое электронные деньги, но пользующихся терминалами для оплаты повседневных услуг. Да и для оплаты нужно всего 2 шага:
Это удобно для клиентов далеко не всегда знающих, что такое электронные деньги, но пользующихся терминалами для оплаты повседневных услуг. Да и для оплаты нужно всего 2 шага:
- Записать номер кошелька, обычно, Яндекс.Деньги или Вебмани
- В терминале ввести номер кошелька и вставить оговоренную сумму в купюроприемник.
- Фрилансер не может определить, что работа оплачена, так как платежи приходят без комментариев (заказчику приходится дергать ТП, чтобы узнать номер транзакции). Это особенно актуально, если у фрилансера много заказчиков и платежей.
- В терминалах есть комиссия и фрилансер рискует получить на свой кошелек меньшую сумму, а клиенту приходится бежать к терминалу еще раз, чтобы доложить 10-50 рублей. Даже не смотря на наличие в некоторых терминалах калькулятора комиссий.
+15
Полезные инструменты для web-разработчиков
2 min
2.4KХотелось бы просто поделиться ссылкой на простейшие инструменты, которые могут помочь web-разработчикам, облегчив их рутинные процедуры.
Почти год назад была необходимость защитить большое количество адресов электронной почты от роботов по сборке мейлов, для последующей рассылки по ним спама. По этому поводу быстро набросал страничку, которая позволяет кодировать адреса посредством JavaScript. За основу был взят алгоритм из плагина шаблонизатора Smarty (для особо пытливых могу выложить реализацию на РНР отдельно).
Конечно у него есть и свои минусы:
MailLink
Почти год назад была необходимость защитить большое количество адресов электронной почты от роботов по сборке мейлов, для последующей рассылки по ним спама. По этому поводу быстро набросал страничку, которая позволяет кодировать адреса посредством JavaScript. За основу был взят алгоритм из плагина шаблонизатора Smarty (для особо пытливых могу выложить реализацию на РНР отдельно).
Конечно у него есть и свои минусы:
- адрес будет показываться только при всключенном JavaScript
- если у робота есть поддержка JS, то он может распознать скрываемый e-mail
+66
Information
- Rating
- Does not participate
- Date of birth
- Registered
- Activity