Как стать автором
Обновить
475.06
Рейтинг

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга

Простые highload паттерны на Go

Программирование *Go *Параллельное программирование *
Из песочницы

Привет, Хабр! Меня зовут Агаджанян Давид, хочу поделиться некоторыми инженерами рекомендациями, которые часто на моем опыте помогали держать highload нагрузку не прибегая к хардкору. Примеры будут на Go. Эти подходы довольно хорошо известны, но как мне кажется они недооценены и многие этими подходами пренебрегают. Если вы впервые видите их, то рекомендую хотя бы попробовать реализовать в своих проектах и провести бенчмарки, возможно вы будете приятно удивлены..

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 1.1K
Комментарии 0

Новости

9 причин перейти с Python на Go

Блог компании Geekfactor.io Python *Программирование *Go *
Перевод

Переход на новый язык — это всегда большой шаг. Особенно, если этим языком владеет только один член команды. В начале этого года мы поменяли основной язык программирования в Stream — с Python на Go. В этой статье я приведу 9 причин почему — и 3 минуса, выявленных в процессе. 

Кодить на Python не брошу, но посмотрю
Всего голосов 18: ↑2 и ↓16 -14
Просмотры 4.1K
Комментарии 10

Эффективное использование any и all в Python

Блог компании Wunder Fund Разработка веб-сайтов *Python *Программирование *
Перевод

Вот вам задача: надо проверить, входит ли число 200 миллионов в диапазон от 0 до 1 миллиарда. Знаю, что на Python её решение выглядит до крайности примитивно — достаточно воспользоваться функцией any и списковым включением:

Читать далее
Всего голосов 20: ↑16 и ↓4 +12
Просмотры 1.8K
Комментарии 5

Логотип PSone и где он обитает

Программирование *Работа с 3D-графикой *C *Старое железо Игры и игровые консоли

Знакомая картинка? Думаю, что знакома она многим. Дети 90-х (ух, что тогда творилось, в песне Монеточки это всё описано), видели этот логотип при старте приставки PS1. И оказалось, что

Читать, что там оказалось
Всего голосов 36: ↑35 и ↓1 +34
Просмотры 5.3K
Комментарии 8

Атака на String.hashCode: прообразы и коллизии

Ненормальное программирование *Программирование *Java *
Recovery mode
☕️ Cезон Java


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

Блуждание по интернету не дало результатов, примеров было мало и все они довольно однообразны. Поиск по словарям подарил забавную пару "javascript's".hashCode() == "monocle".hashCode(), но практической пользы не принёс. Полный перебор не рассматривался в виду скорой тепловой смерти вселенной.

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

Читать дальше →
Всего голосов 51: ↑51 и ↓0 +51
Просмотры 4.1K
Комментарии 10

Бесплатные мероприятия по разработке (18 августа — 15 сентября 2022)

Программирование *Учебный процесс в IT Карьера в IT-индустрии Конференции

18 августа, Четверг
➖ IT_One Java Meetup
➖ Техническое собеседование системного аналитика

19 августа, Пятница
➖ Samokat Tech Meetup – Frontend

20 августа, Суббота
➖ TechnoMeetsDroid. Митап об Android-разработке

15 сентября, Четверг
➖ Асинхронный рендеринг в React 18 и принципы практичного рефакторинга

Узнать подробнее
Рейтинг 0
Просмотры 1.1K
Комментарии 0

Применение языка Python в инженерной практике. Часть 1 — обзор модуля Pint

Python *Программирование *Математика *Инженерные системы *Подготовка технической документации *
Из песочницы

Язык Python (правильно это читается "Пайтон", но в русскоязычном сообществе так же прижилось и прочтение "Питон", мне оно тоже больше по душе ;) в последнее время получил очень большую популярность в среде непрограммистов по двум причинам:

- лёгкий синтаксис, очень близкий к естественным языкам и математическому мышлению;

- огромное количество различных библиотек (модулей), написанных как на самом питоне, так и на более быстрых языках С/С++ и Фортран.

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

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Просмотры 7.3K
Комментарии 42

Rust 1.63.0: потоки области видимости, I/O безопасность, NLL во всех редакциях по умолчанию

Open source *Программирование *Системное программирование *Компиляторы *Rust *
Перевод

Команда Rust рада сообщить о новой версии языка — 1.63.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.63.0 вам достаточно выполнить команду:


rustup update stable

Если у вас ещё нет rustup, то можете установить его со страницы на нашем веб-сайте, а также ознакомиться с подробным описанием выпуска 1.63.0 на GitHub.


Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать beta (rustup default beta) или nightly (rustup default nightly) канал. Пожалуйста, сообщайте обо всех встреченных вами ошибках.


Что стабилизировано в 1.63.0


В стандартную библиотеку добавлены потоки, которые гарантировано завершаются в конце области видимости. Завершена миграция всех редакций языка на NLL. Добавлены новые типы для работы с дискриптерами файлов операционной системы.

Читать дальше →
Всего голосов 42: ↑41 и ↓1 +40
Просмотры 4.9K
Комментарии 1

PowerShell: HTML Agility Pack и AngleSharp

Программирование *.NET *PowerShell *Оболочки *Разработка под Windows *
Tutorial

Как получить и использовать библиотеки «HTML Agility Pack» и «AngleSharp» для создания простого парсера HTML в скрипте для программ-оболочек «Windows PowerShell» версии 5.1 и «PowerShell» версии 7 в операционной системе «Windows 10». Приведен простой пример кода для обеих библиотек.

Читать далее
Всего голосов 4: ↑2 и ↓2 0
Просмотры 1K
Комментарии 6

Приключения чисел в python и mypy или the numeric tower

Python *Программирование *

Если вы когда-нибудь чувствовали, что вы погрязли в совещаниях и обсуждениях, которые всё длятся и длятся, а решения проблемы всё нет, знайте: в mypy есть 5-летний issue, о том что целое число не является числом.

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

Read more
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 2.5K
Комментарии 14

Workaround me в 1С\MS SQL и не только, научный подход к созданию костылей

Программирование *Microsoft SQL Server * *

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

Читать далее
Всего голосов 3: ↑0 и ↓3 -3
Просмотры 1.3K
Комментарии 0

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

Программирование *Учебный процесс в IT
Из песочницы
Перевод

Коля был простым «белым воротничком» в офисе и решил, что хочет научиться программировать, поэтому он поспрашивал вокруг с чего начать. Он начал с изучения Ruby, а затем пробежался по другим языкам, таким как Scala, Clojure и Go. Он изучал Emacs, затем Vim и даже раскладку клавиатуры Дворжака. Он брался за Linux, баловался Lisp и кодировал на Python, живя в командной строке более полугода.

Советы, которые получал Коля, дёргали его сначала в одну сторону, потом в другую, и так далее, как лист в торнадо, пока он, наконец, не прошёл «каждый мыслимый и немыслимый онлайн-курс». В конце концов, несмотря на то, что в итоге он получил работу в разработке, Коля:

Читать далее
Всего голосов 59: ↑41 и ↓18 +23
Просмотры 54K
Комментарии 203

Релиз языка программирования NewLang 0.2

Ненормальное программирование *Программирование *C++ *Компиляторы *Машинное обучение *

image


NewLang — это язык программирования высокого уровня в котором можно сочетать стандартные алгоритмические конструкции с декларативным программированием и тензорными вычислениями для задач машинного обучения.


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


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

Читать дальше →
Всего голосов 10: ↑5 и ↓5 0
Просмотры 5.5K
Комментарии 10

Навигация в Swift UI: что изменилось с появлением iOS 16

Блог компании Surf Программирование *Разработка под iOS *Разработка мобильных приложений *Swift *

Одно из самых проблемных мест SwiftUI — работа с навигацией. Отсутствие доступа к стеку навигации, невозможность разделить UI-слой и слой навигации, сложность создания диплинков — всё это затрудняло работу многим разработчикам, использующим SwiftUI в своих проектах.

В iOS 16 появился совершенно новый API для работы с навигацией. Разбираемся, стало ли удобнее.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 1.1K
Комментарии 1

Действительно ли генераторы помогают экономить память?

Разработка веб-сайтов *PHP *Программирование *Читальный зал
Перевод


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


Сначала я удивился — откуда взялись такие идеи? Ведь мы много лет работали с большими объемами данных без всяких генераторов. Лучшая статья про генераторы в РНР, опубликованная ещё десять лет назад, Что генераторы могут для вас сделать Антонио Феррары тоже практически не упоминает экономию памяти. У меня и у самого всегда было чёткое ощущение, что хотя генераторы — это совершенно отличное изобретение, у которого есть множество разнообразных применений, но вот только экономии памяти среди них нет.


В итоге у меня разыгралось любопытство и я решил разобраться с этим вопросом.

Читать дальше →
Всего голосов 19: ↑16 и ↓3 +13
Просмотры 3.4K
Комментарии 5

8 каверзных вопросов по С++

Программирование *C++ *
Мегапроект

Команда C++-программистов — @starik-2005, @PyLounge, @markwatney, @dmitrmax и @rssdev10 — собрала 8 экспертных вопросов по C++. Давайте посмотрим, что их вопросам сможет противопоставить команда хабрачитателей.

Осторожно, в комментариях будут спойлеры. Там от лица C++-команды выступят @rotor и @PyLounge: они объяснят, если в вопросах будет что-то непонятно.

P.S. Если хотите поучаствовать в создании будущих квизов, пишите редактору: тг, Хабр.

Дать каверзные ответы
Всего голосов 27: ↑21 и ↓6 +15
Просмотры 5.9K
Комментарии 51

Динамический импорт модулей в Python

Блог компании Sportmaster Lab Python *Программирование *Системы сборки *

Давайте представим ситуацию, когда вам нужно установить на все виртуальные машины (агенты сервера сборки) определенный пакет Python. Но вы не можете изменить образ агента, а загрузка, к примеру из pypi.org или github.com непроверенных пакетов, ограничена. Как тут не вспомнить последние новости про вредоносные изменения в пакете nmp или более свежую информацию про PyPi.

Python использует подход под названием EAFP — Easier to ask for forgiveness, than permission (легче попросить прощения, чем разрешения). Это значит, что проще предположить, что что-то существует (к примеру, словарь в словаре, или в нашем случае модуль в системе) или получить ошибку в противном случае.

Этот подход, развитый в PEP-0302, позволяет делать хук импорта модулей, что в итоге приводит нас к возможности написания следующего кода:

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

Проблема с использованием тега img и picture в Safari

Разработка веб-сайтов *Программирование *Safari Браузеры ReactJS *
Из песочницы

Данная статья описывает баг и его решения в контексте ReactJS + Server-Side Rendering, но это также актуально для всех фреймворков большой тройки так и для чистого JS.

При разработке сайта мы столкнулись с проблемой, что при использовании тега <img> на некоторых страницах Safari загружал изображение несколько раз вместо одного. Для отображения картинок мы использовали тег <img> с атрибутом srcset, что бы показывать картинки разного разрешения для экранов с высоким ppi.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 1.5K
Комментарии 0

Как сократить код Canvas API в Svelte

Блог компании SkillFactory Разработка веб-сайтов *Программирование *TypeScript *SvelteJS *
Перевод

Разработчик из консалтинговой компании в области разработки This Dot Labs рассказывает, как использовать canvas в Svelte и как превратить многословный API Canvas в краткий, более декларативный. Подробности — к старту нашего курса по фронтенду.

Узнать больше
Всего голосов 14: ↑12 и ↓2 +10
Просмотры 1.1K
Комментарии 0

Простое REST api для сайта на php хостинге

Разработка веб-сайтов *PHP *Программирование *API *
Recovery mode
Из песочницы

Иногда бывает необходимо развернуть не большое рест апи для своего сайта, сделанного по технологии СПА (Vue, React или др.) без использования каких-либо фреймворков, CMS или чего-то подобного, и при этом хочется воспользоваться обычным php хостингом с минимальными усилиями на внедрение и разработку.  При этом там же желательно разместить и сам сайт СПА (в нашем случае на vue).

Использование php позволяет для построения ендпоинтов апи использовать даже статические php файлы, размещаемые просто в папках на хостинге, которые предоставляют результат при непосредственном обращении к ним. И хотя, видимо в своё время, такой подход послужил широкому распространению php мы рассмотрим далее более программистский подход к созданию апи, который очень похож на используемый в библиотеке Node.js Express и поэтому интуитивно понятен, и прост для освоения.

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 3K
Комментарии 17

Вклад авторов