Pull to refresh
0
0

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

Send message

Почему ['1', '7', '11'].map(parseInt) возвращает [1, NaN, 3] в Javascript?

Reading time4 min
Views66K


Javascript — странный. Не верите? Ну попробуйте тогда преобразовать массив строк в целые числа с помощью map и parseInt. Запустите консоль (F12 на Chrome), вставьте код ниже и нажмите Enter


['1', '7', '11'].map(parseInt);

Вместо ожидаемого массива целых чисел [1, 7, 11] мы получаем [1, NaN, 3]. Но как так? Чтобы узнать в чём тут дело, сначала нам придётся поговорить о некоторых базовых концепциях Javascript. Если вам нужен TL;DR, пролистывайте статью до самого конца.

Читать дальше →
Total votes 165: ↑134 and ↓31+103
Comments145

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

Reading time6 min
Views12K

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


Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments33

Что нужно знать для эффективной разработки на фреймворке Angular

Reading time10 min
Views19K


Считается, что во фронтенд-разработке эквивалентом «Hello world» является приложение — список задач. Да, это позволяет охватить CRUD-аспект создания приложения, однако возможности используемых фреймворка или библиотеки при этом часто затрагиваются весьма поверхностно.

Angular постоянно изменяется и обновляется, но кое-что остается неизменным. Я расскажу об основных концепциях Angular, которые необходимо изучить, если вы хотите использовать этот JavaScript-фреймворк наилучшим образом.

Для работы с Angular нужно многому научиться, и при этом новички часто застревают на начальном уровне лишь потому, что не знают, где и что искать. Поэтому я написала руководство (в которое входит и краткое изложение основ Angular), которое мне самой очень пригодилось бы, когда я только начинала работать с Angular 2+.

Переведено в Alconost
Читать дальше →
Total votes 10: ↑7 and ↓3+4
Comments17

Производительность фронтенда: разбираем важные метрики

Reading time12 min
Views31K
Обычно под производительностью понимают количество операций за определенный интервал времени и чем их больше, тем лучше. Но такое определение, да и подход в целом, мало применим к фронтенду, потому что у каждого пользователя будет свой «фронтенд». Именно об этом я и хочу поговорить, что же происходит «там», у пользователя, на другой стороне, в реальности, а не на вашем топовом MacBook.

Кроме это, я постараюсь вскользь рассмотреть общие правила оптимизации кода и некоторые ошибки на которые стоит обратить внимание. Ещё расскажу про инструмент, который помогает не только в профилировании, но и «из коробки» собирает кучу базовых метрик о производительности вашего приложения (и надеюсь, вы дочитаете этот пост до конца).
Читать дальше →
Total votes 65: ↑65 and ↓0+65
Comments22

Что не нужно делать, если у вас украли телефон

Reading time7 min
Views235K
Ранее каждый раз, когда я видел сообщения о том, что у человека украли телефон, то всегда задавался вопросом: а зачем? Ну, серьезно, зачем воруют смартфоны если:

  • его можно отследить по IMEI, а смена IMEI явно не бесплатна;
  • на телефоне могут быть установлены блокировки, снять которые так же не бесплатно;
  • есть приложения с режимом «Антивор», которые передают фото, видео и аудио;
  • даже встроенные возможности Android (и, полагаю, iOS) имеют функцию геолокации пропавшего устройства;
  • устройство может иметь особые приметы, которые довольно сложно устранить «бесплатно»;
  • наверняка где-то рядом есть камеры видеонаблюдения, свидетели и т.п.;
  • при продаже краденного за него сложно будет выручить большую сумму денег.

Осознавая все это, я действительно не понимал, для чего же воруют телефоны, если, по сути, их легко найти, а денег на этом не заработать? Не понимал до 8 февраля 2019 года, пока у меня у самого не украли телефон.
Читать дальше →
Total votes 286: ↑259 and ↓27+232
Comments638

Как подключить скрипт на сторонний сайт

Reading time12 min
Views26K
Привет, Хабр! Это первый пост в нашем блоге. Многие знают нас как чат для сайта, именно с него мы начинали, а сейчас занимаем лидирующие позиции в сфере бизнес-мессенджеров. Мы постепенно эволюционировали в комплексное бизнес-решение, которое предоставляет множество возможностей для клиентов: callback, общение с клиентами через мессенджеры, соцсети, мобильные приложения, виртуальная АТС, CRM-функции и многое другое.

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

image

Jivosite сегодня это:

  • 250К клиентов по всему миру;
  • 150М показов виджета в сутки;
  • 3.5М сообщений в сутки;
  • 10М чатов в месяц;
  • 1М одновременных коннектов;
  • 250+ серверов в production.

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

Входная точка


Театр начинается с вешалки, а подключаемый сервис с кода-вставки. Он является входной точкой для любого сервиса или модуля на сайт. Как правило, его можно найти в инструкции установки, после чего необходимо добавить его в HTML-код сайта, а дальше происходит «магия», которая определенным образом загружает и инициализирует скрипт.

<script src="https://site.com/file.js"></script>

Казалось бы, что может быть проще подключения скрипта на сайт?
Читать дальше →
Total votes 19: ↑16 and ↓3+13
Comments26

HTTP-заголовки для ответственного разработчика

Reading time15 min
Views100K

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

Разработчики соединяют людей.
Разработчики помогают людям.
Разработчики дают людям возможности.

Разработчики могут создать сеть для всех, но эту способность необходимо использовать ответственно. В конце концов, важно создавать вещи, которые помогают людям и расширяют их возможности. В этой статье я хочу рассказать о том, как HTTP-заголовки могут помочь вам создавать лучшие продукты для лучшей работы всех пользователей в интернете.
Читать дальше →
Total votes 92: ↑90 and ↓2+88
Comments64

Как технологии манипулируют вашим разумом: взгляд иллюзиониста и эксперта по этике дизайна Google

Reading time14 min
Views53K


Примерное время прочтения: 12 минут.


“Проще обмануть человека, чем убедить его, что он был обманут”
Неизвестный автор

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


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

Читать дальше →
Total votes 112: ↑105 and ↓7+98
Comments102

Зачем нужны сервисы приема SMS и с чем их едят

Reading time4 min
Views67K
Сервисы, предоставляющие временный номер для приема смс онлайн, появились после того как многие социальные сети, торговые площадки и прочие интернет ресурсы перешли с идентификации пользователя, при регистрации, через адрес электронной почты на идентификацию через отправленный код на телефонный номер, а зачастую и код на телефонный номер и подтверждение через электронную почту.

Для кого существуют сервисы, предоставляющие виртуальные номера онлайн?


Всю аудиторию пользователей ресурсов, предоставляющих услуги приема смс на телефонные номера онлайн, можно разделить на группы:
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments25

Записки фрилансера: разработка первого React Native-приложения

Reading time37 min
Views40K
Автор материала, перевод которого мы публикуем, недавно выпустил своё первое мобильное приложение, написанное на React Native. Так случилось, что это приложение стало и его первым проектом, который он создал как программист-фрилансер. Здесь он расскажет о том, с чем ему пришлось столкнуться в ходе работы — от инициализации проекта до его публикации в App Store и Google Play.


Читать дальше →
Total votes 43: ↑42 and ↓1+41
Comments6

Docker — это игрушка или нет? Или всё-таки да?

Reading time7 min
Views51K

Всем привет!


Ооочень хочется прям сразу приступить к теме, но правильнее будет немного рассказать про мою историю:


Вступление


Я программист с опытом разработки frontend одностраничных приложений, scala/java и nodejs на сервере.


Довольно долго (уже точно пару — тройку лет), я придерживался мнения, что docker это манна небесная и вообще очень крутой инструмент и абсолютно каждый разработчик должен уметь пользоваться им. А отсюда вытекает, что и у каждого разработчика должен стоять docker на локальной машине. Да что там про моё мнение, вы полистайте вакансии, которые размещаются на том же hh. В каждой второй есть упоминание про docker и если вы им владеете — это будет вашим конкурентным преимуществом ;)


На своем пути я встечался с многими людьми, с их разным отношением к docker и к его экосистеме. Одни говорили, что это удобная вещь, гарантирующая кроссплатформенность. Вторые не понимали зачем им запускаться в контейнерах и какой профит от этого, третьим было вообще пофиг и они не парились (просто писали код и уходили домой — завидую, кстати, им :) )

Читать дальше →
Total votes 111: ↑69 and ↓42+27
Comments310

Где обучать детей программированию?

Reading time4 min
Views22K
Ежегодно HeadHunter проводит “Школу программистов”, где обучает студентов и молодых специалистов всем хитростям разработки, а также работе в команде. Помимо языков программирования ребята изучают основы дизайна, тонкости командной разработки.

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

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

image
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments24

AMP: будущее электронной почты

Reading time4 min
Views19K

image
Динамическое электронное письмо, созданное с использованием технологии AMP, российскими разработчиками из ecwid.ru


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


"Как?" — вы спросите? Ответ под катом

Читать дальше →
Total votes 38: ↑32 and ↓6+26
Comments63

Умеренный Hardening для Firefox

Reading time20 min
Views37K


Современный веб состоит из множества разных технологий, которые предоставляют самые разные возможности… но ещё и создают немалое количество угроз. Современные браузеры давно стали самыми сложными приложениями на компе, обогнав по сложности даже ядро ОС (в Firefox в несколько раз больше строк кода, чем в ядре Linux или офисных пакетах). Мы проводим в браузере большую часть своего времени, так что не удивительно, что браузер находится под прицелом: его постоянно пытаются взломать, использовать в ботнете, пытаются украсть из него наши данные, прослушать его трафик, отслеживать посещаемые нами сайты и наши действия на этих сайтах.


Сейчас самое время сказать, что всё не так уж плохо, и со всеми этими проблемами можно справиться… но это не так. Из коробки браузеры уже делают немало: регулярно обновляются, стараются затыкать дыры в безопасности, внедряют новые технологии для защиты, предоставляют возможность расширять их функционал сторонними расширениями. Но серьёзной защиты из коробки нет, и вряд ли она когда-нибудь появится: она идёт в комплекте с усложнением интерфейса браузера и частичным отключением его функционала, что "ломает" сайты и вряд ли понравится обычным пользователям. Но самое печальное, что даже такой ценой невозможно полноценно защитить браузер — слишком уж он стал сложным.


Тем не менее, для усиления защиты браузера можно много чего сделать.

Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments36

Разбираемся в протоколе консенсуса Stellar

Reading time19 min
Views9.5K


Протокол консенсуса Stellar впервые описан в научной статье Дэвида Мазьера в 2015 году. Это «федеративная система византийского соглашения», которая позволяет децентрализованным вычислительным сетям без лидеров эффективно достигать консенсуса по какому-либо решению. Платёжная сеть Stellar использует Stellar Consensus Protocol (SCP) для ведения согласованной истории транзакций, которую видят все участники.

Считается, что протоколы консенсуса трудны для понимания. SCP проще большинства из них, но всё же разделяет эту репутацию — отчасти из-за ошибочной идеи о том, что «федеративное голосование», которому посвящена первая половина научной статьи, является SCP. Но это не так! Это лишь важный строительный блок, который во второй половине статье используется для создания фактического протокола консенсуса Stellar.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments3

Разрабатываем Telegram-бота для отслеживания фильмов на NodeJS и TypeScript

Reading time9 min
Views72K


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

Я достаточно часто сталкивался с такой проблемой и решил ее созданием Eve — Telegram-бота, который помогает мне не забывать про релизы моих любимых фильмов. Что это, как оно работает и как разрабатывалось вы можете почитать под катом!
Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments18

20 игр, чтобы научить ребёнка программированию

Reading time5 min
Views302K
Привет Хабр! Меня зовут Оксана Селендеева. Я считаю, что лучше начинать программировать с юного возраста — 4-5 лет, потому что кодинг активно развивает у детей когнитивные функции мозга, и это впоследствии помогает им отлично усваивать точные науки. А попробовать себя в программированию можно через обучающие игры. Мы с преподавателями школы программирования для детей CODDY составили такую подборку.

Для дошкольников


Box Island — мобильная 3D-игра, которая обучает основам кодирования через увлекательное приключение. Игроки путешествуют по острову Box и помогают персонажу собирать звезды, разбросанные по пустыне. Через игровой квест дети изучают основы алгоритмов, последовательностей, циклов и условных выражений, а ещё игра развивает алгоритмическое мышление и распознавание образов.
Total votes 59: ↑53 and ↓6+47
Comments91

Что можно узнать при разработке аудио плеера для разных браузеров

Reading time8 min
Views8.9K
Эта история началась примерно 1.5 года назад. Связана она с проигрыванием музыки в различных браузерах и платформах, на которых они запускаются. Путь полный “боли и страдания” осознания того, что легкая на первый взгляд задача может оказаться не такой уж и легкой, а “незначительные” детали, которым не придаешь значения в самом начале, могут повлиять на всё.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments27

Деплоим изоморфное веб-приложение на примере Nuxt.js

Reading time7 min
Views40K

В средних и больших проектах сайт не ограничивается одним сервисом  —  к примеру только сайтом, как правило существует база данных, API, сервер который маршрутизирует запросы ко всем этим сервисам. Выкатывать и обновлять все это без какой-либо стандартизации непросто, а масштабировать на множество серверов еще сложнее.
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments6

Работа с часовыми поясами в JavaScript

Reading time16 min
Views92K


Недавно я работал над задачей добавления часовых поясов в JS-библиотеку календаря, которую ведёт моя команда. Мне было хорошо известно о никудышной поддержке часовых поясов в JavaScript, но я надеялся, что абстрагирование имеющихся объектов данных позволит легко решить большинство трудностей.

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

В этой статье я хочу обсудить, с чем я столкнулся и как это решал. Пока я писал текст, осознал, что причиной всех невзгод было плохое понимание мной самой темы часовых поясов. В свете этого осознания я предлагаю сначала подробно поговорить об определении и стандартах, а уже потом переходить к JavaScript.
Читать дальше →
Total votes 90: ↑84 and ↓6+78
Comments14

Information

Rating
Does not participate
Registered
Activity