Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Приглашение к участию в русском переводе WCAG 2.1

Accessibility *Краудсорсинг
Привет! Я приглашаю вас поучаствовать в работе над переводом норматива Консорциума Всемирной паутины (World Wide Web Consortium, W3C) – Руководства по обеспечению доступности веб-контента (Web Content Accessibility Guidelines, WCAG) редакции 2.1.

Руководство – это набор рекомендаций по обеспечению доступности веб-контента для людей с различными ограничениями, которые (рекомендации) фактически являются международным стандартом в этой области. Предыдущая редакция (WCAG 2.0) – является стандартом буквально – это ISO/IEC 40500:2012 Information technology. W3C Web Content Accessibility Guidelines (WCAG) 2.0.

Оригинальный текст на английском, черновой перевод на русский уже выполнен, но одна голова – хорошо, а много – лучше.
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 1.2K
Комментарии 5

Введение в OCaml: The Basics [1]

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

Основы


Комментарии


Комментарии в OCaml обозначаются символами (* и *), примерно так:
(* Это однострочный комментарий *)

(* Это комментарий
   на несколько
   строк.
*)

Другими словами, комментарии в OCaml очень похожи на комментарии в Си (/* ... */).

В настоящий момент нет однострочных комментариев (как #... в Перле или // ... в C99/C++/Java). Когда-то обсуждалась возможность использовать ## ..., и я весьма рекомендую окамловским товарищам в будущем добавить эту возможность (однако, хорошие редакторы открывают возможность использования однострочных комментариев даже сейчас).

Комментарии в OCaml вложенные, это позволяет очень просто комментировать куски кода с комментариями:
(* This code is broken ...

(* Primality test. *)
let is_prime n =
(* note to self: ask about this on the mailing lists *) XXX;;

*)

Вызов функций


Допустим, вы написали функцию, назовём её repeated, которая берёт исходную строку s, число n и возвращает новую строку, состоящую из n раз повторённой строки s.

В большинстве С-подобных языков вызов функции будет выглядеть так:
repeated ("hello", 3) /* this is C code */

Это означает «вызвать функцию repeated с двумя аргументами, первый аргумент — строка hello, второй аргумент — число 3».

Подобно остальным функциональным языкам программирования, в OCaml, запись вызовов функций и использование скобок существенно отличается, что приводит к множеству ошибок. Вот пример того же самого вызова, записанного на OCaml: repeated "hello" 3 (* this is OCaml code *).

Обратите внимание — нет скобок, нет запятых между аргументами.
Читать дальше →
Всего голосов 65: ↑59 и ↓6 +53
Просмотры 20K
Комментарии 80

Введение в OCaml: Структура программ на OCaml [2]

Программирование *
Перевод
[прим. пер.: продолжение перевода, первая статья тут]
тизер к статье с графикой на OCaml

Структура программ на OCaml


Теперь мы потратим немного времени на высокоуровневый анализ некоторых настоящих программ на OCaml'е. Я хотел бы показать вам локальные и глобальные определения, разницу в использовании ;; и ;, модули, вложенные функции, ссылки. Из-за этого мы столкнёмся с множеством концепций OCaml'а, которые пока что не имеют смысла для начинающего изучать OCaml, так как мы не встречали их ранее. Не фокусируйтесь на них, сконцентрируйтесь вместо этого на общем представлении о формате программ и особенностях языка, на которые я буду указывать.

Локальные «переменные» (на самом деле локальные выражения)


Возьмём нашу функцию average на Си и добавим в неё локальные переменные (сравните её с примером в прошлой главе).

double average (double a, double b)
{
  double sum = a + b;
  return sum / 2;
}

Теперь посмотрим на это для OCaml:

let average a b =
  let sum = a +. b in
  sum /. 2.0;;

Стандартное выражение let name = expression in используется для определения локального именованного выражения и name может быть использовано в дальнейшем вместо expression вплоть до ;;, который означает окончание локального блока кода. Обратите внимание, мы даже не использовали отступ после объявления in. Просто воспринимайте let ... in так, как будто это один оператор.
Читать дальше →
Всего голосов 25: ↑22 и ↓3 +19
Просмотры 6.8K
Комментарии 24

Введение в OCaml: Типы данных и сопоставление [3]

Программирование *
Перевод
[прим. пер.: продолжение перевода. первая часть, вторая часть]

Связные списки


В OCaml, так же как в Perl, есть встроенная на уровне языка поддержка списков. Все элементы списка должны быть одного типа. Для определения типа используется выражение:

[1; 2; 3]

Обратите внимание: точка с запятой, а не запятая.

[] означает пустой список.

У списка есть голова (первый элемент) и хвост (остальные элементы, кроме головы). Голова — элемент. Хвост — список. В вышеприведённом примере голова — целое число 1, а хвост — список [2; 3].

Альтернативной формой записи является использование оператора конструирования (cons) в форме head :: tail. Нижеприведённые строки полностью эквивалентны друг другу.

[1; 2; 3]
1 :: [2; 3]
1 :: 2 :: [3]
1 :: 2 :: 3 :: []

Зачем мы упомянули оператор конструирования? Он полезен когда мы начинаем сопоставление с образцом для списков, мы обсудим это чуть позже.

Тип данных для связного списка


Тип данных для связного списка целых будет int list; общий тип для связного списка объектов типа foo будет foo list.
Читать дальше →
Всего голосов 23: ↑21 и ↓2 +19
Просмотры 4.1K
Комментарии 14

Введение в OCaml: Нулевые указатели, утверждения и предупреждения [4]

Программирование *
Перевод
[прим. пер.: предыдущие части [1; 2; 3]
Предыдущие части переводил amarao, в этой части пункт про нулевые указатели также переведен им]

Нулевые указатели


Допустим, вы создали опрос на сайте, который спрашивает у читателей их имя и возраст. Единственной проблемой является, что по некоторым причинам некоторые из ваших читателей не хотят сообщать свой возраст — они упорно отказываются заполнять соответствующее поле. Что делает в этом случае плохой администратор базы данных?

Полагая, что возраст является целым числом, есть два варианта решения проблемы. Самый частый (и самый неправильный) это задать особое значение как признак незаполненности поля. Например, возраст -1 означает, что данные не были получены, иначе данные получены (даже если неверны). Этот метод отлично работает до тех пор, пока вы не решите посчитать средний возраст посетителей. Так как вы забыли учесть ваше специальное значение, вы приходите к выводу, что средний возраст посетителей семь с половиной лет, вы нанимаете веб-дизайнера для удаления всех длинных слов и переделки дизайна с использованием ярких цветов.
Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 2.8K
Комментарии 1

Презентация Samsung Galaxy Nexus и Android 4.0 (перевод на русский язык)

Блог компании Простая Наука
image

Пост адресуется хабралюбителям Android и ждущим выхода в свет Galaxy Nexus. А так же тем, кто любит смотреть презентации на родном языке.

Канал GTV перевел на русский язык презентацию Samsung Galaxy Nexus и Android 4.0 Ice Cream Sandwich, которая состоялась 19 октября 2011 года в Гонконге.

Приятного всем просмотра!
Читать дальше →
Всего голосов 30: ↑27 и ↓3 +24
Просмотры 13K
Комментарии 5

Могло ли слово «браузер» (и его производные формы) звучать в русской речи иначе?

Терминология IT
Утром во вторник 10 апреля 2012 года я увидел, что некий аноним в моём формспринге задал вопрос о том, что я думаю о статьях «Межсистемность» и «Межобозревательность», появившихся в сетевой вики-энциклопедии «Викиреальность» в феврале трудами участника, действовавшего под псевдонимом «Five Dollars».

А так как сообщество Хабрахабра проявляет заметный и неослабный интерес к вопросу о выборе между варваризмом и словородностью при переводе иностранных терминов (чего стоит хотя бы обсуждение перевода «Retina display», перевалившее далеко за сотню комментариев!), то я счёл формат Хабрахабра куда более подходящим для изложения своих воззрений, нежели формат Формспринга, где даже редактирование не предусмотрено.

Начну прежде всего с того, что термины «межсистемность» и «межобозревательность» представляются мне шагом, совершённым в правильном направлении — от варваризмов «кросс-платформенность» и «кросс-браузерность» к языку несколько более русскому.

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

Читать дальше →
Всего голосов 55: ↑28 и ↓27 +1
Просмотры 3.2K
Комментарии 53

Манипуляция пикселями на холсте с использованием Javascript

CSS *JavaScript *HTML *
Из песочницы
В данной статье будет рассмотрено управление изображением с помощью Javascript и HTML тега canvas. Статья является переводом. Оригинал на phpied.com.
Читать дальше →
Всего голосов 37: ↑32 и ↓5 +27
Просмотры 17K
Комментарии 8

Silverlight. Практическое руководство

Блог компании Издательский дом «Питер» Silverlight
image
Автор: П. Браун
Перевод: О. Сивченко
Дата выхода: 08/02/2012


Рецензия книги составлена на основе статьи Бена Мичелсона.

Доброго дня Хабраюзеры. Хотим вашему вниманию представить замечательное руководство по программной платформе Silverlight 4. Выбор прототипа для перевода пал на популярную серию In Action издательства Manning Publications.

Эта книга предназначена для веб-разработчиков, желающих создавать нетривиальные приложения при помощи Silverlight. Хотя в Silverlight достаточно много возможностей для веб-дизайнеров, это издание подойдет в первую очередь для тех, кто в совершенстве ориентируется в Visual Studio.

Читать дальше →
Всего голосов 16: ↑5 и ↓11 -6
Просмотры 4K
Комментарии 5

Изучаем jQuery. 2-е изд

Блог компании Издательский дом «Питер» Разработка веб-сайтов *JavaScript *
image
Автор: Э. Каслдайн, К. Шарки
Перевод книги: Вадим Черник
Автор рецензии: Алеся Серада (журналист, редактор www.dev.by).
Дата выхода: 23/07/2012


Вот еще одна книга нашего издательства, мимо которой сложно пройти. Если раньше у JavaScript была не очень хорошая репутация, то сейчас наступила новая эра во Всемирной сети для этого языка. Первые ниндзи «Изучаем jQuery» вышли в начале прошлого года и зарекомендовали себя очень положительно (отзывы на ozone.ru). Поэтому мы с радостью летом выпустили обновленное издание «Изучаем jQuery. 2-е изд.». Книгу можно приобрести как в печатном, так и в электронном виде.

Читать дальше →
Всего голосов 19: ↑11 и ↓8 +3
Просмотры 16K
Комментарии 9

Строки в C# и .NET

.NET *C# *
Перевод
image
От переводчика: Джон Скит написал несколько статей о строках, и данная статья является первой, которую я решил перевести. Дальше планирую перевести статью о конкатенации строк, а потом — о Юникоде в .NET.

Тип System.StringC# имеющий алиас string) является одним из наиболее часто используемых и важных типов в .NET, и вместе с тем одним из самых недопонимаемых. Эта статья описывает основы данного типа и развенчивает сложившиеся вокруг него мифы и непонимания.
Читать дальше →
Всего голосов 69: ↑64 и ↓5 +59
Просмотры 290K
Комментарии 38

Трудности перевода или как не стоит делать локализацию ПО

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

Немного предыстории

В студенческие годы я подрабатывал внештатным переводчиком в одном из бюро переводов Москвы. Занимался я в основном переводами по тематике своего образования, то есть переводил всё, что было связано с отраслью связи и телекоммуникациями. Платили по рыночным меркам мало, но как студента меня это тогда вполне устраивало.
Вся работа бюро переводов сводилась к тому, чтобы набрать заказов как можно больше, а затем распределить это между несколькими переводчиками. По сути некий вид краудсорсинга получался. Основным объектом лингвистических издевательств становилась документация на программное обеспечение или оборудование. Самыми яркими примерами в моей памяти остались перевод документации на SDH/PDH оборудование Huawei и перевод документации на платформу Comverse. Сотрудников компаний-заказчиков мне искренне жалко, и сейчас я расскажу, почему.
Читать дальше →
Всего голосов 95: ↑92 и ↓3 +89
Просмотры 41K
Комментарии 56

Создание многопользовательской realtime игры на node.js

Разработка игр *Node.JS *
Перевод


Несколько месяцев назад мы с коллегами решили сделать многопользовательскую realtime игру, которая могла бы работать в вебе. Мы решили использовать node.js для нашего сервера. Это решение привело к очень убедительному успеху — наш сервер работал несколько месяцев без единого падения или перезагрузки процесса.

Мы решили написать нашу игру на node.js, потому что мы слышали много хорошего об этой платформе и очень хотели немного с ней поиграть. И это было потрясающе — мы очень быстро вошли в тему. Для node.js существует множество любопытных библиотек, способных решать абсолютно разные задачи. Побочным преимуществом использования node для серверной части является, собственно, javascript — очень простой в обращении язык. Это позволило нам сфокусироваться на проблемах, которые встречаются во всех realtime играх, без лишней суеты, ограничений и необходимости компилировать код, как это случается при использовании менее динамических языков.

Также node.js проявил себя как очень легковесный язык, даже в моменты пиковой нагрузки. Для нашей игры, процесс node.js использовал только один поток и потреблял всего около 3-4% CPU при одновременной работе 8-10 копий игры, каждая со своим собственным движком обнаружения столкновений.
Читать дальше →
Всего голосов 64: ↑59 и ↓5 +54
Просмотры 51K
Комментарии 47

Генераторы в действии

PHP *
Из песочницы
Tutorial

Небольшое вступление


Не так давно я решил для себя, что пора восполнить большой пробел в знаниях и решил прочитать про переходы между версиями PHP, т.к. понимал, что остался где-то между 5.2 и 5.3 и этот пробел необходимо как-то устранить. До этого я читал про namespaces, traits и т.д, но дальше чтения не уходило. И вот тут я заметил генераторы, почитал документацию, одну из статей на хабре на этот счет и после этого возникла мысль — а как раньше без них жили-то?

Данным переводом хочу помочь хотя бы новичкам, поскольку на php.net документация по генераторам на английском и, на мой взгляд, должным образом не раскрывает всю идею и места применения. Текста много, кода чуть меньше, картинок нет. Потребуются общие знания, например, про итераторы. Очевидный код комментировать не буду, а вот сложные для понимания примеры постараюсь объяснить в силу своих знаний.

UPD1: Изменил расплывчатую формулировку, про которую говорили в комментариях.
UPD2: Добавил решение с принудительным break.

И сразу под хабракат
Всего голосов 59: ↑55 и ↓4 +51
Просмотры 83K
Комментарии 25

Путь к Selenium 3.0

Тестирование IT-систем *
Selenium 2 был выпущен в июле 2011 года. Прошло уже два года, но какие это были два года! Интеграция с WebDriver API-интерфейсами, которые были важным дополнением в Selenium 2, в настоящее время являются основой для стандарта W3C, изменения, написаные при поддержке Google, Mozilla и Opera. Было сделано 34 релиза, с официальной поддержкой Java, C#, Python, Ruby и JavaScript, и благодаря нашему сообществу написаны привязки для Perl, PHP и других языков. Изменения в коде вносились 57 различными авторами и еще множество других учавствовало в интернет-форумах, предлагая помощь и советы.

Пока все это происходило, мир изменился, и теперь пришло время для проекта Selenium смотреть дальше в будущее. И с большим удовольствием я теперь могу сказать, что мы работаем в направлении Selenium 3.
Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 11K
Комментарии 18

Делегаты и события в .NET

Программирование *.NET *C# *
Перевод
От переводчика. Судя по своему опыту, а также по опыту знакомых коллег-программистов, могу сказать, что для начинающего разработчика среди всех базовых функций языка C# и платформы .NET делегаты и события являются одними из наиболее сложных. Возможно, это из-за того, что необходимость делегатов и событий на первый взгляд кажется неочевидной, или же из-за некоторой путаницы в терминах. Поэтому я решил перевести статью Джона Скита, рассказывающую о делегатах и событиях на самом базовом уровне, «на пальцах». Она идеальна для тех, кто знаком с C#/.NET, однако испытывает затруднение в понимании делегатов и событий.

Представленный здесь перевод является вольным. Однако если под «вольным», как правило, понимают сокращённый перевод, с упущениями, упрощениями и пересказами, то здесь всё наоборот. Данный перевод является немного расширенной, уточнённой и обновлённой версией оригинала. Я выражаю огромную благодарность Сергею Теплякову aka SergeyT, который внёс неоценимый вклад в перевод и оформление данной статьи.


Люди часто испытывают затруднения в понимании различий между событиями и делегатами. И C# ещё больше запутывает ситуацию, так как позволяет объявлять field-like события, которые автоматически преобразуются в переменную делегата с таким же самым именем. Эта статья призвана прояснить данный вопрос. Ещё одним моментом является путаница с термином «делегат», который имеет несколько значений. Иногда его используют для обозначения типа делегата (delegate type), а иногда — для обозначения экземпляра делегата (delegate instance). Чтобы избежать путаницы, я буду явно использовать эти термины — тип делегата и экземпляр делегата, а когда буду использовать слово «делегат» — значит, я говорю о них в самом широком смысле.
Читать статью
Всего голосов 50: ↑44 и ↓6 +38
Просмотры 225K
Комментарии 5

Получение «зеленого света» в сервисе GreenLight: советы и рекомендации

Разработка игр *Unity *

1. Вступление


Всем привет! Не так давно мы стартовали ОБТ нашего нового online-проекта Metal War Online. Со временем мы захотели выйти на глобальный рынок посредством Steam и, как большинство коллег, осуществляем эту затею через сервис Greenlight. Нашему опыту прохождения аппрува и будет посвящен материал.

Сразу оговоримся, что мы не претендуем на какие-либо открытия и новаторские подходы. Наоборот, наблюдается некий дефицит простой доступной информации по Greenlight и хотелось бы собрать воедино пункты, знакомые всем, показав их важность для итоговой цели – получению «зеленого света».

image
Читать дальше →
Всего голосов 82: ↑77 и ↓5 +72
Просмотры 64K
Комментарии 37

C# для системного программирования

.NET *C# *
Перевод
От переводчика. Недавно на Хабре была опубликована статья «Будущее C#», описывающая новые фичи, которые, скорее всего, попадут в C# 6.0. Мне, как программисту .NET, эта статья очень понравилась, и я решил поискать дополнительную информацию о том, куда идёт C#/.NET. И вот, как будто прислушиваясь к моим новогодним пожеланиям, 27 декабря Джо Даффи (Joe Duffy) опубликовал в своём блоге статью «C# for Systems Programming», рассказывающую об исследовательском проекте под его руководством, направленном на создание нового языка и платформы на основе C#/.NET. Приятно впечатлённый статьей, я решил опубликовать её несколько вольный перевод на Хабре.

Вот уже на протяжении 4-х лет моя команда занимается проектированием и реализацией набора расширений для C#, предназначенных для системного программирования. В конце концов, я решил описать мой опыт по данной работе в серии постов, и данный пост является первым в этой серии.

Читать дальше →
Всего голосов 39: ↑31 и ↓8 +23
Просмотры 32K
Комментарии 19

Что объединяет NASA, Oculus Rift и Kinect 2?

Интерфейсы *
Из песочницы
Лаборатория реактивного движения NASA была в поиске более простого и естественного способа управления роботами в космосе в течение некоторого времени. В результате экспериментов предпочтение было отдано контроллеру Leap Motion для удаленного управления марсоходом и использованию Oculus Rift, плюс Virtuix Omni для организации виртуальной экскурсии по Красной планете.
Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Просмотры 9.9K
Комментарии 9

6 вещей, которые Сатья Наделла должен сделать прямо сейчас

IT-компании
Из песочницы


У нового CEO Microsoft Сатьи Наделлы есть длинный список дел, покрывающий долгосрочные планы, на исполнение которых уйдут месяцы и годы, но есть некоторые вещи, сделав которые прямо сейчас, он внёс бы позитивный вклад в компанию и укрепил себя в качестве лидера.

Вот 6 из них...
Всего голосов 54: ↑18 и ↓36 -18
Просмотры 14K
Комментарии 26