• А вы уверены, что пользуетесь микросервисами?

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

    Практика показывает, что при сохраняющейся актуальности микросервисной парадигмы нет недостатка в ее трактовках, критике и даже развенчании. Поэтому, возвращаясь к нашим переводным публикациям, мы решили поговорить именно о микросервисах, вернее, рассмотреть развернутый ответ на вопрос, вынесенный в заголовок статьи.
    Читать дальше →
    • +14
    • 8.7k
    • 5
  • Опасности конструкторов

    • Translation

    Привет, Хабр! Представляю вашему вниманию перевод статьи "Perils of Constructors" автора Aleksey Kladov.


    Один из моих любимых постов из блогов о Rust — Things Rust Shipped Without авторства Graydon Hoare. Для меня отсутствие в языке любой фичи, способной выстрелить в ногу, обычно важнее выразительности. В этом слегка философском эссе я хочу поговорить о моей особенно любимой фиче, отсутствующей в Rust — о конструкторах.


    Что такое конструктор?


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


    1. Вы устанавливаете инварианты в конструкторе.
    2. Каждый метод заботится о сохранении инвариантов.
    3. Вместе эти два свойства значат, что можно думать об объектах как об инвариантах, а не как о конкретных внутренних состояниях.

    Конструктор здесь играет роль индукционной базы, будучи единственным способом создать новый объект.


    К сожалению, в этих рассуждениях есть дыра: сам конструктор наблюдает объект в незаконченном состоянии, что и создает множество проблем.

    Читать дальше →
  • Подключение phpStorm tasks к Битрикс24

    • Tutorial
    Добрый день.

    Хочу поделится опытом подключения phpStorm к Битрикс24 для быстрого доступа к задачам и учета времени на их выполнение.

    К сожалению Битрикс24 не входит в список поддерживаемых багтрекеров, а необходимость у меня появилась.
    Читать дальше →
  • Псевдо-инкапсуляция легаси include-ов когда нет времени рефакторить

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

      Наиболее частая ситуация, которую я могу привести в пример — str_repeat('очень-', 20) старый код, не знающий даже классов, планируется перенести или частично использовать в современном фреймворке, но переписывать тысячи строк и десятки зависимостей нет времени. Такое бывает, когда заказчик вдруг решает существенно модернизировать или развивать проект, который 10+ лет работал без изменений, а сапортил его один парттайм-олдскул-программист изредка перезагружая пару-тройку сервисов и восстанавливая пароли.
      Читать дальше →
      • +16
      • 6.2k
      • 1
    • ReactOS, Медведев и €1 000 000

        Картинка для привлечения вниманияЧтобы положить конец всем безосновательным пересудам диванных аналитиков и объективно прояснить ситуацию, я просто оставлю несколько ссылок на официальный пресс-релиз и несколько серьезных информационных ресурсов.
        1. www.reactos.org/ru/news_page_67.html
        2. www.innovaterussia.ru/news/9788
        3. soft.cnews.ru/news/softbox/11685
        4. techcrunch.com/2011/09/13/high-school-student-pitches-reactos-project-to-russian-president
        5. www.bbc.co.uk/news/technology-14899507
        6. woos.es/index.php/woos/entry/30-horas-atravesando-rusia-en-autobus-en-busqueda-de-inversores
        7. woos.es/index.php/woos/entry/russian-president-ambushedby-entrepreneurs


        Позднее этот топик будет добавлено еще несколько весьма интересных ссылок, краткое резюме ситуации, а так же я отвечу на вменяемые вопросы.
      • Внедрение зависимостей в сущности Doctrine при помощи Symfony Dependency Injection Component

        Несмотря на то, что внедрение зависимостей в сущности считается плохой практикой с точки зрения DDD, существуют ситуации в которых это очень удобно. Правомерность использования такого подхода, а ровно как и сравнение его с альтернативами (двойная диспетчеризация, события) не является темой данной статьи. Я хочу рассказать о технической реализации — об интеграции Symfony Dependency Injection Component (далее DIC) с Doctrine для автоматического внедрения зависимостей в загружаемые сущности. Используемые версии Symfony и Doctrine — 2.*.
        Читать дальше →
      • Awesome WM и Dbus

          Я думаю ни для кого не будет секретом, что у Awesome есть «узкое место», если мы запускаем внешний скрипт, который например должен считать данные из файла, или интернета и вернуть результат в виджет или саму систему, то мы периодически можем наблюдать явлениие «фриза», т.е. когда система перестает реагировать на нажатия клавиш и мыши до получения результата обработки (правда активный клиент при этом продолжает работать). Чаще всего это происходит при использовании io.popen или awful.util.pread
          Читать дальше →
          • +26
          • 11.7k
          • 7
        • Менеджер записей ELibrary



            Наверное у каждого на винчестере скапливается огромное количество всевозможных книжек, записей, заметок и так далее. Конечно же все это в различных форматах fb2, pdf, doc, а может быть, что к одной логической записи относится несколько файлов или серия книг. Как все это хранить?
            Читать дальше →
          • Подборка полезных CSS рецептов, или чем мы занимаемся на голых пятницах

            • Tutorial


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

            Итак, представляем вашему вниманию сборку интересных и (надеемся) малоизвестных HTML и CSS-рецептов. Будем рады, если каждый из вас узнает что-то новое!
            Вперед!
            • +101
            • 90.8k
            • 75
          • Как построить разработку дизайна очень большого и долгого проекта

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



            Представим ситуацию. Есть не очень опытный проект-менеджер. На нем висит большой проект и три дизайнера, которые готовые над этим проектом поработать. Позвольте их представить — Вася, Лена и Петя (слева направо на картинке). Немного повысим уровень сложности нашим ребятам. Пусть все они находятся в разных городах, то есть за соседними столами не сидят, на пятничные попойки обеды вместе не ходят и иначе как через мессенджеры и почту связаться не могут. Проект большой и запланирован не на один месяц. Заказчик любит часто изменять свои решения или придумывать новые фичи.

            Посмотрим как они выкрутятся?
            Читать дальше →
          • Общение между окнами одного браузера средствами cookie

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

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

              Читать дальше →
            • Спасибо за HTML5 File API или читаем ID3-тег и заполняем форму не загружая MP3-файл

              HTML5 Powered with Offline & Storage
              С появлением HTML5 у нас появляется много новых и интересных возможностей. Позволяющих создавать еще более качественные приложения.

              Например, File API. Доступ к файлам клиента довольно удобная штука. Мы можем к примеру заполнить форму используя информацию из выбранного пользователем файла:
              • Заполнить форму об аудио-файле из тегов
              • Заполнить форму о фото из EXIF
              Читать дальше →
            • Знакомство с мнемоникой

                Введение

                Доброго времени суток! Сразу оговорюсь, что цель этой статьи — познакомить и, возможно, заинтересовать вас такой штукой, как мнемоника. Мнемоника — наука о запоминании. То бишь совокупность способов и уловок, которые помогут вам запомнить большие объёмы информации в правильной последовательности (Например, 100 случайных слов (чисел) можно запомнить последовательно с интервалом в среднем в 6 секунд). Некоторые умудряются запомнить несколько тысяч цифр после числа Пи. Так же мнемотехника помогает в освоении иностранного языка ). Но нам пока рано об этом думать. Вы спросите:«Зачем мне ета ваша мнемоника?». Я отвечу: вы можете использовать её не только как хобби (от простого облегчения жизни, до того, что можете удивлять друзей, предложив с ними поочерёдно запомнить N информации поочерёдно), но и участвовать в соревнованиях (да-да, есть соревнования по запоминанию, где участвуют не прирождённые гении, а люди, натренировавшие себе память).
                Читать дальше →
              • CSS кнопки с помощью псевдо-элементов

                • Translation
                • Tutorial


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

                В этом уроке я покажу как создать кнопку с изюминкой, используя только якорный тег и мощь CSS.

                Читать дальше →
              • Как мы писали SLA

                Всем привет. Я с моими коллегами работали(ем) в небольшой аутсорсинговой компании. Таких мелких компаний, предоставляющих услуги по обслуживанию инфраструктуры достаточно много, да и почти каждый Системный администратор или ИТ менеджер задумывался, а не начать ли мне подобный бизнес? Одному ли, или с партнером? Вопросов на этом этапе возникает много и я со своей позиции могу поделиться опытом по созданию подобной «конторы».
                Начать хотелось бы с конца, ну или почти с конца — с написания SLA. На самом деле SLA просто необходима, даже если вы начинаете работать один и берете себе клиентов на фриланс. SLA сможет помочь вам мотивированно отказывать симпатичной секретарше в просьбе починить очередной чайник. Я конечно же утрирую, но истина не так далека от примера с чайником. Если вы хотите предоставлять конвеерные услуги, т.е. такие, которые бы были идентичны от клиента к клиенту, то SLA вам в руки. Его можно называть как угодно: доп. соглашением, соглашением уровня сервиса или просто приложением к договору.
                Собственно мы столкнулись с задачей по написанию SLA, когда поняли, что клиенты недовольны тем, что мы не являемся по щелчку пальца и не решаем задачи по мановению волшебной палочки. Твердо решив узаконить отношения с клиентами был составлен юридически «правильный» договор и некое подобие SLA. Конечно многие ИТ менеджеры начнут кидать в меня помидоры, но все же, то что мы создали имеет право называться SLA, т.к. несет аналогичную смысловую нагрузку.
                Читать дальше →
              • Дискриминация большого пальца в мобильных программах

                  Тайна

                  У меня есть вопрос к разработчикам интерфейсов программ для смартфонов. И он слишком обширен, чтобы помещать его в Q&A.

                  Возможно, он глупый и я не понимаю чего-то очевидного — в конце концов, мое знакомство с наукой о создании интерфейсов ограничивается недочитанным Раскиным и парой-тройкой лекций. В таком случае, прошу прощения.

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

                  Собственно, вопрос. Большую часть времени смартфоном управляют одной рукой. А точнее — ее большим пальцем. Тогда почему в стольких программах самая главная кнопка вне его досягаемости?!
                  Читать дальше →
                • Валидация в JavaScript с помощью Valid8

                  Часто приходится «насыщать» интерфейсы с помощью JavaScript. В основном работаю через jQuery, всё нравится, но одна беда – валидация. Постоянно приходится изобретать «велосипед», искать в сети обрывки кода; а ведь хочется написать пару строчек без углубления в детали. Радость не заставила себя ждать: нашёл библиотеку Valid8 (произносится как validate), и, наконец, решил проблему написания кода валидации.

                  Как пользоваться


                  Пользоваться библиотекой оказалось очень просто, чего не скажешь о склеивании jQuery «обрезков» из интернета. Чтобы подключить библиотеку, нужно зайти сюда и нажать заветный Download. Скачается архив, в котором особый интерес представляет файл jquery.valid8.js, его копируем в папку с js файлам нашего проекта и подключаем библиотеку в html:
                  <script src="/js/jquery-1.6.3.js" type="text/javascript" charset="utf-8"></script>
                  <script src="/js/jquery.valid8.js" type="text/javascript" charset="utf-8"></script>
                  

                  Допустим у нас есть форма:
                  <form><ul>
                  <li><input type="text" id="inputSome" /></li>
                  </ul></form>
                  

                  Добавляем валидацию (по умолчанию только проверка обязательности заполения), передавая в качестве параметра строку с сообщением об ошибке. Работаем в стиле jQuery:
                  $('#inputSome').valid8("Заполни это поле!");
                  

                  После того как поле получит фокус и вы из него выйдете не заполнив, объемлющий тег (в нашем случае li) получит класс стиля error.
                  Для визуализации ошибок добавим CSS в head нашего документа:
                  <style>
                  .error input { background:pink; }
                  </style>
                  

                  Валидация готова. Все.

                  Читать дальше →
                • Risk Management: предотвращение проблем vs. ведение регистра рисков

                  Странно, но факт

                  • Абсолютно все стандарты управления проектами и компаниями говорят о необходимости управления рисками. Предлагаются различные модели, инструменты и термины. Каждый ПМ понимает, что это важно. И проходят тренинги. И даже пытаются выполнять такую практику (или процесс) как Risk Management. Но не все (большинство) видят в этом смысл и пользу на практике. В лучшем случае заводят регистры рисков (про которые скоро забывают), в худшем говорят, что управление рисками происходит в ходе ежедневной коммуникации (непонятно, правда, что имеется ввиду под рисками и управлением.
                  • При наличии на проектах Risk register-а менеджмент компании считает что есть недостаток в про-активном управлении проекта и в коммуникациях с заказчиком, который регулярно жалуется на неожиданные проблемы на проекте.
                  • Проджект менеджеры и Проектные команды жалуются на большие затраты времени на работу с рисками (и, очевидно, отсутствием эффекта, а то бы не жаловались.

                  Эти и многие подобные наблюдения были сделаны мной в ходе внедрения системы управления качеством и проведения аудитов процессов в IT компании. В частности, процессов управления проектом. Как и любое нововведение, внедрение правил работы должно сопровождаться обоснованием зачем это нужно. Для этого, в дополненение к навыкам убеждения, необходимы знание теории и практических примеров — как негативных, так и позитивных. На них и основаны мои выводы о секретах эффективного Управления Рисками.
                  Читать дальше →
                • Почтовые рассылки: письменная кухня

                  • Tutorial


                  Каждый день я получаю различные рассылки от многих сервисов, и по роду деятельности с удовольствием их критикую. Но на этот раз мне пришло письмо от PayPal c рекламой магазинов-партнеров, которое меня очень приятно удивило. Это натолкнуло меня на мысль «приготовить» подобную рассылку и поделиться этим с вами.
                  Читать дальше →