суббота, 7 января 2017 г.

Парсинг книги в Safari books

Прежде чем показать как можно спарсить книгу с Safari books , просто предупрежу что это не очень правильно " не я такой , жизнь такая ".
Если вам понравилась какая нибудь книга в Safari books и у вас нет средств ее купить , то в таком случае ее можно прочесть за 10 дней если получиться. Потому что такой триальный период на  Safari books. Если же нет возможности прочесть книгу за 10 дней ее можно спарсить с помощью руби. Вот пример программы в 21 строку как это можно сделать.



понедельник, 20 июня 2016 г.

Кратко о SaSS

Закончив курс Sass на codeacademy.
Я решил сделать простое описание возможностей  Sass с примерами.

Типы данных Sass
Strings
Lists
Maps
Colors

Логические операции

добавление +
вычитание -
умножение *
деление /
модуль от числа %.

Пример:
$width: 250px;

height: $width/6;
line-height: $width/6;


воскресенье, 19 июня 2016 г.

Обработка xml с помощью AngularJS

Для обработки xml в angularJs доступны 2 библиотеки на Angular-xml и x2js. В этом примере я покажу как можно быстро вывести xml feed у себя на сайте. Пример нашего xml файла.


Давайте установим эти две библиотеки с помощью bower. Создадим bower.json и внесем эти данные.




среда, 1 июня 2016 г.

Используем Wit.ai для создания умного Messanger bot


Если вы захотите создать бота для  Messanger, у вас не будет удобных команд и клавиатур как в Телеграм. В таком случае вам прийдеться определять на заранее определенные сообщения созданные вручную ответы или воспользоваться wit.ai для того что бы можно было определять сущность в контексте сообщений и создавать алгоритм разговора.

Wit.ai это открытая и бесплатная платформа которая помогает создавать приложения для распознавания голоса и текста. С помощью этой платформ можно определить контекст или семантику введенного и сказанного предложения. Wit предоставляет API и Панель управления для общей настройки диалогов и сущностей.

воскресенье, 29 мая 2016 г.

Создаем API Wrapper в Node js

Если вам нужно использовать API в NodeJS одно из сервисов и не хочется каждый раз писать один и тот же запрос только с разными параметрами много раз. В этом случае лучше написать отдельный пакет, как это сделать можно прочитать в этом посте.
Для примера мы возьмем EasyWay API. Это сервис для отслеживания актуальных данных о маршрутах  и маршрутках доступный в нескольких странах.

Писать наш пакет буду в c9.io. Но вы можете выбрать любой другой вариант в котором есть возможность создавать и выполнять NodeJS проекты.

Создадим package.json и заполним нужными данными.

{
  "name": "node_eway",
  "version": "0.0.1",
  "description": "Api Wraper for Eway.",
  "main": "index.js",
  "repository": "",
  "author": "Edik Goryach <gorachedik96@gmail.com>",
  "dependencies": {
    "urlencode": "latest",
    "request": "latest"
  }
}

Теперь подключим наши пакеты и создадим конструктор для нашего обьекта в index.js

var request = require('request');
var urlencode = require('urlencode');

const APIURL = 'https://api.eway.in.ua/?';

//создание объекта
var Eway = function (login, pass) {
this.login = login;
this.pass = pass;


Напишем первый метод для нашего объекта:

Eway.prototype.get = function (method, params, callback){
  request({
  method: 'GET',
  url: APIURL + 'login=' + this.login +'&password=' + this.pass + '&function=' + method +'&'  + params,
  headers: {
    'Content-Type': 'application/json',
  }
}, function (err, response, body) {
   if (err) {
    callback('err');
    return console.error('Error:', err);
  }

  callback(JSON.parse(body))
});
}

Создадим test.js и попробуем вызвать конструктор и  наш метод
//подключаем index.js
var Eway = require('./index.js');

var EwayLib = new Lafka('Your login', 'Your pass');

EwayLib.get('cities.GetRoutesList', 'city=lviv', function(data) {
   console.log(data);
 return data;
});

Вот таким способом можно организовать обертку для Api  с помощью callback.

воскресенье, 22 мая 2016 г.

Deep Learning для чат ботов (Часть 1)


Чат ботов также называют диалоговыми агентами или диалоговые системами, сейчас это очень горячая тема. Microsoft сделала большую ставку на чат ботов, и после этого такие компании как Facebook (M), Apple (Siri), Google, WeChat, and Slack. Это новая волна стартапов попытается изменить для пользователей взаимодействие с сервисами с помощью построения пользовательских приложений подобных Operator и x.ai, бот платформами как Chatfuel, и бот библиотеками как Howdy’s Botkit. Также Microsoft недавно предоставила свой Бот фреймворк.

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

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

СИСТЕМАТИКА МОДЕЛЕЙ

Поисково ориентированная vs. Генеративная модель

Поисково ориентированную модель (проще)  используют как хранилище стандартных ответов часть которых эвристика которая выбирает ответ на основе введенного текста и его контекста. Эвристикой может быть простое выражение на основе некоторых заданных правил, или как совокупность классификаторов Машиного Обучения. Эти системы не генерируют новый текст, они только выбирают ответ из определенных значений.

Генеративная модель (сложнее) не полагается на предопределенные ответы. Эта модель генерирует новые ответы с нуля. Генеративная модель обычного базируется на методах Машинного Обучения, но вместо перевода из одного языка к другому, она переводит из ввода в вывод(ответ).



Обе модели имеют очевидные плюсы и минусы. Благодаря хранилищу вручную созданных ответов , поисковая модель не будет делать грамматических ошибок. Однако они могут быть неспособны справляться с неизвестными случаями для которых нет подходящих предопределенных ответов. По некоторым причинам , эти модели не могут ссылаться на пред идущие контекстные информационные сущности  такие как имена упомянутые раньше в диалоге. Генеративная модель "умнее". Она может ссылаться назад к сущностям при вводе и давать понятие того о чем говорят люди. Хотя , эта модель сложно подается обучению, она вероятней всего будет делать грамматические ошибки(особенно при длинным предложениях ), и как правило нуждается в большом количестве тренировочной информации.

воскресенье, 27 марта 2016 г.

Руководство по Firebase: создаем приложения с помощью Firebase



Firebase это базы данных в режиме реального времени с которой вы можете передавать данные непосредственно с клиента. Когда вы сохраняете JSON данные на Firebase, изменения отправляются мгновенно для всех клиентов, веб и мобильных устройств, который запросил их. С встроенным статическим файл хостингом, пользовательским управлением и правилами безопасности, Firebase поможет вам построить современные приложения быстрее, чем когда-либо.

Это руководство поможет вам понять некоторые из ключевых концепций Firebase и его API. Мы  создадим простой инструмент в режиме реального времени для аналитики , который будет отображать метрики нашего сайта и то что наши посетители просматривали в реальном времени. Весь наш код на JavaScript будет работать только в веб-браузере, но Firebase поддерживает множество других языков и сред, в том числе Node.js, Objective-C (IOS / OS X), Java (Android). Она также обеспечивает REST API, так что вы можете читать и записывать данные с любого сервера, даже если у вас нет официальной поддержки SDK. Мы будем использовать JQuery для обновления DOM в нашей аналитической инструментальной панели.