Pull to refresh
-2
0
webportal @webportal

Пользователь

Send message

Морской бой за 25 мс

Reading time9 min
Views66K

Предисловие


Несколько месяцев назад я решил изучить Python. В качестве одной из тестовых задач требовалось написать игру «Морской бой». Тогда я не сделал эту задачу, но в голову пришла идея написать «Морской бой», где будут играть два компьютера между собой. Эта мысль не оставляла меня, и я решил дерзнуть. Результат представлен на ваш суд. Буду признателен за любую конструктивную критику.

Общая концепция текущей реализации


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

Стратегия расстановки кораблей следующая: 2-3-4 палубные размещаются по краям карты (2 клетки), 1-палубный в центре (квадрат 6х6).

image
Читать дальше →
Total votes 44: ↑34 and ↓10+24
Comments28

Пишем быстрый и экономный код на JavaScript

Reading time16 min
Views69K
Такой движок JS, как V8 (Chrome, Node) от Google, заточен для быстрого исполнения больших приложений. Если вы во время разработки заботитесь об эффективном использовании памяти и быстродействии, вам необходимо знать кое-что о процессах, проходящих в движке JS браузера.

Что бы там ни было — V8, SpiderMonkey (Firefox), Carakan (Opera), Chakra (IE) или что-то ещё, знание внутренних процессов поможет вам оптимизировать работу ваших приложений. Но не призываю вас оптимизировать движок для одного браузера или движка – не делайте так.

Задайте себе вопрос:
— можно ли что-то в моём коде сделать более эффективным?
— какую оптимизацию проводят популярные движки JS?
— что движок не может компенсировать, и может ли сборка мусора подчистить всё так, как я от неё ожидаю?



Есть много ловушек, связанных с эффективным использованием памяти и быстродействием, и в статье мы изучим некоторые подходы, которые хорошо показали себя в тестах.
Читать дальше →
Total votes 78: ↑72 and ↓6+66
Comments29

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №141 (29 декабря 2014 — 4 января 2015)

Reading time4 min
Views50K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы, интересные материалы и IT-новости


Читать дальше →
Total votes 45: ↑42 and ↓3+39
Comments4

DOM-а хватит на всех, или как помирить ReactJS с тем фактом, что сторонние библиотеки меняют его DOM

Reading time3 min
Views20K
Современные JavaScript фреймворки, и ReactJS не исключение, обычно требуют эксклюзивного доступа к DOM и им очень не нравится, когда кто-то без их ведома этот DOM меняет. Проблема в том, что существует огромное количество сторонних библиотек (например, плагины jQuery), которым необходимо в их подконтрольном поддереве что-нибудь да вропнуть, анвропнуть, перенести в другое место и т.д. Обычно в таких случаях мы видим в консольке нечто подобное:

image

К счастью, эта проблема довольно легко и быстро решается. В этом посте я попробую изложить решение пошагово, но, если вам неинтересно, или вы спешите, просто поскрольте вниз к ссылке на гист с готовым решением. Итак, начнем.
Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments3

БЭМ с человеческим лицом и интеграция с backend

Reading time7 min
Views10K
Верстка современных web-проектов – это сложно, долго и дорого. Казалось бы, с переходом IE на автоматические обновления, HTML5, окончанием поддержки Win XP все мы должны зажить в сказочной стране с пони и радугой. Почему легче не стало?

  • HTML5 и CSS3 подарили вебу возможность создавать UI, почти не уступающий по сложности и отзывчивости desktop-приложениям. Ничто не дается просто так, HTML, CSS и JS стало в разы больше. Раньше нам хватало трех файлов: styles.css, stupid-ie-must-die.css, scripts.js. Сейчас количество скриптов, стилей, загружаемых шрифтов, картинок измеряется десятками и сотнями. Появилась необходимость в минификации, ускорении рендеринга и организации всего этого барахла в файловой системе.
  • Сайты постепенно перестали быть набором связанных гипертекстовых страничек и стали web-приложениями. Если раньше для многих сайтов достаточно было сверстать «главную» и «внутреннюю» страницы, то сейчас все совсем не так просто. Количество дизайн макетов легко достигает десятков и сотен.
  • Мы все наслушались про лендинг-пейдж, a/b-тестирование и многократное увеличение конверсии за «просто-так». Оставим за бортом вопрос об эффективности этих методик. Дизайн начали переделывать часто – это факт. Известно, что внесение изменений и поддержка – гораздо дороже и сложнее, чем разработка.
  • Появились мобильные устройства и необходимость в адаптивном дизайне. Тестировать стало сложнее и дольше. Цикл исправления найденных при тестировании багов стал дольше. Тестирование UI почти не поддается автоматизации, с ростом функционала время на регрессионное тестирование неуклонно растет.
  • Усложнилась интеграция с backend-кодом, появилась необходимость делать это гораздо чаще.


Все это заставляет задуматься об оптимизации работы с фронтэндом.


Хочется:
  • Уменьшить время и количество интеграционных работ («натягивание» сверстанного макета на серверную технологию)
  • Повысить повторное использование html, css и js, уменьшить количество соответствующего кода
  • Снизить время на модификацию существующего кода
  • Уменьшить количество ошибок при модификации, особенно регрессии
  • Научиться создавать и верстать адаптивный дизайн эффективно

Читать дальше →
Total votes 15: ↑8 and ↓7+1
Comments17

Корпорация IBM открыла доступ к Watson Analytics для всех

Reading time2 min
Views44K


Сервис Watson Analytics становится открытым практически для всех, пока в бета-версии. Ранее о намерении открыть доступ к Watson Analytics корпорация IBM уже заявляла, и сейчас обещание выполнено. Watson Analytics является частью проекта создания подразделения компании на основе IBM Watson. Общая стоимость проекта составляет более миллиарда долларов США.

Для тестирования возможностей сервиса в бета-режиме нужно было подать заявку, с сентября таких заявок было подано более 22 тысяч. Сразу после запуска открытого доступа появилась и группа Watson Analytics Community, участники которой занимаются обсуждением возможностей сервиса, а также популяризацией возможностей IBM Watson.

Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments5

Видео докладов Badoo с конференции Highload 2014

Reading time2 min
Views20K
Осенью мы выступали с докладами на одной из лучших технических конференций Highload 2014 и сейчас с удовольствием делимся с вами видео докладов. Вы можете задавать вопросы в комменариях и наши спикеры и остальные эксперты обязательно на них ответят.

1. «Sharding — patterns & antipatterns».
Доклад Алексея Рыбака (Badoo) и Константина kostja Осипова (Mail.ru).



Еще 5 отличных докладов
Total votes 41: ↑37 and ↓4+33
Comments13

CloudFlare + nginx = кешируем всё на бесплатном плане

Reading time2 min
Views57K

В бесплатной версии Cloudflare все замечательно (ей-богу сказка!), но список кешируемых форматов файлов весьма ограничен.
К счастью кеширование всего подряд (до 512 Мб на файл) можно настроить в одно два действия.

Читать дальше →
Total votes 54: ↑51 and ↓3+48
Comments6

Выразительный JavaScript: HTTP

Reading time19 min
Views122K

Содержание




Мечта, ради которой создавалась Сеть – это общее информационное пространство, в котором мы общаемся, делясь информацией. Его универсальность является его неотъемлемой частью: ссылка в гипертексте может вести куда угодно, будь то персональная, локальная или глобальная информация, черновик или выверенный текст.

Тим Бернес-Ли, Всемирная паутина: Очень короткая личная история

Читать дальше →
Total votes 40: ↑38 and ↓2+36
Comments4

Sublime Text для фронтэнд-разработчика

Reading time5 min
Views215K


Sublime Text на данный момент является одним из самых популярных текстовых редакторов, используемых для веб-разработки, поэтому надо знать его преимущества и недостатки. Вместо того, чтобы шаг за шагом описать все фичи Sublime Text, эта статья познакомит вас с самыми популярными приёмами и полезными плагинами, позволяющими ускорить разработку.
Читать дальше →
Total votes 50: ↑36 and ↓14+22
Comments46

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №136 (24 — 30 ноября 2014)

Reading time4 min
Views50K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы, интересные материалы и IT-новости


Читать дальше →
Total votes 61: ↑56 and ↓5+51
Comments5

Тонкости nodejs. Часть II: Работа c ошибками

Reading time5 min
Views19K
Обработка ошибок в JS – та еще головная боль. Не ошибусь, если скажу, что ошибки – самое слабое место всего языка. При чем проблема состоит из двух других: сложности отлова ошибки в асинхронном коде и плохо спроектированного объекта Error. И если первой проблеме посвящено множество статей, то о второй многие незаслуженно забывают. В этом материале я постараюсь восполнить недостаток и рассмотреть объект Error более пристально.
Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments15

Node.js в огне

Reading time6 min
Views51K
Мы создаем новое поколение веб-приложения Netflix.com, использующего node.js. Вы можете узнать больше о нашем походе из презентации, которую мы представили на NodeConf.eu несколько месяцев назад. Сегодня я хочу поделиться накопленным опытом в настройке производительности нового стека нашего приложения.

Мы впервые столкнулись с проблемами, когда заметили, что задержка запроса в нашем node.js приложении со временем увеличивается. К тому же оно использовало больше ресурсов процессора, чем мы ожидали, и это коррелировало с временем задержки. Нам приходилось использовать перезагрузку как временное решение, пока мы искали причину с помощью новых инструментов и техник аналитики производительности в нашей Linux EC2 среде.

Читать дальше →
Total votes 69: ↑64 and ↓5+59
Comments64

Решение проблем с RTZ2 после Microsoft Update KB2998527

Reading time3 min
Views21K
После выпуска упомянутого выше обновления многие разработчики столкнулись с проблемами. На текущий момент в Chrome проблему хоть как-то попытались исправить, а в IE10 (Document mode=«Standarts») все работает хорошо, но в более старых браузерах и режимах совместимости IE вся работа с датами развалилась.

Так сложилось, что из-за технических ограничений я вынужден поддерживать работу разрабатываемых мной приложений в IE8-9-10 и Chrome. Кроме того, для работы с датами использую библиотеку momentjs.

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

И вот настало время решить эту проблему самостоятельно.
Читать дальше →
Total votes 19: ↑16 and ↓3+13
Comments15

Eskimo — Node.js бойлерплэйт для создания прототипов

Reading time2 min
Views7.3K
eskimo

Эскимо — новый Node.js бойлерплэйт для быстрого прототайпинга (MVP).

Даже если интернет заполнен разными бойлерплэйтами и фрэймворками, на нынешний день отсутствует современный, модульный и минимальный бойлерплэйт для запуска прототипов (специально для строительства rapid minimal product-ов «RMVP's»). Проект создается с малого, одним человеком, но потом, под влиянием вкладчиков, он растет до непредсказуемых размеров. Поиск в Google и GitHub про Nodejs бойлерплэйт и Nodejs фрэймворк дает сотни результатов.

Но многие из этих запускателей проектов не имеют автоматизации для развертывания и тестирования продуктов. Некоторые игнорируют практику фронт-энда и не используют Bower, Bootstrap, Font Awesome, S3/CloudFront, clustering и LESS. И ни один бойлерплэйт или фрэймворк не внедрили инъекцию зависимостей с помощью электролита, за исключением Эскимо и проектов Джареда Хэнсона.
Читать дальше →
Total votes 17: ↑13 and ↓4+9
Comments8

Несколько интересностей и полезностей для веб-разработчика #33

Reading time5 min
Views53K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Walkway.js и Vivus.js




Вы видели этот великолепный лэндинг посвященный анонсу Sony PlayStation 4? Обратите внимание на анимацию SVG объектов состоящих из контуров. Они словно рисуются художником в режиме реального времени. Отныне этот эффект можно легко повторить с помощью Walkway и Vivus. Обе библиотеки максимально просты в использовании и применимы только для path элементов, поскольку принцип их работы основывается на взаимодействии с CSS свойством strokeDashoffset. Хоть и у Walkway значительно больше звезд на Гитхабе, зато Vivus предоставляет несколько вариантов отрисовки: Delayed, Async и OneByOne.

//Walkway
var svg = new Walkway('#test');

svg.draw(function() {
  console.log('Animation finished');
});

//Vivus
new Vivus('my-svg-id', {type: 'delayed', duration: 200}, myCallback);

Читать дальше →
Total votes 66: ↑52 and ↓14+38
Comments5

Дайджест интересных новостей и материалов из мира PHP № 51 (26 октября – 16 ноября 2014)

Reading time4 min
Views19K


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

Приятного чтения!
Читать дальше →
Total votes 61: ↑40 and ↓21+19
Comments44

Генерация HTML: удобнее чем хелперы и чистый HTML

Reading time6 min
Views37K
Писать чистый HTML часто неудобно, особенно если нужно делать динамические вставки.

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

В некоторых фреймворках есть хелперы, в частности написать эту статью меня вынудила Aura.Html. С хелперами иная история — они изначально задуманы для реального упрощения, поскольку одной командой могут генерировать хороший кусок HTML кода, но они в большинстве заточены под определённое использование, и что-то дальше этого выглядит слишком криво.

Как более универсальное решение было бы не плохо не изобретать причудливый синтаксис, а использовать самый обычный PHP и всем знакомые примитивные CSS-селекторы.

Размышляя в таком духе некоторое время назад я принялся пилить свой велосипед. Велосипед получился, использовался в рамках другого велосипеда, потом отделился, много раз обновлялся, и сейчас я хотел бы поделиться им с сообществом.
Под катом множество примеров
Total votes 38: ↑24 and ↓14+10
Comments33

Internet Explorer: Переход к живому Edge-режиму — следующий шаг к тому, чтобы веб просто работал

Reading time6 min
Views35K


Сегодня мы выпускаем новую сборку превью Windows 10 с существенным обновлением Internet Explorer в области интероперабельности. В соответствии с нашими планами, это обновление включает более 2000 исправлений проблем интероперабельности, добавляет поддержку 20 новых возможностей в платформе и привносит новых подход в архитектуре IE. Мы рады поделиться нашим прогрессом в этом направлении на ранних стадиях разработки, чтобы собраться максимальное количество отзывов именно в этот момент. Мы также выпускаем эту сборку для пользователей сервиса RemoteIE, доступного для Windows, Mac OS X и других платформ.

Edge-режим и новые классные фишки
Total votes 59: ↑46 and ↓13+33
Comments79

Подборка интересных CSS рецептов «Голые пятницы #3»

Reading time4 min
Views49K
голые пятницы

Здравствуй, дорогой читатель хабра!
Сегодня мы поговорим о градиентных границах, режимах наложения, о том, как рациональнее сверстать стандартную иконку меню. А так же откроем для себя заново старое css-свойство visibility и рассмотрим новое медиа-выражение @Supports.
Читать дальше →
Total votes 43: ↑40 and ↓3+37
Comments14

Information

Rating
Does not participate
Location
Набережные Челны, Татарстан, Россия
Date of birth
Registered
Activity