Страницы

понедельник, 30 декабря 2013 г.

Как визуализировать информацию об изменениях в Google Drive.

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

вторник, 24 декабря 2013 г.

Как сохранить информацию об изменениях в Google Drive.

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

воскресенье, 22 декабря 2013 г.

Управление потоком выполнения в Node.js.

В завершении предыдущего поста по теме я обратил внимание на асинхронность выполнения запросов, в связи с чем признался в лукавстве. На этот раз обещаю исправиться :). Рассмотрим тему управления потоком выполнения в Node.js: последовательный и параллельный варианты, на примере созданного ранее кода.

пятница, 20 декабря 2013 г.

GAS UI Service. Из одного виджета в другой.

Недавно ко мне обратились с вопросом по Google Apps Script: как получить информацию из одного виджета и записать в другой. Настоящим постом хочу прояснить ситуацию с обработкой событий виджетов UI Service на сервере. По-моему следующий пример наглядно демонстрирует предмет, а исходный код с комментариями не требует дополнительных пояснений.

понедельник, 16 декабря 2013 г.

Server side jQuery. Парсим HTML. Домашнее задание.

Похоже пост об использовании Node.js модуля cheerio не нашел понимания, поэтому я решил выложить свое решение "домашнего задания", озвученного в завершении предыдущего поста по теме. Напомню задачу: к ссылке на профиль автора добавить его аватар. Для решения напишем соответствующую функцию + отредактируем существующий метод построения кэша.

воскресенье, 15 декабря 2013 г.

WebSocket как инструмент удаленного администрирования.

Сегодня познакомился с одной интересной разработкой по имени websocketd, и первое, что пришло в голову после знакомства - использовать эту замечательную вещь совместно с Windows Script Host в качестве инструмента удаленного выполнения кода. Расскажу как собрать такой велосипед за 15 минут. Рассмотрим реализацию для VBScript и JScript. В качестве клиента нам потребуется браузер, который поддерживает протокол WebSocket. Системным администраторам посвящается...

пятница, 13 декабря 2013 г.

Как настроить уведомления об изменениях в Google Drive. Просто.

Columbia Pictures не представляет..., а я тем более никак не мог предположить насколько востребованным будет код, решающий вопрос уведомления об изменениях в облачном хранилище данных Google Диск. Вчера обновил код GDriveDog.gs и README.md в репозитории, в связи с чем хочу прояснить следующее: постоянно обновлять код во всех постах у меня нет никакого желания, свежий код только на GitHub. По вопросам применения смотрим видео:

суббота, 7 декабря 2013 г.

Server side jQuery. Парсим HTML.

Кому приходилось парсить HTML, сможет оценить Node.js модуль cheerio. Такая серверная реализация jQuery, удобный инструмент. Расскажу как его можно использовать. В качестве примера вытащим имена всех авторов сайта VR-Online, опубликованных на главной странице. Думаю они не против :). Исхожу из того, что Node.js и npm у вас уже установлены.

пятница, 6 декабря 2013 г.

COM-сервер для HTA. Comeback.

HTA (HTML Application) - приложения для Internet Explorer. HTA объединяет в себе все возможности Internet Explorer и отсутствие ограничений безопасности браузера. DAHTACOM - COM-сервер для HTA. На днях случайно обнаружил проект в архиве, решил реанимировать. Возможно кому-нибудь будет полезен. DAHTACOM позволяет HTML-приложению использовать недоступные для HTA возможности:

вторник, 3 декабря 2013 г.

Как настроить уведомления об изменениях в Google Drive #2.

Реинкарнация скрипта, опубликованного в одном из предыдущих постов. Хранение данных в свойствах скрипта - не самая лучшая идея, о чем недвусмысленно сказано в разделе "ограничения" официальной документации, поэтому в текущем перерождении кода в качестве хранилища данных я решил использовать ScriptDB. Напомню, что первоначальный вариант кода был ответом на вопрос одного из сообществ Google+ и являлся скорее вектором, чем готовым решением. Насколько текущий вариант ближе к решению - судить вам.

среда, 20 ноября 2013 г.

TypeScript. Running ImageBoard sample.

Недавно я начал интересоваться языком TypeScript. В свое время обращал внимание на Dart и CoffeeScript - почитал и забыл. Такая же история произошла бы и в этот раз, если бы не Douglas Crockford, вернее его пост в Google+. Определенно буду применять язык TypeScript в процессе разработки. Сегодня расскажу о том, как запустить ImageBoard - приложение, реализованное с помощью TypeScript, для чего нам также потребуются Node.js и MongoDB.

среда, 30 октября 2013 г.

Bootstrap 3 Modal Ajax Contact Form.

Как сделать модальную форму обратной связи. Моя версия. На фронтэнде используем Bootstrap 3 + jQuery. Похожим образом реализовал в одном проекте. Для бэкэнда напишем скрипт на Google Apps Script. Возрастная группа потребителей следующего далее материала - 7+, в смысле изложено более чем доступно. Попытайтесь повторить это дома.

суббота, 12 октября 2013 г.

Node.js + mongoDB + mongoose. Быстрый старт в Windows.

Обойдемся без прелюдий. Качаем mongoDB. Распакуем архив, переобзовем распакованный каталог, буду оригинален - "d:\mongodb\" :). Создадим каталог для хранения данных, у меня "d:\mongodb\data\". Для того, чтобы не забивать руками путь к каталогу каждый раз при запуске, в каталоге с бинарниками, в моем случае "d:\mongodb\bin\" создадим файл по имени start.bat следующего содержания:

воскресенье, 6 октября 2013 г.

Клонируем объекты в Node.js.

Люблю я изобретать велосипеды. Не далее чем на прошлой неделе потратил немало времени на то, чтобы построить нужную структуру данных на Node.js. Убедился, что найти информацию на подобный предмет в сети непросто, поэтому спешу сохранить кое-какой экспириенс. Большинство изложенных примеров можно воспроизвести в консоли браузера (Chrome, Firefox, за прочие не ручаюсь).

воскресенье, 22 сентября 2013 г.

Yii CAdvancedArBehavior bug.

На днях делал админку одного проекта, замутил на PHP + Yii. Модель данных MySQL содержит связи многие-ко-многим (собственно автор модели тоже я), поэтому редактирование контента реализовал с помощью расширения CAdvancedArBehavior. В процессе реализации обнаружил один баг в расширении, о чем поведу речь ниже. По окончании статьи осиливший путь освоит пару приемов работы с yii framework.

вторник, 10 сентября 2013 г.

Сервис отчетов на Node.js + Google Charts.

Покуда есть на свете манагеры, тема визуализации данных будет актуальна. Аборигенам - бусы, манагерам - картинки. Если вам прилетела задача нарисовать какую-нибудь диаграмму по мотивам деятельности вашей компании, будьте уверены, что она прилетит еще не раз, поэтому предлагаю сразу приготовить сервис на Node.js c использованием Google Charts. Результат будет выглядеть примерно так:

воскресенье, 25 августа 2013 г.

Windows evermore.

Очередная вариация на тему forever для Windows. Карты на стол: открываю сакральную тайну постоянной подписки на события WMI, да простят меня посвященные :). Если серьезно, убежден, что в приведенном ниже коде каждый разработчик, заинтересованный в применении постоянной подписки найдет для себя что-нибудь вкусное.

воскресенье, 18 августа 2013 г.

Windows forever.

Нет, я не фанат Windows. На мой вкус без разницы какую ось использовать, главное чтобы она позволяла решать поставленные задачи. А заголовок холиварный получился :). Речь пойдет о модуле forever, который я использую для запуска сервисов на Node.js, а также о том, как написать подобный "forever" для Windows. Освещал тему прежде, но в этот раз иной подход - напишем консольный скрипт на примере forever.

среда, 14 августа 2013 г.

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

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

суббота, 10 августа 2013 г.

Hello, Chrome Packaged Apps!

В силу не зависящих от меня обстоятельств отсутствовал в сетях несколько дней, после чего полез читать новости - вдруг что-нибудь вкусное пропустил? Обнаружил ссылку на Chrome App Launcher, после перехода по которой в панели задач появилась новая иконка. Нажимаю... Совсем забыл, что планировал познакомиться c Chrome Packaged Apps поближе, но все, что до сих пор совершил в этом направлении - Hello, World! Расскажу, как я готовил это традиционное блюдо.

Как подружить Node.js с GAS ContentService.

С помощью сервиса Google Apps Script ContentService удобно получать данные "снаружи". Для этого достаточно написать скрипт, который будет слушать запросы и в ответ раздавать соответствующий контент, после чего этот самый скрипт опубликовать. Таким образом любое приложение сможет получить необходимые данные путем отправки запроса в адрес развернутого скрипта. Как оказалось на Node.js эта тривиальная операция требует дополнительных усилий.

воскресенье, 28 июля 2013 г.

Hello, Jade!

Jade - движок рендеринга шаблонов Node.js. Для примера напишем простое веб-приложение на фреймворке express. To begin with не мешало бы настроить текстовый редактор на использование двух пробелов в качестве табуляции, так как jade использует отступы в два пробела для определения местонахождения HTML-элементов.

воскресенье, 21 июля 2013 г.

Джентельменский набор веб-разработчика.

Недавно я подробно в картинках рассказал как подготовить к использованию Node.js и Redis. В этот раз предлагаю установить среду разработки. Последнее время мне все чаще приходится иметь дело с Node.js и PHP, и в качестве IDE я выбрал NetBeans. Операционная система - Ubuntu. Разумеется рабочее окружение у каждого свое - как говорится "на вкус и цвет", поэтому дальнейшее повествование не претендует на статус догмата.

среда, 17 июля 2013 г.

PHP urlencode на JavaScript.

Сегодня тестировал один API. Там такая хитрая авторизация: берем массив параметров запроса в виде "ключ=значение", сортируем по алфавиту, собираем запрос, добавляем пару "password=пароль", получаем md5 от полученной строки и добавляем к запросу подпись в виде "signature=md5". Я решал на Node.js, а в документации к API приведен пример функции создания подписи на PHP. В примере значения параметров кодируются с помощью функции urlencode.

среда, 10 июля 2013 г.

Node.js + Redis. В очередь ...

Допустим на сервере нужно выполнить какую-нибудь дорогостоящую операцию, а выполнять ее непосредственно в ответ на запрос пользователя, особенно если таких запросов тысяч несколько в секунду - не хотелось бы. Предлагаю построить запросы в очередь и грузить апельсины бочками :). Приведенный ниже код решает вопрос каждые 20 секунд партиями по 100 штук.

Самая вкусная музыка 2013

Что может быть лучше старых добрых хитов в интерпретации новых злых диджеев.
Наушники на голову и arbeiten :).

воскресенье, 7 июля 2013 г.

Node.js + Redis. Пишем шустрое веб-приложение. Кодинг.

Продолжаем готовить виджет погоды. Google Weather API благополучно умер, поэтому для получения данных предлагаю использовать OpenWeatherMap API - бесплатно, без регистрации, раздает данные в формате JSON, в общем мне сервис понравился.

суббота, 6 июля 2013 г.

Node.js + Redis. Пишем шустрое веб-приложение. Вступление.

В процессе изложения предлагаю приготовить виджет погоды. Для приготовления нам понадобятся следующие ингредиенты: Node.js, Redis, а также модули: express, mustache, node_redis, node-request. Во вступительной части рассмотрим установку необходимых компонентов в MS Windows и Linux (на примере Ubuntu).

суббота, 29 июня 2013 г.

Как настроить уведомления об изменениях в Google Drive.

Изначально вопрос выглядел так: "помогите пожалуйста настроить уведомления на e-mail об изменениях в папках", и прозвучал в теме "Уголок взаимопомощи" одного из сообществ Google+. Вопрос интересный, для решения пишем веб-приложение, которое сможет следить за изменениями не только "в папках", но и на всем Диске Google, для чего используем Google Apps Script.

В моей смерти прошу винить...

Не пугайтесь, I'm still alive, уходить пока не собираюсь (завтра улицу не в том месте перейду - и ... :)). В статье речь пойдет о завещании, или страховке. Если Вы когда-нибудь почувствуете, что над Вашей головой занесен меч, и у Вас есть что сказать после смерти (или ареста, например) , с помощью сервисов Google можно соорудить следующую страховку: если в течение недели мы не заходим по известной только нам ссылке, то мы предоставляем доступ к нашему завещанию определенному заранее кругу лиц.

пятница, 21 июня 2013 г.

Как получить пароль из PSCredential.

И сохранить его в файл для дальнейшего использования. Зачем это нужно? Хотя бы для того, чтобы не вводить пароль каждый раз руками. Я бы предпочел файл формата CSV. И желательно зашифровать пароль с помощью надежного криптографического алгоритма. Для начала сохраним имя пользователя и пароль в соответствующие поля экземпляра объекта PSCredential.

среда, 19 июня 2013 г.

Wake on LAN на PowerShell.

Wake on LAN (WOL) - технология, позволяющая удаленно включить компьютер путем отправки на его сетевой адаптер специально сформированного пакета данных состоящего из 6 байт FF и его собственного MAC - адреса, повторенного 16 раз (так называемого Magic Packet — "волшебного пакета"). Приготовим решение, использующее WOL, на PowerShell.

воскресенье, 9 июня 2013 г.

Как скрыть консоль PowerShell.

Иногда возникает необходимость отобразить пользовательский интерфейс и скрыть консоль. Следующий код решает вопрос используя механизм вызова неуправляемого кода для вызова функций библиотеки User32.dll, включенной в стандартную установку любой современной операционной системы Windows.

суббота, 8 июня 2013 г.

Пишем WinLocker на PowerShell.

Целью статьи не является создание вредоносного приложения. Полученный в результате код можно использовать в качестве примера создания GUI с помощью PowerShell. Пару лет назад я уже освещал тему создания подобного кода с помощью VBScript, правда тогда не обошлось без "костыля" в виде ActiveX DLL. В этот раз есть возможность решить вопрос "нативными" средствами.

среда, 5 июня 2013 г.

Как добавить кнопку действий в e-mail сообщение.

Кнопка действий GMail - новая полезняшка от Google, представленная на Google I/O 2013. Позволяет совершить определенные действия в GMail не открывая полученный пользователем e-mail, а также без необходимости перехода по ссылке на ресурс, с которого e-mail был отправлен. Короче - без лишних движений.

воскресенье, 2 июня 2013 г.

Пишем KeyLogger на PowerShell и JavaScript.

Давным−давно, в далекой, далекой галактике... ко мне обратился товарищ с просьбой поломать icq и e-mail его супруги. Дело было очень личное, я посоветовал ему установить какого-нибудь клавиатурного шпиона и он решил свой вопрос с помощью одного из экземпляров упомянутого типа программ. Недавно похожий вопрос появился на одном посещаемом мною ресурсе и я понял, что теперь есть возможность его решить с помощью скрипта. Let's get the party started :).

пятница, 24 мая 2013 г.

Понимая Node.

Изложение моего понимания нескольких основных принципов платформы Node.js на простых примерах. Понимание - это процесс. В моем случае процесс сопровождается чтением "Professional Node.js. Building Javascript Based Scalable Software" by Pedro Teixeira.

вторник, 21 мая 2013 г.

HTML5 Canvas. Clip.

Пара примеров использования метода двухмерного контекста холста clip(): "Упражнение с циркулем" - имитация начертания циркулем цветка (наверняка каждый хотя бы один раз пробовал в школе) и "Солнечное затмение" - имитация солнечного затмения (+ музыкальное сопровождение с использованием тэга <audio>).

воскресенье, 19 мая 2013 г.

PowerShell. Out-GridView.

Out-GridView - полезный командлет. Пересылает результаты выполнения команды в окно интерактивной таблицы. На мой взгляд его полезность заключается в функциональности этой самой таблицы и простоте использования. Для знакомства с командлетом предлагаю простенький скрипт:

воскресенье, 12 мая 2013 г.

Node.js. Пишем простой веб-сервер.

Полученный в результате сервер будет раздавать содержимое заданного файла в формате text/html на заданный порт. Очень упрощенный вариант, без каркасов. Требования: установленная платформа Node.js.

суббота, 11 мая 2013 г.

пятница, 10 мая 2013 г.

Как добавить кнопку сохранения файла на Google Drive на веб-сайт.

Кнопка "Save to Drive" - новая полезняшка от Google, похожая на кнопку "+1". Позволяет сохранять файлы с произвольного URL веб-сайта сразу в корневой каталог пользователя Google Drive. Работает на транспорте CORS со всеми сопутствующими особенностями.

Как добавить панорамные фото на веб-сайт.

Photo Spheres - интересная штука. Как это можно использовать на веб-сайте? Вот так. Для начала необходимо подцепить библиотеку plusone.js. Чтобы добавить вьювер панорамных фото используем элемент g:panoembed. Google+ API превратит элемент в интерактивный вьювер панорамных фото после выполнения следующей функции:

четверг, 9 мая 2013 г.

Решение "Визитка".

Решение позволяет создать довольно привлекательный сайт-визитку. Состоит из двух таблиц на Google Drive, двух скриптов Google Apps Script, Google формы, а также HTML/CSS/JS файлов, размещенных на Google Drive. Для начала работы достаточно ввести данные в таблицу. Хочешь такую же, но с перламутровыми пуговицами?

среда, 1 мая 2013 г.

UI/UX + Google Apps Script.

Не отпускает тема UI/UX. Предлагаю проверить, насколько удобно работать с полученным в предыдущей статье интерфейсом в разрезе использования данных. В качестве источника данных используем таблицу на Google Drive. Раздавать данные будем с помощью Content Service.

вторник, 30 апреля 2013 г.

UI Developer. Тестовое решение.

На днях мне предложили попробовать свои силы в качестве разработчика интерфейсов. По правилам боя для начала необходимо было выполнить тестовое задание. Ограничений по времени нет. После первого знакомства с заданием у меня сложилось впечатление, что я решу вопрос за 4-5 часов. Плюс ефрейторский зазор итого максимум день, о чем я торжественно сообщил рекрутеру. Epic fail #1...

воскресенье, 21 апреля 2013 г.

Как добавить комментарии Google+ на любой веб-сайт.

На текущий момент этот виджет доступен только для блогов на платформе Blogger. Но есть "неофициальный" способ использования комментариев Google+ на любом веб-сайте. Для этого достаточно добавить на целевую страничку следующий код:

вторник, 16 апреля 2013 г.

Решение "График работы".


Решение для размещения на сайте графика работы.
Состоит из скрипта Google Apps Script, таблицы на Google Drive и HTML-страницы, содержащей клиентский код на JavaScript.
Расписание текущего дня недели выделяется динамически в зависимости от времени работы и текущего времени и обновляется один раз в минуту.

среда, 10 апреля 2013 г.

ContentService vs Fusion Tables API. Работаем с данными.

Использовать Google Cloud SQL или Google Cloud Storage для хранения данных нет ни малейшего желания - Pricing. Остается работать с тем, что доступно (пока) - таблицы. Для визуализации хотелось бы использовать HtmlService, но скорость сервиса, да и реализация в целом, оставляют желать лучшего (на все мои вопросы ребята из Google ответили однозначно - Caja...). Перманентное напоминание "This application was created by another user, not by Google" меня тоже не особенно впечатляет. Не проблема спрятать в каком-нибудь iframe-e, но скорость HtmlService... Поэтому предлагаю кушать данные непосредственно из HTML. И здесь у меня два варианта: ContentService и Fusion Tables API.