-rw-r--r-- 1.0K 18 апр. 2016 · E93D4A7 · ~1 мин

Лог-функция для Swift с выводом файла, метода и строки

шпаргалки swift полезное

Функция-шпаргалка для логирования в Swift:

import Foundation

/**
 Лог-функция с выводом файла, метода и строки, откуда вызывается. 
 Пример использования: DLog("привет")

 - parameter messages: тексты/объекты, которые надо вывести
 - parameter fullPath: путь до файла, который вызывается
 - parameter line: номер строки в файле
 - parameter functionName: название метода/функции вызова
*/
func DLog(messages: Any..., fullPath: String = #file, line: Int = #line, functionName: String = #function) {
     let file = NSURL.fileURLWithPath(fullPath)
     for message in messages {
          print("\(file.pathComponents!.last!):\(line) -> \(functionName) \(message)")
     }
}

// Пример:
DLog("message 1", "message 2")
// YourClass.swift:42 -> someMethod() message 1
// YourClass.swift:42 -> someMethod() message 2
[↵] открыть пост log-funktsiya-dlya-swift-s-vyvodom-fajla-metoda-i-stroki.md
-rw-r--r-- 6.6K 12 апр. 2016 · 6E14506 · ~3 мин

Впечатления от Assassin's Creed III Liberation

assassin's creed игры

Assassin's Creed III Liberation

[↵] открыть пост vpechatleniya-ot-assassin-s-creed-liberation.md
-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-- 7.3K 2 апр. 2016 · 56615E4 · ~3 мин

Впечатления от Assassin's Creed IV Black Flag

assassin's creed игры

Assassin's Creed IV Black Flag

Пару недель назад прошёл 4-ю часть.

[↵] открыть пост vpechatleniya-ot-assassin-s-creed-iv-black-flag.md
-rw-r--r-- 865B 24 марта 2016 · 75B06AF · ~1 мин

Восстановление слетевшего загрузчика GRUB на Hetzner

шпаргалки hetzner grub ubuntu linux

Второй раз за 2-3 года уже сталкиваюсь с тем, что на Hetzner на одном сервака слетает GRUB. Как следствие, после ребута сервер недоступен. Приходится идти в панель управления, в разделе Rescue включать загрузку с образа восстановления, цепляться к нему по SSH и восстанавливать загрузчик. Искать каждый раз инфу не классно, коротко после того, как подключились по ssh к системе восстановления, вводим в консоли:

mount /dev/md3 /mnt
chroot-prepare /mnt
chroot /mnt
mount -a
apt-get install grub2
grub-install /dev/sda
update-grub
exit
reboot now
[↵] открыть пост vosstanovlenie-sletevshego-zagruzchika-grub-na-hetzner.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-- 10K 6 янв. 2016 · F6B6F74 · ~4 мин

Впечатления от Assassin's Creed III

assassin's creed игры

Assassin's Creed III

Продолжаю проходить игры из серии Assassin's Creed и записывать впечатления.

[↵] открыть пост vpechatleniya-ot-assassin-s-creed-3.md
makoni@arm1:~/blog$ cd ../page-12/ // ← предыдущая cd ./page-14/ // ещё посты →