-
Настройка ПХП
То и дело мне приходится слышать о том, что главное преимущество ПХП - легкость и скорость его развертки на сервере. Дескать, утановил Пых, и все твои скриптики сразу работают.
Это, конечно, буллщит.
Потому что на работу ПХП влияет примерно сотня директив, зашитых в его дурацком php.ini. У одних хостеров настроено так, у других эдак. Потом идут директивы Апача - тоже кто во что горазд. В итоге вероятность того, что КМС-ка запустится без бубнов стремится к нулю.
Еще почему-то у пхпшников не принято писать код для разных версий. Сказали, что нужно 5.3 - и ни на сантиметр влево. И плевать, что это требование обусловлено одной константой, которой нет в версиях младше - говнокодер не удосужился проверить версию языка и объявить константу вручную, вместо этого задрал версию.
Все это множество настроек, директив и версий создает такое разнообразие потенциальных факапов, что кажется порой, что дешевле переехать на другой хостинг, чем воевать с настройками и техподдержкой.
В том же Питоне полно библиотек, которые с помощью интроинспекции умудряются работать на очень старых версиях: в полете меняют импорты, переопределяют свойства объектов - но работают. Почти все настройки регулируются на уровне языка.
Навеяно муками развертки Друпала у многих хостеров.
Комментарии из старого блога
11/01/13 Виктор Степаньков: Крайнее предложение прочитал как “Навеяно мудаками друпала”
-
Фибонначи на Питоне
Обожаю генераторы в Питоне.
Генераторы - это ленивые списки. Их элементы можно перебирать только один за другим, нельзя сразу прыгнуть на середину или получить срез. Генератор не помнит своих предыдущих элементов, он знает только текущее состояние и алгоритм, согласно которому будет получен новый элемент.
Генератор легко получить из функции. Вместо оператора return она должна иметь оператор yield - и тогда вызов функции вернет генератор. В качестве примера возьмем числа Фибонначи. Наша функция вернет генератор, при прохождению по которому мы получим бесконечно много чисел ряда.
def fib(a, b): yield a yield b while True: a, b = b, a + b yield b for x in fib(1, 2): print x if x > 100: break
Код выведет числа 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144. Итерацию в данном примере нужно прерывать вручную, иначе уйдем в бесконечный цикл.
-
Десятый осел
Не понимаю, от чего все восторгаются IE 10. Ну да, стал быстрей, верстку показывает лучше. Но он по-прежнему верен традиции - умудряется обосраться там, где нормальные движки (Гекко, Вебкит) ведут себя без нареканий. Поэтому говном и остался.
А вот реально IE крут в инспекции COM-объектов. Поясню - в корпоративном секторе часто используются разного рода костыли, взаимодействующие друг с другом через технологию СOM. Бывает, что никакой документации нет, а узнать имена свойств и методов хочется. Поможет обычный IE любой версии: в нем доступно создание полноценного COM-объекта и просмотр всех его свойств.
Например, следующий код создает новый эксель-документ. Работает, ясное дело, только в осле:
var xls = new ActiveXObject("Excel.Application"); xls.visible = true; var newBook = xls.Workbooks.Add(); var sheet = newBook.Worksheets.Add(); sheet.Activate(); sheet.Cells(1,1).value = "test"; sheet.Cells(2,1).value = "foo"; sheet.Name = "test"; newBook.SaveAs("D:\\test.xls");
А в дебаге можно посмотреть все внутренности Экселя:
-
Лимбо
На выходных завершил прохождение охрененной игры Лимбо, наконец-то вышедшей на айпаде. Поскольку рецензий на нее уже написано немало, скажу самые важные пункты.
-
Игра - стопроцентный шедевр. Подобное случается раз несколько лет, так что не жадничайте (стоит 169 рублей).
-
Игра клевая еще и потому, что первоначально делалась для приставок. Это - залог хорошей игры. Делать хорошие игры сразу для айпадов еще не научились. Все самое лучшее - это порты.
-
Не обращайте внимание на брюзжание говноредаторов всяких говножурналов, что игра короткая - на самом деле ее длительность в самый раз. В подобные играх вообще длительность - не самое важное.
-
Есть и минусы. Все самое интересное - лес, паук, дети-убийцы - присутствует только в начале игры. Первую треть игрового процесса реально страшно. Но увы - после попадания на завод игра резко становится однообразной. Игрока больше не преследует нечто неуязвимое и жуткое; живые, и от того непредсказуемые враги уступают место бездушным автоматом - пилам, пулеметам. Решения головоломок сводятся к бесконечному передвижению ящиков. Но все же и на заводе есть очень сильные эпизоды - например, мираж леса, тайный ход с насекомым, поляна перед дверью, ведущей в секретный уровень. Еще сильное впечатление производит эпизод дома с неоновой вывеской HOTEL. Можно было бы растянуть его побольше - сократить завод и добавить несколько эпизодов, связанным с городом и крышами.
Но не смотря ни на какие минусы, игра шедевральна, это факт.
-
-
Попрошайки
Ненавижу попрошаек, нищих, алкашей и прочий побирающийся сброд. Скольких бы рук или ног ни отсутствовало - всегда можно найти работу или приносить какую-то пользу обществу. Хоть семечки или квас продавать.
Но еще больше ненавижу кретинов, подающих им деньги. Что у них в голове в этот момент - никому не известно. Может, хотят купить себе этим поступком билет в рай? Задабривают своего бога? Думают, что алкаш пойдет и купит хлеба, а не очередную дозу спирта? Или думают, что увешанный медалями алкоголик действительно воевал в Чечне?
Самая крайняя степень, когда хочется оторвать голову подающему - это когда подают цыганкам с якобы спящим ребенком на руках. Может ли ребенок спать в скрюченном положении, на руках, в окружении городского шума? Конечно нет. Притвориться спящим он может минут на пять, дальше детского терпения не хватит. Поэтому детей ширяют снотворным или просто водкой. Двойная выгода - ребенок в постоянной отключке, а в будущем он настолько отстанет в развитии, что не будет способен ни на что, кроме попрошайничества.
Выпрашивание милостыни уже давно стало организованной деятельностью, со своей преступной иерархией и понятиями. Подавая нищему, идиот фактически отдает деньги сутенеру, их пасущему. Самому алкашу перепадет разве что на пачку дрянных сигарет.
Не подавайте никому и никогда.
-
Гуманный Питон
Если бы языки программирования были религиями…
Python – это был бы Гуманизм. Он простой, лишён множества ограничений, и всё что от вас требуется - это следовать его общей идее. Многие его последователи провозглашают, что они избавились от сложности и зарегулированности других языков и открыли заново радость программирования. Некоторые, правда, называют всё это псевдокодированием.
Все верно - когда я пишу на Питоне, я физически ощущаю гуманность Гвидо ко мне. Потому что он Питон - простой и эффективный. Он позволяет выражать мысли краткими и емкими конструкциями.
В программировании на Питоне есть что-то особенное, чего не ощущаешь в других языках. Это удовлетворение от самовыражения, точнее, от того удобства, с которым можно выразить себя на этом языке.
Да, Питон - не самый быстрый язык. Однако, быстродействие программ в широком плане уже давно уступило приоритет скорости разработки. Все больше компаний переводят свои проекты с Джавы или Дельфи на Питон, Руби. Тот же Яндекс, например. Потому что человеческое время ценнее машинного.
Обязательно посмотрите презентацию Яндекса: http://www.slideshare.net/yandex/grokhovetsky-ekb
-
Драйверы
Установка драйверов - это бородата дичь, не знаю, как до сих пор люди с этим мирятся.
Операционная система должна нести драйвера на борту. Плевать, что вырастет размер дистрибутива. Можно сделать сетевые репизитории, чтобы драйвера ставились из интернета автоматом. Нужно как-то двигать прогресс, потому что ситуация с виндой и драйверами по-прежнему в жопе.
К примеру, мой ноутбук - Леново x220i. После установки винды требуется еще поставить драйвера на видео, звук, сеть, вай-фай, камеру, кардридер - то есть без установки тучи драйверов ноутбук бесполезен. А драйвера нельзя скачать, потому что сеть без них не работает. Приходится предварительно заготавливать драйвера на флешке. Что-то из нулевых, еще дискеток не хватает. А в Убунте/Минте все девайсы работают без лишних установок.
Установка драйвера оправдана лишь в том случае, если железка крайне специфична - например, плата видеомонтажа. Во всех остальных случаях должны суетиться производители железки и операционки.
-
Итак, я выбрал Фидли
После долгих метаний от одного сервиса к другому остановился на Фидли.
Во-первых, ребята действительно стараются довести сервис до ума. Помнится, попробовав его месяц назад, был очень недоволен. Теперь же им вполне можно пользоваться. Рад, что реализовали главную фичу Ридера - есть режим просмотра полной версии постов, при прокрутке они отмечаются как прочитанные.
Мобильные клиенты под обе платформы тоже вполне сносны. Но удобного минимализма Ридера, боюсь, нам так и не увидеть. Главным образом Фидли подкупает меня тем, что дает надежду не испытать снова смешанных чувств тревоги, ненависти и разочарования - всего того, что я ощутил, когда меня кинул Гугл.
Кстати, разработчики Иноридера никогда не заявляли, что намерены поддерживать сервис в долгосрочной перспективе. Вдруг тоже закроются?
-
Обновление Кверифида
Сегодня обновил Queryfeed - сервис выдачи твитов в РСС (поддерживаются так же Гуглоплюс и Фейсбук). Так случилось, что Твиттер ВНЕЗАПНО сменил АПИ на 1.1. Я это как-то проморгал, РСС-ленты не обновлялись.
Теперь же сервис оснащен новым поисковым движком, заточенным под АПИ 1.1. Как дополирую - выложу новую питонью либу на Гитхаб.
-
Почта у Гугла
Хостить почту для своего домена на серверах Гугла или Яндекса – очень клево. Помимо стабильности и качественной работы почты, есть еще одно преимущество - правда, не уверен, что оно работает у Яндекса.
Можно сделать так, чтобы админ получал письма, которые не соответствуют существующим пользователям. То есть, не зависимо от того, на какой адрес мне отправили письмо -
ivan@grishaev.me
,ivan2@grishaev.me
илиivan3@grishaev.me
- я получу их все. Это позволяет с наебывать некоторые дурацкие системы.