• GitLab CI: 6 фич из последних релизов, которых мы так ждали



      В эпоху повсеместного CI/CD мы сталкиваемся с большим спектром сопутствующих инструментов, в том числе и CI-систем. Однако именно GitLab стал для нас самым близким, по-настоящему «родным». Заметную популярность он снискал и в индустрии в целом*. Разработчики продукта не отставали от роста интереса к его использованию, регулярно радуя сообщество разработчиков и DevOps-инженеров новыми версиями.


      Агрегация по месяцам и тегам репозитория GitLab

      GitLab — тот случай, когда активное развитие приносит множество новых и интересных возможностей. Если для потенциальных пользователей это просто один из факторов выбора инструмента, то для действующих — ситуация такова: если вы не обновляли свою инсталляцию GitLab последний месяц, то с большой вероятностью пропустили что-то интересное. В том числе и регулярно выходящие security updates.

      О наиболее значимых — т.е. востребованных нашими DevOps-инженерами и клиентами — нововведениях в последних релизах Community-редакции GitLab и пойдет речь в статье.
      Читать дальше →
    • Настройка Minio, чтобы юзер мог работать только со своим bucket

        Minio это простое, быстрое и совместимое с AWS S3 хранилище объектов. Minio создан для размещения неструктурированных данных, таких как фотографии, видеозаписи, файлы журналов, резервные копии. В minio также поддерживается распределенный режим (distributed mode), который предоставляет возможность подключения к одному серверу хранения объектов множества дисков, в том числе расположенных на разных машинах.


        Цель этого поста настроить minio так чтобы каждый юзер мог работать только со своим bucket.

        Читать дальше →
      • Почему в Петербурге так сложно построить карьеру VP of engineering

          Привет, Хабр! Меня зовут Святослав Кулаков, я VP of Engineering в Aurea Software. Вся моя жизнь прошла в Питере: я родился и вырос на улице Союза Печатников напротив Мариинского театра, учился во второй гимназии с углублённым изучением английского языка и физмата, поступил в Университет аэрокосмического приборостроения (ГУАП). После учёбы я работал в нескольких софтверных компаниях в России и США, но в итоге всё вернулся в Санкт-Петербург и оставался тут даже когда это казалось верной дорогой к карьерному болоту.



          На основании своего личного опыта я расскажу о том, почему многим IT-специалистам нереально найти в Санкт-Петербурге работу по своему уровню, как работает механизм перетягивания лучших специалистов — как минимум, в Москву, а то и сразу в США или другие страны. И о том, как мне всё-таки удалось найти в родном городе свою лучшую работу на данный момент. Но обо всём по порядку.

          Из Санкт-Петербурга в Санкт-Петербург через Санкт-Петербург


          Моя трудовая биография началась с позиции Java-разработчика в небольшой софтверной компании в 1999 году. За следующие 9 лет я продвинулся по карьерной лестнице до позиции Эккаунт Менеджера, где мне подчинялось более 100 человек. Кризис 2008 года сбил нас на взлёте, и моей следующей записью в трудовой стала должность Lead IT Process Manager в московском отделении Deutsche Bank. Полтора года спустя мне поступило заманчивое предложение из США: консультировать бизнес-клиентов компании Grid Dynamics в вопросах оптимизации процессов разработки.
          Читать дальше →
        • Wi-Fi: неочевидные нюансы (на примере домашней сети)

            Сейчас многие покупают точки доступа 802.11n, но хороших скоростей достичь удается не всем. В этом посте поговорим о не очень очевидных мелких нюансах, которые могут ощутимо улучшить (или ухудшить) работу Wi-Fi. Всё описанное ниже применимо как к домашним Wi-Fi-роутерам со стандартными и продвинутыми (DD-WRT & Co.) прошивками, так и к корпоративным железкам и сетям. Поэтому, в качестве примера возьмем «домашнюю» тему, как более родную и близкую к телу. Ибо даже самые администые из админов и инженеристые из инженеров живут в многоквартирных домах (или поселках с достаточной плотностью соседей), и всем хочется быстрого и надежного Wi-Fi.
            [!!]: после замечаний касательно публикации первой части привожу текст целиком. Если вы читали первую часть — продолжайте отсюда.
            Читать дальше →
          • Список Full-Mesh VPN решений

              Введение


              Многие интересуются Full-Mesh (или P2P) VPN, хотят использовать их для игр с друзьями, для связи удаленных офисов, серверов, да для чего угодно. Обычные VPN, вроде OpenVPN или PPTP, пропускают весь трафик через центральный сервер, а Full-Mesh соединяются непосредственно с нодами, зачастую пробивая NAT.
              Читать дальше →
            • Как реализовать почти мгновенное переключение сайта между площадками, когда одна упала

                image

                Бывает, сайты падают из-за отказа площадки хостера, каналов и так далее. Я 7 лет работаю в хостинге, и часто вижу такие проблемы.

                Пару лет назад я понял, что услуга резервной площадки (без доработки их сайта или сервиса) очень важна клиентам. Теоретически тут всё просто:
                1. Иметь копию всех данных в другом дата-центре.
                2. При сбое переключать работу на резервный ДЦ.

                На практике система пережила 2 полные технические реорганизации (сохранение основных идей со сменой значительной части инструментария), 3 переезда на новое оборудование, 1 переезд между поставщиками услуг (переезд из немецкого дата-центра в два российских). На исследование поведения разных систем в реальных условиях под клиентской нагрузкой ушло 2 года.
                Читать дальше →
              • Старый новый рынок или как восстановленные серверы покорили США и Европу

                Привет, Хабр! После нашей первой статьи о восстановленных (refurbished) серверах, мы получили огромный фидбэк, множество заинтересованных людей и уйму вопросов. Что это значит? Как минимум то, что данная тема довольно «горячая». Поэтому мы и решили написать еще один пост, что же сегодня представляет рынок восстановленных серверов, и сколько денег экономит подобное оборудование. Итак, поехали!
                image
                Читать дальше →
              • Интроверты в IT. Как использовать особенности своего характера для достижения целей

                  Несколько лет назад я работал сценаристом обучающих курсов. Однажды утром, начальник встретил меня с лицом «нам надо поговорить».

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

                  Я отклонил это заманчивое предложение и благополучно забыл о нем. Но на следующей неделе я снова встретился с этим психологом. Сначала она сидела на диване и разглядывала каталоги. А потом села неподалеку с видом «я здесь если тебе понадобится помощь». Через какое-то время, мне это надоело и я сказал, что я об этом думаю.



                  Читать дальше →
                • Isostick: флэшка, которая выдаёт себя за оптический привод

                    Вставляете флэшку в USB-порт — и в системе появляется новое устройство USB Mass Storage Device плюс новый USB CD/DVD-привод. Так работает прошивка флэшки Isostick — флэшка идеально подходит для записи ISO-образов, в том числе загрузочных. Самое главное, что на неё можно записать много загрузочных ISO, а встроенный загрузчик (isosel) позволит переключаться между ними при загрузке с USB CD/DVD-привода. Если вам нужно несколько операционок, то этот девайс удобнее, чем использование программ вроде UNetBootin, grub и т.д.

                    Флэшка будет изготовлена и поступит в продажу через несколько недель, когда соберут достаточно денег на заказ производства. Если всё пройдёт удачно, то автор обещает выложить прошивку под открытой лицензией, так что кто угодно сможет делать такие девайсы самостоятельно.
                    Читать дальше →
                  • История игрушки. Поле Чудес

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

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

                      Бесконечные размышления о математическом моделировании ядерных взрывов разрывали мальчикам мозг. Мозг можно было отвлечь тремя способами — алкоголем, азартными играми и спортом. Секс и музыка помогали не всегда.

                      Pole Chudes для iPhone

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

                      Читать дальше →
                    • Как не стать спамером со своей уютной рассылочкой

                        image
                        Пользователь когда-то подписался на рассылку, но уже забыл когда, и главное зачем. Теперь ежедневно к нему падает спам, а по собственному опыту он знает, для того чтобы отписаться нужно зайти по ссылке свой профиль, найти и снять там какую-то галку а главное, помнить свой логин и пароль на давно забытом им сайте.
                        Его действия? «В спам!»

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

                        И вот, с десяток таких «отписок» и гугл будет удобно отсортировывать ваши рассылки в папочку Спам (584), у ВСЕХ ваших подписчиков.

                        Однако многие из нас уже успели заметить: некоторые письма в Gmail при попытке отметить их «В спам!» САМИ предлагают отписаться от рассылки в один клик.

                        Эта фича была введена google более года назад, но лишь единицы рассылок научились ей пользоваться. И не удивительно. В рекомендациях по осуществлению массовых рассылок, лишь косвенно упоминается о том, что Вам нужно сделать.
                        А сделать нужно не многое.
                        Читать дальше →
                      • 10 способов хранить свои проводки

                          wires
                          Уверен, у каждого хабрачеловека со временем количество различных проводов и шнуров от телефонов, КПК и прочих девайсов начинает превышать все разумные пределы. Стол-то не резиновый. Но не отказываться же в конце концов из-за этого от любимых гаджетов. В этой статье я хочу привести несколько изящных дизайнерских решений, чтобы вы могли «хранить свои проводки» в порядке и радости для глаз. Как и советовал профессор Губерт Фарнсворт.

                          Читать дальше →
                        • SCT Error Recovery Control

                            … или что такое на самом деле 'raid edition' для жёстких дисков



                            Немного теории


                            Существуют две стратегии поведения НЖМД при обнаружении ошибки:
                            • standalone/desktop — пытаться прочитать до последнего. Это ощущается как «тормозящий винт», который всё-таки работает, если это единичный сбой, то «затупило, но прошло», плюс характерный перестук перекалибрующихся головок.
                            • raid — отваливаться тут же. Это ощущается как «внезапно была ошибка диска но потом mhdd и т.д. НИЧЕГО НЕ НАШЁЛ ЧТО МНЕ ДЕЛАТЬ».
                            Статегии очевидным образом различаются по предназначению — десктоп лучше протупит, но ошибку не выдаст, в рейде есть запасной винт, и терпеть минутные тормоза на чтении никто не имеет никакой возможности. Не получилось прочитать? Читаем с запасных винтов, помечаем весь винт как сбойный, начинаем ресинк, а диск потом отправят в утилизатор. Возможно, незаслуженно, но нечего икать на ответственной должности.

                            Управление стратегиями поведения при ошибках — это фича дорогих винчестеров. В десктопных сериях её часто просто нет, или она есть, но без права включения — винчестер тупит над ошибкой столько, сколько сочтёт нужным. Второй важный момент — на рейдовых жёстких дисках эта опция включена по-умолчанию. Что может приводить к проблемам.

                            Расшифровка названия


                            Возможность управления поведением диска при ошибках называется очень и очень путанно: SCT ERC. Это расшифровывается как SCT Error Recovery Control. SCT в свою очередь название общего протокола SMART Command Transport. SMART в свою очередь расшифровывается как Self-Monitoring, Analysis and Reporting Technology, таким образом, полная расшифровка SCT ERC звучит так: Self-Monitoring, Analysis and Reporting Technology Command Transport Error Recovery Control (выдохнули).
                            Читать дальше →
                          • Тестирование с помощью программы IOmeter



                              Программа IOmeter — это популярное средство для тестирования производительности дисковой подсистемы и локальной сети. Тест является «100% синтетикой».

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

                              Особую благодарность автор хочет выразить владельцу блога aboutnetapp, пост которого о практическом тестировании систем хранения с помощью IOmeter пнула подвинула автора на написание этой статьи.
                              Читать дальше →
                            • Интеграция со службами каталогов при разработке корпоративных порталов на платформе LAMP

                                Решаемая бизнес-задача / сфера применения


                                Веб-разработчики с завидной регулярностью получают заказы на создание корпоративных порталов. Под порталами в данном случае понимаются внутренние сайты предприятий, предоставляющие информацию и сервисы для собственных сотрудников и наиболее близких партнёров.

                                Подавляющее большинство крупных предприятий уже активно использует единую авторизацию на основе служб каталогов, доступ к которым осуществляется по Lightweight Directory Access Protocol (LDAP).

                                Совершенно естественно, что заказчики заинтересованы в интеграции разрабатываемого портала со службами каталогов, а разработчикам выгодно использовать внешнюю систему авторизации с точки зрения сокращения объёма работ в проекте. И хотя в ряд коробочных продуктов класса «Система управления информацией» встроена интеграция со службами каталогов, разработчикам, тем не менее, приходится решать различные технические и организационные вопросы.

                                Краткое описание проекта


                                Проект, который реализовывала наша компания в начале 2008 года, представляет собой функционально насыщенный корпоративный информационный портал холдинга, включающего в себя несколько территориально распределенных компаний. Подразделения холдинга большей частью объединены службой каталогов Microsoft Active Directory (AD).

                                Платформа для реализации проекта: Linux, Apache, PHP, MySQL, Cetera CMS

                                Основные причины использования авторизации на основе AD в данном проекте:
                                • Обеспечение единого центра управления пользователями (собственно, AD) для системных администраторов компании.
                                • Упрощение доступа к порталу сотрудников компании, для которых необходимость ввода лишнего пароля могла стать критической для начала использования портала.
                                • Большое количество сотрудников компании (несколько тысяч человек), что делает практически невозможным ввод перечня сотрудников в БД портала и распределение персонала по дереву компаний и отделов и телефонному справочнику, реализованному в рамках портала.

                                Используемые технологии


                                Две основные задачи — импорт данных из AD и дальнейшая авторизация пользователей, просматривающих страницы портала.
                                Импорт данных из AD осуществляется через LDAP. LDAP позволяет получить доступ к информации домена — списку пользователей, групп, компьютеров домена и т.д.
                                Авторизация пользователя производится средствами Apache, а точнее его модуля mod_ntlm (доступен для версий Apache 1.3.х, для 2.2.х используется модуль mod_auth_sspi). Mod_ntlm авторизует пользователя на этапе обращения к странице, и, если пользователь проходит авторизацию, его данные (имена домена и пользователя) передаются в переменных сервера (для PHP это $_SERVER)

                                Описание полей AD


                                В рамках данного проекта требовалось получить следующую информацию о пользователе из AD:
                                • полное имя (фамилия, имя, отчество)
                                • доменное имя
                                • email
                                • должность
                                • принадлежность к компании/отделу (относительно корпоративной структуры заказчика)

                                Имя пользователя в домене (его логин) хранится в поле SAMAccountName. Title, Department и Company описывают должность, отдел и компанию. Email хранится в поле Mail, полное имя пользователя содержится в поле Name.

                                Импорт сотрудников


                                Всякая запись в каталоге LDAP состоит из одного или нескольких атрибутов и обладает уникальным именем (DN — англ. Distinguished Name). Имя может выглядеть, например, следующим
                                образом:
                                «cn=Иван Петров, ou=Сотрудники, dc=example, dc=com».

                                Уникальное имя состоит из одного или нескольких относительных уникальных имен (RDN — англ. Relative Distinguished Name), разделённых запятой. Относительное уникальное имя имеет вид ИмяАтрибута=значение. На одном уровне каталога не может существовать двух записей с одинаковыми относительными уникальными именами. В силу такой структуры имени записи в каталоге LDAP можно легко представить в виде дерева.
                                Для выполнения поиска по структуре службы каталога требуется указать путь к корневому элементу, относительно которого будет осуществлен поиск. Также можно указать фильтр, состоящий из перечисления имен атрибутов записи и их значений в формате ИмяАтрибута=Значение.
                                Предположим, что требуется осуществить импорт сотрудников домена COMPANY.RU. Для этого путь поиска будет, например, такой:
                                cn=Users, dc=COMPANY, dc=RU

                                cn=Users указывает на т.н. контейнер под название Users.
                                При выполнении такого поиска без дополнительной фильтрации в результатах могут присутствовать другие элементы помимо самих пользователей. Например, данные о группах. Для получения в результатах поиска лишь данных о пользователях укажем фильтр:
                                ObjectCategory=Person.

                                В некоторых случаях пользователи в AD могут размещаться в т.н. Organizational Units. В таком случае используем путь поиска:
                                ou=Users-and-computers, dc=COMPANY, dc=RU.

                                Такой путь подразумевает, что данные об учетных записях находятся в Organizational Unit под названием Users-and-computers.
                                В процессе импорта может возникнуть потребность определения активности учетной записи пользователя. При импорте может быть интересен атрибут учетной записи UserAccountControl, в котором сохраняются в двоичном виде различные свойства учетной записи. Интересным может быть признак ACCOUNTDISABLE (0x0002). Если данный флаг установлен в атрибуте UserAccountControl, учетная запись считается заблокированной.
                                Для поиска всех активных пользователей потребуется модифицировать фильтр. Он будет таким:
                                (&(objectcategory=Person)(!(UserAccountControl:1.2.840.113556.1.4.804:=2)))

                                1.2.840.113556.1.4.804 — т.н. OID (Object IDentifier), данный OID применяется для отбора объектов, выбранный атрибут которых содержит либо все, либо любой из указанных в фильтре битов. Приведенный выше OID признает совпадение, если в атрибуте присутствует любой из указанных битов. 2 — это значение флага ACCOUNTDISABLE. Данный фильтр целиком можно расшифровать так: Атрибут objectcategory равен Person и в атрибуте UserAccountControl не присутствует бит 2 (0x0002)

                                Пример кода на PHP
                                <?
                                /**
                                * Данный код подключается к AD и получает список всех незаблокированных сотрудников
                                * контейнера Users из домена СOMPANY.RU
                                * Выводится имя сотрудника, его email, компания, отдел и должность в соответствии с данными,
                                * полученными из AD
                                */
                                $ds=ldap_connect("1.2.3.4");
                                if ($ds) {
                                $r=ldap_bind($ds,'COMPANY\\admin','adminPassword');
                                $sr=ldap_search($ds,
                                "cn=Users, dc=COMPANY, dc=RU",
                                '(&(objectcategory=Person)(!(UserAccountControl:1.2.840.113556.1.4.804:=2)))');

                                echo "Number of entires returned is " . ldap_count_entries($ds, $sr) . "
                                ";

                                $info = ldap_get_entries($ds, $sr);
                                // $info содержит результаты запроса...

                                for ($i=0; $i<$info["count"]; $i++) {
                                echo "Name: {$info[$i]['name'][0]}
                                \n";
                                echo "Email: {$info[$i]['mail'][0]}
                                \n";
                                echo "Company: {$info[$i]['company'][0]}
                                \n";
                                echo "Department: {$info[$i]['department'][0]}
                                \n";
                                echo "Title: {$info[$i]['title'][0]}
                                \n";
                                }

                                ldap_close($ds);

                                } else {
                                echo "Unable to connect to LDAP server";
                                }
                                ?>

                                Дополнительная информация по работе с LDAP в PHP может быть получена в документации

                                Проблемы и решения


                                Отсутствие в службе каталогов информации о сотрудниках, достаточной для отображения на портале (полные имена, адреса Email, названия подразделений, хобби, поля корпоративной социальной сети и т.д.).


                                Почти всегда в службе каталогов не содержится вся информация, необходимая для работы портала. Могут отсутствовать как «банальные» данные, например, номер телефона, так и нетипичные для службы каталогов сведения типа «перечень мест предыдущей работы для нужд корпоративной социальной сети». При этом необходимость этих данных для портала сложно недооценивать.

                                Нашим решением проблемы является хранение учётных записей в службе каталогов, а расширенной информации — в открытой БД портала. Предполагается, что управление списком и ролями пользователей осуществляется в службе каталогов, а всё остальное — задачи портала.

                                Недостатком решения является необходимость связывания и синхронизации перечней пользователей в службе каталогов и в БД портала.

                                Важнейшие преимущества:
                                • предоставление пользователям возможности самостоятельно дополнять информацию о себе в БД портала с последующей модерируемой загрузкой этих сведений в службу каталогов;
                                • возможность быстро настраивать набор полей в профиле пользователя портала без влияния на работу службы каталогов.

                                Отсутствие в службе каталогов достоверной информации о принадлежности сотрудника к той или иной компании холдинга или отделу


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

                                Наше решение:
                                1. Завести дерево компаний и отделов на портале средствами системы управления контентом, используя данные об организационной структуре, предоставленные заказчиком.
                                2. Импортировать сотрудников из службы каталогов со сверкой названий элементов дерева, заведенного в БД портала, с содержимым карточек пользователей службы каталогов.
                                3. Пользователей, для которых определить положение в дереве не удалось, импортировать во временную директорию.
                                4. По итогам импорта отображать протокол с нотификацией администраторов портала и службы каталогов о недостатках импорта и некачественных записях в службе каталогов.
                              • Обучаем HID устройство (читай BT-клавиатуру) работать правильно

                                  Приветствую, хабралюди!
                                  На ДР, мне друзья подарили BT-клавиатуру. Маленькая, беленькая, симпатичная, Удобная!
                                  Подключил ее к своему Android 2.3.5 (SGSII), стал с ее помощью лазить по меню, запускать программы, дошел до Вконтакте и решил написать сообщение… а вот переключить на русский язык не смог, но как оказалось позже, это еще были только цветочки! Но кое-что мне удалось. Интересно как?
                                  Вперед по кат...
                                • Основы программирования под Android на примере игры Судоку

                                    В статье описаны основные трудности создания приложений под Android.
                                    Рассматриваются базовые понятия программирования Android.
                                    Для примера описано создание игры Sudoku из книги Hello, Android – Ed Burnette.
                                    Осторожно много скриншотов.

                                    Читать дальше →
                                  • Спокойной ночи!

                                      image Около месяца назад я приобрел HTC Hero. Основной причиной, по которой был выбран этот телефон, а не iPhone, была возможность полноценно разрабатывать приложения под Windows.

                                      В качестве пробы пера я написал небольшую программу, которая выключает звук на ночь. Под катом описание процесса разработки и ссылка на программу.
                                      Читать дальше →
                                    • Пиратство как прогрессивный налог и другие мысли об эволюции распространения контента в Сети [Tim O’Reilly]

                                      • Translation

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


                                      Читать дальше →
                                    • Плюсы и минусы лицензий открытого ПО

                                        Свободное программное обеспечение — широкий спектр программных решений, в которых права пользователя («свободы») на неограниченные установку, запуск, а также свободное использование, изучение, распространение и изменение (совершенствование) программ защищены юридически авторскими правами при помощи свободных лицензий.

                                        Характеристики лицензий:
                                        1. Apache Software License
                                        2. Лицензия BSD
                                        3. GNU General Public License
                                        4. Лицензии MIT
                                        5. Mozilla Public License
                                        6. Консорциум Всемирной паутины

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