Как стать автором
Поиск
Написать публикацию
Обновить
0
@Sergey2aread⁠-⁠only

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

Отправить сообщение

Дональд Кнут: как я занялся анализом алгоритмов и ради этого поехал в СССР (37,91,97/97)

Время на прочтение10 мин
Количество просмотров32K
«Андрей (Ершов), представь, как было бы здорово организовать что-то вроде паломничества, где программисты со всего мира могли бы приехать в Хорезм и отпраздновать рождение этого понятия.»
— Дональд Кнут уговаривает Ершова организовать международный симпозиум

image
Кнут и Ершов

Осенью 1967 в Санта-Барбаре была конференция математиков, возможно, это был тот же год, когда я также побывал на конференции в Чапел-Хилле. Я встречал многих людей, которые стимулировали меня, и было множество интересных проблем, которые нам стоило обсудить друг с другом. Но когда я добрался до конференции в Санта-Барбаре, я понял, что это мой единственный шанс заняться исследованиями. Я не посещал лекции. Я просто сидел на берегу и писал свою статью об атрибутной грамматике прямо во время конференции. Но я посещал обеды. Я помню, как кто-то спросил меня, чем я занимаюсь и я решил побыть программистом, а не математиком в тот момент.

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

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

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

С 1945 года в каждом британском танке есть оборудование для приготовления чая. Один из представителей Boiling Vessel.

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

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

Черный ящик для дома: собираем NAS своими руками, часть 1

Время на прочтение17 мин
Количество просмотров271K
Будь я работником макаронной фабрики, то сейчас ломал бы голову над тем, куда девать этак 500 упаковок макарон по полкило штука. К счастью, когда начальство решает премировать сисадмина “натурой”, получение в подарок фургона сухого пайка не грозит, хотя имеются неплохие шансы стать обладателем нескольких десятков килограмм откровенного лома. Однако в этот раз мне повезло – в качестве корпоративного подарка я получил пару новеньких WD Re 2004FBYZ на 2 терабайта каждый, и блок питания Thermaltake Smart DPS G 750W. Вот только что делать с дисками? Ставить в домашний комп – слишком расточительно даже для меня, все-таки Enterprise Class, да и нужды особой нет. Куда практичнее на их основе собрать NAS. Разумеется, не какую-нибудь файлопомойку, а высоконадежное хранилище – эдакий “черный ящик” для критически важных данных. Плюс к этому, можно совместить приятное с полезным – раз уж принято решение целиком перевести инфраструктуру на “умные” БП (а именно так Thermaltake позиционирует линейку Smart DPS), неплохо бы воочию увидеть, как это работает.

Но есть одна загвоздка – на данный момент фирменное приложение существует только под Windows. Для корпоративного ЦОДа эта операционная система хороша, но для домашнего файлового хранилища ужасна и крайне нерентабельна. Посему, я решил сделать два поста. В этом мы поднимем NAS на основе Windows Server 2008 r2 (убедившись, что “окошки” и “домашний NAS” – понятия несовместимые), и посмотрим, на что способна DPS G App 2.0. Во втором же соберем бюджетный NAS на основе NAS4Free, создав по-настоящему надежную систему.
Читать дальше →

UX-дизайн в мобильном приложении: запрос об оценке приложения

Время на прочтение5 мин
Количество просмотров19K
image

«Оцените это приложение!» Этим всплывающим диалоговом окном уже никого не удивишь, каждый день оно попадается мне на глаза. Подобные запросы сильно раздражают во многих мобильных приложениях:

image

Данный ленивый подход раскритикован Джоном Грубером, вот что он сказал о Daring Fireball:
Читать дальше →

UX-дизайн кнопки: советы по созданию, типы и состояния

Время на прочтение6 мин
Количество просмотров175K
Ник Бабич разработчик, UX/UI специалист написал заметку в блоге UX Planet про UX-дизайн кнопки: советы по созданию, типы и состояния. Наша команда выполнила перевод данной статьи

image

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

Советы по созданию кнопок


Кнопки должны выглядеть как кнопки

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

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

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

Время на прочтение6 мин
Количество просмотров19K
image

Талантливый Ник Бабич разработчик, UX/UI специалист поделился своим опытом в блоге UX Planet про Улучшение опыта взаимодействия за счет использования карточек в дизайне. Наша команда выполнила перевод данной статьи.

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

Независимо от того, как вы относитесь к этой концепции, карточки теперь с нами надолго.

Что такое карточки?


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

10 полезных сайтов с 2D ресурсами для игр

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


С развитием HTML5 и мобильных платформ 2D-игры возвращаются в моду. Заниматься такими проектами, будь то браузерные игры, игры на телефон или для ПК, стало легче благодаря таким инструментам, как Unity, и онлайн-ресурсам с игровыми ассетами. Ниже представлен список из 10 лучших сайтов с 2D-ресурсами для игр – как платными, так и бесплатными.

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

Овладение Coordinator Layout

Время на прочтение7 мин
Количество просмотров213K
На презентации Google I/O 15, компания Google представила новую версию библиотеки поддержки которая реализует несколько компонентов, сильно связанных со спецификациями Material Design, среди этих компонентов вы можете найти новые типы ViewGroup такие как AppbarLayout, CollapsingToolbarLayout и CoordinatorLayout.

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

Диванный маркетинг мобильной игры, часть 2 (паблики ВК, платные обзоры, cross-promo)

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


Тем временем мы продолжаем скромные эксперименты с бюджетным продвижением своих мобильных поделок в России и делимся с вами цифрами. В этот раз попытаемся раскачать небольшую, но гордую киновикторину параллельно в GooglePlay и AppStore, попутно ответив на такие вопросы:

  • Повезло нам в прошлый раз или схема действительно работает?
  • Реклама в Пабликах ВК — стоит ли использовать? Средняя цена установки?
  • Обзоры на отечественных сайтах — есть ли смысл? Цены?
  • Конверсия игроков из одной игры в другую?

Спойлер

ICQ Contest. Итоги конкурса на редизайн мобильного приложения

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


В начале декабря мы анонсировали мегаконкурс на редизайн мобильной ICQ. С каждым днем он набирал обороты, работы поступали все интенсивнее, и к завершению, 21-го февраля, у нас уже было 88 работ! Мы получили несколько интересных интерфейсных и идеологических решений по видеосвязи, и бонусом любопытные параллели с трендовыми сервисами. Было также и сказочное безумие с радужными единорогами в космосе, которого мы с нетерпением ожидали.
ОСТОРОЖНО, ТРАФИК

Архитектура Stack Overflow

Время на прочтение12 мин
Количество просмотров58K
image

Чтобы понять, как все это работает, давайте начнем с показателей Stack Overflow. Итак, ниже приводится статистика за 12 ноября 2013 и 9 февраля 2016 года:

статистика
  • 209,420,973 (+61,336,090) HTTP-запросов к нашему балансировщику нагрузки;
  • 66,294,789 (+30,199,477) страниц было загружено;
  • 1,240,266,346,053 (+406,273,363,426) битов (1.24 TБ) отосланного HTTP-трафика;
  • 569,449,470,023 (+282,874,825,991) битов (569 ГБ) всего получено;
  • 3,084,303,599,266 (+1,958,311,041,954) битов (3.08 ТБ) всего отослано;
  • 504,816,843 (+170,244,740) SQL-запросов (только из HTTP-запросов);
  • 5,831,683,114 (+5,418,818,063) обращений к Redis;
  • 17,158,874 (not tracked in 2013) поисков в Elastic;
  • 3,661,134 (+57,716) запросов Tag Engine;
  • 607,073,066 (+48,848,481) мс (168 часов) выполнения SQL-запросов;
  • 10,396,073 (-88,950,843) мс (2.8 часов) затрачено на обращение к Redis;
  • 147,018,571 (+14,634,512) мс (40.8 часов) затрачено на запросы к Tag Engine;
  • 1,609,944,301 (-1,118,232,744) мс (447 часов) затрачено на обработку в ASP.Net;
  • 22.71 (-5.29) мс в среднем (19.12 мс в ASP.Net) на формирование каждой из 49,180,275 запрошенных страниц;
  • 11.80 (-53.2) мс в среднем (8.81 мс в ASP.Net) на формирование каждой из 6,370,076 домашних страниц.


Вы можете спросить, почему существенно сократилась продолжительность обработки в ASP.Net по сравнению с 2013 годом (когда было 757 часов) несмотря на прибавление 61 миллиона запросов в день. Это произошло как и из-за модернизации оборудования в начале 2015 года, так и из-за некоторого изменения параметров в самих приложениях. Пожалуйста, не забывайте, что производительность – это наша отличительная особенность. Если Вы хотите, чтобы я более подробно рассказал о характеристиках оборудования – без проблем. В следующем посте будут подробные спецификации железа всех серверов, которые обеспечивают работу сайта.

Итак, что изменилось за прошедшие 2 года? Кроме замены некоторых серверов и сетевого оборудования, не очень многое. Вот укрупненный список хардварной части, которая обеспечивает работу ресурса (выделены различия по сравнению с 2013 годом):

  • 4 Microsoft SQL Servers (новое железо для 2-х из них);
  • 11 Web-серверов IIS (новое оборудование);
  • 2 сервера Redis (новое оборудование);
  • 3 сервера Tag Engine (новое оборудование для 2-х из 3-х);
  • 3 сервера Elasticsearch (те же, старые);
  • 4 балансировщика нагрузки HAProxy (добавлено 2 для поддержки CloudFlare);
  • 2 брандмауэра Fortinet 800C (вместо Cisco 5525-X ASAs);
  • 2 маршрутизатора Cisco ASR-1001 (вместо маршрутизаторов Cisco 3945);
  • 2 маршрутизатора Cisco ASR-1001-x (новые!).

Что нам необходимо, чтобы запустить Stack Overflow? Этот процесс не сильно изменился с 2013 года, но из-за оптимизации и нового железа, нам необходим только один web-сервер. Мы этого не хотели, но несколько раз успешно проверили. Вношу ясность: я заявляю, что это работает. Я не утверждаю, что это (запуск SO на единственном web-сервере) — хорошая затея, хотя каждый раз выглядит весьма забавно.
Читать дальше →

Проблемы при использовании Math.random()

Время на прочтение18 мин
Количество просмотров46K
image

В английском есть такая аббревиатура — TIFU. Привести здесь её точное значение мы не можем, но вы без труда найдёте его в Сети. А после «литературной обработки» TIFU можно перевести как «сегодня я всё испортил». В контексте этого поста данная фраза относится к использованию функции Math.random() в JavaScript-движке V8. Хотя случилось это не сегодня, а пару лет назад. Да и дров я наломал не по своей вине, корень зла таится в самой этой функции.

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

Дональд Кнут, «Искусство программирования», том 2.

Надеюсь, что к концу этого поста вы согласитесь с двумя утверждениями:

  • Мы были идиотами, поскольку использовали генератор псевдослучайных чисел в V8, не понимая его ограничений. И если очень лень, то безопаснее использовать криптографически стойкие генераторы псевдослучайных чисел.
  • В V8 необходима новая реализация Math.random(). Работу текущего алгоритма, кочующего от одного программиста к другому, нельзя считать удовлетворительной из-за слабой, неочевидной деградации, часто встречающейся в реальных проектах.

Хочу подчеркнуть, что сам движок V8 — замечательный продукт и его создатели очень талантливы. Я ни в коей мере не обвиняю их. Просто эта ситуация иллюстрирует, насколько сильно влияют на процесс разработки даже небольшие нюансы.
Читать дальше →

Диванный маркетинг мобильной игры (120.000 установок в первый месяц. Совпадение?)

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

Часто ли вам приходилось слышать фразы “я не собираюсь тратить ни копейки на продвижение”, “хорошая игра сама себя продаёт”, “у тех парней получилось, и у меня получится”, а чуть позже — “игра не пошла”, “на рынке нет места независимому одиночке”, “золотое время инди-игр прошло”?

Всем хочется верить в успех своей игры, что уж она-то ворвётся в топы и станет новым хитом, несущим свет людям и процветание разработчикам. Но при этом никто не спешит рисковать деньгами, чтобы помочь игре взять хороший старт. “А вдруг не полетит?”, “Я не разбираюсь в маркетинге!”, “Я разработчик, я не хочу ничего продвигать, хочу чик-чик и в продакшен!”

Мне никогда не нравился такой подход, поэтому на старте мы немного потратились на неумелый “диванный” маркетинг. И наша первая игра не провалилась. Отбила затраты, заработала сверху, получила отличные отзывы — 5 звезд в (AppStore) и 4.7 в (GooglePlay), и даже спустя 9 месяцев не спешит отправляться в “Долину Смерти” приложений. Но сейчас, видя такой отклик аудитории, появляются сомнения — а действительно ли был толк в нашей небольшой “PR-кампании” или нам просто повезло? Ошибка выжившего? Совпадение? Может, попав в топ новинок GooglePlay, мы бы и так нашли своих игроков?

Я изложу факты, покажу графики и цифры, а выводы предлагаю сделать вместе в комментариях — раскрутилась бы игра сама или всё-таки без продвижения никто бы о ней не узнал?
Читать дальше →

Как мы сделали ABBYY FineReader, или история, произошедшая 20 лет назад

Время на прочтение7 мин
Количество просмотров30K
ABBYY FineReader – программа для распознавания текстов, которая в России известна многим ещё со студенческих времён. В этом году FineReader исполняется 22 года, он немного моложе нашего словаря Lingvo. Как так вышло, что вместе со словарём молодые программисты из BIT Software (в то время ABBYY называлась именно так) занялись распознаванием текстов? И что помогло Файну стать одной из самых узнаваемых на рынке программ?

На самом деле, всё очень логично. Если бы не Lingvo, FineReader’а могло бы и не быть. Началось всё с масштабного и амбициозного комплекса под названием Lingvo Systems. С его помощью человек мог отсканировать текст на одном языке, пропустить его через программу и получить перевод, правда, черновой, но для понимания смысла его было достаточно.
Читать дальше →

Время материализоваться: конкурс по Material Design от Google

Время на прочтение3 мин
Количество просмотров24K
Привет, Хабрахабр! Сегодня у нас для вас очень приятные новости. Как вы все, наверное, знаете, в Android 5.х и его последователе, Android 6.0 Marshmallow используется новое оформление. Концепция Material Design была представлена на Google I/O 2014 и получила позитивный отклик не только среди дизайнеров и разработчиков приложений, но и среди пользователей.



На сегодняшний день более 200 тысяч приложений в Google Play переработаны с учётом гайдлайнов по Material Design. Если и вы уже обновили свое приложение в Google Play до Material Design или же планируете это сделать в ближайщее время, то принимайте участие в конкурсе по Material Design, который стартовал на этой неделе и продлится до 15 ноября. Разыгрываем: размещение вашего приложения в разделе featuring магазина Google Play, билеты на ежегодную конференцию Google I/O и планшеты Nexus 9. Мы выберем по три лучших приложения в трёх категориях. Подробности в правилах конкурса.
А вот как мы можем вам помочь в подготовке к конкурсу

Высоконагруженное приложение на java

Время на прочтение4 мин
Количество просмотров29K
Хотелось бы добавить по поводу высоконагруженных систем на java относительно этой статьи. В комментариях писать слишком много, поэтому напишу отдельно. Подход не совсем программиста, но может кому пригодится. Это только мое мнение, возможно, оно где-то неверно.

Платформа JEE


Конечно на стандартной java ваше приложение будет работать быстрее, потреблять меньше памяти, и вы можете сделать архитектуру именно такой, как вам нужно. Но это при том условии, что у вас неограниченное количество человеко-часов, и вы каждый день пишете такую ерунду как приложение на 100к клиентов. В противном случае для этого потребуется очень много времени и итераций, и в итоге все равно получиться чуточку хуже, чем то, как это реализовано в современных JEE серверах. Все промахи всплывут только под реальной нагрузкой, и архитектуру приложения придется переделывать не один раз.
Читать дальше →

У нас проблемы с промисами

Время на прочтение16 мин
Количество просмотров245K
Разрешите представить вам перевод статьи Нолана Лоусона «У нас проблемы с промисами», одной из лучших по теме из тех, что мне доводилось читать.

У нас проблемы с промисами


Дорогие JavaScript разработчики, настал момент признать это — у нас проблемы с промисами.

Нет, не с самими промисами. Их реализация по спецификации A+ превосходна. Основная проблема, которая сама предстала передо мной за годы наблюдений за тем, как многие программисты борются с богатыми на промисы API, заключается в следующем:

— Многие из нас используют промисы без действительного их понимания.

Если вы мне не верите, решите такую задачку:

Вопрос: В чем разница между этими четырьмя вариантами использования промисов?

doSomething().then(function () {
  return doSomethingElse();
});

doSomething().then(function () {
  doSomethingElse();
});

doSomething().then(doSomethingElse());

doSomething().then(doSomethingElse);

Узнайте решение задачи

<input> Я ♥ тебя, но ты меня обламываешь

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

Привет, представляю твоему вниманию перевод статьи Моники Динкулеску '<input> I ♡ you, but you're bringing me down'. Художественный перевод с английского не является моей основной специализацией, поэтому в тексте возможны неточности. Правки призываю отправлять личным сообщением, а если есть что сказать, велкам в комментарии. Отдельное спасибо @Kt за редакторские правки. Приятного чтения.


Некоторые люди делают мебель. Некоторые люди вяжут. Некоторые люди имеют хобби, которые никак не пересекаются с HTML спецификациям из 90-х. Но я не из таких. И, вот история о том, как <input> стал той хренью, которой он является, и почему его надо сжечь


Ранние годы



1995 был клевым годом. Друзья, Скорая Помощь, Зена по телеку. TLC занимали верхушки чартов с хитом "Waterfalls". С браузерами было нормуль, потому что HTML было все очень нормуль. У нас были Mosaic, Netscape и IE1, а при утверждении спеков HTML 2, наконец, выкроили время для стандартизации форм. Девяносто пятый был годом рождения <input>, и теперь, когда он достаточно взрослый, чтобы покупать в магазине алкоголь, нам нужно поговорить.
Продолжить чтение статьи

Балансировка 70 тысяч запросов в секунду на HighLoad++

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

Библиотека докладов


Это не просто статья — это целая библиотека докладов про внутреннее устройство тех или иных крупных и высоконагруженных проектов. Все эти доклады звучали на конференциях HighLoad++ и РИТ++ за последние несколько лет.


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

«Фантом человека» откроет широкие возможности перед медиками. Труп женщины разрезали на 5 000 частей и отсканировали

Время на прочтение1 мин
Количество просмотров27K
Тело супруги 20 лет назад пожертвовал вдовец, и несколько дней назад завершился процесс оцифровки фрагментов. Труп женщины 59-ти лет, скончавшейся от ожирения, разрезали на 5 000 кусочков размером 0,33 мм, и теперь, по мнению медиков, это откроет новые возможности, в том числе для опытов, проведение которых небезопасно для живого человека.



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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность