Search
Write a publication
Pull to refresh
14
0
Артем @Yuego

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

Send message

360 дней программирования

Reading time2 min
Views13K
Вдохновившись постом о девушке из Калифорнии Дженифер Девальт, которая решила каждый день делать по сайту, я тоже решил таким образом заставить себя начать изучать JS и RR. Дженифер решила без выходных в течение 180 дней провести этот марафон.

В этом же посте я сначала высказал мнение, что надо брать пример. А потом и пообещал это делать. И у меня даже нашелся человек, который пообещал меня контролировать: это Светлана, хабраюзер Quetz. Хочу сказать ей спасибо, потому что теперь я не смогу втихую закрыть тему.

Условия такие:
— 360 дней, каждый день по небольшому скрипту.
— Всякие форс-мажоры случаются, поэтому я закладываю 5 дней выходных.

Изучать я собираюсь:
— JS,
— Ruby on Rails,
— jQuery.
 
Как обстоят дела

Как использовать настроение

Reading time3 min
Views33K
Представим ситуацию. Мне нужно написать важный Модуль. И несколько менее важную Статью. Всё вроде понятно: садись, пиши Модуль. Сажусь, пишу. Точнее, пытаюсь писать. На самом деле, в голову постоянно лезут идеи для Статьи. Терпеливо записываю их в блокнот. В процессе записи, появляются ещё интересные мысли. Но надо возвращаться к Модулю, он ведь важней.

Внимание, раздвоение истории!

Ветка 1
А к чёрту этот Модуль! Открываю текстовый редактор и пишу статью. Так как мысли лезут в голову сами, за день она легко делается. На следующий день, уже ни на что не отвлекаясь, пишу Модуль.
«Малодушно», скажете вы? Давайте рассмотрим альтернативное развитие событий.

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

К сожалению, в реальности мы не можем видеть варианты событий и не можем сравнивать. Но думаю, никто не станет отрицать, что приведённый мысленный эксперимент достаточно убедителен. То, к чему сейчас лежит душа, делается быстрей. Так что даже отказ от важного в пользу желаемого в сумме даёт результат получше.

Разумеется, не всё так просто. В таком поведении есть известные (и не очень известные) риски.
Их и рассмотрим

Красивые трейсбеки в Python

Reading time1 min
Views21K
Как часто вам присылают подобные отчеты об ошибке?

Traceback (most recent call last):
...
  File "...", line ..., in ...
    process(lst[index])
IndexError: list index out of range


Ох, если бы только узнать значение lst и index на тот момент...

python-catcher — автоматическая генерация HTML-трейсбеков с локальными переменными и исходниками, + загрузка в интернет — пользуйтесь на здоровье.



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

Ajax валидация форм в Django

Reading time5 min
Views22K
imageСегодня я расскажу о том, как мы валидируем формы с использованием технологии Ajax. На стороне сервера будет использоваться Django.
Ничего нового в этом способе нет, в интернете есть несколько статей на эту тему, главное же отличие от этих статей заключается в том, что всю логику валидации формы через Ajax мы вынесем в отдельное представление (view). Это позволит нам писать все остальные представления без какой-либо дополнительной логики. При написании функционала будет использоваться Class Based Views подход.

При валидации форм с использованием Ajax мы получаем следующие преимущества:
  • страница пользователя не перезагружается пока данные не валидны;
  • форма не отрисовывается заново;
  • логика валидации формы описывается в одном месте.

Если заинтересовались, добро пожаловать под кат.
Читать дальше →

Редактирование конфигов в Python

Reading time4 min
Views17K


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

Вот почему я делюсь с вами библиотекой python-reconfigure.
Читать дальше →

Поиск через sphinx в django 1.6 admin

Reading time3 min
Views12K
Задача: реализовать полнотекстовый поиск в админке django.
Пример модели, по которой будем делать поиск:
class Movie(models.Model):
    title_en = models.CharField(max_length=255, null=True)
    title_ru = models.CharField(max_length=255, null=True)
    year = models.PositiveSmallIntegerField(null=True)

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

Метод быстрого вычисления адреса IPv4 сети по маске

Reading time1 min
Views64K
В процессе вычисления сетей, при подготовке к CCNA, я выявил интересную закономерность, на основе которой можно быстро вычислять адрес сети, а так же ее широковещательный адрес без особых усилий. Этот метод я ранее в литературе не встречал.
Читать дальше →

Отказоустойчивый кластер Master-Slave на PostgreSQL

Reading time9 min
Views127K
Приветствую, хаброжители!
В этой статье я хочу поделиться опытом развертывания кластера Master-slave на СУБД PostgreSQL. Отказоустойчивость достигается с помощью возможностей pgpool-II (failover, online recovery).
pgpool — это прекрасное средство для масштабирования и распределения нагрузки между серверами и, думаю, немногие знают о возможностях автоматического создания failover на ведомом сервере при отказе ведущего и как добавить новые мощности в уже работающий кластер без отключения всего кластера.
Читать дальше →

Адаптивный поиск с фильтром

Reading time1 min
Views11K
Перевод статьи Криса Койера (Chris Coyier) с CSS-Tricks.com "Search with Filters Responsive Design Pattern".

Паттерны дизайна — очень полезная штука, особенно в адаптивном дизайне. Рассмотрим пример: на большом экране в блоке со вкладками по ширине помещается много табов, однако на мобильном устройстве верстка съедет. Решение — использование специального паттерна дизайна, который сжимает все табы в выпадающие пункты.

Brad Frost даже собрал очень хорошую коллекцию адаптивных паттернов, очень полезно. Еще один пример, форма поиска с фильтром результатов. На десктопе места много:

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

Подборка полезного для любителей Twitter Bootstrap

Reading time1 min
Views83K
В подборке инструменты, плагины и другие полезности, облегчающие работу с Twitter Bootstrap. Предыдущая подборка.

Инструменты




Bootstraptor — подборка большого количества бесплатных и премиум тем, в том числе Starter Kit, на основе Bootstrap.
Читать дальше →

G.fast может быть принят в 2014 году

Reading time1 min
Views4.7K
ITU собирается стандартизировать новый стандарт G.fast. Это новая эра старого доброго DSL.

Этот стандарт в тестах показал пиковую скорость 1,1 Гбит/c в тестовых условиях на хорошей меди на расстоянии 70 метров на оборудовании Alkatel-Lucent. Но на расстоянии 100 метров скорость упала до 800 Мбит/с, а на обычной старой медной паре в Австрии была достигнута скорость 500 Мбит/с.

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

Ссылки по теме: http://www.totaltele.com/view.aspx?ID=482338&mail=1057&C=0, http://www.theregister.co.uk/2013/07/18/gfast_takes_first_step_on_standards_road/.

Хороший пользовательский интерфейс

Reading time7 min
Views120K

Вольный перевод статьи Якуба Линовски — «A Good User Interface».

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

16 практических идей

Руководство по магическим методам в Питоне

Reading time28 min
Views646K
Это перевод 1.17 версии руководства от Rafe Kettler.


Содержание


  1. Вступление
  2. Конструирование и инициализация
  3. Переопределение операторов на произвольных классах
  4. Представление своих классов
  5. Контроль доступа к атрибутам
  6. Создание произвольных последовательностей
  7. Отражение
  8. Вызываемые объекты
  9. Менеджеры контекста
  10. Абстрактные базовые классы
  11. Построение дескрипторов
  12. Копирование
  13. Использование модуля pickle на своих объектах
  14. Заключение
  15. Приложение 1: Как вызывать магические методы
  16. Приложение 2: Изменения в Питоне 3


Вступление


Что такое магические методы? Они всё в объектно-ориентированном Питоне. Это специальные методы, с помощью которых вы можете добавить в ваши классы «магию». Они всегда обрамлены двумя нижними подчеркиваниями (например, __init__ или __lt__). Ещё, они не так хорошо документированны, как хотелось бы. Все магические методы описаны в документации, но весьма беспорядочно и почти безо всякой организации. Поэтому, чтобы исправить то, что я воспринимаю как недостаток документации Питона, я собираюсь предоставить больше информации о магических методах, написанной на понятном языке и обильно снабжённой примерами. Надеюсь, это руководство вам понравится. Используйте его как обучающий материал, памятку или полное описание. Я просто постарался как можно понятнее описать магические методы.
Читать дальше

Простая методика построения фильтров товаров с помощью MongoDb и MapReduce

Reading time8 min
Views32K
Впервые столкнувшись с MapReduce, я продолжительное время искал реальные примеры применения. Пресловутый поиск слов в тексте, встречающийся в каждой второй статье о MapReduce, искомым примером считать не будем. Наконец, на двух курсах по Big Data на Coursera, я нашёл не только живые примеры, но теоретическую подоплёку для более глубокого понимания происходящего. Возможность применить полученный багаж знаний не заставила себя долго ждать.

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

Честный glow и скорость

Reading time4 min
Views16K
Наверное все, кто хоть чуть-чуть работал с фотошопом — видели эффект outer glow для слоя, и пробовали с ним играться. В фотошопе есть 2 техники этого самого outer glow. Soft и precise. Soft мне был не так интересен, а вот глядя на precise — я задумался.

Выглядит он вот так:

Это однопиксельная линия. А градиент грубо говоря — отражает расстояние до ближайшего пикселя изображения. Это самое расстояние — могло бы быть очень вкусным для построения разнообразных эффектов. Это и всякие контуры, и собственные градиенты, и
даже газоразрядные эффекты вокруг и прочее.
Пример эффекта, который можно получить, если иметь в наличии карту расстояний. Пример использует OpenGL + GLSL, написан на Delphi

Основная проблема такого glow — это сложность вычисления для больших размеров. Если у нас glow на 100 пикселей, то нам надо для каждого пикселя изображения проверить 100*100 соседних пикселей. И для изображения например 800*600 это будет всего 4 800 000 000 проверок.

Однако фотошоп этим не страдает, и прекрасно строит точный glow даже больших (до 250) размеров. Значит решение есть. И мне любопытно было его найти. Нагуглить быстрый алгоритм такого glow у меня не получилось. Большинство алгоритмов использует blur чтобы построить glow, но мы то с вами знаем, что однопиксельная линия не даст нам такого эффекта, как на картинке, она просто сблюрится.

Поэтому я погнал велосипедить.
Велосипедить с автором

Внутренняя кухня: рецепт эффективной работы с удаленным сотрудником. Часть 2

Reading time4 min
Views8.6K
Почему начинается с пункта 6? Потому что в публикации «Внутренняя кухня: рецепт эффективной работы с удаленным сотрудником. Часть 1» было пять «ингредиентов», и ими размышления на эту тему не исчерпались.

6. Продумайте вопрос коммуникации

Технологии-технологиями, но удаленная работа в любом случае связана с определенными сложностями в коммуникации. И эти сложности становятся все более раздражающими по мере расширения круга ответственности удаленного работника.
Пример? Необходимо решить срочный вопрос с иллюстрированием материала до того, как журнал будет сверстан, а коллега, в компетенции которого находится эта проблема, несмотря на «зелененький» статус в Skype почему-то не отвечает ни на письмо, ни на сообщения! Возможно, именно в этот момент он разбирает письма клиентов или проверяет отчеты, но меня, как ответственного конкретно за этот маленький участок проекта, данный факт как-то не успокаивает. В офисе можно встать над душой, попытаться оторвать коллегу от дела, задать вопрос «между делом», беспардонно потретировать бедолагу под дверью туалета.
Читать дальше →

Замена фона в Гимпе — рабочее решение

Reading time3 min
Views26K
В комментариях к посту Clipping Magic... я посетовала на невозможность качественно отделить объект от фона в Гимпе. Я с мая искала рабочий способ замены фона, чтобы не мучиться с фотошопом в убунту, которая давно уже является у меня единственной осью на десктопе. Прочитав сотни уроков (в том числе уроков по ручному созданию подобных масок в фотошопе, т.к. маски в гимпе почти не отличаются), я так и не нашла способа, который был бы таким же быстрым и качественным, как Refine Edges в CS5-6. А вчера в каталоге плагинов на официальном сайте Гимпа был выложен плагин, который наконец-то справился с задачей.
Итак, встречайте:
Читать дальше →

HTML5 круговая панорама на three.js

Reading time4 min
Views42K
    В последнее время все чаще можно наткнуться на круговую панораму в интернете. Взять к примеру тот же сырный домик. Это эффектная штучка возможно вскоре станет обыкновенным делом для сайтов ресторанов, гостиниц, отелей и т. п. Однако, что делать, если существуют проблемы с flash на компьютере? Это реальная ситуация, которая возникла у меня на работе, по причине жесткой политики безопасности IT-отдела.
    В этой небольшой статье я расскажу вам о трудностях, которые встретил на пути создания интерактивной панорамы на WebGL + THREE.js.
Читать дальше →

Centrifuge — брокер реал-тайм сообщений

Reading time6 min
Views19K
Привет, Хабр!

В статье я опишу свой небольшой open-source проект — Centrifuge (далее Центрифуга). Это сервер на Python, задача которого — рассылка (broadcast) сообщений в реальном времени подключенным (в основном из браузера) клиентам.

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

Для начала, посмотрите, пожалуйста, скринкаст (не забудьте включить субтитры), если после просмотра интерес не пропадет, смело читайте дальше!


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

Законопроект о произвольной блокировке сайтов принят

Reading time2 min
Views194K
Сегодня законопроект прошёл второе и третье чтение в Думе. Его окончательная версия ещё хуже, чем промежуточные. Все поправки интернет-отрасли, которые могли бы добавить в механизм регулирования немного здравого смысла, были полностью проигнорированы.

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

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

Статья, содержащая эту формулировку, добавляется в общие положения четвёртой части ГК РФ. Это значит, что она будет распространяться на все объекты исключительных прав, включая литературные произведения, фотографии, музыку, патенты, товарные знаки и т.д. Кроме того, в статье говорится, что уведомление провайдеру о блокировке какого-нибудь контента или ссылки на него может содержать только IP-адрес. Такой подход технически безграмотен и ставит под угрозу само существование поисковых систем и любых других интернет-ресурсов.

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

Information

Rating
Does not participate
Location
Астраханская обл., Россия
Registered
Activity