Pull to refresh
9
0
Даниил Оношко @dangreen

Senior Full Stack Web Developer

Send message

Возможно, вам не нужен Rust, чтобы ускорить ваш JS

Reading time 32 min
Views 28K

Несколько недель назад я обнаружил пост "Окисляем Source Maps с Rust и WebAssembly"
распространяющийся по Твиттеру и расказывающий о выигрыше в производительности от замены обычного JavaScript в библиотеке source-map на Rust, скомпилированный в WebAssembly.


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


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

Читать дальше →
Total votes 58: ↑54 and ↓4 +50
Comments 43

Добываем Wi-Fi соседа стандартными средствами MacOS

Reading time 5 min
Views 358K
Я всегда был фанатом багов и уязвимостей «на поверхности», всегда завидовал чувакам, которые пишут эксплойты для самых защищённых ОС, а сам умел только скрипткиддить (термин из нулевых). Однако мой пост про уязвимости в системах контроля версий набрал более 1000 лайков на Хабре и остаётся топ1 постом за всю историю Хабра, несмотря на то, что был написан 9(!) лет назад.

И сегодня я хотел бы на пальцах показать и рассказать про такую штуку, как вардрайвинг. А точнее, как стандартными средствами MacOS можно добыть пароли от Wi-Fi соседей. Нелёгкая забросила меня на очередную квартиру. Как-то исторически сложилось, что я ленивый. Пару лет назад я уже писал, что моя лень, новая квартира и провод Beeline (бывшая Corbina) помогли мне найти багу у Билайна и иметь бесплатно интернет в их сети. «Сегодня» происходит «подобное», я на новой квартире, нет даже провода, но есть много сетей у соседей.


Заколебавшись расходовать мобильный трафик, я решил, что «соседям надо помогать», и под «соседями» я имел введу себя…
Читать дальше →
Total votes 163: ↑151 and ↓12 +139
Comments 249

Как использовать все возможности мобильной ОС в React Native

Reading time 7 min
Views 12K

На рынке есть несколько кроссплатформенных решений: Cordova, Xamarin, React Native и другие, менее известные. Многие мобильные разработчики считают, что кроссплатформенные решения никогда не позволят делать то, что могут нативные приложения.


В статье я развенчаю этот миф и расскажу о механизме в React Native, который позволяет сделать все, на что способно нативное приложение. Этот механизм – нативные модули. Под катом – подробное описание, как создавать нативные модули для Android и iOS.


image

Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 5

Недокументированные приемы CSS

Reading time 8 min
Views 54K
Всем привет! Зовут меня Дмитрий Григоров. Работаю фронтедером в Райффайзенбанке в команде RBO PRO. Я расскажу и покажу вам, как можно творчески применять данные возможности CSS. В статье мы рассмотрим следующие темы:

  • Фоны и рамки;
  • Фигуры;
  • Визуальные эффекты.

Total votes 116: ↑114 and ↓2 +112
Comments 30

Вещи, которые вызывают недоверие и отталкивают ваших клиентов от сайта

Reading time 4 min
Views 28K
Дисклеймер: Вещи, о которых я сегодня поговорю для большинства людей связанных с веб-средой являются очевидными и вполне понятными (по крайней мере, мне так кажется), однако я не перестаю встречать их на необъятных просторах интернета и по сей день.

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

Счетчики, таймеры, купить сейчас


image

Вы наверняка с ними сталкивались. Те самые счетчики, по истечении времени которых акция на товар или услугу пропадёт, цена снова взлетит до потолка или вообще так желаемая вами вещь пропадет со складов компании. Но это в лучшем случае.
Читать дальше →
Total votes 35: ↑23 and ↓12 +11
Comments 111

Как мы выбирали между Elastic и Tarantool, а сделали свою (самую быструю) in-memory БД. С Join и полнотекстовым поиском

Reading time 10 min
Views 46K

Всем привет.


С середины 2016 года мы проектируем и разрабатываем новое поколение платформы. Принципиальное отличие от первого поколения — поддержка API "тонкого" клиента. Если старая платформа предполагает, что на клиента при запуске загружается метаинформация о всем контенте, который доступен для абонента, то новая платформа должна отдавать срезы данных отфильтрованные и отсортированы для отображения на каждом экране/странице.


Высокоуровневая архитектура на уровне хранения данных внутри системы — постоянное хранение всех данных в централизованном реляционном SQL хранилище. Выбор пал на Postgres, тут никаких откровений. В качестве основного языка для разработки — выбрал golang.


У системы порядка 10м пользователей. Мы посчитали, что с учетом профиля теле-смотрения, 10М пользователей может дать сотни тысяч RPS на всю систему.



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


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

Читать дальше →
Total votes 79: ↑74 and ↓5 +69
Comments 115

// бухой, пофиксю позже

Reading time 5 min
Views 102K
long long ago; /* in a galaxy far far away */

 //
    //                       _oo0oo_
    //                      o8888888o
    //                      88" . "88
    //                      (| -_- |)
    //                      0\  =  /0
    //                    ___/`---'\___
    //                  .' \\|     |// '.
    //                 / \\|||  :  |||// \
    //                / _||||| -:- |||||- \
    //               |   | \\\  -  /// |   |
    //               | \_|  ''\---/''  |_/ |
    //               \  .-\__  '-'  ___/-. /
    //             ___'. .'  /--.--\  `. .'___
    //          ."" '<  `.___\_<|>_/___.' >' "".
    //         | | :  `- \`.;`\ _ /`;.`/ - ` : | |
    //         \  \ `_.   \_ __\ /__ _/   .-` /  /
    //     =====`-.____`.___ \_____/___.-`___.-'=====
    //                       `=---='
    //
    //
    //     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //
    //               佛祖保佑         永无BUG
    //

«Слава богу, багов нет»
Читать дальше →
Total votes 261: ↑235 and ↓26 +209
Comments 143

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

Reading time 7 min
Views 53K

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


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


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


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

Читать дальше →
Total votes 89: ↑84 and ↓5 +79
Comments 135

Анонс RamblerFront& #3

Reading time 2 min
Views 2.5K


26 октября на Мансарде Rambler&Co состоится третий внешний RamblerFront& meetup, на котором наши сотрудники поделятся прикладными знаниями в области frontend-разработки.
Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Comments 8

Проблемы React UI Kit-а и единой дизайн-системы, о которых вы не знали

Reading time 8 min
Views 24K


2 сентября 2017 прошла конференция Moscow Frontend, где я на примере React UI Kit рассказывала о проблемах, которые встречаются при внедрении UI Kit в компании. Тема оказалась актуальнее, чем я могла предположить, поэтому решила опубликовать статью по этой же тематике, преследуя две цели: донести материал до людей, которые не смогли оказаться на конференции лично, и предоставить отличную возможность провести жаркую дискуссию на эту тему в комментариях.

Приятный бонус заключается в том, что после выступления и дискуссий в кулуарах в моем материале к докладу появились дополнения и нововведения. Поэтому, даже если вы были на конференции, вам все равно будет интересно прочитать статью. В конце материала я оставила несколько вопросов, на которые я попрошу ответить в комментариях. Приятного чтения!
Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Comments 39

10 способов как выделиться из толпы безликих аутсорсеров-конкурентов (с примерами)

Reading time 5 min
Views 17K

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


image alt text


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

Читать дальше →
Total votes 27: ↑25 and ↓2 +23
Comments 10

О чем забывают 90% при написании заголовков секций у лендинга? Какие цены и скидки привлекают и помогают продавать?

Reading time 6 min
Views 17K


Наверняка видели десятки лендингов с заголовками секций в виде «Как мы работаем», «Чем мы лучше других», «Этапы работы», «Наши выгоды», «О нас», «О компании» и т.д. Без слез не взглянешь. Такие заголовки абсолютно не работают. Потому что вы пишите не оглавление книги для чтения, а текст, с помощью которого хотите продать продукт своим потенциальным клиентам. Для этого нужно использовать различные схемы и методики, которыми мы хотим поделиться.
Читать дальше →
Total votes 11: ↑9 and ↓2 +7
Comments 20

Матрица с идеями для стартапов

Reading time 2 min
Views 48K
Буквально на днях Эрик Стромберг, бывший совладелец книжного сервиса Oyster, чуть более года назад проданного Google, рассказал о матрице, которая поможет вам найти идею для нового стартапа. Сама задумка создания подобной матрицы многим показалась чрезвычайно интересной. Пост Эрика, размещенный в его блоге на Medium, спровоцировал обширную дискуссию и вызвал интерес у мировых СМИ. Тем, кто еще не слышал об этой концепции, мы предлагаем ознакомиться с переводом резонансной публикации.


Читать дальше →
Total votes 25: ↑23 and ↓2 +21
Comments 37

Разработка архитектуры нового приложения для пассажиров Uber

Reading time 14 min
Views 35K
— Здравствуйте. Скажите, сколько стоит сделать приложение типа Uber?

Менеджер по входящим заявкам нашей компании получает звонки с таким содержанием стабильно раз в неделю. Понимать его стоит, как правило, так: либо клиент хочет себе настолько же успешный аналог приложения для связи между пассажиром и водителем, либо Uber для ______ (вписать нужную отрасль).

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

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

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


Total votes 29: ↑26 and ↓3 +23
Comments 21

Серьезное проектирование серьезных сайтов. Часть 1. Аналитика

Reading time 25 min
Views 40K
Почти 4 года назад мы написали одну из самых популярных статей в рунете про проектирование больших проектов с таким же названием, как и эта: часть 1 и часть 2. Только на Хабре её прочитало более 170 тыс. человек, а вообще она публиковалась в самых разных изданиях мира. Более 1000 стартапов использовали наработки из этой статьи для проектирования, и это только те, о которых я слышал и которые нам писали. Но время не стоит на месте, а мы постоянно развиваемся. С тех пор наша технология проектирования значительно эволюционировала и стала еще лучше. В этой статье мы опишем нашу обновленную технологию проектирования и покажем много живых примеров для каждой стадии.

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


Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Comments 15

Гарвардский курс CS50 «Основы компьютерных наук и искусства программирования»

Reading time 3 min
Views 56K


Вот уже несколько месяцев специально для JavaRush мы переводим и озвучиваем самый популярный в мире университетский курс о CS50 — «Основы компьютерных наук и искусства программирования» (трейлер). Его уже много лет очно читают для студентов Гарварда и для воспитанников Йельского университета, а в последнее время ещё и заочно для многомиллионной аудитории интернета.
Это перевод самой новой версии курса, который стартовал осенью 2015 года. В курсе 24 лекции и постепенно мы переведём их все. Намедни мы перевели 15-ю лекцию, её вы найдёте под катом в списке всех переведённых на сегодняшний день лекций.

Что вы узнаете, прослушав этот курс:

  • Основы компьютерных наук и программирования;
  • Концепции алгоритмов и алгоритмичности мышления. Какие задачи можно решать с помощью программирования и каким образом;
  • Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка;
  • Основы языка программирования C и Scratch;
  • Основы баз данных и SQL;
  • Веб-разработка: основы CSS, HTML, JavaScript и PHP;
  • Основы подготовки презентации проектов по программированию.

Читать дальше →
Total votes 30: ↑26 and ↓4 +22
Comments 11

Доклады первой встречи Dart-разработчиков в Питере

Reading time 1 min
Views 4.9K
30 ноября в питерском офисе Wrike прошла первая встреча Dart-разработчиков в России.



Dart-сообщество в России пока не столь многочисленно, тем не менее разработчики языка из Google готовы поддерживать наших программистов, использующих Dart в своих проектах, развивать экосистему и рассказывать о самых последних изменениях. На митапе мы поняли, что язык вызывает живой интерес не только у фронтендеров, но и у тех, кто хочет уйти в веб-разработку, имея за плечами опыт в Java, C# или PHP.

С выходом Angular 2 for Dart и нескольких других обновлений язык получил новый толчок в развитии, поэтому нам было интересно собрать всех заинтересованных разработчиков обсудить новости языка, напрямую пообщаться с инженерами из гугла и, в частности, обсудить особенности перехода на дарт с типизированных и скриптовых языков.

Публикуем первую часть докладов с митапа.
Смотреть
Total votes 10: ↑10 and ↓0 +10
Comments 6

Оценка сложности алгоритмов

Reading time 6 min
Views 609K
Не так давно мне предложили вести курс основ теории алгоритмов в одном московском лицее. Я, конечно, с удовольствием согласился. В понедельник была первая лекция на которой я постарался объяснить ребятам методы оценки сложности алгоритмов. Я думаю, что некоторым читателям Хабра эта информация тоже может оказаться полезной, или по крайней мере интересной.
Читать дальше →
Total votes 84: ↑72 and ↓12 +60
Comments 66

Javascript-фреймворки: должен остаться только один

Reading time 24 min
Views 57K

Сергей Аверин ( XEK )


Сергей Аверин

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

Про что же, все-таки, получился доклад? Доклад про то, как выбирали новый фреймворк, почему выбирали, и какие задачи решали.
Читать дальше →
Total votes 103: ↑93 and ↓10 +83
Comments 184

Нет, вы не сможете изготовить это так, как Apple

Reading time 3 min
Views 43K

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




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

В железе нет второго шанса.

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

Apple – исключение почти из всех правил.
Читать дальше →
Total votes 81: ↑64 and ↓17 +47
Comments 177

Information

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