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

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

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

Инструменты Node.js разработчика. Удаленный вызов процедур на веб-сокетах

Время на прочтение7 мин
Количество просмотров6.4K
О технологии websocket часто рассказывают страшилки, например что она не поддерживается веб-браузерами, или что провайдеры/админы глушат трафик websocket — поэтому ее нельзя использовать в приложениях. С другой стороны, разработчики не всегда заранее представляют подводные камни, которые имеет технология websocket, как и любая другая технология. По поводу мнимых ограничений сразу скажу, что технологию websocket сегодня поддерживают 96.8% веб-браузеров. Вы можете сказать, что оставшиеся за бортом 3,2% — это много, это миллионы пользователей. Я с Вами вполне соглашусь. Только все познается в сравнении. Тот же XmlHttpRequest, который все и уже не первый год используют в технологии Ajax, поддерживается 97.17% веб-браузеров (не сильно больше, правда?), а fetch — вообще, 93.08% веб-браузеров. В отличие от websocket, такой процент (а раньше он был еще меньше) уже давно никого не останавливает при использовании технологии Ajax. Так что использовать в настоящее время fallback на long polling не имеет никакого смысла. Хотя бы потому, что веб-браузеры, которые не поддерживают websocket — это те же самые веб-браузеры, которые не поддерживают XmlHttpRequest, и в реальности никакого fallback не произойдет.

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

Что же касается реальных ограничений и способах их преодоления, я расскажу в этом сообщении, на примере разработки веб-админки приложения.
Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Комментарии13

13 полезных однострочников на JavaScript

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



Здесь представлено 13 однострочников. Примеры подготовлены с использованием Node.js v11.x. Если вы будете использовать их в другой среде — это может повлиять на их выполнение.
Читать дальше →
Всего голосов 72: ↑53 и ↓19+34
Комментарии76

6 небольших советов, чтобы подготовить NodeJS к высоким нагрузкам

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

Сервис с распознаванием лиц «Look-A-Like» обслуживал тысячи пользователей одновременно

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


В рамках работы в MyHeritage мы разработали сервис doppelgänger для Евровидения 2019 года, с помощью которого, загрузив селфи, можно узнать на кого из участников конкурса вы похожи больше всего.


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

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

Процедура нотаризации Electron приложения для macOS 10.14.5

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

С выходом macOS 10.14.5, Apple добавила обязательную процедуру нотаризации (Notarization process) приложений перед их распространением. Что это и какие сложности возникли с этим обновлением при разработке на Electron.js я и хотел бы рассказать.


Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии33

Бесконечный UIScrollView

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

Во многих приложениях вы можете столкнуться с прокруткой, которая никогда не переносится в противоположном направлении в конце контента. Эта техника стандартна уже в течение многих лет, на многих платформах. С другой стороны, есть много сторонних библиотек, чтобы получить этот эффект. НО вам не нужно никакой сторонней библиотеки. У этой техники очень простая логика.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии2

Превращаем ViewPager в менеджер фрагментов с анимацией в стиле iOS

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

Многие разработчики под Андроид сталкивались с проблемой реализации анимаций и переходов при открытии новых фрагментов. Нам предлагается использовать либо добавление фрагментов в контейнер, наслаивая их друг на друга, либо реплэйс (замена одного фрагента на другой). У реплэйса есть четыре вида анимаций:


Вживую всё это выглядит примерно так:
    .beginTransaction()
    .setCustomAnimations(
        R.anim.enter_from_left, //Анимация открытия фрагмента 2
        R.anim.exit_to_right, //Анимация закрытия фрагмента 1
        R.anim.enter_from_right, //Анимация открытия фрагмента 1
        R.anim.exit_to_left) //Анимация  закрытия фрагмента 2
    .replace(R.id.container, myFragment)
    .commit()

image


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

Новые правила анонимности мессенджеров

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

Неприятная новость, которую мы столько ждали.

Сегодня, 5 мая, на территории Российской Федерации вступили в силу новые правила идентификации пользователей мессенджеров по номеру телефона. Соответствующее постановление правительства было опубликовано 6 ноября 2018 года.
Читать дальше →
Всего голосов 44: ↑39 и ↓5+34
Комментарии172

Маркетинг для стартапа: как привлечь тысячи пользователей со всего мира не потратив и $200

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


Сегодня я расскажу, как подготовить стартап к выходу на Product Hunt, какие шаги стоит предпринять до этого, и как подогревать интерес к проекту в день и после публикации.
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии5

Как я хакера ловил

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

Аннотация


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

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

Введение


Одним февральским вечерком я был занят поиском места для романтичного свидания со своей возлюбленной. Через какое-то время мое внимание привлек сайт milleniumfilm.ru, не доступный в настоящее время. Сайт предоставлял услуги аренды небольших кинозалов для частного просмотра. Красивые картинки, умеренные цены, есть онлайн поддержка, одно но: данные банковской карты предлагалось ввести на не защищенной странице этого же домена. Насторожившись, я написал в техподдержку сайта, и мошенники не заставили себя долго ждать — поняв, что я достаточно технически грамотен послали меня на 3 буквы. Конечно, мошенникам нет смысла тратить на меня время, но зачем так грубо? — В любой ситуации нужно оставаться Человеком.

С отзывами о сайтах такого же плана можно ознакомиться тут: zhaloba-online.ru. Некоторые из них даже до сих пор работают.

Взлом


Чувствуя вселенскую несправедливость, с целью установления личности злоумышленника и пресечения его деятельности, я принялся изучать сайт на предмет уязвимостей.
Читать дальше →
Всего голосов 311: ↑305 и ↓6+299
Комментарии274

Самый простой способ сделать чат в iOS приложении

Время на прочтение3 мин
Количество просмотров8.6K
Всем привет! Каждый раз при проектировании и верстке чата у меня возникал вопрос: «А можно ли это как-нибудь упростить?». На следующей неделе мне предстоит верстать большой чат для приложения, поэтому в голове опять начали появляться мысли про облегчение верстки. Немного посидев и потыкав возможности AutoLayout, я нашел способ упростить процесс верстки и дальнейшей работы по максимуму. При решении подобных задач зачастую используют UICollectionView, но в этот раз мы будем использовать UITableView.
Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии8

Разрабатывать приложения под Android — словно быть (демонетизированным) ютубером

Время на прочтение14 мин
Количество просмотров43K
Как известно, некоторые авторы на YouTube крайне недовольны условиями, которые предлагает эта платформа. Аналогичное сражение сейчас ведут разработчики Android-приложений на платформе Google Play. Попытаюсь за 20 минут объяснить, что не так с Android.

Когда-то Android считался лучшей мобильной платформой: контроль, настраиваемость, продвинутые функции, реальная многозадачность, поддержка даже редких случаев использования и свобода разработчиков. Это была лучшая платформа для науки и образования: во-первых, инструменты разработки свободны и кросс-платформенны, во-вторых, Android был очень гибкой ОС, которая не мешала экспериментировать с инновационными концепциями и возиться с оборудованием. Теперь всё это быстро исчезает.

Раньше основные релизы Android приносили новые функции, которые радовали и разработчиков, и пользователей. Но с какого-то момента я уже начал бояться анонсов новых версий, и до сих пор ищу в себе силы (хех), чтобы посмотреть на список изменений и рекомендации для разработчиков к последнему релизу. И новые версии — это не единственная причина для нервотрёпки: изменения в политике Google Play Store тоже всегда забавно читать.
Читать дальше →
Всего голосов 95: ↑88 и ↓7+81
Комментарии169

Как одно изменение конфигурации PostgreSQL улучшило производительность медленных запросов в 50 раз

Время на прочтение3 мин
Количество просмотров44K
Здравствуйте, хабровчане! Предлагаю вашему вниманию перевод статьи «How a single PostgreSQL config change improved slow query performance by 50x» автора Pavan Patibandla. Она очень сильно мне помогла улучшить производительность PostgreSQL.

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

Отслеживая задержку на разных уровнях, мы поняли, что одному конкретному запросу PostgreSQL потребовалось 20 секунд для завершения. Для нас это стало неожиданностью, так как обе таблицы имеют индексы в соединяемом столбце.

Медленный запрос

image
Читать дальше →
Всего голосов 90: ↑89 и ↓1+88
Комментарии39

Обзор Vue.js 2.6

Время на прочтение6 мин
Количество просмотров26K
Привет, Хабр!

Совсем скоро должна выйти новая версия Vue.js — 2.6. Под катом вы найдете обзор новых фич следующей версии, включая новый синтаксис слотов, Vue.observable() и много чего еще!

Читать дальше →
Всего голосов 46: ↑44 и ↓2+42
Комментарии15

8 худших вопросов на собеседовании по Vue.js

Время на прочтение11 мин
Количество просмотров67K
Привет, Хабр!

Вы любите собеседования? И часто проводите их? Если ответ на второй вопрос «Да», то среди кандидатов вам наверняка встречались отличные и умные люди, которые отвечали на все ваши вопросы и приближались к концу зарплатной вилки.

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

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

image
Read more →
Всего голосов 36: ↑33 и ↓3+30
Комментарии35

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

Время на прочтение2 мин
Количество просмотров74K
У вас 2-3 монитора, на одном браузер и редактор кода, на втором мануал, на третьем почта, вы рассортировали окна как нужно. Далее пошли налить чашечку кофе, монитор выключился, вы пришли, подергали мышкой и вдруг все окна оказались на одном главном мониторе, всё в кучу, вы снова раскидываете окна и ситуация каждый раз повторяется.

Данная тема обсуждается на многих ресурсах, в том числе и на форуме Microsoft, но решение и четкое описание проблемы найти сложно.
Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии43

Mkcert: валидные HTTPS-сертификаты для localhost

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

В наше время использование HTTPS становится обязательным для всех сайтов и веб-приложений. Но в процессе разработки возникает проблема корректного тестирования. Естественно, Let’s Encrypt и другие CA не выдают сертификаты для localhost.

Традиционно есть два решения.
Читать дальше →
Всего голосов 65: ↑54 и ↓11+43
Комментарии35

Работа с форматом конфигураций 1С: Предприятие

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

Решил опубликовать исходный код C# для работы с форматом конфигураций 1С: Предприятие.


https://github.com/elisy/MdInternals


MdInternals понимает формат cf, cfu, epf, erf, распаковывает содержимое в удобочитаемые Xml и текстовые файлы и загружает обратно. Позволяет программно обращаться к внутренним файлам и свойствам объектов.


Проект состоит из частей:

  • MdInternals программно обращается к объектам и свойствам конфигурации
  • CfProject отвечает за сериализацию и десериализацию объектов MdInternals
  • MdInternals.Cil декомпилирует байт-код (OpCode) 1С
  • MdInternals.Serialization работает с внутренним полу-JSON форматом 1С вида "{ 19 { "", 2 } }"


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

Машинное обучение с Node.js при помощи библиотеки Tensorflow.js

Время на прочтение10 мин
Количество просмотров31K
Привет всем, коллеги!

Возможно, поклонники библиотеки Tensorflow, уже заметившие у нас в предзаказе эту книгу, также присматривались к возможностям машинного и глубокого обучения в браузере, тем более, что тему не обошел вниманием и сам Франсуа Шолле. Интересующихся приглашаем под кат, где рассказано, как при помощи библиотеки Tensorflow.js распознаются изображения.
Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии8

Дружелюбная защита WEB ресурса от атак перебором

Время на прочтение4 мин
Количество просмотров11K
Одна из проблем, которая возникает перед WEB-ресурсами имеющими персональные кабинеты — атака перебором. Да, простой перебор всех вариантов пароля для конкретной учетки. Тупо? Возможно, но такая атака может сильно нагрузить ресурс. К тому же, если контроля сложности пароля пользователя при регистрации нет, она может оказаться еще и успешной.

Чаще всего, вопрос решается относительно просто. Если пользователь ввел несколько раз неправильно пароль, его учетка блокируется на какое-то время. Альтернативное решение — выводить капчу. Сразу, или после нескольких неудачных попыток. Ну, и не забудем про 2F авторизацию, которая почти неуязвима. Казалось бы — профит! Но, не все так радужно…
Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии21

Telegram на MacOS [предположительно] тоже локально хранит переписку в доступном виде

Время на прочтение2 мин
Количество просмотров35K
image
Иллюстрация bleepingcomputer.com

Никогда такого не было, и вот опять…
Исследователь из США Натаниэль Сачи обнаружил, что приложение Telegram не защищает шифрованием локальную копию переписки пользователя:



Telegram хранит ваши сообщения в незашифрованной базе данных SQLite. По крайней мере, мне не пришлось прилагать усилия, чтобы найти ключ в этот раз. Хотя [сообщения] довольно трудно просматривать (наверное, надо написать какой нибудь вспомогательный скрипт на python?) — это очень похоже на проблему с Signal


UPD Информация подается в том виде, в каком она была в первоисточнике и твиттере исследователя.
UPD 2 Поступил разоблачительный комментарий от Павла Дурова
Всего голосов 45: ↑26 и ↓19+7
Комментарии95
1

Информация

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