Pull to refresh
39
0

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

Send message

Самый простой (и неожиданный) алгоритм сортировки?

Reading time9 min
Views26K

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

1. Алгоритм


Большинству из нас хорошо известны такие простые алгоритмы сортировки, как сортировка пузырьком. По крайней мере, нам так кажется. Оказывались ли вы когда-нибудь в ситуации, когда вам нужно записать псевдокод сортировки пузырьком, и вы осознавали, что он не так прост, как кажется, и с первого раза правильно написать его не удаётся? Нужно внимательно следить за тем, чтобы индексы циклов начинались и заканчивались нужными значениями и не выходили за границы, а также правильно обрабатывать флаговые переменные. Разве не было бы здорово иметь простой алгоритм без всей этой возни? Ниже представлен такой алгоритм, сортирующий массив A из n элементов в неубывающем порядке. Для простоты доказательства массив начинается с 1, то есть имеет элементы A[1],..., A[n].

Алгоритм 1 ICan’tBelieveItCanSort(A[1..n]):

for i = 1 to n do
  for j = 1 to n do
    if A[i] < A[j] then
      swap A[i] and A[j]

Вот, собственно, и всё. Он просто обходит в цикле каждую пару значений (i, j) стандартным способом из двойного цикла for, выполняет сравнение и обмен значениями. Разве можно придумать что-то ещё более простое? Возможно первой реакцией увидевшего этот алгоритм будет что-то типа «это не может быть верно» или «знак неравенства направлен в другую сторону, да и индексы цикла указаны неверно». Но нет, он действительно правильно сортирует в возрастающем порядке.
Читать дальше →
Total votes 42: ↑29 and ↓13+27
Comments40

Жизненно важные гены эволюционируют на задворках генома

Reading time6 min
Views5.8K

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

Читать далее
Total votes 11: ↑9 and ↓2+17
Comments13

Как IT-специалисту развивать софт-скиллы, и зачем это вообще нужно

Reading time8 min
Views17K

Про софт-скиллы сказано многое. Отношение к наличию у человека софт-скиллов и их использование в качестве критерия при найме на работу у многих работодателей всё ещё разнится. Причем иногда из крайности в крайность.

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

Как обычно, истина где-то посередине. Меня зовут Дмитрий Петренко, я из Московского кредитного банка, и именно на примере МКБ я хочу немного рассказать про развитие айтишных софт-скиллов. Мы занимаем второе место в списке банков с частным капиталом, у нас более 5 000 сотрудников, 700+ штатных IT-специалистов и множество IT-аутсорса. Так что компетенции в плане общения и совместного выполнения задач в нашем случае — штука важная.

Читать далее
Total votes 19: ↑15 and ↓4+20
Comments38

QA, из команды в тимлиды — как выжить между двух огней

Reading time8 min
Views6.6K

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

Сейчас я занимаюсь Альфа-Мобайлом, нашим мобильным приложением для физических лиц. Работа в команде состояла из обычного взаимодействия с нашими IOS- и Android-разработчиками, с аналитиком, с бэкенд-разработчиком и с product owner’ом. В моей командной работе были обычные спринты, обычная приемка, обычное написание автотестов к различным компонентам архитектуры, конечно же, дедлайны и еженедельный всеобщий Мобайловский регресс. Помимо работы в команде, есть еще наставничество.

Архитектура довольно нетипичная: помимо обычного front’a и back’a есть еще и middle, и не каждый въезжает сразу, на это тратится много времени. На тот момент, когда со мной поговорил мой руководитель и рассказал, что пора переходить в лиды, у меня было два начинающих падавана. В общем, состоялся разговор о том, что пора расти, пора уже переходить дальше, я ответила, что хоть и очень загружена, но готова. 

Читать далее
Total votes 13: ↑11 and ↓2+12
Comments3

Как правильно оценивать результативность проектов на этапе аналитики

Reading time7 min
Views3.5K

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

В этом же посте я хочу поговорить о том, как оценивать результативность проекта не просто после его завершения, а ещё на этапе аналитики. Меня зовут Дарья Климович, я Руководитель проекта в Департаменте развития технологий банковских процессов в Московском кредитном банке.

За мной, читатель!
Total votes 8: ↑8 and ↓0+8
Comments0

Как мы управляем техническим долгом аналитики

Reading time5 min
Views4.9K
В рамках одного из первых проектов в Альфе мы с командой делали приложение по работе с группами платежей. Приложение позволяло вместо поштучной обработки каждой отдельной платёжки выбирать сразу несколько платёжных поручений, подписывать их и отправлять в Банк на исполнение. Всего за несколько кликов. Очень удобный функционал для клиентов, работающих со множеством платежей одновременно.

В текущем спринте нам с командой надо было реализовать операцию по отправке группы платежей в Банк (подписание и прочие подготовительные операции выполнялись в старой версии системы). Времени — всего неделя. Из наработок, которые мы могли бы переиспользовать, API, позволяющий отправлять в Банк на исполнение единичный платёж.

Команда принимает решение — для каждого платёжного поручения группы, выбранного на фронте, делать вызов существующего API для поштучной отправки платежей. Спустя неделю отчитываемся о достижении цели спринта. Новый функционал открыт на клиентов. Теперь они могут за пару кликов отправлять сразу десять, двадцать и больше платежей в Банк на исполнение. Ценность определённо есть.



Но какой ценой была достигнута цель спринта? Ростом нагрузки на сеть. Увеличением времени обработки запросов клиентов. Таймаутами. Решение было неоптимальным. У команды образовался техдолг.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments13

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

Reading time6 min
Views9.4K

Думаете, любой аналитик вырастает в лиды? А как понять, что я готов быть лидом? Что поменяется, когда я стану лидом? Как много вопросов и мало ответов сейчас, но советую прочесть статью до конца — все станет прозрачнее и понятнее. 

Итак, полетели!

Вспомните: ночная Фурия Беззубик сначала был просто раненым драконом, который взлететь-то не мог, а не то, чтобы быть лидером стаи. 

Вот и наш системный аналитик только начал свой карьерный путь, но он думает о своем развитии в лида. Может ли он сейчас стать лидом? Нет, конечно. А почему? Он должен вырасти до лида.

В Альфа-Банке этот рост происходит по одному из путей в рамках карьерного трека для системного аналитика. Аналитик прокачивает свои навыки, чтобы вырасти в лида. Лид работает с командой системных аналитиков от 3 и до 9 человек.

Читать далее
Total votes 13: ↑10 and ↓3+10
Comments12

6 правил, которые пригодились бы мне, когда я осваивал программирование

Reading time5 min
Views35K

В кодинге главное — не кодинг


Как вы думаете, что такое программирование?

Написание кода?

Написание хорошего кода?

Нет.

Это только часть истины.

Программирование — это не про кодинг. Программирование — это о решении задач при помощи кодинга.

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

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

Это самое важное, что я бы хотел знать, когда учился программированию.
Читать дальше →
Total votes 43: ↑36 and ↓7+38
Comments51

Три ужасные фичи программирования из прошлого

Reading time6 min
Views56K

Я верю в программистское клише о том, что большинство плохих фич имеет причины для существования. Ненавидимый многими оператор goto позволяет быстро и удобно выбраться из глубоко вложенной структуры, если пользоваться им с умом. Определённая степень нестрогости типов позволяет им быть более изящными. Указатели памяти могут заставить вас возненавидеть свою жизнь, но они были критически важны в те годы, когда компьютерное «железо» было слабее современного умного термостата. Список можно продолжать.

Но когда я вспоминаю об этих запылённых старых реликтах, то осознаю, что некоторые старые идеи настолько плохи, что лучше всего было бы сжечь их навечно. В этой статье я расскажу о трёх фичах языков программирования, которые были настоящим кошмаром.
Читать дальше →
Total votes 93: ↑85 and ↓8+100
Comments322

Первое правило машинного обучения: начните без машинного обучения

Reading time6 min
Views8.7K

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

Что? Начинать без машинного обучения?


Об этом говорю не только я.

Догадайтесь, какое правило является первым в 43 правилах машинного обучения Google?

Правило №1: не бойтесь запускать продукт без машинного обучения.

Машинное обучение — это здорово, но для него требуются данные. Теоретически, можно взять данные из другой задачи и подстроить модель под новый продукт, но она, скорее всего, не справится с базовыми эвристиками. Если вы предполагаете, что машинное обучение придаст вам рост на 100%, то эвристика даст вам 50%.
Читать дальше →
Total votes 25: ↑22 and ↓3+29
Comments11

Как мы мониторим наши сервисы

Reading time9 min
Views16K

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

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

Как было

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

Затем у нас появился E2E-мониторинг, способный эмулировать некоторые клиентские операции, именно так мы тогда и мониторили работу наших сервисов. Но были и печали: чтобы E2E в принципе начал что-то мониторить, нужно было составить ФТ объемом страниц эдак в 50 А4, а потом потратить несколько месяцев на разработку

Читать далее
Total votes 16: ↑13 and ↓3+17
Comments19

Вкладки браузера разрушают ваш мозг

Reading time6 min
Views63K

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

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

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

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

Читать далее
Total votes 53: ↑20 and ↓33-7
Comments111

Новая Яндекс.Станция Мини. Большая история маленького устройства

Reading time15 min
Views60K
На днях в продажу поступила обновлённая версия одного из самых популярных устройств с Алисой — Станции Мини. Может показаться, что это эволюционное развитие, работать над которым было проще, чем создавать оригинал. Но новая Мини отличается от предыдущей примерно всем: от внешнего вида и начинки до условий производства — ковид и глобальный дефицит компонентов стали для hardware-команды большим вызовом.



Сегодня я поделюсь с вами несколькими историями о новой колонке. Вы узнаете про одно из самых необычных применений фазоинвертора, про то, как мы достаточно комично сушили фотополимерные модели в домашних условиях. Расскажу, где спрятан сервисный разъём и как работает управление просмотром ТВ через ещё одно новое устройство — Модуль. Будут и другие детали, которые показались нам интересными.
Читать дальше →
Total votes 69: ↑66 and ↓3+83
Comments108

Apple анонсировала M1 Pro и M1 Max: гигантские новые SoC на архитектуре ARM с полной производительностью

Reading time6 min
Views55K

Сегодняшний основной доклад Apple Mac был очень насыщенным — компания анонсировала новую линейку устройств MacBook Pro на базе двух различных новых SoC в линейке Apple Silicon: M1 Pro и M1 Max.

M1 Pro и Max представляют собой продолжение прошлогоднего M1, процессора Mac первого поколения Apple, который стал первым этапом для Apple в реализации планов по замене процессоров на архитектуре x86 чипами собственного дизайна. M1 был успешным для Apple, продемонстрировав фантастическую производительность при невиданной доселе энергоэффективности на рынке ноутбуков. Хотя M1 достаточно быстрый, это все еще был небольшой SoC. Он предназначался, в первую очередь, для таких устройств, как iPad Pro. Соответственно, у него более низкий TDP, уступающий более производительным и мощным чипам от конкурентов.
Читать дальше →
Total votes 98: ↑91 and ↓7+115
Comments200

Фонетическая раскладка на основе анализов частотности

Level of difficultyEasy
Reading time16 min
Views11K

Предыстория и предпосылки


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

На каждой раскладке свой набор символов, из-за чего для некоторого набора нужно было переключать раскладку, вводить символ, а после возвращаться на прошлую; на каждой раскладке своё расположение для одних и тех же символов; некоторые востребованные символы и вовсе доступны только через комбинации с alt; ужасное расположение «ё» на русской раскладке; ну а об общем позиционировании букв на «qwerty» вы наверняка уже читали ранее, как и о полулегенде о намеренно сложном для набора расположении, как костыле для обхода западания клавиш на первых пишущих машинках.

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

И это всего две раскладки, для двух популярнейших в интернете языков, хотя многие пользуются и тремя, а то и более.
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments38

История ЖК-дисплеев с активной матрицей

Reading time9 min
Views7.2K

1962

В этом году появился первый тонкоплёночный транзистор (thin-film transistor, TFT), разработанный инженером RCA Полом Веймером — изобретателем, получившим множество патентов, связанных с технологией электронно-лучевых трубок. Его работа, вдохновлённая предыдущими инновациями, стала фундаментом, приведшим к созданию современной технологии производства дисплеев. RCA использовала изобретение в качестве основы технологии создания дисплеев на жидких кристаллах, которую в дальнейшем усовершенствовал её конкурент, компания Westinghouse.

Читать далее
Total votes 16: ↑12 and ↓4+12
Comments1

История спутника связи Telstar

Reading time8 min
Views3.4K

На протяжении второй половины 1950-х Джон Робинсон Пирс и его коллеги из Bell Labs работали над концепцией спутниковых коммуникаций. Осенью 1960 года AT&T начала разработку спутниковой системы связи под названием Telstar. Рабочая система должна была состоять «из 50-120 простых активных спутников на орбите примерно 7 тысяч миль» [11,2 тыс. км]. Проектировщики предполагали, что при помощи разрабатываемых больших ракетоносителей можно будет «за один запуск вывести на орбиту от дюжины и более спутников». Bell Labs рассчитала, что при размещении спутников на случайных орбитах, «система из 40 спутников на полярных орбитах и 15 спутников на экваториальных орбитах обеспечит обслуживание в 99,9% времени между двумя любыми точками на Земле. AT&T предложила, чтобы такая система содержала примерно 25 наземных станций, расположенных таким образом, чтобы обеспечить покрытие по всему миру». (Pierce, pg. 101)
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments1

Apple Event Unleashed — текстовая трансляция

Reading time4 min
Views12K
До хэллоуина еще вроде бы порядочно, но количество тыкв увеличивается каждую секунду. В них превращаются многочисленные макбуки, причем не только на процессорах с архитектурой x86, но и еще недавно свежие и быстрые модели на Apple M1.

Прошлогодние Macbook и Mac mini оказались просто на удивление удачными. Apple удалось обеспечить на 99% бесшовный переход между платформами. Я сам из любопытства купил Mac mini с M1, надеясь поймать много веселых багов и написать про них. Но вместо этого получил рабочую машинку, которая кодирует видео в пять (!) раз быстрее по сравнению с предыдущим поколением, а потребляет энергии в три раза меньше.

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

Давайте посмотрим, что нам покажет дедушка Тим. Он уже зовет.

image

Читать дальше →
Total votes 31: ↑20 and ↓11+19
Comments82

Information

Rating
Does not participate
Registered
Activity