Прошлая статья «Работаем с Git: первые шаги в GitHub» была посвящена установке, настройке Git и классическим операциям из набора для новичков GitHub. А теперь перейдём к практике и рассмотрим «горячие» сценарии, которые делают трудовые будни куда веселее. Или не очень.
Программист
Тонкости благополучного git-merge
Вступительное слово
Считается, что «киллер фичей» СКВ 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, содержащей много важной информации, на которую я опираюсь.
Git happens! 6 типичных ошибок Git и как их исправить
Прим. перев.: На днях в блоге для инженеров любимого нами проекта GitLab появилась небольшая, но весьма полезная заметка с инструкциями, которые помогают сохранить время и нервы в случае различных проблем, случающихся по мере работы с Git. Вряд ли они будут новы для опытных пользователей, но обязательно найдутся и те, кому они пригодятся. А в конец этого материала мы добавили небольшой бонус от себя. Хорошей всем пятницы!
Все мы делаем ошибки, особенно при работе с такими сложными системами, как Git. Но помните: Git happens!
Вывод Jira из состояния помойки, с чего начать
Часть проектов заморозилась, часть отвалилась, РП выгнали, но задачи в Jira не почистили. У вас на руках 10-20 идущих “проектов” и нужно быстро понять где больше болит.
Сопоставив опыт участников посиделок КиФБ (клуб имени Фрэнсиса Бекона) в решении этой задачи, мы представили этот опыт в записанном виде (за что спасибо всем участникам).
Есть ли жизнь без тестов?
Интернационализация: как вывести продукт на международный рынок (и не сойти с ума)
«Наш продукт популярен на внутреннем рынке, поэтому теперь мы думаем выходить на международный. С чего мне начать как менеджеру по продукту?»
«Поначалу выход на новый рынок не казался чем-то сверхсложным, но вопросов появляется всё больше и больше… а сроки поджимают».
Примерно такое я регулярно слышу от людей, которые начинают выводить свой продукт на международный рынок. Сложность выхода на глобальный уровень обычно недооценивают, и это приводит к задержкам, дополнительным расходам и сокрушительным провалам.
В этой статье мне хотелось бы пройтись по моему контрольному списку вопросов, составленному на основе общепринятых рекомендаций по локализации и моего 10-летнего опыта международного масштабирования программных продуктов (это и мобильные игры, и B2C-приложения для массового рынка, и SaaS-продукты B2B).
Примечание. Этот список ни в коем случае не исчерпывающий. В нем рассмотрено в основном то, что поможет менеджеру по продукту обеспечить беспроблемный выход ПО на новом рынке (поэтому здесь я не углубляюсь в продажи, маркетинг и юридические аспекты).
Для начала — основные понятия:
- Глобализация — подготовка продукта к работе на разных рынках. Сюда относится различные аспекты маркетинга, дизайна и технологической реализации.
- Интернационализация (сокращенно — i18n) — обеспечение максимальной универсальности продукта, создание прочного фундамента для локализации и перевода.
- Локализация (сокращенно — l10n) — адаптация продукта к определенным региону, культуре и языку.
- Перевод (сокращенно — t9n) — собственно перевод продукта на новый язык.
Недооценка объема работы по интернационализации и локализации часто связана с тем, что эти процессы воспринимаются лишь как перевод пользовательского интерфейса и документации, тогда как на самом деле это куда более сложные задачи.
Взаимоотношение различных процессов в рамках продукта. Источник: блог Adobe.
Переведено в Alconost
Как не опозориться с локализацией и интернационализацией
И меня, мягко говоря, смутила валюта, в которой была указана стоимость услуг. Ведь на дворе вторая половина 2018 года, а латвийский лат официально прекратил своё существование в январе 2014 и был заменён на евро. И за 4 года не упомянутая выше компания не удосужилась провести ревизию используемых локалей.
Под катом я расскажу, что следует помнить при интернационализации и локализации своего продукта и где черпать данные для периодических ревизий.
Внутреннее устройство Kubernetes-кластера простым языком
Прим. перев.: как многим хорошо известно, Kubernetes — это всего лишь пять бинарников. Об их назначении и рассказывает в этой статье Vedashree Patil, консультант из Deloitte Digital. Когда ей потребовалось изучить Kubernetes, она столкнулась с большим количеством новой информации, осознать которую за короткое время было непросто. Так она пришла к идее уменьшить порог вхождения в K8s другим специалистам, создав цикл публикаций «Kubernetes 101». Все статьи сопровождаются простыми и наглядными комиксами. Представляем вниманию перевод материала под названием «Внутри кластера» из этого цикла.
Как выглядит кластер Kubernetes? Как работают узлы? Из этой статьи вы узнаете обо всех основных компонентах системы Kubernetes.
SSR для Bitrix с Vue.js без Nuxt.js: как не потерять поисковую индексацию
Привет, Хабр!
Я Саша Шутай, backend-тимлид в компании AGIMA. Сейчас расскажу, что делать, если на проекте Bitrix сожительствует с Vue.js и поисковые боты не видят контента вашего сайта. Рассмотрим технологию серверного рендеринга страниц с помощью Puppeteer, как это всё настроить и быстро запустить для любого веб-приложения.
Вебсокеты на php. Выбираем вебсокет-сервер
Docker + php-fpm + PhpStorm + Xdebug
Сказано — сделано. Подробности под катом.
Поняв Docker
Если вы еще никогда не поддерживали чужие приложения, или пусть даже свои, но таких размеров, что уже не помещаются в одной голове, то прошу вас расслабиться, откинуться на спинку кресла и воспринимать прочитанное как поучительную сказку с надуманными проблемами, забавным сюжетом и очевидным счастливым концом. В противном случае, если реальный боевой опыт у вас имеется, добро пожаловать в ад, но с IDDQD и IDKFA.
К вашему сведению! В этой статье мы рассматриваем само явление docker-контейнеров, а не составляем список микросервисов, которые гнездятся внутри. Этим мы займемся в следующей серии, во имя справедливости!
UPDATE: пришлось заменить «докер» на «docker», иначе статья не ищется. Заранее прошу прощения за все «docker'ы» в тексте. Селяви.
Что мы имеем сегодня
- Зоопарк дубовых VPS-хостингов.
- Дорогие IaaS и PaaS с гарантированным vendor lock in.
- Уникальные сервера-снежинки.
- Ворох устаревших зависимостей на неподдерживаемой операционке.
- Скрытые связи частей приложения.
- Незаменимый админ полубог на скейтборде.
- Радуга окружений: development, testing, integration, staging, production.
- Генерация конфигов для системы управления конфигами.
- Feature flagging.
Германия — достоинства, недостатки и неповторимое, часть 1
Живу в Германии с 2014ого.
От некоторых аспектов страны до сих пор в восторге. От других хочется лезть на стенку и выть "ну почему так?" Постараюсь раскрыть и те, и другие - и раскрыть, почему останусь здесь, скорее всего, до конца жизни.
Зарплаты программистов
Ну как же без этого? Решил вопрос оплаты вынести в самое начало, ведь если он вас разочарует, то ваш интерес к стране может сразу угаснуть.
Жизнь и работа в Нидерландах
Наконец-то руки дошли до продолжения статьи "Истории о моей работе в Нидерландах" — а именно, пришла пора рассказать о деталях переезда и поделиться практическими советами с будущими трактористами. Прошу прощения у всех, кто ждал этого продолжения гораздо раньше. Не буду распространяться о причинах задержки, но поверьте, это были очень напряженные для меня месяцы, и я вряд ли мог взяться за эту статью в тот срок, который озвучивал раньше. Кстати, дорогие мои вопрошающие в личке! Вы, на самом деле, являетесь полноправными соавторами этой статьи, потому что некоторые из ваших умных и иногда неожиданных вопросов мне самому в голову не пришли бы, а другие сделали мою задачу гораздо проще. Вместо того, чтобы обдумывать план статьи, подачу и прочая, прочая, бери формат вопрос-ответ, и дело в шляпе. Уважаемые nightstalker, ATmegAdriVeR, Flem_1, dmtrr, ChingizKhalafov, Carduelis, artem2511, gri_mih, Ommonick, это ваши вопросы, вам от меня огромная благодарность. Надеюсь, от всех читателей тоже.
Ну а начну я все же с краткого рассказа о том, как я дошел до жизни в Нидерландах.
Конвейер обработки текста в Sphinx
Картина в целом
Упрощённо конвейер обработки текста (в движке версий 2.х) выглядит примерно так:
Выглядит достаточно просто, однако дьявол кроется в деталях. Есть несколько очень разных фильтров (которые применяются в особом порядке); токенайзер занимается ещё чем-то помимо разбиения текста на слова; и наконец под «и т.д.» в блоке морфологии на самом деле находится ещё по меньшей мере три разных варианта.
Поэтому более точной будет следующая картина:
Улучшаем релевантность поиска в sphinxsearch
Основная проблема документации sphinx на мой взгляд малое количество примеров для большинства интересных настроек, сегодня постараюсь рассказать в примерах о них. Опции которые я затрону касаются в основном алгоритмов и вариаций поиска. Все кто плотно работает со sphinx не узнают ничего нового, а новички надеюсь смогут улучшить качество поиска на своих сайтах.
Sphinx содержит две независимые программы indexer и searchd. Первый строит индексы по данным взятым из базы данных, второй производит поиск по построенном индексу. А теперь перейдем к настройкам поиска в sphinx.
morphology
Позволяет задать морфологию слов, я использую только стемминг. Алгоритм стемминга с помощью набора правил для языка обрезает окончания и суффиксы. Стемминг не использует готовые базы слов, а основан на определенных правилах обрезания для языка, что делает его маленьким и быстрым, но это же и добавляет ему минусы так как он может совершать ошибки.
Пример нормализации слова стеммингом на русском.
Слова “яблоко”, “яблока”, “яблоку” будут обрезаны в “яблок” и любой поисковый запрос с вариацией слова “яблока” будет тоже нормализован и найдет записи со словами которые были описаны выше.
Мой опыт подготовки к трудоустройству в Google
От переводчика: сегодня публикуем для вас статью Праякты Татавадкар, она разработчик с небольшим стажем, но знания и опыт позволили ей получить работу в Google (со второй попытки), стать членом команды разработчиков YouTube.
Google была для меня компанией мечты с самого начала пути. Когда я успешно прошла собеседование, ко мне стали обращаться многие знакомые и друзья с просьбой поделиться опытом. Беседуя с ними, я определила самые важные для большинства вещи, которыми теперь делюсь в этой статье.
Ontol: подборка видео-лекций и каналов для продвинутых программистов
Недавно на HackerNews обсуждали видео и каналы, где можно поучиться продвинутому программированию. Под катом — подборка из 30 полезняшек.
В перерывах между полетами на реактивном ранце и переводами материалов Y Combinator, я делаю проект «Ontol» — такое место в сети, где максимальная концентрация полезного, апгрейдящего мировоззрение материала (ценного на горизонте 10+ лет, например, такого), которым можно делиться бесплатно в 1 клик. (канал в телеграм: t.me/ontol)
Вот мои предыдущие бесплатные образовательные подборки:
- 75 лекций на русском от Y Combinator (из 172)
- Подборка 143 переводов эссе Пола Грэма (из 184)
- Все статьи Тима Урбана (Wait But Why) на русском [46 из 99]
- 450 бесплатных курсов от Лиги Плюща
- Онтол от DeepMind: самые полезные материалы по искусственному интеллекту от мирового лидера
- Лучшее в мире видео-объяснение нейронных сетей, глубокого обучения, градиентного спуска и обратного распространения
- 70 офигенных видеокурсов от мировых звёзд
75 лекций на русском от Y Combinator (из 172)
Патрик и Джон Коллинсон, основатели 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 из них.
История рефакторинга приложения «Ситимобил»
Чуть больше года назад я присоединился к команде «Ситимобил» в качестве Android-разработчика. Привыкал к новому для себя проекту, новым подходам и технологиям. На тот момент у «Ситимобил» уже была довольно длинная история, как и у принятого мной проекта, Android-приложения для заказа такси. Однако, как это часто в таких случаях бывает, код нёс в себе характерные следы старых решений. И сейчас, после успешного рефакторинга кода, хочу поделиться идеями, которые, как я считаю, могут пригодиться тем, кому предстоит рефакторить уже существующий проект. И прежде всего, это может быть полезно небольшим компаниям с небольшими командами разработчиков.
Информация
- В рейтинге
- Не участвует
- Откуда
- Барнаул, Алтайский край, Россия
- Дата рождения
- Зарегистрирован
- Активность