Pull to refresh
59
0
Илья Шутов @i_shutov

Data Science

Send message

Почему научиться программировать так чертовски тяжело?

Reading time14 min
Views424K
Привет, Хабр!

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

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

Но сложнее всего объяснить новичку, грубо говоря, во что он ввязывается. Благодаря очень простым, игровым образовательным проектам многие считают, что программирование это очень легко, а наши виртуальные машины, где нужно запускать тесты и компилировать код – это надуманная сложность. Давно хотелось найти такой материал, который бы подготовил новичка к длинному и сложному пути к карьере программиста. И недавно наши коллеги из Viking Code School такой материал написали! А мы его перевели для вас.




Квинси Ларсон был просто “офисным парнем в костюме”. Он решил научиться программировать. Начал спрашивать людей вокруг. Изучил немного Руби, потом быстренько посмотрел на другие языки вроде Scala, Clojure и Go. Он изучил Emacs, а потом Vim, а потом раскладку Dvorak. Он втыкал в Линукс, копался с Лиспом и кодил на Питоне, и жил при этом в командной строке больше полутора лет.

Его швыряло туда-сюда как листочек в торнадо. Каждый совет, который он слышал, тащил его то в одну, то в другую сторону, до тех пор пока он не прошел “каждый онлайн-курс по программированию во вселенной”. В конце концов, не смотря на то, что он получил работу разработчика ПО, Квинси:

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

Ох. Звучит знакомо?
Читать дальше →
Total votes 65: ↑55 and ↓10+45
Comments44

Как врач сделал себе ИИ помощника. Часть 1

Reading time3 min
Views12K

Всем привет, меня зовут Александр и я врач-гематолог. Для справки, это тот, кто занимается болезнями крови. Мой общий стаж перевалил за 16 лет, я кандидат медицинских наук и последние пару-тройку лет интересуюсь анализом данных, machine learning и ИИ в медицине. Под "интересуюсь" я подразумеваю исследования и публикации по этим темам, а также обучение и саморазвитие.

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

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

Читать далее
Total votes 78: ↑74 and ↓4+70
Comments67

Элементы функционального программирования в R

Reading time13 min
Views2K

"На небе только и разговоров, что о функциональном программировании."

Всем привет. Меня зовут Дмитрий Володин, я Analytics Engineer в TrafficStars. Сегодня я хочу рассказать вам о приёмах ФП в R. Исходить я постараюсь из более-менее реальных задач, а не учебных, чтобы показать, что элементам ФП вполне есть место в вашем ящике с инструментами.

Читать далее
Total votes 12: ↑11 and ↓1+10
Comments2

На берегу океана или о тестах для таблиц 2*k

Level of difficultyEasy
Reading time2 min
Views596

Сообщение посвящено простому (всего 1 функция ) пакету chisquare, который реализует статистический тест на равенство пропорций для таблиц 2*k, выдает по ней подробную информацию, а также приятно оформленные таблицы в виде графиков

Читать далее
Total votes 1: ↑1 and ↓0+1
Comments0

Хорошая идея не пропадает зря или о пакете gMWT

Level of difficultyEasy
Reading time4 min
Views846

В заметке кратко описан функционал пакета gMWT, который реализовывает обобщенный тест Манна-Уитни. Описано его применение для проверки гипотез о равенстве законов распределения для случая двух и трех выборок, продемонстрировано его применение для проверки гипотез о принадлежности изучаемого распределения некоторому закону.

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments0

Наглядное руководство по SSH-туннелям

Reading time8 min
Views117K

Прим. переводчика: автор статьи рассматривает практические сценарии и примеры организации SSH-туннелей. А для лучшего понимания того, как это работает, графически показывает потоки трафика.

Туннели SSH — это зашифрованные TCP-соединения между клиентами и серверами SSH. Трафик входит с одной стороны туннеля и прозрачно выходит с другой. Изначально этот термин относился к туннелям на виртуальных сетевых интерфейсах TUN/TAP, однако сейчас так обычно называют проброс портов SSH.

Читать далее
Total votes 75: ↑75 and ↓0+75
Comments17

Интересные алгоритмы кластеризации, часть вторая: DBSCAN

Reading time10 min
Views92K
Часть первая — Affinity Propagation
Часть вторая — DBSCAN
Часть третья — кластеризация временных рядов
Часть четвёртая — Self-Organizing Maps (SOM)
Часть пятая — Growing Neural Gas (GNG)

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


Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments4

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

Reading time7 min
Views7.1K

Привет, Хабр! Меня зовут Андрей Ткаченко, я руковожу направлением прогнозирования промо в «Магните». Наша команда запускает цикл статей о прогнозировании промо: мы приоткроем дверь в мир процессов, технологий и алгоритмов крупного российского ритейла, а также поделимся собственным опытом. 

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

Читать далее
Total votes 9: ↑8 and ↓1+7
Comments16

Рекурсивное название небольшой статьи о рекурсии

Level of difficultyMedium
Reading time7 min
Views5.6K

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

Читать далее
Total votes 6: ↑3 and ↓30
Comments46

NumPy: оттачивайте навыки Data Science на практике

Level of difficultyMedium
Reading time21 min
Views18K

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

t.me/ai_machinelearning_big_data -  моем телеграм канале я публикую актуальные проекты курсы, уроки и примеры с кодом по машинному обучению.

Для этой статьи рекомендуется, чтобы читатель имел средний уровень знаний Python, NumPy, numpy.dtypenumpy.ndarray.strides, и numpy.ndarray.itemsize. Краткое введение в массивы и NumPy см. в разделе 💡 Немного предыстории ниже.

Рекомендуемые бесплатные курсы и гайды:

Читать далее
Total votes 18: ↑18 and ↓0+18
Comments12

Авария Boeing 737 Max глазами разработчика ПО

Reading time22 min
Views105K
Представляю вашему вниманию перевод статьи «How the Boeing 737 Max Disaster Looks to a Software Developer» Грега Трэвиса. Речь пойдет о том, как желание Боинга сэкономить и «срезать углы» для коммерческой выгоды, а также культура «некомпетентности и неэтичности» в сообществе разработчиков привело к гибели 346 человек. Я не во всем разделяю позицию автора (в частности, я считаю, что человеческий фактор куда большее зло, чем ПО), но с основными доводами сложно не согласиться.

Ниже очень много букв. Если читать лень, а ознакомиться с темой хочется, то на Хабре есть первая, более короткая версия этой статьи в переводе Вячеслава Голованова, с ней можно ознакомиться здесь.
Читать дальше →
Total votes 79: ↑72 and ↓7+65
Comments241

Эльфы и пингвины: что такое ELF и как он работает в Linux?

Level of difficultyEasy
Reading time37 min
Views21K

image


Всем привет! С вами как всегда я, Аргентум. Сегодня я расскажу и поведаю вам древние тайны, которые хранят горные старцы-сисадмины — тайны об эльфах, и как они взаимодействуют с древним народцем пингвинов. Дамы и господа, встречайте — статья о работе ELF и двоичных файлов в Linux!


Что такое ELF? Чем он отличается от PE в Windows? И многие другие ответы на ваши вопросы.


Перед тем как погрузиться в технические детали, будет нелишним объяснить, почему понимание формата ELF полезно. Это позволяет изучить внутреннюю работу операционной системы. Когда что-то пошло не так, эти знания помогут лучше понять, что именно случилось, и по какой причине. Также возможность изучения ELF-файлов может быть ценна для поиска дыр в безопасности и обнаружения подозрительных файлов. И наконец, для лучшего понимания процесса разработки. Даже если вы программируете на высокоуровневом языке типа Go или Rust, вы всё равно будет лучше знать, что происходит за сценой.


Итак, зачем изучать ELF?


  • Для общего понимания работы операционной системы
  • Для разработки ПО
  • Цифровая криминалистика и реагирование на инциденты (DFIR)
  • Исследование вредоносных программ (анализ бинарных файлов)
Читать дальше →
Total votes 58: ↑52 and ↓6+46
Comments22

Как работает ChatGPT: объясняем на простом русском эволюцию языковых моделей с T9 до чуда

Level of difficultyEasy
Reading time30 min
Views369K

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

Погнали →
Total votes 357: ↑350 and ↓7+343
Comments283

Кто такие LLM-агенты и что они умеют?

Level of difficultyMedium
Reading time24 min
Views25K

В последнее время большие языковые модели (Large Language Models, LLM) стали невероятно популярными — кажется, их обсуждают везде, от школьных коридоров до Сената США. Сфера LLM растёт бурными темпами, привлекая внимание не только специалистов в области машинного обучения, но и обычных пользователей. Кто-то высказывает массу опасений насчет их дальнейшего развития, а кто-то и вовсе предлагает бомбить дата-центры — и даже в Белом Доме обсуждают будущее моделей. Но неужели текстом можно кому-то навредить? А что если такая модель приобрела бы агентность, смогла создать себе физическую оболочку и полностью ей управлять? Ну, это какая-то фантастика из (не)далёкого будущего, а про агентов нашего времени я расскажу в этой статье. И не переживайте — знание машинного обучения вам не понадобится!

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments13

Заблуждения Clean Architecture

Reading time15 min
Views410K
Превращаем круги в блоки

­­ 


На первый взгляд, Clean Architecture – довольно простой набор рекомендаций к построению приложений. Но и я, и многие мои коллеги, сильные разработчики, осознали эту архитектуру не сразу. А в последнее время в чатах и интернете я вижу всё больше ошибочных представлений, связанных с ней. Этой статьёй я хочу помочь сообществу лучше понять Clean Architecture и избавиться от распространенных заблуждений.

Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments203

Andrej Karpathy: глубокие нейросети 33 года назад и 33 года спустя

Reading time10 min
Views6.4K

На мой взгляд, статья Янна Лекуна с соавторами Backpropagation Applied to Handwritten Zip Code Recognition (1989 год) имеет определённую историческую ценность, поскольку, насколько мне известно, это первое реальное применение нейронной сети, от начала до конца обученной при помощи обратного распространения (backpropagation). Если не учитывать крошечный датасет (7291 изображений цифр в градациях серого размером 16x16) и крошечный размер использованной нейронной сети (всего тысяча нейронов), эта статья спустя 33 года ощущается вполне современной — в ней описана структура датасета, архитектура нейронной сети, функция потерь, оптимизация и приведены отчёты об величинах экспериментальных ошибок классификации для обучающего и тестового датасетов. Всё это очень узнаваемо и воспринимается как современная статья о глубоком обучении, только написанная 33 года назад. Я решил воспроизвести эту статью 1) для развлечения, а ещё 2) чтобы использовать это упражнение как исследование природы прогресса глубокого обучения.
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments12

Как быстро получить много данных от Битрикс24 через REST API

Reading time4 min
Views30K

Нередко при работе с Bitrix24 REST API возникает необходимость быстро получить содержимое определенных полей всех элементов какого-то списка (например, лидов).

Традиционный способ для этого - обращение к серверу через метод *.list (например, crm.lead.list для лидов) с параметром select, перечисляющим список требуемых полей. При этом, чем больше полей вы запрашиваете, тем больше времени серверу требуется для формирования ответа. Плюс, в силу того, что информация сервером выдается постранично, получение всего списка через последовательные запросы всех страниц может занимать много времени.

Однако существует несколько стратегий для того, которые позволяют ускорить процесс на порядки.

И что это за стратегии?
Total votes 16: ↑16 and ↓0+16
Comments9

Я люблю питон, и вот почему он меня бесит

Level of difficultyEasy
Reading time18 min
Views56K

Вас приветствует ваш зануда!

Если вы следите за моей ленивой активностью, то заметили бы, что у меня много от чего пригорает. Вот, например:
- У меня пригорает от низкосортных статей на потоке: Питон против Безумного Макса, или как я посты на Хабре замораживал
- У меня пригорает от Django: Окей, Джанго, у меня к тебе несколько вопросов
- И от Яндекса тоже: Собеседование в Яндекс: театр абсурда :/
- И от рекрутеров: Я единственный из 1400, или самый крутой рекрутинг, что я проходил

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

Это что же получается, kesn опять открыл postman и сломал вёрстку на сайте? Поразительно, никогда такого не было, и вот опять! В принципе, тут можно писать текст любой длины (похоже, у них на бэкенде не Char(255), а Text). Они проверяют длину только на фронтенде, а бэкенд принимает строку любой длины. И это, блин, забавно) Вообще мой девиз - 'кто ищет, тот всегда найдёт', поэтому я ищу постоянно. Кстати, на Хабре скоро выйдет статья про программирование глазами Погромиста, там в том числе про уязвимости на сайтах будет - поэтому если не хотите пропустить, то подписывайтесь на меня в телеге: @blog_pogromista
Total votes 248: ↑238 and ↓10+228
Comments143

От Web до Desktop за 2 недели: технология Electron на практике

Reading time13 min
Views9.7K

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

Меня зовут Сергей Володин, я руковожу командой разработки VK WorkMail. В этой статье я расскажу, как на основе Electron мы за две недели создали PoC кроссплатформенного настольного приложения Почты, что узнали о технологии и к каким выводам пришли.

Читать далее
Total votes 34: ↑30 and ↓4+26
Comments31

Ускоряем Python в сто раз при помощи менее чем ста строк на Rust

Level of difficultyMedium
Reading time15 min
Views19K

Однажды на работе у нас возникла проблема с производительностью одной из наших основных Python-библиотек.

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

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

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

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

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

Если вы хотите сразу перейти к получившемуся коду, то читайте раздел «Подведение итогов».
Читать дальше →
Total votes 76: ↑72 and ↓4+68
Comments10
1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity