Как стать автором
Обновить
15
0

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

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

Разработчик с мозгом груга

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

Введение


это сборник мыслей о разработке программ собранный разработчиком с мозгом груга

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

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

разработчиков с большим мозгом много, некоторым страница не понравится, скривят кислая рожа

Ещё больше-больше ДУМАЮТ, что они разработчики с большим мозгом и им она тоже не понравится

(груг раньше думал груг с большим мозгом, но потом всё понял)

это ладно!

груг надеется, что тебе понравится читать и может ты научишься на много-много ошибка груг совершил за длинную жизнь программиста
Читать дальше →
Всего голосов 261: ↑235 и ↓26 +209
Комментарии 81

Алгоритмы на кристалле. Глава 1 (продолжение). Схемы простейших устройств

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


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

Предыдущие черновики:
… Примерное оглавление.
… Вычислительная модель.
… Быстродействие логических схем.

Возможно, в вашем браузере с первого раза не будут правильно отображаться формулы. Если так, попробуйте перезагрузит страницу — на моем компьютере этот фокус работает.
Желаю приятного чтения.
Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 31

Алгоритмы на кристалле. Глава 1 (продолжение): Быстродействие элементарных схем

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

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

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

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

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

Приятного чтения.
Читать дальше →
Всего голосов 12: ↑9 и ↓3 +6
Комментарии 52

Алгоритмы на кристалле. Глава 1: Вычислительная модель

Время на прочтение 23 мин
Количество просмотров 9K
Примерное оглавление всей книги тут.
Следующая статья этого цикла.
Возможно, в вашем браузере с первого раза не будут правильно отображаться формулы. Если так, попробуйте перезагрузит страницу — на моем компьютере этот фокус работает

Пара слов о том, что мы будем изучать.


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


Какая-то плата. Источник фото ukrmarket.net

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

Конечно, чтобы уметь проектировать микросхему и потом быть в состоянии рассуждать о ее работе, нам потребуется какая-то более-менее точная теория. Созданием такой теории мы сейчас и займемся. Если кто-то из читателей переживает, что он не знает или забыл, где у транзистора база, а где эмиттер, я спешу его успокоить – эти знания нам даже не понадобятся. Рассуждения в книге будут относиться к концептуально более простому и высокому уровню: уровню логических блоков.
Читать дальше →
Всего голосов 28: ↑25 и ↓3 +22
Комментарии 45

Как устроены облака Яндекса: Elliptics

Время на прочтение 5 мин
Количество просмотров 47K
За последние несколько лет в мире IT появилась модная тенденция – использование всего «облачного» для разработки новых продуктов. Публичных облачных провайдеров не так много, самый популярных среди них – Amazon. Однако многие компании не готовы доверять приватные данные кому-либо, при этом хотят хранить их надежно, и поэтому поднимают частные небольшие облачка.

Любое облако состоит из двух основных компонентов: Единой Точки Входа (ЕТВ) и Облачной Магии (ОМ). Рассмотрим облачное хранилище Amazon S3: в роли ЕТВ используется довольно удобный REST API, а Облачную Магию обеспечивают эльфы, работающие на долларах. Компании, желающие разместить в S3 небольшие видеофайлы или базу данных, предварительно считают на калькуляторе сумму, которую они будут платить в месяц при планируемой нагрузке.

Эта статья про другое облачное хранилище, в котором эльфы питаются Духом Свободы, электричеством и еще им нужно немножечко «кокаина».

Называется это хранилище Elliptics.
Есть желающие стать Повелителями Облаков? Прошу под кат.
Всего голосов 94: ↑89 и ↓5 +84
Комментарии 61

Удаленная работа — это не «фриланс»

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


Сегодня на глаза попался старый вопрос "Почему работодатель предпочитает нанимать веб-разработчика в офис?": habrahabr.ru/qa/22292. Вопрос был задан еще в 2012 году, но, на мой взгляд, ситуация с тех пор не сильно изменилась.

Коллеги, тут есть серьезное недопонимание, которое давно пора устранить.

Многие, как мне кажется, представляют себе фрилансера примерно так:
  • Приходит на какую-то отдельную небольшую задачу, выполняет ее и уходит.
  • Работает над несколькими мелкими проектами одновременно. Либо имеет постоянную работу, а фрилансером просто подрабатывает в оставшееся время.
  • Его не беспокоит проект в целом. Только то, за что он отвечает.
  • Огораживает себя техническими заданиями. И из-за каждой новой плюшки может возникнуть конфликт.
  • Работает когда хочет. С ним сложно связаться.

А на самом деле
Всего голосов 282: ↑265 и ↓17 +248
Комментарии 475

Джефф Дин из компании Google — это Чак Норрис нашего времени

Время на прочтение 4 мин
Количество просмотров 220K
«Джефф Дин компилирует и запускает свой код перед коммитом, но только чтобы проверить на баги компилятор и CPU», — вот один из множества шуточных фактов о Джеффе Дине.

Джефф Дин считается кем-то вроде Чака Норриса. Отличие только в том, что он вовсе не герой боевиков, а инженер-программист компании Google.

Шутки о нём впервые появились на 1 апреля шесть лет назад. Один из коллег Дина по имени Кентон Варда открыл страничку, куда каждый мог добавлять факты о Джеффе Дине. Идею с энтузиазмом подхватили другие разработчики — и вскоре наполнили страничку множеством таких «фактов».
Читать дальше →
Всего голосов 395: ↑364 и ↓31 +333
Комментарии 122

Моноиды и их приложения: моноидальные вычисления в деревьях

Время на прочтение 20 мин
Количество просмотров 23K
Приветствую, Хабрахабр. Сегодня я хочу, в своём обычном стиле, устроить сообществу небольшой ликбез по структурам данных. Только на этот раз он будет гораздо более всеобъемлющ, а его применения и практичность — простираться далеко в самые разнообразные области программирования. Самые красивые применения, я, конечно же, покажу и опишу непосредственно в статье.

Нам понадобится капелька абстрактного мышления, знание какого-нибудь сбалансированного дерева поиска (например, описанного мною ранее декартова дерева), умение читать простой код на C#, и желание применить полученные знания.

Итак, на повестке сегодняшнего дня — моноиды и их основное применение для кеширования вычислений в деревьях.

Моноид как концепция


Представьте себе множество чего угодно, множество, состоящее из объектов, которыми мы собираемся манипулировать. Назовём его M. На этом множестве мы вводим бинарную операцию, то есть функцию, которая паре элементов множества ставит в соответствие новый элемент. Здесь и далее эту абстрактную операцию мы будем обозначать "⊗", и записывать выражения в инфиксной форме: если a и b — элементы множества, то c = ab — тоже какой-то элемент этого множества.

Например, рассмотрим все строки, существующие на свете. И рассмотрим операцию конкатенации строк, традиционно обозначаемую в математике "◦", а в большинстве языков программирования "+": "John""Doe" = "JohnDoe". Здесь множество M — строки, а "◦" выступает в качестве операции "⊗".
Или другой пример — функция fst, известная в функциональных языках при манипуляции с кортежами. Из двух своих аргументов она возвращает в качестве результата первый по порядку. Так, fst(5, 2) = 5; fst("foo", "bar") = "foo". Безразлично, на каком множестве рассматривать эту бинарную операцию, так что в вашей воле выбрать любое.

Далее мы на нашу операцию "⊗" накладываем ограничение ассоциативности. Это значит, что от неё требуется следующее: если с помощью "⊗" комбинируют последовательность объектов, то результат должен оставаться одинаковым вне зависимости от порядка применения "⊗". Более строго, для любых трёх объектов a, b и c должно иметь место:
(ab) ⊗ c = a ⊗ (bc)
Легко увидеть, что конкатенация строк ассоциативна: не важно, какое склеивание в последовательности строк выполнять раньше, а какое позже, в итоге все равно получится общая склейка всех строк в последовательности. То же касается и функции fst, ибо:
fst(fst(a, b), c) = a
fst(a, fst(b, c)) = a
Цепочка применений fst к последовательности в любом порядке всё равно выдаст её головной элемент.

И последнее, что мы потребуем: в множестве M по отношению к операции должен существовать нейтральный элемент, или единица операции. Это такой объект, который можно комбинировать с любым элементом множества, и это не изменит последний. Формально выражаясь, если e — нейтральный элемент, то для любого a из множества имеет место:
ae = ea = a
В примере со строками нейтральным элементом выступает пустая строка "": с какой стороны к какой строке её ни приклеивай, строка не поменяется. А вот fst в этом отношении нам устроит подлянку: нейтральный элемент для неё придумать невозможно. Ведь fst(e, a) = e всегда, и если ae, то свойство нейтральности мы теряем. Можно, конечно, рассмотреть fst на множестве из одного элемента, но кому такая скука нужна? :)

Каждую такую тройку <M, ⊗, e> мы и будем торжественно называть моноидом. Зафиксируем это знание в коде:
public interface IMonoid<T> {
    T Zero { get; }
    T Append(T a, T b);
}

Больше примеров моноидов, а также где мы их, собственно, применять будем, лежит под катом.
Читать дальше →
Всего голосов 127: ↑124 и ↓3 +121
Комментарии 27

Открылась бета-версия новых Яндекс.Карт: как и почему мы их делали

Время на прочтение 4 мин
Количество просмотров 66K
Сегодня мы запускаем бета-версию Карт. Это начало долгого пути по созданию нового интерфейса Яндекс.Карт с нуля. Можно сказать, что это третий решительный виток в его истории. На примере этого запуска я попробую поделиться с вами видением того, как можно организовать создание сложного пользовательского продукта с кучей различных требований.

image

Интерфейс Яндекс.Карт — сложное одноэкранное суперинтерактивное приложение в браузере: куча кнопочек, карта интерактивная, поиск — вы как пользователь нажимаете на кнопки, что-то происходит на экране. С ростом функциональности мы пришли к ряду проблем в интерфейсе, которые уже невозможно лечить по отдельности. Нужен какой-то решительный шаг, который поможет не только вылечить текущие проблемы, но и сделать так, чтобы сервис был готов к росту числа фич, аудитории, скорости внешних и внутренних изменений. Именно поэтому мы придумали бету: не ломая привычки пользователей, разработали новую версию, чтобы хорошенько её протестировать и только потом переключить на неё пользователей.
Читать дальше →
Всего голосов 97: ↑88 и ↓9 +79
Комментарии 155

Runnable: поисковик по коду с его исполнением в VM

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


Бывший сотрудник Amazon запустил поисковик по исходному коду Runnable.com, который отличается уникальной особенностью: он не только ищет код, но и исполняет его в виртуальной машине EC2 прямо в результатах поиска. Более того, можно собственноручно внести изменения в код — и снова запустить его, чтобы посмотреть результаты.
Читать дальше →
Всего голосов 38: ↑34 и ↓4 +30
Комментарии 10

Wi-Fi Mesh сети для самых маленьких

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


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

Сегодня мы поговорим о:
  • Что такое Mesh Wi-Fi
  • Полноценная Mesh Wi-Fi сеть
  • Зачем такие сети нужны
  • Какие проблемы решает эта технология
  • Плюсы и минусы Mesh сетей
  • Какие технологии и протоколы используются
  • Сравнительная таблица Mesh протоколов
  • Mesh сети и органы власти

Читать дальше →
Всего голосов 93: ↑85 и ↓8 +77
Комментарии 356

Аппаратная виртуализация. Теория, реальность и поддержка в архитектурах процессоров

Время на прочтение 23 мин
Количество просмотров 75K
В данном посте я попытаюсь описать основания и особенности использования аппаратной поддержки виртуализации компьютеров. Начну с определения трёх необходимых условий виртуализации и формулировки теоретических оснований для их достижения. Затем перейду к описанию того, какое отражение теория находит в суровой реальности. В качестве иллюстраций будет кратко описано, как различные вендоры процессоров различных архитектур реализовали виртуализацию в своей продукции. В конце будет затронут вопрос рекурсивной виртуализации.
Читать дальше →
Всего голосов 46: ↑45 и ↓1 +44
Комментарии 6

dCache — xранилище, где живёт ХИГГС

Время на прочтение 3 мин
Количество просмотров 6.9K
В последнее время было большое количество постов о ЦЕРНе и Большом Адронном Kоллайдере (БАК или LHC). Но не многие знают, что БАК производит ~20 ПБ данных в год. Порядка 50% всех данных хранится в dCache.

dCache является распределённой системой хранения данных, способной работать на обычном железе, с возможностью расширения посредсвом добавления новых узлов. Всё, что нужно для работы на узле, — это JVM (так как всё написано на джаве) и файловая система, где, собственно, и хранятся данные. Типичные инсталляции используют Linux(RHEL/SL/CentOS 6) или Solaris с XFS или ZFS, соответсвенно. В связи с натурой экспериментальных данных dCache не предусматривает изменение хранимых файлов.

dCache разрабатывается с 2000 года и с 2002 года используеться в более чем 80 научных центрах мира, включая Россию. Самые маленькие системы состоят из одного узла в несколько ТБ, самые большие состоят из ~500 узлов с суммарным дисковым пространством в 22 ПБ.

Подробности
Всего голосов 21: ↑19 и ↓2 +17
Комментарии 14

Количество ложно-положительных срабатываний фильтра Блума [перевод]

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

Количество ложно-положительных срабатываний фильтра Блума.


Описание

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

Грубо говоря, фильтр Блума возвращает 2 возможных ответа:
  1. элемента нет в векторе
  2. элемент возможно есть в векторе


Блум проанализировал вероятность таких ошибочных ответов, но его анализ является некорректным.
Читать дальше →
Всего голосов 31: ↑26 и ↓5 +21
Комментарии 5

Информация

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