В последнее время многие ссылаются на эффект Даннинга-Крюгера с целью представить своих оппонентов в качестве некомпетентных и глупых людей. Однако проблема состоит в том, что большинство упоминающих этот эффект на самом деле не понимает, что он собой представляет. Поэтому я решил написать краткий обзор, опирающийся на научные данные, и прояснить этот вопрос.
Andrzej @s_a_p
Web developer, entrepreneur
Разработка игры под Android на Python на базе Kivy. От А до Я: подводные камни и неочевидные решения. Часть 1
13 min
94KНекоторое время тому назад я решил попробовать написать что-то на Python под Android. Такой странный для многих выбор обусловлен тем, что я люблю Python и люблю Android, а ещё люблю делать необычное (ну хорошо, не самое обычное). В качестве фреймворка был выбран Kivy — фактически, безальтернативный вариант, но он мне очень понравился. Однако, по нему не так уж много информации (нет, документация отличная, но иногда её недостаточно), особенно на русском языке, а некоторые вещи хоть и можно реализовать, но их то ли никто раньше не делал, то ли не счёл нужным поделиться информацией. Ну а я счёл :) И этот пост тому результатом.
Под катом я расскажу обо всех этапах разработки, о том, как развивалась простая идея и как для этого приходилось искать новые возможности, о возникших подводных камнях и багах, о неочевидных решениях и устаревшей документации :) Цель — описать в одном тексте основные пункты, чтобы человеку, решившему написать что-то немного сложнее игры Pong из официального туториала, не приходилось перерывать официальный форум поддержки и StackOverflow и тратить часы на то, что делается за пару минут, если знаешь, как.
Под катом я расскажу обо всех этапах разработки, о том, как развивалась простая идея и как для этого приходилось искать новые возможности, о возникших подводных камнях и багах, о неочевидных решениях и устаревшей документации :) Цель — описать в одном тексте основные пункты, чтобы человеку, решившему написать что-то немного сложнее игры Pong из официального туториала, не приходилось перерывать официальный форум поддержки и StackOverflow и тратить часы на то, что делается за пару минут, если знаешь, как.
+23
Как я чуть не потерял «Великие слова», или «ответственность» конторы Online.ua
7 min
1KВ ноябре у меня произошло интересное событие — я подвергся хакерской атаке, целью которой, как выяснилось позже, было отнять у меня домен моего проекта «Великие слова» — 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. При попытке залогиниться в панель управления доменами я получил ошибку, письмо по запросу восстановления пароля не пришло, и я понял, что дело серьезное.
Все началось утром 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. При попытке залогиниться в панель управления доменами я получил ошибку, письмо по запросу восстановления пароля не пришло, и я понял, что дело серьезное.
+110
Великие слова — теперь и на английском!
1 min
820 Любители цитат и афоризмов на Хабре наверняка помнят наш проект «Великие слова», который более года назад мы презентовали здесь. Недавно мы также представили наше API (которое, к сожалению, не вызвало большого интереса), но сегодня речь не об этом. Сегодня мы хотели бы наконец-то представить англоязычную версию нашего проекта — GreatWords.info.
Англоязычная версия работает по тем же принципам, что и русскоязычная — своего рода записная книжка, в которою не знакомые друг с другом люди собирают тронувшие их цитаты. Цель ─ ничего не забыть и ничего не упустить.
Англоязычная версия работает по тем же принципам, что и русскоязычная — своего рода записная книжка, в которою не знакомые друг с другом люди собирают тронувшие их цитаты. Цель ─ ничего не забыть и ничего не упустить.
+10
Великие слова
3 min
1.1K История GreatWords.ru — сайта, где можно найти и записать умные слова из книг, краткие гениальные высказывания — началась с моей простой фразы: «Давно хочу сделать сайт, где буду записывать все цитаты. Книг читаю много… всё, что выписываю, теряется». Совместно с Евгением Гетманенко мы реализовали идею сайта с мудрыми словами, о чем я и хочу вкратце рассказать.
+95
Нативный шаблонизатор
9 min
8KЯ довольно давно уже использую нативные шаблоны, но, почему-то, у многих людей нативные шаблоны ассоциируются с конструкциями типа:
То есть, переменную определили и приинклюдили html-файл. Я считаю, что это в корне неверный подход. Почему?
Во-первых, все переменные, переданные в шаблон, должны храниться в одном месте (свойстве класса шаблонизатора).
Во-вторых, в шаблонизаторе не должно быть доступа к переменным, которые в него не переданы, и к функциям, которые в нем не определены.
В-третьих, должен быть определен набор функций, необходимых для работы.
Таким образом, я пришел к выводу, что шаблонизатор нужен, но он не должен быть навороченным тормозом типа Smarty.
Идеология блочных шаблонизаторов (XTemplate, например) мне не импонирует потому, что в них нет ветвлений как таковых, есть только циклы.
Потому я написал свой.
- $title = 'My title';
- include('templates/index.html');
* This source code was highlighted with Source Code Highlighter.
- <html><head><title><?php echo $title ?></title></head>
- <!-- ... -->
* This source code was highlighted with Source Code Highlighter.
То есть, переменную определили и приинклюдили html-файл. Я считаю, что это в корне неверный подход. Почему?
Во-первых, все переменные, переданные в шаблон, должны храниться в одном месте (свойстве класса шаблонизатора).
Во-вторых, в шаблонизаторе не должно быть доступа к переменным, которые в него не переданы, и к функциям, которые в нем не определены.
В-третьих, должен быть определен набор функций, необходимых для работы.
Таким образом, я пришел к выводу, что шаблонизатор нужен, но он не должен быть навороченным тормозом типа Smarty.
Идеология блочных шаблонизаторов (XTemplate, например) мне не импонирует потому, что в них нет ветвлений как таковых, есть только циклы.
Потому я написал свой.
+13
Эмуляция многопоточности в PHP
10 min
30KСуть многопоточности (для приложения) состоит в том, что процесс может состоять из нескольких (однотипных) потоков, выполняющихся «параллельно», то есть без упорядочивания по времени — выполнился один, пошел следующий. Использование многопоточности позволяет ускорить выполнение задачи и/или снизить нагрузку, таким образом, улучшая быстродействие самого приложения.
PHP относится к языкам, в которых поддержка многопоточности отсутствует. Но, есть немало задач, в которых она была бы очень полезна. Как правило, это задачи, в которых одно действие нужно выполнить много раз, но с различными параметрами, причем само действие настолько ресурсоемко, а количество итераций настолько велико, что обычный цикл использовать невозможно.
Я рассмотрю простой пример, как можно достичь эмуляции многопоточности в PHP.
PHP относится к языкам, в которых поддержка многопоточности отсутствует. Но, есть немало задач, в которых она была бы очень полезна. Как правило, это задачи, в которых одно действие нужно выполнить много раз, но с различными параметрами, причем само действие настолько ресурсоемко, а количество итераций настолько велико, что обычный цикл использовать невозможно.
Я рассмотрю простой пример, как можно достичь эмуляции многопоточности в PHP.
+26
Полиморфизм для начинающих
7 min
978KПолиморфизм — одна из трех основных парадигм ООП. Если говорить кратко, полиморфизм — это способность обьекта использовать методы производного класса, который не существует на момент создания базового. Для тех, кто не особо сведущ в ООП, это, наверно, звучит сложно. Поэтому рассмотрим применение полиморфизма на примере.
+50
Information
- Rating
- Does not participate
- Location
- Kraków, Malopolskie, Польша
- Registered
- Activity