Как стать автором
Обновить
0
0
Сергей Бондаренко @ambalus

Программист PHP

Отправить сообщение

Следует ли мне бросить видеоигры?

Время на прочтение 11 мин
Количество просмотров 118K

Игры могут быть более опасными, чем мы когда-либо думали.

Читать далее
Всего голосов 65: ↑54 и ↓11 +43
Комментарии 580

PostgreSQL Antipatterns: редкая запись долетит до середины JOIN

Время на прочтение 3 мин
Количество просмотров 18K
Если писать SQL-запросы без анализа алгоритма, который они должны реализовать, ни к чему хорошему с точки зрения производительности это обычно не приводит.

Такие запросы любят «кушать» процессорное время и активно почитывать данные практически на ровном месте. Причем, это вовсе не обязательно какие-то сложные запросы, наоборот — чем проще он написан, тем больше шансов получить проблемы. А уж если в дело вступает оператор JOIN…


Само по себе соединение таблиц не вредно и не полезно — это просто инструмент, но и пользоваться им надо уметь.
Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Комментарии 25

PHP-Дайджест № 159 (17 июня – 1 июля 2019)

Время на прочтение 4 мин
Количество просмотров 15K

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.0 alpha 2, BeerPHP, обзор свежих RFC из PHP Internals, включая Strict operators directive, порция полезных инструментов, видео и многое другое.

Приятного чтения!


Читать дальше →
Всего голосов 62: ↑59 и ↓3 +56
Комментарии 7

Отучаемся от токсичных практик на код-ревью

Время на прочтение 9 мин
Количество просмотров 42K

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

Меня попросили поделиться слайдами, но теперь я подумала, что слайды сами по себе малополезны и вырваны из контекста: им не хватает объяснений. Поэтому решила опубликовать эту статью. Позже организаторы конференции выложили видеозапись.
Читать дальше →
Всего голосов 69: ↑50 и ↓19 +31
Комментарии 76

Я порчу разрабам жизни своими код ревью и больше так не хочу

Время на прочтение 5 мин
Количество просмотров 133K


Однажды в моей команде был настолько слабый парень, что его собирались уволить (уволить разработчика!). Каждый мой коммент на ревью к его коду был гвоздем в крышку гроба. Я почти слышал стук молотка, нажимая «submit review». Он был приятным человеком, я даже переживал за него, но это не мешало мне разносить его старания в щепки. Мое право критиковать его работу казалось очевидным и неотъемлемым. Все просто — я сильнее, я прав. Никто же не хочет сказать, что плохой код — это хорошо, а? Его уволили, предварительно лишая стандартной премии в течение нескольких месяцев.

Я говорил себе: «Но ведь не делать же мне всю работу за него!? Он занимал место более талантливого разработчика. Я все правильно сделал». Но почему-то на душе скребли кошки. И когда мне пришел на ревью очередной pull request, что-то очень сильно поменялось.
Читать дальше →
Всего голосов 405: ↑346 и ↓59 +287
Комментарии 504

Кривые развития программиста и немного об эффекте Даннинга — Крюгера

Время на прочтение 9 мин
Количество просмотров 54K
image

Существует два основных пути становления топ-менеджмента в IT-компаниях:

  1. Менеджерский — когда менеджер проекта начинает управлять другими менеджерами.
  2. Технарский — когда разработчик начинает управлять другими разработчиками и количество управляемого им персонала увеличивается.

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

Второй путь является более долгим и не гарантирует успеха, так как является противоречащим сути интроверта-программиста. Однако, на этом пути я бы хотел заострить внимание и поделиться опытом и знаниями.
Читать дальше →
Всего голосов 81: ↑71 и ↓10 +61
Комментарии 180

Как специалисты Google Adwords помогли мне выбросить 150 000 грн (около $6000) за месяц или почему я больше не буду…

Время на прочтение 19 мин
Количество просмотров 105K
Это довольно забавная история о том, как я попал впросак сознательно, причём дважды и в результате «сжег» не мало не много, а где-то $15 000, всего лишь за месяц. Причём чувствовал, что так будет, но решил пойти по этому пути. Ради чего? Ради опыта? Нет, что Вы. Как говорится, только две вещи бесконечны — Вселенная и человеческая глупость, хотя насчёт Вселенной я не уверен. Тут скорее всего хотелось проверить насколько можно доверять своей интуиции. И она меня не подвела, but that's so silly…
Читать дальше →
Всего голосов 122: ↑104 и ↓18 +86
Комментарии 253

Пользовательские агрегатные и оконные функции в PostgreSQL и Oracle

Время на прочтение 17 мин
Количество просмотров 42K

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

Надо признать, что собственные агрегатные и оконные функции встречается довольно редко. Оконные функции вообще по каким-то причинам традиционно относят к разряду «продвинутого» SQL и считают сложными для понимания и освоения. Тут бы разобраться с теми функциями, которые уже имеются в СУБД!

Зачем тогда вообще вникать в этот вопрос? Могу назвать несколько причин:

  • Хотя оконные функции объективно сложнее обычных агрегатных, но ничего запредельного в них нет; это абсолютно необходимый инструмент для SQL-разработчика. А создание собственной оконной функции, даже совсем простой, позволяет лучше разобраться с тем, как работают стандартные.
  • Оконные и агрегатные функции — прекрасный способ совместить процедурную обработку с декларативной логикой. В некоторых ситуациях получается выполнить сложные действия, оставаясь в рамках парадигмы решения задачи одним SQL-запросом.
  • Да и просто интересная тема, а уж тем более интересно сравнить две системы.

Пример, на котором будем тренироваться — подсчет среднего, аналог стандартной функции avg для типа numeric (number в Oracle). Мы напишем такую функцию и посмотрим, как она работает в агрегатном и оконном режимах и может ли она вычисляться несколькими параллельными процессами. А в заключение поглядим на пример из реальной жизни.
Читать дальше →
Всего голосов 39: ↑39 и ↓0 +39
Комментарии 29

Вопросы для собеседования бэкенд-разработчика

Время на прочтение 16 мин
Количество просмотров 186K
Этот список появился как личная памятка по темам, которые я обсуждал с коллегами и друзьями и в которых хотел разобраться поглубже…

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

В этом репозитории собран ряд вопросов, связанных с серверной частью, которые можно использовать при проверке потенциальных кандидатов. Ни в коем случае не рекомендуется задавать все вопросы одному кандидату: это займет несколько часов и вообще не имеет смысла, потому что они охватывают слишком широкий спектр тем. Никто не может знать всего. Выберите наиболее актуальный раздел и самые интересные вопросы, чтобы развернуть беседу.
Читать дальше →
Всего голосов 83: ↑61 и ↓22 +39
Комментарии 274

Шаблоны проектирования XSD

Время на прочтение 9 мин
Количество просмотров 39K


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

Сегодня хочу поговорить о том, какие есть шаблоны проектирования XSD, о преимуществах и недостатках каждого, и почему мы для своих задач выбрали «Райский сад».
Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 4

Использование событий MySQL на практике

Время на прочтение 3 мин
Количество просмотров 65K
how does events workДля тех, кто активно пользуется MySQL, не секрет, что начиная с версии 5.1, MySQL поддерживает события (events). Если вам нужно выполнять запросы или отдельные процедуры по расписанию, а перейти с запуска консоли на встроенный функционал MySQL было лень не было времени,
добро пожаловать под кат
Всего голосов 84: ↑82 и ↓2 +80
Комментарии 27

50 цитат о программировании всех времён

Время на прочтение 6 мин
Количество просмотров 158K
Перевёл после прочтения комментариев к статье «О ненависти к C++». В цитатах можно найти ответы на большинство возникших там вопросов.

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

49. Lisp — это не язык, а строительный материал.
— Alan Kay

48. Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.
— Edward V Berard
Читать дальше →
Всего голосов 344: ↑336 и ↓8 +328
Комментарии 136

Малоизвестные Git-команды

Время на прочтение 4 мин
Количество просмотров 73K


У Git есть строгие обязательства по обратной совместимости: многие продвинутые возможности скрыты за разнообразными опциями, а не применяются как поведение по умолчанию. К счастью, Git также поддерживает и алиасы, так что вы можете создавать свои собственные команды, которые делают всю характерную для Git магию. Под катом — подборка полезных (или как минимум забавных) алиасов, определённых в моём .gitconfig.
Читать дальше →
Всего голосов 188: ↑162 и ↓26 +136
Комментарии 43

Как правильно оформить Open Source проект

Время на прочтение 7 мин
Количество просмотров 53K

В свободное и не свободное время[1] я развиваю несколько своих проектов на github, а также, по мере сил, участвую в жизни интересных для меня, как программиста, проектах.


Недавно один из коллег попросил консультацию: как выложить разработанную им библиотеку на github. Библиотека никак не связана с бизнес-логикой приложения компании, по сути это адаптер к некоему API, реализующему определённый стандарт. Помогая ему, я понял что вещи, интуитивно понятные и давно очевидные для меня, в этой области, совершенно неизвестны человеку делающему это впервые и далёкому от Open Source.


Я провел небольшое исследование и обнаружил что большинство публикаций по этой теме на habrahabr освещают тему участия (contributing), либо просто мотивируют каким-нибудь образом примкнуть к Open Source, но не дают исчерпывающей инструкции как правильно оформить свой проект. В целом в рунете, если верить Яндекс, тема освещена со стороны мотивации, этикета контрибуции и основ пользования github. Но не с точки зрения конкретных шагов, которые следует предпринять.


Так что из себя представляет стильный, модный, молодёжный Open Source проект в 201* году?

Читать дальше →
Всего голосов 89: ↑84 и ↓5 +79
Комментарии 135

Анализ шифровальщика Wana Decrypt0r 2.0

Время на прочтение 10 мин
Количество просмотров 107K

 
Анализ шифровальщика Wana Decrypt0r 2.0 для выявления функционала, анализа поведения и способов распространения вредоноса.

Читать дальше →
Всего голосов 126: ↑120 и ↓6 +114
Комментарии 353

Отслеживание изменений в SQL Server 2008

Время на прочтение 5 мин
Количество просмотров 59K
Я думаю, каждый разработчик СУБД рано или поздно сталкивается с задачей отслеживания обращений к БД и событий сервера в целом. И прежде чем выбрать инструмент (или написать его самому), конечно, стоит обратить внимание на решения, которые предлагают сами разработчики СУБД. Хочу поделиться нашим опытом в Brights решения этой задачи для SQL Server 2008.
Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 2

Как подружить Zabbix и Observium

Время на прочтение 4 мин
Количество просмотров 8.8K
Не так давно наткнулся на интересную систему мониторинга Observium, в которой заинтересовало хранение конфигов сетевых железок и еще несколько фишек которые описаны в статье.

У меня уже используются Zabbix и полностью переходить на новый мониторинг даже не хочется, так же как и добавлять новые хосты сразу в два тоже лениво, поэтому пришла в голову идея забирать хосты из забикса скриптом через API и добавлять их на Observium.
Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 3

PHP-Дайджест № 104 – интересные новости, материалы и инструменты (1 – 12 марта 2017)

Время на прочтение 4 мин
Количество просмотров 19K


Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.
Приятного чтения!
Читать дальше →
Всего голосов 68: ↑64 и ↓4 +60
Комментарии 33

Восстановление хранилища данных и VMFS разделов. Поднимая EMC iomega с того свету…

Время на прочтение 10 мин
Количество просмотров 19K
Всем привет! В последнее время всё чаще сталкиваюсь с тем, что многие админы используют дешёвые СХД (SOHO) для продуктивных сред… При этом редко задумываясь о доступности данных и отказоустойчивости решения… Увы, но не многие также задумываются о резервных копиях и бекапах…

Вот и сегодня ко мне «на лечение» попал интересный экземпляр:


Чудестный экземпляр EMC (ещё даже не Lenovo) iomega storcenter px4 (который дальше 25% не грузится)

О подробностях восстановления читайте под катом.
Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 13

Гео-модуль для PHP приложений

Время на прочтение 5 мин
Количество просмотров 33K
image Вопрос «Где?» возникает сразу же после вопроса «Что?» эта закономерность верна и в вебразработке. Многие сайты запрашивают информацию у пользователя, предлагая ему ввести свой адрес, т. е. страну, регион, город, улицу, дом почтовый индекс. Но как потом обрабатывать эти данные, если они были указаны в свободной форме? В своих первых проектах мы использовали свой «велосипед», но по мере роста и развития это «чудо» превратилось в «чудовище», которое поставило крест на эффективной обработке гео-информации о наших пользователях. Мне была поставлена задача прибить этого монстра, заменив его стандартизованной гео-базой и простым интерфейсом для работы с ней. Гугление на эту тему не дали готового решения, поэтому пришлось отбросить простой вариант и сделать свой гео-модуль.
Описание сего процесса и сам модуль под катом
Всего голосов 63: ↑57 и ↓6 +51
Комментарии 36
1

Информация

В рейтинге
Не участвует
Откуда
Омск, Омская обл., Россия
Зарегистрирован
Активность