Pull to refresh
0
0
Send message

19 советов по повседневной работе с Git

Reading time14 min
Views288K


Если вы регулярно используете Git, то вам могут быть полезны практические советы из этой статьи. Если вы в этом пока новичок, то для начала вам лучше ознакомиться с Git Cheat Sheet. Скажем так, данная статья предназначена для тех, у кого есть опыт использования Git от трёх месяцев. Осторожно: траффик, большие картинки!

Содержание:
  1. Параметры для удобного просмотра лога
  2. Вывод актуальных изменений в файл
  3. Просмотр изменений в определённых строках файла
  4. Просмотр ещё не влитых в родительскую ветку изменений
  5. Извлечение файла из другой ветки
  6. Пара слов о ребейзе
  7. Сохранение структуры ветки после локального мержа
  8. Исправление последнего коммита вместо создания нового
  9. Три состояния в Git и переключение между ними
  10. Мягкая отмена коммитов
  11. Просмотр диффов для всего проекта (а не по одному файлу за раз) с помощью сторонних инструментов
  12. Игнорирование пробелов
  13. Добавление определённых изменений из файла
  14. Поиск и удаление старых веток
  15. Откладывание изменений определённых файлов
  16. Хорошие примечания к коммиту
  17. Автодополнения команд Git
  18. Создание алиасов для часто используемых команд
  19. Быстрый поиск плохого коммита

Читать дальше →

Управление логгированием в systemd

Reading time12 min
Views125K
Systemd Journal

Демон инициализации systemd де-факто уже стал стандартом в современных Linux-системах. На него перешли многие популярные дистрибутивы: Debian, RHEL/CentOS, Ubuntu (начиная с версии 15.04). В systemd используется принципиально иной (по сравнению с традиционным инструментом syslog) подход к логгированию.
В его основе лежит централизация: специализированный компонент journal cобирает все системные сообщения (сообщения ядра, различных служб и приложений). При этом специально настраивать отправку логов не нужно: приложения могут просто писать в stdout и stderr, a journal сохранит эти сообщения автоматически. Работа в таком режиме возможна и с Upstart, но он сохраняет все логи в отдельный файл, тогда как systemd сохраняет их в бинарной базе, что существенно упрощает  систематизацию и поиск.

Хранение логов в бинарных файлах также позволяет избежать сложностей с использованием парсеров для разных видов логов. При необходимости логи можно без проблем переконвертировать в другие форматы (более подробно об этом будет рассказано ниже).
Journal может работать как совместно с syslog, так и полностью заменить его.
Для просмотра логов используется утилита journalctl. Об особенностях и тонкостях работы с ней мы расскажем в этой статье.
Читать дальше →

Третий лишний: как мы реализовали сбор почты с использованием OAuth 2.0

Reading time9 min
Views17K


«Может тебе еще и ключ от квартиры, где деньги лежат?» — примерно так выглядит нормальная реакция человека, у которого посторонний сервис требует пароль от основной почты. Тем не менее, большинству из нас регулярно приходится сообщать пароль сторонним сервисам. Сегодня я хочу рассказать о том, как мы реализовали процедуру авторизации при сборе писем с наших ящиков через OAuth 2.0, тем самым избавив пользователей Mail.Ru от необходимости доверять «ключи» от своей почты третьей стороне.
Читать дальше →

Чат-помощник на сайт с помощью Telegram за 15 минут

Reading time4 min
Views196K


Про чаты-помощники


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

Есть с десяток подобных сервисов и все они работают по принципу "пробная версия бесплатно, а дальше за деньги".
На хабре есть несколько статей, вот одна из них (http://habrahabr.ru/company/tuthost/blog/165365/), но, я уверен, аудитория Хабрахабра знает о чем речь.
Большинству людей подойдет бесплатный вариант любого такого сервиса: нужно всего-навсего зарегистрироваться и вставить на сайт кусок JS кода. Для тех у кого много менеджеров — придется платить: например Редхелпер на 10 операторов обойдется Вам:
115200 руб. за 1 год



Скорее всего — цена адекватная для тех, кто платит зарплату десяти менеджерам.

Но я решил изобрести бесплатный «велосипед» из подручных материалов.
Запуск у себя на сервере займет 15 минут. Всем, кому идея интересна — прошу под кат.
Читать дальше →

Как контролировать наличие ключевых слов на сайте

Reading time2 min
Views9.4K
ХостТрекер предлагает вниманию веб-мастеров функцию автоматического мониторинга контента веб-сайтов. Она позволяет отслеживать наличие или отсутствие на проверяемых страницах определенных ключевых слов.



Читать дальше →

Быстрые помощники для вашего Asterisk'а

Reading time5 min
Views17K
Эта статья подводит промежуточный итог в разработке моих приложений для asterisk'а. Все началось в новогодние праздники, когда мне захотелось сделать быстрый голосовой набор на asterisk'е. Затем был реализован поиск направления по номеру звонящего (полезная штука для входящих на номера 8-800). Затем была пара заказных проектов. А недавно еще и LCR для asterisk. Все эти приложения разработаны с использованием библиотеки ding-dong, которая позволяет работать с AGI (Asterisk Gateway Interface) в node.js приложении.

Далее я хотел бы показать, что используя node.js и ding-dong, можно быстро разрабатывать полезные приложения для астериска.
Читать дальше →

LIVR — «независимые от языка правила валидации» или валидация данных без «проблем»

Reading time12 min
Views22K
Каждый программист неоднократно сталкивался с необходимостью проверки пользовательского ввода. Занимаясь веб-разработкой уже более 10 лет, я перепробовал массу библиотек, но так и не нашел той единственной, которая решала бы поставленные мною задачи.

Основные проблемы, которые встречаются в библиотеках валидации данных

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

Проблема №2. Процедурное описание правил валидации. Я не хочу каждый раз думать про алгоритм валидации, я просто хочу описать декларативно, как должны выглядеть правильные данные. По сути, я хочу задать схему данных (почему не «JSON Schema» — в конце поста).

Проблема №3. Описание правил валидации в виде кода. Казалось бы, это не так страшно, но это сразу сводит на нет все попытки сериализации правил валидации и использования одних и тех же правил валидации на бекенде и фронтенде.

Проблема №4. Валидация останавливается на первом же поле с ошибкой. Такой подход не дает возможности подсветить сразу все ошибочные/обязательные поля в форме.

Проблема №5. Нестандартизированные сообщения об ошибках. Например, «Field name is required». Такую ошибку я не могу показать пользователю по ряду причин:
  • поле в интерфейсе может называться совсем по другому
  • интерфейс может быть не на английском
  • нужно различать тип ошибки. Например, ошибки на пустое значение показывать специальным образом

То есть, нужно возвращать не сообщение об ошибках, а стандартизированные коды ошибок.

Проблема №6. Числовые коды ошибок. Это просто неудобно в использовании. Я хочу, чтобы коды ошибок были интуитивно понятны. Согласитесь, что код ошибки «REQUIRED» понятней, чем код «27». Логика аналогична работе с классами исключений.

Проблема №7. Нет возможности проверять иерархические структуры данных. Сегодня, во времена разных JSON API, без этого просто не обойтись. Кроме самой валидации иерархических данных, нужно предусмотреть и возврат кодов ошибок для каждого поля.

Проблема №8. Ограниченный набор правил. Стандартных правил всегда не хватает. Валидатор должен быть расширяемый и позволять добавлять в него правила любой сложности.

Проблема №9. Слишком широкая сфера ответственности. Валидатор не должен генерировать формы, не должен генерировать код, не должен делать ничего, кроме валидации.

Проблема №10. Невозможность провести дополнительную обработку данных. Практически всегда, где есть валидация, есть необходимость в какой-то дополнительной (часто предварительной) обработке данных: вырезать запрещенные символы, привести в нижний регистр, удалить лишние пробелы. Особенно актуально — это удаление пробелов в начале и в конце строки. В 99% случаев они там не нужны. Я знаю, что я до этого говорил, что валидатор не должен делать ничего кроме валидации.

3 года назад, было решено написать валидатор, который не будет иметь всех вышеописанных проблем. Так появился LIVR (Language Independent Validation Rules). Есть реализации на Perl, PHP, JavaScript, Python (мы на python не пишем — фидбек по ней дать не могу). Валидатор используется в продакшене уже несколько лет практически в каждом проекте компании. Валидатор работает, как на сервере, так и на клиенте.
Читать дальше →

О том, как я заставлял Ubuntu работать 10 часов от батареи

Reading time11 min
Views195K
imageЯ являюсь рядовым линукс-пользователем и поэтому не стоит от этой статьи ожидать очень умных ходов или нестандартных программистских решений. Все по мануалам. Но раз результат достигнут, значит кому-то кроме меня это может оказаться полезным.

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

Устанавливал я Ubuntu 10.10 на ноутбук Acer Aspire Timeline 5810TG. Эта машина обладает экраном в почти 16 дюймов и относительно производительным железом, зато батарея достаточно емкая, чтобы ставить с ней личные рекорды.
Читать дальше →

Оптимизация рендеринга веб-страницы

Reading time5 min
Views43K
image

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

50+ лучших дополнений к Bootstrap

Reading time5 min
Views202K


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

Для статьи я подобрал наиболее полезные дополнения «на все случаи жизни».
Читать дальше →

Быстрое кроссплатформенное HTML5 приложение на Framework7

Reading time10 min
Views79K
Задумываясь о разработке html5 приложения, многим сразу на ум приходит jQuery, или точнее jQueryMobile. И попробовав написать даже самое простенькое приложение используя jQueryMobile, очень легко разочароваться, так как производительность и отзывчивость получившегося html5 приложения куда ниже ожидаемого, и уж совсем его не сравнить с нативными приложениями.


Читать дальше →

Какие тесты вам нужны? Часть 1. О целях и задачах, что влияют на выбор тестов

Reading time7 min
Views18K
Эта статья — вводная к матрице тестов, которой я на самом деле хочу поделиться и поделюсь во второй части.

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

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

Вырезать и копировать в буффер с помощью JavaScript

Reading time4 min
Views101K
Начиная с IE10 добавлена поддержка команд «Копировать» и «Вырезать» с помощью метода Document.execCommand(). Так же эти методы доступны в Chrome начиная с версии 43.

Любой текст выделенный в браузере при выполнении одной из этих команд будет скопирован или вырезан в буфер обмена пользователя. Это позволяет предложить пользователю простой метод выделить часть текста и скопировать в буфер обмена.

Это становится крайне полезным в сочетании с API программного выделения текста, что бы задать что скопировать в буфер. Примеры будут рассмотрены в этой статье.
Читать дальше →

Способы организации CSS-кода

Reading time8 min
Views207K
Разработчик Бен Фрейн (Ben Frain) однажды заметил: «Писать CSS-код легко. Масшабировать и поддерживать его — нет».

К счастью, на просторах интернета можно найти множество решений этой проблемы. В данной статье рассмотрены основные киты структуры CSS-кода, а также интересные рыбы/млекопитающие поменьше.

Статья служит лишь памяткой или кратким справочником — для подробного ознакомления с методологиями настоятельно рекомендуется изучать оригинальную документацию.

Итак, начнем.
Читать дальше →

Samba4 в роли AD + файловый сервер

Reading time5 min
Views158K
    В этой статье я рассмотрю по шагам подготовку к использованию Samba4 в роли контроллера домена вкупе с дополнительным файловым сервером так же на базе Samba4. Что в итоге мы получим? Два настроенных сервера с samba4, первый в роли domain controller, второй в роли member server с файлами пользователей. Функционирования этой связки я добивался около месяца, за сим, не поделится конечным рецептом просто не имею права…



    Немного предыстории: в компании используется файловый сервер на базе samba3.6 с LDAP Backend, который содержит список всех пользователей и групп с правами доступа. Права доступа на каталоги выставляются с помощью xattr_acl (Extended file attributes), в LDAP хранится список пользователей с соответствием группам доступа. Собственно требуется переехать с этой инфраструктуры на samba4…
Читать дальше →

ITIL для разработчиков

Reading time9 min
Views23K


“… british scientists proved…”


Привет, Хабр. Меня зовут Сергей Сапегин, я работаю PHP-разработчиком в DataArt. Но сегодня я хочу поговорить не о PHP.

Работники IТ, вне зависимости от области специализации, в последнее время все чаще сталкиваются с интересным феноменом мира ПО — ITIL. Поскольку общемировая тенденция не миновала и DataArt, мы предприняли небольшое исследование, дабы понять, что и как следует знать нашим разработчикам, чтобы некоторые процессы заказчиков не ставили в тупик всю команду. Представляем вам, что из этого получилось…

Читать дальше →

Целеполагание и контроль деятельности на основе матрицы Эйзенхауэра

Reading time5 min
Views110K


Мы уже писали о том, как справиться с останавливающими нас на пути к достижению своих целей страхом и прокрастинацией. Однако после того, как мы вышли из “мёртвой зоны” бездействия и замотивировали себя на результат, мы можем впасть в другую крайность: после длинного 8-12 часового рабочего дня не получается сказать, что же, собственно, удалось сделать. И главное – какой результат от приложенных усилий мы получили? Продвинул ли он нас к поставленным целям?

В результате легко обнаружить себя в ситуации, когда “крутишься как белка в колесе”, а дела словно стоят на месте. Копится только усталость. Ощущения от достигнутых высот так и не появляется.
Читать дальше →

Меня беспокоит Agile, и я хочу об этом поговорить

Reading time6 min
Views60K
image

Меня зовут Екатерина Шалапанова, в DataArt я работаю с 2008 года, занимаюсь в основном управлением проектами. Иногда, правда, совмещаю эту роль с ролью системного аналитика. В индустрии с 2000 года, начинала карьеру программистом и незаметно для себя переродилась в менеджера, которой интересно заниматься смежными областями. Сразу уточню, что мое мнение может не совпадать с позицией компании, которую я тут представляю.

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

У меня достаточно большой опыт в индустрии заказной разработки, плюс я очень люблю посидеть на чужих ретроспективах.
Читать дальше →

Установка, настройка и тестирование Fedora 21 Workstation на личном или игровом компьютере

Reading time37 min
Views205K
9-го декабря вышла новая Fedora 21 Workstation, которую по совокупности параметров можно назвать «самым свежим и стабильным» Линукс-десктопом.

За время использования и тестирования Fedora я проникся к этой платформе глубокой симпатией и хочу поделиться этим теплом и знаниями о ней с вами.

В течение года я наблюдал за её работой в качестве рабочего и игрового места в разных ситуациях — от станций с «умирающим» железом до нового игрового ноутбука Asus G750JM с Nvidia Optimus.

Собранные заметки получились несколько шершавыми, старающимися охватить одновременно и новичков в Линуксе, и опытных пользователей с разработчиками. Прошу простить. Хочу донести большой объем информации в одной статье: и по общей настройке и установке Федоры, и по технологии Nvidia Optimus на ноутбуках, wi-fi с проприетарными драйверами, о настройке симпатичных шрифтов в Java и IDE от JetBrains, запуску игр в Steam на дискретной видеокарте, о результатах сравнительного тестирования игр, графики и браузеров между Федорой и Windows 8.1, и даже об установлении одного «абсолютного» рекорда.

Хочу отметить, что свежие десктопные Линуксы также отличаются качественной поддержкой дисплеев высокого разрешения с хорошей отрисовкой шрифтов и оконных элементов, предоставляют высочайшую степень различных персональных настроек, «хаков» и возможностей оперирования с приложениями. Всё это позволяет не только значительно повысить эффективность своей работы, но и сделать это с комфортом для глаз.

Читать дальше →

Information

Rating
Does not participate
Registered
Activity