Pull to refresh
113
0.1
Hint @Hint

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

Send message

Шаблоны проектирования с человеческим лицом

Reading time32 min
Views485K

image


Шаблоны проектирования — это способ решения периодически возникающих проблем. Точнее, это руководства по решению конкретных проблем. Это не классы, пакеты или библиотеки, которые вы можете вставить в своё приложение и ожидать волшебства.


Как сказано в Википедии:


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

image Будьте осторожны


  • Шаблоны проектирования — не «серебряная пуля».
  • Не пытайтесь внедрять их принудительно, последствия могут быть негативными. Помните, что шаблоны — это способы решения, а не поиска проблем. Так что не перемудрите.
  • Если применять их правильно и в нужных местах, они могут оказаться спасением. В противном случае у вас будет ещё больше проблем.

В статье приведены примеры на PHP 7, но пусть вас это не смущает, ведь заложенные в шаблонах принципы неизменны. Кроме того, внедряется поддержка других языков.

Читать дальше →
Total votes 148: ↑134 and ↓14+120
Comments98

Разрегистрация оконного крюка

Reading time3 min
Views46K

Холмс. А скажите, друг мой Ватсон, доводилось ли вам разрегистрировать оконный крюк, в особенности глобальный?

Ватсон. Хм… что же может быть проще, дорогой Холмс.
    ::UnhookWindowsHookEx( hhookMy);

Х. Не скажите, Ватсон, не скажите. После этого вызова DLL-модуль, содержащий функцию крюка, по-прежнему загружен во все процессы, в которые был загружен. Система выполняет выгрузку этого DLL лишь спустя некоторое время. А именно в тот момент, когда через очереди сообщений всех нитей (имеющих таковую очередь) пройдёт хотя бы по одному оконному сообщению. И так для каждого процесса на рабочем столе.

В. Вот, ничего себе!
Читать дальше →
Total votes 129: ↑110 and ↓19+91
Comments61

«Человек на острие ножа» — Джон Кармак, вехи достижений и вклад в игровую индустрию

Reading time29 min
Views69K


Фигура Джона Кармака в индустрии компьютерных игр (далее по тексту КИ) неоднозначна. Существует большое количество слухов и скандалов, связанных с его именем. Многие считают его неприятным человеком, и многие также считают его гением. Эти два свойства, кстати, не взаимоисключающи. Можно быть не самым приятным в общении человеком, но при этом делать удивительные вещи. В этой публикации мы не рассматриваем все заслуги Джона перед КИ, не обсуждаем его прения с членами команды, и не стараемся раскопать наибольшее количество скандалов. Даже историю Id Software затрагиваем не полностью, лишь вскользь касаясь пройденных Джоном вех.

Любой разработчик со стажем и любой отдавший всю свою жизнь индустрии может быть предметом глубоких исследований, множества публикаций, и даже книг. Однако все понимают, надеюсь, как много нужно времени, чтобы собрать всю эту информацию воедино, проверить и сопоставить факты, связаться с фигурантами, выработать четкую стратегию изложения. Чем больше проходит времени, тем плотнее пелена истории покрывает удаляющиеся от нас годы, откуда можно было бы извлечь знание. Одно дело если ты был очевидцем его, если читатель (или писатель) представляет старый пласт игроков и пласт людей интересующихся. Совсем другое дело если с материалом знакомятся люди, которые вообще не знакомы с играми Wolf3D, Doom, Quake и кому наборы букв IDDQD и IDKFA ничего не говорят. Как рассказать все и не утомить читателя? Как сосредоточиться на главном? Как не потратить недели и месяцы на публикацию казалось бы ненужной статьи?

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


Читать дальше →
Total votes 148: ↑143 and ↓5+138
Comments90

Ежедневная работа с Git

Reading time40 min
Views874K
Я совсем не долго изучаю и использую git практически везде, где только можно. Однако, за это время я успел многому научиться и хочу поделиться своим опытом с сообществом.

Я постараюсь донести основные идеи, показать как эта VCS помогает разрабатывать проект. Надеюсь, что после прочтения вы сможете ответить на вопросы:
  • можно ли git «подстроить» под тот процесс разработки, который мне нужен?
  • будет ли менеджер и заказчик удовлетворён этим процессом?
  • будет ли легко работать разработчикам?
  • смогут ли новички быстро включиться в процесс?
  • можно ли процесс относительно легко и быстро изменить?


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

Далее очень много букв случайным образом превратились в пост.
Total votes 200: ↑194 and ↓6+188
Comments44

Пак ольдскульных пиксельных иконок, скоро 4000

Reading time2 min
Views36K
3500 иконок готово. Можно сказать спасибо. После выпуска 3000 иконок FatCow прошел почти год, страницу посетило 700к посетителей. Пошел пятый год рисования. Находить удачные метафоры становится сложнее. Пытаемся охватить набор метафор, который нужен для специфичного софта и узконаправленных сайтов.
Чтобы дойти до 4000 иконок, работы хватит до апреля 2014 года. Потом укрупняем палитру или уходим в 5000. То есть по многочисленным запросам пользователей помимо 16-го и 32-го размера намерены освоить 48x48 и 96x96. В таком случае до середины 2015-го года нарисуем первую «крупную» тысячу.



Пятилетку за четыре года, кота за день. Чтобы понять, какие именно 500 метафор было положено в основе дополнительной эмиссии, смотрим сотканный kreol2013 надстройкой над программой KhodeN «ковер»…
Читать дальше →
Total votes 104: ↑76 and ↓28+48
Comments45

Как начать работать с GitHub: быстрый старт

Reading time6 min
Views1.2M


Распределенные системы контроля версий (DVCS) постепенно замещают собой централизованные. Если вы еще не используете одну из них — самое время попробовать.

В статье я постараюсь показать, как можно быстро начать экспериментировать с git, используя сайт github.com.

В статье не будут рассмотрены различия между разными DVCS. Также не будет детально рассматриваться работа с git, по этой теме есть множество хороших источников, которые я приведу в конце статьи.
Читать дальше →
Total votes 182: ↑165 and ↓17+148
Comments51

Yate: Яндекс.Почта перешла на новый шаблонизатор

Reading time5 min
Views63K
imageНекоторое время назад мы писали, что в Яндекс.Почте появился новый интерфейс, в котором используется шаблонизация данных в браузере. Немногие крупные сервисы отваживались на это, но мы и сейчас считаем такое решение наиболее удачным. Оно не только ускорило работу интерфейса, но и позволяет экономить трафик пользователя и эффективнее расходовать процессорное время серверов.

Тогда в качестве шаблонизатора мы использовали XSL, а данные передавали в формате XML. Переведя проект на новый интерфейс, мы начали искать другие способы ускорения работы интерфейса Яндекс.Почты.

Недавно мы перевели всю Почту на JS-шаблонизатор и JSON-данные.
И вот как это проходило
Total votes 173: ↑159 and ↓14+145
Comments185

Свежее сено от коровы, или 3000 иконок подано!

Reading time2 min
Views4.6K
После выпуска 2000 иконок FatCow прошло более года. Пошел четвертый год рисования. Страницу посетило 560,096 (288,511+235,221+36,364) посетителей. Чтобы дойти до 3500 иконок, работы хватит до февраля 2013 года. Если добавить размер 64x64, то до середины 2015-го года. Пока вложено $76778 и 2000 часов работы. Тут выложили 3000 иконок, за неделю до выпуска на официальном сайте, ибо владельцы коровы (Bluehost) заняты покупкой крокодила (HostGator).

image

Чтобы понять, какой набор иконок самый уникальный в мире, пришлось рассортировать 7422 иконок. Результат не подвел…

Читать дальше →
Total votes 145: ↑134 and ↓11+123
Comments55

Реализация нечеткого поиска

Reading time6 min
Views42K


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

В данной статье описывается возможная реализация нечеткого поиска, которая была применена для поиска на сайте edatuda.ru.
Читать дальше →
Total votes 112: ↑105 and ↓7+98
Comments22

Fugue Icons 3.0

Reading time1 min
Views4.9K
Fugue Icons 3.0

Всеми любимый набор иконок — Fugue, обновился (16 июля) до версии 3.0. Изменения небольшие, были добавлены 32 гипер-маленькие иконки.

Мега-превью! (3Mb)
Иконки
Иконки + исходники

А вот и сами изменения...
Total votes 105: ↑93 and ↓12+81
Comments27

Порт завершения (Completion Port)

Reading time7 min
Views41K
Привет. Сейчас я расскажу вам о механизме IO Completion Ports в Windows. Разработчики описывают порт завершения как «средство, повышающее производительность приложений, часто использующих операции ввода/вывода». В общем-то, они и не врут, поэтому IOCP часто используют при написании масштабируемых серверных приложений. Однако же считается, что порт завершения — тема мудреная и тяжелая для понимания.
Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments14

Не строим с нуля. Теперь у Вас есть шаблон для верстки HTML5

Reading time2 min
Views17K
Любовь к HTML5 продолжает вдохновлять Поля Айриша. Во-первых, он подарил нам Modernizr, а сейчас он объединился с Divya Manian для создания шаблона HTML5, который использует передовые техники, чтобы Вы могли начать использовать его в своей практике.

Он, в сущности, является хорошей отправной точкой, состоящей из HTML и CSS, предлагающим также и структуру папок, которая работает. Но созданным с учётом многих лет передового опыта профессионалов в разработке клиентской части. Загляните в исходные тексты, чтобы почувствовать, что находится внутри. А если вы думаете, что этого слишком много, просто удалите лишнее.
Читать дальше →
Total votes 157: ↑146 and ↓11+135
Comments48

Иконки типов файлов

Reading time1 min
Views6.2K
По просьбе гражданина dio нарисованы 25 иконок типов файлов в размерах 64х64, 48х48, 32х32 и 16х16. Иконки распространяются на условиях лицензии CC BY-ND.
Этот сет является дополнением к первому и второму бесплатным наборам.
Скачать иконки можно здесь

image
Total votes 125: ↑105.5 and ↓19.5+86
Comments134

Расширенные фрагменты страницы

Reading time2 min
Views2.6K
Оксана Команеску, Команда качества поиска

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


Это наглядный пример использования семантической разметки страницы в результатах поиска.

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

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

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

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

Мы очень надеемся на то, что вы разделите наш энтузиазм и поможете нам лучше представить вашу страницу в результатах поиска, воспользовавшись семантической разметкой.
Total votes 38: ↑34 and ↓4+30
Comments12

Самые интересные публикации 2009 года о Delphi

Reading time5 min
Views6.8K
В этом году в русскоязычном Delphi-сообществе было опубликовано огромное количество материалов. Можно было запросто пропустить что-то интересное. Я постарался собрать в одной публикации ссылки на наиболее интересные публикации 2009 года. Все публикации имеют прямое отношение к Delphi. Получилось довольно много. Большое спасибо любезным авторам!

Читать дальше →
Total votes 101: ↑72 and ↓29+43
Comments119

Школьные учебники в видеоформате. Доступ свободный

Reading time1 min
Views1.9K
ШКОЛА на UniverTV.ru

Видеопортал UniverTV.ru открыл новый раздел «Школа» с видеозаписями уроков лучших учителей по основным предметам школьной программы. Каждый видеоурок дополняется иллюстрациями и другими материалами, необходимыми для полного раскрытия темы.

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

Читать дальше →
Total votes 85: ↑80 and ↓5+75
Comments42

Постраничная навигация с MySQL при большом количестве записей

Reading time7 min
Views40K
Рано или поздно многие крупные проекты сталкиваются с проблемами производительности при постраничной навигации по записям. Некоторые из них решают эту проблему ограничением количества доступных для просмотра записей (скажем, не больше 1000). Вполне приемлемое решение. Но в этом случаем могут возникнуть проблемы с индексированием сайта сторонними поисковиками, которые и представляют наибольшую угрозу. В этой статье я хотел бы отказаться от привычной для всех панели навигации вида «1..2..3..4..» в пользу простой «вперед… назад» (будет проще объяснить), но это не проблема реализовать подобное и с первым вариантом.
Более точно определить тему, назвав, какое количество записей считать достаточно большим для появления тормозов, не получится, так как эта цифра для всех разная и сильно зависит от того, насколько быстрые у Вас жесткие диски, сколько памяти, и какая часть Ваших данных уже закеширована в ней и тд. Но если Вы и Ваши сервера ощущают, что n-ная страница при выводе даётся тяжелее первой, и при этом не знаете, что с этим делать – статья для Вас. Но для начала, я хотел бы на пальцах объяснить, почему ОНО работает медленно.

Кстати, тест происходит на виртуальной машинке, работаю я с СУБД под рутом, версия MySQL – 5.0.32.
Читать дальше →
Total votes 139: ↑135 and ↓4+131
Comments81

Иерархические структуры данных и Doctrine

Reading time15 min
Views81K

Введение



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

В первую очередь, это связано с тем, что реляционные базы не приспособлены к хранению иерархических структур (как, например, XML-файлы), структура реляционных таблиц представляет из себя простые списки. Иерархические же данные имеют связь «родитель-наследники», которая не реализована в реляционной структуре.

Тем не менее, задача «хранить деревья в базе данных» рано или поздно возникает перед любым разработчиком.

Ниже мы подробно рассмотрим, какие существуют подходы в организации хранения деревьев в реляционных БД, а также рассмотрим инструментарий, который нам предоставляет ORM Doctrine для работы с такими структурами.
Читать дальше →
Total votes 64: ↑63 and ↓1+62
Comments41

Мы ♥ Иконки

Reading time1 min
Views1.2K

Коротко о ясном


В интернете есть множество сайтов где выкладываются разного рода иконки, но по настоящему хороших сайтов мало. Но я нашел такой сайт. Иконки высшего качества собранные воедино совершенно бесплатно распространяются на сайте weloveicons.com. Иконки предоставляются в форматах для Mac OS, Windows и в .PNG

Каждый найдет себе то, что ищет


image image image
Total votes 123: ↑96 and ↓27+69
Comments46

Практика разговорного американского

Reading time5 min
Views25K
По мотивам предыдущих постов: "Практика разговорного английского языка" и "Как учить английские слова".

imageВ современном мире многие сталкиваются с необходимостью изучить иностранный язык. Чаще всего этим языком является английский. Методов изучения иностранного языка, и английского в том числе, существует много: заучивание слов по карточкам; расклеивание стикеров с названиями предметов по всему дому; метод 25-го кадра (хотя лично я в него не верю); штудирование грамматики,– как с репетитором/в школе/в университете/на курсах, так и самостоятельно; метод погружения, наконец. В общем, есть из чего выбрать. Благо, на просторах Интернета материалов можно найти великое множество.

Выбор конкретного метода, а может быть, и нескольких, зависит от мотивации. Прежде чем остановиться на каком-то из них, задайте себе вопрос: «Для чего я учу язык?». Кому-то будет вполне достаточно базовых знаний грамматики и словаря, — просто потому, что язык нужен только для чтения статей, например. А кому-то этого будет мало. Да, грамматика и лексика – это, конечно, хорошо. Они – основа языка, его фундамент и стены. Но как быть с живой речью? Ведь понимание иностранной речи, а потом и возможность говорить на иностранном языке – немаловажная составляющая.
Читать дальше →
Total votes 45: ↑42 and ↓3+39
Comments65
1

Information

Rating
2,724-th
Location
Москва и Московская обл., Россия
Registered
Activity