Как стать автором
Обновить
0
@bnmgread⁠-⁠only

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

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

Ruby Together – фонд развития языка Ruby

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


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

Ruby Together — некоммерческая организация, занятая привлечением и распределением денег на развитие инфраструктуры языка Ruby. Уже сейчас под крылом организации находятся столпы экосистемы Ruby: гем bundler, репозиторий rubygems.org и сам проект rubygems. Организация управляется советом директоров, который состоит из хорошо знакомых всем рубистам имен: André Arko, Aaron Patterson (интервью для хабра), Steve Klabnik (интервью для хабра, «Как я нахожу время?»), Sarah Mei, Terence Lee, Ines Sombra, Joel Watson.

Индивидуальное членство в организации стоит $40 в месяц, корпоративное членство – $800. Взносы дают право голоса и ряд бонусов, о которых под катом. Для тех, кто просто хочет помочь проекту деньгами, существует статус «друга», без доступа к внутренним ресурсам и права голоса, с ежемесячным взносом $10, либо разовым взносом произвольной суммы. На текущий момент к проекту присоединились компании Stripe и Engine Yard, а также более 30 индивидуальных участников.

Принять участие.
Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии5

Parcel — очень быстрый бандлер, не требующий настройки

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


Для чего


Parcel — маленький и быстрый бандлер, позиционируется как решение для маленьких проектов. С момента первого релиза (7 дней назад) уже собрал 8725 звездочек на гитхабе. Согласно официальной документации имеет следующие плюсы:


Быстрая сборка


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


Собирает все ваши ассеты


Из коробки имеется поддержка ES6, TypeScript, CoffeeScript, HTML, SCSS, Stylus, raw-файлов. Плагины не требуются.


Автоматические преобразования


Весь код автоматически проходит через Babel, PostCSS, PostHTML — подхватываются при необходимости из node_modules.


Разделение кода без лишней конфигурации


Используя динамический import(), Parcel разделяет бандл для возможности быстрой начальной загрузки точки входа в приложение


Горячая перезагрузка


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


Дружелюбный вывод ошибок


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

Читать дальше →
Всего голосов 22: ↑18 и ↓4+14
Комментарии68

WorkerKiller

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

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

Читать далее
Рейтинг0
Комментарии2

С 4 часов до 1 минуты. Как найти одну строчку, которая ускорит сервис на Ruby

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

Кейс из жизни, когда удалось на порядки повысить производительность сервиса. Показываю на реальном примере, как можно искать "узкие места" в работающем, казалось бы, коде. И как много профита порой можно получить от минимальных правок. В данном случае весь фикс потребовал замены всего одной строки. Но самое интересное - эту строку найти...

Читать далее
Всего голосов 19: ↑19 и ↓0+19
Комментарии4

Несколько полезных ruby-трюков, которые (возможно) улучшат ваш код

Время на прочтение3 мин
Количество просмотров31K
Скучая в эту дождливую праздничную погоду, наткнулся на занимательную статейку в блоге с говорящим названием Samurails, в которой описываются некоторые интересные ruby-трюки, которые наверняка будут интересны новичкам.

Итак, приступим.

Создаем хэш из массива


Проще простого. Ставим команду Hash перед любым массивом и получаем готовые пары ключ/значение:

Hash['key1', 'value1', 'key2', 'value2']

# => {"key1"=>"value1", "key2"=>"value2"}

Читать дальше →
Всего голосов 34: ↑26 и ↓8+18
Комментарии34

Ускоряем сборку веб-приложения с webpack

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

По мере того как ваше приложение развивается и растёт, увеличивается и время его сборки — от нескольких минут при пересборке в development-режиме до десятков минут при «холодной» production-сборке. Это совершенно неприемлемо. Мы, разработчики, не любим переключать контекст в ожидании готовности бандла и хотим получать фидбек от приложения как можно раньше — в идеале за то время, пока переключаемся с IDE на браузер.


Как этого достичь? Что мы можем сделать, чтобы оптимизировать время сборки?


Эта статья — обзор существующих в экосистеме webpack инструментов для ускорения сборки, опыт их применения и советы.


Оптимизации размера бандла и производительности самого приложения в этой статье не рассматриваются.

Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии10

Изучение методов кэширования в React

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

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

Сегодня мы исследуем различные методики и рассмотрим все их детали и тонкости. Следует ли использовать useMemo или memoization? Должен ли я хранить данные с помощью useState и context? Когда мы закончим, вы должны быть в состоянии сделать осознанный выбор в отношении кэширования данных. Вы узнаете обо всех тонкостях.

И много анимированных GIF-файлов. Что еще вы можете желать?

Давайте начнем!

Читать далее
Всего голосов 8: ↑5 и ↓3+2
Комментарии0

Вникаем в метаклассы Ruby

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

Примечание переводчика: данный пост является логическим развитием, а точнее «предысторией» поста Вникаем в include и extend и был подсказан в комментариях к нему пользователем murr, за что ему большое спасибо.

Классы и объекты в Ruby связаны между собой достаточно затейливо и не сразу можно понять что к чему. Из-за особого назначения классов очень легко потерять из вида тот факт, что классы — это тоже объекты Ruby. От «обычных» объектов их отличает два вещи: они служат образцом для создания новых объектов и они являются частью иерархии классов. Все верно, классы могут иметь экземпляры себя (объекты), суперклассы (родителей) и подклассы (детей).

Если классы — это объекты, то у них должен быть свой собственный класс. Классом всех классов (как объектов) в Ruby является класс Class:

# один из способов создать новый класс
Dog = Class.new
    
# общепринятый способ создания класса
class Dog
    # какая-то реализация собачьего поведения
end

Dog.class
=> Class

Читать дальше →
Всего голосов 41: ↑39 и ↓2+37
Комментарии11

Проксируем файлы из AWS S3 средствами nginx

Время на прочтение4 мин
Количество просмотров30K
Казалось бы, задача реализации фронтенда для AWS на nginx звучит как типовой кейс для StackOverflow — ведь проблем с проксированием файлов из S3 быть не может? На деле выяснилось, что готовое решение не так-то просто найти, и данная статья должна исправить эту ситуацию.



Зачем это вообще может понадобиться?


  1. Контроль доступа к файлам средствами nginx — актуально для концепции IaC (инфраструктура как код). Все изменения, связанные с доступом, будут вноситься только в конфигах, которые лежат в проекте.
  2. Если отдавать файлы через свой nginx, появляется возможность их кэшировать и сэкономить тем самым на запросах к S3.
  3. Подобный прокси поможет абстрагироваться от типа хранилища файлов для разных инсталляций приложения (ведь помимо S3 существуют и другие решения).
Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии15

Как там биллинг делается: когда заказчик и разработчик говорят на разных языках

Время на прочтение8 мин
Количество просмотров25K
С 2006 года мы занимаемся биллинговыми системами. В общей сложности — более 12 лет. Начинали работать с телевизионного рынка, сейчас среди наших клиентов есть и банки, и сотовые операторы, и провайдеры интернет-телевидения. Сама биллинговая система эволюционировала от более или менее простого решения для телевидения до полноценного конвергентного биллинга с возможностью применения препейдной схемы. А мы за это время успели набить множество шишек как по части внедрения, так и поддержки биллинга. Часто ошибки происходят оттого, что заказчик не знает “матчасть”, а разработчики биллинга не понимают опасений и потребностей клиента.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии0

Rails: Хватит отмазываться, начинаем BDD-ить!

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

Кто здесь?


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

11:24:21 PM Michael: ну хз, надо пробовать
11:24:24 PM Michael: наверное так лучше
11:24:27 PM Michael: даже я думаю наверняка
11:24:36 PM Michael: но пока меня че-то останавливает
11:24:38 PM Michael: лень наверное :)

Знакомо? «Не хочется разбираться? Нет времени?» Тогда читаем дальше. В статье расскажу, как настроить свое любимое рельсовое окружении на разработку с подходом BDD и начать новую жизнь (опционально).
Поехали!
Всего голосов 88: ↑77 и ↓11+66
Комментарии38

Ваш профессиональный спад придет (гораздо) раньше, чем вы думаете

Время на прочтение24 мин
Количество просмотров62K
Вот как извлечь из него максимум.


Изображение: Люси Гутьеррес

«Неправда, что ты больше никому не нужен».

Эти слова исходили от пожилой женщины, сидящей позади меня на позднем вечернем рейсе из Лос-Анджелеса в Вашингтон. В самолете было темно и тихо. Мужчина, которого я счел за ее мужа, почти беззвучно пробормотал в ответ что-то вроде «Лучше бы я был мертв».

И снова женщина: «О, прекрати это говорить».

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

Когда в конце рейса включился свет, я наконец-то увидел опустошенного человека. Я был в шоке. Я узнал его – он был и остается знаменитым на весь мир. Тогда, в возрасте восьмидесяти лет, он был любим как герой за мужество, патриотизм и достижения многих десятков лет назад.
Читать дальше →
Всего голосов 72: ↑66 и ↓6+60
Комментарии107

Обзор 14 свежих плагинов для Фигмы, которые помогут повысить производительность пока мы все #сидимдома

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


Сегодня мы поговорим о следующих новых Figma плагинах:

  • AutoGrid — Поддержка сетки для AutoLayout.
  • Tracking – Плагин для создания аннотаций отслеживания.
  • Find and Replace Colors – Организация цветовых стилей в ваших дизайнах
  • Spacing Manager – Плагин для согласованных отступов в компонентах
  • Geometric – Создание математических фигур и кривых
  • Halftones – Плагин, позволяющий накладывать точечный или полутоновый фильтры на картинки
  • Batch Styler – Изменение нескольких стилей текста одновременно
  • Spell Inspector — Поиск и исправление орфографических ошибок
  • Sitemap – Плагин для создания карты вашего сайта
  • Style Organizer — Показывает и упорядочивает все цветовые стили
  • Focus CSS — Более удобное использование CSS в Figma
  • Flipbook – Плагин для анимации ваших дизайнов в Figma
  • SwiftUI Inspector – Плагин для улучшения рабочего процесса разработки для платформ Apple
  • Filter – Фильтрующий плагин для ретуши ваших изображений

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

Почему мы используем GraphQL в 8base

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


Друзья, всем привет!

Эта статья в первую очередь будет интересна фронтенд-разработчикам, особенно тем кому актуальна тема GraphQL, но в то же время я надеюсь, что она будет полезна и бэкенд-разработчикам и поможет им понять преимущества GraphQL глазами фронтендера.
Читать дальше →
Всего голосов 24: ↑19 и ↓5+14
Комментарии20

Генерация приложения на React с бэкэндом на GraphQL за считанные минуты

Время на прочтение1 мин
Количество просмотров4.4K
Мы добавили новую экспериментальную возможность в 8base CLI (Command Line Interface), которая генерирует готовое приложение на React из вашей модели данных. Это очень удобно для начала работы с GraphQL и React, а также для быстрого создания пользовательского интерфейса приложения. Похоже на скаффолдинг в Ruby-on-Rails.

Созданное приложение основано на Create React App, использует Apollo Client для GraphQL запросов, включает в себя аутентификацию на основе Auth0, а также возможность загрузки файлов.
Читать дальше →
Всего голосов 9: ↑7 и ↓2+5
Комментарии2

Защита вашего GraphQL API от уязвимостей

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

Привет, Хабр! Представляю вашему вниманию перевод статьи Protecting Your GraphQL API From Security Vulnerabilities.


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


image

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

10 ошибок в Ruby / Ruby on Rails, которые легко исправить

Время на прочтение4 мин
Количество просмотров31K
Программисты делают ошибки в коде. Некоторые просто раздражают (ошибки, не программисты – прим. переводчика), другие могут быть действительно опасными для приложения.
Представляю вам свою подборку из 10 распространенных ошибок разработчиков Ruby/RoR и советов о том, как их избегать. Надеюсь, они помогут сократить вам время отладки кода.
Читать дальше →
Всего голосов 27: ↑23 и ↓4+19
Комментарии38

«Введение в Elixir» — первая книга по Эликсиру на русском

Время на прочтение7 мин
Количество просмотров14K
Введение в Elixir Это произошло внезапно, но принесло море радости. Наконец-то книжное издательство обратило внимание на заинтересованность разработчиков Эликсиром и выпустило первую книгу по этому языку на русском. Выбор издания для перевода ожидаем — это материал для людей, которые хотят познакомиться с языком либо уже начали знакомство и готовы узнать о возможностях больше.

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

Подробности и промокод внутри
Всего голосов 20: ↑20 и ↓0+20
Комментарии14

Руководство по локализации приложений для китайского рынка, часть 2

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

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

Переведено в Alconost

6. Внедрение местных способов оплаты


Привычные на Западе способы оплаты (кредитные карты, например), в Китае используются редко, поэтому нужно применять местные инструменты. Мобильные операторы (China Telecom, China Unicom и China Mobile) позволяют делать платежи из приложений. Прямая оплата через оператора составляет около 75% от всех платежей.

Еще один популярный инструмент — Alipay, крупнейший платежный сервис на этом рынке. Alipay работает с несколькими магазинами и легко встраивается в приложение.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии1

Руководство по локализации приложений для китайского рынка. Часть 1

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

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

Китай с 2013 года — мировой лидер по количеству владельцев смартфонов, а сегодня это уже крупнейший в мире рынок приложений. Здесь речь идет о доходах в размерах более 25 млрд. долларов по состоянию на 2016 год и 42 млрд. долларов — к 2020 году (согласно прогнозам).

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

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

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

Переведено в Alconost
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии3
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность