• Клай-фай


      Кадр из фильма «Послезавтра»

      Термин «клай-фай» предложил в 2007 году писатель и участник движения против изменений климата Дэн Блум. Он хотел легко запоминающееся слово, чтобы привлечь внимание к проблеме глобального потепления. Три года спустя этот термин использовал Скотт Тилл в статье для Wired, а в 2011 году писательница Маргарет Этвуд начала называть книги о климатических изменениях клай-фаем, она использовала этот термин в своем твиттере, тем самым сообщив о нем 500 000 своих подписчиков. С этой точки зрения жанр клай-фай можно назвать ультрасовременным явлением в литературе, которое возникло как простой интернет-мем и превратилось в отдельный жанр благодаря силе соцсетей.
      Читать дальше →
      • +11
      • 4,7k
      • 9
    • Опыт 1440 миграций баз данных



        Представьте себе Oracle DBA. Ему уже за тридцать, он слегка полноват, носит жилетку, на шее у него висит секретный токен доступа ко всем базам, а в резюме полстраницы пройденных им сертификаций. Суббота. День большого релиза. Кульминация. Время накатывать изменения на базу данных. Он набирает sqlplus, нажимает ENTER и по черному экрану куда-то вверх, в пустоту, устремляются километры SQL команд. Совсем как в звездных войнах. Спустя пять минут все готово. Через час релиз завершен. Работа сделана, день удался. Теперь можно и по паре пива.
        На самом деле нет
      • Windows и case-sensitive filesystem

          Давным-давно, на заре своего рождения Windows использовала файловую систему FAT. Потом ей на смену Microsoft и IBM разработали NTFS. В те давние времена возникло два противоположных подхода к файловой системе. В Linux используется case-sensitive файловая система, а в Microsoft — case-insensitive.

          Суть в том, что в case-sensitive файловой системе считается, что имена, написанные в разных регистрах (например, FILE.txt и file.txt) — это разные имена. А для Windows между ними нет разницы.



          Несмотря на нечувствительность Windows к регистру букв, разработчики NTFS подошли к делу ответственно, и бережно сохраняют регистр имен каталогов и файлов. Возможно, они не теряли надежды на сближение с противоборствующим лагерем.
          Читать дальше →
        • Codeisok, или История code review в Badoo



            Привет, читатель! Меня зовут Илья Агеев, я работаю в Badoo уже почти семь лет. Текущая моя должность называется Engineering Director Quality Assurance (директор по контролю качества), и по факту я занимаюсь много чем в компании: контроль качества, релиз-инжиниринг, процессы и методология разработки и даже немного информационная безопасность. Одна из сфер, которая входит в зону моей ответственности, — ревью кода. Об истории и результате нашего процесса (которым стал опенсорсный codeisok) я сегодня и расскажу.

            Статья содержит историческое описание, технического сравнения различных инструментов для ревью кода в ней нет. Тем не менее я даю примеры таких инструментов, и если вы заинтересуетесь вопросом, то вполне можете попробовать самостоятельно установить и сравнить тулзы.
            Давным-давно в Badoo не было code review. Практически. Первой попыткой обмена информацией об изменённом коде была простая рассылка изменений на почту. К слову, и Git тогда не использовалась.

            Летом 2011 года, когда я только пришёл в компанию, для хранения версий кода использовалась SVN. Бывалые рассказывали, что до этого все работали в CVS и что была одна попытка перейти на Mercurial, но она провалилась. Почему — никто не помнит. Я подозреваю, что дело в том, что, когда решили попробовать Mercurial, особой надобности в переходе на другую VCS не было. Всё и так всех устраивало: работает, и ладно. А модный инструмент ради моды никому не нужен.
            Читать дальше →
          • Что спрятано внутри онлайн-касс: разработка фискального регистратора



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

              В этой статье мы поделимся опытом разработки кассового аппарата и расскажем, как там всё устроено изнутри.
              Читать дальше →
              • +18
              • 7,9k
              • 5
            • Диванный вице-президент: как я работаю директором по продуктам на полной удалёнке

              Привет. Меня зовут Максим Винников, я Vice President of Product Management в компании Aurea Software. В той же самой компании, на которую работает Слава Кулаков, знакомый многим по истории, как он стал фрилансером, получающим $200 000 в год. Вопросы и комментарии к тому посту продолжают идти до сих пор, поэтому сегодня, уже на своём примере, я расскажу, что из себя в повседневном режиме представляет уже непосредственно работа, за которую платят такие гонорары — и постараюсь ответить на вопросы по теме живьём.

              [update] В прямом эфире ответил на вопросы, появившиеся в комментариях за день:



              Согласно стандартам Aurea и ESW Capital каждый сотрудник должен отработать 40 часов в календарную неделю. Я, исходя из своей позиции и физических возможностей, придерживаюсь графика 5/2. Моё основное рабочее окно расположилось в промежутке с 14:00 до 19:00, это суммарно 5 часов в день. Ещё 3 часа в день дорабатываются тогда, когда мне удобнее: в один день я могу поработать поздним вечером, в другой — приступаю с самого утра, чтобы освободиться пораньше.

              Так как команда на 100% децентрализована и у нас нет офисов, то всё взаимодействие между сотрудниками переходит в онлайн. Я, как VP (а это менеджерская позиция), вовлечён в различные рабочие процессы множества людей сильнее, чем среднестатистический разработчик. Это тоже стоит учитывать.
              Читать дальше →
            • Code Conventions: как мы сохраняем быстрый темп разработки PHP-проекта

                Привет, Хабр. Меня зовут Евгений Удодов, я сооснователь и технический директор компании Roistat. Хочу поделиться нашим опытом разработки большого и сложного продукта — системы аналитики.

                TL;DR: Мы выложили на github наш Code Conventions и рассказали в статье о том, как его применять на практике.

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

                За 4 года существования нашего проекта мы сделали больше 20 000 Pull Request’ов (далее PR) и под катом я расскажу, как же мы решили эти проблемы.


                Читать дальше →
              • Исчерпывающие бенчмарки PHP 5.6, 7.0, 7.1, 7.2 и HHVM (2018)

                • Перевод


                Каждый год мы стараемся тщательно измерять производительность разных версий PHP и HHVM на различных платформах. В этом году мы измерили четыре версии PHP и HHVM на 20 платформах/конфигурациях, включая WordPress, Drupal, Joomla!, Laravel, Symfony и многие другие. Также мы протестировали популярные решения для электронной коммерции вроде WooCommerce, Easy Digital Downloads, Magento and PrestaShop.


                Мы всегда рекомендовали пользователям WordPress не пренебрегать преимуществами свежайших поддерживаемых версий PHP. Не только ради безопасности, но и ради повышения производительности. Причём речь идёт не только о WordPress, это по большей части справедливо для всех платформ. И сегодня мы продемонстрируем, как PHP 7.2 одерживает сокрушительную победу!

                Читать дальше →
              • Портрет слушателей вечерних курсов

                  Добрый день.

                  С весны 2014 года я совмещаю разработку в области BI и преподавание основ программирования на вечерних курсах профессиональной (пере)подготовки. За четыре года у меня сложилась определенная классификация слушателей. Далее я в общих чертах расскажу какие люди встречаются, какие проблемы у них возникают, как их можно решить. Ну и в качестве бонуса: как на собеседовании распознать в слушателях вечерних курсов потенциальный талант.

                  Допускаю, что такая классификация актуальна только в моем контексте, поэтому немного расскажу об организации. Курсы проводятся очно. Занятия начинаются примерно в 18:00 по местному времени. Чаще всего раз в неделю. Время, отведенное на обучение, варьируется от 7 до 30 занятий и зависит от платежеспособности и желания студента. Стоимость одного занятия студенту обходится примерно в 900 рублей. У нас нет даже формального отсеивания студентов. Кто хочет учиться, с тем и работаем.

                  Если вам это интересно, добро пожаловать под кат.
                  Читать дальше →
                • Ваш пакет Composer сломан: обновите идентификатор лицензии

                    image


                    Если вы, как и я:


                    • являетесь мэйнтейнером какой-либо библиотеки или фреймворка;
                    • ваша библиотека или фреймворк выпущены под какой-либо свободной лицензией
                    • ваша библиотека или фреймворк доступны к установке через Composer и размещены на сервисе Packagist;

                    то у вас, возможно, есть проблемы, о которых вы и не подозреваете.

                    Загляните под кат, чтобы узнать, что нужно сделать уже сегодня!
                    • +26
                    • 5,9k
                    • 8
                  • Алгоритм выбора location в Nginx

                      Алгоритм выбора location обязателен к знанию при настройке nginx. Тем не менее, на официальном сайте nginx (на 2018 год) не сказано ни слова про алгоритм выбора в случаях, когда какие-то location'ы вложены друг в друга, а в статьях в интернете приводятся в корне неверные алгоритмы. В статье также будет дан пример уязвимого конфига.
                      Читать дальше →
                    • SQL ключи во всех подробностях

                      • Перевод
                      В Интернете полно догматических заповедей о том, как нужно выбирать и использовать ключи в реляционных базах данных. Иногда споры даже переходят в холивары: использовать естественные или искусственные ключи? Автоинкрементные целые или UUID?

                      Прочитав шестьдесят четыре статьи, пролистав разделы пяти книг и задав кучу вопросов в IRC и StackOverflow, я (автор оригинальной статьи Joe «begriffs» Nelson), как мне кажется, собрал куски паззла воедино и теперь смогу примирить противников. Многие споры относительно ключей возникают, на самом деле, из-за неправильного понимания чужой точки зрения.

                      Содержание



                      Давайте разделим проблему на части, а в конце соберём её снова. Для начала зададим вопрос – что же такое «ключ»?
                      Читать дальше →
                    • Достоинства и фатальные недостатки типизации в php

                        Язык php часто ругают, обычно необоснованно. Особенно удивляет, что javascript ругают меньше. Зачастую это делают люди, которые писали на нем 10+ лет назад, когда язык был действительно чертовски плох, да и разработчики в те времена не задумывались над качеством кода. Посмотрите хотя бы на код wordpress, который до сих пор вызывает шок.


                        Ругают необоснованно, но проблемы у языка, конечно же, есть, и они серьёзные. Разуметеся, если сравнить последние релизы php7 (с нормальным ООП и строгим тайпхинтингом) и php4, то разница будет колоссальная. Однако и в последних версиях языка не всё гладко, и до java/c# пока что очень далеко. Более того, берусь утверждать, что будущее php тоже довольно сомнительно (с точки зрения типов).


                        Другими словами, давайте рассмотрим предметно, что хорошо и что плохо в php с точки зрения типизации.

                        Читать дальше →
                      • 21 совет по эффективному использованию Composer

                        • Перевод
                        • Tutorial

                        Хотя большинство PHP-разработчиков умеют пользоваться Composer, не все делают это эффективно или лучшим возможным образом. Поэтому я решил собрать советы, которые важны для моей повседневной работы. Большинство из них опираются на принцип «От греха подальше»: если что-то можно сделать несколькими способами, то я выбираю наименее рискованный.
                        Читать дальше →
                        • +34
                        • 16k
                        • 7
                      • Бэкенд игрового сервера World in Conflict выложен в открытый доступ

                          image

                          Исключительно хорошая новость: совместными усилиями компаний Ubisoft и шведской Massive Entertainment, в открытый доступ выложен рабочий сервер для игры World in Conflict. Данная стратегия в реальном времени (RTS) вышла в 2007 году; её официальный сервер Massgate был закрыт в 2016, после чего коммьюнити massgate.org решило вернуть игру к жизни, чем и вдохновило Ubisoft на данный шаг — теперь любой сможет поднять свой собственный сервер для мультиплеера и другого онлайн-функционала.

                          Исходный код бэкенда доступен по ссылке на Github по лицензии GPL-2.0. Сам игровой сервер написан на С++, поэтому для компиляции вам потребуются CMake и Visual Studio. Для запуска вам также понадобятся MySQL (в оригинале использовался MySQL 4.2.1, но всё должно работать и на более свежих версиях) и любой простейший веб-сервер (авторы рекомендуют SimpleHTTPServer).

                          Кстати, саму игру можно сейчас получить абсолютно бесплатно до 23 декабря по ссылке — правда, для этого вам может потребоваться завести аккаунт в Uplay.
                          Читать дальше →
                          • +17
                          • 7,2k
                          • 1
                        • Латентные паразиты

                          За годы работы ИТ-директором, среди руководителей разного уровня, сделал одно наблюдение — забавную разницу в подходах к постановке задач и контролю их выполнения.

                          Есть нормальные, адекватные постановка и контроль, которые приводят к решению задачи, двигают вперед и улучшают состояние компании.

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

                          В чем эта разница? Попробуем разобраться.

                          Читать дальше →
                        • За пять дней я прошел собеседования в пяти компаниях Силиконовой долины и получил пять предложений о работе

                          • Перевод
                          За пять дней, с 24 по 28 июля 2017 года, я прошел собеседования в LinkedIn, Salesforce Einstein, Google, Airbnb и Facebook; все пять компаний предложили мне работу. Это был замечательный опыт и я понимаю, как мне повезло, что мои усилия оправдали себя, поэтому решил написать об этом. Здесь я расскажу о том, как готовился к собеседованиям, как они проходили и какое впечатление произвели на меня компании.



                          Как все началось


                          Я отработал в Groupon почти три года. Это моя первая работа, там были и прекрасные люди, и отличные проекты. Мы делали всякие интересные штуки, вводили перемены внутри компании, публиковали материалы и все в таком духе. Но со временем я стал ощущать, что темп моего самообразования стал затухать (попросту говоря, замедляться), мне не хватало пищи для ума. К тому же, как и всякого разработчика ПО из Чикаго, меня тянуло в Область залива Сан-Франциско — ведь там столько известных компаний.

                          Жизнь коротка, а профессиональная жизнь еще короче. Обговорив все с женой и заручившись ее полной поддержкой, я решил сделать решительный шаг и в первый раз в жизни поменять работу.
                          Читать дальше →
                        • Почему нужно перестать использовать Git rebase

                          • Перевод


                          После нескольких лет работы с Git я обнаружил, что постепенно стал переходить на всё более сложные Git-команды в рабочем процессе. Вскоре после того как я открыл для себя Git rebase, я тоже быстро внедрил эту команду в повседневные задачи. Те, кто знаком с этой процедурой, знают, насколько это мощный инструмент и какой это соблазн — постоянно им пользоваться. Но вскоре оказалось, что rebase влечёт за собой ряд неочевидных на первый взгляд трудностей. Но прежде чем обсудить их, хочу быстро рассмотреть различия между merge и rebase.

                          Читать дальше →
                        • Новый класс для MySql: писать запросы к базе теперь быстро, легко и удобно

                            Проблема


                            Когда я прихожу на новое место работы, то первым делом я смотрю на то, как организован слой для работы с СУБД. Я не работал с иными фреймворками помимо первого Yii, волею судьбы я попадаю на самописные решения, но везде я вижу практически одно и тоже — просто отвратительная реализация кода доступа к базам данных.

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