Pull to refresh
4
0
Дегтярёв Евгений @bat

Go/PHP Developer

Send message

Как устроено ранжирование

Reading time9 min
Views26K
Со временем Sphinx оброс большой кучей режимов поиска и ранжирования. Регулярно возникают вопросы про разное (от «как вытащить документ на 1е место» до «как рисовать от 1 до 5 звездочек в зависимости от степени совпадения»), которые на самом деле суть вопросы про внутреннее устройство тех режимов. В этом посте расскажу все, что вспомню: как устроены режимы поиска и режимы ранжирования, какие есть факторы ранжирования, как в точности рассчитываются факторы, как финальный вес, все такое. И, конечно, про звездочки!
Читать дальше →

Разработка web-приложений на C++

Reading time2 min
Views56K

Прочитав недавний топик про использование C++ и fastcgi, я наконец-то решился опубликовать свои наработки на тему Web и C++.

Существующие решения, с моей точки зрения, реализуют простые вещи сложным образом. Моей целью было устранить это досадное недоразумение, написав библиотеку, которая позволит писать эффективные кросс-платформенные веб-приложения на С++ так же легко и быстро, как и на PHP, Python, Java, и т.д.
Читать дальше →

Apache, fastcgi и c++: «Hello, world»

Reading time6 min
Views43K
img
Писать web-приложения на C/C++ дело неблагодарное. Многие говорят, что это полное безумие, когда есть PHP и Perl. И я с ними согласен. Это очень просто написать сайт на PHP(особенно используя фреймворки вроде Zend Framework).
Но..(всегда есть какое-то «но»).
Давайте не будем забывать, что простота использования складывается не только из простого синтаксиса. Учитывается множество параметров. И одним из весомых параметров является наличие статей «Get started with ...» с примерами «hello, world»-программ. Я собираюсь добавить немного простоты написанию fastcgi на C/C++. И если прочитав эту статью хоть один человек скажет «А это не так уж и сложно», то я буду считать свою миссию выполненной.
читать далее

Наследство выпускника, или Последнее д/з по информатике

Reading time2 min
Views1.7K
Фрагмент Очередной выпуск, очередной «Последний звонок». Очередная партия юношей и девушек принимает на себя статус «вступивших во взрослую жизнь» и расстается со своим учебным заведением.

То же сделал я. Но прежде — решил оставить после себя ему нечто такое, что так или иначе принесет пользу. Реальную пользу.

Об этом и расскажу.

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

Кризис (не финансовый) программиста

Reading time2 min
Views3.8K
Я много писАл о том, как же прекрасна эта игра, под названием программирование! Мне, и я уверен, что многим из вас, программирование заменяет все существующие логические игры, дает постоянный разогрев мозгам, не давая им засохнуть, и приносит дикое моральное удовлетворение, отличающееся от оргазма только отсутствием физических ощущений.
Так уж получилось, что много лет назад, я забросил c++ и Delphi, и чувствуя потребности IT рынка, начал осваивать php. Так что все, о чем я буду писать, касается конкретно web-программирования, и косвенно любой другой области программирования.
Признаюсь честно, хотя работы хватает, мои мозги, все равно, начинают сохнуть. Я уже писал раньше, что момент, когда программист становится профессионалом, обусловлен, прежде всего, выдвижением на первый план качества и сроков реализации проекта. А значит приходиться использовать готовые продукты (я имею ввиду различные cms), которые обеспечивают должное качество, отсутствие уязвимостей и багов, гибкость, и короткие сроки реализации.
Читать дальше →

Личный тайм-менеджмент

Reading time9 min
Views93K
Почитав недавний топик про лягушек я понял, что Хабрасообщество не очень хорошо ориентируется в вопросах тайм-менеджмента и многие никогда не занимались построением своей тайм-системы.

Поэтому я попробую исправить этот недочёт.

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

Welcome!

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

Они просто не хотят хорошо работать

Reading time2 min
Views2.8K
В одном цеху на предприятии Чарльза Шваба работал некий начальник, рабочие которого не справлялись со сменным заданием. Шваб недоумевал: «Как так получилось, что такой способный человек, как вы, не мог добиться выполнения задания?» Инженер отвечал хозяину: «Сам не понимаю. Я и уговаривать их пытался, и подгонял, и бранил их, рвал и метал, грозил, что прокляну их и потом уволю. Но результатов так и не было. Они просто не хотят хорошо работать».
Узнать чем все закончилось...

Javascript от А и до…

Reading time3 min
Views3.7K
Начал замечать что на Хабре появляются статьи по программированию, может на это натолкнули фразы типа «хабр уже не тот», но это не так важно, потому как мне это нравится, всегда хотелось узнать что-то новенькое … моя первая статья привела к огромному краху, поэтому почитав людей, я повторю свои усилия и начну цикл заметок о JavaScript от самого начала и до тех пор, пока это будет востребовано =)
поехали дальше

Fly AJAX — пишите меньше, имейте больше. Нестандартный AJAX и индексация поисковиками.

Reading time4 min
Views5.2K

Обсуждение предыдущей статьи было бурным. Самые ярые любители jQuery, Mootools кричали зачем мол нужен другой велосипед.
В данной статье мы рассмотрим использование техники Fly AJAX. Это одна из нескольких функциональных возможностей, которые не реализованы в ранее указанных больших (и мною уважаемых) фреймворках. Также, в данной статье, мы рассмотрим принципы правильного проектирования и построения сайтов для хорошей индексации с применением AJAX технологии.
Читать дальше →

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

Reading time6 min
Views2.8K
Хочу рассказать об очередном результате моих изысканий в области оптимизации производительности Web-серверов.
На этот раз речь пойдет об оптимизации сложного логирования в однопоточном неблокирующем вэб-сервере.
Читать дальше →

Закрепляем jQuery — 25 отличных советов

Reading time19 min
Views168K
Перевод отличной статейки. Думаю, будет полезна как новичкам, которые только приступили к использованию jQuery, так и тем, кто уже какое-то время с ним работает. А кого-то, возможно, заставит глянуть эту чудесную библиотечку. Многие советы имеют отношение не только к jQuery, но и к JavaScript в целом. Лично для меня была весьма и весьма познавательной, посему и захотелось донести это «до масс». Перевод не дословный, но передающий смысл и максимально адаптированный к русскому языку.

Далее все написано от имени автора оригинальной статьи.

Введение


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

Я не эксперт в jQuery. И даже не претендую, поэтому, если встретите ошибки, смело поправляйте меня и вносите предложения по улучшению (поправлять и присылать поправки нужно автору статьи, а не перевода — зам. пер.).

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

Содержание


  1. Загружайте фреймворк с Google Code
  2. Используйте «шпаргалку» (cheat sheet)
  3. Соединяйте все ваши скрипты и уменьшайте размер файла
  4. Используйте возможности Firebug для ведения логов
  5. Минимизируйте операции выборки в пользу кэширования
  6. Сводите манипуляции с DOM-деревом к минимуму
  7. Оборачивайте все в единый элемент, когда речь идет о любой вставке в DOM
  8. Используйте «id» вместо классов, где это возможно
  9. Задайте контекст своим селекторам
  10. Используйте последовательности вызовов методов с умом
  11. Научитесь правильно использовать анимацию
  12. Научитесь назначать и делегировать события
  13. Используйте классы для сохранения состояния
  14. Еще лучше — используйте встроенный в jQuery метод data() для сохранения состояния
  15. Пишите собственные селекторы
  16. Подготавливайте HTML и модифицируйте его, когда страница загружена
  17. Используйте «отложенную загрузку» (lazy loading) для определенного контента для выигрыша в общей скорости и преимуществ для SEO
  18. Используйте служебные функции jQuery
  19. Используйте «noconflict» для переименования глобального объекта «jquery», когда используете его с другими фреймворками
  20. Как узнать что картинки загружены?
  21. Всегда используйте последнюю версию
  22. Как проверить, что элемент существует?
  23. Добавляйте класс «JS» в элемент «html»
  24. Возвращайте «false» для отмены поведения по-умолчанию
  25. Короткая запись для события готовности документа


Rock'n'Roll!

Веб-типографика сегодня. Часть I

Reading time7 min
Views28K
Часть IЧасть IIЧасть IIIЧасть IVЧасть V — Часть VI

Часть I



Как-то ко мне обратился знакомый дизайнер с просьбой разобраться в странной по его мнению ситуации. Клиент просил «сделать так же, как у Apple», но с использованием собственных способов расположения блоков, изображений, цветовой гаммы и текста. В общем, дизайн в итоге получался совершенно непохожий на apple.com, но этого, собственно, и добивался клиент. И вроде бы у дизайнера получилось, но… Клиенту по-прежнему не нравилось, он всё равно требовал переделать макет. По его ощущения «что-то было ну совсем не так». А что именно — тот объяснить был не в силах. Вот и возник вопрос у моего коллеги по поводу того, как угодить капризам клиента и понять его чаяния. Оказалось всё не так просто, но вполне объяснимо. Я и раньше сталкивался с данной проблемой. Поэтому решил попробовать изложить свои мысли по этому поводу.

Итак, какова ситуация в области современной веб-типографики и какими способами следует решать возникающие проблемы?
Читать дальше →

Пуленепробиваемый HTML: 37 шагов к идеальной разметке

Reading time11 min
Views20K
Примечание: это не полный перевод статьи. Я выбрал только самые интересные лично для себя пункты. Статья не претендует на свежесть, но возможно даже люди хорошо знакомые с версткой найдут для себя что-то интересное. Статья затрагивает некоторые аспекты семантики верстки с конкретными примерами.

Под катом много букв! Чтоб не потеряться в их обилии все пункты выделены заголовками.
Читать

Начало научной карьеры (часть 5)

Reading time6 min
Views2.7K
Итак, как и обещал, давайте сделаем шаг назад и поговорим о «болонской» магистратуре. Мне довелось узнать эту систему с хорошей стороны; не могу обещать, что в каждом университете она реализована точно так же. Но думается, что мой опыт должен быть скорее похож на норму, нежели на что-то нестандартное.

Сразу хочу призвать отказаться от дискуссий о научном качестве того или иного типа образования. Будем обсуждать только социальные аспекты, то есть привлекательность болонской системы для студента. По поводу же качества попробую высказаться мягко. Системы образования — как языки программирования. Если бы хотя бы один был очевидно лучше других, других бы не осталось. Да, может, болонская система немного лучше, а может, и немного хуже (в научном плане). Однако социальные аспекты не менее важны. Как я уже говорил, возможно, с научной точки зрения лучше запереть молодого специалиста в шарашке, и пусть себе изобретает. А то отвлекается, видите ли, на пиво и дамочек. Поэтому вопрос я ставлю иначе: в какой системе человек чувствует себя наиболее комфортно и при этом получает достаточно качественное образование. И здесь мои симпатии всецело на стороне «болонского» образования, об особенностях которого ниже и пойдёт речь.
Читать дальше →

Сравнение PHP-фреймворков: CakePHP, CodeIgniter и Yii

Reading time11 min
Views47K
Не так давно на Хабре проскакивал пост о появлении нового PHP-фреймворка под названием Yii.
После ознакомления, этот фреймворк показался мне интересным, перспективным и достойным внимания.
Недавно Daniel Carrera выложил в своем блоге интересную статью «Comparison of PHP frameworks» о сравнении CakePHP, CodeIgniter и Yii.
С целью популяризации Yii среди русскоговорящего (и плохо-по-английски-читающего) населения я решил сделать перевод.
Читать дальше →

Заметки о лучшем хостинге: часть третья, проблемы и их решение

Reading time4 min
Views1.6K
imageЭтой заметкой я продолжаю цикл статей на тему хостинга у хостера со странным для русского уха названием Mochahost. Тем, кто пропустил первые две статьи, рекомендую ознакомиться:

Итак, если первые две статьи обладали в целом позитивным настроем, то эта заметка будет состоять из перечисления трудностей и полученных неприятностей.
Читать дальше →

Веб-дизайн: женский и мужской взгляд — небольшой эксперимент

Reading time2 min
Views5.7K
Недавно столкнулся с такой ситуацией: разрабатывал дизайн для сайта одной фирмы, было представлено 3 варианта. Как часто бывает, мое мнение не совпало с мнением заказчика, выбрали макет, который мне нравится меньше других. К подобным ситуациям я уже привык — всегда следую золотому правилу «клиент всегда прав», однако все равно был несколько удивлен.

Я просто из любопытства решил сделать небольшой соцопрос по поводу трех разработанных дизайнов — создал пост в своем блоге на Я.ру с просьбой выбрать понравившийся вариант. Результаты меня, мягко говоря, удивили:
Читать дальше →

Структуры данных в memcached/MemcacheDB. Часть 1

Reading time8 min
Views5.1K
Достаточно часто нам приходится хранить данные в memcached или MemcacheDB. Это могут быть относительно простые данные, например, закэшированные выборки из базы данных, а иногда необходимо хранить и обрабатывать более сложные структуры данных, которые обновляются одновременно из нескольких процессов, обеспечивать быстрое чтение данных и т.п. Реализация таких структур данных уже не укладывается в комбинацию команд memcached get/set. В данной статье будут описаны способы хранения некоторых структур данных в memcached с примерами кода и описанием основных идей.

Memcached и MemcacheDB в данной статье рассматриваются вместе, потому что имеют общий интерфейс доступа и логика работы большей части структур данных будет одинаковой, далее будем называть их просто «memcached». Зачем нам нужно хранить структуры данных в memcached? Чаще всего для распределенного доступа к данным из разных процессов, с разных серверов и т.п. А иногда для решения задачи хранения данных достаточно интерфейса, предоставляемого MemcacheDB, и необходимость в использовании СУБД отпадает.

Иногда проект разрабатывается изначально для нераспределенного случая (работа в рамках одного сервера), однако предполагая будущую необходимость масштабирования, лучше использовать сразу такие алгоритмы и структуры данных, которые могут обеспечить легкое масштабирование. Например, даже если данные будут храниться просто в памяти процесса, но интерфейс к доступа к ним повторяет семантику memcached, то при переходе к распределенной и масштабируемой архитектуре достаточно будет заменить обращения к внутреннему хранилищу на обращения к серверу (или кластеру серверов) memcached.
Читать дальше →

Вычисление значения выражения

Reading time7 min
Views48K
В продолжение поста Компилятор выражений. По просьбам читающих. Специально для michurin

Есть много способов вычислить значение выражения мне больше всего нравится метод с двумя стеками.
Нравится за его элегантность и простоту реализации.

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

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

Information

Rating
Does not participate
Location
Алтайский край, Россия
Registered
Activity

Specialization

Backend Developer