Pull to refresh
58
0
Олег Полудненко @uaoleg

User

Send message

Руководство по собеседованию на вакансию PHP-программиста

Reading time22 min
Views254K
Вездесущий… это определённо то слово, которым можно описать язык PHP по отношению к вебу. Он действительно вездесущ. В настоящее время, среди всех серверных языков программирования, PHP используется наиболее широко. На нём написаны более 80% сайтов, при этом следующий по популярности ASP.NET со своими 17% остаётся далеко позади.



Почему? Что позволило PHP стать настолько популярным и широко используемым? На этот вопрос нет однозначного ответа, но простота использования языка, безусловно, существенный фактор, поспособствовавший его успеху. Новички в PHP могут быстро выйти на достаточный уровень и разместить динамический контент на своих веб-сайтах с минимум познаний в программировании.

Именно в этом и заключается основная проблема поиска высококвалифицированных PHP-разработчиков. Относительно низкий порог вхождения и 20 лет развития языка привели к тому, что PHP-программисты стали такими же вездесущими, как и сам PHP. Многие из них могут на законных основания утверждать, что «знают» язык. Однако разработчики, которые действительно являются экспертами по PHP, способны создавать куда более функциональное, надёжное, масштабируемое и простое в сопровождении программное обеспечение.

Как же отличить тех, кто обладает реальной компетентностью в PHP (не говоря уже о тех, кто входит в 1% наиболее опытных кандидатов) от тех, у кого только поверхностные знания?
Читать дальше →
Total votes 96: ↑73 and ↓23+50
Comments107

Функциональный Javascript. Пишем свои линзы, часть 1

Reading time7 min
Views29K
Привет, хабр.
В данной статье мы познакомимся с линзами, узнаем для чего они нужны, а также реализуем их на JavaScript.

Зачем нужны линзы


Начнем, пожалуй, с ответа на вопрос, зачем же нужны линзы.

В функциональном программировании широко используются неизменяемые структуры данных. Работа с ними значительно отличается по сравнению с изменяемыми данными.

В основе этого лежит тот факт, что при изменении какой-либо части неизменяемой структуры данных создается ее копия, отличающаяся от оригинала этой самой измененной частью. Полное копирование всей исходной структуры не эффективно, поэтому новая структура как правило использует ссылки на неизмененные части из оригинала.
Читать дальше →
Total votes 53: ↑48 and ↓5+43
Comments42

Как зарабатывать деньги на Android-играх

Reading time5 min
Views247K
Извиняюсь за заголовок в стиле «for Dummies», но это именно то, о чем я хочу сегодня поговорить — о монетизации. В двух словах о себе: занимаюсь инди-геймдевом с 2010 года, на данный момент у меня около десятка изданных игр на Play Store с общим количеством загрузок чуть-чуть не дотягивающим до 20 млн. Я не люблю распространяться о финансовой стороне, но понимаю что в теме о деньгах, без этого никак. На КДПВ вы можете видеть мою статистику за несколько последних дней (на момент написания статьи). В общем, бывало хуже, но бывало и лучше! Цифры не из тех, что поражают воображение, но, согласитесь, довольно неплохие. Особенно, учитывая что я всего лишь любитель, клепающий игры по вечерам.



В этом топике, я попробую поделиться выводами и наработками, которые сделал за это время. На всякий случай disclaimer: мое мнение не претендует на истину и основано лишь на моем субъективном опыте. Я всегда готов поучиться у более опытных коллег, так что если я в чем-то ошибаюсь — прошу в комменты. И второе: это взгляд на геймдев с точки зрения бизнеса, если вы не разработчик, вам может не понравиться то что я скажу.
Читать дальше →
Total votes 84: ↑71 and ↓13+58
Comments59

Всё, что вы хотели узнать о рефакторинге, но боялись спросить

Reading time1 min
Views21K
Господа, рад представить вам свой новый проект — Refactoring.guru.

Сайт представляет собой каталог запахов грязного кода и, собственно, самих приёмов рефакторинга. В двух словах — это как книга Мартина Фаулера, но лучше. А именно:

  • Весь контент доступен на русском языке. Я старался делать описания как можно более живыми, чтобы избавиться от чувства унылости и скуки, которое возникает при чтении любой переводной книги о рефакторинге.
  • Все примеры подаются на Java и PHP. Другие языки обязательно будут добавляться со временем, но я пока затрудняюсь решить, каким будет следующий, можете предлагать в комментах.
  • Всё везде перелинковано. Рефакторинги сгруппированы по предназначениям и связям.


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

Как видите, есть еще громадное поле для работы, как говорится, «если вам не стыдно за первую версию продукта — вы отрелизились слишком поздно». Тем не менее, я надеюсь, что кому-то сайт будет интересен уже сейчас.

Буду рад всем отзывам и пожеланиям! (а также лайкам и твитам)

Читать дальше →
Total votes 115: ↑107 and ↓8+99
Comments57

Чем забит мой жесткий диск

Reading time3 min
Views91K

Сегодня хочется воздать по заслугам программе-долгожительнице SequoiaView — приложению, созданному в начале двухтысячных годов Техническим университетом Эйндховена (Нидерланды). Приложение получилось настолько практичным, лаконичным и удобным, что уже более 10 лет выручает всех, у кого вдруг внезапно закончилось место на диске, а сейчас как раз позарез нужно расчистить пару десятков гигабайт, чтобы поставить новую игру, скачать фильм или просто забить это место в очередной раз мелким мусором.
Читать дальше →
Total votes 73: ↑53 and ↓20+33
Comments125

Обзор 7 самых популярных кроссплатформенных мобильных фреймворков

Reading time10 min
Views113K

На работе меня попросили сделать сравнительную характеристику нескольких продуктов для создания кроссплатформенных мобильных приложений: Appcelerator Titanium, Kony Platform, Adobe PhoneGap, IBM Worklight, Telerik Platform, Verivo Akula, Xamarin. Потратил немало времени, поэтому решил, что лучше поделиться с хабрасообществом полученными данными, вдруг кому покажется полезным. Сразу скажу, что кроме PhoneGap я до этого не сталкивался и не работал ни с каким из этих фреймворков, поэтому уверен, что что-то упустил, где-то, возможно, не так понял, а в чем-то оказался не прав. Но в комментариях надеюсь услышать ваше мнение и исправить недочеты.

В конце статьи поместил несколько опросов, которые помогут понять популярность и рейтинг этих фреймворков.
Здорово, хочу дальше
Total votes 55: ↑48 and ↓7+41
Comments53

Тестирование «быстрой MongoDB» – TokuMX в условиях, близких к реальности

Reading time4 min
Views21K
В последнем выпуске Радио-Т мы упоминали TokuMX — High-Performance MongoDB Distribution. Продукт этот звучит интересно — 9ти кратное сжатие данных в комплекте с 20ти кратным приростом скорости и поддержкой транзакций. При этом переход с mongo на tokumx весьма прост и с точки зрения внешнего наблюдателя — полностью прозрачен. Такое волшебство показалось мне более чем привлекательным и я решил проверить насколько все хорошо на практике.
Читать дальше →
Total votes 73: ↑72 and ↓1+71
Comments16

Приручаем Graylog2 — визуализированный и функциональный сервер лог-файлов

Reading time3 min
Views67K
При достаточно большом парке серверов, с тысячами крутящихся на них сервисов, демонов, скриптов, довольно непросто уследить за многочисленными ошибками внутри. Где-то кончилась память, где-то залип демон, где-то база данных ведет себя неадекватно. Уже не раз обсуждались серверы централизованного хранения логов, хочу рассказать еще об одном удобном и мощном инструменте — Graylog2.
Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments34

LESS: программируемый язык стилей

Reading time13 min
Views430K
Я не люблю CSS. Он простой и понятный. Это движущая сила Интернета, но он слишком ограниченный и им трудно управлять. Пришло время привести этот язык в порядок и сделать его более полезным, используя динамический CSS при помощи LESS.
Объясню свою позицию на примере. Почему бы вместо использования #FF9F94 для получения темно-персикового цвета просто не хранить значение этого цвета в переменной для её последующего использования? Что бы перекрасить сайт достаточно будет изменить значение переменной всего в одном месте и всё.
Другими словами: это будет очень изящно, если мы будем использовать немного программирования и логики в CSS, что бы сделать его более мощным инструментом. Хорошо, что это всё возможно с использованием LESS.
Так что же такое LESS?
Total votes 161: ↑147 and ↓14+133
Comments136

Mediabox

Reading time5 min
Views26K
Mediabox – GPL3 web-приложение, позволяющее хранить файлы, воспроизводить audio и video в форматах, которые воспроизводит medialement js, показывать изображения, делать пометки на них, добавлять теги и писать комментарии.



Mediabox продолжает идеи прошлых Ostora FM и Photo, а также является немного измененным Mediabox, созданной для компании Xvid.

Читать дальше →
Total votes 52: ↑47 and ↓5+42
Comments49

Yii 2.0 beta

Reading time12 min
Views42K
Нам очень приятно сообщить о выходе бета-версии PHP фреймворка Yii 2. Вы можете загрузить его с yiiframework.com.

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

Читать дальше →
Total votes 92: ↑88 and ↓4+84
Comments43

Браузерный мультиплеер без сервера

Reading time3 min
Views20K

Про технологию WebRTC в последнее время пишут много. Она позволяет обеспечить взаимодействие двух клиентов без специализированного сервера между ними, но нужда в сервере отпадает только после установки соединения. А на этапе установки самого соединения некоторые серверные ресурсы все еще нужны. Можно ли избавиться от потребности в сервере? Небольшой эксперимент в этом направлении под катом.
Читать дальше →
Total votes 31: ↑25 and ↓6+19
Comments23

10 игровых механик в HTML Academy

Reading time8 min
Views54K
В тот момент, когда начиналась разработка HTML Academy, мы достаточно серьёзно играли в WOW, да и, вообще, были поклонниками игр Blizzard со стажем. Поэтому с игровыми механиками были знакомы достаточно хорошо, хотя сами этого не подозревали. Многие интересные механизмы появились в академии, как нам казалось, сами по себе. Но позже выяснилось, что на самом деле они называются «игровыми механиками», а мы их неосознанно взяли из игровой практики.


Читать дальше →
Total votes 55: ↑47 and ↓8+39
Comments20

Прокачай английский с LinguaLeo: cоздавай тематические словари, тренируй память и занимайся в группе!

Reading time4 min
Views34K


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

Во-первых, теперь каждый пользователь может создавать и публиковать тематические наборы слов на LinguaLeo. Ими можно поделиться со всеми или отправить ссылку на набор кому-то одному. Во-вторых, теперь все изучаемые наборы слов можно проводить через тренировку brainstorm. Она построена так, что пользователь быстро запоминает значение и написание слов. В третьих, изучать английский на LinguaLeo теперь можно в группе.

Под катом мы расскажем, что получилось и как оно работает.
Читать дальше →
Total votes 43: ↑34 and ↓9+25
Comments76

Начинаем работать с графовой базой данных Neo4j

Reading time12 min
Views85K
В нашем проекте возникла следующая задача — есть база с большим количеством товаров, на уровне сотен тысяч. У каждого товара есть сотни динамически создаваемых характеристик. Необходимо обеспечить быструю фильтрацию по товарам по набору различных характеристик. Время формирования ответа должно быть не более 0.3 секунды, нужно поддерживать сложную логику в стиле.

(характеристика1 = true AND (характеристика2 < 100)) OR (характеристика1 = false AND (характеристика3 > 17)) ... далее обычно мешанина из AND\OR


Типичный пример подобного функционала — hotline.ua/computer/myshi-klaviatury

Пример функционала

У нас все реализовано в рамках MySQL + Symfony2/Doctrine, скорость неудовлетворительная — ответы формируются в течении 1-10 секунд. Мои попытки оптимизировать все это хозяйство — под катом.
Читать дальше →
Total votes 36: ↑30 and ↓6+24
Comments45

Работаем асинхронно в PHP или история ещё одного чата

Reading time8 min
Views37K
Меня очень радует, как бурно развивается PHP последние несколько лет. Наверное и вас тоже. Появляются постоянно новые возможности, удерживающие энтузиастов оставаться на данной платформе. Чего только стоит недавняя новость о релизе Hack.

Наверняка кто-то прочитав даже заголовок этой статьи ухмыльнется и подумает: «Мсье знает толк в извращениях!». Споры о крутости того или иного языка никогда не утихают, но как бы там ни было, лично я для себя вижу не так уж и много условий смены языка, поскольку люблю выжимать все возможности, прежде чем радикально сменить весь стек. Недавно была публикация о создании чата на Tornado и мне захотелось рассказать о том, как похожую задачу я решал при помощи PHP.

Предыстория

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

Сравнение производительности JS-библиотек

Reading time8 min
Views38K

Некоторое время назад возникла задача сделать сравнительный анализ jQuery и Google Closure Library. Основным было сравнение функциональных характеристик, но помимо этого появилось желание проверить и скорости работы этих двух библиотек. Некоторые знания о внутреннем устройстве позволяли сделать предположения, но результаты тестов оказались для меня несколько неожиданными и я решил, что стоит поделиться ими с хабра-сообществом.
И кто выиграл?
Total votes 101: ↑90 and ↓11+79
Comments92

Контролируем переполнение ячейки таблицы с помощью max-width

Reading time2 min
Views21K


Допустим, мы хотим сделать двухколоночную раскладку с помощью свойства table-cell. Левая колонка будет занимать всю доступную ширину, правая же может иметь два варианта в нашем случае:

  • мы зададим этой колонке фиксированную ширину;
  • она будет равняться минимальной ширине контента → minimum content width (MCW).

Едем дальше
Total votes 31: ↑25 and ↓6+19
Comments21

How-to: как выбрать язык программирования для создания торгового робота

Reading time24 min
Views64K
image

Один из самых распространенных вопросов, который задают люди, только начинающие интересоваться алгоритмической торговлей это «Какой язык программирования для этого подходит лучше всего?». Само собой, короткий ответ заключается в том, что никакого «лучшего» варианта не существует. При выборе инструмента следует учитывать параметры торговой стратегии, необходимую производительность, модульность, методологию разработки и требования к отказоустойчивости. В этой статье мы поговорим о главных компонентах архитектуры алгоритмической торговой системы и о том, как каждый из них влияет на выбор языка программирования.
Читать дальше →
Total votes 44: ↑30 and ↓14+16
Comments22

Как ваши твиты раскрывают ваше местоположение

Reading time4 min
Views27K

Исследователи из IBM разработали алгоритм, позволяющий определять место жительства пользователя с точностью до 70% путём анализа 200 его последних твитов.



USA tweets
Читать дальше →
Total votes 36: ↑31 and ↓5+26
Comments18

Information

Rating
Does not participate
Location
Днепр, Днепропетровская обл., Украина
Registered
Activity