Pull to refresh
  • by relevance
  • by date
  • by rating

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

Accessibility *Crowdsourcing
Привет! Я приглашаю вас поучаствовать в работе над переводом норматива Консорциума Всемирной паутины (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.

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

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

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

Основы


Комментарии


Комментарии в 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 *).

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

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

Programming *
Translation
[прим. пер.: продолжение перевода, первая статья тут]
тизер к статье с графикой на 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 так, как будто это один оператор.
Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Views 6.8K
Comments 24

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

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

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


В 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.
Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Views 4.1K
Comments 14

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

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

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


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

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

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

Простая Наука corporate blog
image

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

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

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

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

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

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

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

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

Читать дальше →
Total votes 55: ↑28 and ↓27 +1
Views 3.2K
Comments 53

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

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

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

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


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

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

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

Читать дальше →
Total votes 16: ↑5 and ↓11 -6
Views 4K
Comments 5

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

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


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

Читать дальше →
Total votes 19: ↑11 and ↓8 +3
Views 16K
Comments 9

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

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

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

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

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

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

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

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

Game development *Node.JS *
Translation


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

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

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

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

PHP *
Sandbox
Tutorial

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


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

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

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

И сразу под хабракат
Total votes 59: ↑55 and ↓4 +51
Views 83K
Comments 25

Путь к Selenium 3.0

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

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

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

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

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


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

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

Game development *Unity3D *

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


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

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

image
Читать дальше →
Total votes 82: ↑77 and ↓5 +72
Views 64K
Comments 37

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

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

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

Читать дальше →
Total votes 39: ↑31 and ↓8 +23
Views 32K
Comments 19

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

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

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

IT-companies
Sandbox


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

Вот 6 из них...
Total votes 54: ↑18 and ↓36 -18
Views 14K
Comments 26