Pull to refresh
44
0
Кто-то Другой @foo

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

Send message

cut и grep или awk?

Reading time2 min
Views79K
Часто в скриптах можно встретить что-то вроде foobar|awk '{print $1}' («часто» — это действительно часто).

Такой вызов awk всего лишь вывходит первую (n-ную) колонку из вывода предыдущей команды. Но это явный оверкилл! awk — довольно мощный язык потоковой обработки данных, и применение его как простого field-separator не есть хорошо.

Для вырезания из строки указанного поля лучше использовать команду cut. Она умеет меньше, а потому проще в использовании и быстрее.

В современном линуксе обработка вызова awk куда более сложна, чем вызов cut. В дебиане, например, awk — линк на /etc/alternatives/awk, который ведёт (чаще всего) на gawk. Который почти в 10 раз больше по размеру, чем cut. Разумееся, cut загружаеся быстрее.

cut умеет вырезать не только байты, но и нужные поля (опция -f). Поле — это текст между разделителями. По-умолчанию разделитель пробел/табуляция, но он легко меняется опцией -d.

Второй подход — использовать опцию -o у grep. Эта опция выводит не всю строку, а только совпадающее с критерием поиска grep. Очевидно бесполезно при поиске точной подстроки, но очень полезно при использовании регулярных выражений.

Например,
grep -v "#" /etc/inittab |cut -f 4 -d : -s
выведет список программ, запускающихся init'ом (четвёртое поле, поля разделяются двоеточием).

Или
grep http://\\S\\+ -o /var/log/apache2/error.log
выдаст список URL'ов из файла с ошибками (первый урл в строке).

… и никакого awk.

UPD: В комментариях подсказывают ещё более интересную конструкцию без запуска внешнего файла (команда read реализуеся средствами bash'а):
foobar | (read p1 p2; echo p1)

P.S. Речь не о единичном вызове (тут нет разницы awk, grep или даже python/perl). Речь о множестве вызовов в цикле в скрипте. Все примеры сравнивайте в цикле с сотнями (лучше тысячами) вызовов.

HTML5 для веб-дизайнеров. Часть 3: Мультимедиа

Reading time14 min
Views8.4K
HTML5 для веб-дизайнеров

  1. Краткая история языка разметки
  2. Модель HTML5
  3. Мультимедиа
  4. Формы 2.0
  5. Семантика
  6. HTML5 и современные условия


В истории всемирной сети каждый очередной виток перехода на новый уровень развития начинался с какого-нибудь технологического нововведения. Когда в HTML добавился элемент img, это в корне изменило облик сети. Затем введение JavaScript сделало ее более динамичной и интерактивной. Чуть позже появился Ajax, что открыло возможности для создания в сети полноценных приложений.

Современные веб-стандарты настолько продвинуты, что сейчас можно создать почти что угодно, используя лишь возможности HTML, CSS и JavaScript. Почти что угодно.

В спецификациях этих стандартов все еще есть пробелы. Так, если вы хотите сваять страницу с текстом и картинками, вы вполне обойдетесь HTML и CSS. Но если вам нужно опубликовать аудио или видео, тут неизбежно придется обратиться к сторонним технологиям — Flash или Silverlight.

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

HTML5 призван восполнить этот недостаток. В данный момент он вступает в прямую конкуренцию с собственническими технологиями, вроде Flash и Silverlight, и главное его преимущество в этой борьбе — ему не требуется плагины, так как его мультимедиа-возможности «вшиты» в браузеры.
Читать дальше →

Обзор свежих материалов, август 2010

Reading time4 min
Views605
Этот материал продолжает серию ежемесячных обзоров свежих статей по теме интерфейсов, новых инструментов и коллекций паттернов, интересных кейсов и исторических рассказов. Из лент нескольких сотен тематических подписок отбирается примерно 5% стоящих публикаций, которыми интересно поделиться. Предыдущие материалы: апрель, май-июнь, июль.


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

Веб-шрифты на распутье

Reading time11 min
Views31K
Перевод не претендует на 100%-ную точность, но я постарался максимально точно передать мысли и слог автора. Комментарии приветствуются.

Начиная с Интернет Эксплорера 4 в 1998-ом, а затем с марта 2008-ого и до марта 2010-ого, один за другим, вся «большая пятерка» десктопных браузеров — Сафари, Файрфокс, Опера и Хром — выкатили сравнительно похожие реализации правила @font-face для привязки шрифтов. Вместе с тем, неотъемлимая часть веб-издательского паззла, часть, которой не хватает с начала Веба, встала на место и теперь настоящая, веб-ориентированая типографика начинает принимать форму.

Для начала, обзор последних событий:
  1. 18-ого марта 2010 года была учреждена группа Web Fonts Working Group в W3C. Её первая задача была утвердить спецификацию WOFF как стандарт доставки sfnt (OTF и TTF) шрифтов в веб в «сжатом» виде.
  2. Была представлена отрисовка шрифтов в IE9 с помощью Windows’s DirectWrite в IE9 Platform Preview.
  3. Появились первые инструменты для подготовки веб шрифтов, такие как Font Squirrel’s @Font-Face Generator и EOTFAST.
  4. Пошла новая волна «шрифтохранилищ» в виде Typekit, Typotheque и бесплатного, опенсорсного Kernest.
  5. Появились первые “трастовые/кредитные” лицензии на веб-шрифты от дизайнеров коммерческих шрифтов.
  6. CSS3 Fonts Module включил в себя некоторые продвинутые свойства OpenType.
  7. Adobe Flash, когда-то надежная, кросс-платформенная среда замены текста (sIFR), сейчас выглядит абсолютно убогой.
  8. Google запустил бесплатный сервис шрифтов с растущей библиотекой. Все шрифты в библиотеке доступны и для частного хранения/использования.

Теперь пройдемся по пунктам…
Читать дальше →

Почему Git

Reading time8 min
Views69K
Было время, когда я ничего не знал про VCS, ни что это такое, ни тем более зачем это мне. И верхом своих достижений считал папочку с архивами версий. К моменту осознания необходимости системы контроля версий я уже набил шишек и прочувствовал необходимость такого инструмента. Но борландовский аналог CVS меня не впечатлил. У каждого файла свой номер версии. Как мне получить срез определенного релиза я так и не разобрался. А в это время SVN победоносно шла сквозь умы разработчиков. Черт, это было то, чего мне так не хватало. Прочитав доку и начав работать я просто влюбился в нее. Да, были трудности и определенные неудобства, но куда без них.
Так я и работал бы в SVN, но ничего не стоит на месте. В интернете уже потекли тонкие ручейки новостей про Git. Я не кидаюсь за каждой новой технологией, и прошло уже достаточно много времени, пока мне не прожужжали этим Git’ом все мозги. Мне стало любопытно, я вначале присматривался, примерялся, а потом плюнул и начал новый проект на Git. Мучался с ребятами 2 недели, накачал литературы, написал шпаргалку… ничего, привыкли, … а потом меня поперло.

Теперь меня регулярно просят рассказать про Git и что в нем такого. Уже надоело, поэтому этот пост для тех, кто еще сомневается.
Читать дальше →

Правильный захват контекста в Javascript

Reading time5 min
Views37K
Довольно часто во многих статьях я вижу, как люди захватывают контекст this для использования в анонимной функции и удивляюсь — то, что уже стало стандартом — просто ужасная практика, которая противоречит всем канонам программирования. Вам знакома такая запись?
var self this;
Может вам тоже стоит переосмыслить этот аспект?
Читать дальше →

OMF — микроформат для email. Опыт использования в сервисе чатов

Reading time3 min
Views3.4K
imageСовсем недавно компания Mail.ru разработала открытый стандарт OMF.

Open Mail Format (OMF) — это открытый стандарт разметки почтовых уведомлений. OMF позволяет вам улучшить представление ваших писем в интерфейсе почты Mail.Ru, повышая их эффективность и конверсию.
Ознакомиться с опытом использования...

Наш опыт участия в 10K Apart или как ужать 40 Кбайт кода в 10

Reading time6 min
Views8.7K
Не так давно на Хабре уже писали о контесте 10К Apart — соревновании на лучшее веб-приложение общим объемом до 10К, созданное с использованием только клиентских технологий: (HTML, CSS, Javascript, SVG и т.д).

image

Я хочу представить вашему внимаю нашу работу для этого контеста, которую мы с private_face делали по вечерам в течение двух недель: адвенчуру в стиле dungeon-crawler под названием «Fontanero» (исп. водопроводчик).
Читать дальше →

Создание игры на Javascript Canvas

Reading time13 min
Views71K

Здравствуйте! Я предлагаю вам со мной создать небольшую казуальную игру на нескольких человек за одним компьютером на Javascript Canvas.
В статье я пошагово разобрала процесс создания такой игры при помощи MooTools и LibCanvas, останавливаясь на каждом мелком действии, объясняя причины и логику добавления нового и рефакторинга существующего кода.
Читать дальше →

Обзор свежих материалов, июль 2010

Reading time4 min
Views867
Этот материал продолжает серию ежемесячных обзоров свежих статей по теме интерфейсов, новых инструментов и коллекций паттернов, интересных кейсов и исторических рассказов. Предыдущие материалы: апрель, май-июнь.



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

Не строим с нуля. Теперь у Вас есть шаблон для верстки HTML5

Reading time2 min
Views17K
Любовь к HTML5 продолжает вдохновлять Поля Айриша. Во-первых, он подарил нам Modernizr, а сейчас он объединился с Divya Manian для создания шаблона HTML5, который использует передовые техники, чтобы Вы могли начать использовать его в своей практике.

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

Корпоративный Jabber сервер: догнать и перегнать Google

Reading time7 min
Views33K
Я думаю все знают про Google Apps. Это великолепный сервис для организации почты и коллективной работы в рамках компании. Однако у него есть пара маленьких таких недостатков: он предоставляется as is во-первых, и вся ваша корпоративная документация, почта и переписка при использовании Google Apps будут храниться на серверах Google.

В итоге чаще всего серьёзные фирмы выбирают сложный путь — поддерживать все необходимые сервисы на собственных серверах. Этот путь, конечно, даёт массу преимуществ. Системный администратор компании сможет настроить что угодно и как угодно. Однако есть и один существенный недостаток: если у Google всё уже настроено и связано воедино, то вам придётся настраивать всё вручную. Плюс вы вряд ли сможете обеспечить вашу систему таким же красивым и удобным веб-интерфейсом.

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

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

Требования к html-верстке

Reading time6 min
Views76K

1. Верстка, аутсорсинг и технические задания


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

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

Кроссбраузерный text-overflow \(^_^)/

Reading time5 min
Views27K
В случае, когда текст не влезает в ширину блока, есть несколько вариантов его визуализации:
  1. Разрешить ему вылезать за пределы блока. В большинстве случаев смотрится весьма косячно.
  2. Обрезать текст по границе блока. То же смотрится некузяво.
  3. Обрезать и нарисовать скроллинг. Это вообще жуть какая-то.
  4. Обрезать и сделать плавное затухание к краю так чтобы места обрезания букв не было видно. Сложно применять в случае неоднородного фона. Приходится вручную прятать затухание, когда текст имеет ширину меньше или равную ширине блока.
  5. Укорачивать текст, вставляя вконце многоточие.
О реализации последней стратегии и пойдёт далее речь...

А теперь долгожданное порево

Internet Explorer Platform Preview 4. Обзор

Reading time3 min
Views952
Сегодня команда разработки IE9 объявила о выпуске новой версии IE9 Platform Preview.



Скачать можно тут ie.microsoft.com/testdrive (номер версии 9.0.7916.6000).

Напомню, что Platform Preview — это специальная версия, предназначенная для разработчиков. Она содержит в себе только движок рендеринга и движок javascript (+инструменты разработчика) и не содержит традиционного UI браузера.

После выхода IE9 PP4 следущая на очереди — бета версия.

Что нового в IE9 PP4?


Если кратко, то увеличение скорости, улучшение поддержки стандартов, фиксы багов и новые тесты и примеры.
Читать дальше →

Сам себе gzip: сжимаем скрипты на 20% лучше

Reading time13 min
Views1.7K
Повторяющиеся ключи

Если посмотреть на скрипт, сжатый Closure Compiler'ом, YUI Compressor'ом или еще чем-нибудь, можно увидеть бесконечные вереницы повторяющихся ключей: .prototype, .length, offsetParent и так далее. Попробуем избавиться от них на примере плагина jQuery UI Sortable. Скажу сразу, что gzip нам не переплюнуть, но когда его нет под рукой или нельзя им воспользоваться (например, на конкурсе 10K Apart), эта техника сжатия может оказаться весьма полезной.
Читать дальше →

Кубик Рубика на canvas

Reading time2 min
Views9.1K
Недавние посты об алгоритме сборки кубика 5×5 сподвигли меня написать эмулятор кубика на канвас. Автором статей про сборку предлагался свой кубик на OpenGL, но он мне многим не понравился. Надеюсь, с моим кому-нибудь удастся освоить алгоритм быстрее. Некоторые особенности и преимущества:
  • Кроссплатформенность, кроссбраузерность (IE за браузер не считаем), ненужность инсталлятора и прочие преимущества веб-приложения.
  • Поддержка кубиков от 2×2 и до бесконечности (пока грани не станут сильно маленькими и рендеринг не начнёт жестоко тормозить). В интерфейс вынесено до 11×11, но в библиотеке ограничений нет.
  • Псевдообъёмные грани для красоты.
  • Бесконечный undo-буфер.
  • Возможность замеса кубика (shuffle).
  • Слои вращаются легко и интуитивно, быстро привыкаешь. Крутить весь кубик (мышкой с зажатым шифтом или правой кнопкой) не так легко, но тоже можно привыкнуть.
  • Вся библиотека компактная, размещается в одном js-файле и не имеет никаких внешних зависимостей.
  • Лицензия MIT, а также открытые и не очень страшные исходники позволяют вставить кубик на ваш сайт и доработать по вкусу.
Читать дальше →

Как выучить любой язык за 3 месяца?

Reading time6 min
Views99K
Перевод статьи Тима Ферриса из его блога.

image

(Учебник Дзюдо Окано Исао, который я использовал для изучения японской грамматики)

Изучение языка не должно быть сложным.

Принципы когнитивной нейронауки и управления временем могут быть применены для достижения свободного владения языком на разговорном уровне (в данном случае определяется как 95%+ процентов понимания и 100% выразительных возможностей) в течение 1-3 месяцев.

Время прочтения: 15 минут

eCSStender: модульное средство реализации свойств CSS3 в прежних браузерах

Reading time1 min
Views839
Помните ли, как (много лет подряд) был известен проект IE7-JS (автор — Dean Edwards), нацеленный на подтягивание Internet Explorer 6 (а затем и Internet Explorer 7) до уровня современных браузеров?

Теперь другой разработчик развил эту идею. В последнее время появляются ведь и такие свойства CSS3, которые поддерживает только один современный движок (например, WebKit), или даже не поддерживает ни один (потому что все движки требуют к этому свойству своих префиксов: «-moz-», «-ms-», «-o-», «-webkit-» — а иначе не работают). Все браузеры нуждаются в костылях (более или менее основательных) для поддержки CSS3.

Библиотека eCSStender (автор — Aaron Gustafson) претендует на роль основы именно такого костыля. Я говорю «основы», так как сама по себе она предоставляет лишь небольшую (≈20 Kb JS) платформу, занимающуюся анализом CSS-стилей — а поддержкою конкретных CSS-свойств должны заниматься (работая поверх неё) отдельные расширения, написанные в соответствии с документацией. Сейчас есть ужé с полдюжины расширений, из которых половина — костыли для IE.

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

7 бесплатных сервисов для проверки сайтов (о которых вы могли и не знать)

Reading time2 min
Views257K
Картинка для привлечения внимания
Мне достаточно часто приходится использовать различные онлайн-сервисы для проверки доступности сайтов и их поверхностных тестов и проверок.
Как показал краткий опрос коллег — почти у всех эти наборы сервисов отличаются. Я хочу показать вам свой, прошу в
подробности

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity