Как стать автором
Обновить
104
-1

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

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

Уровень сложности Простой
Время на прочтение 12 мин
Количество просмотров 19K

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


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


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


О документе


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


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

Читать дальше →
Всего голосов 11: ↑7 и ↓4 +3
Комментарии 8

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

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 6.7K

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


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


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

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

Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 11

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

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 12K

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


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


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

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

Читать дальше →
Всего голосов 9: ↑5 и ↓4 +1
Комментарии 4

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

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 34K

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


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

Читать дальше →
Всего голосов 21: ↑13 и ↓8 +5
Комментарии 21

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

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 8.7K

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

Читать дальше →
Всего голосов 2: ↑1 и ↓1 0
Комментарии 2

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

Время на прочтение 8 мин
Количество просмотров 6.4K

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

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

Текст на выходной
Всего голосов 24: ↑10 и ↓14 -4
Комментарии 10

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

Время на прочтение 11 мин
Количество просмотров 16K

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



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

Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 30

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

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 3.9K

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


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


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


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


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


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

Читать дальше →
Всего голосов 4: ↑1 и ↓3 -2
Комментарии 0

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

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 8.6K

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

Читать дальше →
Всего голосов 15: ↑12 и ↓3 +9
Комментарии 8

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

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 1.8K


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

Читать дальше →
Всего голосов 3: ↑2 и ↓1 +1
Комментарии 2

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

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 16K


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



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


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

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

Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 0

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

Уровень сложности Средний
Время на прочтение 13 мин
Количество просмотров 8K


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


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

Читать дальше →
Всего голосов 31: ↑31 и ↓0 +31
Комментарии 19

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

Уровень сложности Средний
Время на прочтение 15 мин
Количество просмотров 5.4K


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


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

Читать дальше →
Рейтинг 0
Комментарии 3

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

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 3.2K

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


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


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

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

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 11K


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

Читать дальше →
Всего голосов 32: ↑28 и ↓4 +24
Комментарии 45

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

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 2.3K


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

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

Читать дальше →
Всего голосов 5: ↑3 и ↓2 +1
Комментарии 0

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

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 6.3K


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


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

Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Комментарии 4

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

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 27K

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


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


Обзор


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


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

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


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


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

Читать дальше →
Всего голосов 42: ↑27 и ↓15 +12
Комментарии 42

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

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 7.7K

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

Читать дальше →
Всего голосов 18: ↑14 и ↓4 +10
Комментарии 0

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

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 5.2K


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

Читать дальше →
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 1

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность