Pull to refresh
3
0

User

Send message

История xkcd

Reading time5 min
Views21K
25 января 2003 года Рэндел Манро зарегистрировал доменное имя xkcd.com. Позже многие пытались найти смысл этого набора букв, предлагая автору свои версии: duck x назад без гласной, extreme keyboard configuration daemon и тому подобное. Но название самого популярного веб-комикса для гиков ничего не значит.

В начале нулевых Манро устал от смысловых никнеймов (Skywalker4, Animorph7 и так далее). Хотелось какое-нибудь слово, которое не надоест, которое будет принадлежать только его создателю. То было время, когда некоторые четырёхбуквенные адреса в зоне .com были свободны в отличие от сегодняшних дней тотального киберсквоттинга. Поэтому Рэндел подобрал четыре буквы, которые никто до него не использовал, которые ничего не значили и которые никак не произносились и не являлись каким-нибудь акронимом.

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

Тогда Манро ещё работал в НАСА, но занимался достаточно мелкими проектами, чтобы иметь возможность отвлечься на какую-нибудь ерунду. К примеру, однажды во время работы над алгоритмами навигации он запрограммировал робота, который возил его по офисам космического агентства на офисном стуле с колёсиками.
Читать дальше →
Total votes 66: ↑65 and ↓1+64
Comments18

Мемы в Parallels: «Релиз будет 1 мая… А сегодня какое мая?»

Reading time5 min
Views43K
image Внутренний фольклор и юмор своих разработчиков есть в каждой команде, хотя не в каждой его бережно собирают и архивируют. Но мы в Parallels заботливо делали это несколько лет подряд. Не так давно мы поделились профессиональным словариком девелоперов Parallels. А сегодня на очереди – возможность заглянуть в тот раздел нашего интранета, где мы храним свои мемы и шутки. Многие из них пришли аж из середины 2000х.

Разработка

  • И почему мне так в субботу хочется сделать commit, а в понедельник — revert?
  • [копаясь в перловом коде]… Проклятый не-C++!!!
  • Я нарисую эту диаграммку прямо сейчас. Возможно, даже сегодня.
  • — Эти виндовоз-девелоперы… – Нет, нужно говорить «разработчики для Windows», по аналогии с «афроамериканцами».
  • Ниибета — это бета, которая обязательно должна выйти независимо ни от чего
  • Раздолбайство и общий фрэймворк — разные вещи!
Читать дальше →
Total votes 111: ↑89 and ↓22+67
Comments44

Размышления о стандартной библиотеке JavaScript. Core.js

Reading time64 min
Views104K
Один пацан писал все на JavaScript, и клиент, и сервер, говорил что нравится, удобно, читабельно. Потом его в дурку забрали, конечно.
— С просторов интернета

К чему это я? Занятная штука — JavaScript. Основа современного web и на фронтэнде альтернатив как таковых не имеет.

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

Ванильная стандартная библиотека JavaScript, в целом, неплоха. Это не только стандартная библиотека по спецификации языка ECMA-262 актуальных версий — от 3 до черновика 6. Часть API вынесена в отдельные спецификации, например, API интернационализации ECMA-402. Многие возможности, без которых сложно представить JavaScript, например, setTimeout, относятся к web-стандартам. Консоль не стандартизована вовсе — приходится полагаться на стандарт де-факто.

Вот только не такая уж она и стандартная — везде разная. Есть старые IE, в которых из коробки мы получаем стандартную библиотеку ES3 90-бородатого года даже без Array#forEach, Function#bind, Object.create и консоли, и есть, например, Node.js, на которой многие уже вовсю используют возможности грядущего ES6.

Хочется иметь универсальную, действительно стандартную библиотеку, как на сервере, так и в любом браузере, максимально соответствующую современным стандартам, а также реализующую необходимый функционал, что (пока?) не стандартизован. Статья посвящена библиотеке core.js — реализация моих соображений по поводу стандартной библиотеки JavaScript. Кроме того, эта статья еще и шпаргалка по современной стандартизованной стандартной библиотеке JavaScript и заметки о её перспективах.

Содержание, или что получим на выходе:


Читать дальше →
Total votes 87: ↑82 and ↓5+77
Comments40

JarvisJS: Функциональное тестирование веб-приложений

Reading time4 min
Views17K
Здравствуй Хабр! В этом посте мы хотели бы поздороваться и впервые показать миру наш проект JarvisJS.com — сервис для функционального тестирования веб-приложений. Проект еще совсем молод и с любовью разрабатывается командой из трех человек в течении вот уже семи месяцев.

Под катом мы расскажем о нашем сервисе и о причинах, побудивших нас на его создание.
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments18

100 приемов по управлению временем, вниманием и энергией

Reading time15 min
Views290K
Примечание переводчика: Перевод первой статьи из блога «A Year of Productivity» был благосклонно встречен хабра-сообществом, и меня попросили перевести еще несколько статей из этого блога. Приведенная ниже статья — самая большая и самая близкая к практике, её перевод затянулся у меня на несколько месяцев. Как и прошлый раз рекомендую читать комфортными порциями, записывая (или копируя куда-нибудь) советы, которые хочется попробовать применить на практике.

«Хаки» времени


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

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

Для начала вот несколько моих любимых приемов по тому как:
-  получить больше времени;
-  тратить время на правильные вещи.
Читать дальше →
Total votes 71: ↑55 and ↓16+39
Comments53

Irrational Behaviour

Reading time5 min
Views10K
Рабочий инструмент программиста — его собственный мозг, второе оружие — работа в команде. Если вы довольно умны чтобы писать хорошие алгоритмы и быстро вникать в новые технологии, и вдобавок к этому хорошо интегрируетесь в команды, умеете находить общий язык с менеджерами, коллегами и заказчиками — то вы почти Гуру.

Однако, нередко, у программистов бывают проблемы со “вторым оружием” — работой в команде или коммуникацией. Пользователи задают глупые вопросы, сотрудники пишут странный код, менеджеры хотят чего-то непонятного — ну почему они все не настолько просты и логичны, как компьютеры?
Читать дальше →
Total votes 35: ↑26 and ↓9+17
Comments13

Трансдьюсеры в JavaScript. Часть первая

Reading time5 min
Views30K
Рич Хикки, автор языка Clojure, недавно придумал новую концепцию — Трансдьюсеры. Их сразу добавили в Clojure, но сама идея универсальна и может быть воспроизведена в других языках.

Сразу, зачем это нужно:

  • трансдьюсеры могут улучшить производительность, т.к. позволят не создавать временные коллекции в цепочках операций map.filter.takeWhile.etc
  • могут помочь переиспользовать код
  • могут помочь интегрировать библиотеки между собой, например underscore/LoDash могут уметь создавать трансдьюсеры, а FRP библиотеки (RxJS/Bacon.js/Kefir.js) могут уметь их принимать
  • могут упростить FRP библиотеки, т.к. можно будет выбросить кучу методов, добавив один метод для поддержки трансдьюсеров


Трансдьюсеры — это попытка переосмыслить операции над коллекциями, такие как map(), filter() и пр., найти в них общую идею, и научиться совмещать вместе несколько операций для дальнейшего переиспользования.

Читать дальше →
Total votes 56: ↑52 and ↓4+48
Comments56

Трансдьюсеры в JavaScript. Часть вторая

Reading time7 min
Views13K
В первой части мы остановились на следующей спецификации: Трансдьюсер — это функция принимающая функцию step, и возвращающая новую функцию step.

step⁰ → step¹

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

result⁰, item → result¹

Чтобы получить новый текущий результат в функции step¹, нужно вызвать функцию step⁰, передав в нее старый текущий результат и новое значение, которое мы хотим добавить. Если мы не хотим добавлять значение, то просто возвращем старый результат. Если хотим добавить одно значение, то вызываем step⁰, и то что он вернет возвращаем как новый результат. Если хотим добавить несколько значений, то вызываем step⁰ несколько раз по цепочке, это проще показать на примере реализации трансдьюсера flatten:

function flatten() {
  return function(step) {
    return function(result, item) {
      for (var i = 0; i < item.length; i++) {
        result = step(result, item[i]);
      }
      return result;
    }
  }
}

var flattenT = flatten();

_.reduce([[1, 2], [], [3]], flattenT(append), []); // => [1, 2, 3]

Т.е. нужно вызывать step несколько раз, каждый раз сохраняя текущий результат в переменную, и передавая его при следующем вызове, а в конце вернуть уже окончательный.

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

Итак, сейчас мы можем:
  1. Изменять элементы (прим. map)
  2. Пропускать элементы (прим. filter)
  3. Выдавать для одного элемента несколько новых (прим. flatten)

Читать дальше →
Total votes 33: ↑31 and ↓2+29
Comments57

Разбираемся с монадами с помощью Javascript

Reading time11 min
Views44K
Оригинальная статья — Understanding Monads With JavaScript (Ionuț G. Stan).
Буду признателен за комментарии об ошибках/опечатках/неточностях перевода в личку

От автора


Последние несколько недель я пытаюсь понять монады. Я все еще изучаю Haskell, и, честно говоря, думал, что знаю, что это такое, но когда я захотел написать маленькую библиотечку — так, для тренировки — я обнаружил, что хотя и понимаю, как работают монадические bind (>>=) и return, но не представляю, откуда берется состояние. Так что, вероятно, я вообще не понимаю, как это все работает. В результате, я решил заново изучить монады на примере Javascript. План был тот же, когда я выводил Y Combinator: взял изначальную задачу (здесь это взаимодействие с неизменяемым явно состоянием), и проделал весь путь к решению, шаг за шагом изменяя изначальный код.
Читать дальше →
Total votes 39: ↑37 and ↓2+35
Comments18

Как мы сделали радио, и почему нам хочется летать

Reading time6 min
Views9.1K


Уже седьмой год мы делаем проект, без ярких взлетов и падений. Этот проект — интернет радио. Нас часто спрашивают, зачем мы это делаем, для кого, и почему так долго, если о нас никто не знает — это побудило меня написать эту статью.
Читать дальше →
Total votes 47: ↑45 and ↓2+43
Comments48

Откровенные фото Дженнифер Лоуренс и еще десятков знаменитостей утекли через iCloud

Reading time2 min
Views928K
Личные фото некоторых знаменитостей, включая Дженнифер Лоуренс, Кейт Аптон и Ариана Гранде были опубликованы анонимным хакером на сайте 4Chan. Судя по всему, утечки стали возможными благодаря взлому аккаунтов от облачного хранилища Apple iCloud, в которое автоматически копируется информация со всех устройств Apple, о чем большинство пользователей даже не задумываются.

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

Пресс-секретарь Дженнифер Лоуренс сделал заявление, подтверждающее, что фотографии являются подлинными:


Читать дальше →
Total votes 206: ↑183 and ↓23+160
Comments328

Сделай свой AngularJS: Часть 1 — Scope и Digest

Reading time34 min
Views89K
Angular — зрелый и мощный JavaScript-фреймворк. Он довольно большой и основан на множестве новых концепций, которые необходимо освоить, чтобы работать с ним эффективно. Большинство разработчиков, знакомясь с Angular, сталкиваются с одними и теми же трудностями. Что конкретно делает функция digest? Какие существуют способы создания директив? Чем отличается сервис от провайдера?

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

В этой серии статей я собираюсь воссоздать AngularJS с нуля. Мы сделаем это вместе шаг за шагом, в процессе чего, вы намного глубже поймете внутреннее устройство Angular.
Сделаем Angular вместе
Total votes 73: ↑72 and ↓1+71
Comments18

Построение собственного JS SDK — зачем и как?

Reading time14 min
Views15K

Если вы пишете SDK для внутренних нужд единственного проекта, то многие вещи упрощаются: вопросы обратной совместимости стоят не так остро, вместо написания подробной документации можно лично ответить на вопросы коллеги, а обнаруженные ошибки относительно легко включить в проект. Если SDK делается для всех проектов крупной компании, то проблем становится намного больше. Но если ваш SDK предназначен для сторонних разработчиков по всему миру, то без таких вещей, как хорошая документация и автотесты, обойтись просто нельзя. Именно к последним можно отнести наш APS JavaScript SDK, и в этой статье я хочу рассказать о том, как он устроен и как мы стараемся максимально облегчить жизнь сторонним разработчикам, которые используют или будут использовать наш SDK.

Слайды для тех, кто не любит читать многобукв.

И для самых нетерпеливых: что у нас получилось и наша песочница.
Читать дальше →
Total votes 33: ↑30 and ↓3+27
Comments0

Учимся логично делать прототипы

Reading time9 min
Views65K
Зачем вам это?

  • Если вы знаете как делать сайт, этот метод поможет вам убедить заказчика, почему вы предлагаете ему именно этот вариант.
  • Если вы заказываете сайт, то сэкономите от 2 до 10 часов объяснений что вам нужно и зачем.
  • Если вы стартапер, то вся ваша команда сможет участвовать в создании нового сайта или лэндинга. Тот самый случай, когда одна голова хорошо, а команда лучше.
  • Если вы учите стартаперов, то сможете помочь им выглянуть из позиции «я знаю как надо» и без сопротивления подвести их к началам CusDev-a.

Читать дальше →
Total votes 58: ↑53 and ↓5+48
Comments9

Прокачай английский с LinguaLeo: cоздавай тематические словари, тренируй память и занимайся в группе!

Reading time4 min
Views34K


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

Во-первых, теперь каждый пользователь может создавать и публиковать тематические наборы слов на LinguaLeo. Ими можно поделиться со всеми или отправить ссылку на набор кому-то одному. Во-вторых, теперь все изучаемые наборы слов можно проводить через тренировку brainstorm. Она построена так, что пользователь быстро запоминает значение и написание слов. В третьих, изучать английский на LinguaLeo теперь можно в группе.

Под катом мы расскажем, что получилось и как оно работает.
Читать дальше →
Total votes 43: ↑34 and ↓9+25
Comments76

8 ловушек программирования

Reading time13 min
Views223K


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

Однако я верю в то, что их можно избежать, если знать в какие ловушки можно попасть и как из них выбираться. Возможно эта вера — очередная ловушка.
Читать дальше →
Total votes 276: ↑256 and ↓20+236
Comments83

Портативные аккумуляторы серии LZ от iconBIT

Reading time5 min
Views27K
Мы видим революции в тонкости смартфонов, их мощности и разрешении дисплея. А вот изменений в аккумуляторах мобильных устройств всё нет и нет. Производители конечно же пытаются использовать различные технологии для уменьшения размера батарей и увеличения времени автономной работы. Но, к сожалению, на деле это всё мало проявляется. Скорее всего такая тенденция пойдет и дальше. Производителю и дальше придётся выбирать между толщиной корпуса и производительностью, жертвовать чем-то в пользу установки более емкого аккумулятора.



Хотя на сегодняшний день некоторые флагманы ставят рекорды по времени автономной работы. За примерами далеко ходить не надо: Samsung Galaxy Note 3, LG G2 (как раз изображён на фото) или HTC M8. Но как быть тем, кто выбирает себе устройство в первую очередь по другим параметрам, а не по ёмкости аккумулятора? Один из вариантов — жизнь у розетки. Но для этого всегда придется носить с тобой зарядник и при каждом удобном случае подключать смартфон к розетке. Другой вариант — приобрести внешний аккумулятор, который позволит увеличить время работы устройства. Такие аксессуары выручают, если в неподходящий момент девайс неожиданно разрядился и выключился, оставив вас без связи с внешним миром.
Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments17

Nitecore SENS AA — когда фонари становятся умными

Reading time4 min
Views48K
Итак, давно стояла задача купить себе EDC (Everyday carry) фонарь-наключник. При выборе выделил три основных критерия: работа от элементов питания типа АА, относительно компактные размеры, базовая пылевлагозащита и, конечно же, должна быть фича! В итоге выбор пал на фонарь из популярной нынче категории "умные девайсы" — Nitecore SENS AA. Где той самой особенностью является возможность изменять яркость свечения в зависимости от угла наклона относительно поверхности земли.
image
Читать дальше →
Total votes 52: ↑45 and ↓7+38
Comments95

Atom: новый редактор кода от Гитхаба

Reading time3 min
Views130K
imageОт переводчика: вчера без официального объявления на Гитхабе были опубликованы несколько десятков репозиториев, содержимое которых свидетельствовало о том, что команда Гитхаба уже давно ведёт разработку нового текстового редактора для программистов и готова представить его публике. Несколькими часами позже заработал и официальный сайт редактора atom.io, на котором сейчас можно запросить инвайт на бета-тестирование, ознакомиться с документацией и плагинами к редактору. Эта статья — перевод двух первых постов из блога проекта Atom, посвящённых концепции и архитектуре редактора.

Представляем Atom


Сегодня мы с радостью готовы запустить публичную бета-версию Atom, нового текстового редактора, который не только лёгок в использовании, но и предоставляет огромную свободу модификаций.

Sublime и TextMate предлагают удобство, но лишь ограниченную расширяемость. С другой стороны, Vim и Emacs обладают огромной гибкостью, но сложны в освоении и требуют изучения специфических скриптовых языков для модификаций.

Мы считаем, что можем сделать лучше. Наша цель — бескомпромиссное сочетание удобства и настраиваемости: редактор, с которым может разобраться и школьник, только начавший изучать программирование, но в то же время и инструмент, который не будет ограничивать опытного хакера.
Читать дальше →
Total votes 86: ↑76 and ↓10+66
Comments57

Гитхаб скоро запустит текстовый редактор с богатым функционалом

Reading time1 min
Views33K
На Гитхабе скоро появится продвинутый редактор кода. Никакого официального объявления об этом команда Гитхаба пока не сделала, однако уже опубликованы около семидесяти репозиториев, по которым можно примерно представить себе функционал будущего редактора. Официальный сайт редактора, atom.io, пока содержит только заставку с одним словом: «Soon» («скоро»). [UPD: Сайт уже заработал.] В некоторых репозиториях есть и скриншоты будущего редактора:


Темная тема интерфейса
Читать дальше →
Total votes 105: ↑97 and ↓8+89
Comments70

Information

Rating
Does not participate
Registered
Activity

Specialization

Web Developer