Pull to refresh
1
0
Send message

Чистая архитектура на PHP. Как её измерять и контролировать?

Reading time24 min
Views24K

Предисловие


Как ты уже понял из названия, говорить я тут собрался о самом, что ни на есть, “высоком” — Чистой архитектуре. А толчком к развитию всей этой истории послужила книга Роберта Мартина “Чистая архитектура”. Если еще не читал, осмелюсь порекомендовать! Автор раскрывает много важных тем, активно делится своим богатым жизненным опытом (из проф. области естественно) и сделанными на его основе выводами, эпизодически вплетает в главы истории о том, как виртуозно говнокодили (ну и не только, конечно же) наши отцы и деды в далёких 60-х, 70-х, 80-х и даже лихих 90-х, как по крупинкам собирали всеми любимые принципы SOLID и их аналоги в мире компонентов, и чему научились за прошедшие полвека. В процессе чтения книги хорошо прослеживается линия развития индустрии разработки ПО, типичные проблемы, с которыми пацанам приходилось сталкиваться, и способы их решения.

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

Мне кажется, статья будет полезна всем. Те, кто с книгой уже знаком, смогут освежить в своей памяти некоторые ее моменты, или просто пропустить первую часть и сразу приступить к знакомству с инструментом. Те, кто ранее книгу не читал, возможно, и в первой части найдут для себя что-то новое.
Читать дальше →
Total votes 36: ↑33 and ↓3+30
Comments23

Мониторинг сервера — бесплатно или за деньги? Утилиты Linux и специализированные сервисы

Reading time10 min
Views33K


Есть много полезных инструментов, которые помогают отслеживать нагрузку на сервер, начиная с утилит Linux и заканчивая специализированными службами.

Простые утилиты Linux показывают текущее потребление памяти для каждого процесса, нагрузку на CPU, свободное место на диске и статистику по трафику.

Кроме того, есть платные и бесплатные сервисы, которые круглосуточно отслеживают состояние вашего сервера, регистрируют сбои в его работе или в сетевой доступности, а также проверяют производительность приложений.
Читать дальше →
Total votes 40: ↑39 and ↓1+38
Comments38

21 сентября Badoo PHP Meetup #3: производительность

Reading time3 min
Views6.1K
Всем привет!

Я Павел Мурзаков, тимлид серверной команды Badoo. Мы обожаем PHP, вкладываемся в его развитие и развитие сообщества вокруг него. 21 сентября планируем провести третий Badoo PHP Meetup. Приглашаем спикеров и гостей!

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

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

Регистрация по ссылке, начало в 12:00, гостей встречаем с 11:00. 
Читать дальше →
Total votes 43: ↑41 and ↓2+39
Comments7

Оформление документов и Валютный контроль Upwork + УСН6%/Патент + НДС

Reading time6 min
Views8.6K

Данная заметка содержит краткое описание процесса заполнения бумажек в Эльбе (актуально и для других подобных сервисов, но с поправкой на их UI) при работе с Upwork в том случае, если вы решили платить НДС и считать доходами всё что приходит на ваш аккаунт в upwork-е (сразу замечу что на этот счет есть несколько мнений, окончательный выбор всегда за вами), а так же прохождение валютного контроля.


Изначально это всё писалось в качестве памятки для личного использования, но оказалось что оно интересно и другим пользователям. Публикую по их просьбам. Выбор сервисов обусловлен исключительно моим личным опытом (чем пользуюсь о том и пишу), если у вас есть опыт работы с другими/лучшими/дешевыми сервисами буду рад услышать в комментариях :)

Читать дальше →
Total votes 6: ↑4 and ↓2+2
Comments28

Информационная безопасность банковских безналичных платежей. Часть 1 — Экономические основы

Reading time11 min
Views39K


О чем исследование
Ссылки на другие части исследования



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

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

Исследование получилось довольно обширным, поэтому публиковаться будет по частям. И начнем мы с первой части, которая расскажет о том, что такое безналичные платежи с экономической точки зрения.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments23

Service Workers. Инструкция по применению

Reading time9 min
Views132K


Количество выходов в интернет с мобильных устройств ежегодно растёт на 2-4% в год. Качество связи не успевает за такими темпами. Как итог, даже самое лучшее веб-приложение обеспечит ужасный опыт, если пользователь не сможет его загрузить.

Проблема в том, что до сих пор нет хорошего механизма управления кэшем ресурсов и результатов сетевых запросов. В своей статье я хочу рассказать как Service Worker (SW) может помочь в решении этой задачи. Объясню в формате рецептов — какие элементы и в какой пропорции смешать, чтобы получить нужный результат, исходя из задачи и требований.
Поехали!
Total votes 57: ↑57 and ↓0+57
Comments40

10 лучших игр о хакинге, кодинге и вычислениях

Reading time11 min
Views97K

Как все знают из новостных лент, мы живём в постоянно эволюционирующей киберпанковской антиутопии. Люди подключают туалеты к Интернету! Если этот гибсоновский мир кажется вам слишком РЕАЛЬНЫМ, то вы можете поиграть в десять лучших видеоигр о взломе, программировании и вычислениях, чтобы сбежать в мета-антиутопию. Которая, я уверен, является намного лучшим местом.


10. TIS-100


[официальный сайт]

Да-а-а, приготовьтесь к тому, что ваш мозг начнёт болеть. TIS-100 — это игра студии Zachtronics, разработчика игр-головоломок, выпустившей Infinifactory и SpaceChem. В маркетинге она позиционируется как «игра о программировании на языке ассемблера, о которой вы не просили», и хотя я обычно игнорирую маркетинговые слоганы, здесь не могу не согласиться.

Игрок получает в своё распоряжение таинственный компьютер из 70-х, найденный в вещах покойного дядюшки. Когда-то он игрался с ним, пытаясь разобраться. Теперь это ваша задача. Если вкратце, то вам нужно получить числа, чтобы провести машину из точки A в точку B, выполнив на каждом уровне «цели» (например, сначала вывести положительное число, а затем отрицательное). Для этого у вас есть список команд, изложенных в смутном руководстве пользователя. Игра советует вам распечатать это руководство в бумажном виде. В нём есть сделанные дядей примечания и пометки маркером, дающие подсказки о сущности этой машины.
Читать дальше →
Total votes 39: ↑39 and ↓0+39
Comments41

Семейный бизнес в сфере IT. Время зарабатывать деньги

Reading time8 min
Views88K


Предисловие


В конце 2012 года от нас ушел менеджер по продажам. В январе 2013 уволился программист, в марте ― верстальщик. Казалось, что все рушится. Но как же так? Ведь мы только-только создали команду и наладили работу. Сложившаяся ситуация удручала…

Я могла бы обманывать себя и обвинять наших бывших коллег в безответственности и неблагодарности. Но, давайте посмотрим правде в глаза: если менее, чем за полгода уволились трое из четырех сотрудников, проблема явно в компании и ее руководителях.
Читать дальше →
Total votes 115: ↑104 and ↓11+93
Comments58

Как IT-фрилансеру стать предпринимателем. Часть 1

Reading time3 min
Views93K
Всем привет! Это наш первый пост на Хабре, и мы расскажем, как IT-фрилансеру стать предпринимателем.

Вы узнаете, зачем фрилансеру ИП. Почему ИП лучше, чем ООО. Как зарегистрировать ИП самостоятельно. Что делать потом. Надеемся, опыт, который мы накопили за два года нашего проекта «Я люблю ИП», вам пригодится.



Читать дальше →
Total votes 108: ↑85 and ↓23+62
Comments258

Мой последний file uploader

Reading time15 min
Views45K
image
Я — веб-разработчик с непрофильным образованием и ~10-летним стажем. Я делал для веба все, что только могло прийти в голову моим заказчикам и, иногда, начальству. Я люблю эту работу. Но все же есть несколько вещей, которые я делаю совсем не улыбаясь. Одна из них — это file uploader. From the very beginning — когда еще никому не приходило в голову делать его аяксовым — и до настоящего времени — когда он ресайзит картинки, загружает файлы в несколько потоков и многое-многое другое — он остается для меня одной из самых нелюбимых задач. Вроде как у меня получилось с этим справиться. Если интересно — добро пожаловать под кат.
Вас ждут немножко Coffeescript-а, совсем чуть-чуть жалоб на jQuery, краткое описание $.Deferred, один к месту и не к месту нечаянно примененный паттерн и отсылка к одной забавной и интересной книге.
Читать дальше →
Total votes 94: ↑72 and ↓22+50
Comments26

Интервью с Чарльзом Уэзереллом, автором книги «Этюды для программистов»

Reading time2 min
Views29K
Не секрет, что не одно поколение программистов зачитало до дыр книгу «Этюды для программистов» Чарльза Уэзерелла, оригинал которой на английском вышел аж в 1978.



Книга содержит 27 “этюдов”. Каждый этюд – это законченная содержательная задача для обучающихся программированию. Удивительно, книге более 30 лет, но любой из этюдов может быть до сих пор использован по назначению. Сам, будучи фанатом книги, до сих пор храню родной бумажный вариант русского издания, а относительно недавно таки приобрел оригинал на английском.

Увы, о самом авторе было очень мало информации, и более того — не было продолжения или новых книг, чтобы крайне странно после столь хорошей первой книги.

Волею судеб, недавно у меня появилась возможность связаться с Чарльзом и взять у него интервью.
Читать дальше →
Total votes 76: ↑67 and ↓9+58
Comments15

Из Facebook – в Livejournal, Twitter & Вконтакте, кросспостинг в исходных кодах и комментариях

Reading time17 min
Views50K
В этой статье я расскажу о своем опыте разработки кросспостинга из моего Facebook в мой Livejournal (далее – ЖЖ), а также поделюсь исходными текстами, готовыми к старту на ваших аккаунтах.

Причиной написания скриптов было получение возможности поиска по своим записям – возможности, которую Facebook никак не может запустить как часть своего сервиса, а также «оживление» своего ЖЖ. Поскольку доступ к любым постам в Фейсбуке требует обязательной авторизации, поисковых роботов сервис, очевидно, не пускает. Конкретно в моем случае это неудобно: ссылки, видео и мысли, которые я публикую в соцсети, зачастую я публикую «на будущее» – и часто настает тот момент, когда эта информация становится необходимой, но ее уже практически не найти.

Также с использованием опубликованных здесь скриптов удалось перенести архив существующих записей Facebook: более 2000 архивных сообщений моего Facebook перешли в ЖЖ с соответствующими датами. То есть, если у вас еще не было ЖЖ, его можно сразу наполнить информацией за все время.

Также в статье выкладываю готовые скрипты на Perl, с использованием которых можно транслировать статусы Facebook в Livejournal, а оттуда, при наличии соответствующих настроек, в Вконтакте, Twitter и RSS, а с использованием дополнительных веб-сервисов – практически во все блог-движки.
Читать дальше →
Total votes 34: ↑27 and ↓7+20
Comments17

Простая настройка .htaccess для production

Reading time2 min
Views19K
Иногда, когда сайты хостятся на shared-хостинге или работа идет только с Apache, нужно сделать максимальную оптимизацию работы сервера и сайта соответсвенно. В статье приводятся несколько настроек, которые позволят вашему сайту работать лучше.

Читать дальше →
Total votes 94: ↑70 and ↓24+46
Comments49

Laravel — PHP Framework для ремесленников

Reading time2 min
Views108K
Laravel PHP Framework
Laravel — это чистая и стильная основа для разработки. Он избавит вас от спагетти кода. Поможет вам создавать прекрасные веб-приложения используя простой и выразительный синтаксис. Разработка должна доставлять удовольствие. Наслаждайтесь глотком свежего воздуха.
Читать дальше →
Total votes 38: ↑29 and ↓9+20
Comments68

Диплом бакалавра в LaTeX, или ДСТУ 3008-95 в 150 строк

Reading time21 min
Views140K
image
Всем привет. Недавно меня тоже настигла переломная веха студенческой жизни — бакалаврская дипломная работа. Среди многих формальных деталей этого замечательного явления особо заметным стоит нормоконтроль. Нет, я понимаю и всячески поддерживаю, что стандарты необходимы, в том числе стандарты на оформление академического текста. Просто наши стандарты, в отличие от западных, достаточно идиотичны. Они не экономят ни чернила, ни бумагу, они не упрощают поиск литературы по номенклатуре, а усложняют чтение названия. Не говоря уже о том, что текст стандарта спроектирован и описан людьми, работающими в редакторе Microsoft Word. Опять-таки, я не имею ничего против Word, это мощнейшая система. Но технический текст в нем набирать неудобно, и по гибкости он во много раз проигрывает бессмертному творению Дональда Кнута — LaTeX.

Итак, мое написание диплома началось с того, что я потратил 4 часа на настройку преамбулы под нормы украинского стандарта оформления ДСТУ 3008-95. Насколько мне известно, он почти полностью соответствует русскому ГОСТу. Я знал, что существуют готовые решения (например, disser), но после пары проб предпочел настроить каждую деталь самостоятельно. Для тренировки. Тренировка удалась — я узнал бездну новых вещей о LaTeX, этого монстра невозможно выучить полностью :-)

Под катом я полностью опишу процесс настройки каждой конкретной детали и использование их при написании, а также разные мелочи, упрощающие написание диплома еще больше. Сразу предупреждаю: где-то мои решения могут показаться костылями. Где-то они не слишком универсальны. Я это знаю, понимаю, принимаю и приветствую критику и предложения в комментариях ;-)
Читать дальше →
Total votes 105: ↑101 and ↓4+97
Comments54

Руководство по оформлению HTML/CSS кода от Google

Reading time12 min
Views355K

От переводчика


С удовольствием ознакомился с этими рекомендациями и теперь предлагаю вам перевод.

Введение


Это руководство описывает правила для оформления и форматирования HTML и CSS кода. Его цель — повысить качество кода и облегчить совместную работу и поддержку инфраструктуры.

Это относится к рабочим версиям файлов использующих HTML, CSS и GSS

Разрешается использовать любые инструменты для минификации компиляции или обфускации кода, при условии, что общее качество кода будет сохранено.
Читать дальше →
Total votes 295: ↑286 and ↓9+277
Comments168

Написание сложных интерфейсов с Spine.js

Reading time11 min
Views8.6K

Введение в Spine.js


Spine представляет собой небольшой фрэймворк, который позволяет работать по схеме MVC, создавая приложения непосредственно на языке JavaScript, что обеспечивает логическое разделение кода, наследование моделей через классы и расширения. Также во многом этот инструмент базируется на Backbone.js API, так что те разработчики, которые имели дело с данным фрэймворком, без труда разберутся и в Spine (однако существует целый ряд существенных различий). Spine.js может работать совместно с HTML5 и асинхронными запросами сервера.
Читать дальше →
Total votes 39: ↑37 and ↓2+35
Comments17

Создание ознакомительного поискового движка на Sphinx + php

Reading time5 min
Views103K

Предыстория


Раньше для поиска по сайту мы использовали обычный fulltext поиск. Но в определенный момент он перестал нас устраивать и мы решили опробовать альтернативную технологию поиска: Sphinx. К сожалению, у сфинкса совсем нет русской документации, поэтому эта статья — аналог статьи Build a custom search engine with PHP, только на русском языке и для моего локального окружения (windows 7, mysql/php)
Статья состоит из 4 частей:
  1. Краткий рассказ про подготовку базы для поиска.
  2. Рассказ про первоначальную установку и настройку сфинкса
  3. Индексирование базы и тестовый поиск из командной строки
  4. Тестовый поиск из php

Читать дальше →
Total votes 82: ↑73 and ↓9+64
Comments59

Как правильно сортировать контент на основе оценок пользователей

Reading time5 min
Views91K


В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

Постановка проблемы


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

Неправильное решение №1

Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)

Читать дальше →
Total votes 458: ↑423 and ↓35+388
Comments134

JavaScript. Оптимизация: опыт, проверенный временем

Reading time10 min
Views41K

Предисловие


Давно хотел написать. Мысли есть, желание есть, времени нету… Но вот нашлось, так что привет, Хабра.
Здесь я собрал все идеи, которые помогали и помогают в разработке веб-приложений. Для удобства я разбил их на группы:
  1. Память
  2. Оптимизация операций
  3. Выделение критических участков
  4. Циклы и объектные свойства
  5. Немножко о DOM
  6. DocumentFragment как промежуточный буфер
  7. О преобразованиях в объекты
  8. Разбитие кода
  9. События перетаскивания
  10. Другие советы

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

Память

Хоть это и не должно волновать клиентского программиста, но не забываем, что память всё-таки не бесконечна и когда-нибудь может закончиться, например, когда запущено несколько массивных программ: офис, графический редактор, компиляция большой программы и др. Несмотря на то, что приведенный пример тривиален, у меня действительно такое случилось, хоть и не из-за браузера, но он тоже сыграл свою роль: 1,3 Гб оперативы (отладчик, около 30 вкладок), начались тормоза по перегрузке страниц ОП в файл подкачки.
Чтобы уменьшить расход памяти, я предлагаю несколько способов:
Читать дальше →
Total votes 113: ↑92 and ↓21+71
Comments99
1

Information

Rating
Does not participate
Registered
Activity