среда, 5 июля 2017 г.

Коротко о frontend performance.

Насмотрелся я как-то видео и начитался статей о performance в мире frontend и решил задокументировать кратко походы. Подробное описание можно найти в интернете или в литературе внизу. Итак мой список пунктов связанных с performance, которые можно использовать для улучшения\оценки производительности:

Производительность кода

  1. Оптимизируйте код (например HashMap вместо Array)
  2. Профайл для поиска узких мест
  3. WebWorker для ресурсоемких операций
  4. Server-side rendering
  5. PWA
  6. defer\async in HTML
  7. Разделять чтение дома и запись, например fast-dom библиотека
  8. СSS анимации выполняются на gpu в отличие от js
  9. requiestAnimationFrame
  10. will-transform
  11. dom layout (через transfomZ(0) или will-change: transform)
  12. изменение innerHtml или размера ведет к перерисовке всего документа\слоя
  13. dns-prefetch, preconnect, prefetch, pretender, preload

Производительность сборки

  1. CDN (сервер должен быть ближе к клиенту)
  2. HTTP Cache Headers
  3. WebP images
  4. WOFF2 fonts или стандартные системные
  5. Code-splittind 
  6. Tree-shaking
  7. Core js\css load immediatelly and advanced js\css on DomContentLoaded (extra on Load)
  8. Service Worker for HTTPS
  9. Brotli or Zopfli compression (+20%)
  10. js\css minification, lazy sourcemaps
  11. image minification с потерей качества
  12. icons in base64

Производительность мозга (mind tricks)

  1. Что бы разница была заметна нужна разница в 20% времени
  2. 100ms response
  3. 16ms for frame
  4. 1.25sec for interaction (3sec for 3G)
  5. Предсказывать поведение пользователя (например при hover на search можно начать подгружать результат)
  6. 14 kb for critical.css
  7. как можно быстрее перевести пользователя из пассивного ожидания в активное
  8. наприсовать сначала видимую часть, потом подгрузить все что ниже по скроллу или на другом state-route

Литература

пятница, 23 июня 2017 г.

NPM auto publish via gulp

В мире JS все как-то несколько криво и не отточено в отличие от Java. Очень хорошо иллюстрирует положение вещей эту картинка
Одна из проблем то что нельзя легко настроить публикацию npm через таску в gulp. Очень долго искал и еле нашел всего в одном месте поэтому публикую решение здесь чтобы распространить решение и не потерять его. Исходное решение - http://blog.entelect.co.za/automatically-publish-to-npm-using-gulp-teamcity, к сожалению исходно решение уже недоступно

Зависимости
npm i npm --save-dev
npm i fs --save-dev

Примерно такие зависимости должны быть установлены
fs@0.0.1-security or file-system@2.2.2
npm@4.1.2

Код
var npm = require('npm');
var fs = require('fs');

gulp.task('npm-publish', function (callback) {
    var uri = ""; //uri to npm, e.g. https://registry.npmjs.org/
    var username = ""; 
    var password = "";
    var email = ""; 
 var dist = ""; //path to dist folder with package.json

    if (!username) {
        var usernameError = new Error("Username is required as an argument --username exampleUsername");
        return callback(usernameError);
    }
    if (!password) {
        var passwordError = new Error("Password is required as an argument --password  examplepassword");
        return callback(passwordError);
    }
    if (!email) {
        var emailError = new Error("Email is required as an argument --email example@email.com");
        return callback(emailError);
    }
    npm.load(null, function (loadError) {
        if (loadError) {
            return callback(loadError);
        }
        var auth = {
            username: username,
            password: password,
            email: email,
            alwaysAuth: true
        };
        var addUserParams = {
            auth: auth
        };
        //adduser and login are the same command
        npm.registry.adduser(uri, addUserParams, function (addUserError, data, raw, res) {
            if (addUserError) {
                return callback(addUserError);
            }
            var metadata = require(dist+"/package.json");
            metadata = JSON.parse(JSON.stringify(metadata));
            npm.commands.pack([dist], function (packError) {
                if (packError) {
                    logout(addUserParams, data.token);
                    return callback(packError);
                }
                var fileName = metadata.name + '-' + metadata.version + '.tgz';
                fileName = fileName.replace("@","").replace("/","-");
                var bodyPath = require.resolve('./' + fileName);
                var body = fs.createReadStream(bodyPath);
                var publishParams = {
                    metadata: metadata,
                    access: 'public',
                    body: body,
                    auth: auth
                };
                npm.registry.publish(uri, publishParams, function (publishError, resp) {
                    if (publishError) {
                        deleteArchive(fileName);
                        logout(addUserParams, data.token);
                        return callback(publishError);
                    }
                    console.log("Publish succesfull: " + JSON.stringify(resp));
                    deleteArchive(fileName);
                    logout(addUserParams, data.token, callback);
                });
            })
        });
    });
    function logout(addUserParams, token, callback) {
        addUserParams.auth.token = token;
        npm.registry.logout(uri, addUserParams, function (logoutError, data, raw, res) {
            if (callback) {
                if (logoutError) {
                    return callback(logoutError);
                }
                return callback();
            }
        });
    }
    function deleteArchive(filePath) {
        gulp.src(filePath).pipe(plugins.rimraf());
    }
});

четверг, 15 июня 2017 г.

Как получить военник

Решил я получить законный военник, но не тут то было...

Введение


Я учился в аспирантуре, она закончилась когда мне было 25 лет, однако кандидатскую получил только в 28 лет. Призывной возраст заканчивается в 27 лет. Я подождал кандидатскую и после ее получения решил получить военник. Отмечу, что вроде бы, у меня были законные отсрочки, а именно в промежуток 25-27 лет у меня родился сын (там дается какая-то отсрочка около 3 месяцев до и после рождения), а также я прикреплялся на пару месяцев к другой аспирантуре (повторное обучение вроде тоже дает отсрочку). 

Иду в военкомат на разведку


Для начала надо было выяснить что нужно сделать чтобы начать процесс получения военника. Пришел я в военкоммат меня отправили то туда то сюда, говорили типа кто ты такой, мы не знаем что делать с тобой, ты уже не призывник, не можем тебе дать военник и вообще иди отсюда. 
Весело подумал я, но кое как я выяснил что нужно принести справки и документы о себе, мне дали такие листочки где было написан список документов:
  1. фото 3х4 – 2 шт.
  2. паспорт
  3. свидетельство о рождении
  4. свидетельство о браке
  5. свидетельство о рождении детей
  6. диплом высшего образования
Очевидно к ним прибавляются справки о том что я учился в аспирантуре с указанием срока и диплом кандидатской.

Также дали лист для прохождения медицинской комиссии формата A4, чтобы пройти диспансеры и анализы:
  1. ЭКГ (кардиограмма) с расшифровкой
  2. ККФ (флюорография)
  3. справка об общем анализе крови
  4. справка об общем анализе мочи
  5. справка об исследовании: RW, ВИЧ, НВ, HCV
  6. справка от терапевта за 5 лет
  7. справка из кожно-венерологического диспансера
  8. справка из противотурберкулезного диспансера
  9. справка из наркологического диспансера
  10. справка из психоневрологического диспансера
  11. карточка из поликлиники
Небольшое отступление - военкомат для выдачи билета должен сделать бюрократическую процедуру: 1) провести медкомисиию для установления годности; 2) провести комиссии которая решает давать билет или справку "уклониста" или забирать в армию; 3) выдать документ или забрать в армию.

Готовлю анализы


Итак я решил подождать начала весеннего призыва чтобы было полегче и начал собирать анализы.

Отмечу что "справка от терапевта за 5 лет" берется в поликлинике где вы прикреплены. В моем случае я там не появлялся очень долго, поэтому было написано медицинскими терминами фраза "за 5 лет ничем не болел". На ней ставится печать врача.
А вот "карточку из поликлиники" мне не дали сказали что на руки не выдается (приказ Министерства Здравоохранения от 29.11.2010г. №1256)

Диспансеры пришлось объезжать самому. Здесь самое проблемное это наркодиспансер, где нужно ждать 2 недели, а кожвен дает справку сроком действия на 3 недели.

Если кому нужно то для советского района в Самаре, т.к. чтобы их найти пришлось покапаться в инете, позвонить и еще поездить, т.к. иногда перенеправляли
  • нарк - Партизанская, 130
  • кожвен - Революционная 138, но для военкомата надо ехать кажется на Степана Разина, 53
  • псих - 22 Партсъезда 12
  • противотуберкулез (возьмите с собой марлевую повязку на лицо) - Революционная 66

А вот остальные анализы я сделал в платных клинниках, это разрешено законом, главное взять у низ лицензии (хотя мне они не пригодились). 

Если кому-то пригодится то в Самаре анализы можно сдавать в ПрофМедЦентр для военкоммата, Эксперт-Профит здесь я сдавал только флюрографию, т.к. они сказали что военкоммат постоянно придирается к ним, зато там можно на права все анализы сдать в обном месте. Самарский диагностический центр - здесь я делал ЭКГ с расшифровкой.

Обязательно берите везде листок медицинской комиссии формата A4, т.к. большинство диспансеров ставят туда печати.

Отправка документов


Я долго думал стоит отнести документы самому или как  я прочитал в ините можно отправить письмом. Но теперь я точно знаю ВСЕ ДЕЛА С ВОЕНКОММАТОМ НАДО ВЕСТИ ЧЕРЕЗ ПОЧТУ РОССИИ ЧЕРЕЗ ЗАКАЗНЫЕ ПИСЬМА С УВЕДОМЛЕНИЕМ.

Я решил отправить через почту и это мне помогло. Итак делаем копии всех документов. Пишем заявление вида (тут же есть ссылка на закон про карточку)
И отправляем почтой России заказным письмом с письменным уведомлением, т.к. если что это уведомление от почты России будет доказательством в суде.

Тут сделаю отступления про почту - у них даже уведомлений не было! Поэтому если кому нужно конверты и уведомления заполняем и печатаем через сервисы;
  • Уведомление о вручении ф 119 - http://formz.ru/forms/uvedomlenie/
  • конверт C4 (для документов A4) - http://konvert-online.ru/

Через 1-2 недели мне позвонили и уже приятным голосом пригласили на прохождение комиссии.

Мед комиссия


Почти прошел комиссию, только хирург завернул сказал принести рентген шеи, т.к. она у меня проблемная, а я принес только заключение. Нашел в инете что подходит МРТ - пошел в туже больницу где я его делал и распечатал МРТ на пленке с диска.

Пришел пройти дальше и тут началось. Принимать снимок не будем. И вообще неси карточку с больницы. Кое как решил эти вопросы с глав врачом, он отправил к хирургу выписать доп обследования (хотя они нафиг ни кому не нужны). А еще неси оригиналы документов. Документ один чуть не потеряли. Выписывать обследование не захотели. Врач убежал. В общем бардак. Позвонил по телефону в основной военкомат - ответили решайте сами.

Попытка № 2


Я конечно расстроился, но подумав, успокоившись, решил мне уже больше 27 лет, а значит по закону они мне должны в любом случае выдать документ, тем более что никаких доп обследований выписано не было, а значит они нарушают мои права. В результате я написал заявление. В нем были следующие моменты
  1. Отказ отдавать оригиналы, т.к. военкомат их часто теряет из моего опыта и из опыта знакомых и инета. Тем более по закону они обязаны принять копии.
  2. Отказ от рентгена в пользу МРТ
  3. Отказ от прохождения доп исследований, т.к. у меня и так полно исследований по шее, а если нужно то пусть скажут какие именно
  4. Ну и в случае отсутствия реакции готовность идти в областной военкома (очевидно что дальше прокуратура)
Пример заявления с ссылками на закон:

Также я отправил копию военкому на всякий случай. 

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

Получение военника


Наконец еще через неделю пригласили придти забрать военник, именно военник а не справку "уклониста".

Выводы


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

Литература


Здесь приведены ссылки на ресурсы где я искал законы и алгоритм как общаться с военкоматом.

вторник, 6 июня 2017 г.

Госуслуги и загранпаспорт

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

1. Регистрация на госулугах

На сам сайт можно перейти через www.gosuslugi.ru. Во время регистрации предложат получить логин\пароль через обычную почту (с ожиданием в 2 недели) или можно самому явиться в отдел Ростелекома с паспортом (это можно уже сделать на следующий день). Я воспользовался последним вариантом.

2. Сбор бумаг

Из бумаг вам понадобиться:
  1. Паспорт (и старый загранпаспорт если есть)
  2. Фото
  3. Гос пошлина
  4. Список мест работ
  5. Справка из военкомата
Паспорт. С паспортом все понятно - нужно взять его с собой.

Фото. Нужно приложить фото при отправке электронного заявления госуслуг - вас попросят его прикрепить. Чтобы получить электронную версию фото, вы можете во-первых сами сфоткаться, во-вторых попросить в пунке "печати фото на документы" дать вам файл. Когда вы будете выкладывать фото в госуслуги у вас может это не получиться, т.к. есть ограничение на размер, формат фото и то что 70-80% фото должно быть заполнено вами. Тут вам нужно будет поиграть с paint и обрезать\сжать фото.

Госпошлина. Поскольку я получал паспорт нового образца госпошлина в то время была равна 2500р. Оплатить ее можно либо в самом УФМС (здание, где получают загранпаспорт - гагарина 66а) либо в сбербанке. Я оплатил в сбербанке примерно за неделю до назначенного срока предоставления документов. Это также удобно с той точки зрения, что почти без очереди и без знания реквизитов для оплаты можно подойти к работнику сбербанка, которые обычно стоят на входе и отвечают на вопросы. Он подскажет какие кнопки нужно нажать в терминале, чтобы оплатить госпошлину. Вам остается только сунуть денег в терминал и получить чек (чек также является документом, подтверждающим оплату, как и квитанция). В результате получаем вот такой чек:
Если вам все таки нужны реквизиты то уточните их либо на госулугах, либо на сайте местного УФМС. На чеке есть реквизиты получателя, но они могли устареть.

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

Список мест работ. На сайте госулуг вам предложат заполнить форму мест работ где вы работали в течении 10 предыдущих лет. Если бы вы получали паспорт не через госулуги вам бы пришлось заполнять и подписывать на работе документ. Но я все же советую вам его скачать и заполнить, т.к. не только у меня был случай когда заполненные данные не отправлялись и приходилось заполнять все заново. Также иногда возникает вопрос как писать две работы и в каком порядке. Здесь можно расположить работы по дате устройства на работу. Либо как вариант вообще не писать вторую работу, чтобы не запутаться. Если что-то будет не верно от госуслуг придет письмо с описанием ошибок. Если вы не работали больше двух месяцев нужно это также указывать. В качестве адреса - писать адрес прописки на тот момент. Также обратите внимание на то что нужно писать где учились. И нужно писать о работе за 10 лет (например если вы описали работы за 9 лет и 11 месяцев, получение загранпаспорта отклонят). Если все будет верно заявку на паспорт пропустят дальше, больше о списке работ беспокоится не придется.

Справка из военкомата. Если вам больше 27 лет, то нужен военник, если меньше, то идете в военкомат в призывной пункт, говорите что вам нужна справка для получения загран паспорта. Они вам диктуют форму заявления вида "Начальнику военкомата ... прошу предоставить справку что от призывной службы не уклонялся". Недели через две они вам ее выдадут, т.к. что лучше начать со справки.

4. Предъявление бумаг для получения паспорта

В 2012 году была беда с получением паспорта, не смотря на госуслуги и электронную очередь. А именно летом электронная очередь была отключена. Желающих получить паспорт было море. Первый раз я пришел к 09:00 и увидел очередь человек 100 вокруг здания. Решение было таким. В 06:00 приехать к УФМС, там уже кто-то был и были списки - записываешься в этот список почти первым и ждешь время начала работы. Или идешь гулять или идешь домой спать и возвращаешься к моменту начала работы. Правда и тут вас может подстерегать беда - в одни из дней сломались компьюторы и пришлось идти домой ни с чем.
Зайдя в здание вы идете к аппарату и берете талончик электронной очереди. Ждете очередь. Заходите. Показываете паспорт, справку военкомата, госпошлину, фоткаетесь.

Update: Но думаю сегодня все уже более отлажено и не будет таких очередей.

5. Получения паспорта

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

Полезные ссылки


среда, 9 ноября 2016 г.

Список android приложений на мой вкус 2


Для работы
Google keep - заметки с синхроницацией - можно посмотреть на компе
WPS Office - аналог Microsoft Office
Яндекс.Почта 
Exchange Calendar Sync - возможность подключиться к почте типа Microsoft Outlook без необходимости подтверждать права на удаления любой информации с телефона при подключении через стандартное приложение почты
Google Календарь
Диктофон - (стандартный)
Google Chrome - браузер
UC Mini - браузер с возможность выкачать только текст или сжимать картинки, удобно там где плохой инет
Калькулятор ++ - многофункциональный калькулятор

Связь
Skype - для видеозвонков
Viber - для аудио и текст общения
JusTalk - для видеозвонков - попробовать
True Phone - телефон
Textra SMS
Pasteasy - общий буфер между телефоном и компом по wifi
CopyCopy - общий буфер между телефоном и компом через аккаунт в инете
Kopy - общий буфер между телефоном и компом через аккаунт в инете с возможностью создавать временные сессии без регистрации
Фильтр SMS - блокирует смс (другое название Черный список)
Unified Remote - управление мышкой и клавиатурой и плеером
Wifi File Transfer -  ftp server
PC Remote - управление мышкой и клавиатурой и плеером, чуть полегче.
Оффлаин бекап контактов - ???

Город
Транспорт Самары - аналог Прибывалки
Яндекс.Такси
Яндекс.Карты - для России
Google карты - для заграницы
Семейный Локатор - альтернативы Life360GeoZilla, Местоположение, KidControl
Яндекс.Метро
Геотрекер - запись GPS треков
MAPS.ME - оффлайн карты
Афиша - развлечения в вашем городе
Почта России - слежение за посылками
Навител Навигатор - навигатор

Развлечения
YouTube - заменить
ВКонтакте
Rutor Parser  - скачивание торрентов с Rutor
Volume Booster - куча рекламы, но увеличивает звук в поезде\самолете
Мой Коктейль Бар - отличная программа для подбора коктейлей по ингредиентам и наоборот
MyShows - каталог сериалов, с возможность отмечать просмотренные и видеть расписание новых серий
MX Player - неплохой видео проигрыватель
VLC for Android - для нестандартный видео кодеков
Fire Place HD - костер на телефоне
Pi Music Player - отличный аудио проигрыватель
Flud - торрент-скачиватель
Earbits - каталог музыки

Другое
Галерея - (стандартная) для просмотра фото
ClockSync
Play Market - установка приложений для андройд
Фонарик - (стандартный)
Dormi - радионяня через wifi
Мировое время - виджет
Зеркало - (стандартный)
FM-радио - (стандартный)
Скриншот Легкий - программа делает скриншоты экрана телефона
Barcode Scanner - сканер QR кодов
KeePassDroid - хранитель паролей
SyncMe Wireless - синхронизация телефона с компом без проводов
TeamViewer - удаленный доступ к ПК
Яндекс.Переводчик - возможность делать перевод оффлайн.
Text Fairy - распознаватель текста по картинке
Musice Romantica - романтическая итальянская музыка
Тексты песен для Android - автоматически находит тексты песен

Чистильщики
CCleaner
Fast Task Killer - отлично чистит ОЗУ
Droid optimizer - устанавливать раз в год - отлично ищет логи которых за год набирается более 100 md
All-In-One Toolbox - чистильщик ОЗУ, ПЗУ, autorun


Инструменты для измерения
Ampere - можно измерить ток при зарядке и выкинуть старые провода\адаптеры
Sensor Box - разные датчики
Шумомер (Sound Meter)
Handy Tools - линейка, уровень и др.
GPS Test - более детальная информация о GPS спутниках, ее долгое включения помогает быстрее перенастроить спутники
Wifi Analyzer - проверка загруженности канала wifi
AnTuTu Benchmark - скорость телефона

Root программы
SuperUser - программа по раздачи прав разным приложениям (ставится через Kingo ROOT или др. подобных приложениях)
Kingo ROOT - программа для root телефона (см, например см. Root ZTE Blade X5)
Root Booster - ускоряет работу системы
Tegrak Overclock - разгон процессора, если, как для всех подобных приложений, есть поддержка со стороны ядра
Statrup manager - менеджер автозагружаемых приложений - лучше All-In-One Toolbox
Менеджер приложений Root - возможность удалить системные приложения, пернести приложения на карту памяти
L Speed - много твиков, но в расширенном режиме можно сломать систему.
Seeder - ускоряет обновление пула рандомных чисел

VR
Cedar Point VR - американские горки
HYUNDAI VR+