Search
Write a publication
Pull to refresh
1
0
Олексій @Assada

User

Send message

WEB-оливье: небольшой микс из опасностей и ошибок разработчика

Reading time8 min
Views13K
Так уж получилось, что 2015 год стал первым годом коммерческой жизни нашего ещё совсем молодого проекта Бонджойн. Несмотря на то, что мы набрали около 85 0000 партнёров, которые выполнили большинство заказов, понятно, что нам расти и расти. Мы уже рассказывали о некоторых муках разработки, а сегодня решили сделать староновогодний пост про шишки web-разработчиков: столь же популярные и неизбежные, как оливье на наших новогодних столах. Какие-то из них мы набивали сами, какие-то заботливо собрали у знакомых и не совсем знакомых разработчиков. В лучших традициях приготовления ещё не до конца ушедшего новогоднего настроения расскажем обо всём подряд, вразнобой, сдобрив комиксами, которые мы перевели специально по случаю. В общем, угощайтесь!


Читать дальше →

Окружение разработки: Redmine + Git + ownCloud

Reading time15 min
Views28K
Данная статья появилась с целью обобщить довольно длительные попытки собрать удобное окружение для работы над проектами. Несомненно, существует множество сервисов готовых предоставить схожую функциональность, но их использование не всегда удобно и по различным причинам, может быть неприемлемо. Если возникла такая ситуация, надеюсь, представленная в статье конфигурация окажется полезной.



Сценарий использования данной связки, можно кратко описать следующим образом:

  • Файлы проекта хранятся в Git репозитории;
  • Репозиторий содержит настройки, исходники и другие файлы проекта, наличие которых удобно и допустимо в коллективном репозитории;
  • В корне расположена директория cloud, исключенная в .gitignore, в которую через WebDAV монтируется ownCloud папка, для остальных файлов;
  • Содержимое Git репозитория отслеживается в системе управления проектами Redmine.


План развертывания системы включает настройку следующих сервисов:

  1. OpenLDAP — единая учётная запись для всех сервисов;
  2. Redmine — запуск в Docker контейнере, создание и привязка Git репозитория, LDAP аутентификация;
  3. NGINX — доступ к Git репозиторию через HTTPS и LDAP аутентификация;
  4. ownCloud — LDAP аутентификация и монтирование папки через davfs2.

Читать дальше →

Как попасть на дачу президента в пять часов утра

Reading time6 min
Views323K
Этот пост о том, как обычный взлом обернулся муками совести и душевными терзаниями. Исходников будет не много, больше фоток и анализа. Итак, некто Вася работает «плохим парнем». Степень падения Васи такова, что средства на жизнь ему приносит поиск и разбор информации, доступ к которой был скомпрометирован вследствие неграмотного обслуживания, безалаберности или экономии на обслуживающем персонале.


Читать дальше →

Боты в телеграм: опыт, откровения, советы по разработке

Reading time10 min
Views26K
Давайте сразу по делу. Содержание статьи:
  • С чего мы начали писать ботов в Telegram. Первый опыт.
  • Создание nodejs библиотеки bot-brother для быстрого написания ботов.
  • Разбираем код свеженаписанного бота DeloreanBot
  • Общечеловеческие рекомендации по созданию популярного бота
  • Философские рассуждения о монетизации ботов


Поехали.
Читать дальше →

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

Reading time28 min
Views188K
Сегодня мы представляем вашему вниманию адаптированную подборку инструментов (в том числе облачных) для разработчиков, которые позволяют создавать по-настоящему качественные проекты. Здесь представлены исключительно SaaS, PaaS и IaaS сервисы, предоставляющие бесплатные пакеты для разработчиков инфраструктурного ПО.

Читать дальше →

«Собрать большой коптер ничего о них не зная?» — да ерунда (Часть 2)

Reading time5 min
Views13K
Пришло время рассказать о стабилизации камеры для коптера, а именно про 3-х осевые подвесы, которые я устанавливал на свой гексакоптер.

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


Читать дальше →

WLPPR for iOS

Reading time1 min
Views6.3K
Привет.

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

WLPPR это небольшой проект, посвященный спутниковым снимкам.

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

И вот спустя много ночей, набранных калорий и гигабайтов перерытых картографических данных мы запустили iOS клиент для всего этого дела.

Тадам — Ссылка на AppStore
Андроид на подходе, мы в него верим.

image

И чуток инфы под катом…
Читать дальше →

Гексагональная архитектура

Reading time31 min
Views182K
На недавнем Laracon NYC я читал доклад о гексагональной архитектуре. Несмотря на то, что я получил позитивную реакцию слушателей, мне кажется, что остались люди, которые хотели бы получить чуть более полное представление о том, что это такое. Разумеется, с примерами. Это моя попытка расширить тот доклад.

  1. Видео с доклада
  2. Слайды


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



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



Гексагональная архитектура, ни в коем случае не новый подход к разработке с применением фреймворков. Напротив, это всего лишь обобщение «лучших практик» — практик новых и старых. Я обернул эти слова в кавычки, чтобы люди не воспринимали их совсем буквально. Лучшие практики, которые работают для меня, могут не работать для вас — все зависит от задачи и преследуемых целей.



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


Читать дальше →

Зачем нужен свободный код и как на нем зарабатывать

Reading time5 min
Views67K
Linux Torvalds
Мы наблюдаем бум свободных проектов. В основном, благодаря Гитхабу. 23 декабря 2013 года на сервисе был создан 10-миллионный проект. К 23 декабря 2015 года количество проектов более чем утроится: прямо сейчас на Гитхабе 28 миллионов проектов.

Многих привлекает идея свободности, потому что она перекликается с идеей «улучшения мира», как основной мотивации продуктивной деятельности человека.

Но так как обычная работа программистов в конторах очень далека от open source, возникает вопрос, как кормиться (а желательно, и разбогатеть!), большую часть времени занимаясь свободными проектами.

Судя по последним вопросам на Тостере, у людей много ожиданий, но мало понимания в этой области. Поэтому я решил написать это эссе.

Само по себе выкладывание проекта не является улучшением мира


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

Вы выложили код. Чем вы помогли экономике в этот момент? Ничем, поэтому и миру вы пока ничем не помогли.

Ваш проект может спасать людей от рака, быть бесплатным, экономить миллионы долларов, и при этом быть закрытым.

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

Синергетический эффект свободного кода


Читать дальше →

Silex skeleton + Gulp + LiveReload

Reading time4 min
Views9.3K
image

Вступление
Доброго времени суток всем! Наверное, все слышали о замечательном фреймворке Silex, а некоторым, и мне в том числе, он уже успел полюбиться. Основная изюминка микрофреймворков в их простоте. Скачал, настроил и можно работать. И было бы совсем хорошо иметь некую заготовку, которая бы запускалась «на раз-два», парой команд, дабы избавиться от повторяющихся действий, тем самым экономя свое время. Плюс ко всему, было бы совсем хорошо, иметь на борту Gulp и Bower из NodeJS. Подумано — сделано. Кому интересно посмотреть, что у меня получилось, милости просим под кат…
Читать дальше →

jQuery-плагин для организации компонентов на странице

Reading time2 min
Views20K
JBlocks — небольшой jQuery-плагин (~100 строк) для организации компонентов на странице.

Строится на трех основных принципах:

  • опиши поведение компонента в декларации;
  • разметь компонент в html с помощью специальных атрибутов;
  • общайся со экземплярами компонента через АПИ.

Если вам интересна тема декларативного javascript — прошу под кат.
Читать дальше →

Пишем свой логер на основе psr/log. Для начинающих

Reading time6 min
Views9.1K
Представим себе, что мы пишем свой фреймворк, cms или самое обычное приложение и нам, конечно же, понадобится компонент для логирования. Можно было бы взять уже готовое решение , но сегодня мы будем писать свой компонент. И писать мы его будем используя уже готовую реализацию PSR-3 psr/log.
Читать дальше →

Управление разработкой программного продукта на основе рисков

Reading time10 min
Views28K
image
Эта статья адресована тем, кто имеет отношение к разработке программного продукта. Понимание принципов управление процессом разработки не менее важно, чем фактические знания технологий программирования. Статья не адресована только тем, кто хочет стать или работает руководителем проекта (Project Manager), Понимание принципов управления принесет пользу на любой должности и в любой команде.
Читать дальше →

36 млн запросов в час, 10000+ постоянно работающих клиентов, на одном сервере, nginx+mysql

Reading time5 min
Views116K
Сложилась ситуация, что участвую в проекте, который работает с достаточно большой нагрузкой. Как уже написал — 36 млн запросов в час. Я много чего прочитал и перепробовал за последний месяц, настраивая сервер; хотелось бы просто сжато и компактно выдать тезисно то, что работает хорошо в такой конфигурации.

Первое, что я заметил — множество советов как все настроить под большую нагрузку. Читайте их внимательно, обычно в тексте найдете, что речь про «высокую нагрузку» в 15-20 тысяч клиентов в сутки. У нас клиентов примерно миллион, активных, ежедневных.

У нас нет денег и мы все делаем за свой счет, поэтому экономим. Итог — весь миллион клиентов обслуживается на одном сервере, вот на таком — EX-60 на hetzner.
Читать дальше →

Windows Remote Arduino — управляем настольной лампой прямо из универсального приложения Windows

Reading time8 min
Views38K
Завершая неделю интернета вещей на хабре и в продолжение предыдущего поста о партнерстве с Arduino, расскажу вам о подключении устройств к Windows. Я уже писал про различные сценарии подключения датчиков к облаку, но бывают сценарии, когда нам хочется просто подключить датчики или устройства к нашему компьютеру и удаленно ими управлять. Например, мы хотим сделать приложение, которое будет включать и выключать настольную лампу. В этих случаях самым простым решение будет использование Windows Remote Arduino.


Читать дальше →

Немного о юнит-тестировании и внешних API в PHP

Reading time6 min
Views15K
Юнит-тестирование — одна из неотъемлемых частей процесса разработки, и оно становится сложнее и противоречивее, если основная задача Вашего кода — отправлять запросы ко внешним API и обрабатывать ответы. Немало копий сломано о тему, каким должно быть тестирование кода, завязанного на внешних источниках, и где проходит грань между тестированием собственного кода и чужих API.

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


Упростить себе жизнь

Google Cloud Messaging: «Сова, открывай! Пуш пришел!»

Reading time6 min
Views64K
Всем известный сервис Google Cloud Messaging (GCM) нужен для того, чтобы ваше приложение всегда показывало актуальные данные пользователю. Схема работы сервиса включает в себя три компоненты.



Непосредственно сервер GCM, ваш пуш-сервер и устройство с установленным приложением. Алгоритм работы простой: устройство регистрируется в GCM, получает registrationId – некий токен, который используется в дальнейшем, – сохраняет его у себя локально и передает серверу. Далее пуш-сервер использует этот registrationId для отправки сообщений вашему приложению на устройстве.

В этом материале будут рассмотрены проблемы на двух участках, который обозначены на схеме: пуш-сервер – GCM и GCM – устройство.
Читать дальше →

Jii: Полноценный Query Builder для Node.js с API от Yii 2

Reading time14 min
Views17K

Вступление


Привет всем хабровчанам, любителям Yii и Node.js. Почему объединены любители PHP-фреймворка и серверного JavaScript?
Потому что Yii теперь доступен и на JavaScript (как для Node.js, так и для браузера)!

В этой статье мы рассмотрим Query Builder, полностью сохранивший API от Yii2 и работающий на Node.js.
Конструктор запросов — это лишь одна из реализованных частей Jii (не путать с Yii), в данной статье я специально не буду рассматривать фреймворк в целом, потому что его вполне можно использовать и частями.

Jii

Что такое Jii?


Jii — это компонентный JavaScript MVC фреймворк, который повторяет архитектурные решения легендарного PHP фреймворка Yii 2, в большинстве случаев сохраняя его API. Отсюда происхождение названия Jii — JavaScript Yii.
Читать дальше →

Реализация Single Sign On в Symfony2 приложении

Reading time7 min
Views30K

Что такое Single Sign On?


Single Sign On — это технология, с помощью которой пользователь, будучи аутентифицированным на удостоверяющем центре (далее Identity Provider, IdP), будет автоматически аутентифицирован на другом сервисе (далее Service Provider, SP или Consumer[1-N]) этой компании.

Механизм Single Sign On используют такие сайты, как ХабраХабр, Yandex, Google. Приемущества такого подхода к аутентификации пользователей очевидны:

  • Пользователь вводит пароль только 1 раз
  • Или вовсе не вводит пароль на IdP, если там был использован вход через социальную сеть или с использованием OpenID
  • Автоматически аутентифицируется на всех проектах компании
  • Данные пользователя могут плавать между сервисами от IdP до SP прозрачно для пользователя

Читать дальше →

Уязвимость «ВКонтакте» позволяла получить прямые ссылки на приватные фотографии

Reading time8 min
Views315K


tl;dr
Была обнаружена уязвимость в закладках ВК, которая позволяла получать прямые ссылки на приватные фотографии из личных сообщений, альбомов любого пользователя/группы. Был написан скрипт, который перебирал фотографии пользователя за определенный период и затем, через эту уязвимость получал прямые ссылки на изображения. Если коротко, то: можно было за 1 минуту получить все ваши вчерашние фотографии, за 7 минут — все фото, загруженные на прошлой неделе, за 20 минут — прошлый месяц, за 2 часа — прошлый год. Уязвимость на данный момент исправлена. Администрация ВКонтакте выплатила вознаграждение в 10к голосов.

История началась с того, как мне в личку во «Вконтакте» кинули изображение. Обычно, если вещь важная, я её загружаю в облако, но в моём случае в этом не было необходимости, и я решил воспользоваться функцией закладок «Вконтакте».
Читать дальше →

Information

Rating
Does not participate
Registered
Activity