Search
Write a publication
Pull to refresh
40
0

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

Send message

История английского языка буквально на пальцах

Reading time10 min
Views76K

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

Сегодня мы решили расставить точки над «i» и рассказать про историю английского языка. Как он появился на Британских островах, как развивался и изменялся на протяжении веков. Расскажем, почему исторические названия английского такие странные и чем они отличаются от современного языка. Поехали.

Читать далее

Пентестеры — Ведьмаки мира ИТ

Reading time7 min
Views9.2K

Вы замечали, что мир IT очень огромен, но при этом в нем как будто нет места для ИБ, несмотря на то, что довольно много, а порой критично много на самом деле нуждающихся в нём?

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

Под катом я хотел бы сравнить и провести параллель (пусть, быть может, местами, это может казаться утрированно) между ведьмаками и пентестерами (ведьмаками из мира IT).

Читать далее

Углублённое руководство по JavaScript: генераторы. Часть 1, основы

Reading time10 min
Views27K

В этой серии статей я расскажу почти всё, что нужно знать о генераторах в JavaScript: что это такое, как их использовать и какие тонкости с ними связаны. И, как всегда, начнём мы с основ — общего представления о том, что такое генераторы.

Я не исхожу из того, что вы хоть что-то знаете о генераторах. Но вам требуется хорошо разбираться в итераторах и итерируемых объектах в JavaScript. Если вы с ними не знакомы или «плаваете в теме», то сначала углублённо изучите их. Если же вы владеете этими знаниями, то можно погружаться в мир генераторов. Это очень странный мир, в котором многое совершенно не похоже на то, что вы используете в обычном JS-коде. При этом сам механизм очень прост, и даже после прочтения этой статьи вы сможете уверенно использовать генераторы. Приступим!
Читать дальше →

Почему контекст не является «инструментом для управления состоянием»

Reading time14 min
Views24K


TL;DR


Context и Redux — это одно и тоже?

Нет. Это разные инструменты, делающие разные вещи и используемые в разных целях.

Является ли контекст инструментом «управления состоянием»?

Нет. Контекст — это форма внедрения зависимостей (dependency injection). Это транспортный механизм, который ничем не управляет. Любое «управление состоянием» осуществляется вручную, как правило, с помощью хуков useState()/useReducer().

Являются ли Context и useReducer() заменой Redux?

Нет. Они в чем-то похожи и частично пересекаются, но сильно отличаются в плане возможностей.

Когда следует использовать контекст?

Когда вы хотите сделать некоторые данные доступными для нескольких компонентов, но не хотите передавать эти данные в виде пропов на каждом уровне дерева компонентов.

Когда следует использовать Context и useReducer()?

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

Когда следует использовать Redux?

Redux наиболее полезен в следующих случаях:

  • Большое количество компонентов с состояниями, в которых используются одни и те же данные
  • Состояние приложение часто обновляется
  • Сложная логика обновления состояния
  • Приложение имеет среднюю или большую кодовую базу и над ним работает много людей
  • Вы хотите знать когда, почему и как обновляется состояние приложения и иметь возможность визуализировать эти изменения
  • Вам требуются более мощные возможности по управлению побочными эффектами, стабильностью (постоянством) и сериализацией данных

Читать дальше →

Расширение кластера PostgreSQL размером 5,7 ТБ и переход с версии 9.6 на 12.4

Reading time5 min
Views8.9K

Фото Ричарда Джекобса на Unsplash

В ноябре 2020 года мы начали крупную миграцию для обновления кластера PostgreSQL с версии 9.6 на 12.4. В этом посте я вкратце расскажу про нашу архитектуру в компании Coffee Meets Bagel, объясню, как даунтайм апгрейда удалось снизить ниже 30 минут, и расскажу про то, что мы узнали в процессе.
Читать дальше →

C++ в Практикуме. Как обучить студентов плюсам, не отпугивая

Reading time8 min
Views29K

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

Меня зовут Антон Полднев, я уже давно пишу в Яндексе на C++ и руковожу сервисом, написанным на этом языке. Параллельно я учу других людей навыкам разработки. С 2016 года я вёл курсы на Coursera, затем мы их прокачали и сделали на их основе курс для Практикума. В этом посте я расскажу, как мы учим людей C++, а также про основные особенности этого языка. 

Читать далее

Что вас на самом деле ждёт на курсе про алгоритмы в Яндекс.Практикуме

Reading time10 min
Views25K
Первая версия нашего курса «Алгоритмы для разработчиков» вышла не самой удачной и вызывала у некоторых студентов большие вопросы. Обратную связь мы иногда получали довольно эмоциональную, но часто справедливую. Та версия курса, которая предлагается студентам сейчас, — это издание дополненное и исправленное, с учётом всей критики за последний квартал. Что самое важное, в создании курса нам активно помогают выпускники, прошедшие его первую версию и набившие шишек самостоятельно. Спасибо всем участникам коммьюнити и авторам, которые контрибьютили в эту тему.

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



Итак, начнём с главного. Первую версию делали специалисты по алгоритмам для мидлов с уже какими-то знаниями. И это был основной фейл.
Читать дальше →

Android Bluetooth Low Energy (BLE) – готовим правильно, часть #3 (read/write)

Reading time13 min
Views20K

Часть #1 (scanning)

Часть #2 (connecting/disconnecting)

Часть #3 (read/write), вы здесь

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

Читать далее

2048 WASM или игра на Rust за 2 дня

Reading time5 min
Views7.6K

Данная статья представляет из-себя эксперимент с Rust'ом с последующей его компиляцией в WASM. Было интересно пощупать данные технологии на чем-то сложнее, чем вычисление факториала, поэтому выбор пал на всем известную игру 2048.



Читать дальше →

Трассировка Python GIL

Reading time18 min
Views7.6K


Есть много статей, объясняющих, для чего нужен Python GIL (The Global Interpreter Lock) (я подразумеваю CPython). Если вкратце, то GIL не даёт многопоточному чистому коду на Python использовать несколько ядер процессора.

Однако мы в Vaex исполняем большинство задач с интенсивными вычислениями на С++ с отключением GIL. Это нормальная практика для высокопроизводительных Python—библиотек, в которых Python всего лишь выступает в роли высокоуровневого связующего звена.

GIL нужно отключать явно, и это ответственность программиста, о которой он может забыть, что приведёт к неэффективному использованию мощностей. Недавно я сам побывал в роли забывшего, и нашёл подобную проблему в Apache Arrow (это зависимость Vaex, так что когда GIL не отключается в Arrow, мы (и все остальные) сталкиваемся с падением производительности).

Кроме того, при исполнении на 64 ядрах производительность Vaex иногда далека от идеала. Возможно, он использует 4000 % процессора вместо 6400 %, что меня не устраивает. Вместо того, чтобы наугад вставлять выключатели для изучения этого эффекта, я хочу разобраться в происходящем, и если проблема в GIL, то хочу понять, почему и как он тормозит Vaex.
Читать дальше →

Как мы ржавели. История внедрения и обучения

Reading time12 min
Views38K

Все говорили – переходи на rust! Начинай пользоваться самым-самым языком, который самый любимый язык на stackoverflow и всё такое.

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

Профессионально я программирую уже 17 лет. В далёкие-предалёкие времена я начал изучать программирование с x86 Assembly. Такой жестокий подход к изучению компьютера дал мне глубокое понимание того как работает процессор и что делают другие языки программирования. Учить новые языки для меня никогда не было проблемой. Я их просто учил. C, C++, шарпы, ГО, тысячи разных скриптов и фреймворков. Чего уж там, ещё один язык, можно и выучить.

Ага.

Только вот не с этой ржавой развалюхой. Я просидел две недели над официальным руководством, пялился в VSCode и не мог выдавить из себя больше чем fn main() {}. Ну какого же чёрта? Я просто закрыл глаза, открыл руководство на рандомной странице и начал его читать. И прикол в том, что я понял о чём там говориться. И тут до меня дошло… Руководство написано наизнанку. Начало и конец ничуть не лучше чем в Мементо Кристофера Нолана. Они как-то умудрились запутать в общем-то нормальное руководство. После этого всё пошло получше.

Ржавые шестерёнки заскрипели и начали крутиться. Программа пошла-поехала. Если хотите знать как я внедрил rust в продакшин, как я ему научился и что из этого вышло – добро пожаловать под кат. Реальные люди, коммиты, примеры и никаких todo-list и хеллоу-ворлдов.

Ржаветь так ржаветь.

Как удалить «неудаляемые» приложения со смартфона

Reading time5 min
Views277K


Чтобы увеличить привлекательность смартфонов, производители ставят на них как можно больше разных программ. Это понятно. Просто берём и удаляем ненужное… Стоп.

Оказывается, некоторые программы невозможно удалить. Например, на отдельных моделях Samsung невозможно удалить Facebook (есть только опция 'disable'). Говорят, на Samsung S9 вдобавок предустановлены «неудаляемые» приложения Microsoft.

Эти смартфоны приведены для примера. Такая же проблема и на других моделях. На многих есть неудаляемые программы от самого производителя.

Всё это надо зачистить.
Читать дальше →

Наставничество в IT: растём сами и помогаем расти другим

Reading time7 min
Views14K
Достигнув уровня мидла, разработчики не всегда понимают, как и куда развиваться дальше. Проекты требуют примерно тех же умений, и выполнять их сравнительно легко. Кто-то захочет пойти в техлиды, кто-то сделает ставку на горизонтальный рост и изучение новых языков программирования. А кому-то захочется сделать следующий шаг и начать работать с командой, передавать свои знания и руководить. Но для того, чтобы перейти на эту ступень, нужно прокачать софт-скиллы: уметь мотивировать, давать качественную обратную связь, разрешать конфликтные ситуации. Один из способов прокачаться в этом — наставничество.

Это может быть наставничество в компании, когда более опытный сотрудник берёт на себя помощь более молодому. Или наставничество студентов, как у нас в Практикуме.



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

21 и 22 января — два бесплатных онлайн-митапа (QA и iOS)

Reading time2 min
Views2.1K

Привет! Новый год — новые митапы.

Уже через неделю мы проведём два первых в этом году митапа, первый из которых будет полезен тестировщикам, а второй — iOS-разработчикам. Спикеры будут из Альфа-Банка, а вот участники круглого стола по теме — из Сбера, Тинькофф и Райффайзенбанка.

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

Программа под катом

Читать далее

Как мы делаем страховое приложение для людей

Reading time8 min
Views2.2K

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

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

Но сначала пару слов о нашем первом приложении. Мы делали его в качестве небольшого эксперимента, чтобы посмотреть, а нужно ли оно вообще и будут ли клиенты им пользоваться. У нас был 1 (один) разработчик, который в марте этого года собрал весь свой энтузиазм и начал с создания обертки под web view. В апреле мы выкатили приложение в Google Play, а в июне — в App Store. 

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

Читать далее

Типы в инженерных задачах

Reading time17 min
Views5.5K

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

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

Могут возразить, что я не вижу смысла в таких типах потому, что в старых языках (вроде используемого мною PL/1) вообще не было типизации в современном понимании. Нет, понятие типа все-таки было. Например, если в том же PL/1 описать два несовпадающих объекта пусть даже одинакового объема и попытаться присвоить один другому, то при компиляции получится предсказуемое сообщение об ошибке (рис. 1).

Читать далее

Комьюнити выпускников Практикума: зачем оно нужно и что даёт

Reading time7 min
Views8.7K
Классический образовательный процесс на онлайн-курсах часто построен так: человек покупает курс, проходит обучение, выполняет задания, всё это проверяется — и на выходе он получает сертификат или диплом, подтверждающий прохождение этих курсов.

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

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



Сейчас у нас уже более 2000 участников, и я расскажу, как тут всё устроено.

Зачем нужно комьюнити


Наши студенты во время обучения находятся в так называемой капсуле, где знают только своих одногруппников по профессии. После выпуска они попадают в комьюнити, где 2000+ незнакомых людей: тут и все когорты твоего факультета, и другие факультеты, и команда Практикума, можно найти своих кураторов, наставников и преподавателей. Цель комьюнити — помочь выпускникам быстрее и эффективнее прогрессировать в своей профессии, находить нужную помощь и поддержку. А ещё — знакомиться, общаться и искать работу.
Читать дальше →

Программист учится рисовать. Дневник Емели

Reading time16 min
Views35K
Так получилось, что моим основным хобби на лихой 2020-й год стало освоение ремесла рисования.

Еще в январе я дал себе некое обещание в виде цели к концу года — прокачать навык рисования (звучит конечно абстрактно и совсем не по SMART-у, я думаю, это и повлияло в дальнейшем на то, как я развивал этот навык весь год и что получилось в итоге).

spoiler
В конце года я остался доволен собой и окончательно понял, что я хотел бы прокачиваться и дальше!

image
Так выглядел мой уровень изобразительных навыков в ноябре предыдущего (2019-го) года

Формат подачи данной статьи — это на 95% личный дневник, который я вел в гугл-доке, записывая, что я делал каждый месяц, свои ощущения и как-то фиксируя собственный прогресс — смотрел, сколько работ мне удалось нарисовать и какого они были качества — нравились ли они мне лично или были совсем так себе по исполнению.
Читать дальше →

История AltaVista и сохранение прошлого Интернета

Reading time8 min
Views13K


Четверть века назад как своеобразный эксперимент возник один из первых крупных поисковых движков, задумывавшийся как публичный тест основного продукта производителя серверов. В этом тесте мог принять участие любой пользователь с подключением к вебу. На то время эксперимент оказался настолько удачным, что этого никто и представить не мог. Однако проблема заключалась в том, что по сути своей это был эксперимент, который никогда не позиционировался как бизнес. Поэтому со временем эту инновацию неизбежно превзойдут другие, более подходящие компании, а данная передовая идея со временем станет частью прошлого. Но никто не собирался превращать в музейный экспонат инновации Интернета 1995 и 1996 годов: время не стояло на месте, как и веб-сайты, какими бы важными они ни были. Однако было бы здорово, если бы кто-то смог это сделать. В своей статье я пишу об AltaVista, Digital Equipment Corporation, веб-доменах и о том, как важная история может стать основой глупой маркетинговой схемы какой-то случайной компании.
Читать дальше →

Усилитель звукового сигнала мощностью 600 Вт

Reading time8 min
Views36K

В усилителе используется микросхема TPA3255 производства компании Texas Instruments. Это высокоэффективный, высококачественный четырехканальный усилитель класса D.

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

Читать далее

Information

Rating
Does not participate
Registered
Activity