Pull to refresh
106
-1
Send message

Пишем на Go как в Google. Лучшие практики — часть первая

Level of difficultyEasy
Reading time12 min
Views21K

Рекомендации по стилю для проектов Google с открытым исходным кодом


Лучшие практики Go


Этот документ — часть документации по стилю Go в Google. Он не является ни нормативным, ни каноничным, это дополнение к «Руководству по стилю». Подробности смотрите в Обзоре.


О документе


Здесь приведены рекомендации по лучшим практикам применения требований «Руководства по стилю» для Go. Это руководство охватывает общие и распространенные случаи, но не может применяться к каждому частному случаю. Обсуждение альтернатив, по возможности, включено в текст руководства вместе с указаниями о том, когда они применимы, а когда — нет.


Полная документация руководства по стилю описывается в обзоре.

Читать дальше →
Total votes 11: ↑7 and ↓4+3
Comments8

Как выжать 1,5 терафлопса производительности для 32-битных чисел с плавающей точкой на одном процессоре M1

Level of difficultyMedium
Reading time6 min
Views7.7K

Если вы занимаетесь обучением крупных современных нейросетей, эта статья будет вам не совсем в тему, ведь у A100 скорость в сто раз выше (156 терафлопсов).


Так что же интересного в этих полутора терафлопсах?


  • работа на одном ядре MacBook Air 2020 года с питанием от батареи;
  • выполнение с задержкой ~0,5 наносекунды на инструкцию.

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

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

msgspec: быстрый и экономичный парсинг JSON на Python

Level of difficultyEasy
Reading time4 min
Views14K

В библиотеке msgspec много функций, например кодирование, поддержка MessagePack (альтернативный формат, который быстрее JSON) и другие. Если вы регулярно парсите файлы JSON, и у вас проблемы с производительностью или памятью, или просто нужны встроенные схемы, то попробуйте msgspec.


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


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

Конечно, можно объединить решения с несколькими библиотеками. А можно — всего с одной. Схемы, быстрый парсинг и хитрые приемы для уменьшения потребления памяти — все это новая библиотека msgspec.

Читать дальше →
Total votes 9: ↑5 and ↓4+1
Comments4

Доказано наукой: 7 способов быть продуктивнее

Level of difficultyEasy
Reading time10 min
Views37K

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


В тексте речь идёт о маркетологах, однако материал будет полезен всем, кто работает с информацией, чей главный инструмент на работе — это мозг.

Читать дальше →
Total votes 21: ↑13 and ↓8+5
Comments21

Фракталы, рекурсия и Python

Level of difficultyEasy
Reading time7 min
Views9.5K

Фракталы — это бесконечные сложные узоры, которые самоподобны в разных масштабах. Например, ствол дерева расщепляется на ветки. Те распадаются на еще более мелкие ветви и так далее. Программная генерация фракталов превратит простые формы в сложные узоры. Я покажу, как построить впечатляющие фракталы при помощи Python простой геометрии и знания программирования.

Читать дальше →
Total votes 2: ↑1 and ↓10
Comments2

Такая она, жизнь в Кремниевой долине

Reading time8 min
Views6.4K

Всего три года, и можно наконец-то накопить на ту 3-комнатную квартиру

Ты встаёшь в 6:30, приняв накануне снотворное, чтобы заснуть. Пятница. Вчерашний вечер в Розвуде был очень насыщенным: нужно было съездить в Мадеру и посмотреть, есть ли хоть доля правды в давних слухах о Кремниевой долине. Ты разочарован, но по крайней мере увидел в баре нескольких управляющих крупными венчурными фирмами. Они заметили тебя? Удалось установить с ними зрительный контакт? Стоп. Ты напоминаешь себе: они никакие не знаменитости и известны лишь в радиусе 15 миль среди читателей TechCrunch.

Текст на выходной
Total votes 24: ↑10 and ↓14-4
Comments10

Как одиночество перестраивает мозг

Reading time11 min
Views17K

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



Научно-исследовательская антарктическая станция «Ноймайер III» расположена на краю безжалостного антарктического шельфового ледника Экстрем. В период зимовки, когда температура может опускаться ниже минус 50 градусов по Цельсию, а ветер может достигать скорости более 100 км/ч, никто не может ни прибыть на станцию, ни покинуть ее. Изоляция станции необходима для метеорологических, атмосферных и геофизических научных экспериментов, проводимых на ней небольшой группой ученых, которые работают там в зимние месяцы и стойко переносят холодное одиночество.

Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments30

Go. О покрытии кода интеграционными тестами и флаге -cover

Level of difficultyEasy
Reading time7 min
Views4.4K

Инструменты покрытия кода помогают понять, какая часть кодовой базы выполняется (или, как еще говорят, покрывается) при выполнении данного набора тестов. Какое-то время Go поддерживал измерение покрытия кода на уровне пакета, введенное в Go 1.2, она включалась флагом команды go test -cover.


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


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


Двоичные файлы интеграционных тестов создаются командой go build, а не go test, поэтому инструментарий Go до сих пор не предоставлял простого способа сбора профиля покрытия этих тестов.


С версии Go 1.20 программы с инструментированием покрытия можно создавать командой go build -cover, а затем, чтобы расширить область покрытия, передавать эти инструментированные двоичные файлы в интеграционный тест.


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

Читать дальше →
Total votes 4: ↑1 and ↓3-2
Comments0

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

Level of difficultyEasy
Reading time8 min
Views8.7K

Искусственный интеллект во многом обязан своими достижениями Джуде Перлу. В 1980-х он руководил работами, которые позволили машинам развить способности к вероятностному рассуждению. Сегодня Джуда Перл — один из самых ярых критиков в этой области. В своей последней книге «Почему? Новая наука о причинно-следственной связи» (англ. The Book of Why)? он утверждает, что [настоящему] искусственному интеллекту препятствует неполное понимание того, что на самом деле представляет собой интеллект. За ответами — к старту флагманского курса по Data Science — приглашаем под кат.

Читать дальше →
Total votes 15: ↑12 and ↓3+9
Comments8

Распознавание движений белой тростью с нуля. Часть первая

Level of difficultyEasy
Reading time6 min
Views1.8K


Вы хотите создать простую капсулу, способную распознавать естественные движения трости? Хотите внедрить машинное обучение / искусственный интеллект на микроконтроллерах и других устройствах? Мы покажем, как создать GesturePod — самонастраиваемое устройство, которое распознает движения в режиме реального времени. Эта инструкция наглядно показывает, как при помощи GesturePod сделать интерактивной любую «белую трость». GesturePod упрощает доступ к смартфонам и другим домашним устройствам для людей с нарушениями зрения и пожилых людей. С помощью GesturePod можно управлять устройствами, выполняя движения тростью. К примеру, ответить на входящий звонок двойным покачиванием трости из стороны в сторону.

Читать дальше →
Total votes 3: ↑2 and ↓1+1
Comments2

Отображение графа на Python с networkx

Level of difficultyEasy
Reading time6 min
Views19K


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



Можно сделать несколько наблюдений:


  • Английский (en) — основной язык, на который переводятся все остальные языки; в то же время многие англоязычные материалы переводятся на другие языки.
  • Китайский (zh) переводится на японский (ja), но не наоборот.
  • И китайский, и японский материалы переведены на английский, и наоборот.

Я же расскажу о том, как для отображения графов использовать пакет networkx.

Читать дальше →
Total votes 6: ↑5 and ↓1+4
Comments0

Обратное проектирование дисплея e-ink

Level of difficultyMedium
Reading time13 min
Views8.1K


Этот ценник, но чёрно-белый, без красного цвета


Одному из членов нашего сообщества удалось приобрести на eBay несколько дисплеев e-ink. Эти дисплеи используют в магазинах, где на них указывается цена товаров, которые можно купить. По сравнению с бумажными ценниками такой дисплей имеет два ключевых преимущества: текст на e-ink дисплеях может обновляться автоматически и может иметь более замысловатую графику. От обычных ЖК-экранов e-ink отличается тем, что энергия расходуется только при изменении содержимого. Это позволяет оснастить ценники батареей небольшой ёмкости и работать без замены батареи несколько лет.

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

CSS сolor-сontrast(): пошаговое руководство

Level of difficultyMedium
Reading time15 min
Views5.6K


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


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

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

Не пытайтесь измерить использование памяти в Pandas

Level of difficultyEasy
Reading time5 min
Views3.2K

Представьте: у вас есть файл с данными, которые вы хотите обработать в Pandas. Хочется быть уверенным, что память не закончится. Как оценить использование памяти с учетом размера файла?


Все эти оценки могут как занижать, так и завышать использование памяти. На самом деле оценивать использование памяти просто не стоит. А если конкретнее, в этой статье я:


  • покажу широкий диапазон использования памяти ещё до обработки, только во время загрузки данных;
  • расскажу о других подходах — измерении и передаче файла по частям.
Читать дальше →
Total votes 3: ↑2 and ↓1+1
Comments0

Ученые телепортируют энергию при помощи квантовой механики

Level of difficultyMedium
Reading time9 min
Views11K


Протокол телепортации квантовой энергии предложен в 2008 году и по большей части был проигнорирован. Но сегодня два независимых эксперимента показали, что он работает. 15 лет назад физик-теоретик из Университета Тохоку в Японии Масахиро Хотта предположил, что вакуум можно заставить что-то нам дать.

Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments45

Для обучения компьютерной математике исследователи объединяют подходы искусственного интеллекта

Level of difficultyEasy
Reading time7 min
Views2.4K


«Они будут говорить о единорогах, но забудут, что у них один рог, или расскажут вам историю, а после изменят детали», — рассказывает о больших языковых моделях (LLM — Large Language Model) Джейсон Рут из IBM Research.

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

Читать дальше →
Total votes 5: ↑3 and ↓2+1
Comments0

Как мы чуть не взломали шифровальщик Phobos с помощью CUDA

Level of difficultyMedium
Reading time8 min
Views6.7K


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


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

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

Как при помощи Rust в 150 раз ускорить код на Python

Level of difficultyEasy
Reading time6 min
Views28K

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


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


Обзор


Проблему решим в 6 шагов:


  1. Решим вопрос о том, почему функция медленная.
  2. Подготовим проект.
  3. Перепишем функцию в Rust.
  4. Скомпилируем код на Rust и разместим его в пакете Python.
  5. Импортируем пакет Python в проект.
  6. Выполним бенчмарк чистого Python и функции на Rust.

Пакет maturin скомпилирует Rust-код и преобразует его в готовый к работе пакет Python.


1. Решим вопрос о том, почему функция медленная


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

Читать дальше →
Total votes 42: ↑27 and ↓15+12
Comments42

Крупнейшие открытия ушедшего года в области Computer Science

Level of difficultyEasy
Reading time7 min
Views7.9K

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

Читать дальше →
Total votes 18: ↑14 and ↓4+10
Comments0

О трёх существенных недостатках известных алгоритмов обучения с подкреплением (и о том, как их устранить)

Level of difficultyEasy
Reading time8 min
Views5.3K


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

Читать дальше →
Total votes 5: ↑4 and ↓1+3
Comments1
1
23 ...

Information

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