Pull to refresh
124
0
Михаил Стадник @Mikhus

Software Engineer

Send message

Про социальный поиск без картинок

Reading time2 min
Views1.6K
В чем идея?

Обработать ссылки, выданные поисковиком на предмет упоминания в социальных сетях, приложить немного математики и выстроить их в несколько ином порядке чем предлагает гугл. В основе изначально лежал алгоритм по которому высчитывает свои тренды reddit.com. На самом деле алгоритм достаточно заезжен и многократно описан, но в то же время реально работающий. Проблем состояла в том, что он основан на плюсах и минусах, а у нас изначально только плюсы, то есть мы обладаем только лайками и твитами. Поэтому минусы я заменил количеством посетителей сайта. Идея, если сильно утрировать, примерно та же: количество посетителей минус лайки и чем меньше полученная цифра тем выше ее статус.
Читать дальше →
Total votes 37: ↑33 and ↓4+29
Comments22

Как правильно сортировать контент на основе оценок пользователей

Reading time5 min
Views92K


В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

Постановка проблемы


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

Неправильное решение №1

Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)

Читать дальше →
Total votes 458: ↑423 and ↓35+388
Comments134

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

Уроки Python от компании Google

Reading time1 min
Views120K
Отличный способ освоить Python — учебный класс Python в Google Code University. Уроки для этого класса написал Ник Парланте из Стэнфорда, и прошедшие курс люди отмечают не просто высокое, а фантастически высокое качество уроков.

Курс включает в себя шесть видеолекций на Youtube, где Ник проводит обучение новичков-гуглеров и подробно рассказывает о разных хитростях и фичах Python. Некоторые видеолекции длиной до 50 минут.

Есть ещё скачиваемые задачки. Они довольно простые и созданы специально для начинающих. Курс идеально подходит для изучения Python программистами, имеющими опыт работы с другими языками программирования.
Total votes 159: ↑148 and ↓11+137
Comments77

3D кнопки с помощью CSS3

Reading time6 min
Views43K
Здравствуй, дорогой хабрадруг! Сегодня мы научимся создавать объемные кнопки CSS3! Они основаны на популярной PSD фриби от Orman Clark для его веб-сайта Premium Pixels. Мы постараемся создать копию этих кнопок с помощью CSS с минимальным количеством кода HTML.

Preview

Читать дальше →
Total votes 98: ↑73 and ↓25+48
Comments59

Лекториум записал почти тысячу лекций за год

Reading time4 min
Views57K
Дорогой Хабр!



У нас для тебя небольшой подарок. Мы тут работали-работали и вот чего сделали.
Сняли и опубликовали почти тысячу лекций по IT и математике.

UPD2 Помогите, пожалуйста, оперативно решить вопрос насчёт организации торрентов на php.

Читать дальше →
Total votes 340: ↑333 and ↓7+326
Comments183

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

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

Codeception — тестирование по-новому

Reading time4 min
Views87K
PHP очень популярный язык программирования, но тестирование в нем, это скорее прерогатива экспертов, а не жизненная необходимость. Неужели это от того, что PHP-разработчики поголовно быдло-кодеры? Я считаю, что нет. Скорее всё от того, что системы тестирования порой излишне усложнены. А тесты, наоборот, должны были предельно просты: легко читаться, писаться, отлаживаться, и конечно же, быстро выполняться. Мое виденье того как это можно воплотить в PHP вылилось в проект под названием Codeception.

С ним тесты для ваших веб-приложений могут выглядеть так:
<?php
$I = new TestGuy($scenario);
$I->wantTo('create new blog post');
$I->amOnPage('/blog/posts');
$I->click('Create new post');
$I->fillField('Title','Codeception, a new way of testing!');
$I->fillField('Text','Codeception is new PHP full-stack testing framework.');
$I->click('Send');
$I->see('Congratulations, your post is successfully created!');


Согласитесь, такой тест понятен без дополнительных комментариев.
А теперь самое интересное: этот код без всяких изменений может быть выполнен как функциональный тест в фреймворках symfony, Symfony2,Zend Framework, а также в браузерном эмуляторе Goutte и даже через Selenium. Таким образом, вам предлагается единый интерфейс для написания функциональных тестов практически для любого сайта.
Читать дальше →
Total votes 75: ↑70 and ↓5+65
Comments68

Великолепные стикеры с помощью CSS3

Reading time5 min
Views14K
Доброго времени суток!

Введение


В своё время было необходимо сделать заметки в форме стикеров для веб-сайта. Как вы понимаете, выбора большого особо не было и мой выбор пал на всеми нам любимый CSS3. С его появлением осуществление задуманного стало возможным без какого-либо велосипедостроения. Итак, моё решение проблемы под катом. На самом деле, мопед не мой. Мне дали всего-лишь покататься.
Читать дальше →
Total votes 74: ↑63 and ↓11+52
Comments47

iPhone 4 на CSS3 без использования картинок

Reading time7 min
Views8.6K

Предисловие


Несколько недель назад в просторах интернета я увидел очень заинтересовавшую меня вещь — iOS иконки на CSS3 полностью без картинок. Первое что подумал — «Я тоже так могу»! А спустя еще 5 минут для себя четко решил — «challenge accepted». Но чтоб не повторяться я решил немножко усложнить задачу — сделать не только иконки, но и сам девайс.

Постановка задачи



Итак, в тот-же день я решил сделать iPhone4 на CSS3 абсолютно без картинок, base64, canvas или SVG и добавить еще некоторую изюминку — интерактивные возможности:
— включение/выключение;
— блокировка при включении и разблокировка как в реальном iPhone;
— анимация «slide to unlock» текста на экране блокировки;

Читать дальше →
Total votes 217: ↑207 and ↓10+197
Comments144

Воздушный бой на чистом HTML

Reading time1 min
Views4.4K
Я долго колебался куда отнести этот пост, решил, что в «ненормальном программировании» ему самое место.
Воздушный бой

Все в последнее время настолько в восторге от новых возможностей браузеров, что пишут игру за игрой на HTML5/CSS/JavaScript. Это всё скучно. Вчера перед сном я размышлял об игре на чистом HTML (даже без CSS), а сегодня, пока собирался в Самару, на 404fest, потихоньку её написал.

Встречайте — Pure HTML Air Fight. Написано на чистом HTML, без использования JavaScript, CSS и серверной логики. На сервере отрабатывает только скрипт, контролирующий введённый URL и запускающий игру, если URL ошибочен.

Задача классическая — попасть в пролетающий самолёт, внизу есть кнопка, запускающая ракету. Скорость самолёта и задержка меняется (на самом деле они жёстко зависят от момента пуска ракеты, у меня же чистый HTML, никакого рандома).

Кстати, в игре есть фоновый звук при попадании в самолёт.

P.S. кажется, из-за хабраэффекта у меня ложится сервер.
Total votes 112: ↑86 and ↓26+60
Comments92

Битовые операции в PHP на примерах

Reading time3 min
Views88K
Навеяно статьей об обработке критических ошибок в PHP. Обратил внимание, что несмотря на то, что коды ошибок в PHP специально заточены под битовые операции, тем не менее, что в примерах статьи, что в комментариях, для проверки кодов ошибок используются обычные операторы сравнения.

Например, встречались такие варианты:
if ($error['type'] == E_ERROR || $error['type'] == E_PARSE || $error['type'] == E_COMPILE_ERROR){…}
или
if(in_array($error['type'], array(E_ERROR, E_PARSE,  E_COMPILE_ERROR)) {…}

В связи с этим решил написать небольшую статью о битовых операциях с примерами их использования.
Читать дальше →
Total votes 242: ↑203 and ↓39+164
Comments162

Как распоряжаться своими идеями

Reading time4 min
Views906
это КДПВМанера жестикулировать, сильно подвижная мимика лица и огонь в глазах выдавали взволнованность этого, ещё молодого человека. Те, кто умеют рассказывать о человеке по его внешнему виду и поведению, отметили бы, что однодневная щетина хоть и не портит его, но все же получила отгул от бритвы. Джинсы одеты лишь потому, что они практичны, а нацепленный на сорочку бейдж бесполезен под закрывающей его полой пиджака. Те, кто послушают его, могут сказать, что этот молодой человек охвачен идеей, он верит в неё и верит в то, что она должна стать успешной. Эксперт венчурной компании сказал бы, что он всего лишь один из многих, чьи «идеи на миллион» лишь блестят, не являясь золотом. А кто-то, совсем не выделяющийся, скажет через пару десятков лет, давая интервью в своем кожаном кресле, что хорошая идея обязательно приходит в несколько голов одновременно, и скромно заметит как он рад, что у него получилось пройти тернистый путь, прежде чем добиться сегодняшнего успеха. Но о том, где подслушал идею он никогда никому не скажет.

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

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

читать эти лаконичные мысли
Total votes 43: ↑29 and ↓14+15
Comments15

Страх VS Жадность в стартапах

Reading time6 min
Views1.2K

Скоро Новый год. Хорошие дети, которые были умничками весь год, обязательно получат от Деда Мороза подарки. Плохие дети пойдут лесом. И, конечно же, старец на северных оленях не забудет всех стартаперов и принесет им много, много инвестиций. Не меньше миллиона долларов. Да и попросит за это один процент будущего бизнеса…
Читать дальше →
Total votes 108: ↑74 and ↓34+40
Comments77

OS.js: десктоп на JavaScript

Reading time2 min
Views16K
Разработчик Андерс Эвенруд (Anders Evenrud) сделал любопытный проект OS.js, который он называет «операционной системой на Javascript».



Название поменяется в ближайшее время, потому что оно не отражает реальность: на самом деле OS.js — не операционная система, а оболочка и оконный менеджер в стиле Linux, с комплектом приложений на HTML5 и CSS2+, с PHP-бэкендом. Из приложений есть часы (HTML5-SVG, CSS2), видеоплеер (HTML5-Video), аудиоплеер (HTML5-Audio), файловый менеджер, терминал, графический редактор (HTML5-Canvas), игры и прочее. Они разработаны, в основном, на Glade Interface Designer (GTK+3 XML).
Читать дальше →
Total votes 89: ↑74 and ↓15+59
Comments49

TurnAPI — пиши документацию легко

Reading time2 min
Views1.7K

Знакома ли вам ситуация, когда запуск проекта переносится только из-за того, что не готова документация к API или чему-то подобному? Может быть, вам приходилось тратить месяц на разработку системы ведения документации с пользователями, правами доступа и мощным редактором? Вы сами работаете над документацией и погрязли в этой рутине? Вы ответили «Да» на все вопросы?
мы тоже
Total votes 71: ↑55 and ↓16+39
Comments34

Пишем онлайн игру на NodeJS, Express и Socket.IO

Reading time18 min
Views43K

Привет %habraname%!





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


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

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

Но сейчас я чувствую в себе силы чтобы уже написать полноценный обучающий и не унылый материал от новичка до реального работающего приложения. Это будет не просто приложение, а онлайн игра с использованием самых популярных инструментов Express и Socket.IO, да-да, мультиплеер, который сможет сделать любой средне-статистический js разработчик.

О том, что такое Express и Socket.IO уже писали много где, поэтому описывать ещё раз я не буду, уделив больше внимания процессу разработки.

Для начало я хотел выбрать старые добрые танчики и хорошо что не выбрал, было бы грустно написать её вторым на хабре :)
Я решил не усложнять процесс разработки графикой и взять простую игру, так мой выбор пал на крестики-нолики, но чтобы усложнить себе задачу, было решено сделать универсально, с возможностью задать любой размер игрового поля и любое кол-во ходов для победы.

И так, решено! Начинаю делать крестики-нолики.
Читать дальше →
Total votes 48: ↑41 and ↓7+34
Comments56

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity