Search
Write a publication
Pull to refresh
0
0
Send message

Еще об эволюции гоночных автомобилей

Reading time4 min
Views55K
image
Недавно на хабре проскочил пост, который напомнил мне о такой забавной и довольно интересной вещи, как BoxCar2D (Оригинал, Версия из поста), которую в первый раз я увидел пару лет назад, и которая меня порядком впечатлила. И уже тогда я подметил в ней один фатальный недостаток (вкратце — ее сделал не я), но в тот раз руки так и не дошли до его исправления. И вот теперь я решил это исправить.

Итак, я расчехлил Visual Studio и принялся за дело.
Первым делом я просто повторил функционал BoxCar2D, а именно: фиксированный размер популяции, которая проживает свою жизнь и порождает следующее поколение. Можно было поиграться с тем, как усложняется трасса со временем, что содержит в себе геном и как машинки скрещиваются и мутируют.
Читать дальше →

Voldemort типы в D

Reading time4 min
Views18K
Данный пост расскажет об уникальной фишке D — Voldemort типы. Типы, которые можно использовать, но нельзя назвать. Данное название не очень подходит им, но Walter Bright очень любит так их называть. Voldemort типы очень часто встречаются в стандартной библиотеке Phobos, особенно в модулях std.algorithm и std.array. Осваивающие D могут часами штудировать документацию в поисках типа, возвращаемого из splitter или joiner, а возвращают они именно Voldemort типы. После этого поста можно смело открывать исходники std.algorithm, ибо никакие Сами-Знаете-Кто вам будут не страшны.

Он самый

Иногда, взаимодействие существующих возможностей может привести к неожиданным сюрпризам. Мне нравится считать, что мы изначально заложили Voldemort типы в D, но на самом деле они были найдены Андреем Александреску. Что это за Voldermort типы? Читайте дальше.

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

Простой сайт на D

Reading time3 min
Views26K
На хабре уже упоминался язык D. Но популярности он не получил из-за невозможности практического использования, а точнее большинству он просто не нужен.Сегодня хочу рассказать вам об одном полезном фреймворке для D. Большинство программистов хоть раз писали веб-сервер на компилируемом языке, но эти языки слишком низкоуровневы для такой задачи. Для такой задачи можно использовать этот язык в связке с фреймворком vibe.d;
Читать дальше →

Новый сервис логинов Login with Amazon

Reading time2 min
Views5.8K
Известная всем компания Amazon, которая занимается и торговлей, и хостингом, и устройствами для чтения электронных книг, и кто знает чем ещё, сегодня запустила сервис логинов.

Компания сообщает, что у неё более 200 миллионов активных пользователей, и что новый сервис призван облегчить процедуру идентификации пользователей на сайтах и в мобильных приложениях.
Согласно документации, настроив на своём сайте доступ через этот сервис, веб-мастер сможет получить данные пользователя (id, e-mail, имя и почтовый индекс), если пользователь захочет авторизоваться через Amazon.

В документации описаны сценарии интеграции для web, iOs и Android.
Читать дальше →

Вертикальная черта, затем ноль

Reading time3 min
Views41K
Заголовок, выраженный словами, понадобился только для поисковой находимости. Но речь пойдёт о роли символьной конструкции «|0» в JavaScript.

Впервые на неё я обратил внимание, когда переводил FAQ про asm.js и читал спецификации этого подмножества языка JavaScript. Там «|0» служит, например, для указания типа значения, возвращаемого из функции: увидели «|0» после значения — значит, перед нами знаковое целое.

Вдругорядь я заметил конструкцию «|0» в примере кода на Гитхабе, где происходило преобразование к целому числу результата деления на 1024².

Тогда глаза мои открылись, и я увидел прекрасные возможности:

( 3|0 ) === 3;       // целые числа не изменяет
( 3.3|0 ) === 3;     // у дробных чисел отбрасывает дробную часть
( 3.8|0 ) === 3;     // не округляет, а именно отбрасывает дробную часть
( -3.3|0 ) === -3;   // в том числе и у отрицательных дробных чисел
( -3.8|0 ) === -3;   // у которых Math.floor(-3.3) == Math.floor(-3.8) == -4
( "3"|0 ) === 3;     // строки с числами преобразуются к целым числам
( "3.8"|0 ) === 3;   // при этом опять же отбрасывается дробная часть
( "-3.8"|0 ) === -3; // в том числе и у отрицательных дробных чисел
( NaN|0 ) === 0;     // NaN приводится к нулю
( Infinity|0 ) === 0;     // приведение к нулю происходит и с бесконечностью,
( -Infinity|0 ) === 0;    // и с минус бесконечностью,
( null|0 ) === 0;         // и с null,
( (void 0)|0 ) === 0;     // и с undefined,
( []|0 ) === 0;           // и с пустым массивом,
( [3]|0 ) === 3;          // но массив с одним числом приводится к числу,
( [-3.8]|0 ) === -3;      // в том числе с отбрасыванием дробной части,
( [" -3.8 "]|0 ) === -3;  // и в том числе с извлечением чисел из строк,
( [-3.8, 22]|0 ) === 0    // но массив с несколькими числами вновь зануляется
( {}|0 ) === 0;                // к нулю также приводится пустой объект
( {'2':'3'}|0 ) === 0;         // или не пустой
( (function(){})|0 ) === 0;    // к нулю также приводится пустая функция
( (function(){ return 3;})|0 ) === 0;    // или не пустая

Итак, во-первых, перед нами удобное средство отбрасывания дробной части.

  • По отношению к отрицательным числам оно полезно тем, что дробное число превращается не в ближайшее меньшее целое число (возрастая по модулю), как это случилось бы после «Math.floor()», а в ближайшее меньшее по модулю целое число (возрастая по значению). Нередко именно это и требуется.
     
  • По отношению к положительным числам оно полезно уж тем одним, что конструкция «|0» более чем на порядок короче по сравнению с «Math.floor()». Поэтому она может и должна вызывать у разработчиков привыкание не меньшее, чем та принятая в jQuery запись «$()», о которой я говорил четыре дня назад, что с неё никто добровольно не перейдёт обратно на «document.getElementsByClassName()», например.

Во-вторых, перед нами удобное средство преобразования различных типов к целым числам.

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

Прошла DConf 2013 — конференция, посвящённая языку программирования D

Reading time2 min
Views7K
Чуть больше недели назад закончилась трёхдневная конференция по языку программирования D.
Про него уже неоднократно писали на Хабрахабре, а самой конференции был посвящён отдельный пост, где можно посмотреть полный список докладов.
Читать дальше →

Лёгкий сайт или как посадить браузер на диету

Reading time14 min
Views145K

А что если объединить профессионалов, работавших над крупными web проектами, чтобы создать исчерпывающее руководство по оптимизации front-end разработки?
И получить в результате не скучную инструкцию, а что то поинтереснее? А если позвать Briza Bueno (Americanas.com), Davidson Fellipe (Globo.com), Giovanni Keppelen (ex-Peixe Urbano), Jaydson Gomes (Terra), Marcel Duran (Twitter), Mike Taylor (Opera), Renato Mangini (Google), и Sérgio Lopes (Caelum) чтобы собрать лучшие практики?

Именно это мы и сделали! Мы научим вас создавать быстрые сайты.

Zeno Rocha, руководитель проекта.


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

Очередная игровая абстракция от Нотча — Drop

Reading time1 min
Views17K


Маркус «Notch» Перссон (автор всем известного Minecraft) в эти выходные запустил очередное свое развлекательное детище — смесь абстрактной аркады и клавиатурного тернажера. Имя этого чуда — Drop. Игра сделана на Unity3d, полностью бесплатна. Гипнотическая музыка и визуальные эффекты доставляют. Похоже, Нотч в клубе любителей слепого десятипальцевого метода и в легкой форме проводит агитацию.
p.s.: если нажимать пробел в процессе игры, то это дает бонус к набраным очкам.
p.p.s.: для игры необходим unity-плеер для браузера, можно взять тут

Собственно, вот ссылка на игру.

Разработчики игры Game Dev Tycoon подшутили над пиратами

Reading time1 min
Views340K
Что будет, если игроки скачают нелицензионную копию симулятора игровой студии, а в игре столкнутся с пиратством — да так, что играть станет невозможно? Разработчики новой игры Game Dev Tycoon не удержались от того, чтобы провести эксперимент. Вместе с платной версией своей игры они создали «крякнутую» пиратскую версию с небольшими изменениями.

Как говорит один из авторов, уже через минуту после регистрации на трекере игру начали активно качать.


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

Основной цикл в Javascript

Reading time9 min
Views78K


Все мы слышали про ajax и node.js. Они прочно обосновались уже не просто в словарном запасе, но и в наборе инструментов веб-разработчика. Ajax — асинхронное подтягивание данных с сервера на страницу, node — фреймворк с асинхронным IO. Но как в таком однопоточном языке, как Javascript, реализуется та самая асинхронность?

Вы, наверное, уже догадались из заголовка, речь пойдет об основном цикле («main loop»).
Читать дальше →

«Spirit»: Node.js MVC Framework

Reading time13 min
Views8.2K

Привет, ребята! С этого момента я хочу начать цикл статтей с подробностями по созданию сообственного MVC фреймворка для node.js, название которому будет — Spirit.

Первая статья будет состять из четырех частей:
1. Идея и миссия фреймворка
2. Настройка сервера
3. Создание каркаса фреймворка
4. Создание продвинутого и удобного роутера

Предупреждаю сразу, что статья — огромна, с кучей текста и большими блоками кода.

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

Асинхронная синхронность. JSDeferred

Reading time4 min
Views6.8K
В последнее время на хабре появилось несколько статей про работу с асинхронными вызовами (После всех асинхронных вызовов, Синхронизация асинхронных вызовов. WaitSync). Но при ближайшем рассмотрении область их применения довольно узка так как эти способы не решают всех проблем.
Но для начала попробуем определить эти самые проблемы, с которыми мы сталкиваемся при работе с асинхронными вызовами.
Читать дальше →

Установка расширений и приложений Chrome с сайта разработчика

Reading time2 min
Views10K
На прошлой неделе мы объявили о внедрении новых мер безопасности, позволяющих выявлять программы, которые нарушают правила Chrome по установке расширений браузера.

Использование стандартных механизмов для установки расширений Chrome выгодно не только пользователям, но и разработчикам. Рассмотрим в качестве примера установку расширений с сайта разработчика.

С помощью этой технологии можно дать пользователям Chrome возможность установить расширение или приложение прямо через UI вашего сайта. Это не только понятнее для пользователя (не надо идти на страницу Chrome Web Store, инициировать установку там, потом возвращаться на сайт разработчика), но и позволяет существенно увеличить количество загрузок расширения/приложения.

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

Система уведомлений о событиях на сайте (на примере аудиоплеера ВКонтакте)

Reading time2 min
Views37K
Приветствую.

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

NASA: видео результатов трёхлетних наблюдений за Солнцем

Reading time2 min
Views54K


NASA опубликовало четырёхминутное видео, полученное в результате наблюдений за Солнцем космического аппарата Solar Dynamics Observatory (SDO) в течение трёх лет. Агенство ставит целью этой миссии изучение влияния Солнца на нашу планету и оборудовало SDO солидной съемочной аппаратурой: полученное изображение размером 4096×4096 пикселей позволяет исследовать детали на поверхности светила с угловым размером 0.6". Аппарат выполняет съемку в 10-ти разных длинах волн и отправляет на командный пункт снимок каждые 12 секунд, что составляет около 3 терабайт данных в сутки или 1 петабайт в год.

Снимки Солнца, из которых собрано видео, сделаны в длине волны в 171 ангстрем (10−10 м) (что соответствует невидимому ультрафиолетовому излучению), и демонстрируют солнечное вещество температурой примерно в 600 000 К. При этом на видео заметно, что Солнце несколько меняет свой размер — это вызвано разным положением SDO относительно Солнца в период наблюдений.
Узнать подробности

Блог на node.js

Reading time1 min
Views13K
Вышла ноль пятая версия mvc фреймворка Autodafe для node.js. Код стало писать удобнее, кода теперь писать нужно меньше, ещё меньше. Скоро код писать не надо будет совсем, достаточно будет лишь подумать о нём.

Пример действия контроллера, которое совершает два асинхронных запроса к базе данных, компанует вьюшку index.html и отправляет ее клиенту (при этом отлавливая и обрабатывая все ошибки):

Site.prototype.index = function( response, request ){
  response.send({
    topic : this.models.topic.With( 'author', 'comments.author' ).find_by_pk( request.params.topic_id ),
    news  : this.models.news.find_all()
  });
}


Написаны подробные статьи про тонкости работы с контроллерами, авторизацию пользователей и работу с URL адресами.

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



За хабракатом только комментарии

Полный набор пакетов для разработки с помощью NodeJS

Reading time5 min
Views53K
Начал изучать NodeJS. Нигде не нашел актуальный стек мейнстримных библиотек (технологий) применяемых в node. Поэтому решил сам составить список.
Читать дальше →

Минифест (манифест разработчиков-минималистов)

Reading time6 min
Views50K
От переводчика

На днях в сети появился минисайт minifesto.org со здравой, на мой взгляд, тезисной выжимкой опыта подхода к стартапам (да и к разработке в целом). Манифестность текста смягчается от начала к концу, но это не делает его хуже.

Снова прошу прощения за отсутствие перевода словосочетания “computer science”.


Кратко


  • Боритесь за закон Парето, следите за тем, чтобы 20% вашего труда давало вам 80% результата;
  • Расставляйте приоритеты, ведь минимализм нужен для того, чтобы делать то, что нужно, а не распыляться по мелочам;
  • Лучшее — враг хорошего: сначала просто сделайте, потом сделайте правильно, потом сделайте лучше;
  • Убивайте в зародыше, не бойтесь начать всё сначала. Чем быстрее ошибётесь, тем быстрее научитесь;
  • Повышайте свою ценность. Постоянно думайте о том, чем можно помочь команде, — и развивайтесь в этом направлении;
  • Сперва основы. Мыслите последовательно, ориентируясь на лучшие практики мира Computer Science;
  • Посмотрите с разных сторон. Простое получается тяжелее, чем сложное, поэтому включайте воображение;
  • Синтаксис — основа взаимодействия. Мы пишем код для людей, а не для машин;
  • Не запутывайте. Старайтесь проектировать слоями, по мере возможности не зависящими друг от друга;
  • Вычищайте оставленное-на-всякий-случай. Минимализм борется с отвлекающим от основного.

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

Игрофикация – игра как мотивация в бизнесе

Reading time5 min
Views37K


Сначала главная новость – Coursera скоро будет доступна с субтитрами на русском, и первый курс как раз геймификация Кевина Вербаха.

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

Вообще, игрофикация или геймификация — это когда игровые механики накладываются на что-то в реальной жизни. В СССР, например, были соревнования смен, доска с лучшими работниками и так далее — всё это хорошие добрые игры, когда работа идёт не ради плана, а ради того, чтобы доказать свою крутость или просто поучаствовать в процессе. Ещё примеры:
  • Хабр. Карма, рейтинг плюс наши бейджи и инвайты: они создают дополнительную мотивацию писать посты.
  • Террористы. На самой лекции также говорилось, что боевики в Аль-Каиде проходят несколько уровней своего рода игры, каждый из которых разблокирует новые возможности в организации.
  • Обучение. Там же приводился пример про школу, в которой все в начальных классах стали играть роли в экипаже космического корабля. Учиться стало интересно уже не потому что так надо, а потому, что это помогало проходить сюжет.
Читать дальше →

Робот без кофеина

Reading time1 min
Views8.6K
В последнее время на конференциях всё чаще обсуждается тема, как создавать приложения под Android на различных языках программирования, кроме Java.

Android — пусть и не идеальная, но для прагматического разработчика самая лучшая мобильная платформа для open source проектов. Но все приложения бегут под Dalvik VM, так что вам любом случае придётся иметь дело с окружением Java.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity