Как стать автором
Обновить
17
0

Пользователь

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

Push уведомления в Android с помощью Firebase Cloud Messaging для начинающих

Время на прочтение 2 мин
Количество просмотров 135K
Не так давно Google купили Firebase и теперь на странице с описанием GCM нас встречает радостная новость о том, что пора бы мигрировать на Firebase.
...GCM users are strongly recommended to upgrade to FCM, in order to benefit from new FCM features today and in the future.

В этой статье мы разберем тестовый проект и рассмотрим один подводный камень связанный с иконкой уведомления.

Нам понадобится:

  • Android Studio
  • Код демо-проекта с github
  • 20 минут свободного времени
Читать дальше →
Всего голосов 17: ↑15 и ↓2 +13
Комментарии 18

Пример решения типичной ООП задачи на языке Go

Время на прочтение 9 мин
Количество просмотров 37K
Недавно попалась на глаза занимательная статья с аналогичным названием о языке Haskell. Автор предлагал читателю проследить за мыслью программиста, решающего типичную ООП задачу но в Хаскеле. Помимо очевидной пользы расширения представлений читателей о том, что ООП — это отнюдь не «классы» и «наследование», подобные статьи полезны для понимания того, как правильно пользоваться языком. Предлагаю читателю решить ту же самую задачу, но на языке Go, в котором ООП тоже реализован непривычно.
Читать дальше →
Всего голосов 43: ↑33 и ↓10 +23
Комментарии 87

Ускоряем процесс разработки с помощью Vagrant

Время на прочтение 10 мин
Количество просмотров 67K
image Как часто вам приходится разрабатывать и запускать приложение локально и упорно искать проблемы, потому что на продакшене приложение ведёт себя не совсем так, как вы этого хотели? А как часто вам присылают тикеты для решения проблемы в приложении, хотя на самом деле проблема именно в несовместимости версий разных приложений? А как долго вам приходится ждать виртуалку, когда для запуска новой версии приложения недостаточно ресурсов локальной машины? Для нас эти вопросы были довольно больными, и мы сломали тысячи копий в спорах, стараясь решить их. Практика показывает, что одним из вариантов для решения этих проблем может стать Vagrant.
Читать дальше →
Всего голосов 25: ↑23 и ↓2 +21
Комментарии 10

Загрузка Eloquent связей используя left join вместо дополнительных запросов

Время на прочтение 1 мин
Количество просмотров 20K
Если вы когда-либо пытались выполнить следующий код для загрузки данных из вашей Eloquent модели и получали ошибку:

MyModel::with('relation')->where('relation.title', '=', $title)->orderBy('relation.field', 'asc')

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

В таком случае вам возможно поможет моя библиотека, которая позволяет перенести загрузку BelongsTo связей из дополнительных запросов в основной запрос с left join`ами.
Читать дальше →
Всего голосов 25: ↑19 и ↓6 +13
Комментарии 8

Запускаем jQuery на движке Node.js вместо браузера

Время на прочтение 2 мин
Количество просмотров 21K
Библиотека jQuery — это общепризнанное средство манипуляции сразу несколькими форматами данных (XML, HTML, объекты DOM, обыкновенные объекты), да притом работающее посредством удобного (цепного) вызова методов с удобными (краткими) названиями. Поэтому ничуть не удивляют попытки приспособить jQuery не только к одному клиентскому, но также ещё и к серверному джаваскрипту — в частности, к Node.js.

Признаюсь честно, что когда разработчики jQuery превозмогли проблему №7102, то её название («Register jQuery as a CommonJS async module») на какое-то время даже заставило меня обмануться: я сперва подумал было, что и в Node.js (так как модули Node.js и СommonJS имеют немало общего) отныне jQuery станет работать невозбранно. Ан нет, не тут-то было. Пристальное вглядывание в коммит и в запрос на слияние позволяет осознать, что jQuery, в сущности, обрёл возможность регистрироваться только как AMD-модуль и даже проверяет свойства define.amd и define.amd.jQuery перед саморегистрацией.

Собственно говоря, архитектура jQuery «затóчена» под употребление в условиях браузерной DOM: код jQuery полагается на существование объекта window, который служит аргументом главного замыкания, окаймляющего весь код jQuery. Прежде же таких неявных предположений было ещё больше, и только с устранением проблемы №6690 библиотека jQuery перестала полагаться на существование глобальных объектов navigator и location, начав вместо того получать их как свойства объекта window. (Понятно, что такое предположение никак не подходило для Node.js, где глобальные объекты служат свойствами объекта global, а вовсе не window; а равно не подходило и ко многим прочим реализациям CommonJS.)

Потому для запуска jQuery в Node.js применяются готовые реализации браузерной DOM — такие, как пакет jsdom, на основе которого невозбранно работает, например, вот какой код, предлагаемый в качестве примера:

Читать дальше →
Всего голосов 55: ↑40 и ↓15 +25
Комментарии 19

Пудра для мозга или как сделать порошок для посудомойки в 9,7 раз дешевле

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


Update
Новый вариант порошка и более подробный разбор во второй части: DIY порошок для посудомойки: разбираем промышленные средства и улучшаем рецепт

Сейчас расскажу, как из соды и стирального порошка сделать порошок для посудомоечной машины. Такой же по составу, только дешевле на порядок.

Есть очень много областей нашей жизни, где наше представление формирует исключительно маркетинговый буллшит. Увы, большинство людей даже не пытаются задумываться о том, что лежит в основе всего этого. Очень часто рыночная ситуация приводит к тому, что себестоимость продукта составляет 0.5% от его цены. Остальное маркетинг, наценки, логистика, упаковка и тому подобное. Почти все в курсе про концепцию продажи чернил для принтера по цене слез гималайских девственниц и настойчивые рекомендации производителей использовать только оригинальные расходные материалы. Например, совсем недавно меня озарило, что 1.5 грамма сухого вещества во флаконе удобрений для растений не могут стоить 200-250 рублей. А ведь именно такое количество может уместиться в относительно стабильном состоянии в виде раствора. Я сразу представил себе гектары полей и грузовики, которые везут тонны порошка. В результате перешел на расфасовки по 1 кг Буйских комплексных сухих удобрений. Можно ванну раствора приготовить.

Сегодня будем создавать ультра-дешевый порошок для посудомойки. Уменьшение реальной зарплаты и удорожание импортной бытовой химии заставило перерыть учебники, просмотреть кучу материалов с форумов химиков и попытаться найти способы экономии на расходниках. Очень уж ощутимо стал стоить порошок. Результаты вдумчивого исследования и экспериментов сильно удивили. Для промышленного применения чаще всего химиками-технологами создаются индивидуальные рецептуры в зависимости от качества воды и задач. Почему бы нам не попробовать разобраться во всем этом?

TLDR:

70% прокаленной соды и 30% стирального порошка вместо моющего средства.
Если очень лень возиться с содой, то просто порошок Биолан или его аналоги. Сода удешевляет.
Пищевая соль «Экстра» вместо соли.
Да начнутся адские эксперименты!
Всего голосов 159: ↑158 и ↓1 +157
Комментарии 447

Создаём REST-сервис на Rust. Часть 4: переходим к REST API

Время на прочтение 9 мин
Количество просмотров 26K
В прошлый раз мы реализовали обновление БД.

Осталось сделать только REST-интерфейс. Давайте займёмся этим.

Введение


Эта часть будет, пожалуй, самой сложной — мы близко узнаем типажи Send и Sync, а также тонкости работы замыканий и времён жизни. По-другому я бы озаглавил её «зануда исследует, почему обязательно нужно клонировать данные». Она полезна тем, что затрагивает тонкие места Rust и показывает причины некоторых неочевидных ошибок. Так что если хотите разобраться досконально — добро пожаловать.

Также хочу отметить: если вам что-то непонятно относительно приведённого кода или сами объяснения кажутся недостаточно ясными, не стесняйтесь писать об этом в комментариях. Автор потратил не минуту и не полчаса, пытаясь понять, почему код работает именно в том виде, в котором он написан, и вынужден был не раз сходить в IRC и на форум за разъяснениями.
Читать дальше →
Всего голосов 17: ↑14 и ↓3 +11
Комментарии 2

Знакомимся с Otto, наследником Vagrant

Время на прочтение 7 мин
Количество просмотров 34K
Otto — это новый продукт от Hashicorp, логический наследник Vagrant, призванный упростить процесс разработки и деплоя программ в современном мире облачных технологий. Концептуально новый подход к проблеме, проверенные технологии под капотом и открытый исходный код. Персональный DevOps ассистент разработчика.


Читать дальше →
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 9

И решили мы подружить Baresip и Nodejs

Время на прочтение 3 мин
Количество просмотров 18K
Что же такое Baresip? Как сказано на сайте проекта это кроссплатформенный, модульный SIP агент с поддержкой аудио и видео.

А причем тут nodejs? Да так вышло что в большом проекте написанном на nodejs и использующем Freeswitch и его модуль portaudio в связи с некорректной работой последнего потребовалось внедрить другой sip клиент для аудио звонков.

Выбор в ходе технического совещания одного из наших разработчиков с гуглом пал на Baresip.

Подробности
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 9

Утилиты командной строки могут быть в 235-раз быстрее вашего Hadoop кластера

Время на прочтение 7 мин
Количество просмотров 45K
Примечания tsafin:

Перед публикацией своего цикла статей по MapReduce в Caché, мне показалось важным озвучить данную прошлогоднюю точку зрения из статьи Адама Дрейка «Command-line tools can be 235x faster than your Hadoop cluster». К сожалению оригинальная статья Тома Хайдена, на которую он ссылается стала уже недоступна на сайте Тома, но её, по-прежнему, можно найти в архивах. Для полноты картины предлагаю ознакомиться и с ней тоже.

Введение


Посещая в очередной раз свои любимые сайты, я нашел крутую статью Тома Хайдена об использовании Amazon Elastic Map Reduce (EMR) и mrjob для вычисления статистики отношения выигрыш/проигрыш в наборе данных со статистикой по шахматным матчам, которую он скачал с сайта millionbase archive, и c которой он начал играться используя EMR. Так как объем данных был всего 1.75GB, описывающий 2 миллиона шахматных партий, то я скептически отнесся к использованию Hadoop для данной задачи, хотя были и понятны его намерения просто поиграться и изучить плотнее, на реальном примере, утилиту mrjob и инфраструктуру EMR.
Читать дальше →
Всего голосов 70: ↑66 и ↓4 +62
Комментарии 48

10 основных ошибок при разработке на Node.js

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


C момента появления Node.js его и критикуют, и превозносят. Споры о достоинствах и недостатках этого инструмента не утихают и, вероятно, не утихнут в ближайшее время. Однако часто мы упускаем из виду, что критика любого языка или платформы основывается на возникающих проблемах, зависящих от того, как мы эти платформы используем. Вне зависимости от того, насколько Node.js усложняет написание безопасного кода и облегчает его распараллеливание, платформа существует уже довольно давно, и на ней создано огромное количество надёжных и сложных веб-сервисов. Все они хорошо масштабируются и на практике доказали свою устойчивость.

Но, как и любая платформа, Node.js не застрахован от ошибок самих разработчиков. В одних случаях падает производительность, в других — система становится практически непригодной к использованию. И в этом посте я хотел бы рассмотреть 10 наиболее частых ошибок, которые делают разработчики с недостаточным опытом работы с Node.js.
Читать дальше →
Всего голосов 85: ↑74 и ↓11 +63
Комментарии 45

Vagrant для малышей, или как на Windows легко получить настроенный сервер для разработки веб-приложений

Время на прочтение 9 мин
Количество просмотров 195K
Здравствуй, мой дорогой любитель поработать с Composer'ом, создавая свой очередной крутой проект на одном из модных фреймворков. Или, быть может, ты — фронтэнд-мастер, пишущий сложные штуки на JS и CSS, компилируя их из jsx- и less-файлов, устанавливая библиотеки через Bower, а проект собирая в каком-нибудь Grunt, попутно прогоняя код юнит-тестами и, конечно же, заливая потом всё это на github… Если всё это — часть твоей повседневной жизни, то хвала Всевышнему, поздравляю: ты прошел все эти испытания и даже не сломал себе мозг. Отныне, ты — из числа тех счастливых, потративших не одну неделю, разбираясь в том, как корректно настроить всю эту кучу инструментов, а также, ты — один из тех, кто может доминировать, властвовать и унижать блистать своими знаниями в комментариях Хабра к статьям других, менее проворных и смышлёных коллег по цеху…

Но… быть может, ты — лишь один из тех, кто только мечтает о подобных извращениях манипуляциях мастеров разработки современных веб-приложений?) Тогда я спешу обрадовать тебя: я тут на днях узнал пару полезных вещей и понял, что это — настоящий подарок для начинающих разработчиков. И решил написать эту статью.
Читать дальше →
Всего голосов 20: ↑17 и ↓3 +14
Комментарии 40

Погружаемся в Docker: Dockerfile и коммуникация между контейнерами

Время на прочтение 8 мин
Количество просмотров 373K
В прошлой статье мы рассказали, что такое Docker и как с его помощью можно обойти Vendor–lock. В этой статье мы поговорим о Dockerfile как о правильном способе подготовки образов для Docker. Также мы рассмотрим ситуацию, когда контейнерам нужно взаимодействовать друг с другом.


В InfoboxCloud мы сделали готовый образ Ubuntu 14.04 с Docker. Не забудьте поставить галочку «Разрешить управление ядром ОС» при создании сервера, это требуется для работы Docker.
Читать дальше →
Всего голосов 34: ↑33 и ↓1 +32
Комментарии 23

Дождались, релиз Laravel 5

Время на прочтение 7 мин
Количество просмотров 35K
Laravel logo Всем привет! Похоже, жители «Хабрахабра» всё ещё скептически относятся к красноречивому (eloquent) php-фреймворку Laravel от Taylor Otwell. К сожалению, никто так и не осветил вчерашний выход новой 5-й версии. Постараюсь восполнить этот недостаток. Я не буду рассказывать о том, что это за очередной фреймворк и какие велосипеды стоят в его гараже, а освещу лишь те моменты, которых коснулись изменения. В основном статья будет вольным переводом release notes с официального сайта. Часть понятий и терминов я не стал переводить, чтобы не растерялся смысл.
Поехали!
Всего голосов 33: ↑28 и ↓5 +23
Комментарии 31

Быстрый полнотекстовый поиск ElasticSearch

Время на прочтение 6 мин
Количество просмотров 218K
image
При разработке высоконагруженных сайтов или корпоративных систем частенько возникает проблема с разработкой быстрого и удобного поискового движка. Ниже перечислены наиболее важные, на мой взгляд, требования к такому движку:

  • Скорость
  • Простота установки и настройки
  • Цена (желательно бесплатно и с открытым кодом)
  • Обмен информацией в формате JSON (по HTTP)
  • Масштабируемость (возможность распределения на несколько серверов)
  • Индексация в режиме реального времени
  • Multi-tenancy (гибкость в настройках под индивидуального пользователя)
  • Возможность переноса системы в облако

Хочу рассказать вам о новом поисковом движке Elasticsearch, который полностью удовлетворяет всем этим требованиям. В статье будет краткое описание, ссылка на авторитетную презентацию, а также описание установки и работы с ним.
Читать дальше →
Всего голосов 69: ↑63 и ↓6 +57
Комментарии 61

Выжать все соки или используем Raspberry pi на всю катушку

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

Долой унылые речи о том, что это мой первый пост и все такое. Пожалуй лучше я расскажу о том, как выжать все соки из маленькой малютки под названием Raspberry PI (далее RPI), ценой $ 35. Я уверен на 146,6% что здесь уже были посты подобного рода, и этот пост не претендует на твердую пять. Скорее это просто вступительное слово о том: «Как я занял себя делом на пару унылых вечеров». Собственно мы получим в итоге Raspberry PI который можно использовать:
  1. как домашний web-сервер (если ты какой-нибудь PHP-разработчик, и тебе не чуждо веселье);
  2. как мультимедийную приставку с популярным XBMC Media Center (или супер-пупер-крутую-шняжку к телевизору за скромные 1800$);
  3. и как ночную торрент качалку, с web-интерфейсом (для ленивых);

Для тех кому стало интересно прошу под кат (Внимание! Трафик).
Читать дальше →
Всего голосов 66: ↑53 и ↓13 +40
Комментарии 34

Карьерный рост в ИТ глазами карьериста

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

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

* картинка взята с этого сайта
Читать дальше →
Всего голосов 69: ↑50 и ↓19 +31
Комментарии 44

VLC: Стрим и Стрим-Сервер #1

Время на прочтение 2 мин
Количество просмотров 51K
По просьбам трудящихся, начинаем потихоньку разворачивать тему стриминга при помощи VLC, но для начала немного вводной информации, о которой стали часто спрашивать после Двух серьезных разговоров о VLC
image
Читать дальше →
Всего голосов 39: ↑36 и ↓3 +33
Комментарии 50

Собеседование на должность PHP Backend Developer в Германии

Время на прочтение 5 мин
Количество просмотров 49K
Коротко обо мне: программирую c 2003 года. По образованию IT specialist и Application Developer. В последние годы основным направлением деятельности была разработка интернет-магазинов аля Hugo Boss и Tommy Hilfiger. Проснувшись утром в один прекрасный день, пришло осознание, что пора в этой жизни что-то менять.

Хочу поделиться своим опытом прохождения собеседований на должность PHP Backend Developer в Германии. Собеседований, в свое время, пришлось пройти немало. Но о двух наиболее запоминающихся хочется рассказать, возможно, кому-то и пригодится в будущем мой опыт.

Компания 1.


Основное направление деятельности — разработка сайтов.
Кол-во сотрудников: более 30.

Описание должности:

1. Хорошие знания PHP и многолетний опыт работы
2. Прагматичное мышление, ориентация на результат
3. SOLID, DRY, YAGNI vs. BUFD
4. Понимание смысла TDD и BDD и умение их применять
5. Понимание технологий HTTP, Frameworks, Patterns
6. Умение объяснять принятые технологические решения
7. Высокий уровень мотивации и желание работать именно в данной компании

Читать дальше →
Всего голосов 44: ↑34 и ↓10 +24
Комментарии 20

Психологическая деформация программистов. Взгляд с обеих сторон баррикад

Время на прочтение 6 мин
Количество просмотров 136K
Само наличие психологической деформации у какой-либо профессии, как правило, достаточно спорный момент ввиду того, что у разных людей она проявляется по-разному. Однако общую тенденцию можно выделить и, пожалуй, настало то время когда можно достаточно смело говорить, что программисты всё же имеют свой особенный психологический портрет который обусловлен их профессиональной деятельностью.

Я достаточно часто сталкивался с подобным мнением и не придавал ему особого значения, но когда женский коллектив нашей организации поздравил программистов с 23-м февраля по доброму назвав их «космическими войсками», решил всё же расставить определенные акценты в данном вопросе, т.к. одна из моих профессий связана напрямую с психоанализом. Да и баш уже не молчит.

И что же них такого деформированного?
Всего голосов 461: ↑436 и ↓25 +411
Комментарии 558

Информация

В рейтинге
Не участвует
Откуда
Украина
Дата рождения
Зарегистрирован
Активность