Pull to refresh
15
0
Send message

Полноценный REST API для перфекционистов за 5 минут

Reading time15 min
Views233K


Привет, Хабр! Меня зовут Владимир, мне 28 лет и я наркоман наркоман. Мой наркотик – простота. На простоту я подсел из-за своего перфекционизма, которым меня наградили при рождении.

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

Мир вокруг не идеален, сложную вещь сделать простой – невероятно сложно, поэтому всё чрезмерно усложнено. Людям нравится чувствовать себя профессионалами, поэтому они оперируют сложными терминами, когда в этом нет необходимости, так они ощущают свою значимость и заполняют пустоту, которая образовалась из-за страха потерянного времени.
Читать дальше →
Total votes 49: ↑41 and ↓8+33
Comments78

Az.js: JavaScript-библиотека для обработки текстов на русском языке

Reading time8 min
Views28K
Как чуден и глубок русский курлык
Генератор постов

Обработка естественного языка (natural language processing, NLP) — тема, на мой взгляд, очень интересная. Во-первых, задачи тут чисто алгоритмические: на вход принимаем совершенно примитивный объект, строчку, а извлечь пытаемся вложенный в него смысл (ну или хотя бы частичку смысла). Во-вторых, необязательно быть профессиональным лингвистом, чтобы решать эти задачи: достаточно знать родной язык на более-менее приличном уровне и любить его.

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

Бессвязность текстов в нынешней версии «Генератора» вызвана тем, что на самом деле никакого анализа он производить не умеет. Просто в одних случаях «предсказывает» продолжение предложения по собранным биграммам, а в других — заменяет в готовом предложении некоторые слова на другие, которые заканчиваются похоже. Вот и вся начинка.

Конечно, хочется сделать что-нибудь поинтереснее. Беда в том, что модные сейчас нейросети не очень-то применимы здесь: им нужно много ресурсов, большую обучающую выборку, а в браузере у пользователя соцсети всего этого нет. Поэтому я решил изучить вопрос работы с текстами с помощью алгоритмов. К сожалению, готовых инструментов для работы с русским языком на JavaScript найти не удалось, и я решил сделать свой маленький велосипед.
Читать дальше →
Total votes 54: ↑54 and ↓0+54
Comments30

Руководство по работе с Redux

Reading time80 min
Views285K
Сегодня Redux — это одно из наиболее интересных явлений мира JavaScript. Он выделяется из сотни библиотек и фреймворков тем, что грамотно решает множество разных вопросов путем введения простой и предсказуемой модели состояний, уклоне на функциональное программирование и неизменяемые данные, предоставления компактного API. Что ещё нужно для счастья? Redux — библиотека очень маленькая, и выучить её API не сложно. Но у многих людей происходит своеобразный разрыв шаблона — небольшое количество компонентов и добровольные ограничения чистых функций и неизменяемых данных могут показаться неоправданным принуждением. Каким именно образом работать в таких условиях?

В этом руководстве мы рассмотрим создание с нуля full-stack приложения с использованием Redux и Immutable-js. Применив подход TDD, пройдём все этапы конструирования Node+Redux бэкенда и React+Redux фронтенда приложения. Помимо этого мы будем использовать такие инструменты, как ES6, Babel, Socket.io, Webpack и Mocha. Набор весьма любопытный, и вы мигом его освоите!
Читать дальше →
Total votes 65: ↑59 and ↓6+53
Comments51

Web scraping на Node.js и проблемные сайты

Reading time14 min
Views33K

Это вторая статья в цикле про создание и использование скриптов для веб-скрейпинга на Node.js.


  1. Web scraping при помощи Node.js
  2. Web scraping на Node.js и проблемные сайты
  3. Web scraping на Node.js и защита от ботов
  4. Web scraping обновляющихся данных при помощи Node.js

В первой статье разбиралась простейшая задача из мира веб-скрейпинга. Именно такие задачи достаются веб-скрейперам в подавляющем большинстве случаев – получение данных с незащищённых HTML-страниц стабильно работающего сайта. Быстрый анализ сайта, HTTP-запросы при помощи needle (организованные при помощи tress), рекурсивный проход по ссылкам, DOM-парсинг при помощи cheerio – вот это вот всё.


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


Цель этой статьи (как и прошлой) – показать весь процесс создания и использования скрипта от постановки задачи и до получения конечного результата, однако темы, уже раскрытые в первой статье, освещаются здесь довольно кратко, так что начать я рекомендую с первой статьи. Тут акцент будет на анализ сайта с точки зрения веб-скрейпинга, выявление подводных камней и способы их обхода.

Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments11

Web scraping при помощи Node.js

Reading time10 min
Views145K

Это первая статья в цикле про создание и использование скриптов для веб-скрейпинга при помощи Node.js.


  1. Web scraping при помощи Node.js
  2. Web scraping на Node.js и проблемные сайты
  3. Web scraping на Node.js и защита от ботов
  4. Web scraping обновляющихся данных при помощи Node.js

Тема веб-скрейпинга вызывает всё больше интереса как минимум потому, что это неисчерпаемый источник небольших, но удобных и интересных заказов для фрилансеров. Естественно, что всё больше людей пытаются выяснить, что это такое. Однако, довольно трудно понять, что такое веб-скрейпинг по абстрактным примерам из документации к очередной библиотеке. Гораздо проще разобраться в этой теме наблюдая за решением реальной задачи шаг за шагом.


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


Цель этой статьи – показать весь процесс создания и использования такого скрипта от постановки задачи и до получения конечного результата. В качестве примера я рассмотрю реальную задачу вроде тех, какие часто можно найти, например, на биржах фриланса, ну, а в качестве инструмента для веб-скрейпинга будем использовать Node.js.

Читать дальше →
Total votes 23: ↑17 and ↓6+11
Comments44

Зaчем мне AshleyMadison, если я не курю?

Reading time5 min
Views31K
Как вы все уже наверное знаете, недавно были выложены дампы баз AshleyMadison. Я решил не упускать возможность и проанализировать реальные данные дейтинг платформы. Попробуем предсказать платежеспособность клиента по его характиристикам таким как возраст, рост, вес, привычки и т.д.



Попробуем?
Читать дальше →
Total votes 32: ↑26 and ↓6+20
Comments26

Вы не знаете Node: краткий обзор основных возможностей

Reading time20 min
Views86K


Ремарка от автора
Это статья новая, но она не о новых возможностях. Она о core, то есть о платформе и о том что многие кто просто используют grunt, или webpack могут не подозревать, так скзать about fundamentals.

Более подробно читайте:

комментарии rumkin:
habrahabr.ru/company/mailru/blog/283228/#comment_8890604

комментарии Aiditz:
habrahabr.ru/company/mailru/blog/283228/#comment_8890476

комментарии Suvitruf:
habrahabr.ru/company/mailru/blog/283228/#comment_8890430


Идея этой публикации была навеяна серией книг Кайла Симпсона «Вы не знаете JavaScript». Они являются хорошим началом для изучения основ этого языка. А Node — это практически тот же JavaScript, за исключением небольших отличий, о которых я расскажу в этой статье. Весь код, приведённый ниже, вы можете скачать из репозитория, из папки code.

Зачем вообще переживать насчёт Node? Node — это JavaScript, а JavaScript используется почти везде! Мир был бы лучше, если бы большинство разработчиков в совершенстве владели Node. Чем лучше приложения, тем лучше жизнь!

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

  1. Цикл событий: освежаем ключевую концепцию, позволяющую реализовать неблокирующие операции ввода/вывода.
  2. Глобальный объект и процесс: как получить больше информации.
  3. Эмиттеры событий: интенсивное введение в событийную модель (event-based pattern)
  4. Stream’ы и буферы: эффективный способ работы с данными
  5. Кластеры: форкай процессы как профессионал
  6. Обработка асинхронный ошибок: AsyncWrap, Domain и uncaughtException
  7. Аддоны на C++: внесение своих наработок в ядро и написание собственных аддонов на С++
Читать дальше →
Total votes 50: ↑44 and ↓6+38
Comments32

Радости и невзгоды IT-шника, который захотел летать

Reading time7 min
Views18K
В последнее время всё больший интерес у людей вызывают мультироторные системы во всех их проявлениях. Будь то аппараты класса DJI Phantom и Inspire, или огромные октокоптеры размером с автомобиль, или наоборот маленькие, но юркие коптеры, а-ля Hubsan x4, но моё внимание привлекли скоростные квадрокоптеры ~250-го размера, имеющие безумный запас тяги и скорости. Многие из вас наверняка встречали завораживающие видео с гонками и фристайлом квадрокоптеров. Глядя на них, кажется: чего стоит купить агрегат и вот так же взмыть в небеса, делать виражи меж препятствий и ловко обгонять соперников, но к сожалению это не так…

Ровно год назад идея попробовать себя в роли пилота реализовалась и я начал свой долгий и тернистый путь в мир радиомоделистов, скорости и высоты. Я нисколько не разочарован в приобретённом хобби, оно затянуло меня с головой. Когда за секунды взмываешь в небо, слышишь рёв моторов, проходишь трассу с лучшими результатами — это просто непередаваемые чувства. Но у всего этого есть и обратная сторона. Падения, поломки, вечные ремонты и опять поломки, долгие вечера с паяльником и необходимость в большом количестве запасных частей. Спустя год, хотелось бы поделиться всеми радостями и невзгодами этого увлечения, предостеречь кого-то от ошибок, а для кого-то возможно помочь сделать выбор, нужно ли ему это хобби.


Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments28

Palantir: торговля оружием и распространение пандемии

Reading time7 min
Views22K
Как данные в руках разведчиков аналитиков Palantir превращаются из неструктурированных в структурированные.



Palantirчастная американская компания, четвертый по капитализации (после Uber, Xiaomi и Airbnb) стартап в мире (данные на начало 2016 года). Основные заказчики — ЦРУ, военные, ЦКЗ и крупные финансовые организации.

По-моему, как-то так видели пользу информационных технологий «отцы-основатели» Вэнивар Буш («As We May Think»), Дуглас Энгельбарт («The Mother of All Demos») и Джозеф Ликлайдер («Интергалактическая компьютерная сеть» и «Симбиоз человека и компьютера»), о которых я писал немного ранее.

Под катом — два кейса (2010 года).
  • Первый — анализ распространения вируса во время национальной пандемии на основе пятнадцати миллионов записей обращений в больницу и трехсот пятидесяти семи тысячах записей о смерти.
  • Второй — анализ сотни отчетов из расследования по глобальной сети торговцев оружием.

(За помощь с переводом спасибо Ворсину Алексею)

Total votes 16: ↑14 and ↓2+12
Comments14

Что писать в карточках, если товары одинаковые?

Reading time5 min
Views21K


Привет! Я продолжаю рассказывать про буквы в блоге Михаила, владельца Текстброкера.

Предположим, у вас есть интернет-магазин, а у него внутри – карточки товаров. И товары бывают двух тяжелых категорий:
  • Те, у которых дофига неуникального текста (например, теххарактеристики телефонов, инструкции медицинских препаратов), и непонятно, как быть с SEO.
  • Те, которые имеют артикулы ####0001, ####0002, ####0003… ####0050 и так далее, то есть отличаются какими-то совершенно нереальными мелочами вроде цвета. Пример – 180 моделей очаровательных трусиков. К сожалению, очаровательны они для райтера только первые десять раз.

Давайте посмотрим, что делать.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments16

Metronome IM и Jappix: многофункциональный Jabber, без сложностей в настройке

Reading time12 min
Views20K

Что если я расскажу вам как без особых усилий поднять свой собственный jabber-сервер со всеми новомодными фичами, такими как: архивация, синхронизация сообщений между клтентами, уведомления о прочтении, публичные чаты и многое другое…
Так же поделюсь с вами замечательным Jabber-клиентом который не менее интересен, он поддерживает аудио и видео звонки, имеет неплохой интерфейс и работает прямо из браузера.
То и другое вы получите абсолютно бесплатно, так-как и сервер и клиент лицензируются по свободнлй лицензии.

Речь пойдет об Metronome IM и Jappix.
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments13

Установка Django-проекта на VPS (centOS 7) [Для новичков]

Reading time6 min
Views32K
Хочу поделиться практическим опытом по установке готового проекта на Django на VPS от Reg.ru. Данное руководство рассчитано на новичков, оно содержит ряд не самых лучших решений, но с ним вы сможете запустить своей проект на Django в течение часа.

Инструкция не содержит настроек безопасности. Она была создана на базе англоязычных инструкций и боли, много боли (ссылки в конце статьи). Инструкция актуальна для настроек: centOS 7, Django 1.9.2 и Python 3.4.3

Ремарка: благодарю Филиппа Торчинского за предоставление продакт-версии PyCharm для создания проекта на Django.

Что у нас есть


Мы имеем готовый проект на Django в среде разработки PyCharm для локального компьютера. Т.е. settings.py имеет базу данных sqlite3, битые пути к статите и пустой ALLOWED_HOSTS. Это нормально.
Читать дальше →
Total votes 20: ↑7 and ↓13-6
Comments14

Список ресурсов по машинному обучению. Часть 1

Reading time3 min
Views30K


Ранее мы говорили о разработке системы квантовой связи и о том, как из простых студентов готовят продвинутых программистов. Сегодня мы решилие еще раз (1, 2) взглянуть в сторону темы машинного обучения и привести адаптированную (источник) подборку полезных материалов, обсуждавшихся на Stack Overflow и Stack Exchange.
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments0

Основы языка программирования Python за 10 минут

Reading time9 min
Views1.3M
Python Logo

На сайте Poromenos' Stuff была
опубликована статья, в которой, в сжатой форме,
рассказывают об основах языка Python. Я предлагаю вам перевод этой статьи. Перевод не дословный. Я постарался подробнее объяснить некоторые моменты, которые могут быть непонятны.

Если вы собрались изучать язык Python, но не можете найти подходящего руководства, то эта
статья вам очень пригодится! За короткое время, вы сможете познакомиться с
основами языка Python. Хотя эта статья часто опирается
на то, что вы уже имеете опыт программирования, но, я надеюсь, даже новичкам
этот материал будет полезен. Внимательно прочитайте каждый параграф. В связи с
сжатостью материала, некоторые темы рассмотрены поверхностно, но содержат весь
необходимый метриал.


Читать дальше →
Total votes 50: ↑47 and ↓3+44
Comments163

Интерактивная карта клиентов — Apache Spark Streaming и Яндекс.Карты

Reading time6 min
Views17K
Бигдата напирает. Бизнесу уже недостаточно уметь обрабатывать ночью накопленные за день данные и принимать решение с задержкой в сутки. Хотят, чтобы система анализировала данные в режиме онлайн и реагировала быстро на:
  • изменение котировок
  • действия пользователей в онлайн-игре
  • отображала агрегированную информацию из соцсетей в различных проекциях

и т.д. Если вы так не умеете, то смузи уже не нальют.

Читать дальше →
Total votes 14: ↑11 and ↓3+8
Comments18

Apache Spark в «боевых» проектах — опыт выживания

Reading time12 min
Views25K
Предлагаем вашему вниманию материалы по мотивам выступления Александра Сербула на конференции BigData Conference. Я, как автор и докладчик, текст немного отредактировал и добавил современных мыслей и актуальных проблем, поэтому надеюсь пост принесет вам как дополнительные практические полезные знания в отрасли, так и пищу для размышлений — куда податься со своими знаниями. Итак — в бой!
Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments39

Проектирование в PostgreSQL документо-ориентированного API: Комплексные запросы (Часть 4)

Reading time6 min
Views6.6K
Хранение документов в Postgres немного проще, теперь у нас есть серьезные процедуры сохранения, возможность запускать полнотекстовый поиск, и некоторые простые процедуры поиска и фильтрации.

Это только половина истории, конечно же. Рудиментарные поиски могут служить нуждам приложения, но они никогда не будут работать в долгой перспективе, когда нам надо будет задавать более глубокие вопросы.
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments0

Palantir 101. Что позволено знать простым смертным о второй по крутоcти частной компании в Кремниевой Долине

Reading time13 min
Views80K


(За перевод спасибо Алексею Ворсину)

Доброе утро и добро пожаловать на GovCon7. Меня зовут Сод Абдулли и я ведущий инженер по внедрению Palantir Technologies и это Palantir 101. Я хотел бы в ближайшие полчаса или сорок пять минут рассказать о том что это, кто мы, что такое Palantir, и что он делает для организаций, с которыми мы работаем, а также, ближе к концу мероприятия, мы проведем небольшую презентацию.

Прежде чем перейти ко всему этому, я хочу начать с пары историй, которые должны пролить свет на то, что мы и Palantir, думаем о проблеме анализа в мире Big Data.



Первая история, — это история о шахматах.

Многие из вас знают, что в 1997 IBM создали суперкомпьютер Deep Blue, который одолел Гарри Каспарова, на тот момент, бывшего лучшим шахматистом в мире. Сейчас в простой мобильник могут быть установлены шахматы, играющие на турнирном уровне, и вопрос о том, кто сильнее в шахматах, человек или компьютер, уже не актуален.

Новый интересный вопрос: «Что будет, если человек и компьютер будут играть в шахматы вместе, как команда?»

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

Эти силы сочетаемы и команда человек/компьютер способна победить и команды сильнейших игроков и объединения сильнейших суперкомпьютеров.
Читать дальше →
Total votes 47: ↑43 and ↓4+39
Comments33

Проектирование в PostgreSQL документо-ориентированного API: Полнотекстовый поиск и сохранение многих документов(Часть 2)

Reading time5 min
Views10K
В первой части этой серии статей, я создал хорошую функцию сохранения, равно как и другую функцию, позволяющую создавать изменяемые документо-ориентированные таблицы на лету. Они работают исправно и делают именно то, что надо, но мы можем сделать еще многое. Особенно: я хочу полнотекстовый поиск, индексируемый на лету и сохранение многих документов внутри транзакции.

Давайте сделаем это.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments0

Проектирование в PostgreSQL документо-ориентированного API (Часть 1)

Reading time5 min
Views18K
Данная статья является переводом, оригинальная статья находится вот здесь, автор Rob Conery.

Postgres, как многие знают, поддерживает JSON как тип хранения данных, а с выходом 9.4, Postgres теперь поддерживает хранение JSON в виде jsonb — бинарного формата.

Это прекрасные новости для тех, кто хочет шагнуть дальше простого «хранения JSON как текста». jsonb теперь поддерживает индексирование с использованием GIN индекса, а также имеет специальный оператор запросов, который позволяет получить преимущества GIN индекса.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments4

Information

Rating
Does not participate
Registered
Activity