Pull to refresh
23
0
Михаил Красильников @Mekras

Веб-разработчик

Send message

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

Reading time7 min
Views9.5K
Привет, Хабр!

Практика показывает, что при сохраняющейся актуальности микросервисной парадигмы нет недостатка в ее трактовках, критике и даже развенчании. Поэтому, возвращаясь к нашим переводным публикациям, мы решили поговорить именно о микросервисах, вернее, рассмотреть развернутый ответ на вопрос, вынесенный в заголовок статьи.
Читать дальше →
Total votes 22: ↑18 and ↓4+14
Comments5

Опасности конструкторов

Reading time8 min
Views33K

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


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


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


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


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

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


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

Читать дальше →
Total votes 60: ↑56 and ↓4+52
Comments103

Подключение phpStorm tasks к Битрикс24

Reading time2 min
Views5.4K
Добрый день.

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

К сожалению Битрикс24 не входит в список поддерживаемых багтрекеров, а необходимость у меня появилась.
Читать дальше →
Total votes 9: ↑7 and ↓2+5
Comments14

Псевдо-инкапсуляция легаси include-ов когда нет времени рефакторить

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

Наиболее частая ситуация, которую я могу привести в пример — str_repeat('очень-', 20) старый код, не знающий даже классов, планируется перенести или частично использовать в современном фреймворке, но переписывать тысячи строк и десятки зависимостей нет времени. Такое бывает, когда заказчик вдруг решает существенно модернизировать или развивать проект, который 10+ лет работал без изменений, а сапортил его один парттайм-олдскул-программист изредка перезагружая пару-тройку сервисов и восстанавливая пароли.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments1

ReactOS, Медведев и €1 000 000

Reading time1 min
Views6.9K
Картинка для привлечения вниманияЧтобы положить конец всем безосновательным пересудам диванных аналитиков и объективно прояснить ситуацию, я просто оставлю несколько ссылок на официальный пресс-релиз и несколько серьезных информационных ресурсов.
  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


Позднее этот топик будет добавлено еще несколько весьма интересных ссылок, краткое резюме ситуации, а так же я отвечу на вменяемые вопросы.
Total votes 115: ↑69 and ↓46+23
Comments209

Внедрение зависимостей в сущности Doctrine при помощи Symfony Dependency Injection Component

Reading time4 min
Views11K
Несмотря на то, что внедрение зависимостей в сущности считается плохой практикой с точки зрения DDD, существуют ситуации в которых это очень удобно. Правомерность использования такого подхода, а ровно как и сравнение его с альтернативами (двойная диспетчеризация, события) не является темой данной статьи. Я хочу рассказать о технической реализации — об интеграции Symfony Dependency Injection Component (далее DIC) с Doctrine для автоматического внедрения зависимостей в загружаемые сущности. Используемые версии Symfony и Doctrine — 2.*.
Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments10

Awesome WM и Dbus

Reading time11 min
Views13K
Я думаю ни для кого не будет секретом, что у Awesome есть «узкое место», если мы запускаем внешний скрипт, который например должен считать данные из файла, или интернета и вернуть результат в виджет или саму систему, то мы периодически можем наблюдать явлениие «фриза», т.е. когда система перестает реагировать на нажатия клавиш и мыши до получения результата обработки (правда активный клиент при этом продолжает работать). Чаще всего это происходит при использовании io.popen или awful.util.pread
Читать дальше →
Total votes 30: ↑28 and ↓2+26
Comments7

Менеджер записей ELibrary

Reading time2 min
Views9.9K


Наверное у каждого на винчестере скапливается огромное количество всевозможных книжек, записей, заметок и так далее. Конечно же все это в различных форматах fb2, pdf, doc, а может быть, что к одной логической записи относится несколько файлов или серия книг. Как все это хранить?
Читать дальше →
Total votes 19: ↑16 and ↓3+13
Comments20

Подборка полезных CSS рецептов, или чем мы занимаемся на голых пятницах

Reading time2 min
Views92K


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

Итак, представляем вашему вниманию сборку интересных и (надеемся) малоизвестных HTML и CSS-рецептов. Будем рады, если каждый из вас узнает что-то новое!
Вперед!
Total votes 143: ↑122 and ↓21+101
Comments75

Как построить разработку дизайна очень большого и долгого проекта

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



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

Посмотрим как они выкрутятся?
Читать дальше →
Total votes 123: ↑117 and ↓6+111
Comments66

Общение между окнами одного браузера средствами cookie

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

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

Читать дальше →
Total votes 95: ↑64 and ↓31+33
Comments48

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

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

Например, File API. Доступ к файлам клиента довольно удобная штука. Мы можем к примеру заполнить форму используя информацию из выбранного пользователем файла:
  • Заполнить форму об аудио-файле из тегов
  • Заполнить форму о фото из EXIF
Читать дальше →
Total votes 65: ↑64 and ↓1+63
Comments12

Знакомство с мнемоникой

Reading time6 min
Views99K
Введение

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

CSS кнопки с помощью псевдо-элементов

Reading time5 min
Views47K


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

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

Читать дальше →
Total votes 238: ↑230 and ↓8+222
Comments117

Как мы писали SLA

Reading time6 min
Views92K
Всем привет. Я с моими коллегами работали(ем) в небольшой аутсорсинговой компании. Таких мелких компаний, предоставляющих услуги по обслуживанию инфраструктуры достаточно много, да и почти каждый Системный администратор или ИТ менеджер задумывался, а не начать ли мне подобный бизнес? Одному ли, или с партнером? Вопросов на этом этапе возникает много и я со своей позиции могу поделиться опытом по созданию подобной «конторы».
Начать хотелось бы с конца, ну или почти с конца — с написания SLA. На самом деле SLA просто необходима, даже если вы начинаете работать один и берете себе клиентов на фриланс. SLA сможет помочь вам мотивированно отказывать симпатичной секретарше в просьбе починить очередной чайник. Я конечно же утрирую, но истина не так далека от примера с чайником. Если вы хотите предоставлять конвеерные услуги, т.е. такие, которые бы были идентичны от клиента к клиенту, то SLA вам в руки. Его можно называть как угодно: доп. соглашением, соглашением уровня сервиса или просто приложением к договору.
Собственно мы столкнулись с задачей по написанию SLA, когда поняли, что клиенты недовольны тем, что мы не являемся по щелчку пальца и не решаем задачи по мановению волшебной палочки. Твердо решив узаконить отношения с клиентами был составлен юридически «правильный» договор и некое подобие SLA. Конечно многие ИТ менеджеры начнут кидать в меня помидоры, но все же, то что мы создали имеет право называться SLA, т.к. несет аналогичную смысловую нагрузку.
Читать дальше →
Total votes 46: ↑44 and ↓2+42
Comments30

Дискриминация большого пальца в мобильных программах

Reading time2 min
Views2.8K

Тайна

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

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

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

Собственно, вопрос. Большую часть времени смартфоном управляют одной рукой. А точнее — ее большим пальцем. Тогда почему в стольких программах самая главная кнопка вне его досягаемости?!
Читать дальше →
Total votes 103: ↑94 and ↓9+85
Comments121

Валидация в JavaScript с помощью Valid8

Reading time2 min
Views4.9K
Часто приходится «насыщать» интерфейсы с помощью 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>

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

Читать дальше →
Total votes 60: ↑55 and ↓5+50
Comments14

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

Reading time7 min
Views25K
Странно, но факт

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

Эти и многие подобные наблюдения были сделаны мной в ходе внедрения системы управления качеством и проведения аудитов процессов в IT компании. В частности, процессов управления проектом. Как и любое нововведение, внедрение правил работы должно сопровождаться обоснованием зачем это нужно. Для этого, в дополненение к навыкам убеждения, необходимы знание теории и практических примеров — как негативных, так и позитивных. На них и основаны мои выводы о секретах эффективного Управления Рисками.
Читать дальше →
Total votes 37: ↑30 and ↓7+23
Comments18

Почтовые рассылки: письменная кухня

Reading time12 min
Views8.2K


Каждый день я получаю различные рассылки от многих сервисов, и по роду деятельности с удовольствием их критикую. Но на этот раз мне пришло письмо от PayPal c рекламой магазинов-партнеров, которое меня очень приятно удивило. Это натолкнуло меня на мысль «приготовить» подобную рассылку и поделиться этим с вами.
Читать дальше →
Total votes 63: ↑59 and ↓4+55
Comments51
1

Information

Rating
Does not participate
Location
Долгопрудный, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Architect, Web Developer
Lead
PHP
Docker
OOP
Linux
Designing application architecture
System analysis
Symfony