Как стать автором
Обновить
53
0
Andrzej @s_a_p

Web developer, entrepreneur

Отправить сообщение

Чем является и чем не является эффект Даннинга-Крюгера

Время на прочтение4 мин
Количество просмотров16K

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

Читать далее
Всего голосов 40: ↑36 и ↓4+32
Комментарии18

Разработка игры под Android на Python на базе Kivy. От А до Я: подводные камни и неочевидные решения. Часть 1

Время на прочтение13 мин
Количество просмотров92K
Некоторое время тому назад я решил попробовать написать что-то на Python под Android. Такой странный для многих выбор обусловлен тем, что я люблю Python и люблю Android, а ещё люблю делать необычное (ну хорошо, не самое обычное). В качестве фреймворка был выбран Kivy — фактически, безальтернативный вариант, но он мне очень понравился. Однако, по нему не так уж много информации (нет, документация отличная, но иногда её недостаточно), особенно на русском языке, а некоторые вещи хоть и можно реализовать, но их то ли никто раньше не делал, то ли не счёл нужным поделиться информацией. Ну а я счёл :) И этот пост тому результатом.

Под катом я расскажу обо всех этапах разработки, о том, как развивалась простая идея и как для этого приходилось искать новые возможности, о возникших подводных камнях и багах, о неочевидных решениях и устаревшей документации :) Цель — описать в одном тексте основные пункты, чтобы человеку, решившему написать что-то немного сложнее игры Pong из официального туториала, не приходилось перерывать официальный форум поддержки и StackOverflow и тратить часы на то, что делается за пару минут, если знаешь, как.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии27

Как я чуть не потерял «Великие слова», или «ответственность» конторы Online.ua

Время на прочтение7 мин
Количество просмотров988
В ноябре у меня произошло интересное событие — я подвергся хакерской атаке, целью которой, как выяснилось позже, было отнять у меня домен моего проекта «Великие слова» — www.greatwords.ru — о котором вы, возможно, и ранее читали на Хабре. В этом топике я хочу рассказать, как это произошло, и кто, помимо меня самого, виноват (хотя об этом можно догадаться из заголовка). Возможно, мой опыт будет полезен и поможет другим людям избежать неприятной ситуации, подобной той, в которой оказался я.

Все началось утром 11-го ноября. Я зашел на свой сайт s-a-p.in, чтобы кое-что обновить и был немало удивлен, когда вместо сайта увидел заглушку ISP manager. Нужно сказать, на моем VDS стоит именно ISP manager, и я бы первым делом полез искать ошибку именно на сервер, если бы не плагин Flagfox, который у меня стоит. Этот плагин отображает флаг страны, в которой находится сервер сайта. Мой VDS, как и я сам, находится в Киеве, а сейчас в адресной строке красовался трехцветный флаг России. Выполнив ping s-a-p.in, я, как и следовало ожидать, увидел отнюдь не свой IP.

Как это могло произойти? Вариантов два — либо проблемы с моими NS-серверами, либо кто-то сменил данные. Пробив домен по whois, я понял, что, увы, второе — NS в данных домена были указаны не мои.

Домен s-a-p.in и некоторые мои остальные домены зарегистрированны у Reggi.ru. При попытке залогиниться в панель управления доменами я получил ошибку, письмо по запросу восстановления пароля не пришло, и я понял, что дело серьезное.
Читать дальше →
Всего голосов 120: ↑115 и ↓5+110
Комментарии63

Великие слова — теперь и на английском!

Время на прочтение1 мин
Количество просмотров807
Great words Любители цитат и афоризмов на Хабре наверняка помнят наш проект «Великие слова», который более года назад мы презентовали здесь. Недавно мы также представили наше API (которое, к сожалению, не вызвало большого интереса), но сегодня речь не об этом. Сегодня мы хотели бы наконец-то представить англоязычную версию нашего проекта — GreatWords.info.

Англоязычная версия работает по тем же принципам, что и русскоязычная — своего рода записная книжка, в которою не знакомые друг с другом люди собирают тронувшие их цитаты. Цель ─ ничего не забыть и ничего не упустить.
Читать дальше →
Всего голосов 18: ↑14 и ↓4+10
Комментарии17

Великие слова

Время на прочтение3 мин
Количество просмотров1K
GreatWords История GreatWords.ru — сайта, где можно найти и записать умные слова из книг, краткие гениальные высказывания — началась с моей простой фразы: «Давно хочу сделать сайт, где буду записывать все цитаты. Книг читаю много… всё, что выписываю, теряется». Совместно с Евгением Гетманенко мы реализовали идею сайта с мудрыми словами, о чем я и хочу вкратце рассказать.

Читать дальше →
Всего голосов 105: ↑99.5 и ↓5.5+94
Комментарии147

Нативный шаблонизатор

Время на прочтение9 мин
Количество просмотров7.9K
Я довольно давно уже использую нативные шаблоны, но, почему-то, у многих людей нативные шаблоны ассоциируются с конструкциями типа:

  1. $title = 'My title';
  2. include('templates/index.html');
* This source code was highlighted with Source Code Highlighter.

  1. <html><head><title><?php echo $title ?></title></head>
  2. <!-- ... -->
* This source code was highlighted with Source Code Highlighter.


То есть, переменную определили и приинклюдили html-файл. Я считаю, что это в корне неверный подход. Почему?

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

Таким образом, я пришел к выводу, что шаблонизатор нужен, но он не должен быть навороченным тормозом типа Smarty.
Идеология блочных шаблонизаторов (XTemplate, например) мне не импонирует потому, что в них нет ветвлений как таковых, есть только циклы.

Потому я написал свой.
Читать дальше →
Всего голосов 59: ↑36 и ↓23+13
Комментарии86

Эмуляция многопоточности в PHP

Время на прочтение10 мин
Количество просмотров30K
Суть многопоточности (для приложения) состоит в том, что процесс может состоять из нескольких (однотипных) потоков, выполняющихся «параллельно», то есть без упорядочивания по времени — выполнился один, пошел следующий. Использование многопоточности позволяет ускорить выполнение задачи и/или снизить нагрузку, таким образом, улучшая быстродействие самого приложения.

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

Я рассмотрю простой пример, как можно достичь эмуляции многопоточности в PHP.
Читать дальше →
Всего голосов 54: ↑40 и ↓14+26
Комментарии76

Полиморфизм для начинающих

Время на прочтение7 мин
Количество просмотров955K
Полиморфизм — одна из трех основных парадигм ООП. Если говорить кратко, полиморфизм — это способность обьекта использовать методы производного класса, который не существует на момент создания базового. Для тех, кто не особо сведущ в ООП, это, наверно, звучит сложно. Поэтому рассмотрим применение полиморфизма на примере.
Читать дальше →
Всего голосов 132: ↑91 и ↓41+50
Комментарии131

Информация

В рейтинге
Не участвует
Откуда
Kraków, Malopolskie, Польша
Зарегистрирован
Активность