Pull to refresh
51
0
Андрей Балакирев @and_rew

User

Send message

Как парсить интернет по-гусиному

Reading time3 min
Views40K
“Распарсить сайт” — словосочетание, которое повергало меня в уныние всего полгода назад. В моей голове сразу же проносились знакомые проблемы с настройкой фантома, или возней с селениумом. Мысли о возможной необходимости подменять useragent, пагинации и других действиях во время парсинга заставляли откладывать эту задачу в долгий ящик…

Но всё изменилось, когда я встретил Гуся. Мир парсинга заиграл новыми красками. Под катом я хочу показать несколько простых примеров, которые могут помочь распарсить непростые сайты.

Кстати, написав парсер, Гусь решил снять фильм про это, пока что вы можете насладиться трейлером:



Читать дальше →
Total votes 30: ↑20 and ↓10+10
Comments11

Миксины для “классов” в JavaScript

Reading time4 min
Views25K
Одинаковый код в нескольких местах — это боль. Сегодня я напишу пару слов про повторяющиеся куски классов. Люди давно придумали решение — можно вынести одинаковые методы и свойства в общий базовый класс, а если такового нет — использовать примеси. Существует миллион реализаций данного паттерна для JavaScript, я хочу детально остановиться на подходе, когда миксин попадает в цепочку наследования.

Проблема в картинках


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



В какой-то момент в дочерних классах появляется необходимость в одинаковом функционале. Обычная копипаста будет выглядеть на нашей схеме вот так:



Очень часто бывает, что данный функционал не имеет ничего общего с родительскими классами, поэтому выносить его в какой-то базовый класс нелогично и неправильно. Вынесем его в отдельное место — миксин. С точки зрения языка миксин может быть обычным объектом.



А теперь обсудим момент, ради которого написана вся статья — как правильно замешивать наш миксин в классы.
Вмешиваемся!!!
Total votes 13: ↑12 and ↓1+11
Comments4

Как распутывать лапшу, не впадая в депрессию

Reading time4 min
Views18K
Эта статья не про ваши сладкие интерфейсы на реакте, ангуляре или что вы там используете? Это статья про те ситуации, когда у вас есть кучка jQuery лапши. Нет, пусть это будут горы jQuery лапши, завернутой во вьюшки бэкбона.

В статье используется библиотека Backbone.View.Elements

Проблема первая: маловыразительные селекторы


Все мы видели лапшу, все мы знаем: лапша в JSе — наверно и в верстке не все хорошо. А раз все так, то код, скорее всего, кишит непонятными манипуляциями с домом. Читать такой код сложно, ведь надо, не упуская мысли автора о том, что здесь вообще происходит, держать в уме кучку невнятных названий для элементов. Итак, давайте придадим коду немножко выразительности:
_selectors: function () {
    return {
        elemName: '.block__elem-name'
    };
}
Сложим все селекторы в одном месте и дадим понятное название элементам, для выбора которых они нужны. Выбирать мы их, кстати, будем вот так:
this._elem('elemName');
вместо
this.$('.block__elem-name');

Неплохо? Поехали дальше..
Total votes 22: ↑19 and ↓3+16
Comments30

Блог на node.js

Reading time1 min
Views13K
Вышла ноль пятая версия mvc фреймворка Autodafe для node.js. Код стало писать удобнее, кода теперь писать нужно меньше, ещё меньше. Скоро код писать не надо будет совсем, достаточно будет лишь подумать о нём.

Пример действия контроллера, которое совершает два асинхронных запроса к базе данных, компанует вьюшку index.html и отправляет ее клиенту (при этом отлавливая и обрабатывая все ошибки):

Site.prototype.index = function( response, request ){
  response.send({
    topic : this.models.topic.With( 'author', 'comments.author' ).find_by_pk( request.params.topic_id ),
    news  : this.models.news.find_all()
  });
}


Написаны подробные статьи про тонкости работы с контроллерами, авторизацию пользователей и работу с URL адресами.

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



За хабракатом только комментарии
Total votes 40: ↑33 and ↓7+26
Comments11

Система online документации для JavaScript — ADWiki

Reading time1 min
Views11K


Ссылочки


Что ADWiki умеет:
  • Парсить файлы Вашего проекта описанные на jsdoc
  • Поднимать сайт с чистеньким дизайном на bootstrap
  • Организовывать на сайте небольшой блог, где Вы сможете дополнять документацию статьями о проекте


Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments8

Фреймворк Autodafe — работа с моделями

Reading time1 min
Views720
Вышла версия 0.3 node.js фреймворка для разработки веб приложений Autodafe.

У фреймворка появился сайт autodafe.ws, который стремительно обрастает документацией и статьями. (Документация на сайте генерируется автоматически из кода, задокументированного по правилам jsdoc. Поэтому если вы хотите быстро поднять сайт с документацией вашего проекта, можете спросить меня «как?».

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

Для тех, кто еще не знает про фреймворк
Total votes 8: ↑6 and ↓2+4
Comments7

Маршрутизация запросов в Autodafé

Reading time3 min
Views1.9K
Autodafé — node.js фреймворк, начало читайте в этой статье: habrahabr.ru/blogs/nodejs/135089

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

Откуда берется пыль


Начнем со схемы, отображающей подключение клиентов к приложению:



На схеме можно увидеть несколько пользователей, которые пользуются различными устройствами и различными браузерами, которые в свою очередь подключаются к приложению по различным протоколам. (В данный момент к autodafe можно подключиться только по http и websockets)

В приложении каждому подключению соответствует один Client. Client создается для каждого http запроса и подключения по websockets. Клиенты с одинаковым идентификатором сессии принадлежат одному экземпляру Session. Обычно одна сессия в приложение соответствует одному браузеру.

Ну и для логического завершения на схеме приведен компонент “users”, который позволяет привязать различные сессии, прошедшие специальную авторизацию к одному объекту UserIdentity. Таким образом в приложении каждый объект UserIdentity соотносится к одному реальному пользователю.

Читать дальше →
Total votes 6: ↑5 and ↓1+4
Comments0

Autodafé

Reading time3 min
Views1.6K
Autodafe — node.js фреймворк для разработки веб приложений

Содержание статьи может описывать неактуальный код. У фреймворка уже давно свой сайт autodafe.ws

Самые вкусные плюшки из коробки:


  • архитектура: MVC + подключаемые модули
  • Mysql ORM (ActiveRecord с поддержкой отношений, асинхронное подобие того, что предлагает Yii framework для PHP )
  • HTTP сервер
  • WebSockets ( обертка для socket.io )
  • удобное перенаправление запросов и человеко понятные УРЛ
  • управление пользователями
    • аутентификация и авторизация, сессии
    • система управления правами ролей пользователей
  • почта
  • логирование в консоль, фс и на почту
  • шаблонизатор

Ложка дегтя:


  • очень малая часть задокументирована
  • задокументированная часть плохо задокументирована
  • плохо задокументированная часть задокументирована только на русском языке
  • тестами покрыт не весь фреймворк


Hello World на Autodafe
Total votes 33: ↑30 and ↓3+27
Comments51

Древовизируйте

Reading time1 min
Views1.1K

Есть сервис:


image

Назначение:


Быстрая конвертация мыслей в визуальное древовидное представление.

Я использую его для того, чтобы видеть все «большие» проекты, которые идут в жизни, и примерно представлять на какой они стадии. Удобно, когда во время одного занятия, пролетает мысль по поводу другого, и её не хочется потерять.

Кто-то другой вероятно сможет найти иное применение.

Плюсы:


  • Любую операцию можно сделать с хоткея
  • Внизу по этому поводу красуется «неглупая» панель с хоткеями. Неглупая потому что показывает только доступные в данный момент времени сочетания клавиш. Напрмер, если вылез попап, то она покажет какой клавишей его скрыть, какой пролиcтать и т.п.
  • Минималистичность.
  • Легкий дизайн, который не отвлекает.
  • Возможность видеть все проекты сразу.
  • Возможность работы на нескольких машинах одновременно с одного пользователя. То есть оно умное, все из себя ajax и обновляет.


а где живет?
Total votes 103: ↑82 and ↓21+61
Comments97

Jifeon — online редактор 3d графики

Reading time3 min
Views1.7K
Я много раз открывал 3ds Max, создавал параллелепипед, крутил его и думал, как бы классно было когда-нибудь выкроить времени и разобраться с этой чудо-программой. Шли годы, а руки не доходили. И вот ко мне пришла интересная мысль ))

Итак, с текстом в интернете давно уже сделали всё, что только можно. (Ну или почти всё.) Сервисов для работы с картинками несчетное количество. А вот сервисы, затрагивающие трехмерную графику можно пересчитать по пальцам рук. Один из них — Jifeon, активно пишущийся мной. Идея сервиса заключается в том, чтобы моделить небоьлшие модельки прямо в браузере, сохранять их, просматривать чужие и голосовать за них. После сохранения Вы можете дорабатывать свои модели или доверять это другим пользователям. Так же на сервере происходит рендеринг (пока что только) миниатюр созданных моделей. Несколько скриншотов тут.

Как он работает я уже писал на Хабре, а сегодня предлагаю попробовать смоделировать лого любимого Хабра «со звездочками». Это под силу абсолютно любому Хабрачеловеку вне зависимости от его подготовки.

Хабралого в Jifeon

Хочу смотреть дальше
Total votes 33: ↑29 and ↓4+25
Comments39

Jifeon — редактор 3d графики online.

Reading time2 min
Views958
Хочу поведать хабрасообществу о своем сервисе, позволяющем работать с трехмерной графикой прямо в браузере. Имя ему — Jifeon

Ещё скриншоты тут.

Пока что сервис позиционируется больше как социальная сеть, нежели как серьёзный инструмент 3d моделлера. В Jifeon можно создавать и обсуждать небольшие 3d модели, собирать их в коллекции и голосовать за них.
Как всё это работает?
Total votes 23: ↑19 and ↓4+15
Comments8

Information

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