Search
Write a publication
Pull to refresh
3
0
Дмитрий Куликов @DmitryKulikov

User

Send message

Дайджест интересных новостей и материалов из мира айти за последнюю неделю №54 (20 — 26 апреля 2013)

Reading time7 min
Views34K
Предлагаем вашему вниманию очередную подборку с ссылками на новости, интересные материалы и полезные ресурсы.


Читать дальше →

Вариант эффективного интервью

Reading time3 min
Views58K
Волею судеб, мне приходится набирать web-программистов уже несколько лет. Прошерстив сотни резюме, проведя десятки собеседований, хочу поделиться текущей структурой интервью.

А ты записался добровольцем?
А ты записался добровольцем прошел собеседование?

Интервью состоит из трех частей, занимает 30-60 минут.
1. Рассказ программиста о себе.
2. Короткие вопросы на кругозор.
3. Решение задач

Рассказ программиста о себе.


В первую очередь прошу человек рассказать, как пришел к web-программированию. Когда начал, когда подсел на программирование :)
Очень спрашиваю про последнее место-два работы, что человек делал, за что отвечал, что в техническом и организационном плане там делал.

Нужно, чтобы человек расслабился.
Когда-то на этом этапе спрашивал про пять вариантов, почему люки круглые и прочие вопросы, но это давно отмерло, потому что не дает ничего :)

Как только становится понятно, что движет человеком и какой у него опыт, переходим к технической части.
Читать дальше →

Жизненная позиция пользователей ВКонтакте. Бонус-трек. Корреляции

Reading time2 min
Views46K
Почти сразу после того, как я опубликовал пост Жизненная позиция пользователей ВКонтакте в зависимости от пола и возраста, появилась идея проверить, как зависит тот или иной аспект жизненной позиции от других. Как упоминалось в предыдущем посте, для этого опять-таки не нужно было делать сложных расчетов, всего лишь обратиться к поиску по профилям ВКонтакте.

Статистику по общему кол-ву людей разных возрастов см. в первой части. Напомню, что по горизонтали на всех графиках отложен возраст людей.

Вот как на жизненные ориентиры мужчин влияет пристрастие к спиртному:

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

Жизненная позиция пользователей ВКонтакте в зависимости от пола и возраста

Reading time2 min
Views88K
В анализе Фейсбука, который провел Стивен Вольфрам, мне особенно понравились графики изменения интересов людей в зависимости от пола и возраста. Поэтому я решил посчитать нечто похожее для отечественной соцсети ВКонтакте. В анкете ВКонтакте есть любопытная группа полей — «Жизненная позиция», по значениям которых можно искать фактически в реляционном стиле. Поэтому от меня не требовалось разворачивать мощную data mining инфраструктуру, а лишь обработать результаты нескольких сотен GET-запросов.

Для начала — общее кол-во людей по возрастам:

Так как мужчины и женщины неодинаково активны в социальных сетях, а так же учитывая наличие фейков и ботов, я бы не стал делать из этого графика далеко идущие демографические выводы.
Больше графиков!

Поле множественного выбора с автодополнением в Django

Reading time7 min
Views23K
Привет, хабр.
В прошлой своей статье я описал технологию создания кастомного поля для ввода тегов в Django. Сейчас я бы хотел поделиться готовым и более-менее универсальным решением, реализующим поле множественного выбора с автодополнением по AJAX. Отличие этого поля от описанного в предыдущей статье в том, что оно позволяет только выбирать элементы из справочника, но не создавать новые. За front-end часть будет отвечать замечательный jQuery-плагин Select2. Решение будет оформлено в виде отдельного приложения Django.
Всех заинтересованных прошу под кат

Добавляем чуть больше рефлексии: декораторы

Reading time3 min
Views9.4K
Последнее время приходится довольно много работать с Python. Решая одну из текущих задач, возникла необходимость внутри функции-декоратора проверить задекорирован ли декорируемый метод другим декоратором. К сожалению, стандартные средства рефлексии языка не позволяют это сделать. Точнее, используя, например, модуль inspect из стандартной библиотеки это сделать можно, но уж больно не нравился такой подход.

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

Мега-Учебник Flask, Часть 4: База данных

Reading time13 min
Views153K
Это четвертая статья в серии, где я описываю свой опыт написания веб-приложения на Python с использованием микрофреймворка Flask.

Цель данного руководства — разработать довольно функциональное приложение-микроблог, которое я за полным отсутствием оригинальности решил назвать microblog.



Краткое повторение


В предыдущей части мы создали нашу форму входа в комплекте с представлением и валидацией.

В этой статье мы намереваемся создать нашу базу данных и поднять ее, чтобы мы могли записывать туда наших пользователей.

Чтобы следовать этой части, ваше приложение микроблога должно быть таким, каким мы оставили его в конце предыдущей. Пожалуйста, убедитесь, что прилолжение установлено и работает.
Читать дальше →

Мега-Учебник Flask, Часть 2: Шаблоны

Reading time6 min
Views193K
Это вторая статья в серии, где я описываю свой опыт написания веб-приложения на Python с использованием микрофреймворка Flask.

Цель данного руководства — разработать довольно функциональное приложение-микроблог, которое я за полным отсутствием оригинальности решил назвать microblog.



Краткое повторение


Если вы следовали инструкциям в первой части, то у вас должно быть полностью работающее, но еще очень простое приложение с такой файловой структурой:

microblog\
  flask\
    <файлы виртуального окружения>
  app\
    static\
    templates\
    __init__.py
    views.py
  tmp\
  run.py


Для запуска приложения вы запускаете скрипт run.py, затем открываете url http://localhost:5000 в вашем браузере.
Читать дальше →

Мега-Учебник Flask, Часть 1: «Привет, Мир!»

Reading time6 min
Views584K
Это первая статья в серии, где я буду документировать мой опыт написания веб-приложения на Python, используя микрофреймворк Flask.

Здесь список всех статей в серии:
Часть 1: Привет, Мир!
Часть 2: Шаблоны
Часть 3: Формы
Часть 4: База данных
Часть 5: Вход пользователей
Часть 6: Страница профиля и аватары
Часть 7: Unit-тестирование
Часть 8: Подписчики, контакты и друзья
Часть 9: Пагинация
Часть 10: Полнотекстовый поиск
Часть 11: Поддержка e-mail
Часть 12: Реконструкция
Часть 13: Дата и время
Часть 14: I18n and L10n
Часть 15: Ajax
Часть 16: Отладка, тестирование и профилирование
Часть 17: Развертывание на Linux (даже на Raspberry Pi!)
Часть 18: Развертывание на Heroku Cloud

Моя предыстория


Я разработчик ПО с двузначным числом лет опыта разработки комплексных приложений на нескольких языках. Впервые я познакомился с Python для создания привязок к C++ библиотеке на работе. Вдобавок к Python, я писал веб-приложения на PHP, Ruby, Smalltalk и, верите вы или нет, еще на С++. Из всего этого, я нахожу комбинацию Python/Flask самой гибкой.
Я хочу начать это долгое и удивительное путешествие

Рецепты против взаимных блокировок на сигнальных переменных

Reading time5 min
Views22K
Доброго времени суток, уважаемые Хабраюзеры!

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

Рисунок 1 – Взаимная блокировка 1-го рода с участием сигнальной переменной.

В рамках этого поста мы рассмотрим проблемы, которые возникают при использовании сигнальных переменных, и покажем, как их можно избежать.
Читать дальше →

Устранение утечек памяти в приложении на Питоне

Reading time7 min
Views37K
imageНедавно мне довелось разобраться и устранить несколько утечек памяти в популярном фреймворке Торнадо. Не беда, если вы никогда его не использовали, потому что описанное будет мало связано с ним. Рассказать я хочу о методах, которые я использовал для поиска и устранения утечек.

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

Это схема отлично работает до тех пор, пока не появляются объекты, ссылающиеся друг на друга. Самый простой пример — узлы какого-то дерева, хранящие ссылки на свои дочерние и родительский узлы. Узлы продолжат ссылаться друг на друга, даже когда не останется других внешних ссылок ни на один из них. Самое неприятное, что такие узлы могут ссылаться на какие-то другие данные и не давать их освободить. Чтобы устранить такие циклические ссылки, в Питоне существует второй механизм освобождения памяти — сборщик мусора. Он запускается время от времени, ставя выполнение остального кода на паузу, и анализирует все неосвобожденные объекты.

Формально, циклические ссылки нельзя назвать утечками: сборка мусора рано или поздно уничтожит такие объекты. Беда только в том, что Питон не может сам определить, когда еще рано, а когда уже поздно. В моем случае система просто прибивала процесс с Питоном, если сборка мусора не начиналась вовремя.
Читать дальше →

Инструменты, которые мы используем для командной разработки

Reading time5 min
Views20K
Данная статья будет интересна разработчикам, которые решили попробовать себя в команде, как это в своё время сделал я со своими настоящими коллегами. Ничего нового я не расскажу, просто поделюсь своим скромным опытом и, надеюсь, подтолкну кого-нибудь сделать то же самое в комментариях.

Когда работаешь в одиночку, можно обойтись простым блокнотом. Notepad++ для написания кода и лист бумаги с карандашем для заметок. Я конечно утрирую, но, по сути, это так и есть. В командной разработке всё немного иначе.
Читать дальше →

Dvelum или как я искал серебряную пулю

Reading time5 min
Views16K
Все привет.

Была у меня недавно такая задачка. Мне надо было сделать небольшое веб-приложение, которое должно было помочь работе врача. Use-Casе‘ов там не много, посмотреть кто сегодня записан на прием, возможность посмотреть историю болезни, занести новые данные и создать нового пациента. Делов то…

Времени у меня было много, спешить некуда. Сначала подумал спрограмить по быстрому на GWT + SmartGWT, но подумалось мне, что пора бы что нибудь новое посмотреть. К тому же были явные намеки, что появятся мелкие заказы подобного рода, для библиотек там всяких и мелких фирмочек. Хотелось нечто простое с одной стороны, но в тоже время достаточно мощное.
Читать дальше →

Работа с моделями данных в javascript

Reading time4 min
Views20K
Здравствуйте, Хабралюди.

Мал по-малу из моего опыта и наших проектов родилась небольшая библиотека для работы с моделями в джаваскрипте. Она так и называется — Model.js.

Я расскажу вам вкратце об этой библиотеке и этим постом запрашиваю обратную связь у тех, кто создавая сложные джаваскрипт-приложения, уже решает эту проблему каким-то определенным образом без фреймворков. Интересно также и мнение тех, кто только подыскивает подходящий инструмент для своих нужд: какой инструмент вам нужен и насколько вам подходит Model.js?
Читать дальше →

Программисты-оптимисты

Reading time5 min
Views78K

Мы, программисты, — оптимисты. Это проявляется во всем цикле разработки ПО от оценки сроков до написания кода и внедрения. Как показывает моя практика, в разработке ПО законы Мерфи работают в 100% случаев. Несмотря на это, я раз за разом сталкиваюсь с «программистами-оптимистами».

Топ «оптимистичных» допущений:
Читать дальше →

Objective-C Runtime. Теория и практическое применение

Reading time6 min
Views61K
В данном посте я хочу обратиться к теме, о которой многие начинающие iPhone-разработчики часто имеют смутное представление: Objective-C Runtime. Многие знают, что он существует, но каковы его возможности и как его использовать на практике?
Попробуем разобраться в базовых функциях этой библиотеки. Материал основан на лекциях, которые мы в Coalla используем для обучения сотрудников.
Читать дальше →

Зачем пользователи GIT-а редактируют свои коммиты

Reading time2 min
Views57K
В последних двух выпусках Радио-T ведущие пытались обсудить GIT. Евгений (@Umputun) задавался вопросом зачем нужен rebase и очень удивился, когда я спросил, редактирует ли он коммиты. На мой взгляд, чтоб понять GIT, достаточно вникнуть в процесс разработки Linux Kernel, т к создавался он именно для этого.
Читать дальше →

Знакомство с CoffeeScript

Reading time8 min
Views116K
Статья представляет собой не исчерпывающее описание языка программирования CoffeeScript, а именно знакомство, обзор некоторых интересных возможностей. Целевая аудитория — те, кто еще не смотрел в сторону CoffeeScript, но так или иначе используют JavaScript в своих проектах.

CoffeeScript — это маленький язык, который транслируется в JavaScript. Его документация умещается на одной странице — coffeescript.org и отличается компактностью и наглядностью. Я даже сомневался в необходимости данной статьи, когда есть такое классное описание «от производителя», но все же рискнул расставить акценты и прояснить некоторые детали.
Читать дальше →

Введение в OpenSceneGraph

Reading time7 min
Views42K
OpenSceneGraph — это кроссплатформенная библиотека с открытыми исходниками для разработки высокопроизводительных 3D-приложений. Это не игровой движок, связывающий пользователя по рукам и ногам заложенными в него ограничениями, а именно библиотека — набор полезных модулей, которые отлично работают как поодиночке, так и в сборке.



Ядро OpenSceneGraph, собственно граф сцены, — довольно тонкая обёртка вокруг OpenGL, позволяющая задавать иерархию объектов и выполнять над ними любые желаемые преобразования:
  • изменять характеристики узлов (двигать объекты в пространстве, назначать им материалы, свойства освещённости, шейдеры и прочие режимы и атрибуты OpenGL);
  • перестраивать дерево любым желаемым образом (создавать и удалять объекты, перелинковывать их к другим узлам графа);
  • делать обход графа, выполняя для каждого их узлов какие-либо действия;
  • ну и конечно рендерить сцену при помощи OpenGL.

Читать дальше →

ISO 15926 vs Семантика: сравнительный анализ семантических моделей

Reading time16 min
Views17K
Идея применения семантических моделей в корпоративных информационных системах существует давно, но устойчивая практика такого их использования еще не сформировалась. Семантические модели можно применять для интеграции данных, аналитики, управления знаниями; однако, пока нет общепринятого мнения о том, как подходить к оценке их полезности, по каким методикам должны строиться такие модели.
Задача статьи — на практическом примере сравнить аналитический потенциал моделей, построенных по правилам интеграционного стандарта ISO 15926, который предписывает использование OWL и SPARQL для выражения моделей и работы с ними, и «обычных» семантических моделей, построенных без использования этого стандарта. Решение этого вопроса позволит выбрать диапазон задач, для решения которого целесообразно применять такие высокоуровневые парадигмы семантического моделирования, как ISO 15926.
Читать дальше →

Information

Rating
Does not participate
Location
Саров (Нижегородская обл.), Нижегородская обл., Россия
Date of birth
Registered
Activity