Pull to refresh
87
0
Иван Ефимов @limon_spb

User

Send message

Как я СКАДу писал. Часть вторая

Reading time4 min
Views8.5K
Всем доброго времени суток. Прошу прощения за столь долгое отсутствие информации, но Хабра-эффект меня накрыл по всем фронтам после моей первой публикации, я даже не ожидал, что так сильно будет интересна разработка среди народа, и мне было очень лестно, что мой замысел окажется интересен людям в качестве моих мозгов и знаний. Но обо всем вкратце и по-порядку. Так как меня уже поругали за столь портяночный стиль прошлого блога, буду краток…
Первая часть истории моего суицида начиналась здесь «Как я СКАДу писал»: habrahabr.ru/blogs/programming/124427

Читать дальше →
Total votes 44: ↑39 and ↓5+34
Comments23

Пиксельные искажения с билинейной фильтрацией в HTML5 canvas

Reading time3 min
Views8.7K

В данном посте я хочу описать простую методику пиксельного искажения изображения на «чистом» javascript в 2D-Canvas без использования специальных библиотек и шейдеров, путём прямого доступа к пикселям изображения. Надеюсь, это будет интересно и полезно как для общего развития, так и для решения каких-то задач.

Читать дальше →
Total votes 55: ↑52 and ↓3+49
Comments23

HTTP — протокол уровня приложений

Reading time4 min
Views94K
Данная статья является переводом первой статьи из цикла статей о протоколе HTTP с сайта opera.com.
Пересоздал её, чтобы тип статьи стал переводом.

Введение


В Бутане, когда люди знакомятся, они обычно приветствуют друг друга словами «Твоё тело чувствует себя хорошо?». В Японии они могут кланяться, в зависимости от обстановки. В Омане мужчины обычно целуют друг друга в нос, после рукопожатия. В Камбодже и Таиланде они обычно соединяют ладони, как при молитве. Это все протоколы общения, простая последовательность кодов, которая имеется значение и готовит обе стороны к обмену информацией.

В Интернете есть очень эффективный протокол прикладного уровня, который готовит компьютеры к обмену информацией: Hypertext Transfer Protocol, или HTTP. HTTP — протокол прикладного уровня поверх коммуникационного протокола TCP/IP. HTTP часто упускается из вида при изучении веб-дизайна и веб-разработки, что является ошибкой: понимание его помогает определить лучший способ взаимодействия с пользователями, достичь лучшей производительности сайта и создает эффективный инструмент для управления информацией в сети Интернет.

Это первая статья из серии статей, целью которой является научить основам HTTP и эффективному его использованию. В этой статье мы увидим на каком этапе HTTP работает в механизме Интернет.
Читать дальше →
Total votes 58: ↑45 and ↓13+32
Comments19

Узбекский математик Б.Пономарев разгадал теорему Ферма! Проверим?

Reading time3 min
Views11K
Давным-давно в 1637 году Пьер Ферма имел глупость написать на полях «Арифметики» Диофанта следующее: «… невозможно разложить куб на два куба, биквадрат на два биквадрата и вообще никакую степень, большую квадрата, на две степени с тем же показателем. Я нашел этому поистине чудесное доказательство, но поля книги слишком узки для него».

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

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

Недавно сразу несколько достаточно авторитетных по местным меркам новостных порталов взорвала новость: Узбекский математик разгадал теорему Ферма — Математик из Ташкента Борис Пономарев утверждает, что отыскал «простое оригинальное доказательство» Великой теоремы Ферма — загадки, над которой ученые всего мира бьются вот уже 350 лет (например, здесь, здесь и здесь). В одной из них даже было приведено доказательство.
Читать дальше →
Total votes 124: ↑100 and ↓24+76
Comments123

Резервное копирование данных в MySQL

Reading time5 min
Views151K
Резервное копирование базы данных — это такая штука, которую вечно приходится настраивать для уже работающих проектов прямо на «живых» production-серверах.
Подобная ситуация легко объяснима. В самом начале любой проект еще пуст и там просто нечего копировать. В фазе бурного развития головы немногочисленных разработчиков заняты исключительно прикручиванием фишек и рюшек, а также фиксом критических багов с дедлайном «позавчера». И только когда проект «взлетит», приходит осознание, что главная ценность системы — это накопленная база данных, и её сбой станет катастрофой.
Эта обзорная статья — для тех, чьи проекты уже достигли этой точки, но жареный петух ещё не клюнул.
Читать дальше →
Total votes 88: ↑84 and ↓4+80
Comments52

JavaScript. Оптимизация: опыт, проверенный временем

Reading time10 min
Views41K

Предисловие


Давно хотел написать. Мысли есть, желание есть, времени нету… Но вот нашлось, так что привет, Хабра.
Здесь я собрал все идеи, которые помогали и помогают в разработке веб-приложений. Для удобства я разбил их на группы:
  1. Память
  2. Оптимизация операций
  3. Выделение критических участков
  4. Циклы и объектные свойства
  5. Немножко о DOM
  6. DocumentFragment как промежуточный буфер
  7. О преобразованиях в объекты
  8. Разбитие кода
  9. События перетаскивания
  10. Другие советы

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

Память

Хоть это и не должно волновать клиентского программиста, но не забываем, что память всё-таки не бесконечна и когда-нибудь может закончиться, например, когда запущено несколько массивных программ: офис, графический редактор, компиляция большой программы и др. Несмотря на то, что приведенный пример тривиален, у меня действительно такое случилось, хоть и не из-за браузера, но он тоже сыграл свою роль: 1,3 Гб оперативы (отладчик, около 30 вкладок), начались тормоза по перегрузке страниц ОП в файл подкачки.
Чтобы уменьшить расход памяти, я предлагаю несколько способов:
Читать дальше →
Total votes 113: ↑92 and ↓21+71
Comments99

Qt — статическая линковка библиотеки под Windows

Reading time2 min
Views58K
Всем доброго времени суток, решил написать эту статью специально для тех кто хочет или еще захочет чтобы его программка написанная c помощью Qt под Windows работала даже там где о Qt и не слышали, на Хабре есть статья где данная проблема решается сопровождением нашего .exe библиотечками от skazkin. Сам очень долго искал решение этого вопроса, но практически везде об этом говорили говорили, но ничего действенного так и не получалось. В итоге собирая и анализируя все что приходило мне из разных источников, я наконец-то сделал это и если кому ещё интересно всех прошу под кат
Читать дальше →
Total votes 53: ↑40 and ↓13+27
Comments45

Как я узнал, что у нас сливают трафик

Reading time5 min
Views13K
Приветствую Вас уважаемое хабра-сообщество. Хочу поведать Вам о том, как сливали трафик у одного из моих клиентов.
Сидел я поздним вечером, и решил пройтись по сайтам клиентов, и на одном из них, я увидел, что чуть-чуть сместился один div.
Посмотрев исходный код и пролистав его туда-сюда раз 10, я увидел, что скрипт подгружается с интересного домена:

Трудно заметить, что последний подключаемый скрипт ведет на goog1(цифра)e-analitics.com
Читать дальше →
Total votes 167: ↑154 and ↓13+141
Comments85

Ошибки вычислений в окрестностях машинного нуля

Reading time4 min
Views5.1K
Периодически на хабре возникают замечательные статьи о тонкостях арифметики с плавающей точкой. Собственно, упомянутая публикация стала одним из первых источников, прочитанных при попытках разобраться с проблемой. Яснее от этого сразу не стало, но тем не менее, организация нейронных связей как-то упорядочилась. Ближе к делу.

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

Читать дальше →
Total votes 44: ↑39 and ↓5+34
Comments39

Паттерны ООП в метафорах

Reading time17 min
Views560K
Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
Читать дальше →
Total votes 214: ↑201 and ↓13+188
Comments86

Float'омания: разъяснение как работает css свойство float

Reading time2 min
Views149K

После того как меня шестьдесят восьмой раз спросили почему блок с float отображается неправильно, я решил написать эту заметку, которая объяснила бы типичные ситуации, с которыми сталкивается начинающий верстальщик, а так же для того, чтобы в следующий раз просто дать ссылку на эту статью.
Читать дальше →
Total votes 132: ↑114 and ↓18+96
Comments100

Универсальное чтение ячеек в PHPExcel

Reading time4 min
Views102K
Привет, Хабр!
Мне по работе часто приходится импортировать Excel-документы средствами PHP.
Для этого я использую библиотеку PHPExcel, которая на сегодняшний день является весьма удобным инструментом.
Но есть несколько «скользких» моментов, связанных с чтением данных из ячеек, о которых я хочу рассказать хабрачитателям, а также разобрать функцию, решающую эти проблемы.
Читать дальше →
Total votes 52: ↑48 and ↓4+44
Comments29

Пьеса «Разработка многопользовательской сетевой игры.» Часть 4: Переходим в 3D

Reading time6 min
Views9K
Piccy.info - Free Image Hosting

Часть 1: Архитектура
Часть 2: Протокол
Часть 3: Клиент-серверное взаимодействие

В последнее время работаю с 11 flash на примере движка AWAY3D 4. Информации на русском по этому движку очень мало. На хабре о нем практически ничего нет. Вот решил написать пару статей об этом очень интересном продукте. Писать про простые кружки и кубики не совсем интересно. Не люблю обсуждать сферических коней в вакууме.
В общем решил сделать описание движка на боле менее реальном примере. Переведем нашу игру в топдаун 3D шутер. И продолжим разработку, но уже с применением 3D технологий.
Конечно я в курсе, что есть движок Alternativa3D. Но мне их продукт не нравится по многим причинам. Обсуждать их в статье не будем, если есть вопросы, добро пожаловать в каменты.

В общем будем делать альтернативу альтернативе…

Добро пожаловать в альтернативную реальность...
Total votes 19: ↑18 and ↓1+17
Comments20

Kinetic ScrollBar

Reading time4 min
Views14K
Эффект кинетической прокрутки сейчас можно встретить практически везде. Это действительно удобно при управлении пальцами или стилусом и довольно забавно при прокрутке мышкой.

В вебе такой эффект пока только приживается. Да и не так уж просто придумать, где он будет удобен… В голову приходят пожалуй лишь scroll bar’ы, которые используются для прокрутки некоторого контента, в основном картинок, внутри страницы. Для примера, можно посмотреть реализацию галереи практически на любом сайте. Согласитесь, было бы значительно интереснее, если бы ползунок не останавливался сразу, как только отпустили кнопку мыши, а продолжал бы двигаться дальше по инерции, постепенно останавливаясь…
Я попытаюсь рассмотреть процесс создания такого эффекта «кинетического» scroll bar’a. Что получилось в итоге можно посмотреть здесь
Читать дальше →
Total votes 28: ↑21 and ↓7+14
Comments20

Оптимизация JavaScript для ускорения загрузки веб-страниц

Reading time2 min
Views16K
Инженер из компании Google, автор трёх книг по веб-производительности и оптимизации, Стив Содерс (Steve Souders) опубликовал презентацию "JavaScript Perfomance" о том, какие методы нужно применять, чтобы скрипты меньше тормозили загрузку страниц.

По статистике WebPagetest, блокировка загрузки файлов .js на сайтах из Alexa Top 100 снижает среднее по медиане время загрузки страницы c 3,65 с до 2,487 с, то есть на 31%. Если вы видите медленную загрузку веб-страниц и хотите улучшить этот показатель, то, по мнению Стива Содерса, первым делом нужно посмотреть на JavaScript.
Читать дальше →
Total votes 40: ↑31 and ↓9+22
Comments12

CSS кнопки с помощью псевдо-элементов

Reading time5 min
Views47K


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

В этом уроке я покажу как создать кнопку с изюминкой, используя только якорный тег и мощь CSS.

Читать дальше →
Total votes 238: ↑230 and ↓8+222
Comments117

Моделирование большого количества взаимодействующих друг с другом частиц

Reading time6 min
Views30K
Рассмотрим ситуацию, когда необходимо обрабатывать столкновения между объектами. Как вы в этом случае поступите? Вероятно, самым простым решением будет проверить каждый объект с каждым другим объектом. И это правильное решение, и все будет замечательно до тех пор пока объектов не много. Как только их станет порядка нескольких тысяч, вы заметите, что все стало как-то медленно работать. А если частиц несколько десятков тысяч или сотен? Тогда все замрет. Вот здесь уже интересно, на какие хитрости и оптимизации вы пойдете, чтобы решить такую проблему.

Для простоты, будем рассматривать 2D случай, частицы круглые, радиус частиц у всех одинаковый.

Содержание


1. Обзор алгоритмов
1.1. Полный перебор
1.2. Sweep & Prune
1.3. Регулярная сеть
2. Некоторые оптимизации
2.1. Sweep & Prune
2.2. Регулярная сеть
3. Сравнение скорости выполнения
4. Приложение (программа и исходный код)
5. Заключение

Читать дальше →
Total votes 147: ↑145 and ↓2+143
Comments45

Топ-5 самых впечатляющих книг, которые должен прочесть каждый разработчик ПО

Reading time3 min
Views379K
Не так давно промелькнула ссылка на достаточно свежее (осень 2011) англоязычное голосование со скромным названием "самая впечатляющая книга, которую должен прочесть каждый разработчик программного обеспечения" и описанием:

Если бы вы могли вернуться в прошлое, к самому началу своей карьеры разработчика и сказать самому себе: «прочитай именно эту книгу», в самой начале своей карьеры разработчика, какую бы книгу вы рекомендовали?

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

Однако в данном небольшом посте я возьму на себя смелость перечислить ТОП-5 тех самых книг, победивших в голосовании, переведенных на русский язык. И дать небольшие комментарии, ведь книги действительно этого достойны. Да, лично я бы поменял некоторые места, однако положимся на «мнение зала» ресурса Stack Overflow.
Читать дальше →
Total votes 236: ↑219 and ↓17+202
Comments182

Классическая механика: о диффурах «на пальцах»

Reading time7 min
Views18K
Недавно взглянул на сорцы Farseer Physics Engine. Стало интересно как в этом движке реализован динамический объект. Как и ожидал, не встретил там привычных мне дифференциальных уравнений и их дискретных реализаций в виде разностных уравнений или дискретных моделей пространства состояний. Главная отмазка заявляемая причина отказа от «честной» механики во многих игровых физических движках — излишняя сложность работы с дифференциальными уравнениями и слишком большая вычислительная нагрузка.
Под катом мои изыскания на эту тему
Total votes 83: ↑79 and ↓4+75
Comments21

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity