В качестве предисловия к переводу. Открываем Firefox/Opera, переходим по ссылке, смотрим исходный код страницы и удивляемся. Потому что его нет. Под катом рассказ, как такое можно сделать.
Иван Мащенко @StrangeAttractor
User
Рабочая сила
6 min
21K Эти выходные я проработал за новым, исключительно приятным ноутбуком – думаю, вы уже догадываетесь, в чем именно заключалась его приятность. Угадали — коварные тайванцы из ASUS услышали наши молитвы и наконец-то решили сжалиться над измученными пользователям.

В ноябре компания представила общественности сразу две новых серии ноутбуков (P и B), одной из отличительных особенностей которых является полностью матовый дизайн.

В ноябре компания представила общественности сразу две новых серии ноутбуков (P и B), одной из отличительных особенностей которых является полностью матовый дизайн.
+35
Основы Linux от основателя Gentoo. Часть 3 (2/4): Модель прав доступа
10 min
72KTranslation
Второй отрывок третьей части серии руководств Linux для новичков. В котором вы сможете узнать, об одном из основных средств обеспечения безопасности в Linux. А именно, правах доступа и модели владения файлами.
+94
Зачем админу ITSM
4 min
21KНедавно мой виндовый админ спросил, стоит ли получить сертификат ITIL Foundation. Я кивнул. Сидевший рядом сонный сетевик тут же встрепенулся, показал скачанное пятикнижие ITIL v3 в векторном (!) pdf и гордо добавил, что вообще-то знать надо «это всё». Вот тут кивнуть голова у меня не поднялась.
+59
Watir: простой парсинг сложных сайтов
4 min
51K
Грубо говоря, проблема в том, что в браузере работает javascript, а на сервере его нет. Нужно либо писать интерпретатор js на одном из серверных языков (jParser и jTokenizer), либо ставить на сервер браузер, посылать в него запросы и вытаскивать итоговое dom-дерево.
В древности в таких случаях мы строили свой велосипед: на отдельной машине запускали браузер, в нем js, который постоянно стучался на сервер и получал от него задания (джобы), сам сайт грузился в iframe, а скрипт извне отправлял dom-дерево ифрейма обратно на сервер.
Сейчас появились более продвинутые средства — xulrunner (crowbar) и watir. Первый — безголовый firefox. У crowbar есть даже ff-плагин для визуального выделения нужных данных, который генерит специальный парсер-js-код, однако там не поддерживаются cookies, а допиливать неохота. Watir позиционируется разработчиками как средство отладки, но мы будем его использовать по прямому назначению и в качестве примера вытащим какие-нибудь данные с сайта travelocity.com.
+51
Создаем хардварный логгер клавиатуры
13 min
52KУ тебя наверняка не раз возникала ситуация, когда программные логгеры клавы не могли решить поставленных задач. Например, отловить пароль от биоса с помощью программного кейлоггера, загружаемого системой, невозможно. Лично я столкнулся с подобной проблемой, когда мне нужно было узнать админский пароль в локальной сети одной фирмы. Тогда я и подумал, что было бы очень круто сделать «железный» логгер, который бы подключался между клавиатурой и компьютером и ловил все нажатые клавиши, начиная с включения компьютера. В предлагаемой статье изложены принципы работы PS/2 интерфейса, и перехват данных, передаваемых по нему.

Парочка аппаратных логгеров клавиатуры
Для того чтобы сконструировать подобное устройство, сначала нужно разобраться с тем, как же работает клавиатура. Есть два основных типа клавиатур: АТ (старый стандарт) и PS/2. Отличаются они только разъемами: АТ имеет DIN, а PS/2 — miniDIN. Первый — большой круглый разъемчик с пятью штырьками, второй — маленький, как у мышки, с шестью пинами. По протоколу обмена они полностью совместимы. Наверняка, ты видел переходники с широких старых разъемов на новые маленькие. Этот стандарт появился еще в 1984 году вместе с первым персональным компьютером IBM PC и используется по сей день, практически не претерпев никаких изменений.

Парочка аппаратных логгеров клавиатуры
Принципы
Для того чтобы сконструировать подобное устройство, сначала нужно разобраться с тем, как же работает клавиатура. Есть два основных типа клавиатур: АТ (старый стандарт) и PS/2. Отличаются они только разъемами: АТ имеет DIN, а PS/2 — miniDIN. Первый — большой круглый разъемчик с пятью штырьками, второй — маленький, как у мышки, с шестью пинами. По протоколу обмена они полностью совместимы. Наверняка, ты видел переходники с широких старых разъемов на новые маленькие. Этот стандарт появился еще в 1984 году вместе с первым персональным компьютером IBM PC и используется по сей день, практически не претерпев никаких изменений.
+194
Тренды в дизайне иконок 2010
4 min
29K
Скажу пару слов о методике выявления трендов. Я работаю в компании, которая занимается иконками и интерфейсами, поэтому мне необходимо следить за новыми устройствами, программами и их интерфейсами. Плюс, некоторые выводы можно сделать по тому, что хотят наши клиенты, какие именно иконки они заказывают.
+145
Истоки происхождения латинского алфавита. Часть 1-я
5 min
18KTranslation
Мы видим каждый день на вывесках, афишах, упаковках, в книгах и журналах; фактически вы могли бы смотреть на него сейчас, читая оригинал данной статьи – латинский алфавит, или проще говоря – латиница, самый распространенный в мире алфавит. Книгопечатание является совсем недавним открытием, но для того, чтобы докопаться до происхождения алфавитов, нам нужно окунуться далеко в прошлое, в эпоху зарождения цивилизации.
Роберт Брингхерст пишет, что письмо это «твердая форма» языка, результат. Но письмо, конечно же, намного большее, и его происхождение, его эволюция, и то, как оно сплелось с нитями цивилизации несомненно превращает его в удивительную историю. И эта история охватывает около 5000 лет. Мы будем путешествовать на огромные расстояния, встречая императора, умницу Йоркширца, финикийскую принцессу Иезавель, «пурпурных людей»; мы пройдем через пустыни и плодородные равнины, переправимся через океаны. Мы начнем с того момента, когда зародилась цивилизация, пройдем через Средневековье, эпоху Возрождения, при этом обнаружим где же на самом деле возник наш алфавит, как и почему он стал развиваться, и почему же «А» выглядит как «А».
Роберт Брингхерст пишет, что письмо это «твердая форма» языка, результат. Но письмо, конечно же, намного большее, и его происхождение, его эволюция, и то, как оно сплелось с нитями цивилизации несомненно превращает его в удивительную историю. И эта история охватывает около 5000 лет. Мы будем путешествовать на огромные расстояния, встречая императора, умницу Йоркширца, финикийскую принцессу Иезавель, «пурпурных людей»; мы пройдем через пустыни и плодородные равнины, переправимся через океаны. Мы начнем с того момента, когда зародилась цивилизация, пройдем через Средневековье, эпоху Возрождения, при этом обнаружим где же на самом деле возник наш алфавит, как и почему он стал развиваться, и почему же «А» выглядит как «А».
+105
ОВР — Очень Важные Реакции
2 min
8.3KТак уж исторически сложилось, что одной из самых сложных задач школьной химии всегда являлись окислительно-восстановительные реакции. Электронные конфигурации атомов, комплексные соединения, и даже устройство солей перксеноновой кислоты не вызывают у детей столько оторопи, сколько уравнивание ОВР. Так как часть нашей команды занимается созданием сервисов для школьников, мы захотели помочь решить проблему с поиском окислительно-восстановительных реакций. Разумеется, нам очень не хотелось потворствовать списыванию, поэтому мы постарались сделать наш сервис обучающим, чтобы любому школьнику стало понятно, как же уравниваются те самые ОВР.
В первую очередь для всех имеющихся у нас окислительно-восстановительных реакций мы стали показывать соответствующие полуреакции.
Например, вот так:

В первую очередь для всех имеющихся у нас окислительно-восстановительных реакций мы стали показывать соответствующие полуреакции.
Например, вот так:

+65
Повышение производительности за счет блочного кеширования
5 min
5.7KТема блочного кеширования и ssi не раз проскакивала на Хабре. Ниже я представлю еще одну реализацию, использующего блочное кеширование, а также исходники фреймворка, использующего эти принципы, которые можно найти тут. А как это работает — прочитать ниже.


+42
KBookOCR for Linux. Убийца FineReader-а для Linux на начальной стадии
4 min
24KВступление
Возможно каждый из нас переживал период в своей жизни который сопровождался активно оцифровкой аналогов материала. Я имею в виду необходимость работы с текстом из неоцифрованных источников. Имеется в виду не только проблема сканирования, но и так же множество материала который к сожалению доходит до конечного потребитель не совсем в пригодном для использования виде. И я думаю у каждого из нас очень часто в голове пробегали лестные мысли об распространителя книги в формате djvu или pdf в котором весь контент был представлен сугубо графически без возможности использование материалов для своей деятельности.
+43
Менеджеры проектов гибнут в одиночку и зря: подними флажок!
4 min
3KВ работе я постоянно встречаю особых людей, которых объединяет черта характера, скрытая до тех пор, пока у вас нет общих задач. Одни — умны, прагматичны и педантичны. Вторые — никогда не унывают и всегда помогут советом. У третьих — харизма и обаяние такой силы, что над цитатой «бойтесь харизматиков, системы приносящих» можно вешать их фотографию.
Четвертые обладают оригинальным чувством юмора и способностью видеть вещи под другим углом. Пятые могут просочиться на любые мероприятия и взять с собой друзей. А шестые сидя в офисе постоянно ворчат и никого не любят. Всех этих людей объединяет одно — они не поднимают флажок.
Четвертые обладают оригинальным чувством юмора и способностью видеть вещи под другим углом. Пятые могут просочиться на любые мероприятия и взять с собой друзей. А шестые сидя в офисе постоянно ворчат и никого не любят. Всех этих людей объединяет одно — они не поднимают флажок.
+56
Устанавливаем неподдерживаемую Wifi карту в HP Pavilion dv6-1319er
4 min
199K
На хабре уже есть такие топики (например) о внесении изменений в BIOS ноутбука для поддержки сторонних карт mini pci-e, хочу и я вам рассказать о таком же подвиге, но на другом представителе ноутбуков HP Pavilion dv6-1319er
+41
Интервью с разработчиком reiser4 Эдуардом Шишкиным
14 min
18KВвиду того, что Эдуард — человек занятой, эпопея с интервью растянулась на неопределённый срок. Но, несмотря ни на что, разработчик reiser4 таки выделил время и ответил на вопросы уважаемого сообщества Хабра и ЛОРа. Что из этого вышло — читайте под катом.
+138
База GeoIP – страны и города
1 min
75KПри разработке одного проекта встала задача – определить по IP-адресу посетителя его страну и город, на русском языке. Поиск готового решения оказался безуспешным – русскоязычные базы стран можно найти (например, wipmania.com), но баз городов нет. Помощь пришла из-за границы, в лице англоязычного maxmind.com. База была приведена к нормальному состоянию (MySQL) и частично переведена на русский язык с помощью нескольких справочников (~6,000 названий, с учетом городов-тезок ~15,500). Результат этой работы доступен для свободного скачивания.
+82
IEnumerable<T> и IQueryable<T>, в чем разница?
2 min
48KУважаемые Хабровчане, решил поделиться одним не очевидным моментом использования LinqToSql, с которым столкнулся некоторое время назад. А именно, про особенности использования каскадных Linq запросов:
Работая над очередным ASP.NET MVC проектом, и проектируя уровень доступа к БД мне потребовалось проверить качество скриптов, генерируемых Framework-ом L2C.
class User {
public long Id { get; set; }
public string Name { get; set; }
public IEnumerable<Parameter> Parameters { get; set; }
}
class Parameter {
public long UserId { get; set; }
public string Name { get; set; }
public string Value { get; set; }
}
Для получения данных написан класс UserRepository:
class UserRepository: MyProjectDataContext {
public IEnumerable GetUsers() {
return this.Users.ToModelUsers();
}
}
static class RepositoryHelper {
public static IEnumerable<Model.User> ToModelUsers(this IEnumerable<DataAccess.User> users) {
return users.Select(u => new Model.User { Id = u.Id, Name = u.Name, Parameters = u.Parameters.ToModelParameters() });
}
public static IEnumerable<Model.Parameter> ToModelParameters(this IEnumerable<DataAccess.Parameter> parameters) {
return parameters.Select(u => new Model.Parameter {… });
}
}
пишем
var users = userRepository.GetUsers().ToList();
смотрим профайлер, и с удивлением обнаруживаем что для загрузки 10 пользователей и их параметров было выполнено целых 11 запросов.
Работая над очередным ASP.NET MVC проектом, и проектируя уровень доступа к БД мне потребовалось проверить качество скриптов, генерируемых Framework-ом L2C.
Что имеем (упрощенный вариант модели):
class User {
public long Id { get; set; }
public string Name { get; set; }
public IEnumerable<Parameter> Parameters { get; set; }
}
class Parameter {
public long UserId { get; set; }
public string Name { get; set; }
public string Value { get; set; }
}
Для получения данных написан класс UserRepository:
class UserRepository: MyProjectDataContext {
public IEnumerable GetUsers() {
return this.Users.ToModelUsers();
}
}
static class RepositoryHelper {
public static IEnumerable<Model.User> ToModelUsers(this IEnumerable<DataAccess.User> users) {
return users.Select(u => new Model.User { Id = u.Id, Name = u.Name, Parameters = u.Parameters.ToModelParameters() });
}
public static IEnumerable<Model.Parameter> ToModelParameters(this IEnumerable<DataAccess.Parameter> parameters) {
return parameters.Select(u => new Model.Parameter {… });
}
}
пишем
var users = userRepository.GetUsers().ToList();
смотрим профайлер, и с удивлением обнаруживаем что для загрузки 10 пользователей и их параметров было выполнено целых 11 запросов.
+22
Как покупать продажи, а не трафик?
5 min
16KЗдравствуй, хабрачеловек.
Посмотрели мы тут программу конференции Игоря Ашманова про поисковую оптимизацию. Целая секция посвящена тому, почему оптимизаторы берут оплату за трафик и позиции. И нет ни слова о том, чтобы брать оплату за продажи.
Если посмотреть комментарии к посту про причины недоверия SEO-шникам, становится очевидно, что хабражители в отличие от многих других клиентов SEO-компаний понимают: позиции в топе и объем трафика — это не самоцель. Интернет-магазину трафик на фиг не нужен, если он не дает ничего кроме нагрузки на сервер. Ему нужны покупатели. Не «потенциальные», а которые зашли на сайт и что-то купили.
За привлечение покупателей он даже готов платить. Но прежде чем отдавать деньги «seo-ребятам», а может даже прежде, чем открывать магазин — нужно решить для себя две вещи:
Посмотрели мы тут программу конференции Игоря Ашманова про поисковую оптимизацию. Целая секция посвящена тому, почему оптимизаторы берут оплату за трафик и позиции. И нет ни слова о том, чтобы брать оплату за продажи.
Если посмотреть комментарии к посту про причины недоверия SEO-шникам, становится очевидно, что хабражители в отличие от многих других клиентов SEO-компаний понимают: позиции в топе и объем трафика — это не самоцель. Интернет-магазину трафик на фиг не нужен, если он не дает ничего кроме нагрузки на сервер. Ему нужны покупатели. Не «потенциальные», а которые зашли на сайт и что-то купили.
За привлечение покупателей он даже готов платить. Но прежде чем отдавать деньги «seo-ребятам», а может даже прежде, чем открывать магазин — нужно решить для себя две вещи:
- как определить, какие маркетинговые мероприятия повлияли на повышение продаж?
- и вообще откуда известно, что продажи будут?
+34
Вы наверное шутите, мистер Дал, или почему Node.js — это венец эволюции веб-серверов
8 min
29K
Node.js — вещь, вокруг которой сейчас много шума, восторженных отзывов и гневливых выкриков. При этом, по моим наблюдениям, в умах людей закрепилось следующее представление о том что же такое Node.js: «это штука, позволяющая писать на JavaScript на серверной стороне и использующая JavaScript-движок от Google Chrome». Поклонники языка восторженно вздохнули: «Ах! Сбылось!», противники же процедили сквозь зубы: «Ну вот только еще этой ерунды с прототипами и динамической типизацией нам на серверах не хватало!». И дружно побежали ломать копья в блоги и форумы.
При этом многие представители обоих лагерей придерживаются мнения, что Node.js — это эзотерическая игрушка, веселая задумка для переноса языка браузерных сценариев на «новые колеса». Дабы быть до конца честным, признаюсь, что я так же придерживался подобной точки зрения. В один прекрасный момент, я набрался духу и решил «копнуть поглубже». Выяснилось, что создатель Node.js Райан Дал далеко не фанатик, а человек, пытающийся решить реальную проблему. А его творение — не игрушка, а применимое на практике решение.
+226
Кейс «Проектирование веб-сервиса бронирования билетов». Бизнес-анализ. Описание предметной области
2 min
16KПараллельно с описанием бизнес-процессов, контекста и профилей заинтересованных лиц необходимо изучать предметную область. Основными инструментами здесь являются словарь терминов (который лучше составлять совместно с экспертом предметной области) и диаграмма сущностей, которая изображает, какие есть сущности, и какие между ними есть взаимосвязи.
— Зрителю должно быть больше 14 лет (для сделкоспособности).
— Необходимо дополнительное пользовательское соглашение, в котором пользователю будет необходимо дать согласие на использование его персональных данных.
— В соглашении также должно быть указано, что услуга бронирования предоставляется безвозмездно.
Не стоит путать диаграмму сущностей с логической моделью данных! Она создается на так называемым концептуальном уровне, на ней намеренно не указываются атрибуты сущностей, а сами сущности не являются конечным вариантом хранения информации в базе данных, напротив, эта диаграмма представляет основу для составления логической модели данных.

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

+33
English Learning Hacks
2 min
9KМногим понравился первый пост об хаках в изучении английского. Настал момент для второго, финального.
+54
Information
- Rating
- Does not participate
- Location
- Praha, Hlavni Mesto Praha, Чехия
- Date of birth
- Registered
- Activity