Pull to refresh
1
0
Вячеслав Чувашин @chuvashin

User

Send message

Как писать отличные пулл-реквесты

Reading time3 min
Views22K
С ростом компании, люди и проекты меняются. Для продолжения развития культуры, которую мы хотим иметь в GitHub, мы сочли полезным напомнить самим себе цели, которые преследуем в коммуникациях. Мы недавно представили эти гайдлайны, чтобы помочь самим себе быть лучше, когда мы взаимодействуем через пулл-реквесты.
Читать дальше →
Total votes 55: ↑46 and ↓9+37
Comments10

7 золотых правил одного программиста

Reading time3 min
Views143K
Это статья про семь простых правил, которые я сформулировал для себя за годы работы программистом. Семь правил, которые подняли мою эффективность. Сделали меня лучше. Это мои правила и они работают для меня. Я не пытаюсь навязать их вам, я хочу поделиться с вами, и, возможно, узнать о том, каких правил и принципов придерживаетесь вы.

Компьютер всегда прав


Самая раздражающая ситуация в программировании — когда код верный, но не работает. “Да тут три строчки, блин, просто негде ошибиться! Наверное баг! Пойду потрачу три дня на изучение баг-репортов компилятора/интерпретатора/фреймворка...”. Возникает чувство, будто компьютер над вами издевается!

Тут главное помнить, что в этих трех строчках есть ошибка. Если код работает не верно — значит код написан не верно. Точка. Виноваты только вы. Универсальный совет — идите спать! Ну или хотя бы отвлекитесь на чашку чая. Когда, через некоторое время, вы вернетесь к коду, наверняка станет ясно, что тут лишний оператор отрицания, или перепутаны две переменные с похожими именами, или еще какая-нибудь мелочь, в которой мы никогда никому не признаемся.
Читать дальше →
Total votes 140: ↑120 and ↓20+100
Comments83

Автоматизированное тестирование сервисов, использующих протокол MQ с помощью JMeter

Reading time3 min
Views16K
Крупные распределенные информационные системы зачастую состоят из более мелких модулей (подсистем) и разрабатываются группами программистов с использованием разных платформ и подходов. Часто, обмен данными в таких системах происходит в асинхронном режиме и предпочтительно использование промежуточного программного обеспечения, ориентированного на обработку сообщений (англ. Message-Oriented Middleware, MOM).

Для модульного и интеграционного тестирования таких систем удобно использовать старый добрый Apache JMeter.

Для примера выделим небольшой стандартный модуль такой системы. Допустим, есть некий адаптер, который читает XML сообщение из очереди входящих сообщений, выполняет преобразование структуры XML сообщения и публикует преобразованное сообщение в очередь исходящих сообщений. В качестве MOM, в данном случае, используется Websphere MQ 7.5.
Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments1

Начинаем разбираться с Myth — препроцессором будущего

Reading time6 min
Views14K
Myth — препроцессор CSS, позволяющий уже сейчас использовать в ваших проектах новые и экспериментальные возможности CSS.

Почему Myth?


С помошью Myth вы можете полноценно использовать даже те CSS свойства, которые все еще находятся на этапе разработки W3C и не поддерживаются абсолютным большинством браузеров. Но основным его преимуществом перед другими препроцессорами является то, что вам не придется изучать новый язык разметки, как это происходит с SASS или LESS. В Myth используется стандартная разметка CSS. Поэтому вам не придется ничего переписывать, когда поддержка тех или иных свойств появится в браузерах, а всего лишь перекомпилировать уже имеющиеся стили, что обычно занимает буквально несколько секунд — всю остальную работу за вас сделает Myth.

Вот несколько возможностей CSS, которые доступны в Myth на данный момент:


Читать дальше →
Total votes 27: ↑18 and ↓9+9
Comments13

Паттерн «Репозиторий». Основы и разъяснения

Reading time7 min
Views249K
Repository commonly refers to a storage location, often for safety or preservation.
— Wikipedia

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

Репозиторий как коллекция


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

Я хочу внести ясность в этот вопрос. Репозиторий — это коллекция. Коллекция, которая содержит сущности и может фильтровать и возвращать результат обратно в зависимости от требований вашего приложения. Где и как он хранит эти объекты является ДЕТАЛЬЮ РЕАЛИЗАЦИИ.

В мире PHP мы привыкли к циклу запрос/ответ, который оканчивается смертью процесса. Все, что пришло извне и не сохранилось — ушло навсегда, в этой точке. Так вот, не все платформы работают именно так.
Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments20

Божественный подход к аутентификации

Reading time8 min
Views25K
Я закончил курс в университете Вирджинии в 1992 году по теме “Компьютерные науки в упрощенном виде”. Причина, по которой я выбрал именно упрощенный курс, была в том, что обычный курс CS в университете Вирджинии требует прохождения инженерной школы и я был абсолютно не готов к такому количеству математики и физики. Красота упрощенного курса была в том, что я мог посетить все интересные мне предметы, пропустив остальные.

Одним из моих любимых предметов, по крайней мере он запомнился мне больше всего, был “Алгоритмы”. Я всегда говорю людям, которые меня спрашивают об этом, что этот предмет повлиял на мое становление, как программиста, больше всего. Я точно не знаю почему, но несколько лет назад у меня появилось странное предчувствие, и я почему-то перешел на страницу Рэнди Пауша (автор той самой книги). С удивлением для себя я обнаружил, что он набирает студентов к себе на курс. Время было идеальным: университет Вирджинии, осень 1991, CS461 Анализ алгоритмов и 50 студентов на курсе. Я был одним из них.

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

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

И одна из самых крутых вещей, которой нас обучил Рэнди Пауш, была необходимость задать себе следующий вопрос перед выбором алгоритма:
А какой бы алгоритм выбрал Бог?



Читать дальше →
Total votes 45: ↑31 and ↓14+17
Comments36

Гибкое управление событиями в jQuery — плагин jquery-behavior

Reading time8 min
Views20K
Привет, Хабр!

Меня зовут Вячеслав Гримальский, я работаю над конструктором посадочных страниц, в котором страница собирается перетаскиванием блоков.

Я расскажу об инструменте для работы с событиями, который изначально являлся частью конструктора, но затем был вынесен в отдельный плагин для jQuery — jquery-behavior.

Плагин использует функционал jQuery, дополняя его следующими возможностями:

  • Работа с раздельными группами обработчиков событий. Для этого используются контроллеры событий.
  • Можно отключить все обработчики событий контроллера разом, не перечисляя их.
  • Слежение за срабатываниями обработчиков событий.
  • Можно узнать точное количество вызовов каждого из них.
  • Можно приостанавливать работу отдельных обработчиков событий, или всего контроллера разом.
  • Возможность получить полный перечень обработчиков событий конкретного элемента, обработчиков событий с определенным пространством имен или просто всех обработчиков событий контроллера.
Читать дальше →
Total votes 24: ↑21 and ↓3+18
Comments6

WebSocket RPC или как написать живое WEB приложение для браузера

Reading time4 min
Views62K


В статье речь пойдет о технологии WebSocket. Точнее не о самой технологии, а о том, как ее можно использовать. Я давно слежу за ней. Еще когда в 2011 году один мой коллега прислал мне ссылку на стандарт, пробежав глазами, я как-то расстроился. Выглядело настолько круто, и я думал, что в момент, когда это появится в популярных браузерах, я уже буду планировать, на что потратить свою пенсию. Но все оказалось не так, и как гласит caniuse.com WebSocket не поддерживается только в Opera Mini (надо бы провести голосование, как давно кто-либо видел Opera Mini).

Кто трогал WebSocketы руками, тот наверняка знает, что работать с API тяжело. В Javascript API достаточно низкоуровневый (принять сообщение — отправить сообщение), и придется разрабатывать алгоритм, как этими сообщениями обмениваться. Поэтому и была предпринята попытка упростить работу с вебсокетами.

Так и появился WSRPC. Для нетерпеливых вот простое демо.
Читать дальше →
Total votes 39: ↑34 and ↓5+29
Comments64

Рисуем анимированную сцену с помощью css

Reading time7 min
Views50K
Передохнём от верстки всяких пользовательских интерфейсов и просто порисуем на CSS. Рисовать будем такую вот сцену:



Смотреть на jsfiddle.

В статье я попробую описать пошаговое создание этой сцены.
Поехали
Total votes 51: ↑44 and ↓7+37
Comments23

8 сортов муды в твоей веб-студии

Reading time6 min
Views74K
Муда, что по-японски означает «потери» — это любая деятельность, которая потребляет ресурсы, но не создает ценности для клиента. (Источник).



Эта короткая заметка для тех, кто системно ищет, где его студия теряет деньги. Похвальное занятие в наше весёлое время.

Хорошо систематизировали виды потерь ребята из Toyota. Тойотовцы выделяют 7-8 видов муды, потерь на производстве. Посмотрим, есть ли аналоги между потерями в автомобилестроении и работе студии.
Читать дальше →
Total votes 86: ↑76 and ↓10+66
Comments45

Эксперимент: 10 вещей, которые я узнал, употребляя только воду в течение месяца

Reading time10 min
Views246K
image

Мы продолжаем знакомить вас с переводами статей Chris Bailey, где он делится советами, которые извлек во время проекта «a Year of Productivity». Ранее мы публиковали статьи этого автора, они доступны в нашем блоге в разделе «личная продуктивность». Хотим напомнить, что общая цель всех статей, поделиться опытом автора как стать более успешным и эффективным везде: в личной жизни, отношениях с друзьями, самим собой и конечно же на работе (чем бы вы не занимались)!

Итак, даем слово Крису!
Читать дальше →
Total votes 114: ↑63 and ↓51+12
Comments133

Chart Wars: Диаграммы наносят ответный удар

Reading time4 min
Views31K
Что может быть хуже круговой диаграммы?
Две круговые диаграммы! Эдвард Тафти
Все мы уже не раз видели, что может пойти не так с визуализацией данных. Сегодня обсудим несколько важных принципов, лежащих в основе качественной графики, и что гораздо интересней, узнаем, что произойдет, если эти правила НЕ соблюдать.



Структура статьи
  1. Восприятие измерений
  2. Соотношение чернила-данные
  3. Фактор обмана
  4. Парадокс Симпсона
  5. Джон Сноу всё-таки что-то знает — пример классики визуализации
  6. Что еще посмотреть-почитать
  7. Круговая диаграмма в реальной жизни

(*осторожно трафик*)
Читать дальше →
Total votes 62: ↑56 and ↓6+50
Comments13

Что-то издали похожее на монады

Reading time5 min
Views22K
После прочтения десятков «самых понятных введений в монады» и чтения (тоже) десятков обсуждений на разных форумах я пришёл к выводу, что существует группа абстрактных ОО-программистов, которым моя интерпретация «чего-то похожего на монады» может помочь немного приблизиться к правильному пониманию.

Итак, в этой публикации вы не найдете ответы на следующие вопросы:
1. Что такое монада?
2. Где и как использовать монады?
3. Почему монады лучше, чем их отсутствие?
Читать дальше →
Total votes 34: ↑29 and ↓5+24
Comments23

Как продавать крупным компаниям: 16 советов. Часть 2

Reading time8 min
Views16K
В Штатах зарегистрировано около 6 миллионов мелких компаний, каждая в среднем продает на 1,6 миллиона долларов в год. Крупных компаний — всего 11 тысяч, а средний объем продаж каждой из них — 2,7 миллиарда долларов в год. Очевидно, что продавать крупным компаниям явно выгодней. Но как найти к ним подход?



Мы в Alconost продолжаем перевод статьи Тима Нгуена как раз об этом (начало читайте здесь). В свое время Нгуен начинал с истоков, будучи одним-единственным менеджером по продажам в стартапе. Он нанимал и руководил начальниками «продажного» отдела, а продажи контролировал с помощью одних лишь месячных отчетов. Теперь же, будучи гендиректором и сооснователем собственной компании, он делится накопленным опытом и рассказывает, как можно применить его в отношении вашего бизнеса.
Читать дальше →
Total votes 15: ↑10 and ↓5+5
Comments2

Притворитесь умным

Reading time5 min
Views84K
Лучший способ научиться чему-то — это научить другого.

Наступил январь, студенты начинают сдавать экзамены. И часто самым сложным экзаменом оказывается математика. Мой хороший друг спросил у меня: «Что такое теорема Лагранжа, как её доказать и понять?»

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

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



Мы всегда даём хорошие советы, но, как Алиса в стране чудес, следуем им нечасто. Это происходит, потому что мы торопимся, мы создали себе шаблоны поведения, и не задумываемся над тем, чем мы занимаемся.

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


Подумайте, как решить эту задачу? Как бы эту задачу решил умный человек?
Читать дальше →
Total votes 48: ↑36 and ↓12+24
Comments99

Кастомизация рабочих процессов в YouTrack. Мой опыт тонкой настройки YouTrack как HelpDesk

Reading time7 min
Views17K
Хотел бы рассказать о своем опыте настройки «YouTrack как HelpDesk».

Перейдя по ссылке, что я указал выше, вы найдете более менее детальную инструкцию, как развернуть YouTrack с нуля и выполнить его первоначальную настройку. В случае же когда HelpDesk строится для обработки обращений в крупной компании, разработка своих Workflow неизбежна.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments2

Как добавить help desk в ваш трекер YouTrack

Reading time6 min
Views18K
На Хабре несколько месяцев назад обсуждалось, что нет идеального трекера — такого, чтобы он подошел хорошо и разработчику, и заказчику. В частности, упоминалось, что трекеру нужен help desk. В YouTrack начиная с версии 5.1 он есть, и сегодня мы расскажем, как его настраивать.

Перед ответом на вопрос «как» полезно понять, зачем. Типичный сценарий выбора YouTrack состоит в том, что вы решаете, какой баг-трекер взять для нового проекта, или легко ли включить требуемую функциональность в существующем. Тогда возможность буквально за пять минут добавить help desk в трекер склонит чашу весов в пользу YouTrack, если проект предполагает общение пользователей со службой поддержки.

Прежде всего, help desk должен иметь привычный интерфейс. Нет, мы (пока) не научили YouTrack отвечать красивым голосом на телефонные звонки. Однако и привыкать к веб-интерфейсу вашим пользователям незачем: в YouTrack можно просто писать письма. У вас на сайте написано, что писать в поддержку надо по адресу support@your-brilliant-app.com? Отлично, YouTrack может вынимать письма из этого ящика и делать из них заявки, видимые вашим разработчикам.

Хотя YouTrack — не бесплатное решение, вы можете сэкономить. Дело в том, что лицензия на YouTrack покупается на определенное количество разработчиков (до 10 — бесплатно). Разработчики работают с YouTrack с помощью веб-интерфейса.

Зарегистрированные пользователи имеют доступ через веб-интерфейс, а чтобы писать письма в help desk и получать ответы, регистрироваться не обязательно. Стало быть, ваши разработчики будут зарегистрированы в YouTrack, а пользователи вашего приложения смогут сообщать о проблемах без регистрации, совершенно бесплатно для вас.

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

Делаем себе свой YouTrack


Для теста я сделал себе экземпляр YouTrack в облаке. Если в проекте не требуется регистрировать больше 10 разработчиков, то можно взять бесплатный вариант.

Читать дальше →
Total votes 25: ↑22 and ↓3+19
Comments7

Почему реляционные СУБД отлично подходят для стартапов: Пример из истории разработки мессенджера Kato

Reading time6 min
Views26K
image

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

Соответственно, технологический прогресс шел не только по направлениям увеличения мощности процессоров, объемов памяти или уменьшения размеров устройств, но и в области улучшения эффективности работы с данными. В результате появилось большое количество различных систем управления базами данных (СУБД).

В нашем продукте, мессенджере для корпоративных коммуникаций Kato, используется СУБД PostgreSQL. Сегодня мы хотели бы напомнить историю возникновения этого прекрасного инструмента и показать преимущества его использования для стартапов в области информационных технологий.
Читать дальше →
Total votes 47: ↑34 and ↓13+21
Comments20

Трёхмерный фон для сайта в реальном времени на JavaScript при помощи three.js

Reading time5 min
Views38K


Обучающий материал с ресурса Phyramid, у которых именно такая шапка сайта.



Обновив в 2014 свой сайт, мы сделали трёхмерный фон в шапке, состоящий из геометрических фигур в 3D Max. Но потом мы подумали, что было бы гораздо круче генерить его в реальном времени на JS. Сказано – сделано, и при помощи замечательного фреймворка three.js мы сделали простенькую сценку. И вот, как это было.

Замечание по стилю кода: мы сначала хотели использовать только функциональный стиль, но из-за особенностей веба и работы алгоритма переключились на ООП.
Читать дальше →
Total votes 31: ↑27 and ↓4+23
Comments10

Создание плагина для PHP Composer'а

Reading time4 min
Views11K
При развертывании Magento-приложений с использованием Magento Composer столкнулись с проблемой, что различные экземпляры одного и того же приложения (девелоперский, тестовый и т.д.) должны использовать различные локальные настройки (например, параметры подключения к БД). До этого, в другом проекте, использовался подход, когда в приложении (под контролем версий) находятся шаблоны конфигурационных файлов с placeholder'ами и скрипт, замещающий placeholder'ы локальными значениями и копирующий результат в нужное место. Локальные значения хранились отдельно для каждого экземпляра по месту развертывания. Хотелось привычный подход сохранить и для нового метода развертывания. Поиск устраивающего плагина на packagist.org завершился ненахождением, в силу чего и родилась идея сделать подобный плагин самостоятельно. При создании плагина пришлось надергать информацию из различных источников — информации с сайта Composer'а по плагинам оказалось недостаточно. Что и привело к написанию этой статьи.
Читать дальше →
Total votes 21: ↑17 and ↓4+13
Comments0

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity