Pull to refresh
10
0
Сергей Васильев @SVGen

User

Send message

Новый пуленепробиваемый синтаксис @font-face

Reading time3 min
Views71K
С самого начала «вебошрифтовой революции» мы полагались на неизящные хаки деклараций @font-face, чтобы шрифты из Паутины загружались во всех браузерах. Может ли существовать лучший путь? Вполне изящный и совместимый с будущими браузерами?

Вкратце об истории вопроса


В сентябре 2009 года Пол Айриш (Paul Irish) огласил пуленепробиваемый синтаксис для записи деклараций @font-face. Синтаксис был компактным и в то время действовал во всех браузерах. Недавно стали поступать, со временем усиливаясь, жалобы на отказ шрифтов загружаться в Android — поэтому мы стали вместо того рекомендовать синтаксис «Mo' Bulletproofer», сочинённый Ричардом Финком (Richard Fink). К сожалению, синтаксису «Mo' Bulletproofer» требуется двойная запись деклараций, так что поддержка его сложнее.

Синтаксис Fontspring @Font-Face


А вот таким этому коду следовало бы быть с самого начала. Чистым, ясным и простым:
@font-face {
	font-family: 'MyFontFamily';
	src: url('myfont-webfont.eot?') format('eot'), 
	     url('myfont-webfont.woff') format('woff'), 
	     url('myfont-webfont.ttf')  format('truetype'),
	     url('myfont-webfont.svg#svgFontName') format('svg');
	}

Что? Я не понял.


Хак Трюк, заставляющий этот код заработать — символ «?» вслед за именем файла EOT. Без шуток.

Как это срабатывает


Читать дальше →
Total votes 141: ↑132 and ↓9+123
Comments42

Объявлены 6 стартапов, которые получат гранты от Мильнера и Дурова

Reading time1 min
Views1.3K
Три недели назад на хабре уже писали о том, что Мильнер и Дуров будут раздавать гранты в размере 25 тысяч долларов, при этом не требуя ничего взамен.
И вот сейчас в группе проекта StartFellows были объявлены 6 стартапов, которые получат этот грант:

vnimanietv.ru — премия в области образовательных видеолекций;

budist.ru — социальный будильник;

sandsign.ru — подписи на песке;

wheely.com — сервис для заказа и отслеживания такси;

tjournal.ru — газета, построенная на автоматическом анализе русскоязычной аудитории Твиттера;

drugdrugu.ru — социальная сеть, сведение людей по принципу «Я хочу/Я могу».

Сообщается, что было прислано около 2000 писем и не все заявки ещё обработаны.
Судя по первым победителям, предпочтение отдаётся живым проектам.
Total votes 95: ↑82 and ↓13+69
Comments106

Рисуем картинки с помощью кривой Гильберта

Reading time5 min
Views45K
В субботу на прошлой неделе «дело было вечером, делать было нечего», и мы с хабраюзером sourcerer разговаривали не понятно о чём. И почему-то речь зашла речь о задаче обратной к задаче построения графика функции по её выражению. То есть, например, у нас есть выражение y(x) = (cos0,5x ⋅ cos 200x + |x|0,5 − 0,7)(4 − x2)0,01. График такой функции чем-то напоминает сердечко. Но нам был интересен обратный вопрос, как, имея, например, изображение сердечка, получить выражение для функции, графиком которой будет это самое сердечко.

Какие-нибудь ряды Фурье вспоминать не хотелось, а хотелось чего-то простого и красивого. Мы начали вспоминать известные нам результаты, связанные с этим вопросом. В результате получилась программка, которая по изображению генерирует ломаную линию, чем-то напоминающую исходное изображение. На примере котёнка по имени Гав это выглядит примерно так (смотреть лучше издалека):



Если интересно как такое сделать, а также узнать про формулу конопли, формулу, график которой является этой же формулой, то добро пожаловать под хабракат. (Будет много картинок.)

Читать дальше →
Total votes 230: ↑229 and ↓1+228
Comments43

Новая версия MotivateClock. Мы сделали то, о чем Вы просили!

Reading time2 min
Views7.1K
image

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

Ровно три месяца назад, 27 сентября, мы объявили Хабрасообществу о старте нашего проекта. Больше всего комментариев и пожеланий тогда мы услышали о необходимости реализации посайтового учета времени проведенного в различных браузерах.
Читать дальше →
Total votes 59: ↑49 and ↓10+39
Comments70

60-летие запуска первого в СССР и континентальной Европе компьютера

Reading time2 min
Views3.6K
Марина Тарасова, менеджер по связям с общественностью Google Украина

Немногие знают, что вчера отмечалась годовщина ключевого события в европейской истории создания компьютера. Шестьдесят лет назад, 25 декабря 1951 года, в Киеве Академия наук СССР официально признала МЭСМ — новаторской проект Сергея Лебедева. Мировое научное сообщество считает МЭСМ — Малую Электронную Счетную Машину — первой полностью электронной вычислительной машиной в Советском Союзе и во всей континентальной Европе.

Недавно мы встретились с Борисом Малиновским, ведущим экспертом вычислительной техники советских времен. Он работал над МЭСМ вместе с Лебедевым и рассказал нам о достижениях ученого.



Сергей Алексеевич Лебедев в 1930-х годах работал энергетиком, и по роду деятельности ему приходилось много считать. Поэтому разрабатывать примитивную аналоговую машину, которая могла бы выполнять вычисления, он начал еще тогда. В то время ученый уже понимал необходимость создания электронной машины для вычислений, способной работать автономно. Во время Второй мировой войны работа Лебедева прервалась. В 1946 году он был назначен директором Института электротехники в г. Киеве.



Фото Сергея Лебедева — ukrainiancomputing.org


В 1948 году, когда Лебедев начинал работу над МЭСМ, его руководство было настроено скептически. Даже некоторые специалисты его команды считали, что работа над «калькулятором» (именно так они представляли себе компьютер) была шагом назад по сравнению с исследованием электричества и космоса. Однако ученый продолжал свои разработки и смог получить финансирование от отдела ракетной техники.

Местом работы для Лебедева и его команды стало заброшенное здание бывшего монастыря в Феофании на окраине Киева. Сам монастырь сохранился, однако ученым, работавшим над МЭСМ, пришлось создать свои рабочие места с нуля — лабораторию, металлообрабатывающую мастерскую и даже электростанцию. Команда состояла примерно из 20 человек. Они работали посменно 24 часа в сутки, многие жили в комнатах прямо над лабораторией.

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



Фото МЭСМ и членов команды в 1951 году, предоставлено ukrainiancomputing.org
Слева направо: Лев Дашевский, Зоя Зорина-Рапота, Лидия Абалышникова, Тамара Пецух, Евгений Дедешко

Первую программу на МЭСМ запустили 6 ноября 1950 года, и уже 1951 году машина начала работать с полной загрузкой. В 1952 г. на МЭСМ производились сверхсекретные расчеты, связанные с ракетостроением и созданием водородной бомбы. Машину использовали в исследованиях Института вплоть до 1957 года. К тому времени Лебедев уже переехал в Москву, чтобы руководить строительством советских суперкомпьютеров нового поколения. Благодаря своей работе ученый занял достойное место среди компьютерных гениев Европы. Что касается МЭСМ, то ее ждала другая судьба — машину разобрали на части и отдали для проведения научных лабораторных работ студентам Политехнического института в Киеве.
Total votes 23: ↑22 and ↓1+21
Comments4

Создаем эффект lightbox при помощи CSS3

Reading time5 min
Views31K

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

С помощью псевдо-класса :target, мы сможем показывать изображения и переходить по ним.

Красивые изображения, используемые в демо-примерах, от Joanna Kustra, они используются на условиях лицензии Attribution-NonCommercial 3.0 Unported Creative Commons License.
Читать дальше →
Total votes 47: ↑40 and ↓7+33
Comments19

Как создать визуальную библиотеку изображений с HTML5 Canvas

Reading time14 min
Views4.5K
Сегодня утром, открыв почту, получил очередную рассылку от Code Project, в которой был описан интересный путь создания галереи изображений при помощи Canvas элемента. Статья показалась достаточно интересной и я решил опубликовать ее перевод
здесь
Total votes 41: ↑36 and ↓5+31
Comments13

Выезжающая панель на CSS3 с iframe внутри

Reading time2 min
Views14K

Здравствуйте, уважаемые Хабро-CSS3-люди!
Хочу поделиться маленьким опытом создания выезжающей панельки на CSS3 с iframe внутри и тем, как побороть неприятные сюрпризы от IE. Это решение мне кажется хорошо подойдет для добавления на сайт формы обратной связи, чата с консультантом и т.п.
На всякий случай напомню, что у iframe есть свои минусы, и при создании сайта с iframe необходимо их учитывать. Есть и плюсы, однако топик не об этом.
Добро пожаловать под хабракат
Total votes 41: ↑36 and ↓5+31
Comments62

Адаптивный и мобильный дизайн с CSS3 Media Queries

Reading time7 min
Views593K
Разрешение экрана в наши дни колеблется от 320px (iPhone) до 2560px (большие мониторы) или даже выше. Пользователи больше не просматривают сайты только на настольных компьютерах. Теперь пользователи используют мобильные телефоны, небольшие ноутбуки, планшетные устройства, такие как iPad или Playbook для доступа в интернет. Поэтому, традиционный дизайн с фиксированной шириной больше не работает. Дизайн должен быть адаптивным. Структура должна автоматически изменяться с учетом всех разрешений дисплеев. Эта статья покажет вам как создавать кросс-браузерный адаптивный дизайн при помощи HTML5 и CSS3 media queries.
Читать дальше →
Total votes 91: ↑90 and ↓1+89
Comments32

HTML.next или идеи для HTML6

Reading time6 min
Views5.1K
image
Несмотря на то, что спецификацию HTML5 планируется полностью утвердить и добиться максимально широкой функциональной совместимости лишь в 2014 году, уже сейчас начинают выкристаллизовываться идеи о том как должна выглядеть данная спецификация следующего поколения — HTML.next, как его в рабочем порядке называют в W3C-консорциуме.

Новые элементы семантики


<dеcompress>

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

Пример использования:
<decompress href="http://thisisanexample.com/mobile/familyreunion.zip">
<a href="familyreunion.zip/html/activities.html">Activities from our family reunion</a>
<img src="familyreunion.zip/img/familyreunion1.jpg">

Читать дальше →
Total votes 66: ↑63 and ↓3+60
Comments124

О разработке специальной версии сайта Госдумы для людей с нарушениями зрения

Reading time8 min
Views2K
Из серии статей о новинках на сайте Государственной Думы. Предыдущие: первая, вторая и третья.

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

Адрес спецверсии: spec.duma.gov.ru

Всю разработку специальной версии можно логически разделить на 4 этапа:
  1. Анализ действующих стандартов и ГОСТ-ов;
  2. Анализ существующих решений;
  3. Обобщение проанализированных данных;
  4. Разработка сайта.
Но вначале, приведем некоторые цифры по проблеме зрения в России и мире.
Читать дальше →
Total votes 58: ↑53 and ↓5+48
Comments33

JavaScript Gaming: Часть 1. Box2d и основы Физики

Reading time28 min
Views23K


Вместо предисловия.


Я всегда любил и буду любить компьютерные игры. Есть в них какая-то своя внутренняя магия, которая всегда привлекает и завораживает одновременно. За всю свою жизнь я переиграл в десятки игр, начиная с ветеранов Wolfenstein и Dune 2 и заканчивая современными блокбастерами. И теперь, добивая очередной хит и наблюдая за финальным роликом и титрами, в голове все чаще и чаще мелькает мысть «А что, если?..»

А ведь действительно, что если взять и написать собственную игру? Конечно же понятно, что ААА-тайтл сделать в одиночку не получится, и это годы работы и прочая и прочая, но ведь осилит дорогу идущий? Так уж получилось, что в Desktop-программироании я откровенно слаб, и вариантов для практикующего веб-разработчика не так уж много. Но за последние годы все кардинально изменилось, и теперь уже у браузера много общего с кофеваркой, а javascript может спокойно удовлетворять даже нужды военных ведомств, не то что мои собственные.

Вот как раз во время очередных раздумий и достаточно серьезной простуды мне попалась на глаза статья о Box2d в игрологе Ant.Karlov'а. Зачитавшись и замечтавшись я очень быстро нашел JS-порт этой библиотеки, и старая шальная идея сделать что-то маленькое и, главное — свое, начала донимать меня с новыми силами.

В общем, меньше патетики, больше дела. Надеюсь, вам будет интересно. Да простят меня суровые боги за использование Angry Birds в КПДВ ^_^
Читать дальше →
Total votes 153: ↑150 and ↓3+147
Comments35

«LibCanvas» — фреймворк для работы с Javascript Canvas, запущен сайт + игра «Asteroids»

Reading time1 min
Views6.5K
Здравствуйте. Я продолжаю развитие фреймворка для работы с Javascript Canvas, основанного на MooTools и предназначенного для создания анимаций, игр, ui и всего, что вы пожелаете. И сегодня — очень важный момент для этого фреймворка — публичный запуск официального сайта.

Добро пожаловать на

libcanvas.com



К запуску мы с greedykid и Nutochka портировали «Asteroids» — культовую игру восьмидесятых, но с более усовершенствованной графикой, которая работает во всех современных браузерах (да-да, про ie < 9 тут ничего не было). Работа над Астероидами показала мне потенциал этой технологии. Я уверен, что это далеко не предел, у меня есть идеи и даже интересные реализации и потому я продолжу развитие этого фреймворка. Ждите новых интересных приложений.
Читать дальше →
Total votes 79: ↑77 and ↓2+75
Comments81

Еще одно Canvas руководство [1]: Canvas элемент, прямоугольники, пути

Reading time5 min
Views19K

Зачем еще одно руководство?


Потому что большинство уже существующих руководств рассматривают только основы, а все остальное приходится собирать по кусочкам поэтому я решил написать сжатое, полное руководство по canvas для программистов (а то часто пишут для простых людей которые изучают попутно и программирование).
Читать дальше →
Total votes 84: ↑76 and ↓8+68
Comments29

Нужна ли авторизация после регистрации?

Reading time1 min
Views4.9K
Занимаясь проектированием одного сервиса, я задумался: имеет ли смысл авторизовать пользователя сразу после регистрации или лучше не делать этого? С одной стороны, опыт подавляющего большинства сайтов говорит нам о том, что посетители привыкли к тому, что после процедуры регистрации им больше ничто не мешает пользоваться услугами сайта. С другой, многие используют всевозможные приложения и менеджеры паролей (интегрированные в браузер или сторонние сервисы), а значит, при следующем входе им придется вспоминать свои логин-пароль вместо того, чтобы войти почти автоматически.

image


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

Если кто-то захочет попробовать, я сделал простой пример системы, который показывает общее развитие сценария.
Читать дальше →
Total votes 120: ↑102 and ↓18+84
Comments176

Последовательный вызов асинхронных функций

Reading time3 min
Views33K
Как известно, язык JavaScript преследует парадигму событийно-ориентированного программирования. Это, безусловно, хорошо, но что делать, если за одной асинхронной функцией должна вызываться другая асинхронная функция, а затем еще одна, и еще… Иногда такой код очень запутывает, и не только человека привыкшего к синхронному и поочередному вызову функций. Это касается сложных анимаций, таймаутов, аякса, когда за одним должно следовать другое, и так дальше.

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

UPD
image
Ниже моё решение, являющееся аналогом этой функции модуля async и кучи других подобных решений, представленных в комментариях. Спасибо всем комментирующим и sedictor в частности.
/UPD

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

var html = '';
request.on('response', function (response) {

    response.on('data', function (chunk) {
        html = html + chunk;
    });

    response.on('end', function() {
        //какой-то парсер
        parse(html, function(data){  
                //какая-нибудь функция, добавляющая данные в базу
		addToDatabase(data, function() {  
			doSomething();
		})
	});

    });
});


Много вложенных колбеков — не есть гуд, пробуем по-другому.
Читать дальше →
Total votes 50: ↑40 and ↓10+30
Comments33

Разработка простого расширения для google chrome

Reading time6 min
Views47K
imageРасширения для браузеров очень популярны в наше время. Повод написать какое-либо расширение всегда найдется, и их напашется еще много.

В данной статье я хочу рассказать о том как я написал небольшое расширение для google chrome в личных целях. А цель статьи — помощь молодому программисту, с трудом понимающему английский язык. Не каждый на 3ом курсе сможет читать гугловскую документацию, которая есть только на английском. А сделать расширение хочется.

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

Данный пост будет более продвинутой версией.
Читать дальше →
Total votes 115: ↑106 and ↓9+97
Comments26

Синтез речи в Chrome

Reading time1 min
Views20K
Google внедрил в браузер интерфейсы Text-to-Speech API, так что теперь любое приложение или расширение Chrome способно читать текст вслух. Синтез речи из расширения осуществляется элементарной командой

chrome.tts.speak('Hello, world!');

(предварительно требуется добавить tts в список разрешений для данного расширения).

С помощью модуля chrome.ttsEngine можно прикрутить к браузеру свой собственный движок синтеза речи, например, для русского языка.
Читать дальше →
Total votes 55: ↑45 and ↓10+35
Comments19

Information

Rating
Does not participate
Location
Воронеж, Воронежская обл., Россия
Date of birth
Registered
Activity