Search
Write a publication
Pull to refresh
17
0.3
Send message

Она могла стать Первой: история процессорной архитектуры Alpha (часть 4)

Reading time11 min
Views7.7K

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

Во-вторых, это последняя часть повествования, и, как понимаете, хеппи-энда ждать не приходится. В конце будет «Goodnight, sweet princess». Ну и в-третьих, хотелось придумать, как смягчить горькое послевкусие, и, кажется, моя идея должна сработать. Давайте приступим!
Читать дальше →

Почему обзоры кода — это хорошо, но недостаточно

Reading time3 min
Views2.7K
image1.png

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

Вызов виртуальных функций в конструкторах и деструкторах (C++)

Reading time6 min
Views14K

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

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

Что нужно программисту?

Reading time2 min
Views12K

Прочитал статью «Математика для программиста». Удивительно, что в ней куча букв, но нет внятного смысла. Я решил исправить этот фатальный недостаток.


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

Занимательные фигуры на Python в одну строку

Reading time2 min
Views44K

Однострочники подобны коанам в Дзэн-буддизме. Как и коаны, некоторые однострочники можно охарактеризовать как "выражения ставящие мозг в тупик". Сами по себе они не научат программировать, но при накопленном определённом опыте позволят постичь всю силу и красоту языка программирования Пайтон.

Читать далее

Тернистый путь вендора. Часть 1

Reading time11 min
Views12K

Несколько слов об авторе

Чтобы был понятен контекст, нужно сказать несколько слов об авторе. Я с 2004 года занимаюсь разработкой программного обеспечения, начав с позиции junior java developer'а в аутсорсинговой компании и сейчас занимая позицию CTO в компании-вендоре «Юнидата». По пути застал времена расцвета и заката ODC западных продуктовых компаний в отечественных аутоорс компаниях, частичную переориентацию классических аутсорс компаний на отечественный рынок заказной разработки, эру импортозамещения и прочих этапов развития рынка разработки программного обеспечения (ПО) в России (мне кажется эта тема еще ждет своего историка). Учитывая все это, считаю себя достаточно опытным, чтобы рассуждать о деятельности вендора в B2B сегменте, вместе с тем осознавая ограничение своего опыта рамками определенных сегментов рынка ПО.

О чем и для кого статья

В данной статье я хочу описать, что же такое на самом деле вендор ПО, какое место в ней занимает собственно разработка продукта, и чем это отличается или не отличается от других компаний-разработчиков ПО. Надеюсь, что этот материал будет полезен для людей, планирующих работу в области продуктовой разработки, чтобы понимать на что из может ожидать, а также для сотрудников, уже работающих в продуктовой разработке, для понимания того, как это функционирует на самом деле. Из-за своего объема текст разбит на 2 части. Перед вами первая из них.

Читать далее

Nginx + Node.js: делаем идентификацию и аутентификацию

Reading time4 min
Views12K

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

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

Читать далее

Избавление от шаблонного кода: как будет выглядеть источник данных?

Reading time9 min
Views3.5K

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

●      Подробно расскажем про переиспользуемый провайдер табличного источника данных,

●      Покажем использование на конкретном примере,

●      Опишем результат с позиции SOLID,

●      Обсудим достоинства и недостатки подхода.

В основе решения лежат принципы SOLID. Цель состоит в том, чтобы составляющие элементы нашего подхода были независимыми, не влияющими друг на друга.

Читать далее

Многопоточный Python на примерах: как правильно хранить настройки приложения

Reading time14 min
Views36K

Если опустить первое и самое главное предубеждение относительно питонячьей многопоточности у большинства программистов — что её не существует из-за GIL, — то остается другое, и, наверное, вполне достоверное: что многопоточность — это сложно, и нам этого, пожалуйста, не надо. И знаете что? Так оно и есть. Многопоточность — это сложно, особенно когда выбираешься за пределы стандартных руководств и попадаешь со своей многопоточной поделкой в реальный мир. И, возможно, вам не нужно. Ни здесь, ни далее я не буду обсуждать целесообразность написания многопоточного кода на Python и сразу перейду к тому, как это делать.

Так как же?

Как отказаться от промежуточной среды разработки и ничего не потерять

Reading time5 min
Views7.4K

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

Читать далее

Структурное логирование и интерполированные строки в C# 10

Level of difficultyMedium
Reading time11 min
Views30K

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

Читать далее

Python: Логируем как профессионалы

Reading time13 min
Views54K

Часто вижу, что помимо обработки исключений, люди мучаются кое с чем еще, а именно с логированием.

Большинство людей не знают, что писать в логи, поэтому решают логировать все, что угодно, думая, что все подряд – это в любом случае лучше, чем ничего, и, в конечном итоге, просто создают шум. А шум – это информация, которая никак не помогает вашей команде понять, в чем дело и как решить проблему.

Читать далее

Что же такое этот GraphQL?

Reading time9 min
Views704K

Вашему вниманию предлагаю перевод статьи Sacha Greif "Что же такое этот GraphQL?"


Если вы такой же, как и я, вы обычно проходите через три этапа, когда узнаёте о новой технологии:


  • Отрицание: Ещё одна JavaScript библиотека?! Зачем? У меня уже есть jQuery!
  • Интерес: Хм, наверное мне следует взглянуть на эту библиотеку...
  • Паника: Помогите! Мне нужно изучить эту библиотеку прямо сейчас, иначе мои знания устареют!

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


Именно поэтому сейчас самое время узнать, что же такое этот GraphQL, о котором вы повсюду слышите.

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

Ответственность людей и решения искусственного интеллекта

Reading time21 min
Views3.6K

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

Читать далее

Считаем комбинации мозаик при помощи APL

Reading time6 min
Views1.5K
Это короткая статья о том, как я воспользовался APL для проверки своих комбинаторных вычислений.


Преамбула


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

«Есть сетка 3 на 3 из квадратов, образующая мозаику. Сколькими способами мы можем раскрасить эту мозаику, если у нас есть 3 цвета и соседние квадраты не могут быть одного цвета?»

Под «соседними» понимаются соседние по вертикали или горизонтали. Авторы задачи дали подсказку (если не хотите спойлеров, то сразу переходите к следующему разделу!):

Подсказка
«Пронумеруйте квадраты от 1 до 9, а затем поработайте с цветами чётных квадратов. Это позволит определить цвета нечётных квадратов».

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

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

Это статья о том, как я за 30 секунд проверил на APL своё решение задачи.

  1. Я начну с демонстрации моего ошибочного доказательства (в том виде, в котором я его записал);
  2. Затем я расскажу, что сделал на APL, чтобы проверить своё решение;
  3. Далее я покажу свою исходную ошибку, и наконец
  4. Я ещё немного поработаю с кодом на APL, чтобы сделать его чище.
Читать дальше →

Как оптимизировать производительность сайта. Расширенные рекомендации

Reading time6 min
Views4.3K

Привет!

Это снова Сергей Кузнецов, руководитель отдела Frontend-разработки в AGIMA. Недавно я рассказывал здесь про оптимизацию сайта в разрезе показателей Google PageSpeed. И теперь хочу вернуться к этой теме. Сегодняшняя статья будет не слишком длинной, но, надеюсь, для многих полезной. Речь снова пойдет об оптимизации производительности. Я дам практические советы по тем или иным моментам.

Читать далее

Диаграмма воронки в Python

Reading time6 min
Views11K

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

В этой статье мы рассмотрим, как построить воронку с нуля с помощью Matplotlib, а затем рассмотрим более простую реализацию с помощью Plotly.

Читать далее

Как работает модерация на Хабре

Reading time19 min
Views27K

Всем привет! Это мы, команда модераторов Хабра. Долгое время мы делали свою работу, иногда появлялись в комментариях и часто слышали мнение о том, что мы вообще роботы. С ростом активности и потока публикаций мы увидели, что читатели и пользователи, а иногда и корпоративные клиенты, не до конца понимают, как работает модерация. Если коротко, то большинству видится либо автоматика, либо люди, окружённые тремя мониторами, на которых на дашбордах валятся алерты о нарушениях, запросах и острых моментах. На самом деле всё проще и одновременно сложнее, а главное, лампово и по-людски. Мы собрали самые популярные мифы, вопросы, замечания и решили рассказать, как же работают модераторы на Хабре. Время выйти из сумрака!

Читать далее

Мозг может вспоминать и пробуждать прошлые иммунные ответы

Reading time5 min
Views8.3K

В опубликованной 8 ноября работе нейроиммунологи показали, что иммунный ответ можно вызвать стимуляцией нейронов островковой коры головного мозга. Иными словами, похоже на то, что выявленная И.П. Павловым обусловленность реакций также касается иммунитета. Подробности рассказываем к старту флагманского курса Data Science.

Читать далее

Design Sapiens: путь к дизайн-системе, которой удобно пользоваться

Reading time6 min
Views4.6K

Я UX/UI-дизайнер, уже два года работаю в ISPsystem. Одной из глобальных моих задач все это время было сделать нашу дизайн-систему удобной для использования.Полноценная дизайн-система — с гайдами, состояниями и борьбой с разработчиками — испытание не только для новичка в дизайне, но и для опытного проектировщика. Сейчас мы на пути к идеальной дизайн-системе, но решили поделиться опытом ее проработки - кому-то может помочь избежать наших ошибок :)

Для чего все затевается

ISPsystem создает программное обеспечение для управления IT-инфраструктурой: физическим оборудованием, серверной виртуализацией, веб-сервером и сайтами. Сейчас существует четыре продукта со схожей дизайн-системой (VMmanager, DCImanager, ISPmanager и BILLmanager) и один — со своей собственной (billix).

Читать далее

Information

Rating
3,665-th
Registered
Activity

Specialization

Specialist
SQL