Обновить
163
0

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

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

Как я покупал квартиру

Время на прочтение11 мин
Охват и читатели63K
Я хотел написать статью про линейную регрессию, но потом подумал, да ну её, лучше куплю квартиру. И пошёл искать, что предлагают. А предлагают, как оказалось, много чего. В подходящий мне ценовой диапозон попало больше 500 квартир. И что, мне теперь все это просматривать? Ну нееет, программист я в конце концов или не программист. Надо это дело как-то автоматизировать.
Читать дальше →

Принцип цикады на чистом CSS

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

Во многих случаях можно сэкономить ещё больше, используя градиенты. Даже с учётом того, что пока практически все браузеры поддерживают свойство linear-gradient только с префиксами, суммарный объем кода CSS, необходимый для создания фона, в несколько раз меньше размера нескольких PNG с фрагментами, и, что ещё важнее — вообще не требует лишних запросов к серверу. Так, Эрик Мейер недавно привёл пример реализации первых двух фонов из оригинальной статьи Уокера на чистом CSS. Для простых цветных полосок (вверху) понадобилось 2.66 Кб кода CSS (с префиксами, без минификации и компрессии). В будущем, когда все популярные браузеры избавятся от префиксов, будет достаточно 0.59 Кб кода. В оригинальном примере изображения весили около 6 Кб + 3 запроса к серверу. Второй пример с занавесом (внизу) впечатляет ещё больше. Даже с префиксами получается примерно десятикратный выигрыш.
Читать дальше →

Письма для ваших приложений (за 24-часа)

Время на прочтение3 мин
Охват и читатели4.1K
Всем привет. Большую часть времени я занимаюсь управлением разработкой проектов shopium.ua и zakaz.ua, но инженер внутри меня периодически требует развлечений. Не имея свободного времени на хакатоны, гаражи, стартап-сауны и прочее, я придумал себе свой формат «покодить чего душа пожелает»:
  • нужен мне самому
  • время на реализацию MVP — до 24х часов в сумме
  • бюджет — до $100
  • коммерческий потенциал


В наших проектах мы шлём пользователям письма. Мы шлём пользователям информационные рассылки, и с этим прекрасно справляется MailChimp, но ниша отсылки транзакционных писем (подтверждения, уведомления и т.д.) до недавнего времени была относительно пуста.

В большинстве проектов, которые я знаю, транзакционные письма прямо в коде создаются из шаблона письма (и хорошо если он вынесен в отдельные файл, а не зашит рядом в коде), и передаются локальному SMTP серверу. И при этом:
  • менять текст сообщений могут только программисты (это медленно и дорого, и при этом невозможно делегировать работу с текстами контент-менеджеру, а для любого изменения текста писем нужен редеплой системы)
  • не отслеживается открытие писем и клики по ссылкам (нет данных для улучшения текста письма)
  • не обрабатываются bounce (можно постоянно слать письма на несуществующие адреса, а это влияет на показатель «спамности» адреса, с которого шлются письма)
  • лишь у некоторых реализована подпись писем через DKIM (тоже уменьшает шансы на доставку письма в inbox)


Я решил за 24 часа сделать сервис, с помощью которого можно будет надёжно слать красивые письма, быстро менять их текст, и отслеживать статистику. Встречайте Notifout.
Читать дальше →

Sublime Text 2: Как создать сниппет?

Время на прочтение4 мин
Охват и читатели67K
image
Начав использовать Sublime Text 2, я понял, что хочу немного упростить себе жизнь, создав несколько полезных сниппетов, но столкнулся с тем, что на тот момент в сети не было инструкции на русском языке. Найдя неплохую англоязычную статью я решился на перевод, попутно немного дополнил и узнал пару несколько интересных нюансов, которыми готов поделиться с вами.

О неточностях, опечатках, ошибках пишите в личку — буду оперативно исправлять.

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

Создаем форму обратной связи с помощью Google Forms

Время на прочтение2 мин
Охват и читатели112K
Привет, Хабр!

Данный пост посвящен прекрасному инструменту Google Forms, как за 10 минут сделать форму обратной связи на сайте или более полезные вещи.
Читать дальше →

Восстановление расфокусированных и смазанных изображений. Практика

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

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

Ниже показан результат обработки реального размытого изображения (не с синтетическим размытием). Исходное изображение было получено камерой Canon 500D с объективом EF 85mm/1.8. Фокусировка была выставлена вручную, чтобы получить размытие. Как видно, текст совершенно не читается, лишь угадывается диалоговое окно Windows 7.



И вот результат обработки:



Практически весь текст читается достаточно хорошо, хотя и появились некоторые характерные искажения.

Под катом подробное описание проблем деконволюции, способов их решения, а также множество примеров и сравнений. Осторожно, много картинок!
Читать дальше →

Как определить язык по виду иероглифов/закорючек?

Время на прочтение1 мин
Охват и читатели200K
Вот, задался таким вопросом… С помощью гугл транслейта и такой-то матери, родилась такая блок-схемка:



картинка кликабельна

Кому нужен сорец (в .docx): тут

Превращение шума в музыку: эволюционный алгоритм + краудсорсинг

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


Профессор эволюционной биологии Арманд Лерой (Armand Leroi) решил проверить, насколько эволюционные алгоритмы подходят для генерации музыки. Его базовый тезис состоит в том, что приятная мелодия — это результат естественного отбора (эволюции) звуков. Результаты эксперимента подтвердили, что случайный шум действительно может превратиться в музыку без помощи композитора. Научную работу и образцы сгенерированных мелодий можно изучить на сайтах DarwinTunes и Evolectronica.
Читать дальше →

Фотографируемся после каждого коммита (Linux, OSX)

Время на прочтение1 мин
Охват и читатели4.1K
Программа imagesnap (OSX) позволяет делать фотографии веб-камерой из командной строки. Например, она может автоматически фотографировать программиста после каждого коммита в репозиторий git, нужно всего лишь добавить следующий код в .git/hooks/post-commit.

#!/usr/bin/env ruby
file="~/.gitshots/#{Time.now.to_i}.jpg"
puts "Taking capture into #{file}!"
system "imagesnap -q -w 3 #{file}"
exit 0

Потом кадры собираются в видеоролик программой tlassemble.
Читать дальше →

Старый ридер вернулся

Время на прочтение2 мин
Охват и читатели1.5K
The Old Reader

Осенью 2011 года Google обновил интерфейс Google Reader, но убрал его социальную часть. Реакция пользователей была негативной, петицию о возвращении старого ридера подписало более 13 000 человек, а в защиту уютного сообщества sharebros высказались публично все, кто мог, включая экс-проджект-менеджера Google Reader. Отчаявшись ждать, пока выйдут обещанные аналоги, мы втроём случайно объединились и сделали The Old Reader — примерно за шесть недель, в свободное от основных работ время.

Текущая бета-версия The Old Reader — это RSS-ридер с возможностью добавлять друзей, делиться записями друг с другом и обсуждать это в комментариях. Авторизироваться и искать друзей можно через Facebook и Google, а импортировать подписки — из Google Reader напрямую или из OPML-файла. The Old Reader не спамит ваши контакты и не мусорит в Фейсбук-таймлайн сообщениями вида «N прочитал очередную статью о новых десяти дизайнерских кедах этой недели» (но эту опцию можно, по желанию, включить отдельно).

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

Визуализация «В Контакте»: Скажи мне, кто твой друг?

Время на прочтение2 мин
Охват и читатели147K
Привет, Хабралюди!

У меня есть хобби. Я ночами (в нерабочее время) пишу библиотеку укладки графов: vivagraph.js. Хотел поделиться с вами, узнать что думаете. Визуализировал я сеть друзей своих на «В Контакте» с использованием WebGL. Но лучше один раз увидеть, чем читать, верно?



Это мои друзья. Каждая точка — человек, целый мир, с которым так или иначе мне повезло встретиться. Линия между точками обозначает дружбу. По этой сети можно, правда, сказать многое о человеке.

Как построить свою сеть?

Астрология и Data mining

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

Как и многие люди технического склада ума, я с крайним недоверием отношусь к астрологии, гороскопам и прочим псевдонаукам. Моё мировозрение пошатнулось когда я от скуки решил изучить влияение времени года в которое рождается человек, на его психические особенности. Оценка психических особенностей производилась по результатам соционического теста из приложения VK, которое насчитывает более 500000 пользователей. Надёжность и валидность теста небольшая, да и вся соционическая модель имеет ряд проблем. Но нам важно другое: понять есть ли хоть какие-то отличия между людьми родившимися в разное время. Объём выборки в полмиллиона человек позволяет надеяться на положительный результат. В ходе исследования ожидалось получить линейную зависимость между продолжительностью светлого времени суток в день рождения человека и его психотипом, но получилось
нечто совсем иное.

Маленькая задача — вывести дату

Время на прочтение2 мин
Охват и читатели1.5K
Я хочу рассказать о простой задаче — вывод даты на главной странице Mail.Ru. Маленькая задача, нетривиальное решение.

image

Решение в лоб:

function print_date(date){
	return date.getDate() + ' ' + getMonth(date.getMonth()) …
}

print_date( new Date() );

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

Как правильно сортировать контент на основе оценок пользователей

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


В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

Постановка проблемы


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

Неправильное решение №1

Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)

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

oEmbed. Делаешь веб-сервис? — Делай и oEmbed

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


Конечно вы видели этот эффект, когда вставляешь в фейсбуке или вконтакте ссылку, и в посте тут же начинает подгружаться какой-то контент с сайта, на который ведет ссылка. И я видел, но даже не представлял, насколько это легко можно сделать с oEmbed'ом.

oEmbed.com — впринципе, на этом можно было бы и закончить читать тем, кто хочет провести самостоятельное мини-исследование.
Но вот мой рассказ, как этим пользоваться и много ссылок

PHPUnit: Mock объекты

Время на прочтение7 мин
Охват и читатели96K
Довольно часто при написании модульных тестов нам приходится сталкиваться с тем, что тестируемый класс зависит от данных из внешних источников, состояние которых мы не можем контролировать. К таким источникам можно отнести далеко расположенную общедоступную базу данных или службу, датчик какого-нибудь физического процесса и пр. Либо нам необходимо убедиться, что некие действия выполняются в строго определенном порядке. В этих случаях к нам на помощь приходят Mock объекты (mock в переводе с английского — пародия), позволяя тестировать классы в изоляции от внешних зависимостей. Использованию Mock объектов в PHPUnit посвящается эта статья.
Читать дальше →

Фотографии домашних офисов-3

Время на прочтение1 мин
Охват и читатели48K
Продолжаю подборку фотографий интересных зарубежных домашних офисов, предыдущие хабратопики здесь и здесь. На многих фигурирует продукция Apple и IKEA.



Осторожно, много трафика!
Читать дальше →

Первое апреля в Интернете

Время на прочтение3 мин
Охват и читатели15K
По традиции собирательный пост со всеми найденным на просторах Интернета сайтами и первоапрельскими нововведениями на них. Пополняемый.

Для начала те ресурсы, что обнаружил лично:


Под катом ссылки из комментариев

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Зарегистрирован
Активность