Обновить
1115.42

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

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

Сначала показывать
Период
Уровень сложности

Пять лет назад был запущен Stack Overflow. И тут произошло чудо

Время на прочтение3 мин
Охват и читатели47K
Stack Overflow был официально запущен 15 сентября 2008 года. За пять коротких лет вы ответили более чем на 5 миллионов вопросов на более чем 100 сайтах и это помогло сотням миллионам людей найти необходимые ответы.

Мы хотим услышать ваши истории о том, как кто-то помог вам на Stack Exchange.

«И тут происходит чудо»

Перед тем, как мы запустили бету, на главной странице stackoverflow.com была картинка, которая символизировала то, что мы собирались сделать.
image
Читать дальше →

Нужны ли в JavaScript классы?

Время на прочтение6 мин
Охват и читатели106K
JavaScript принято считать прототип-ориентированным языком программирования. Но, как ни странно, этим подходом практически никто не пользуется: большинство популярных JS-фреймворков явно или неявно оперируют классами.
В этой статье я хочу рассказать об альтернативном способе программирования на JavaScript, без использования классов и конструкторов — чистым прототипным ООП и особенностях его реализации на ECMA Script 5.
Читать дальше →

Реальная оценка или почему наступают дедлайны?

Время на прочтение3 мин
Охват и читатели64K
image

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

Для пущей точности я сделал таблицу, которая помогает перевести программистские оценки в приближенные к реальности.
Читать дальше →

С возрастом разработчики становятся лучше, но их становится меньше

Время на прочтение2 мин
Охват и читатели5.7K
Более молодые программисты иногда спрашивают, технологический прогресс не делает ли меня, как бы, устаревшим. Лично у меня нет проблем со скоростью смены технологий. Мне на самом деле нравится изучать новые вещи.

Но вопрос остаётся тем же: как с годами программисты справляются с атакой всё новых технологий?

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

История ИТ моими глазами

Время на прочтение4 мин
Охват и читатели3.5K

Начиная разработчиком на тогда еще сверх продвинутом IDE от компании Borland, bc++ 3.11, работающая в операционной системе DOS, в которой тогда единственное, чего не хватало — так это поддержки dos4gw (который вышел, если мне не изменяет память, парой годами позже), я любил эту IDE и мне казалось, что на ней можно сделать все что угодно. Была куча драйверов, которые писались энтузиастами, меняющие шрифты консоли, кодировку, была целая система работы с памятью… Прорывом были отгружаемые динамически библиотеки на диск, созданные чтобы вмесить все в память. Сегменты (ну, современные программисты, что такое сегменты оперативной памяти, и откуда 640К?), нижняя память, верхняя память… 640 килобайт… Люди придумывали все новые задачи компьютерам, а гении своего дела эти компьютеры придумывали. И ведь на самом-то деле это не так давно было… Это было почти вчера.
Читать дальше →

Отвлекать разработчиков ПО намного вреднее, чем считает большинство менеджеров

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

После COVID-19 наша культура труда в основном изменилась к лучшему, но были и негативные изменения, например, увеличение количества совещаний на 13,5%[1].

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

В своей знаменитой статье «Maker's Schedule, Manager’s Schedule» [2] Пол Грэм писал:

«Когда работаешь в режиме творца, совещания — это катастрофа. Единственное совещание может поломать день, разделив его на две части, в каждой из которых невозможно сделать ничего достаточно сложного».

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

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

Читать далее

Javascript: базовые вопросы и понятия для самых маленьких

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели54K

Javascript ― язык весьма оригинальный. Его можно любить, ненавидеть и даже бояться, но равнодушным он вас вряд ли оставит. Не знать или не понимать, с чем ты работаешь ― самая частая ошибка, допускаемая современными фронтенд‑разработчиками. Вам бы понравилось, если бы дантист, к которому вы пришли, не понимал, какой он инструмент использует и какие у него особенности работы? Очевидно, что нет. И рано или поздно, если вы действительно хотите стать профессионалами, вы разберётесь во всём, но как сделать так, чтоб это случилось раньше?

В этой статье в блоге ЛАНИТ хотелось бы показать, что о сложных вещах можно и нужно говорить просто.

Читать далее

Ошибки выбора MongoDB в качестве основной БД в стартапе

Время на прочтение6 мин
Охват и читатели42K

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

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

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

На мой взгляд, маркетологи MongoDB приукрасили области применениях БД на своем сайте. MongoDB не универсальная. Далеко не универсальная и даже не пытайтесь на нее смотреть как на решение всех ваших проблем.

Встать на грабли вместе

Нельзя так просто взять и вычислить абсолютное значение

Время на прочтение4 мин
Охват и читатели36K

Кажется, задача вычисления абсолютного значения (или модуля) числа совершенно тривиальна. Если число отрицательно, давайте сменим знак. Иначе оставим как есть. На Java это будет выглядеть примерно так:


public static double abs(double value) {
  if (value < 0) {
    return -value;
  }
  return value;
}

Вроде бы это слишком просто даже для вопроса на собеседовании на позицию джуна. Есть ли тут подводные камни?

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

Валидация UTF-8 меньше чем за одну инструкцию на байт

Время на прочтение9 мин
Охват и читатели25K


Даниэль Лемир – профессор Заочного квебекского университета (TÉLUQ), придумавший способ очень быстро парсить double – совместно с инженером Джоном Кайзером из Microsoft опубликовали ещё одну свою находку: валидатор UTF-8, обгоняющий библиотеку UTF-8 CPP (2006) в 48..77 раз, ДКА от Бьёрна Хёрманна (2009) – в 20..45 раз, и алгоритм Google Fuchsia (2020) – в 13..35 раз. Новость об этой публикации на хабре уже постили, но без технических подробностей; так что восполняем этот недочёт.
Читать дальше →

Объясните мне, как вы для себя разобрались в моделях типизаций — они же все размыты

Время на прочтение7 мин
Охват и читатели40K


Когда я был начинающим, я мог писать простые приложения на C# и C++. Долго игрался с консольными прогами, пощупал десктопные, и в какой-то момент захотел сделать сайт. Меня ждал большой сюрприз — чтобы делать сайты, одного сишарпа мало. Надо ещё знать жс, хтмл, цсс и прочую фронтовую хрень. Я потратил около недели на эти вещи, и понял — не мое. Я мог написать какой то код на джаваскрипт, но он не содержал типов, и я никак не мог взять в толк — как к этому вообще подходить. Это какое-то игрушечное программирование. Ну и забросил к чертям.


Уже потом, работе на третьей, меня перевели в отдел, где делали веб. Я подумывал уволиться, но мне объяснили — там тайпскрипт, тайпскрипт — это такой сишарп для браузера.


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

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

Программирование и стриптиз

Время на прочтение1 мин
Охват и читатели99K


Новость недели в мире программирования: запущен сайт Code Babes. Многие уже окрестили этот проект худшим событием в истории. Суть Code Babes заключается в привнесении развлечения в процесс обучения программированию с помощью сексуальной составляющей. Каждый раз, когда вы выполняете предложенное задание, выбранная вами «дама» снимает одну часть своего гардероба. Мотивация подобной «игры на раздевание» ясна каждому.


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

Встречайте: IntelliJ IDEA 13

Время на прочтение5 мин
Охват и читатели71K

Что у нас было в 2013


Одна из самых радостных для нас новостей в 2013 году прозвучала на Google I/O: Google анонсировал preview-версию Android Studio, новую среду разработки приложений под Android. Android Studio разрабатывается в сотрудничестве с JetBrains на основе IntelliJ IDEA Community Edition. IntelliJ IDEA 13 — это первый мажорный релиз, включающий в себя то новое, что возникло в результате этого сотрудничества.

Этой весной мы сделали и поддержку новой Java 8.

Мы остаемся привержены идее вдумчивой интеграции одних наших инструментов с другими: например, мы обновили плагины для совместной работы IntelliJ IDEA с TeamCity, продолжаем разрабатывать наши новые продукты, используя опыт создания платформы IntelliJ. Так, в сентябре 2013 мы анонсировали наш новый продукт — UpSource, серверную платформу для работы с кодом в браузере с присущими нашим инструментам возможностями: навигацией, find usages, показом изменений в коде и анализом кода.

И сегодня… Буквально пять минут назад… Па-пам! Мы выпустили IntelliJ IDEA 13.



Осторожно! Дальше - несколько видео на английском и много скриншотов!

Ближайшие события

Тьюринговская трясина

Время на прочтение4 мин
Охват и читатели6K
Бойтесь Тьюринговской трясины, в которой всё возможно, но ничего конкретного нельзя сделать просто.
Алан Перлис

Что такое Тьюринговская трясина? Это состояние, в котором программа становится столь могущественной, столь обобщенной, что усилия по решению с её помощью какой-либо конкретной задачи равны или превосходят затраты на написание с нуля программы, которая решает только данную задачу.
Читать дальше →

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

Время на прочтение7 мин
Охват и читатели27K

Музыканты - ребята творческие. И называют они себя и свои произведения тоже творчески. Иногда так заковыристо, что программистам стримингов и музыкальных сервисов остается только посочувствовать.

Вот, казалось бы, что может быть проще: создать базу треков и исполнителей. Пишем имя артиста/группы, название альбома, список треков и даем возможность по ним искать. Но потом натыкаемся на исполнителя Prince, который изменил своё имя на знак, который не существует и начинаем печалиться, потому что непонятно, как его искать после переименования. Фанаты вроде как нашли выход и предложили использовать 4 спец.символа юникода Ƭ̵̬̊, что тоже похоже на костыль, а задавать старое имя как псевдоним, вроде как концептуально неправильно. Ну или попадаются металлюги Brouillard, у которых каждый альбом называется так же - Brouillard. А каждый трек внутри альбома имеет такое же название.

Но это еще цветочки, потому дальше тесты целостности библиотеки начинают падать, так как в ней попадаются треки длиной либо одну секунду, либо 639 часов. Ну или встречаются треки с нулевым номером, потому что это так называе "секретные" композиции, которые можно было найти включением первого трека и переключением плеера назад. Как вы понимаете, сегодня мы поговорим о музыкальных edge-случаях. Заходите, будет интересно.

Читать далее

Вайбовый панк

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

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

Я теперь на таски скор — у меня же есть Курсор.
Я на ём вайб код лабаю всем олдам наперекор.
Любой челендж для меня нынче полная фигня.
А-а-а!!! Вайбовый кодер я!

Читать далее

Как я Капсулу Нео от VK исследовал

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

Всем привет!

Исправления давно в проде, а конфа OFFZONE 2024, на которой я выступил с этим докладом, закончилась — пришло время и на Хабре рассказать об исследовании умного девайса от VK под названием «Капсула Нео» (далее — «Капсула»).

О том, что мне удалось найти и с чем пришлось столкнуться за время проекта, читайте под катом.

Исследование шаг за шагом

17 убойных репозиториев GitHub, которые нужно сохранить

Время на прочтение6 мин
Охват и читатели155K

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

Читать далее

Встраиваем бэкдор в публичный ключ RSA

Время на прочтение4 мин
Охват и читатели114K

Привет, %username%!
Когда я увидел, как это работает, сказать, что я был в шоке — ничего не сказать. Это довольно простой трюк но после прочтения этой статьи вы больше никогда не будете смотреть на RSA по-прежнему. Это не взлом RSA, это нечто, что заставит вашу паранойю очень сильно разбухнуть.
Читать дальше →

Топ-10 результатов в области алгоритмов за 2012 год

Время на прочтение4 мин
Охват и читатели50K
Каждый год 31 декабря David Eppstein публикует обзор препринтов за прошедший год, посвященных структурам данных и алгоритмам, опубликованным на arxiv.org. По ссылкам можно познакомиться с материалами за 2010 и 2011 (мой перевод) годы.

Раздел cs.DS развивается хорошими темпами: в этом году появилось 935 препринтов по алгоритмам и структурам данных, в то время как за 2011 их было 798. Раздел пока не дотягивает до сотни в месяц, хотя в июле (98 препринтов) этот порог был очень близок.

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

Вот они, в хронологическом порядке:
Читать дальше →

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