Pull to refresh
28
0
Send message

Обзор алгоритмов сжатия графов

Reading time7 min
Views17K
Данная работа описывает способы сжатия прежде всего социальных(графы связей между пользователями в социальных сетях) и Web-графов(графы ссылок между сайтами).

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

а) получить список ребер для определенной вершины
б) узнать соединяются ли 2 вершины.
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments5

Как работают ленивые вычисления

Reading time10 min
Views44K
Маленькая Лямбда решила, что уборку в комнате можно отложить и на потом.

Ленивые вычисления — часто используемая методика при исполнении компьютером программ на Haskell. Они делают наш код проще и модульнее, но могут вызвать и замешательство, особенно когда речь заходит об использовании памяти, становясь для новичков распространённой ловушкой. Например, безобидно выглядящее выражение
foldl (+) 0 [1..10^8]
потребует для своего вычисления гигабайты памяти.

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

Тема ленивых вычислений рассматривалась во многих учебниках (например, в книге Саймона Томпсона «Haskell — The Craft of Functional Programming»), но информацию о них, кажется, всё ещё проблематично найти в сети. Надеюсь, моё руководство посодействует решению этой проблемы.

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

Читать дальше →
Total votes 51: ↑49 and ↓2+47
Comments6

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

Reading time12 min
Views233K
последняя редакция статьи доступна на сайте makeloft.xyz

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

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

image

Читать дальше →
Total votes 74: ↑72 and ↓2+70
Comments49

Создание окружения для веб-разработки на основе Docker

Reading time5 min
Views61K
Под катом расскажу как я усовершенствовал автоматическое создание и разворачивание окружения для веб-разработки на основе Docker, Fig, DNSMasq и nsenter. По сути, это разворачивание LAMP сервера и запись о нем в DNSMasq, но приоритетами являются незасоренность хост-машины ненужным софтом типа web-, db-серверов на хост машине и минимальное количество команд для запуска
Читать дальше →
Total votes 31: ↑24 and ↓7+17
Comments59

Теория категорий для программистов: предисловие

Reading time5 min
Views109K
Вот уже некоторое время я обдумываю идею написать книгу о теории категорий для программистов. Не компьютерных теоретиков, программистов — скорее инженеров, чем ученых. Я знаю, что это звучит безумно, и я сам достаточно напуган. Я знаю, что есть огромная разница между наукой и техникой, потому, что я работал по обе стороны баррикад. Но у меня всегда был очень сильный порыв объяснить вещи. Я восхищаюсь Ричардрм Фейнманом, который был мастером простых объяснений. Я знаю, я не Фейнман, но я буду стараться изо всех сил. Я начинаю с публикации этого предисловия, которое должно мотивировать читателя изучить теорию категорий, и надеюсь на начало дискуссии и обратную связь.

Я постараюсь в нескольких параграфах убедить вас, что эта книга написана для вас, и развеять все ваши сомнения в необходимости изучения этой, одной из самых абстрактных областей математики, в свое драгоценное свободное время.
Читать дальше →
Total votes 55: ↑51 and ↓4+47
Comments25

Изобретаем JPEG

Reading time28 min
Views174K

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

Знание алгоритма JPEG очень полезно не только для сжатия изображений. В нем используется теория из цифровой обработки сигналов, математического анализа, линейной алгебры, теории информации, в частности, преобразование Фурье, кодирование без потерь и др. Поэтому полученные знания могут пригодиться где угодно.

Если есть желание, то предлагаю пройти те же этапы самостоятельно параллельно со статьей. Проверить, насколько приведенные рассуждения подходят для разных изображений, попытаться внести свои модификации в алгоритм. Это очень интересно. В качестве инструмента могу порекомендовать замечательную связку Python + NumPy + Matplotlib + PIL(Pillow). Почти вся моя работа (в т. ч. графики и анимация), была произведена с помощью них.

Внимание, трафик! Много иллюстраций, графиков и анимаций (~ 10Мб). По иронии судьбы, в статье про JPEG всего 2 изображения с этим форматом из полусотни.
Читать дальше →
Total votes 356: ↑354 and ↓2+352
Comments70

Интерактивные карты кибератак в реальном времени

Level of difficultyEasy
Reading time4 min
Views80K
«Кибервойны — это уже реальность и нам, простым смертным, остается только наблюдать за ними...»

Да, начало, пожалуй, вышло пафосным и больше подходит для заголовка какой-нибудь газетной статьи или как раз для ресурса, который в визуальной форме показывает нам происходящие в мире кибератаки.
В этой статье будут описаны известные и, возможно, малоизвестные ресурсы, демонстрирующие происходящие в мире кибератаки в режиме реального времени.
Читать дальше →
Total votes 30: ↑27 and ↓3+24
Comments16

Поддержка панорамного видео 360 появится на Youtube в конце этого квартала

Reading time1 min
Views6.7K
Панорамная 360 HD-камера Giroptic 360cam собрала $1,4 млн на Kickstarter. Камера 360cam стримит видео через WiFi, записывает видео, и фотографирует.

На проходящей сейчас выставке CES 2015 французская компания Giroptic сообщила, что её 360cam камера будет первой камерой, которую будет поддерживать Youtube «natively». Также Giroptic заявляет, что Google позволит пользователям их камеры загружать панорамное видео в Street View.

На данный момент видео панорамных камер других производителей можно смотреть только в специализированных плеерах. С появлением поддержки панорамного видео в Youtube возрастет интерес к подобным камерам.

Total votes 10: ↑10 and ↓0+10
Comments5

Как работать «в потоке»? Нужны всего 3 ресурса

Reading time5 min
Views120K

Знакомо ли вам такое состояние, когда вы настолько увлечены идеей, что полностью погружаетесь в процесс ее реализации, забывая о времени и окружающем мире? А завершив, испытываете радость и даже счастье? Значит, у вас есть опыт потоковых состояний – особых ресурсных состояний сознания, когда все внимание сфокусировано на цели, и в результате замечательные идеи рождаются сами собой, и время концентрируется, вмещая гораздо больше, чем в обычном состоянии.
Тема эффективности потоковых состояний для работы и творчества уже несколько раз поднималась на Хабре, и в этой статье мы хотим обсудить практическую часть – что необходимо для того, чтобы вызывать это состояние «на заказ»?

Читать дальше →
Total votes 120: ↑110 and ↓10+100
Comments110

Поиск наилучшей последовательности просмотра списка 250 лучших фильмов с помощью языка Wolfram Language (Mathematica)

Reading time7 min
Views56K

Скачать перевод в виде документа Mathematica, который содержит весь код использованный в статье, можно здесь (архив, ~76 МБ).

Введение


Некоторое время назад, если быть точным — 515 дней, вышел пост Маттиаса Одисио (Matthias Odisio) под названием “Random and Optimal Mathematica Walks on IMDb’s Top Films” (Случайные и оптимальные блуждания Mathematica по списку 250 лучших фильмов по версии IMDB). В нем рассказывается о том, каким образом можно получить оптимальную последовательность просмотра фильмов из соответствующего списка, основанную на близости жанров фильмов и близости постеров фильмов с точки зрения цвета.
Читать дальше →
Total votes 100: ↑93 and ↓7+86
Comments36

Клавиатура Октодон: Метания и метаморфозы

Reading time8 min
Views58K


Здравствуй, Хабр.

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

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

Введение


Клавиатура Октодон – это новое мобильное устройство ввода, которое может стать альтернативой полноразмерной клавиатуре и принести комфорт в работу с текстом на смартфонах и планшетах. Эта задача решается путём вовлечения в процесс печати всех пальцев с помощью размещения элементов ввода на задней стороне устройства. Такую технологию иногда называют back-typing.

Ключевыми преимуществами клавиатуры Октодон являются компактность, хорошая эргономика и интуитивно понятный процесс ввода:



В прошлый раз мы оставили читателей нашего блога в том месте, где герои команды Октодона отстроили компактное и быстрое устройство, иллюстрирующее все преимущества концепции новой клавиатуры, потрепали рекорд swype, и стали готовиться к краудфандинговой кампании и производству, не теряя, впрочем, надежды привлечь для ускорения процесса дополнительные инвестиции.
Что же было дальше?
Total votes 54: ↑42 and ↓12+30
Comments95

Спать мало, но правильно?

Reading time7 min
Views899K
Навеяно этим постом от юзера case. Пост не новый, и на главную он не попал.
Но я вот наткнулся на него сегодня и решил написать кое-что о сне. Уверен, что это будет полезно многим хабравчанам, да и случайным читателям тоже.
Читать дальше →
Total votes 713: ↑670 and ↓43+627
Comments420

Полифазный сон: отзывы, «теория», личный опыт

Reading time6 min
Views418K


Нехватка времени – одна из наших главных проблем. Причем не хватает его не только на работу, но и на отдых, физический и моральный. Велико искушение «отъесть» недостающие нам часы у такого малопонятного времяпрепровождения, как сон.

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

Вовремя – это значит резервируя на сон не менее 8-ми часов, как всех нас учили. Но в итоге по факту большинство из нас спит часов 6, а потом «отрывается» в выходные. Но хотя этих 6-ти часов мало для сна, их все еще чересчур много в сутках: желание (и тенденции!) «урезать» сон еще больше – не исчезают. В поисках волшебной таблетки «как мало спать и отлично высыпаться» я, как, наверно, и многие, в свое время натолкнулся на учение о полифазном сне.

Что это?
Читать дальше →
Total votes 78: ↑68 and ↓10+58
Comments96

Почему только hard и hardcore

Reading time4 min
Views78K
Так получилось, что мы играем в игры на высокой сложности. Причина вовсе не в том, что мы упорные обдолбанные гики, а в простой рациональности — желании получить от игры удовольствие.

Дело ведь в чём: раньше все игры были достаточно сложными, потому что были рассчитаны на куда более хардкорных геймеров. Когда у тебя нет интернета, картриджей всего 5 штук, а делать нечего — ты играешь в то, что есть. И пройти игру для ребёнка в 90-х означало вовсе не то, что сегодня.

image

Сегодня «пройти» — это потратить какое-то время на то, чтобы «просмотреть» сюжет и сделать 200 save-load. А раньше «пройти» — это целый подвиг. Без гарантии результата. Вот хотя бы советская «Ну, погоди!». Я до сих пор помню, как зашёл на долгожданный финал… и увидел, что игра циклична как тетрис. Мультфильм тоже не показали.

Но вернёмся к тому, почему только hard или hardcore. И какое это имеет отношение к GameDev и бизнесу.
Читать дальше →
Total votes 109: ↑83 and ↓26+57
Comments247

Изначально ущербная система подготовки к переговорам

Reading time6 min
Views117K


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

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

Давайте ещё раз. Бывают хорошие условия, бывают нормальные, бывают плохие. Одни можно превратить в другие. Но если вы понимаете, что из плохих условий не сделать нормальные, то единственный логичный выход – остановить переговоры как можно быстрее. Вам не нужны компромиссы, странные пути решения и долгие разговоры. Вам нужно встать и уйти.
Читать дальше →
Total votes 187: ↑179 and ↓8+171
Comments146

Выигрываем ценные призы с exim и mail piping

Reading time5 min
Views10K
Всем доброй хабранедели!
Итак, цель статьи: рассказ о том, как автоматически разбирать входящую почту с примерами обработки.
Попутно: как я считерил и выиграл аж 8 из 10 комплектов планшетов у DX и сдался китайцам.

Итак, цель номер ноль: научиться разбирать инкам методами, отличными от «зайти по POP/IMAP раз в минуту».
Я решил, что helloWorld это не так интересно, тем более на глаза попалась лотерейка от DX (dx.com/newsletters).
Вкратце работает она так:
0. Вводим email на страничке подписки (HTTP POST)
1. На него приходит ссылка для подтверждения email
2. Проходим по ссылке
3. Если email зарегистрирован впервые, получаем на email lucky number, который и участвует в розыгрыше

Внимательный читатель уже понял суть довольно простого «финта ушами», но цель статьи в практических мелочах.
Читать дальше →
Total votes 16: ↑11 and ↓5+6
Comments3

Pro Git, 2-е издание

Reading time1 min
Views68K

Вне всяких сомнений, Pro Git — это одна из лучших книг про систему контроля версий git. Совсем недавно появилось второе издание этой замечательной книжки. Большие изменения произошли в издательском процессе: исходный код книги теперь хранится в AsciiDoc, а не в Markdown, а различные форматы (PDF, ePub и Mobi) автоматически генерируются с помощью O'Reilly Atlas platform. Разработка книги активно ведётся на гитхабе, актуальная online-версия находится в открытом доступе на официальном сайте, а любители печатной продукции могут заказать себе экземпляр на Amazon. Второе издание получилось почти в два раза больше первого: на сегодняшний день PDF-версия содержит 570 страниц. Помимо улучшения старого материала, книжка также пополнилась новыми главами и разделами:
Читать дальше →
Total votes 92: ↑88 and ↓4+84
Comments22

Поиск жилья без посредников в 21-м веке

Reading time6 min
Views168K
Полагаю, все мы однажды искали себе жилье. Кто-то — в собственность, большинство, вероятно, в аренду. Все, кто хоть раз пытался найти реальные предложения на досках объявлений, знают — это нереально. Такого количества спама нет, пожалуй, ни в одной другой сфере. После того, как окунешься в этот ад, обычно руки начинают чесаться применить свою IT-шность на благо ближнему. Результатом для меня стал проект Sobnik, о котором я и хочу рассказать.

Sobnik — это плагин для Chrome, который помечает посредников на досках объявлений. Пока работает только с Avito.ru, в ближайшем будущем я добавлю Irr.ru и другие крупные доски. Всех, кто сидит на чемоданах и кому не терпится попробовать, прошу в Google Web Store. Под катом я расскажу о технической стороне проекта, о его перспективах и о моих наблюдениях за противником посредниками. Любители критиковать чужой JS-код также велкам, исходник клиентской части плагина доступен на github.

Читать дальше →
Total votes 106: ↑104 and ↓2+102
Comments103

Хороших книг пост

Reading time2 min
Views70K


А давайте давайте соберём здесь хорошие книги, которые просто стоило собрать.
Суть в том, что просто давно стоило сложить хорошие книги в одном посте, чтобы было что прочитать в дороге — или просто для души.
Читать дальше →
Total votes 84: ↑72 and ↓12+60
Comments392

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

Reading time7 min
Views137K
image

По заявкам трудящихся и в связи с переносом — возвращаю пост, который многих порадовал. Надеюсь НЛО будет не против.

На написание этого поста меня сподвиг замечательный пост «За что конкретно я ненавижу некоторых отдельно взятых маркетологов — или как айтишник по магазинам ходил». Сразу хочу извиниться за возможные опечатки — пишу с планшета, сидя в микроавтобусе и вытягивая сеть телефоном. Hacker's keyboard очень удобен для ssh-доступа, но большие тексты писать им не очень удобно.

IT- специалисты — народ любопытный. То соберут на базе микроконтроллеров автоматическую систему полива и освещения для любимого фикуса, то пропатчат прошивку мультиварки для раздачи торрентов. Но, по непонятной и загадочной причине, когда дело доходит до еды, пресловутый принцип DIY дает сбой. И наш герой, способный часами переделывать кинескоп старого телевизора в Луч Смерти, идет на кухню утолить голод соевым текстуратом пополам с гидроцеллюлозой и «коллагеновым сырьем».

В этом посте я хочу разрушить миф о том, что еда может быть либо быстрой и удобной, либо съедобной. Не секрет, что многим из нас приходится работать по 12 часов в сутки, что не способствует кулинарным подвигам с участием 28 приправ и перьев с зада дракона, омытых слезами единорога. Вы получите замечательную возможность посмотреть в глаза своей половинки на 8 марта после того, как она получит не контроллер для дистанционного управления шторой, а свежевыпеченный хлеб ручной работы рано утром. Если вам надоело есть синтетику — добро пожаловать под hubracut.
Читать дальше →
Total votes 269: ↑263 and ↓6+257
Comments293

Information

Rating
Does not participate
Registered
Activity