Как стать автором
Обновить
0
0
Алексей Коверник @HotFazer

Программист

Отправить сообщение

Работаем с Git: трудовые будни

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров42K

Прошлая статья «Работаем с Git: первые шаги в GitHub» была посвящена установке, настройке Git и классическим операциям из набора для новичков GitHub. А теперь перейдём к практике и рассмотрим «горячие» сценарии, которые делают трудовые будни куда веселее. Или не очень.

Читать далее
Всего голосов 19: ↑16 и ↓3+16
Комментарии18

Тонкости благополучного git-merge

Время на прочтение8 мин
Количество просмотров366K

Вступительное слово


Считается, что «киллер фичей» СКВ Git является легковесное ветвление. Я ощутил это преимущество в полной мере, ведь я перешел на Git с SVN, где ветвление было достаточно дорогим процессом: для создания ветки нужно было скопировать весь рабочий каталог. В Git все проще: создание ветки подразумевает лишь создание нового указателя на определенный коммит в папке .git/refs/heads, который является файлом с 40 байтами текста, хешем коммита.

Основными командами пользовательского уровня для ветвления в Git являются git-branch, git-checkout, git-rebase, git-log и, конечно же, git-merge. Для себя я считаю git-merge зоной наибольшей ответственности, точкой огромной магической энергии и больших возможностей. Но это достаточно сложная команда, и даже достаточно длительный опыт работы с Git порой бывает недостаточным для освоение всех ее тонкостей и умения применить ее наиболее эффективно в какой-либо нестандартной ситуации.

Попробуем же разобраться в тонкостях git-merge и приручить эту великую магию.

Здесь я хочу рассмотреть только случай благополучного слияния, под которым я понимаю слияние без конфликтов. Обработка и разрешение конфликтов — отдельная интересная тема, достойная отдельной статьи. Я очень рекомендую так же ознакомиться со статьей Внутреннее устройство Git: хранение данных и merge, содержащей много важной информации, на которую я опираюсь.
Читать дальше →
Всего голосов 76: ↑75 и ↓1+74
Комментарии47

Git happens! 6 типичных ошибок Git и как их исправить

Время на прочтение5 мин
Количество просмотров240K


Прим. перев.: На днях в блоге для инженеров любимого нами проекта GitLab появилась небольшая, но весьма полезная заметка с инструкциями, которые помогают сохранить время и нервы в случае различных проблем, случающихся по мере работы с Git. Вряд ли они будут новы для опытных пользователей, но обязательно найдутся и те, кому они пригодятся. А в конец этого материала мы добавили небольшой бонус от себя. Хорошей всем пятницы!

Все мы делаем ошибки, особенно при работе с такими сложными системами, как Git. Но помните: Git happens!
Читать дальше →
Всего голосов 63: ↑62 и ↓1+61
Комментарии62

Вывод Jira из состояния помойки, с чего начать

Время на прочтение7 мин
Количество просмотров21K
Вдруг мы понимаем, что Jira превратилась в помойку. Каждый второй РП настраивал Jira как ему было удобнее бесконтрольно. А когда проект начал гореть, начал тушить пожары вручную, оставляя задачи в трекере в каком-то состоянии, далеком от завершения. Если в проекте создан полноценный CI/CD, то большая часть задач на разработку будет в правильном финальном статусе, но остальные…

Часть проектов заморозилась, часть отвалилась, РП выгнали, но задачи в Jira не почистили. У вас на руках 10-20 идущих “проектов” и нужно быстро понять где больше болит.

Сопоставив опыт участников посиделок КиФБ (клуб имени Фрэнсиса Бекона) в решении этой задачи, мы представили этот опыт в записанном виде (за что спасибо всем участникам).
Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Комментарии11

Есть ли жизнь без тестов?

Время на прочтение15 мин
Количество просмотров12K
Это история про то, как нам удалось написать довольно сложную business-critical систему, и добиться, чтобы она была стабильной даже без юнит-тестов (WAT?!).
Читать дальше →
Всего голосов 31: ↑27 и ↓4+29
Комментарии59

Интернационализация: как вывести продукт на международный рынок (и не сойти с ума)

Время на прочтение16 мин
Количество просмотров7.4K


«Наш продукт популярен на внутреннем рынке, поэтому теперь мы думаем выходить на международный. С чего мне начать как менеджеру по продукту?»

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

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

В этой статье мне хотелось бы пройтись по моему контрольному списку вопросов, составленному на основе общепринятых рекомендаций по локализации и моего 10-летнего опыта международного масштабирования программных продуктов (это и мобильные игры, и B2C-приложения для массового рынка, и SaaS-продукты B2B).

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

Для начала — основные понятия:

  • Глобализация — подготовка продукта к работе на разных рынках. Сюда относится различные аспекты маркетинга, дизайна и технологической реализации.
  • Интернационализация (сокращенно — i18n) — обеспечение максимальной универсальности продукта, создание прочного фундамента для локализации и перевода.
  • Локализация (сокращенно — l10n) — адаптация продукта к определенным региону, культуре и языку.
  • Перевод (сокращенно — t9n) — собственно перевод продукта на новый язык.

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


Взаимоотношение различных процессов в рамках продукта. Источник: блог Adobe.

Переведено в Alconost
Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Как не опозориться с локализацией и интернационализацией

Время на прочтение10 мин
Количество просмотров9.6K
На тему этой статьи меня натолкнула история из очень недавнего прошлого. Я зашёл на страничку продукта, именуемого Суперсайтом, компании Не Будем Тыкать Пальцами LLC (но люди из домейнерской индустрии узнают). Заходил я из своего уютного офиса в Латвии и с удивлением обнаружил следующую картину:


И меня, мягко говоря, смутила валюта, в которой была указана стоимость услуг. Ведь на дворе вторая половина 2018 года, а латвийский лат официально прекратил своё существование в январе 2014 и был заменён на евро. И за 4 года не упомянутая выше компания не удосужилась провести ревизию используемых локалей.

Под катом я расскажу, что следует помнить при интернационализации и локализации своего продукта и где черпать данные для периодических ревизий.
Локализироваться
Всего голосов 35: ↑34 и ↓1+33
Комментарии9

Внутреннее устройство Kubernetes-кластера простым языком

Время на прочтение6 мин
Количество просмотров72K

Прим. перев.: как многим хорошо известно, Kubernetes — это всего лишь пять бинарников. Об их назначении и рассказывает в этой статье Vedashree Patil, консультант из Deloitte Digital. Когда ей потребовалось изучить Kubernetes, она столкнулась с большим количеством новой информации, осознать которую за короткое время было непросто. Так она пришла к идее уменьшить порог вхождения в K8s другим специалистам, создав цикл публикаций «Kubernetes 101». Все статьи сопровождаются простыми и наглядными комиксами. Представляем вниманию перевод материала под названием «Внутри кластера» из этого цикла.

Как выглядит кластер Kubernetes? Как работают узлы? Из этой статьи вы узнаете обо всех основных компонентах системы Kubernetes.

Читать далее
Всего голосов 57: ↑55 и ↓2+61
Комментарии10

SSR для Bitrix с Vue.js без Nuxt.js: как не потерять поисковую индексацию

Время на прочтение11 мин
Количество просмотров9.9K

Привет, Хабр!

Я Саша Шутай, backend-тимлид в компании AGIMA. Сейчас расскажу, что делать, если на проекте Bitrix сожительствует с Vue.js и поисковые боты не видят контента вашего сайта. Рассмотрим технологию серверного рендеринга страниц с помощью Puppeteer, как это всё настроить и быстро запустить для любого веб-приложения.

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии8

Вебсокеты на php. Выбираем вебсокет-сервер

Время на прочтение6 мин
Количество просмотров123K
Давным-давно я публиковал статью на хабре, как написать свой вебсокет-сервер с нуля. Статья переросла в библиотеку. Несколько месяцев я занимался её развитием, ещё несколько лет — поддержкой и багфиксом. Написал модуль интеграции с yii2. Какой-то энтузиаст написал интеграцию с laravel. Моя библиотека совместима с php7. Недавно я решил отказаться от её дальнейшей поддержки (причины ниже), поэтому хочу помочь её пользователям перейти на другую библиотеку.


Читать дальше →
Всего голосов 18: ↑14 и ↓4+10
Комментарии58

Docker + php-fpm + PhpStorm + Xdebug

Время на прочтение8 мин
Количество просмотров65K
Не так давно тимлид нашей команды сказал: ребята я хочу, чтобы у всех была одинаковая среда разработки для наших боевых проектов + мы должны уметь дебажить всё — и web приложения, и api запросы, и консольные скрипты, чтобы экономить свои нервы и время. И поможет нам в этом docker.

Сказано — сделано. Подробности под катом.
Читать дальше →
Всего голосов 31: ↑27 и ↓4+23
Комментарии80

Поняв Docker

Время на прочтение14 мин
Количество просмотров222K

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


К вашему сведению! В этой статье мы рассматриваем само явление docker-контейнеров, а не составляем список микросервисов, которые гнездятся внутри. Этим мы займемся в следующей серии, во имя справедливости!


UPDATE: пришлось заменить «докер» на «docker», иначе статья не ищется. Заранее прошу прощения за все «docker'ы» в тексте. Селяви.


Что мы имеем сегодня


  • Зоопарк дубовых VPS-хостингов.
  • Дорогие IaaS и PaaS с гарантированным vendor lock in.
  • Уникальные сервера-снежинки.
  • Ворох устаревших зависимостей на неподдерживаемой операционке.
  • Скрытые связи частей приложения.
  • Незаменимый админ полубог на скейтборде.
  • Радуга окружений: development, testing, integration, staging, production.
  • Генерация конфигов для системы управления конфигами.
  • Feature flagging.
docker run docker
Всего голосов 92: ↑83 и ↓9+74
Комментарии245

Германия — достоинства, недостатки и неповторимое, часть 1

Время на прочтение7 мин
Количество просмотров74K

Живу в Германии с 2014ого.

От некоторых аспектов страны до сих пор в восторге. От других хочется лезть на стенку и выть "ну почему так?" Постараюсь раскрыть и те, и другие - и раскрыть, почему останусь здесь, скорее всего, до конца жизни.

Зарплаты программистов

Ну как же без этого? Решил вопрос оплаты вынести в самое начало, ведь если он вас разочарует, то ваш интерес к стране может сразу угаснуть.

Читать дальше ->
Всего голосов 125: ↑116 и ↓9+135
Комментарии591

Жизнь и работа в Нидерландах

Время на прочтение16 мин
Количество просмотров79K

Наконец-то руки дошли до продолжения статьи "Истории о моей работе в Нидерландах" — а именно, пришла пора рассказать о деталях переезда и поделиться практическими советами с будущими трактористами. Прошу прощения у всех, кто ждал этого продолжения гораздо раньше. Не буду распространяться о причинах задержки, но поверьте, это были очень напряженные для меня месяцы, и я вряд ли мог взяться за эту статью в тот срок, который озвучивал раньше. Кстати, дорогие мои вопрошающие в личке! Вы, на самом деле, являетесь полноправными соавторами этой статьи, потому что некоторые из ваших умных и иногда неожиданных вопросов мне самому в голову не пришли бы, а другие сделали мою задачу гораздо проще. Вместо того, чтобы обдумывать план статьи, подачу и прочая, прочая, бери формат вопрос-ответ, и дело в шляпе. Уважаемые nightstalker, ATmegAdriVeR, Flem_1, dmtrr, ChingizKhalafov, Carduelis, artem2511, gri_mih, Ommonick, это ваши вопросы, вам от меня огромная благодарность. Надеюсь, от всех читателей тоже.


Ну а начну я все же с краткого рассказа о том, как я дошел до жизни в Нидерландах.

Читать дальше →
Всего голосов 100: ↑97 и ↓3+127
Комментарии459

Конвейер обработки текста в Sphinx

Время на прочтение10 мин
Количество просмотров15K
Обработка текста в поисковом движке выглядит достаточно простой снаружи, однако на самом деле это сложный процесс. При индексации текст документов должен быть обработан стриппером HTML, токенайзером, фильтром стоп-слов, фильтром словоформ и морфологическим процессором. А ещё при этом нужно помнить про исключения (exceptions), слитные (blended) символы, N-граммы и границы предложений. При поиске всё становится ещё сложнее, поскольку помимо всего вышеупомянутого нужно вдобавок обрабатывать синтаксис запроса, который добавляет всевозможные спец. символы (операторы и маски). Сейчас мы расскажем, как всё это работает в Sphinx.

Картина в целом


Упрощённо конвейер обработки текста (в движке версий 2.х) выглядит примерно так:



Выглядит достаточно просто, однако дьявол кроется в деталях. Есть несколько очень разных фильтров (которые применяются в особом порядке); токенайзер занимается ещё чем-то помимо разбиения текста на слова; и наконец под «и т.д.» в блоке морфологии на самом деле находится ещё по меньшей мере три разных варианта.

Поэтому более точной будет следующая картина:



А теперь перейдём к деталям
Всего голосов 16: ↑16 и ↓0+16
Комментарии8

Улучшаем релевантность поиска в sphinxsearch

Время на прочтение4 мин
Количество просмотров58K
Sphinxsearch является поисковым движком для быстрого fulltextsearch, может получать данные из mysql, oracle и mssql, может выступать сам хранилищем(realtime индексы). Также sphinx имеет режим работы через api и через sphinxql — аналог протокола sql(с некоторыми ограничениями), что позволяет подключить поиск через sphinx на сайте с минимальным изменением кода. Это один из немногих великих, крупных и открытых проектов разработанный в России. На моей жизни я видел как sphinx обрабатывает порядка 100-200 поисковых запросов на 2 миллиона записей из mysql и при этом сервер свободно дышал и его не тошнило, mysql начинает умирать уже на 10 запросах в секунду на аналогичном конфиге.

Основная проблема документации sphinx на мой взгляд малое количество примеров для большинства интересных настроек, сегодня постараюсь рассказать в примерах о них. Опции которые я затрону касаются в основном алгоритмов и вариаций поиска. Все кто плотно работает со sphinx не узнают ничего нового, а новички надеюсь смогут улучшить качество поиска на своих сайтах.

Sphinx содержит две независимые программы indexer и searchd. Первый строит индексы по данным взятым из базы данных, второй производит поиск по построенном индексу. А теперь перейдем к настройкам поиска в sphinx.

morphology

Позволяет задать морфологию слов, я использую только стемминг. Алгоритм стемминга с помощью набора правил для языка обрезает окончания и суффиксы. Стемминг не использует готовые базы слов, а основан на определенных правилах обрезания для языка, что делает его маленьким и быстрым, но это же и добавляет ему минусы так как он может совершать ошибки.

Пример нормализации слова стеммингом на русском.
Слова “яблоко”, “яблока”, “яблоку” будут обрезаны в “яблок” и любой поисковый запрос с вариацией слова “яблока” будет тоже нормализован и найдет записи со словами которые были описаны выше.
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии17

Мой опыт подготовки к трудоустройству в Google

Время на прочтение6 мин
Количество просмотров32K


От переводчика: сегодня публикуем для вас статью Праякты Татавадкар, она разработчик с небольшим стажем, но знания и опыт позволили ей получить работу в Google (со второй попытки), стать членом команды разработчиков YouTube.

Google была для меня компанией мечты с самого начала пути. Когда я успешно прошла собеседование, ко мне стали обращаться многие знакомые и друзья с просьбой поделиться опытом. Беседуя с ними, я определила самые важные для большинства вещи, которыми теперь делюсь в этой статье.
Всего голосов 34: ↑24 и ↓10+14
Комментарии23

Ontol: подборка видео-лекций и каналов для продвинутых программистов

Время на прочтение4 мин
Количество просмотров16K
image

Недавно на HackerNews обсуждали видео и каналы, где можно поучиться продвинутому программированию. Под катом — подборка из 30 полезняшек.

В перерывах между полетами на реактивном ранце и переводами материалов Y Combinator, я делаю проект «Ontol» — такое место в сети, где максимальная концентрация полезного, апгрейдящего мировоззрение материала (ценного на горизонте 10+ лет, например, такого), которым можно делиться бесплатно в 1 клик. (канал в телеграм: t.me/ontol)

Вот мои предыдущие бесплатные образовательные подборки:


Всего голосов 27: ↑25 и ↓2+37
Комментарии1

75 лекций на русском от Y Combinator (из 172)

Время на прочтение14 мин
Количество просмотров33K
image


Патрик и Джон Коллинсон, основатели Stripe (в 22 года и в 21 год), с капитализацией $35 млрд.

Y Combinator — лучший в мире акселератор для стартапов по количеству единорогов (21), по объему привлеченных инвестиций ($27 млрд) и по капитализации выпускников ($155 млрд). Важно отметить еще то, что среди выпускников YC было несколько основателей моложе 18 лет (и один 20-летний из России).

А ещё Y Combinator выкладывает все свои учебные материалы бесплатно, уже более 10 лет.

Основатели и техдиры миллиардных стартапов Amazon ($1.55 трлн), Facebook ($720 млрд), PayPal ($127 млрд), AirBnb ($40 млрд), Pinterest ($38 млрд), Stripe ($35 млрд), LinkedIn ($26.2 млрд), Slack ($23 млрд), WatsApp ($19 млрд), Doordash ($16 млрд), Twitch ($15 млрд), Netscape ($10 млрд), Sun Microsystems ($7.4 млрд), Zenefits ($4 млрд), Segment ($4 млрд), Box ($2.76 млрд), Quora ($2 млрд), Asana ($1.5 млрд), Zappos ($1.2 млрд), Docker ($1.2 млрд), Pebble, Jawbone, Opsware, Weebly, Yahoo!Mail, Gmail, Mixpanel, Scribd и пр, а так же основатели венчурных фондов Andreessen Horowitz, Cowboy Ventures делятся своим опытом со всем миром. Это контент невероятного качества для тех, кто хочет играть в «высшей лиге», на международном уровне.

Сейчас у Y Combinator 172 видео-лекции в плейлистах: 2012, 2013, 2014 NY, 2014 Europe, 2014 SV, How to Start a Startup (2014 Lectures), 2016, 2017, 2018, Startup Investor School 2018, 2019, 2020. Ниже приведены переводы, субтитры и транскрипты 75 из них.
Читать дальше →
Всего голосов 17: ↑9 и ↓8+11
Комментарии1

История рефакторинга приложения «Ситимобил»

Время на прочтение5 мин
Количество просмотров8.9K


Чуть больше года назад я присоединился к команде «Ситимобил» в качестве Android-разработчика. Привыкал к новому для себя проекту, новым подходам и технологиям. На тот момент у «Ситимобил» уже была довольно длинная история, как и у принятого мной проекта, Android-приложения для заказа такси. Однако, как это часто в таких случаях бывает, код нёс в себе характерные следы старых решений. И сейчас, после успешного рефакторинга кода, хочу поделиться идеями, которые, как я считаю, могут пригодиться тем, кому предстоит рефакторить уже существующий проект. И прежде всего, это может быть полезно небольшим компаниям с небольшими командами разработчиков.
Читать дальше →
Всего голосов 31: ↑28 и ↓3+25
Комментарии22

Информация

В рейтинге
Не участвует
Откуда
Барнаул, Алтайский край, Россия
Дата рождения
Зарегистрирован
Активность