• Настройка ПХП

    То и дело мне приходится слышать о том, что главное преимущество ПХП - легкость и скорость его развертки на сервере. Дескать, утановил Пых, и все твои скриптики сразу работают.

    Это, конечно, буллщит.

    Потому что на работу ПХП влияет примерно сотня директив, зашитых в его дурацком 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");
    

    А в дебаге можно посмотреть все внутренности Экселя:

    screenshot

  • Лимбо

    limbo

    На выходных завершил прохождение охрененной игры Лимбо, наконец-то вышедшей на айпаде. Поскольку рецензий на нее уже написано немало, скажу самые важные пункты.

    1. Игра - стопроцентный шедевр. Подобное случается раз несколько лет, так что не жадничайте (стоит 169 рублей).

    2. Игра клевая еще и потому, что первоначально делалась для приставок. Это - залог хорошей игры. Делать хорошие игры сразу для айпадов еще не научились. Все самое лучшее - это порты.

    3. Не обращайте внимание на брюзжание говноредаторов всяких говножурналов, что игра короткая - на самом деле ее длительность в самый раз. В подобные играх вообще длительность - не самое важное.

    4. Есть и минусы. Все самое интересное - лес, паук, дети-убийцы - присутствует только в начале игры. Первую треть игрового процесса реально страшно. Но увы - после попадания на завод игра резко становится однообразной. Игрока больше не преследует нечто неуязвимое и жуткое; живые, и от того непредсказуемые враги уступают место бездушным автоматом - пилам, пулеметам. Решения головоломок сводятся к бесконечному передвижению ящиков. Но все же и на заводе есть очень сильные эпизоды - например, мираж леса, тайный ход с насекомым, поляна перед дверью, ведущей в секретный уровень. Еще сильное впечатление производит эпизод дома с неоновой вывеской HOTEL. Можно было бы растянуть его побольше - сократить завод и добавить несколько эпизодов, связанным с городом и крышами.

    Но не смотря ни на какие минусы, игра шедевральна, это факт.

  • Попрошайки

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

    Но еще больше ненавижу кретинов, подающих им деньги. Что у них в голове в этот момент - никому не известно. Может, хотят купить себе этим поступком билет в рай? Задабривают своего бога? Думают, что алкаш пойдет и купит хлеба, а не очередную дозу спирта? Или думают, что увешанный медалями алкоголик действительно воевал в Чечне?

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

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

    Не подавайте никому и никогда.

  • Гуманный Питон

    Если бы языки программирования были религиями…

    Python – это был бы Гуманизм. Он простой, лишён множества ограничений, и всё что от вас требуется - это следовать его общей идее. Многие его последователи провозглашают, что они избавились от сложности и зарегулированности других языков и открыли заново радость программирования. Некоторые, правда, называют всё это псевдокодированием.

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

    В программировании на Питоне есть что-то особенное, чего не ощущаешь в других языках. Это удовлетворение от самовыражения, точнее, от того удобства, с которым можно выразить себя на этом языке.

    Да, Питон - не самый быстрый язык. Однако, быстродействие программ в широком плане уже давно уступило приоритет скорости разработки. Все больше компаний переводят свои проекты с Джавы или Дельфи на Питон, Руби. Тот же Яндекс, например. Потому что человеческое время ценнее машинного.

    Обязательно посмотрите презентацию Яндекса: http://www.slideshare.net/yandex/grokhovetsky-ekb

  • Драйверы

    Установка драйверов - это бородата дичь, не знаю, как до сих пор люди с этим мирятся.

    Операционная система должна нести драйвера на борту. Плевать, что вырастет размер дистрибутива. Можно сделать сетевые репизитории, чтобы драйвера ставились из интернета автоматом. Нужно как-то двигать прогресс, потому что ситуация с виндой и драйверами по-прежнему в жопе.

    К примеру, мой ноутбук - Леново x220i. После установки винды требуется еще поставить драйвера на видео, звук, сеть, вай-фай, камеру, кардридер - то есть без установки тучи драйверов ноутбук бесполезен. А драйвера нельзя скачать, потому что сеть без них не работает. Приходится предварительно заготавливать драйвера на флешке. Что-то из нулевых, еще дискеток не хватает. А в Убунте/Минте все девайсы работают без лишних установок.

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

  • Итак, я выбрал Фидли

    После долгих метаний от одного сервиса к другому остановился на Фидли.

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

    feedly

    Мобильные клиенты под обе платформы тоже вполне сносны. Но удобного минимализма Ридера, боюсь, нам так и не увидеть. Главным образом Фидли подкупает меня тем, что дает надежду не испытать снова смешанных чувств тревоги, ненависти и разочарования - всего того, что я ощутил, когда меня кинул Гугл.

    Кстати, разработчики Иноридера никогда не заявляли, что намерены поддерживать сервис в долгосрочной перспективе. Вдруг тоже закроются?

  • Обновление Кверифида

    Сегодня обновил Queryfeed - сервис выдачи твитов в РСС (поддерживаются так же Гуглоплюс и Фейсбук). Так случилось, что Твиттер ВНЕЗАПНО сменил АПИ на 1.1. Я это как-то проморгал, РСС-ленты не обновлялись.

    Теперь же сервис оснащен новым поисковым движком, заточенным под АПИ 1.1. Как дополирую - выложу новую питонью либу на Гитхаб.

  • Почта у Гугла

    Хостить почту для своего домена на серверах Гугла или Яндекса – очень клево. Помимо стабильности и качественной работы почты, есть еще одно преимущество - правда, не уверен, что оно работает у Яндекса.

    Можно сделать так, чтобы админ получал письма, которые не соответствуют существующим пользователям. То есть, не зависимо от того, на какой адрес мне отправили письмо - ivan@grishaev.me, ivan2@grishaev.me или ivan3@grishaev.me - я получу их все. Это позволяет с наебывать некоторые дурацкие системы.

Страница 45 из 50