• PHP - Как вернуть управляемый контент при критической ошибке PHP (E_ERROR, E_PARSE)?

    png
    @png
    Коллеги.
    Во-первых, согласен с тем, что говорилось выше. Это тоже правильно. Сам делал аналогичные вещи, перекрывал ошибки, писал в лог, слал на почту и т.п.

    Во-вторых, если бы меня попросили сделать такую фичу в хорошем добротном проекте, то я бы не стал изобретать велосипед, а воспользовался решением из коробки.
    Популярные фреймворки Symfony2, Yii — уже поддерживают это из коробки, причем достаточно давно.
    Переполнение по памяти не проверял, остальное ловит без проблем и отдает 500 ошибку, то есть как надо(поправка выше, не обязательно отдавать 503-ю. можно любую 5хх, этот жест скажет поисковику — «Ой, спроси меня позже...», 404 — в таком случае лучше не отдавать, оно может повлиять на позиции сайта в поиске — если для вас это важно.).

    Единственное ограничение к стилю кода, пишите без варингов и нотисов, они тоже ловятся. Иначе рискуете сделать проект, которые будет работать только в продакшен-режиме, то есть при выключенных ошибках. Отлаживать такие веши — не самое приятное занятие. К тому же, количество ошибок в таком коде выше на порядок.

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

    Как сделать такой костыль — описано чуть ли не в самом вопросе. Для себя я суть дискуссии понял так — а как нужно строить логику приложения (архитектуру — если хотите), чтобы было правильно с точки зрения обработки ошибок.

    Пример с ошибками и статусами HTTP — не единственный. Возможны и другие варианты.

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

    Если в двух словах, то я думаю так:
    — разбить код логики на блоки (желательно независимые, они могут быть ирерархичными).
    — запускать эти блоки как бы «в песочнице» (вопрос как — зависит от самого приложение, у кого-то может и не получиться, или придется ради этого менять структуру БД, какие-то алгоритмы внутри приложения и т.п.)
    — по успешному выполнению блока, применяем результат. Что-то сломалось, уведомляем админа о критичной ситуации.

    Критичные ситуации лучше всего ловить Unit-тестами, а если это не возможно, то всеми видами тестирования.

    Вот, как-то так.
    Ответ написан
  • Symfony 2, чтение yml-конфигурации из контроллеров или сервисов?

    png
    @png
    тоже самое.
    Однако использование котейнера внутри сервисов — это не правильно с точки зрения архитектуры. более правильно передавать параметры через конструктор или set-методы.
    Основная дока тут: symfony.com/doc/current/book/service_container.html

    по самим параметрам:

    в файле sevices.yml — так же в любом другом (не обязательно сервисы)
    может быть строчка
    parameters:
    test: 1

    в файле config.yml тоже могут быть такие строки

    а ещё есть файл paremeters.ini
    test = 1


    а ещё есть переменные окружения. их тоже можно доставать так же через параметры.

    если хочешь чтобы параметр попал в конструктор сервиса, то указываешь его имя
    %test%

    пример, из офф документации:
    # src/Acme/HelloBundle/Resources/config/services.yml
    parameters:
    my_mailer.class: Acme\HelloBundle\Mailer
    my_mailer.transport: sendmail

    services:
    my_mailer:
    class: %my_mailer.class%
    arguments: [%my_mailer.transport%]
    Ответ написан
    1 комментарий
  • Зеркало Subversion (svn) -> Mercurial (hg)?

    png
    @png
    я когда-то делал тупой скрипт:
    основная идея

    в начале делает

    svn co code.google.com/ /home/user/google_code_repo

    а потом в crontab запихиваете скрипт:

    cd /home/user/google_code_repo
    svn up
    hg addremove ./*
    hg commit -m «auto commit from svn»
    hg push ssh://hg@bitbucket.org/VolCh/если вам точное совпадение ревизий и их комментариев не нужно, то такой вариант вполне удобен
    Ответ написан
    2 комментария
  • Есть ли жизнь после LeaderTask, или какой таск-менеджер выбрать?

    png
    @png
    из open-source посмотрите redmine

    — задачи в иерархическом виде (дерево), с возможностью присобачить комментарий
    есть
    — возможность присвоить задачам произвольные тэги и по ним фильтровать
    есть, там у задач есть категории, фактически теже теги
    — возможность присвоить задачам дату исполнения
    есть, но только дату. время задать нельзя.
    — возможность присвоить задачам приоритет
    есть гибкая система приоритетов('высокий','обычный'), можно добавить свои.
    — возможность создать свои фильтры (композитные, по дате-тегам)
    есть запросы. фактически это сохраненные фильтры.
    — отчеты типа «по этой ветке дерева и всем ее вложенностям отчет чего когда было сделано и как оно сейчас» с возможностью отключить исполненное или включить его
    можно попытаться сделать запрос-отчет. если этого не хватает, то есть альтернативные методы.
    1. REST API — получаем список задач, строим какой-угодно отчет
    2. пишем плагин, в котором опять же строим какой-угодно отчет.

    — синхронизация с android и возможность немного оттуда управлять (new task, change text, mark as completed)
    нету, нужно писать. Благо пишется легко, т.к. есть REST API
    — web-based
    я бы даже сказал, там web 2.0. всё очень симпатично
    — возможность поставить на своем сервере (ОЧЕНЬ желательно!)
    можно
    — не ява, питон, хаскель, лисп, кобол, «просто вставляете в свой оракл этот триггер на 106 мегабайт»
    а чем вас java не устроила?
    Написана на ruby On Rails. запускается легко. Если испытывает высокую нагрузку — то тоже есть варианты специальной настройки
    Ответ написан
    Комментировать
  • Как лучше реализовать entity в java?

    png
    @png
    плюс JDBC — производительность, можно делать сложные запросы и прочее.
    минус — придется больше писать ручками. Всё-равно данные нужно будет помещать объекты, не массивами же их хранить.

    если у вас запросы простые, то JPA вам поможет экономить время и код. Это удобно. Но в ущерб иногда скорости и гибкости.

    Так же стоит задуматься о том, как вставлять данные. какой их объем? сколько потоков будет читать/писать?
    Ответ написан
    1 комментарий
  • Что должно быть в идеальном таск-менеджере?

    png
    @png
    Нет идеала.
    каждый таск-менеджер заточен под определенный круг задач.

    redmine — для программистов. управление репозиториями, вложенные задачи, версии, проекты
    мегаплан — для простых служащих, причем с функциями корпоративного портала.
    и тому подобное.

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

    как создать такой, чтобы учитывал всё функции и потребности — никто не знает.

    если будет слишком много функций, в нем просто запутаются.

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

    Если меня спросить, а какой идеальный, то для меня это redmine.
    1. Он действительно клевый
    2. Я его знаю достаточно хорошо
    3. Мне легко расширять его функциональность за счет плагинов, которые достаточно просто писать.

    Как-то так.
    Ответ написан
    4 комментария
  • Nvidia 8600GT vs Ubuntu 11.04

    png
    @png
    У меня на ноуте nvidia 9800M. сам долгое время мучался с драйверами.
    Решал ручной установкой дров. Лезем на сайт, качаем драйвера, потом останавливаем X-ы, пускаем
    Но каждый раз, но при каждом обновлении ядра — начиналась эпопея, т.к. переставлять приходилось и драйвера.

    Решение, используете драйвера из пакета nvidia-96\173\сurrent
    но перед тем как устанавливать его, установите хедеры:
    sudo apt-get install linux-headers-`uname -r`
    без них драйвера не установятся, т.к. они компилируемые…

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

    png
    @png
    Всё зависит от крупности приложения. если проект больше чем на 3-4 месяца, то использовать в той или иной степени приходится достаточно обширный список.
    Я разве что builder-ы не использовал ни разу. А так из основных почти всё
    Ихмо, они нужны для крупных библиотек.
    Приходится, чтобы код не превратился в помойку…
    Ответ написан
    Комментировать
  • REST-service контракт?

    png
    @png
    Вообще-то есть WADL
    Аналог WSDL для REST.
    Ссылка про то как он нужен и важен.

    Спек, где про него можно почитать.

    И ещё в догонку — прикольный веб-сервис, позволяющий создать такой файл.

    Есть так же библиотеки под разные языки, которые позволяют создавать такой файл автоматизированно.

    На практике, протокол REST очень прост, просто проще SOAP. Поэтому описанием WADL часто пренебрегают. Но если он есть, то им очень удобно пользоваться.
    Например, JetBrains Idea умеет генерить из WSDL/WADL файла набор java-классов, которыми уже можно пользоваться, чтобы работать с протоколом.
    Ответ написан
    3 комментария
  • Как определить дату обновления веб-страницы?

    png
    @png
    Плагины специальные может и есть.
    если нет, такого, то повод написать.
    ff+firebug + хедеры посмотреть.
    Ответ написан
  • Домашняя бухгалтерия

    png
    @png
    Может, MyFin подойдет?
    поставил на свой сервер, есть мобильная версия.
    к сожалению, он не оффлайн.
    Ответ написан
    Комментировать
  • PHP класс для загрузки файлов в Google Docs?

    png
    @png
    А чем вам Zend Framework не угодил?
    почему его нету?
    ИХМО, вряд ли что рабочее найдете, попробуйте использовать от zend только отдельные компоненты.
    Ответ написан
    1 комментарий
  • Порекомендуйте ORM для Java-приложений?

    png
    @png
    Улучшал возможности Hibernate и стандартного JDBC
    при помощи
    spring jdbc-templates
    spring ORM пакет.
    там много полезных штук…
    Ответ написан
    Комментировать
  • MySQL клиент для Linux

    png
    @png
    netbeans — для сложных запросов
    +
    иногда — phpmyadmin
    просто посмотреть данные
    Ответ написан
  • Фундаментальная литература по веб-разработке на JAVA?

    png
    @png
    Философия ява — как основы, причем на русском.
    А далее то, что выше советовали.
    Ответ написан
    Комментировать
  • Какую книгу выбрать?

    png
    @png
    у меня есть 2006 года выпуска.
    На работе приобрели 2010-ого.
    Сравнивал, различий каких либо не заметил.
    Ответ написан
    Комментировать
  • Ubuntu 8.10 upgrade. Как?

    png
    @png
    ИХМО, другого варианта нет.
    Даже со стандартной процедурой не факт, что потом всё будет работать. Ручных действий не избежать.
    Ответ написан
    Комментировать
  • Cделать полнотекстовую RSS ленту, если сайт отдаёт только краткий анонс?

    png
    @png
    Путь джедая — это написать самому.

    Если посмотреть на nomobile в RSS. Там тег Link.
    в нем закодирована ссылка на саму статью 0L0Snomobile0Bru0Creviews0C1292490Bhtml
    0B — это точка.
    0С — это слеш
    берем RSS, вытаскиваем ссылку, парсим страницу сайта руками. Можно регулярками, можно через DOM.
    Режем лишние теги.
    Результаты парсинга заливаем в новый RSS.
    Ответ написан
    Комментировать
  • Где лучше всего хранить большое количество цифровых записей для последующего анализа?

    png
    @png
    Вопрос слегка пространный. не понятно что вы потом будете делать с этими записями?
    Возможно по крайнем мере 4 решения. Их выбор зависит от того, что вы потом с этим будете делать.

    1. Обычный SQL. Например, Postgres + партицирование.
    2. Посмотреть в сторону NoSQL решений. Поскольку у вас графовые решения, то есть HyperGraphDB, Neo4j
    сам я эти БД не использовал, но как возможное решение попробовать стоит.
    3. Посмотреть в сторону распределенных решений. Например, apache hadoop.
    обработку данных осуществлять при помощи map-reduce технологии.
    4. Если нужно будет искать что-нибудь, то можно воспользоваться каким-нибудь поисковым движком, который индексирует локальные файлы и ищет по нему быстро. под рукой ссылок нет, может позже скину ссылки на пару примеров.

    Мне хватило 1-ого варианта. БД где-то 30Гб Выборка идет из конкретной секции по условию и так далее…
    Знаю людей, которые используют 3-й вариант, тоже не жалуются. У них БД по больше до 64Tб
    Ответ написан
    Комментировать
  • Преподавание С в университете. Нужен совет?

    png
    @png
    Преподаю в университете 4-й год.

    • Большой популярностью среди преподавателей пользуются книги Гербета Шилдта. Но вообще пойдет любая для чайников, они все более или менее одинаковые, ориентированны на новичка.
    • Одного синтаксиса Си — мало. Я не знаю какая у вас ситуация, но скорее всего придется вырабатывать у народа умения простой алгоритмизации.
      До сортировок лучше начни с основ. условия, циклы. Удели этому хотя бы одно занятие. пускай они раньше это проходили, всегда найдутся те, кто всё проспал или не понял.
    • Курс я так понимаю первый, народ будет скорее всего разнородный.
      Всегда будет так, что кто-то не понимает, а кому-то скучно.
      Бывают даже такие, которые текстовый файл переименовать или создать не могут.
      С этим нужно будет что-то делать.
      Я в свою очередь делил их на две подгруппы и занимался каждой отдельно.
    • Следует последить за своим языком, не говорить сленгом, постепенно вводить термины.
    • Главное не перегнуть палку и внимательно следить за тем, понимают ли вас.


    И ещё, по подготовке:

    Собери все материалы. Напиши себе план того, что ты будешь рассказывать на каждую лекцию на весь год перед. Я обычно планирую на 15-16 недель лекций. На моей специальности семестр длится 18-19 недель.
    Плюс стоит распланировать практические, контрольные, лабораторные. Они должны быть синхронизированы с лекциями. Задачи, варианты заданий лучше тоже заранее подготовить.

    Чтобы не запутаться что давать, а что не давать — можно учебный план специальности. Он обычно есть в деканате или на кафедре. В этом документе есть методические указания что давать, в каком объеме и что они потом должны уметь. Добавляешь к этому плану свое ИХМО и получаются твои лекции. По правилам ты можешь добавлять до 20% своего материала. Реально за тобой эти проценты вряд ли кто считать будет.

    Если этого не сделать сразу, то высока вероятность придти на лекцию неготовым. А если ты неготов, на начинаешь спонтанно нести всё подряд. Есть вероятность, что этот поток мысли просто не воспримут.
    А так удачи, тяжелое это дело — работать с первым курсом. Мне кажется, даже сложнее чем со школьниками. Потому что уж больно они там разные все по своему уровню.

    Если будут ещё вопросы, пиши в личку, чем смогу, помогу.
    Ответ написан
    7 комментариев