$ grep -r Tag: «javascript»

-rw-r--r-- 1.8K 6 апр. 2016 · EF30922 · ~1 мин

Простой console.log с выводом файла и номера строки в Node.js

node.js javascript полезное шпаргалки

Пока кодю на Node.js нужно постоянно что-то выводить в консоль. Например, ошибки. Но для большей информативности удобнее знать, где именно ошибка выводится. Тем более, что пока кодил под iOS такой удобный макрос всегда был под рукой, а с Node.js пришлось погуглить и поковыряться, т.к. многие примеры со Stack Overflow просто падали на последней версии Node.js 5.10.0. Падали из-за использования в них Error.captureStackTrace(err, arguments.callee), а сейчас уже нужно использовать NFE.

В итоге сделал то, что хотел. Оставлю тут как шпаргалку.

npm install colors --save

Файл logger.js:

'use strict';

let colors = require('colors');
colors.enabled = true;

exports.p = function logger(somethingForPrint) {
    somethingForPrint = somethingForPrint || '';
    const originalPrepareStackTrace = Error.prepareStackTrace;

    Error.prepareStackTrace = (error, stack) => { return stack; };

    let e = new Error;
    Error.captureStackTrace(e, logger);

    const stack = e.stack;
    const filename = stack[0].getFileName().split('/').reverse()[0];
    const trace = filename + ':' + stack[0].getLineNumber() + " " + colors.bold.black('%s') + "\n";

    Error.prepareStackTrace = originalPrepareStackTrace;

    console.log(trace, somethingForPrint);
}; 

Использовать:

const logger = require('../utils/logger');
logger.p('something happened');
// file.js:401 something happened 
[↵] открыть пост prostoj-console-log-s-vyvodom-fajla-i-nomera-stroki-v-node-js.md
-rw-r--r-- 1.6K 12 янв. 2016 · 2701E59 · ~1 мин

Бот для Telegram App Store Release Informer

app store release informer javascript node.js telegram

Бот для Telegram App Store Release Informer

Вынашивал тут идейку и наконец воплотил. У Apple есть REST API для поиска в iTunes. Я сделал бота для Telegram, который позволяет подписываться на обновления приложений. Когда выходит новая версия - он пишет тебе об этом в Telegram будь то личный чат или групповой. Будем теперь на работе оперативно все узнавать, когда новые версии наших приложений выходят в App Store.

Писал на Node.js как умею. Главное - работает. Хотел сделать и для андроидщиков, но, оказывается, у Google Play нет API. Совсем O_O.

Попробовать бота: https://telegram.me/ReleaseInformerBot (при старте просто набрать /help)

Если кто-то захочет что-то дописать исходники на Github: https://github.com/makoni/ReleaseInformerBot

Правда, кроме Node.js там используется как база данный мой любимый CouchDB. Но, чтобы запустить его на Mac, просто качаешь бинарник и готово (ну, и БД + виды надо создать).

[↵] открыть пост bot-dlya-telegram-app-store-release-informer.md
-rw-r--r-- 2.5K 23 июля 2015 · BB014D8 · ~2 мин

Пара слов про Parse.com

parse.com javascript rest шпаргалки кодировка

Ковырял тут кое-что на Parse. В двух словах - штука очень крутая, есть крутые SDK для разных платформ, в том числе можно на Javascript юзать их как на фронт-энде, так и на бэкенде. Можно прям у них в облаке написать на node.js его, даже можно Express подключить, если нужно. Но есть два но:

  1. Когда ты создаёшь отложенный push notification с расписанием - ты указываешь время отправки. Так вот через Javascript SDK он выставляет его по GMT и всё. Всем пуш будет отправлен по GMT вне зависимости от их часовой зоны, просто по расписанию. Указать, что ты хочешь отправить push всем, например, в 19:00 местного времени, чтобы клиент в любом часовом поясе получил сообщение в свои 19:00, в Javascript SDK ты не можешь. Этому багу уже 2 года. Вместо этого, тебе предлагается использовать из Javascript их REST API (sic!).
  2. Окей, ты используешь REST API, благо это можно из того же Javascript SDK удобно сделать, и всё работает как надо, пуши планируются по местному времени, но... В тексте заголовка из сообщения вырезаются все русские буквы. Во всех примерах в документации к REST API просят указать заголовок запроса "Content-Type: application/json", вот только этого мало, чтобы кириллица и прочие символы не из латиницы не вырезались, оказывается, нужно указать кодировку в заголовке: "Content-Type: application/json; charset=utf-8". Чёрт его знает, в какой кодировке они ожидают по умолчанию данные, выкатывая международный сервис, но тем не менее.

А в остальное, конечно, сервис очень классный.

[↵] открыть пост para-slov-pro-parse-com.md
-rw-r--r-- 1019B 28 янв. 2015 · CE984C3 · ~1 мин

Select like a Boss для Safari

safari javascript расширения select like a boss

Select like a Boss для Safari

Проблема выделения текста внутри ссылки на движках Webkit/Blink уже существует давно. Лично для меня. Как-то я пропустил, что она может быть решена с помощью расширения для браузера. Нашёл такое расширение, называется Select like a Boss. Но оно только для Firefox, Opera (Blink) и Chrome. Т.к. на гитхабе были найдены исходники расширения для Chrome - я просто взял js-код и запаковал его в расширение для Safari. Теперь я счастлив и могу нормально выделять текст внутри ссылок :)

Исходники + ссылка на скачивание: GitHub.

[↵] открыть пост select-like-a-boss-dlya-safari.md
-rw-r--r-- 2.3K 18 сент. 2014 · 6ECD816 · ~1 мин

Расширение для Safari для Funkysouls.com

safari javascript расширения funky-play

Расширение для Safari для Funkysouls.com

Я периодически захожу на Funkysouls в поисках новой музыки. Пролистываю несколько первых страниц, смотрю по тэгам - может ли мне это быть интересно, после чего копирую название исполнителя, иду в ВК или на Яндекс.Музыку, вставляю и слушаю там пару трэков. Если мне нравится - тогда только пробую заиметь альбом.

Надоело мне копипастить и я написал расширение для Safari (давно хотел освоить).

Расширение делает всего 2 вещи:

  1. Когда заходишь на Funkysouls - у каждого релиза добавляется 2 кнопки Play, как видно на скрине. Красная ведёт на поиск по исполнителю на Яндекс.Музыку, синяя ведёт на поиск по исполнителю в ВК. Не надо больше копипастить. 2 клика - и ты слушаешь.
  2. Разошёлся слегка, пока писал, и добавил панельку в браузер. Расширение дёргает раз в 5 минут RSS сайта и выводит на панельке 3 последних релиза. Можно отслеживать их не заходя на сайт, например. Естественно, если нажать на название релиза на панельке, откроется новая вкладка с его страницей на фанках.

При желании, можно взять код расширения из end.js и button.css, вставить его в Chrome в расширение Control Freak, например, и получить те же 2 кнопки Play в Chrome. В Firefox, думаю, тоже, через Greasemonkey.

Исходники на GitHub.

Установить расширение.

[↵] открыть пост rasshirenie-dlya-safari-dlya-funkysouls-com.md
-rw-r--r-- 8.5K 16 сент. 2014 · A3123D2 · ~4 мин

HTML5 видео как фон страницы

html5 javascript css3 video

HTML5 видео как фон страницы

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

[↵] открыть пост html5-video-kak-fon-stranitsy.md
-rw-r--r-- 1.7K 28 марта 2012 · 64007C0 · ~1 мин

Скрипт для фиксирования блока при скролле

jQuery Sticky Scroller javascript скрипты полезное

Давно хотел такую штуку сделать, чтобы при скролле страницы какой-то блок скроллился вместе со страницей до определённого момента, а потом прилипал. Сегодня нашёл такой плагин под названием jQuery Sticky Scroller

Скачать его можно тут.

Подключается он довольно просто:

var scroller = new StickyScroller("#menu",
{
    start: 270,
    end: 50800,
    interval: 200,
    range: 100,
    margin: 0
});

Собственно, по названию параметра понятно, что когда скролл уходит за 270 пикселей от верхней границы страницы - элемент #menu фиксируется на странице, то есть получает свойство CSS position: fixed;. Параметр end отвечает за нижнюю границу отслеживания скролла, на случай, если фиксированным элемент должен быть не всегда. Параметр margin задаёт то - с каким отступом от верхней границы окна браузера будет находиться элемент.

У плагина есть также несколько публичных методов, описывать их смысла не вижу, описание есть на странице плагина.

[↵] открыть пост skript-dlya-fiksirovaniya-bloka-pri-skrolle.md
-rw-r--r-- 725B 13 мая 2011 · 2C445DF · ~1 мин

Простой онлайн TimeStamp конвертер

php javascript timestamp unix скрипты полезное

По работе периодически приходится смотреть какие-то данные из базы. Время мы в основном храним в TimeStamp (количество секунд, прошедших с сотворения мира Unix, то есть 1 января 1970 года).

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

Enjoy. Online TimeStamp Converter

[↵] открыть пост prostoy-online-timestamp-converter.md
makoni@arm1:~/blog$ cd .. // ↵ ко всем постам