Search
Write a publication
Pull to refresh
0
@Redlumusread⁠-⁠only

User

Send message

10 лучших алгоритмов 20 века

Reading time7 min
Views49K
Прим. Эта статья была опубликована в майском номере 2000 года журнала SIAM. На рубеже веков появилась «мода» на подведение итогов уходящего столетия. И алгоритмы этой участи не избежали. В этой статье авторы делают обзор 10 лучших алгоритмов 20 века. Возможно, вам будет интересно узнать, какие алгоритмы, по мнению авторов списка, внесли наибольший вклад в развитие науки.

Algos — греческое слово, означающее боль. Algor — латинское слово, означающее холод. Но ни то, ни другое не является корнем слова «алгоритм», которое происходит от имени Аль-Хорезми – арабского ученого девятого века – чья книга «al-jabr wa’l muqabalah» (Китаб аль-джебр ва-ль-мукабала) переросла современные учебники по алгебре для средней школы. Аль-Хорезми подчеркивал важность методических процедур для решения задач. Будь он сегодня здесь, то, несомненно, был бы впечатлен вершинами математического метода, названного в его честь.

Часть из лучших алгоритмов компьютерной эры были освещены в январско-февральском выпуске 2000 года журнала Computing in Science & Engineering — совместном издании Американского института физики и Компьютерного общества IEEE. Приглашенные редакторы Jack Dongarra (Джек Донгарра) из Университета Теннесси и Francis Sullivan (Фрэнсис Салливан) из Института оборонного анализа составили список из 10 алгоритмов, который они назвали «Top Ten Algorithms of the Century».

«Мы попытались собрать 10 алгоритмов, оказавших наибольшее влияние на развитие и практику науки и техники в 20 веке», — пишут Донгарра и Салливан. По признанию авторов, как и в любом рейтинге, их выборы неизбежно будут спорными. Когда дело доходит до выбора лучшего алгоритма, кажется, что он и вовсе не существует.

Итак, вот список 10 лучших алгоритмов в хронологическом порядке. (Все даты и имена стоит воспринимать как аппроксимацию первого порядка. Большинство алгоритмов формируются в течение времени при участии многих ученых).
Читать дальше →

REST API на Java без фреймворков

Reading time9 min
Views77K
Перевод статьи подготовлен специально для студентов курса «Разработчик Java».




В экосистеме Java есть много фреймворков и библиотек. Хотя и не так много, как в JavaScript, но они и не устаревают так быстро. Тем не менее, это заставило меня задуматься о том, что мы уже забыли, как писать приложения без фреймворков.

Вы можете сказать, что Spring — это стандарт и зачем изобретать велосипед? А Spark — это хороший удобный REST-фреймворк. Или Light-rest-4jis. И я скажу, что вы, конечно, правы.

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

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

Остров Русь — инструкция по импортозамещению

Reading time6 min
Views92K

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

Что наихудшее может случиться в плане софта и коммуникаций?

И что делать?

Читать далее

Сто раз сломай, один раз поправь или Как мы улучшали тестирование отказоустойчивости и восстановления API

Reading time11 min
Views6.3K

Привет, хабровчане!

Меня зовут Нурыев Асхат, я ведущий инженер по автоматизации в DINS. За время работы в компании я участвовал в решении множества сложных задач. В этой статье я поделюсь историей улучшения процесса и автоматизации тестирования высокой доступности и восстановления после отказа подсистемы API, состоящей из множества компонент. 

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

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

Началось все как обычно: одним прекрасным утром ко мне подошел менеджер и спросил, не хочу ли я заняться одной интересной задачей. К тому времени у меня уже был опыт организации перфоманс-тестирования и вообще улучшения процессов в команде, так что я, конечно, согласился. А когда он объяснил, чем именно предстоит заняться, глаза у меня загорелись!  Только подумайте: построить HA тестирование целой подсистемы —  есть где развернуться, проявить изобретательность!

Читать далее

Actions: как в GitHub, но в GitLab

Reading time20 min
Views18K

Привет! Меня зовут Артемий Окулов, я lead центра компетенций CI/CD в X5 Group.

То, чем мы с командой занимаемся, можно отнести к области под названием Developer Experience. В какой-то момент ИТ в компании достигает такой зрелости, что появляются tools team, enabling team и инициативы, направленные на повышение developer experience. Одной из таких инициатив мы и занимаемся. Если вкратце, мы хотим упростить старт новых продуктов в компании за счет предоставления шаблонов.

В X5 Group много web-сервисов, и с переходом на продуктовый подход виден рост количества команд, которые все чаще прибегают к их созданию. Конечно, каждая команда должна быть кросс-функциональной, чтобы успех реализации продукта зависел в большей степени от самой команды. Но часто мы сталкиваемся с тем, что найти инженера с ролью devops в команду — это задача нескольких месяцев. А терять столько времени на старте — непозволительная роскошь. Поэтому в компании ведутся работы по созданию “стартовых наборов”, решающих задачу минимум — быстрого старта разработки и создания dev-окружения силами самих разработчиков.

В поставку такого “стартового набора” входит и CI/CD pipeline. В этой статье, в частности, мы бы хотели поделиться подходом шаблонизации GitLab Pipelines, который мы стараемся продвигать у себя в компании, и рассказать про инструмент, который для этого разработали.

Читать далее

Функциональный Kotlin. Часть 2. Каррированные функции и где они обитают

Reading time2 min
Views7.5K

Вторая статья из цикла о функциональном программировании на Kotlin с разбором принципа работы, концепции и способов применения каррирования на практике.

Читать далее

5 лаконичных синтаксисов Java, которых мне не хватает в Kotlin

Reading time3 min
Views17K

С 2016 года, после того, как я начал использовать Kotlin в Android-разработке, то ни разу не скучал по Java. В целом, Kotlin дал мне большее удовлетворение от разработки, чем Java для Android.

Тем не менее, время от времени я натыкаюсь на такие вещи, которых мне очень не хватает; того, как они были реализованы в Java. Ниже представлены 5 из них.

Читать далее

Самый крутой бесплатный ресурс по обучению программированию с нуля

Reading time3 min
Views93K
image


Куинси Ларсон, основатель бесплатной образовательной платформы для программистов freeCodeCamp

Куинси Ларсон


Путь Куинси Ларсона в программирование был замысловатым. Он 6 лет был директором школы и вдруг ему захотелось повысить эффективность системы образования, поэтому стал учиться программированию. Куинси Ларсон проанализировал, какие были учебные программы (буткэмпы) на тот момент и понял, что ни о какой доступности и открытости нет речи, и тогда решил сделать свой инклюзивный-диверсити-бесплатный образовательный лагерь в 2014 году. Куинси Ларсон хотел помочь начинающим программистам, чтобы те не шли таким корявым путем как он сам. Благодаря freeCodeCamp теперь никто больше не должен есть стекловату и смотреть в бездну. Узнав про мотивацию Куинси Ларсона, я обрадовался, ибо не один я такой странный и хочу собрать концентрат, Ontol, самых полезных бесплатных материалов в одном месте.

Помимо работы над freeCodeCamp, Куинси Ларсон борется за свободный интернет, контрибьютит в open-source и играется со своими двумя детишками.

freeCodeCamp


Образовательной платформой FreeCodeCamp пользуются 350 000 студентов в день из 160 стран. За 2021 год студенты провели за обучением 2,1 млрд минут или 4000 лет. 217 000 учеников считают себя выпускниками этой школы, 40 000 получили работу ИТишника впервые, после обучения тут.

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

На русском языке про FreeCodeCamp нет странички в Википедии (хотя есть на сербском, албанском, португальском, манипури, румынском, малаяльском языках), зато есть сотни более кривых «пересказов» их курсов на русском языке, но не бесплатно, а за 150к+
Читать дальше →

TLS 1.2 (протокол безопасности транспортного уровня версии 1.2) (RFC 5246) (Часть 3.2)

Reading time35 min
Views18K

В материале приводится продолжение перевода на русский язык стандарта IETF - RFC 5246, описывающего работу протокола безопасности транспортного уровня TLS версии 1.2. Данная часть перевода охватывает вторую половину описания работы рукопожатия TLS версии 1.2, а также завершает перевод основной части Стандарта.

Читать далее

Специфика написания кода для ОС

Reading time12 min
Views13K

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

Речь идёт о главных компонентах: когда вы нажимаете кнопку включения и блок питания подаёт напряжение через свои 12, 5 и 3-вольтные линии к материнской плате. Откуда процессору вообще знать, что запускать, и как происходит загрузка в память, когда загружать пока, по сути, нечего?

Такой ход мыслей сложился у нас после мысленного эксперимента: окажись вы в комнате с одной только дискетой и ПК с пустым жёстким диском, смогли бы вы загрузить компьютер и запустить операционную систему? И более того, что надо делать, чтобы запустить ОС?

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

Читать далее

Самые интересные блоги и сайты для C++ программистов

Reading time4 min
Views17K

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

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

Как я учил гуманитариев программировать и что из этого вышло

Reading time6 min
Views35K

Привет, Хабр! Сегодня я тебе расскажу историю о том, как я взял на себя ответственность за обучение программированию трех разных человек, которые казались абсолютно безнадежными и никто (даже их самые близкие родственники) в них не верил. Важно то, что каждый из них уже проявлял интерес к программированию раньше, но ни один из доступных методов обучения не давал результата. Сегодня эти люди свободно делают программы без моей помощи (работают над «проектами мечты»), а один из них даже устроился в хорошую IT-компанию.

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

Читать далее

Нестабильные тесты — одна из основных проблем автоматизированного тестирования(Часть 2)

Reading time4 min
Views5.1K

Это продолжение серии статей о нестабильных тестах.

В первой статье(оригинал/перевод на хабре) говорилось о 4 компонентах, в которых могут возникать нестабильные тесты.

В этой статье дадим советы как избежать нестабильных тестов в каждом из 4 компонентов.

Читать далее

WinUI 3 — Новая эра разработки под Windows

Reading time4 min
Views70K

В этой статье:

- WinUI 3 - это не просто новая версия библиотеки пользовательских компонентов. Это изменит разработку ПО под Windows и не только.
- Как менялась разработка графических интерфейсов?
- Эволюция системных API пошла не по плану....
- В чём провал Universal Windows Platform?
- Что такое .NET, и почему за ним будущее?

Читать далее

C и C++: межъязыковые интерфейсы

Reading time11 min
Views16K
Как известно, C и C++ — это родственные языки между которыми есть много общего. Но их пути, с годами, расходятся всё сильнее. В общих чертах дело обстоит так: код, написанный на одном из этих языков, не может быть скомпилирован под видом кода, написанного на другом. Этому мешает множество больших и маленьких различий между языками. Причём, речь идёт не только о синтаксических различиях. Некоторые общие синтаксические конструкции могут иметь разную семантику. Поэтому обычно нет никакого смысла в том, чтобы компилировать код, написанный на C, с помощью C++-компилятора. Не стоит доверять тем, кто утверждает обратное.

Правда, есть одна сфера, где обычно наблюдается согласие между C и C++. Это — ABI (Application Binary Interface, двоичный интерфейс приложений). Структуры данных и функции одного языка могут быть, в той или иной мере, использованы в другом языке. C и C++, кроме того, достаточно сильно пересекаются в области спецификаций интерфейсов, вследствие чего один и тот же заголовочный файл можно использовать из кода, написанного на обоих языках.



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

Как выучить иностранный язык: алгоритм

Reading time13 min
Views168K

Если вы хоть немного пересекались с Machine Learning, то понимаете, что человеческий мозг — это, по сути, большая нейросеть. А раз так, то и работу с ним можно строить по известным в ML алгоритмам. Так я нашел универсальный способ выучить любой иностранный язык до нормального уровня в разумные сроки. И на себе проверил его эффективность.

Читать далее

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

Reading time8 min
Views29K

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

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

Читать далее

Текст любой ценой: PDF

Reading time12 min
Views93K
Продолжаем разбирать текстовые форматы на предмет получения текста. Итак, обещанный ранее PDF.

С portable document format'ом не всё так просто, как DOCX или ODT, что мы рассматривали в прошлый раз, но всё же это всё ещё изначально текстовый, а не бинарный формат. Вы удивлены? Тогда давайте посмотрим на то, что там внутри. Дальше действительно много текста.

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

Еще немного RISC-V

Reading time3 min
Views8.2K
Я занимаюсь программированием микроконтроллеров. И не только пишу для них программы, а по большей части программы для программаторов. И хотел поделиться небольшой радостью заработавшего мк. Вдруг кто-то сейчас мучается с gd32vfxx.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity